Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_часть1.doc
Скачиваний:
23
Добавлен:
18.11.2019
Размер:
4.1 Mб
Скачать

Теоретические сведения

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

Структура описания функции имеет такой вид:

function <имя функции>[(<список формальных параметров>)] :<тип>;

[<раздел описания>]

Begin

<перечисление операторов и программных единиц>

End;

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

<имя функции> := <выражение>;

Типом функции может быть любой скалярный тип Турбо Паскаля (соответственно типом не может быть, например, массив). Тип функции определяет тип результата. После выполнения функции этот результат присваивается имени функции, и вызов функции может находиться в любом выражении, где допустимо использовать значение соответствующего типа. Алгоритм подпрограммы функции в этом месте будет выполнен для соответствующих фактических параметров, и результат подставится в выражение на место имени функции.

В качестве примера рассмотрим применение подпрограммы-функции к задаче 1 из лабораторной работы № 7.

Program Min3;

{Описание переменных}

Var a,b,c, {исходные данные задачи}

{Описание функции}

Function Min (x,y : real) : real; { min – результат функции }

Begin

If x < y then min := x

else min := y

End;

Begin

{Ввод исходных данных задачи}

Writeln(‘Введите три числа’);

Readln(a,b,c);

{Вычисление и вывод результата}

Writeln (‘Наименьшее из введенных чисел - ’, min( min(a,b),c);

End.

Как видно из примера, для рассматриваемой задачи использование подпрограммы-функции позволяет наиболее компактно записать алгоритм. Результат сравнения переменных a и b сразу используется как фактический параметр функции при сравнении его с переменной с. Результат второго сравнения сразу выводится на печать.

Пример:

при x = 3.5; z = 10-5; b=4.

Программа расчета:

program lab_8;

var x1, z1, b1 : real; {исходные данные}

f : text;

{функция для вычисления степени p положительного числа a}

function pov(a, p :real) : real;

begin

pov:=exp(p*ln(a))

end;

{функция для вычисления выражения задачи}

function y(x,z,b :real) : real;

var

ch,zn,y:real; {числитель, знаменатель дроби, результат }

begin

ch:=exp(x)+pov(z,6)-4.5E2*sqrt(x); {числитель для Y}

zn:=pov(z,x)+pov(b,3.5); {знаменатель}

y:=ch/zn; {значение Y }

end;

BEGIN

{ввод исходных данных из файла}

Assign(f, ‘inp.txt’);

Reset(f);

Readln(f,x1,z1,b1);

Close(f);

{вычисление y и вывод результата на экран}

WriteLn(' Arithmetic expression: Y=',y(x1,z1,b1):8:4);

END.

Файл исходных данных Inp.txt:

3.5 1.0e-5 4

Результаты расчета:

Arithmetic expression: Y= -6.3184

Варианты заданий взять из лабораторной работы № 2.

Лабораторная работа № 9

ЗАПИСИ

Цель работы – ознакомление с правилами оформления записи в программе; исследование порядка доступа к полям записи.

Постановка задачи:

  1. Исходные данные считать из предварительно созданного текстового файла, используя для этого процедуру. Количество записей в файле до начала чтения из него не должно быть известно.

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

  3. Результаты вывести в текстовый файл. Вывод результатов должен производиться специально созданной для этого процедурой.

  4. Весь обмен данными между подпрограммами и основной программой осуществлять через параметры.