Программа курса «Алгоритмы. Олимпиадное программирование».
Занятия рассчитаны на 4 модуля (4 семестра, 2 года)
Приведена программа только первого модуля.
Каждое занятие состоит из небольшой лекции (примерно 30 минут) с разбором простой задачи. В оставшееся время дети самостоятельно решают задачи и проверяют решение, используя систему автоматической проверки программ ejudge, которая применяется на всех олимпиадах по программированию. Преподаватель будет помогать детям и отвечать на их вопросы индивидуально. Ребенок по желанию (его лично и родителей) может продолжать решение дома и проверять решение задач онлайн в системе ejudge, соревнуясь с другими учениками своего клуба и других 1С:Клубов программистов. Всего на каждое занятие будет предложено примерно по 10 задач – от простейших до сложных. Сложная задача будет соответствовать олимпиадному уровню (Муниципальные олимпиады, Всероссийская олимпиада). Ребенок не обязательно должен решать все задачи модуля на занятии или дома. Уровень и полноту решения задач определяет сам ребенок и его родители. Если ребенок свободно решает задачи десятого олимпиадного уровня, он может претендовать на хорошие баллы в олимпиаде. Для детей, изъявивших желание участия в олимпиадах, могут быть проведены отдельные занятия (сборы).
Модуль 1.
Занятие №1. Знакомство
- Алгоритмы
- Тестирующая система
Занятие №2. Типы данных и отладка
- Типы данных в Java
- Примитивные типы
- Объекты
- Классы-обертки
- BigInteger и BigDecimal
- Отладка
Занятие №3. Решение задач из области арифметики
- Проверка на четность
- Немного теории
- Цифры числа
- Получение цифр числа
- Проверка на простоту
- Сумма делителей
- Количество делителей
- Разложение на простые множители
Занятие №4. НОД(GCD) и НОК(LCM)
- Немного теории
- Немного о задачах
Занятие №5. Однопроходные алгоритмы
- Чтение
- Сумма элементов
- Максимум из всех
- Максимум из четных
- Второй максимум
- Немного о задачах
- Чтение больших объемов данных
- Пример использования класса StreamTokenizer для быстрого чтения последовательности чисел
Занятие №6. Массивы
- Создание массива
- Ввод (считывание) массива из N элементов
- Вывод всех элементов массива
- Поиск максимума
- Поиск индекса максимального
- Поиск индекса заданного числа в массиве
- Вывод массива в обратном порядке
- Косвенная адресация
Занятие №7. Сортировка массива
- Сортировка выбором (метод минимума)
- Немного теории
- Метод сортировки обменами (метод пузырька)
Занятие №8. Символы и строки в Java
- Символы
- Класс String
- Создание строки
- Чтение строки
- Длина строки
- Сравнение строк
- Добавление к строке
- Преобразование различных типов в строку и обратно
- Извлечение символа и подстроки
- Поиск в строке
- Функции замены
- Разворот строки