Programiranje u Pascalu
Uvod u programiranje u Turbo Pascalu 7 (1)
Pregled razvoja programskih jezika
Prvi ra
č
unari bili su vrlo složeni za koriš
ć
enje. Njih su koristili isklju
č
ivo stru
č
njaci koji su
bili osposobljeni za komunikaciju s ra
č
unarom. Ta komunikacija se sastojala od dva osnovna
koraka: davanje uputstava ra
č
unaru i
č
itanje rezultata obrade. I dok se
č
itanje rezultata vrlo
brzo u
č
inilo koliko-toliko snošljivim uvo
đ
enjem štampa
č
a na kojima su se rezultati ispisivali,
unošenje uputstava – programiranje – se sastojalo od mukotrpnog upisivanja niza nula i
jedinica. Ti nizovi su davali ra
č
unaru uputstva kao što su: „saberi dva broja”, „premesti
podatak s neke memorijske lokacije na drugu”, „sko
č
i na neku instrukciju izvan normalnog
redosleda instrukcija” i sli
č
no. Kako je takve programe bilo vrlo složeno pisati, a još složenije
č
itati i ispravljati, ubrzo su se pojavili prvi programerski alati nazvani
asembleri
(engl.
assembler
s).
U asemblerskom jeziku svaka mašinska instrukcija predstavljena je mnemonikom koji je
razumljiv ljudima koji
č
itaju program. Tako se sabiranje naj
č
eš
ć
e obavlja mnemonikom
ADD, dok se premeštanje podataka obavlja mnemonikom MOV. Time se postigla bolja
č
itljivost programa, ali i dalje je bilo vrlo složeno pisati programe i ispravljati ih jer je bilo
potrebno davati sve, pa i najmanja uputstva ra
č
unaru za svaku pojedinu operaciju. Javlja se
problem koji
ć
e kasnije, nakon niza godina, dovesti i do pojave tzv. viših programskih jezika,
tj. potrebno je razviti programerski alat koji
ć
e osloboditi programera rutinskih poslova i
omogu
ć
iti mu da se usredi na problem koji rešava.
Zbog toga se pojavljuje niz viših programska jezika, koji preuzimaju na sebe neke „dosadne”
programerske poslove. Tako je FORTRAN bio posebno pogodan za matemati
č
ke prora
č
une,
zatim BASIC koji se vrlo brzo u
č
io, COBOL koji je bio po pravilu namenjen upravljanju
bazama podataka.
Šta je program i kako ga napisati?
Elektronski ra
č
unari postali su danas pribor kojim se svakodnevno koristimo kako bismo sebi
olakšali posao ili se zabavili. Prvi navod
ć
e mnogi poricati, navode
ć
i kao kontraargument
č
injenicu da im je za podizanje novca u banci pre trebalo znatno manje vremena nego otkad
su šalteri kompjuterizovani. Me
đ
utim,
č
injenica je da su mnogi poslovi danas nezamislivi bez
ra
č
unara; u krajnjoj liniji, dokaz za to je tekst koji upravo
č
itate koji je u potpunosti napisan
pomo
ć
u ra
č
unara.
Sam ra
č
unar,
č
ak i kada se uklju
č
i na niskonaponsku mrežu, nije u stanju da uradi ništa
korisno. Na današnjim ra
č
unarima se ne može
č
ak ni zagrejati jelo, što je ina
č
e bilo mogu
ć
e
na ra
č
unarima sa elektronskim cevima. Ono što vam nedostaje je pamet neophodna za
koristan rad ra
č
unara: programi, programi, … i samo programi. Pod programom
podrazumevamo niz naredbi u mašinskom jeziku koje procesor u vašem ra
č
unaru izvršava i
shodno njima obra
đ
uje podatke, izvodi matemati
č
ke prora
č
une, ispisuje tekstove, iscrtava
krive na ekranu itd. Pokretanjem programa sa diska, diskete ili kompakt diska (CD-ROM-a),
program se u
č
itava u radnu memoriju ra
č
unara i procesor po
č
inje sa mukotrpnim postupkom
njegovog izvršavanja.
Programi koje pokre
ć
ete na ra
č
unaru su u
izvršnom obliku
(engl.
executabl
e), razumljivom
samo procesoru vašeg (i njemu sli
č
nih) ra
č
unara. U suštini, mašinski kôd se sastoji od nizova
binarnih cifara: nula i jedinica.
Budu
ć
i da su današnji programi tipi
č
no dužine nekoliko megabajta, naslu
ć
ujete da ih autori
nisu pisali direktno u mašinskom kôdu. Gotovo svi današnji programi se pišu u nekom od
viših programskih jezika
(FORTRAN, BASIC, Pascal, C) koji su donekle razumljivi i
ljudima (barem onima koji imaju nešto pojma o engleskom jeziku). Naredbe u tim jezicima
se sastoje od mnemonika. Kombinovanjem tih naredbi programer slaže
izvorni kôd
(engl.
Source cod
e) programa, koji se pomo
ć
u posebnih programa
prevodilaca
(engl.
compile
r) i
poveziva
č
a
(engl.
linker)
prevodi u izvršni kôd. Prema tome, pisanje programa u užem smislu
podrazumijeva pisanje izvornog kôda. Me
đ
utim, kako pisanje koda nije samo sebi svrha, pod
pisanjem programa u širem smislu podrazumeva se i prevo
đ
enje, odnosno povezivanje
programa u izvršni kôd. Prema tome, možemo govoriti o
č
etiri faze kod pravljenja programa:
1. pisanje izvornog kôda
2. prevo
đ
enje izvornog kôda,
3. povezivanje u izvršni kôd i
4. testiranje programa.
Da bi se za neki program moglo re
ć
i da je uspešno napravljen, treba uspešno pro
ć
i kroz sve
č
etiri faze. Kao i svaki drugi posao, i pisanje programa zahteva odre
đ
eno znanje i veštinu.
Prilikom pisanja programera vrebaju Scile i Haribde, danas poznatije pod nazivom greške ili
bugovi
(engl.
bug
- stenica) u programu. Ako se pojave greške u nekoj od faza izrade
programa, izvorni kôd treba doraditi i ponoviti sve prethodne faze. Zbog toga postupak izrade
programa nije pravolinijski, ve
ć
manje-više podse
ć
a na mukotrpno kretanje u krug. Na slici 1.
je šematski prikazan celokupni ciklus izrade programa, od njegovog po
č
etka, pa sve do
njegovog završeta. Analizirajmo najvažnije faze izrade programa.

