Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты.Паскаль.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
70.59 Кб
Скачать
  1. Формат процедуры, размещение ее в программе обращение к ней из вызывающей программы.

Процедурой называется часть программы, предназначенная для решения определенной задачи или подзадачи.

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

Оператор Program должен быть первым, а тело программы последним. Порядок описания остальных составляющих жестко не регламентирован, но идентификаторы должны быть объявлены до их использования во избежание ошибок компиляции.

Общая структура процедуры будет иметь вид:

Procedure имя процедуры (параметры); {Заголовок процедуры}

Label метки;

Const объявление констант;

Type определения типов данных;

Var объявления переменных;

Процедуры, входящие в данную;

Begin

Тело главной процедуры;

End;

Таким образом, процедура состоит подобно основной программе из заголовка процедурой программного блока. Заголовок процедуры в отличие от заголовка программы не может быть опущен. Он имеет вид:

PROCEDURE < ИМЯ > (<СПИСОК ПАРАМЕТРОВ>);

где PROCEDURE - служебное слово; ИМЯ - имя процедуры, определяемое в соответствии с общими правилами построения идентификаторов; СПИСОК ПАРАМЕТРОВ (формальных) - перечень имен для обозначения исходных данных и результатов работы процедуры с указанием их типов.

Допускается описание процедуры, не содержащее <СПИСКА ПАРАМЕТРОВ>:

PROCEDURE < ИМЯ >;

в этом случае параметры в процедуру и из нее передаются через систему глобальных параметров (см. ниже).

Сразу за заголовком подпрограммы может следовать одна из стандартных директив ASSEMBLER, EXTERNAL, FAR, FORWARD, INLINE, INTERRUPT, NEAR.

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

Procedure Sub (a:real; b:real; n:integer; k:integer; ch:char);

Содержательная часть процедуры представляет собой блок и состоит, следовательно, из раздела описаний (меток, констант, типов, переменных, процедур и функций) и раздела операторов, представляющего собой составной оператор Begin - End, в котором для обеспечения наглядности программы слова Begin и End целесообразно записывать с заглавной буквы. Заканчивается блок процедуры точкой с запятой.

Обращение к процедуре

Если процедура объявлена, то в программе ее можно использовать многократно, просто задавая ее имя и, если необходимо, список аргументов, т.е. вызов происходит с помощью оператора вызова:

<ИМЯ ПРОЦЕДУРЫ> (<СПИСОК ПАРАМЕТРОВ>);

где ИМЯ ПРОЦЕДУРЫ - имя процедуры, к которой происходит обращение; СПИСОК ПАРАМЕТРОВ (фактических) - перечень конкретных значений (выражений) и имен, подставляемых на место формальных параметров процедуры при ее выполнении.

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

Формальные параметры - это переменные, фиктивно (формально) присутствующие в процедуре и определяющие тип и место подстановки фактических параметров.

Фактические параметры - это реальные объекты программы, заменяющие в теле процедуры при ее вызове формальные параметры.

Над этими объектами и производятся действия, предусмотренные операторами тела процедуры.

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

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]