Математические основы программирования Раздел Техника программирования



Скачать 34.53 Kb.
Дата06.07.2013
Размер34.53 Kb.
ТипДокументы
План подготовки к олимпиадам по информатике

Здесь представлен план, порядок изучаемых тем, который поможет вам научиться решать олимпиадные задачи или найти пробелы в своих знаниях.

Раздел 1. Математические основы программирования
Раздел 2. Техника программирования
1. Основы языка программирования (Паскаль, Си)
Переменные и простейшие типы данных, размеры типов. Линейные программы. Условные операторы. Циклы. Процедуры и функции. Сложные типы данных (массивы, строки, записи, указатели, файлы).
2. Массивы
Одномерные массивы. Двумерные массивы (матрицы). Многомерные массивы.
3. Строки. Элементы лексического и синтаксического разбора
Операции над строками. Лексемы, подсчет лексем различных типов. Выделение чисел из строки.
4. Работа с файлами
Чтение и запись в текстовый файл. Преобразование полученных из файла данных в удобную структуру. Работа с типизированными файлами. Нетипизированные файлы. Буферизация ввода.
5. Рекурсия
Математические функции, задаваемые рекурсивно. Примеры рекурсивных подпрограмм. Проблема остановки рекурсии. Замена рекурсии итерацией.
6. "Длинная" арифметика
Хранения в программе чисел, которые не вмещаются в стандартные типы. Арифметические операции над "длинными" числами. "Длинные" числа с десятичной частью. Извлечение корня с заданной точностью.
7. Хранение информации в динамической памяти.
Хранение набора данных в линейных списках. Вставка в список, удаление из списка, поиск элемента в списке. Двусвязные списки. Понятия структур данных стека, кольца, очереди, дека; реализация их с помощью динамической памяти. Двоичные деревья. Деревья с неопределенным числом потомков. Хранение больших массивов.

Раздел 3. Алгоритмы, методы и принципы решения задач
1. Понятие сложности алгоритма.
Определение сложности. Классы задач P и NP. NP-полные задачи.
2. Алгоритмы поиска и сортировки
Поиск элемента в неупорядоченном массиве. Двоичный поиск по ключу в упорядоченном массиве (дихотомия). Поиск методом Фибоначчи. Поиск в упорядоченном n-мерном массиве. Поиск k-го по величине элемента массива. Простые методы сортировки ("пузырек", "выборка", "вставка", "подсчет"). Быстрые методы ("быстрая", "слиянием", "пирамидальная"), балансировка двоичных деревьев. Сортировка методом черпака.
3. Решение задач методом перебора вариантов
Применение рекурсии для перебора. Генерация сочетаний, размещений, перестановок и булеана множества. Полный перебор. Отсечение вариантов (эвристики). Метод ветвей и границ.
4. Вычислительная геометрия и численные методы
Длина отрезка. Уравнение прямой. Скалярное и векторное произведение. Точка пересечения отрезков. Принадлежность точки фигуре на плоскости (например: треугольнику). Площадь выпуклого многоугольника. Выпуклая оболочка множества точек: алгоритмы Грэхема, Джарвиса, "разделяй и властвуй". Ближайшая пара точек. Метод Гаусса для решения системы линейных уравнений. Нахождение решения уравнения.
5. Принцип динамического программирования
Понятие, применимость. Сравнение с перебором.
6. Жадные алгоритмы
Понятие, применимость. Сравнение с перебором и динамическим программированием.
7. Теория графов. Алгоритмы на графах
Понятие графа. Определения теории графов. Структуры данных для представления графа в программе. Алгоритмы обхода графа (поиски в ширину и глубину). Лабиринт (метод волны). Эйлеров цикл. Кратчайший путь во взвешенном графе (алгоритмы Дейкстры и Минти). Транзитивное замыкание графа (алгоритм Флойда-Уоршилла). Минимальное остовное дерево (алгоритмы Прима и Краскала). Топологическая сортировка графа. Потоки в сетях (алгоритм Форда-Фалкерсона). Паросочетания в двудольном графе (метод удлиняющей цепочки, потоковое решение). Задача о назначениях, назначения на узкое место (венгерский алгоритм). Игры на графах. Раскраска графа. Уложение графа на плоскости. Сильная связность и двусвязность графа. Изоморфизм графов. K-клика. Гамильтонов цикл.
8. Лексический и синтаксический анализ
Задача "Калькулятор". Синтаксические диаграммы. Формы Бэкуса-Наура. Стековая и рекурсивная модель синтаксического разбора. Конечные автоматы. Грамматики.
9. Задачи с "изюминками"

