Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Процедуры и функции пользователя

.pdf
Скачиваний:
22
Добавлен:
29.05.2015
Размер:
264.92 Кб
Скачать

Министерство образования Российской Федерации

Сибирский государственный индустриальный университет

Кафедра прикладной информатики

Процедуры и функции пользователя

Рекомендации к выполнению лабораторной работы по дисциплине «Информатика»

Специальности: «Электропривод и автоматика промышленных установок и технологических комплексов» (180400), «Промышленная электроника» (200400)

Новокузнецк 2002

УДК 681.3.066(07)

Рецензенты:

Кафедра высшей математики СибГИУ (Зав. кафедрой С.А. Лактионов) Процедуры и функции пользователя. Метод, указ./ Сост. Л.Д. Павлова -

2-е изд. испр. и перераб. : СибГИУ. - Новокузнецк, 2002. - 18 с.

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

Предназначена для студентов специальностей «Электропривод автоматика промышленных установок и технологических комплексов» (180400), «Промышленная электроника» (200400), а также может быть рекомендована для студентов других специальностей.

2

Введение

Впрактике программирования часто встречается ситуация, когда одну

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

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

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

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

Отличительные особенности процедуры:

• имя процедуры не может находиться в выражении в качестве операнда;

• процедура может передать в точку вызова любое количество значений (результат работы процедуры).

Функция аналогична процедуре. Отличительные особенности функции:

• имя функции может входить в выражение в качестве операнда (при этом оно называется указателем функции или обращением к функции);

• функция может передать в точку вызова единственное скалярное значение (результат работы функции).

Все процедуры и функции можно разделить на две группы: встроенные

иопределенные пользователем

3

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

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

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

4

1. Процедуры пользователя

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

1.1. Описание процедуры пользователя

Описание процедуры пользователя состоит из заголовка и тела процедуры. Формат заголовка:

Procedure <имя> (формальные параметры); где Procedure -

зарезервированное слово; имя - идентификатор имени процедуры, уникальный в пределах

программы; формальные параметры - список формальных параметров с указанием

типа каждого параметра.

Список может отсутствовать. В этом случае заголовок имеет следующий вид:

Procedure <имя>;

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

Procedure Sort (A : Integer; В : Real);

Procedure Kvadro (Alfa, Beta : Integer; Gamma : Boolean); Procedure Summa;

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

Procedure <имя> (формальные параметры); <разделы описаний>

begin

<раздел операторов> end;

5

1.2. Обращение к процедуре пользователя

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

<имя> (фактические параметры);

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

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

Пример обращения к процедуре:

Sort(A1,B1); Kvadro(14,25 True); Summa;

Пример программы с использованием процедуры пользователя:

Program Examplel;

Const N=64; Procedure Draw; Var i: Integer; Begin

For i:=1 To N Do Wrlte('*'); End; Begin

Draw; Draw; Draw; End.

В результате работы процедуры Draw строка экрана длинной 64 позиции заполняется символом * столько раз, сколько раз происходит обращение к подпрограмме Draw в основной программе (в приведенном примере 3 раза).

2. Функции пользователя

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

6

2.1. Описание функции пользователя

Описание функции определенной пользователем состоит из заголовка и тела функции. Формат заголовка:

Function <имя> (формальные параметры): <тип результата>; где

Function - зарезервированное слово;

имя - идентификатор имени функции, уникальный в пределах программы;

формальные параметры - список формальных параметров с указанием типа каждого параметра;

тип результата - любой скалярный тип.

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

Function <имя>: <тип peзультата>;

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

Function Prov (X, Y, Т: Integer; В : Real) : Real; Procedure Zx: Boolean;

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

Function <имя>(формальные параметры): <тип результата>; <разделы описаний>

begin

<:раздел операторов> end;

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

2.2. Обращение к функции пользователя

Обращение к функции осуществляется по имени с указанием списка

7

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

<имя> (фактические параметры),

где имя - идентификатор имени функции, уникальный в пределах программы;

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

Список фактических параметров может отсутствовать, если в заголовке функции отсутствует список формальных параметров.

Пример обращения к функции:

Z:=A+2*Prov(X1,Y1,T1);

F:=Zx;

Пример программы с использованием функции пользователя: Program Example2;

Var Z1, Z2, AZ1, AZ2 : Real;

Function Step(F: Real; N; Integer): Real; Var R : Real; i: Integer; Begin

If N<>0 Then begin R:=F;

For i:=2 To Abs(N) Do R:=R*F;

If N<0 Then Step:= 1/R Else Step:= R; end Else Step= 1; End;

Begin

Read(Z1, Z2); Writeln(Z1:8:2, Z2:8:2)

AZ1:= Step(Z1,4); AZ2:= Step(Z2,5); Writeln (AZ1:8:2); Writeln(Step(Z1, -4):8:2); Writeln (AZ2:8:2); Writeln(Step(Z2, -5):8:2); End.

8

В результате работы функции Step переменная вещественного типа возводится в целую положительную или отрицательную степень. В приведенном примере, Z1 возводится в степень 4, и в степень - 4, a Z2 - в степень 5 и в степень -5.

3. Параметры

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

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

Формальные параметры можно разбить на следующие категории:

параметры-значения;

параметры-переменные;

параметры-константы;

параметры-процeдуры и параметры-функции;

Наиболее часто используются параметры-значения и параметрыпеременные. Рассмотрим эти категории более подробно.

3.1. Параметры-значения

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

• изменение формальных параметров не влечет за собой изменения

9

соответствующих фактических параметров;

• при описании параметров-значений в списке формальных параметров перед ними не ставится никакого зарезервированного слова.

Приведем пример типичной записи параметров-значений в описании процедур и функций пользователя:

Procedure Копс (А, B, С: Integer; D : Real); Function Docs (S1, S2 : Real; Flag: Boolean) : Real;

Вданном случае параметры A, В, C, D, S1, S2, Flag описаны как параметры-значения.

Пример программы с использованием параметров-значений: Program Example3;

Procedure Square(N: Integer); Var i,j: Integer; Begin

For i:=1 To N Do begin

For j:=1 To N Do Write('*'); Writeln; end

End; Begin Square(3); Writeln; Square(5); End.

Врезультате работы процедуры Square на экране рисуется квадрат размера N*N. Формальный параметр N описан как параметр-значение. В приведенном примере рисуется квадрат размером 3*3, а затем - размером

5*5.

3.2. Параметры-переменные

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

10