ПРОГРАММИРОВАНИЕ
ОТ А ДО Я

Дистанционная образовательная программа

О КУРСЕ

Программа рассчитана на 3 учебных года дистанционного обучения из расчёта 4 астрономических часа в неделю, 136 часов в год, 408 часов за курс и предназначена для учеников 12-13 лет с хорошим уровнем матема-тической подготовки, способных к логическому и алгоритмическому мышлению, заинтересованных в освоении современных методов разработ-ки эффективных алгоритмов, способных к самостоятельной учебно-практической деятельности.

Цель курса: Формирование навыков использования методов программирования и классических алгоритмических подходов при решении задач, приобре-тение практического опыта в освоении языка программирования.

ТЕМАТИЧЕСКОЕ СОДЕРЖАНИЕ КУРСА

Теория. Алгоритм. Определение алгоритма. Свойство алгоритма. Строгое математическое определение алгоритма. Формы представления алгоритма. Блок-схема. Виды алгоритмов: линейный, разветвляющийся (полное и не полное условие, выбор), с повторениями (цикл с параметрами, цикл с предусловием, цикл с постусловием). Комбинированные алгоритмы. Вложенные условные конструкции и циклы.

Практика. Блок-схемы. Построение блок-схем алгоритмов. Трассировочная таблица. Нахождение значений переменных по блок-схеме.
Теория. Языки программирования. История создания. Программа. Трансляторы программ (компиляторы и интерпретаторы). Парадигмы программирования (процедурное программирование, объектно-ориентированное программирование, функциональное программирование). Языки С и С++. История создания и развития. Версии языков. Структура программы на языке Си. Типы данных и переменные. Оператор присваивания. Арифметические операции. Алгебраические выражения. Правила построения алгебраических выражений. Приоритет операций. Множественное присваивание. Сокращённые операции алгебраических выражений. Библиотека stdio.h. Чтение и ввод данных. Форматные спецификаторы и особенности их применения. Библиотека math.h. Уравнение прямой, проходящей через две точки. Уравнение окружности. Тригонометрические функции. Площадь треугольника. Формула Герона.

Практика. Установка среды программирования. Первая программа. Построение арифметических выражений. Остаток от деления. Деление числа нацело. Ввод и вывод данных. Сложение цифр 3-х и 4-хзначных чисел. Вычисление уравнения прямой, проходящей через две точки. Вычисление уравнения окружности. Вычисления площади произвольного треугольника с использованием тригонометрических функции. Вычисления площади произвольного треугольника по формуле Герона.
Теория. Операторы управления программой. Оператор if-else. Тернарная операция. Оператор выбора switch-case. Вложенные условные операторы. Правила вложенности условных операторов. Сравнение двух, трёх, четырёх чисел во вложенных условиях. Логические операции. Сложные условия. Сравнение двух, трёх, четырёх чисел с использованием сложных условных конструкций. Проверка прямых на параллельность. Пересечение прямой и окружности. Проверка треугольника на существование. Определение вида треугольника. Поиск даты следующего и предыдущего дня.

Практика. Проверка числа на чётность. Делимость чисел. Обработка цифр 3-х и 4-хзначных чисел. Проверка года на високосность. Поиск минимума и максимума среда 3, 4 и более чисел с использованием вложенных условий и сложных условных конструкций. Взаимное расположение двух прямых. Взаимное расположение прямой и окружности. Проверка треугольника на существование. Определение вида треугольника. Поиск даты следующего дня.
Теория. Цикл «for». Параметры цикла. Операция «,». Цикл «while» и «do-while». Сходство и различия. Цикл «for» без параметров. Операция continue и break. Особенности применения циклов. Обработка последовательностей чисел в циклах. Знакочередующиеся последовательности. Вложенные циклы.

