Что такое findtheslide.com?

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


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

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

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

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

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

Презентация на тему Понятие процедуры и функции.Механизм параметров., из раздела: Разное. Эта презентация содержит 32 слайда(ов). Информативные слайды и изображения помогут Вам заинтересовать аудиторию. Скачать конспект-презентацию на данную тему можно внизу страницы, поделившись ссылкой с помощью социальных кнопок. Также можно добавить наш сайт презентаций в закладки! Презентации взяты из открытого доступа или загружены их авторами, администрация сайта не отвечает за достоверность информации в них. Все права принадлежат авторам презентаций.

Понятие процедуры и функции. Механизм параметров.  Лекция 6 Декомпозиция задачиВспомогательный алгоритмВспомогательный алгоритмЗадачаданныерезультат Преимущества использования подпрограммпоявляется возможность поблочной отладки больших программ, возможно, создаваемых несколькими программистами Способы использования подпрограмм:основная программа и подпрограммы располагаются в одном файле;тексты подпрограмм расположены ПодпрограммаПОДПРОГРАММАЗаголовок : (формальные параметры)Тело:  Begin     end;Фактические параметрыВозвращаемые значениявызов Локализация переменныхГлобальные переменные программыЛокальные переменные подпрограммы В•каждый идентификатор должен быть описаны перед Два типа подпрограмм:Function (): Описательная часть Begin  Тело функции  :=; Подпрограмма -функция Вычислить значение выражения a:=(3n!+2m!)/(m+n)! program fn2;Uses crt;Var m,n:integer; a:real;function fact(d:integer) :longint; Найти разность средних арифметических значений двух вещественных массивов из 10 элементов.program dif_average1; Подпрограмма -процедура Вывести таблицу умноженияprogram pif_table;  procedure Pifagor(n: integer);   Механизм параметров Карта распределения оперативной памятиСтруктурастраницы стека Параметры значенияprocedure P(x : integer);Тип выражения должен быть совместим по присваиванию с Параметры-переменныеprogram perest;   var a,b,c: integer;   procedure swap(var x,y: Процедура вычисления суммы двух чиселprogram pr1;Uses crt;Var a,b,s:real;procedure summa(x,y:real;var z:real);beginz:=x+y;end;beginclrscr;writeln('введите a,b'); readln(a,b);summa(a,b,s);writeln(' Параметры переменныеГлобальные переменныеЛокальные переменныеab3-3Адрес сabc48Адрес сc:=a+bc2458Ответ55a:=b+3;b:=3*a882424 Пример локализации переменныхОтветОтвет Механизм передачи параметров в функции и процедурыГлобальные переменныеЛокальные переменныеcb00Адрес acbd30a:=2b:=b+1d:=3a32d00f:=dОтветf3c:=b-a0 Ввод и вывод элементов одномерного массива   Разбить строку S на слова с учетом заданных разделителейType TWords = Array[1 .. Параметры-константыType matr=array[1..20,1..30] of byte;  Procedure vivod( n,m: byte; const a:matr); Нетипизированные параметрыFunction EQ (const x, y; size : word) : boolean; type Открытые массивыfunction sum(var x : array of real) : real; Найти количество элементов вектора x, попадающих в интервал [a, b] .procedure Input (n:integer; var ПРОЦЕДУРНЫЕ ТИПЫ. Для объявления процедурного типа используется заголовок процедуры (функции), в котором опускается Вывести на экран таблицу двух функций:  sin1(x) = (sin(x)+1)*ехр(-х) и Переменным процедурных типов допускается присваивать в качестве значений имена соответствующих подпрограммtype Proc Предварительные и внешние описания подпрограмм Procedure A(X,Y: Real): Forward; Procedure B(A,B: Integer): Внешнее описание{$L ABC.OBJ} Procedure A(C,D,E: Real); External; Procedure B(I,F,J: Integer); External

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

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

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

Лекция 6


Слайд 2
Декомпозиция задачиВспомогательный алгоритмВспомогательный алгоритмЗадачаданныерезультат
Текст слайда:

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

Вспомогательный алгоритм

Вспомогательный алгоритм

Задача

данные

результат


Слайд 3
Текст слайда:

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

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


Слайд 4
Текст слайда:

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

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


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

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

ПОДПРОГРАММА
Заголовок :
<имя> (формальные параметры)
Тело:
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;
Var m,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;
type mas = array[1 .. n] of real;
var a, b : mas; i : integer; dif : real;
function average(x : mas) : real;
var i : 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);
var i,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);
Тип выражения должен быть совместим по присваиванию с типом параметра.
Если в вызывающей программе описаны переменные
var x : integer; c : byte; y : longint;
то следующие вызовы подпрограммы Р будут синтаксически правильными:
P(x);
P(c);
P(y);
P(200);
P(x div 4 + 1);


