русс | укр

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

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

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

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


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

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


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


End ;

Begin

<раздел операторов>

Заголовок включает в себя зарезервированное слово Function, идентификатор (имя) функции, заключенный в круглые скобки список формальных параметров (p1,p2, ... ,pn) и тип возвращаемого функцией значения. Имя функции - идентификатор уникальный в пределах блока. Возвращаемый результат может иметь любой скалярный тип (вещественный, целый и некоторые другие).

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

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

Формат вызова таков:

< имя > ( f1,f2,...fn );

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

Следующая программа вычисляет площадь двух треугольников ABC и DEF используя определенную программистом функцию SqGeron. У функции SqGeron три параметра ¾ стороны треугольника. Возвращает функция значение типа REAL. В основе вычисления площади треугольника лежит формула Герона.

Program Example ;

VAR

A,B,C:Real ; { стороны треугольника ABC }

D,E,F:Real ; { стороны треугольника DEF }

Sq1:Real ; {площадь треугольника ABC }



Sq2:Real ; {площадь треугольника DEF }

{ функция программиста }

{ Вычисление площади треугольника по формуле Герона }

Function SqGeron(a,b,c:real):real ;

var

p:real ;

begin

p:=(a+b+c)/2;

SqGeron:=sqrt(p*(p-a)*(p-b)*(p-c))

end;

 

{ Основная программа }

BEGIN

writeln('Введите значения сторон треугольника ABC') ;

readln(A,B,C) ;

writeln('Введите значения сторон треугольника DEF') ;

readln(D,E,F) ;

Sq1:=SqGeron(A,B,C);

Sq2:=SqGeron(D,E,F);

writeln('Площадь треугольника ABC =',Sq1:6:3) ;

writeln('Площадь треугольника DEF =',Sq2:6:3) ;

END.

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

Описание процедурного типа осуществляется в соответствии с принятым синтаксисом языка.

Формат оператора:

Type < имя-типа >=Procedure( p1,p2,...,pn );

или

Type < имя-типа >=Function( p1,p2,...,pn ):< тип результата >;

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

Включение директивы компилятора осуществляется записью {$F+}. Знак $, расположенный сразу после открывающей фигурной скобки показывает, что это директива компилятора. Символ F показывает, что устанавливаем Far (дальний) вызов, а знак +показывает, что включаем эту директиву.

Параметры-процедуры и параметры-функции не должны быть стандартными подпрограммами, не должны объявляться внутри других подпрограмм, не иметь директив inline и interrupt.

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

Program Example ;

TYPE

Func = function(X, Y : Integer) : Integer ;

{$F+}

function Add(X, Y : Integer) : Integer ;

begin

Add := X + Y

end ;

function Multiply(X, Y : Integer) : Integer ;

begin

Multiply := X * Y

end ;

{$F-}

Procedure PrintTable(A, B : Integer; Operation : Func) ;

{ процедура печати таблицы }

var

i,j : integer ;

begin

for i:=1 to A do

begin

for J:=1 to B do

write(Operation(i,j):5) ;

writeln

end ;

writeln

end ;

BEGIN

{ основная программа }

PrintTable(10, 10, Add) ;

PrintTable(10, 10, Multiply) ;

END.



<== предыдущая лекция | следующая лекция ==>
Функции | Директивы FAR и NEAR


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


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

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

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


 


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

 
 

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

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