Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка3_информатика.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
212.48 Кб
Скачать

Подпрограммы яп Pascal (процедуры и функции)

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

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

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

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

В языке программирования Pascal определены два вида подпрограмм – процедуры и функции.

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

Структура процедур и функций аналогична структуре полной программы на языке Паскаль:

1. Заголовок подпрограммы – задает имя подпрограммы и список формальных параметров с указанием их типов;

2. Раздел описаний;

3. Тело подпрограммы.

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

Процедурой в Турбо Паскале называется особым образом оформленный фрагмент программы, имеющий собственное имя.

Общий вид процедуры:

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

Label <метки>;

Const <описание констант>;

Type <описание типов данных>;

Var <описание переменных>;

<процедуры и функции>;

begin

<основное тело процедуры>;

end;

Для понимания взаимодействия программы и процедуры рассмотрим следующий пример. Слева приведен фрагмент текста основной программы, справа – процедура вычисления суммы двух целых чисел.

B egin Procedure Sum(x,y:integer; Var z:Integer);

. . . Begin

Readln(a,b); z:=x+y;

S um(a,b,c); end;

Writeln(c);

. . .

e nd.

Процедура вызывается указанием ее имени, используемого для обозначения процедуры. Линейный ход выполнения основной программы становится нелинейным – управление вычислительным процессом передается на участок программного кода, занимаемый процедурой. После выполнения процедуры осуществляется возврат на оператор основной программы, следующий за вызовом процедуры. Итак, взаимодействие программы и процедуры по управлению обозначено, рассмотрим взаимодействие по данным. В программе определены переменные a,b,c. В процедуреx,y,z её параметры, но они являются переменными процедуры. При вызове процедуры Sum(a,b,c) из основной программы значение переменной a присваивается переменной x процедуры Sum, а значение переменной b становится значением переменной y. Стрелки на рисунке в одну сторону. Связь переменных c и z обозначена двойной стрелкой, то есть при изменении значения переменной z необходимо произвести соответствующее изменение значения переменной c. Это обратная связь по данным от процедуры к основной программы. На такой тип связи указывает слово Var в описании параметров процедуры.

В любой программе все переменные делятся на глобальные и локальные. В фрагменте программы переменные a,b,c – глобальные, а x,y,z – локальные. Глобальные переменные – это переменные из раздела описаний основной части программы, а локальные – из раздела описаний процедур и функций. Локальные переменные существуют только в течение работы процедуры, определяются (создаются) при её вызове и исчезают после её завершения.

При описании процедуры указывается список формальных параметров. Каждый параметр является локальным по отношению к описываемой процедуре (x,y,z -формальные). Фактические параметры – это параметры, которые передаются процедуре при обращении к ней (a,b,c - фактические). Число и тип формальных и фактических параметров должны совпадать с точностью до их следования.

Формальные параметры процедуры делятся на параметры-переменные и параметры-значения.

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

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

Результат – одно или несколько значений. Оно передается в основную программу как значение ее параметров.

Функцией в Турбо Паскале называется особым образом оформленный фрагмент программы, имеющий собственное имя.

Общий вид функйии:

Function <имя функции> [(список параметров)]: <тип результата>;

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

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