Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование 2 семестр 1 курс.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
523.82 Кб
Скачать
  1. Параметры значения – данные параметры описываются в заголовке , могут изменять свои значения на ряду с прочими переменными , но эти изменения будут строго локальными и не передадутся в вызывающее параметры, то есть изменение параметров значения внутри подпрограмм не изменяет значения , подставленных на их место аргументов (фактических параметров ). При вызове подпрограмм , как параметра – значения , так же как и любой локальной переменной , отводится место для хранения данных в стеке . Эти отведенные места памяти в параметрах и локальных переменных равны столько времени , сколько выполняется подпрограмма . После завершения работы подпрограммы значение локальных переменных и параметров – значения является не доступными , поскольку они выгружены из стека .

  2. Параметры – переменные.

При объявлении параметры - переменные отличаются от параметров – значения синтаксическим описанием , а именно : пред параметрами – переменными ставиться ключевое слово Var .

Пример :

Procedure p (a,b: byte ; Var c:char );

Параметры значений параметры переменных

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

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

Примеры показывающие практические особенности подпрограмм .

Var

A1,b1,k:bayte;

Procedure p (p_a ,p_b :byte; var p_k:byte );

Begin

P_a:=p_a+p_b;

P_b:=p_a+3;

P_k:=p_b+p_a;

End;

Begin

A1:=10;

B1:=10; (a)

K1:=10;

P(a1,b1,k ); (б)

End. (в)

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

Подобно параметрам – переменным возможно использовать параметры – константы , которые доступны только для чтения . При описании такого параметра используются ключевое слова 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

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