Процедуры и функции без параметров

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

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

Пример, использования процедуру без параметров.

Представленная процедура обеспечивает выдачу справочной информации по кафедре «Математического обеспечения и технологий программирования».

Program PrjProcSprav;

{$APPTYPE CONSOLE}

Uses

SysUtils;

Procedure SpraV;

Begin

Writeln ('**************');

Writeln ('* KAFEDRA *');

Writeln ('* MO & TP *');

Writeln ('* Komnata *');

Writeln ('* 348 *');

Writeln ('* Telefon *');

Writeln ('* 442-80-98 *');

Writeln ('**************');

Readln;

End;

Begin

Sprav;

End.

Пример использования функции без параметров.

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

Во-первых, «Шифр плательщика». Реквизит представлен в виде символьной строки длиной 10 символов;

Во-вторых, «Наименование изделия». Реквизит представлен в виде символьной строки длиной 20 символов;

В-третьих, «Дата оплаты». Реквизит представлен в виде символьной строки длиной 8 символов (два символа определяют день, два символа определяют месяц, четыре символа определяют год);

В-четвертых, "Количество оплаченных изделий". Реквизит представлен в виде числа, не имеющего дробной части;

В-пятых, "Цена изделия". Реквизит представлен в виде числа, имеющего дробную часть;

В-шестых, "Сумма оплаты". Реквизит представлен в виде числа, имеющего дробную часть.

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

Program PrjFuncTest;

{$APPTYPE CONSOLE}

Uses

SysUtils;

Type

TRealiz = Record

ShPlat:String[10];

NIzd:String[20];

Date:String[8];

Quant:Integer;

Price:Real;

Sum:Real;

End;

TARealiz = Array [1..40] Of TRealiz;

Var

Realiz:TARealiz;

I,N:Integer;

Function Test:Boolean;

Var

I:Integer;

Begin

Test:=True;

For I:= 1 To N Do

If Realiz[I].Sum <> Realiz[I].Quant*Realiz[I].Price Then

Test:=False;

End; {Function}

Begin

Writeln('Vvedite chislo zapisei');

Readln(N);

For I:= 1 To N Do

Begin

Writeln ('Shifr platelshika');

Readln(Realiz[I].SHPlat);

Writeln ('Nazvanie izdelia');

Readln(Realiz[I].Nizd);

Writeln ('Data');

Readln (Realiz[I].Date);

Writeln ('Kolichestvo');

Readln(Realiz[I].Quant);

Writeln ('Cena izdelia');

Readln(Realiz[I].Price);

Writeln ('Symma oplati');

Readln(Realiz[I].Sum);

End;

If Test = False Then Writeln ('Document ne veren')

Else writeln ('Document veren');

Readln;

End.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: