Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Program editor;
var p: char; dl: integer;
Procedure linia (pod: char; kol: integer);
var i: integer;
begin {Начало тела процедуры}
write('{');
for i:=1 to kol do write (pod);
writeln('}');
end; {Конец тела процедуры}
begin {Начало тела программы}
writeln('Введите символ для подчеркивания');
readln(p);
writeln('Введите длину строки подчеркивания');
readln(dl);
…
linia (p, dl); { Вызов процедуры }
…
linia ('*', 50); { Вызов процедуры }
….
end. { Конец тела программы }
Отличие этой программы от предыдущей заключается в описании процедуры. Во-первых, в заголовке после имени заданы формальные параметры (pod: char; kol: integer), предназначенные для передачи информации о выбранном символе (pod) и длине строки (kol). Во-вторых, в подпрограмме идентификаторы указанных параметров заменили фиксированные аргументы ('_' и 78).
В теле программы появились операторы ввода исходных данных - readln(p) и readln(dl).
Первый вызов подпрограммы теперь снабжен фактическими параметрами (linia (p, dl)), которые вводятся с клавиатуры, а затем передаются соответствующим формальным параметрам (pod и kol). Обратите внимание, что описание переменных совпадает.
При втором вызове подпрограммы (linia ('*', 50)) аргументы заданы постоянными величинами ('*' и 50), которые также передаются соответствующим формальным параметрам (pod и kol).
Итак, описание процедуры включает заголовок и тело процедуры. Заголовок состоит из зарезервированного слова Procedure, идентификатора (имени) процедуры и необязательного, заключенного в круглые скобки списка формальных параметров с указанием типа каждого параметра. Общий вид:
Procedure имя (формальные параметры);
Имя процедуры - идентификатор, уникальный в пределах программы. Тело процедуры представляет собой локальный блок, по структуре аналогичный программе:
Procedure имя (формальные параметры);
<разделы описаний>
Begin
<раздел операторов>
end;
Для обращения к процедуре используется оператор вызова процедуры. Он состоит из идентификатора (имени) процедуры и списка фактических параметров, отделенных друг от друга запятыми и заключенных в круглые скобки. Список параметров может отсутствовать, если процедуре не передается никаких значений.
идентификатор процедуры (параметр,...);
Параметры обеспечивают механизм замены, который позволяет выполнять процедуру с различными начальными данными. Между фактическими параметрами в операторе вызова процедуры и формальными параметрами в заголовке описания процедуры устанавливается взаимнооднозначное соответствие в результате их перебора слева направо. Количество и типы формальных параметров равны количеству и типам фактических параметров.
Если процедура возвращает в программу какие-то значения, соответствующие переменные должны быть описаны как параметры-переменные с использованием слова Var.
Пример 7.3. Переписать положительные элементы массивов X (N), Y (M) в массив Z подряд. Запись положительных элементов в массив осуществить в подпрограмме. Принять ограничения: N £ 100 и M £ 100.
В подпрограмме должна осуществляться запись положительных элементов исходного массива в массив результатов. Для этого в подпрограмму необходимо передать следующие параметры: имя и количество элементов исходного массива, имя результирующего массива. Поскольку в массив результатов Z записываются подряд положительные элементы из нескольких массивов, в списке параметров должны фигурировать также: входной параметр L - номер индекса, начиная с которого необходимо осуществлять запись в массив результатов; выходной параметр К - индекс последнего положительного элемента исходного массива при предыдущем обращении к подпрограмме. После окончания записи элементов в массив результатов этот параметр определяет количество элементов, записанных в массив результатов.
При первом обращении к подпрограмме в нее передается имя входного массива Х, результат - имя выходного массива Z, передается количество элементов массива Х, значение входного параметра L (L = 0, если запись осуществляется в массив Z, начиная с первого элемента), результат подпрограммы - выходной параметр К, определяющий количество элементов, записанных в массив Z.
При втором обращении необходимо передать соответственно Y, получить Z, передать M и K (результат предыдущего обращения к подпрограмме), получить новое значение K. После второго обращения к подпрограмме К - суммарное количество элементов, записанных в массив Z после выполнения двух подпрограмм.
Блок-схемы программы и процедуры приведены на рис.7.2.
Дата публикования: 2015-02-18; Прочитано: 192 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!