Практика. Обработка последовательностей чисел. Поиск числа в последовательности, удовлетворяющего заданным условиям. Поиск минимума и максимума. Поиск двух подряд идущих элементов, удовлетворяющих заданным условиям. Поиск подпоследовательности, удовлетворяющей заданным условиям. Поиск трёх различных минимальных чисел в последовательности. Поиск наиболее часто встречающегося числа в последовательности. Поиск трёх наиболее часто встречающихся чисел в последовательности.
Теория. Обработка цифр многозначного числа. Поиск количества чётных и нечётных цифр в числе. Переворот числа. Проверка, является ли число палиндромом. Удаление цифр из числа. Олимпиадная информатика. Понятие сложности алгоритма. Тестирующие системы. Сайты для подготовки к олимпиадам по информатике. Простейшие олимпиадные задачи.

Практика. Обработка цифр многозначного числа. Поиск количества чётных и нечётных цифр в числе. Переворот числа. Проверка, является ли число палиндромом. Удаление цифр из числа. Получение из данного числа нового по правилу применением обработка цифр числа. Простейшие олимпиадные задачи для начинающих (математика и целочисленная арифметика).

Теория. Обработка цифр многозначного числа. Поиск количества чётных и нечётных цифр в числе. Переворот числа. Проверка, является ли число палиндромом. Удаление цифр из числа. Факториал числа. Числа Фибоначчи. НОД. Алгоритм Евклида. Совершенные и дружественные числа. Простые числа. Решето Эратосфена.

Практика. Обработка цифр многозначного числа. Поиск количества чётных и нечётных цифр в числе. Переворот числа. Проверка, является ли число палиндромом. Удаление цифр из числа. Получение из данного числа нового по правилу применением обработка цифр числа. Простейшие олимпиадные задачи для начинающих (математика и целочисленная арифметика). Факториал числа. Числа Фибоначчи. НОД. Алгоритм Евклида. Совершенные и дружественные числа. Поиск делителей числа. Простые числа. Решето Эратосфена. Проверка числа на простоту (плохой алгоритм и его улучшенные модификации).
Теория. Указатели в языке Си. Арифметика указателей. Одномерные массивы. Понятие. Объявление. Инициализация. Индексация. Хранение в памяти. Способы обращения к элементам массива. Заполнение и вывод массива. Заполнение массива с клавиатуры, по правилу, по формуле. Вывод частей массива. Вывод элементов, удовлетворяющих правилу. Поиск в массиве. Поиск в упорядоченном массиве. Бинарный поиск. Изменение элементов массива. Перестановка элементов массива. Вставка элементов в массив. Удаление элементов из массива.

Практика. Указатели в языке Си. Арифметика указателей. Одномерные массивы. Объявление и инициализация. Прямая и косвенная индексация. Заполнение и вывод массива. Заполнение массива с клавиатуры, по правилу, по формуле. Вывод частей массива. Вывод элементов, удовлетворяющих правилу. Поиск в массиве. Поиск минимума и максимума. «Глупый» и «умный» поиск трёх максимальных или минимальных различных элементов в массиве. Индексный массив. Поиск наиболее часто встречающихся элементов. Поиск в упорядоченном массиве. Бинарный поиск. Изменение элементов массива. Перестановка элементов массива. Заполнение массива случайными упорядоченными числами. Обработка последовательностей чисел с использованием массива. Поиск частей массива, удовлетворяющих заданному условию. Вставка элементов в массив. Удаление элементов из массива.
Теория. Понятие сортировки одномерного массива. Метод «пузырька». Метод простых обменов. Шейкерная сортировка. Шейкерная сортировка с флагом. Быстрая сортировка. Библиотека algorithm. Функция qsort. Компараторы.

Практика. Сортировка одномерных массивов. Метод «пузырька». Метод простых обменов. Шейкерная сортировка. Шейкерная сортировка с флагом. Быстрая сортировка. Библиотека algorithm. Функция qsort. Компараторы.
Теория. Двумерные массивы. Основные понятия. Объявление. Инициализация. Индексация. Статические и динамические двумерные массивы. Особенности хранения двумерного массива в памяти. Заполнение двумерного массива. Вывод на экран. Поиск в двумерном массиве. Вставка строк и столбцов в двумерный массив. Удаление строк и столбцов из двумерного массива. Сортировка двумерного массива с перестановкой строк или столбцов. Отражение двумерного массива относительно главной или побочной диагонали. Поиск элементов в части массива, образованного пересечением главной и побочной диагоналей. Поворот массива по часовой или против часовой стрелки на заданный угол.

