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

Нажмите для полного просмотра!
Подпрограммы. Процедуры и функции, слайд №1Подпрограммы. Процедуры и функции, слайд №2Подпрограммы. Процедуры и функции, слайд №3Подпрограммы. Процедуры и функции, слайд №4Подпрограммы. Процедуры и функции, слайд №5Подпрограммы. Процедуры и функции, слайд №6Подпрограммы. Процедуры и функции, слайд №7Подпрограммы. Процедуры и функции, слайд №8Подпрограммы. Процедуры и функции, слайд №9Подпрограммы. Процедуры и функции, слайд №10Подпрограммы. Процедуры и функции, слайд №11Подпрограммы. Процедуры и функции, слайд №12Подпрограммы. Процедуры и функции, слайд №13Подпрограммы. Процедуры и функции, слайд №14Подпрограммы. Процедуры и функции, слайд №15Подпрограммы. Процедуры и функции, слайд №16Подпрограммы. Процедуры и функции, слайд №17Подпрограммы. Процедуры и функции, слайд №18Подпрограммы. Процедуры и функции, слайд №19Подпрограммы. Процедуры и функции, слайд №20Подпрограммы. Процедуры и функции, слайд №21Подпрограммы. Процедуры и функции, слайд №22Подпрограммы. Процедуры и функции, слайд №23Подпрограммы. Процедуры и функции, слайд №24Подпрограммы. Процедуры и функции, слайд №25Подпрограммы. Процедуры и функции, слайд №26Подпрограммы. Процедуры и функции, слайд №27Подпрограммы. Процедуры и функции, слайд №28Подпрограммы. Процедуры и функции, слайд №29Подпрограммы. Процедуры и функции, слайд №30Подпрограммы. Процедуры и функции, слайд №31

Содержание

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

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


Слайд 1





ПОДПРОГРАММЫ
Процедуры
                и функции
Описание слайда:
ПОДПРОГРАММЫ Процедуры и функции

Слайд 2





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

Слайд 3





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

procedure <имя процедуры> ( <список формальных параметров> ); <директивы>;
<локальные объявления>
const ...;
type  ...;
var   ...;
<вложенные подпрограммы>
begin
     <операторы>
end;
Описание слайда:
Объявление процедуры Формат объявления: procedure <имя процедуры> ( <список формальных параметров> ); <директивы>; <локальные объявления> const ...; type ...; var ...; <вложенные подпрограммы> begin <операторы> end;

Слайд 4





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

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

Слайд 5





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

function <имя функции> ( <список формальных параметров> ) : <тип>; <директивы>;
<локальные объявления>
const ...;
type  ...;
var   ...;
<вложенные подпрограммы>
begin
     <операторы>
     Result := <значение>;
     // или <имя функции> := <значение>;
end;
Описание слайда:
Объявление функции Формат объявления: function <имя функции> ( <список формальных параметров> ) : <тип>; <директивы>; <локальные объявления> const ...; type ...; var ...; <вложенные подпрограммы> begin <операторы> Result := <значение>; // или <имя функции> := <значение>; end;

Слайд 6





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

<имя функции> - любой корректный идентификатор
<операторы> (тело подпрограммы) - операторы, которые будут выполнены при обращении к функции
<список формальных параметров>, <директивы>, <локальные объявления> могут отсутствовать
Описание слайда:
Объявление функции Заголовок функции – имя подпрограммы, список формальных параметров, тип результата, директивы. <имя функции> - любой корректный идентификатор <операторы> (тело подпрограммы) - операторы, которые будут выполнены при обращении к функции <список формальных параметров>, <директивы>, <локальные объявления> могут отсутствовать

Слайд 7





Примеры
Процедура:
procedure Max2 (a,b: integer; var c: integer);
begin
     if a>b then c:=a else c:=b;
end;
Обращение в программе:
x:=32; y:=45; . . . ; Max2(x,y,z);
Параметры, передаваемые в подпрограмму при ее вызове, называются фактическими
В примерах x, y, z – фактические параметры
Описание слайда:
Примеры Процедура: procedure Max2 (a,b: integer; var c: integer); begin 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
      if a>b then Result:=a else Result:=b;
end;

Обращение в программе:
x:=32; y:=45; . . . ; z:=Max2(x,y);
Описание слайда:
Примеры Функция: function Max2 (a,b: integer) : integer; begin if a>b then Result:=a else Result:=b; end; Обращение в программе: x:=32; y:=45; . . . ; z:=Max2(x,y);

Слайд 9





Формальные параметры
Список формальных параметров – последовательность объявлений однотипных параметров
Объявления отделяются друг от друга точкой с запятой.
Каждое объявление состоит из списка имен параметров, символа ‘:’ и указания их типа.
Внутри объявления имена параметров разделяются запятой.
Описание слайда:
Формальные параметры Список формальных параметров – последовательность объявлений однотипных параметров Объявления отделяются друг от друга точкой с запятой. Каждое объявление состоит из списка имен параметров, символа ‘:’ и указания их типа. Внутри объявления имена параметров разделяются запятой.

Слайд 10





