Разделы презентаций


Вложенные программы

Содержание

Укрупненная схема алгоритма для курсовой работы

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

Слайд 1Структуризация
Восходящее проектирование алгоритмов и программ
Нисходящее программирование («сверху - вниз)

СтруктуризацияВосходящее проектирование алгоритмов и программНисходящее программирование («сверху - вниз)

Слайд 2Укрупненная схема алгоритма для курсовой работы

Укрупненная схема алгоритма для курсовой работы

Слайд 3Подпрограммы
процедуры и функции
Заголовки:
PROCEDURE (список формальных параметров);
FUNCTION (список формальных параметров):;
Формальные параметры

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

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

ASSEMBLER;
EXTERNAL;
FAR;
FORWARD;
INLINE;
INTERRUPТ;

Примеры заголовков: PROCEDURE AB (a:real; b:integer; VAR c:char)
FUNCTION FF(x1,x2:real):real;

ЗАГОЛОВОК;
Директива;
LABEL
{Разделы} TYPE
{описаний} CONST
VAR
{Описания процедур и функций} BEGIN
{Раздел операторов}
END;

Подпрограммыпроцедуры и функции	Заголовки:PROCEDURE (список формальных параметров);FUNCTION (список формальных параметров):;Формальные параметры - параметры, описанные в заголовке и используемые

Слайд 4Вложенные подпрограммы.
Принцип локализации имен переменных
(Р1 и Р2 вложены в

Р).
Program OSN;
VAR A,B,C: real; {глобальные перем}
Procedure P(var v1,v2:byte);

Var s, d: byte; {локальные для P}
Procedure P1(var h1,h2:real);
Var m: byte; {локальная дляР1}
Begin
{тело подпрограммы P1}
{действуют A,B,C,h1,h2,s, d,m}
End;
Procedure P2( f : real);
Var x: real; {локальная дляР2}
Begin
{тело подпрограммы P2}
{действуют A,B,C,f,x,s, d}
End;
Begin
{тело подпрограммы P}
{действуют A,B,C,v1,v2,s, d}
End;
Procedure R( y1,y2,y3:integer);
Вложенные подпрограммы. Принцип локализации имен переменных(Р1 и Р2 вложены в Р). Program OSN;VAR A,B,C: real; {глобальные перем}

Слайд 5Константы, переменные, типы, описанные в разделе описаний основной программы называются

глобальными.
В основной программе можно использовать только переменные A,B,C.
Внутри

подпрограммы – локальные. Область действия

Procedure R( y1,y2,y3:integer);
Var z: integer; {локальная для R}
b:byte; ; {локальная для R закрывает В глобальную}
Begin
{тело подпрограммы R}
{действуют A,C-глобальные,y1,y2,y3-форм,z, b -локальные}
End;

BEGIN

{тело основной программы}
{действуют А, В,С}
{вызываются п/п Р и R}

END.

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

Слайд 6Вызов подпрограмм
(список фактических параметров через запятую);
;
Количество, тип

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

порядку перечисления формальных параметров в описании этой подпрограммы.
Вложенные п/п могут вызываться только внутри охватывающей п/п.

Процедуры

PROCEDURE <имя>(список формальных параметров); {Заголовок}
LABEL {раздел описаний (метки, }
TYPE { типы, }
CONST { константы, }
VAR { переменные ) }
{описания вложенных процедур и функций}
BEGIN
{операторы подпрограммы}
END;

Вызов подпрограмм (список фактических параметров через запятую);; Количество, тип и порядок перечисления фактических параметров должен обязательно соответствовать

Слайд 7Процедуры без параметров


PROGRAM PROС;
VAR A,B:INTEGER; {глобальные}
PROCEDURE STEP23;
BEGIN

A2:=A*A; A3:=A2*A;
WRITELN(A:5; A2:5; A3:6);
END;
BEGIN
READ(A,B);
WRITELN('число квадрат куб');
STEP23;
A:=B;


STEP23;
END.

Пример: по заданным А и В вычислить их квадраты и кубы

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

Процедуры без параметровPROGRAM PROС;VAR A,B:INTEGER;	{глобальные}PROCEDURE STEP23;  BEGIN   A2:=A*A; A3:=A2*A;   WRITELN(A:5; A2:5; A3:6);

Слайд 8Процедуры с параметрами
Любой из формальных параметров процедуры может быть либо

