Описание
Процедуры и функции
End.
Begin
End.
Begin
..... {пропускаем фрагмент программы}
For i:=1 to 21 do Begin {начало тела цикла}
j:=-11+i;
If j=0 then goto 1; {обход части тела цикла}
A[i]:=1/j
1: end; {конец тела цикла с помеченным пустым оператором}
..... {пропускаем фрагмент программы}
Здесь деление 1/j пропускается в случае, когда j=0. Однако в Паскале это можно сделать и без применения помеченного пустого оператора:
Program SkipZero;
Var i,j: integer; A: array [1..21] of real;
..... {пропускаем фрагмент программы}
For i:=1 to 21 do Begin {начало тела цикла}
j:=-11+i;
If j<>0 then A[i]:=1/j
end; {конец тела цикла}
..... {пропускаем фрагмент программы}
Здесь деление 1/j выполняется в случае, когда j не равно 0. Не нужна ни метка, ни оператор безусловного перехода.
Процедуры и функции – это самостоятельные компоненты программы, выполняющие определенные действия. Преимущество их использования состоит в том, что их можно написать один раз, и многократно использовать в одной программе с разными исходными данными, и в разных программах. Отличие между ними в том, что обращение к функции может быть использовано в выражении как фактор (см. описание выражения в разделе "Оператор присваивания"), а обращение к процедуре является отдельным оператором.
Процедуры и функции описываются в программе в разделе описания процедур и функций (см. подраздел "Структура программы на Паскале"). Их описание такое же, как и у программы, только в конце вместо точки ставится точка с запятой:
<процедура>::= <заголовок процедуры> ";" <блок> ";".
<функция>::= <заголовок функции> ";" <блок> ";".
Синтаксис блока описан в подразделе "Структура программы на Паскале". Синтаксис заголовков:
<заголовок процедуры>::= <имя> ["("<список формальных параметров>")"].
<заголовок функции>::= <имя> ["("<список формальных параметров>")] ":"<тип результата>.
Поскольку функция является частным случаем фактора, с ее именем связываются ячейки памяти, в которые заносится результат (или один из результатов) выполнения функции. Говорят, что функция возвращает результат через свое имя. Это значение, возвращенное через имя, используется как фактор в выражении (см. структуру выражения в подразделе "Оператор присваивания"). Поэтому в исполняемом разделе функции (в составном операторе, входящем в блок функции) должен быть хотя бы один оператор присваивания вида:
<оператор возврата результата> ::= <имя функции> ":=" <выражение> .
Тип результата должен быть простым типом или указателем.