Главная » Pascal, Основы » Подпрограммы
Мар
18

Подпрограммы

Подпрограммы

Процедуры
Функции


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


Процедуры

Процедура — это независимо названная часть программы, которая предназначена для исполнения конкретных действий. Процедура состоит из заголовка и тела.
Формат записи

[sourcecode language=»pascal»]
Procedure <имя> (список формальных параметров);
{раздел описаний и объявлений
begin
{раздел операторов
end;
[/sourcecode]


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






Процедуры без параметров

Все переменные, которые используют в процедурах без параметров описываются в основной программе.
[sourcecode language=»pascal»]
Program konus;
const
p= 3.14;
var
r,x,h,v: real;
procedure Input Date;
begin
write(‘v=’);
readln(v);
write(‘h=’);
readln(h);
end;
procedure ykazatel;
begin
v:= p*sqr(r)*h/3;
end;
procedure output day;
begin
writeln(‘v=’,x);
end;
begin
input date;
ykazatel;
outputdate;
end;
end.
[/sourcecode]
Процедуры с параметрами

В процедуре можно оглашать константи, переменные, другие процедуры и функции оглашенные внутри в процедуре называются локальными, по отношению к данной процедуре. Локальные переменные недоступные за пределами данной процедуры; переменные, которые выполняются с локальными переменными, не влияют на значение переменных с такими самыми именами, которые описаны за пределами данной процедуры. Переменные, которые используются в процедуре, но описанные за ней называются глобальными по отношению к данной процедуре. Любые переменные значений глобальных переменных внутри процедуры, меняют значение этих переменных за процедурой.
[sourcecode language=»pascal»]
Program loka;
var
a,b: integer;
procedure local;
var
a,x: char;
begin
a:= ‘:';
x:= ‘?';
b:= b+1;
end;
begin
a:= 0;
b:= 100;
local;
writeln(‘a=’,a,’b=’,b);
end.
[/sourcecode]
Параметры-значения и параметры-переменные

После заголовка процедуры в круглых скобках могут указываться переменные и их типы, с помощью которых в процедуру передаются данные, такие переменные называются Параметры-значения .
[sourcecode language=»pascal»]
Procedure <имя> (переменная: тип переменной);
[/sourcecode]


Переменные, которые описанные в заголовке процедуры называются формальными параметрами. Переменные, которые указываются в указателе вызова процедуры называются фактическими параметрами.
[sourcecode language=»pascal»]
Program parametru;
var
c,d: integer;
procedure param(a,b: integer);
var s: integer;
begin
s:= 0;
s:= a+b;
writeln(‘s=’,s);
end;
begin
c=10;
d=100;
param(c,d);
param(100,100);
end.
[/sourcecode]


Для того чтобы процедура смогла менять значение фактических параметров, нужно поменять способ передачи параметров процедуры. При этом перед именем формального параметра записывается служебное слово «var». Такие переменные называются параметры-переменные. С помощью них в главную программу передается результат действия указателей над ними.


Дано две тройки чисел (A1,B1,C1;A2,B2,C2). Найти S1=min(A1,B1,C1)+min(A2,B2,C2); S2=max(A1,B1,C1)+max(A2,B2,C2).
[sourcecode language=»pascal»]
Program x1;
var
A1,B1,C1,A2,B2,C2: integer;
min1,min2,max1,max2: integer;
S1,S2: integer;
procedure minmax(A,B,C: integer; var min,max: real);
begin
max:= A;
if max < B then max:= B;
if max < C then max:= C;
min:= A;
if min > B then min:= B;
if min > C then min:= C;
end;
begin
write(‘A1=’);
readln(A1);
write(‘B1=’);
Readln(B1);
minmax(A1,B1,C1,min1,max1);
minmax(A2,B2,C2,min2,max2);
S1:= min1+min2;
S2:= max1+max2;
writeln(‘S1=’,S1′);
writeln(‘S2=’,S2′);
end.
[/sourcecode]
Функции

Если результатом исполнения некоторой процедуры является одно скалярное значение, то эту процедуру желательно сформировать как функцию.
[sourcecode language=»pascal»]
Function <имя> (список формальных параметров):тип результата;
[/sourcecode]


Обращение к функции обязательно должно быть включенное в выражение операнд.
В теле функции обязательным есть оператор с помощью которого переменные, имя которой совпадает с именем функции присваивается значение результат исполнения функции.
Пример:
y=|x+1|+|x+2|
[sourcecode language=»pascal»]
Program SumMod;
var
x,y: real;
function Modul (x: real): real;
begin
if x<0 then x:=-x;
modul:= x;
end;
begin
writeln(vvedite x);
readln(x);
y:= modul(x+1)+ modul(x+2);
writeln(y:6:3);
end.
[/sourcecode]



Понравилась статья? Сделай приятно ее автору, поделись с друзьями:


Хотите получать обновления данного блога на EMail?

Введите адрес Почтового Ящика:




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