Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Типовой var 8.doc
Скачиваний:
2
Добавлен:
13.09.2019
Размер:
254.98 Кб
Скачать

IV. Отладка программ:

1. Отладка программы блочной структуры.

Визуальный контроль корректности программы:

  • Обращения к данным: обращение к данным проводилось с использованием нестандартных текстовых файлов, был проведен контроль правильности обращения к файлам. При обращении к данным проведён контроль соответствия типов и структуры данных представлению их значений на внешних носителях.

  • Описание данных: Учитывая, что типом в списке формальных параметров может быть только стандартный или ранее объявленный тип, то в разделе описания типов заранее был определен тип двумерного массива. В процессе контроля описания данных не было обнаружено переменных и массивов со сходными именами. Переменные были описаны в соответствии с внешней спецификацией программы. Формальные параметры процедур были описаны в соответствии с внутренней спецификацией подпрограмм, исключая нетипизированные переменные, типы которых были описаны в самих процедурах.

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

  • Управление вычислениями: в процессе проверки было установлено, что каждый цикл, используемый в программе, завершаем.

  • Межмодульный интерфейс: при каждом обращении к подпрограмме выполнены правила соответствия параметров: по количеству, по порядку следования и по типу соответствующих пар параметров.

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

Синтаксический контроль программы:

Синтаксический контроль корректности программы осуществлялся за ЭВМ с использованием компиляторов среды программирования Turbo Pascal.7.1. На данной стадии осуществлен контроль структурированности программы путём проверки правильности построения и кодирования БУС, а также выполнение технологических правил структурного программирования (рельефность записи, выбор имён массивов, переменных и других объектов).

Также на этой стадии была проведена локализация места ошибок с использованием построчного выполнения программы:

  1. Не был определён тип логической переменной F;

  2. Не был указан тип функции simm;

  3. Перед альтернативной ветвью ELSE был поставлен символ «;»;

  4. Перед операторной скобкой End также был поставлен символ «;» ;

  5. В одном из циклов были проставлены лишние операторные скобки Begin\End;

Семантический контроль программы:

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

2. Отладка программы модульной структуры.

Для тестирования программы модульной структуры были использованы те же тесты. В процессе тестирования программы использовался режим компиляции Build.

V. Тестирование программы.

-Тестирование программы блочной структуры.

1)Для проверки корректности программы использован метод нисходящего тестирования.

Тестирование начинается с основной программы, при этом вызываемые из неё подпрограммы заменяются «заглушками».

1) При тестировании с получением положительных результатов, т.е. при условии выполнения симметричности матрицы относительно главной диагонали.

PROGRAM ZAGLYSHKI;

const kk=50;

TYPE MATR=array [1..kk,1..kk] of integer;

VAR i,j,k:integer;

A:MATR;

F:boolean;

f1,f2:text;

FUNCTION simm (Var A:MATR;k:integer):boolean;

Begin

F:=TRUE;

simm:=F

End;

PROCEDURE OBN (Var A:MATR;k:integer);

Begin

A[1,1]:=1; A[1,2]:=0; A[1,3]:=0; A[1,4]:=0; A[1,5]:=0;

A[2,1]:=2; A[2,2]:=7; A[2,3]:=0; A[2,4]:=0; A[2,5]:=0;

A[3,1]:=3; A[3,2]:=5; A[3,3]:=9; A[3,4]:=0; A[3,5]:=0;

A[4,1]:=4; A[4,2]:=7; A[4,3]:=7; A[4,4]:=6; A[4,5]:=0;

A[5,1]:=5; A[5,2]:=2; A[5,3]:=3; A[5,4]:=1; A[5,5]:=2;

End;

FUNCTION sum(Var A:MATR;k:integer):integer;

Var S: integer;

Begin

S:=39;

sum:=S

End;

BEGIN

ASSIGN (f1,'isdan17.pas');

ASSIGN (f2,'vdan17.pas');

RESET (f1);

REWRITE (f2);

READ (f1,k);

READLN (f1);

FOR i:=1 TO k DO

Begin

FOR j:=1 TO k DO

Read (f1,A[i,j]);

Readln (f1)

End;

WRITELN (f2,' ':35,'РЕЗУЛЬТАТЫ');

F:=simm(A,k);

IF F THEN

Begin

OBN(A,k);

FOR i:=1 TO k DO

Begin

FOR j:=1 TO k DO

WRITE (f2,' ',A[i,j]);

WRITELN (f2)

End;

WRITELN (f2,' ':25,'сумма= ',sum(A,k))

End

ELSE

WRITELN (f2,' ':25,'Матрица не симметрична');

CLOSE (f1);

CLOSE (f2)

END.

2) При тестировании с получением положительных результатов, т.е. при невыполнении условия симметричности матрицы относительно главной диагонали.

PROGRAM ZAGLYSHKI2;

const kk=50;

TYPE MATR=array [1..kk,1..kk] of integer;

VAR i,j,k:integer;

A:MATR;

F:boolean;

f1,f2:text;

FUNCTION simm (Var A:MATR;k:integer):boolean;

Begin

F:=FALSE;

simm:=F

End;

PROCEDURE OBN (Var A:MATR;k:integer);

Begin

A[1,1]:=1; A[1,2]:=0; A[1,3]:=0; A[1,4]:=0; A[1,5]:=0;

A[2,1]:=2; A[2,2]:=7; A[2,3]:=0; A[2,4]:=0; A[2,5]:=0;

A[3,1]:=3; A[3,2]:=5; A[3,3]:=9; A[3,4]:=0; A[3,5]:=0;

A[4,1]:=4; A[4,2]:=7; A[4,3]:=7; A[4,4]:=6; A[4,5]:=0;

A[5,1]:=5; A[5,2]:=2; A[5,3]:=3; A[5,4]:=1; A[5,5]:=2

End;

FUNCTION sum(Var A:MATR;k:integer):integer;

Var S: integer;

Begin

S:=39;

sum:=S

End;

BEGIN

ASSIGN (f1,'isdan17.pas');

ASSIGN (f2,'vdan17.pas');

RESET (f1);

REWRITE (f2);

READ (f1,k);

READLN (f1);

FOR i:=1 TO k DO

Begin

FOR j:=1 TO k DO

Read (f1,A[i,j]);

Readln (f1)

End;

WRITELN (f2,' ':35,'РЕЗУЛЬТАТЫ');

F:=simm(A,k);

IF F THEN

Begin

OBN(A,k);

FOR i:=1 TO k DO

Begin

FOR j:=1 TO k DO

WRITE (f2,' ',A[i,j]);

WRITELN (f2)

End;

WRITELN (f2,' ':25,'сумма= ',sum(A,k))

End

ELSE

WRITELN (f2,' ':25,'Матрица не симметрична');

CLOSE (f1);

CLOSE (f2)

END.

При тестировании данным методом были получены корректные результаты.

Далее проведено тестирование сегментов-процедур, в ходе которого каждую «заглушку»

одну за другой заменяем текстом соответствующих подпрограмм, при этом драйвером для таких подпрограмм является протестированная основная программа. Процесс тестирования продолжается до тех пор, пока не будут протестированы, устранены все заглушки. Тестирование всех «заглушек» прошло успешно.

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