Практика. Двумерные массивы. Объявление и инициализация. Косвенная и прямая индексация. Статические и динамические двумерные массивы. Функции работы с памятью (malloc, calloc, realloc). Заполнение двумерного массива. Вывод на экран. Поиск в двумерном массиве. Вставка строк и столбцов в двумерный массив. Удаление строк и столбцов из двумерного массива. Сортировка двумерного массива с перестановкой строк или столбцов. Отражение двумерного массива относительно главной или побочной диагонали. Поиск элементов в части массива, образованного пересечением главной и побочной диагоналей. Поворот массива по часовой или против часовой стрелки на заданный угол.

Теория. Символьные массивы. Особенности хранения строки в Си. Поиск и замена символов строки. Библиотека ctype.h. Обработка слов строки. Функция strtok.

Практика. Символьные массивы. Подсчёт числа символов в строке. Подсчёт числа слов в строке, разделённых одним пробелом. Удаление лишних пробелов. Подсчёт числа слов в строке, разделённых двумя и более пробелами. Поиск и замена символов в строке. Поиск и замена подстрок в строке. Разбиение строки на подстроки с использованием функции strtok. Сортировка слов в строке. Выделение из строки наиболее часто встречающих подстрок. Удаление из строки лишних символов и подстрок по определённому правилу.
Теория. Понятие функции. Прототип функции. Локальные и глобальные переменные. Аргументы функции. Функции с неограниченным числом аргументов. Аргументы по умолчанию. Передача переменных по значению, по указателю и по ссылке. Рекурсия. Глубина рекурсии. Спуск и подъём. Порядок вызова.

Практика. Функции. Объявление функции. Локальные и глобальные переменные. Аргументы функции. Функции с неограниченным числом аргументов. Аргументы по умолчанию. Передача переменных по значению, по указателю и по ссылке. Рекурсия. Факториал числа. Возведение числа в степень. Обработка цифр числа. Ханойские башни.
Теория. Суть метода динамического программирования. Одномерная динамика. Двумерная динамика. Инициализация динамики и формулы пересчёта. Модель решения задач динамического программирования.

Практика. Динамическое программирование. Классические задачи динамического программирования. Поиск числа программ преобразования одного элемента в другой. Задача о зайке, перемещающемся по кочкам в линейном пространстве. Модификации задачи. Задаче о черепашке, перемещающейся в двумерном пространстве. Поиск числа путей. Сбор монет. Монеты отрицательного веса. Препятствия.
Теория. Основные понятия теории графов. Граф. Вершина. Ребро. Ориентированный и неориентированный граф. Вес ребра. Связность. Компоненты связности. Представление графа. Матрица смежности. Список связности. Поиск путей в графе. Обход графа в глубину, ширину. Топографическая сортировка. Поиск кратчайшего пути. Алгоритм Дейкстры. Алгоритм Флойда.

Практика. Граф. Представление графа. Матрица смежности. Список связности. Поиск путей в графе. Обход графа в глубину, ширину. Топографическая сортировка. Поиск кратчайшего пути. Алгоритм Дейкстры. Алгоритм Флойда.


Практика. Динамическое программирование. Поиск числа последовательностей без 2, 3, K подряд идущих нулей. Поиска числа вариантов разрезать ленточку. Строковые задачи на динамическое программирование. Теория графов. Комбинированные задачи на обход и поиск кратчайшего пути.

ПРОГРАММА КУРСА

ЗАПИСАТЬСЯ НА КУРС

Для записи на курс необходимо заполнить АНКЕТУ.