Dictionary.Author.Name, Dictionary.Author.SecondName и т.д. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Dictionary.Author.Name, Dictionary.Author.SecondName и т.д.



 

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


Глава 8. Подпрограммы и функции

Понятие подпрограмм в языке Паскаль.

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

В языке Turbo Pascal существуют 3 типа программных единиц:

- основная программа (начинающаяся заголовком Program),

- функция (заголовок Function),

- процедура (заголовок Procedure).

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

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

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

Процедуры.

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

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

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

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

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

В выполняемом блоке процедуры (который должен быть заключен в скобки Begin.. End), описаны действия, которые при вызове процедуры, будут выполняться над локальными, глобальными переменными (если они есть), и над теми данными, которые будут переданы в процедуру через список параметров. В отличие от основной программы, выполняемый блок заканчивается символом ";", а не точкой.

В блок-схемах алгоритмов обращение к процедуре изображается прямоугольником с двойными вертикальными сторонами и именем процедуры внутри этого прямоугольника:

 

 

 
 

 


Описание и вызов функций

 

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

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

Список аргументов это, по существу, список входных параметров.

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

Следует иметь в виду, что если во внешней программе переменная описана, а в функции – нет, ее использование в теле функции означает работу с переменной внешней программы (так называемые глобальные переменные).

Выполняемый блок (который должен быть заключен в скобки Begin.. End) заканчивается символом ";", а не точкой.

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

Обращение к функции выполняется только внутри выражения, входящего в состав оператора, аналогично обращению к стандартным (встроенным) функциям Турбо-Паскаля.

 



Поделиться:


Последнее изменение этой страницы: 2016-08-12; просмотров: 100; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.102.239 (0.006 с.)