- •Р.К. Ахмадулин технология программирования
- •Оглавление
- •§1. Основные понятия
- •Основные символы языка Паскаль
- •Элементарные конструкции языка Паскаль
- •Примеры записи чисел и выражений на языке Паскаль
- •Вопросы для самопроверки
- •§2. Типы данных
- •Целые типы
- •Вещественные типы
- •Символьный тип
- •Логический тип
- •Скалярные типы, определяемые пользователем
- •Вопросы для самопроверки
- •§3. Операции и выражения
- •Приоритет операций и отношений в выражениях
- •Стандартные (встроенные) функции
- •Вопросы для самопроверки
- •§4. Структура программы
- •Комментарии
- •Директивы компилятора
- •Оформление исходного текста
- •Вопросы для самопроверки
- •§5. Переменные и константы. Оператор присваивания
- •Понятие константы
- •Понятие переменной
- •Оператор присваивания
- •Совместимость типов данных
- •Понятие типизированной константы
- •Вопросы для самопроверки
- •§6. Процедуры ввода и вывода
- •Процедуры вывода
- •Форматированный вывод
- •Процедуры ввода
- •Вопросы для самопроверки
- •§7. Условный оператор и оператор выбора. Оператор перехода
- •Условный оператор if
- •Понятие составного оператора
- •Оператор выбора
- •Оператор перехода
- •Вопросы для самопроверки
- •§8. Операторы цикла
- •Циклы с заданным числом итераций
- •Циклы с предусловием
- •Циклы с постусловием
- •Вопросы для самопроверки
- •§9. Пример использования циклов
- •Вычисление факториала
- •Вычисление суммы по заданной формуле
- •Вычисление суммы по формуле с заданной точностью
- •Вычисление максимального элемента последовательности
- •Вычисление длины последовательности элементов
- •Вопросы для самопроверки
- •§10. Массивы
- •Описание массива
- •Обращение к элементам массива
- •Многомерные массивы
- •Допустимые операции с массивами
- •Инициализация массива
- •Вопросы для самопроверки
- •§11. Алгоритмы сортировки
- •Сортировка выбором
- •Сортировка вставкой
- •Пузырьковая сортировка
- •Улучшенные сортировки
- •Вопросы для самопроверки
- •§12. Строковый тип
- •Описание строковых переменных
- •Операции над строками
- •Процедуры и функции для работы со строками
- •Вопросы для самопроверки
- •§13. Записи
- •Объявление записи
- •Обращение к записям
- •Оператор присоединения with
- •Записи с вариантами
- •Инициализация записи
- •Вопросы для самопроверки
- •§14. Множества
- •Описание множеств
- •Операции над множествами
- •Пример использования множеств
- •Множества как типизированная константы
- •Вопросы для самопроверки
- •§15. Процедуры и функции
- •Понятие процедуры и функции
- •Структура процедуры
- •Структура функции
- •Формальные параметры
- •Глобальные и локальные объекты
- •Вопросы для самопроверки
- •§16. Модули
- •Понятие модуля
- •Стандартные модули в Турбо Паскаль
- •Подключение модулей
- •Структура модуля
- •Вопросы для самопроверки
- •§17. Файлы
- •Понятие файла
- •Процедуры и функции для работы с файлами
- •Понятие буфера ввода-вывода
- •Вопросы для самопроверки
- •§18. Типизированные файлы
- •Описание типизированных файлов
- •Операции над типизированными файлами
- •Последовательный и прямой доступ
- •Вопросы для самопроверки
- •§20. Текстовые файлы
- •Описание типизированных файлов
- •Чтение и запись
- •Конец строки и конец файла
- •Дополнительные процедуры для работы с текстовыми файлами
- •Файлы Input и Output
- •Вопросы для самопроверки
- •§21. Ссылки и указатели
- •Понятие указателя
- •Описание указателей
- •Операции с указателями
- •Выделение и освобождение динамической памяти
- •Вопросы для самопроверки
- •Рекомендуемая литература
- •Технология программирования
- •625000, Тюмень, ул. Володарского, 38
- •625039, Тюмень, ул. Киевская, 52
Вопросы для самопроверки
1. Что представляют собой операции «целочисленное деление» и «остаток от деления»?
2. Что определяет приоритет операций?
3. Какая операция выполнится раньше в выражении без скобок: AND или XOR?
4. Как записать на языке Паскаль выражение x2+|a-b|?
5. Какого типа возвращает результат функция sqrt?
§4. Структура программы
Программа на языке Паскаль состоит из заголовка, блока описаний и блока операторов.
Заголовок программы содержит имя программы. Он начинается с ключевого слова program, за которым и указывается само имя. При этом имя программы должно удовлетворять требованиям к именам (идентификаторам) в языке Паскаль, которые были приведены в §1.
Пример: Program PRIM;
Заголовок программы не является обязательным элементом. В случае если имеется файл *.pas, в котором записан исходный текст лишь одной программы, то она может быть безымянной. В этом случае ключевое слово program не указывается. Если же у программы есть заголовок, то слово program записывается в первую очередь.
За заголовком программы следует блок описаний. Все, что используется в программе на языке Паскаль (метки, константы, переменные и т.п.), должно быть предварительно описано в этом блоке. Другими словами, если мы используем в исходном тексте программы некоторое X, то компилятор к этому времени должен уже знать, что такое X, какого он типа, какой объем памяти необходимо для него выделить, какие в нем могут храниться значения и т.п.
Описания могут включать в себя раздел подключаемых библиотек (модулей), раздел описания меток, раздел описания констант, раздел описания типов, раздел описания переменных, раздел описания процедур и функций. Каждый раздел начинается со специального служебного слова, за которым и следуют собственно описания.
uses <описание подключаемых библиотек>;
label <описание меток>;
const <описание констант>;
type <описание типов>;
var <описание переменных>;
<описание процедур и функций>;
Рассмотрим вкратце назначение некоторых из перечисленных разделов.
Раздел описания модулей определяется служебным словом uses и содержит имена подключаемых модулей (библиотек), как входящих в состав системы Турбо Паскаль, так и написанных пользователем. Раздел описания модулей должен быть первым среди разделов описаний. Имена модулей отделяются друг от друга запятыми.
Пример: uses CRT, Graph;
После того, как в разделе uses указано имя библиотеки, в самой программе можно использовать дополнительные процедуры и функции, входящие в её состав.
Любой оператор в программе может быть помечен меткой. Благодаря этой метке, к такому оператору можно перейти из любого места программы с помощью специального оператора goto (получается команда типа «перейти к оператору, который помечен меткой METKA»). В качестве метки могут использоваться произвольные целые без знака, содержащие не более четырех цифр, а также любые имена. Метка ставится перед оператором и отделяется от него двоеточием. Все метки, используемые в программе, должны быть перечислены в разделе описания меток.
Пример: label 3, 471, 29, Quit;
Описание констант позволяет использовать имена как синонимы некоторых значений. Например, в математике известны такие константы, как π (3.14) или e (2.71). В программе на языке Паскаль все такие константы необходимо определить в разделе описаний констант.
Пример: const K= 1024; MAX= 16384;
В разделе описания переменных определяются все используемые в программе переменные и их типы. Более подробно с ними мы познакомимся в следующих параграфах.
Пример:
var
P,Q,R: Integer;
A, B: Char;
F1, F2: Boolean;
Отметим, что в программе необязательно должны присутствовать все указанные выше разделы: пользователь описывает только то, что он использует. Если в программе нет, например, констант или меток, то в блоке описаний соответствующие разделы не записываются. В случае очень простой программы может так получиться, что блок описания вовсе не потребуется.
Завершает программу на языке Паскаль основной блок. Основной блок, в отличие от заголовка и описаний, присутствует всегда во всех программах. Именно здесь записываются все команды, которые необходимо выполнить.
Основной блок представляет собой набор операторов, разделенных между собой символами «;». Он начинается зарезервированным словом begin и заканчивается словом end, после которого следует точка.
Пример:
begin
writeln (‘Hello world!’);
end.
Пример: программа для вычисления площади, периметра и длины диагонали прямоугольника, размеры которого задаются пользователем.
program test;
var
a, b: integer;
s, p: integer;
d: real;
begin
writeln(‘Введите длину и ширину прямоугольника’);
readln(a, b);
s := a*b;
p := 2*a+2*b;
d := sqrt(sqr(a)+sqr(b));
writeln(‘Площадь прямоугольника = ’, s);
writeln(‘Периметр прямоугольника = ’, p);
writeln(‘Диагональ прямоугольника = ’, d:5:2);
end.