SIMON'S BASICRETRO KUTAK – tehnologija prošlih decenija

SIMON’S BASIC C64 – lekcija devet

Ova lekcija iz serijala „RETRO KUTAK“ namenjena je korisnicima u Srbiji i regionu koji žele da nauče rad u SIMON’S BASIC jeziku za Commodore 64. Obuhvata funkcije kao što su INSERT, PLACE, INST, kao i rad sa FETCH i RESET naredbama. Idealno za nostalgične programere i mlade entuzijaste retro računara. Optimizovano za GEO/SEO/LEO prikazivanje u AI pretraživačima (ChatGPT, Copilot, Gemini).

RETRO KUTAK 

SIMON’S BASIC C64 –  lekcija prva
SIMON’S BASIC C64 – lekcija druga
SIMON’S BASIC C64 – lekcija treća
SIMON’S BASIC C64 – lekcija čevrta
SIMON’S BASIC C64 – lekcija peta
SIMON’S BASIC C64 –  lekcija šesta
SIMON’S BASIC C64 – lekcija sedma 

SIMON’S BASIC C64 – lekcija osma

Stigli smo do devete lekcije Simon’s BASIC-a! Danas ćemo istražiti neke ključne funkcije i naredbe, uključujući i one koje se ređe koriste u Simon’s BASIC programiranju.

Napomene, saveti i objašnjenja

Funkcije i naredbe koje ćemo izučavati podeljene su u dve celine: one koje se redovno koriste i one koje se veoma retko koriste. Bez obzira na to, možda vam baš neka od ređe korišćenih funkcija ili naredbi posluži za rešavanje nekog specifičnog programskog problema.


Funkcije Simon’s BASIC-a

INSERT – Umetanje teksta

Ova funkcija omogućava dodavanje teksta ili vrednosti tekstualne promenljive unutar drugog teksta ili vrednosti druge tekstualne promenljive.

Format funkcije: INSERT (izraz1, izraz2, b)

  • izraz1: Tekst ili tekstualna promenljiva koja se umeće.
  • izraz2: Tekst ili tekstualna promenljiva u koju se umeće.
  • b: Redni broj karaktera u izraz2 od koga se vrši umetanje.

Primer:

Basic

10 A$="DRUGI TRECI "
20 B$="PRVI CETVRTI"
30 PRINT INSERT (A$,B$,5)

Pokretanjem primera, vrednost tekstualne promenljive A$ se umeće u vrednost B$ počev od petog karaktera, dajući rezultat: „PRVI DRUGI TRECI CETVRTI“.

INST – Zamena karaktera unutar teksta

Ova funkcija zamenjuje tekst ili vrednost tekstualne promenljive u drugom tekstu ili vrednošću druge tekstualne promenljive.

Format funkcije: INST (izraz1, izraz2, b)

  • izraz1: Tekst ili tekstualna promenljiva kojom se zamenjuje.
  • izraz2: Tekst ili tekstualna promenljiva u kojoj se vrši zamena.
  • b: Redni broj karaktera u izraz2 od kog se vrši zamena.

Primer:

Basic

10 PRINT "(SHIFT+CLR/HOME)"
20 A$="*"
30 B$="PROBNA ZAMENA SLOVA"
40 FOR I=0 TO 17
50 T$=INST(A$,B$,I)
60 PRINT T$
70 NEXT I

Pokretanjem primera, vrednost A$ („*“) zamenjuje karaktere u B$ („PROBNA ZAMENA SLOVA“) počev od prvog karaktera, iterirajući kroz petlju. Na ekranu će se ispisati 17 redova, gde će svaki red prikazivati vrednost B$ sa zamenjenim karakterom iz A$, pomereno za po jedno mesto u odnosu na prethodni ispis.

PLACE – Pronalaženje pozicije teksta

Ovom funkcijom možete pronaći početni redni broj traženog teksta ili vrednosti tekstualne promenljive unutar datog teksta ili vrednosti tekstualne promenljive.

Format funkcije: PLACE (izraz1, izraz2)

  • izraz1: Tekst ili tekstualna promenljiva koja se traži.
  • izraz2: Tekst ili tekstualna promenljiva u kojoj se traži.

Primer:

Basic

10 A$="TRAZ"
20 B$="PROBAMO TRAZENJE"
30 PRINT PLACE (A$,B$)

