Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatica / lin.doc
Скачиваний:
41
Добавлен:
09.04.2015
Размер:
776.19 Кб
Скачать

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

Для работы с записями используют оператор присоединения

<оператор присоединения>::=<заголовок><оператор>

<заголовок>::=with<список переменных-записей>do

<список переменных-записей>::=<переменная-запись>

{,<переменная-запись>}

В простейшем случае оператор присоединения имеет вид

with R do S

Здесь withиdo– служебные слова,R– переменная комбинированного типа, а S– любой оператор.

Смысл использования этого оператора в том, что внутри S ком­поненты переменной R можно обозначать идентификатором полей. Например, вместо R.p:=2 в операторе S можно записать p:=2 (если у пере­менной R есть поле p). Это позволяет сократить размер программы.

В общем случае оператор присоединения имеет вид

with R1,R2,… Rn do S,

что полностью эквивалентно выражению

with R1 do with R2,R3, …Rn do S.

Идентификатор поля в таком операторе обозначает компоненту переменной комбинированного типа из ближайшего объемлющего опера­тора присоединения, в котором указана переменная с таким полем. Следовательно, если две переменные из списка R1,Rn имеют поля, обозначенные одним и тем же идентификатором, то внутри оператора присоединения этот идентификатор обозначает поле той переменной, которая указана в списке позже.

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

Пример.

Пусть имеются описания

varR2:recordA,B,C:integerend;

A: integer;

R3: record

A,D: integer;

B: record C,E: integer end

end;

Тогда оператор присоединения

withR3,B,R2do

begin

A:=1; B:=2; C:=3; D:=4; E:=5

end

эквивалентен составному оператору

begin R2.A:=1; R2.B:=2; R2.C:=3; R3.D:=4; R3.B.E:=5 end.

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

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

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

С математической же точки зрения любая подструктура– это замкнутая часть целого, которую можно рассматривать как самостоя­тельнуюструктуру: подмножество является множеством, подгруппа – группой, подалгебра – алгеброй, подпространство – пространством и т.д.

Таким образом, подпрограмма – это в первую очередь програм­ма. Со всеми полагающимися полноценной программе атрибутами: име­нем, разделами описания меток (label), констант (const), типов (type), переменных (var) и даже со своими (вложенными) функциями и процеду­рами.Подпрограммы подразделяются на процедуры и функции.

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

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

Соседние файлы в папке Informatica