Процедура в Паскале и ее формат.
В языке PASCAL выделяют два вида подпрограмм: процедура(ргосв<1иге) и
функция (function). Имея один и тот же смысл и аналогичную структуру, процедуры и
функции различаются назначением и способом их использования.
Мы уже встречались со стандартными процедурами и функциями. Любая программа может содержать несколько процедур и функции. Процедуры
и функции объявляются в разделе описания вслед за разделом описания переменных.
Процедура - это независимая часть программы, которую можно вызывать по имени для выполнения определенных действий.
Процедуры служат для задания совокупности действий, направленных на изменение внешней по отношению к ним программной обстановки; например, вычисления каких-либо выражений с разными значениями параметров или рисования геометрических фигур с различными значениями сторон или радиусов. Структура процедуры имеет следующий вид:
procedure имя [(список формальных параметров)];
раздел описаний begin
раздел операторов end;
Первая строка описания называется заголовком процедуры, а раздел операторов называется телом процедуры.
В заголовке указывается служебное слово PROCEDURE, за которым следуют имя процедуры и список формальных параметров, заключенные в круглые скобки (если такие имеются). В списке перечисляются имена формальных параметров и их тип. Имя параметра отделяется от типа двоеточием, а параметры друг от друга - точкой с запятой. Если несколько формальных параметров имеют одинаковый тип, тогда их можно перечислить через запятую, а затем указать тип. Имя процедуры задается по правилам задания имен переменных.
Тело процедуры заключается в операторные скобки BEGIN и END, причем после END, в отличие от основной программы, вместо точки ставится точка с запятой.
Раздел описаний процедуры подобен программе и состоит из разделов меток, констант, типов, переменных и, в свою очередь, процедур и функций. Процедура вызывается по ее имени:
имя [(список фактических параметров)];
Формальные параметры - параметры, определенные в заголовке процедуре.
Фактические параметры - выражения, задающие конкретные значения при обращении к процедуре.
При обращении к процедуре ее формальные параметры замещаются фактическими, переданными из основной программы.
С помощью формальных и фактических параметров данные передаются из программы в процедуру и, наоборот, из процедуры в программу. Между формальными и фактическими параметрами должно быть соответствие по количеству параметров, по их типу и порядку следования. Среди параметров процедуры выделяют параметры-значения и параметры-переменные.
Параметры-значения выполняют роль входных параметров процедуры. Они могут получать значения фактических параметров, но не могут передавать свои значения фактическим параметрам.
Параметры-переменные выполняют роль как входных, так и выходных параметров процедуры. Они могут получать значения фактических параметров, изменять их в процедуре и возвращать новые значения в основную программу. Для передачи результатов выполнения подпрограммы в основную программу следует использовать параметры-переменные. В списке формальных параметров они перечисляются после зарезервированного слова VAR с обязательным указанием типа. 19.3. Механизм передачи параметров
Если параметр определен как параметр-значение, то перед вызовом процедуры это значение вычисляется, полученный результат помещается во временную память и передается процедуре. Процедура использует в качестве значения соответствующего параметра значение из этой памяти. При выходе из процедуры эта временная память недоступна основной программе. Таким образом, значения фактических параметров не изменяются подпрограммой , а остаются теми же, что были при обращении к подпрограмме.
Если же формальный параметр определен как параметр-переменная, то при вызове подпрограммы ей передается сама переменная, поэтому изменение в подпрограмме значения параметра - переменной приводит к изменению фактического параметра в основной программе.
Следовательно, исходные данные из программы в подпрограмму могут быть переданы как через параметры - значения, так и через параметры - переменные, а результат работы процедуры возвращается в основную программу только через параметры -переменные.
Любая процедура может содержать несколько входных параметров и несколько результатов ее выполнения.
Пример процедуры:
PROCEDURE EXPRES(A,B,C:REAL;VAR X,Y:REAL);
VAR Z:REAL;
BEGIN
Z-A+B+C;
X:=SQR(Z); (*КВАДРАТг *) Y:=SQRT(Z) (*KOPEHbH3Z *) END;
Эту процедуру можно вызвать таким образом:
EXPRESS(25.4,44.6,30,X1,Y1);
Формальные входные параметры А, В, С принимают значения соответствующих фактических параметров, А=25.4, B=344.6, С=30. При этих значениях выполняется процедура. Результатом выполнения процедуры являются X, Y, которые передают свои значения соответствующим фактическим параметрам XI, Y1. Таким образом, в основной программе будем иметь Xl=10000, Yl=10.
Допускается одинаковое обозначение соответствующих формальных и фактических параметров. Например, вызов процедуры может иметь вид:
EXPRESS(25.4,44.6,30,X,Y);
В качестве фактических параметров, которые соответствуют параметрам-значениям, могут быть константы, переменные, выражения. Их тип должен соответствовать типу формального параметра. Например, вызов процедуры может быть таким:
А:=25;С-.=30;
EXPRESS(A,44.6,C,X1,Y1);
или
D:=44.6;R:=10;
EXPRESS(25.4,D,R+20,Z,T);
В любом случае формальные параметры получат значения А=25.4, В=44.6, 030.
В качестве фактических параметров, которым соответствуют параметры-персменные, используются только имена переменных (константы и выражения недопустимы).
Допускается использование процедур без параметров. В этом случае формальные и фактические параметры отсутствуют. Назначение такой процедуры - изменение значений некоторых переменных или выполнение каких- либо действий, внешних по отношению к процедуре (очистка экрана, например). В процедуре, как и в основной программе, может отсутствовать раздел описаний.
Дата добавления: 2015-12-11; просмотров: 1020;