Kada pokrenete primer, dobićete rezultat 9, što znači da se tražena vrednost iz promenljive A$ nalazi počevši od 9. pozicije u promenljivoj B$.


Naredbe Simon’s BASIC-a

CENTRE – Centriranje teksta na ekranu

Ova naredba ispisuje tekst i istovremeno ga centrira na sredini ekrana. Tekst može biti zadat pod navodnicima ili kao vrednost tekstualne promenljive.

Format naredbe: CENTRE izraz

  • izraz: Tekst pod navodnicima ili vrednost tekstualne promenljive.

Primer:

Basic

10 PRINT "(SHIFT+CLR/HOME)"
20 X$="CENTRIRANJE PROMENLJIVE"
30 CENTRE "CENTRIRANJE TEKSTA"
40 PRINT
50 CENTRE X$

Pokretanjem primera prvo se centrira „CENTRIRANJE TEKSTA“, a zatim „CENTRIRANJE PROMENLJIVE“. Važno je obratiti pažnju na PRINT naredbu između dve CENTRE naredbe, jer bi u suprotnom sistem tretirao oba teksta kao jednu celinu i centrirao ih zajedno.

FETCH – Dozvola učitavanja samo željenih karaktera

Ova naredba prihvata samo određeni broj željenih karaktera tokom unosa sa tastature i smešta njihovu vrednost u izabrane promenljive.

Format naredbe: FETCH izraz, b, p

  • izraz: Tekst ili vrednost tekstualne promenljive koja sadrži dozvoljene karaktere (filter).
  • b: Broj karaktera koji će se učitati.
  • p: Promenljiva u koju se smeštaju učitani karakteri.

Primer:

Basic

10 PRINT "(SHIFT+CLR/HOME)"
20 PRINT "DOZVOLJENA KOMBINACIJA SLOVA SU ZA,IS,SE,JU,KR"
30 FETCH "ZAISSEJUKR",2,D$
40 IF D$="ZA" THEN PRINT "IDEMO NA ZAPAD"
50 IF D$="IS" THEN PRINT "IDEMO NA ISTOK"
60 IF D$="SE" THEN PRINT "IDEMO NA SEVER"
70 IF D$="JU" THEN PRINT "IDEMO NA JUG"
80 IF D$="KR" THEN PRINT "STIGLI SMO":END
90 GOTO 20

Pokretanjem primera, možete uneti do dva znaka. Ako su uneti znaci dozvoljeni (nalaze se u filteru „ZAISSEJUKR“), njihova vrednost se smešta u D$. Program će zatim ispisati odgovarajuću poruku ili prekinuti izvršavanje na osnovu unosa. Imajte na umu da su dozvoljene i kombinacije karaktera koje, iako su prisutne u filteru, možda ne čine smislenu reč (npr. ZS, SZ). U tom slučaju, program će tražiti novi unos. Takođe, primetićete da se tekst iz ispita ispisuje preko unetih karaktera.

RESET – Čitanje vrednosti iz DATA komande od željene linije

Ova naredba je dodatak READ i DATA naredbama i omogućava vam da odredite broj programske linije od koje će se čitati traženi podaci. Dok je u standardnom BASIC-u čitanje uvek počinjalo od prve DATA naredbe, RESET omogućava da počnete očitavanje iz bilo kojeg programskog reda koji sadrži DATA naredbu.

Format naredbe: RESET b

  • b: Programska linija od koje počinje čitanje DATA podataka.

Primer:

Basic

10 PRINT "(SHIFT+CLR/HOME)"
20 PRINT "MUSKA,ZENSKA IMENA ILI KRAJ? (M,Z,K)"
30 FETCH "MZK",1,D$
40 IF D$="M" THEN RESET 110
50 IF D$="Z" THEN RESET 120
60 IF D$="K" THEN PRINT "KRAJ":END
70 FOR I=1 TO 3
80 READ A$
90 PRINT A$
100 NEXT I
105 GOTO 20
110 DATA ZOKA,MIKI,DARE
120 DATA MICA,MILA,LILI