upozorenja. Greške koje prijavi prevodilac nazivaju se
greškama pri prevo
đ
enju
(engl.
compile-time error
s). Nakon toga programer
ć
e pokušati ispraviti sve navedene greške i
ponovo prevesti izvorni kôd – sve dok prevo
đ
enje koda ne bude uspešno okon
č
ano, ne može
se pristupiti povezivanju koda. Prevo
đ
enjem izvornog dobija se datoteka
objektnog kôda
(engl.
object cod
e), koja se lako može prepoznata po tome što obi
č
no ima nastavak
.o
ili
.obj
(u našem primeru bi to bilo
primer.obj
).
Nakon što su ispravljene sve greške uo
č
ene prilikom prevo
đ
enja i kôd ispravno preveden,
pristupa se povezivanju objektnih kôdova u izvršni. U ve
ć
ini slu
č
ajeva objektni kôd dobijen
prevo
đ
enjem programerovog izvornog kôda treba povezati sa postoje
ć
im
bibliotekama
(engl.
librarie
s). Biblioteke su datoteke u kojima se nalaze ve
ć
prevedene gotove funkcije ili
podaci. One se isporu
č
uju zajedno s prevodiocem, mogu se posebno kupiti ili ih programer
može sam razviti. Bibliotekama se izbegava ponovno pisanje vrlo
č
esto koriš
ć
enih operacija.
Tipi
č
an primer za to jesu biblioteka matemati
č
kih funkcija koja se uvek isporu
č
uje uz
prevodilac, a u kojoj su definisane sve funkcije poput trigonometrijskih, eksponencijalnih i
sli
č
no.
Prilikom povezivanja proverava se mogu li se svi pozivi kodova realizovati u izvršnom kodu.
Ukoliko poveziva
č
tokom povezivanja uo
č
i neku nepravilnost, ispisa
ć
e poruku o greški i
onemogu
ć
iti generisanje izvršnog koda. Ove greške nazivaju se
greškama pri povezivanju
(engl.
link-time error
s) – sada programer mora prionuti na ispravljanje grešaka koje su
nastale pri povezivanju. Nakon što se isprave sve greške, kôd treba ponovno prevesti i
povezati.
Uspešnim povezivanjem dobija se izvršni kôd. Me
đ
utim, takav izvršni kôd još uvek ne
garantuje da
ć
e program raditi ono što ste zamislili. Na primer, može se dogoditi da program
radi pravilno za neke vrednosti podataka, ali da se za druge ponaša nepredvidivo. U tom se
slu
č
aju radi o
greškama pri izvo
đ
enju
(engl.
run-time error
s).
Da bi program bio potpuno korektan, programer mora da istestira program da bi uo
č
io i
ispravio te greške, što zna
č
i ponavljanje celog postupka u lancu „ispravljanje izvornog koda-
prevo
đ
enje-povezivanje-testiranje”. Kod jednostavnijih programa broj ponavljanja
ć
e biti
manji i smanjiva
ć
e se proporcionalno sa rastu
ć
im iskustvom programera. Me
đ
utim, kako
raste složenost programa, tako se pove
ć
ava broj mogu
ć
ih grešaka i celi postupak izrade
programa neiskusnom programeru može postati mukotrpan.
Za ispravljanje grešaka pri izvo
đ
enju, programeru na raspolaganju stoje programi za
otkrivanje grešaka (engl.
debugge
r). Radi se o programima koji omogu
ć
avaju prekid
izvo
đ
enja izvršnog koda programa koji testiramo na unapred zadatim naredbama, izvo
đ
enje
programa naredbu po naredbu, ispis i promene trenutnih vrednosti pojedinih podataka u
programu. Najjednostavniji programi za otkrivanje grešaka ispisuju izvršni kôd u obliku
mašinskih naredbi. Me
đ
utim, ve
ć
ina današnjih naprednih programa za otkrivanje grešaka su
simboli
č
ki
(engl.
symbolic debugge
r) – iako se izvodi prevedeni, mašinski kôd, izvo
đ
enje
programa se prati preko izvornog kôda pisanog u višem programskom jeziku. To omogu
ć
ava
vrlo lagano lociranje i ispravljanje grešaka u programu.
Osim grešaka, prevodilac i poveziva
č
redovno prijavljuju i upozorenja. Ona ne
onemogu
ć
avaju nastavak prevo
đ
enja, odnosno povezivanja koda, ali predstavljaju
potencijalnu opasnost. Upozorenja se mogu podeliti u dve grupe. Prvu grupu
č
ine upozorenja
koja javljaju da kôd nije potpuno korektan. Prevodilac ili poveziva
č
ć
e zanemariti našu
grešku i prema svom naho
đ
enju generisati kôd. Drugu grupu
č
ine poruke koje upozoravaju da
„nisu sigurni da je ono što smo napisali upravo ono što smo želeli napisati”, tj. radi se o
dobronamernim upozorenjima na zamke koje mogu proizi
ć
i iz na
č
ina na koji smo program
napisali. Iako
ć
e, uprkos upozorenjima, program biti preveden i povezan (možda
č
ak i
korektno), pedantan programer ne
ć
e ta upozorenja nikada zanemariti – ona
č
esto upu
ć
uju na
uzrok grešaka pri izvo
đ
enju gotovog programa. Za precizno tuma
č
enje poruka o greškama i
upozorenja neophodna je dokumentacija koja se isporu
č
uje uz prevodilac i poveziva
č
.
Da zaklju
č
imo: „Šta nam, dakle, treba za pisanje programa na jeziku Turbo Pascal?” Osim
ra
č
unara, programa za pisanje i ispravljanje teksta, prevodioca i poveziva
č
a trebaju vam još
samo tri stvari: interesovanje, puno slobodnog vremena i dobra literatura. Interesovanje
verovatno postoji, ako ste sa
č
itanjem ovog teksta stigli
č
ak dovde. Slobodno vreme
ć
e vam
trebati da isprobate primere i da se sami oprobate u bespu
ć
ima Turbo Pascala.
Uvod u Turbo Pascal
Zašto je Pascal dobar izbor programskog jezika? Odgovor
ć
e se sam nametnuti, ako se kaže
bar nekoliko re
č
i o nastanku jezika Pascal.
Njegov tvorac Niklaus Wirth (profesor na Eidgenossische Technische Hochschule, Cirih,
Švajcarska) izborom imena jezika po
č
astio je velikog francuskog nau
č
nika i filozofa Blaisea
Pascala (1623 — 1662) koji je izgradio jedan od prvih mehani
č
kih ra
č
unara.
Stvaraju
ć
i programski jezik Pascal, Wirth je težio da nau
č
i u
č
enika da programira tako da ne
mora da menja logiku stvari koje je ve
ć
ranije nau
č
io, da ono što želi da izrazi bude i u
programu
č
itljivo, jasno i pregledno. Omogu
ć
iti u
č
eniku da svoje misli saopštava programom
tako, da naredbe slede misli, da se njihov tok ne gubi u iznenadnim skokovima, da se
razumeju bez muke. Wirth je želeo da se programiranje u
č
i takvim jezikom u kojem
ć
e se
misli lako prenositi, a s druge strane, da program jasno odražava misli programera. Imaju
ć
i
na raspolaganju više programske jezike kao što su Fortran, Algol i Basic Wirth nije bio
zadovoljan. Pokušao je da svoje želje zadovolji ubacivanjem novih stvari u Algol. Ubrzo je
bio nezadovoljan krparenjem Algola i odlu
č
io je da napiše novi jezik. S radom je po
č
eo
šezdesetih godina, a prvi program-prevodilac proradio je u kasnim sedamdesetim godinama.
Wirth je prvi proklamovao prednosti strukturnog programiranja. One se sastoje u
mogu
ć
nosti razlaganja problema u manje celine (module ili blokove) od kojih svaka sme da
ima samo jedan ulaz i jedan izlaz izbegavaju
ć
i naredbu GO TO. Informacije se prenose u
sledu iz bloka u blok, dok se ne do
đ
e do kona
č
nog rešenja.
Wirth je želeo kao prvo, jezik koji
ć
e odražavati principe sistemati
č
nog kreiranja i drugo, da
njegovo ostvarenje na ra
č
unaru bude pouzdano i efikasno. To je i ostvario Pascalom,
zajedni
č
ki rade
ć
i sa svojim kolegama, a baza mu je bila Algol.
Wirth smatra da u
č
enje programiranja zapravo zna
č
i u
č
enje struktura podataka, toka
informacija i kontrole.
Programski jezici kao što su Fortran i Basic nemaju takve osobine i konstrukcije da
programer može direktno izraziti programom svoje ideje.
Č
esto se name
ć
e potreba da

Akcije od 1 do
N ponavljaju se
odre
đ
eni broj
puta.
Ponavljanje do
akcije N izvrši se
bar jedanput, a
zatim se u
zavisnosti od
rezultata testa
nastavlja ili
prekida.
Ponavljanje zavisi od testa,
može se desiti da se obavi
ili ne obavi nijednom.
c)
Slu
č
aj selekcije
Tok programa zavisi od selektora
č
iju vrednost
odre
đ
uje test.
Svi su ovi tokovi ostvarivi u Pascalu bez naredbe GO TO primenom naredbi FOR, IF . .
THEN . . ELSE, REPEAT, WHILE, CASE. One omogu
ć
uju da se i letimi
č
nim
č
itanjem
dobro napisanog programa Pascal može pretpostaviti njegovo ponašanje, tj. stati
č
ki plan
koda odre
đ
uje njegovo dinami
č
ko ponašanje. To je vrlo zna
č
ajno za programera, jer on mora
ispravljati greške u programu i mora održavati program. Ukoliko je mogu
ć
e obuhvatiti što
više informacija jednostavnim
č
itanjem programa, to
ć
e biti lakše i brže izdvojiti greške.
Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.
Slični dokumenti