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


Лекция 27 Тема №6

Содержание

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

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

Слайд 1АлгоритмизациЯ и программированиЕ
Лекция 27 Тема №6
Процедуры и функции

АлгоритмизациЯ и программированиЕ Лекция 27  Тема №6Процедуры и функции

Слайд 2Подпрограммой в Паскале называется особым образом оформленный фрагмент программы, имеющий

собственное имя.
Подпрограмма — это некоторый вспомогательный алгоритм, многократно использующийся в

основном алгоритме с различными значениями некоторых входящих величин, называемых параметрами.
Упоминание этого имени приводит к активизации подпрограммы и называется ее вызовом.
Сразу после активизации подпрограммы начинают выполняться входящие в нее операторы, после выполнения последнего из них управление возвращается обратно в основную программу и выполняются операторы, стоящие непосредственно за оператором вызова подпрограммы.

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

Подпрограммой в Паскале называется особым образом оформленный фрагмент программы, имеющий собственное имя.Подпрограмма — это некоторый вспомогательный алгоритм,

Слайд 3Подпрограммы
Подпрограмма – это одно из базовых средств описания действий, которое

позволяет реализовывать вспомогательные алгоритмы.
Выделяют два вида подпрограмм:
процедуры
функции
В файле программы (или

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

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

Слайд 4Назначение подпрограмм
Основа для реализации структурного подхода
Средство для уменьшения сложности структуры

программы
Средство для экономии памяти:
рациональная запись кода и его использование при

вызовах подпрограмм (подпрограмма существует в единичных экземплярах, а вызываться может многократно);
динамическое выделение памяти под хранение значений объектов данных, описанных в подпрограмме (как только подпрограмма начинает работу – память выделяется, как заканчивает - освобождается)
Назначение подпрограммОснова для реализации структурного подходаСредство для уменьшения сложности структуры программыСредство для экономии памяти:рациональная запись кода и

Слайд 5Область действия (видимости)
Блок в общем случае обеспечивает выполнение двух основных

функции:
резервирование области памяти для создания в ней основных объектов данных;
введение

новой области видимости (действия) идентификаторов описанных объектов данных.
Область видимости (действия) – это часть программы, на которую распространяются сделанные описания, т.е. это где видны, а следовательно, могут быть использованы идентификаторы объектов описания.

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

Слайд 6Область действия (видимости)
Областью действия описания любого программного объекта (переменной, типа,

константы и т.д.) является тот блок, в котором расположено это

описание.
Если данный блок вложен в другой (подпрограмма), то присутствующие в нем описания являются локальными. Они действуют только в пределах внутреннего блока.
Описания сделанные во внешнем блоке видны в любом внутреннем блоке и их область видимости глобальна (по отношению к внутреннему блоку).
Область действия (видимости)Областью действия описания любого программного объекта (переменной, типа, константы и т.д.) является тот блок, в

Слайд 7Время жизни объектов данных
При передачи управления в данный блок создаются

все описанные в нем объекты данных, а затем выполняются последовательность

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

Слайд 8Виды переменных
Глобальными называются переменные, которые описаны в главной программе. Время

жизни глобальных переменных — с начала программы и до ее

завершения. Располагаются в сегменте данных.
В подпрограммах описываются локальные переменные. Они располагаются в сегменте стека, причем распределение памяти происходит в момент вызова подпрограммы, а ее освобождение — по завершении подпрограммы.
Локальные переменные автоматически не обнуляются.
Виды переменныхГлобальными называются переменные, которые описаны в главной программе. Время жизни глобальных переменных — с начала программы

Слайд 9Структура программы
Главная
Глобальные переменные
Подпрограмма А
Подпрограмма В
Подпрограмма С
Локальные переменные
begin
end
begin
end
...
...
Вызов А ... Вызов

А ... Вызов В ...

Структура программыГлавнаяГлобальные переменныеПодпрограмма АПодпрограмма ВПодпрограмма СЛокальные переменныеbeginendbeginend......Вызов А ... Вызов А ... Вызов В ...

Слайд 10PROGRAM Prog;
Var V1: integer;
Procedure A;
Var V2: integer;


Begin … end;
Procedure B;
Var V3: integer;

Procedure B1;
Var V4: integer;
Begin … end;
Begin … end;
Var V5: integer;
BEGIN … END.

PROGRAM Prog;
Var V1: integer;












Var V5: integer;

Procedure A;
Var V2: integer;

Procedure B;
Var V3: integer;





Procedure B1;
Var V4: integer;

PROGRAM Prog;Var V1: integer;Procedure A;   Var V2: integer; Begin … end; Procedure B;  Var

Слайд 11Павловская Т.А. (СПбГУИТМО)
Вызов
Для того чтобы подпрограмма выполнилась, ее надо вызвать.



Вызов подпрограммы записывается в том месте программы, где требуется получить

результаты работы.

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

inc(i); writeln(a, b, c); { вызовы процедур }

y := sin(x) + 1; { вызов функции }
Павловская Т.А. (СПбГУИТМО)ВызовДля того чтобы подпрограмма выполнилась, ее надо вызвать. Вызов подпрограммы записывается в том месте программы,

Слайд 12Функции
Функции представляют собой группу операторов, в результате выполнения которых вычисляется

одно значение, присваиваемое имени функции.
Описание функции включает в себя следующие

разделы:
заголовок функции;
разделы описаний, являющихся локальными по отношению к описываемой функции;
тело функции.
ФункцииФункции представляют собой группу операторов, в результате выполнения которых вычисляется одно значение, присваиваемое имени функции.Описание функции включает

Слайд 13Формат описания функции:
Function F (q1:T1; q2:T2;…) : T;

типов, констант, описания вложенных процедур и функций>;
Begin
;
F:=;
End;
F-

имя функции;
qi- имена формальных параметров;
Ti- типы параметров;
Т – тип, возвращаемого функцией значения
Формат описания функции:Function F (q1:T1; q2:T2;…) : T;	;Begin;F:=;End;F- имя функции;  qi- имена формальных параметров;Ti- типы параметров;Т

Слайд 14Функции
Параметры, фигурирующие в описании подпрограммы называются формальными. Они задают форму

вычислений. В дальнейшем они заменяются конкретным значением от которого мы

хотим вычислить функцию.
Например, в математике: f(x):=3x-5
x - формальный параметр
Величину, для которой необходимо вычислить значение функции будем называть фактическим параметром.
F(5) a=7; F(a)
5 и a – фактические параметры.
ФункцииПараметры, фигурирующие в описании подпрограммы называются формальными. Они задают форму вычислений. В дальнейшем они заменяются конкретным значением

Слайд 15Функции
Список параметров и локальных описаний не обязательны. Если список параметров

отсутствует, то скобки после имени функции не ставятся.
Возвращаемое значение в

теле функции может присваиваться или имени функции или специальной предопределенной системной переменной Result, которую не нужно описывать, но которой можно пользоваться в теле функции.
ФункцииСписок параметров и локальных описаний не обязательны. Если список параметров отсутствует, то скобки после имени функции не

Слайд 16Функции
Использование переменной Result имеет одно принципиальное отличие от имени функции.

Имя функции – это не переменная. Оно может фигурировать только

в левой части оператора присваивания, и не может входить ни в какие выражения. А Result – это переменная.
ФункцииИспользование переменной Result имеет одно принципиальное отличие от имени функции. Имя функции – это не переменная. Оно

Слайд 17Вызов функции
Обращение к функции обычно осуществляется в правой части оператора

присваивания, указывая имя функции и фактические параметры в виде
A:=f(b1,b2,…);
где bi

– фактические параметры.
При этом, возвращаемое функцией значение, замещает в операторе имя вызванной функции.
Вызов функцииОбращение к функции обычно осуществляется в правой части оператора присваивания, указывая имя функции и фактические параметры

Слайд 18Function Max (x, y: real): Real;
Begin
If x>y Then

max: =x

Else
max:=y;
End;
или
Function Max (x, y: real): Real;
Begin
If x>y Then Result: =x
Else
Result: =y;
End;
Function Max (x, y: real): Real;Begin  If x>y Then max: =x

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

несколько результатов, либо не одного.
Описание процедуры включает в себя:
заголовок процедуры
раздел

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

Слайд 20Формат описания процедуры:
Procedure H (q1:t1; var q2:t2;…);

констант, описания вложенных процедур и функций>;
Begin
;
End;
H – имя

процедуры;
qi- имена формальных параметров;
Ti- типы параметров;

Формат описания процедуры:Procedure H (q1:t1; var q2:t2;…);;Begin;End;H – имя процедуры;qi- имена формальных параметров;Ti- типы параметров;

Слайд 21Вызов процедуры
Вызов процедуры осуществляется с помощью указания имени процедуры

и списка фактических параметров.
H(b1,b2,…);
Если процедура и основная программа связаны с

помощью глобальных переменных, то процедура может быть организована и без параметров.
Вызов процедуры 	Вызов процедуры осуществляется с помощью указания имени процедуры и списка фактических параметров.	H(b1,b2,…);	Если процедура и основная

Слайд 22Примеры
Program my1;
Var p1,p2,p5: real; p3:char; p4:integer;
Procedure SP(a: Real; b: Integer;

с: Char);
Begin if c=‘/’ then writeln(a/b)
else writeln(a-b)
End;
Function

F(a: Real; b: Real): Real;
Begin if a>b then f:=a else f:=b
End;
BEGIN
readln(p1,p2,p3,p4);
SP(p1,p4,p3);
p5:=f (p1,p2)
SP(p5,p4,p3);
END.
ПримерыProgram my1;Var p1,p2,p5: real; p3:char; p4:integer;Procedure SP(a: Real; b: Integer; с: Char);	Begin if c=‘/’ then writeln(a/b)

Слайд 23Перекрытие идентификаторов
Имена локальных переменных могут перекрывать область видимости одноименных глобальных

переменных. При этом все операции с объектом данных под данным

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

Слайд 24Опережающее описание подпрограмм
Разделы описаний в блоке могут произвольно располагаться много

раз открываться. Но при этом в вышележащих описаниях нельзя использовать

или ссылаться на описания сделанные ниже.
При описании процедур и функций иногда возникает необходимость в закольцованных вызовах . При этом как минимум две подпрограммы в своем теле могут вызывать друг друга.
Для развязки подобных вызовов можно использовать опережающее описание заголовка одной из этих подпрограмм при помощи ключевого слова (директивы) FORWARD.
Опережающее описание подпрограммРазделы описаний в блоке могут произвольно располагаться много раз открываться. Но при этом в вышележащих

Слайд 25Пример опережающего описания
Procedure B: forward;
Procedure A;
Begin
B
End;
Procedure B;
Begin
A
End;

Пример опережающего описанияProcedure B: forward; Procedure A;Begin	BEnd;Procedure B;Begin	AEnd;

Слайд 26Виды параметров
При вызове подпрограммы ей можно передавать и из нее

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

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

Виды параметровПри вызове подпрограммы ей можно передавать и из нее можно получать значения через параметры-аргументы.Параметры, указываемые в

Слайд 27При подстановки фактических параметров на место формальных должны соблюдаться следующие

правила их соответствия:
по количеству указываемых параметров;
по порядку их перечисления;
по типу;
функциональному

соответствию.


При подстановки фактических параметров на место формальных должны соблюдаться следующие правила их соответствия:по количеству указываемых параметров;по порядку

Слайд 28Классификация параметров
По механизму передачи:
передача по значению (value);
передача по адресу (addr).
По

функциональному предназначению
только как входной параметр (in);
только как выходной параметр (out);
и

как входной и как выходной параметр (inout).

Классификация параметровПо механизму передачи:передача по значению (value);передача по адресу (addr).По функциональному предназначениютолько как входной параметр (in);только как

Слайд 29Способы передачи параметров
Теоретически возможны 6 способов передачи параметров:
value in
value out
value

inout
addr in
addr out
addr inout

Способы передачи параметровТеоретически возможны 6 способов передачи параметров:value invalue outvalue inoutaddr inaddr outaddr inout

Слайд 30Способы передачи параметров
В Object Pascal поддерживаются четыре способа передачи параметров:
value

in (передача по значению)
addr out (передача параметров как выходных параметров)
addr

inout (передача параметров как переменных)
addr in (передача параметров как констант)
Способы передачи параметровВ Object Pascal поддерживаются четыре способа передачи параметров:value in (передача по значению)addr out (передача параметров

Слайд 311. Передача по значению.
Параметры значения определяют исходные данные для работы

процедур и функций. В списке формальных параметров они описываются в

следующем виде:
procedure my1(q1:T1; q2:T2) или
procedure my2(q1,q2:T)
При вызове подпрограммы фактический параметр, может быть любым выражением, результат вычисления которого принадлежит тому же типу, что и формальный параметр.
1. Передача по значению.Параметры значения определяют исходные данные для работы процедур и функций. В списке формальных параметров

Слайд 32Передача по значению
При обращении к подпрограмме выражение вычисляется. В памяти

создаются временные переменные с именами q1 и q2, и в

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

Слайд 332. Передача параметров как переменных
Параметры переменные позволяют передавать в основную

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

помощью указания перед ними ключевого слова var. Например:
procedure my3 (var q1, q2:t1; var q3:t2) ;
2. Передача параметров как переменныхПараметры переменные позволяют передавать в основную программу измененные значения.Параметры переменные в списке формальных

Слайд 34Передача параметров как переменных
При обращении к подпрограмме фактические параметры должны

быть обязательно переменными, того же типа, что и формальные параметры.
В

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

Слайд 353. Передача параметров как констант
Передача параметра как константы осуществляется заданием

перед его описанием ключевого слова const.
procedure my4 (const q1:t1);
Параметры константы

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

3. Передача параметров как константПередача параметра как константы осуществляется заданием перед его описанием ключевого слова const.procedure my4

Слайд 364. Передача параметров как выходных параметров
Выходные параметры описываются с помощью

зарезервированного слова out.
procedure my5(out q1:t1);
Выходные параметры по механизму передачи похожи

на параметры переменные, но при этом в подпрограмму не передается начальное значение этого параметра, т.е. память, занимаемая соответствующей переменной, указанной при вызове подпрограмме на месте q1, будет очищена при вызове подпрограммы.
4. Передача параметров как выходных параметровВыходные параметры описываются с помощью зарезервированного слова out.procedure my5(out q1:t1);Выходные параметры по

Слайд 37Перегрузка подпрограмм
Можно определить в одной и той же области видимости

несколько подпрограмм с одинаковыми именами, но различными по числу и

типу параметрами.
Для этого в описании заголовка каждой из этих подпрограмм необходимо указать директиву (ключевое слово) OVERLOAD.
При вызове компилятор проанализирует передаваемые параметры, их число и тип и вызовет ту из них, которая подойдет по данным параметрам.

procedure my_1 (i:integer); overload;

Перегрузка подпрограммМожно определить в одной и той же области видимости несколько подпрограмм с одинаковыми именами, но различными

Слайд 38Пример использования функции
program Podpr1;

uses
SysUtils;
var x,y,z, max3: integer;

Function Max2(a,b:integer):integer;
begin

if a>b then

max2:=a
else max2:=b;
end;

Пример использования функцииprogram Podpr1;uses SysUtils;var x,y,z, max3: integer;Function Max2(a,b:integer):integer; begin    if a>b then

Слайд 39begin
writeln ('POISK max in 3 numbers');
writeln ('Your 3

numbers, please:');
readln (x,y,z);
max3:=max2(max2(x,y),z);
writeln ('the max is ',

max3);
readln;
end.
begin writeln ('POISK max in 3 numbers'); writeln ('Your 3 numbers, please:'); readln (x,y,z); max3:=max2(max2(x,y),z); writeln ('the

Слайд 40Пример использования процедуры
program Podpr2;
uses SysUtils;
var x,y,z: integer;
procedure Sort2(var a,b:integer);
var

c:integer;
begin
if a>b then

begin
c:=a;
a:=b;
b:=c;
end;
end;


begin
writeln ('Sortirovka 3 numbers');
writeln ('Your 3 numbers, please:');
readln (x,y,z);
sort2 (x,y);
sort2 (y,z);
sort2 (x,y);
writeln ('Result of sort is ', x:10, y:10,z:10);
readln;
end.

Пример использования процедурыprogram Podpr2;uses SysUtils;var x,y,z: integer;procedure Sort2(var a,b:integer); var c:integer; begin    if a>b

Слайд 41Процедуры передачи управления
break — завершает выполнение цикла, внутри которого записана;
continue

— выполняет переход к следующей итерации цикла;
exit — выходит из

программы или подпрограммы, внутри которой записана;
halt — немедленно завершает выполнение программы.
Процедуры передачи управленияbreak — завершает выполнение цикла, внутри которого записана;continue — выполняет переход к следующей итерации цикла;exit

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

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

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

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

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


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

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