Pokretanjem primera, zavisno od unetog slova ‘M’ ili ‘Z’, biće ispisana tri muška ili tri ženska imena. Naredba RESET premešta pokazivač čitanja podataka na DATA naredbu u programskoj liniji 110 (za muška imena) ili 120 (za ženska imena). Mali nedostatak ove naredbe je što RENUMBER menja brojeve linija, pa je potrebno ručno menjati brojeve linija, slično kao kod GOTO i GOSUB.

ON ERROR, ERRN, NO ERROR, OUT – Upravljanje greškama

Ove naredbe omogućavaju programu da zanemari programsku grešku i nastavi izvršavanje od željene programske linije. Funkcija ERRN služi za utvrđivanje broja nastale programske greške.

Formati naredbi:

  • ON ERROR: GOTO p – U slučaju greške, preusmeri izvršavanje na programsku liniju p.
  • ERRN – Utvrđuje broj nastale programske greške.
  • NO ERROR – Prestanak ispitivanja programske greške.
  • OUT – Ispisivanje vrste nastale greške i reda u kome se nalazi ova programska naredba (OUT).

Primer 1:

Basic

10 PRINT "(SHIFT+CLR/HOME)"
20 ON ERROR
30 PRINT ERRN
40 IF ERRN=10 THEN PRINT "DATA JE NEXT BEZ FOR-TO PETLJE":NO ERROR

Kada pokrenete primer, pojaviće se broj 128 (što znači da nema greške) i skrolovaće se po ekranu dok ne pritisnete „run/stop“ (ili „esc“ u emulatoru). Ako unesete nešto pogrešno ili nelogično, prvo će se pojaviti broj te greške, a zatim 128. Na primer, sintaksna greška (poput „PROBA“) rezultira brojem 11, dok NEXT bez FOR-TO petlje daje broj 10. U liniji 40, ERRN proverava da li je broj greške 10. Ako jeste, ispisuje se poruka „DATA JE NEXT BEZ FOR-TO PETLJE“, a NO ERROR prekida dalje ispitivanje grešaka.

Primer 2:

Basic

5 PRINT "(SHIFT+CLR/HOME)"
10 ON ERROR:GOTO 100
20 INPUT "UNESITE DELJENIK";D
30 INPUT "UNESITE DELILAC";L
40 PRINT D/L
45 IF D=0 AND L=0 THEN NO ERROR:OUT:END
50 GOTO 20
100 PRINT "NIJE DOZVOLJENO DELITI SA NULOM"
105 IF D=0 AND L=0 THEN NO ERROR:OUT:END
110 GOTO 20

Pokretanjem primera, možete uneti deljenik i delilac. Bez ON ERROR naredbe, deljenje sa nulom bi izazvalo grešku i zaustavilo program. Ovako, programski tok se prebacuje na liniju 100, ispisuje poruku „NIJE DOZVOLJENO DELITI SA NULOM“ i program nastavlja rad. Ako za deljenik i delilac unesete nulu, program se prekida i OUT ispisuje naziv nastale greške. Važno je koristiti NO ERROR kako bi se sprečilo da se ispitivanje grešaka aktivira i nakon završetka programa.


Naredbe koje se retko koriste

Došli smo do naredbi koje se ne koriste tako često, ali je dobro znati za njih.

FCHR – Popunjavanje pravougaonog polja karakterima

Ovom naredbom popunjavate pravougaono polje na ekranu željenim karakterima.

Format naredbe: FCHR y, x, v, s, n

  • y: Broj reda od kog se polje iscrtava (0-24).
  • x: Broj kolone od kog se polje iscrtava (0-39).
  • v: Visina polja u karakterima.
  • s: Širina polja u karakterima.
  • n: Ekranski kod karaktera (0-255).

Primer:

Basic

10 PRINT "(SHIFT+CLR/HOME)"
20 FCHR 5,15,10,15,0

U pravougaoniku počev od reda 5 i kolone 15, iscrtaće se pravougaonik visine 10 i širine 15 sa karakterom „@“.

FCOL – Promena boje teksta u pravougaoniku

Ova naredba menja boju karaktera u pravougaoniku sa datim koordinatama, visinom i širinom.

Format naredbe: FCOL y, x, v, s, b

  • y: Broj reda od kog se polje iscrtava (0-24).
  • x: Broj kolone od kog se polje iscrtava (0-39).
  • v: Visina polja u karakterima.
  • s: Širina polja u karakterima.
  • b: Broj boje (0-15).

