Процедуры – это подпрограммы, которые вместо того, чтобы возвращать одно значение, позволяют получить группу результатов.
Определение процедуры
В Паскале процедура определяется с помощью ключевого слова процедуры . Общая форма определения процедуры следующая:
procedure name(argument(s): type1, argument(s): type 2, . ); local declarations > begin procedure body > end;
- Аргументы – Аргументы (аргументы) устанавливают связь между вызывающей программой и идентификаторами процедур, а также вызывают формальные параметры. Правила для аргументов в процедурах такие же, как и для функций.
- Локальные объявления – Локальные объявления относятся к объявлениям для меток, констант, переменных, функций и процедур, которые применимы только к основной части процедуры.
- Тело процедуры – Тело процедуры содержит набор операторов, которые определяют, что делает процедура. Он всегда должен быть заключен между зарезервированными словами начало и конец. Это часть процедуры, в которой выполняются все вычисления.
Аргументы – Аргументы (аргументы) устанавливают связь между вызывающей программой и идентификаторами процедур, а также вызывают формальные параметры. Правила для аргументов в процедурах такие же, как и для функций.
Урок 22. Процедуры на Паскале
Локальные объявления – Локальные объявления относятся к объявлениям для меток, констант, переменных, функций и процедур, которые применимы только к основной части процедуры.
Тело процедуры – Тело процедуры содержит набор операторов, которые определяют, что делает процедура. Он всегда должен быть заключен между зарезервированными словами начало и конец. Это часть процедуры, в которой выполняются все вычисления.
Ниже приведен исходный код процедуры с именем findMin () . Эта процедура принимает 4 параметра x, y, z и m и сохраняет минимум среди первых трех переменных в переменной с именем m. Переменная m передается по ссылке (мы обсудим передачу аргументов по ссылке чуть позже) –
procedure findMin(x, y, z: integer; var m: integer); (* Finds the minimum of the 3 values *) begin if x y then m := x else m := y; if z m then m := z; end; end of procedure findMin >
Процедурные объявления
Объявление процедуры сообщает компилятору об имени процедуры и о том, как вызвать процедуру. Фактическое тело процедуры может быть определено отдельно.
Объявление процедуры имеет следующий синтаксис –
procedure name(argument(s): type1, argument(s): type 2, . );
Обратите внимание, что название процедуры не связано ни с каким типом . Для описанной выше процедуры findMin () ниже приводится объявление –
procedure findMin(x, y, z: integer; var m: integer);
Вызов процедуры
При создании процедуры вы даете определение того, что процедура должна делать. Чтобы использовать процедуру, вам придется вызвать эту процедуру для выполнения определенной задачи.
Когда программа вызывает процедуру, управление программой передается вызываемой процедуре. Вызываемая процедура выполняет определенную задачу, и когда ее последний оператор завершения достигнут, она возвращает элемент управления обратно вызывающей программе.
#6. Процедуры и Функции на PascalABC.net
Чтобы вызвать процедуру, вам просто нужно передать необходимые параметры вместе с именем процедуры, как показано ниже –
program exProcedure; var a, b, c, min: integer; procedure findMin(x, y, z: integer; var m: integer); (* Finds the minimum of the 3 values *) begin if x y then m:= x else m:= y; if z m then m:= z; end; end of procedure findMin > begin writeln(‘ Enter three numbers: ‘); readln( a, b, c); findMin(a, b, c, min); (* Procedure call *) writeln(‘ Minimum: ‘, min); end.
Когда приведенный выше код компилируется и выполняется, он дает следующий результат –
Enter three numbers: 89 45 67 Minimum: 45
Рекурсивные подпрограммы
Паскаль — Урок 9: Подпрограммы, процедуры
В прошлом уроке мы разобрали один вид подпрограмм в Паскале — функции, а сегодня разберём второй — процедуры. Сегодня мы узнаем о том, как она описывается, как вызывается в основной части и другие связанные с ней вопросы. Продолжение ниже.
Процедуры — подпрограммы, которые не возвращают значение, являются отрезком программы для дальнейшего его использования.
Предлагаю рассмотреть структуру процедуры на примере, предложенном мною ниже:
Procedure Prim(var a, b, c:integer); //Задание переменных в процедуру из программы
var M:integer; //Описание локальной/ных переменных
begin
A:=B+C; //Складывание чисел
M:=A/B; //Присваивание локальной переменной значение А/В
A:=A*C*B*M; //Перемножение
end; //Конец функции
Главные отличия от функции:
1) Нет описания типа возвращаемого значения (в первой строке после скобок стоит сразу точка с запятой);
2) Не возвращает значение, а значит возврат значения не пишется и процедуре ничего не присваивается
Передаваться значения могут как по ссылке, так и по значению.
Как же вызвать процедуру в основной программе?
А очень просто, для вызова процедуры нам не нужно присваивать её чему-либо, выводить с помощью writeln и т.д., ведь у процедуры нет определённого значения. Для вызова процедуры необходимо написать имя процедуры и формальные параметры, указанные в первой строке в том же количестве и того же типа! Пример:
Prim (a, b, c);
Для вызова процедуры необязательно писать передаваемые в процедуру параметры с таким же типом, важно, чтобы эти параметры были тех же типов и шли в том же порядке. Например:
var a, k, m: integer;
begin
read (a);
k;=1;
m:=1;
Prim (a, k, m);
end.
В данном случае мы значение a присваиваем a, значение k присваиваем b, a значение m присваиваем c. Если бы k было типа real, то и b должно быть типа real.
Пример программы, использующей функцию и процедуру вместе, а также с разными типами:
Program primer9;
var a, k: integer; // Описание глобальных переменных
m:real;
Function PrimFun(a, b:integer; c:real):real; //Задание переменных в функцию из программы
var M:real; //Описание локальной/ных переменных
begin
A:=B+A; //Складывание чисел
M:=A/B; //Присваивание локальной переменной значение А/В
C:=A*C*B*M; //Перемножение
PrimFun:=C; //Возвращение значения
end; //Конец функции
Procedure PrimProc(var a, b:integer; c:real); //Задание переменных в процедуру из программы
var M:real; //Описание локальной/ных переменных
begin
A:=B+A; //Складывание чисел
M:=A/B; //Присваивание локальной переменной значение А/В
C:=A*C*B*M; //Перемножение
end; //Конец процедуры
begin //Значение строк описаны в предыдущих уроках
read (a, k);
m:=1;
m:=PrimFun (a, k , m); //Присваивание значение функции m
PrimProc (a, k, m); // Вызов процедуры
writeln (a, k, m); //Вывод полученных значений
end.
Это абсолютно бредовая программа, которая производит некие операции с числами и служит лишь наглядным примером использования процедур и функций.
P.S. введя числа 12 и 22 я получил 34221156
Источник: zedpost.ru
Урок 14. Описание и вызов процедуры
Процедуры— это разновидность подпрограмм. Процедура, в отличие от функции, может содержать несколько выходных параметров или ни одного. Её нельзя использовать в качестве операнда в выражених.
Процедуры, не входящие в комплект поставки Паскаль (то есть не встроенные в Паскаль), называются пользовательскими процедурами, потому что их должен определять пользователь.
На этом уроке вы научитесь определять и вызывать пользовательские процедуры.
Прежде чем использовать процедуру, ее нужно описать в разделе описаний основной программы.
В разделе описаний процедуры и функции определяют после раздела описания переменных (после раздела Var) и до до начала раздела операторов (до слова Begin).
Структура процедуры в языке Паскаль похожа на структуру основной программы: в ней есть заголовок, раздел описаний и раздел операторов.
Общий вид процедуры:
Procedure []; Begin End;
Параметры, перечисленные в скобках после имени процедуры, называются формальными. Их назначение — указать количество и тип переменных, с помощью которых будет осуществляться обмен информацией между подпрограммой и основной программой. Формальные параметы определяют место подстановки фактических параметров, над которыми и производятся действие.
Через параметры-значения в подпрограмму поступает входная информация. Перед ними слово Var не ставится и идет передача по значению, то есть передается только копия значений этих параметров.
Через параметры- переменные из подпрограммы в основную программу передаются результаты. Перед параметрами-переменными ставится служебное слово Var.
Вызов процедуры
Процедура не может выполнится сама, ее необходимо вызвать. Чтобы вызвать процедуру, нужно указать ее имя и список фактические параметров.
Общий вид вызова процедуры:
Фактические параметры — это параметры, которые передаются процедуре при обращении к ней. При вызове процедуры ее формальные параметры заменяются фактическими. Число и тип формальных и фактических параметров должны совпадать с точностью до их следования. Имя фактического параметра никак не связано с именем соответствующего формального параметра.
Пример 1. Оформить в виде процедуры алгоритм вычисления степени y = x n с натуральным показателем n.
procedure degree(x,y: integer; var st: longint); var i:integer; begin st :=1; For i:=1 to y do st:= st * x; end;
Процедура имеет три параметра: первый параметр — основание степени, второй — показатель степени, а третий — это результат. Поэтому первые два параметра — это параметры значения, а третий — это параметр-переменная и перед ним надо написать слово Var.
В программе процедуры и функции описывается в разделе описаний основной программы после раздела описания переменных. Вся программа для нашей задачи имеет следующий вид:
program primer1; var a, n: integer; s:longint; procedure degree(x,y: integer; var st: longint); var i:integer; begin st :=1; For i:=1 to y do st:= st * x; end; begin writeln(‘Введите два числа’); readln(a, n); degree(a,n,s); writeln(‘Результат: ‘, s); end.
Процедура вызывается по имени. В нашем примере, фактические параметры а, n и s передают свои значения соответствующим формальным параметрам x, y и st. После завершения работы процедуры переменные a и n имеют те же значения, что и при вызове, а s получает новое значение.
Вы научились определять и вызывать пользовательские процедуры. На следующем уроке рассмотрим пользовательские функции.
Источник: gospodaretsva.com