Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль в примерах / учебник по программированию.doc
Скачиваний:
53
Добавлен:
01.05.2014
Размер:
687.62 Кб
Скачать

2.21. Функции

В Паскале, помимо процедур, разрешены похожие на них конструкции, которые назы-ваются функциями. Обращение к функции приводит к вычислению ее значения - объекта ти-па real, integer, char. Тип фиксируется в описании функции.

Имеются две отличительные особенности описания функции в сравнении с описанием процедуры. Первая особенность связана с заголовком, он должен начинаться со служебного слова function (функция) и заканчиваться именем того типа, которому принадлежит значе-ние функции.

Например: function f(a:real; var b:t):rael;

61

function g(var a,b:integer): integer; function h(a:integer): char;

Вторая особенность: составной оператор, который располагается в описании функции после заголовка и, возможно, после описания локальных меток и переменных, должен обяза-тельно содержать внутри себя оператор присваивания, в котором слева от := помещено имя функции, например: f:=3,14 g:=a+2*b

if a mod 2=0 then h:=’*’ else h:=’!’ Таких операторов присваивания может быть несколько, но при каждом конкретном об-ращении к функции «сработать» должен только один из них. Это присваивание и определит значение функции.

Относительно параметров функции имеется полная аналогия с параметрами процедур. Описание функции, как и описания процедур, располагаются в программе после совокупно-сти описания процедур.

Расмотрим пример программы с трассировкой

1 Program pro6;

  1. Var a,b,c:integer;

  2. function pr(x, y: integer) : integer;

4 Begin

  1. x:=x+2;

  2. y:=y-3;

7 pr :=(x+y) DIV 2;

8 end;

9 BEGIN

  1. readln(a,b);

  2. c:= pr (a,b);

  3. writeln(a,’ ‘,b,’ ‘,c);

  4. END.

Таблица трассировки

Ход выполнения

a

b

c

9

Вход в pro6

?

?

?

10

2

3

11

Вызов pr

x y pr

4

Вход pr

2

3

5

4

6

0

7

2

8

Выход из pr

11

Возврат в pro6

2

12

Вывод a,b,c (2 3 2)

13

Выход из pro6

62

Пример. Рассмотрим определение площади четырехугольника по формуле Герона. PROGRAM PR44; VAR

AB,BC,CD,DA,AC:REAL; funcrion tr1(a, b, c: real): real; var p:real: begin

p:=(a+b+c)/2; tr1:=sqrt(p*(p-a)*(p-b)*(p-c)) end; BEGIN

WRITE(‘ Введите AB,BC,CD,DA,AC ‘); READLN(AB,BC,CD,DA,AC); WRITE(tr1(AB,BC,AC) +tr1(CD,DA,AC):8:3) END.

Пример. Вычислить значение y = ai + ∑bj

program pr45; var

a,b,S:real; n,e:integer;

function TR(n:integer;m:REAL):real; var

k:real; i:integer; begin S:=0; for i:=1 to n do

begin k:=exp(i*ln(m)); S:=k+S; TR:=S; end; end; begin

write(' Введите n,a '); readln(n,a); write(' Введите m,b '); readln(m,b); S:=TR(n,a)+TR(m,b); writeln('S= ',S:8:3); end.