- •Ю.П. Чернов, о.П. Шафеева программирование для начинающих
- •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.6. Структура программы
Любая программная единица включает следующие разделы:
<Объявление программной единицы>
{Раздел описаний} BEGIN
{Раздел исполняемых операторов} END. {символ конца программной единицы}
<Объявление программной единицы> заголовок программы, процедуры или функции. Заголовок программы можно опускать, для процедур и функций наличие заголовка обязательно.
<Cимвол конца программной единицы> это символ точки для программы или символ ";" для процедуры или функции.
В разделе описаний объявляются идентификаторы типов, объектов, констант, переменных, а также метки, процедуры и функции. Каждый блок определяется своим ключевым словом. Тогда структура программы будет иметь вид
PROGRAM <имя программы>;
USES <список библиотечных модулей>;
LABEL <список меток в основном блоке>;
CONST < определение констант>;
TYPE <определение типов>;
VAR
<определение глобальных переменных>;
<определение процедур>
<определение функций>;
BEGIN
<основной блок программы>
END.
Директива USES выполняет подключение стандартных или написанных программистом модулей. Она должен обязательно стоять первым, если присутствует в программе. Например, строкой USES CRT, DOS, GRAPH;
производится подключение трех модулей CRT, DOS и GRAPH.
Модуль CRT содержит процедуры и функции для управления выводом текста на дисплей, звуковым генератором и чтения с клавиатуры. DOS содержит программы операционной системы. GRAPH содержит комплекс графических программ универсального назначения.
В отличие от стандартного Паскаля блоки TYPE, CONST, VAR, LABEL в Турбо Паскале могут следовать друг за другом в любом порядке и встречаться в разделе описаний сколько угодно раз.
В блоке LABEL перечисляются через запятую метки, используемые в программной единице. Метка может содержать числовое значение от 0 до 9999 либо являться идентификатором из не более чем 63 символов. Например:
LABEL 1, 4.00, M1, EPS;
если метка описана в этом блоке, но в программе не встретилась, то выдается сообщение об ошибке. Метки не должны повторяться. Блок меток может находиться в любом месте, их может быть несколько, но все метки должны быть определены до начала основной программы. При отсутствии меток блок исключается.
Блок CONST описывает константы двух видов:
CONST <имя1>=<константа1>; или CONST <имяК>:<тип>=<константаK>;
<имя2>=<константа2>; <имяR>:<тип>=<константаR>;
... ...
Например: CONST
NI=100;
f= -NI;
d: real=7.65432;
Значения констант определенных в этом блоке первым способом (слева) в программе изменять нельзя. Типизированным же константам, заданным вторым способом (справа), можно переприсваивать другие значения в ходе выполнения программы.
Блок TYPE содержит определения вводимых программистом нестандартных типов в следующих формах
TYPE <идентификатор>=(список_компонентов);
или
TYPE идентификатор>=<описание_типа>или<имя_другого_типа>;
Пример: TYPE FAMILY=(FATHER, MOTHER);
Если в Паскале используются только стандартные типы (например: INTEGER, REAL), то этот блок опускается.
Блок VAR описывает имена переменных, а также имена массивов:
VAR A1, A2, ..., An: <тип1>;
B1, B2, ..., Bn: <типК>;
...
<имя массива>: ARRAY[диапазон] OF <тип>;
где буквами Ai, Bj указаны имена переменных, а <тип1>, <типК> – типы соответствующих переменных, [диапазон] указывает начальное и конечное значения индексов массива, <тип> задает тип элементов массива.
Пример: VAR
A, B, C: INTEGER; {объявлены три переменные целого типа}
D, M: REAL; {объявлены две вещественные переменные}
MASS1: ARRAY[1..10] OF REAL; {массив из 10 чисел}
MASS2: ARRAY[-2..2] OF CHAR; {массив из пяти символов}
В качестве значений диапазона могут использоваться идентификаторы любого порядкового типа, если их значения определены выше в разделе CONST.
Основной блок программы начинается с ключевого слова BEGIN и заканчивается END, после которого ставится точка. Основной блок содержит программу из выполняемых операторов, в которой используется то, что было объявлено и описано в разделе описаний.
Пример программы, явно преобразующей вещественные числа в целые:
PROGRAM INTRЕAL;
VAR A,B,C:INTEGER;
X,Y,Z:REAL;
BEGIN
READ(X,Y);
Z:=Y+X;
A:=TRUNС(Z); {выделение целой части }
B:=ROUND(Z); (* округление *)
C:=B-A;
WRITELN('Z=', Z, 'A=', A, 'B=', B, 'C=', C);
END.
Длина строки в программе не может превышать 126 символов. Объем текста в файле с программой не должен быть более 64 Кб.
Любой блок программы может содержать комментарий.
Комментарий это произвольная последовательность любых символов, обрамленная фигурными скобками или парами символов (* и *). Комментарий разрешается вставлять в любое место программы, где по смыслу может стоять пробел.
Существует некоторое ограничение на размещение блоков. Программа компилируется последовательно, поэтому то что используется в программе или подпрограммме, должно быть определено выше.