GIMNAZIJA
AKTUELNO
Forum
SAJTOVI
ZANIMLJIVO
Š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:
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:
Drugi primer jasno objašnjava koja je svrha programa, i vodi korisnika kroz njegov tok, obrazlažući rezultat koji je doboven obradom.
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.
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.
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.
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.
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.