6. Neka skripta donese odluku.

U dosadasnjim primerima, nas program, odnosno skripta, izvrsavala se po redosledu kako sunavedeni programski redovi. U praksi se medjutim program ne izvrsava uvek ovako linearno. Cesto je potrebno nesto odabrati, preskociti, izvrsiti vise puta uzastopno, ili napraviti izlet u neki drugi deo programskog koda i ponovo se vratiti. Mi cemo se na ovom casu posluziti programskim kodom sa proslog casa kako bismo ga dopunili i omogucili selektivan izgovor poruka u zavisnosti od doba dana odnosno aktuelnog sata. I ponovo, sve je lakse objasniti na primeru.

Script PozdravnaPoruka  ()
Var

string Poruka

If SysGetTime ("HH") < 18 then
Let Poruka="Dobar dan"
SayString (Poruka)

Else
Let Poruka="Dobro Vece"
SayString (Poruka)

EndIf

EndScript

Prepravite vasu skriptu da izgleda kako je napisano iznad i kompilirajte je a potom isprobajte u Notepad-u. Koji vam je pozdrav uputila?

Do sada smo se upoznali sa programskim recima "Script", "Var", "string", "Let" i "EndScript".
Sada su uvedene jos i "If", "Then", "Else", i "EndIf". Hajde da ih objasnimo.

Programska rec If sluzi da se oznaci pocetak a programska rec Then da se oznaci kraj nekog uslova. Zapamtite da se ove dve programske reci uvek koriste u paru i oznacavaju u slobodnom prevodu redom "Ako", "Onda". Uslov koji se programski posmatra, navodi se izmedju njih i u nasem slucaju to izgleda ovako:

If SysGetTime ("HH") < 18 then

Gde je uslov koji posmatramo:
SysGetTime ("HH") < 18 

Uslov se u ovom primeru sastoji iz jedne Jaws funkcije koja se zove:
SysGetTime,
operatora "manje", (<),
i brojne vrednosti 18. 

Funkcija SysGetTime, upotrebljena je u nasem primeru za dobijanje vrednosti za sate iz sistemskog sata. To je vrednost izmedju 0 i 23, i za sada to shvatite tako kao da na mestu gde je upisano: 

SysGetTime ("HH")

stoji broj izmedju 0 i 23, i pokazuje broj sati iz sistemskog casovnika. Kada se sretnemo sa detaljnijim opisom funkcija na nekom od sledecih casova, objasnicemo to programerskim jezikom. Za sada svoju paznju usmerite na funkcionisanje programskih uslova.

Slobodnim jezikom receno, nas red glasi:
Ako je broj sati manji od osamnaest onda... 

Programska rec Else je opcionalna, sto znaci da se navodi samo ako nam je potrebna i mogla bi se slobodnim recnikom oznaciti kao "inace". Vraticemo se na nju.

Programska rec EndIf oznacava kraj programskog bloka koji pocinje od reci Then a izvrsavanje ovog bloka naredbi zavisi od uslova navedenog izmedju "If" i "Then". Kao sto smo rekli da If obavezno ide u paru sa Then, tako sada upamtimo da svaki "If" u programskom tekstu mora da ima i svoj "EndIf". U oba slucaja, ako se izostavi, parnjak naredbe If, kompajler ce prijaviti gresku. Ako bismo izostavili neobavezni "Else" deo, nasa bi skripta izgledala ovako:

Script PozdravnaPoruka  ()
Var

string Poruka

If SysGetTime ("HH") < 18 then
Let Poruka="Dobar dan"
SayString (Poruka)
EndIf

EndScript
 
Izmedju reci Then i EndIf, sada se nalaze samo dva reda i njihovo izvrsavanje ili neizvrsavanje zavisi od uslova navedenog izmedju If i Then. Program bi funkcionisao ovako:
Kada je stigao do programske reci If, uzima u razmatranje uslov, pa ako je taj uslov tacan, izvrsava dva reda koja su izmedju Then i EndIf, a ako uslov nije tacan, preskace na prvu naredbu koja sledi iza EndIf. to je u nasem slucaju EndScript i skripta se zavrsava. Posto smo sasvim proizvoljno postavili granicu izmedju dana i veceri na broju 18, to znaci da za sve vrednosti sata koji su manji od osamnaest, izgovorice se poruka "Dobar dan". To je zakljucno sa 17 sati. Od 18 i dalje, nece se izgovoriti nista jer uslov da je sati manje od osamnaest nece biti ispunjen. 

Ako zelimo da nasa skripta funkcionise kao u primeru sa pocetka casa, uvescemo rec Else. Ova rec deli blok koji se nalazi izmedju reci Then i EndIf na dva bloka koji su medjusobno iskljucivi u odnosu na istinitost uslova koji smo postavili izmedju reci If i Then. Blok izmedju Then i Else ce se izvrsiti samo u slucaju kada je uslov ispunjen, a blok izmedju Else i EndIf ce se izvrsiti samo u slucaju kada uslov nije ispunjen. Sada program radi ovako:
Posmatra se uslov izmedju If i Then, pa ako je tacan izvrsavaju se dva reda izmedju Then i Else, a ako nije tacan, ova dva reda se preskacu a izvrsavaju se dva reda izmedju Else i EndIf. To se konacno slobodnim jezikom moze reci:
Ako je manje od osamnaest sati, reci "Dobar dan", a ako nije, reci "Dobro vece".  

Ostalo je jos da objasnimo operator "manje", (<). Ovaj operator sluzi za uporedjivanje vrednosti sa njegove leve i desne strane i u slucaju da je vrednost sa leve strane manja od vrednosti sa desne strane, citav iskaz dobija vrednost "true" sto znaci "tacno", a ako nije, dobija vrednost "false" sto znaci "netacno" ili "laz". Postoje jos i operatori  
"vece", (>), 
"jednako", (==),
"manje ili Jednako", (<=), 
"vece ili jednako", (>=).
 
Treba uociti da je operator za uporedjivanje sastavljen od dva znaka jednakosti, i treba ga razlikovati od jednostrukog znaka jednakosti koji sluzi za dodeljivanje vrednosti i sa kojim smo se vec ranije upoznali.


Je li komplikovano? Mozda se u pocetku tako cini, ali pokusajte da sebi u mastu cvrsto usadite ovu programsku strukturu. Vas napredak u shvatanju programskog koda ce doziveti veliki kvalitativni skok. Pustite svojoj masti na volju i promenite neke delove koda. Ako se kompajler pobuni, pazljivo pogledajte kod i razmislite sta bi moglo da se popravi. Sigurno cete uspeti.
 "Lekcija 7."


 "Skok na sadrzaj"