Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы !!! - копия.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
83.5 Кб
Скачать

II часть

1 Вопрос.

Безтиповые, Var Ident, где Ident — идентификатор формального параметра. Фактический параметр, соответствующий формальному нетипизированному, должен представлять собой переменную любого типа (но не выражение).Единственным способом использования таких параметров является "наделение" их определённым типом. Существуют два способа:  1)Применить операцию приведения типа.  2) Описать в подпрограмме локальную переменную определённого типа с совмещением её в памяти с нетипизированным параметром.  2 ВОПРОС.

К открытому формальному параметру-массиву можно обращаться только по элементам. Присваивания элементам формального открытого массива-константы не допускаются, а присваивания элементам формального открытого массива, являющегося параметром-значением, не влияют на фактический параметр. Для открытых массивов-значений компилятор создает в кадре стека процедуры или функции локальную копию фактического параметра. Таким образом, при передаче в качестве открытых параметров-значений больших массивов следует учитывать возможное переполнение стека. При применении к открытому параметру-массиву стандартная функция Low возвращает 0, стандартная функция High возвращает индекс последнего элемента в фактическом параметре-массиве, а функция SizeOf возвращает размер фактического параметра-массива.  Процедура Clear в следующем примере присваивает каждому элементу массива вещественных значений ноль  procedure Clear(var A: array of Real); {А открытым параметром-массивом}  var I: Word;  begin for I := 0 to High(A) do A[I] := 0; end; 

3 Вопрос

Открытые строковые параметры могут описываться двумя способами:  - с помощью идентификатора OpenString; описывается в модуле System, не является зарезервированным словом  - с помощью ключевого слова string в состоянии {$P+}.  Для открытого строкового параметра фактический параметр может быть переменной любого строкового типа. В процедуре или функции максимальная длина формального параметра будет тем же, что у фактического параметра.  Открытые строковые параметры ведут себя также как параметры-переменные строкового типа, их нельзя передавать как обычные переменные другим процедурам или функциям., но их можно снова передать как открытые строковые параметры.  S- открытый строковый параметр процедуры AssignStr - это открытый строковый параметр: procedure AssignStr(var S: OpenString; begin S := '0123456789ABCDEF';end;  Var S1: string[10]; Begin AssignStr(S1); { S1 := '0123456789' } при присваивании параметра S строка усекается, максимальная длина S1 равна 10.  При применении к открытому строковому параметру стандартная функция Low возвращает 0, стандартная функция High возвращает описанную максимальную длину фактического параметра, а функция SizeOf возвращает размер фактического параметра.  Значения и параметры-константы, описанные с использованием OpenString или ключевого слова string в состоянии{$P+}, не являются открытыми строковыми параметрами. Они ведут себя были описаны с максимальной длиной строкового типа 255, а функция Hingh для таких параметров всегда возвращает 255.