Параметры процедур и функций

Исходные данные передаются в подпрограмму с помощью входных параметров а результаты работы подпрограммы возвращаются через выходные параметры. Входные параметры объявляются с помощью ключевого слова const; их значения не могут быть изменены внутри подпрограммы: function Minconst B: Integer: Integer; begin if B then Result := else Result := B; end; Для объявления выходных параметров служит ключевое слово out: procedure GetScreenResolutionout Width Height: Integer; begin Width := GetScreenWidth; Height := GetScreenHeight; end;...

2014-07-24

14.28 KB

0 чел.


Поделитесь работой в социальных сетях

Если эта работа Вам не подошла внизу страницы есть список похожих работ. Так же Вы можете воспользоваться кнопкой поиск



Параметры процедур и функций

Параметры служат для передачи исходных данных в подпрограммы и для приема результатов работы этих подпрограмм.

Исходные данные передаются в подпрограмму с помощью входных параметров, а результаты работы подпрограммы возвращаются через выходные параметры. Параметры могут быть входными и выходными одновременно.

Входные параметры объявляются с помощью ключевого слова const; их значения не могут быть изменены внутри подпрограммы:

function Min(const A, B: Integer): Integer;

begin

 if A < B then Result := A

 else Result := B;

end;

Для объявления выходных параметров служит ключевое слово out:

procedure GetScreenResolution(out Width, Height: Integer);

begin

 Width := GetScreenWidth;

 Height := GetScreenHeight;

end;

Установка значений выходных параметров внутри подпрограммы приводит к установке значений переменных, переданных в качестве аргументов:

var

 W, H: Integer;

begin

 GetScreenResolution(W, H);

 ...

end;

После вызова процедуры GetScreenResolution переменные W и H будут содержать значения, которые были присвоены формальным параметрам Width и Height соответственно.

Если параметр является одновременно и входным, и выходным, то он описывается с ключевым словом var:

procedure Exchange(var A, B: Integer);

var

 C: Integer;

begin

 C := A;

 A := B;

 B := C;

end;

Изменение значений var-параметров внутри подпрограммы приводит к изменению значений переменных, переданных в качестве аргументов:

var

 X, Y: Integer;

begin

 X := 5;

 Y := 10;

 ...

 Exchange(X, Y);

 // Теперь X = 10, Y = 5

 ...

end;

При вызове подпрограмм на место out- и var-параметров можно подставлять только переменные, но не константы и не выражения.

Если при описании параметра не указано ни одно из ключевых слов constout, или var, то параметр считается входным, его можно изменять, но все изменения не влияют на фактический аргумент, поскольку они выполняются с копией аргумента, создаваемой на время работы подпрограммы. При вызове подпрограммы на месте такого параметра можно использовать константы и выражения. Пример подпрограммы:

function NumberOfSetBits(A: Cardinal): Byte;

begin

 Result := 0;

 while A <> 0 do

 begin

   Result := Result + (A mod 2);

   A := A div 2;

 end;

end;

Параметр A в приведенной функции является входным, но при этом он используется в качестве локальной переменной для хранения промежуточных данных.

Разные способы передачи параметров (constoutvar и без них) можно совмещать в одной подпрограмме. В следующем законченном примере процедура Average принимает четыре параметра. Первые два (X и Y) являются входными и служат для передачи исходных данных. Вторые два параметра являются выходными и служат для приема в вызывающей программе результатов вычисления среднего арифметического (M) и среднего геометрического (P) от значений X и Y:

program Console;

{$APPTYPE CONSOLE}

uses

 SysUtils;

procedure Average(const X, Y: Double; out M, P: Double);

begin

 M := (X + Y) / 2;

 P := Sqrt(X * Y);

end;

var

 M, P: Double;

begin

 Average(10, 20, M, P);

 Writeln('Среднее арифметическое = ', M);

 Writeln('Среднее геометрическое = ', P);

 Writeln('Press Enter to exit...');

 Readln;

end.

Существует разновидность параметров без типа. Они называются нетипизированными и предназначены для передачи и для приема данных любого типа. Нетипизированные параметры описываются с помощью ключевых слов const и var, при этом тип данных опускается:

procedure JustProc(const X; var Y; out Z);

Внутри подпрограммы тип таких параметров не известен, поэтому программист должен сам позаботиться о правильной интерпретации переданных данных. Заметим, что при вызове подпрограмм на место нетипизированных параметров (в том числе и на место нетипизированных const-параметров) можно подставлять только переменные.

Передача фактических аргументов в подпрограмму осуществляется через специальную область памяти — стек. В стек помещается либо значение передаваемого аргумента (передача значения), либо адрес аргумента (передача ссылки на значение). Конкретный способ передачи выбирается компилятором в зависимости от того, как объявлен параметр в заголовке подпрограммы. Связь между объявлением параметра и способом его передачи поясняет таблица 2.10:

Ключевое слово

Назначение

Способ передачи

<отсутствует>

Входной

Передается копия значения

const

Входной

Передается копия значения либо ссылка на значение в зависимости от типа данных

out

Выходной

Передается ссылка на значение

var

Входной и выходной

Передается ссылка на значение