Формальные параметры
ПР: 
procedure Primer1 ( x, y : integer ; c, ch : char ; var s : real );
function Primer2 ( x : integer; c, ch : real ; var k : integer ) : real;
Описание слайда:
Формальные параметры ПР: procedure Primer1 ( x, y : integer ; c, ch : char ; var s : real ); function Primer2 ( x : integer; c, ch : real ; var k : integer ) : real;

Слайд 11





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

Слайд 12





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

Слайд 13





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

Слайд 14





Параметры-значения
ПР:   function DoubleByValue (X: Integer): Integer;
         // 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;
Описание слайда:
Параметры-значения ПР: function DoubleByValue (X: Integer): Integer; // 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;
         // 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;
Описание слайда:
Параметры-переменные ПР: function DoubleByRef (var X: Integer): Integer; // 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)
Описание слайда:
Особенности Для параметров-значений и параметров-констант возможно указание в заголовке процедуры или функции значения по умолчанию. ПР: (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)
Внутри подпрограммы нетипизированные параметры несовместимы ни с какими типами.
Необходимо выполнить приведение типов.
Описание слайда:
Особенности Для параметров, передающихся по ссылке, можно не указывать тип параметра. Такие параметры называют нетипизированными. ПР: (var S, X; out Z) (const P, I; var M) Внутри подпрограммы нетипизированные параметры несовместимы ни с какими типами. Необходимо выполнить приведение типов.

Слайд 19





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

Слайд 20





Локальные объявления
procedure DeleteRandomSymbol (var S : string);
     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.
Описание слайда:
Локальные объявления procedure DeleteRandomSymbol (var S : string); 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  и имя функции всегда представляют одно и то же значение
Описание слайда:
Замечания В теле функции должен быть, по крайней мере, один оператор, присваивающий значение имени функции или неявной локальной переменной Result Переменная Result может участвовать в выражениях как операнд внутри тела функции Переменная Result и имя функции всегда представляют одно и то же значение

Слайд 22





Замечания
ПР:   function MyFunction : Integer;
         begin
              MyFunction := 5;
              Result := Result * 2;
              MyFunction := Result + 1;
         end;
         //  Эта функция вернет значение 11. 
Использование имени функции в правой части оператора присваивания приведет к рекурсивному вызову этой функции в отличие от переменной Result
Описание слайда:
Замечания ПР: function MyFunction : Integer; begin MyFunction := 5; Result := Result * 2; MyFunction := Result + 1; end; // Эта функция вернет значение 11. Использование имени функции в правой части оператора присваивания приведет к рекурсивному вызову этой функции в отличие от переменной Result

Слайд 23





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

ПР:  procedure Proc; register;
        function Func(X: Integer): Boolean; stdcall;

Соглашения о вызове подпрограмм определяют порядок передачи параметров
Описание слайда:
Соглашения о вызове подпрограмм Директивы, определяющие правила вызова подпрограммы (в заголовке подпрограммы): register, stdcall, pascal, cdecl ПР: procedure Proc; register; function Func(X: Integer): Boolean; stdcall; Соглашения о вызове подпрограмм определяют порядок передачи параметров

Слайд 24





Соглашения о вызове подпрограмм
register задействует регистры процессора для передачи параметров и обеспечивает наиболее эффективный способ вызова подпрограмм. Эта директива применяется по умолчанию. 
Директива stdcall используется для вызова стандартных подпрограмм операционной системы. 
Директивы pascal и cdecl используются для вызова подпрограмм, написанных на языках Delphi и C/C++ соответственно.
 Директиву safecall изучим позже
Описание слайда:
Соглашения о вызове подпрограмм register задействует регистры процессора для передачи параметров и обеспечивает наиболее эффективный способ вызова подпрограмм. Эта директива применяется по умолчанию. Директива stdcall используется для вызова стандартных подпрограмм операционной системы. Директивы pascal и cdecl используются для вызова подпрограмм, написанных на языках Delphi и C/C++ соответственно. Директиву safecall изучим позже

Слайд 25





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

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

Слайд 26





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

Слайд 27





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

Слайд 28





Перегрузка процедур и функций
ПР:  procedure Increment (var Value: 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.
Описание слайда:
Перегрузка процедур и функций ПР: procedure Increment (var Value: 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 для вычисления факториала 
               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;
Описание слайда:
Рекурсивные подпрограммы ПР: Функция 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;

Слайд 31





Упреждающее объявление подпрограмм
Косвенная рекурсия: когда первая подпрограмма вызывает вторую, а вторая - первую.
Записанная первой подпрограмма будет содержать еще неизвестный компилятору идентификатор второй подпрограммы, т.е. возникнет ошибка.
Эта проблема решается с помощью упреждающего описания подпрограмм с помощью директивы предварительного описания подпрограмм forward.
ПР:  procedure Proc; forward;
        function Func (X: Integer): Boolean; forward;
Описание слайда:
Упреждающее объявление подпрограмм Косвенная рекурсия: когда первая подпрограмма вызывает вторую, а вторая - первую. Записанная первой подпрограмма будет содержать еще неизвестный компилятору идентификатор второй подпрограммы, т.е. возникнет ошибка. Эта проблема решается с помощью упреждающего описания подпрограмм с помощью директивы предварительного описания подпрограмм forward. ПР: procedure Proc; forward; function Func (X: Integer): Boolean; forward;



Похожие презентации
Mypresentation.ru
Загрузить презентацию