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

Министерство образования Российской Федерации

Методические указания к домашнему заданию

«ИСПОЛЬЗОВАНИЕ ПРОЦЕДУР И ФУНКЦИЙ В СРЕДЕ ТУРБО-ПАСКАЛЬ»

по курсу «Основы алгоритмизации и программирования»

Калуга 2011г.

Белов Е.С. Методические указания к домашнему заданию «ИСПОЛЬЗОВАНИЕ ПРОЦЕДУР И ФУНКЦИЙ В СРЕДЕ ТУРБО – ПАСКАЛЬ» по курсу «Основы алгоритмизации и программирования». – Калуга: ГОУ СПО ККИТиУ, 2011. –23 с.

В методической разработке даны указания к домашнему заданию по теме «Использование процедур и функций в среде Турбо – Паскаль». Названия разделов данной методической разработки соответствуют пунктам домашнего задания. В каждом разделе приводятся примеры программ и даются пояснения к ним.

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

Данное учебное пособие издается в соответствии с учебным планом специальностей.

Учебно-методическое пособие рассмотрено и одобрено методической комиссией ГОУ СПО Калужский колледж информационных технологий и управления «_15__» декабря 2011 г., протокол № 4

«___» _______ 2011 г. Протокол № 4

Председатель методической комиссии

Рецензент к.т.н., доц. Е.О. Дерюгина

Автор: Е.С. Белов

Введение

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

В конце методической разработки приведены варианты домашнего задания.

Прочитав текст задания, легко заметить соответствия между пунктами задания и разделами методической разработки. Так, например, пунктам 1-2 задания соответствуют примеры из раздела 2 (ОПИСАНИЕ ФУНКЦИИ ЗАДАННОГО ВИДА); примеры, подобные пункту 3 задания можно найти в разделе 3 (РЕКУРСИЯ) методического пособия и т.д. Поэтому, подробно изучив примеры данного методического пособия и пояснения к ним, не возникнет сложностей при выполнении домашнего задания.

1. Процедуры и функции

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

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

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

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

Заголовки процедуры и функции имеют следующий вид:

PROCEDURE <имя > [<сп.фор.парам.>];

FUNCTION <имя> [<сп.фор.парам.>] : <тип>;

где PROCEDURE, FUNCTION – ключевые слова;

<имя> - имя подпрограммы – правильный идентификатор;

<сп.фор.парам.> – список формальных параметров;

<тип> – тип возвращаемого функцией результата.

Список формальных параметров необязателен и может отсутствовать. Но если он есть, то в нем должны быть перечислены имена формальных параметров и их тип. Например:

PROCEDURE SB(A : REAL; B : INTEGER; C : CHAR);

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

FUNCTION F (A : REAL ;B : REAL) : REAL;

можно написать проще:

FUNCTION F (A, B : REAL) : REAL;

Тело подпрограммы соответствует структуре программы и состоит из раздела описаний и раздела исполняемых операторов.

Рассмотрим пример.

Пример 1. Вычислить , где , – площади треугольников и соответственно.

PROGRAM PR1;

VAR OA, OB, OC, OD, a, b, s1, s2, s : REAL;

PROCEDURE PL;

BEGIN

s:=a*b/2;

END;

BEGIN

WRITELN ('задать длины сторон треугольников');

READ (OA, OB, OD, OC);

a:=OA; b:=OB;

PL;

s1:=s;

a:=OD; b:=OC;

PL;

s2:=s;

WRITE (s1+s2:7:1);

END.

Пояснения к программе: Процедура PL позволяет вычислять площадь любого треугольника и в ней отсутствует список формальных переменных. Сначала с помощью процедуры READ задаются значения длин сторон треугольников. Переменным и присваиваются значения длин сторон треугольника и выполняется процедура PL. Переменной присваивается значение площади треугольника . Затем аналогичные действия выполняются для треугольника . С помощью процедуры WRITE осуществляется вывод результата на экран.

Любой из формальных параметров может быть либо параметром-значением, либо параметром-переменной. Если какие-либо параметры определяются как параметры-переменные, то перед ними необходимо ставить кодовое слово VAR. Например:

FUNCTION P (VAR X : REAL; Y : REAL) : REAL;

Здесь параметр – параметр-переменная, а – параметр-значение.

Упростим программу из примера 1, путем ввода формальных параметров в процедуру PL.

Пример 2. Условие аналогично условию из примера 1.

PROGRAM PR2;

VAR OA, OB, OC, OD ,s1, s2 : REAL;

PROCEDURE PL (a, b : REAL; VAR s : REAL);

BEGIN

s:=a*b/2;

END;

BEGIN

WRITELN ('задать длины сторон треугольников');

READ (OA, OB, OD, OC);

PL (OA, OB, s1);

PL (OD, OC, s2);

WRITE (s1+s2:7:1);

END.

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

Необходимо обратить внимание на то, что количество и тип формальных параметров строго соответствует количеству и типу фактических параметров. Порядок следования фактических параметров, при обращении к подпрограмме должен быть строго определенным. Т.е. в примере 2 первым и вторым расположены фактические параметры, соответствующие длинам сторон треугольника, а третьим параметром является площадь треугольника.

Рассмотрим пример 1 с использованием функции.

Пример 3. Условие аналогично условию из примера 1. Решим задачу с использованием функции.

PROGRAM PR3;

VAR OA, OB, OC, OD, s1, s2 : REAL;

FUNCTION PLOS (a, b : REAL) : REAL;

BEGIN

PLOS:=a*b/2;

END;

BEGIN

WRITELN ('задать длины сторон треугольников');

READ (OA, OB, OD, OC);

s1:=PLOS (OA, OB);

s2:=PLOS (OD, OC);

WRITE (s1+s2:7:1);

END.

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

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

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

Для того, чтобы понять, чем отличаются параметры-переменные от параметров-значений рассмотрим пример.

Пример 4. Зададим два целых числа и . Удвоим эти числа в процедуре UD. Причем параметр является параметром-переменной, а параметр параметром-значением. Значения параметров до и после вызова процедуры, а также результат их удвоения выведем на экран.

PROGRAM PR4;

VAR a, b : INTEGER;

PROCEDURE UD (VAR a : INTEGER; b : INTEGER);

BEGIN

a:=a+a;

b:=b+b;

WRITELN (' удвоенные: ',a:5, b:5);

END;

BEGIN

a:=5;

b:=7;

WRITELN (' исходные: ',a:5, b:5);

UD (a, b);

WRITELN(' результат: ',a:5, b:5);

END.

В результате выполнения программы на экран будет выведено:

исходные: 5 7

удвоенные: 10 14

результат: 10 7

Пояснения к программе: При выполнении процедуры UD значения и изменились, что отразилось на экране в графе «удвоенные». Однако далее в программу вернулось удвоенное значение и значение , которое было до выполнения процедуры. Т.е. удвоение второго формального параметра в процедуре UD не вызвало изменения фактической переменной , поскольку этот параметр описан в заголовке процедуры UD как параметр-значение.