Таблица 2.10. Способы передачи параметров

Если передается значение, то подпрограмма манипулирует копией аргумента. Если передается ссылка на значение, то подпрограмма манипулирует непосредственно аргументом, обращаясь к нему через переданный адрес.



 

Другие похожие работы, которые могут вас заинтересовать.
1253. Теоретические аспекты использования процедур и функций в языке Паскаль 95.55 KB
  Использование подпрограмм позволяет значительно оптимизировать работу программиста, сократить объем памяти, занимаемый программой, сделать программный код более понятным. Создание пользовательских меню является одной из наиболее важных проблем при разработке пользовательского интерфейса.
14580. Параметры ссылки параметры указателя 6.43 KB
  Если параметр должен ссылаться на несколько объектов или принимать нулевое значение то следует использовать указатели. Передача массива имеет следующие особенности: изменение значение аргумента параметра внутри функции поэтому если такое поведение не желательно то можно исп. Значение параметра по умолчанию Это значение которое считается подходящей в большинстве случаев использование функций она освобождает программиста от необходимости выделять внимание к каждой детали интерфейса функции. И значение по умолчанию по этой причине могут...
7332. Примеры процедур планирования качества 25.07 KB
  Ответственный за согласование и оргподдержку сотрудник размещает полученные документы в проектной библиотеке Процедура согласований документов проекта Подготовка документов осуществляется рабочими группами проекта. Определение списка процедур для управления качеством Этапы Работы проекта Возможные потери качества Процедуры Планирование проекта Планирование проекта Ошибки при определении трудоемкости разработок распределении ресурсов разработке бюджета Процедура создания плана качества создание программы обеспечения качества Определение и...
1439. Пути улучшения документированных процедур СМК в ОАО «Нижнекамскнефтехим» 3.46 MB
  Понятие системы менеджмента качества. Рекомендации по усовершенствованию документированных процедур СМК на предприятии В нынешних рыночных условиях жесткой конкуренции успех любого предприятия зависит от качества продукции которую он производит. Современные специалисты по менеджменту рассматривают понятие качества в четырех аспектах которые отражают эволюцию определения понятия качества с развитием не только технологий производства...
16705. Сопоставление правила порогового агрегирования и ранговых процедур 190.73 KB
  Каждый избиратель каждой альтернативе дает некоторую оценку из множества оценок такую функцию оценивания мы обозначим за . Множество всех возможных векторов оценок может быть упорядочено лексикографически следующим образом. Такое отношение задает на множестве всех возможных векторов оценок линейный порядок т. В то же время если две альтернативы имеют одинаковые позиции в предпочтениях с точностью до перестановки избирателей то они будут иметь и одинаковые векторы оценок.
19960. Разработка протокола косметических процедур как метод коррекции фотостарения 66.3 KB
  В настоящее время принято отдельно рассматривать такие разновидности старения кожи как биологическое старение и фотостарение ультрафиолетовое облучение. Что важнее для человека – оттенок кожи или молодость Ответ очевиден – несмотря на то что женщины а впрочем уже и мужчины встали на борьбу со старением большинство по-прежнему легкомысленно относятся к риску испортить кожу ультрафиолетовым облучением. Важнейшей решаемой косметологической задачей в начале осеннего сезона является борьба с признаками фотостарения кожи возникшими...
21495. Актуальные проблемы, связанные с деятельностью нотариуса в рамках процедур наследования 80.84 KB
  Нотариально удостоверенная форма завещания и завещания приравниваемые к нотариально удостоверенным завещаниям. Именно на нотариат в основном ложится обязанность придания субъективным правам в сфере наследственных правоотношений должной определенности и бесспорности реальное обеспечение свободы завещания и его исполнимости защита интересов семьи при наследовании обеспечение сохранности наследственного имущества до принятия наследниками наследства гарантирование прав социально незащищенных субъектов наследственных отношений...
2753. Формальные и фактические параметры 10.09 KB
  В каждую группу включаются параметры одного типа принадлежащие к одной категории. Все формальные параметры можно разбить на четыре категории: параметрызначения; параметрыпеременные; параметрыконстанты используются только в версии 7.0; параметрыпроцедуры и параметрыфункции.
2228. ОСНОВНЫЕ ПАРАМЕТРЫ И ТРЕБОВАНИЯ К ГТД 527.75 KB
  Основы рабочего процесса ГТД 2. ГТД как тепловая машина При определении эффективности ГТД его необходимо оценивать с двух точек зрения. В зависимости от типа ГТД механическая работа получается в следующих формах: в ТРД и ТРДД в форме приращения кинетической энергии струи рабочего тела воздуха и газа; в вертолетных ГТД в виде работы на валу турбины; в ТВД в виде суммы работы на валу и приращения кинетической энергии.
6491. Физические параметры цифровых микросхем 143.66 KB
  Обычно на одном кристалле (в одной микросхеме) размещено несколько однотипных ЛЭ или триггеров. Более сложные схемы (мультиплексоры, дешифраторы) обычно реализованы как одно функциональное устройство на кристалле.
© "REFLEADER" http://refleader.ru/
Все права на сайт и размещенные работы
защищены законом об авторском праве.