Паскаль Тема 5: Процедуры и функции, Процедуры без параметров и с параметрами


Лекция Р_8

Процедуры и функции

Цель: Ознакомить студентов с понятием процедур и функций, рассмотреть использование процедур и функций при создании различных программ

План

1.  процедуры

1.1. Процедуры без параметров

1.2. Процедуры с параметрами

1.3. Параметры-значения и параметры-переменные в процедурах

2.  функции

3.  Создание программ с использованием обращений к подпрограммам

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

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

Процедура состоит из заголовка и тела. Это — якобы программа в миниатюре. Когда процедура выполнит свою задачу, программа продолжится с указания, которая следует непосред ­ средне по указанию вызова процедуры. Использование имени процедуры в программе называется указанием процедуры или исп лыком процедуры.

Формат записи процедуры:

Procedure <имя процедуры>;

<Тело процедуры>;

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

Так, например, программу нахождения объема конуса можно разбить на несколько процедур:

1) procedure InputDate;

2) procedure Vkazivka;

3) procedure OutputDate.

Procedure InputDate — выполняет ввод данных в программу.

Procedure Vkazivka — выполняет указания для нахождения объема конуса.

Procedure OutputDate — выполняет вывод данных на дисплей.

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

Читать  Конспект лекций Паскаль для 1 курса заочного отделения – Методические рекомендации к выполнению контрольных работ

Задача. Составить программу нахождения объема конуса.

Program Vkonus;

Const P = 3.14;

Var R, H, V: real;

Procedure InputDate;

Begin write ( ‘r =’);

readln (R)

write ( ‘h =’);

readln (H)

End;

Procedure Vkazivka;

Begin

V = P * Sqr (R) * H / 3;

End;

Procedure OutputDate;

Begin

writeln ( ‘V =’, V);

End;

Begin {Основная программа}

InputDate;

Vkazivka;

OutputDate;

End.

1.2. Процедуры с параметрами. В процедуре можно объявлять константы, переменные, другие о цедуры и функции. Раздел описания в процедурах имеет такую ​​же структуру, как и в основной программе.

Объявлены внутри процедуры переменные называются Локальными по отношению к данной процедуре. Локальные переменные не доступны за пределами данной процедуры. Изменения, которые происходят с локальными переменными внутри процедуры, не влияют на значения переменных с теми же именами, которые описаны вне данной процедурой.

Переменные, которые используются в процедуре, но описаны вне ее, называются Глобальными по отношению к данной об этом дури. Любые изменения значений глобальных переменных внутри о цедуры изменяют значения этих переменных вне процедуры.

Переменная А в основной программе принадлежит к целому типу, но в процедуре LOKAL есть своя собственная

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

Читать  Цикл со счетчиком – Счетчик цикла

Имя програми. имья переменной

Имя программы — имя программы, которое указано в заголовке программы «program…»

Имя переменной — идентификатор переменной, указанный в разделе описания переменных — «var….»

1.3. Паметры-значение и параметры-переменные в процедурах

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

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

Формат записи процедуры:

Procedure имя процедуры (имя переменной: тип переменной)

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

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

151

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

Program PARAMETR;

Var C, D: integer;

Procedure PARAM (A, B: integer);

Var S: integer;

Begin

S: = 0;

S = A + B;

Writeln ( ‘s =’, S)

End;

Begin

C: = 10;

D = 100;

param (C, D); {Первый способ}

param (100,100) {второй способ}

End.

Переменные А и В — это формальные параметры. Переменные С и D — фактические параметры. Значение фактических параметров С = 10 D = 100 передаются формальным параметрам А и В.

Обратите внимание на то, как двумя способами можно вызвать процедуру и передать значения переменным.

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

Читать  Технология построения алгоритмов

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

Для того, чтобы процедура смогла изменить значение фактич них параметров, нужно изменить способ передачи параметров в процедуру. Новый способ называется Передачей по имени.

При использовании этого способа заголовок процедуры меняется следующим образом: перед идентификатором формального параметра в заголовке процедуры указывается служебное слово Var.

Переменные, перед которыми записано служебное слово Var, называются Параметрами-переменными.

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

2. функции

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

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

Function <имя функции> (список формальных параметров) <тип результата>

Обращение к функции (обязательно должно быть включено в выражение как операнд) имеет следующий вид:

<имя функции> (список фактических параметров).

Задача. Найти значение числа комбинаций n!

Нахождение значения факториала числа оформим в виде функции. Тогда программа решения данной задачи будет иметь вид:

Program KOMBINACIJ;

Var N, M, C: integer;

Function FACT (K: integer): integer;

Var i, F: integer;

Begin

F: = 1;

For i: = 1 to К do F = F * i;

FACT = F;

End;

Begin

write ( ‘n =’);

readln (N)

write ( ‘m =’);

readln (M)

C = FACT (N) Div (FACT (M) * FACT (NM))

Читать  Введение и вывод значений величин | Составляющие алгоритма обработки величин

writeln ( ‘Количество комбинаций с «, n,’ пo ‘, m,’ = ‘, C)

End.

Обратите внимание на то, что в самом теле функции FACT необходимо переменной, имя которой совпадает с именем самой функции, присвоить значение результата выполнения функции: FACT = F.

155

3. Создание программ с использованием обращений к подпрограммам

Составить программу нахождения НОК (наименьшего общего кратного) трех натуральных чисел а, Ь, с.

Program PROBOTA8;

Var A, B, C, Y, N, S, K: integer;

Procedure NSKl (M, N: integer; var pNSK: integer);

Begin

pNSK = M * N;

while M <> N do

If M> N then M = MN

else N = NM;

pNSK = pNSK div M;

End;

Begin

Writeln ( ‘Введите значение трех чисел a, b, с:’);

Write ( ‘a =’);

Readln (A);

Write ( ‘b =’);

Readln (B)

Write ( ‘c =’);

Readln (C)

NSK1 (A, B, Y)

NSK1 (C, Y, NSK)

Writeln ( ‘HCK =’, NSK)

End.

[Всего голосов: 3    Средний: 5/5]