- •Ю.П. Чернов, о.П. Шафеева программирование для начинающих
- •1. Среда программирования turbo pascal 7.0
- •1.1. Структура меню среды
- •1.2. Правила оформления программ
- •1.3. Команды редактора тп
- •Команды удаления и вставки
- •1.4. Компиляция и исправление синтаксических ошибок
- •2. Элементы языка pascal
- •2.1. Алфавит языка
- •2.2. Константы. Идентификаторы
- •2.3. Операторы
- •2.3.1. Оператор присваивания
- •2.3.2. Оператор безусловного перехода
- •Стандартные функции
- •2.3.3. Условный оператор if
- •2.3.4. Опеpатоp варианта case
- •2.3.5. Составной и пустой операторы
- •2.3.6. Операторы цикла
- •2.4. Процедуры прерываний
- •2.5. Типизированные константы
- •2.6. Структура программы
- •2.7. Подпрограммы
- •2.7.1. Определение процедур и функций
- •2.7.2. Вложенные подпрограммы
- •2.7.3. Вызов подпрограмм
- •2.7.4. Процедуры
- •2.7.5. Функции
- •2.7.6. Передача в подпрограмму параметров-массивов и параметров-строк
- •2.7.7. Рекурсия
- •2.8. Типы в Турбо Паскале
- •2.8.1. Целые типы
- •Классификация целых типов
- •Встроенные процедуры и функции для целых типов
- •2.8.2. Логический тип
- •2.8.3. Символьный тип
- •Служебные символы
- •2.8.4. Строковый тип
- •Встроенные функции и процедуры для обработки строк
- •Процедуры преобразования
- •2.8.5. Перечислимый тип
- •2.8.6. Ограниченный тип (диапазон)
- •2.8.7. Вещественные типы
- •Вещественные типы
- •Встроенные функции
- •2.8.8. Структурированные типы данных. Массивы
- •2.8.9. Множества
- •2.8.10. Записи
- •2.9. Изменение типа выражения
- •2.10. Процедурные типы
- •2.11. Файлы
- •Общие процедуры и функции для работы с файлами
- •2.11.1. Текстовые файлы
- •2.11.2. Типизированные файлы
- •2.11.3. Нетипизированные файлы
- •2.12. Указатели и динамическая память
- •2.13. Модули
- •2.14. Библиотека Турбо Паскаля
- •2.14.1. Модуль crt
- •2.14.2. Модуль graph
- •Var driver, Mode: integer переменные драйвера и режима.
- •Управление графическим режимом
- •Управление экраном, окном, страницей
- •Управление цветом и палитрой
- •Работа с точками
- •Работа с линиями
- •Построение фигур из линий
- •Построение криволинейных фигур
- •Работа с текстом
- •Обмен с памятью
- •2.15. Динамические структуры данных
- •2.15.1. Связанные динамические данные. Списки
- •Чтобы сослаться на двунаправленный кольцевой список как на единый программный объект, используется указатель, значением которого является ссылка на заглавное звено списка.
- •2.15.2 Очередь
- •2.15.3. Стек
- •3. Практическое программирование Этапы подготовки и решения задач на компьютере
- •Порядок выполнения лабораторных работ
- •Лабораторная работа 1 Основы программирования в среде Турбо Паскаля.
- •Приоритет операций в выражении
- •Задание 1 (программа 1_1)
- •Лабораторная работа 2 Программирование разветвленных алгоритмов. Операторы передачи управления
- •Лабораторная работа 3 Программирование циклических алгоритмов с заданным числом повторений
- •Лабораторная работа 4 Программирование циклических алгоритмов с предусловием
- •Лабораторная работа 5 Программирование циклических алгоритмов с постусловием
- •Модифицировать программу 3_2 для вычисления функций f1(X) и f2 (X) с применением оператора цикла с постусловием. Выполнить ее и сравнить результаты с полученными ранее.
- •Лабораторная работа 6 Программирование алгоритмов обработки одномерных массивов
- •Задание 1
- •Лабораторная работа 7
- •Лабораторная работа 8 Программирование с использованием функций
- •Лабораторная работа 9 Программирование с использованием процедур
- •Лабораторная работа 10 Обработка символьных и строковых данных
- •Лабораторная работа 11 Файлы
- •Лабораторная работа 12 Записи
- •Лабораторная работа 13 Решение нелинейных уравнений
- •Задание (программа_13)
- •Лабораторная работа 14 Вычисление приближенного значения определенного интеграла
- •Лабораторная работа 15 Модульное программирование
- •Лабораторная работа 16 Графика
- •Библиографический список
- •Обозначения графические в схемах алгоритмов (гост 19.701-90)
- •Зарезервированные слова Turbo Pascal 7.0
- •Приложение в
- •Кодировка символов в соответствии с кодами ascii
- •Приложение г
- •Альтернативная кодировка госТа для кодов 128...255
- •Клавиши с кодами из двух частей
- •Содержание
2.4. Процедуры прерываний
Процедура EXIT; осуществляет выход из программного модуля-подпрограммы или основной программы. Из подпрограммы управление передается этой процедурой в вызывающую программу к следующему за ее вызовом оператору. В программе EXIT приводит к завершению ее работы.
Процедура HALT(Cod); прекращает выполнение программы, вызывает в случае необходимости подпрограмму завершения и осуществляет выход в операционную систему. Cod необязательный параметр, определяющий код завершения программы.
В версии 7.0 Турбо Паскаля в циклах FOR, REPEAT и WHILE можно использовать две новые процедуры прерываний BREAK и CONTINUE.
Процедура BREAK; осуществляет немедленный выход из цикла, не дожидаясь выполнения условия о выходе из него. Процедура CONTINUE позволяет начать новую итерацию цикла, даже если предыдущая еще не закончена.
Пример: Найти первое отрицательное число во входном потоке из вещественных чисел (не более 100).
Var i: Integer;
a: Real;
Begin
For i:=1 To 100 do
Begin
read(a);
If a >= 0 Then сontinue; {пpи выполнении условия изменяется паpаметp цикла и цикл повторяется сначала}
WriteLn('Первое отрицательное число =', a);
Break {выход из цикла}
end
end.
2.5. Типизированные константы
Константы вида <идентификатор>=<значение> (описанные в разделе CONST) изменять в программе нельзя.
Типизированным же константам можно присваивать другие значения в ходе выполнения программы. Физически они представляют собой переменные с начальными (стартовыми) значениями.
Задаются они в блоке объявления констант CONST следующим форматом:
<идентификатор>:<тип>=<значение>;
Типизированная константа приобретает указанное при объявлении значение только к моменту начала работы программы. При повторном входе в блок, в котором она объявлена, константа сохраняет то значение, которое она имела к моменту выхода из блока.
Типизированные константы могут быть любого типа, кроме файлов. Поскольку типизированная константа не отличается от переменной, ее нельзя использовать в качестве значения при объявлении других констант или границ типа "диапазон".
Примеры объявления типизированных констант для простых типов:
CONST
C1: integer = 311; {простые типы}
C2: real = 3.14;
C3: boolean = false;
C4: char = 'A';
C5: string = 'строка'; {строковый тип}
В константах-массивах список констант разделяется запятыми и заключается в круглые скобки:
vector: array[0..4] of byte=(0,1,2,3,4);
массив символов может быть описан следующими эквивалентными записями:
vec:array[-1..2] of char='abcd'; или vec:array[-1..2] of char=('a','b','c','d');
При объявлении многомерных констант-массивов список констант, соответствующих каждому измерению, заключается в дополнительные круглые скобки и отделяется от соседних списков запятыми. Самый внутренний список констант связывается с изменением самого правого индекса массива. Например:
CONST
matr: array[1..2,1..4] of byte = ((0,1,2,3),(4,5,6,7));
cub: array[0..1,1..2,1..3] of byte = (((0,1,2),(3,4,5)),
((6,7,8),(9,10,11)));
Константы-множества задаются в виде правильного конструктора множества и перечисляются в квадратных скобках:
TYPE days = set of 1..31;
CONST s: days = [1..5,8..12,15..19,22..26,29..31];
Определение константы-записи имеют вид
<идентификатоp>:<тип_записи >=(<список_значений_полей>).
Список значений полей представляет собой список из последовательностей вида: имя поля, двоеточие и константа. Поля должны указываться в той же последовательности, в какой они перечислены в объявлении типа. Например:
TYPE
POINT = record
x, y: real;
end;
CONST
p: POINT = (x:1; y:1);
Единственным значением типизированной константы-указателя может быть NIL (пустой), например: CONST p: ^real = NIL;