Предисловие
1.Вводные понятия
1.1.АЛГОРИТМЫ И ФУНКЦИИ
1.1.1.Что такое алгоритм? 1.1.2. Что такое ЭВМ? 1.1.3. Как можно определять функции? 1.1.4. Упражнения.
1.2. КАК МОЖНО ОПРЕДЕЛИТЬ ЯЗЫК ПАСКАЛЬ?
1.2.1. Два примера простых Паскаль-программ; 1.2.2. Синтаксис и семантика языка; 1.2.3. Алфавит и словарь языка Паскаль; 1.2.4. Синтаксические диаграммы; 1.2.5. Упражнения.
1.3. ЗАДАНИЯ
2. Простейшие программы
2.1. СТАНДАРТНЫЕ ТИПЫ ДАННЫХ
2.1.1. Типы данных, переменные и константы; 2.1.2. Операции и стандартные функции; 2.1.3. Логический тип (Boolean);
2.1.4. Тип целый (Integer); 2.1.5. Вещественный тип (Real); 2.1.6. Литерный тип
(Char); 2.1.7. Упражнения.
2.2. ВЫРАЖЕНИЯ, ОПЕРАТОРЫ И ФУНКЦИИ
2.2.1.Выражения; 2.2.2. Операторы; 2.2.3. Оператор присваивания; 2.2.4. Составной оператор; 2.2.5. Операторы ввода-вывода; 2.2.6. Общий вид Паскаль-программ; 2.2.7. Определяемые функции; 2.2.8. Упражнения.
2.3. ДОКАЗАТЕЛЬСТВО СВОЙСТВ ПРОГРАММ
2.3.1. Зачем нужны доказательства правильности? 2.3.2. Внешняя спецификация программы; 2.3.3. Утверждения как множества состояний; 2.3.4. Метод промежуточных утверждений; 2.3.5. Упражнения.
2.4. ПОСТРОЕНИЕ ЛИНЕЙНЫХ ПРОГРАММ
2.4.1. Периметр и площадь прямоугольного треугольника; 2.4.2. Симметричная буква; 2.4.3. Возведение в степень; 2.4.4. Площадь треугольника; 2.4.5. Упражнения.
2.5. ЗАДАНИЯ
3. Простые программы без циклов
3.1. СРЕДСТВА ДЛЯ ОРГАНИЗАЦИИ ВЕТВЛЕНИЙ
3.1.1. Блок-схемы; 3.1.2. Условный оператор; 3.1.3. Оператор выбора; 3.1.4. Доказательство свойств ветвящихся программ; 3.1.5. Упржнения.
3.2. ПОСТРОЕНИЕ ВЕТВЯЩИХСЯ ПРОГРАММ
3.2.1. Точка в треугольнике; 3.2.2. Максимум из трех чисел; 3.2.3. Табличное задание функции; 3.2.4. Анализ квадратного уравнения; 3.2.5. Тип треугольника; 3.2.6. Упражнения.
3.3. ЗАДАНИЯ
4. Итеративные программы
4.1. СРЕДСТВА ДЛЯ ОРГАНИЗАЦИИ ЦИКЛИЧЕСКИХ ВЫЧИСЛЕНИЙ
4.1.1. Оператор цикла с условием на продолжение; 4.1.2. Свойства оператора цикла; 4.1.3. Оператор цикла с условием на окончание; 4.1.4. Операторы цикла с параметрами; 4.1.5. Пошаговая разработка программ; 4.1.6. Упражнения.
4.2. НЕЗАВИСИМАЯ ОБРАБОТКА ЭЛЕМЕНТОВ ПОСЛЕДОВАТЕЛЬНОСТИ
4.2.1. Перекодировщик; 4.2.2. Выборка элементов последовательности; 4.2.3. Упражнения.
4.3. ПРОГРАММЫ ВЫЧИСЛЕНИЯ ЭЛЕМЕНТА ПОСЛЕДОВАТЕЛЬНОСТИ
4.3.1.Вычисление факториала; 4.3.2. Вычисление числа e; 4.3.3. Схема Горнера; 4.3.4. Упржнения.
4.4. ФУНКЦИИ НА ПОСЛЕДОВАТЕЛЬНОСТЯХ
4.4.1. Подсчет вхождений; 4.4.2. Количество максимумов; 4.4.3. Упражнения.
4.5. ОБРАБОТКА ПОСЛЕДОВАТЕЛЬНОСТИ ПОСЛЕДОВАТЕЛЬНОСТЕЙ И ДВОЙНЫЕ ЦИКЛЫ
4.5.1. Обработка слов предложения; 4.5.2. Приближенное вычисление сумм рядов; 4.5.3. Упражнения.
4.6. ЗАДАНИЯ
5. Программы обработки структурированных данных
5.1. ПРОСТЫЕ ТИПЫ ДАННЫХ, ОПРЕДЕЛЯЕМЫЕ ПРОГРАММИСТОМ
5.1.1. Раздел определений типов; 5.1.2. Введение синонимических типов; 5.1.3. Задание отрезков типов; 5.1.4. Типы, заданные перечислением значений; 5.1.5. Упражнения.
5.2. СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ
5.2.1. Записи; 5.2.2. Массивы; 5.2.3. Матрицы и таблицы; 5.2.4. Доказательство свойств программ со структурированными типами данных; 5.2.5. Упражнения.
5.3. ПРОГРАММЫ ОБРАБОТКИ ЗАПИСЕЙ
5.3.1. Обработка анкет; 5.3.2. Упражнения.
5.4. ПРОГРАММЫ ОБРАБОТКИ ВЕКТОРОВ
5.4.1. Векторная функция; 5.4.2. Поиск в упорядоченном векторе; 5.4.3. Подсчет количеств вхождений букв; 5.4.4. Свертка вектора; 5.4.5. Упражнения.
5.5. ПРОГРАММЫ ОБРАБОТКИ ТАБЛИЦ
5.5.1. Статистика; 5.5.2. Упражнения.
5.6. ПРОГРАММЫ ОБРАБОТКИ МАТРИЦ
5.6.1. Поиск максимума в матрице; 5.6.2. Произведение матриц; 5.6.3. Преобразование матриц; 5.6.4. Поиск номера строки-серии; 5.6.5. Упражнения.
5.7. ЗАДАНИЯ
6. Программы с процедурами и функциями
6.1. ПОДПРОГРАММЫ: ПРОЦЕДУРЫ И ФУНКЦИИ
6.1.1. Описание и вызов процедуры; 6.1.2. Блоки и локализация имен; 6.1.3. Изменение действия — входные параметры; 6.1.4. Получение результатов — выходные параметры; 6.1.5. Вычисление единственного значения — функции; 6.1.6. Использование процедур и функций для пошаговой разработки программ; 6.1.7. Рекурсивные подпрограммы; 6.1.8. Когда и как нужно использовать рекурсию; 6.1.9. Метод структурной индукции; 6.1.10. Упражнения.
6.2. ПОСТРОЕНИЕ ПРОГРАММ С ПРОЦЕДУРАМИ И ФУНКЦИЯМИ
6.2.1. Обработка последовательности векторов; 6.2.2. Ханойские башни; 6.2.3. Кратные суммы; 6.2.4. Быстрая сортировка; 6.2.5. Числа Фибоначчи; 6.2.6. Упражения.
6.3. ЗАДАНИЯ
7. Более сложные программы
7.1. ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ
7.1.1. Ссылки и динамическая память; 7.1.2. Стеки, очереди и бинарные деревья; 7.1.3. Упражнения.
7.2. АНАЛИЗ СЛОЖНОСТИ АЛГОРИТМА
7.2.1. Временная сложность алгоритма; 7.2.2. Упражнения.
7.3. ЗАДАЧИ ПОВЫШЕННОЙ ТРУДНОСТИ
7.3.1. Удаление вершины из поискового дерева; 7.3.2. Порядок вычисления произведения матриц; 7.3.3. Подсчет мощности одного подмножества чисел; 7.3.4. Упражнения.
7.4. ЗАДАНИЯ
8. Индивидуальные задания
8.1. РЕКОМЕНДАЦИИ ПО ВЫПОЛНЕНИЮ ЗАДАНИЙ
8.1.1. Требования к выполнению заданий; 8.1.2. Рекомендации преподавателю и студенту; 8.1.3. Дополнительная литература.
8.2. СЛОВАРЬ ПОНЯТИЙ, ИСПОЛЬЗУЕМЫХ В ЗАДАНИЯХ
8.2.1. Графы и системы дорог; 8.2.2. Грамматики, языки и автоматы; 8.2.3. Формулы и программы; 8.2.4. Геометрия; 8.2.5. Игры.
8.3. ОБЩИЕ РЕКОМЕНДАЦИИ ПО ВЫПОЛНЕНИЮ ЗАДАНИЙ
8.3.1. Анализ задачи; 8.3.2. Выбор представления данных; 8.3.3. Разработка алгоритма; 8.3.4. Обоснование алгоритма; 8.3.5. Анализ алгоритма и его сложности; 8.3.6. Кодирование алгоритма (программирование); 8.3.7. Выбор и обоснование набора текстов; 8.3.8. Отладка.
8.4. РАЗРАБОТКА АЛГОРИТМОВ
8.4.1. Основные типы данных, возникающие при выполнении заданий; 8.4.2. Язык описания алгоритмов; 8.4.3. Поиск с возвращением; 8.4.4. Алгоритм поиска с возвращением; 8.4.5. Обходы ордерева в глубину и в ширину; 8.4.6. Обходы графа в глубину и в ширину; 8.4.7. Усовершенствование поиска с возвращением; 8.4.8. Метод ветвей и границ; 8.4.9. Динамическое программирование; 8.4.10. Методы порождения объектов; 8.4.11. Порождение перестановок; 8.4.12. Порождение подмножеств множества; 8.4.13. Порождение сочетаний.
8.5. ВЫБОР ПРЕДСТАВЛЕНИЯ ДАННЫХ
8.5.1. Вопросы выбора представления данных; 8.5.2. Множество точек на плоскости; 8.5.3. Прямая на плоскости; 8.5.4. Окружность и многоугольник; 8.5.5. Последовательность; 8.5.6. Вектор; 8.5.7. Матрица; 8.5.8. Тексты; 8.5.9. Слова и предложения; 8.5.10. Граф; 8.5.11. Корневое дерево; 8.5.12. Система дорог; 8.5.13. Грамматика; 8.5.14. Автоматная диаграмма; 8.5.15. Логическая формула; 8.5.16. Логический фрагмент; 8.5.17. Простое выражение; 8.5.18. Полином; 8.5.19. Игры.
8.6. ФОРМУЛИРОВКИ ЗАДАНИЙ
8.6.1. Графы и системы дорог; 8.6.2. Грамматики, языки и автоматы; 8.6.3. Формулы и программы; 8.6.4. Геометрия; 8.6.5. Игры.
Библиографический список