- •А.В. Карташов, ю.А. Скоб, в.А. Халтурин, и.А. Трофимова, л.И. Черноштан, ю.К. Чернышев, о.В. Яровая информатика
- •Стандартные типы данных среды Турбо Паскаль и описание величин
- •Описание величин
- •Процедуры ввода данных
- •Процедура вывода данных
- •Порядок выполнения работы
- •Варианты заданий
- •Пример программы
- •Лабораторная работа № 2 выражения
- •Порядок выполнения работы
- •Задача 2
- •Задача 3
- •Лабораторная работа № 4 операторы цикла
- •Теоретические сведения
- •Вывод коэффициента рекуррентности q
- •Проверка правильности вычисления q
- •Варианты заданий
- •Лабораторная работа № 5 массивы
- •Теоретические сведения
- •Варианты заданий Задача 1
- •Задача 2
- •Лабораторная работа № 6 текстовые файлы
- •Теоретические сведения
- •Файл исходных данных Input8_1.Pas:
- •Лабораторная работа № 7
- •Теоретические сведения
- •Теоретические сведения
- •Лабораторная работа № 9
- •Теоретические сведения
- •Варианты заданий
- •Лабораторная работа № 10 модули
- •Теоретические сведения
- •Создание модуля
- •Файл исходных данных Input8_2.Pas:
- •Варианты заданий взять из лабораторной работы № 7 или № 9 по указанию преподавателя.
Теоретические сведения
Все, что было сказано в предыдущей работе о подпрограммах- процедурах, верно и для функций, но подпрограммы-функции имеют специфику, позволяющую использовать их особым образом.
Структура описания функции имеет такой вид:
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
ЗАПИСИ
Цель работы – ознакомление с правилами оформления записи в программе; исследование порядка доступа к полям записи.
Постановка задачи:
Исходные данные считать из предварительно созданного текстового файла, используя для этого процедуру. Количество записей в файле до начала чтения из него не должно быть известно.
Выполнить заданные действия, каждое из которых оформить в виде подпрограммы.
Результаты вывести в текстовый файл. Вывод результатов должен производиться специально созданной для этого процедурой.
Весь обмен данными между подпрограммами и основной программой осуществлять через параметры.