Презентация на тему "Понятие процедуры и функции.Механизм параметров."

Презентация: Понятие процедуры и функции.Механизм параметров.
1 из 32
Ваша оценка презентации
Оцените презентацию по шкале от 1 до 5 баллов
  • 1
  • 2
  • 3
  • 4
  • 5
0.0
0 оценок

Комментарии

Нет комментариев для данной презентации

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


Добавить свой комментарий

Аннотация к презентации

Смотреть презентацию онлайн на тему "Понятие процедуры и функции.Механизм параметров.". Презентация состоит из 32 слайдов. Материал добавлен в 2017 году.. Возможность скчачать презентацию powerpoint бесплатно и без регистрации. Размер файла 0.29 Мб.

  • Формат
    pptx (powerpoint)
  • Количество слайдов
    32
  • Слова
    другое
  • Конспект
    Отсутствует

Содержание

  • Презентация: Понятие процедуры и функции.Механизм параметров.
    Слайд 1

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

    Лекция 6

  • Слайд 2

    Декомпозиция задачи

    Вспомогательный алгоритм Вспомогательный алгоритм Задача данные результат

  • Слайд 3

    Преимущества использования подпрограмм

    появляется возможность поблочной отладки больших программ, возможно, создаваемых несколькими программистами с последующим объединением отлаженных подпрограмм в единое целое; экономится оперативная память, так как многократно используемые компоненты (подпрограммы) заносятся в память ЭВМ один раз; облегчаются изменения программы, так как изменение одной программы не вызывает корректировку других.

  • Слайд 4

    Способы использования подпрограмм:

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

  • Слайд 5

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

    ПОДПРОГРАММА Заголовок : (формальные параметры) Тело: Begin end; Фактические параметры Возвращаемые значения вызов

  • Слайд 6

    Локализация переменных

    Глобальные переменные программы Локальные переменные подпрограммы В •каждый идентификатордолжен быть описаны перед использованием; •областью действия идентификатора является та подпрограмма, в которой они описаны; •все имена в пределах подпрограммы, в которой они объявлены, должны быть уникальными; •одноименные локальные и глобальные переменные – это разные переменные; •при обращении к подпрограмме доступны объекты, которые объявлены в ней и до ее описания. var i:integer;     {глобальная переменная -      описана вне всех подпрограмм} Заголовок Подпрограммы; var i:integer;     {локальная переменная -      описана после заголовка подпрограммы} begin  {Тело подпрограммы} end;   begin {Тело главной программы} end.

  • Слайд 7

    Два типа подпрограмм:

    Function (): Описательная часть Begin Тело функции :=; End; ФУНКЦИЯ Procedure () Описательная часть Begin Тело функции End; ПРОЦЕДУРА подпрограмма, в которой производятся некоторые действия, в результате которых имя функции получает одно единственное значение, присваиваемое ее имени и обязательно передаваемое в вызывающую программу, возвращая управление в точку вызова подпрограмма, в которой производятся некоторые действия при этом имя процедуры не получает никакого значения, результатов у процедуры либо нет , либо результаты передаются в вызывающую программу специальным образом.

  • Слайд 8

    Подпрограмма -функция

  • Слайд 9

    Вычислить значение выражения a:=(3n!+2m!)/(m+n)!

    program fn2; Uses crt; Varm,n:integer; a:real; function fact(d:integer) :longint; var i:integer; q:longint; begin q:=1; for i:=1 to d do q:=q*i; fact:=q; end; Begin clrscr; writeln('введите значения n, m '); readln(n,m); a:=(3*fact(n)+2*fact(m))/fact(m+n);; writeln('значение выражения при m= ',m:4,' и n= ',n:4,'равно',a:8:3); readln;end.

  • Слайд 10

    Найти разность средних арифметических значений двух вещественных массивов из 10 элементов.

    program dif_average1; const n = 3; typemas = array[1 .. n] of real; var a, b : mas; i : integer; dif : real; function average(x : mas) : real; vari : integer; av : real; begin av := 0; for i := 1 to n do av := av + x[i]; average := av / n; end; Begin for i := 1 to n do read(a[i]); for i := 1 to n do read(b[i]); dif := average(a) - average(b); writeln('Разность значений ', dif:6:2) end. В заголовке подпрограммы нельзя вводить новый тип Function av(x:array[1..10] of real): real;

  • Слайд 11

    Подпрограмма -процедура

  • Слайд 12

    Вывести таблицу умножения

    program pif_table; procedure Pifagor(n: integer); vari,j:integer; begin writeln; for i:=1 to n do begin for j:=1 to n do write(i*j:4); writeln; writeln; end; end; var m:integer; begin write ('введите размер таблицы Пифагора '); readln(m); Pifagor(m); end.

  • Слайд 13
  • Слайд 14

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

  • Слайд 15

    Карта распределения оперативной памяти

    Структура страницы стека

  • Слайд 16

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

    procedure P(x : integer); Тип выражения должен быть совместим по присваиванию с типом параметра. Если в вызывающей программе описаны переменные varx : integer; c : byte; y : longint; то следующие вызовы подпрограммы Р будут синтаксически правильными: P(x); P(c); P(y); P(200); P(x div 4 + 1);

  • Слайд 17

    Параметры-переменные

    programperest; vara,b,c: integer; procedureswap(varx,y: integer); var t: integer; begin t:=x; x:=y; y:=t; end; begin writeln(‘Введите три числа '); readln(a,b,c); ifa>bthenswap(a,b); ifb>cthenswap(b,c); ifa>cthenswap(a,c); writeln(a,' ',b,' ',c); readln;end.

  • Слайд 18

    Процедура вычисления суммы двух чисел

    program pr1; Uses crt; Vara,b,s:real; procedure summa(x,y:real;var z:real); begin z:=x+y; end; begin clrscr; writeln('введитеa,b'); readln(a,b); summa(a,b,s); writeln(' суммачисел ',a:3:1,' и ',b:3:1,' = ',s:3:1); readln; end. x,y,z – формальные параметры, локальные переменные a,b,s– глобальные переменные a,b,s – фактические параметры х y z a b s Параметры-значения Параметр-ccылка

  • Слайд 19

    Параметры переменные

    Глобальные переменные Локальные переменные a b 3 -3 Адрес с a b c 48 Адрес с c:=a+b c 24 5 8 Ответ 5 5 a:=b+3; b:=3*a 8 8 24 24

  • Слайд 20

    Пример локализации переменных

    Ответ Ответ

  • Слайд 21

    Механизм передачи параметров в функции и процедуры

    Глобальные переменные Локальные переменные c b 0 0 Адрес a c b d 3 0 a:=2 b:=b+1 d:=3 a 3 2 d 0 0 f:=d Ответ f 3 c:=b-a 0

  • Слайд 22

    Ввод и вывод элементов одномерного массива

  • Слайд 23

     Разбить строку S на слова с учетом заданных разделителей

    TypeTWords = Array[1 .. 100] Of String[100]; TDel = Set Of Char;  Vari, count: BYTE; words: TWords; DEL:Tdel; S:string; Procedure vvodvivod(var s:string; flag:boolean); Begin If flag thenReadln(s) Else writeln(s); End; Procedure del32(var s:string); Var p:byte; begin Repeat p := Pos(' ', s); If p > 0 Then Delete(s, p, 1) Until p = 0; If s[1] = ' ' Then Delete(s, 1, 1); If s[Length(s)] = ' ' ThenDelete(s, Length(s), 1); end; Function GetWords(s: String; Varmas: TWords; dels: TDel): Byte; Vari, p: Byte; Begin For i := 1 to Length(s) Do If s[i] In dels Then s[i] := #32; Del32(s); i := 0; Repeat p := Pos(' ', s); Inc(i); If p > 0 Then Begin mas[i] := Copy(s, 1, p-1); Delete(s, 1, p);End Else mas[i] := s Until p = 0; GetWords := i End; Begin Writeln(‘введите разделители’); Vvodvivod(s,true); Del:=[]; For I:=1 to length(s) do Del:=del+s[i]; Count := GetWords(s, words, del); For i := 1 To Count Do vvodvivod(words[i],false); End. Заменяем все разделители пробелами формирование множества разделителей заполняем массив словами из строки удаляем лишние пробелы Удаляем пробелыв начале строки Удаляем пробелыв конце строки

  • Слайд 24

    Параметры-константы

    Type matr=array[1..20,1..30] of byte; Procedure vivod( n,m: byte; const a:matr); Vari,j: byte; Begin For i:=1 to n do begin For j:=1 to m do Write(a[i.j]:5); Writeln; End; End; Vari,j: byte; M:matr; Begin Randomize; For i:=1 to 10 do For j:=1 to 15 do m[i,j]:=random(20); // 0

  • Слайд 25

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

    Function EQ (const x, y; size : word) : boolean; type mas_byte = array[0 .. MaxInt] of byte; //mas_byte = array[0 .. MaxInt] of byte absolute x; var n : integer; begin n := 0; while (n

  • Слайд 26

    Открытые массивы

    function sum(var x : array of real) : real; var i:word; s:real; begin  s:=0;  for i:=Low(x) To High(x) Do s:=s+x[I];  sum:=s; end; const a:array [1..5] of real=(1,2,3,4,5.5); begin  writeln (sum(a):6:1); end.

  • Слайд 27

    Найти количество элементов вектора x, попадающих в интервал [a, b] .

    procedure Input (n:integer;  var a:array of real); var i:integer; begin  writeln ('Enter ',n,' items of array:');  for i:=0 to n-1 do read (a[i]); end;   function Kol (var a:array of real;  x1,x2:real):integer; vari,k:integer; begin  k:=0;  for i:=Low(a) to High(a) do   if (a[i]>=x1) and (a[i]

  • Слайд 28

    ПРОЦЕДУРНЫЕ ТИПЫ. 

    Для объявления процедурного типа используется заголовок процедуры (функции), в котором опускается ее имя type Proc1 = Procedure (a, b, c: real; var d: real); Proc2 = Procedure (var a, b); РrосЗ = Procedure; Func1 = Function: String; Func2 = Function (var s: String): real;

  • Слайд 29

    Вывести на экран таблицу двух функций: sin1(x) = (sin(x)+1)*ехр(-х) и cos1(x) = (cos(x)+1)*ехр(-х).

    Uses CRT; type Func = Function (x: real): real; ProcedurePrintFunc(XPos: byte; F: Func); const np = 20; var x: real; i: integer; begin fori := 1 tonpdo begin x := i * (2 * pi / np); GotoXY (XPos, WhereY); WriteLn (x:5:3, F(x):18:5) end; end; Function Sin1(x: real): real; far; begin sin1 := (sin(x) + 1) * exp(-x) end; Function Cos1(x: real): real; far; begin cos1 := (cos(x) + 1) * exp(-x) end; begin ClrScr; {имя функции передается по адресу} PrintFunc (1, @sin1); {Переводим курсор в левый верхний угол} GotoXY (1,1); PrintFunc (40, @cos1) end.

  • Слайд 30

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

    type Proc = Procedure (n: word; var a: byte); var ProcVar: Proc; x, у: byte; Procedure Proc1(x: word; var y: byte); far; begin if x > 255 then y := x mod 255 else у := byte(x) end; begin{Главная программа} ProcVar := @Proc1; for x := 150 to 180 do begin ProcVar (x + 100, у); Write (у:8) end end. type FuncType = Function (i: integer): integer; var VarFunc: FuncType; i: integer; FunctionMyFunc (count: integer): integer; far; begin . . . . . end; {MyFunc} begin{Основная программа} . . . . . i := MyFunc(1); {использование результата функции} . . . . . VarFunc := @MyFunc; {Присваивание переменной процедурного типа имени функции MyFunc} end.

  • Слайд 31

    Предварительные и внешние описания подпрограмм

    Procedure A(X,Y: Real): Forward; Procedure B(A,B: Integer): Forward;. . . . . . . . .  Procedure A;Begin. . . . . . В(3,5);  . . . . . . End; Procedure B;Begin . . . . . . A(1,0);. . . . . . . .End;

  • Слайд 32

    Внешнее описание

    {$L ABC.OBJ}Procedure A(C,D,E: Real); External;Procedure B(I,F,J: Integer); External

Посмотреть все слайды

Сообщить об ошибке