Ознакомление с директивой $I, использование псевдографики для оформления результатов программы

Страницы работы

Содержание работы

Балтийский Государственный

Технический Университет

«ВоенМех»

имени Д.Ф. Устинова

Отчет

к лабораторной работе по информатике №1

На тему

“Директива $I и Псевдографика”

Отчет выполнил студент

Факультета «И»

Суханов Александр

Группа И433

Санкт-Петербург 2004

Лабораторная работа по информатике №1

Тема: Директива $I и Псевдографика.

Цель: Ознакомиться с директивой $I, а также научиться использовать псевдографику для оформления результатов программы.

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

1.  InOut.pas – содержит процедуры ввода-вывода

2.  Count.pas – содержит тестируемые функции и процедуру Count [Root]

3.  Main.pas – сама программа

Результаты оформить в виде таблицы. Кол-во тестов для функции – от 1 до 10.

Структуры данных:

Data – массив тестовых значений. Тип Real

MyResult – массив значений тестируемой функции. Тип Real

StResult – массив значений стандартной функции. Тип Real

N – количество тестов

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

Процедура Init (var n: integer; var Data: massiv) – Ввод массива Data и его размера

Процедура Finit (n: integer; Data, MyResult, StResult: massiv) – Вывод результатов тестирования

Процедура Count (n: Integer; Data: massiv; Func: FuncName; var Result: massiv) – Заполнение массива

Result, использую функцию Func.

Функция MyFunc (x: Real): Real – тестируемая функция

Функция StFunc (x: Real): Real – Стандартная функция

Блок-схемы подпрограмм:

1.  Головной модуль Main.pas:

начало,Init(n, Data),Count (n, Data, MyFunc, MyResult),конец,Finit (n, Data, MyResult, StResult);,Count (n, Data, StFunc, StResult) 


2.  Процедуры ввода-вывода InOut.pas:

Ввод N,zicl 1, n,начало  Init,Ввод Result[zicl],конец начало  Finit,zicl 1, n,Вывод Data[zicl],Вывод MyResult[zicl],Вывод StResult[zicl],конец
 


3.  Подпрограммы вычисления значений тестируемых функций Count.pas:

начало  Count,zicl 1, n,Result[zicl]:=F(Data[zicl]),конец начало  StFunc,StFunc:=ln(x),конец
начало MyFunc,x<=0,false,true,step:=(x-1)/x,zicl:=1 s:=0,chlen>eps,false,chlen:=step/zicl,s:=s+chlen,step:=step*(x-1)/x,Ошибка,zicl:=zicl+1,chlen:=step/zicl,true,MyFunc:=S,конец,ввод x, eps
 


Листинг программы Lab1:


{Файл Main.pas}

{$F+}

program lab1;

uses Crt;

const Nmax = 10;

type Massiv = array [1..Nmax] of real;

FuncName = function (x: Real): Real;

var Data, MyResult, StResult: Massiv;

n: Integer;

{$I InOut.pas}

{$I Count.pas}

begin

Init(n, Data);

Count(n, Data, MyFunc, MyResult);

Count(n, Data, StFunc, StResult);

Finit(n, Data, MyResult, StResult);

end.

{Файл InOut.pas}

procedure Init(var n: Integer; var Data: massiv);

var zicl: Integer;

c: char;

begin

ClrScr;

write('Введите кол-во элементов [Maximum ', Nmax,']: '); readln(n);

if n>Nmax then n:=Nmax;

for zicl:=1 to n do

begin

write('Data[', zicl, ']: '); readln(Data[zicl]);

    end;

writeln;

writeln('Ввод успешно завершен. Нажмите любую клавишу...');

repeat

until Keypressed;

while keypressed do c:=readkey;

end;

procedure Finit (n: Integer; Data, MyResult, StResult: massiv);

var zicl: Integer;

begin

ClrScr;

gotoXY(13, 2);

writeln('Разложение в ряд функции ln(x) - натуральный логарифм');

writeln(' г============T=======================T=======================T===============¬');

writeln(' ¦  Аргумент  ¦  Тестируемая функция  ¦  Стандартная функция  ¦    Разница    ¦');

for zicl:=1 to n do

begin

writeln(' ¦------------+-----------------------+-----------------------+---------------¦');

write(' ¦  ', Data[zicl]:8:5, '  ¦    ', MyResult[zicl]:14:10, '     ¦    ', StResult[zicl]:14:10, '     ¦');

writeln(' ', abs(StResult[zicl]-MyResult[zicl]):12:10, '  ¦');

    end;

writeln(' L============¦=======================¦=======================¦===============-');

gotoXY(1, 25);

write('Нажмите любую клавишу...');

repeat

until Keypressed;

end;

{Файл Count.pas}

function MyFunc (x: Real): Real;

const eps = 1E-8;

var step, chlen: real;

zicl: integer;

s: real;

begin

if x<=0 then

begin

ClrScr;

writeln(‘Ошибка ввода...’);

halt;

end;

step:=(x-1)/x;

zicl:=1; s:=0;

chlen:=step/zicl;

repeat

s:=s+chlen;

inc(zicl);

step:=step*(x-1)/x;

chlen:=step/zicl;

until abs(chlen)<eps;

MyFunc:=s;

end;

function StFunc (x: Real): Real;

begin

StFunc:=ln(x);

end;

procedure Count (n: Integer; Data: massiv; Func: FuncName; var Result: massiv);

var zicl: integer;

begin

for zicl:=1 to n do

Result[zicl]:=Func(Data[zicl]);

end;

Тестовые данные:

Разложение в ряд функции ln(x) - натуральный логарифм

+-------------------------------------------------------------------------------------------------+

¦  Аргумент  ¦  Тестируемая функция  ¦  Стандартная функция  ¦    Разница        ¦

¦---------------+------------------------------+------------------------------+-------------------¦

¦   1.10000     ¦         0.0953101718         ¦         0.0953101798          ¦ 0.0000000080  ¦

¦---------------+------------------------------+------------------------------+-------------------¦

¦   1.20000     ¦         0.1823215548         ¦         0.1823215568          ¦ 0.0000000020  ¦

¦----    --------+------------------------------+------------------------------+-------------------¦

¦   1.30000     ¦         0.2623642531         ¦         0.2623642645          ¦ 0.0000000114  ¦

¦---------------+------------------------------+------------------------------+-------------------¦

¦   1.40000     ¦         0.3364722278         ¦         0.3364722366          ¦ 0.0000000089  ¦

¦---------------+------------------------------+------------------------------+-------------------¦

¦   1.50000     ¦         0.4054651013         ¦         0.4054651081          ¦ 0.0000000068  ¦

+-------------------------------------------------------------------------------------------------+

Нажмите любую клавишу…

Похожие материалы

Информация о работе