русс | укр

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

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

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

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


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

Процедурные типы


Дата добавления: 2014-11-27; просмотров: 738; Нарушение авторских прав


Turbo Pascal позволяет вводить переменные специального вида, значениями которых могут служить подпрограммы. Иными словами, Turbo Pascal позволяет интерпретировать процедуры и функции как значения, которые можно присваивать переменным и использовать в качестве параметров. Речь идёт о подпрограммах как о целостных объектах, а не о значениях, возникающих в результате их выполнения.

Пример

var

P: procedure;

Возможными значениями переменной P могут являться любые процедуры без параметров.

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

Пример

type

Func=function(x,y: integer): integer;

var

F1, F2: Func;

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

function Add(a,b: integer):integer;

begin

Add:=a+b

end;

то допустимо присвоение вида F1:=Add;

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

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

writeln(Add(1, 2)); writeln(F1(1, 2)); Оба оператора напечатают число 3.

Определение процедурного типа аналогично заголовку подпрограммы с той лишь разницей, что имя подпрограммы не задаётся.

Пример

type

Proc= procedure;

BinOperation= function(x,y: real): real;

UnOperation= function(x: real): real;

Reading= procedure(var f: text; var Elem: char);

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



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

Такие переменные могут быть использованы для вызова подпрограмм, которые присвоены этим переменным.

Пример

Пусть в программе есть

var

operation: function(x,y: real): real;

function Add(a,b: real):real;

begin

Add:=a+b

end;

function Sub(a,b: real): real;

begin

Sub:=a-b

end;

и выполняется

if condition then operation:=Add

else operation:=Sub;

writeln(operation(2.05,3+x));

В зависимости от истинности условия condition переменной operation будут присвоены либо функция Add, либо Sub. Активизируется та функция, которая была присвоена переменной operation.

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



<== предыдущая лекция | следующая лекция ==>
Параметры-массивы и строки открытого типа | Проблема совместимости


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


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

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

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


 


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

 
 

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

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