Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык программирования Pascal - redact Мигунов.doc
Скачиваний:
8
Добавлен:
20.09.2019
Размер:
434.69 Кб
Скачать

Оператор присоединения

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

with <имя_записи> do <действие с полем записи>;

Следует обратить внимание на то, что после служебного слова do может стоять только один оператор, но он может быть составным (любая последовательность операторов, заключенная в операторные скобки begin end ).

БЕЗ оператора присоединения:

for I:=1 to 100 do

begin

writeln (‘введите сведения о’, I , ‘-м студенте’);

writeln (‘введите фамилию, имя и отчество’);

readln (student[I].fio);

writeln (‘введите дату рождения’);

readln (student[I].dat_r);

writeln (‘введите адрес’);

readln(student[I].adres);

writeln (‘введите курс’);

readln(student[I].curs);

writeln (‘введите группу’);

readln (student[I].grupp);

end;

С оператором присоединения:

for I:=1 to 100 do

with student[I] do

begin

writeln (‘введите сведения о’, I , ‘-м студенте’);

writeln (‘введите фамилию, имя и отчество’);

readln (fio);

writeln (‘введите дату рождения’);

readln (dat_r);

writeln (‘введите адрес’);

readln(adres);

writeln (‘введите курс’);

readln(curs);

writeln (‘введите группу’);

readln (grupp);

end;

Подпрограммы

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

  1. подпрограмма-процедура;

  2. подпрограмма-функция.

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

Подпрограммы-процедуры

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

Procedure <имя процедуры> (<формальные параметры>);

{блок описания}

begin

{блок операторов}

end;

Тест процедуры указывается в блоке описания основной программы. В блоке операторов основной программы содержится обращение к этой процедуре.

Формальные параметры бывают входные и выходные.

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

(<имя перемен. 1>:<тип переменной>; <имя перемен.2>,., <имя перемен.3>,<имя перемен.4>:<тип переменной>); var <имя перемен. n>:<тип переменной>,..., var <имя перемен. x>,<имя перемен. y>:< тип переменной >;

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

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

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

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

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

Program ma;

Var

C:real;

N,m:byte;

N1,m1,n_m1:longint;

Procedure fackt(k:byte;var p:longint);

Var

I:byte;

Begin

P:=1;

For i:=1 to k do p:=P*I;

End;

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

Begin

Repeat

Write (‘m=’, ‘n=’);

Read (m,n);

Until n>m;

Fackt (n,n1);

Fackt (m,m1);

Fackt (n_m, n_m1);

C:= n1/m1*(n-m)1;

Write (‘c=’,c);

Readln;

End.