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

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


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

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

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

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

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

Содержание

Общие положенияПодпрограмма - именованная логически законченная группа операторов, которую можно вызвать по имени (выполнить) любое количество раз из различных мест программы.Процедура – действие, которое вы просите компьютер выполнить.Функция – некоторое вычисление, возвращающее значение.
ПОДПРОГРАММЫПроцедуры        и функции Общие положенияПодпрограмма - именованная логически законченная группа операторов, которую можно вызвать по Объявление процедурыФормат объявления:procedure ( ); ;const ...;type ...;var  ...;begin   end; Объявление процедурыЗаголовок процедуры – имя подпрограммы, список формальных параметров, директивы. - любой Объявление функцииФормат объявления:function ( ) : ; ;const ...;type ...;var  ...;begin Объявление функцииЗаголовок функции – имя подпрограммы, список формальных параметров, тип результата, директивы. ПримерыПроцедура:procedure Max2 (a,b: integer; var c: integer);begin   if a>b then ПримерыФункция:function Max2 (a,b: integer) : integer;begin   if a>b then Result:=a Формальные параметрыСписок формальных параметров – последовательность объявлений однотипных параметровОбъявления отделяются друг от Формальные параметрыПР: procedure Primer1 ( x, y : integer ; c, ch Способы передачи параметров в подпрограмму Способы передачи параметров в подпрограммупараметры- переменныеvarпараметры-константыconstвыходные параметрыoutИспользуется только для получения данных из Параметры-значенияПараметры-значения - локальные переменные, которые получили начальное значение при вызове подпрограммы.Если переменная Параметры-значенияПР:  function DoubleByValue (X: Integer): Integer;     // Параметры-переменныеПараметры-переменные похожи скорее на указатели.Изменения параметра-переменной внутри тела подпрограммы сохраняются после завершения Параметры-переменныеПР:  function DoubleByRef (var X: Integer): Integer; ОсобенностиДля параметров-значений и параметров-констант возможно указание в заголовке процедуры или функции значения ОсобенностиДля параметров, передающихся по ссылке, можно не указывать тип параметра. Такие параметры Локальные объявленияЛокальные переменные – переменные, которые описываются и используются внутри подпрограммыВ теле Локальные объявленияprocedure DeleteRandomSymbol (var S : string);   function RandomNumber (S ЗамечанияВ теле функции должен быть, по крайней мере, один оператор, присваивающий значение ЗамечанияПР:  function MyFunction : Integer;     begin Соглашения о вызове подпрограммДирективы, определяющие правила вызова подпрограммы (в заголовке подпрограммы):register, stdcall, Соглашения о вызове подпрограммregister задействует регистры процессора для передачи параметров и обеспечивает Вызов процедур и функцийПри вызове подпрограмм необходимо помнить:Выражения, используемые для передачи в Вызов процедур и функцийПри вызове подпрограмм необходимо помнить:На место параметров, передаваемых по Перегрузка процедур и функцийРассмотрим подпрограммы, выполняющие одинаковые действия, но над переменными разных Перегрузка процедур и функцийПР: procedure Increment (var Value: Integer); overload; Рекурсивные подпрограммыЕсли в теле подпрограммы происходит вызов этой же подпрограммы, такая подпрограмма Рекурсивные подпрограммыПР: Функция Factorial для вычисления факториала Упреждающее объявление подпрограммКосвенная рекурсия: когда первая подпрограмма вызывает вторую, а вторая -
Слайды презентации

Слайд 2 Общие положения
Подпрограмма - именованная логически законченная группа операторов,

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

которую можно вызвать по имени (выполнить) любое количество раз

из различных мест программы.

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


Слайд 3 Объявление процедуры
Формат объявления:

procedure (

Объявление процедурыФормат объявления:procedure ( ); ;const ...;type ...;var ...;begin  end;

параметров> ); ;


const ...;
type ...;
var ...;

begin

<операторы>
end;

Слайд 4 Объявление процедуры
Заголовок процедуры – имя подпрограммы, список формальных

Объявление процедурыЗаголовок процедуры – имя подпрограммы, список формальных параметров, директивы. -

параметров, директивы.

- любой корректный идентификатор

(тело подпрограммы)

- операторы, которые будут выполнены при вызове подпрограммы

<список формальных параметров>, <директивы>, <локальные объявления> могут отсутствовать

Слайд 5 Объявление функции
Формат объявления:

function (

Объявление функцииФормат объявления:function ( ) : ; ;const ...;type ...;var ...;begin

параметров> ) : ; ;


const ...;
type ...;
var

...;
<вложенные подпрограммы>
begin
<операторы>
Result := <значение>;
// или <имя функции> := <значение>;
end;

Слайд 6 Объявление функции
Заголовок функции – имя подпрограммы, список формальных

Объявление функцииЗаголовок функции – имя подпрограммы, список формальных параметров, тип результата,

параметров, тип результата, директивы.

- любой корректный идентификатор

(тело подпрограммы) - операторы, которые будут выполнены при обращении к функции

<список формальных параметров>, <директивы>, <локальные объявления> могут отсутствовать

Слайд 7 Примеры
Процедура:
procedure Max2 (a,b: integer; var c: integer);
begin

ПримерыПроцедура:procedure Max2 (a,b: integer; var c: integer);begin  if a>b then

if a>b then c:=a else c:=b;
end;
Обращение в программе:
x:=32;

y:=45; . . . ; Max2(x,y,z);

Параметры, передаваемые в подпрограмму при ее вызове, называются фактическими
В примерах x, y, z – фактические параметры

Слайд 8 Примеры
Функция:
function Max2 (a,b: integer) : integer;
begin

ПримерыФункция:function Max2 (a,b: integer) : integer;begin  if a>b then Result:=a

if a>b then Result:=a else Result:=b;
end;

Обращение в программе:
x:=32; y:=45;

. . . ; z:=Max2(x,y);

Слайд 9 Формальные параметры
Список формальных параметров – последовательность объявлений однотипных

Формальные параметрыСписок формальных параметров – последовательность объявлений однотипных параметровОбъявления отделяются друг

параметров
Объявления отделяются друг от друга точкой с запятой.
Каждое объявление

состоит из списка имен параметров, символа ‘:’ и указания их типа.
Внутри объявления имена параметров разделяются запятой.

Слайд 10 Формальные параметры
ПР:

procedure Primer1 ( x, y :

Формальные параметрыПР: procedure Primer1 ( x, y : integer ; c,

integer ; c, ch : char ; var s

: real );



function Primer2 ( x : integer; c, ch : real ; var k : integer ) : real;

Слайд 11 Способы передачи параметров в подпрограмму

Способы передачи параметров в подпрограмму

Слайд 12 Способы передачи параметров в подпрограмму
параметры- переменные
var
параметры-константы
const
выходные параметры
out
Используется только для

Способы передачи параметров в подпрограммупараметры- переменныеvarпараметры-константыconstвыходные параметрыoutИспользуется только для получения данных

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

(только для чтения)

Для передачи данных в подпрограмму и для получения данных из подпрограммы


Слайд 13 Параметры-значения
Параметры-значения - локальные переменные, которые получили начальное значение

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

при вызове подпрограммы.

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

создает копию переменной.

Изменения этой копии не приводят к изменению исходной переменной и утериваются после завершения работы подпрограммы.

Слайд 14 Параметры-значения
ПР: function DoubleByValue (X: Integer): Integer;

Параметры-значенияПР: function DoubleByValue (X: Integer): Integer;   // X –

// X – параметр-значение

begin X := X*2; Result :=X; end;

Вызовем функцию:
Var K, J, V: Integer;
begin
K := 4; V := 4;
J := DoubleByValue(K); // J = 8, K = 4
end;

Слайд 15 Параметры-переменные
Параметры-переменные похожи скорее на указатели.

Изменения параметра-переменной внутри тела

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

подпрограммы сохраняются после завершения работы подпрограммы и возвращаются в

вызывающую программу.

Слайд 16 Параметры-переменные
ПР: function DoubleByRef (var X: Integer): Integer;

Параметры-переменныеПР: function DoubleByRef (var X: Integer): Integer;   // X

// X – параметр-переменная

begin X := X * 2; Result := X; end;

Вызовем функцию:
Var K, V, W: Integer;
begin
K := 4; V := 4;
W := DoubleByRef(V); // W = 8, V = 8
end;

Слайд 17 Особенности
Для параметров-значений и параметров-констант возможно указание в заголовке

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

процедуры или функции значения по умолчанию.

ПР:
(var S: string; X:

Integer = 5)
(const P, I: Integer; const M: real = 4.5)

Слайд 18 Особенности
Для параметров, передающихся по ссылке, можно не указывать

ОсобенностиДля параметров, передающихся по ссылке, можно не указывать тип параметра. Такие

тип параметра. Такие параметры называют нетипизированными.

ПР: (var S, X; out Z)
(const P, I; var M)

Внутри подпрограммы нетипизированные параметры несовместимы ни с какими типами.
Необходимо выполнить приведение типов.

Слайд 19 Локальные объявления
Локальные переменные – переменные, которые описываются и

Локальные объявленияЛокальные переменные – переменные, которые описываются и используются внутри подпрограммыВ

используются внутри подпрограммы

В теле подпрограммы можно описать константы, типы,

другие подпрограммы (вложенные функции и процедуры).

Область видимости локальных идентификаторов ограничена подпрограммой, где они объявлены.

Слайд 20 Локальные объявления
procedure DeleteRandomSymbol (var S : string);

Локальные объявленияprocedure DeleteRandomSymbol (var S : string);  function RandomNumber (S

function RandomNumber (S : string) : integer;

var LenString : Integer;
begin
LenString:=Length(s);
Result:=Random(LenString)+1;
end;
begin
Delete(S, RandomNumber(s), 1);
end;

Функцию RandomNumber можно вызывать только внутри
процедуры DeleteRandomSymbol.

Слайд 21 Замечания
В теле функции должен быть, по крайней мере,

ЗамечанияВ теле функции должен быть, по крайней мере, один оператор, присваивающий

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

переменной Result

Переменная Result может участвовать в выражениях как операнд внутри тела функции

Переменная Result и имя функции всегда представляют одно и то же значение

Слайд 22 Замечания
ПР: function MyFunction : Integer;

ЗамечанияПР: function MyFunction : Integer;   begin

begin

MyFunction := 5;
Result := Result * 2;
MyFunction := Result + 1;
end;
// Эта функция вернет значение 11.

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

Слайд 23 Соглашения о вызове подпрограмм
Директивы, определяющие правила вызова подпрограммы

Соглашения о вызове подпрограммДирективы, определяющие правила вызова подпрограммы (в заголовке подпрограммы):register,

(в заголовке подпрограммы):

register, stdcall, pascal, cdecl

ПР: procedure Proc; register;

function Func(X: Integer): Boolean; stdcall;

Соглашения о вызове подпрограмм определяют порядок передачи параметров

Слайд 24 Соглашения о вызове подпрограмм
register задействует регистры процессора для

Соглашения о вызове подпрограммregister задействует регистры процессора для передачи параметров и

передачи параметров и обеспечивает наиболее эффективный способ вызова подпрограмм.

Эта директива применяется по умолчанию.

Директива stdcall используется для вызова стандартных подпрограмм операционной системы.

Директивы pascal и cdecl используются для вызова подпрограмм, написанных на языках Delphi и C/C++ соответственно.

Директиву safecall изучим позже

Слайд 25 Вызов процедур и функций
При вызове подпрограмм необходимо помнить:

Выражения,

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

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

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

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

Слайд 26 Вызов процедур и функций
При вызове подпрограмм необходимо помнить:

На

Вызов процедур и функцийПри вызове подпрограмм необходимо помнить:На место параметров, передаваемых

место параметров, передаваемых по ссылке можно подставлять только переменные,

нельзя – числа и константы.

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

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

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

но над переменными разных типов данных

Дадим этим процедурам (функциям)

одинаковые имена
Отличаться они будут списком параметров (количеством параметров или типом параметров)‏

Такая возможность называется перегрузкой.
Для этого применяется директива overload.

Слайд 28 Перегрузка процедур и функций
ПР: procedure Increment (var Value:

Перегрузка процедур и функцийПР: procedure Increment (var Value: Integer); overload;

Integer); overload;
// процедура 1

procedure Increment (var Value: Real); overload;
// процедура 2

Какую именно процедуру использовать в том или ином случае компилятор будет определять по типам фактических аргументов, передаваемых при вызове.
Var X: Integer; Y: Real;
Begin X:=1; Y:=2.0;
Increment(X); // Вызывается процедура 1
Increment(Y); // Вызывается процедура 2
end.

Слайд 29 Рекурсивные подпрограммы
Если в теле подпрограммы происходит вызов этой

Рекурсивные подпрограммыЕсли в теле подпрограммы происходит вызов этой же подпрограммы, такая

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

Рекурсия полезна, например, когда

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

Слайд 30 Рекурсивные подпрограммы
ПР: Функция Factorial для вычисления факториала

Рекурсивные подпрограммыПР: Функция Factorial для вычисления факториала

X! =

1 * 2 * ... * (X – 1) * X

Заметим, что X! = (X – 1)! * X, где 0! = 1

function Factorial (X: Integer) : Longint;
begin
if X = 0 then
// Условие завершения рекурсии
Factorial := 1
else Factorial := Factorial(X - 1) * X;
end;

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