«Если отладка - процесс удаления ошибок, то программирование должно быть процессом их внесения»
21. Вызовы подпрограмм
Вызовы с помощью имен подпрограмм и процедурных переменных, использование уточняющих имен.
Фактические параметры.
При вызове подпрограммы надо учитывать следующие правила:
· фактические параметры должны быть совместимы с формальными по присваиванию;
· выражения, используемые для передачи параметров var и out, должны иметь в точности тот же тип, что и формальные параметры;
· для параметров var и out должны использоваться только выражения, которым могут быть присвоены значения;
· для нетипизированных формальных параметров фактические не могут быть числами или истинными константами;
· параметры со значениями по умолчанию можно опускать только подряд и справа налево.
procedure DoSomething(X: Real = 1.0; I: Integer = 0; S: string = '');
DoSomething();
DoSomething;
Конструктор открытых массивов.
Этот конструктор можно использовать для того, чтобы задать фактический параметр, соответствующий открытому массиву или открытому массиву вариантов, непосредственно в вызове подпрограммы.
Конструктор представляет собой последовательность выражений, разделенных запятыми и заключенных в квадратные скобки. Пример:
var I, J: Integer;
procedure Add(A: array of Integer);
. . .
Add([5, 7, I, I + J]);
Такая компактная запись эквивалентна следующей:
var Temp: array[0..3] of Integer;
…
Temp[0] := 5; Temp[1] := 7; Temp[2] := I; Temp[3] := I + J; Add(Temp);
Конструкторы открытых массивов могут использоваться только для параметров значений или параметров констант (value или const). Выражения в квадратных скобках должны быть совместимы по присваиванию с типом массива. Если формальный параметр является массивом вариантов, выражения могут иметь разные типы.
«20. Параметры подпрограмм»
22. Введение в классы и объекты