АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Параметры подпрограмм

Читайте также:
  1. Базовые параметры радиационных свойств горных пород и методы их определения
  2. Базовые параметры электромагнитных свойств горных пород и методы их определения.
  3. Балльная оценка параметров инвестиционной привлекательности организаций и первичные параметры оценки. Метод интегральной оценки.
  4. Визуальные параметры видео-дисплейных терминалов, контролируемые на рабочих местах
  5. Воздухопроницаемость материалов и ОК в целом: отличия параметры и закономерности. Температурный расчет ОК в условиях воздухопроницания.
  6. Вопрос№15 Механические колебания. Виды колебаний. Параметры колебаний движения
  7. Вращательное движение и его кинематические параметры. Связь между угловой и линейной скоростями.
  8. Выбор максимального из трёх чисел с использованием подпрограммы–функции выбора максимума из двух чисел.
  9. ГЛАВА 3 ТРЕНИРОВОЧНАЯ НАГРУЗКА И ЕЕ ПАРАМЕТРЫ
  10. ДИАГНОСТИЧЕСКИЕ ПАРАМЕТРЫ
  11. Диагностические параметры и нормативы
  12. Допустимые параметры микроклимата

В описании процедуры или функции задается список формальных параметров. Формальный параметр или фиктивный аргумент используется для обозначения входных (выходных) данных подпрограммы. Формальные параметры являются локальными по отношению к описываемой процедуре или функции.

В операторах тела подпрограммы все действия описаны с формальными параметрами. Но при активизации подпрограммы формальные параметры заменяются на фактические и вычисления ведутся с фактическим данными.

Для формальных параметров и локальных переменных подпрограмм на время выполнения подпрограммы выделяется место в оперативной памяти машины в соответствии с их типом и размерами. Эта область памяти носит название стек. В стек заносится либо значение фактического параметра, либо адрес его расположения в памяти.

Существует четыре вида параметров: значение, константа, переменная и нетипизированная переменная. Они характеризуются следующим:

1. Группа параметров без предшествующего ключевого слова является списком параметров- значений.

2. Группа параметров, перед которыми следует ключевое слово const и за которыми следует тип, является списком параметров- констант.

3. Группа параметров, перед которыми стоит ключевое слово var и за которыми следует тип, является списком типизированных параметров-переменных.

4. Группа параметров, перед которыми стоит ключевое слово var или const, за которыми не следует тип, является списком нетипизированных параметров.

Параметры-значения

Формальный параметр-значение обрабатывается как локальная по отношению к процедуре или функции переменная, за исключением того, что он получает свое начальное значение из соответствующего фактического параметра при активизации процедуры или функции. Изменения, которые претерпевает формальный параметр-значение, не влияют на значение фактического параметра.

Фактический параметр должен иметь тип, совместимый по присваиванию с типом формального параметра-значения и может быть выражением. Если параметр имеет строковый тип, то формальный параметр будет иметь атрибут размером 255 символов.

Параметры-константы

Формальные параметры-константы работают аналогично локальной переменной, доступной только по чтению, которая получает свое значение при активизации процедуры или функции от соответствующего фактического параметра. Присваивания формальному параметру-константе не допускаются. Формальный параметр-константа также не может передаваться в качестве фактического параметра другой процедуре или функции.

 

function Max(const a: Vector; n: integer): extended;

 

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

Параметры-переменные

Параметр-переменнаяиспользуется, когда значение должно передаваться из процедуры или функции вызывающей программе. Соответствующий фактический параметр в операторе вызова процедуры или функции должен быть ссылкой на переменную. При активизации процедуры или функции все действия подпрограммы выполняются над фактическими параметрами, любая ссылка на формальный параметр-переменную приводит к доступу к самому фактическому параметру.

 

Procedure NullsArray(var a: Vector; n: integer);

Var i:Integer;

Begin

{обнуление массива}

For i:=1 to n do a[i]:=0;

End;

 

Тип фактического параметра должен совпадать с типом формального параметра-переменной.

Примечание: файловый тип может передаваться только как параметр-переменная.

Нетипизированные параметры

Когда формальный параметр является нетипизированным параметром-переменной, то соответствующий фактический параметр может представлять собой любую ссылку на переменную или константу, независимо от ее типа. Нетипизированный параметр, описанный с ключевым словом var, может модифицироваться, а нетипизированный параметр, описанный с ключевым словом const, доступен только по чтению.

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

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

Для объявления процедурного типа используется заголовок процедуры (функции) без указания имени процедуры или функции, например:

Type

Proc1 = Procedure (a, b: real; var c: real);

Proc2 = Procedure (var a, b: integer);

Func1 = Function: String;

Func2 = Function (a: Real): Real;

Имена параметров в описании процедурного типа никакого действия не вызывают. После определения процедурного типа появляется возможность описывать переменные этого типа. Такие переменные называют процедурными переменными. Например, с учетом описаний типа из предыдущего примера, можно объявить следующие переменные:

var

P: Proc2;

F: Func2;

Процедурной переменной можно присвоить значение только процедурного типа. Таким значением может быть другая процедурная переменная, или идентификатор процедуры или функции. Например, пусть мы имеем следующие описания процедуры и функции:

procedure Swap(var A,B: integer);

var Temp: integer;

begin

Temp:= A;

A:= B;

B:= Temp;

End;

 

function Tan(Angle: real): real;

begin

Tan:= Sin(Angle) / Cos(Angle);

end.

Описанным ранее переменным P и F теперь можно присвоить значения: P:= Swap; F:= Tan;

После такого присваивания обращение P(i,j) эквивалентно Swap(i,j) и F(X) эквивалентно Tan(X).

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

Когда процедурной переменной присваивается идентификатор процедуры, это означает, что адрес процедуры заносится в поле процедурной переменной. Формальные параметры подпрограмм могут иметь процедурный тип. Если процедура или функция должны передаваться в качестве параметра, они должны удовлетворять тем же правилам совместимости типа, что и при присваивании. То есть такие процедуры или функции должны компилироваться с директивой far, они не могут быть встроенными функциями и не могут быть вложенными.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)