Наверх

К.Поляков, 2002 (Rus)
Программирование на языке Си для школьников и не только. Основные понятия и алгоритмы

Предлагаемый материал собран на основании уроков-лекций, читаемых автором в 163 школе города Санкт-Петербурга с 1995 года, и опирается на среду программирования Borland C v3.1 (комм. CHAS: можно использовать при работе с иными языками при изучении понятий (рекурсия, динамическое программирование, сортировка, графы и т.п.), способов и методов реализаций, алгоритмов). Однако практически все изложенные методы и приемы программирования могут быть перенесены в современные среды, например Microsoft VC++. Главные достоинство сборника - доступность для начинающих школьников и студентов, четкость изложения и лаконичность, наличие множественных комментарий к коду программ. Теоретический материал и краткие пояснения чередуются с пояснительными примерами и программами (достаточными фрагментами кода)

Сборник содержит большое число важных классических алгоритмов и их подробное описание. Обозначена целесообразность применения того или иного алгоритма и представлена соответствующая программная реализация. В качестве основы для рассмотрения представленных алгоритмов предлагается соответствующая задача. Для понимания и усвоения алгоритмов глубокие знания языка С не обязательны (для тех, кто владеет языком Pascal все описания достаточны)

Рекомендован для школьников и студентов, преподавателей школ, техникумов и ВУЗов в качестве опорного учебника. Представляет интерес для учащихся, студентов и учителей, ведущих подготовку к олимпиадам по информатике и математике. На основе сборника может строиться план работы классов с углубленным изучением информатики (математики), кружка или факультатива


ОГЛАВЛЕНИЕ

ГЛАВА I. ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ

1. Простейшие программы
   Зачем нужно программирование?
   Два этапа создания программ
   Простейшая программа на Си
   Вывод текста на экран
   Как запустить программу?
   Остановим мгновение

2. Переменные
   Типы данных и переменные
   Вычисление суммы двух чисел (ввод и вывод)
   Арифметические выражения
   Форматы для вывода данных

3. Циклы
   Зачем нужны циклы?
   Цикл с известным числом шагов (for)
   Цикл с условием (while)
   Цикл с постусловием (do ... while)
   Вычисление сумм последовательностей

4. Выбор вариантов
   Зачем нужны условные операторы? 
   Условный оператор if ... else ...
   Сложные условия
   Досрочный выход из цикла
   Переключатель switch (множественный выбор)

5. Методы отладки программ
   Отладочные средства Borland C v3.1
   Практические приемы

6. Работа в графическом режиме
   Общая структура программы
   Простейшая графическая программа
   Графические функции
   Пример программы

7. Процедуры
   Пример задачи с процедурой
   Улучшение процедуры

8. Функции
   Отличие функций от процедур
   Логические функции
   Функции, возвращающие два значения

9. Структура программ
   Составные части программы
   Глобальные и локальные переменные
   Оформление текста программы

10. Анимация
   Что такое анимация?
   Движение объекта
   Отскок от поверхности
   Управление клавишами-стрелками

11. Случайные и псевдослучайные числа
   Что такое случайные числа?
   Распределение случайных чисел
   Функции для работы со случайными числами
   Случайные числа в заданном интервале
   Снег на экране



ГЛАВА II. ХРАНЕНИЕ И ОБРАБОТКА ДАННЫХ

1. Массивы 
   Основные понятия
   Ввод с клавиатуры и вывод на экран
   Заполнение случайными числами
   Работа с текстовыми файлами 
   Работа с двоичными файлами
   Простой поиск в массиве
   Перестановка элементов массива
   Сортировка массивов
   Двоичный поиск в массиве
   Массивы в процедурах и функциях

2. Символьные строки
   Что такое символьная строка?
   Стандартный ввод и вывод
   Работа с файлами
   Функции для работы со строками
   Строки в функциях и процедурах

3. Матрицы (двухмерные массивы)
   Что такое матрица?
   Объявление матриц
   Стандартный ввод и вывод
   Работа с файлами
   Алгоритмы для работы с матрицами

4. Массивы символьных строк
   Объявление и инициализация
   Ввод и вывод
   Сортировка

5. Управление памятью
   Указатели
   Динамическое выделение памяти 
   Выделение памяти для матрицы

6. Рекурсия
   Что такое рекурсия?
   Не допустим бесконечную рекурсию!
   Когда рекурсия не нужна
   Рекурсивный поиск
   Рекурсивные фигуры
   Перебор вариантов
   Быстрая сортировка

7. Структуры
   Что такое структуры?
   Объявление и инициализация
   Работа с полями структуры
   Ввод и вывод
   Копирование
   Массивы структур
   Динамическое выделение памяти
   Структуры как параметры процедур
   Сортировка по ключу



ГЛАВА III. РАЗРАБОТКА ПРОГРАММ


1. Проектирование программ
   Этапы разработки программ
   Программирование «снизу вверх»
   Структурное программирование

2. Построение графиков и работа с ними
   Структура программы
   Способы задания функций
   Системы координат
   Построение графиков
   Как найти точки пересечения?
   Штриховка замкнутой области
   Площадь замкнутой области

3. Вычислительные методы
   Целочисленные алгоритмы
   Многоразрядные целые числа
   Многочлены
   Последовательности и ряды
   Численное решение уравнений
   Вычисление определенных интегралов
   Вычисление длины кривой
   Оптимизация

4. Моделирование
   Что такое модель?
   Виды моделей
   Вращение
   Использование массивов
   Математическое моделирование физических процессов

5. Сложные проекты
   Зачем нужны проекты?
   Как создать проект?
   Как загрузить проект?
   Общие глобальные переменные
   Общие заголовочные файлы
   Оверлейные программы



ГЛАВА IV. ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ

1. Списки
   Динамические структуры данных
   Связанный список
   Операции со списком
   Двусвязный список
   Операции с двусвязным списком
   Циклические списки

2. Стеки, очереди, деки
   Стек
   Реализация стека в языке Си
   Системный стек в программах
   Очередь
   Дек

3. Деревья
   Что такое деревья?
   Реализация деревьев в языке Си
   Сортировка и поиск с помощью дерева
   Разбор арифметического выражения
   Дерево игр

4. Графы
   Основные понятия
   Задача Прима-Краскала
   Кратчайший путь
   Оптимальное размещение
   Задача коммивояжера
   Задача о паросочетаниях