Понятие подпрограмм. Подпрограммы в языке Паскаль.
Подпрограммой называется участок программы, оформленный определенным образом, к которому можно обращаться из разных точек программы любое число раз. При этом подпрограмма может решать каждый раз одну и ту же задачу с разными значениями исходных данных.
ГЛАВНАЯ
Подпрограмма
Подпрограмма – повторяющая группа операторов, оформленная в виде самостоятельной программной единицы.
Подпрограмма 1
ГЛАВНАЯ
Подпрограмма 2
Подпрограмма 3
В языке Pascal механизм подпрограмм реализуется в виде ПРОЦЕДУР ( PROCEDURE ) и ФУНКЦИЙ ( FUNCTION )
Подпрограмма
Процедура
Функция
Подпрограммы ПРОЦЕДУРЫ ( PROCEDURE )
Общий вид структуры подпрограммы
Program pr;
Var a,b:integer;
Рrосеdurе (формальные параметры);
VAR (описание локальных параметров, они могут быть или не быть)
begin
тело процедуры
end;
BEGIN
( Фактические параметры)
END.
Параметры
- Фактические – располагаются в головном модуле при вызове процедуры.
- Формальные – описываются в заголовке процедуры, к ним относятся входные и выходные параметры.
- Входные – это и параметры значений , описываются через запятую с указанием типа. При выходе из процедуры – не сохраняются.
- Выходные – это и параметры переменные , описываются после VAR через запятую, с указанием типа. При выходе из процедуры – сохраняются .
Пример
Составить программу сложения 2-х чисел
Program pr;
Var a,b,s:real;
Procedure summa (x,y:real; var s:real);
Begin
S:=x+y;
End;
Begin
Writeln(‘сложить 2 числа’);
Summa(a,b,s) ;
Writeln(‘s=’,s);
End.
фактические
формальные
параметры-значений, входные, при выходе не сохраняются
параметры-переменные, выходные, при выходе сохраняются
Формальные и фактические параметры должны совпадать
по 3 признакам:
Вывести на экран 5 строк примерно такого текста:
Привет, Катя! Поздравляю тебя с новым годом!
Привет, Таня! Поздравляю тебя с новым годом!
Привет, Вася! Поздравляю тебя с новым годом!
Привет, Коля! Поздравляю тебя с новым годом!
Привет, Боря! Поздравляю тебя с новым годом!
В программе использовать процедуру для вывода текста.
program primer;
var s: string;
procedure ok;
begin
writeln (‘Привет’, s,’! Поздравляю тебя с новым годом! ’);
end;
begin
s:=‘Катя’;
ok;
s:=‘Таня’;
ok;
s:=‘Вася’;
ok ;
s:=‘Коля’;
ok ;
s:=‘Боря’;
ok;
end.
Подпрограммы ФУНКЦИИ ( FUNCTION )
Функции
Функция - подпрограмма, имеющая единственный результат, записываемый в ячейку памяти, имя которой совпадает с именем функции.
Перечень формальных параметров и их типов
function (): ;
begin
;
:=
end;
Тип результата
В блоке функции обязательно должен присутствовать оператор :=.
!
Для вызова функции её имя со списком параметров может быть в любом месте программы(в выражении, в условиях, в операторе write) .
y then max:=x else max:=y; end; begin readln (a, b, c, d); f:=max(max(a, b),max(c, d)); writeln ('f=', f); end. Описание переменных Раздел описания Под- программы Раздел операторов главной программы " width="640"
Функция поиска максимального из 2-х
program n_20;
var a, b, c, d, f: integer;
Function max(x,y:integer):integer;
begin
if xy then max:=x
else max:=y;
end;
begin
readln (a, b, c, d);
f:=max(max(a, b),max(c, d));
writeln ('f=', f);
end.
Описание переменных
Раздел
описания
Под-
программы
Раздел операторов
главной
программы
y x max:=y max:=x min:=y min:=x Выход (max) Выход (min) " width="640"
Найти , используя подпрограммы нахождения большего и меньшего из двух чисел.
Вспомогательные алгоритмы
Вход (x, y)
Вход (x, y)
да
нет
нет
да
xy
x
max:=y
max:=x
min:=y
min:=x
Выход
(max)
Выход
(min)
y then max:=x else max:=y end; function min(x, y: real): real; begin if x end; begin writeln(‘a=’); readln (a); writeln(‘b=’); readln (b); writeln(‘c=’); readln (c); m:=(2*max(a, b)+min(a+3,b))/min(c,a-b); writeln (‘max= ', m); end. начало Ввод a, b, c Вывод m конец " width="640"
program pr2;
var a, b, c, m: real;
function max(x, y: real): real;
begin
if xy then max:=x else max:=y
end;
function min(x, y: real): real;
begin
if x
end;
begin
writeln(‘a=’); readln (a);
writeln(‘b=’); readln (b);
writeln(‘c=’); readln (c);
m:=(2*max(a, b)+min(a+3,b))/min(c,a-b);
writeln (‘max= ', m);
end.
начало
Ввод
a, b, c
Вывод
m
конец
Требуется найти разность факториалов F=M!-K!
PROGRAM 4;
VAR F,M,K:1NTEGER;
FUNCTION FACT ( N :INTEGER):INTEGER;
VAR P, I:INTEGER;
BEGIN
P:=1;
FOR I =2 TO N DO
P=P*I;
FACT:=P ;
END;
BEGIN
READ(M,K);
F:= FACT ( M ) - FACT ( K );
WRITE (F)
END.
М=4
К=3
Опорный конспект
Запись вспомогательных алгоритмов в языках программирования осуществляется с помощью подпрограмм .
Подпрограмма
Функция
Процедура
Подпрограмма, имеющая единственный результат, записываемый в ячейку памяти, имя которой совпадает с именем функции.
Подпрограмма, имеющая произвольное количество входных и выходных данных.
В языке Паскаль подпрограммы реализуются в виде
процедур и функций.
Спасибо за внимание