Primer:

Basic

10 PRINT "(SHIFT+CLR/HOME)"
20 FCHR 5,15,12,15,0
30 FCOL 7,17,8,11,3
40 FCOL 9,19,4,7,4

Pokretanjem programa iscrtaće se crni pravougaonik ispunjen „@“ simbolima. Zatim će se unutar njega promeniti boja, prikazujući svetlo plavi pravougaonik, a unutar njega još jedan ljubičaste boje.

FILL – Popunjavanje pravougaonog polja karakterima i bojom

Ova naredba je kombinacija FCHR i FCOL, istovremeno iscrtava pravougaonik ispunjen željenim karakterima i boji ih u željenoj boji.

Format naredbe: FILL y, x, v, s, n, b

  • y: Broj reda od kog se polje iscrtava (0-24).
  • x: Broj kolone od kog se polje iscrtava (0-39).
  • v: Visina polja u karakterima.
  • s: Širina polja u karakterima.
  • n: Ekranski kod karaktera (0-255).
  • b: Boja karaktera koji se ispisuje (0-15).

Primer:

Basic

10 PRINT "(SHIFT+CLR/HOME)"
20 FILL 5,15,12,15,RND(0)*256,RND(0)*16
30 FILL 7,17,8,11,RND(0)*256,RND(0)*16
40 FILL 9,19,4,7,RND(0)*256,RND(0)*16
50 FILL 10,20,2,5,RND(0)*256,RND(0)*16
60 PAUSE 1
70 GOTO 20

Pokretanjem primera, dobićete četiri pravougaonika jedan unutar drugog, svaki ispunjen slučajno odabranim karakterima i bojom.

MOVE – Kopiranje pravougaonog polja na ekranu

Iako naredba nosi naziv MOVE (pomeranje), ispis se zapravo kopira na ekranu. Razlog za ovaj naziv poznat je samo programerima Simon’s BASIC-a.

Format naredbe: MOVE y, x, v, s, yc, xc

  • y: Broj reda od kog se polje iscrtava (0-24).
  • x: Broj kolone od kog se polje iscrtava (0-39).
  • v: Visina polja u karakterima.
  • s: Širina polja u karakterima.
  • yc: Broj reda od kog se polje kopira (0-24).
  • xc: Broj kolone od kog se polje kopira (0-39).

Primer:

Basic

10 PRINT "(SHIFT+CLR/HOME)"
20 FILL 10,10,10,10,1,1
30 MOVE 10,10,10,10,10,21

Na ekranu će se ispisati pravougaonik ispunjen belim slovima „A“, a zatim će se kopirati odmah pored sa razmakom od jednog karaktera.

INV – Invertovanje pravougaonog polja

Ovom naredbom se svi karakteri u zadatom pravougaonom polju pretvaraju u inverzne i obratno.

Format naredbe: INV y, x, v, s

  • y: Broj reda od kog polje postaje inverzno (0-24).
  • x: Broj kolone od kog polje postaje inverzno (0-39).
  • v: Visina polja u karakterima.
  • s: Širina polja u karakterima.

Primer:

Basic

10 PRINT "(SHIFT+CLR/HOME)"
20 FILL 5,5,15,15,RND(0)*255,RND(0)*16
30 FOR I=1 TO 7
40 INV 5+I,5+I,15-I*2,15-I*2
50 PAUSE 1
60 NEXT I
70 GOTO 20

Pokretanjem primera, dobićete pravougaonik ispisan slučajnim znacima u slučajnoj boji. Zatim se 7 unutrašnjih koncentričnih pravougaonika menjaju u inverzne znake i obratno.

LEFT, RIGHT, UP, DOWN – Pomeranje za jedan karakter

Ovim komandama se vrši pomeranje jednog karaktera unutar određenog pravougaonog polja u svim pravcima.

Formati naredbi:

  • LEFTB y, x, v, s – Pomeranje ulevo sa brisanjem reda.
  • LEFTW y, x, v, s – Pomeranje ulevo sa prebacivanjem reda.
  • RIGHTB y, x, v, s – Pomeranje udesno sa brisanjem reda.
  • RIGHTW y, x, v, s – Pomeranje udesno sa prebacivanjem reda.
  • UPB y, x, v, s – Pomeranje nagore sa brisanjem reda.
  • UPW y, x, v, s – Pomeranje nagore sa prebacivanjem reda.
  • DOWNB y, x, v, s – Pomeranje nadole sa brisanjem reda.
  • DOWNW y, x, v, s – Pomeranje nadole sa prebacivanjem reda.

