Рассмотрим использование процедуры на примере программы поиска максимума из двух целых чисел.

Группа № 11 Информатика и ИКТ

20.03.2020

Урок № 31

Тема: Подпрограммы-процедуры. Правила описания и использования подпрограмм-процедур.

 

Процедуры предназначены для выполнения некоторой последовательности действий.

Чтобы использовать подпрограмму – процедуру её надо описать и к ней надо уметь обращаться.

Описание:

1. выбрать для неё имя.

2. определить параметры.

3. составить последовательность действий, которые надо выполнять, для получения результата.

Обращение: вызов выполнения указанных действий, для конкретных значений параметров.

Параметрыбывают следующих видов:

I. Глобальныепараметры описываются в головном модуле, доступны любой подпрограмме.

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

II. Формальные – описываются в заголовке процедуры, к ним относятся входные и выходные параметры.

III. Входные – это и IV. параметры – значений описываются через запятую с указанием типа. При выходе из процедуры не сохраняются.

III. Выходные – это и IV. параметры – переменные описываются после словаVAR через запятую, с указанием типа, при выходе из процедуры сохраняются.

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

 

II. Фактические – в головном модуле при вызове процедуры.

При вызове (обращении) формальные параметры заменяютсяна фактические.

 

Формальные и фактические должны совпадать по 3 –ём признакам:

1. по количеству

2. по типу

3. по порядку следования.

Описание процедуры

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

Рrосеdиге <имя> (формальные параметры);

VAR (описание локальных параметров, они могут быть или не быть)

begin

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

end; (конец процедуры)

BEGIN (головного модуля)

Фактические параметры

END.

Используя подпрограмму – процедуру рассмотрим несколько задач

1.Составить программу сложения 2-х чисел, значения вводятся с клавиатуры.

uses crt ; (глобальные) (формальные)

var a,b,s:real;

procedure summa (x,y:real; var s:real);

begin (параметры – переменные, выходные, при выходе сохраняются)

s:=x+y; (параметры – значений , входные, при выходе не сохраняются)

end;

begin

writeln('bbedite 2 chisla ');read(a,b);

summa(a,b,s);

writeln('s=',s:3:1);

readkey;

end.

2. Составить программу нахождения максимального из четырёх чисел, вводимых с клавиатуры.

uses art;

var a,b,s,c,d:real;

procedure maxim (x,y: real; var s:real);

begin

if x<y then s: =y else s: =x;

end;

begin

clrscr;

writeln('bbedite 4 chisla ');readln(a,b,c,d);

В переменную S заносим большее из двух чисел А и В.

maxim(a,b,s);

В переменную S заносим большее из двух чисел С и S.

maxim(c,s,s);

В переменную S заносим большее из двух чисел D и S.

maxim(d,s,s);}

writeln('max=',s:3:I);

readkey;

end.

Описание и вызов процедур и функций

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

Формат описания процедуры имеет вид:

procedure имя процедуры (формальные параметры); раздел описаний процедурыbegin исполняемая часть процедурыend;

Формат описания функции:

function имя функции (формальные параметры):тип результата; раздел описаний функцииbegin исполняемая часть функцииend;

Формальные параметры в заголовке процедур и функций записываются в виде:

var имя праметра: имя типа

и отделяются друг от друга точкой с запятой. Ключевое слово var может отсутствовать (об этом далее). Если параметры однотипны, то их имена можно перечислять через запятую, указывая общее для них имя типа. При описании параметров можно использовать только стандартные имена типов, либо имена типов, определенные с помощью команды type.Список формальных параметров может отсутствовать.

Вызов процедуры производится оператором, имеющим следующий формат:

имя процедуры(список фактических параметров);

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

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

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

имя функции := результат;

При вызове процедур и функций необходимо соблюдать следущие правила:

  • количество фактических параметров должно совпадать с количеством формальных;
  • соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.

Заметим, что имена формальных и фактических параметров могут совпадать. Это не приводит к проблемам, так как соответствующие им переменные все равно будут различны из-за того, что хранятся в разных областях памяти. Кроме того, все формальные параметры являются временными переменными - они создаются в момент вызова подпрограммы и уничтожаются в момент выхода из нее.

 

 

Закрепление нового материала

Рассмотрим использование процедуры на примере программы поиска максимума из двух целых чисел.

var x,y,m,n: integer; procedure MaxNumber(a,b: integer; var max: integer);begin if a>b then max:=a else max:=b;end; begin write('Введите x,y '); readln(x,y); MaxNumber(x,y,m); MaxNumber(2,x+y,n); writeln('m=',m,'n=',n);end.

Аналогичную задачу, но уже с использованием функций, можно решить так:

var x,y,m,n: integer; function MaxNumber(a,b: integer): integer; var max: integer;begin if a>b then max:=a else max:=b; MaxNumber := max;end; begin write('Введите x,y '); readln(x,y); m := MaxNumber(x,y); n := MaxNumber(2,x+y); writeln('m=',m,'n=',n);

Домашнее задание: проработать лекцию и § 23, написать конспект.

Учебник: Информатика. Базовый уровень: учебник для 10 класса / Семакин И. Г., Хеннер Е. К., Т.Ю. Шеина.- 5-е изд. — М.: БИНОМ. Лаборатория знаний, 2015. —264 с.

 


Дата добавления: 2020-04-25; просмотров: 313; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!