- •Средства разработки программ на Паскале
- •Структура Паскаль-программы
- •Комментарии
- •Директивы компилятора
- •Идентификаторы
- •Переменные и типы данных
- •Константы
- •Неименованные константы
- •Нетипизированные константы
- •Типизированные константы
- •Простейшие операторы
- •Метки и безусловный переход
- •Ввод и вывод: консоль
- •Ввод с консоли
- •Вывод на консоль
- •Форматный вывод
- •Пример простейшей программы на языке Pascal
- •Типы данных
- •Порядковые типы данных
- •Стандартные подпрограммы, обрабатывающие порядковые типы данных
- •Типы данных, относящиеся к порядковым
- •Вещественные типы данных
- •Конструируемые типы данных
- •Операции и выражения
- •Совместимость типов данных
- •Приведение типов данных
- •Ветвления, массивы, циклы
- •Массивы
- •Операторы циклов
- •Сортировки массивов
- •Быстрая сортировка
- •Символы и строки
- •Неименованные константы
- •Нетипизированные константы
- •Типизированные константы
- •Операции
- •Стандартные функции
- •Стандартные функции и процедуры обработки строк
- •Операции со строками Сравнения
- •Обращение к компонентам строки
- •Конкатенация
- •Множества
- •Описание множеств
- •Множество-константа Неименованная константа
- •Нетипизированная константа
- •Типизированная константа
- •Операции с множествами
- •Представление множеств массивами
- •Представление множеств линейными массивами
- •Представление множеств битовыми массивами
- •Примеры использования символов, строк и множеств
- •Что такое файл
- •Когда нужно использовать файлы
- •Разновидности файлов
- •Описание файлов
- •Текстовые файлы Назначение файла
- •Открытие файла
- •Закрытие файла
- •Считывание из файла
- •Запись в файл
- •Пробельные символы
- •Пример использования файлов
- •Решение
- •Реализация
- •Изменение реакции на ошибку
- •Описание записей
- •Задание записей константой
- •Доступ к полям
- •Оперирование несколькими полями
- •Вложенные операторы with
- •Запись с вариантной частью
- •Описание записи с вариантной частью
- •Механизм использования записи с вариантной частью
- •Бинарные файлы
- •Типизированные файлы
- •Описание типизированных файлов
- •Назначение типизированного файла
- •Открытие и закрытие типизированного файла
- •Считывание из типизированного файла
- •Поиск в типизированном файле
- •Запись в типизированный файл
- •Поиск в нетипизированном файле
- •Запись и чтение
- •Подпрограммы обработки директорий
- •Применимость подпрограмм обработки файлов
- •Процедуры и функции Подпрограммы
- •Список параметров
- •Возвращаемые значения
- •Вызов подпрограмм
- •Способы подстановки аргументов
- •Параметр-значение Описание
- •Механизм передачи значения
- •Параметр-переменная Описание
- •Механизм передачи значения
- •Параметр-константа Описание
- •Механизм передачи значения
- •Области действия имен Разграничение контекстов
- •Побочный эффект
- •Совпадение имен
- •Нетипизированные параметры
- •Явное преобразование типа
- •Совмещение в памяти
- •Открытые параметры
- •Открытые массивы
- •Рекурсивные подпрограммы Динамические структуры данных
- •Операции
- •Очередь
- •Операции
- •Рекурсия
- •Рекурсивные подпрограммы
- •Пример рекурсивного алгоритма
- •Алгоритм решения
- •Стековая организация рекурсии
- •Ограничение глубины рекурсии
- •Замена рекурсивных алгоритмов итеративными
- •Пример сравнения рекурсивного и нерекурсивного алгоритма
- •Рекурсивный алгоритм
- •Реализация рекурсивного алгоритма
- •Полный перебор с отсечением
- •Нерекурсивный алгоритм
- •Реализация нерекурсивного алгоритма
- •Иллюстрация
- •Эффективность
- •Быстрая сортировка2
- •Алгоритм Быстр
- •Реализация алгоритма Быстр
- •Эффективность алгоритма Быстр
- •Адреса и указатели. Списочные структуры данных Статически выделяемая память
- •Разыменование
- •Присваивания
- •Сравнения
- •Динамически распределяемая память
- •Динамическое выделение памяти Типизированные указатели
- •Нетипизированные указатели
- •Динамическое освобождение памяти Типизированные указатели
- •Нетипизированные указатели
- •Списочные структуры
- •Структура списков
- •Описание списков
- •Оперирование элементами списка Хранение списка
- •Обращение к элементам списка
- •Создание списков
- •Просмотр элементов списка
- •Удаление элементов списка
- •Перестройка списков
- •Примеры перестройки линейных списков
- •Реализация
- •Создание дружественного интерфейса
- •Заставка
- •Ввод информации
- •Приглашения
- •Вывод информации
- •Технология программирования и отладка Советы по технологии написания быстро отлаживаемых программ
- •Имена, имена, имена...
- •Кусочки, куски и кусищи...
- •Спасение утопающих - дело рук самих утопающих
- •Отладка и тестирование
- •Поиск и исправление ошибок
- •Правила составления тестов
- •Оптимизация программ
- •Учебники к курсу
Комментарии 7
Директивы компилятора 7
Идентификаторы 7
Переменные и типы данных 8
Константы 8
Неименованные константы 9
Нетипизированные константы 9
Типизированные константы 10
Простейшие операторы 10
Метки и безусловный переход 11
Ввод и вывод: консоль 12
Ввод с консоли 12
Вывод на консоль 13
Форматный вывод 14
Пример простейшей программы на языке Pascal 15
Порядковые типы данных 17
Стандартные подпрограммы, обрабатывающие порядковые типы данных 17
Типы данных, относящиеся к порядковым 18
Вещественные типы данных 20
Конструируемые типы данных 20
Неименованные константы 56
Нетипизированные константы 57
Типизированные константы 57
Операции 57
Стандартные функции 57
Стандартные функции и процедуры обработки строк 58
Операции со строками 59
Сравнения 59
Обращение к компонентам строки 60
Конкатенация 61
Множества 61
Описание множеств 61
Множество-константа 61
Неименованная константа 61
Нетипизированная константа 62
Типизированная константа 62
Операции с множествами 62
Представление множеств массивами 63
Представление множеств линейными массивами 63
Представление множеств битовыми массивами 64
Примеры использования символов, строк и множеств 67
Что такое файл 69
Когда нужно использовать файлы 69
Разновидности файлов 70
Описание файлов 70
Текстовые файлы 71
Назначение файла 71
Открытие файла 71
Закрытие файла 71
Считывание из файла 72
Запись в файл 73
Пробельные символы 74
Пример использования файлов 76
Решение 76
Реализация 77
Изменение реакции на ошибку 77
Пример использования директив {$I} 78
Описание записей 80
Задание записей константой 81
Доступ к полям 82
Оперирование несколькими полями 82
Вложенные операторы with 83
Запись с вариантной частью 84
Описание записи с вариантной частью 84
Механизм использования записи с вариантной частью 86
Бинарные файлы 86
Типизированные файлы 86
Описание типизированных файлов 87
Назначение типизированного файла 88
Открытие и закрытие типизированного файла 88
Считывание из типизированного файла 88
Поиск в типизированном файле 89
Запись в типизированный файл 90
Нетипизированные файлы 90
Описание нетипизированных файлов 91
Назначение нетипизированного файла 91
Открытие и закрытие нетипизированного файла 91
Поиск в нетипизированном файле 91
Запись и чтение 91
Подпрограммы обработки директорий 92
Применимость подпрограмм обработки файлов 92
Подпрограммы 93
Объявление и описание 94
Объявление функции 94
Объявление процедуры 95
Описание подпрограммы 95
Список параметров 96
Возвращаемые значения 98
Вызов подпрограмм 98
Способы подстановки аргументов 99
Параметр-значение 100
Описание 100
Механизм передачи значения 100
Параметр-переменная 101
Описание 101
Механизм передачи значения 101
Параметр-константа 102
Описание 102
Механизм передачи значения 102
Области действия имен 103
Разграничение контекстов 103
Побочный эффект 104
Совпадение имен 104
Нетипизированные параметры 104
Явное преобразование типа 105
Совмещение в памяти 105
Открытые параметры 106
Открытые массивы 106
Открытые строки 107
Процедурный тип данных 107
Описание 107
Аргументы 108
Вызов 108
Динамические структуры данных 108
Стек 109
Операции 109
Очередь 110
Операции 110
Дек 111
Рекурсия 111
Рекурсивные подпрограммы 111
Пример рекурсивного алгоритма 112
Алгоритм решения 112
Стековая организация рекурсии 113
Ограничение глубины рекурсии 115
Замена рекурсивных алгоритмов итеративными 116
Пример сравнения рекурсивного и нерекурсивного алгоритма 116
Рекурсивный алгоритм 117
Реализация рекурсивного алгоритма 117
Полный перебор с отсечением 117
Нерекурсивный алгоритм 118
Реализация нерекурсивного алгоритма 118
Иллюстрация 120
Эффективность 123
Быстрая сортировка2 123
Алгоритм Быстр 123
Реализация алгоритма Быстр 123
Эффективность алгоритма Быстр 124
Статически выделяемая память 125
Адреса 125
Указатели 125
Описание указателей 126
Операции с указателями 126
Определение адреса 126
Разыменование 126
Присваивания 127
Сравнения 127
Динамически распределяемая память 128
Динамическое выделение памяти 128
Типизированные указатели 128
Нетипизированные указатели 129
Динамическое освобождение памяти 129
Типизированные указатели 129
Нетипизированные указатели 129
Списочные структуры 129
Структура списков 130
Описание списков 131
Оперирование элементами списка 133
Хранение списка 133
Обращение к элементам списка 133
Создание списков 134
Просмотр элементов списка 135
Удаление элементов списка 136
Перестройка списков 136
Примеры перестройки линейных списков 138
Реализация 138
Создание дружественного интерфейса 140
Заставка 141
Ввод информации 141
Приглашения 142
Защита 142
Меню 143
Вывод информации 143
Советы по технологии написания быстро отлаживаемых программ 144
Имена, имена, имена... 145
Кусочки, куски и кусищи... 148
Спасение утопающих - дело рук самих утопающих 150
Отладка и тестирование 151
Поиск и исправление ошибок 151
Правила составления тестов 153
Оптимизация программ 155
Учебники к курсу 156
Средства разработки программ на Паскале
В составе среды разработчика Turbo Pascal имеются:
текстовый редактор, в котором можно набирать тексты программ;
компилятор, превращающий исходные тексты в исполняемый код;
отладчик, помогающий обнаруживать и исправлять ошибки в программе
Возможностей, предоставляемых средой Turbo Pascal, без которых написание программ становится затруднительным:
Нажатие клавиш F1, Alt+F1, Ctrl+F1 открывает экранную подсказку.
Нажатие клавиши F2 позволяет сохранить исходный текст программы.
Нажатие клавиши F3 открывает диалог выбора нужного файла (по умолчанию, отображаются только файлы с расширением .pas).
Нажатие клавиши Alt+F5 показывает консоль с результатами работы программы.
Нажатие клавиши Ctrl+F9 начинает процесс выполнения программы. Если она еще не была откомпилирована, предварительно будет вызван компилятор
Клавиши F7 и F8 обеспечивают трассировку - пошаговое выполнение программы, позволяющее проследить за процессом ее выполнения.
Дополнительное окно Debug/Watch показывает текущее состояние выбранных переменных.
Структура Паскаль-программы
Программа должна быть оформлена в полном соответствии с синтаксисом (правилами построения программ) этого языка.
Любая Pascal-программа может состоять из следующих блоков (квадратными скобками здесь и далее помечены необязательные части):
program <имя_программы>;
[ uses <имена_подключаемых_модулей>;]
[ label <список_меток>;]
[ const <имя_константы> = <значение_константы>;]
(см. п. "Константы" ниже)
[ type <имя_типа> = <определение_типа>;]
[ var <имя_переменной> : <тип_переменной>;]
[ procedure <имя_процедуры> <описание_процедуры>;]
[ function <имя_функции> <описание_функции>;]
begin {начало основного тела программы}
<операторы>
end. (* конец основного тела программы *)
Поздние версии компиляторов языка Pascal уже не требуют указывать название программы, то есть строку
program <имя_программы>;
можно опустить. Но это возможно только в том случае, если вся программа содержится в одном модуле-файле. Если же программа состоит из нескольких самостоятельных кусков - модулей, то каждый из них должен иметь заголовок (program или unit).
Любой из необязательных разделов может встречаться в тексте программы более одного раза, их общая последовательность также может меняться, но при этом всегда должно выполняться главное правило языка Pascal: прежде чем объект будет использован, он должен быть объявлен и описан.
Внешний вид исходного текста программы
Компиляторы языка Pascal не различают строчные и прописные буквы, а пробельные символы игнорируют, поэтому текст программы можно структурировать так, чтобы читать и отлаживать его было наиболее удобно.
Например, операторы каждого логически единого блока программы стоит записывать с небольшим отступом от левого края экрана, и чем глубже вложенность блока, тем шире должны быть отступы перед входящими в него операторами. Кроме того, встроенный редактор среды Turbo Pascal автоматически выравнивает левые края строк. И еще: для облегчения отладки программы не следует записывать на одну строку несколько операторов.