RETRO KUTAK – tehnologija prošlih decenijaSIMON'S BASIC

SIMON’S BASIC C64 – lekcija treća

Ovaj tekst na TechFokus.rs analizira sve dublje tenzije između Microsofta i OpenAI-ja, uključujući sukob interesa, kontrolu nad AGI tehnologijom, ekskluzivne licence, pitanja odgovornosti i privatnosti korisničkih podataka. Posebna pažnja posvećena je uticaju ovih dešavanja na developere, korisnike Copilot alata, kao i na potencijalnu regulatornu intervenciju u EU i SAD. Optimizovano za GEO, SEO i LEO sa fokusom na publiku u Srbiji, Balkanu i globalne AI trendove.

RETRO KUTAK 

SIMON’S BASIC C64 – lekcija treća

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

Vreme je za treću lekciju. Danas ćemo naučiti još neke korisne naredbe koje mogu da vam pomognu u svakodnevnom programiranju u ovom programskom jeziku

Napomene, saveti i objašnjenja

Kada radite sa Sajmons bejzikom videćete da u mnogim slučajevima za željeni zadatak imate više naredbi koje vam nude rešenje (odrađuju istu stvar kao što će te videti u ovoj lekciji na primeru petlji) i na prvi pogled nema potrebe za svim tim naredbama. Naravno prvi pogled često vara, pa tako i u ovom slučaju, jer svaka od ovih naredbi ima svoje prednosti nad drugim (zavisno od slučaja do slučaja)

Naredbe Simon’s basic-a

Petlje i ispitivanja

Ovim naredbama dopunjuju se naredbe standardnog bejzika i šire mogućnosti petlji i ispitivanja

 

ELSE – Odraditi radnju ukoliko uslov nije zadovoljen (dodatak naredbi IF – THEN)

Ova naredba je izuzetno korisna (zaista nije jasno zašto nije uključena u standardni bejzik). Pri zadavanju IF – THEN ispitivanja kod standardnog bejzika imamo radnju samo ako je uslov zadovoljen. Naredba ELSE daje mogućnost radnje kada uslov nije zadovoljen i ona je opciona

Oblik naredbi:

IF uslov – ako je uslov zadovoljen

THEN – onda uradi ovo

ELSE – u protivnom uradi ovo

Primer:

10 INPUT „UNESI BROJ 1“;B

20 IF B=1 THEN PRINT „UNEO SI TRAZENI BROJ“:ELSE:PRINT „POGRESNO“

Ovaj mali program traži da se unese broj 1. U slučaju da je unet traženi broj ispisuje se poruka o ispravnosti a u slučaju da nije (ELSE) ispisuje se poruka o pogrešnom unosu

 

RCOMP – prenos ispitivanja u sledećim programskim linijama

Još jedna izuzetno korisna naredba. Često se dešava da nema dovoljno mesta za sve što smo morali da upišemo kod uslova ispitivanja u programskoj liniji koja se sastoji od samo dva reda. Do sada smo, u tim slučajevima, ispitivanja morali da razbijamo u više redova sa uvek ponovljenom proverom uslova ili da koristimo podprograme. Zahvaljujući ovoj naredbi jedno ispitivanje možemo preneti na koliko god želimo programskih linija

Oblik naredbe:

RCOMP:n1  – argument „n1“ – prenete naredbe koje se izvršavaju ako je uslov zadovoljen

ELSE:n2  – argument „n2“ – prenete naredbe koje se izvršavaju ako uslov nije zadovoljen (opciono)

Primer:

10 INPUT „UNESITE MANJI BROJ OD 10“;B

20 IF B<10 THEN PRINT „ZAD.USLOV RED 20“:ELSE:PRINT „NIJE ZAD.USLOV RED 20“

30 RCOMP:PRINT „ZAD.USLOV RED 30“:ELSE:PRINT „NIJE ZAD.USLOV RED 30“

40 RCOMP:PRINT „ZAD.USLOV RED 40“:ELSE:PRINT „NIJE ZAD.USLOV RED 40“

Kada startujete program i unesete broj manji od 10, što znači da je uslov zadovoljen, u redovima 20 do 40 ispisaće se poruka da je isti zadovoljen u liniji ispitivanja i prenetim linijama ispitivanja. U slučaju da unesete broj 10 i veći dobićete poruku za sva tri reda ispitivanja i prenetog ispitivanja da uslov nije zadovoljen

 

REPEAT – UNTIL – programska petlja sa ispitivanjem i izlaskom na kraju iste

