Функции и процедуры Функции и процедуры Инструмент структурирования программ Два типа подпрограмм Описание Локальные и глобал

Содержание

Слайд 2

Процедурно-ориентированные языки имеют средства структурирования
программ.
Структурирование предполагает расчленение программы на относительно
самостоятельные

Процедурно-ориентированные языки имеют средства структурирования программ. Структурирование предполагает расчленение программы на относительно
фрагменты
Нисходящее программирование – метод конструирования сложных программ

Слайд 3

Отличие функции от процедуры
Процедура может возвращать значение обработки (вычислений), если параметр объявляется

Отличие функции от процедуры Процедура может возвращать значение обработки (вычислений), если параметр
с атрибутом VAR как параметр-переменная. Процедура на выходе может выдавать несколько значений или ни одного.
Вызов функции можно использовать в списках параметров оператора WRITE (невозможно для процедуры).
В теле функции результат вычислений обязательно присваивается переменной, имя которой совпадает с именем функции.

Слайд 4

Описание подпрограммы

После раздела переменных и констант и
до начала основной части

Структура

<заголовок функции(процедуры)>
<раздел

Описание подпрограммы После раздела переменных и констант и до начала основной части
описаний переменных и констант>
begin
<операторы>
end;

Переменные локальные и глобальные

Структура подпрограммы такая же как основной программы

Слайд 5

Глобальные переменные объявляются в
основной программе. Доступны основной и всем ее подпрограммам.
Локальные

Глобальные переменные объявляются в основной программе. Доступны основной и всем ее подпрограммам.
объявлены внутри подпрограммы
и доступны только ей самой.
Одноименные глобальные и локальные переменные – разные переменные.
Обращение к таким переменным в теле подпрограммы трактуется как к локальным (глобальные не доступны).

Слайд 6

FUNCTION<имя>(<параметры>):<тип ф-ции>

FUNCTION beta (a, b : real; c : integer) : real

PROCEDURE<имя>(<параметры>)

PROCEDURE

FUNCTION ( ): FUNCTION beta (a, b : real; c : integer)
vsp (x, y: integer; var m, n: real)

Формальные параметры

Слайд 7

Вызов процедуры (функции)

Указание имени и в круглых скобках списка
фактических параметров

Вызов процедуры (функции) Указание имени и в круглых скобках списка фактических параметров

Слайд 8

Количество и тип фактических параметров
должны совпадать с количеством и типом
формальных параметров

d:=beta(3,

Количество и тип фактических параметров должны совпадать с количеством и типом формальных
4, 7.5)

3,4,7.5 фактические параметры (константы), перечисляются через запятую

Слайд 10

const
a:integer=5; b:integer=7 ;
procedure udv (var c:integer;d:integer);
begin
c:=2*c;
d:=2*d;
writeln('udvoennoe:',c:5,d:5);
end;
begin
writeln ('

const a:integer=5; b:integer=7 ; procedure udv (var c:integer;d:integer); begin c:=2*c; d:=2*d; writeln('udvoennoe:',c:5,d:5);
Ishodnoe:',a:5,b:5);
udv (a,b);
writeln(' rezultat:',a:5,b:5); readln
end.

Слайд 11

var а,b:integer;
function max(i,j:integer):integer;
begin
if i>j then max:=i else max:=j
end;
begin
writeln('Vvedite a,b');

var а,b:integer; function max(i,j:integer):integer; begin if i>j then max:=i else max:=j end;
readln(a,b);
writeln('Maxim=',max(a,b));
readln;
end.

Слайд 12

program Factorials; {Ctrl+Break Enter}
var n:integer;
Function Factorial (k:integer):longint;
var i: integer; f: longint;

program Factorials; {Ctrl+Break Enter} var n:integer; Function Factorial (k:integer):longint; var i: integer;
begin f:=1;
for i:=1 to k do f:=f*i;
factorial:=f; end;
begin
repeat
writeln('VVedite n'); readln(n);
if n<0 then writeln('Error')
else writeln(n,'!=',factorial(n));
until eof
end.

Слайд 13

Program sochet;
{C =n!/(m!*(n-m)!) }
uses CRT;
var n,m:integer; a,b,c,d: longint;
Function Factorial (k:integer):longint;
var

Program sochet; {C =n!/(m!*(n-m)!) } uses CRT; var n,m:integer; a,b,c,d: longint; Function
i: integer; f: longint;
begin
f:=1;
for I:=1 to k do f:=f*i;
factorial:=f;
end;

Лист1

Слайд 14

begin
Clrscr;
writeln('VVedite kol sochet iz n po m'); readln(n,m);
a:=Factorial(n);
b:=Factorial(m);
c:=Factorial(n-m);
d:=a div (b*c);
writeln('Kol

begin Clrscr; writeln('VVedite kol sochet iz n po m'); readln(n,m); a:=Factorial(n); b:=Factorial(m);
sochet iz',n:2,' po',m:2,' =',d:3);
readln;
end.

Лист2

Слайд 15

const raz=20;
var
n,m: integer;
massiv: array[1..raz,1..raz] of integer;
x,y: integer;
procedure massiv_out (l,k: integer);
var i,j:

const raz=20; var n,m: integer; massiv: array[1..raz,1..raz] of integer; x,y: integer; procedure
integer;
begin
for i:=1 to l do begin
for j:=1 to k do
write(massiv[i,j]:6);
writeln end;
end;

Лист1

Слайд 16

begin
writeln('Vvedite razmer massiva N x M');
readln(n,m);
for x:=1 to n do
for y:=1 to

begin writeln('Vvedite razmer massiva N x M'); readln(n,m); for x:=1 to n
m do
massiv[x,y]:=1;
massiv_out(n,m);
readln;
end.

Лист2

Слайд 17

Рекурсия

Процедура (функция) может обращаться к другой процедуре(функции).
Вызов функции из нее самой называется

Рекурсия Процедура (функция) может обращаться к другой процедуре(функции). Вызов функции из нее
рекурсией.
Recurrence – повторение или возвращение

Слайд 18

program Factorials;
var n:integer;
Function Factorial (n:integer):real;
begin
if n=0 then factorial:=1
else factorial:=n*factorial(n-1)

program Factorials; var n:integer; Function Factorial (n:integer):real; begin if n=0 then factorial:=1
end;
begin
repeat
writeln('VVedite n'); readln(n);
if n<0 then writeln('Error')
else writeln('n!=',factorial(n));
until eof
end.