Gradivo III razreda u Gimnaziji "Veljko Petrović"

Računarstvo i Informatika

Razumljivost programa

Šta predstavlja razumljivost programa?

Ako vam je jasno čemu program služi na osnovu čitanja programskog koda, tada možete reći da je program razumljiv. Ako pri tome postoji sumnja o tome šta program treba da radi, on je manje razumljiv ili nerazumljiv. Naravno da je ovo relativna stvar koja zavisi od znanja i iskustva onog ko čita kod, ali je u svakom slučaju moguće povećati razumljivost načinom na koji je kod zapisan.

Drugi aspekt razumljivosti javlja se prilikom izvršenja programa.

Sledi nekoliko preporuka koje će Vam u tome pomoći. Pri tome ćemo uporedo pokazati dva ili više kodova (po gradaciji) koji to ilustruju:

Vođenje korisnika kroz tok programa (razumljivost izvršavanja).

Program izračunava površinu pravougaonika ako mu se unesu stranice sa tastature.

Loše:

Var a, b:real;
Begin
  Readln(a, b);
  Writeln(a*b);
End.

Dobro:

Uses crt;
Var a, b:real;
Begin
  ClrScr;
  Writeln('Izračunavanje površine pravougaonika.');
  Writeln;
  Write('Unesite stranicu pravougaonika a = '); Readln(a);
  Write('Unesite stranicu pravougaonika b = '); Readln(b);
  Writeln('Povrsina pravougaonika (a*b) je ', a*b:10:2);
End.

Oba gore napisana programa rade istu stvar, no kod a naročito izvršavanje programa su u prvom primeru katastrofalni:

  • Pokretanjem programa, na monitoru se nalazi stari sadržaj.
  • Kurzor blinkuje na mestu na kome se zadesio, i niko nema pojma šta treba raditi.
  • Čak i ako pretpostavimo da treba nešto uneti, da li ćemo pogoditi tip podatka.
  • I ako smo utrefili tip podatka, na ektanu će se pojaviti rezultat za koji ne znamo šta predstavlja.

Drugi primer jasno objašnjava koja je svrha programa, i vodi korisnika kroz njegov tok, obrazlažući rezultat koji je doboven obradom.

Zadavanje imena veličinama koje koristite (razumljivost koda).

Program ispisuje unetu rečenicu bez samoglasnika.

Loše:

Var s:string;
    i:byte;
Begin
  Write('Unesite jednu rečenicu : '); Readln(s);
  Writeln;
  Write('Rečenica bez samoglasnika glasi : ');
  For i := 1 to length(s) do
     if pos(copy(s, i, 1), 'AOEIUaoiue') = 0
       then write(copy(s, i, 1));
End.

Bolje:

Var Recenica:string;
    Znak:byte;
Begin
  Write('Unesite jednu rečenicu : '); Readln(Recenica);
  Writeln;
  Write('Rečenica bez samoglasnika glasi : ');
  For Znak := 1 to length(Recenica) do
     if pos(copy(Recenica, Znak, 1), 'AOEIUaoiue') = 0
       then write(copy(Recenica, Znak, 1));
End.

Uvođenjem pomoćnih veličina (razumljivost koda).

Nastavljamo povećanje razumljivosti prethodna dva primera.

Još bolje:

Const Samoglasnici  = ['A','E','O','I','U','a','e','i','o','u'];
Var   Recenica     : string;
      Znak, DuzinaRecenice : byte;
Begin
  Write('Unesite jednu rečenicu : ');
  Readln(Recenica);
  Writeln;
  Duzina := Length(Recenica);
  Write('Rečenica bez samoglasnika glasi : ');
  For Znak := 1 to DuzinaRecenice do
     if not (Recenica[Znak] in Samoglasnici)
       then write(Recenica[Znak]);
End.

Pomočne veličine DuzinaRecenice i Samoglasnik (skup) popravili su dosta razumljivost programa. Sada se već može čitanjem koda reći čemu je namenjen program.

Ubacivanjem komentara ili praznih redova kako bi se fizički odvojile celine u programu.

Program za izračunavanje površine i zapremine kupe, kada se unose poluprečnik osnove i visina.

Dobro:

Var Poluprecnik,Visina,Zapremina,Izvodnica,Povrsina,Obim: real;

	
Begin
 
 {Unos podataka}
  Write('Unesite poluprecnik osnove kupe r = ');
  Readln(Poluprecnik);
  Write('Unesite visinu kupe h = ');
  Readln(Visina);
  Writeln;
 
 {Obrada}
  Izvodnica := sqrt(sqr(poluprecnik)+sqr(visina)); {s=√(r2+h2)}
  Obim := 2 * Poluprecnik * Pi;
  Povrsina := (Sqr(Poluprecnik) + Obim * Izvodnica) * Pi;
  Zapremina := (Sqr(Poluprecnik) * Pi * Visina) / 3;
 
 {Ispis rezultata}
  Writeln('Povrsina  kupe je : ', Povrsina :10:2);
  Writeln('Zapremina kupe je : ', Zapremina:10:2);
End.

Pomočne veličine DuzinaRecenice i Samoglasnik (skup) popravili su dosta razumljivost programa. Sada se već može čitanjem koda reći čemu je namenjen program.

Ubacivanjem komentara sa namerom da se razjasni deo koda.

Program za prebacije uneseni tekst u mala slova u slučaju da je bio uključen CAPS LOCK.

Još bolje:

Var   Recenica       : string;
      znak, DuzinaRecenice : byte;
Begin
  Write('Unesite jednu rečenicu velikim slovima : ');
  Readln(Recenica);
  Writeln;
  Duzina := Length(Recenica);
  Write('Rečenica ispisana malim slovima glasi : ');
  For Znak := 1 to DuzinaRecenice do
   IF Recenica[Znak] in ['A'..'Z'] 
    then write(Chr(Ord(Recenica[Znak])+32)) {Odgovarajuća mala i 
    else write(Recenica[Znak]);           velika slova se u ASCII
                                          tabeli razlikuju za 32}
End.

Davanjem imena procedurama i funkcijama koje u potpunosti opisuju njihovu namenu.

S obzirom da identifikatori mogu imati duge nazive, ovo nije teško ostvariti.

Program za izračunavanje površine trougla kada se znaju njegove stranice. Dajemo samo kod gl. programa.

Begin
  Repeat
     UnesiteStranicuTrougla(prva);
     UnesiteStranicuTrougla(druga);
     UnesiteStranicuTrougla(treca);
  Until MoguceJeSastavitiTrougao;
  IzracunajPovrsinuTrouglaSaStranicama(Prva, Druga, Treca);
  IspisiPovrsinuTrougla;
End.

Valid XHTML 1.0 Strict! | Site map | Kontakt | © 2007..2015 prof. Duško Obradović sa učenicima Gimnazije