1 |
dpavlin |
119 |
<html> |
2 |
|
|
|
3 |
|
|
<head> |
4 |
|
|
<meta http-equiv="Content-Type" |
5 |
|
|
content="text/html; charset=windows-1250"> |
6 |
|
|
<meta name="GENERATOR" content="Microsoft FrontPage 5.0"> |
7 |
|
|
<title>"Galaksija" - 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 "galaksija" - |
16 |
|
|
Uputstvo za upotrebu</h3> |
17 |
|
|
<h4><i>Dejan Ristanoviæ</i></h4> |
18 |
|
|
<p>Raèunar "galaksija" je, dakle, sastavljen i nalazi se pred vama. Tei i |
19 |
|
|
riskantniji deo posla je time zavren; preostalo vam je da testirate kompjuter i |
20 |
|
|
- uivate 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 |
|
|
uspeno sporazumevali sa raèunarom, morate da uðete u tajne ovog jezika to, kao |
23 |
|
|
to æete videti, nije mnogo teak posao. Ovo uputstvo za upotrebu æe izloiti |
24 |
|
|
sve naredbe koje raèunar "galaksija" 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 "galaksija" 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 |
|
|
"galaksija" razlièite od onih koje su pomenute u koli bejzika. To ne treba da |
30 |
|
|
vas uplai - 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 piete programe pre nego |
34 |
|
|
to ga potpuno proèitate i savladate. Zato su najvaniji oblici naredbi izloeni |
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 "galaksija" moe 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 poveite ga sa antenskim ulazom |
43 |
|
|
u televizor. Zatim ukljuèite televizor, prebacite ga na UHF podruèje i, laganim |
44 |
|
|
okretanjem biraèa kanala, pokuajte da na ekranu dobijete poruku READY (READY |
45 |
|
|
znaèi da je raèunar spreman da primi vae naloge). Kada je ugledate, moete da |
46 |
|
|
uzviknete EUREKA - raèunar radi kako treba!</p> |
47 |
|
|
<p>Èitaoci koji poseduju monitor ili prepravljeni televizor æe poeleti da |
48 |
|
|
poveu 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 "galaksija" ima 54 tastera koji su rasporeðeni poput dirki na pisaæoj |
52 |
|
|
maini. 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 panju na to da li |
58 |
|
|
je neka reè nelogièno "preseèena".</p> |
59 |
|
|
<p>Pritisnite, na primer, taster A dvadesetak puta. Zatim æe vam postati jasno |
60 |
|
|
da veliki broj slova A ne znaèi nita, pa æete poeleti da ih obriete. 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 briuæi automatski slovo na |
63 |
|
|
èije je mesto doao. Uzastopnim pritiscima na ovaj taster moete da obriete 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 izvri. 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 dovrimo neku naredbu ili reèenicu - ako to ne uèinimo, raèunar æe mirno |
78 |
|
|
èekati da neto preduzmemo, ispoljavajuæi pri tom upornost koja daleko |
79 |
|
|
prevazilazi nau.</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 |
|
|
optenje sa poslednjim redom moe nekome da se uèini poniavajuæim - u tom |
83 |
|
|
sluèaju treba da naredimo raèunaru da obrie sadraj èitavog ekrana i poène da |
84 |
|
|
pie 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 traiti na tastaturi: |
87 |
|
|
odnosi se na dva neobeleena 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 montai predvideli dva SHIFT tastera, |
93 |
|
|
moemo da koristimo bilo koji od njih) i ekran æe biti obrisan. Kada nam, dakle, |
94 |
|
|
raèunareve poruke WHAT?, koje su izazvane naim poèetnièkim grekama dosade, |
95 |
|
|
pritisnuæemo SHIFT DEL i obrisati ekran.</p> |
96 |
|
|
<p>Taster SHIFT æe nam otkriti jo neke male tajne raèunara "galaksija". |
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 neto prilièno |
103 |
|
|
èudno - raèunar je poèeo da ispisuje gomile istih slova. Taster REPT dakle, ima |
104 |
|
|
funkciju koju programeri nazivaju "autorepeat" (automatsko ponavljanje) - |
105 |
|
|
pritisak na njega nalae raèunaru da ponavlja funkciju poslednjeg pritisnutog |
106 |
|
|
tastera. Namerno nismo rekli "da ponavlja poslednje slovo": 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 "gutati" slova sve dok ne obrie è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 "slomi"); pritisak na ovaj taster |
113 |
|
|
nalae raèunaru da prekine sa izvravanjem nekog programa i na ekranu ispie |
114 |
|
|
READY. Taster LIST nalae raèunaru da na ekranu prikae sadraj programa koji se |
115 |
|
|
nalazi u njegovoj memoriji, a strelice nemaju neku posebnu funkciju - koriste se |
116 |
|
|
u igrama i raèunar moe da kontrolie da li je neka od njih pritisnuta. Za sada |
117 |
|
|
ne umemo da piemo 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 pie |
120 |
|
|
RESET. Ono predstavlja pojaèanu verziju tastera BRK: ukoliko vam se ikada desi |
121 |
|
|
da se raèunar blokira i otkae poslunost (ovo se deava, ako je raèunar |
122 |
|
|
ispravan, samo kod onih koji piu programe na mainskom 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. Vano je zapamtiti da ni jednom naredbom ili grupom |
127 |
|
|
naredbi raèunar ne moe da bude oteæ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. Pokuajte, na primer, da brzo |
131 |
|
|
pritiskate RESET vie puta, pa lako moe da se desi da memorija raèunara bude |
132 |
|
|
kompletno izbrisana. RESET, dakle, koristite samo kao poslednju soluciju, kada |
133 |
|
|
nikako drukèije ne moete da "probudite" va kompjuter.</p> |
134 |
|
|
<h4>Demo kaseta</h4> |
135 |
|
|
<p>Uz raèunar "galaksija" 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, poveite dek na kome pie 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 |
|
|
dodue, znaèi star, ali neæe naterati raèunar da postane stara i istroena |
141 |
|
|
maina - ono mu jednostavno nalae da sa kasete uèite program koji je ranije |
142 |
|
|
snimljen i pripremi ga za izvravanje. 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 nita, raèunar nije primio program. Bez panike |
145 |
|
|
- to se deava 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 dueg 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 |
|
|
bei) nego æe poèeti sa izvravanjem upravo uèitanog programa. Ne moemo da vam |
152 |
|
|
kaemo ta æe se tada desiti. U okviru prvog programa raèunar æe vas upoznati sa |
153 |
|
|
sadrajem 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 paljivo ih |
158 |
|
|
proèitajte.</p> |
159 |
|
|
<h4>Komandni i programski mod</h4> |
160 |
|
|
<p>Moda æ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 uloeni 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 "RAÈUNAR GALAKSIJA" i pritisnuti RET (navodnici se dobijaju istovremenim |
166 |
|
|
pritiskom na tastere SHIFT i 2, a slovo È pritiskom na SHIFT X). Tako smo |
167 |
|
|
naloili raèunaru da na ekran prenese tekst naveden izmeðu znakova navoda - u |
168 |
|
|
ovom sluèaju RAÈUNAR GALAKSIJA. Moemo da ponavljamo ovu naredbu veæi broj puta |
169 |
|
|
umeæuæi izmeðu znakova navoda bilo koji tekst proizvoljne duine i raèunar æe |
170 |
|
|
biti posluni izvrsilac naih elja. Svaka naredba se analizira i izvrava 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 kontroliemo njegov rad).</p> |
173 |
|
|
<p>Osim komandnog treba da upoznamo programski reim rada. I kod njega raèunaru |
174 |
|
|
izdajemo komande, ali se one ne izvravaju odmah - raèunar ih pamti i izvrava |
175 |
|
|
tek kada mu to bude naloeno. Da bi kompjuter razlikovao komande od naredbi koje |
176 |
|
|
treba da "pamti", 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 naloeno, izvravati "zapamæene" instrukcije. Ovaj |
179 |
|
|
broj treba da se nalazi na samom poèetku linije.</p> |
180 |
|
|
<p>Otkucajmo, na primer, 10 PRINT "RAÈUNAR GALAKSIJA" i pritisnimo RET. Raèunar |
181 |
|
|
nije izvrio naredbu; ona je zapamæena i dodeljen joj je linijski broj 10. |
182 |
|
|
Otkucajmo zatim 20 PRINT "JE MOJ PRVI KOMPJUTER" 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 nalae raèunaru da zapoène sa |
187 |
|
|
izvravanjem programa) i pritisnuti neizbeno RET. Raèunar æe, kao to se i |
188 |
|
|
oèekivalo, izvriti 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 naeg programa veæ uobièajeni signal |
193 |
|
|
da je raèunar spreman da primi sledeæu naredbu. To ponovo moe da bude RUN - |
194 |
|
|
program æe se izvravati onoliko puta koliko poelimo.</p> |
195 |
|
|
<p>Pokuajmo da proirimo program koji smo sastavili i da se uverimo da raèunar |
196 |
|
|
izvrava naredbe po redosledu njihovih brojeva a ne po redu unoenja: otkucajmo |
197 |
|
|
15 PRINT "KONSTRUISAN SEPTEMBRA 1983", 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 "prikai program"). Dok taster LIST drimo |
208 |
|
|
pritisnut, raèunar æe ispisivati program koji se nalazi u njegovoj memoriji, |
209 |
|
|
liniju po liniju. Èim otpustimo ovaj taster, ekran æe se "zamrznuti", 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, moemo da otkucamo reè LIST i pritisnemo |
214 |
|
|
RET. Sve dok je RET pritisnut, prikazivanje programa traje, a otputanje 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 poeleti da prikazujemo program poèevi 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, dodue, nai 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 izvravanje programa ne mora da poène od poèetka: moemo, na primer, da |
224 |
|
|
otkucamo RUN 15 i pritisnemo RET. Raèunar æe poèeti da izvrava 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, poto su sve instrukcije u programu bile valjane. U |
231 |
|
|
buduænosti æemo videti da postoje programi koji ne mogu da se izvravaju 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 greku, ali su rezultati nepredvidljivi.</p> |
235 |
|
|
<p>Unoenje programa i njegovo neprekidno izvravanje je, bez sumnje, lepa |
236 |
|
|
zabava, ali æe nam i ona dosaditi. Kada poelimo da izbriemo otkucani program |
237 |
|
|
iz memorije, moemo 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 |
|
|
brie samo program, ali ne i sadraj ekrana i promenljivih.</p> |
241 |
|
|
<h4>"Galaksija" 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 moe 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 |
|
|
izvreni Umesto 17+13 moemo 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 |
|
|
mnoenje obeleava zvezdicom (*) a deljenje kosom crtom (/) i da se mnoenje ne |
249 |
|
|
podrazumeva: PRINT (12+2)(17+3) bi izazvalo greku, dok bi se PRINT |
250 |
|
|
(17+2)*(17+3) korektno izvrilo. 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>Izvravanje 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 "galaksija" 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 moemo 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 moemo da operiemo 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? - traili smo od njega neto 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, vaiæ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, due se putuje; to je |
279 |
|
|
veæa brzina, kraæe se putuje). No, pre nego to poènemo da piemo program, |
280 |
|
|
pokuaæ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 |
|
|
"Caravelle" 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 uteda. 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 smetanje nekih podataka u memoriju |
295 |
|
|
raèunara. Svaka promenljiva je ime nekog podatka koji docnije moe da bude |
296 |
|
|
pozivan da bi se sa njim raèunalo. Njeno ime moe 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 reenje naeg problema. Razlog je |
301 |
|
|
jednostavan: raèunar "galaksija" jo nije nauèio da èita nae misli i nema |
302 |
|
|
nikakav naèin da zna ta bi trebalo da sadre promenljive S i V. U poèetku rada |
303 |
|
|
one imaju jednaku vrednost (panja: 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 izraeno u èasovima.</p> |
308 |
|
|
<p>Ako elimo da ubrzamo zamiljeni 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 izraava u èasovima, minutima i sekundama. Da prikaemo 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 "galaksijinom" bejziku INT |
318 |
|
|
je funkcija koja izraèunava "ceo deo" 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 napiemo 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 pomnoimo |
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 (moete 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 "ÈASOVA," |
333 |
|
|
55 M=(T-INT(T))*60 |
334 |
|
|
60 M=INT(M) |
335 |
|
|
70 PRINT M |
336 |
|
|
80 PRINT "MINUTA."</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 |
|
|
izvravanju 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 |
|
|
poto modifikujemo prethodni program:</p> |
346 |
|
|
<!--mstheme--></font><pre>10 PRINT "KOLIKO SU MESTA UDALJENA?" |
347 |
|
|
15 INPUT S |
348 |
|
|
20 PRINT "KOLIKA JE BRZINA?" |
349 |
|
|
25 INPUT V</pre><!--mstheme--><font face="Arial"> |
350 |
|
|
<p>Kada raèunar naiðe na naredbu INPUT, privremeno æe da prekine sa izvravanjem |
351 |
|
|
programa i na ekranu ispie 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; moemo 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 naloiti raèunaru da se, po |
369 |
|
|
izvravanju programa i izdavanju rezultata, vrati na poèetak programa i od nas |
370 |
|
|
zatrai nove podatke? Za to æe nam dobro posluiti naredbe bezuslovnog prelaska |
371 |
|
|
(skoka).</p> |
372 |
|
|
<h4>Naredbe bezuslovnog i uslovnog prelaska - GOTO, IF...ELSE, STOP</h4> |
373 |
|
|
<p>Dodajmo naem programu naredbu 90 GOTO 10 (panja: 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 izvravanje linije broj 10. Na ovaj naèin |
379 |
|
|
smo sastavili program koji je "opasan": kada ga jednom startujemo on æe se |
380 |
|
|
neprekidno izvravati, stalno nas pitajuæi za podatke. Kada iscrpimo sve |
381 |
|
|
podatke, izvravanje 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, izvravao liniju broj 15) i uobièajeno |
384 |
|
|
READY. Zatim moemo da otkucamo NEW i tako obriemo program, ali æemo se za sada |
385 |
|
|
uzdrati od toga - program moemo da proirimo upoznajuæi dve nove naredbe.</p> |
386 |
|
|
<p>Naredba GOTO se izvrava uvek na isti naèin - kada raèunar naiðe na nju, |
387 |
|
|
prelazi na izvravanje naredbe èiji je broj naveden iza GOTO (moemo da napiemo |
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 |
|
|
izvrava se naredba STOP i raèunar prestaje sa radom, a ako nije, naredba STOP |
398 |
|
|
biva ignorisana i raèunar prelazi na izvravanje sledeæe naredbe.</p> |
399 |
|
|
<p>Uz IF se èesto koristi i naredba ELSE. Moemo da unesemo novu naredbu 18 koja |
400 |
|
|
glasi:</p> |
401 |
|
|
<!--mstheme--></font><pre>18 IF S=0 STOP: ELSE PRINT "NASTAVLJAM SA RADOM"</pre><!--mstheme--><font face="Arial"> |
402 |
|
|
<p>Ukoliko je S zaista nula, raèunar æe se zaustaviti. Ako nije, raèunar æe |
403 |
|
|
izvriti naredbu iza ELSE, a zatim nastaviti da izvrava program. Dve taèke |
404 |
|
|
ispred ELSE za sada morate da primite "zdravo za gotovo" - njihova uloga æe vam |
405 |
|
|
postati jasna neto kasnije.</p> |
406 |
|
|
<p>Kakav je smisao promena koje su izvrene? Korisniku je sada pruena moguænost |
407 |
|
|
da, kada raèunar trai podatak o rastojanju gradova, otkuca 0 i pritisne RET. |
408 |
|
|
Raèunar æe prestati sa radom i ispisati READY, eliminiuæi potrebu za |
409 |
|
|
pritiskanjem tastera BRK.</p> |
410 |
|
|
<p>Umesto znaka = u pogodbenoj relaciji moe da se naðe znak manje, na primer:</p> |
411 |
|
|
<!--mstheme--></font><pre>IF A<B PRINT "PRVI JE MANJI" : ELSE PRINT "DRUGI JE MANJI ILI SU JEDNAKI"</pre><!--mstheme--><font face="Arial"> |
412 |
|
|
<p>ili veæe:</p> |
413 |
|
|
<!--mstheme--></font><pre>IF X>0 PRINT "BROJ JE POZITIVAN": ELSE PRINT "BROJ JE NEGATIVAN"</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 obriemo suvine 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 naeg programa koja ima |
420 |
|
|
isti broj, zamenivi je besmislenom linijom /17.</p> |
421 |
|
|
<h4>Prijavljivanje greaka</h4> |
422 |
|
|
<p>Veæ smo upoznali poruke WHAT? i HOW? koje bivaju ispisane na ekranu kada |
423 |
|
|
naem kompjuteru "neto nije jasno". Poruka WHAT? se uglavnom odnosi na |
424 |
|
|
sintaksne greke: upotrebili smo naredbu koju na raèunar ne poznaje ili smo |
425 |
|
|
valjanu naredbu napisali na pogrean naèin (PRINT AB, na primer, nema smisla jer |
426 |
|
|
se mnoenje 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 previe |
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 obavetava da je ono to smo elei i da |
433 |
|
|
uèinimo sasvim moguæe i ispravno napisano, ali da est kilobajta (ili vie ako |
434 |
|
|
smo proirili memoriju) nije dovoljno za smetanje potrebnog programa ili |
435 |
|
|
podataka. Ako ovo uputstvo niste èitali "na preskok" upoznavi tako matrice A i |
436 |
|
|
X$, Jedini naèin da na ekranu vidite SORRY je da otkucate neki program koji ima |
437 |
|
|
vie od pet kilobajta (raèunar "galaksija" u osnovnoj verziji ima 6 kilobajta |
438 |
|
|
RAM-a, ali se neto vie od jednog kilobajta koristi za neke interne potrebe |
439 |
|
|
raèunara).</p> |
440 |
|
|
<p>Ukoliko raèunar prijavi greku 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 greku u programu on æe, pored uobièajene |
443 |
|
|
poruke, ispisati èitavu liniju u kojoj je nastupila greka, stavljajuæi znak |
444 |
|
|
pitanja na ono mesto u liniji na kome je naiao na nerazumljiv simbol ili |
445 |
|
|
konstrukciju. Tako ne bi trebalo da bude teko da locirate greku i, |
446 |
|
|
prekucavajuæi liniju ili koristeæi komandu EDIT, dovedete program u ispravno |
447 |
|
|
stanje. U poèetku æete verovatno mnogo greiti kod oblika (sintakse) naredbi, |
448 |
|
|
ali æe se docnije greke svesti na pogreno kucanje i, na alost, logièke greke |
449 |
|
|
(najopasnije su greke koje raèunar ne primeæuje) - program se na prvi pogled |
450 |
|
|
korektno izvrava, ali su dobijeni rezultati pogreni.</p> |
451 |
|
|
<h4>Rad sa kasetofonom - SAVE, OLD i OLD?</h4> |
452 |
|
|
<p>Znanje koje smo stekli nam omoguæava da piemo 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 "galaksija" moe da se povee sa kasetofonom i |
456 |
|
|
snima programe na standardne kasete. Programi snimljeni na kasetu nemaju imena |
457 |
|
|
pa moe 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 sadri komentare koji |
461 |
|
|
su za njega nebitni: pri izvravanju 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. Moemo, na primer, da pre svake grupe naredbi ubacimo |
464 |
|
|
komentar koji objanjava njihovo dejstvo, ali treba imati u vidu da ovakve |
465 |
|
|
naredbe troe 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 dek |
468 |
|
|
sa prikljuèkom MIC na kasetofonu, startujemo snimanje (dirke PLAY i REC), kucamo |
469 |
|
|
SAVE i pritiskamo RET (SAVE znaèi "saèuvaj"). Ekran æe se potpuno zamraèiti i |
470 |
|
|
ovakvo stanje æe potrajati izvesno vreme. Kada raèunar snimi program, ekran æe |
471 |
|
|
oiveti sa novom porukom READY. Saèekajmo jo nekoliko trenutaka i prekinimo |
472 |
|
|
snimanje.</p> |
473 |
|
|
<p>Posle snimanja je vrlo korisno izvriti 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 oteæena (ovo oteæenje moe 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 greka ovog tipa, |
478 |
|
|
moemo da imamo velikih problema: iskljuèimo raèunar i, posle pokuaja da |
479 |
|
|
uèitamo program koji smo razvijali satima ili danima, utvrdimo da je on |
480 |
|
|
nepovratno izgubljen. Ako izvrimo verifikaciju, biæemo upozoreni na problem, pa |
481 |
|
|
æemo moæi da snimimo program na neku drugu kasetu.</p> |
482 |
|
|
<p>Da bismo izvrili 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; teko da ste ikada èuli neprijatnije zujanje) i |
486 |
|
|
zaustavimo ga. Poveimo 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. Moe 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 |
|
|
napie READY. To je znak da je program korektno snimljen i uspeno verifikovan.<br> |
493 |
|
|
</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. Moemo da pokuamo |
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 |
|
|
</li> |
500 |
|
|
<li>Treæa i najneprijatnija moguænost je da se ne dogodi nita - ekran je |
501 |
|
|
neprekidno crn iako je prolo daleko vie 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 |
|
|
pronaao poèetak programa ili da, usled neke pogrene manipulacije sa utikaèima, |
505 |
|
|
nita 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. Moemo da pokuamo novu verifikaciju ili, po potrebi, novo |
508 |
|
|
snimanje.</li> |
509 |
|
|
</ol> |
510 |
|
|
<p>Treæa opcija pri radu sa kasetofonom je unoenje programa sa trake i |
511 |
|
|
verovatno smo je savladali pri koriæenju demo-kasete. Poveimo 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 moemo da ga startujemo sa RUN. No, ako se pre READY nalo |
516 |
|
|
WHAT?, raèunar je primetio greku pri upisu. Moemo da otkucamo LIST (ne |
517 |
|
|
zaboravimo da listanje programa traje samo dok drimo pritisnut taster RET) i |
518 |
|
|
pogledamo na ta program lièi: sasvim je moguæe da su grupe slova promenjene ili |
519 |
|
|
isputene. Najbolje je da u ovakvom sluèaju pokuamo 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 pokuamo da ispravimo program to moe da |
522 |
|
|
bude vrlo neprijatno, pogotovu ako nismo njegov autor. Iz iskustva moemo da |
523 |
|
|
kaemo 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 vaan, eleæemo da eliminiemo 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 |
|
|
predostronosti 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 "po |
531 |
|
|
krugovima": prvi krug predstavlja upoznavanje tastature i rad sa demo-kasetom, |
532 |
|
|
drugi osnove programiranja a treæi, u koji upravo ulazimo, "luksuznije" 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 ispiemo samo jednu reèenicu to je, ako nita drugo, neestetski. U |
537 |
|
|
okviru jedne naredbe PRINT moe da se naðe vie 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 |
|
|
obriimo linije 40, 50, 70 i 80 a zatim otkucajmo:</p> |
546 |
|
|
<!--mstheme--></font><pre>70 PRINT INT(T); "ÈASOVA" ; M; "MINUTA."</pre><!--mstheme--><font face="Arial"> |
547 |
|
|
<p>Izvrimo program i unesimo uobièajene podatke za rastojanje Beograd-Dubrovnik |
548 |
|
|
i brzinu 800 km/h. Na ekranu æe se pojaviti izvetaj:</p> |
549 |
|
|
<!--mstheme--></font><pre>0ÈASOVA 27MINUTA.</pre><!--mstheme--><font face="Arial"> |
550 |
|
|
<p>Nije ba sjajno - redovi vie nisu odvojeni, ali je raèunar oèigledno |
551 |
|
|
preterao sa zbijanjem. Ispred svakog broja je, dodue, ostavljao po jedno prazno |
552 |
|
|
mesto (to mesto, u stvari, nije prazno - na njega bi bio smeten 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), "ÈASOVA,", M, "MINUTA."</pre><!--mstheme--><font face="Arial"> |
556 |
|
|
<p>ali æe tako reèenica biti nelogièno izdeljena na polja. Pravo reenje je |
557 |
|
|
naredba:</p> |
558 |
|
|
<!--mstheme--></font><pre>70 PRINT INT(T); " ÈASOVA"; M; " MINUTA."</pre><!--mstheme--><font face="Arial"> |
559 |
|
|
<p>Upoznavanjem simbola , i ; jo nismo iscrpli sve moguænosti naredbe PRINT: |
560 |
|
|
ona moe da poslui 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 sadraja ekrana. Ovaj efekat se u komandnom modu postie istovremenim |
563 |
|
|
pritiskom na tastere SHIFT i DEL, a u programskom izvravanjem naredbe HOME |
564 |
|
|
(HOME nalae raèunaru da "vrati kurzor kuæi" koja se nalazi u levom gornjem uglu |
565 |
|
|
ekrana. Pritom se èitav sadraj ekrana brie).</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 moe da poène da tampa od |
569 |
|
|
proizvoljnog mesta koje je navedeno iza AT; pun oblik naredbe je, dakle, PRINT |
570 |
|
|
AT 32, "RAÈUNAR GALAKSIJA" - u ovom primeru tekst "raèunar galaksija" se |
571 |
|
|
pojavljuje na poèetku drugog reda, dok sadraj 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 moe lako da poremeti postojeæi sadraj nekog reda. |
575 |
|
|
Da se obezbedimo od toga, zavravaæemo svaku naredbu PRINT znakom ; (piemo, na |
576 |
|
|
primer, PRINT AT 300, "RAÈUNAR";).</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 "pikseli" kojih ima po 64 u svakom od 48 redova. Svaku ovu |
581 |
|
|
taèku (to je, zapravo, kvadratiæ) moemo 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 "taèki" 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 |
|
|
poloaj 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 moe 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 zasluuju 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 izvravanjem programa. Pretpostavimo da nam je potreban |
614 |
|
|
program koji izraèunava faktorijel nekog broja. Faktorijel se definie kao |
615 |
|
|
proizvod svih prirodnih brojeva zakljuèno sa brojem èiji se faktorijel trai |
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 mnoimo ga redom sa 2, 3, 4... sve do nekog n. Ovaj problem |
618 |
|
|
moe, primenom naredbe IF, da se rei 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<<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 |
|
|
zavren. Ovakvo reenje, naravno, moe da se primeni i u mnogo sloenijim |
628 |
|
|
sluèajevima, ali su takvi programi tei 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 olakaju |
632 |
|
|
realizaciju ciklusa. Pre nego to preðemo na njihov detaljan opis, videæemo kako |
633 |
|
|
se prethodni problem reava 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 bre se izvrava. È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, "inicira brojaè" odnosno dodeljuje |
644 |
|
|
promenljivoj I sadraj 1 (da je naredba 30 glasila FOR I=2 TO N promenljivoj bi |
645 |
|
|
bio dodeljen sadraj 2 i tome slièno) i "pamti" mesto na kome je ciklus poèeo. |
646 |
|
|
Izvravanje programa se nastavlja sasvim normalno sve dok raèunar ne naiðe na |
647 |
|
|
naredbu NEXT I ("sledeæe I"). U tom trenutku on dodaje jedan promenljivoj I i |
648 |
|
|
ispituje da li se dolo 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 izvravanje naredbe |
650 |
|
|
60.</p> |
651 |
|
|
<p>U okviru naredbe FOR moe 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 sadraj 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 obeleava 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 figuriu u ovim |
665 |
|
|
naredbama moraju da budu celi brojevi: ako to nisu, raèunar æe sam "odseæi" |
666 |
|
|
decimale. Naredba FOR I=0.5 TO 11.5 STEP 0.5 æe se izvravati 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 "galaksija" 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 generie su, u stvari, pseudosluèajni - rezultat su |
673 |
|
|
komplikovanih operacija nad sadrajima 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. Doao je, dakle, |
681 |
|
|
pravi trenutak da otkrijemo poslednju tajnu tastature naeg raèunara. Pritisnimo |
682 |
|
|
taster DEL i drimo ga pritisnutog. Dogaðaji na ekranu su se najednom "zamrzli" |
683 |
|
|
- izgleda da je izvravanje programa zaustavljeno. Prvi utisak ovde ne vara: |
684 |
|
|
izvravanje programa je zaista zaustavljeno i taj prekid æe trajati sve dok je |
685 |
|
|
taster DEL pritisnut; njegovim otputanjem program nastavlja da se izvrava. |
686 |
|
|
Treba odmah uoèiti razliku izmeðu DEL i BRK: po pritisku na BRK izvravanje |
687 |
|
|
programa je trajno prekinuto i na ekranu pie READY, dok pritisak na DEL samo |
688 |
|
|
zaustavlja rad raèunara koji se nastavlja po otputanju tastera.</p> |
689 |
|
|
<p>Kada znamo kako da prekinemo rad programa, moemo da se usresredimo na |
690 |
|
|
naredbu RND. Na ekranu se nalaze brojevi koje mi unapred ne moemo da predvidimo |
691 |
|
|
- oni su sluèajan izbor vaeg 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 |
|
|
"èoveèe, ne ljuti se" 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 generie 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 |
|
|
obriemo 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 "crtanje po ekranu" i "naredba IF". Ako ga razumete, pokutajte 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 "dinamièka ravnotea" - stanje u kome se |
714 |
|
|
priblino 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 |
|
|
"galaksija", na primer, nije opremljen logaritamskom funkcijom, pa æe mnogi |
718 |
|
|
poeleti 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 |
|
|
poeleti 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 nalae raèunaru da nastavi sa izvravanjem glavnog |
727 |
|
|
programa. U glavnom programu se, kada je god potprogram potreban, pie 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 neto |
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 vie |
739 |
|
|
naredbi razdvojenih znakom : Na ovaj naèin moemo da postupamo kada god elimo |
740 |
|
|
da sledimo memoriju ili kada nam se èini da grupu naredbi treba "spakovati" u |
741 |
|
|
isti red poto predstavljaju logièku celinu. Postoje, ipak, dva razloga zbog |
742 |
|
|
kojih èitav program ne moe da bude smeten u jednu programsku liniju: |
743 |
|
|
maksimalna duina linije koju raèunar "galaksija" moe da primi je èetiri reda, |
744 |
|
|
a naredba koja se ne nalazi na poèetku neke linije ne moe 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 sadraji svih |
753 |
|
|
promenljivih. Razlog je u tome to se ovi sadraji 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 |
|
|
greka i to u naredbi RETURN. Zato? Raèunar je èetiri puta pozvao i izvrio |
758 |
|
|
potprogram i tako zavrio naredbu 40. Posle toga je, jednostavno, poèeo sa |
759 |
|
|
izvravanjem naredbe 100 koja sledi iza nje, jo jednom povukao istu liniju i |
760 |
|
|
naiao na RETURN. Poto potprogram nije pozivan, raèunar nije znao kuda da se |
761 |
|
|
vrati (RETURN = vrati se) pa je prijavio greku.</p> |
762 |
|
|
<p>Prva modifikacija u cilju reavanja 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 izvravanjem programa i izdaje poruku |
765 |
|
|
READY kvareæi tako jedan deo tekom mukom nacrtanog okvira. Zato æemo dodati |
766 |
|
|
naredbu 50 GOTO 50 koja navodi raèunar da se neprekidno vrti u "mrtvoj petlji" |
767 |
|
|
ne kvareæi izgled ekrana (ovo je takozvano "dinamièko zaustavljanje"). Tako |
768 |
|
|
moemo da se divimo uokvirenom ekranu i pritisnemo taster BRK tek kada nam on |
769 |
|
|
dosadi.</p> |
770 |
|
|
<p>U okviru potprograma moe da se pozove sledeæi potprogram, ba kao to u |
771 |
|
|
okviru jednog ciklusa (petlje) moe 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 |
|
|
vie od trinaest nivoa potprograma, ali morate da pazite na poèetnièke greke |
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 greke. Ovakvu greku je |
780 |
|
|
èesto teko 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 greaka u programu koji smo do sada upoznali bio |
784 |
|
|
je prekucavanje linije, to je neekonomièna i neobièno "nervirajuca" solucija (u |
785 |
|
|
to ste se i sami uverili, pogotovu ako ste pisali neki program koji koristi |
786 |
|
|
naredbu PRINT AT). Raèunar "galaksija" 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 brie ekran i u njegovim |
790 |
|
|
prvim redovima ispisuje liniju koju smo poeleli da menjamo. Kurzor se nalazi na |
791 |
|
|
njenom kraju. Koristeæi tastere <font face="Wingdings">ß</font> i |
792 |
|
|
<font face="Wingdings">à </font>moemo da ga pokreæemo u okviru |
793 |
|
|
naredbe sve dok ne doðemo do mesta na kome treba da ispravimo greku. 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èevi od tekuæe pozicije |
797 |
|
|
kurzora. Pri pomeranju kurzora i brisanju pojedinih, delova programske linije, |
798 |
|
|
taster REPT (autorepeat) dolazi do punog izraaja.</p> |
799 |
|
|
<p>Kada smo zavrili sa ispravkama neke linije (nema nikakve prepreke da, u toku |
800 |
|
|
ispravki, nekoliko puta menjamo isti deo linije), moemo da pritisnemo RET i |
801 |
|
|
tako se saglasimo sa izvrenim izmenama ili da pritisnemo BRK i tako naloimo |
802 |
|
|
raèunaru da ignorie 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 doputen). Kada pritisnemo RET, raèunar æe u memoriju |
807 |
|
|
uneti novu programsku liniju dok stara neæe biti ni promenjena ni izbrisana. Ovo |
808 |
|
|
prua moguænost "umnoavanja" 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 smetamo |
812 |
|
|
podatke u memoriju raèunara. Ovi podaci su meðusobno logièki odvojeni: |
813 |
|
|
promenljiva V, na primer, moe 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 |
|
|
sadraj svake promenljive sa sadrajima svih ostalih. Osim toga, ta da radimo |
819 |
|
|
ako treba da sortiramo vie od 26 podataka?</p> |
820 |
|
|
<p>Raèunar "galaksija" moe da radi sa numerièkim nizom A(I) (ne treba ga meati |
821 |
|
|
sa promenljivom A). Elementi ovog niza su A(0), A(1), A(2) itd - njihov broj je |
822 |
|
|
ogranièen jedino raspoloivom memorijom. Iako æemo mapu memorije objaviti tek |
823 |
|
|
docnije, potrebno je da veæ sada u grubim crtama objasnimo razmetaj elemenata |
824 |
|
|
niza A(I) da bi se shvatile njegove promenljive dimenzije. Zamislimo da se od |
825 |
|
|
poèetka memorije prema kraju smeta 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 |
|
|
"susreæu". Raèunar smatra da je BASIC program znaèajniji i ogranièava niz A(I) |
829 |
|
|
tako da popunjava samo slobodan deo memorije. Ukoliko pokuamo 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) raspolaemo? 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, ponajvie zato to u postojeæi bejzik program treba da dodajemo nove |
841 |
|
|
naredbe koje ga nepotrebno produavaju 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 olakati razumevanje rada sa nizom A(I). |
847 |
|
|
Program ureðuje grupu brojeva u rastuæi niz i prikazuje dobijene rezultate. |
848 |
|
|
Koriten 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 "galaksija".</p> |
851 |
|
|
<!--mstheme--></font><pre>10 PRINT "KOLIKO IMA BROJEVA": 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)<<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 "galaksija", 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 smetanje 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 moe da se smesti tekst |
867 |
|
|
koji ima najvie 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 |
|
|
moemo da dodeljujemo vrednosti koriæenjem standardnih bejzik naredbi, pri èemu |
871 |
|
|
ne smemo da zaboravimo da sadraj uvek (osim kod izvravanja naredbe INPUT) |
872 |
|
|
stavljamo izmeðu znakova navoda. Moemo, na primer, da napiemo: |
873 |
|
|
X$="ALFANUMERIK", a zatim PRINT X$ i na ekranu æe se pojaviti reè ALFANUMERIK.</p> |
874 |
|
|
<p>Pored uobièajenog prenoenja sadraja jedne promenljive u drugu (naredba |
875 |
|
|
X$=Y$), raspolaemo 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 moete da dobijete na ekranu i ako izvrite sledeæi BASIC program:</p> |
878 |
|
|
<!--mstheme--></font><pre>10 FOR I=32 TO 255 |
879 |
|
|
20 PRINT I;" ";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">"<!--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">&<!--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"><<!--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">><!--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 sloenih 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 |
|
|
napiemo X$="GALA"+CHR$(75)+"SIJA" 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$="GALAKSIJA"? No, posmatrajmo naredbu |
1147 |
|
|
X$=CHR$(34)+"GALAKSIJA"+CHR$(34). Po njenom izvravanju PRINT X$ daje reè |
1148 |
|
|
"GALAKSIJA" koje se nikako drukèije nije mogla dobiti obzirom da znaci navoda ne |
1149 |
|
|
mogu da budu deo nekog teksta poto oznaèavaju njegov poèetak i kraj.</p> |
1150 |
|
|
<p>U okviru naredbe X$=... moe 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 sadraj promenljive Y$ na |
1153 |
|
|
promenljivu X$, ali æe X$=Y$+X$ izazvati neeljeno ponaanje (probajte!). |
1154 |
|
|
Slièno; moe da se napie Y$=Y$+CHR$(60)+X$ ali ne i Y$=CHR$(99)+Y$+X$.</p> |
1155 |
|
|
<p>Ako nam dve alfanumerièke promenljive nisu dovoljne, moemo da definiemo |
1156 |
|
|
alfanumerièki niz koji se zove X$(I) (ne treba ga, ponovo, meati 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 moe da |
1159 |
|
|
se upotrebi za èuvanje 16 znakova), a zatim moemo da postavljamo i menjamo |
1160 |
|
|
sadraje nekih od tih elemenata, koristeæi ranije izloena pravila za sabiranje |
1161 |
|
|
(nadovezivanje) alfanumerika i funkciju CHR$.</p> |
1162 |
|
|
<p>Ponekad moe da nam zatreba da uporedimo neka dva alafanumerika da bismo |
1163 |
|
|
saznali da li su oni jednaki. Afanumerici se smatraju jednakim ako sadre iste |
1164 |
|
|
znakove na istim mestima i ako su jednake duine. U tom smislu je "ABC"="ABC" |
1165 |
|
|
ali nije "ABC"="ABC ". Za poreðenje alfanumerika koristimo funkciju EQ; |
1166 |
|
|
napiimo:</p> |
1167 |
|
|
<!--mstheme--></font><pre>100 IF EQ Y$,X$(10) GOTO 1000: ELSE PRINT "RAZLIÈITI SU"</pre><!--mstheme--><font face="Arial"> |
1168 |
|
|
<p>i raèunar æe, ako su sadraji 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 |
|
|
Moemo, 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 teko da pravi razliku izmeðu numerièkih i alfanumerièkih |
1173 |
|
|
promenljivih - naredba X$="123" je sasvim razlièita od naredbe X=123. U prvom |
1174 |
|
|
sluèaju smo dobili niz znakova koji ne podlee 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 moe da bude korisno da se alfanumerik koji se sastoji od |
1178 |
|
|
cifara pretvori u broj. Za to nam slui 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 zatrai 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, naiao na naredbu PRINT, naao VAL |
1184 |
|
|
(vrednost) afanumerièke promenljive X$ i dodao joj jedan, dobivi rezultat 26. |
1185 |
|
|
Napominjemo da sintaksa naredbe VAL koja je ovde koriæena ne moe da bude jasna |
1186 |
|
|
èitaocu koji nije èitao "na preskok" 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: moemo kucamo |
1190 |
|
|
èitav izraz, koristeæi imena promenljivih i pazeæi da on nema vie 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 "galaksija" je opremljen vrlo preciznim kvarcnim èasovnikom koji æe, |
1195 |
|
|
po svoj prilici, naæi upotrebu kao toperica. Ovaj èasovnik moe, ako mu to |
1196 |
|
|
naredimo, da prikazuje samo sate i minute, ali moe 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. Napiemo (u komandnom modu ili u |
1200 |
|
|
programu) Y$="21:45:20:50" i pritisnimo RET (ako elimo da èasovnik pokazuje |
1201 |
|
|
samo sate i minute, napisaæemo Y$="21:45" a ako elimo sate, minute i sekunde, |
1202 |
|
|
Y$="21:45:20"; ukoliko elimo da merimo vreme, napisaæemo Y$= "00:00:00:00"). |
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 poelimo 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$="10:15:20:15" (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 reen èasovnik ima tri mane: prva je to se iskljuèivanjem raèunara |
1213 |
|
|
brie 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$ sadri tekuæe vreme, pa æe menjati njen sadraj to moe da |
1217 |
|
|
proizvede neeljene 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 |
|
|
sadraje 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 moe 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 moe 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 vie linija koje poèinju simbolom #. Ovaj simbol obavetava raèunar da se u |
1233 |
|
|
linijama koje ga sadre 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 izvri 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 "zapamtiti" dokle je doao 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 trai, |
1242 |
|
|
raèunar æe prijaviti greku. Obrnuto, ukoliko se ne uèitaju svi podaci iz liste, |
1243 |
|
|
raèunar neæe reagovati, to je i prirodno.</p> |
1244 |
|
|
<p>Ponekad moe 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 zavretku 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 moemo 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 izvrava 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 razmiljanje |
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 "galaksija" |
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">à</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) slui: 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 "PRITISNUO SI A": ELSE GOTO 10</pre><!--mstheme--><font face="Arial"> |
1477 |
|
|
<p>Program se neprekidno izvrava 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 moe |
1481 |
|
|
uneti strelica kao karakteri), pa æe analiza programa sa nje pruiti 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 pridruen 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 izvravati, ali zato |
1487 |
|
|
moe da se napie A=KEY(0). Kada raèunar, u toku izvravanja 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 pridruiti 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 |
|
|
"normalan" rad raèunara. Meðutim, program:</p> |
1496 |
|
|
<!--mstheme--></font><pre>10 X$="" |
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 smeta 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 izloene karakteristike raèunara "galaksija". Njim zapoèinje deo |
1505 |
|
|
koji æe, silom prilika, biti manje jasan i zahtevati vie napora za |
1506 |
|
|
savladavanje. Za to postoje jaki razlozi: programiranje na mainskom jeziku, |
1507 |
|
|
koje elimo da upoznamo, predstavlja vii stupanj i neku vrstu nadgradnje |
1508 |
|
|
bejzlka i nije namenjeno neiskusnim korisnicima. Ovim, naravno, ne elimo nikoga |
1509 |
|
|
da plaimo: mainsko programiranje nije teko; ono zahteva samo malo vie rada i |
1510 |
|
|
nema smisla uputati se u njega dok nismo savladali bejzik.</p> |
1511 |
|
|
<p>Sa mainskim programiranjem, ipak, ne moemo da poènemo ba odmah. Potrebno |
1512 |
|
|
je da upoznamo neke tajne naeg raèunara i shvatimo kako je organizovana njegova |
1513 |
|
|
memorija, kako moemo slobodno da menjamo njen sadraj i kakvim se opasnostima |
1514 |
|
|
pri tome izlaemo. Najpre æemo ppmenuti jednu karakteristiku koja moe u mnogome |
1515 |
|
|
da nam olaksa manipulisanje sa raèunarom: moguænosti skraæivanja naredbi.</p> |
1516 |
|
|
<p>Svaka naredba koju raèunar "galaksija" poznaje i koja ima vise od dva slova |
1517 |
|
|
moe da se skrati. Umesto, na primer, da piemo PRINT 10*2, moemo 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), bre se izvrava i lake 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 "galaksija" je tako koncipiran da svaka |
1524 |
|
|
naredba moe da se skrati to eliminie 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 "galaksija" u ovoj prilici moe ogranièeno da èita vae misli - |
1528 |
|
|
skratite bilo koju naredbu na jedno slovo i on æe pogoditi ta ste eleli da |
1529 |
|
|
uèinite! Objanjenje 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 moe da se naðe. Isto |
1532 |
|
|
tako, RETURN nema smisla u komandnom, a RUN u programskom modu, pa svaka od njih |
1533 |
|
|
moe da se zameni sa R. O svemu ovome ne morate mnogo da mislite: jednostavno |
1534 |
|
|
skratite svaku naredbu koja ima vie 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 <, > i =, svi oni koji su pisali iole sloene 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 izloimo, |
1541 |
|
|
zasluujete sve komplimente i imate sve anse da postanete dobar programer:</p> |
1542 |
|
|
<!--mstheme--></font><pre>10 IF X>Y ELSE GOTO 100</pre><!--mstheme--><font face="Arial"> |
1543 |
|
|
<p>ili, s obzirom na prethodno poglavlje:</p> |
1544 |
|
|
<!--mstheme--></font><pre>10 IFX>YE.G.100</pre><!--mstheme--><font face="Arial"> |
1545 |
|
|
<p>ta se desilo? Ako je X veæe ili jednako Y, odgovor na pitanje "da li je X |
1546 |
|
|
manje od Y" je negativan, pa raèunar izvrava 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 "galaksija" æete primetiti da u mnogim sluèajevima |
1552 |
|
|
neke naredbe mogu da se iskoriste u pojednostavljenom obliku koji nije izloen |
1553 |
|
|
da bi se izbegla konfuzija kod poèetnika. U naem 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 izvri 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 "galaksija" 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. Moemo, isto tako, da |
1562 |
|
|
napiemo 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 bre se izvrava.</p> |
1571 |
|
|
<p>Koristeæi upravo steèena znanja, logièko i æemo lako zamenjivati mnoenjem, a |
1572 |
|
|
logièko ili sabiranjem. Primer naveden tri pasusa ranije moe da se same u |
1573 |
|
|
naredbu:</p> |
1574 |
|
|
<!--mstheme--></font><pre>10 IF (X>Y)*(Z>2) PRINT "USLOV JE ISPUNJEN": ELSE PRINT "USLOV NIJE ISPUNJEN"</pre><!--mstheme--><font face="Arial"> |
1575 |
|
|
<h4>Dalje moguænosti naredbe HOME</h4> |
1576 |
|
|
<p>Naredba HOME nalae raèunara da obrie sadraj ekrana i o njoj se, izgleda, |
1577 |
|
|
ne mora vie razgovarati. No iza HOME moe 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 moe da bude korisno da se jedan |
1582 |
|
|
deo ekrana zatiti od automatskog brisanja. Na tom delu ekrana moe da se naðe |
1583 |
|
|
neki tekst koji u toku èitavog rada programa treba da bude vidljiv (na primer, |
1584 |
|
|
saeto uputstvo za upotrebu kod neke igre). Da bismo, na primer, zatitili prva |
1585 |
|
|
tri reda ekrana, izvriæemo sledeæi jednostavni program:</p> |
1586 |
|
|
<!--mstheme--></font><pre>10 HOME |
1587 |
|
|
20 PRINT "OVI REDOVI": PRINT "SU": PRINT "ZATIÆENI" |
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 "pokretan" samo deo ispod treæeg reda.</p> |
1591 |
|
|
<p>Zatita prvih redova nije potpuna: pomoæu PRINT AT moemo da menjamo njihov |
1592 |
|
|
sadraj, pa èak i da ga obriemo pritisnuvi SHIFT DEL. Meðutim, zona na ekranu |
1593 |
|
|
ostaje zatiæena èak i ako promenimo njen sadraj - automatski scroll (pomeranje |
1594 |
|
|
redova) je ne remeti.</p> |
1595 |
|
|
<p>Postoji jedno ogranièenje, vezano za zatitu 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 bre nego obièno, |
1598 |
|
|
ali æe ga biti tee pratiti obzirom da redovi prebrzo "preleæu" ekran. Ako |
1599 |
|
|
elimo samo da iskljuèimo fini scroll bez zatite dela ekrana, otkucacemo HOME |
1600 |
|
|
512. Ovo stanje, kao i zatita bilo kog dela ekrana, opoziva se sa HOME.</p> |
1601 |
|
|
<h4>Heksadecimalni sistem - oznaka &</h4> |
1602 |
|
|
<p>Za rad sa mainkim 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 "cifre" A, |
1604 |
|
|
B, C. D, E i F. Broj 10 se u heksadekadnom sistemu pie kao 0A ili, jednostavno |
1605 |
|
|
A, 11 je 0B, 12 je 0C, 13 je OD, 14 je 0E, 15 je OF, a 16 se pie kao 10. Ako u |
1606 |
|
|
broju nema slova A, B, C, D, E i F, lako moe da doðe do zabune u kom je sistemu |
1607 |
|
|
pisan. Problem se u programiranju (a ponekad i u matematici) reava tako to se |
1608 |
|
|
ispred heksadekadnog broja stavlja oznaka & (na primer &10, &5A i slièno). Ova |
1609 |
|
|
konvencija je poznata i raèunaru "galaksija" otkucajmo, na primer, PRINT &000A |
1610 |
|
|
(ili samo PRINT &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 napiemo neki dekadni broj, moemo da ga |
1613 |
|
|
zamenimo heksadekadnim pri èemu ispred njega stavljamo znak &. Tako moemo da |
1614 |
|
|
zamenimo naredbu HOME 32 naredbom HOME &20, znajuæi da se u svakom redu nalazi |
1615 |
|
|
po &20 (&20=32) karaktera. Treba voditi raèuna o èinjenici da se oznakom & mogu |
1616 |
|
|
dobiti i negativni brojevi: &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 moe da se proiri do 8 KB a RAM do 6KB; dodavanjem |
1622 |
|
|
posebne ploèice RAM bi mogao da se proiri do 54 kilobajta). ROM i RAM moemo da |
1623 |
|
|
zamislimo kao skup æelija koje su poredane u red i numerisane brojevima od &0000 |
1624 |
|
|
do &FFFF. U svaku æeliju moe da se smesti bilo koji broj izmeðu &00 i &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 &000 do &OFFF) i èine ROM - deo |
1627 |
|
|
memorije u koji je upisan sistemski program koji omoguæava ispravno |
1628 |
|
|
funkcionisanje naeg raèunara. U ostale æelije moemo slobodno da upisujemo |
1629 |
|
|
sadraj koji æe biti interpretiran kao mainski program koji moe da se |
1630 |
|
|
izvrava.</p> |
1631 |
|
|
<p>Adrese &1000 do &1FFF odgovaraju ROM-u koji se ne nalazi u vaem raèunam - to |
1632 |
|
|
je proirenje koje æe jednoga dana biti na raspolaganju. Adrese &2000 do &27FF |
1633 |
|
|
obuhvataju æelije koje, u sadanjoj situaciji, za nas nisu od interesa: raèunar |
1634 |
|
|
ih interno koristi za rad sa tastaturom. Informacije sadrane u æelijama &2800 |
1635 |
|
|
do &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 &2C3A, u memoriju se smeta bejzik program (ukoliko |
1638 |
|
|
sadraj jedne sistemske promenljive nije promenjen, ali i o tome docnije) dok je |
1639 |
|
|
kraj memorije rezervisan za nizove: od &37FF (ili &3FFF ako imate RAM od 6 |
1640 |
|
|
kilobajta) se, unazad prema bejzik programu, smeta alfanumerièki niz X$(I), a |
1641 |
|
|
ispod njega numerièki niz A(I). Ukoliko se bejzik program i numerièki niz |
1642 |
|
|
"susretnu" na sredini memorije, raèunar ispisuje SORRY i odbija da dodaje nove |
1643 |
|
|
elemente numerièkom nizu.</p> |
1644 |
|
|
<p>Koristeæi naredbu BYTE moemo da proverimo i, po potrebi, promenimo sadraj |
1645 |
|
|
bilo kog bajta (æelije) memorije. Otkucajmo, na primer, PRINT BYTE (&2BA8) i |
1646 |
|
|
pritisnimo uobièajeno RET - na ekranu æe se pojaviti broj 11. To znaèi da æelija |
1647 |
|
|
èija je adresa &2BA8 sadri broj 11 (dekadno). Otkucajmo, dalje, BYTE &2BA8, 12 |
1648 |
|
|
i primetimo da se slika na naem monitoru pomerila udesno. PRINT BYTE (32BA8) æe |
1649 |
|
|
nas uveriti da je prethodna naredba naloila raèunaru da promeni sadraj æelije |
1650 |
|
|
&2BA8 i u nju smesti broj 12 umesto dosadanjeg 11. Samo pomeranje slike nije |
1651 |
|
|
direktno izazvano naredbom BYTE - æelija &2BA8 kazuje raèunaru gde poèinje |
1652 |
|
|
slika, pa se promene njenog sadraja trenutno primeæuju. Pouka je da je vrlo |
1653 |
|
|
opasno menjati sadraje memorije pomoæu BYTE ukoliko taèno ne znamo ta radimo - |
1654 |
|
|
greka moe 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 sadanjem sluèaju dovoljno je da |
1657 |
|
|
otkucamo BYTE &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=&2800 TO &29FF |
1663 |
|
|
20 BYTE I, 255: NEXT I</pre><!--mstheme--><font face="Arial"> |
1664 |
|
|
<p>reiæe problem u prihvatljivom vremenu. Moemo da izmorimo vreme potrebno za |
1665 |
|
|
ovu jednostavnu operaciju (ako ste dobro upoznati raèunar "galaksija", poveæajte |
1666 |
|
|
preciznost merenja koristeæi raèunarev èasovnik) obzirom da æemo isti problem |
1667 |
|
|
docnije reiti i na mainskom 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. Izvrimo, na primer, PRINT PTR X$ i na ekranu æe se |
1673 |
|
|
pojaviti broj 10864. To znaèi da je promenljiva X$ u memoriji smetena poèevi |
1674 |
|
|
od æelije 10864 (ili, to je isto, &2A70). Znajuæi da alfanumerièka promenljivd |
1675 |
|
|
prima 16 slova, zakljuèujemo da æe æelije &2A70 do &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$="" |
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 moemo da koristimo i za pronalaenje elemenata numerièkog ili |
1689 |
|
|
alfanumerièkog niza ili fiksnih promenljivih. Kao vebu pokuajte da sastavite |
1690 |
|
|
program koji æe sortirati reci po abecednom redu. Problem postaje bitno |
1691 |
|
|
sloeniji kada posmatramo reèi koje sadre 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 smeta podatke od znaèaja za njegovo normalno funkcionisanje. Jednu od |
1696 |
|
|
sistemskih promenljivih smo veæ upoznali - æelija èija je adresa &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>Sadraj</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 |
|
|
&2C36 i &2C37, na primer, daje adresu poèetka bejzik programa). To znaèi da nam |
1901 |
|
|
naredba BYTE pomae samo posredno: moemo da ispitamo sadraje obe æelije koje |
1902 |
|
|
èine neku sistemsku promenljivu i da ih kombinujemo u jedan broj (u datom |
1903 |
|
|
primeru PRINT 256*BYTE (&2C37)+BYTE (&2C36) daje 11322 (isto to i &2C3A) - |
1904 |
|
|
adresu poèetka bejzik programa koja se slae sa mapom). Ovakav naèin, posebno |
1905 |
|
|
kada treba promeniti sadraj neke sistemske promenljive, nije ba prijatan, pa |
1906 |
|
|
je "galaksija" 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 |
|
|
operie sa dva bajta memorije. Otkucajmo, na primer, PRINT WORD (&2C36) i na |
1910 |
|
|
ekranu æe se pojaviti broj 11322 - nikakva konverzija nije bila potrebna.</p> |
1911 |
|
|
<p>Otkucajmo, dalje, WORD &2C36, &2D3A: WORD &2C38, &2D3A i pritisnimo RET. Time |
1912 |
|
|
smo promenili sadraj 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 vie (poèevi od &2D3A). Tako dobijenih 256 bajta |
1915 |
|
|
moe da se koristi za smetanje mainskih programa.</p> |
1916 |
|
|
<h4>Mainski programi - naredba USR</h4> |
1917 |
|
|
<p>Raspoloivi prostor nam, na alost, ne doputa da se ozbiljno bavimo |
1918 |
|
|
mainskim programiranjem, ali æemo izloiti neke podatke vezane za smetanje, |
1919 |
|
|
snimanje i startovanje mainskih programa na raèunaru "galaksija" 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 "prirodno odreðena" za mainske 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 naem miljenju, pogodnija jer se |
1925 |
|
|
mainski programi snimaju zajedno sa bejzikom (o tome docnije), pa æemo se |
1926 |
|
|
zadrati na njoj.</p> |
1927 |
|
|
<p>Da bi za mainski program rezervisali nnnn bajtova, treba da pomerimo poèetak |
1928 |
|
|
bejzika. To moemo da uradimo pomoæu naredbe WORD (kao u prethodnom poglavlju), |
1929 |
|
|
ali moemo da upotrebimo i novu opciju: NEW nnnn. Primenom ove naredbe brie se |
1930 |
|
|
postojeæi bejzik program iz memorije i poèetak svih buduæih bejzik programa |
1931 |
|
|
pomera za nnnn bajtova. Mainski program se, u nedostatku programa koji bi to |
1932 |
|
|
olakao, unosi pomoæu naredbe BYTE, bajt po bajt poèevi od &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 |
|
|
mainski jezik brz. Evo programa uz koriæenje standardne mnemonike procesora:</p> |
1936 |
|
|
<!--mstheme--></font><pre>2C3A 01 00 02 LD BC, 200H ; treba "osvetliti" &200 bajtova |
1937 |
|
|
2C3D 21 OO 28 LD HL, 2800H ; adresa poèetka ekrana |
1938 |
|
|
2C40 36 FF CIKL LD (HL), 0FFH ; FF je "pun karakter" |
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>Mainski program se unosi tako to se najpre otkuca NEW 15 (program ima 15 |
1945 |
|
|
bajtova). a zatim BYTE &2C3A, &01 RET BYTE &2C3B,&00 RET BYTE&2C3C,&02 RET |
1946 |
|
|
BYTE&2C3D,&21 RET itd. Poslednje se kuca BYTE &2C47,&F8 RET BYTE &2C48,&C9 RET |
1947 |
|
|
èime je unoenje mainskog programa zavreno. Da bismo ga isprobali, otkucajmo:</p> |
1948 |
|
|
<!--mstheme--></font><pre>10 A=USR(&2C3A) |
1949 |
|
|
20 GOTO 20</pre><!--mstheme--><font face="Arial"> |
1950 |
|
|
<p>USR je nova naredba. Ona nalae raèunaru da izvri mainski program èiji se |
1951 |
|
|
poèetak nalazi na adresi koja je navedena u zagradi. Po izvravanju programa |
1952 |
|
|
(mainsko RET, C9) promenljiva A æe dobiti vrednost iz HL registra, to u datom |
1953 |
|
|
primeru nije mnogo bitno. Naredba 20 spreèava da se izvravanje programa prekine |
1954 |
|
|
i da izgled ekrana tako bude pokvaren.</p> |
1955 |
|
|
<p>Otkucajmo RUN, pritisnimo RET i, ako nije bilo greki u kucanju, ekran æe |
1956 |
|
|
biti popunjen taèkama. Uporedimo ovo sa "brzinom" (posle ovakve demonstracije |
1957 |
|
|
navodnici su neophodni) bejzik programa koji smo nedavno sastavili pa æe nam |
1958 |
|
|
postati jasno zato se bolji programeri okreæu mainskom jeziku. Za one koji ne |
1959 |
|
|
mogu da se sete kako da izmere vreme izvravanja mainskog programa da kaemo 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 stimuliemo pisanje programa na mainskom jeziku. Raèunar |
1963 |
|
|
"galaksija" je dobar poligon za njih: taster RESET æe popraviti posledice |
1964 |
|
|
najveæeg broja greaka, tako da neæete morati stalno da unosite program kada |
1965 |
|
|
raèunar "krahira". I pored toga, biæe neophodno da mainske 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 mainski program unesemo na naèin izloen u prethodnom poglavlju, obièno |
1969 |
|
|
SAVE æe, zajedno sa bejzikom, snimiti i sve to se nalazi u memoriji, poèevi od |
1970 |
|
|
adrese &2C3A. Ponekad je, ipak, potrebno da na kasetu snimimo proizvoljan |
1971 |
|
|
segment memorije. Za to æe nam posluiti naredba SAVE mmmm, nnnn.</p> |
1972 |
|
|
<p>Da bismo, na primer, snimili mainski program koji se nalazi u æelijama |
1973 |
|
|
memorije èije su adrese &3C30 do &3FFF, otkucacemo SAVE &3C30, &3FFF, startovati |
1974 |
|
|
snimanje na kasetofonu i pritisnuti RET. Posle toga, ukoliko nam je program |
1975 |
|
|
vaan, moemo da izvrimo 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 |
|
|
poeleti 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 mainske |
1980 |
|
|
naredbe neispravno funkcionisati posle pomeranja). Ako, na primer, elimo da |
1981 |
|
|
mainski program bude pomeren navie za 1024 bajta, otkucacemo OLD 1024 (ili, |
1982 |
|
|
to je isto, OLD &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 mainski |
1985 |
|
|
proigram pomoæu SAVE mmmm, nnnn, treba da zapiemo adresu njegovog poèetka i |
1986 |
|
|
kraja.</p> |
1987 |
|
|
<h4>Potprogrami iz ROM-a</h4> |
1988 |
|
|
<p>Èak i dok niste zapoèeli da piete programe, u vaem raèunaru se nalazio |
1989 |
|
|
jedan program i to toliko veliki i moæan da æete slièan moæi da napiete tek kad |
1990 |
|
|
postanete daleko iskusniji programer. To je sistemski program od èetiti |
1991 |
|
|
kilobajta koji omoguæava raèunaru "galaksija" da radi ono to mu vi nalaete; |
1992 |
|
|
taj program omoguæava prevoðenje bejzik naredbi koje unosite na oblik |
1993 |
|
|
pristupaèan maini, izdavanje odgovora na ekranu, rad sa kasetofonom...</p> |
1994 |
|
|
<p>U jednom velikom programu, kao u metrou, ima mnogo stranica na kojima moete |
1995 |
|
|
da se "ukrcate", "otputujete negde" i "izaðete". Poznavanje adresa tih "stanica" |
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 mainskih potprograma. |
1999 |
|
|
Odabrali smo samo jedan primer, koji æe èitaoca podstaæi na dalja istraivanja |
2000 |
|
|
i, istovremeno, poveæati moguænosti raèunara "galaksija".</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 izvrimo neki komplikovani proraèun koji odnosi dosta vremena, a |
2004 |
|
|
slika nam nije bitna; zar ne bi bilo dobro "iskljuèiti" sliku i smanjiti vreme |
2005 |
|
|
izvravanja programa tri-èetiri puta? Za ovakav ubrzani reim rada posluiæe nam |
2006 |
|
|
naredba A=USR(14) (umesto A moemo da stavimo bilo koju promenljivu, napiemo |
2007 |
|
|
PRINT USR(14) i slièno). Povratak u normalan reim rada se postie naredbom |
2008 |
|
|
A=USR(22) ili automatski nastupa po zavretku rada programa (taj zavretak moe |
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 reim nije |
2014 |
|
|
iniciran) i primetimo razlike u vremenu izvravanja. Za to ne moemo da |
2015 |
|
|
koristimo raèunarev interni èasovnik jer je on "iskljuèen" u toku ubrzanog |
2016 |
|
|
reima rada.</p> |
2017 |
|
|
<h4>Saraðujmo i dalje</h4> |
2018 |
|
|
<p>Ovim smo stigli do kraja uputstva za upotrebu raèunara "galaksija". Ostalo je |
2019 |
|
|
jo dosta stvari koje nismo pomenuli, "caka" koje ni mi ne poznajemo i, naravno, |
2020 |
|
|
bezbroj ideja za programe. Ako ste sastavili raèunar "galaksija" i nauèili da se |
2021 |
|
|
sluite njime, poaljite nam barem kratko pismo u kom æete nas obavestiti o tim |
2022 |
|
|
èinjenicama. "Galaksija" planira da otvori svoje stranice i posveti redovne |
2023 |
|
|
rubrike temama vezanim za raèunar "galaksija", kao i da u postojeæi katalog |
2024 |
|
|
bejzik programa uvrsti to vie 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 poalju na |
2027 |
|
|
nau adresu. Samo udruenim naporima raèunar "galaksija" moe da bude dopunjen |
2028 |
|
|
onim to mu trenutno jedino nedostaje - programskom podrkom.</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 proirenje</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"> <!--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"> <!--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"> <!--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"> <!--mstheme--></font></td> |
2074 |
|
|
<td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>IF DOT 20,10 PRINT "BELO"</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<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"> <!--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"> <!--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"> <!--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>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"> <!--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"> <!--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"> <!--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"> <!--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"> <!--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"> <!--mstheme--></font></td> |
2178 |
|
|
<td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>PRINT A;"*";B;"=";C</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td> |
2179 |
|
|
</tr> |
2180 |
|
|
<tr> |
2181 |
|
|
<td width="148"><!--mstheme--><font face="Arial"> <!--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"> <!--mstheme--></font></td> |
2186 |
|
|
<td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>PRINT "GALAKSIJA"</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"> <!--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"> <!--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"> <!--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"> <!--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"> <!--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,"JANUAR"</pre><!--mstheme--><font face="Arial"><!--mstheme--></font></td> |
2259 |
|
|
</tr> |
2260 |
|
|
<tr> |
2261 |
|
|
<td width="148"><!--mstheme--><font face="Arial">&<span lang="en-us"> </span><!--mstheme--></font></td> |
2262 |
|
|
<td width="324"><!--mstheme--><font face="Arial"><!--mstheme--></font><pre>PRINT &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 |
|
|
<h6>Napomena: Ovaj tekst je unesen sa tampanog teksta iz |
2270 |
|
|
"Raèunara <span lang="en-us">u vaoj kuæi</span>" uz koriæenje OCR |
2271 |
|
|
programa. Molim Vas da mi ukaete na |
2272 |
|
|
<a href="mailto:dejanr@sezam.com?subject=Uputstvo za Galaksiju"> greke</a> |
2273 |
|
|
koje primetite.</h6> |
2274 |
|
|
|
2275 |
|
|
<p> </p> |
2276 |
|
|
<p> </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> |