+ All Categories
Home > Documents > Подпрограммы в Паскале

Подпрограммы в Паскале

Date post: 11-Jan-2016
Category:
Upload: burke
View: 47 times
Download: 3 times
Share this document with a friend
Description:
(Технология нисходящего программирования). Подпрограммы в Паскале. Базируется на методе программирования «сверху – вниз» (иное название – метод пошаговой детализации ). - PowerPoint PPT Presentation
Popular Tags:
24
Подпрограммы в Подпрограммы в Паскале Паскале (Технология нисходящего (Технология нисходящего программирования) программирования)
Transcript
Page 1: Подпрограммы в Паскале

Подпрограммы в Подпрограммы в ПаскалеПаскале

(Технология нисходящего (Технология нисходящего программирования)программирования)

Page 2: Подпрограммы в Паскале

Технология нисходящего Технология нисходящего программированияпрограммирования

Базируется на методе программирования «сверху – вниз» (иное название – метод пошаговой детализации).

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

ПОДПРОГРАММА – это обособленная, оформленная в виде отдельной синтаксической конструкции и снабжённая именем часть программы.

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

Page 3: Подпрограммы в Паскале

Виды подпрограммВиды подпрограммПРОЦЕДУРЫ

СЛУЖАТ ДЛЯ ЗАДАНИЯ СОВОКУПНОСТИ ДЕЙСТВИЙ , НАПРАВЛЕННЫХ НА ИЗМЕНЕНИЯ ВНЕШНЕЙ ПО ОТНОШЕНИЮ К НИМ ПРОГАММНОЙ ОБСТАНОВКИ.

ФУНКЦИИЯВЛЯЮТСЯ ЧАСТНЫМ СЛУЧАЕМ ПРОЦЕДУР. ОБЯЗАТЕЛЬНО ВОЗВРАЩАЮТ В ТОЧКУ ВЫЗОВА ОСНОВНОЙ ПРОГРАММЫ ЕДИНСТВЕННЫЙ РЕЗУЛЬТАТ КАК ЗНАЧЕНИЕ ИМЕНИ ЭТОЙ ФУНКЦИИ.

определ

ение

write, writeln,

Read, readln…

Sqr, sqrt, sin, cos …

Встр

оен

ны

е (станд

артн

ые)

Kvur (ax2 + c)

Оп

ред

елён

ны

е по

ль

зов

ателем

flaw

Page 4: Подпрограммы в Паскале

ПРОЦЕДУРЫПРОЦЕДУРЫОписание:Описание:

PROCEDURE <имя>(<служебная информация>);

< блок описаний>;

BEGIN

<тело процедуры>

END;

Page 5: Подпрограммы в Паскале

Имя процедуры – правильный идентификатор

1. Состоит из латинских букв и цифр.

2. Начинается с латинской буквы.

Page 6: Подпрограммы в Паскале

Пример1.

Program prim;Uses crt;Procedure a;Begin write(‘I am procedure’); end;BEGIN clrscr; writeln(‘ Where is a procedure?’); a;Writeln; write(‘good’);Readlnend.

Page 7: Подпрограммы в Паскале

Задания

1. Используя оператор выбора и процедуры, написать программу, вызывающую одну из трех страниц:

1 – справка;

2 – тест;

3 – выход.

2. Используя цикл и процедуры, «построить» забор.

Page 8: Подпрограммы в Паскале

Оператор выбора

Позволяет выбрать одно из нескольких продолжений программы.

CASE < ключ выбора> OF <список выбора>

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

Ключ выбора – выражение, значение которого представлено порядковым типом.

Список выбора

<Константа выбора>:<оператор>;

Page 9: Подпрограммы в Паскале

Работа оператора выбора Вычисляется значение <ключ выбора>; В последовательности операторов

<список выбора> отыскивается такой, которому предшествует константа, равная вычисленному значению <ключ выбора>. Найденный оператор выполняется, после чего оператор выбора завершает работу.

Page 10: Подпрограммы в Паскале

Используя оператор выбора и процедуры, написать программу, вызывающую одну из трех страниц:

1 – справка;2 – тест;

3 – выход.

program menu1;uses crt;varm:integer;procedure sprav;begintextbackground(4);clrscr;gotoxy(38,12);write('spravka')end;procedure test;begintextbackground(2);clrscr;gotoxy(38,12);write('test')end;

procedure vixod;begintextbackground(5);clrscr;gotoxy(38,12);write('vixod')end;BEGIN textbackground(0); clrscr;write('vibor1\2\3=');readln(m);case m of1:sprav;2:test;3:vixod; end;readln; END.

Page 11: Подпрограммы в Паскале

procedure ekran(c:byte;st:string);begintextbackground(c);textcolor(15);clrscr;gotoxy(38,12);write(st)end;begin textbackground(0); clrscr;write('vibor1\2\3=');readln(m);case m of1:ekran(4,'cprav');2:ekran(2,'test');3:ekran(5,'vixod'); end;readln; end.

Page 12: Подпрограммы в Паскале

Что включает в себя Что включает в себя служебная информацияслужебная информация

PROCEDURE <имя>(<список формальных параметров>: <тип>);< блок описаний>;BEGIN <тело процедуры>END;

Page 13: Подпрограммы в Паскале

Вызов процедуры

Необходимо указать имя и список фактических параметров.

Количество и тип формальных и фактических параметров должны совпадать.

Page 14: Подпрограммы в Паскале

Формальные и фактические Формальные и фактические параметрыпараметры

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

Фактические параметры – это параметры, которые передаются процедуре при обращении к ней (т.е. записываются при вызове процедуры в основной программе)

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

