Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Список формальных параметров. Параметры, описанные в заголовке подпрограммы, называются формальными.

Читайте также:
  1. Quot;Стаття 581. Список присяжних
  2. VIII. БИБЛИОГРАФИЧЕСКИЙ СПИСОК
  3. Адсорбция. Зависимость от параметров системы
  4. Аттестованные судьи Федерации Мажореток России. Точный список судей будет опубликован позднее
  5. Библиографический список
  6. Библиографический список
  7. Библиографический список

Параметры, описанные в заголовке подпрограммы, называются формальными.

Примеры:

(value: integer) (X, Y: Real) (st:string; n:integer; c,fill:char)

Список формальных параметров – это последовательность объявлений однотипных параметров. Объявления отделяются друг от друга точкой с запятой. Каждое объявление состоит из списка имен параметров, символа ‘:’ и указания их типа. Внутри объявления имена параметров разделяются запятой. Имя параметра – это корректный идентификатор.

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

(var S: string; X: Integer)(const P; I: Integer)

Чтобы почувствовать разницу в способах передачи параметров, обратимся к следующим примерам (из Help):

function DoubleByValue(X: Integer): Integer; // X is a value parameter begin X:= X * 2; Result:= X; end;   function DoubleByRef(var X: Integer): Integer; // X is a variable parameter begin X:= X * 2; Result:= X; end;

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

Var I, J, V, W: Integer; begin I:= 4; V:= 4; J:= DoubleByValue(I); // J = 8, I = 4 W:= DoubleByRef(V); // W = 8, V = 8 end;

Параметры-значения можно рассматривать как локальные переменные, которые получили начальное значение при вызове подпрограммы. Если вы передали какую-нибудь переменную как параметр-значение, то подпрограмма создает копию переменной. Изменения этой копии не приводят к изменению исходной переменной и утериваются после завершения работы подпрограммы.

Параметры-переменные похожи скорее на указатели. Изменения такого параметра внутри тела процедуры или функции сохраняются после завершения работы подпрограммы и возвращаются в вызывающую программу.

(схемка)

Назначение зарезервированных слов:

Ключевое слово  
Var Можно использовать для передачи данных в подпрограмму и для получения данных из подпрограммы
Const Нельзя изменять значение в теле подпрограммы. Похож на локальную переменную только для чтения.
Out Нельзя использовать для передачи данных в подпрограмму. Используется только для получения данных из подпрограммы.

Для параметров-значений и параметров-констант возможно указание в заголовке процедуры или функции значения по умолчанию. Для этого в объявлении параметра после типа используется ‘=’ и указывается само значение (константное выражение совместимого типа). Например:

(var S: string; X: Integer = 5)(const P, I: Integer; const M: real = 4.5)

Для параметров, передающихся по ссылке, можно не указывать тип параметра. Такие параметры называются нетипизированными. Параметр-значение обязательно типизирован. Примеры:

(var S, X; out Z)(const P, I; var M)

Внутри подпрограммы непизированные параметры несовместимы ни с какими типами. Необходимо выполнить приведение типов.


Дата добавления: 2015-07-26; просмотров: 61 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Объявление процедур и функций| Перегрузка процедур и функций

mybiblioteka.su - 2015-2024 год. (0.006 сек.)