14. Sta jos srecemo u skriptama.

Koristeci se jednostavnim primerima, koje smo stalno pomalo modifikovali, do sada smo upotrebili gotovo sve programske reci koje mozemo sresti u JSL-u. Da bi spisak bio potpun, ovde cemo objasniti jos par njih, i naravno, drzacemo se nasih starih, vec poznatih primera.
U prvom primeru cemo videti kako se mogu upotrebiti konstante.

; pocetak skript fajla

Const
DnevnaPoruka="Dobar dan",
NocnaPoruka="Dobro vece"

Script PozdravnaPoruka ()

If SysGetTime ("HH") < 18 then
SayString (DnevnaPoruka)
else
SayString (NocnaPoruka)
EndIf

EndScript
  


U pocetku fajla na mestu gde smo do sada upoznali upotrebu reci "Globals", za deklarisanje globalnih promenljivih, sada se pojavila programska rec
Const
Ona sluzi na slican nacin da oznaci pocetak deklarisanja, odnosno liste konstanti. Konstante se navode tako sto se napise ime konstante, i odmah joj se operatorom jednako dodeli vrednost. Kada je konstanti jednom dodeljena vrednost, ona se u toku izvrsenja programa vise ne moze menjati, znaci ostaje konstantna, a moze se koristiti u bilo kojoj skripti ili funkciji. 
Zbog cega uopste konstante? Kod nekih vrednosti koje se na vise mesta javljaju u skript fajlu i svuda su jednake, u slucaju da  imamo potrebu da ovu vrednost izmenimo, morali bismo to da radimo kroz citav fajl. Umesto toga, koristeci konstantu, isti posao zavrsavamo tako sto izmenimo u programskom tekstu definiciju konstante na mestu gde smo je deklarisali, odnosno dodelili vrednost.
Ovo nam daje posebnu pogodnost za jezicko lokalizovanje skripti. Mi smo nase konstante u primeru upotrebili samo po jedanput, ali bismo to mogli da uradimo na desetine puta u nekom vecem fajlu. Tada bi bilo dovoljno da pozdravne poruke prevedemo na neki drugi jezik, samo na jednom mestu, a to je na mestu gde smo definisali konstante. Treba uociti da kod deklarisanja konstanti ne navodimo tip kao kod promenljive, ali je za nizanje liste konstanti takodje nakon svake potrebno upisati zarez, a nakon poslednje zarez se ne sme upisati.
Da bi prica o promenljivama i konstantama bila potpuna, ovde cemo napomenuti jos par reci o dva tipa promenljivih koje do sada nismo koristili.
To su "handle" i "object".
Handle predstavlja tip promenljive u koji mozemo smestiti broj koji ima svaki prozor u Windows-u. Do ovih brojeva se dolazi ili se manipulise njima, raznim Jaws-ovim funkcijama. Kada budemo radili konkretne poslove sa prozorima na ekranu, upotreba ovog tipa promenljive ce postati jasnija.
Object, je tip promenljive koji se srazmerno redje srece u skriptama, i omogucava nam komunikaciju sa aplikacijama na nivou objekata. Objekti su slozene programske strukture koje imaju slicno realnim objektima u zivotu "svojstva", koja predstavljaju njihove osobine, i "metode", koji predstavljaju operacije koje su sposobni da izvrse.