Page 15: Подпрограммы в Паскале

Между формальными и фактическими параметрами должно быть полное соответствие:

формальных и фактических параметров должно быть одинаковое количество;

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

Тип каждого фактического параметра должен совпадать с типом соответствующего формального параметра.

Формальные параметры

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

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

Параметры-процедуры

Параметры-функции

Параметры-переменные – это формальные параметры, перед которыми стоит служебное слово VAR. Они передаются по ссылке (передаётся адрес фактического параметра) тогда, когда необходимо передать некоторые новые значения в точку вызова процедуры из программы.

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

Page 16: Подпрограммы в Паскале

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

Глобальные переменные – это те переменные, которые объявлены в описании основной части.

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

Локальные переменные существуют только тогда, когда работает подпрограмма, появляются при вызове и исчезают при завершении работы.

Page 17: Подпрограммы в Паскале

Примеры обращения к Примеры обращения к процедуре (вызова процедуры).процедуре (вызова процедуры).

PROCEDURE SQ (a,b,c: real;VAR x1,x2:real)

Примеры обращения к процедуре:

SQ((25/3+2)*2, -1.5, (8.2-3.1)/3, a1, a2);

SQ(P,Q,R,Y,Z);Фактическим параметром, соответствующим формальному параметру-значению, может быть

• любое выражение соответствующего типа;

• константа соответствующего типа;

• переменная соответствующего типа.

Фактический параметр, соответствующим формальному параметру-переменной, может быть только переменной.

Page 18: Подпрограммы в Паскале

МЕХАНИЗМ ПЕРЕДАЧИ МЕХАНИЗМ ПЕРЕДАЧИ ПАРАМЕТРОВПАРАМЕТРОВА) ПАРАМЕТРЫ-ЗНАЧЕНИЯ (п-з)

1. В памяти выделяется место для каждого формального параметра.

2. Вычисляется значение фактического параметра и засылается в ячейку, соответствующую формальному параметру.

3. Если фактический параметр есть имя переменной, то значение этой переменной пересылается в соответствующий формальный параметр. На этом всякая связь между фактической переменной и формальным параметром обрывается.

Б) ПАРАМЕТРЫ-ПЕРЕМЕННЫЕ (п-п)

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

Page 19: Подпрограммы в Паскале

1. Пример процедуры с 1. Пример процедуры с параметрами-значениямипараметрами-значениями

PROGRAM PZ;

VAR i : integer;

Procedure P1 (i: integer);

Begin

i:=i*2;

End;

BEGIN

i:=2;

P1(i);

WriteLn(‘i=‘, i);

END.

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

i 2

i 2 4

ЭКРАН

i= 2

PROGRAM PZ;

Procedure P1

1.Назовите глобальные и локальные переменные.

2. назовите формальные и фактические параметры.

3.Какие формальные параметры использованы?

Page 20: Подпрограммы в Паскале

22. . ПримерПример процедурыпроцедуры с с параметрами-переменнымипараметрами-переменными

PROGRAM PP;

VAR a,b: integer;

PROCEDURE P2 (x: integer;

VAR y: integer);

Begin

x:=x+1; y:=y+1;

WriteLn(x,’ ‘,y);

End;

BEGIN

a:=0; b:=0;

P2(a,b);

WRITELN(a,’ ‘,b);

END

PROGRAM PP;

Механизм передачи параметров:1.Назовите глобальные и локальные переменные.

2. назовите формальные и фактические параметры.

3.Какие формальные параметры использованы?

PROCEDURE P2a

b

0

0 x

y0адрес яч.b

1

1

1

ЭКРАН

1 1

0 1

Page 21: Подпрограммы в Паскале

Упражнения на механизм передачи параметров в процедурах.

А) var c,d:integer;Procedure P(x,y:integer;);

Begin y:=x + 1;end;

Б) var c,d:integer;Procedure Q(x:integer; var

y:integer);Begin y:=x + 1;end;

B) var c,d:integer;Procedure R(var x,y:integer);

Begin y:=x + 1;end;

1)   для каждой процедуры указать параметры-значения и параметры-переменные;2)   определить, что будет выведено на экран в следующих случаях:с:=2;d:=0;P(sqr( c ) + c, d); Writeln(d); с:=2;d:=0;Q(sqr( c ) + c, d); Writeln(d); 

3) допустимы ли обращения R(sqr( c ) + c, d); и R(c, d); ?

Page 22: Подпрограммы в Паскале

Задания:

1. Даны 4 действительных числа a, b, c, d (0). Решить квадратные yравнения: ax2+bx+c=0;

bx2+cx+d=0;

ax2+dx+c=0;

dx2+bx+c=0.

Page 23: Подпрограммы в Паскале

Задания:

2. Даны 4 действительных числа a, b, c, d (0). Решить линейные yравнения: ax+c=0;

bx+c=0;

ax+d=0;

dx+b=0.

Page 24: Подпрограммы в Паскале

Задачи.1. Вводятся два числа a и b. Определить ab и ba, используя процедуру вычисления степени числа.

PROGRAM z1;

VAR a, b: byte; ab: Longint;

PROCEDURE stepen (x, y : byte, Var z : Longint);

Var i: byte;

Begin

z:=1;

For i:=1 To y Do z:=z*x;

End;

BEGIN

WriteLn(‘Введите два целых числа’);

ReadLn(a,b);

stepen(a, b,ab); WriteLn(a:3, ‘в степени’ b:3, ‘равно ’,ab:10);

stepen(b, a,ab); WriteLn(‘’);

END.


Recommended