Функции в языке Турбо Паскаль

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

1. Описание функции

Function <имя> (<список аргументов>): <тип значения функции>; { заголовок }

<блок описания локальных данных>

Begin { начало исполняемой части функции }

<тело функции (исполняемая часть)>

End; { конец описания функции }

В теле функции обязательно должна быть команда присваивания вида:

<имя функции> := <вычисленное значение>;

которая и позволит функции возвратить вычисленное значение.

Например, опишем функцию вычисления среднего арифметического двух целых чисел:

Function middle (a, b: integer): real;

Begin

Middle:= (a + b) / 2

End;

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

Примеры решаемых задач

Пример 1. Составить программу, которая вычислит значение выражения

am+bn+(a-b)m+n.

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

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

Программа:

program calc_proc;

uses crt;

var a, b, m, n, s1, s2, s3, s: integer;

procedure stepen (x, y: integer; var z: integer);

{процедура возводит число x в степень y, результат записывает в z }

{т.е. в процедуре описано правило вычисления z=xy }

var i: integer; { локальная переменная для организации цикла }

begin

z:= 1;

for i:= 1 to y do z:= z * x

end;

begin

clrscr;

write(‘Введите a, b, m, n ’);

readln(a, b, m, n);

{ три раза вызываем процедуру stepen для вычисления трех слагаемых }

stepen(a, m, s1); { вычислили s1 как am }

stepen(b, n, s2); { вычислили s2 как bn }

stepen(a-b, m+n, s3); { вычислили s3 как (a-b)m+n }

s:= s1 + s2 + s3; { вычислили сумму трех слагаемых }

writeln(‘Значение выражения ’, s);

readln

end.

program calc_func;

uses crt;

var a, b, m, n, s: integer;

function stepen (x, y: integer): integer;

{ функция возводит число x в степень y }

{ т.е. описано правило вычисления stepen = xy }

var i,z: integer; {локальные переменные:
i для организации цикла, z для вычисления произведения }

begin

z:= 1;

for i:= 1 to y do z:= z * x;

stepen:= z { присвоили имени функции вычисленное значение }

end;

begin

clrscr;

write(‘Введите a, b, m, n ’);

readln(a, b, m, n);

{ три раза вызываем функцию stepen для вычисления трех слагаемых }

s:= stepen(a, m) + stepen(b, n) + stepen(a-b, m+n, s3);

writeln(‘Значение выражения ’, s);

readln

end.

Контрольные задания

11.1. Составить программу, которая вычислит площадь треугольника, заданного координатами своих вершин. Использовать формулу Герона. Вычисление расстояния между двумя точками оформить в виде процедуры или функции.

11.2. Составить программу определения НОД трех чисел (по алгоритму Евклида) с использованием процедуры нахождения НОД двух чисел (по алгоритму Евклида).

11.3. Составить программу, проверяющую гипотезу Гольдбаха. Она состоит в том, что любое четное число, большее 2, можно представить в виде суммы двух простых слагаемых. Программа должна вводить четное положительное число и выводить все его возможные представления в виде суммы двух простых слагаемых. Для определения, является ли число простым, использовать подпрограмму.

11.4. Составить программу, которая изображает на экране:

a. лес

b. аллею

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

11.5. «Диаграммы». Составить программу, которая вводит N числовых данных и интерпретирует их в виде столбиковой, круговой, линейной диаграмм. Программа должна в алфавитно-цифровом режиме предоставлять пользователю меню – список видов диаграмм, позволять выбрать (например, ввести номер) нужной диаграммы, после чего в графическом режиме построить нужную диаграмму. Каждый из режимов работы программы (ввод данных, построение каждого вида диаграмм) оформить в виде отдельной процедуры.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: