Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Правила написания подпрограмм
Структура подпрограммы представлена на рисунке 3.1. Рисунок 3.1 – Структура подпрограммы Описание процедуры Заголовок процедуры выглядит следующим образом: Procedure <имя процедуры> (<список формальных параметров>); Имя процедуры должно удовлетворять общим требованиям языка к написанию имен. В списке формальных параметров перечисляются имена параметров, передаваемых в процедуру с указанием их типов. Список параметров не является обязательным. Пример заголовка процедуры: Procedure myProc (a, b: Real; var s: String); В приведенном выше примере процедуре передаются значения двух вещественных переменных «а» и «b», и адрес строки символов «s». Об этом свидетельствует префикс var перед именем строки. Передача адреса переменной в процедуру вместо ее значения приводит к тому, что если значение параметра s изменится в результате работы процедуры, то это изменение будет сохранено после завершения работы процедуры. Описательная часть процедуры может содержать описания типов, классов, переменных, констант и т.п. Обратите внимание, параметры, описанные в заголовке процедуры, в разделе описаний повторно не описывают. В разделе описаний процедуры могут быть описаны не только переменные, но и другие подпрограммы. Такие подпрограммы называются внутренними по отношению к процедуре, в которой они описаны. Сама процедура, по отношению к внутренним подпрограммам называется внешней. Раздел операторов процедуры содержит инструкции, которые будут выполняться при обращении к процедуре. Ниже, в качестве примера, дано описание процедуры, заголовок которой был приведен выше. Procedure myProc (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; Процедура, заголовок которой приводился выше в виде примера, может быть использована так. … Var x,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 <имя функции> (<список формальных параметров>): <тип возвращаемого значения>; Пример заголовка функции: Function myFunc (a, b: Real ): String; В этом примере функция myFunc возвращает стоку символов, а параметрами, которые передаются в процедуру, являются два вещественных числа. Еще одна особенность описания функции заключается в том, что в операторной части должен располагаться оператор присваивания, в котором специальной переменной result присваивается значение возвращаемого результата. Переменная result не требует описания. Ниже, в качестве примера, дано описание функции, заголовок которой был приведен выше.
Function myFunc (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); Обращение к функции, заголовок которой приводился выше в виде примера, может быть использовано так. … Var x,y: Real; str:String; Begin x:=1; y:=2;… str:= myFunc (2.345, x+y); showMessage(str); end; В этом примере обращение к нашей функции выделено жирным курсивом. Функция вернет строку символов, значение которой равно ‘5.345’ и это значение будет присвоено переменной str.
|
||||||
Последнее изменение этой страницы: 2017-02-07; просмотров: 235; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.27.244 (0.029 с.) |