Читайте также: |
|
Стандарт языка требует, чтобы все параметры подпрограмм были типизированы (принадлежали конкретным заранее объявленным типам) однако, применять конструкторы типов в заголовке подпрограммы запрещено. Нельзя записать заголовок в таком виде:
Procedure ReadArray(N: 1..9; var A: array[1..9] of real). {ТАК НЕЛЬЗЯ ПИСАТЬ}
Необходимо в разделе объявлений сконструировать новые типы – например:
Type Int = 1..9; Vector = array[ Int ] of Real;
Procedure ReadArray(N: Int; var A: Vector); { чтение массива}
|
Begin
For i:= 1 to N do
Begin
Write(‘введи ’, i, ‘ элемент ‘); Read(A[i])
End;
End;
Параметры подпрограмм можно условно разделить на входные (посредством которых данные попадают в подпрограммы) и выходные (посредством которыхизвлекаются результаты).
Параметры – значения могут бать только входными параметрами.
Параметры – переменные могут бать входными и выходными.
Procedure Demo(x, y: Real; i, m: Integer; var ch, sh, th: Real; var k: Integer);
1. Параметры функции всегда входные.
2. Выходным параметром является имя функции, оно содержит результат.
3. В теле функции необходима инструкция присваивания имени функции некоторого значения (результата).
Function Exp1(x, delta: Real): Real;
Параметрами подпрограмм могут быть подпрограммы.
Введение процедурного типа позволяет подпрограммы интерпретировать как разновидность переменных.
Например:
Type Func = Function (x, y: Real): Real; {процедурный тип – функция двух аргументов}
Procedure csth(x: Real; F1: Func; var ch, sh, th: Real);
Var ep, em, r: Real;
|
ep:= F1(x, 1e-6); em:= 1/ep;
ch:= (ep + em)*0.5;
sh:= (ep - em)*0.5;
th:= sh/ch
End;
В этом примере формальным параметром процедуры csth является переменная F1, тип которой Func – функция двух параметров. При вызове процедуры csth в программе формальный параметр F1 заменен фактическим именем функции Exp1 (функция предназначена для вычисления экспоненты).
Задачи для классной и домашней работы (не менее 3 в классе и 3-6 дома). 6.1 – 6.49.
Дата добавления: 2015-08-21; просмотров: 77 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Объявление подпрограмм. | | | Модуль камеры |