Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


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

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

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

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

Презентация на тему Процедуры и функции

Содержание

При решении разных задач часто возникает необходимость проводить вычисления по одним и тем же алгоритмам, например, вычислять корень уравнения f(x)=0. В Паскале предусмотрена возможность объединения любой последовательности операторов в самостоятельную подпрограмму, называемую процедурой.Те алгоритмы, которые программистом
Процедуры и функции При решении разных задач часто возникает необходимость проводить вычисления по одним и ПодпрограммаПодпрограммой называют независимую часть программы, предназначенную для решения некой подзадачи. Подпрограмма взаимодействует Зачем нужны подпрограммыиспользование подпрограмм позволяет решить следующие задачи:уменьшение размеров кода и экономия Процедуры Общий вид подпрограммы-процедурыprocedure Имя (Список формальных параметров); var описания локальных переменных; begin {Тело Структура процедуры Поскольку подпрограмма -- отдельная и, в идеале, независимая часть Общий вид заголовка: PROCEDURE N(P1:TYPE1; P2:TYPE2; VAR P3:TYPE3 ...); {где N - ПримерPROGRAM MA;  VAR A:INTEGER; B: REAL; C: CHAR; Данные, описанные в первом разделе -- глобальные, они доступны всем частям программы, Примерvar i:integer;     {глобальная переменная -      описана вне всех подпрограмм}Заголовок Подпрограммы;var Связь процедуры с Чтобы процедура сработала, ее нужно вызвать, записав в нужной точке программы имя Согласование параметровПри каждом вызове подпрограммы значения фактических параметров подставляются на место формальных ПримерПроцедуру Equation (см. выше) можно вызвать только с пятью параметрами (а не Соответствие формальных и фактических параметров Формальные параметрыэто наименования переменных, через которые передается информация из программы в процедуру Вызов процедурыПри вызове процедуры машина производит следующие действия: Устанавливает взаимно однозначное соответствие Соответствие между фактическими и формальными параметрами должно быть следующим: число фактических параметров ПримерВызвать процедуру SQ можно так: SQ(P,Q,R,Y,Z); P, Q, R - коэффициенты кв. Параметры-значения  Примером таких параметров служат параметры А,В и С Для параметров-значений машина при вызове процедур производит следующие действия:   выделяется На этом всякая связь между А и К обрывается. Если даже фактический Передача по значению procedure p1 (x:integer);       {для x создастся локальная копия}begin x:=x+1; Параметры-переменныеЕсли перед именем формального параметра стоит ключевое слово var, то такой параметр Параметры-переменныеЕсли формальный параметр процедуры помечен ключевым словом var как параметр -переменная, это Параметры-переменныеprocedure p1 (var x:integer); {получаем адрес переменной,   переданной в качестве x}begin x:=x+1;   {значение Функции Другой вид подпрограммы- функция-оформляется аналогично процедуре. Отличительные особенности функции: она имеет только Функция оформляется в следующем виде: Function (формальные параметры: тип): тип значения Вызывается функция по её имени с указанием фактических параметров.Вызов функции можно делать Различие между процедурами и функциями.Функции - это процедуры особого характера, результатом работы Примеры ПримерProgram ProcedureAndFunction; Var   a, b, SumNumbers : integer; Procedure Summa1(Var Sum: Пример процедуры для обмена значений между целыми переменными m и nprogram имя-программы;procedure Пример функции для вычисления натуральной степени (n) целого числа (m)program имя-программы;function имя(параметры):
Слайды презентации

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

При решении разных задач часто возникает необходимость проводить вычисления по одним

вычисления по одним и тем же алгоритмам, например, вычислять

корень уравнения f(x)=0.

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

Те алгоритмы, которые программистом оформляются как процедуры в его собственной программе, должны начинаться с заголовка и заканчиваться зарезервированным словом end;


Слайд 3 Подпрограмма
Подпрограммой называют независимую часть программы, предназначенную для решения

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

некой подзадачи.

Подпрограмма взаимодействует с основной программой через механизм

параметров -- так называют входные и выходные данные, с которыми работает подпрограмма.

Однажды написанная подпрограмма, выполненная с теми или иными значениями параметров, может решать некоторый класс задач.


Слайд 4 Зачем нужны подпрограммы
использование подпрограмм позволяет решить следующие задачи:

уменьшение

Зачем нужны подпрограммыиспользование подпрограмм позволяет решить следующие задачи:уменьшение размеров кода и

размеров кода и экономия памяти за счет возможности неоднократного

вызова одной и той же подпрограммы в рамках одной программы;
лучшее структурирование программы за счет разбиения задачи на более простые подзадачи;
эффективное повторное использование однажды написанного кода.


Слайд 5 Процедуры

Процедуры

Слайд 6 Общий вид подпрограммы-процедуры
procedure Имя (Список формальных параметров);
var

Общий вид подпрограммы-процедурыprocedure Имя (Список формальных параметров); var описания локальных переменных;

описания локальных переменных;
begin
 {Тело процедуры}
end;

Другие подразделы раздела описаний, такие

как label, const также могут присутствовать между заголовком и телом процедуры и действие их также будет локально -- то есть, определено лишь в рамках данной процедуры

Слайд 7 Структура процедуры

Поскольку подпрограмма -- отдельная и, в идеале,

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

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

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

Слайд 8 Общий вид заголовка:
PROCEDURE N(P1:TYPE1; P2:TYPE2; VAR P3:TYPE3

Общий вид заголовка: PROCEDURE N(P1:TYPE1; P2:TYPE2; VAR P3:TYPE3 ...); {где N

...); {где N - имя процедуры, PI - формальные

параметры, TYPEI - их типы.}

Процедура имеет ту же структуру, что и главная программа (PROGRAM):
разделы label, const, type, var
и выполняемую часть (от begin до end).

Процедура помещается в главной программе после раздела var и перед begin программы.

Структура процедуры


Слайд 9 Пример
PROGRAM MA;
VAR A:INTEGER; B: REAL;

ПримерPROGRAM MA;  VAR A:INTEGER; B: REAL; C: CHAR;

C: CHAR;
PROCEDURE N

(P1: REAL; P2: CHAR);
VAR
BEGIN (*Начало работы процедуры *) ....... END; (*Конец процедуры*)

BEGIN (*Начало работы PROGRAM*)
END.

Слайд 10 Данные, описанные в первом разделе -- глобальные, они

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

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

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

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

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


Слайд 11 Пример
var i:integer;
    {глобальная переменная -      описана

Примерvar i:integer;     {глобальная переменная -      описана вне всех подпрограмм}Заголовок

вне всех подпрограмм}

Заголовок Подпрограммы;
var i:integer;
    {локальная переменная -

     описана после заголовка подпрограммы}
begin
 {Тело подпрограммы}
end;
 
begin
{Тело главной программы}
end.

Глобальные переменные видимы (доступны) от точки их определения до конца файла.

Локальные переменные доступны только в том блоке операторных скобок, в котором они описаны и во вложенных в него блоках.


Слайд 12 Связь процедуры с "внешним миром"
Единственная правильная связь процедуры

Связь процедуры с

с "внешним миром", то есть, другими подпрограммами и главной

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

Слайд 13 Чтобы процедура сработала, ее нужно вызвать, записав в

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

нужной точке программы имя процедуры со списком фактических параметров
procedure

Equation (a,b,c:real;var x1,x2:real);
var d:real;
begin
 d:=sqr(b)-4*a*c;
 if d>=0 then
begin
  x1:=(-b+sqrt(d))/(2*a);
  x2:=(-b-sqrt(d))/(2*a);
  end;
end;

var a,b,c,d,x1,x2,x3,x4:real;
...
write ('Введите значения a,b,c:');
read (a,b,c);
Equation (a,b,c,x1,x2);


Слайд 14 Согласование параметров
При каждом вызове подпрограммы значения фактических параметров

Согласование параметровПри каждом вызове подпрограммы значения фактических параметров подставляются на место

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

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

Слайд 15 Пример
Процедуру Equation (см. выше) можно вызвать только с

ПримерПроцедуру Equation (см. выше) можно вызвать только с пятью параметрами (а

пятью параметрами (а не тремя, семью или нулём), причем

все эти параметры должны быть вещественными.

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

Слайд 16 Соответствие формальных и фактических параметров

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

Слайд 17 Формальные параметры
это наименования переменных, через которые передается информация

Формальные параметрыэто наименования переменных, через которые передается информация из программы в

из программы в процедуру либо из процедуры в программу.


Вызов процедуры N производится оператором вида
N(P1,P2,P3,...);
Здесь N - имя процедуры,
P1,P2,P3 - фактические параметры.



Слайд 18 Вызов процедуры
При вызове процедуры машина производит следующие действия:

Вызов процедурыПри вызове процедуры машина производит следующие действия: Устанавливает взаимно однозначное


Устанавливает взаимно однозначное соответствие между фактическими и формальными параметрами,

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


Слайд 19 Соответствие между фактическими и формальными параметрами
должно быть

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

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

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


Слайд 20 Пример
Вызвать процедуру SQ можно так:
SQ(P,Q,R,Y,Z); P, Q,

ПримерВызвать процедуру SQ можно так: SQ(P,Q,R,Y,Z); P, Q, R - коэффициенты

R - коэффициенты кв. ур-я, а Y и Z

- корни.
Если вызвать SQ оператором
SQ(X1,X2,A,B,C);то машина воспримет Х1,Х2,А как коэффициенты уравнения, а корни зашлет в переменные В и С.

Слайд 21 Параметры-значения
Примером таких параметров служат параметры А,В и С

Параметры-значения Примером таких параметров служат параметры А,В и С в

в процедуре SQ.
PROCEDURE SQ (A,B,C:REAL; VAR X1,X2: REAL);


В этом случае фактическим параметром, соответствующим А, либо В, либо С, может быть выражение соответственного типа, в частности, константа.
Например, обратиться к SQ можно так:
SQ((25./3+2)*2, - 1.5, (8.2-3.1)/3, X1, X2);


Слайд 22 Для параметров-значений машина при вызове процедур производит следующие

Для параметров-значений машина при вызове процедур производит следующие действия:  выделяется

действия:
выделяется место в памяти для каждого

формального параметра,
вычисляется значение фактического параметра и засылает его в ячейку, соответствующую формальному параметру.
Если фактический параметр есть имя переменной, например, К, то значение этой переменной пересылается в соответствующий формальный параметр, например, А.

Параметры-значения


Слайд 23 На этом всякая связь между А и К

На этом всякая связь между А и К обрывается. Если даже

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

в памяти компьютера эти параметры занимают разные ячейки.
Это надо знать, чтобы не допустить распространенной ошибки, а именно: пытаться передать информацию из процедуры в вызывающую программу через параметр-значение

!!!!!


Слайд 24 Передача по значению
procedure p1 (x:integer);
      {для

Передача по значению procedure p1 (x:integer);       {для x создастся локальная

x создастся локальная копия}
begin
 x:=x+1; {значение копии увеличилось на 1}
 writeln

('x=',x); {и было выведено}
end;
 
var x:integer;
begin
 x:=3;
 p1(x);
 writeln ('x=',x);
 {после вызова с передачей параметра   по значению, x, по-прежнему, равно 3}
end.


Слайд 25 Параметры-переменные
Если перед именем формального параметра стоит ключевое слово

Параметры-переменныеЕсли перед именем формального параметра стоит ключевое слово var, то такой

var, то такой параметр и есть параметр-переменная. Пример: X1

и X2 в процедуре SQ.

Результат выполнения может быть передан только через параметр- переменную

Использование var в заголовке процедуры подчеркивает, что параметр является переменной и может изменяться этой процедурой

Слайд 26 Параметры-переменные
Если формальный параметр процедуры помечен ключевым словом var

Параметры-переменныеЕсли формальный параметр процедуры помечен ключевым словом var как параметр -переменная,

как параметр -переменная, это означает, что передача фактического параметра

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

Слайд 27 Параметры-переменные
procedure p1 (var x:integer);
 {получаем адрес переменной,
  переданной

Параметры-переменныеprocedure p1 (var x:integer); {получаем адрес переменной,   переданной в качестве x}begin x:=x+1;  

в качестве x}
begin
 x:=x+1;   {значение x увеличилось на 1}
 writeln ('x=',x);    

{и было выведено}
end;
 
var x:integer;
begin
 x:=3;
 p1(x);
 writeln ('x=',x);
 {после вызова с передачей параметра
  по ссылке, x стало равно 4 -
  оно было изменено процедурой p1}
end.


Слайд 28 Функции

Функции

Слайд 29 Другой вид подпрограммы- функция-оформляется аналогично процедуре.

Отличительные особенности

Другой вид подпрограммы- функция-оформляется аналогично процедуре. Отличительные особенности функции: она имеет

функции: она имеет только один результат выполнения (но может

иметь несколько входных параметров);

Результат обозначается именем функции и передаётся в основную программу.



Слайд 30 Функция оформляется в следующем виде:


Function (формальные параметры:

Функция оформляется в следующем виде: Function (формальные параметры: тип): тип

тип): тип значения функции;
Var   . . . Begin   .

. . End ;

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


Слайд 31 Вызывается функция по её имени с указанием фактических

Вызывается функция по её имени с указанием фактических параметров.Вызов функции можно

параметров.
Вызов функции можно делать непосредственно внутри выражения.
При вызове

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

Слайд 32 Различие между процедурами и функциями.
Функции - это процедуры

Различие между процедурами и функциями.Функции - это процедуры особого характера, результатом

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

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


Слайд 33 Примеры

Примеры

Слайд 34 Пример
Program ProcedureAndFunction;
Var   a, b, SumNumbers : integer;
Procedure Summa1(Var

ПримерProgram ProcedureAndFunction; Var   a, b, SumNumbers : integer; Procedure Summa1(Var

Sum: integer; a, b : integer); Begin   Sum:= a+b; End;

Function Sum(a,

b : integer) : integer; Begin   Sum:= a+b; End;



Begin   ClrScr;   a := 12;   b := 15;   Summa1(SumNumbers, a, b);   writeln ('С помощью процедуры сумма чисел равна ',SumNumbers);   writeln ('С помощью функции сумма чисел равна ',Sum(a, b));
End.


Слайд 35 Пример процедуры для обмена значений между целыми переменными

Пример процедуры для обмена значений между целыми переменными m и nprogram

m и n
program имя-программы;

procedure имя(параметры);
описания локальных величин

Begin
операторы процедуры
end;

BEGIN
операторы программы
END.
program

primer;
var x,y: integer;
procedure swap(var m,n:integer);
var s: integer;
Begin
s:=m; m:=n; n:=s
end;
BEGIN
read(x,y); swap(x,y); writeln(x:10,y:10)
END.

  • Имя файла: protsedury-i-funktsii.pptx
  • Количество просмотров: 91
  • Количество скачиваний: 0