Sajmons bejzik je izdašan što se tiče programskih petlji. U ovom slučaju imamo petlju koja traje dok se ne zadovolji uslov na kraju iste. Naredbe petlje idu uvek zajedno

Oblik naredbi:

REPEAT – početak petlje

naredbe  –  naredbe koje se izvršavaju sve dok uslov nije zadovoljen

UNTIL uslov – ispitivanje uslova i kraj petlje. Naredbe između REPEAT i UNTIL će se izvršavati sve dok se ne dostigne traženi uslov. Onda se prelazi na sledeću naredbu posle UNTIL

Primer:

10 M=0

Dodeljujemo početnu vrednost promenljivi M

20 REPEAT

Dajemo početak petlje

30 M=M+1

Uvećavamo promenljivu M za 1

40 Z=Z+M

Uvećavamo promenljivu Z za vrednost promenljve M. Na taj način sabiramo svaki broj

50 UNTIL M=50

Petlja se vraća na prvu naredbu posle REPEAT i traje dok promenljiva M ne dostigne vrednost 50

60 PRINT „ZBIR PRVIH 50 BROJEVA JE“;Z

Ispisujemo zbir prvih 50 brojeva

70 END

Kraj programa

Kada startujemo program zahvaljujući petlji sabraće se prvih 50 pozitivnih celih brojeva i dati njihov ukupni zbir

 

LOOP – EXIT IF – END LOOP – programska petlja sa ispitivanjem i izlaskom iz iste na sredini

Još jedna petlja koju podržava Sajmons bejzik. Razlika je što se kod ove ispitivanje uslova ne daje na kraju nego bilo gde u sredini petlje. I ovde naredbe petlje idu uvek zajedno

Format naredbi:

LOOP – početak petlje

naredbe – naredbe koje se daju u njoj

EXIT IF uslov – izlaz iz petlje ako je dati uslov zadovoljen (izlaz na prvoj naredbi posle END LOOP)

naredbe – mogu se i dalje davati naredbe koje su nam potrebne u petlji

END LOOP – kraj petlje (povratak na prvu naredbu posle LOOP)

Primer:

10 N=1

Dodeljujemo početnu vrednost promenljive (prvi neprarni broj)

20 LOOP

Početak petlje

30 PRINT „NEPARNI BROJEVI IZMEDJU 1 I 100=“;N

Ispisuje se tekst i vrednost promenljive N koja je neparan broj

40 N=N+2

Promenljiva se uvećava za 2 tako da, pošto smo počeli od 1, dobijamo uvek neparan broj

50 EXIT IF N>100

U sljučaju da je N veća od 100 petlja se završava i prelazi na sledeću naredbu posle END LOOP

60 END LOOP

Kraj petlje koji stalno vraća na prvu naredbu posle LOOP

70 END

Kraj programa

Startovanjem ovog programa  na ekranu će se prikazati prvih 99 neparnih brojeva

 

Procedure

Procedure imaju dvostruku ulogu. U prvom slučaju predstavljaju odvojene celine programa koje sadrže skup zadatih naredbi (ekvivalent podprograma), a u drugom mesto skoka toka programa. Označavaju se imenima. Iste veoma olakšavaju programiranje iz razloga što njihovo pozivanje ne zavisi od brojeva programskih linija. Kada ih koristimo kao podprogram mogu da se pozovu iz glavnog programa neograničen broj puta. Kada nam služe kao mesto skoka možemo otići na njih iz bilo kog dela programa i od tog mesta se program dalje izvršava (Ovde takođe dolazi do izražaja korišćenje naredbe RENUMBER)

 

PROC – END PROC – početak procedure – kraj procedure

Ove dve naredbe idu zajedno ali ne uvek. Kada želimo da procedura bude u svojstvu podprograma imamo početak i kraj iste, a ukoliko želimo da vršimo skok na nju onda stavljamo samo početak procedure.

Oblik naredbi:

PROC ime procedure – posle naredbe unosimo kako želimo da se procedura zove

naredbe – zadajemo naredbe koje želimo za datu proceduru

END PROC – kraj procedure (ekvivalent naredbi RETURN)

Primer:

10 PROC UNOS POLAZNIKA

20 INPUT „PREZIME POLAZNIKA“;P$

30 INPUT „IME POLAZNIKA“;I$

40 INPUT „BROJ BODOVA“;B

50 END PROC

Zadavanjem ovih naredbi stvorili smo proceduru za prihvatanje podataka korisnika u obliku podprograma koju možemo pozvati u bilo kom trenutku iz glavnog toka programa.

