Pascal передача массива в функцию

Pascal передача массива в функцию

Primary tabs

Forums:

В Паскале в процедуры и функции передавать значения можно двумя способами:

  1. По значению (без var перед именем переменной в заголовке процедуры/функции)
  2. По ссылке (с var перед именем переменной в заголовке процедуры/функции)

это зависит от перечисления принимаемых функций переменных с var или без

Пример передачи значений в процедуру

Рассмотрим пример программы с процедурой:

— переменная $z$ в процедуру sum передана по ссылке, это значит, что если её изменить в теле процедуре, то она изменится и в том месте, откуда её передали в процедуру (например, в теле основной программы).
Переменные же $x$ и $y$ переданы по значению — это надо понимать так, что если их значения будут изменяться внутри процедуры (в данном случае), то "снаружи" эти изменения видны не будут.

Для того, чтобы передать массив в качестве параметра подпрограммы, необходимо объявлять массивы тем способом, который мы советовали в соответствующей главе. Например так:

Type TArray= array [1..10] of Integer; Procedure Dummy(arr:TArr);

Однако, такой способ передачи массив не является универсальным. Он сильно зависит от размера передаваемого массива (размер ведь указан в типе). Зачастую, многие подпрограммы должны быть написаны таким образом, чтобы они могли обрабатывать массивы произвольной длины. Например, если мы хотим написать программу, подсчитывающую среднее арифметическое элементов массива, то нас может не устроить частная реализация только для массивов длиной 10, например.

В связи с этим в Pascal введены так называемые открытые массивы – это такое описание параметра в заголовке подпрограммы, в котором не указывается размер массива. Но тогда потребуется определять максимальные и минимальные индексы массива, чтобы универсальным образом их обрабатывать. В этом нам помогут две функции:

Читайте также:  В какой программе можно нарисовать схему

1. Low – возвращает минимальный индекс массива;

2. High – возвращает максимальный индекс массива.

type
TArray = array[1..3] of Integer;

var arr: TArray;
z: integer;

procedure getarr(var arrs: TArray);
var i: integer;
begin

randomize;
for i:= low(arrs) to high(arrs) do
arrs[ i ]:= random(200);

for z:= low(arr) to high(arr) do
writeln(‘element ‘, z, ‘: ‘, arr[ z ]);

Вообще говоря, общая последовательность такая:
— определяем требуемый тип массива
— создаем переменную этого типа
— создаем функцию, аргумент которой будет иметь этот тип

Само определение типа зависит от многих моментов.
Можно использовать статические массивы, можно динамические (в этом случае, мы будем работать со ссылками) .

Ссылка на основную публикацию
L2tp соединение что это
Недавно столкнулся с проблемой подключения по l2tp протоколу к корпоративной сети, давайте разберем как работает этот протокол. L2TP – Layer...
Canon 600d для видеосъемки
Страница 142 Отснятые видеозаписи рекомендуется просматривать, подключив фотоаппарат к телевизору (стр. 218, 221). Поверните диск установки режима в положение ....
Cannot import expandconstant как исправить
Увлекательный блог увлеченного айтишника Ошибка Runtime Error возникает достаточно часто. Во всяком случае, с ней сталкивается достаточно большое количество пользователей....
Lbs категория 23 как отключить
Подключите услугу в тестовом режиме на 1 месяц бесплатно Вопросы и ответы Что такое LBS? LBS – это аббревиатура от...
Adblock detector