Слайд 17
Текст слайда:

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

program perest;
var a,b,c: integer;
procedure swap(var x,y: integer);
var t: integer;
begin
t:=x; x:=y; y:=t;
end;
begin
writeln(‘Введите три числа ');
readln(a,b,c);
if a>b then swap(a,b);
if b>c then swap(b,c);
if a>c then swap(a,c);
writeln(a,' ',b,' ',c);
readln; end.


Слайд 18
Текст слайда:

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

program pr1;
Uses crt;
Var a,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
Параметры переменныеГлобальные переменныеЛокальные переменныеab3-3Адрес сabc48Адрес сc:=a+bc2458Ответ55a:=b+3;b:=3*a882424
Текст слайда:

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

Глобальные переменные

Локальные переменные

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
Механизм передачи параметров в функции и процедурыГлобальные переменныеЛокальные переменныеcb00Адрес acbd30a:=2b:=b+1d:=3a32d00f:=dОтветf3c:=b-a0
Текст слайда:

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

Глобальные переменные

Локальные переменные

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 на слова с учетом заданных разделителей

Type TWords = Array[1 .. 100] Of String[100];
TDel = Set Of Char; 
Var i, count: BYTE; words: TWords;
DEL:Tdel; S:string;
Procedure vvodvivod(var s:string; flag:boolean);
Begin
If flag then Readln(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)] = ' ' Then Delete(s, Length(s), 1);
end;

Function GetWords(s: String; Var mas: TWords;
dels: TDel): Byte;
Var i, 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);
Var i,j: byte;
Begin
For i:=1 to n do
begin
For j:=1 to m do
Write(a[i.j]:5);
Writeln;
End;
End;
Var i,j: byte;
M:matr;
Begin
Randomize;
For i:=1 to 10 do
For j:=1 to 15 do
m[i,j]:=random(20); // 0<=m[i,j]<20
vivod( 10,15,m);
end.


Слайд 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 < size) and (mas_byte(x)[n] = mas_byte(y)[n]) do
// while (n < size) and (mas_byte[n] = mas_byte(y)[n])
inc(n);
EQ := n = size;
End;
С помощью функции EQ можно сравнить две любые величины.

var a, b : array [1 .. 10] of integer;

EQ(a, b, sizeof(a)) ; { сравнение двух массивов }
EQ(a[2], b[5], 4) ; { сравнение 2-5 элементов массива "a" с 5-8
элементами массива "b", соответственно }

Автоопределенное преобразование

Наложение переменной


Слайд 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;
var i,k:integer;
begin
 k:=0;
 for i:=Low(a) to High(a) do
  if (a[i]>=x1) and (a[i]<=x2) then k:=k+1;
 Kol:=k;
End;

var x:array [1..7] of real;
    y:array [1..5] of real;
    k1,k2,i:integer;

begin
 Input (7,x);
 Input (5,y);
 k1:=Kol(x,0,3);
 k2:=Kol(y,-1,1);
 writeln ('k1=',k1,' k2=',k2);
end.


Слайд 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;
Procedure PrintFunc(XPos: byte; F: Func);
const
np = 20;
var
x: real;
i: integer;
begin
for i := 1 to np do
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;
Function MyFunc (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
Текст слайда:

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


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