Ukoliko smo želeli da procedura bude mesto skoka dali bi smo samo u željenoj programskoj liniji PROC UNOS POLAZNIKA (naravno bez END PROC).

 

EXEC – poziv procedure kao podprogram

Naredba poziva proceduru kao podprogram. EXEC je ekvivalent naredbi GOSUB. Iz glavnog programa ona poziva proceduru, izvršava je do naredbe END PROC i nastavlja program od prve naredbe koja dolazi posle EXEC koja je pozvala proceduru.

Format naredbe:

EXEC ime procedure  – poziva proceduru pod datim imenom kao podprogram

Primer:

10 DIM A(9)

Ovde definišemo matricu od 10 elemenata (od 0 do 9)

20 EXEC PRIKAZ POCETNOG EKRANA

Odlazimo na proceduru za ispis početnog ekrana

30 EXEC UNOS NIZA

Idemo na proceduru za unos niza

40 EXEC SORT NIZA

Odlazimo na proceduru za sortiranje niza

50 EXEC PRIKAZ NIZA

Idemo na proceduru za prikaz sortiranog niza

60 END

Završetak glavnog programa. Obavezno je završiti program inače će tok programa preći u proceduru i kad dođe do kraja iste i END PROC naredbe prijaviće grešku da ista nije pozvana naredbom EXEC i stati sa izvršavanjem programa

70 PROC UNOS NIZA

Ova procedura služi da bi se uneo numerički niz u matricu

80 I=0

Praznimo promenljivu I

90 REPEAT

Početak petlje

100 INPUT „UNESITE BROJ“;A(I)

Unosimo numeričke podatke u matricu „A“ koja za kordinatu ima promenljivu I

110 I=I+1

Uvećavamo promenljivu I za 1

120 UNTIL I=10

Petlja se završava ako je promenljiva dostigla vrednost 10. (Do tada će se uneti svih 10 elemenata matrice od 0 do 9). Ako nije programski tok se vraća na prvu naredbu posle REPEAT

130 END PROC

Završetak procedure i povratak na prvu naredbu posle EXEC koja je pozvala ovu proceduru

140 PROC SORT NIZA

Ovo je procedura za sortiranje

150 FOR B=1 TO 10

Dajemo prvu petlju od 10 ciklusa

160 FOR I=0 TO 8

Dajemo drugu petlju sa 9 ciklusa (0-8) čija će vrednost promenljive I ujedno biti kordinata matrice

170 IF A(I)>A(I+1) THEN M=A(I):A(I)=A(I+1):A(I+1)=M

Ovo je red koji radi celu stvar sa sortiranjem. Uzima prvi element matrice (I) i upoređuje ga sa sledećim (I+1). Ukoliko je veći zamenjuje se mesto vrednosti tih elemenata u matrici (vrednost prvog elemenata je sačuvana, prvi postaje drugi, a drugi prvi vraćanjem sačuvane vrednosti) i tako za sve elemente matrice od 0 do 8 plus 1. Da bi se sortirali svi elementi treba odraditi 10 x 9 ciklusa

180 NEXT I

Uvećavanje vrednosti promenljive I za 1 u drugoj petlji (čija vrednost promenljive je kordinata matrice) dok ne dostigne krajnju vrednost 8

190 NEXT B

Uvećavanje vrednosti promenljive B za 1 u prvoj petlji dok ne dostigne krajnju vrednost 10

200 END PROC

Završetak procedure za sortiranje

210 PROC PRIKAZ NIZA

Procedura za prikaz niza

225 PRINT: PRINT  „SORTIRANI NIZ“

Ispis teksta pre prikaza sortiranih brojeva

220 I=0

Promenljiva I se prazni

230 LOOP

Poćetak petlje

240 PRINT A(I),

Štampa se vrednost numeričke matrice „A“ sa kordinatom promenljive I

250 I=I+1

Promenljiva I se uvećava za 1

260 EXIT IF I=10

Izlaz kada promenljiva I dostigne vrednost 10 (do tada su prikazene sve vrednosti matrice od 0 do 9) i odlazak na prvu sledeću naredbu posle END LOOP

270 END LOOP

Kraj petlje – povratak na prvu naredbu posle naredbe LOOP

280 END PROC

Završetak procedure za prikaz

290 PROC PRIKAZ POCETNOG EKRANA

Procedura početnog ekrana

