Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Паскаль программа модульной структуры.Содержание книги
Поиск на нашем сайте
UNIT OBIVL; INTERFACE TYPE MATRICA=array[1..5,1..6] of real; MASSIV=array[1..6] of real; VAR A,B:MATRICA; K:MASSIV; i,j:integer; f1,f2:text; IMPLEMENTATION BEGIN assign(f1,'isdan.pas'); assign(f2,'vdan.pas'); reset(f1); rewrite(f2); END.
UNIT PART1; INTERFACE USES OBIVL; Procedure NEWMATR(Var A:MATRICA; Var K:MASSIV); Function STR(Var K:integer):integer; IMPLEMENTATION Procedure NEWMATR; Var i,j:integer; Begin For i:=1 to 5 do begin K[i]:=0; For j:=1 to 6 do begin if A[i,j]<0 then K[i]:=K[i]+1 end end End; End; Function STR(Var K:integer):integer; Type MURRAY=array[1..10922] of integer; Var i,imax,n:integer; Begin n:=MURRAY(K)[1]; imax:=1; For i:=1 to 5 do If MURRAY(K)[i]>=n Then begin n:=MURRAY(K)[i]; imax:=i end; STR:=imax End; END.
UNIT PART2; INTERFACE USES OBIVL; Function SRED(Var A:MATRICA):real; Procedure NEWMATR(Var A:MATRICA;Var B:MATRICA); IMPLEMENTATION Function SRED; Var i,j:integer; SR,S:real; Begin S:=0; For i:=1 to 5 do For j:=1 to 6 do S:=S+A[i,j]; SR:=S/30; SRED:=SR End; Procedure NEWMATR; Var i,j:integer; Begin For i:=1 to 5 do begin For j:=1 to 6 do begin If A[i,j]<0 then B[i,j]:=abs(A[i,j]) Else B[i,j]:=A[i,j] end end End;
Program tipovik_v2_mod; USES OBIVL,PART1,PART2; Begin For i:=1 to 5 do begin For j:=1 to 6 do Read(f1,A[i,j]); Readln(f1) end; Writeln(f2,' ':35,'Результаты'); Writeln(f2); MASK(A,K); If STR(K,6)=1 Then begin NEWMATR(A,B); Writeln(f2,' ':20,'SR1=',SR1:6:1,' ':15,'SR2=',SR2:6:1); end else Write(f2,’Наибольшее кол-во эл-тов не в первой строке'); close(f1); close(f2) End.
6. Отладка программ:
Отладка программы блочной структуры:
Сначала, я внимательно просмотрел текст программы. В результате были обнаружены следующие ошибки. Отсутствие: v в нужных местах «;», v служебных слов «Begin» и «End» при кодировании ветвления с двумя операторами на одной ветви v ветви ELSE в одном из ветвлений v описания нестандартных текстовых файлов f1 и f2 в разделе описания переменных. Далее мной была проведена компиляция программы с использованием компилятора, которая прошла успешно. Таким образом, мной был достигнут 1-ый уровень корректности программы.
Затем я протестировал программу на подготовленном мной наборе тестовых значений и приступил к проверке программы методом нисходящего тестирования, который начинается с проверки основной программы, а вызываемые из нее подпрограммы я заменил «заглушками»:
Тест №1:
PROGRAM tipovik_v2; TYPE MATRICA=array[1..5,1..6] of real; MASSIV=array[1..6] of real; VAR A,B:MATRICA; K:MASSIV; i,j:integer; f1,f2:text; Procedure MASK(Var A:MATRICA; Var K:MASSIV); Begin K[1]:=4; K[2]:=2; K[3]:=0; K[4]:=1; K[5]:=1 End; Function STR(Var K:integer):integer; Var i,imax,n:integer; Begin imax:=1; STR:=imax End; Function SRED(Var A:MATRICA):real; SR,S:real; Begin SR:=0.53; SRED:=SR End; Procedure NEWMATR(Var A:MATRICA;Var B:MATRICA); Begin B[1,1]:=1; B[1,2]:=1; B[1,3]:=2; B[1,4]:=0; B[1,5]:=3; B[1,6]:=4; B[2,1]:=1; B[2,2]:=0; B[2,3]:=0; B[2,4]:=2; B[2,5]:=2; B[2,6]:=0; B[3,1]:=1; B[3,2]:=1; B[3,3]:=1; B[3,4]:=1; B[3,5]:=1; B[3,6]:=1; B[4,1]:=1; B[4,2]:=2; B[4,3]:=5; B[4,4]:=1; B[4,5]:=4; B[4,6]:=3; B[5,1]:=2; B[5,2]:=0; B[5,3]:=1; B[5,4]:=1; B[5,5]:=4; B[5,6]:=5; End; BEGIN assign(f1,'isdan.pas'); assign(f2,'vdan.pas'); reset(f1); rewrite(f2); For i:=1 to 5 do begin For j:=1 to 6 do Read(f1,A[i,j]); Readln(f1) end; Writeln(f2,' ':35,'РЕЗУЛЬТАТЫ'); Writeln(f2); MASK(A,K); If STR(K,5)=1 Then begin NEWMAS(A,B); Writeln(f2,' ':20,'SR1=',SR1:6:1,' ':15,'SR2=',SR2:6:1); end else Write(f2,’наибольшее кол-во эл-тов не в первой строке'); close(f1); close(f2) END.
Тест №2:
PROGRAM tipovik_v2; TYPE MATRICA=array[1..5,1..6] of real; MASSIV=array[1..6] of real; VAR A,B:MATRICA; K:MASSIV; i,j:integer; f1,f2:text; Procedure MASK(Var A:MATRICA; Var K:MASSIV); Begin K[1]:=1; K[2]:=4; K[3]:=0; K[4]:=0; K[5]:=0 End; Function STR(Var K:integer):integer; Var i,imax,n:integer; Begin imax:=2; STR:=imax End; Function SRED(Var A:MATRICA):real; SR,S:real; Begin SR:=-0.23; SRED:=SR End; Procedure NEWMATR(Var A:MATRICA;Var B:MATRICA); Begin B[1,1]:=1; B[1,2]:=1; B[1,3]:=1; B[1,4]:=1; B[1,5]:=0; B[1,6]:=0; B[2,1]:=2; B[2,2]:=2; B[2,3]:=1; B[2,4]:=3; B[2,5]:=4; B[2,6]:=5; B[3,1]:=0; B[3,2]:=0; B[3,3]:=0; B[3,4]:=0; B[3,5]:=0; B[3,6]:=0; B[4,1]:=0; B[4,2]:=0; B[4,3]:=0; B[4,4]:=0; B[4,5]:=0; B[4,6]:=0; B[5,1]:=0; B[5,2]:=0; B[5,3]:=0; B[5,4]:=0; B[5,5]:=0; B[5,6]:=0; End; BEGIN assign(f1,'isdan.pas'); assign(f2,'vdan.pas'); reset(f1); rewrite(f2); For i:=1 to 5 do begin For j:=1 to 6 do Read(f1,A[i,j]); Readln(f1) end; Writeln(f2,' ':35,'результаты'); Writeln(f2); MASK(A,K); If STR(K,5)=1 Then begin NEWMAS(A,B); Writeln(f2,' ':20,'SR1=',SR1:6:1,' ':15,'SR1=',SR1:6:1); end else Write(f2,’наибольшее кол-во эл-тов не в первой строке'); close(f1); close(f2) END.
Тестирование главной программы прошло успешно. Далее было проведено тестирование сегментов-процедур (заглушки я заменял текстами соответствующих подпрограмм, пока не были устранены все заглушки). Результаты полученные в программе на том же наборе тестов не отличаются от результатов которые я посчитал - следовательно все подпрограммы работают корректно.
Я использовал метод структурного тестирования, чтобы убедиться что при данном наборе тестовых данных в тестируемой программе выполняется любой оператор, и при разных тестовых данных проходит все ветвления. Для этого я реализовал метод тестовых счетчиков. Я поместил счетчики на каждую ветвь ветвления, в начало и конец алгоритма.
PROGRAM tipovik_v2; TYPE MATRICA=array[1..5,1..6] of real; MASSIV=array[1..6] of real; VAR A,B:MATRICA; K:MASSIV; i,j, sch1,sch2,sch3:integer; f1,f2:text; Procedure MASK(Var A:MATRICA; Var K:MASSIV); Var i,j:integer; Begin For i:=1 to 5 do begin K[i]:=0; For j:=1 to 6 do begin if A[i,j]<0 then K[i]:=K[i]+1 end end End; Function STR(Var K:integer):integer; Type MURRAY=array[1..10922] of integer; Var i,imax,n:integer; Begin n:=MURRAY(K)[1]; imax:=1; For i:=1 to 5 do If MURRAY(K)[i]>=n Then begin n:=MURRAY(K)[i]; imax:=i; end; STR:=imax End; Function SRED(Var A:MATRICA):real; Var i,j:integer; SR,S:real; Begin S:=0; For i:=1 to 5 do For j:=1 to 6 do S:=S+A[i,j]; SR:=S/30; SRED:=SR End; Procedure NEWMATR(Var A:MATRICA;Var B:MATRICA); Var i,j:integer; Begin For i:=1 to 5 do begin For j:=1 to 6 do begin If A[i,j]<0 then B[i,j]:=abs(A[i,j]) Else B[i,j]:=A[i,j] end end End; BEGIN sch1:=0; sch2:=0; sch3:=0; assign(f1,'isdan.pas'); assign(f2,'vdan.pas'); reset(f1); rewrite(f2); For i:=1 to 5 do begin For j:=1 to 6 do Read(f1,A[i,j]); Readln(f1) end; Writeln(f2,' ':35,'Результаты'); Writeln(f2); MASK(A,K); If STR(K,5)=1 Then begin sch1:=sch1+1; NEWMAS(A,B); Writeln(f2,' ':20,'SR1=',SR1:6:1,' ':15,'SR2=',SR2:6:1); end else begin sch2:=sch2+1; Write(f2, ‘Наибольшее кол-во эл-тов не в первой строке'); end; sch3:= sch3+3; writeln(f2); write(f2,sch1,’ ’,sch2,’ ’,sch3); close(f1); close(f2) END.
Значения счетчиков, полученных при тестировании:
1) 1 0 1 2) 0 1 1
Складываем:
1 1 2
Я узнал значение счетчиков при данном наборе тестов. Очевидно, что все счетчики изменили свои значения, каждая ветвь ветвления и каждый оператор пройдены.
|
||||
Последнее изменение этой страницы: 2020-03-02; просмотров: 152; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.129.216.248 (0.008 с.) |