Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 242; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.156 (0.005 с.) |