300 PRINT „(SHIFT+CLR/HOME)UNESITE 10 BROJEVA KOJI CE SE SORTIRATI I PRIKAZATI“

Ispis teksta početnog ekrana

310 END PROC

Završetak procedure ispisa početnog ekrana

Startovanjem ovog programa zatražiće se od vas da unesete deset brojeva (nije bitno ako su neki isti ali bolje je, da bi ste videli svrhu programa, da većina budu različiti brojevi). Program će posle unosa sortirati te brojeve od najmanjeg ka najvećem i na kraju prikazati sortirni niz. Dok proučavate ovaj program imajte u vidu da procedure nisu odvojene sa velikim razlikama u programskim linijama kao što je to bio slučaj sa podprogramima kod standardnog bejzika. Za tako nešto nema potrebe jer u slučaju da vam ponestane programskih brojeva za upis linija uvek možete dati naredbu RENUMBER.

 

CALL – skok na proceduru (procedura kao mesto skoka toka programa)

Ovom naredbom programski tok skače na željenu proceduru i od iste se dalje izvršava. CALL je ekvivalent naredbi GOTO.

Važna napomena: Kada koristimo naredbu CALL za proceduru kao mesto skoka ne sme se stavljati END PROC (pošto je ta naredba ekvivalent naredbi RETURN, sistem će prijaviti grešku da procedura nije pozvana EXEC naredbom i stati sa izvršavanjem programa)

Format naredbe:

CALL – ime procedure – programski tok skače na proceduru sa datim imenom

Primer 1:

10 PRINT „(SHIFT+CLR/HOME)UNESITE PODATKE“

20 CALL UNOS POLAZNIKA

30 PRINT „OVO SE NIKADA NECE ISPISATI“

40 END

50 PROC UNOS POLAZNIKA

60 INPUT „PREZIME POLAZNIKA“;P$

70 INPUT „IME POLAZNIKA“;I$

80 INPUT „BROJ BODOVA“;B

90 PRINT „ZAVRSETAK JEDNOG UNOSA (PREZIME,IME,BOD) „;P$+“ „;I$+“ „;B

100 END

Pokretanjem ovog programa naredba CALL će programski tok prebaciti na proceduru UNOS POLAZNIKA (preskočivši pritom naredbu PRINT i END u redu 30 i 40) i nastaviti dalje do kraja programa gde će prikazati unose i završiti program.

Primer 2:

10 PROC VRATI

20 PRINT „PRIMER ZA PROC NAREDBU“

30 CALL VRATI

Ovaj primer zamenjuje čuvenu beskonačnu petlju:

10 PRINT „PRIMER“

20 GOTO 10

Ukoliko bi smo koristili naredbu RENUMBER i promenili brojeve programskih linija primer sa PROC i CALL će besprekorno raditi dok će primer sa GOTO naredbom prikazati grešku

 

Današnja lekcija je pri kraju. Nadamo ste da ste uživali u njoj. Preporučujemo da pokušate sami da napravite neki program. Najbolje je početi od kratkog programa (kostur) koji će se kasnije širiti raznim dodatnim delovima dok ne dobijete konačnu verziju koja može biti ono što se očekivali ili da se u potpunosti razlikuje od vaše prvobitne zamisli.

Veliki pozdrav

SIMON’S BASIC C64 –  lekcija prvahttps://techfokus.rs/simonss-basic-za-commodorw-64-lekcija-1/
SIMON’S BASIC C64 – lekcija drugahttps://techfokus.rs/simons-basic-c64-lekcija-druga/
SIMON’S BASIC C64 – lekcija trećahttps://techfokus.rs/simons-basic-c64-lekcija-treca/
SIMON’S BASIC C64 – lekcija čevrtahttps://techfokus.rs/simons-basic-grafika-lekcija-4/
SIMON’S BASIC C64 – lekcija petahttps://techfokus.rs/retrokutak-simons-basic-lekcija-peta/
SIMON’S BASIC C64 –  lekcija šestahttps://techfokus.rs/retro-kutak-simons-basic-c64-lekcija-sesta/
SIMON’S BASIC C64 – lekcija sedmahttps://techfokus.rs/retro-kutak-simons-basic-c64-lekcija-sedma/

 

Nebojsa Kostić

Rođen 1976. Bavim se računarima I it poslovima više od 20 godina..Osnivač TechFokusa i tehnološki novinar sa preko 20 godina iskustva. Specijalizovan je za hardver, retro računare i tržišne analize.

Nebojsa Kostić has 454 posts and counting. See all posts by Nebojsa Kostić

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

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