Описание процедуры типа Function и Procedure и ее использование Исполнитель
- Скачано: 44
- Размер: 62 Kb
Описание процедуры типа Function и Procedure и ее использование
Цель: Формирование умений, навыков и знаний по изучению описание процедуры типа Function и Procedure и ее использование
План:
- Процедуры.
- Функции.
- Параметры значения.
- Параметры переменные.
{spoiler=Подробнее}
При решении многих задач возникает необходимость повторять одни и те же вычисления при различных значениях параметров. При этом для уменьшения размера программ целесообразно выделить эти операторы в отдельную процедуру.
Процедуры используются в тех случаях, когда необходимо в программе получить несколько результатов. Процедура определяется в разделе описания процедур и функций. Описание процедуры включает в себя заголовок процедуры, разделы описаний, тело процедуры.
В заголовке процедуры за ключевым словом PROCEDURE указывают имя процедуры, а в скобках – список параметров со своими описаниями. Имя процедуры выбирается пользователем в соответствии с правилами образования имен. Описание необходимых действий в процедуре осуществляется с помощью формальных параметров, которые используются только в теле процедуры и локальны по отношению по отношению к ней.
Например, сложение дробей, записанных в общем виде: H1/Z1+H2/Z2, можно описать процедурой:
PROCEDURE DROB ( VAR H,Z,H1,H2,Z1,Z2: INTEGER);
BEGIN
H : =H1*Z1+H2*Z2;
Z : =Z1*Z2
END;
Блок процедуры заканчивается символом – точка с запятой.
Обращение к процедуре осуществляется оператором процедуры и фактические параметры, которые должны соответствовать формальным по количеству, типу и месту расположения. Оператор записывается в блоки программы.
Функции представляют собой последовательность операторов, в результате выполнения которых вычисляются одно значение, присваиваемое имени функции. Заголовок функции оформляется аналогично заголовку процедуры. В отличие от процедуры в заголовке должен быть определен тип результата, возвращаемого функцией посредством имени функции. Как правило, окончательный результат присваивается в конце функции.
Функция может иметь собственные локальные константы, типы, переменные и вспомогательные процедуры и функции.
Обращение к функции осуществляется в правой части оператора присваивания, при этом в выражении записывается имя функции и фактические параметры. После выполнения функции вычисленное значение присваивается имени функции и передаётся в выражение.
Пример: Составить программу для определения числа сочетаний =, используя функцию при вычислении факториала .
Программа имеет вид:
PROGRAM KOL (INPUT, OUTPUT);
VAR NCM, N,M,L: INTEGER;
FUNCTION FACT (K:INTEGER):INTEGER;
VAR P,I:INTEGER;
BEGIN
P:=1;
FOR I:=1 TO K DO
P:=P*I;
FACT :=P
END;
BEGIN
READ(N,M);
L:=N-M;
NCM: = FACT (N)/FACT(M)/FACT(L);
WRITELN(‘ЧИСЛО СОЧЕТАНИЙ С ИЗ N ПО М=’,NCM)
END.
Формальные и фактические параметры в процедурах и функциях обрабатываются аналогично. Каждый параметр помещается в список с указанием типа. Примеры записи :
PROCEDURE SUMMA (X,Y,Z: REAL);
PROCEDURE SCALYR(A,B; REAL; N:INTEGER);
PROCEDURE TH (VAR X,R: REAL );
FUNCTION SLED (B:REAL; I,J: INTEGER);
FUNCTION SPOK (A,B,C: BOOLEAN);
Если два или более формальных параметров одного и того же типа указаны последовательно в списке, то их можно объединить в одном описании следующим образом:
PROCEDURE SUMMA (X: REAL; Y: REAL; Z: REAL);
PROCEDURE SCALYR (A: REAL ;B:REAL;N:INTEGER);
PROCEDURE TH (VAR X:REAL; VAR R:REAL);
FUNCTION SLED (B:REAL; I:INTEGER;J:INTEGER);
FUNCTION SPOK (A:BOOLEAN; B:BOOLEAN; C:BOOLEAN);
Формальные параметры можно указывать в списке в любом порядке, а параметры одного типа не обязательно группировать в одном месте. При обращении к процедуре или функции фактические параметры следует записывать в той же последовательности, что и формальные.
При выборе имен в программах, содержащих процедуры и функции, желательно, чтобы имена локальных и глобальных параметров не совпадали. Это делает программу нагляднее. Правилами определения области действия допускается использование одного имени для глобального и формального параметров. В этом случае глобальный параметр теряет свое значение внутри блока процедуры или функции, тат как с этим именем связан локальный параметр.
При организации процедур и функций в языке ПАСКАЛЬ используются следующие типы параметров: параметры- значения, параметры-переменные, параметры процедуры и параметры- функции.
Параметры значения определяют исходные данные для работы процедур и функций при каждом обращении к ним. В списке формальных параметров они описываются в виде:,
(q1:T;q2:T;) или (q1,q2: T;)
где q1,q2- имена параметров, Т-тип параметров.
При обращении фактический параметр может быть любым выражением, результат вычисления которого принадлежит тому же типу, что и формальный параметр. В качестве простейшего выражения указанного типа может быть константа или переменная. При обращении к процедуре выражение вычисляется, результат копируется в выделенную область параметров, передается в процедуру, а при выходе из нее эта область освобождается.
Параметры – переменные определяют, как правило, выходные данные процедуры, которые передаются в основную программу. Следовательно, фактический параметр, определяющий результат, должен описываться как переменная. Параметры-переменные в списке формальных параметров описывается в виде
(VAR q1,q2,…,qn : T;)
где q1,q2,…qn- параметры – переменные; Т- имя типа.
Параметры-переменные в заголовке функции обычно не используются, так как результат присваивается имени функции. Присвоение значения глобальному параметру переменной в теле функции или процедуры рассматривается как побочный эффект. По возможности следует избегать побочных эффектов, так как они делают программу более трудной для понимания.
При обращении фактические параметры должны быть переменными того же типа, что и формальные. В процедуру передается адрес переменной и операторы непосредственно используют данную переменную. Все адреса вычисляются в момент обращения к процедуре. Поэтому если переменная является элементом массива, то ее индексное выражение вычисляется при обращении к процедуре.
Параметрами-процедурами и параметрами-функциями называются параметры, которые сами являются процедурами или функциями. Для параметра- процедуры в заголовке процедуры указывается только имя формального параметра. Для параметра- функции должен указываться и тип результата. В обоих случаях при вызове подпрограмм формальным параметрам-процедурам и параметрам- функциям, указанным внутри процедуры, должны соответствовать фактические параметры, совпадающие с ними по количеству и типу.
При использовании имен процедур и функций в качестве фактических параметров следует помнить, что: если «передаваемая» процедура имеет параметры, то они должны быть значащими; при обращении передается только имя процедуры или функции, но не их параметры. Следовательно, параметры должны быть сформированы «использующей» процедурой; компилятор не обязательно должен проверять, что количество параметров, требуемых для «передаваемой» процедуры равно количеству параметров, указанных в определении «использующей» процедуры. Синтаксическая диаграмма списка параметров процедур и функций.
При использовании процедур и функций встречается обращение к самим себе, называемое рекурсивным. Рекурсия в языке ПАСКАЛЬ возможна благодаря тому, что при вызове процедуры динамически создаются новые локальные переменные. Рекурсивные вызовы процедур и функций приводят к увеличению времени решения. Многие математические функции можно выразить рекурсивно.
КОНТРОЛЬНЫЕ ВОПРОСЫ:
1 В каких целях используются подпрограммы?
2 Из каких ключевых слов начинается заголовок процедуры?
3 Входит ли в состав основной программы, блок процедуры?
4 Чем отличаются функции от процедуры?
5 Что вы понимаете под формальным и фактическим параметрами?
6 Какие типы параметров используются при организации процедур и функций?
ОПОРНЫЕ СЛОВА:
Программа, процедура функции, заголовок, метка, константа, тип, переменные, локальные, глобальные, параметры, имя, формальные, фактические, параметры – значений, параметры – переменных.
ИСПОЛЬЗУЕМАЯ ЛИТЕРАТУРА:
- Персональный компьютер: Диалог и программные средства. Москва – 1991 г. УДН. В.М.Матюшок и др.
- Численные методы для ПЭВМ на языках Бейсик, Фортран и Паскаль. Томск МП ’’Раско’’ 1992 г. А.Е.Мудров.
- Программирование на языке Паскаль. Радио и связи. Москва 1998 г. О.Н.Перминов.
- Программирование на алгоритмических языках Бейсик, Фортран, Паскаль. Москва. ’’Просвещение 1991г.Б.И.Чернов.
- Языки программирования (ПАСКАЛЬ, ПЛ/М). Москва «Высшая школа» 1987. В.Е.Алексеев, А.С. Ваулин.
- comp-science.narod.ru
{/spoilers}