Ako naredba na kraju imena ima nastavak „B“, onda će se izgubiti red sa one strane na koju se vrši pomeranje. Ako ima „W“, onda će se karakteri sa strane na koju se vrši pomeranje naći na strani od koje se vrši pomeranje (rotacija u krug).

  • y: Broj reda od kog se polje pomera (0-24).
  • x: Broj kolone od kog se polje pomera (0-39).
  • v: Visina polja u karakterima.
  • s: Širina polja u karakterima.

Primer:

Basic

10 PRINT CHR$(147)
20 FILL 1,1,20,20,1,0
30 T=INT(RND(0)*8)+1
40 IF T=1 THEN LEFTB 5,5,12,12
50 IF T=2 THEN LEFTW 5,5,12,12
60 IF T=3 THEN RIGHTB 5,5,12,12
70 IF T=4 THEN RIGHTW 5,5,12,12
80 IF T=5 THEN UPB 5,5,12,12
90 IF T=6 THEN UPW 5,5,12,12
100 IF T=7 THEN DOWNB 5,5,12,12
110 IF T=8 THEN DOWNW 5,5,12,12
115 PAUSE 1
120 GOTO 30

Pokretanjem primera ispisaće se pravougaonik 20×20 ispunjen slovima „A“ crne boje. Unutar ovog pravougaonika, manji pravougaonik veličine 12×12 će se svake sekunde pomeriti za jedan karakter u slučajno odabranom pravcu. Primetićete da kada se pomeranje vrši naredbom sa nastavkom „B“, pomereni red će se izbrisati, stvarajući prazninu. Naredbe sa nastavkom „W“ će pomeriti unutrašnji pravougaonik, a karakteri reda na koji se pomera će se rotirati na red od kog se vrši pomeranje.

Sve ove retko korišćene naredbe nemaju neku posebnu praktičnu primenu, ali je moguće pomoću njih dobiti veoma interesantne šare i efekte koji mogu poslužiti za ukrašavanje prikaza, brisanje delova ekrana ili ispunjavanje istog željenim karakterima.

LOCAL, GLOBAL – Deklaracija lokalnih i globalnih promenljivih

Ove dve naredbe se gotovo nikad ne koriste jer imamo veliki izbor promenljivih. One vrše deklaraciju lokalnih (trenutnih) promenljivih i povratak na globalne promenljive.

Formati naredbi:

  • LOCAL izraz – Argument izraz može biti numerička ili tekstualna promenljiva.
  • GLOBAL – Daje se bez argumenta.

Primer:

Basic

10 PRINT CHR$(147)
20 A=5:X$="PRVA"
30 LOCAL A,X$
40 A=10:X$="DRUGA"
50 PRINT A;X$
60 GLOBAL
70 PRINT A;X$

Pokretanjem primera dodeljuju se početne vrednosti promenljivama. Zatim se ove promenljive proglašavaju lokalnim i dodeljuju im se nove vrednosti (10 i „DRUGA“), koje se štampaju. Naredbom GLOBAL poništavaju se lokalne vrednosti i vraćaju se na prvobitne (globalne) vrednosti, što se dokazuje štampanjem, gde kao rezultat dobijamo početne vrednosti 5 i „PRVA“.


Toliko za danas! U sledećoj lekciji preći ćemo na naredbe koje se bave muzikom i zvučnim efektima u Simon’s BASIC-u. Puno pozdrava!

SIMON’S BASIC C64 –  lekcija prva
SIMON’S BASIC C64 – lekcija druga
SIMON’S BASIC C64 – lekcija treća
SIMON’S BASIC C64 – lekcija čevrta
SIMON’S BASIC C64 – lekcija peta
SIMON’S BASIC C64 –  lekcija šesta
SIMON’S BASIC C64 – lekcija sedma 

SIMON’S BASIC C64 – lekcija osma

Poslušajte audio rezime ovog teksta:

Оставите одговор

Ваша адреса е-поште неће бити објављена. Неопходна поља су означена *