Раздел 4. Олимпиады по информатике
1. Правила проведения олимпиад по программированию
2. Типичные ошибки и отладка программ
3. Приемы олимпиадчика

По-моему, наибольшую ценность представляют разделы 2 и 3. Если с изучением языка программирования у вас не должно возникнуть сложностей (огромное количество книг по этой теме), то вот с алгоритмами придется посложнее. Книг по этой теме тоже немало, но они, чаще всего, слишком перегружены теорией, а на олимпиадах нужна только практика. Из электронных источников по алгоритмам могу посоветовать книгу С.М.Окулова и сайт algolist.manual.ru, который менее нацелен на изучение "олимпиадной информатики", чем книга Окулова, но содержит большое количество алгоритмов, которых нет в книги, но которые неплохо было бы знать.
Привыкайте работать в режиме: написание + отладка на Borland Pascal/Borland C++, а компиляция (с предварительным изменением констант) на Free Pascal/GNU C. Новые 32-битные компиляторы не имеют жесткого ограничения в памяти и работают существенно быстрее (особенно заметна разница в скорости выполнения 16 и 32-битных программ на P4). Такая хитрая тактика объясняется отсутствием приличного отладчика в новых платформах и их практически полной совместимостью с компиляторами фирмы Borland (в FP не забывайте делать close для выходного файла).

Вот пожалуй и все, план предоставлен Шамилем Ягияевым за что большое ему спасибо! Кстати вы можете посетить отличный сайт uoi.kiev.ua, одним из разработчиков которого Шамиль и является. Этот сайт содержит материалы Украинских олимпиад по информатике, сборов и т.п.

Похожие:

Математические основы программирования Раздел Техника программирования iconТемы, рекомендуемые для работы с одаренными учащимися в плане подготовки к олимпиаде по информатике (программированию) Раздел Математические основы программирования Раздел Техника программирования
Переменные и простейшие типы данных, размеры типов. Линейные программы. Условные операторы. Циклы. Процедуры и функции. Сложные типы...
Математические основы программирования Раздел Техника программирования icon16 марта в 17. 45 аудитория 402 главного корпуса Программа курса Основы программирования
Основы программирования. Методика программирования во Flash. Носители кода. Язык Action Script (AS), история, корни. Окно Actions....
Математические основы программирования Раздел Техника программирования iconПлан-проспект спецкурса "Математические основы функционального программирования"
Целью курса является приобретение фундаментальных знаний в области построения программных систем с использованием современных языков...
Математические основы программирования Раздел Техника программирования iconПрограмма курса " азы программирования"
Умение программировать развивает абстрактное, логическое и образное мышление детей. Средой программирования является qbasic. В интересной...
Математические основы программирования Раздел Техника программирования iconЛекция Языки и системы программирования
Понятие о системе программирования, ее основные функции и компоненты. Принципы работы сред программирования. "Операционные" и "модульные"...
Математические основы программирования Раздел Техника программирования iconСодержимое компакт-диска «Основы программирования на примере Visual Basic. Net»
Учебно-методический и программный комплекс по курсу «Основы программирования на примере Visual Basic. Net» позволяет научиться разрабатывать...
Математические основы программирования Раздел Техника программирования iconВысокоуровневые методы информатики и программирования тестовые задания
Какой язык программирования представляет собою реализацию концепции процедурного программирования?
Математические основы программирования Раздел Техника программирования iconОбзор языков программирования Что такое язык программирования?
Первый вопрос, который обычно задает человек, впервые сталкивающийся с новым языком программирования
Математические основы программирования Раздел Техника программирования iconПарадигмы программирования
Цель курса систематизация знаний о возможностях и особенностях разных стилей и методов программирования при решении различных задач...
Математические основы программирования Раздел Техника программирования iconЛекция 3 Инструментальное по
Инструментальное по (или системы программирования, языки программирования) обеспечивают создание всех классов программ: системных,...
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2012
обратиться к администрации
ru.convdocs.org