Добавил:
Меня зовут Катунин Виктор, на данный момент являюсь абитуриентом в СГЭУ, пытаюсь рассортировать все файлы СГЭУ, преобразовать, улучшить и добавить что-то от себя Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика / Ответы / ответы по программам ГИА.doc
Скачиваний:
28
Добавлен:
02.08.2023
Размер:
161.28 Кб
Скачать

9 Задание.

Эталон ответа: 

Составить тесты для проверки программы, используя метод покрытия операторов и метод покрытия решений. Сформировать список ошибок, которые могут быть выявлены этими тестами.

Спецификация программы:

  • Название задачи: квадратное уравнение

  • Название программы: quadrur

  • Система программирования: Turbo Pascal 7.0

  • Системные требования: IBM PC/AT 286 и выше

  • Входные данные: Три действительных числа – коэффициенты.

  • Выходные данные: Вычисленные корни уравнения.

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

Нужно составить программу, которая бы вычисляла решения квадратного уравнения, если уравнение действительно является квадратными и если имеются действительные корни уравнения. Используя методы покрытия операторов и покрытия решений необходимо составить набор тестов, направленных на обнаружение возможных ошибок. Также необходимо сформировать список ошибок.

Спецификация переменных:

Имя переменной в программе

Назначение переменной в программе

Тип переменной

Диапазон типа

a

Первый коэффициент уравнения

Real

2.9e-39..1.7e38

b

Второй коэффициент уравнения

Real

2.9e-39..1.7e38

c

Третий коэффициент уравнения

Real

2.9e-39..1.7e38

Текст программы:

program quadrur;

Uses Crt;

var

a, b, c: real;

procedure Entering;

begin

Write ('Введите значение a: ');

ReadLn (a);

Write ('Введите значение b: ');

ReadLn (b);

Write ('Введите значение c: ');

ReadLn (c);

end; {procedure Entering}

function Dis:real;

begin

dis := b*b-4*a*c;

end; {function Dis}

function Valid:boolean;

begin

Valid := true;

if a = 0 then

begin

Writeln ('Уравнение линейное');

Valid := false;

end

else if Dis < 0 then

begin

Writeln ('Уравнение не имеет действительных корней');

Valid := false;

end;

end; {function Valid}

function Results:real;

begin

WriteLn ('x1 = ',(-b-SQRT(dis))/(2*a):3:6);

WriteLn ('x2 = ',(-b+SQRT(dis))/(2*a):3:6);

end; {function Results}

begin

ClrScr;

Write ('Решение квадратного уравнения');

WriteLn (' вида ax^2+bx+c=0');

WriteLn;

Entering;

if Valid = true then

Results;

ReadKey;

end.

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

1. y= a= b=

Эталон ответа: program quadrur;

Uses Crt;

var

a, b, c: real;

procedure Entering;

begin

Write ('Введите значение a: ');

ReadLn (a);

Write ('Введите значение b: ');

ReadLn (b);

Write ('Введите значение c: ');

ReadLn (c);

end; {procedure Entering}

function Dis:real;

begin

dis := b*b-4*a*c;

end; {function Dis}

function Valid:boolean;

begin

Valid := true;

if a = 0 then

begin

Writeln ('Уравнение линейное');

Valid := false;

end

else if Dis < 0 then

begin

Writeln ('Уравнение не имеет действительных корней');

Valid := false;

end;

end; {function Valid}

function Results:real;

begin

WriteLn ('x1 = ',(-b-SQRT(dis))/(2*a):3:6);

WriteLn ('x2 = ',(-b+SQRT(dis))/(2*a):3:6);

end; {function Results}

begin

ClrScr;

Write ('Решение квадратного уравнения');

WriteLn (' вида ax^2+bx+c=0');

WriteLn;

Entering;

if Valid = true then

Results;

ReadKey;

end.

12.Составить тесты для проверки программы, используя методы покрытия операторов и покрытия условий. Сформировать список ошибок, которые могут быть выявлены этими тестами.

Задача: вычислить значение функции:

Эталон ответа: 

Спецификация переменных:

Имя переменной в программе

Назначение переменной в программе

Тип переменной

Диапазон типа

x

Значение аргумента функции

Real

0..1

Good

Булева переменная, сигнализирующая об успешном преобразовании введенного с клавиатуры значения

Boolean

2.9e-39..1.7e38

Текст программы:

program func1;

Uses Crt;

var

x : real;

Good : boolean;

procedure Header;

begin

WriteLn ('Вычислим значение функции');

WriteLn (' Y = x^3, при x < 0, затем x = x + 1');

WriteLn (' Y = √2x+1, при 0 <= x <= 2');

WriteLn (' 3x-1');

WriteLn (' Y = ─────, при x > 2');

WriteLn (' Cos x');

WriteLn;

end; {procedure Header}

procedure ClrPlace;

var

i : byte;

begin

WriteLn;

WriteLn ('Нажмите для выхода любую клавишу...');

ReadKey;

GotoXY(1,8);

for i := 1 to 5 do

begin

ClrEol;

Writeln;

end;

GotoXY(1,8);

end; {procedure ClrPlace}

procedure Entering;

var

XStr : string;

Code : integer;

begin

Write ('Введите значение X: ');

Read (XStr);

Val (XStr,x,Code);

if Code <> 0 then

begin

Good := false;

WriteLn ('Ошибка в ',Code,' позиции');

ClrPlace;

end

else Good := true;

end; {procedure Entering}

procedure OutCount(x:real);

var

i : byte;

begin

i := 0;

if x < 0 then

begin {x < 0}

WriteLn ('X = ',x);

WriteLn ('Y = ',x*x*x+1);

end

else

if ((x >= 0) AND (x <= 2)) then

begin {0<=x<2}

WriteLn ('X = ',x);

WriteLn ('Y = ',SQRT(2*x+1));

end

else if x > 2 then

begin {x > 2}

WriteLn ('X = ',x);

if Cos(x)=0 then WriteLn ('Ф-ция в этой точке не определена')

else WriteLn ('Y = ',(3*x-1)/Cos(x));

end;

ReadKey;

end;{procedure OutCount}

begin

ClrScr;

Header;

Entering;

if Good = true then OutCount(x);

end.

Соседние файлы в папке Ответы