русс | укр

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

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

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

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


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

Описание процедуры


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


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

Procedure<имя процедуры> (<список формальных параметров>);

Имя процедуры должно удовлетворять общим требованиям языка к написанию имен.

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

Пример заголовка процедуры:

ProceduremyProc (a, b : Real; var s : String);

В приведенном выше примере процедуре передаются значения двух вещественных переменных «а» и «b», и адрес строки символов «s». Об этом свидетельствует префикс varперед именем строки. Передача адреса переменной в процедуру вместо ее значения приводит к тому, что если значение параметра s изменится в результате работы процедуры, то это изменение будет сохранено после завершения работы процедуры.

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

Раздел операторов процедуры содержит инструкции, которые будут выполняться при обращении к процедуре.

Ниже, в качестве примера, дано описание процедуры, заголовок которой был приведен выше.

ProceduremyProc (a, b : Real; var s : String);

var z:real;

Begin

z:=a+b;

s:=floatToStr(z);

end;

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

В разделе описаний процедуры описана внутренняя переменная z, которая за пределами процедуры недоступна.



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

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

3.1.1.2 Вызов процедуры

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

Примеры вызова процедур, которые уже встречались ранее, представлены ниже.

Пример вызова процедуры ShowMessage, в которую передается один параметр в виде строки символов.

ShowMessage(‘Не могу преобразовать исходные данные’);

Пример вызова процедуры Append для строк компонента TMemo.

Memo1.Lines.Append(‘Результаты расчетов’);

Пример вызова процедуры Exit, без параметров.

Exit;

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

Varx,y : Real; str :String;

Begin

x:=1; y:=2;…

myProc ( 2.345, x+y, str);

showMessage(str);

end;

В этом примере обращение к нашей процедуре выделено жирным курсивом.

В этом обращении формальному параметру «а» соответствует фактический параметр в виде числа 2.345, формальному параметру «b» соответствует число 3, полученное как результат вычисления выражения «x+y». Формальному параметру «s» соответствует адрес переменной «str». Следует заметить, что в качестве последнего фактического параметра мы можем передать только имя переменной (нельзя задавать константу или выражение), так как в заголовке процедуры, перед параметром «s» написано var.

В результате вызова процедуры значение переменной «str» станет равным строке символов ‘5.345’.

3.1.1.3 Описание функции

Описание функции по структуре такое же, как и описание процедуры, но вид заголовка несколько иной.

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

Function<имя функции> (<список формальных параметров>):<тип возвращаемого значения>;

Пример заголовка функции:

FunctionmyFunc (a, b : Real) : String;

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

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

Ниже, в качестве примера, дано описание функции, заголовок которой был приведен выше.

FunctionmyFunc (a, b : Real) : String;

var z:real;

Begin

z:=a+b;

Result:=floatToStr(z);

end;

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

В разделе описаний процедуры описана внутренняя переменная z, которая за пределами процедуры недоступна..

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

3.1.1.4 Вызов функции

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

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

Пример вызова функции StrToFloat.

x := strToFloat( Edit1.text );

Пример вызова функций sin и sqrt.

x := a + sin(x) + sqrt(a+b);

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

Varx,y : Real; str :String;

Begin

x:=1; y:=2;…

str := myFunc ( 2.345, x+y);

showMessage(str);

end;

В этом примере обращение к нашей функции выделено жирным курсивом.

Функция вернет строку символов, значение которой равно ‘5.345’ и это значение будет присвоено переменной str.



<== предыдущая лекция | следующая лекция ==>
Создание процедур обработки событий | Способы передачи параметров в подпрограммы


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


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

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

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


 


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

 
 

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

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