- •Лабораторная работа № 4
- •1. Теоретические сведения.
- •1.1. Процедуры.
- •1.2. Функции.
- •1.3. Рекурсивные процедуры.
- •2. Порядок выполнения работы.
- •Метод деления отрезка пополам.
- •3. Содержание отчета
- •4. Контрольные вопросы
- •Варианты заданий. Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
- •Вариант 6.
- •Вариант 7.
- •Вариант 8.
1.1. Процедуры.
Описание процедуры состоит из заголовка процедуры и тела процедуры. Заголовок включает в себя служебное слово procedure, имя процедуры и заключенные в круглые скобки список формальных параметров с указанием их типов:
procedure <имя> (<список формальных параметров>);
Формальные параметры отделяются точкой с запятой (список однотипных параметров может быть перечислен через запятую). После заголовка идут разделы описаний (констант, типов, переменных, процедур и функций, используемых в процедуре) и операторы языка ОР, реализующие алгоритм процедуры.
Например:
procedure f1 (x: real; var y: real; var c: real);
begin
y:=sin(x)/cos(x);
c:=ln(x)/ln(10);
end;
Формальные параметры нельзя описывать в разделе описаний процедуры.
Для обращения к процедуре необходимо использовать оператор вызова процедуры. Он имеет следующий вид:
<имя процедуры> (<список фактических параметров>);
Например:
f1(r, r1, r2);
Фактические параметры в списке отделяются друг от друга запятой. Механизм применения формальных-фактических параметров обеспечивает замену первых параметров последними, что позволяет выполнять процедуру с различными данными. Между фактическими параметрами в операторе вызова процедуры и формальными параметрами в заголовке процедуры устанавливается взаимно однозначное соответствие.
Замечание. Количество, типы и порядок следования формальных и фактических параметров должны совпадать.
1.2. Функции.
Функция, определенная пользователем, состоит из заголовка и тела функции. Заголовок содержит зарезервированное слово function, идентификатор (имя) функции, заключенный в круглые скобки, необязательный список формальных параметров и тип возвращаемого функцией значения:
function <имя> (список формальных параметров): <тип результата> ;
Тело функции представляет собой локальный блок, по структуре аналогичный программе.
Например:
function tan (c: real): real;
begin
tan:=sin(c)/ cos(c);
end;
В теле функции всегда должен быть один оператор, присваивающий значение имени функции.
Обращение к функции осуществляется по имени с указанием списка фактических параметров. Количество, типы и порядок следования формальных и фактических параметров должны совпадать:
<имя функции> (<список фактических параметров>);
Например:
tg: =tan(x);
При использовании процедур и функций переменные объявляются несколько раз в основной программе и подпрограммах.
Переменные и типы, определенные в основной программе до объявления процедур и функций, называются глобальными – они доступны всем функциям и процедурам. Переменные, определенные в какой-либо подпрограмме после раздела описания процедур и функций, называются локальными.
Для правильного определения области действия идентификаторов (переменных) необходимо придерживаться следующих правил:
каждая переменная должна быть описана перед тем, как она будет использована;
областью действия переменной является та подпрограмма, в которой она будет описана;
все переменные в подпрограммах должны быть уникальными;
одна и та же переменная может быть по-разному определена в каждой из подпрограмм;
если имя подпрограммы совпадает с названием стандартной подпрограммы, то последняя игнорируется, а выполняется подпрограмма пользователя;
если внутри какой-либо процедуры встречается переменная с таким же именем, что и глобальная переменная, то внутри процедуры будет действовать локальное описание;
каждая подпрограмма может изменить значение глобальной переменной.