ĀRPUSAUDITORIJAS RAKSTU DARBS PROGRAMMĒŠANAS METODOLOĢIJĀ (1998)

Autors: Edijs Birkenfelds 


1. Programmas teksts


{Autors: Edijs Birkenfelds 3DZ3}
{Uzdeveums: Sakartot vesalu skaitlu masivu ar Binaras ievietosanas metodi
Ieejas dati: Skaitlu masivs patvaliga seciba, tiek ievadits no klaviaturas
Izejas dati: Sakartots skaitlu masivs augosa seciba
Ierobezojumi: Maksimalais skaitlu skaits masiva ir 100, skaitla vertiba
              pec modula nedrikst parsniegt 100.}


Program Karto;
 uses crt;
 var A:array[1..100]of shortint;
     M,S:word;
     N,i,j:byte;
     okk:boolean;
      ch:char;
{-- Binaras ievietosanas metode -----------------------}
 Procedure Binary(var S,M:word);
  var B:array[1..100]of shortint;
   bn:byte;
   ok:boolean;
 begin
   B[1]:=A[1];bn:=1;
   For i:=2 to N do
     begin
       inc(S);
       if A[i]>B[bn] then B[bn+1]:=A[i]
                     else begin
                            j:=0;ok:=False;
                            Repeat
                              inc(j);inc(S);
                              if A[i]
                                begin
                                  Move(B[j],B[j+1],(bn-j+1)*SizeOf(shortint));
                                  B[j]:=A[i];
                                  inc(M,bn-j+1);
                                  ok:=True;
                                end;
                            Until ok;
                          end;
       inc(bn);
     end;
   WriteLn;WriteLn('Tagad rezultats');
   For i:=1 to N do Write(' ',B[i]);
   WriteLn;WriteLn('Mainas : ',M,'  salidzinasanas : ',S);
 end;
{-- beigas -------------------------------------}
Begin
 Repeat
   ClrScr;S:=0;M:=0;
   Write('Ievadiet elementu skaitu <1-100> :');ReadLn(N);
   WriteLn;if (N<1)or(N>100) then Halt;
   For i:=1 to N do
     begin
       Repeat
         okk:=True;
         Write('Ievadiet ',i,' elementu :');ReadLn(A[i]);
         For j:=1 to i-1 do if(A[j]=A[i])or(abs(A[i])>100)then okk:=False;
       Until okk;
     end;
   ClrScr;
   For i:=1 to N do Write(' ',A[i]);
   WriteLn;
   Binary(S,M);
   WriteLn;
   Write('Atkartot ? J/N :');ReadLn(ch);
 Until not(ch in['j','J']);
End.


2. Testēšanas dokumentācija

2.1. Testu projektējumu specifikācija (TPS)

TPS idenfikātors:
-          'Binary'

Īpašība ko testēs:
-          Atbilstība projektējuma prasību specifikācijai

Pieejas izklāsts:
-          Testējot programmu 'Karto', tiks testēti galvenokārt divi svarīgi uzdevumi. Pirmais, vai programma korekti veic datu ielasīšanu un pārbaudi. Otrais, vai programma pareizi sakārto skaitļus masīvā.
-          Tiks apskatīti arī gadījumi ar robežvērtībām un kļūdainām vērtībām.


Testu idenfikācija:
-          'Test1' - mēģina ievadīt vairāk/mazāk elementus kā atļauts
-          'Test2' - ievada neatļautas elementu vērtības (neatbilst diapazonam)
-          'Test3' - ievada nekorektas elementu vērtības (cits datu tips)
-          'Test4' - kārtošanas algoritma tests
-          'Test5' - robežvērtību elementu pārbaude


Īpašības - Atbilstība projektējuma prasību specifikācijai, 'pass/fail' kritēriji:
-          Programma neatbilst projektējuma specifikācijai, ja kaut viens no augstāk minētajiem testiem ir ieguvis neapmierinošu rezultātu. Piemēram,
'Test2' - tiekievadītas neatļautas vērtības, bet programma turpina darbu bez brīdinājuma, vai tiek ievadītas pareizas vērtības, bet programma izdot kļūdas paziņojumu.


2.2. Testēšanas kopsavilkuma pārskats (TSR)


TSR idenfikators:
-          'TestBinarySummary'


Kopsavilkums:
-          Programma 'Karto' realizēta programmēšanas valodā TURBO PASCAL, kura paredzēta darbam operāciju sistēmā MS DOS.
-          Testēšanas gaitā atklājās:
  1. Programmā nav paredzēts gadījums, ka ievada skaitli, kas pārsniedz attiecīgā datu  tipa diapazonu
  2. Programmā nav paredzēts gadījums, ka ievada skaitļa vietā simbolisku izteiksmi
  3. Programmā nav paredzēts gadījums, ka ievada vesala skaitļa vietā reālu skaitli
-          Uzskatu, ka programma neatbilst prsību specifikācijai
-          Testēšanas vadītājs: Edijs Birkenfelds




/E. Birkenfelds/








 

3. Sarežģītības novērtējums

3.1. Programmas lielums pēc Holsteda mēra


N1 - kopējais komandu skaits
N2 - kopējais operandu skaits

N= N1 + N2 =52+74=126


3.2. Makkeiba (McCabe) skaitlis


N - kopējais salīdzinājuma operāciju skaits

C=N+1=9+1=10


3.3. MakKlūra (McClure) skaitlis


M1 - kopējais salīdzinājuma operāciju skaits
M2 - mainīgo skaits, kuri pielietoti šajās operācijās

M= M1 + M2 =9+11=20


4. Prasību apraksts


Sistēmas mērķis - sakārtot vesalus skaitļus augošā secībā, izmantojot Binārās ievietošanas metodi.

Ievadskaitļu masīvu jānolasa no klavitūras.

Izejas skaitļu masīvu jāizdrukā uz ekrāna.

Nepareizu ievaddatu gadījumā programmai korekti jātiek galā.

Sistēmai jābūt realizētai TURBO PASCAL vidē.

Programmai jābūt strādājošai un noturīgai pret neparedzētām lietotāju darbībām.


5. Projektējuma apraksts


Modulis "Karto" veic datu ielasīšanu un pārbauda to korektību. No moduļa "Karto" tiek izsaukta procedūra "Binary", kas veic skaitļu kārtošanu pēc Binārās ievietošanas metodes. Saņēmi atpakaļ vadību, modulis "Karto" izdrukā sakārtoto skaitļu masīvu.

6. Lietotāja saskarnes apraksts

Datu ievads


















Rezultāts pēc programmas darbināšanas


Nav komentāru:

Ierakstīt komentāru