Функции.

End.

Begin

Begin

Begin

Процедуры.

Число и тип формальных и фактических параметров должны совпадать с точность до их следования.

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

Глобальные переменные– это те переменные, которые объявленные в описании основной части.

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

 

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

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

<описательная часть>

<тело процедуры>

end;

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

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

Пример:

Составить программу, которая будет находить an, то есть n-ую степень числа а, где а и n-это это целые числа и n>0, вводимые с клавиатуры.

Решение:

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

ProcedureDegree(x, y: Integer; Var st: Longint);{заголовок процедуры}

Var i: Integer; {описанная часть}

Begin{тело процедуры}

st: =1;

For i:=I to y Do

st: =st*x;

End;

Первая строчка в описании – это заголовка. Служебное слово Procedureуказывает на то, что именем Degree названа процедура. В скобках записан список формальных параметров, то есть перечислены переменные с указанием их тела. Будем передавать три параметра: первый параметр–основание, то есть число, которое надо возвести в степень, второй параметр–это степень, а третий – это результат. Поэтому первые два формальные параметра- это параметры-значения, а третий –это параметр-переменная и перед ним надо написать слово Var. Обозначим их x, y, и st, где st=xn. Все они описаны целым типом (x и y типом Integer, а st- Longint, так как степенная функция быстро возрастает).

После заголовка идет описательная часть. В нашем примере она состоит только из раздела переменных, где имеется одна переменная I (для работы с циклом).

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

Вся программа для нашей задачи может иметь следующий вид:

ProgramEx_28;

Vara,n: Integer;

s: Longint;

ProcedureDegree(x, y: Integer; Var st: Longint);

Vari: integer;

st: =1;

For i:=I to y Do

st: =st*x;

End;

Writeln (′введите два числа′);

Readln (a, n) ;{ ввод с клавиатуры значений переменных a, n}

Degree (a, n, s); {обращение к процедуре}

Writeln (′Результат′, s); {вывод значения an}

Readln;

Процедура вызывается как оператор, состоящий из имени процедуры. В круглых скобках передаются фактические параметры. В нашем примере, фактические параметры a, n и s передают свои значения соответственно формальным параметрам x, y и st. После завершения работы процедуры переменные а и n имеют те же значения, что и при а s получает новое значение.

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

Пуста a=3 и n=4.Когда в программе встречается оператор Degree (a, n, s), то ЭВМ выполняет следующие действия:

1)выделяет память для переменных, описанных в процедуре Degree;

2)присвоит формальным параметрам значения фактических: x:=a(x=3), y:=n(y=4), st:=s;

3)выполняет операторы процедуры, то есть найдет 34

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

 

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

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

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

Таким образом, общий вид будет следующим:

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

<описательная часть>