параметром - значением, либо параметром переменной.
Пример:

PROCEDURE P(А:REAL; VAR А2,А3:REAL);
{А - параметр-значение, А2,А3 - параметры-переменные}
Пример: Вычислить вторую и третью степени для
заданных чисел Х и У и их суммы

PROGRAM PROС;
VAR x,y,x2,y2,x3,y3:word; {глобальные}
PROCEDURE STEP123(A:word;Var A2,A3:word);
BEGIN
A2:=A*A; A3:=A2*A;
END;
BEGIN
READ(x,y);
WRITELN('число квадрат куб');
STEP123(x,x2,x3); WRITELN('x=',x:3; x2:5; x3:6);
STEP123(y,y2,y3); WRITELN('y=',y:3; y2:5; y3:6);
WRITELN('сумма квадратов=', х2+y2);
WRITELN('сумма кубов=', х3+y3);
END. _

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

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

FUNCTION :; {без параметров}

FUNCTION (формальные параметры):; {c

параметрами}
LABEL

{раздел описаний меток}
CONST {константы}
TYPE { типы}
VAR { переменные}
{описание вложенных процедур и функций}
BEGIN
{операторы функции}
<имя>: =<выражение> {обязательный оператор}
END;

Функция передает в вызывающую программу единственное значение, которое хранится под ее именем.
_

Функции 		FUNCTION :;  {без параметров}FUNCTION (формальные параметры):;  {c параметрами}LABEL

Слайд 10PROGRAM FUNC;
VAR Y,X :REAL; N:INTEGER;

FUNCTION STEPEN (M:INTEGER; A:REAL): REAL;
VAR P:

REAL; I:INTEGER;
BEGIN
P:=1;
FOR

I:=1 TO M DO P:=P*A;
STEPEN:=P;
END;

BEGIN
READ (X,N);
Y:= stepen(2,x)+stepen(N,3);
WRITELN ('y=', y);
END.

Пример: y=x2+3N
Вычислим произвольную целую
степень с помощью функции

PROGRAM FUNC;VAR Y,X :REAL; N:INTEGER;FUNCTION STEPEN (M:INTEGER; A:REAL): REAL;VAR P: REAL; I:INTEGER;  BEGIN   P:=1;

Слайд 11Пример 2. Подсчитать общее количество цифр в трех числах X,Y,Z.
Program

FUN_kol2; {Возврат дополнительного значения k из функции}
VAR X,Y,Z:LongInt;
xk, yk, zk:byte;

- количество цифр для каждого

FUNCTION KOL(A:LongInt; Var k:byte):byte;
Begin
k:=0;
Repeat
A:=A div 10;
k:=K+1
Until A=0;
KOL:=k
end;

BEGIN
Writeln(' Введи три целых числа '); Read(x,y,z);
Writeln('всего в 3 числах ', KOL(x,xk)+KOL(y,yk)+KOL(z,zk),' - цифр ');
Writeln('В числе Х ', xk,' - цифр ');
Writeln('В числе Y ', yk,' - цифр ');
Writeln('В числе Z ', zk,' - цифр ');
readln
END.
Пример 2. Подсчитать общее количество цифр в трех числах X,Y,Z.Program FUN_kol2; {Возврат дополнительного значения k из функции}VAR	X,Y,Z:LongInt;

Слайд 12
Передача в подпрограмму параметров-массивов
и параметров-строк
Пример: TYPE ATYPE=

ARRAY[1..10] OF REAL;

PROCEDURE R(A:ATYPE);

Пример:
TYPE INTYPE=STRING[15];
ONTYPE=STRING[30];

FUNCTION R(А:INTYPE): ONTYPE; {строка как один элемент}

Передача в подпрограмму параметров-массивов и параметров-строкПример: TYPE   ATYPE= ARRAY[1..10] OF REAL;

Слайд 13Program FUN16;
Const N=10; число элементов в массиве
TYPE mass=array[1..N] of 0..16;
VAR A,B,C:mass;

i:byte;
FUNCTION CASE16(A:mass):byte;
VAR k:byte;
BEGIN
k:=0;
For

