В прошлом уроке мы разобрали один вид подпрограмм в Паскале - функции, а сегодня разберём второй - процедуры. Сегодня мы узнаем о том, как она описывается, как вызывается в основной части и другие связанные с ней вопросы. Продолжение ниже.
Процедуры - подпрограммы, которые не возвращают значение, являются отрезком программы для дальнейшего его использования.
Предлагаю рассмотреть структуру процедуры на примере, предложенном мною ниже:
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.
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.
Скачать: urok9.pas
Это абсолютно бредовая программа, которая производит некие операции с числами и служит лишь наглядным примером использования процедур и функций.
P.S. введя числа 12 и 22 я получил 34221156