![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Формальный параметр без типа внутри процедуры или функции не имеет типа и его перед использованием следует преобразовать к конкретному типу с помощью автоопределенного преобразования. Параметр без типа передается только по ссылке. Внутри процедуры или функции должна быть определена маска, задающая вид интерпретации элементов фактического параметра, передаваемого в процедуру или функцию при вызове. Напомним, что маска – это тип. Размерность маски рекомендуется выбирать так, чтобы она была рассчитана на максимальное количество данных интерпретируемого типа, которое может разместиться в пределах сегмента. (Если размер маски превышает 65520 байт, на этапе компиляции выдается сообщение об ошибке). Тип фактического параметра может быть любым, но дополнительно в процедуру или функцию следует передавать истинную размерность фактического параметра.
Пример. Просуммировать N элементов одномерных числовых массивов произвольной размерности.
... | ||||
Var | { фактические параметры - } | |||
Ar_Byte1: array[1..200] of byte; | { интерпретируемые } | |||
Ar_Byte2: array[1..2000] of byte; | { области } | |||
Ar_Int: array[1..500] of integer; | { памяти } | |||
Function Sum(var X; n: word): longint; | { X – параметр без типа, n – размерность массива } | |||
Type | ||||
Xtype =array[0..65520] of byte; | {Маска – одномерный массив типа Byte } | |||
Var | ||||
summa: longint; i: word; | ||||
begin | ||||
summa:=0; | ||||
for i:=1 to n do | ||||
{ XType(X)[i] – автоопределенное преобразование элемента массива- параметра X к типу элемента массива-маски Byte } | ||||
summa:=summa + XType(X)[i]; | { интерпретация элементов массива X через маску } | |||
Sum:=summa; | ||||
end; | ||||
begin | ||||
... | ||||
writeln(Sum(Ar_Byte1, 200)); | ||||
writeln(Sum(Ar_Int, 500)); | ||||
writeln(Sum(Ar_Byte2, 2000)); | ||||
... | ||||
В качестве первого параметра функции Sum можно использовать массив любого типа и любой размерности. В теле функции выполняется автоопределенное преобразование элемента массива-параметра X к типу элемента массива-маски Byte. Если бы в теле функции была определена маска другого типа, например, Word, преобразование выполнялось бы к этому типу.
Дата публикования: 2014-11-26; Прочитано: 317 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!