Разделы презентаций


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

Содержание

Использование процедур и функций позволяет сделать программу более компактной и понятной с точки зрения визуального восприятия текста и уменьшить область памяти, занимаемою программой. Упоминание в тексте программы имени процедуры или функции

Слайды и текст этой презентации

Слайд 1ПРОЦЕДУРЫ И ФУНКЦИИ
При разработке алгоритма программы часто возникает ситуация, когда

отдельные ее фрагменты неоднократно повторяются в различных ее частях. Эти

фрагменты полностью идентичны с точки зрения написания операторов и различаются лишь фактическими значениями участвующих в вычислениях данных.
Следовательно, эти фрагменты программы являются логически обособленными и их можно оформить в виде особых относительно самостоятельных программных единиц, обладающих собственным именем, – процедур или функций
ПРОЦЕДУРЫ И ФУНКЦИИПри разработке алгоритма программы часто возникает ситуация, когда отдельные ее фрагменты неоднократно повторяются в различных

Слайд 2
Использование процедур и функций позволяет сделать программу более компактной и

понятной с точки зрения визуального восприятия текста и уменьшить область

памяти, занимаемою программой. Упоминание в тексте программы имени процедуры или функции называется вызовом процедуры (функции).
Использование процедур и функций позволяет сделать программу более компактной и понятной с точки зрения визуального восприятия текста

Слайд 3Локализация имен
Вызов блока происходит при обращении к нему по имени.


Любое имя в Паскале должно быть предварительно описано. Следовательно, все,

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

Слайд 4Локальные и глобальные переменные





Procedure B11
Var v5
Procedure

B1
Var v4
Procedure B
Var v3
Procedure A
Var

v2

Program
Var v1

BEGIN ……………………..END.










Локальные и глобальные переменные Procedure  B11Var  v5Procedure  B1Var  v4Procedure  BVar  v3Procedure

Слайд 5Все имена, описанные внутри блока, локализуются в нем, т.е. невидимы

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

блокам А, В, но нельзя вызвать какую либо из процедур, находящихся внутри них (В1). Это относится не только к именам блоков, но и к любым именам, объявленным в них.
При входе в блок нижнего уровня становятся доступными не только имена, локализованные в нем, и имена верхних уровней. Из блока В11 можно обратиться к блокам А, В, В1 и использовать имена, объявленные в них и в основной программе – V1,V3,V4.
Все имена, описанные внутри блока, локализуются в нем, т.е. невидимы снаружи. В приведенном примере из основной программы

Слайд 6Program.............
Var V1 .....
Procedure A;
Var

V2 .......
..............
End {A}

Procedure B;
Var V3 .......
Procedure B1;
Var V4 .......
Procedure B11;
Var V5 .......
................
Из блока В11 доступны четыре переменные V1, V3, V4, V5.
Из блока В1 доступны - V1, V3, V4.
Из блока В доступны - V1, V3.
Из блока А доступны - V1, V2.
Из основной программы – только V1.
Program............. Var V1 .....  Procedure A;   Var V2 .......   ..............

Слайд 7Имена, локализованные в блоке, могут совпадать с глобальными именами. В

этом случае, локальное имя «накрывает» глобальное имя внутри блока и

делает его недоступным.
Var
i:integer;
Procedure P;
Var
i:integer;
begin
writeln(i);
end {P};
BEGIN
i:=1;
P;
END.
Имена, локализованные в блоке, могут совпадать с глобальными именами. В этом случае, локальное имя «накрывает» глобальное имя

Слайд 8Результат действия этой программы непредсказуем, т.к. локальное имя «i» накрывает

глобальное «i» и в самой процедуре Р оно только объявлено,

но ему не присвоено никакого значения.
Если убрать из процедуры Р описание
i:integer;
то программа выведет на экран значение глобальной переменной i=1.
Одноименные локальные и глобальные переменные – это разные переменные.
Результат действия этой программы непредсказуем, т.к. локальное имя «i» накрывает глобальное «i» и в самой процедуре Р

Слайд 9 Синтаксис написания заголовка блока следующий –
Procedure [(

формальных параметров>)]
Function [()]:
Список формальных параметров может

быть опущен. Если же формальные параметры присутствуют, то должен быть указан их тип.
Function ABC(a:integer; b:real): real;
или
Function ABC1(a, b:real): real;

В пределах блока список формальных параметров является как бы расширением раздела описаний данного блока.
Синтаксис написания заголовка блока следующий –Procedure [()]Function  [()]: 	Список формальных параметров может быть опущен.

Слайд 10Допустим, что в основной программе мы дважды обращаемся из разных

мест к функции
ABC(a:integer; b:real): real.
Вызовы имеют

вид
ABC(s,t) и
ABC(u,r) .
Это означает, что при первом обращении формальные параметры a, b замещаются фактическими переменными s, t, и при втором обращении - u, r.
Это замещение происходит в заголовке функции момент обращения к ней.
Допустим, что в основной программе мы дважды обращаемся из разных мест к функции  ABC(a:integer; b:real): real.

Слайд 11
ABC(a:integer; b:real): real.
Вызовы имеют вид
ABC( s, t )

и

ABC( u, r )

ABC(a:integer; b:real): real. 				Вызовы имеют вид 	ABC( s, t )  и

Слайд 12
Рассмотрим операцию возведения в степень


Рассмотрим операцию возведения в степень

Слайд 13Function Power(a,b:real):real
Program PowerDen
Var
x,y:real;
{------------------}
Function Power(a,b:real):real;

