Подпрограммы
10 класс
Цель урока:
- изучить понятие «подпрограмма»;
- научится описывать процедуры и функции;
- разобрать примеры задач;
- закрепить изученный материал на практике.
- Подпрограмма (вспомогательный алгоритм)– именованная, логически заключенная группа операторов языка, которую можно вызвать для выполнения любое количество раз из различных мест программы.
- Существуют два вида подпрограмм: процедуры и функции .
- Процедуры и функции помещаются в раздел описаний программы. Для обмена информацией между процедурами и функциями и другими блоками программы существует механизм входных и выходных параметров .
- Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных данных. Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными , а те, что используются при ее вызове - фактическими .
Процесс работы подпрограмм
Объявление переменных
- Глобальные переменные - переменные, объявленные в основной программе, доступны всем операторам программы, а так же операторам процедур и функций.
- Локальные переменные - переменные, объявленные в процедуре или функции. Они доступны только операторам процедур или функций .
Описание и вызов процедуры
Procedure [(список формальных параметров)];
(список фактических параметров)
Var :
Описание и вызов функции
Function [(список формальных параметров)] : ;
(список фактических параметров)
:
y then m:=x else m:=y; if ab then max:=a else max:=b; end; end ; if ab then max:=a else max:=b; begin MaxNumber := max; begin write(‘Введите x,y '); end ; write('Введите x,y '); readln(x,y); begin readln(x,y); MaxNumber(x,y,m); write('Введите x,y '); MaxNumber; readln(x,y); writeln('m=',m); writeln('m=',m); m := MaxNumber(x,y); end . end. n := x+y; writeln('m=',m,'n=',n); end . " width="640"
Примеры:
Через глобальные переменные
var x,y,m: integer;
var x,y,m,n: integer;
(без параметров)
var x,y,m: integer;
procedure MaxNumber(a,b: integer; var max: integer);
function MaxNumber(a,b: integer): integer;
begin
procedure MaxNumber; begin
var max: integer;
begin
if xy then m:=x else m:=y;
if ab then max:=a else max:=b;
end;
end ;
if ab then max:=a else max:=b;
begin
MaxNumber := max;
begin
write(‘Введите x,y ');
end ;
write('Введите x,y ');
readln(x,y);
begin
readln(x,y);
MaxNumber(x,y,m);
write('Введите x,y ');
MaxNumber;
readln(x,y);
writeln('m=',m);
writeln('m=',m);
m := MaxNumber(x,y);
end .
end.
n := x+y;
writeln('m=',m,'n=',n);
end .
Задания
- Вычислите функцию: y=sqrt (a)+a
- Вычислите функцию:
- Вычислить площадь правильного шестиугольника со стороной а , используя подпрограмму вычисления площади треугольника.
- Написать процедуру для нахождения степени числа и вычислить значение выражения: х 5 + х 4 +х 8 .
Проверь себя!
program z2;
var n,x,s: real;
i:integer;
function fun(a:real):real;
var y:real;
begin
y:=a+sin (a);
fun:=y;
end ;
begin
s:=0;
for i:=1 to 3 do begin
write('n='); readln(n);
x:=fun(n) /3 ;
s:=s+x;
end ;
writeln(' s =', s :3:5);
readln;
end .
program z1;
var n,x: real;
function fun(a:real):real;
var y:real;
begin
y:=sqrt(a)+a;
fun:=y;
end ;
begin
write('n='); readln(n);
x:=fun(n);
writeln('x=',x:3:5);
readln;
end .
'); readln(a); writeln('S=',6*s(a):0:5); readln; end . " width="640"
Проверь себя!
program z4;
var x,s,sum:real; n:integer;
procedure st(x:real; n:integer; var s:real);
var i:integer;
begin
s:=1;
for i:=1 to n do
s:=s*x;
end;
begin
readln(x);
st(x,5,s); sum:=s;
st(x,4,s); sum:=sum+s;
st(x,8,s); sum:=sum+s;
writeln(sum:15:2);
end.
program z3;
var a:real;
function s(a:real):real;
begin
s:=a*a*sqrt(3)/4;
end ;
begin
write('A - ');
readln(a);
writeln('S=',6*s(a):0:5);
readln;
end .
Спасибо за внимание !!!