Параметры –константы

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

Синтаксическое описание

Procedure P(const b:byte);

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

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

Реализуем программу которая будет выполнять ввод 2 текстов и нахождение символов, которые присутствуют в обоих текстах и вывод их на экран, и отдельный вывод всех отсутствующих символов.

Uses crt;

Type

Tset=st of char;

Tstring=string[200];

Const

Mn_symbol:tset=[‘a’..’z’];

Var

Str1, str2:tstring;

Mn_str1,mn_str2,mn_result1,mn_result2:tset;

Procedure input _text(zapros:string; var mn_xx:tset; varstr_xx:tstring);

Var

I:byte;

Ch:char;

Begin

Write(zapros);

I:=1;ch:=#0;

Mn_xx:=[];

While (i<=200) and (ch<>#13) do

Begin

Ch:=readkey;

If ch In mn_symbol then

Begin

Write (ch);

Str_xx:=str_xx +ch;

Mn_xx:=mn_xx+[ch]

Inc(i0;

End;

End;

Writelb;

End;

Procedure Output_Mn (Comment: Strinq; mn_xx: TSet);

Var

ch: char;

Beqin

writeln (Comment);

for ch: ‘a’ to ‘ z’ do

if ch in mn_ xx then

write (ch:2)

writeln;

End;

Beqin

Clrscr;

Input_ text (‘Введите текст № 1’ ‘mn_ str1, str1);

Input_ text (‘Введите текст № 2’ ‘mn_ str2, str);

Mn_result1:= mn_str1*mn str2

Mn rsult2:= mn_ symbol-(mn_str1+mn_str2);

Outpt _ Mn (‘ символы одновременно присутствующие в текстах:’, mn_result1);

Outpt _ Mn (‘ символы отсутствующие в текстах:’, mn_result2);

Readkey;

End.

Лекция №4

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

Функции

Общая структура функций совпадают со структурой процедур. Отличительная черта в синтаксисе–записи

Синтаксис записи.

Function «имя» («список формальных параметров»): «тип возвращенного значения»;

Label

Const

Type

Var

…..

Begin

«тело функции»

End;

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

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

Синтаксис вызова функции

«Имя переменной»:= «имя функций» («фактические параметры»);

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

Пример – функция суммы элементов массива.

Type

Massiv_1=array [1..5] of byte;

Const

A:massiv_1=(1,2,3,4,5);

B:massiv_2 = (5,6,7,8,9);

Var

I:byte;

Function sum_mas (p:massiv_1):longint;

Var

S:longint;

Begin

S:=0;

For i:=1 to 5 do

Inc(s,p[i]);

Sum_mas:=s;

End;

Var

Sum:longint;

Begin

Sum:=sum_mas(a);

Write(‘Сумма ’,sum);

Write (‘Сумма ’, Sum_mas (b));

End.

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

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

 
 


Procedure P(k= record

I:char;

B:byte;

End;)

Правильный вариант

Type

Res=record

I:char;

B:byte;

End;

………

Procedure p(k:res);


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



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