- •Принципы модульного программирования
- •1. Процедуры
- •1.1.Пример программы с процедурой
- •1.2. Расположение процедур в программе
- •2. Функции
- •2.1. Пример программы с функцией
- •3. Внешние процедуры и функции
- •3.1. Модули пользователей
- •1. Множества
- •Сложные типы данных, применяемые в Паскале
- •1.1. Примеры программ с использованием множеств
- •2. Записи
- •2.1.Пример программы обработки записей
- •Файлы и наборы данных
- •1.Текстовые файлы
- •1.1. Создание текстового файла
- •1.2. Работа с существующим текстовым файлом
- •2. Последовательные файлы
- •2.1.Примеры программ с файлами, содержащими данные простого типа
- •2.2.Работа с файлами, содержащими данные сложного типа
- •2.2.1. Создание последовательного файла
- •2.2.2. Работа с файлом filan
- •3. Файлы с произвольным (прямым) доступом
- •3.1. Создание файла с прямым доступом
- •3.2. Работа с файлом: поиск и коррекция записей
- •3.3. Упорядочение записей в файле
- •3.4. Удаление записей из файла
- •3.5. Вставка записей в файл
- •Динамическое распределение памяти. Указатели и списки
- •1. Использование указателей. Списки
- •2. Очереди
- •2.1. Очередь типа Lifo
- •2.2. Очередь Fifo
- •Стандартные модули Турбо Паскаля
- •Модуль Crt
- •Модуль dos
- •Модуль Graph
- •1. Инициирование графического режима
- •2. Вывод текста (надписей) в графическом режиме
- •3. Вывод точек на экран
- •4. Построение графических изображений
- •5. Запоминание и вывод изображений
- •Библиографический список
- •Содержание
- •Процедуры 3
- •2. Функции 12
1.1.Пример программы с процедурой
Задача:
Выполнить упорядочение по возрастанию нескольких массивов вещественных чисел. В программе используется процедура сортировки методом ‘пузырька’, алгоритм которой описан ранее.
Исходными данными для процедуры являются массив вещественных чисел и его размерность. Стандарт языка Паскаль, как отмечалось выше, требует описания массива в разделе Type (в программе это новый тип – Mas). При использовании процедуры сортировки для согласования параметров необходимо в основной программе и процедуре ссылаться только на этот тип.
PROGRAM SRT;
CONST
M=200; { максимальный размер массива }
TYPE
MAS=ARRAY [1.. M] OF REAL;
VAR
A,B:MAS;
I,N:INTEGER;
PROCEDURE SortY (L:INTEGER; VAR Y:MAS);
{ Сортировка вещественных чисел методом "Пузырька" }
VAR
I,K: INTEGER;
Z : REAL;
BEGIN
FOR K:=1 TO L-1 DO
FOR I:=1 TO L-K DO
IF Y[I]>Y[I+1]THEN
BEGIN
Z: = Y[I];
Y[I]:=Y[I+1];
Y[I+1]:=Z
END;
END; { SortY }
BEGIN {основная программа}
WRITELN(` Введите размер массива`);
READ(N);
Writeln(`Введите первый массив`);
FOR I:=1 TO N DO
READ (A[I]);
Writeln (`Введите второй массив`);
FOR I:=1 TO N DO
READ (B[I]);
SORTY (N,A); { сортировка А }
SORTY (N,B); { сортировка В }
Writeln (`Первый массив`);
FOR I: =1 TO N DO
WRITE (A[I]:8:3);
Writeln (`Второй массив`);
FOR I: = 1 TO N DO
WRITE(B[I]:8:3)
END.
1.2. Расположение процедур в программе
Процедуры могут быть вложенными друг в друга, как на рисунке 2.
Рис.2. Пример расположения вложенных ( внутренних ) процедур
Р1 и Р3 – внешние процедуры,
Р2 – внутренняя.
При таком расположении обращение к внутренней процедуре возможно только из охватывающей ее процедуры P1, а из других внешних (на рисунке Р3) – невозможно. Более оптимальным является расположение процедур в виде рис. 3, на котором все процедуры являются внешними по отношению друг к другу.
Рис.3. Внешнее расположение процедур
При таком расположении:
1) любая процедура имеет доступ к любой другой (в том числе и к самой себе);
2) облегчается отладка процедур, т. к. они могут быть написаны и отлажены независимо друг от друга.
2. Функции
Функция — это законченный программный модуль, который позволяет получить один результат.
Примером функций являются стандартные функции Паскаля. Имеется возможность писать свои функции. Располагаются они в программе так же, как процедуры: после описания данных и перед операторами.
Пример.
Program . . .;
Const
. . .
VAR
. . .
Функция 1
. . . . .
Функция n
BEGIN { основная программа }
. . . . .
END.
Функция оформляется так же, как процедура, отличие имеется в заголовке и способе передачи результата. В общем виде структура функции может быть представлена так:
FUNCTION имя(список_параметров):тип_результата;
Описание локальных переменных
BEGIN
. . . .
имя : = выражение;
. . . .
END;
Параметры могут отсутствовать. Параметры – это аргументы функции. Результат передается через переменную, которая имеет имя функции, поэтому в заголовке указывается тип результата.
Пример.
Оформить в виде функции операцию возведения вещественного числа в целую степень.
FUNCTION STEPEN(X:REAL;N:iNTEGER):REAL;
VAR
I:INTEGER;
P:REAL;
BEGIN
If n = 0 then
Stepen := 0
else
Begin
If n > 0 then
Begin
P := 1;
For i := 1 to n do
P := P*n;
End
else
Begin
If x <> 0 then
For i := 1 to n do
P := P/x;
else P := 0;
End;
End;
Stepen := P;
END;
Для вычисления значения функции с конкретным параметром ее, как и процедуру, вызывают из основной программы с указанием фактических параметров – аргументов. В отличие от процедуры имя функции может встречаться в выражениях. Вычисленное значение передаётся в точку вызова.
Формальные параметры функции – только параметры-значения. При ее вычислении они не изменяются. Аргументы функции могут быть любых типов:
1) скалярные — числа,символы,булевские;
2) массивы;
3) другие типы.
Сама функция (результат) имеет только скалярный тип, т.е. число (целое, вещественное), а также символьный или булевский.
