Автор работы: Пользователь скрыл имя, 16 Января 2011 в 18:33, лабораторная работа
Цель работы: изучить работу процедуры и функции и обрести навык написания программ с применением процедур и функций
Тема:
Процедуры и функции в языке Паскаль
Цель работы: изучить работу процедуры и функции и обрести навык написания
программ с применением процедур и функций.
Широко распространена в программах форма повторяемости, когда одна и та же последовательность действий должна выполняться на различных этапах информации. В программах такого рода в различных местах встречаются фрагменты, одинаковые по выполняемым действиям и различающиеся только в значениях исходных данных. При составлении программы приходиться задавать одну и ту же группу операторов, соответствующую каждому из повторяющихся фрагментов. Для более эффективного программирования подобных повторений в языке введено понятие подпрограммы. Повторяющаяся группа операторов оформляется в виде самостоятельной единицы – подпрограммы, записывается однократно, а в соответствующих местах программы обеспечивает лишь обращение к ней. Использование аппарата подпрограммы позволяет сократить объем и улучшить структуру программы с точки зрения наглядности и читаемости. Подпрограмма может быть рассмотрена как самостоятельная программа (со своими входными и выходными данными).
В
языке Паскаль подпрограммы реализуются
в виде процедур и функций,
которые вводятся в программу с помощью
своего описания.
Процедуры описываются в специальном разделе описательной части программы вслед за разделом переменных.
Любая процедура состоит, аналогично программе,
из заголовка процедуры и блока.
Заголовок
процедуры представляет
собой:
PROCEDURE
<ИМЯ> (<СПИСОК ПАРАМЕТРОВ>);
Где PROCEDURE – служебное слово,
ИМЯ – имя процедуры,
СПИСОК ПАРАМЕТРОВ - перечень имен для обозначения исходных данных и результатов работы процедуры с указанием их типов. Параметры, перечисленные в списке, называются формальными. Допускается описание процедуры, несодержащей формальных параметров:
PROCEDURE
<ИМЯ>;
Содержательная часть процедуры представляет
собой блок и состоит, следовательно, из
раздела описаний (меток, констант, типов,
переменных, процедур, и функций) и раздела
операторов, представляющего собой составной
оператор BEGIN
– END. Заканчивается блок процедуры
точкой с запятой.
Пример:
Оформить в виде процедуры алгоритм вычисления
степени y=xn c натуральным показателем
n.
PROCEDURE STEP1 (N:INTEGER;X:REAL;VAR Y:REAL;)
VAR I:INTEGER;
BEGIN
Y:=1;
FOR I:=1 TO N DO
Y:=Y*X;
END;
В заголовке процедуры с именем STEP1 перечислены параметры X, N, определяющие исходные данные процедуры, и параметр Y, обозначающий значение исходной степени – результат выполнения процедуры. Указан также тип всех формальных параметров.
Если в заголовке процедуры параметры указаны без слова VAR, то это параметры-значения. Параметры-значения могут изменяться внутри процедуры, но для внешней программы это изменение окажется незамеченным.
Для получения результатов в основной
программе используются параметры-переменные.
Эти параметры перечисляются после служебного
слова VAR с обязательным указанием
типа.
Тело процедуры состоит:
Это то же вычисление оформим в виде процедуры
без параметров:
PROCEDURE STEP2;
VAR I:INTEGER;
BEGIN
Y:=1;
FOR I:=1 TON DO Y:=Y*X;
END;
В этом случае процедура STEP2 не содержит
списка формальных параметров и работает
с локальной переменной I, описанной
в блоке процедуры, и переменными X,
N, Y называются глобальными по отношению
к процедуре STEP2. Значение глобальных
переменных доступны и могут быть использованы
в любой точке основной программы (в частности,
внутри данной процедуры).
Функция – это подпрограмма, результат выполнения которой есть единственное скалярное значение, присваиваемое имени этой функции. Следовательно, функции являются частным случаем процедур и принципиально отличаются от них тем, что, во-первых, результат выполнения функции – одно значение, а процедуры – одно или несколько; во-вторых, результат выполнения функции передается в основную программу, как значение имени этой функции, а результаты выполнения процедуры – как значения ее параметров.
Описание функции аналогично описанию
процедуры и состоит из заголовка и блока.
Заголовок функции имеет вид:
FUNCTION
<ИМЯ> (<СПИСОК ПАРАМЕТРОВ>):<ТИП>;
Где FUNCTION – служебное слово,
ИМЯ – имя функции,
СПИСОК ПАРАМЕТРОВ – перечень формальных параметров (исходных
ТИП – тип результата: значение, которое
должно приобретать имя функции.
Допускается
описание функции без параметров:
В содержательной части программы-функции
имени должно быть присвоено некоторое
значение (значение ответа), т.е. имя хотя
бы один раз должно присутствовать в левой
части некоторого оператора присваивания.
Пример:
Оформить в виде функции алгоритм вычисления
степени Y=Xn :
FUNCTION STEP3 (N:INTEGER; X:REAL) : REAL;
VAR I:INTEGER;
Y:REAL;
BEGIN
Y:=1;
FOR I:=1 TO N DO
Y:=Y*X;
STEP3:=Y
END;
В заголовке функции с именем STEP3
перечислены параметры N,X, определяющие
ее исходные данные. Результат выполнения
функции (значение локальной переменной
Y) присваивается ее имени STEP3. Тип
результата (тип функции) – REAL,
который указывается в заголовке функции
при ее описании. Введение локальной переменной
Y не обязательно, но придает описанию
функции более наглядный вид.
1.3 Обращение к подпрограммам.
Описание процедуры (или функции), расположенное
в разделе описаний, само по себе никакого
действия не вызывает. Чтобы исполнить
процедуру (или функцию), необходимо в
нужном месте программы поместить обращение
к ней. Обращение к процедуре производится
с помощью оператора процедуры, имеющего
вид:
<ИМЯ>
(<СПИСОК АРГУМЕНТОВ>);
Где ИМЯ – имя процедуры, к которой происходит обращение,
СПИСОК АРГУМЕНТОВ –
перечень конкретных значений (выражений)
и имен, подставляемых на место формальных
параметров процедуры при ее выполнении.
При вызове процедуры формальные параметры,
указанные в заголовке, заменяются аргументами
в порядке их следования: первому слева
параметру в списке ставится в соответствие
первый аргумент, второму – второй и т.д.
Аргументы, перечисленные в операторе
процедуры, называются также фактическими
параметрами. Число, тип и порядок следования
формальных и фактических параметров
должно совпадать. Структура программы,
содержащей процедуру, имеет вид:
Пример:
Cоставить программу вычисления степени
Z=An, где n – целое число и A<>0. Степень
с целым показателем определяется следующим
образом:
Учитывая, что 1/An
= (1/A)n и используя процедуру
STEP1, описанную в пункте 1.1, составим
алгоритм рис.1 а), б) и программу.
{
Определение степени
с целым показателем
}
PROGRAM STEP4;
VAR M:INTEGER;
A,Z:REAL;
{
Вычисление степени
с натуральным
показателем }
PROCEDURE STEP1 (N:INTEGER;X:REAL;VAR Y:REAL);
VAR I:INTEGER;
BEGIN
Y:=1;
Y:=Y*X;
END;
{STEP1}
BEGIN
READ (A,M);
IF M=0 THEN Z:=1
ELSE IF M>0 THEN STEP1(M,A,Z) {Вызов процедуры}
ELSE STEP1(M,1/A,Z);
WRITELN(A:8:3,’В степени ’,M:3,’ равно ’,Z)
END.