i:=1 to N do
if a[i]<10 then Write(a[i]:2,' ')
else
Begin
k:=k+1;
CASE a[i] of
10: Write(‘ A ');
11: Write(‘ B ');
12: Write(‘ C ');
13: Write(‘ D ');
14: Write(‘ E ');
15: Write(‘ F ');
else Writeln('Ошибка ');
end;
end;

Пример 2. В трех одномерных массивах A,B,C целых чисел от 0 до 16 заменить числа шестнадцатеричными цифрами. Подсчитать в каждом массиве сколько цифр обозначены буквами.

Program FUN16;Const N=10; число элементов в массивеTYPE	mass=array[1..N] of 0..16;VAR	A,B,C:mass;       i:byte;	FUNCTION CASE16(A:mass):byte;VAR

Слайд 14 Writeln;
CASE16:=k имени функции присвоим

значение
end;
BEGIN
randomize;
For i:=1 to N

do a[i]:=random(15); {можно ввод и печать тоже}
For i:=1 to N do b[i]:=random(15); {оформить подпрограммой}
For i:=1 to N do c[i]:=random(15);
Writeln('В массивах ');
Write('А - ');
For i:=1 to N do Write(a[i]:2,' ');
Writeln;
Writeln(' ',case16(A),' - букв ');
Write('B - ');
For i:=1 to N do Write(b[i]:2,' ');
Writeln;
Writeln(' ',case16(B),' - букв ');
Write('C - ');
For i:=1 to N do Write(c[i]:2,' ');
Writeln;
Writeln(' ',case16(C),' - букв ');
readln
END.
Writeln;   CASE16:=k имени функции присвоим значение end;BEGIN randomize;    For

Слайд 15Пример 3. В трех одномерных массивах A,B,C целых чисел от

0 до 15
заменить числа шестнадцатеричными цифрами.
Program proc16ma;
Const N=10;

{число элементов в массиве}
TYPE mass=array[1..N] of 0..16;
VAR A,B,C:mass;
i:byte;
PROCEDURE P16(A:mass);
VAR k:byte;
BEGIN
k:=0;
Write(' в 16 СС - ');
For i:=1 to N do
CASE a[i] of
0..9: Write(a[i]:2,' ');
10: Write(' A ');
11: Write(' B ');
12: Write(' C ');
13: Write(' D ');
14: Write(' E ');
15: Write(' F ');
else Writeln('Ошибка ');
end;
Writeln;
end;
Пример 3. В трех одномерных массивах A,B,C целых чисел от 0 до 15 заменить числа шестнадцатеричными цифрами.

Слайд 16BEGIN
randomize;
For i:=1 to N do a[i]:=random(15);

{можно ввод и печать тоже}
For i:=1 to N

do b[i]:=random(15); {оформить подпрограммой}
For i:=1 to N do c[i]:=random(15);
Writeln('Массивы ');
Write('А исходный - ');
For i:=1 to N do Write(a[i]:2,' ');
Writeln;
P16(A);
Write('B исходный - ');
For i:=1 to N do Write(b[i]:2,' ');
Writeln;
P16(B);
Write('C исходный - ');
For i:=1 to N do Write(c[i]:2,' ');
Writeln;
P16(C);
readln
END.
BEGIN  randomize;  For i:=1 to N do a[i]:=random(15); {можно ввод и печать тоже}  For

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

порядке
PROGRAM REKURS;
VAR N:INTEGER;
PROCEDURE REVERS(M:INTEGER);
BEGIN
WRITE(M MOD 10);

IF (M DIV 10)<>0 THEN revers (M DIV 10);
END;

BEGIN
WRITE(‘Введи целое число без знака’);
READ (N);
REVERS (N);
END.
РекурсияПример: Пусть задано целое положительное число, выдать цифры в обратном порядке PROGRAM REKURS;VAR N:INTEGER;PROCEDURE REVERS(M:INTEGER);BEGIN

Слайд 18Условие полного окончания работы рекурсивной процедура должно находиться в самой

процедуре .
Рекурсия может быть прямой или косвенной. (А→ В

→ А).

Опережающее описание

PROCEDURE A(J:BYTE);
BEGIN
...
B(J);
END;
PROCEDURE B; {параметры опускаются}
BEGIN
...
A(I);
END.

PROCEDURE B(I:BYTE); FORWARD;

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

FORWARD (вперед).

Условие полного окончания работы рекурсивной процедура должно находиться в самой процедуре . Рекурсия может быть прямой или

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

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

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

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


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

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