русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


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


Список формальных параметров <список форм. параметров> при описании процедуры или функции необязателен и может отсутствовать. Если же он есть, то в нем должны быть перечислены имена формальных параметров и их типы, например:

 

(пар1:тип1, ..., парK:типK; var парL:типL, ..., парM:типM;

const парP:типP, ..., парN:типN;)

 

Операторы тела подпрограммы рассматривают список формальных параметров как своеобразное расширение раздела описаний: все переменные из этого списка могут использоваться в любых выражениях внутри подпрограммы.

Любой из формальных параметров подпрограммы может быть либо параметром-значением, либо параметром-переменной (после слова var), либо, параметром-константой (после слова const).

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

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



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

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

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

Умалчиваемые параметры. В Object Pascal (начиная с версии Delphi 4) можно использовать умалчиваемые параметры. В списке формальных параметров <список форм. параметров> умалчиваемые параметры размещаются в конце в форме:

 

<имя_параметра>:<тип> = <значение_по_умолчанию>

 

где <имя_параметра>:<тип> – имя умалчиваемого параметра и его тип;

<значение_по_умолчанию> – значение параметра, которое он получает, если этот параметр не указывается (умалчивается) при вызове подпрограммы.

Например, для процедуры

 

ProcedureStudentEx (a:integer; s:string = ’Ivanov’);

 

два следующих ее вызова из программы идентичны:

 

StudentEx(7);

StudentEx(7, ’Ivanov’);

 

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

Например, для процедуры

 

ProcedureStudentEx (a:integer; b: real=2.3;

s:string = ’Ivanov’; k:integer=1);

 

следующие ее вызовы из программы являются правильными:

 

StudentEx(7, 3.6, ’Petrov’);

StudentEx(7, 2.3, ’Ivanov’, 2);

 

а следующие вызовы ошибочны:

 

StudentEx(7, , ’Petrov’);

StudentEx(7, 2.3, , 2);

 

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

ProcedureStudentEx (a: array[1..10] of real);

 

Такое объявление следует осуществлять следующим образом:

Type

аТуре = array[1..10] of real;

ProcedureStudentEx (var a: аТуре);

 

 

Для передачи в подпрограмму одномерных массивов переменной длины в Object Pascal поддерживает так называемые открытые массивы.

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

ProcedureStudentEx (aOpen : array ofInteger);

 

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

 



<== предыдущая лекция | следующая лекция ==>
Описание процедур и функций | Локализация имен


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.36 сек.