Od reci i znakova koje cete sresti u skript fajlovima a nismo ih jos objasnili ostalo je da kazemo nesto o zagradama, negaciji i operatoru za nejednako.
Zagrade se upotrebljavaju slicno kao i u matematici. Sve ono sto je u zagradi bice izvrseno pre onoga sto je van zagrade. Ukoliko su zagrade umetnute jedne unutar drugih, onda ce biti prvo izvrseno ono sto je u zagradama koje su unutra, a onda onima koje su spolja  i tako dalje sve dok ne bude izvrseno i ono sto je izvan zagrada. Sami operatori imaju prioritet u izvrsavanju, a zagrade nam dakle sluze da redosled njihovog izvrsavanja izmenimo u skladu sa konkretnim potrebama.
Tako kada smo pisali:
If Sat < 18 then
iskaz Sat < 18 je sluzio da uporedi vrednost za Sat sa brojem 18 i ako je ta vrednost manja od 18 kao rezultat da odgovor "true", ili tacno, a u suprotnom da da "false" ili netacno.
U slucaju da nam u programskom kodu vise odgovara, odnosno da kod izgleda logicnije , gornji red bi mogao da se napise:
If not(Sat >= 18) then
i rezultat bi bio isti. Upotrebili smo programsku rec "not", koja sluzi da obrne logicki smisao iskaza i pri tome stavili iskaz u zagrade da bismo dali do znanja kompajleru da ne zelimo da okrene logicki smisao samo vrednosti za Sat koji nailazi kao sledeca rec u programskom tekstu, vec smisao citavog iskaza.
Obicnim jezikom receno, gornja dva nacina se mogu izraziti:
Ako je sat manji od osamnaest.
i
Ako nije sat veci ili jednak osamnaest.
Ocigledno je da obe ove recenice znace isto.
Umesto programske reci "not", u JSL-u se moze upotrebiti znak uzvika, (!). Tako bi drugi od gornja dva reda postao:
If !(Sat >= 18) then
Znamo vec od ranije da je operator koji nam govori o tome da li su dve vrednosti jednake, sastavljen od dva znaka jednakosti, (==), a ovde cemo jos dodati da upotrebom uzvicnika i jednog znaka jednakosti, (!=), dobijamo operator koji sluzi da proverimo da li su dve vrednosti nejednake, odnosno razlicite. Ako bismo napisali:
If Sat != 12 then
onda bismo posmatrali sve vrednosti koje su razlicite od dvanaest.

Pogledacemo sada jos jedan primer koji ce nam objasniti upotrebu jos jedne JSL programske reci.

; pocetak skript fajla

Const
DnevnaPoruka="Dobar dan",
NocnaPoruka="Dobro vece"

Script PozdravnaPoruka ()


PerformScript SaySystemTime()

If SysGetTime ("HH") < 18 then
SayString (DnevnaPoruka)
else
SayString (NocnaPoruka)
EndIf

EndScript
  

Sta se desava kad pokrenete ovu skriptu? Pre nego sto se izgovori nasa poruka, cujemo tacno vreme. U programskom redu:
PerformScript SaySystemTime()
upotrebili smo programsku rec 
PerformScript 
koja je u JSL-u zaduzena za pozivanje skripte na izvrsenje. Setite se da se funkcije pozivaju jednostavno njihovim navodjenjem u programskom tekstu. Mi smo ovde programski pozvali skriptu koju inace sa tastature pozivamo pomocu "insert+F12".

I poslednja programska rec koju cete sresti u skriptama a nismo je objasnili je   "use". Rekli smo da se nakon reci "include", upisuje u navodnicima ime "jsh" ili "jsm" fajla da bi se ovi fajlovi umetnuli u programski tekst naseg "jss" fajla. Nakon reci use, upisuju se u navodnicima imena "jsb" binarnih fajlova. Iako ovo deluje slicno, razlika je u tome sto uz upotrebu reci "use", samo ukazujemo kompajleru na to da zelimo da pri izvrsenju koristimo neki od vec gotovih binarnih fajlova, dok kod "include", mi preuzimamo sadrzaj uvrstenih fajlova i vrsimo njegovu kompilaciju zajedno sa postojecim tekstom da bi se tek dobio binarni fajl.

Uspeli smo da dodjemo do kraja u tumacenju programskih reci i simbola koji se srecu u JSL-u, i da se upoznamo sa programskim strukturama koje se srecu u skriptama, funkcijama i skript fajlovima uopste. Neke stvari su ostale nedorecene, neke su jos uvek teske za razumevanje, ali najgore je proslo. Ocekuju nas bolji dani. Do sada smo bili osudjeni na monotono ponavljanje neznatno modifikovanog primera sa pozdravnom porukom uz upotrebu samo par Jaws-ovih funkcija. Ako ste razumeli dosadasnje primere i umeli da ih modifikujete i isprobate, nista vam ne stoji na putu da pocnete da koristite bogatu kolekciju Jaws-ovih funkcija, sto ce vam uz upotrebu nekih Jaws-ovih pomocnih alata predstavljati pravo zadovoljstvo.
Odmorite se malo, a onda procitajte jos jednom sve sto ste do sada prosli, kako biste uhvatili zalet za pisanje pravih Jaws skripti. Programa koji vama i drugima mogu koristiti u radu sa racunarom.
 "Lekcija 15."

 "Skok na sadrzaj "