|
|||
Procedure MyProc(OpenArray: array of Integer); ⇐ ПредыдущаяСтр 2 из 2 Procedure MyProc(OpenArray: array of Integer); Внутри подпрограммы такой параметр трактуется как одномерный массив с нулевой нижней границей. Верхняя граница открытого массива возвращается функцией HIGH. Используя минимальный индекс как «ноль», и значение, возвращаемое функцией HIGH, как максимальный индекс, подпрограмма может обрабатывать одномерные массивы произвольной длины: Пример 1: Иллюстрация использования открытых массивов: программа выводит на экран содержимое двух одномерных массивов разной длины с помощью одной процедуры ArrayPrint .
Procedure ArrayPrint(aArray: array of Integer); var k: Integer; begin for k := 0 to High(aArray) do Write(aArray[k]:8); WriteLn end; const A:array [-1..2] of Integer = (0,1,2,3); B: array [5..7] of Integer = (4,5,6); begin ArrayPrint(A); ArrayPrint(B) end.
Как видно из этого примера, фактические границы массивов А и В, передаваемых в качестве параметров вызова процедуре ArrayPrint, не имеют значения. Однако размерность открытых массивов (количество индексов) всегда равна 1. За этим следит компилятор. Если бы, например, добавить в программу двумерный массив С var С: array [1..3,1..5] of Integer; то обращение ArrayPrint(С);
вызывало бы сообщение об ошибке Error26: Type mismatch. (Ошибка 26: Несоответствие типов.) Пример 2: Программа вводит фамилию и выводит на экран фамилию с прописной буквы uses crt; type intype =string[15]; outype = string[25]; var s : intype; i : integer; function st(w: intype):outype; begin w[1]:=upcase(s[1]); { изменение первого символа со строчного на прописной } st:=w+' TBiP''2010';{ склеивание символов } end; begin write('Vvedite famely: '); readln(s); writeln(st(s)); readkey; end. Контрольные вопросы 1. Опишите оформление параметров-массивов и параметров-строк. Приведите примеры. 2. Дайте определение понятию «открытый массив».
|
|||
|