/[VRac]/docs/Galaksija_upute.html
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /docs/Galaksija_upute.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 119 - (hide annotations)
Sat Aug 4 09:23:03 2007 UTC (12 years, 9 months ago) by dpavlin
File MIME type: text/html
File size: 149477 byte(s)
local mirror of http://user.sezampro.yu/~dejanr/rac1/rac1umet.htm
1 dpavlin 119 <html>
2    
3     <head>
4     <meta http-equiv="Content-Type"
5     content="text/html; charset=windows-1250">
6     <meta name="GENERATOR" content="Microsoft FrontPage 5.0">
7     <title>&quot;Galaksija&quot; - uputstvo za upotrebu (umetak)</title>
8     <meta name="Microsoft Theme" content="indust 0011, default">
9     </head>
10    
11     <body bgcolor="#FFFFFF" text="#000000" link="#990066" vlink="#CC6633" alink="#FFCC00"><!--mstheme--><font face="Arial">
12    
13     <a href="http://user.sezampro.yu/~dejanr/rac1/">Originalna verzija na web-u</a>
14    
15     <h3>Raèunar &quot;galaksija&quot; -
16     Uputstvo za upotrebu</h3>
17     <h4><i>Dejan Ristanoviæ</i></h4>
18     <p>Raèunar &quot;galaksija&quot; je, dakle, sastavljen i nalazi se pred vama. Teži i
19     riskantniji deo posla je time završen; preostalo vam je da testirate kompjuter i
20     - uživate u plodovima svoga rada! Vaš novi raèunar poznaje programski jezik
21     bejzik i sa pravom isto to oèekuje i od svog vlasnika. Da biste se, dakle,
22     uspešno sporazumevali sa raèunarom, morate da uðete u tajne ovog jezika što, kao
23     što æete videti, nije mnogo težak posao. Ovo uputstvo za upotrebu æe izložiti
24     sve naredbe koje raèunar &quot;galaksija&quot; razume i dati primere njihove upotrebe.
25     Ono, ipak, nije pisano tako da bude potpuno samostalno - u okviru ovog
26     specijalnog izdanja nalazi se osnovna škola bejzika, koju bi svaki vlasnik
27     raèunara &quot;galaksija&quot; koji nema iskustva sa programiranjem trebalo da proèita pre
28     nego što nastavi sa ovim tekstom. Primetiæete da su neke naredbe raèunara
29     &quot;galaksija&quot; razlièite od onih koje su pomenute u školi bejzika. To ne treba da
30     vas uplaši - bejzik nije standardizovan jezik i razlikuje se od kompjutera do
31     kompjutera. No, kada se jednom potrudite i shvatite neki od njegovih dijalekata,
32     prilagoðavanje nekom drugom raèunaru je prava deèja igra.</p>
33     <p>Ovo uputstvo je koncipirano tako da vam omoguæi da pišete programe pre nego
34     što ga potpuno proèitate i savladate. Zato su najvažniji oblici naredbi izloženi
35     na njegovom poèetku, dok se deo za bolje poznavaoce raèunara nalazi na samom
36     kraju. Onima koji imaju iskustva sa stonim raèunarima preporuèujemo da
37     jednostavno pogledaju spisak naredbi i memorijsku mapu i poènu sa radom - na
38     uputstvo æete se vraæati kada osetite potrebu.</p>
39     <h4>Povezivanje sa televizorom</h4>
40     <p>Raèunar &quot;galaksija&quot; može da bude povezan sa bilo kojim televizorom koji prima
41     UHF podruèje. Za to se koristi koaksijalni prikljuèak koji se nalazi sa njegove
42     zadnje strane. Stoga uzmite odgovarajuæi kabl i povežite ga sa antenskim ulazom
43     u televizor. Zatim ukljuèite televizor, prebacite ga na UHF podruèje i, laganim
44     okretanjem biraèa kanala, pokušajte da na ekranu dobijete poruku READY (READY
45     znaèi da je raèunar spreman da primi vaše naloge). Kada je ugledate, možete da
46     uzviknete EUREKA - raèunar radi kako treba!</p>
47     <p>Èitaoci koji poseduju monitor ili prepravljeni televizor æe poželeti da
48     povežu raèunar sa njim i tako oslobode kuæni TV aparat. Za to treba koristiti
49     monitorski izlaz i kabl sa prikljuècima koji zavise od samog monitora.</p>
50     <h4>Tastatura</h4>
51     <p>Raèunar &quot;galaksija&quot; ima 54 tastera koji su rasporeðeni poput dirki na pisaæoj
52     mašini. Kada god pritisnete neki od njih, raèunar na ekranu ispisuje
53     odgovarajuæi simboli to na mestu gde se prethodno nalazio kurzor (_). èim se
54     neki simbol pojavi na ekranu, kurzor se pomera za jedno mesto udesno da bi vam
55     pokazao gde æe se pojaviti sledeæi znak. Ukoliko otkucate toliko slova da se
56     ispuni èitav red, raèunar æe automatski preæi u sledeæi bez ikakve crtice koja
57     bi to oznaèila - raèunar ne deli reæi na slogove niti obraæa pažnju na to da li
58     je neka reè nelogièno &quot;preseèena&quot;.</p>
59     <p>Pritisnite, na primer, taster A dvadesetak puta. Zatim æe vam postati jasno
60     da veliki broj slova A ne znaèi ništa, pa æete poželeti da ih obrišete. Za to
61     vam nije potrebno nikakvo korekturno mastilo - dovoljno je da pritisnete taster
62     <font face="Wingdings">ß</font> i kurzor æe se pomeriti za jedno mesto ulevo brišuæi automatski slovo na
63     èije je mesto došao. Uzastopnim pritiscima na ovaj taster možete da obrišete sva
64     otkucana slova - sve do poèetka reda.</p>
65     <p>Na tastaturi postoji, jasno, i taèka, ali æete se za koji trenutak uveriti da
66     vaš raèunar tu taèku ne smatra krajem reèenice. Otkucajmo, na primer, RAÈUNAJ i
67     stavimo taèku. Kompjuter ne reaguje, što znaèi da nije ni shvatio da mu je
68     izdata neka naredba. U programiranju je, naime, uobièajeno da se na kraju
69     reèenice, umesto taèke, pritisne taster koji je oznaèen sa RET. Pritisnimo ga i
70     na ekranu æe se pojaviti poruka WHAT? iza koje æe . slediti uobièajeno READY;
71     šta se dogodilo? Pritiskom na RET stavili smo raèunaru do znanja da je izdata
72     naredba koju on treba da izvrši. On je analizirao tekst koji smo otkucali i
73     primetio da se meðu naredbama koje poznaje ne nalazi RAÈUNAJ. Zato je na ekranu
74     ispisao WHAT?, a zatim i READY, stavljajuæi nam do znanja da je spreman za.novu
75     naredbu, koja, kako se nada, neæe biti nerazumljiva.</p>
76     <p>Taster RET je, dakle, neobièno znaèajan. Ne zaboravimo da ga pritisnemo kada
77     god dovršimo neku naredbu ili reèenicu - ako to ne uèinimo, raèunar æe mirno
78     èekati da nešto preduzmemo, ispoljavajuæi pri tom upornost koja daleko
79     prevazilazi našu.</p>
80     <p>Ako nastavimo da pritiskamo RET, ekran æe ubrzo biti popunjen. Tada æe se
81     prvi redovi postepeno gubiti, a ono što kucamo pojavljivati u poslednjem. Stalno
82     opštenje sa poslednjim redom može nekome da se uèini ponižavajuæim - u tom
83     sluèaju treba da naredimo raèunaru da obriše sadržaj èitavog ekrana i poène da
84     piše od njegovog vrha. Jedan od naèina je da iskljuèimo i ponovo ukljuèimo
85     raèunar, ali ima i jedan bolji.</p>
86     <p>Upoznajmo, najpre, taster SHIFT. Ovaj napis ne vredi tražiti na tastaturi:
87     odnosi se na dva neobeležena tastera. Istovremenim pritiskom na SHIFT i neki
88     broj dobijamo na ekranu znak napisan iznad tog broja (pritisnimo, na primer,
89     istovremeno SHIFT i 2. i na ekranu æe da se pojavi znak navoda). Kod brojeva je,
90     kao što vidimo, simbol napisan na samom tasteru ali postoje i neke dirke sa
91     skrivenom šiftovanom funkcijom. Pritisnimo, na primer, istovremeno SHIFT i DEL
92     (ukoliko smo, kao što je planirano, pri montaži predvideli dva SHIFT tastera,
93     možemo da koristimo bilo koji od njih) i ekran æe biti obrisan. Kada nam, dakle,
94     raèunareve poruke WHAT?, koje su izazvane našim poèetnièkim greškama dosade,
95     pritisnuæemo SHIFT DEL i obrisati ekran.</p>
96     <p>Taster SHIFT æe nam otkriti još neke male tajne raèunara &quot;galaksija&quot;.
97     Pritisnimo, na primer tastere SHIFT i C i na ekranu æe se pojaviti slovo Æ.
98     Sasvim slièno, SHIFT S daje slovo Š, SHIFT Z slovo Ž a SHIFT X (zapamtiæete ga
99     po tome što kapa iznad slova è ima oblik koji podseæa na polovinu iksa) - È.
100     Ostali tasteri nemaju šiftovane funkcije - SHIFT A, na primer, daje slovo A.</p>
101     <p>Ako ste, èitajuæi ovaj tekst, eksperimentisali sa kucanjem, verovatno ste,
102     namerno ili sluèajno, pritisnuli taster REPT. Tada se desilo nešto prilièno
103     èudno - raèunar je poèeo da ispisuje gomile istih slova. Taster REPT dakle, ima
104     funkciju koju programeri nazivaju &quot;autorepeat&quot; (automatsko ponavljanje) -
105     pritisak na njega nalaže raèunaru da ponavlja funkciju poslednjeg pritisnutog
106     tastera. Namerno nismo rekli &quot;da ponavlja poslednje slovo&quot;: otkucajte red sa
107     dosta slova a zatim pritisnite <font face="Wingdings">ß</font>. Poslednje slovo je, kao što smo i oèekivali,
108     obrisano. No, pritisak na REPT æe proizvesti daleko efektnije dejstvo: raèunar
109     æe &quot;gutati&quot; slova sve dok ne obriše èitav red.</p>
110     <p>Osim tastera koje smo upoznali na tastaturi se nalaze još tri strelice kao i
111     dirke sa tajanstvenim napisima BRK i LIST/STOP (u daljem tekstu LIST). BRK je
112     skraæenica od BREAK (u bukvalnom prevodu &quot;slomi&quot;); pritisak na ovaj taster
113     nalaže raèunaru da prekine sa izvršavanjem nekog programa i na ekranu ispiše
114     READY. Taster LIST nalaže raèunaru da na ekranu prikaže sadržaj programa koji se
115     nalazi u njegovoj memoriji, a strelice nemaju neku posebnu funkciju - koriste se
116     u igrama i raèunar može da kontroliše da li je neka od njih pritisnuta. Za sada
117     ne umemo da pišemo programe pa su nam svi ovi tasteri prilièno beskorisni, ali
118     to neæe trajati dugo.</p>
119     <p>Sa zadnje strane raèunara se nalazi dugme iznad koga bi trebalo da piše
120     RESET. Ono predstavlja pojaèanu verziju tastera BRK: ukoliko vam se ikada desi
121     da se raèunar blokira i otkaže poslušnost (ovo se dešava, ako je raèunar
122     ispravan, samo kod onih koji pišu programe na mašinskom jeziku ili pri èitanju
123     programa sa kasete), pritisak na RESET æe, u 99% sluèajeva, izazvati ispisivanje
124     uobièajenog READY, pri èemu memorija raèunara neæe biti izbrisana. U preostalom
125     procentu sluèajeva moraæete da iskljuèite i ponovo ukljuèite raèunar, èime æe
126     programi biti izbrisani. Važno je zapamtiti da ni jednom naredbom ili grupom
127     naredbi raèunar ne može da bude ošteæen - iskljuèivanje i ponovno ukljuèivanje
128     æe ga uvek povratiti.</p>
129     <p>Pre nego što poðemo dalje, moramo da izreknemo i jedno upozorenje vezano za
130     dugme RESET: ono nije namenjeno stalnoj upotrebi. Pokušajte, na primer, da brzo
131     pritiskate RESET više puta, pa lako može da se desi da memorija raèunara bude
132     kompletno izbrisana. RESET, dakle, koristite samo kao poslednju soluciju, kada
133     nikako drukèije ne možete da &quot;probudite&quot; vaš kompjuter.</p>
134     <h4>Demo kaseta</h4>
135     <p>Uz raèunar &quot;galaksija&quot; ste, svakako, naruèili i kasetu sa programima. Ona je
136     namenjena testiranju raèunara, navikavanju na rad sa kasetofonom i, prevashodno,
137     zabavi. Da biste je koristili, povežite džek na kome piše EAR (ili neki drugi
138     napis, zavisno od kasetofona) sa raèunarom prema ranije prikazanoj šemi, stavite
139     demo-kasetu, otkucajte OLD, pritisnite RET i startujte kasetofon. Ovo OLD,
140     doduše, znaèi star, ali neæe naterati raèunar da postane stara i istrošena
141     mašina - ono mu jednostavno nalaže da sa kasete uèite program koji je ranije
142     snimljen i pripremi ga za izvršavanje. Ekran æe se najpre potpuno zatamniti, da
143     bi se, desetak sekundi docnije, pojavilo READY. Ako se na ekranu i posle,
144     tridesetak sekundi ne pojavljuje ništa, raèunar nije primio program. Bez panike
145     - to se dešava zbog toga što jaèina zvuka ne odgovara potrebama kompjutera.
146     Pritisnite zato RESET, premotajte kasetu na poèetak, ponovo otkucajte OLD RET i
147     startujte kasetofon uz malo manipulisanje sa potenciometrom za regulisanje
148     jaèine zvuka. Posle kraæeg ili dužeg truda, program æe biti uèitan u memoriju
149     raèunara i moæi æete da ga startujete. Startovanje se obavlja kucanjem naredbe
150     RUN i pritiskanjem tastera RET. Bez brige: raèunar neæe nikuda pobeæi (RUN=trèi,
151     beži) nego æe poèeti sa izvršavanjem upravo uèitanog programa. Ne možemo da vam
152     kažemo šta æe se tada desiti. U okviru prvog programa raèunar æe vas upoznati sa
153     sadržajem demo-kasete i pouèiti šta da radite.</p>
154     <p>Za uèitavanje preostalih programa procedura je ista: otkucate OLD pritisnete
155     RET, startujete kasetofon i, kada se na ekranu pojavi READY, otkucate RUN i
156     pritisnete RET. Raèunar æe, zatim, ispisati ime programa i upitati vas da li su
157     potrebna uputstva za njegovu upotrebu. Odgovorite sa D (od DA) i pažljivo ih
158     proèitajte.</p>
159     <h4>Komandni i programski mod</h4>
160     <p>Možda æe se naæi neko ko dalji tekst neæe ni èitati - nekoliko igara sa
161     demo-kasete æe mu oduzeti toliko vremena da æe smatrati da je raèunar ispunio
162     svoju funkciju i opravdao uloženi novac. Ipak, uèenje programiranje je lak i
163     prijatan posao u koji se vredi upustiti.</p>
164     <p>Poèeæemo na najjednostavniji moguæi naæin: otkucaæemo, slovo po slovo, tekst
165     PRINT &quot;RAÈUNAR GALAKSIJA&quot; i pritisnuti RET (navodnici se dobijaju istovremenim
166     pritiskom na tastere SHIFT i 2, a slovo È pritiskom na SHIFT X). Tako smo
167     naložili raèunaru da na ekran prenese tekst naveden izmeðu znakova navoda - u
168     ovom sluèaju RAÈUNAR GALAKSIJA. Možemo da ponavljamo ovu naredbu veæi broj puta
169     umeæuæi izmeðu znakova navoda bilo koji tekst proizvoljne dužine i raèunar æe
170     biti poslušni izvrsilac naših želja. Svaka naredba se analizira i izvršava onoga
171     momenta kada smo pritisnuli RET, pa se ovaj naèin rada naziva komandnim (na ovaj
172     naèin raèunaru izdajemo komande kojima kontrolišemo njegov rad).</p>
173     <p>Osim komandnog treba da upoznamo programski režim rada. I kod njega raèunaru
174     izdajemo komande, ali se one ne izvršavaju odmah - raèunar ih pamti i izvršava
175     tek kada mu to bude naloženo. Da bi kompjuter razlikovao komande od naredbi koje
176     treba da &quot;pamti&quot;, uvedeni su brojevi programskih linija. Broj programske linije
177     (ili, kao što se ponekad nazivaju, linijski broj) ukazuje raèunaru na redosled
178     kojim æe, kada mu to bude naloženo, izvršavati &quot;zapamæene&quot; instrukcije. Ovaj
179     broj treba da se nalazi na samom poèetku linije.</p>
180     <p>Otkucajmo, na primer, 10 PRINT &quot;RAÈUNAR GALAKSIJA&quot; i pritisnimo RET. Raèunar
181     nije izvršio naredbu; ona je zapamæena i dodeljen joj je linijski broj 10.
182     Otkucajmo zatim 20 PRINT &quot;JE MOJ PRVI KOMPJUTER&quot; i ponovo pritisnimo RET.
183     Obzirom da je linijski broj druge naredbe (20) veæi od linijskog broja prve
184     (10), raèunar æe najpre ispisati RAÈUNAR GALAKSIJA a zatim JE MOJ PRVI
185     KOMPJUTER. Da proverimo ovo rezonovanje, otkucaæemo RUN (ovo je naredba koju smo
186     dobro upoznali igrajuæi se sa demo-kasetom - ona nalaže raèunaru da zapoène sa
187     izvršavanjem programa) i pritisnuti neizbežno RET. Raèunar æe, kao što se i
188     oèekivalo, izvršiti program i na ekranu ispisati:</p>
189     <!--mstheme--></font><pre>RAÈUNAR GALAKSIJA
190     JE MOJ PRVI KOMPJUTER
191     READY</pre><!--mstheme--><font face="Arial">
192     <p>Ono READY nije posledica neke od naredbi našeg programa veæ uobièajeni signal
193     da je raèunar spreman da primi sledeæu naredbu. To ponovo može da bude RUN -
194     program æe se izvršavati onoliko puta koliko poželimo.</p>
195     <p>Pokušajmo da proširimo program koji smo sastavili i da se uverimo da raèunar
196     izvršava naredbe po redosledu njihovih brojeva a ne po redu unošenja: otkucajmo
197     15 PRINT &quot;KONSTRUISAN SEPTEMBRA 1983&quot;, i pritisnimo RET. Po startovanju programa
198     (RUN i RET) na ekranu æe biti ispisan tekst:</p>
199     <!--mstheme--></font><pre>RAÈUNAR GALAKSIJA
200     KONSTRUISAN SEPTEMBRA 1983
201     JE MOJ PRVI KOMPJUTER
202     READY</pre><!--mstheme--><font face="Arial">
203     <p>što znaèi da je linija 15 umetnuta izmeðu linija 10 i 20 - baš kao što smo i
204     oèekivali.</p>
205     <p>Ako na ovaj naèin poènemo da umeæemo naredbe, ubrzo æemo zaboraviti kako
206     program izgleda. To je lako proveriti: jednostavno pritisnemo taster LIST (LIST
207     bi slobodno moglo da se prevede sa &quot;prikaži program&quot;). Dok taster LIST držimo
208     pritisnut, raèunar æe ispisivati program koji se nalazi u njegovoj memoriji,
209     liniju po liniju. Èim otpustimo ovaj taster, ekran æe se &quot;zamrznuti&quot;, pa æemo
210     moæi da analiziramo uneseni program. Ako želimo da se listanje nastavi, ponovo
211     æemo pritisnuti taster LIST, a ukoliko ne želimo pritisak na BRK æe na ekranu
212     prikazati uobièajeno READY.</p>
213     <p>Umesto da pritiskamo taster LIST, možemo da otkucamo reè LIST i pritisnemo
214     RET. Sve dok je RET pritisnut, prikazivanje programa traje, a otpuštanje tastera
215     privremeno prekida ovaj proces. Na prvi pogled nema smisla koristiti naredbu
216     LIST kada je obezbeðen taster sa istim dejstvom. Ovakav zakljuèak je samo
217     donekle taèan: ponekad æemo poželeti da prikazujemo program poèevši od neke
218     linije. U tom sluèaju treba da otkucamo LIST, a zatim navedemo broj te linije i
219     pritisnemo RET (npr. LIST 200). Na taj naèin ne moramo da posmatramo poèetak
220     programa ako nam je potreban njegov kraj. Za poèetak æe, doduše, naši programi
221     biti toliko kratki da æe bez problema stajati na ekran, pa naredbu LIST
222     ostavljamo za blisku buduænost.</p>
223     <p>Ni izvršavanje programa ne mora da poène od poèetka: možemo, na primer, da
224     otkucamo RUN 15 i pritisnemo RET. Raèunar æe poèeti da izvršava program od
225     linije 15 i ispisati na ekranu:</p>
226     <!--mstheme--></font><pre>KONSTRUISAN SEPTEMBRA 1983.
227     JE MOJ PRVI KOMPJUTER
228     READY</pre><!--mstheme--><font face="Arial">
229     <p>Ova reèenica je besmislena, ali za raèunar nije postojao razlog da odbije da
230     je prenese na ekran, pošto su sve instrukcije u programu bile valjane. U
231     buduænosti æemo videti da postoje programi koji ne mogu da se izvršavaju od
232     proizvoljne linije bez katastrofalnih posledica (raèunajuæi i gubitak èitavog
233     programa) ali nam je i ovo bila dobra škola - zapoèinjanje programa od neke
234     neplanirane taèke ne mora da izazove grešku, ali su rezultati nepredvidljivi.</p>
235     <p>Unošenje programa i njegovo neprekidno izvršavanje je, bez sumnje, lepa
236     zabava, ali æe nam i ona dosaditi. Kada poželimo da izbrišemo otkucani program
237     iz memorije, možemo da iskljuèimo raèunar iz napajanja i trenutak docnije ga
238     ponovo ukljuèimo ili, što je sasvim isto, otkucamo PRINT USR(0) i pritisnemo
239     RET. Na raspolaganju je i naredba NEW (posle nje se, naravno, pritiska RET) koja
240     briše samo program, ali ne i sadržaj ekrana i promenljivih.</p>
241     <h4>&quot;Galaksija&quot; kao kalkulator - PRINT, INT</h4>
242     <p>Naredbe PRINT koje smo do sada koristili su nalagale raèunaru da tekst
243     otkucan izmeðu navodnika jednostavno prenese na ekran. No, ova naredba može da
244     obavi i mnogo aktivniju ulogu: otkucajmo, na primer, PRINT 17+13 i pritisnimo
245     RET. Na ekranu æe se pojaviti broj 30, što znaèi da je postavljeni zadatak
246     izvršeni Umesto 17+13 možemo da otkucamo bilo koji izraz na naèin koji je
247     uobièajen u matematici: uz upotrebu zagrada, pri tome treba da pazimo da se
248     množenje obeležava zvezdicom (*) a deljenje kosom crtom (/) i da se množenje ne
249     podrazumeva: PRINT (12+2)(17+3) bi izazvalo grešku, dok bi se PRINT
250     (17+2)*(17+3) korektno izvršilo. Evo kako bi izgledala naredba koja izraèunava
251     brojni izraz:</p>
252     <!--mstheme--></font><pre>4.5+17.2-19.45
253     --------------- * 3
254     2.1-12.4/16.22</pre><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>PRINT (4.5+17.2* 19.45)/(2.1-12.4/16.22))*3</pre><!--mstheme--><font face="Arial">
255     <p>Izvršavanje ove naredbe æe na ekranu dati rezultat 761.595, koji je taèan na
256     šest cifara.</p>
257     <p>Videli smo da brojevi sa kojima raèunar &quot;galaksija&quot; operise ne moraju da budu
258     celi - dovoljno je da koristimo decimalnu toèku umesto kod nas uobièajenog
259     zareza. Ipak, brojevi sa kojima možemo da radimo su ogranièeni na raspon od
260     -999999 do 999999. Brojevi veæi ili manji od ovih limita se prikazuju na drugi
261     naèin: pomoæu stepena broja 10. Otkucajmo, na primer. PRINT 1000000 i raèunar æe
262     Ispisati 1E+06 (podrazumevamo da ste zapamtili da se posle svake naredbe
263     pritiska RET, pa ubuduæe neæemo pisati odgovarajuæi komentar). Slovo E potièe od
264     reci eksponent, a zapis se prevodi kao 1*10<s^ />6<d />. Podseæanje na osnovaèku
265     matematiku æe nas uveriti da je 1*10<s^ />6<d /> isto što i 1000000 - jedino je
266     zapis drukèiji. Èak ni na ovaj naèin ne možemo da operišemo sa neogranièeno
267     velikim brojevima - ukoliko neki od argumenata ili rezultat neke operacije bude
268     manji od 10<s^ />-36<d /> ili veæi od 10<s^ />37<d /> raèunar æe na ekranu
269     ispisati HOW? - tražili smo od njega nešto što prevazilazi njegove raèunske
270     sposobnosti.</p>
271     <p>Krajnje je vreme da sastavimo i prvi program. Obzirom da tek poèinjemo, to æe
272     biti jednostavan programèiæ koji raèuna vreme potrebno za putovanje od jednog do
273     drugog mesta. Da pojednostavimo problem, pretpostaviæemo da je brzina kretanja
274     konstantna na èitavom putu i da je unapred zadata (ovakvim zahtevima bi se
275     verovatno pokoravao voz koji ne nailazi na semafore, krivine i sliène prepreke).
276     Ako put koji treba da se preðe oznaèimo slovom S, brzinu slovom V a potrebno
277     vreme slovom T, važiæe relacija T = S/V (ovu relaciju osnovci uèe u VI razredu a
278     i mlaðima bi trebala da bude oèigledna: što je veæi put, duže se putuje; što je
279     veæa brzina, kraæe se putuje). No, pre nego što poènemo da pišemo program,
280     pokušaæemo da iskoristimo naredbu PRINT i proverimo kako sve u praksi izgleda.</p>
281     <p>Od Beograda do Dubrovnika, na primer, ima 370 km u pravoj liniji, a avion
282     &quot;Caravelle&quot; se kreæe brzinom od nekim 800 km/h. Da naðemo vreme (u èasovima),
283     otkucaæemo:</p>
284     <!--mstheme--></font><pre>PRINT 370/800</pre><!--mstheme--><font face="Arial">
285     <p>i na ekranu æe se pojaviti broj 0.4625. Olovka i papir (za sada još ne umemo
286     da iskoristimo raèunar da obavi sve potrebne operacije) æe pokazati da ovo
287     predstavlja 27 minuta i 45 sekundi.</p>
288     <p>Koliko bi put trajao da se avion kretao brzinom od 900 km/h? Ili, šta da je
289     putovao od Beograda do Zagreba? Mogli bismo, jasno, stalno da kucamo naredbe
290     PRINT ali æemo uvideti da od toga nema velikih vremenskih ušteda. Zato æemo u
291     program uneti instrukciju</p>
292     <!--mstheme--></font><pre>30 PRINT S/V</pre><!--mstheme--><font face="Arial">
293     <p>30 je, kao što se seæamo, broj programske linije ali šta su S i V? Programeri
294     ih nazivaju promenljive i koriste za smeštanje nekih podataka u memoriju
295     raèunara. Svaka promenljiva je ime nekog podatka koji docnije može da bude
296     pozivan da bi se sa njim raèunalo. Njeno ime može da bude bilo koje slovo od A
297     do Z (ne raèunajuæi slova È, Æ, Š i Ž) i pogodno je koristiti slova koja
298     asociraju na podatak koji promenljiva èuva (mi smo upotrebili slova S i V).
299     Ipak, program koji smo sastavili nije potpun. Ako otkucamo RUN na ekranu æe da
300     se pojavi broj 1 koji svakako ne predstavlja rešenje našeg problema. Razlog je
301     jednostavan: raèunar &quot;galaksija&quot; još nije nauèio da èita naše misli i nema
302     nikakav naèin da zna šta bi trebalo da sadrže promenljive S i V. U poèetku rada
303     one imaju jednaku vrednost (pažnja: ta vrednost nije nula!) pa je rezultat
304     deljenja jedan. Zato æemo da dodamo naredbe 10 S=370 i 20 V=800 (nismo
305     zaboravili da se posle svake linije pritiska RET?) i startovati program sa RUN.
306     Ovoga puta sve je korektno radilo i raèunar je ispisao vreme putovanja od
307     Beograda do Dubrovnika i to izraženo u èasovima.</p>
308     <p>Ako želimo da ubrzamo zamišljeni avion, otkucaæemo 20 V=900. Kako nova linija
309     ima isti linijski broj kao i stara, jedna od njih mora da napravi mesto drugoj.
310     Raèunar uvek smatra da je linija koju smo poslednju otkucali merodavna i uklanja
311     iz memorije liniju 20 V=800 da bi je zamenio sa 20 V=900. Program se ponovo
312     startuje sa RUN i dobija se novi rezultat.</p>
313     <p>Prikazivanje rezultata koje smo primenili nije baš sreæno izabrano: raèunar
314     nam prikazuje vreme u èasovima i to na naèin koji nam nije prirodan: navikli smo
315     da se vreme izražava u èasovima, minutima i sekundama. Da prikažemo rezultat na
316     ovakav naèin potrebna nam je jedna nova funkcija - INT. INT je skraæenica od
317     INTEGER i oznaèava, u bukvalnom provodu, ceo broj. U &quot;galaksijinom&quot; bejziku INT
318     je funkcija koja izraèunava &quot;ceo deo&quot; izraza koji je naveden iza nje. Ako, na
319     primer, otkucamo PRINT INT(3.1415) i pritisnemo RET, na ekranu æe se pojaviti
320     broj 3 - raèunar je odbacio decimale broja u zagradi. U zagradi nije morala da
321     se nalazi konstanta: mogli smo da napišemo PRINT INT(A/1000) ili èak PRINT INT(2.5+(A-17.2+C)).</p>
322     <p>Da bismo broj pretvorili u èasove, minute i sekunde, moramo da pomnožimo
323     vreme u èasovima sa 60 i ceo deo rezultata proglasimo za potreban broj minuta;
324     broj èasova dobijamo deljenjem vremena sa šezdeset i uzimanjem celog dela
325     rezultata (možete da uzmete papir i olovku i proverite ovo rezonovanje na
326     primerima; nema nikakvog smisla da nastavljate sa èitanjem pre nego što vam do
327     sada korišæene naredbe ne postanu kristalno jasne). Evo i programa:</p>
328     <!--mstheme--></font><pre>10 S=370
329     20 V=800
330     30 T=S/V
331     40 PRINT INT(T)
332     50 PRINT &quot;ÈASOVA,&quot;
333     55 M=(T-INT(T))*60
334     60 M=INT(M)
335     70 PRINT M
336     80 PRINT &quot;MINUTA.&quot;</pre><!--mstheme--><font face="Arial">
337     <p>Program, kao što se vidi, prikazuje samo èasove i minute ali æete, ako ste ga
338     razumeli, bez problema poveæati taænost navoðenjem sekundi!</p>
339     <h4>Naredba INPUT</h4>
340     <p>Da bismo u prethodnom programu izbegli neprekidno kucanje brojnog izraza koji
341     raèuna S/V i kome prethodi naredba PRINT, koristili smo promenljive. Na žalost
342     ni na ovaj naèin kucanje nije bitno skraæeno: bolje bi bilo da nas, pri svakom
343     izvršavanju programa, raèunar pita za pojedine vrednosti, a da mi samo kucamo
344     potrebne brojeve. Ovaj problem resava naredba INPUT, èije æemo dejstvo upoznati
345     pošto modifikujemo prethodni program:</p>
346     <!--mstheme--></font><pre>10 PRINT &quot;KOLIKO SU MESTA UDALJENA?&quot;
347     15 INPUT S
348     20 PRINT &quot;KOLIKA JE BRZINA?&quot;
349     25 INPUT V</pre><!--mstheme--><font face="Arial">
350     <p>Kada raèunar naiðe na naredbu INPUT, privremeno æe da prekine sa izvršavanjem
351     programa i na ekranu ispiše znak pitanja. Od korisnika se oèekuje da otkuca neki
352     broj i, kada to uèini, pritisne RET. Raèunar æe otkucani broj dodeliti
353     promenljivoj èije je ime navedeno iza INPUT i nastaviti sa radom.</p>
354     <p>Program se, kao i obièno, startuje sa RUN. Raèunar ispisuje:</p>
355     <!--mstheme--></font><pre>KOLIKO SU MESTA UDALJENA?
356     ?_</pre><!--mstheme--><font face="Arial">
357     <p>Otkucajmo broj 370 i pritisnimo RET. Raèunar ispisuje:</p>
358     <!--mstheme--></font><pre>KOLIKA JE BRZINA?
359     ?_</pre><!--mstheme--><font face="Arial">
360     <p>èim otkucamo 800 i pritisnemo RET, na ekranu æe pisati:</p>
361     <!--mstheme--></font><pre>0
362     ÈASOVA,
363     27
364     MINUTA.
365     READY</pre><!--mstheme--><font face="Arial">
366     <p>READY je znak da je raèunar spreman za dalji rad; možemo da otkucamo RUN i
367     damo podatke za neki drugi grad ili brzinu. No, ubrzo æe nam dosaditi stalno
368     kucanje naredbe RUN. Zar ne bi bilo bolje naložiti raèunaru da se, po
369     izvršavanju programa i izdavanju rezultata, vrati na poèetak programa i od nas
370     zatraži nove podatke? Za to æe nam dobro poslužiti naredbe bezuslovnog prelaska
371     (skoka).</p>
372     <h4>Naredbe bezuslovnog i uslovnog prelaska - GOTO, IF...ELSE, STOP</h4>
373     <p>Dodajmo našem programu naredbu 90 GOTO 10 (pažnja: u principu nije bitno da
374     li u programu ostavljamo prazne prostore izmeðu GOTO (ili bilo koje druge
375     naredbe) i broja 10 ali ne smemo da ostavljamo prostor unutar same naredbe: GO
376     TO 10 æe izazvati poruku WHAT? i prekid rada programa). Smisao naredbe GOTO je
377     sasvim jasan èak i za onoga ko nije imao nikakvih kontakta sa raèunarima: kada
378     kompjuter naiðe na nju, preæi æe na izvršavanje linije broj 10. Na ovaj naèin
379     smo sastavili program koji je &quot;opasan&quot;: kada ga jednom startujemo on æe se
380     neprekidno izvršavati, stalno nas pitajuæi za podatke. Kada iscrpimo sve
381     podatke, izvršavanje programa postaje bespredmetno i treba ga prekinuti.
382     Jednostavno æemo pritisnuti taster BRK i raèunar æe ispisati BREAK 15 (što znaèi
383     da je, u momentu kada smo ga zaustavili, izvršavao liniju broj 15) i uobièajeno
384     READY. Zatim možemo da otkucamo NEW i tako obrišemo program, ali æemo se za sada
385     uzdržati od toga - program možemo da proširimo upoznajuæi dve nove naredbe.</p>
386     <p>Naredba GOTO se izvršava uvek na isti naèin - kada raèunar naiðe na nju,
387     prelazi na izvršavanje naredbe èiji je broj naveden iza GOTO (možemo da napišemo
388     i GOTO A ako je promenljivoj A ranije dodeljen broj linije na koju raèunar treba
389     da ide, ali æete ovo indirektno adresiranje, bar u poèetku, rede koristiti).</p>
390     <p>Postoji i naredba koja izaziva razlièito dejstvo u zavisnosti od nekih
391     parametara - to je naredba IF. Iza IF se nalazi neka pogodbena relacija èiju
392     taènost raèunar ispituje. Da bismo ovo razumeli, dodaæemo u naš program naredbu
393     18 IF S=0 STOP. Treba, pre svega, da razumemo njenu sintaksu: STOP je naredba
394     koju tek upoznajemo i koja jednostavno izaziva prekid rada. S=0 iza IF naredbe
395     ne oznaèava kao do sada da se promenljivoj S dodeljuje vrednost nula veæ navodi
396     raèunar da ispita da li je vrednost promenljive S jednaka nuli. Ako jeste,
397     izvršava se naredba STOP i raèunar prestaje sa radom, a ako nije, naredba STOP
398     biva ignorisana i raèunar prelazi na izvršavanje sledeæe naredbe.</p>
399     <p>Uz IF se èesto koristi i naredba ELSE. Možemo da unesemo novu naredbu 18 koja
400     glasi:</p>
401     <!--mstheme--></font><pre>18 IF S=0 STOP: ELSE PRINT &quot;NASTAVLJAM SA RADOM&quot;</pre><!--mstheme--><font face="Arial">
402     <p>Ukoliko je S zaista nula, raèunar æe se zaustaviti. Ako nije, raèunar æe
403     izvršiti naredbu iza ELSE, a zatim nastaviti da izvršava program. Dve taèke
404     ispred ELSE za sada morate da primite &quot;zdravo za gotovo&quot; - njihova uloga æe vam
405     postati jasna nešto kasnije.</p>
406     <p>Kakav je smisao promena koje su izvršene? Korisniku je sada pružena moguænost
407     da, kada raèunar traži podatak o rastojanju gradova, otkuca 0 i pritisne RET.
408     Raèunar æe prestati sa radom i ispisati READY, eliminišuæi potrebu za
409     pritiskanjem tastera BRK.</p>
410     <p>Umesto znaka = u pogodbenoj relaciji može da se naðe znak manje, na primer:</p>
411     <!--mstheme--></font><pre>IF A&lt;B PRINT &quot;PRVI JE MANJI&quot; : ELSE PRINT &quot;DRUGI JE MANJI ILI SU JEDNAKI&quot;</pre><!--mstheme--><font face="Arial">
412     <p>ili veæe:</p>
413     <!--mstheme--></font><pre>IF X&gt;0 PRINT &quot;BROJ JE POZITIVAN&quot;: ELSE PRINT &quot;BROJ JE NEGATIVAN&quot;</pre><!--mstheme--><font face="Arial">
414     <p>Ako eksperimentima sa IF naredbama poremetimo naš program koji æe nam za
415     dalji rad biti potreban, moraæemo da obrišemo suvišne linije. Brisanje linije
416     broj 18, na primer, je vrlo jednostavno: otkucamo 18 i pritisnemo RET. Metoda je
417     pogodna, ali stvara jedan artefakt: želimo, na primer, da izraèunamo koliko je
418     31/17 i zaboravimo da otkucamo PRINT. Raèunar æe shvatiti da smo uneli
419     programsku liniju broj 31 i obrisati eventualnu naredbu našeg programa koja ima
420     isti broj, zamenivši je besmislenom linijom /17.</p>
421     <h4>Prijavljivanje grešaka</h4>
422     <p>Veæ smo upoznali poruke WHAT? i HOW? koje bivaju ispisane na ekranu kada
423     našem kompjuteru &quot;nešto nije jasno&quot;. Poruka WHAT? se uglavnom odnosi na
424     sintaksne greške: upotrebili smo naredbu koju naš raèunar ne poznaje ili smo
425     valjanu naredbu napisali na pogrešan naèin (PRINT AB, na primer, nema smisla jer
426     se množenje ne podrazumeva).</p>
427     <p>Poruku HOW? raèunar izdaje kada smo prekoraèili opseg brojeva sa kojima se
428     raèuna, kada smo naredbu GOTO (ili naredbu CALL koju tek treba da upoznamo)
429     propratili linijskim brojem nepostojeæe naredbe, kada smo pozvali previše
430     potprograma i u sliènim situacijama.</p>
431     <p>Pored HOW? i WHAT?, postoji sistemska poruka sa kojom se neæemo sresti u
432     skoroj buduænosti: SORRY. Ona nas obaveštava da je ono što smo želei i da
433     uèinimo sasvim moguæe i ispravno napisano, ali da šest kilobajta (ili više ako
434     smo proširili memoriju) nije dovoljno za smeštanje potrebnog programa ili
435     podataka. Ako ovo uputstvo niste èitali &quot;na preskok&quot; upoznavši tako matrice A i
436     X$, Jedini naèin da na ekranu vidite SORRY je da otkucate neki program koji ima
437     više od pet kilobajta (raèunar &quot;galaksija&quot; u osnovnoj verziji ima 6 kilobajta
438     RAM-a, ali se nešto više od jednog kilobajta koristi za neke interne potrebe
439     raèunara).</p>
440     <p>Ukoliko raèunar prijavi grešku u okviru neke komande (otkucali smo, na
441     primar, RAN umesto RUN), na ekranu æe se pojaviti jednostavno WHAT?, HOW? ili
442     SORRY. No, ako raèunar naiðe na grešku u programu on æe, pored uobièajene
443     poruke, ispisati èitavu liniju u kojoj je nastupila greška, stavljajuæi znak
444     pitanja na ono mesto u liniji na kome je naišao na nerazumljiv simbol ili
445     konstrukciju. Tako ne bi trebalo da bude teško da locirate grešku i,
446     prekucavajuæi liniju ili koristeæi komandu EDIT, dovedete program u ispravno
447     stanje. U poèetku æete verovatno mnogo grešiti kod oblika (sintakse) naredbi,
448     ali æe se docnije greške svesti na pogrešno kucanje i, na žalost, logièke greške
449     (najopasnije su greške koje raèunar ne primeæuje) - program se na prvi pogled
450     korektno izvršava, ali su dobijeni rezultati pogrešni.</p>
451     <h4>Rad sa kasetofonom - SAVE, OLD i OLD?</h4>
452     <p>Znanje koje smo stekli nam omoguæava da pišemo relativno komplikovane
453     programe. Meðutim, svaki put kada iskljuèimo raèunar ti programi bivaju obrisani
454     pa ih, po ponovnom ukljuèivanju, moramo kucati, što je dosadan i nepotreban
455     posao. Na svu sreæu, raèunar &quot;galaksija&quot; može da se poveže sa kasetofonom i
456     snima programe na standardne kasete. Programi snimljeni na kasetu nemaju imena
457     pa može da se desi da, nekoliko meseci po snimanju, zaboravimo šta koji program
458     radi. Zato je korisno na poèetku programa dodati liniju 1 ! OVO JE PROGRAM ZA
459     RAÈUNANJE...</p>
460     <p>Uzviènik na poèetku ove linije govori raèunani da ona sadrži komentare koji
461     su za njega nebitni: pri izvršavanju programa linije sa uzviènicima bivaju
462     ignorisane. Samo se po sebi razume da linija koja poèinje uzviènikom ne mora da
463     bude prva u programu. Možemo, na primer, da pre svake grupe naredbi ubacimo
464     komentar koji objašnjava njihovo dejstvo, ali treba imati u vidu da ovakve
465     naredbe troše jedan bajt memorije po svakom upotrebljenom slovu što je, u
466     uslovima ogranièenog memorijskog prostora, èesto luksuz.</p>
467     <p>Kada pripremimo program za snimanje, jednostavno povezujemo odgovarajuæi džek
468     sa prikljuèkom MIC na kasetofonu, startujemo snimanje (dirke PLAY i REC), kucamo
469     SAVE i pritiskamo RET (SAVE znaèi &quot;saèuvaj&quot;). Ekran æe se potpuno zamraèiti i
470     ovakvo stanje æe potrajati izvesno vreme. Kada raèunar snimi program, ekran æe
471     oživeti sa novom porukom READY. Saèekajmo još nekoliko trenutaka i prekinimo
472     snimanje.</p>
473     <p>Posle snimanja je vrlo korisno izvršiti verifikaciju. To što se na ekranu
474     pojavilo READY još ne mora da znaèi da je program verno prenet na kasetu: moguæe
475     je da je traka bila ošteæena (ovo ošteæenje može da bude prisutno i kod potpuno
476     nove kaseta i ne mora biti uoèljivo golim okom) ili da je kasetofon u nekom
477     trenutku za momenat promenio brzinu. Ukoliko je nastupila neka greška ovog tipa,
478     možemo da imamo velikih problema: iskljuèimo raèunar i, posle pokušaja da
479     uèitamo program koji smo razvijali satima ili danima, utvrdimo da je on
480     nepovratno izgubljen. Ako izvršimo verifikaciju, biæemo upozoreni na problem, pa
481     æemo moæi da snimimo program na neku drugu kasetu.</p>
482     <p>Da bismo izvršili verifikaciju, moramo da premotamo kasetu na mesto koje
483     prethodi poèetku snimljenog programa (veoma je preporuèljivo posedovati
484     kasetofon sa brojaèem mada se i bez njega program prepoznaje po veoma
485     karakteristiènom zvuku; teško da ste ikada èuli neprijatnije zujanje) i
486     zaustavimo ga. Povežimo utiènicu EAR na kasetofonu sa odgovarajuæim prikljuèkom
487     raèunara, postavimo nivo zvuka blizu maksimuma i otkucajmo OLD? RET. Zatim
488     startujemo kasetofon (taster PLAY) i èekamo. Može da se dogodi jedna od tri
489     stvari:</p>
490     <ol>
491     <li>Prva i najpovoljnija je da raèunar, posle izvesnog vremena, aktivira ekran i
492     napiše READY. To je znak da je program korektno snimljen i uspešno verifikovan.<br>
493     &nbsp;</li>
494     <li>Sledeæa moguænost je da se, u toku oèitavanja programa, ekran osvetli sa
495     porukom WHAT? i uobièajenim READY. To znaèi da je raèunar upravo primetio
496     neslaganje onoga što je u memoriji i onoga što je na kaseti. Možemo da pokušamo
497     još jednu verifikaciju poveæavajuæi nivo zvuka ili ga smanjujuæi, ali je vrlo
498     verovatno da æemo morati ponovo da snimamo program.<br>
499     &nbsp;</li>
500     <li>Treæa i najneprijatnija moguænost je da se ne dogodi ništa - ekran je
501     neprekidno crn iako je prošlo daleko više vremena nego što je trajalo snimanje
502     programa (ili, ako imamo kasetofon sa brojaèem, preðeno je mesto na kome se
503     nalazi kraj programa). To znaèi da je nivo zvuka bio preslab pa raèunar nije
504     pronašao poèetak programa ili da, usled neke pogrešne manipulacije sa utikaèima,
505     ništa nije ni snimljeno na traku. Pritisnimo dugme RESET koje se nalazi sa
506     zadnje strane raèunara i primetimo (kucanjem naredbe LIST) da je naš program i
507     dalje u memoriji. Možemo da pokušamo novu verifikaciju ili, po potrebi, novo
508     snimanje.</li>
509     </ol>
510     <p>Treæa opcija pri radu sa kasetofonom je unošenje programa sa trake i
511     verovatno smo je savladali pri korišæenju demo-kasete. Povežimo raèunar sa
512     kasetofonom na naèin opisan kod opcije OLD?, otkucajmo OLD RET i startujmo traku
513     (taster PLAY). Posle izvesnog vremena, program æe biti uèitan i na ekranu æe
514     pisati READY. Ukoliko je to jedini prisutni komentar, program je vrlo verovatno
515     ispravno upisan i možemo da ga startujemo sa RUN. No, ako se pre READY našlo
516     WHAT?, raèunar je primetio grešku pri upisu. Možemo da otkucamo LIST (ne
517     zaboravimo da listanje programa traje samo dok držimo pritisnut taster RET) i
518     pogledamo na šta program lièi: sasvim je moguæe da su grupe slova promenjene ili
519     ispuštene. Najbolje je da u ovakvom sluèaju pokušamo upisivanje još jedanput,
520     menjajuæi jaèinu tona u nadi da æe sve biti u redu.</p>
521     <p>Ukoliko ne uspemo, ostaje nam da pokušamo da ispravimo program što može da
522     bude vrlo neprijatno, pogotovu ako nismo njegov autor. Iz iskustva možemo da
523     kažemo da se problemi ovoga tipa ne javljaju kod verifikovanih programa, osim
524     kada su snimani na jednom a uèitavanl sa drugog kasetofona. No, ako nam je neki
525     program važan, želeæemo da eliminišemo sve moguæe izvore problema: u tom sluèaju
526     je korisno da snimimo program dva puta i to po moguænosti na razlièite kasete.
527     Obzirom da snimanje oduzima svega 2 minuta po kilobajtu, ova mera
528     predostrožnosti neæe predstavljati veliki gubitak vremena.</p>
529     <h4>Dalje moguænosti naredbe PRINT, PRINT AT, HOME</h4>
530     <p>Na samom poèetku smo rekli da æe ovo uputstvo biti organizovano &quot;po
531     krugovima&quot;: prvi krug predstavlja upoznavanje tastature i rad sa demo-kasetom,
532     drugi osnove programiranja a treæi, u koji upravo ulazimo, &quot;luksuznije&quot; naredbe
533     i njihove verzije. Polazimo ponovo od PRINT.</p>
534     <p>Do sada smo iza PRINT stavljali tekst pod znacima navoda ili neki brojni
535     izraz koji je izraèunavan i prikazivan na ekranu. Na taj naèin smo u jednom redu
536     mogli da ispišemo samo jednu reèenicu što je, ako ništa drugo, neestetski. U
537     okviru jedne naredbe PRINT može da se naðe više promenljivih, izraza i komentara
538     koji æe biti prikazani u istom redu. Raèunar, meðutim, zahteva da ovi komentari
539     budu odvojeni jedan od drugog znakom ; ili obiènim zarezom. Ukoliko su dve
540     stavke u naredbi PRINT odvojene simbolom ; raèunar æe ih nadovezati jednu na
541     drugu, a ako je upotrebljen zarez - razmaknuæe ih tako da druga poèinje od
542     osmog, šesnaestog ili dvadeset èetvrtog mesta u redu. Ovu naredbu æemo najbolje
543     shvatiti na primeru.</p>
544     <p>Vratimo se na program za izraèunavanje vremena putovanje izmeðu dva mesta i
545     obrišimo linije 40, 50, 70 i 80 a zatim otkucajmo:</p>
546     <!--mstheme--></font><pre>70 PRINT INT(T); &quot;ÈASOVA&quot; ; M; &quot;MINUTA.&quot;</pre><!--mstheme--><font face="Arial">
547     <p>Izvršimo program i unesimo uobièajene podatke za rastojanje Beograd-Dubrovnik
548     i brzinu 800 km/h. Na ekranu æe se pojaviti izveštaj:</p>
549     <!--mstheme--></font><pre>0ÈASOVA 27MINUTA.</pre><!--mstheme--><font face="Arial">
550     <p>Nije baš sjajno - redovi više nisu odvojeni, ali je raèunar oèigledno
551     preterao sa zbijanjem. Ispred svakog broja je, doduše, ostavljao po jedno prazno
552     mesto (to mesto, u stvari, nije prazno - na njega bi bio smešten znak minus da
553     je broj bio negativan), ali nam je neophodan blanko simbol i iza njega. Jedan od
554     naèina da resimo problem je da otkucamo:</p>
555     <!--mstheme--></font><pre>70 PRINT INT(T), &quot;ÈASOVA,&quot;, M, &quot;MINUTA.&quot;</pre><!--mstheme--><font face="Arial">
556     <p>ali æe tako reèenica biti nelogièno izdeljena na polja. Pravo rešenje je
557     naredba:</p>
558     <!--mstheme--></font><pre>70 PRINT INT(T); &quot; ÈASOVA&quot;; M; &quot; MINUTA.&quot;</pre><!--mstheme--><font face="Arial">
559     <p>Upoznavanjem simbola , i ; još nismo iscrpli sve moguænosti naredbe PRINT:
560     ona može da posluži i za pisanje teksta na proizvoljnom delu ekrana. Da bi
561     ovakvo pisanje imalo nekog smisla, treba najpre da upoznamo naredbu za brisanje
562     èitavog sadržaja ekrana. Ovaj efekat se u komandnom modu postiže istovremenim
563     pritiskom na tastere SHIFT i DEL, a u programskom izvršavanjem naredbe HOME
564     (HOME nalaže raèunaru da &quot;vrati kurzor kuæi&quot; koja se nalazi u levom gornjem uglu
565     ekrana. Pritom se èitav sadržaj ekrana briše).</p>
566     <p>Ekran je podeljen na 16 redova, a svaki od tih redova na 32 mesta. Mesta su
567     numerisana brojevima od 0 (karakter u levom gornjem uglu ekrana) do 511
568     (karakter u desnom donjem uglu). Naredba PRINT AT može da poène da štampa od
569     proizvoljnog mesta koje je navedeno iza AT; pun oblik naredbe je, dakle, PRINT
570     AT 32, &quot;RAÈUNAR GALAKSIJA&quot; - u ovom primeru tekst &quot;raèunar galaksija&quot; se
571     pojavljuje na poèetku drugog reda, dok sadržaj prvog ostaje nepromenjen.</p>
572     <p>Pri prikazivanju nekih komplikovanijih tekstova treba posebno paziti na jednu
573     stvar: ako najpre ispisujemo tekst u desnoj polovini neke linije, a zatim u
574     levoj, neka PRINT AT naredba može lako da poremeti postojeæi sadržaj nekog reda.
575     Da se obezbedimo od toga, završavaæemo svaku naredbu PRINT znakom ; (pišemo, na
576     primer, PRINT AT 300, &quot;RAÈUNAR&quot;;).</p>
577     <h4>Crtanje po ekranu - DOT, UNDOT</h4>
578     <p>Prethodno poglavlje nije razjasnilo sve oznake sa mape ekrana: tamo su redovi
579     podeljeni na po tri dela. a kolone na po dva. Na ovaj naèin su dobijene
580     takozvane taèke ili &quot;pikseli&quot; kojih ima po 64 u svakom od 48 redova. Svaku ovu
581     taèku (to je, zapravo, kvadratiæ) možemo slobodno da osvetlimo ili zatamnimo
582     koristeæi naredbe DOT i UNDOT (DOT znaèi taèka). Treba odmah da uoèimo razliku
583     izmeðu &quot;taèki&quot; i karaktera: taèka je osvetljena ili zatamnjena. dok su karakteri
584     daleko raznovrsniji (sve slova, brojevi, interpunkcijski znaci, prazno
585     mesto...); karakteri su adresirani brojevima od 0 do 511, a taèke na mnogo
586     komforniji naèin - za obraæanje svakoj navodimo red u kome se ona nalazi i njen
587     položaj u tom redu; najzad, taèke su šest puta manje od karaktera, pa njima mogu
588     da se dobijaju bolje slike na ekranu.</p>
589     <p>Naredbu DOT prate koordinate taèke koju treba osvetliti (DOT 0,0, na primer,
590     osvetljava taèku u levom gornjem uglu, DOT 1,0 taèku desno od nje, DOT 31,23
591     taèku u sredini ekrana a DOT 63,47 taèku u desnom donjem uglu). Naredba UNDOT
592     ima obrnuto znaèenje: ona zatamnjuje taèku èije su koordinate navedene na isti
593     naèin. Program:</p>
594     <!--mstheme--></font><pre>10 HOME
595     20 DOT 31,23
596     30 DOT 40,40
597     40 UNDOT 31,23
598     50 UNDOT 40,40
599     60 GOTO 20</pre><!--mstheme--><font face="Arial">
600     <p>neprekidno ukljuèuje i iskljuèuje taèke èije su koordinate (31,23) i (40,40).</p>
601     <p>Naredba DOT može da se upotrebi i unutar IF, ali tada ima sasvim drugaèiji
602     smisao: linije 100 IF DOT 10,10 GOTO 1000 ne osvetljava taèku 10,10 nego
603     ispituje da li je ta taèka osvetljena pa, ako jeste, prelazi na liniju broj
604     1000.</p>
605     <p>Ukoliko je neka taèka osvetljena, primena naredbe DOT na nju neæe promeniti
606     ovo stanje; slièno tome, UNDOT neæe promeniti status taèke koja je veæ
607     zatamljena. Naredbe DOT i UNDOT su veoma znaèajne i zaslužuju da ih upoznamo na
608     dodatnim primerima. Ipak, saèekaæemo izvesno vreme obzirom da je za ovakvu
609     demonstraciju neophodno realizovati cikluse (petlje), a to æemo biti u stanju da
610     uradimo daleko bolje kada upoznamo grupu novih naredbi.</p>
611     <h4>Ciklusi - FOR-TO-NEXT-STEP</h4>
612     <p>Èesto je potrebno da se odreðeni skup instrukcija ponovi odreðen broj puta i
613     da se, zatim, nastavi sa izvršavanjem programa. Pretpostavimo da nam je potreban
614     program koji izraèunava faktorijel nekog broja. Faktorijel se definiše kao
615     proizvod svih prirodnih brojeva zakljuèno sa brojem èiji se faktorijel traži
616     (faktorijel broja 6 je, na primer, 1*2*3*4*5*6=720). Potrebno je. dakle, da
617     poènemo od broja 1 i množimo ga redom sa 2, 3, 4... sve do nekog n. Ovaj problem
618     može, primenom naredbe IF, da se reši na sledeæi naèin:</p>
619     <!--mstheme--></font><pre>10 INPUT N
620     20 Y=1
621     30 I=0
622     40 I=I+1
623     50 Y=Y*I
624     60 IF I&lt;<n GOTO 40: ELSE PRINT Y</p />N GOTO 40: ELSE PRINT Y</pre><!--mstheme--><font face="Arial">
625     <p>Vidimo da je bilo neophodno uvesti naredbu koja inicijalizuje brojaè (I=0),
626     naredbu za poveæavanje tog brojaèa kao i naredbu kojom ispitujemo da li je posao
627     završen. Ovakvo rešenje, naravno, može da se primeni i u mnogo složenijim
628     sluèajevima, ali su takvi programi teži za sastavljanje (da smo, na primer,
629     promenili redosled naredbi 40 i 50 u IF komandi bi morali da poredimo I sa N+1),
630     manje pregledni i sporije rade.</p>
631     <p>Naredba FOR...TO i odgovarajuæa naredba NEXT su pripremljene tako da olakšaju
632     realizaciju ciklusa. Pre nego što preðemo na njihov detaljan opis, videæemo kako
633     se prethodni problem rešava njihovom primenom:</p>
634     <!--mstheme--></font><pre>10 INPUT N
635     20 Y=1
636     30 FOR I=1 TO N
637     40 Y=Y*I
638     50 NEXT I
639     60 PRINT Y</pre><!--mstheme--><font face="Arial">
640     <p>Dobijeni program ima šest naredbi kao i prethodni ali, u celini gledano,
641     zauzima manje memorije i brže se izvršava. Èak i ako vam je ovo prvi susret sa
642     naredbama FOR-TO-NEXT, verovatno ste shvatili da se ciklus odvija izmeðu naredbi
643     30 i 50. Raèunar, po nailasku na naredbu 30, &quot;inicira brojaè&quot; odnosno dodeljuje
644     promenljivoj I sadržaj 1 (da je naredba 30 glasila FOR I=2 TO N promenljivoj bi
645     bio dodeljen sadržaj 2 i tome slièno) i &quot;pamti&quot; mesto na kome je ciklus poèeo.
646     Izvršavanje programa se nastavlja sasvim normalno sve dok raèunar ne naiðe na
647     naredbu NEXT I (&quot;sledeæe I&quot;). U tom trenutku on dodaje jedan promenljivoj I i
648     ispituje da li se došlo do N. Ako nije, ciklus automatski poèinje od poèetka.
649     Ako jeste, naredba NEXT I se preskaèe i raèunar prelazi na izvršavanje naredbe
650     60.</p>
651     <p>U okviru naredbe FOR može da se nalazi i opcija STEP (korak). Da smo, umesto
652     naredbe 30, otkucali FOR I=1 TO N STEP 2 raèunar bi, svaki put kada naiðe na
653     naredbu NEXT I, uveæavao sadržaj promenljive I za dva pa bi raèunao proizvod
654     Y=1*3*5*7*...N (za sluèaj da je N neparan broj ovo bi bila funkcija bez posebnog
655     imena koja se obeležava sa N!!, a ako je N paran rezultat ne bi imao matematièko
656     znaèenje). Da bi program raèunao proizvod 2*4*6*8*...N = N!! (za parne brojeve),
657     naredbu 30 bi trebalo izmeniti tako da glasi FOR I=2 TO N STEP 2.</p>
658     <p>Nema nikakve prepreke da STEP bude negativan. Program:</p>
659     <!--mstheme--></font><pre>10 FOR I=30 TO 0 STEP -1
660     20 PRINT I
661     30 NEXTI</pre><!--mstheme--><font face="Arial">
662     <p>æe brojati od 30 do 0 i to unazad. Ipak, postoji jedno ogranièenje vezano za
663     naredbe FOR-STEP-NEXT koje treba imati u vidu ako u praksi verovatno neæe
664     izazvati nikakve probleme: konstante ili promenljive koje figurišu u ovim
665     naredbama moraju da budu celi brojevi: ako to nisu, raèunar æe sam &quot;odseæi&quot;
666     decimale. Naredba FOR I=0.5 TO 11.5 STEP 0.5 æe se izvršavati nekorektno obzirom
667     da æe raèunar podrazumevati STEP 0.</p>
668     <h4>Sluèajni brojevi - RND</h4>
669     <p>Svi rezultati koje raèunar daje su precizne funkcije ulaznih velièina.
670     Raèunar &quot;galaksija&quot; je opremljen jednom naredbom koja, na prvi pogled; odstupa
671     od ove definicije: ona je namenjena generisanju sluèajnih brojeva. Sluèajni
672     brojevi koje raèunar generiše su, u stvari, pseudosluèajni - rezultat su
673     komplikovanih operacija nad sadržajima nekih sistemskih promenljivih i korisnik
674     nema nikakvog naèina da ih predvidi; za njega su, dakle, oni sluèajni u
675     dovoljnoj meri.</p>
676     <p>Otkucajmo NEW i unesimo jednostavni program:</p>
677     <!--mstheme--></font><pre>10 PRINT RND
678     20 GOTO 10</pre><!--mstheme--><font face="Arial">
679     <p>i startujmo ga sa RUN. Na ekranu æe velikom brzinom poèeti da se pojavljuju
680     brojevi koje, istini za volju, neæemo stiæi ni da proèitamo. Došao je, dakle,
681     pravi trenutak da otkrijemo poslednju tajnu tastature našeg raèunara. Pritisnimo
682     taster DEL i držimo ga pritisnutog. Dogaðaji na ekranu su se najednom &quot;zamrzli&quot;
683     - izgleda da je izvršavanje programa zaustavljeno. Prvi utisak ovde ne vara:
684     izvršavanje programa je zaista zaustavljeno i taj prekid æe trajati sve dok je
685     taster DEL pritisnut; njegovim otpuštanjem program nastavlja da se izvršava.
686     Treba odmah uoèiti razliku izmeðu DEL i BRK: po pritisku na BRK izvršavanje
687     programa je trajno prekinuto i na ekranu piše READY, dok pritisak na DEL samo
688     zaustavlja rad raèunara koji se nastavlja po otpuštanju tastera.</p>
689     <p>Kada znamo kako da prekinemo rad programa, možemo da se usresredimo na
690     naredbu RND. Na ekranu se nalaze brojevi koje mi unapred ne možemo da predvidimo
691     - oni su sluèajan izbor vašeg raèunara. To su, u svakom sluèaju, brojevi izmeðu
692     O i 1, koji imaju po pet-šest decimala (ne treba se zbuniti ako neki od njih
693     bude u eksponencijalnoj notaciji).</p>
694     <p>U praksi nam najèešæe nisu potrebni decimalni brojevi izmeðu O i 1, nego celi
695     brojevi izmeðu nekih a i b (ako, na primer, hoæemo da simuliramo kockicu za igru
696     &quot;èoveèe, ne ljuti se&quot; trebaju nam sluèajno izabrani brojevi od 1 do 6). Prava je
697     prilika da se podsetimo naredbe INT i nauèimo formulu R=INT(RND*(B-A)+A). Njenom
698     primenom raèunar generiše cele sluèajne brojeve izmeðu A i B (ovi brojevi mogu
699     da budu jednaki A ali ne mogu da budu jednaki B; matematièari bi rekli da se ovi
700     brojevi nalaze u intervalu [A,B).</p>
701     <p>Sastavimo program koji bi demonstrirao naredbe DOT i UNDOT. Najpre æemo da
702     obrišemo ekran, a zatim osvetljavati sluèajne taèke. Ukoliko naiðemo na taèku
703     koja je veæ osvetljena, zatamniæemo je:</p>
704     <!--mstheme--></font><pre>10 HOME
705     20 X=INT(RND*64)
706     30 Y=INT (RND*48)
707     40 IF DOT X, Y UNDOT X,Y: ELSE DOT X,Y
708     50 GOTO 20</pre><!--mstheme--><font face="Arial">
709     <p>Ako imate problema sa razumevanjem programa, moraæete da se vratite na
710     poglavlje &quot;crtanje po ekranu&quot; i &quot;naredba IF&quot;. Ako ga razumete, pokuštajte da ga
711     dopunite tako da se u desnom gornjem uglu ekrana neprekidno ispisuje broj
712     osvetljenih taæaka. Ukoliko je generator sluèajnih brojeva dobar, posle izvesnog
713     vremena bi trebalo da se uspostavi &quot;dinamièka ravnoteža&quot; - stanje u kome se
714     približno jednak broj taèaka osvetljava i zatamnjuje u nekom intervalu.</p>
715     <h4>Potprogrami - CALL i RETURN</h4>
716     <p>U mnogim programima se javljaju grupe instrukcija koje se ponavljaju. Raèunar
717     &quot;galaksija&quot;, na primer, nije opremljen logaritamskom funkcijom, pa æe mnogi
718     poželeti da je dodaju. Oni æe, dakle, koristeæi neku numerièku formulu ili
719     iterativni algoritam sastaviti program koji izraèunava log(x) za zadato x i
720     poželeti da ga koriste u mnogim prilikama. Ako, meðutim, navode èitav skup
721     instrukcija svaki put kada im logaritam zatreba, neæe daleko stiæi: izdaæe ih
722     strpljenje ili memorija raèunara. Zato se ovakav skup instrukcija odvaja u
723     poseban program koji se iz glavnog programa poziva kao potprogram.</p>
724     <p>Potprogram se ne zapoèinje ni na kakav poseban naèin - bitno je samo
725     zapamtiti broj njegove prve linije. Na kraju potprograma mora da se naðe naredba
726     RETURN (= vrati se) koja nalaže raèunaru da nastavi sa izvršavanjem glavnog
727     programa. U glavnom programu se, kada je god potprogram potreban, piše naredba
728     CALL koju prati broj prve linije potprograma (npr. CALL 1000).</p>
729     <p>Sve æe biti mnogo jasnije kada pogledamo primer. Sastaviæemo program koji
730     pravom linijom spaja taèke èije su koordinate zadate, a zatim æemo ga upotrebiti
731     kao potprogram da uokvirimo ekran. Evo, najpre, potprograma koji je nešto
732     pojednostavljen pretpostavkom da su dve taèke koje treba spajati nalaze na istoj
733     horizontali ili vertikali. Ulazne velièine su brojevi X, Y, Z i T koji daju
734     koordinate prve (X,Y) odnosno druge (Z,T) taèke; obzirom na uvedeno ogranièenje
735     mora da bude X=Z ili Y=T.</p>
736     <!--mstheme--></font><pre>100 IF X=Z FOR I=Y TO T: DOT X,I: NEXT I: ELSE FOR I=X TO Z: DOT I,Y: NEXT I
737     110 RETURN</pre><!--mstheme--><font face="Arial">
738     <p>U potprogramu ima noviteta: napisana je jedna linija koja se sastoji od više
739     naredbi razdvojenih znakom : Na ovaj naèin možemo da postupamo kada god želimo
740     da sledimo memoriju ili kada nam se èini da grupu naredbi treba &quot;spakovati&quot; u
741     isti red pošto predstavljaju logièku celinu. Postoje, ipak, dva razloga zbog
742     kojih èitav program ne može da bude smešten u jednu programsku liniju:
743     maksimalna dužina linije koju raèunar &quot;galaksija&quot; može da primi je èetiri reda,
744     a naredba koja se ne nalazi na poèetku neke linije ne može da se dosegne pomoæu
745     naredbi GOTO i CALL.</p>
746     <p>Evo, najzad, i programa koji æe uokviriti ekran koristeæi dati potprogram:</p>
747     <!--mstheme--></font><pre>5 HOME
748     10 X = 0: Y=0: Z=63: T=0: CALL 100
749     20 Y=47: T=47: CALL 100
750     30 X=63: Y=0: CALL 100
751     40 X=0: Y=0: Z=0: CALL 100</pre><!--mstheme--><font face="Arial">
752     <p>Vidi se da pre svakog poziva potprograma nisu postavljeni sadržaji svih
753     promenljivih. Razlog je u tome što se ovi sadržaji u toku potprograma ne
754     menjaju, pa nema potrebe ponavljati iste naredbe i razbacivati memoriju.</p>
755     <p>Testiranje programa (koji je, jasno, povezan sa potprogramom) u prvom
756     trenutku prolazi povoljno: raèunar uokviruje ekran. No, posle toga nastupa
757     greška i to u naredbi RETURN. Zašto? Raèunar je èetiri puta pozvao i izvršio
758     potprogram i tako završio naredbu 40. Posle toga je, jednostavno, poèeo sa
759     izvršavanjem naredbe 100 koja sledi iza nje, još jednom povukao istu liniju i
760     naišao na RETURN. Pošto potprogram nije pozivan, raèunar nije znao kuda da se
761     vrati (RETURN = vrati se) pa je prijavio grešku.</p>
762     <p>Prva modifikacija u cilju rešavanja ovog problema je da se doda naredba 50
763     STOP (seæate li se naredbe STOP?). Solucija je dobra samo na prvi pogled: kada
764     raèunar naiðe na STOP, on prestaje sa izvršavanjem programa i izdaje poruku
765     READY kvareæi tako jedan deo teškom mukom nacrtanog okvira. Zato æemo dodati
766     naredbu 50 GOTO 50 koja navodi raèunar da se neprekidno vrti u &quot;mrtvoj petlji&quot;
767     ne kvareæi izgled ekrana (ovo je takozvano &quot;dinamièko zaustavljanje&quot;). Tako
768     možemo da se divimo uokvirenom ekranu i pritisnemo taster BRK tek kada nam on
769     dosadi.</p>
770     <p>U okviru potprograma može da se pozove sledeæi potprogram, baš kao što u
771     okviru jednog ciklusa (petlje) može da se zapoène drugi, ali je broj ovakvih
772     poziva ogranièen na 13. U praksi se sigurno neæe dogaðati da vam je potrebno
773     više od trinaest nivoa potprograma, ali morate da pazite na poèetnièke greške
774     poput ove:</p>
775     <!--mstheme--></font><pre>10 CALL 100
776     100 A=...
777     150 GOTO 10</pre><!--mstheme--><font face="Arial">
778     <p>Na ovaj naèin raèunar neæe nikada nailaziti na naredbu RETURN, pa æe stalno
779     pozivati nove i nove potprograme sve dok ne doðe do greške. Ovakvu grešku je
780     èesto teško otkriti: program dobro radi jedno vreme a onda, u nepravilnim
781     intervalima, na ekranu ugledamo poruku HOW?</p>
782     <h4>Ispravljanje programa - EDIT</h4>
783     <p>Jedini naèin za ispravljanje grešaka u programu koji smo do sada upoznali bio
784     je prekucavanje linije, što je neekonomièna i neobièno &quot;nervirajuca&quot; solucija (u
785     to ste se i sami uverili, pogotovu ako ste pisali neki program koji koristi
786     naredbu PRINT AT). Raèunar &quot;galaksija&quot; poseduje i specijalnu komandu EDIT koja
787     je namenjena ispravkama. Ona ne sme da se naðe u programu (blisko je pameti da
788     programi mogu da se edituju samo u komandnom modu) i treba da je prati linijski
789     broj naredbi koja se edituje. Pritiskom na RET raèunar briše ekran i u njegovim
790     prvim redovima ispisuje liniju koju smo poželeli da menjamo. Kurzor se nalazi na
791     njenom kraju. Koristeæi tastere <font face="Wingdings">ß</font> i
792     <font face="Wingdings">&agrave; </font>možemo da ga pokreæemo u okviru
793     naredbe sve dok ne doðemo do mesta na kome treba da ispravimo grešku. Ako želimo
794     da izbacimo slovo koje se nalazi desno od kurzora, treba jednostavno da
795     pritisnemo taster DEL. Ukoliko želimo da ubacimo novi deo programske linije,
796     jednostavno ga otkucamo i on æe da bude umetnut poèevši od tekuæe pozicije
797     kurzora. Pri pomeranju kurzora i brisanju pojedinih, delova programske linije,
798     taster REPT (autorepeat) dolazi do punog izražaja.</p>
799     <p>Kada smo završili sa ispravkama neke linije (nema nikakve prepreke da, u toku
800     ispravki, nekoliko puta menjamo isti deo linije), možemo da pritisnemo RET i
801     tako se saglasimo sa izvršenim izmenama ili da pritisnemo BRK i tako naložimo
802     raèunaru da ignoriše izmene i ostavi liniju u stanju u kom je bila pre nego što
803     je editovanje zapoèeto.</p>
804     <p>Pri editovanju se pojavljuje i jedan artefakt: nema prepreke da promenimo i
805     sam broj programske linije pod uslovom da u okviru njega ne ostavljamo razmake
806     (broj linije 10 02 nije dopušten). Kada pritisnemo RET, raèunar æe u memoriju
807     uneti novu programsku liniju dok stara neæe biti ni promenjena ni izbrisana. Ovo
808     pruža moguænost &quot;umnožavanja&quot; jedne naredbe u okviru programa bez potrebe da se
809     ona svaki put iznova kuca.</p>
810     <h4>Numerièki niz A(I)</h4>
811     <p>Do sada smo upoznali promenljive A, B, C,... Y i Z pomoæu kojih smeštamo
812     podatke u memoriju raèunara. Ovi podaci su meðusobno logièki odvojeni:
813     promenljiva V, na primer, može da èuva podatak o brzini nekog objekta, F o sili
814     koja deluje na njega, T o vremenu i slièno. Ponekad smo suoèeni sa potrebom da
815     obradimo grupu meðusobno srodnih podataka. Želimo, na primer, da sortiramo
816     podatke po velièini. Besmisleno je da koristimo promenljive A, B,... obzirom da
817     bismo u programu morali da navedemo veliku grupu naredbi koja bi poredila
818     sadržaj svake promenljive sa sadržajima svih ostalih. Osim toga, šta da radimo
819     ako treba da sortiramo više od 26 podataka?</p>
820     <p>Raèunar &quot;galaksija&quot; može da radi sa numerièkim nizom A(I) (ne treba ga mešati
821     sa promenljivom A). Elementi ovog niza su A(0), A(1), A(2) itd - njihov broj je
822     ogranièen jedino raspoloživom memorijom. Iako æemo mapu memorije objaviti tek
823     docnije, potrebno je da veæ sada u grubim crtama objasnimo razmeštaj elemenata
824     niza A(I) da bi se shvatile njegove promenljive dimenzije. Zamislimo da se od
825     poèetka memorije prema kraju smešta BASIC program a od kraja memorije prema
826     poèetku elementi niza A(I). Svaki element (A(0), A(1),...) zauzima po èetiri
827     bajta. Jasno je da se, negde na sredini memorije, niz A(I) i BASIC program
828     &quot;susreæu&quot;. Raèunar smatra da je BASIC program znaèajniji i ogranièava niz A(I)
829     tako da popunjava samo slobodan deo memorije. Ukoliko pokušamo da menjamo
830     vrednost nekog elementa niza A(I) koji bi promenio bejzik program, raèunar æe
831     prekinuti sa radom i izdati poruku SORRY.</p>
832     <p>Kako da saznamo sa koliko elemenata niza A(I) raspolažemo? Jedan od naèina je
833     da otkucamo jednostavan program:</p>
834     <!--mstheme--></font><pre>10 I=0
835     20 A(I)=A(I)
836     30 I=I+1
837     40 GOTO 20</pre><!--mstheme--><font face="Arial">
838     <p>i startujemo ga sa RUN. Kada se na ekranu pojavi poruka SORRY, otkucamo PRINT
839     I i saznamo broj prvog nepostojeæeg elementa niza. Ovaj naèin nije naroèito
840     dobar, ponajviše zato što u postojeæi bejzik program treba da dodajemo nove
841     naredbe koje ga nepotrebno produžavaju i tako smanjuju broj èlanova niza. Zato
842     je dizajnirana naredba MEM. PRINT MEM prikazuje na ekranu broj bajtova memorije
843     koji su slobodni da prime niz A(I). Kako svaki element ovog niza zauzima po
844     èetiri bajta, PRINT MEM/4 æe dati maksimalan broj elemenata koji nam stoji na
845     raspolaganju.</p>
846     <p>Evo, na posletku, i programa koji æe olakšati razumevanje rada sa nizom A(I).
847     Program ureðuje grupu brojeva u rastuæi niz i prikazuje dobijene rezultate.
848     Korišten je umereno dobar algoritam (postoje, naravno, i daleko bolji, ali su
849     manje razumljivi za poèetnike), pa program unekoliko ilustruje brzinu rada
850     raèunara &quot;galaksija&quot;.</p>
851     <!--mstheme--></font><pre>10 PRINT &quot;KOLIKO IMA BROJEVA&quot;: INPUT N
852     20 FOR I=1 TO N: INPUT A(I): NEXT I
853     30 FOR I=1 TO N-1: FOR J=I+1 TO N
854     40 IF A(I)&lt;<a(j) GOTO 60<br /> A(J) GOTO 60
855     50 P=A(I): A(I)=A(J): A(J)=P
856     60 NEXT J: NEXT I
857     70 FOR I=1 TO N: PRINT A(I),: NEXT I</pre><!--mstheme--><font face="Arial">
858     <h4>Rad sa alfanumericima - CHR$, EQ, VAL, PTR, ARR$</h4>
859     <p>Do sada smo radili iskljuèivo sa brojevima, dok smo komentare pisane
860     standardnim srpskohrvatskim jezikom umetali iskljuèivo izmeðu navodnika u PRINT
861     naredbama i iza znaka !. Raèunar &quot;galaksija&quot;, meðutim, poseduje i moguænost rada
862     sa nizovima znakova (pod znakom ovde podrazumevamo slovo, broj, interpunkcijski
863     znak i prazan prostor) ili, kratko reèeno, alfanumericima.</p>
864     <p>Poput brojeva, za smeštanje reci koristimo promenljive koje se nazivaju
865     alfanumerièkim. U programu se prepoznaju po tome što se iza imena svake nalazi
866     oznaka za dolar ($). U svaku alfanumerièku promenljivu može da se smesti tekst
867     koji ima najviše 16 znakova, raèunajuæi i razmake, interpunkcijske znakove i
868     slièno.</p>
869     <p>Postoje dve fiksne alfanumeriæke promenljive koje se nazivaju X$ i Y$. Njima
870     možemo da dodeljujemo vrednosti korišæenjem standardnih bejzik naredbi, pri èemu
871     ne smemo da zaboravimo da sadržaj uvek (osim kod izvršavanja naredbe INPUT)
872     stavljamo izmeðu znakova navoda. Možemo, na primer, da napišemo:
873     X$=&quot;ALFANUMERIK&quot;, a zatim PRINT X$ i na ekranu æe se pojaviti reè ALFANUMERIK.</p>
874     <p>Pored uobièajenog prenošenja sadržaja jedne promenljive u drugu (naredba
875     X$=Y$), raspolažemo i funkcijom CHR$. Ovu funkciju prati argument u zagradi koji
876     je broj izmeðu 0 i 255. Ovaj broj dobijamo iz tablice koja sledi. Tablicu sliènu
877     ovoj možete da dobijete na ekranu i ako izvršite sledeæi BASIC program:</p>
878     <!--mstheme--></font><pre>10 FOR I=32 TO 255
879     20 PRINT I;&quot; &quot;;CHR$(I),
880     30 NEXT I</pre><!--mstheme--><font face="Arial"><!--mstheme--></font><table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="142" id="AutoNumber1" height="1407">
881     <tr>
882     <td width="63" height="22"><!--mstheme--><font face="Arial">32<!--mstheme--></font></td>
883     <td width="79" height="22"><!--mstheme--><font face="Arial">blanko<!--mstheme--></font></td>
884     </tr>
885     <tr>
886     <td width="63" height="22"><!--mstheme--><font face="Arial">33<!--mstheme--></font></td>
887     <td width="79" height="22"><!--mstheme--><font face="Arial">!<!--mstheme--></font></td>
888     </tr>
889     <tr>
890     <td width="63" height="21"><!--mstheme--><font face="Arial">34<!--mstheme--></font></td>
891     <td width="79" height="21"><!--mstheme--><font face="Arial">&quot;<!--mstheme--></font></td>
892     </tr>
893     <tr>
894     <td width="63" height="22"><!--mstheme--><font face="Arial">35<!--mstheme--></font></td>
895     <td width="79" height="22"><!--mstheme--><font face="Arial">#<!--mstheme--></font></td>
896     </tr>
897     <tr>
898     <td width="63" height="22"><!--mstheme--><font face="Arial">36<!--mstheme--></font></td>
899     <td width="79" height="22"><!--mstheme--><font face="Arial">$<!--mstheme--></font></td>
900     </tr>
901     <tr>
902     <td width="63" height="22"><!--mstheme--><font face="Arial">37<!--mstheme--></font></td>
903     <td width="79" height="22"><!--mstheme--><font face="Arial">%<!--mstheme--></font></td>
904     </tr>
905     <tr>
906     <td width="63" height="22"><!--mstheme--><font face="Arial">38<!--mstheme--></font></td>
907     <td width="79" height="22"><!--mstheme--><font face="Arial">&amp;<!--mstheme--></font></td>
908     </tr>
909     <tr>
910     <td width="63" height="22"><!--mstheme--><font face="Arial">39<!--mstheme--></font></td>
911     <td width="79" height="22"><!--mstheme--><font face="Arial">spec<!--mstheme--></font></td>
912     </tr>
913     <tr>
914     <td width="63" height="22"><!--mstheme--><font face="Arial">40<!--mstheme--></font></td>
915     <td width="79" height="22"><!--mstheme--><font face="Arial">(<!--mstheme--></font></td>
916     </tr>
917     <tr>
918     <td width="63" height="22"><!--mstheme--><font face="Arial">41<!--mstheme--></font></td>
919     <td width="79" height="22"><!--mstheme--><font face="Arial">)<!--mstheme--></font></td>
920     </tr>
921     <tr>
922     <td width="63" height="22"><!--mstheme--><font face="Arial">42<!--mstheme--></font></td>
923     <td width="79" height="22"><!--mstheme--><font face="Arial">*<!--mstheme--></font></td>
924     </tr>
925     <tr>
926     <td width="63" height="22"><!--mstheme--><font face="Arial">43<!--mstheme--></font></td>
927     <td width="79" height="22"><!--mstheme--><font face="Arial">+<!--mstheme--></font></td>
928     </tr>
929     <tr>
930     <td width="63" height="22"><!--mstheme--><font face="Arial">44<!--mstheme--></font></td>
931     <td width="79" height="22"><!--mstheme--><font face="Arial">,<!--mstheme--></font></td>
932     </tr>
933     <tr>
934     <td width="63" height="22"><!--mstheme--><font face="Arial">45<!--mstheme--></font></td>
935     <td width="79" height="22"><!--mstheme--><font face="Arial">-<!--mstheme--></font></td>
936     </tr>
937     <tr>
938     <td width="63" height="22"><!--mstheme--><font face="Arial">46<!--mstheme--></font></td>
939     <td width="79" height="22"><!--mstheme--><font face="Arial">.<!--mstheme--></font></td>
940     </tr>
941     <tr>
942     <td width="63" height="22"><!--mstheme--><font face="Arial">47<!--mstheme--></font></td>
943     <td width="79" height="22"><!--mstheme--><font face="Arial">/<!--mstheme--></font></td>
944     </tr>
945     <tr>
946     <td width="63" height="22"><!--mstheme--><font face="Arial">48<!--mstheme--></font></td>
947     <td width="79" height="22"><!--mstheme--><font face="Arial">0<!--mstheme--></font></td>
948     </tr>
949     <tr>
950     <td width="63" height="22"><!--mstheme--><font face="Arial">49<!--mstheme--></font></td>
951     <td width="79" height="22"><!--mstheme--><font face="Arial">1<!--mstheme--></font></td>
952     </tr>
953     <tr>
954     <td width="63" height="22"><!--mstheme--><font face="Arial">50<!--mstheme--></font></td>
955     <td width="79" height="22"><!--mstheme--><font face="Arial">2<!--mstheme--></font></td>
956     </tr>
957     <tr>
958     <td width="63" height="22"><!--mstheme--><font face="Arial">51<!--mstheme--></font></td>
959     <td width="79" height="22"><!--mstheme--><font face="Arial">3<!--mstheme--></font></td>
960     </tr>
961     <tr>
962     <td width="63" height="22"><!--mstheme--><font face="Arial">52<!--mstheme--></font></td>
963     <td width="79" height="22"><!--mstheme--><font face="Arial">4<!--mstheme--></font></td>
964     </tr>
965     <tr>
966     <td width="63" height="22"><!--mstheme--><font face="Arial">53<!--mstheme--></font></td>
967     <td width="79" height="22"><!--mstheme--><font face="Arial">5<!--mstheme--></font></td>
968     </tr>
969     <tr>
970     <td width="63" height="22"><!--mstheme--><font face="Arial">54<!--mstheme--></font></td>
971     <td width="79" height="22"><!--mstheme--><font face="Arial">6<!--mstheme--></font></td>
972     </tr>
973     <tr>
974     <td width="63" height="22"><!--mstheme--><font face="Arial">55<!--mstheme--></font></td>
975     <td width="79" height="22"><!--mstheme--><font face="Arial">7<!--mstheme--></font></td>
976     </tr>
977     <tr>
978     <td width="63" height="22"><!--mstheme--><font face="Arial">56<!--mstheme--></font></td>
979     <td width="79" height="22"><!--mstheme--><font face="Arial">8<!--mstheme--></font></td>
980     </tr>
981     <tr>
982     <td width="63" height="22"><!--mstheme--><font face="Arial">57<!--mstheme--></font></td>
983     <td width="79" height="22"><!--mstheme--><font face="Arial">9<!--mstheme--></font></td>
984     </tr>
985     <tr>
986     <td width="63" height="22"><!--mstheme--><font face="Arial">58<!--mstheme--></font></td>
987     <td width="79" height="22"><!--mstheme--><font face="Arial">:<!--mstheme--></font></td>
988     </tr>
989     <tr>
990     <td width="63" height="22"><!--mstheme--><font face="Arial">59<!--mstheme--></font></td>
991     <td width="79" height="22"><!--mstheme--><font face="Arial">;<!--mstheme--></font></td>
992     </tr>
993     <tr>
994     <td width="63" height="22"><!--mstheme--><font face="Arial">60<!--mstheme--></font></td>
995     <td width="79" height="22"><!--mstheme--><font face="Arial">&lt;<!--mstheme--></font></td>
996     </tr>
997     <tr>
998     <td width="63" height="22"><!--mstheme--><font face="Arial">61<!--mstheme--></font></td>
999     <td width="79" height="22"><!--mstheme--><font face="Arial">=<!--mstheme--></font></td>
1000     </tr>
1001     <tr>
1002     <td width="63" height="22"><!--mstheme--><font face="Arial">62<!--mstheme--></font></td>
1003     <td width="79" height="22"><!--mstheme--><font face="Arial">&gt;<!--mstheme--></font></td>
1004     </tr>
1005     <tr>
1006     <td width="63" height="22"><!--mstheme--><font face="Arial">63<!--mstheme--></font></td>
1007     <td width="79" height="22"><!--mstheme--><font face="Arial">?<!--mstheme--></font></td>
1008     </tr>
1009     <tr>
1010     <td width="63" height="22"><!--mstheme--><font face="Arial">64<!--mstheme--></font></td>
1011     <td width="79" height="22"><!--mstheme--><font face="Arial">spec<!--mstheme--></font></td>
1012     </tr>
1013     <tr>
1014     <td width="63" height="22"><!--mstheme--><font face="Arial">65<!--mstheme--></font></td>
1015     <td width="79" height="22"><!--mstheme--><font face="Arial">A<!--mstheme--></font></td>
1016     </tr>
1017     <tr>
1018     <td width="63" height="22"><!--mstheme--><font face="Arial">66<!--mstheme--></font></td>
1019     <td width="79" height="22"><!--mstheme--><font face="Arial">B<!--mstheme--></font></td>
1020     </tr>
1021     <tr>
1022     <td width="63" height="22"><!--mstheme--><font face="Arial">67<!--mstheme--></font></td>
1023     <td width="79" height="22"><!--mstheme--><font face="Arial">C<!--mstheme--></font></td>
1024     </tr>
1025     <tr>
1026     <td width="63" height="22"><!--mstheme--><font face="Arial">68<!--mstheme--></font></td>
1027     <td width="79" height="22"><!--mstheme--><font face="Arial">D<!--mstheme--></font></td>
1028     </tr>
1029     <tr>
1030     <td width="63" height="22"><!--mstheme--><font face="Arial">69<!--mstheme--></font></td>
1031     <td width="79" height="22"><!--mstheme--><font face="Arial">E<!--mstheme--></font></td>
1032     </tr>
1033     <tr>
1034     <td width="63" height="22"><!--mstheme--><font face="Arial">70<!--mstheme--></font></td>
1035     <td width="79" height="22"><!--mstheme--><font face="Arial">F<!--mstheme--></font></td>
1036     </tr>
1037     <tr>
1038     <td width="63" height="22"><!--mstheme--><font face="Arial">71<!--mstheme--></font></td>
1039     <td width="79" height="22"><!--mstheme--><font face="Arial">G<!--mstheme--></font></td>
1040     </tr>
1041     <tr>
1042     <td width="63" height="22"><!--mstheme--><font face="Arial">72<!--mstheme--></font></td>
1043     <td width="79" height="22"><!--mstheme--><font face="Arial">H<!--mstheme--></font></td>
1044     </tr>
1045     <tr>
1046     <td width="63" height="22"><!--mstheme--><font face="Arial">73<!--mstheme--></font></td>
1047     <td width="79" height="22"><!--mstheme--><font face="Arial">I<!--mstheme--></font></td>
1048     </tr>
1049     <tr>
1050     <td width="63" height="22"><!--mstheme--><font face="Arial">74<!--mstheme--></font></td>
1051     <td width="79" height="22"><!--mstheme--><font face="Arial">J<!--mstheme--></font></td>
1052     </tr>
1053     <tr>
1054     <td width="63" height="22"><!--mstheme--><font face="Arial">75<!--mstheme--></font></td>
1055     <td width="79" height="22"><!--mstheme--><font face="Arial">K<!--mstheme--></font></td>
1056     </tr>
1057     <tr>
1058     <td width="63" height="22"><!--mstheme--><font face="Arial">76<!--mstheme--></font></td>
1059     <td width="79" height="22"><!--mstheme--><font face="Arial">L<!--mstheme--></font></td>
1060     </tr>
1061     <tr>
1062     <td width="63" height="22"><!--mstheme--><font face="Arial">77<!--mstheme--></font></td>
1063     <td width="79" height="22"><!--mstheme--><font face="Arial">M<!--mstheme--></font></td>
1064     </tr>
1065     <tr>
1066     <td width="63" height="22"><!--mstheme--><font face="Arial">78<!--mstheme--></font></td>
1067     <td width="79" height="22"><!--mstheme--><font face="Arial">N<!--mstheme--></font></td>
1068     </tr>
1069     <tr>
1070     <td width="63" height="22"><!--mstheme--><font face="Arial">79<!--mstheme--></font></td>
1071     <td width="79" height="22"><!--mstheme--><font face="Arial">O<!--mstheme--></font></td>
1072     </tr>
1073     <tr>
1074     <td width="63" height="22"><!--mstheme--><font face="Arial">80<!--mstheme--></font></td>
1075     <td width="79" height="22"><!--mstheme--><font face="Arial">P<!--mstheme--></font></td>
1076     </tr>
1077     <tr>
1078     <td width="63" height="22"><!--mstheme--><font face="Arial">81<!--mstheme--></font></td>
1079     <td width="79" height="22"><!--mstheme--><font face="Arial">Q<!--mstheme--></font></td>
1080     </tr>
1081     <tr>
1082     <td width="63" height="22"><!--mstheme--><font face="Arial">82<!--mstheme--></font></td>
1083     <td width="79" height="22"><!--mstheme--><font face="Arial">R<!--mstheme--></font></td>
1084     </tr>
1085     <tr>
1086     <td width="63" height="22"><!--mstheme--><font face="Arial">83<!--mstheme--></font></td>
1087     <td width="79" height="22"><!--mstheme--><font face="Arial">S<!--mstheme--></font></td>
1088     </tr>
1089     <tr>
1090     <td width="63" height="22"><!--mstheme--><font face="Arial">84<!--mstheme--></font></td>
1091     <td width="79" height="22"><!--mstheme--><font face="Arial">T<!--mstheme--></font></td>
1092     </tr>
1093     <tr>
1094     <td width="63" height="22"><!--mstheme--><font face="Arial">85<!--mstheme--></font></td>
1095     <td width="79" height="22"><!--mstheme--><font face="Arial">U<!--mstheme--></font></td>
1096     </tr>
1097     <tr>
1098     <td width="63" height="22"><!--mstheme--><font face="Arial">86<!--mstheme--></font></td>
1099     <td width="79" height="22"><!--mstheme--><font face="Arial">V<!--mstheme--></font></td>
1100     </tr>
1101     <tr>
1102     <td width="63" height="22"><!--mstheme--><font face="Arial">87<!--mstheme--></font></td>
1103     <td width="79" height="22"><!--mstheme--><font face="Arial">W<!--mstheme--></font></td>
1104     </tr>
1105     <tr>
1106     <td width="63" height="22"><!--mstheme--><font face="Arial">88<!--mstheme--></font></td>
1107     <td width="79" height="22"><!--mstheme--><font face="Arial">X<!--mstheme--></font></td>
1108     </tr>
1109     <tr>
1110     <td width="63" height="22"><!--mstheme--><font face="Arial">89<!--mstheme--></font></td>
1111     <td width="79" height="22"><!--mstheme--><font face="Arial">Y<!--mstheme--></font></td>
1112     </tr>
1113     <tr>
1114     <td width="63" height="22"><!--mstheme--><font face="Arial">90<!--mstheme--></font></td>
1115     <td width="79" height="22"><!--mstheme--><font face="Arial">Z<!--mstheme--></font></td>
1116     </tr>
1117     <tr>
1118     <td width="63" height="22"><!--mstheme--><font face="Arial">91<!--mstheme--></font></td>
1119     <td width="79" height="22"><!--mstheme--><font face="Arial">È<!--mstheme--></font></td>
1120     </tr>
1121     <tr>
1122     <td width="63" height="22"><!--mstheme--><font face="Arial">92<!--mstheme--></font></td>
1123     <td width="79" height="22"><!--mstheme--><font face="Arial">Æ<!--mstheme--></font></td>
1124     </tr>
1125     <tr>
1126     <td width="63" height="22"><!--mstheme--><font face="Arial">93<!--mstheme--></font></td>
1127     <td width="79" height="22"><!--mstheme--><font face="Arial">Ž<!--mstheme--></font></td>
1128     </tr>
1129     <tr>
1130     <td width="63" height="22"><!--mstheme--><font face="Arial">94<!--mstheme--></font></td>
1131     <td width="79" height="22"><!--mstheme--><font face="Arial">Š<!--mstheme--></font></td>
1132     </tr>
1133     <tr>
1134     <td width="63" height="22"><!--mstheme--><font face="Arial">95<!--mstheme--></font></td>
1135     <td width="79" height="22"><!--mstheme--><font face="Arial">_<!--mstheme--></font></td>
1136     </tr>
1137     </table><!--mstheme--><font face="Arial">
1138     <p>Naredba PRINT CHR$(65) æe, na primer, pokazati slovo A. Funkciju CHR$
1139     koristimo pri formiranju složenih arfanumerika koje se obavlja sabiranjem.
1140     Alfanumerici, jasno, nisu brojevi koje ima smisla sabirati - iako se za
1141     sabiranje alfanumerika koristi isti znak kao i za sabiranje brojeva (plus),
1142     pojam ima sasvim drukèiji smisao: alfanumerici se nadovezuju. Ako, na primer,
1143     napišemo X$=&quot;GALA&quot;+CHR$(75)+&quot;SIJA&quot; a zatim PRINT X$, na ekranu æe se pojaviti
1144     reè GALAKSIJA obzirom da CHR$(75) odgovara slovu K.</p>
1145     <p>Na prvi pogled bi se reklo da naredbe poput gornje nemaju velikog smisla: zar
1146     nije jednostavnije napisati X$=&quot;GALAKSIJA&quot;? No, posmatrajmo naredbu
1147     X$=CHR$(34)+&quot;GALAKSIJA&quot;+CHR$(34). Po njenom izvršavanju PRINT X$ daje reè
1148     &quot;GALAKSIJA&quot; koje se nikako drukèije nije mogla dobiti obzirom da znaci navoda ne
1149     mogu da budu deo nekog teksta pošto oznaèavaju njegov poèetak i kraj.</p>
1150     <p>U okviru naredbe X$=... može da se nalazi promenljiva Y$ pa èak i sama
1151     promenljiva X$, ali uz jedno ogranièenje: ona mora da bude sasvim na poèetku
1152     izraza. Dakle, naredba X$=X$+Y$ æe nadovezati sadržaj promenljive Y$ na
1153     promenljivu X$, ali æe X$=Y$+X$ izazvati neželjeno ponašanje (probajte!).
1154     Slièno; može da se napiše Y$=Y$+CHR$(60)+X$ ali ne i Y$=CHR$(99)+Y$+X$.</p>
1155     <p>Ako nam dve alfanumerièke promenljive nisu dovoljne, možemo da definišemo
1156     alfanumerièki niz koji se zove X$(I) (ne treba ga, ponovo, mešati sa
1157     promenljivom X$). Na poèetku programa treba da stavimo naredbu ARR$(n) gde je n
1158     broj elemenata niza X$(I) koji nam je potreban (svaki od tih elemenata može da
1159     se upotrebi za èuvanje 16 znakova), a zatim možemo da postavljamo i menjamo
1160     sadržaje nekih od tih elemenata, koristeæi ranije izložena pravila za sabiranje
1161     (nadovezivanje) alfanumerika i funkciju CHR$.</p>
1162     <p>Ponekad može da nam zatreba da uporedimo neka dva alafanumerika da bismo
1163     saznali da li su oni jednaki. Afanumerici se smatraju jednakim ako sadrže iste
1164     znakove na istim mestima i ako su jednake dužine. U tom smislu je &quot;ABC&quot;=&quot;ABC&quot;
1165     ali nije &quot;ABC&quot;=&quot;ABC &quot;. Za poreðenje alfanumerika koristimo funkciju EQ;
1166     napišimo:</p>
1167     <!--mstheme--></font><pre>100 IF EQ Y$,X$(10) GOTO 1000: ELSE PRINT &quot;RAZLIÈITI SU&quot;</pre><!--mstheme--><font face="Arial">
1168     <p>i raèunar æe, ako su sadržaji promenljivih X$(10) i Y$ jednaki, preæi na
1169     naredbu 1000, a ako nisu prikazati na ekranu RAZLIÈITI SU i nastaviti sa radom.
1170     Možemo, jasno, da poredimo promenljive X$ i Y$, bilo koja dva elementa
1171     alfanumerièkog niza X$(I) ili bilo koju kombinaciju.</p>
1172     <p>Za poèetnika je teško da pravi razliku izmeðu numerièkih i alfanumerièkih
1173     promenljivih - naredba X$=&quot;123&quot; je sasvim razlièita od naredbe X=123. U prvom
1174     sluèaju smo dobili niz znakova koji ne podleže aritmetièkoj obradi (ako izuzmemo
1175     pomenuto nadovezivanje), a u drugom operativni broj 123. Promenljive X$ i X su
1176     razlièite i raèunar ih èuva na raznim mestima u memoriji.</p>
1177     <p>U nekim sluèajevima može da bude korisno da se alfanumerik koji se sastoji od
1178     cifara pretvori u broj. Za to nam služi naredba VAL. Otkucajmo program:</p>
1179     <!--mstheme--></font><pre>10 INPUT X$
1180     20 PRINT VAL(PTR X$)+1</pre><!--mstheme--><font face="Arial">
1181     <p>i startujmo ga sa RUN. Kada raèunar zatraži od nas da otkucamo X$, odgovorimo
1182     sa 25 (posle toga, naravno, pritiskamo RET). Trenutak docnije na ekranu se
1183     pojavio broj 26. Raèunar je, dakle, naišao na naredbu PRINT, našao VAL
1184     (vrednost) afanumerièke promenljive X$ i dodao joj jedan, dobivši rezultat 26.
1185     Napominjemo da sintaksa naredbe VAL koja je ovde korišæena ne može da bude jasna
1186     èitaocu koji nije èitao &quot;na preskok&quot; jer se u njoj koristi naredba PTR koju još
1187     nismo obradili. Za sada je, ipak, primite onakvu kakva jeste, a docnije æe sve
1188     postati jasnije.</p>
1189     <p>Kada unosimo X$, ne moramo da se ogranièimo samo na brojeve: možemo kucamo
1190     èitav izraz, koristeæi imena promenljivih i pazeæi da on nema više od 16
1191     simbola. Naredba VAL (PTR X$) æe izraèunati vrednoet ovog izraza i pretvoriti ga
1192     u broj.</p>
1193     <h4>Èasovnik - DOT *, UNDOT *</h4>
1194     <p>Raèunar &quot;galaksija&quot; je opremljen vrlo preciznim kvarcnim èasovnikom koji æe,
1195     po svoj prilici, naæi upotrebu kao štoperica. Ovaj èasovnik može, ako mu to
1196     naredimo, da prikazuje samo sate i minute, ali može da bude i toliko precizan da
1197     prikazuje i pedesetinke sekunde. Za rad sa njim je potrebna promenljiva Y$ i
1198     naredbe DOT* i UNDOT*.</p>
1199     <p>Najpre treba da postavimo tekuæe vreme. Napišemo (u komandnom modu ili u
1200     programu) Y$=&quot;21:45:20:50&quot; i pritisnimo RET (ako želimo da èasovnik pokazuje
1201     samo sate i minute, napisaæemo Y$=&quot;21:45&quot; a ako želimo sate, minute i sekunde,
1202     Y$=&quot;21:45:20&quot;; ukoliko želimo da merimo vreme, napisaæemo Y$= &quot;00:00:00:00&quot;).
1203     Raèunar æe smatrati da je sada taèno 21 èas, 45 minuta, 20 sekundi i 50
1204     stotinki, ali njegov èasovnik još neæe zapoèeti da radi: treba da ga startujemo
1205     sa DOT*. Ako poželimo da zaustavimo èasovnik, upotrebiæemo naredbu UNDOT*. Evo,
1206     na primer, programa koji u desnom gornjem, uglu ekrana neprekidno prikazuje
1207     taèno vreme:</p>
1208     <!--mstheme--></font><pre>10 HOME:Y$=&quot;10:15:20:15&quot; (ili bilo koje drugo vreme)
1209     20 DOT*
1210     30 PRINT AT 20; Y$;
1211     40 GOTO 30</pre><!--mstheme--><font face="Arial">
1212     <p>Ovako rešen èasovnik ima tri mane: prva je što se iskljuèivanjem raèunara
1213     briše tekuæe vreme, druga što èasovnik ne radi dok se program snima ili uèitava
1214     sa kasete, a treæa što, ako je u programu korišæena naredba DOT*, moramo da
1215     pazimo da li su dve taèke treæi simbol promenljive Y$. Ako jesu, raèunar æe
1216     smatrati da Y$ sadrži tekuæe vreme, pa æe menjati njen sadržaj što može da
1217     proizvede neželjene posledioe.</p>
1218     <h4>Alternativni metod primanja podataka - TAKE i #</h4>
1219     <p>Do sada smo primali podatke iskljuèivo pomoæu naredbe INPUT, a dodeljivali
1220     sadržaje pomenljivima i pomoæu komandi tipa A=123. Èesto nam je, meðutim, u
1221     poèetku programa neophodno da dodelimo vrednosti mnogobrojnim promenljivima i
1222     elementima matrice A. U takvim sluèajevima naredba TAKE može da bude neobièno
1223     praktièna.</p>
1224     <p>Iza TAKE se navodi lista promenljivih kojima treba dodeliti vrednosti. To
1225     mogu da budu numerièke promenljive, elementi matrice A, alfanumerièke
1226     promenljive ili elementi niza X$ (ako je ovaj prethodno definisan sa ARR$).
1227     Elementi ove liste se odvajaju zarezima. U poèetku programa æe se, dakle, èesto
1228     naæi naredba:</p>
1229     <!--mstheme--></font><pre>10 TAKE A,B,C,X,Z</pre><!--mstheme--><font face="Arial">
1230     <p>Odakle raèunar može da uzme (TAKE=uzmi) ove podatke? U okviru programa mora
1231     na proizvoljnom mestu (pre ili posle naredbe TAKE, po želji) da se naðe jedna
1232     ili više linija koje poèinju simbolom #. Ovaj simbol obaveštava raèunar da se u
1233     linijama koje ga sadrže nalazi tablica podataka koji æe biti proèitani sa TAKE.
1234     Brojevi i reæi u ovim tabelama treba da budu razdvojeni zarezima.</p>
1235     <p>Ako se, na primer, u programu nalazi naredba:</p>
1236     <!--mstheme--></font><pre>100 # 10, 20, 30, -11, 79, 779</pre><!--mstheme--><font face="Arial">
1237     <p>a raèunar izvrši ranije navedenu TAKE naredbu, promenljiva A æe dobiti
1238     vrednost 10, promenljiva B dvadeset itd. promenljiva Z æe dobiti vrednost 79.
1239     Raèunar æe &quot;zapamtiti&quot; dokle je došao sa èitanjem podataka pa æe. ako naiðe na
1240     naredbu 50 TAKE L, promenljivoj L dodeliti broj 779.</p>
1241     <p>Ako se u listi iza # nalazi manje podataka nego što se u TAKE naredbi traži,
1242     raèunar æe prijaviti grešku. Obrnuto, ukoliko se ne uèitaju svi podaci iz liste,
1243     raèunar neæe reagovati, što je i prirodno.</p>
1244     <p>Ponekad može da bude potrebno da se u okviru programa ponovo uzimaju isti
1245     podaci (potrebne su, na primer, poèetne vrednosti za neku igru, a želimo da se,
1246     po završetku svake partije, automatski zapoène nova sa istim poèetnim
1247     parametrima). U tom sluèaju, pre prve naredbe TAKE koja se nalazi u programu
1248     treba da stavimo TAKE 0 (nula a ne slovo O). Na taj naèin æe raèunar zapoèeti
1249     uzimanje podataka od samog poèetka prve # liste. Umesto nule, iza TAKE možemo da
1250     stavimo neki drugi broj. U tom sluèaju raèunar pronalazi liniju sa tim brojem i
1251     priprema se da u sledeæoj TAKE naredbi uzme podatke iz # liste koja se nalazi u
1252     toj liniji. Ukoliko u navedenoj naredbi nema # liste, raèunar æe pronaæi prvu
1253     sledeæu takvu listu, odakle vidimo da je TAKE 0 samo specijalni sluèaj naredbe
1254     TAKE n. Naredba RUN automatski izvršava TAKE 0.</p>
1255     <h4>Naredba KEY</h4>
1256     <p>U nekim igrama su potrebne brze reakcije igraèa - naredba INPUT postaje
1257     sasvim nepogodna. INPUT A, na primer, prekida rad programa sve dok korisnik ne
1258     unese neki broj i ne pritisne RET, što znaèi da je vreme za razmišljanje
1259     neogranièeno. Osim toga, naredba INPUT ispisuje na ekranu znake koje korisnik
1260     kuca i tako kvari sliku koja je na njemu prikazana. Zato raèunar &quot;galaksija&quot;
1261     poseduje naredbu KEY.</p>
1262     <!--mstheme--></font><table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="207" id="AutoNumber2">
1263     <tr>
1264     <td width="141"><!--mstheme--><font face="Arial"><b>Taster</b><!--mstheme--></font></td>
1265     <td width="66"><!--mstheme--><font face="Arial"><b>N</b><!--mstheme--></font></td>
1266     </tr>
1267     <tr>
1268     <td width="141"><!--mstheme--><font face="Arial">A<!--mstheme--></font></td>
1269     <td width="66"><!--mstheme--><font face="Arial">1<!--mstheme--></font></td>
1270     </tr>
1271     <tr>
1272     <td width="141"><!--mstheme--><font face="Arial">B<!--mstheme--></font></td>
1273     <td width="66"><!--mstheme--><font face="Arial">2<!--mstheme--></font></td>
1274     </tr>
1275     <tr>
1276     <td width="141"><!--mstheme--><font face="Arial">C<!--mstheme--></font></td>
1277     <td width="66"><!--mstheme--><font face="Arial">3<!--mstheme--></font></td>
1278     </tr>
1279     <tr>
1280     <td width="141"><!--mstheme--><font face="Arial">D<!--mstheme--></font></td>
1281     <td width="66"><!--mstheme--><font face="Arial">4<!--mstheme--></font></td>
1282     </tr>
1283     <tr>
1284     <td width="141"><!--mstheme--><font face="Arial">E<!--mstheme--></font></td>
1285     <td width="66"><!--mstheme--><font face="Arial">5<!--mstheme--></font></td>
1286     </tr>
1287     <tr>
1288     <td width="141"><!--mstheme--><font face="Arial">F<!--mstheme--></font></td>
1289     <td width="66"><!--mstheme--><font face="Arial">6<!--mstheme--></font></td>
1290     </tr>
1291     <tr>
1292     <td width="141"><!--mstheme--><font face="Arial">G<!--mstheme--></font></td>
1293     <td width="66"><!--mstheme--><font face="Arial">7<!--mstheme--></font></td>
1294     </tr>
1295     <tr>
1296     <td width="141"><!--mstheme--><font face="Arial">H<!--mstheme--></font></td>
1297     <td width="66"><!--mstheme--><font face="Arial">8<!--mstheme--></font></td>
1298     </tr>
1299     <tr>
1300     <td width="141"><!--mstheme--><font face="Arial">I<!--mstheme--></font></td>
1301     <td width="66"><!--mstheme--><font face="Arial">9<!--mstheme--></font></td>
1302     </tr>
1303     <tr>
1304     <td width="141"><!--mstheme--><font face="Arial">J<!--mstheme--></font></td>
1305     <td width="66"><!--mstheme--><font face="Arial">10<!--mstheme--></font></td>
1306     </tr>
1307     <tr>
1308     <td width="141"><!--mstheme--><font face="Arial">K<!--mstheme--></font></td>
1309     <td width="66"><!--mstheme--><font face="Arial">11<!--mstheme--></font></td>
1310     </tr>
1311     <tr>
1312     <td width="141"><!--mstheme--><font face="Arial">L<!--mstheme--></font></td>
1313     <td width="66"><!--mstheme--><font face="Arial">12<!--mstheme--></font></td>
1314     </tr>
1315     <tr>
1316     <td width="141"><!--mstheme--><font face="Arial">M<!--mstheme--></font></td>
1317     <td width="66"><!--mstheme--><font face="Arial">13<!--mstheme--></font></td>
1318     </tr>
1319     <tr>
1320     <td width="141"><!--mstheme--><font face="Arial">N<!--mstheme--></font></td>
1321     <td width="66"><!--mstheme--><font face="Arial">14<!--mstheme--></font></td>
1322     </tr>
1323     <tr>
1324     <td width="141"><!--mstheme--><font face="Arial">O<!--mstheme--></font></td>
1325     <td width="66"><!--mstheme--><font face="Arial">15<!--mstheme--></font></td>
1326     </tr>
1327     <tr>
1328     <td width="141"><!--mstheme--><font face="Arial">P<!--mstheme--></font></td>
1329     <td width="66"><!--mstheme--><font face="Arial">16<!--mstheme--></font></td>
1330     </tr>
1331     <tr>
1332     <td width="141"><!--mstheme--><font face="Arial">Q<!--mstheme--></font></td>
1333     <td width="66"><!--mstheme--><font face="Arial">17<!--mstheme--></font></td>
1334     </tr>
1335     <tr>
1336     <td width="141"><!--mstheme--><font face="Arial">R<!--mstheme--></font></td>
1337     <td width="66"><!--mstheme--><font face="Arial">18<!--mstheme--></font></td>
1338     </tr>
1339     <tr>
1340     <td width="141"><!--mstheme--><font face="Arial">S<!--mstheme--></font></td>
1341     <td width="66"><!--mstheme--><font face="Arial">19<!--mstheme--></font></td>
1342     </tr>
1343     <tr>
1344     <td width="141"><!--mstheme--><font face="Arial">T<!--mstheme--></font></td>
1345     <td width="66"><!--mstheme--><font face="Arial">20<!--mstheme--></font></td>
1346     </tr>
1347     <tr>
1348     <td width="141"><!--mstheme--><font face="Arial">U<!--mstheme--></font></td>
1349     <td width="66"><!--mstheme--><font face="Arial">21<!--mstheme--></font></td>
1350     </tr>
1351     <tr>
1352     <td width="141"><!--mstheme--><font face="Arial">V<!--mstheme--></font></td>
1353     <td width="66"><!--mstheme--><font face="Arial">22<!--mstheme--></font></td>
1354     </tr>
1355     <tr>
1356     <td width="141"><!--mstheme--><font face="Arial">W<!--mstheme--></font></td>
1357     <td width="66"><!--mstheme--><font face="Arial">23<!--mstheme--></font></td>
1358     </tr>
1359     <tr>
1360     <td width="141"><!--mstheme--><font face="Arial">X<!--mstheme--></font></td>
1361     <td width="66"><!--mstheme--><font face="Arial">24<!--mstheme--></font></td>
1362     </tr>
1363     <tr>
1364     <td width="141"><!--mstheme--><font face="Arial">Y<!--mstheme--></font></td>
1365     <td width="66"><!--mstheme--><font face="Arial">25<!--mstheme--></font></td>
1366     </tr>
1367     <tr>
1368     <td width="141"><!--mstheme--><font face="Arial">Z<!--mstheme--></font></td>
1369     <td width="66"><!--mstheme--><font face="Arial">26<!--mstheme--></font></td>
1370     </tr>
1371     <tr>
1372     <td width="141"><!--mstheme--><font face="Arial"><span lang="en"><font face="Wingdings">á</font></span><!--mstheme--></font></td>
1373     <td width="66"><!--mstheme--><font face="Arial">27<!--mstheme--></font></td>
1374     </tr>
1375     <tr>
1376     <td width="141"><!--mstheme--><font face="Arial"><span lang="en"><font face="Wingdings">â</font></span><!--mstheme--></font></td>
1377     <td width="66"><!--mstheme--><font face="Arial">28<!--mstheme--></font></td>
1378     </tr>
1379     <tr>
1380     <td width="141"><!--mstheme--><font face="Arial"><span lang="en"><font face="Wingdings">ß</font></span><!--mstheme--></font></td>
1381     <td width="66"><!--mstheme--><font face="Arial">29<!--mstheme--></font></td>
1382     </tr>
1383     <tr>
1384     <td width="141"><!--mstheme--><font face="Arial"><span lang="en"><font face="Wingdings">&agrave;</font></span><!--mstheme--></font></td>
1385     <td width="66"><!--mstheme--><font face="Arial">30<!--mstheme--></font></td>
1386     </tr>
1387     <tr>
1388     <td width="141"><!--mstheme--><font face="Arial">blanko<!--mstheme--></font></td>
1389     <td width="66"><!--mstheme--><font face="Arial">31<!--mstheme--></font></td>
1390     </tr>
1391     <tr>
1392     <td width="141"><!--mstheme--><font face="Arial">0<!--mstheme--></font></td>
1393     <td width="66"><!--mstheme--><font face="Arial">32<!--mstheme--></font></td>
1394     </tr>
1395     <tr>
1396     <td width="141"><!--mstheme--><font face="Arial">1<!--mstheme--></font></td>
1397     <td width="66"><!--mstheme--><font face="Arial">33<!--mstheme--></font></td>
1398     </tr>
1399     <tr>
1400     <td width="141"><!--mstheme--><font face="Arial">2<!--mstheme--></font></td>
1401     <td width="66"><!--mstheme--><font face="Arial">34<!--mstheme--></font></td>
1402     </tr>
1403     <tr>
1404     <td width="141"><!--mstheme--><font face="Arial">3<!--mstheme--></font></td>
1405     <td width="66"><!--mstheme--><font face="Arial">35<!--mstheme--></font></td>
1406     </tr>
1407     <tr>
1408     <td width="141"><!--mstheme--><font face="Arial">4<!--mstheme--></font></td>
1409     <td width="66"><!--mstheme--><font face="Arial">36<!--mstheme--></font></td>
1410     </tr>
1411     <tr>
1412     <td width="141"><!--mstheme--><font face="Arial">5<!--mstheme--></font></td>
1413     <td width="66"><!--mstheme--><font face="Arial">37<!--mstheme--></font></td>
1414     </tr>
1415     <tr>
1416     <td width="141"><!--mstheme--><font face="Arial">6<!--mstheme--></font></td>
1417     <td width="66"><!--mstheme--><font face="Arial">38<!--mstheme--></font></td>
1418     </tr>
1419     <tr>
1420     <td width="141"><!--mstheme--><font face="Arial">7<!--mstheme--></font></td>
1421     <td width="66"><!--mstheme--><font face="Arial">39<!--mstheme--></font></td>
1422     </tr>
1423     <tr>
1424     <td width="141"><!--mstheme--><font face="Arial">8<!--mstheme--></font></td>
1425     <td width="66"><!--mstheme--><font face="Arial">40<!--mstheme--></font></td>
1426     </tr>
1427     <tr>
1428     <td width="141"><!--mstheme--><font face="Arial">9<!--mstheme--></font></td>
1429     <td width="66"><!--mstheme--><font face="Arial">41<!--mstheme--></font></td>
1430     </tr>
1431     <tr>
1432     <td width="141"><!--mstheme--><font face="Arial">;<!--mstheme--></font></td>
1433     <td width="66"><!--mstheme--><font face="Arial">42<!--mstheme--></font></td>
1434     </tr>
1435     <tr>
1436     <td width="141"><!--mstheme--><font face="Arial">:<!--mstheme--></font></td>
1437     <td width="66"><!--mstheme--><font face="Arial">43<!--mstheme--></font></td>
1438     </tr>
1439     <tr>
1440     <td width="141"><!--mstheme--><font face="Arial">,<!--mstheme--></font></td>
1441     <td width="66"><!--mstheme--><font face="Arial">44<!--mstheme--></font></td>
1442     </tr>
1443     <tr>
1444     <td width="141"><!--mstheme--><font face="Arial">=<!--mstheme--></font></td>
1445     <td width="66"><!--mstheme--><font face="Arial">45<!--mstheme--></font></td>
1446     </tr>
1447     <tr>
1448     <td width="141"><!--mstheme--><font face="Arial">.<!--mstheme--></font></td>
1449     <td width="66"><!--mstheme--><font face="Arial">46<!--mstheme--></font></td>
1450     </tr>
1451     <tr>
1452     <td width="141"><!--mstheme--><font face="Arial">/<!--mstheme--></font></td>
1453     <td width="66"><!--mstheme--><font face="Arial">47<!--mstheme--></font></td>
1454     </tr>
1455     <tr>
1456     <td width="141"><!--mstheme--><font face="Arial">RET<!--mstheme--></font></td>
1457     <td width="66"><!--mstheme--><font face="Arial">48<!--mstheme--></font></td>
1458     </tr>
1459     <tr>
1460     <td width="141"><!--mstheme--><font face="Arial">RPT<!--mstheme--></font></td>
1461     <td width="66"><!--mstheme--><font face="Arial">50<!--mstheme--></font></td>
1462     </tr>
1463     <tr>
1464     <td width="141"><!--mstheme--><font face="Arial">LIST<!--mstheme--></font></td>
1465     <td width="66"><!--mstheme--><font face="Arial">52<!--mstheme--></font></td>
1466     </tr>
1467     <tr>
1468     <td width="141"><!--mstheme--><font face="Arial">SHIFT<!--mstheme--></font></td>
1469     <td width="66"><!--mstheme--><font face="Arial">53<!--mstheme--></font></td>
1470     </tr>
1471     </table><!--mstheme--><font face="Arial">
1472     <p>Iza KEY se, u zagradi, nalazi broj koji se odreðuje iz tablice. Vidi se da
1473     svakom tasteru odgovara neki broj, pa postaje jasno za šta KEY(n) služi: ova
1474     naredba omoguæava ispitivanje da li je neki taster pritisnut ili nije.
1475     Posmatrajmo, na primer, program:</p>
1476     <!--mstheme--></font><pre>10 IF KEY (1) PRINT &quot;PRITISNUO SI A&quot;: ELSE GOTO 10</pre><!--mstheme--><font face="Arial">
1477     <p>Program se neprekidno izvršava sve dok korisnik ne pritisne taster A, zatim
1478     se na ekranu pojavljuje odgovarajuæi komentar, posle èega raèunar prestaje sa
1479     radom. Na demo kaseti je naredba KEY mnogo eksplibatisana naroèito za
1480     ispitivanje pritiska neke od strelica (u okviru naredbe INPUT èak se i ne može
1481     uneti strelica kao karakteri), pa æe analiza programa sa nje pružiti neiskusnom
1482     korisniku predstavu o znaèaju ove naredbe.</p>
1483     <p>KEY(0) ima funkciju koja je u mnogo èemu razlièita od funkcije do sada
1484     opisane naredbe KEY. KEY(0), naime, daje kod znaka koji je pridružen tasteru
1485     koji korisnik pritisne (kod se raèuna prema tabeli koja je data u diskusiji
1486     naredbe CHR$). Naredba IF KEY(0) se, dakle, neæe pravilno izvršavati, ali zato
1487     može da se napiše A=KEY(0). Kada raèunar, u toku izvršavanja programa, naiðe na
1488     ovu naredbu, on æe èekati sve dok korisnik ne pritisne neki taster, a zatim æe
1489     vrednost koda (broj 80 ako korisnik pritisne taster P, na primer) znaka koji je
1490     ispisan na tom tasteru pridružiti promenljivoj A.</p>
1491     <!--mstheme--></font><pre>10 HOME
1492     20 PRINT CHR$(KEY(0));
1493     30 GOTO 20</pre><!--mstheme--><font face="Arial">
1494     <p>prenosi na ekran slova koja korisnik kuca pa se tako. na neki naèin, imitira
1495     &quot;normalan&quot; rad raèunara. Meðutim, program:</p>
1496     <!--mstheme--></font><pre>10 X$=&quot;&quot;
1497     20 X$=X$+CHR$(KEY(0))
1498     30 GOTO 20</pre><!--mstheme--><font face="Arial">
1499     <p>imitira naredbu INPUT X$, s tim što se uneseni tekst smešta u X$ bez kvarenja
1500     izgleda ekrana.</p>
1501     <h4>Skraæivanje naredbi</h4>
1502     <p>Ovim poglavljem zapoèinjemo poslednji krug: to je deo uputstva za upotrebu
1503     koji je namenjen onima koji su solidno savladali osnove programiranja i upoznali
1504     sve do sada izložene karakteristike raèunara &quot;galaksija&quot;. Njim zapoèinje deo
1505     koji æe, silom prilika, biti manje jasan i zahtevati više napora za
1506     savladavanje. Za to postoje jaki razlozi: programiranje na mašinskom jeziku,
1507     koje želimo da upoznamo, predstavlja viši stupanj i neku vrstu nadgradnje
1508     bejzlka i nije namenjeno neiskusnim korisnicima. Ovim, naravno, ne želimo nikoga
1509     da plašimo: mašinsko programiranje nije teško; ono zahteva samo malo više rada i
1510     nema smisla upuštati se u njega dok nismo savladali bejzik.</p>
1511     <p>Sa mašinskim programiranjem, ipak, ne možemo da poènemo baš odmah. Potrebno
1512     je da upoznamo neke tajne našeg raèunara i shvatimo kako je organizovana njegova
1513     memorija, kako možemo slobodno da menjamo njen sadržaj i kakvim se opasnostima
1514     pri tome izlažemo. Najpre æemo ppmenuti jednu karakteristiku koja može u mnogome
1515     da nam olaksa manipulisanje sa raèunarom: moguænosti skraæivanja naredbi.</p>
1516     <p>Svaka naredba koju raèunar &quot;galaksija&quot; poznaje i koja ima vise od dva slova
1517     može da se skrati. Umesto, na primer, da pišemo PRINT 10*2, možemo da otkucamo
1518     jednostavno P. 10*2. Taæka iza P govori raèunaru da je pred njim skraæena
1519     naredba PRINT. Ovako skraæena, naredba PRINT zauzima dva bajta memorije (PRINT
1520     zauzima pet), brže se izvršava i lakše kuca. Na žalost, skraæivanjem naredbi
1521     degradiramo izgled bejzik programa i èinimo program znatno nerazumljivijim za
1522     poèetnika.</p>
1523     <p>Bejzik kojim je opremljen raèunar &quot;galaksija&quot; je tako koncipiran da svaka
1524     naredba može da se skrati što eliminiše potrebu da navedemo tabelu skraæenih
1525     oblika! Ovo, na prvi pogled, zvuèi nemoguæe: veæ smo, na primer, upoznali
1526     naredbe INPUT i INT, NEW i NEXT i sliène koje poèinju istljm slovom. Verovali
1527     ili ne, raèunar &quot;galaksija&quot; u ovoj prilici može ogranièeno da èita vaše misli -
1528     skratite bilo koju naredbu na jedno slovo i on æe pogoditi šta ste želeli da
1529     uèinite! Objašnjenje je jednostavno: INPUT predstavlja naredbu koja poèinje od
1530     poèetka neke linije bejzika ili od oznake: a INT funkciju koja se nalazi samo
1531     desno od znaka jednakosti gde naredba INPUT svakako ne može da se naðe. Isto
1532     tako, RETURN nema smisla u komandnom, a RUN u programskom modu, pa svaka od njih
1533     može da se zameni sa R. O svemu ovome ne morate mnogo da mislite: jednostavno
1534     skratite svaku naredbu koja ima više od dva slova na jedno slovo i stavite
1535     taèku, a raèunar se nikada neæe zbuniti.</p>
1536     <h4>Raèunanje sa logièkim iskazima</h4>
1537     <p>Obzirom da se u IF naredbi mogu naæi samo logièki izkazi u kojima se koriste
1538     oznake &lt;, &gt; i =, svi oni koji su pisali iole složene programe susretali su se
1539     sa problemima tipa: potrebno mi je da raèunar ode na liniju broj 100 ako je X
1540     manje ili jednako Y. Ukoliko ste se dosetili trika koji æemo da izložimo,
1541     zaslužujete sve komplimente i imate sve šanse da postanete dobar programer:</p>
1542     <!--mstheme--></font><pre>10 IF X&gt;Y ELSE GOTO 100</pre><!--mstheme--><font face="Arial">
1543     <p>ili, s obzirom na prethodno poglavlje:</p>
1544     <!--mstheme--></font><pre>10 IFX&gt;YE.G.100</pre><!--mstheme--><font face="Arial">
1545     <p>Šta se desilo? Ako je X veæe ili jednako Y, odgovor na pitanje &quot;da li je X
1546     manje od Y&quot; je negativan, pa raèunar izvršava ono što se nalazi iza ELSE.
1547     Ukoliko je X manje od Y, ELSE biva ignorisano i raèunar prelazi na sledeæu
1548     liniju.</p>
1549     <p>Kako smo smeli da izostavimo dve taèke ispred ELSE? To u ovom sluèaju sme da
1550     se uradi obzirom da ne postoji nikakva dvoznaènost i da se tako štedi jedan bajt
1551     RAM-a. U radu sa raèunarom &quot;galaksija&quot; æete primetiti da u mnogim sluèajevima
1552     neke naredbe mogu da se iskoriste u pojednostavljenom obliku koji nije izložen
1553     da bi se izbegla konfuzija kod poèetnika. U našem primeru dve taèke ispred ELSE
1554     ne bi nikako zasmetale raèunaru!</p>
1555     <p>Ovaj trik je ipak nedovoljan: èesto želimo da se neka naredba izvrši ako je
1556     ispunjeno nekoliko logièkih iskaza (ako je, na primer, X veæe od Y i Z veæe od
1557     2), Raèunar &quot;galaksija&quot; omoguæava i korišæerije logièkih operacija i odnosno
1558     ili, ali na indirektan naèin.</p>
1559     <p>Svakom logièkom iskazu koji je taèan dodeljuje se vrednost jedan, a onome
1560     koji je netaèan - nula. Otkucajmo, na primer, PRINT 2=2 i na ekranu æe se
1561     pojaviti broj jedan obzirom da je dva jednako dva. Možemo, isto tako, da
1562     napišemo PRINT (B=2)+(A=3). Ukoliko je B zaista dva a A tri, na ekranu æe se
1563     pojaviti broj 2 (1+1=2). Ukoliko je B jednako dva ali je A razlièito od tri ili
1564     ako je B razlièito od dva a A jednako tri, na ekranu æe se pojaviti broj 1
1565     (1+0=0+1=1). Ako je, najzad, A razlièito od tri, a B od dva, na ekranu æe se
1566     pojaviti nula (0+0=0).</p>
1567     <p>Naredba IF izraèunava vrednost izraza koji je naveden iza nje i smatra da je
1568     on netaèan ako je jednak nuli a taèan ako je razlièit. U tom smislu je IF S=O
1569     ELSE GOTO 100 potpuno ekvivalentno sa IF S GOTO 100, pri èemu je druga naredba
1570     kraæa i brže se izvršava.</p>
1571     <p>Koristeæi upravo steèena znanja, logièko i æemo lako zamenjivati množenjem, a
1572     logièko ili sabiranjem. Primer naveden tri pasusa ranije može da se sažme u
1573     naredbu:</p>
1574     <!--mstheme--></font><pre>10 IF (X&gt;Y)*(Z&gt;2) PRINT &quot;USLOV JE ISPUNJEN&quot;: ELSE PRINT &quot;USLOV NIJE ISPUNJEN&quot;</pre><!--mstheme--><font face="Arial">
1575     <h4>Dalje moguænosti naredbe HOME</h4>
1576     <p>Naredba HOME nalaže raèunara da obriše sadržaj ekrana i o njoj se, izgleda,
1577     ne mora više razgovarati. No iza HOME može da se naðe i neki broj izmeðu 1 i 512
1578     koji unekoliko menja smisao ove naredbe.</p>
1579     <p>Kada raèunar ispuni èitav ekran, prva linija nestaje, sve ostale se pomeraju
1580     za jedan red nagore, a novi tekst se pojavljuje u poslednjem (šesnaestom) redu
1581     ekrana. To je prirodan tok stvari, ali ponekad može da bude korisno da se jedan
1582     deo ekrana zaštiti od automatskog brisanja. Na tom delu ekrana može da se naðe
1583     neki tekst koji u toku èitavog rada programa treba da bude vidljiv (na primer,
1584     sažeto uputstvo za upotrebu kod neke igre). Da bismo, na primer, zaštitili prva
1585     tri reda ekrana, izvršiæemo sledeæi jednostavni program:</p>
1586     <!--mstheme--></font><pre>10 HOME
1587     20 PRINT &quot;OVI REDOVI&quot;: PRINT &quot;SU&quot;: PRINT &quot;ZAŠTIÆENI&quot;
1588     30 HOME 96</pre><!--mstheme--><font face="Arial">
1589     <p>Zatim kucajmo neke naredbe i, kada ostatak ekrana bude ispunjen, primetimo da
1590     je &quot;pokretan&quot; samo deo ispod treæeg reda.</p>
1591     <p>Zaštita prvih redova nije potpuna: pomoæu PRINT AT možemo da menjamo njihov
1592     sadržaj, pa èak i da ga obrišemo pritisnuvši SHIFT DEL. Meðutim, zona na ekranu
1593     ostaje zaštiæena èak i ako promenimo njen sadržaj - automatski scroll (pomeranje
1594     redova) je ne remeti.</p>
1595     <p>Postoji jedno ogranièenje, vezano za zaštitu ekrana: kada je ona aktivirana,
1596     uobièajeni fini scroll (pomeranje redova nije naglo nego prijatno za oèi) je
1597     iskljuèen. To znaèi da æe listanje programa biti oko tri puta brže nego obièno,
1598     ali æe ga biti teže pratiti obzirom da redovi prebrzo &quot;preleæu&quot; ekran. Ako
1599     želimo samo da iskljuèimo fini scroll bez zaštite dela ekrana, otkucacemo HOME
1600     512. Ovo stanje, kao i zaštita bilo kog dela ekrana, opoziva se sa HOME.</p>
1601     <h4>Heksadecimalni sistem - oznaka &amp;</h4>
1602     <p>Za rad sa mašinškim jezikom je pogodno koristiti heksadecimalni brojni
1603     sistem. U njemu se, uz cifre 0, 1, 2, 3, 4, 5, 6, 7, 8 i 9 koriste i &quot;cifre&quot; A,
1604     B, C. D, E i F. Broj 10 se u heksadekadnom sistemu piše kao 0A ili, jednostavno
1605     A, 11 je 0B, 12 je 0C, 13 je OD, 14 je 0E, 15 je OF, a 16 se piše kao 10. Ako u
1606     broju nema slova A, B, C, D, E i F, lako može da doðe do zabune u kom je sistemu
1607     pisan. Problem se u programiranju (a ponekad i u matematici) rešava tako što se
1608     ispred heksadekadnog broja stavlja oznaka &amp; (na primer &amp;10, &amp;5A i slièno). Ova
1609     konvencija je poznata i raèunaru &quot;galaksija&quot; otkucajmo, na primer, PRINT &amp;000A
1610     (ili samo PRINT &amp;A) i pritisnimo RET - na ekranu æe se pojaviti broj 10 koji
1611     predstavlja prevod heksadekadnog broja 000A u dekadni sistem.</p>
1612     <p>Kada god u nekoj naredbi treba da napišemo neki dekadni broj, možemo da ga
1613     zamenimo heksadekadnim pri èemu ispred njega stavljamo znak &amp;. Tako možemo da
1614     zamenimo naredbu HOME 32 naredbom HOME &amp;20, znajuæi da se u svakom redu nalazi
1615     po &amp;20 (&amp;20=32) karaktera. Treba voditi raèuna o èinjenici da se oznakom &amp; mogu
1616     dobiti i negativni brojevi: &amp;8001 nije 32769 nego -32767.</p>
1617     <p>Rad sa heksadekadnim sistemom postaje posebno znaèajan tek sa naredbama BYTE
1618     i WORD.</p>
1619     <h4>Organizacija memorije - naredba BYTE</h4>
1620     <p>Naš raèunar je opremljen ROM-om od èetiri kilobajta i istim tolikim RAM-om
1621     (dodavanjem èipova, ROM može da se proširi do 8 KB a RAM do 6KB; dodavanjem
1622     posebne ploèice RAM bi mogao da se proširi do 54 kilobajta). ROM i RAM možemo da
1623     zamislimo kao skup æelija koje su poredane u red i numerisane brojevima od &amp;0000
1624     do &amp;FFFF. U svaku æeliju može da se smesti bilo koji broj izmeðu &amp;00 i &amp;FF ili,
1625     da budemo precizniji, u nekim od æelija veæ se nalaze fiksirani brojevi. Ove
1626     æelije se nalaze na poèetku memorije (adrese &amp;000 do &amp;OFFF) i èine ROM - deo
1627     memorije u koji je upisan sistemski program koji omoguæava ispravno
1628     funkcionisanje našeg raèunara. U ostale æelije možemo slobodno da upisujemo
1629     sadržaj koji æe biti interpretiran kao mašinski program koji može da se
1630     izvršava.</p>
1631     <p>Adrese &amp;1000 do &amp;1FFF odgovaraju ROM-u koji se ne nalazi u vašem raèunam - to
1632     je proširenje koje æe jednoga dana biti na raspolaganju. Adrese &amp;2000 do &amp;27FF
1633     obuhvataju æelije koje, u sadašnjoj situaciji, za nas nisu od interesa: raèunar
1634     ih interno koristi za rad sa tastaturom. Informacije sadržane u æelijama &amp;2800
1635     do &amp;2C39 su veoma znaèajne: tu se nalaze sistemske promenljive, video-memorija
1636     (o sistemskim promenljivima i video memoriji æemo govoriti docnije), aritmetièki
1637     akumulatori i stek. Poèev od &amp;2C3A, u memoriju se smešta bejzik program (ukoliko
1638     sadržaj jedne sistemske promenljive nije promenjen, ali i o tome docnije) dok je
1639     kraj memorije rezervisan za nizove: od &amp;37FF (ili &amp;3FFF ako imate RAM od 6
1640     kilobajta) se, unazad prema bejzik programu, smešta alfanumerièki niz X$(I), a
1641     ispod njega numerièki niz A(I). Ukoliko se bejzik program i numerièki niz
1642     &quot;susretnu&quot; na sredini memorije, raèunar ispisuje SORRY i odbija da dodaje nove
1643     elemente numerièkom nizu.</p>
1644     <p>Koristeæi naredbu BYTE možemo da proverimo i, po potrebi, promenimo sadržaj
1645     bilo kog bajta (æelije) memorije. Otkucajmo, na primer, PRINT BYTE (&amp;2BA8) i
1646     pritisnimo uobièajeno RET - na ekranu æe se pojaviti broj 11. To znaèi da æelija
1647     èija je adresa &amp;2BA8 sadrži broj 11 (dekadno). Otkucajmo, dalje, BYTE &amp;2BA8, 12
1648     i primetimo da se slika na našem monitoru pomerila udesno. PRINT BYTE (32BA8) æe
1649     nas uveriti da je prethodna naredba naložila raèunaru da promeni sadržaj æelije
1650     &amp;2BA8 i u nju smesti broj 12 umesto dosadašnjeg 11. Samo pomeranje slike nije
1651     direktno izazvano naredbom BYTE - æelija &amp;2BA8 kazuje raèunaru gde poèinje
1652     slika, pa se promene njenog sadržaja trenutno primeæuju. Pouka je da je vrlo
1653     opasno menjati sadržaje memorije pomoæu BYTE ukoliko taèno ne znamo šta radimo -
1654     greška može da izazove brisanje programa pa èak i blokiranje raèunara posle koga
1655     ni RESET neæe pomoæi - moraæemo da iskljuèimo i ponovo ukljuèimo kompjuter, što
1656     je, kao što znamo, lek za sve probleme. U sadašnjem sluèaju dovoljno je da
1657     otkucamo BYTE &amp;2BA8,11 i sve æe se vratiti u normalno stanje.</p>
1658     <p>Evo još jednog primera upotrebe naredbe BYTE: želimo, na primer da osvetlimo
1659     sve taèke na ekranu. Ako to radimo pomoæu DOT, posao æe potrajati prilièno dugo.
1660     Ako koristimo PRINT, neæemo nikako moæi da osvetlimo poslednji karakter. Na svu
1661     sreæu, program:</p>
1662     <!--mstheme--></font><pre>10 FOR I=&amp;2800 TO &amp;29FF
1663     20 BYTE I, 255: NEXT I</pre><!--mstheme--><font face="Arial">
1664     <p>rešiæe problem u prihvatljivom vremenu. Možemo da izmorimo vreme potrebno za
1665     ovu jednostavnu operaciju (ako ste dobro upoznati raèunar &quot;galaksija&quot;, poveæajte
1666     preciznost merenja koristeæi raèunarev èasovnik) obzirom da æemo isti problem
1667     docnije rešiti i na mašinskom jeziku.</p>
1668     <h4>Nove moguænosti rada sa alfanumericima - naredba PTR</h4>
1669     <p>Izdvajanje slova iz neke alfanumerièke promenljive je do sada bilo skopèano
1670     sa velikim problemima (praktièno nemoguæe), što je onima koji su pisali programe
1671     moralo da priredi dosta neprijatnih trenutaka. Da bi se problemi resili, treba
1672     upoznati naredbu PTR. Izvršimo, na primer, PRINT PTR X$ i na ekranu æe se
1673     pojaviti broj 10864. To znaèi da je promenljiva X$ u memoriji smeštena poèevši
1674     od æelije 10864 (ili, što je isto, &amp;2A70). Znajuæi da alfanumerièka promenljivd
1675     prima 16 slova, zakljuèujemo da æe æelije &amp;2A70 do &amp;2A7F koriste za promenljivu
1676     X$.</p>
1677     <p>Unesimo sledeæi jednostavni program:</p>
1678     <!--mstheme--></font><pre>10 INPUT X$
1679     20 Y$=&quot;&quot;
1680     30 FOR I=0 TO 2
1681     40 BYTE PTR Y$+I, BYTE (PTR X$+I)
1682     50 NEXT I: BYTE (PTR Y$+3), 0</pre><!--mstheme--><font face="Arial">
1683     <p>Startujmo ovaj program i unosimo bilo koju reè koja ima manje od 16 slova.
1684     Trenutak docnije na ekranu æe se pojaviti prva tri slova reci. Èitaoci ovih
1685     redova koji su razumeli rad sa alfanumericima æe primetiti da bi naredbe 40 i 50
1686     mogle da se zameni sa:</p>
1687     <!--mstheme--></font><pre>40 Y$=Y$+CHR$ (BYTE (PTR X$+I): NEXT I</pre><!--mstheme--><font face="Arial">
1688     <p>Naredbu PTR možemo da koristimo i za pronalaženje elemenata numerièkog ili
1689     alfanumerièkog niza ili fiksnih promenljivih. Kao vežbu pokušajte da sastavite
1690     program koji æe sortirati reci po abecednom redu. Problem postaje bitno
1691     složeniji kada posmatramo reèi koje sadrže i slova ÈƊŽ.</p>
1692     <h4>Sistemske promenljive - naredba WORD</h4>
1693     <p>Tabela koja sledi prikazuje mapu sistemskih promenljivih i drugih znaèajnih
1694     memorijskih adresa. Sistemske promenljive oznaèavaju memorijske æelije u koje
1695     raèunar smešta podatke od znaèaja za njegovo normalno funkcionisanje. Jednu od
1696     sistemskih promenljivih smo veæ upoznali - æelija èija je adresa &amp;2BA8 odgovorna
1697     za poziciju slike na ekranu.</p>
1698     <!--mstheme--></font><table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="862" id="AutoNumber3">
1699     <tr>
1700     <td width="80"><!--mstheme--><font face="Arial"><b>Adresa</b><!--mstheme--></font></td>
1701     <td width="87"><!--mstheme--><font face="Arial"><b>Bajta</b><!--mstheme--></font></td>
1702     <td width="123"><!--mstheme--><font face="Arial"><b>Inicijalno</b><!--mstheme--></font></td>
1703     <td width="572"><!--mstheme--><font face="Arial"><b>Sadržaj</b><!--mstheme--></font></td>
1704     </tr>
1705     <tr>
1706     <td width="80"><!--mstheme--><font face="Arial">2800<!--mstheme--></font></td>
1707     <td width="87"><!--mstheme--><font face="Arial">512<!--mstheme--></font></td>
1708     <td width="123"><!--mstheme--><font face="Arial">20<!--mstheme--></font></td>
1709     <td width="572"><!--mstheme--><font face="Arial">Video memorija<!--mstheme--></font></td>
1710     </tr>
1711     <tr>
1712     <td width="80"><!--mstheme--><font face="Arial">2A00<!--mstheme--></font></td>
1713     <td width="87"><!--mstheme--><font face="Arial">104<!--mstheme--></font></td>
1714     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1715     <td width="572"><!--mstheme--><font face="Arial">Numerièke varijable A-Z<!--mstheme--></font></td>
1716     </tr>
1717     <tr>
1718     <td width="80"><!--mstheme--><font face="Arial">2A68<!--mstheme--></font></td>
1719     <td width="87"><!--mstheme--><font face="Arial">2<!--mstheme--></font></td>
1720     <td width="123"><!--mstheme--><font face="Arial">2800<!--mstheme--></font></td>
1721     <td width="572"><!--mstheme--><font face="Arial">Pozicija kurzora u memoriji<!--mstheme--></font></td>
1722     </tr>
1723     <tr>
1724     <td width="80"><!--mstheme--><font face="Arial">2A6A<!--mstheme--></font></td>
1725     <td width="87"><!--mstheme--><font face="Arial">2<!--mstheme--></font></td>
1726     <td width="123"><!--mstheme--><font face="Arial">3800<!--mstheme--></font></td>
1727     <td width="572"><!--mstheme--><font face="Arial">Kraj memorije<!--mstheme--></font></td>
1728     </tr>
1729     <tr>
1730     <td width="80"><!--mstheme--><font face="Arial">2A6C<!--mstheme--></font></td>
1731     <td width="87"><!--mstheme--><font face="Arial">2<!--mstheme--></font></td>
1732     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1733     <td width="572"><!--mstheme--><font face="Arial">Blokiranje dela video memorije<!--mstheme--></font></td>
1734     </tr>
1735     <tr>
1736     <td width="80"><!--mstheme--><font face="Arial">2A6E<!--mstheme--></font></td>
1737     <td width="87"><!--mstheme--><font face="Arial">2<!--mstheme--></font></td>
1738     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1739     <td width="572"><!--mstheme--><font face="Arial">TO registar za FOR-NEXT<!--mstheme--></font></td>
1740     </tr>
1741     <tr>
1742     <td width="80"><!--mstheme--><font face="Arial">2A70<!--mstheme--></font></td>
1743     <td width="87"><!--mstheme--><font face="Arial">16<!--mstheme--></font></td>
1744     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1745     <td width="572"><!--mstheme--><font face="Arial">X$<!--mstheme--></font></td>
1746     </tr>
1747     <tr>
1748     <td width="80"><!--mstheme--><font face="Arial">2A80<!--mstheme--></font></td>
1749     <td width="87"><!--mstheme--><font face="Arial">16<!--mstheme--></font></td>
1750     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1751     <td width="572"><!--mstheme--><font face="Arial">Y$<!--mstheme--></font></td>
1752     </tr>
1753     <tr>
1754     <td width="80"><!--mstheme--><font face="Arial">2A91<!--mstheme--></font></td>
1755     <td width="87"><!--mstheme--><font face="Arial">2<!--mstheme--></font></td>
1756     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1757     <td width="572"><!--mstheme--><font face="Arial">Stek za aktivnu petlju<!--mstheme--></font></td>
1758     </tr>
1759     <tr>
1760     <td width="80"><!--mstheme--><font face="Arial">2A93<!--mstheme--></font></td>
1761     <td width="87"><!--mstheme--><font face="Arial">2<!--mstheme--></font></td>
1762     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1763     <td width="572"><!--mstheme--><font face="Arial">Pozicija tekuæe linije (za vreme FOR-NEXT)<!--mstheme--></font></td>
1764     </tr>
1765     <tr>
1766     <td width="80"><!--mstheme--><font face="Arial">2A95<!--mstheme--></font></td>
1767     <td width="87"><!--mstheme--><font face="Arial">2<!--mstheme--></font></td>
1768     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1769     <td width="572"><!--mstheme--><font face="Arial">Basic pointer (za vreme CALL i FOR-NEXT)<!--mstheme--></font></td>
1770     </tr>
1771     <tr>
1772     <td width="80"><!--mstheme--><font face="Arial">2A99<!--mstheme--></font></td>
1773     <td width="87"><!--mstheme--><font face="Arial">2<!--mstheme--></font></td>
1774     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1775     <td width="572"><!--mstheme--><font face="Arial">16*ARR$+16<!--mstheme--></font></td>
1776     </tr>
1777     <tr>
1778     <td width="80"><!--mstheme--><font face="Arial">2A9B<!--mstheme--></font></td>
1779     <td width="87"><!--mstheme--><font face="Arial">2<!--mstheme--></font></td>
1780     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1781     <td width="572"><!--mstheme--><font face="Arial">Adresa NEXT varijable<!--mstheme--></font></td>
1782     </tr>
1783     <tr>
1784     <td width="80"><!--mstheme--><font face="Arial">2A9D<!--mstheme--></font></td>
1785     <td width="87"><!--mstheme--><font face="Arial">2<!--mstheme--></font></td>
1786     <td width="123"><!--mstheme--><font face="Arial">2C3C<!--mstheme--></font></td>
1787     <td width="572"><!--mstheme--><font face="Arial">TAKE pointer<!--mstheme--></font></td>
1788     </tr>
1789     <tr>
1790     <td width="80"><!--mstheme--><font face="Arial">2A9F<!--mstheme--></font></td>
1791     <td width="87"><!--mstheme--><font face="Arial">2<!--mstheme--></font></td>
1792     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1793     <td width="572"><!--mstheme--><font face="Arial">Pozicija tekuæe linije<!--mstheme--></font></td>
1794     </tr>
1795     <tr>
1796     <td width="80"><!--mstheme--><font face="Arial">2AA1<!--mstheme--></font></td>
1797     <td width="87"><!--mstheme--><font face="Arial">2<!--mstheme--></font></td>
1798     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1799     <td width="572"><!--mstheme--><font face="Arial">Registar za aktivni FOR-NEXT<!--mstheme--></font></td>
1800     </tr>
1801     <tr>
1802     <td width="80"><!--mstheme--><font face="Arial">2AA3<!--mstheme--></font></td>
1803     <td width="87"><!--mstheme--><font face="Arial">2<!--mstheme--></font></td>
1804     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1805     <td width="572"><!--mstheme--><font face="Arial">SP privremeno za aktivni CALL<!--mstheme--></font></td>
1806     </tr>
1807     <tr>
1808     <td width="80"><!--mstheme--><font face="Arial">2AA5<!--mstheme--></font></td>
1809     <td width="87"><!--mstheme--><font face="Arial">2<!--mstheme--></font></td>
1810     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1811     <td width="572"><!--mstheme--><font face="Arial">Diferencijator za tastaturu<!--mstheme--></font></td>
1812     </tr>
1813     <tr>
1814     <td width="80"><!--mstheme--><font face="Arial">2AA7<!--mstheme--></font></td>
1815     <td width="87"><!--mstheme--><font face="Arial">3<!--mstheme--></font></td>
1816     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1817     <td width="572"><!--mstheme--><font face="Arial">RND<!--mstheme--></font></td>
1818     </tr>
1819     <tr>
1820     <td width="80"><!--mstheme--><font face="Arial">2AAC<!--mstheme--></font></td>
1821     <td width="87"><!--mstheme--><font face="Arial">124<!--mstheme--></font></td>
1822     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1823     <td width="572"><!--mstheme--><font face="Arial">Aritmetièki akumulatori (IX)<!--mstheme--></font></td>
1824     </tr>
1825     <tr>
1826     <td width="80"><!--mstheme--><font face="Arial">2BA8<!--mstheme--></font></td>
1827     <td width="87"><!--mstheme--><font face="Arial">1<!--mstheme--></font></td>
1828     <td width="123"><!--mstheme--><font face="Arial">0B<!--mstheme--></font></td>
1829     <td width="572"><!--mstheme--><font face="Arial">Horizontalna pozicija teksta<!--mstheme--></font></td>
1830     </tr>
1831     <tr>
1832     <td width="80"><!--mstheme--><font face="Arial">2BA9<!--mstheme--></font></td>
1833     <td width="87"><!--mstheme--><font face="Arial">3<!--mstheme--></font></td>
1834     <td width="123"><!--mstheme--><font face="Arial">C9<!--mstheme--></font></td>
1835     <td width="572"><!--mstheme--><font face="Arial">Link za naredbe<!--mstheme--></font></td>
1836     </tr>
1837     <tr>
1838     <td width="80"><!--mstheme--><font face="Arial">2BAC<!--mstheme--></font></td>
1839     <td width="87"><!--mstheme--><font face="Arial">3<!--mstheme--></font></td>
1840     <td width="123"><!--mstheme--><font face="Arial">C9<!--mstheme--></font></td>
1841     <td width="572"><!--mstheme--><font face="Arial">Link za video<!--mstheme--></font></td>
1842     </tr>
1843     <tr>
1844     <td width="80"><!--mstheme--><font face="Arial">2BAF<!--mstheme--></font></td>
1845     <td width="87"><!--mstheme--><font face="Arial">1<!--mstheme--></font></td>
1846     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1847     <td width="572"><!--mstheme--><font face="Arial">Ako je bit 7=1, sat radi<!--mstheme--></font></td>
1848     </tr>
1849     <tr>
1850     <td width="80"><!--mstheme--><font face="Arial">2BB0<!--mstheme--></font></td>
1851     <td width="87"><!--mstheme--><font face="Arial">1<!--mstheme--></font></td>
1852     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1853     <td width="572"><!--mstheme--><font face="Arial">Brojaè za pomeranje slike<!--mstheme--></font></td>
1854     </tr>
1855     <tr>
1856     <td width="80"><!--mstheme--><font face="Arial">2BB1<!--mstheme--></font></td>
1857     <td width="87"><!--mstheme--><font face="Arial">1<!--mstheme--></font></td>
1858     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1859     <td width="572"><!--mstheme--><font face="Arial">Flag za pomeranje slike<!--mstheme--></font></td>
1860     </tr>
1861     <tr>
1862     <td width="80"><!--mstheme--><font face="Arial">2BB4<!--mstheme--></font></td>
1863     <td width="87"><!--mstheme--><font face="Arial">1<!--mstheme--></font></td>
1864     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1865     <td width="572"><!--mstheme--><font face="Arial">Registar za REPT<!--mstheme--></font></td>
1866     </tr>
1867     <tr>
1868     <td width="80"><!--mstheme--><font face="Arial">2BB5<!--mstheme--></font></td>
1869     <td width="87"><!--mstheme--><font face="Arial">1<!--mstheme--></font></td>
1870     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1871     <td width="572"><!--mstheme--><font face="Arial">Flag za štampaè<!--mstheme--></font></td>
1872     </tr>
1873     <tr>
1874     <td width="80"><!--mstheme--><font face="Arial">2BB6<!--mstheme--></font></td>
1875     <td width="87"><!--mstheme--><font face="Arial">125<!--mstheme--></font></td>
1876     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1877     <td width="572"><!--mstheme--><font face="Arial">Bafer<!--mstheme--></font></td>
1878     </tr>
1879     <tr>
1880     <td width="80"><!--mstheme--><font face="Arial">2C36<!--mstheme--></font></td>
1881     <td width="87"><!--mstheme--><font face="Arial">2<!--mstheme--></font></td>
1882     <td width="123"><!--mstheme--><font face="Arial">2C3A<!--mstheme--></font></td>
1883     <td width="572"><!--mstheme--><font face="Arial">Pointer poèetka basic-a<!--mstheme--></font></td>
1884     </tr>
1885     <tr>
1886     <td width="80"><!--mstheme--><font face="Arial">2C38<!--mstheme--></font></td>
1887     <td width="87"><!--mstheme--><font face="Arial">2<!--mstheme--></font></td>
1888     <td width="123"><!--mstheme--><font face="Arial">2C3A<!--mstheme--></font></td>
1889     <td width="572"><!--mstheme--><font face="Arial">Pointer kraja basic-a<!--mstheme--></font></td>
1890     </tr>
1891     <tr>
1892     <td width="80"><!--mstheme--><font face="Arial">2C3A<!--mstheme--></font></td>
1893     <td width="87"><!--mstheme--><font face="Arial">??<!--mstheme--></font></td>
1894     <td width="123"><!--mstheme--><font face="Arial">00<!--mstheme--></font></td>
1895     <td width="572"><!--mstheme--><font face="Arial">Basic program<!--mstheme--></font></td>
1896     </tr>
1897     </table><!--mstheme--><font face="Arial">
1898     <p>Veæina sistemskih promenljivih zauzima dva bajta obzirom da se u njima nalaze
1899     adrese nekih drugih delova memorije (sistemska promenljiva koja zauzima æelije
1900     &amp;2C36 i &amp;2C37, na primer, daje adresu poèetka bejzik programa). To znaèi da nam
1901     naredba BYTE pomaže samo posredno: možemo da ispitamo sadržaje obe æelije koje
1902     èine neku sistemsku promenljivu i da ih kombinujemo u jedan broj (u datom
1903     primeru PRINT 256*BYTE (&amp;2C37)+BYTE (&amp;2C36) daje 11322 (isto što i &amp;2C3A) -
1904     adresu poèetka bejzik programa koja se slaže sa mapom). Ovakav naèin, posebno
1905     kada treba promeniti sadržaj neke sistemske promenljive, nije baš prijatan, pa
1906     je &quot;galaksija&quot; opremljena, naredbom WORD koja je namenjena baš radu sa
1907     sistemskim promenljivima.</p>
1908     <p>Naredba WORD je neobièno slièna naredbi BYTE osim u jednoj sitnici: ona
1909     operiše sa dva bajta memorije. Otkucajmo, na primer, PRINT WORD (&amp;2C36) i na
1910     ekranu æe se pojaviti broj 11322 - nikakva konverzija nije bila potrebna.</p>
1911     <p>Otkucajmo, dalje, WORD &amp;2C36, &amp;2D3A: WORD &amp;2C38, &amp;2D3A i pritisnimo RET. Time
1912     smo promenili sadržaj sistemskih promenljivih u kojima raèunar èuva informacije
1913     o poèetku i kraju bejzik programa, pa æe svi bejzik programi koje od tog momenta
1914     kucamo poèinjati 256 bajta više (poèevši od &amp;2D3A). Tako dobijenih 256 bajta
1915     može da se koristi za smeštanje mašinskih programa.</p>
1916     <h4>Mašinski programi - naredba USR</h4>
1917     <p>Raspoloživi prostor nam, na žalost, ne dopušta da se ozbiljno bavimo
1918     mašinskim programiranjem, ali æemo izložiti neke podatke vezane za smeštanje,
1919     snimanje i startovanje mašinskih programa na raèunaru &quot;galaksija&quot; i dati jedan
1920     primer. Za praæenje daljeg teksta je vrlo korisno posedovati spisak instrukcija
1921     procesora Z80A.</p>
1922     <p>Postoje dva mesta koja su &quot;prirodno odreðena&quot; za mašinske programe: jedno je
1923     veæ spomenuto (ispred bejzika), a drugo na vrhu memorije, tamo gde se normalno
1924     nalazi niz X$(I). Prva ideja je, bar po našem mišljenju, pogodnija jer se
1925     mašinski programi snimaju zajedno sa bejzikom (o tome docnije), pa æemo se
1926     zadržati na njoj.</p>
1927     <p>Da bi za mašinski program rezervisali nnnn bajtova, treba da pomerimo poèetak
1928     bejzika. To možemo da uradimo pomoæu naredbe WORD (kao u prethodnom poglavlju),
1929     ali možemo da upotrebimo i novu opciju: NEW nnnn. Primenom ove naredbe briše se
1930     postojeæi bejzik program iz memorije i poèetak svih buduæih bejzik programa
1931     pomera za nnnn bajtova. Mašinski program se, u nedostatku programa koji bi to
1932     olakšao, unosi pomoæu naredbe BYTE, bajt po bajt poèevši od &amp;2C3A. Da vidimo
1933     kako to izgleda na primeru.</p>
1934     <p>Sastaviæemo program koji popunjava ekran punim karakterima i videti koliko je
1935     mašinski jezik brz. Evo programa uz korišæenje standardne mnemonike procesora:</p>
1936     <!--mstheme--></font><pre>2C3A 01 00 02 LD BC, 200H ; treba &quot;osvetliti&quot; &amp;200 bajtova
1937     2C3D 21 OO 28 LD HL, 2800H ; adresa poèetka ekrana
1938     2C40 36 FF CIKL LD (HL), 0FFH ; FF je &quot;pun karakter&quot;
1939     2C42 23 INC HL ; HL se uveæava
1940     2C43 OB DEC BC ; brojaè je umanjen
1941     2C44 CB 78 BIT 7,B ; da li je BC negativan?
1942     2C46 28 F8 JR Z,CIKL ; ako nije, ponavlja se ciklus
1943     2C48 C9 RET ; povratak u BASIC.</pre><!--mstheme--><font face="Arial">
1944     <p>Mašinski program se unosi tako što se najpre otkuca NEW 15 (program ima 15
1945     bajtova). a zatim BYTE &amp;2C3A, &amp;01 RET BYTE &amp;2C3B,&amp;00 RET BYTE&amp;2C3C,&amp;02 RET
1946     BYTE&amp;2C3D,&amp;21 RET itd. Poslednje se kuca BYTE &amp;2C47,&amp;F8 RET BYTE &amp;2C48,&amp;C9 RET
1947     èime je unošenje mašinskog programa završeno. Da bismo ga isprobali, otkucajmo:</p>
1948     <!--mstheme--></font><pre>10 A=USR(&amp;2C3A)
1949     20 GOTO 20</pre><!--mstheme--><font face="Arial">
1950     <p>USR je nova naredba. Ona nalaže raèunaru da izvrši mašinski program èiji se
1951     poèetak nalazi na adresi koja je navedena u zagradi. Po izvršavanju programa
1952     (mašinsko RET, C9) promenljiva A æe dobiti vrednost iz HL registra, što u datom
1953     primeru nije mnogo bitno. Naredba 20 spreèava da se izvršavanje programa prekine
1954     i da izgled ekrana tako bude pokvaren.</p>
1955     <p>Otkucajmo RUN, pritisnimo RET i, ako nije bilo greški u kucanju, ekran æe
1956     biti popunjen taèkama. Uporedimo ovo sa &quot;brzinom&quot; (posle ovakve demonstracije
1957     navodnici su neophodni) bejzik programa koji smo nedavno sastavili pa æe nam
1958     postati jasno zašto se bolji programeri okreæu mašinskom jeziku. Za one koji ne
1959     mogu da se sete kako da izmere vreme izvršavanja mašinskog programa da kažemo da
1960     je ono oko 0.02 sekunde što, u poreðenju sa bejzikom, predstavlja ubrzanje od
1961     oko 580 puta.</p>
1962     <p>Želeli bismo da stimulišemo pisanje programa na mašinskom jeziku. Raèunar
1963     &quot;galaksija&quot; je dobar poligon za njih: taster RESET æe popraviti posledice
1964     najveæeg broja grešaka, tako da neæete morati stalno da unosite program kada
1965     raèunar &quot;krahira&quot;. I pored toga, biæe neophodno da mašinske programe snimate na
1966     kasetu. U tome æe vam pomoæi sledeæe poglavlje.</p>
1967     <h4>Nove moguænosti naredbi SAVE i OLD</h4>
1968     <p>Ako mašinski program unesemo na naèin izložen u prethodnom poglavlju, obièno
1969     SAVE æe, zajedno sa bejzikom, snimiti i sve što se nalazi u memoriji, poèevši od
1970     adrese &amp;2C3A. Ponekad je, ipak, potrebno da na kasetu snimimo proizvoljan
1971     segment memorije. Za to æe nam poslužiti naredba SAVE mmmm, nnnn.</p>
1972     <p>Da bismo, na primer, snimili mašinski program koji se nalazi u æelijama
1973     memorije èije su adrese &amp;3C30 do &amp;3FFF, otkucacemo SAVE &amp;3C30, &amp;3FFF, startovati
1974     snimanje na kasetofonu i pritisnuti RET. Posle toga, ukoliko nam je program
1975     važan, možemo da izvršimo verifikaciju na uobièajeni naèin.</p>
1976     <p>Za uèitavanje koristimo obièno OLD: raèunar æe uèitane bajtove smestiti na
1977     iste adrese na kojima su se nalazili pre snimanja. Ponekad æemo, meðutim,
1978     poželeti da uèitavanje programa zapoènemo odreðen broj bajtova pre ili posle
1979     mesta sa koga su snimljeni (ovo retko ima smisla, jer æe sve JP i CALL mašinske
1980     naredbe neispravno funkcionisati posle pomeranja). Ako, na primer, želimo da
1981     mašinski program bude pomeren naviše za 1024 bajta, otkucacemo OLD 1024 (ili,
1982     što je isto, OLD &amp;400), pritisnuti RET i startovati kasetofon. Da je pomeranje
1983     trebalo da bude negativno (prema poèetku memorije) otkucali bismo OLD -1024.
1984     Obzirom da je ovakvo pomeranje relativno, svaki put kada snimamo neki mašinski
1985     proigram pomoæu SAVE mmmm, nnnn, treba da zapišemo adresu njegovog poèetka i
1986     kraja.</p>
1987     <h4>Potprogrami iz ROM-a</h4>
1988     <p>Èak i dok niste zapoèeli da pišete programe, u vašem raèunaru se nalazio
1989     jedan program i to toliko veliki i moæan da æete slièan moæi da napišete tek kad
1990     postanete daleko iskusniji programer. To je sistemski program od èetiti
1991     kilobajta koji omoguæava raèunaru &quot;galaksija&quot; da radi ono što mu vi nalažete;
1992     taj program omoguæava prevoðenje bejzik naredbi koje unosite na oblik
1993     pristupaèan mašini, izdavanje odgovora na ekranu, rad sa kasetofonom...</p>
1994     <p>U jednom velikom programu, kao u metrou, ima mnogo stranica na kojima možete
1995     da se &quot;ukrcate&quot;, &quot;otputujete negde&quot; i &quot;izaðete&quot;. Poznavanje adresa tih &quot;stanica&quot;
1996     je dovoljno da iskoristite naredbu USR i doðete do njih. Vreme koje nam je bilo
1997     na raspolaganju za pripremanje ovog uputstva kao i njegov obim nam, na žalost,
1998     nisu dopustili da se pozabavimo nabrajanjem interesantnih mašinskih potprograma.
1999     Odabrali smo samo jedan primer, koji æe èitaoca podstaæi na dalja istraživanja
2000     i, istovremeno, poveæati moguænosti raèunara &quot;galaksija&quot;.</p>
2001     <p>U toku rada (osim pri snimanju programa na kasetu) raèunar na ekranu
2002     neprekidno prikazuje sliku na šta se, prirodno, gubi odreðeno vreme. Ponekad nam
2003     je potrebno da izvršimo neki komplikovani proraèun koji odnosi dosta vremena, a
2004     slika nam nije bitna; zar ne bi bilo dobro &quot;iskljuèiti&quot; sliku i smanjiti vreme
2005     izvršavanja programa tri-èetiri puta? Za ovakav ubrzani režim rada poslužiæe nam
2006     naredba A=USR(14) (umesto A možemo da stavimo bilo koju promenljivu, napišemo
2007     PRINT USR(14) i slièno). Povratak u normalan režim rada se postiže naredbom
2008     A=USR(22) ili automatski nastupa po završetku rada programa (taj završetak može
2009     da bude posledica naredbe STOP, pritiska na BRK ili RESET i slièno). Evo i
2010     primera:</p>
2011     <!--mstheme--></font><pre>10 A=USR(14)
2012     20 FOR I=1 TO 10000: NEXT I</pre><!--mstheme--><font face="Arial">
2013     <p>Startujmo program sa RUN, a zatim sa RUN 20 (time ubrzani režim nije
2014     iniciran) i primetimo razlike u vremenu izvršavanja. Za to ne možemo da
2015     koristimo raèunarev interni èasovnik jer je on &quot;iskljuèen&quot; u toku ubrzanog
2016     režima rada.</p>
2017     <h4>Saraðujmo i dalje</h4>
2018     <p>Ovim smo stigli do kraja uputstva za upotrebu raèunara &quot;galaksija&quot;. Ostalo je
2019     još dosta stvari koje nismo pomenuli, &quot;caka&quot; koje ni mi ne poznajemo i, naravno,
2020     bezbroj ideja za programe. Ako ste sastavili raèunar &quot;galaksija&quot; i nauèili da se
2021     služite njime, pošaljite nam barem kratko pismo u kom æete nas obavestiti o tim
2022     èinjenicama. &quot;Galaksija&quot; planira da otvori svoje stranice i posveti redovne
2023     rubrike temama vezanim za raèunar &quot;galaksija&quot;, kao i da u postojeæi katalog
2024     bejzik programa uvrsti što više dobrih programa za njega, koji æe tako biti na
2025     raspolaganju svim korisnicima. Èitava ova akcija zavisi u mnogome i od svakog
2026     èitaoca ovih redova: vi ste ti koji treba da napisu programe i da ih pošalju na
2027     našu adresu. Samo udruženim naporima raèunar &quot;galaksija&quot; može da bude dopunjen
2028     onim što mu trenutno jedino nedostaje - programskom podrškom.</p>
2029     <h4>Mapa memorije</h4>
2030     <!--mstheme--></font><pre>0000-0FFF ROM A
2031     1000-1FFF Mesto za ROM B
2032     2000-2037 Mapirana tastatura
2033     2038-203F Latch
2034     2040-27FF Ponavlja se latch i tastatura 15 puta
2035     2800-2BFF Video RAM
2036     2C00-3FFF RAM na ploèi
2037     4000-FFFF RAM proširenje</pre><!--mstheme--><font face="Arial">
2038     <h4>Spisak naredbi sa primerima</h4>
2039     <!--mstheme--></font><table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="472" id="AutoNumber4">
2040     <tr>
2041     <td width="148"><!--mstheme--><font face="Arial">ARR$<!--mstheme--></font></td>
2042     <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>ARR$(20<span lang="en-us">)</span></pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2043     </tr>
2044     <tr>
2045     <td width="148"><!--mstheme--><font face="Arial">BYTE<span lang="en-us"> </span><!--mstheme--></font></td>
2046     <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>PRINT BYTE(11176)</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2047     </tr>
2048     <tr>
2049     <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2050     <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>BYTE 11176,12</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2051     </tr>
2052     <tr>
2053     <td width="148"><!--mstheme--><font face="Arial">CALL<span lang="en-us"> </span><!--mstheme--></font></td>
2054     <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>CALL 100</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2055     </tr>
2056     <tr>
2057     <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2058     <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>CALL 10*A+100</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2059     </tr>
2060     <tr>
2061     <td width="148"><!--mstheme--><font face="Arial">CHR$<span lang="en-us"> </span><!--mstheme--></font></td>
2062     <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>PRINT CHR$(34)</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2063     </tr>
2064     <tr>
2065     <td width="148"><!--mstheme--><font face="Arial">DOT<span lang="en-us"> </span><!--mstheme--></font></td>
2066     <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>DOT 20,10</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2067     </tr>
2068     <tr>
2069     <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2070     <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>DOT *</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2071     </tr>
2072     <tr>
2073     <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2074     <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>IF DOT 20,10 PRINT &quot;BELO&quot;</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2075     </tr>
2076     <tr>
2077     <td width="148"><!--mstheme--><font face="Arial">EDIT<span lang="en-us"> </span><!--mstheme--></font></td>
2078     <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>EDIT 20</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2079     </tr>
2080     <tr>
2081     <td width="148"><!--mstheme--><font face="Arial">ELSE<span lang="en-us"> </span><!--mstheme--></font></td>
2082     <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>IF B&lt;17 X=1 ELSE GOTO 100</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2083     </tr>
2084     <tr>
2085     <td width="148"><!--mstheme--><font face="Arial">EQ<span lang="en-us"> </span><!--mstheme--></font></td>
2086     <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>IF EQ Y$,X$(5) GOTO 100</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2087     </tr>
2088     <tr>
2089     <td width="148"><!--mstheme--><font face="Arial">FOR<span lang="en-us"> </span><!--mstheme--></font></td>
2090     <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>FOR I=A TO 100</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2091     </tr>
2092     <tr>
2093     <td width="148"