Begin {Power}

Power:= exp(b*ln(a));
End {Power};
{------------------}
BEGIN {main}
readln(x,y);
writelh(‘Power=’, Power(x,y));
END.
Function Power(a,b:real):realProgram PowerDen Var  x,y:real; {------------------} Function Power(a,b:real):real;   Begin {Power}

Слайд 14Procedure Power1(var a,b,c:real);
Program PowerDen1;
Var
x,y,s:real;
{------------------}
Procedure Power1(var

a,b,c:real);
Begin {Power1}

c:= exp(b*ln(a));
End {Power1};
{------------------}
BEGIN {main}
readln(x,y);
Power1(x,y,s);
Writelh(‘Power=’, s);
END.
Procedure  Power1(var a,b,c:real);Program PowerDen1; Var  x,y,s:real; {------------------} Procedure Power1(var a,b,c:real);   Begin {Power1}

Слайд 15Program PowerDen2;
Var
x,y,c:real; {c – глобальная переменная}
{------------------}

Procedure Power2( a,b:real);
Begin {Power1}

c:= exp(b*ln(a));
End {Power1};
{------------------}
BEGIN {main}
readln(x,y);
Power2(x,y);
Writelh(‘Power=’, c);
END.

Procedure Power2(var a,b,c:real);

Program PowerDen2; Var  x,y,c:real; {c – глобальная переменная} {------------------} Procedure Power2( a,b:real);   Begin {Power1}

Слайд 16При работе с функциями результат вычислений внутри самой функции присваивается

идентификатору функции. В данном примере - это Power.
В варианте

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

Слайд 17Параметр-переменная и параметр-значение.
Существует два способа задания параметров в блоке: параметр-переменная

и параметр-значение.
Procedure P1(a,b,c : real);
Procedure P2(var a,b :

real; c : real);
В первом случае все параметры объявлены как параметры-значения, а во втором - a,b объявлены как параметры-переменные.
Вариант объявления переменной существенен только для вызывающей программы.
Параметр-переменная и параметр-значение.Существует два способа задания параметров в блоке: параметр-переменная и параметр-значение. Procedure P1(a,b,c : real); Procedure

Слайд 18
Если формальный параметр объявлен как параметр-переменная, то при вызове ему

должен соответствовать фактический параметр в виде переменой того же типа.


Если формальный параметр объявлен как параметр-значение, то при вызове ему может соответствовать произвольное выражение.
Разница в этих двух вариантах объявления параметров заключается в механизме замещения формальных параметров фактическими параметрами.
Если формальный параметр объявлен как параметр-переменная, то при вызове ему должен соответствовать фактический параметр в виде переменой

Слайд 19Если формальный параметр объявлен как параметр-значение, то перед вызовом блока

это значение вычисляется, полученный результат помещается во временную память и

передается блоку. Даже если в качестве фактического параметра указана просто переменная или константа, в блок передается только ее копия.
Если формальный параметр объявлен как параметр-переменная, то при вызове блока передается сама переменная, а не копия.
Любые возможные изменения параметра-значения в блоке никак не скажутся на вызывающей программе, а при использовании параметра-переменной эти изменения передадутся в вызывающую программу, т.к. приводят к изменению фактической переменной вызывающей программы.
Если формальный параметр объявлен как параметр-значение, то перед вызовом блока это значение вычисляется, полученный результат помещается во

Слайд 20Function Power(a,b:real):real
Program PowerDen
Var
x,y,z:real;
{------------------}
Function Power(var a,b,c:real):real;

Begin {Power}

Power:= exp(b*ln(a));
c:=a+10;
End {Power};
{------------------}
BEGIN {main}
readln(x,y);
writelh(‘Power=’, Power(x,y,z));
END.
Function Power(a,b:real):realProgram PowerDen Var  x,y,z:real; {------------------} Function Power(var a,b,c:real):real;   Begin {Power}

Слайд 21Program Proba;
………………
a:=5;
b:=7;
{-------------}
Procedure Pr1(var a

: integer; b : integer)
begin{Pr1}

a:=a+a;
b:=b+b;
writeln('удвоение', a:5, b:5);
end{Pr1};
{-------------}
BEGIN
Writeln('исходное', a:5, b:5);
Pr1(a,b);
writeln('результат', a:5, b:5);
END.
Исходное 5 7
Удвоение 10 14
Результат 10 7

Program Proba;………………  a:=5;  b:=7; {-------------} Procedure Pr1(var a : integer; b : integer)

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


Другой способ передачи данных – через глобальные переменные. Но при

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

Слайд 23Параметры-массивы и параметры-строки.
Существует различие в объявлении формальных параметров блока в

заголовочном списке и в разделе описаний блока. Через список можно

объявлять только стандартный или ранее объявленный тип. Объявление
Procedure SS(a:array [1..10] of real);
неверно!
Следует сначала объявить переменную Mas как массив
Type
Mas=array [1..10] of real;
затем в списке формальных переменных объявить параметр a как тип Mas.
Procedure SS(a : Mas);
Параметры-массивы и параметры-строки.Существует различие в объявлении формальных параметров блока в заголовочном списке и в разделе описаний блока.

Слайд 24
При использовании в качестве формального параметра символьной строки следует сначала

объявить тип строки, (поскольку строка является своего рода массивом символов).
Type
intype

= string [15];
outtype = string [30];
Function PP(s1 : intype) : outtype;


При использовании в качестве формального параметра символьной строки следует сначала объявить тип строки, (поскольку строка является своего

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика