Олимпиадное программирование модуль 1

Программа курса “Алгоритмы. Олимпиадное программирование”.

Занятия рассчитаны на 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
  • Создание строки
  • Чтение строки
  • Длина строки
  • Сравнение строк
  • Добавление к строке
  • Преобразование различных типов в строку и обратно
  • Извлечение символа и подстроки
  • Поиск в строке
  • Функции замены
  • Разворот строки