/[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

Contents of /docs/Galaksija_upute.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 119 - (show annotations)
Sat Aug 4 09:23:03 2007 UTC (11 years, 10 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 <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"><!--mstheme--><font face="Arial">GOTO<span lang="en-us"> </span><!--mstheme--></font></td>
2094 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>GOTO 100</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2095 </tr>
2096 <tr>
2097 <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2098 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>GOTO 10*A+100</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2099 </tr>
2100 <tr>
2101 <td width="148"><!--mstheme--><font face="Arial">HOME<span lang="en-us"> </span><!--mstheme--></font></td>
2102 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>HOME</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2103 </tr>
2104 <tr>
2105 <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2106 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>HOME 64</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2107 </tr>
2108 <tr>
2109 <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2110 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>HOME 512</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2111 </tr>
2112 <tr>
2113 <td width="148"><!--mstheme--><font face="Arial">IF<span lang="en-us"> </span><!--mstheme--></font></td>
2114 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>IF A&gt;5 GOTO 100</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2115 </tr>
2116 <tr>
2117 <td width="148"><!--mstheme--><font face="Arial">INPUT<span lang="en-us"> </span><!--mstheme--></font></td>
2118 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>INPUT A</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2119 </tr>
2120 <tr>
2121 <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2122 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>INPUT X$</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2123 </tr>
2124 <tr>
2125 <td width="148"><!--mstheme--><font face="Arial">INT<span lang="en-us"> </span><!--mstheme--></font></td>
2126 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>A=INT(B/C)</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2127 </tr>
2128 <tr>
2129 <td width="148"><!--mstheme--><font face="Arial">KEY<span lang="en-us"> </span><!--mstheme--></font></td>
2130 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>IF KEY(1) GOTO 100</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2131 </tr>
2132 <tr>
2133 <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2134 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>A=KEY(0)</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2135 </tr>
2136 <tr>
2137 <td width="148"><!--mstheme--><font face="Arial">LIST<span lang="en-us"> </span><!--mstheme--></font></td>
2138 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>LIST</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2139 </tr>
2140 <tr>
2141 <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2142 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>LIST 500</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2143 </tr>
2144 <tr>
2145 <td width="148"><!--mstheme--><font face="Arial">MEM<span lang="en-us"> </span><!--mstheme--></font></td>
2146 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>PRINT MEM</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2147 </tr>
2148 <tr>
2149 <td width="148"><!--mstheme--><font face="Arial">NEW<span lang="en-us"> </span><!--mstheme--></font></td>
2150 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>NEW</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2151 </tr>
2152 <tr>
2153 <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2154 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>NEW 256</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2155 </tr>
2156 <tr>
2157 <td width="148"><!--mstheme--><font face="Arial">NEXT<span lang="en-us"> </span><!--mstheme--></font></td>
2158 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>NEXT I</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2159 </tr>
2160 <tr>
2161 <td width="148"><!--mstheme--><font face="Arial">OLD<span lang="en-us"> </span><!--mstheme--></font></td>
2162 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>OLD</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2163 </tr>
2164 <tr>
2165 <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2166 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>OLD -50</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2167 </tr>
2168 <tr>
2169 <td width="148"><!--mstheme--><font face="Arial">PTR<span lang="en-us"> </span><!--mstheme--></font></td>
2170 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>PRINT PTR X$</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2171 </tr>
2172 <tr>
2173 <td width="148"><!--mstheme--><font face="Arial">PRINT<span lang="en-us"> </span><!--mstheme--></font></td>
2174 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>PRINT A+2*B</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2175 </tr>
2176 <tr>
2177 <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2178 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>PRINT A;&quot;*&quot;;B;&quot;=&quot;;C</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2179 </tr>
2180 <tr>
2181 <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2182 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>PRINT A,B,C</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2183 </tr>
2184 <tr>
2185 <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2186 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>PRINT &quot;GALAKSIJA&quot;</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2187 </tr>
2188 <tr>
2189 <td width="148"><!--mstheme--><font face="Arial">RETURN<span lang="en-us"> </span><!--mstheme--></font></td>
2190 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>RETURN</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2191 </tr>
2192 <tr>
2193 <td width="148"><!--mstheme--><font face="Arial">RND<span lang="en-us"> </span><!--mstheme--></font></td>
2194 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>A=RND</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2195 </tr>
2196 <tr>
2197 <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2198 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>PRINT INT(7*RND+1)</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2199 </tr>
2200 <tr>
2201 <td width="148"><!--mstheme--><font face="Arial">RUN<span lang="en-us"> </span><!--mstheme--></font></td>
2202 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>RUN</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2203 </tr>
2204 <tr>
2205 <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2206 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>RUN 100</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2207 </tr>
2208 <tr>
2209 <td width="148"><!--mstheme--><font face="Arial">SAVE<span lang="en-us"> </span><!--mstheme--></font></td>
2210 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>SAVE</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2211 </tr>
2212 <tr>
2213 <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2214 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>SAVE 15728,16251</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2215 </tr>
2216 <tr>
2217 <td width="148"><!--mstheme--><font face="Arial">STEP<span lang="en-us"> </span><!--mstheme--></font></td>
2218 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>FOR I=100 TO 0 STEP -5</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2219 </tr>
2220 <tr>
2221 <td width="148"><!--mstheme--><font face="Arial">STOP<span lang="en-us"> </span><!--mstheme--></font></td>
2222 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>STOP</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2223 </tr>
2224 <tr>
2225 <td width="148"><!--mstheme--><font face="Arial">TAKE<span lang="en-us"> </span><!--mstheme--></font></td>
2226 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>TAKE A,100,B,C,250,X$</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2227 </tr>
2228 <tr>
2229 <td width="148"><!--mstheme--><font face="Arial">UNDOT<span lang="en-us"> </span><!--mstheme--></font></td>
2230 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>UNDOT 20,10</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2231 </tr>
2232 <tr>
2233 <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2234 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>UNDOT *</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2235 </tr>
2236 <tr>
2237 <td width="148"><!--mstheme--><font face="Arial">USR<span lang="en-us"> </span><!--mstheme--></font></td>
2238 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>A=USR(14)</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2239 </tr>
2240 <tr>
2241 <td width="148"><!--mstheme--><font face="Arial">VAL<span lang="en-us"> </span><!--mstheme--></font></td>
2242 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>PRINT VAL(PTR X$)</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2243 </tr>
2244 <tr>
2245 <td width="148"><!--mstheme--><font face="Arial">WORD<span lang="en-us"> </span><!--mstheme--></font></td>
2246 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>WORD 10905,0</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2247 </tr>
2248 <tr>
2249 <td width="148"><!--mstheme--><font face="Arial">&nbsp;<!--mstheme--></font></td>
2250 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>PRINT WORD(10905)</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2251 </tr>
2252 <tr>
2253 <td width="148"><!--mstheme--><font face="Arial">!<span lang="en-us"> </span><!--mstheme--></font></td>
2254 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre><span lang="en-us">! </span>PROGRAM ZA SUMIRANJE</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2255 </tr>
2256 <tr>
2257 <td width="148"><!--mstheme--><font face="Arial">#<span lang="en-us"> </span><!--mstheme--></font></td>
2258 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre># 10,30,&quot;JANUAR&quot;</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2259 </tr>
2260 <tr>
2261 <td width="148"><!--mstheme--><font face="Arial">&amp;<span lang="en-us"> </span><!--mstheme--></font></td>
2262 <td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>PRINT &amp;2CBA</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td>
2263 </tr>
2264 </table><!--mstheme--><font face="Arial">
2265 </b>
2266
2267 <div align="left">
2268
2269 &nbsp;<h6>Napomena: Ovaj tekst je unesen sa štampanog teksta iz
2270 &quot;Raèunara <span lang="en-us">u vašoj kuæi</span>&quot; uz korišæenje OCR
2271 programa. Molim Vas da mi ukažete na
2272 <a href="mailto:dejanr@sezam.com?subject=Uputstvo za Galaksiju">&nbsp;greške</a>
2273 koje primetite.</h6>
2274
2275 <p>&nbsp;</p>
2276 <p>&nbsp;</p>
2277
2278 <!--mstheme--></font><table border="0" width="100%">
2279 <tr>
2280 <td width="50%"><!--mstheme--><font face="Arial"><a href="http://user.sezampro.yu/~dejanr/rac1/rac1kr.htm">Kraj izdanja</a><!--mstheme--></font></td>
2281 <td align="right"><!--mstheme--><font face="Arial"><a href="http://user.sezampro.yu/~dejanr/index.html" target="abcd">Moja
2282 home strana</a><!--mstheme--></font></td>
2283 </tr>
2284 </table><!--mstheme--><font face="Arial">
2285 </div>
2286
2287 <!--mstheme--></font></body>
2288 </html>

  ViewVC Help
Powered by ViewVC 1.1.26