русс | укр

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

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

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

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


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

Краткие теоретические сведения


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


Объявление и описание функций и процедур

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

Например, оператор

R := 5·F(x);

вызывает функцию F с аргументом X, умножает возвращенное ею значение на 5 и присваивает результат переменной R.

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

F(x);

В этом случае возвращаемое функцией значение игнорируется.

Функция описывается следующим образом:

function <имя функции> (<список параметров>):

<тип возвращаемого значения>;

<объявление локальных переменных, типов, констант,

описание вложенных функций и процедур>

Begin

<операторы тела функции>

end;

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

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

Формы описания списка параметров будут рассмотрены позднее. В простом случае это список имен формальных параметров с указанием их типов. Например, объявление:

function FSum(X1, X2: real; A: integer): real;



объявляет функцию с именем FSum, с тремя параметрами X1, Х2 и А, из которых первые два типа rеа1, а последний – integer. Тип возвращаемого результата – rеаl. Имена параметров X1, Х2 и А – локальные, т.е. они имеют значение только внутри данной функции и никак не связаны с именами аргументов, переданных при вызове функции. Значения этих параметров в начале выполнения функции равны значениям аргументов на момент вызова функции.

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

Возвращаемое значение в теле функции может присваиваться или имени функции, или специальной предопределенной переменной Result. Например, тело приведенной выше функции FSum может иметь вид:

begin

FSum := A*(X1+X2);

end;

или

begin

Result := A*(X1+X2);

end;

Результат работы обеих приведенных выше функций будет одинаковым. Но переменная Result имеет одно принципиальное отличие от имени функции. Имя функции – это не переменная. Оно может фигурировать только в левой части оператора присваивания и не может входить ни в какие выражения. А Result – это обычная переменная. Поэтому, например, приведенный выше код можно было бы переписать следующим образом:

begin

Result := X1+X2;

Result := Result*A;

end;

С именем функции это сделать невозможно, так как оно не может встречаться в правой части оператора присваивания.

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

begin

Result := X1+X2;

if (A=1) then exit;

Result := Result*A;

end;

Объявление процедуры практически ничем не отличается от объявления функции, кроме того, что для процедуры не указывается возвращаемое значение:

procedure <имя процедуры> (<список параметров>);

<объявления локальных переменных, типов, констант, описания вложенных функций и процедур>

Begin

<операторы тела процедуры>

end;

Например:

procedure Pr1(S: string);

Form1.Label1.Caption := s;

end;

Вызов этой процедуры может иметь вид:

Pr1 (' Привет ! ');

При передаче в функции и процедуры в качестве параметров коротких строк не допускается включение в объявление спецификации длины строки. Например, объявление:

procedure Check(S: string[2]);

вызовет при компиляции сообщение об ошибке. Но можно включать в объявление тип короткой строки, описанный заранее:

type TString2 = string[2];

procedure Check(S:TSstring2);

Различные варианты передачи параметров в функции



<== предыдущая лекция | следующая лекция ==>
Индивидуальные задания | И процедуры


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


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

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

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


 


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

 
 

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

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