Top Banner
Naravno, da bi se u potpunosti ovladalo korištenjem nekog programskog proizvoda, potrebno je konzultirati popratnu literaturu, te ako je moguće prućiti jednostavnije primjere. Svaka programska potpora uz sebe obiĉno ima više ili manje uspješnu pomoć (Help), koja je itekako dobrodošla u radu. Nekad su to male enciklopedije. Za uĉenje programiranja, za poĉetak najpogodniji je QBASIC (Quick Beginner's All-Purpose Symbolic Instruction Code). Tim više što ovaj programerski alat pri izradi izvornog koda provjerava greške i ukazuje na njih. Ima dobar i koristan vodiĉ koji prikazuje kako se koriste pojedine komande i sadrži primjere funkcija. Uvodni ekran pomoći programske potpore QBasica sastoji se od tri dijela: * Index (Abecedni popis i link-ovi prema naredbama i funkcijama) * Contents (Sadržaj Help-a po poglavljima) * Using Help (naĉin uporabe Help-a) Prvo treba prouĉiti naĉin uporabe Help-a, odnosno uputu kako Help prikaze dohvatiti i koristiti. Link-ovi 'Contents' i 'Contents' prisutni su na svakom prikazu. Uvodni 'Contents' prikaz izgleda prema narednoj slici. Qbasic - Content Slika 6.2.3 Uvodni ekran sadržaja 'Content' prozora pomoći. Cjelina 'Orientation' sadži upute kako koristi prikaze pomoći, te kako koristiti komande samog alata Qbasic. To je u suštini 'toolbar' po windows terminologiji preko kojeg se dolazi do pojedinih komandi programske potpore QBasic unutar pripadnih padajućih izbornika, kao što je otvaranje i spremanje datoteka (unutar FILE izbornika) ili ureĊivanje programskih linija u editoru QBasic-a (unutar EDIT izbornika). Iz literature ili iz programske potpore pomoći samog alata, najvažnije je prvo spoznati kakva je SINTAKSA jeziĉkog procesora. Sintaksa je skup pravila potrebnih da se ispravno napišu i poslože naredbe i funkcije koje jeziĉki procesor koristi. Na narednoj slici prikazan je opis koji korisnika upućuje kako da rastumaĉi upute koje slijede uz svaku KLUĈNU RIJEĈ jeziĉkog procesora. QBasic - Sintaksa Slika 6.2.4 Upoznavanje s pravilima tumaĉenja sitakse QBasic-a. Program je u suštini smišljeni skup naredbi koje se slijedno izvršavaju prema dijagramu tijeka odnosno redoslijed akcija nanizanih jedna za drugom. Svaka naredba može se sastojati od: * Kljuĉne rijeĉi (keyword) * Objekta ili objekata djelovanja kljuĉne rijeĉi (placeholders) * Dodatnih naputaka kljuĉnoj rijeĉi (optional item) * Iskljuĉivo jednog izbora od ponuĊenih (choice x) * Obrade više pojmova u slijedu (items) * Strukture od više kljuĉnih rijeĉi (block) Kljuĉna rijeĉ je nalog-naredba interpreteru da izvrši programski kod unutar jeziĉkog procesora koji pripada toj rijeĉi (na primjer ABS, BEEP itd.) uz poštivanje svih dodataka koji su toj kljuĉnoj rijeĉi pridruženi. Kako su te rezervirane rijeĉi upravo pozivi prema pojedinom programskim rutinama (izvršivi kod) ne smiju se te rijeĉi uporabiti kao imena varijabli, konstanti ili funkcija prilikom pisanja programskih linija da prilikom njihovog interpretiranja ne bi došlo do zbrke. Nije dobro nazvati ni funkciju imenom 'absolutno' jer to ime u sebi sadrži kljuĉnu rijeĉ ABS što može opet biti uzrok zbrci prilikom interpretiranja naredbi. Svakoj kljuĉnoj rijeĉi pripada opis na koga se njeno djelovanje odnosi (placeholder). To može biti ime datoteke koju treba otvoriti ili zatvoriti, varijable (kao 'ime_osobe' i / ili prezime_osobe), ureĊaja (rezolucija ekrana na primjer) i sliĉno. No ne mora biti ništa definirano, ali se tada izvršava podrazumna akcija (default) ako kljuĉna rijeĉ ustanovi da nema ovog opisa.
21

Q BASIC Prirucnik

Aug 12, 2015

Download

Documents

Alen Delmanovic

q basic
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Q BASIC Prirucnik

Naravno, da bi se u potpunosti ovladalo korištenjem nekog programskog proizvoda, potrebno je

konzultirati popratnu literaturu, te ako je moguće prućiti jednostavnije primjere. Svaka programska

potpora uz sebe obiĉno ima više ili manje uspješnu pomoć (Help), koja je itekako dobrodošla u

radu. Nekad su to male enciklopedije. Za uĉenje programiranja, za poĉetak najpogodniji je QBASIC

(Quick Beginner's All-Purpose Symbolic Instruction Code). Tim više što ovaj programerski alat pri

izradi izvornog koda provjerava greške i ukazuje na njih. Ima dobar i koristan vodiĉ koji prikazuje

kako se koriste pojedine komande i sadrži primjere funkcija.

Uvodni ekran pomoći programske potpore QBasica sastoji se od tri dijela:

* Index (Abecedni popis i link-ovi prema naredbama i funkcijama)

* Contents (Sadržaj Help-a po poglavljima)

* Using Help (naĉin uporabe Help-a)

Prvo treba prouĉiti naĉin uporabe Help-a, odnosno uputu kako Help prikaze dohvatiti i koristiti.

Link-ovi 'Contents' i 'Contents' prisutni su na svakom prikazu. Uvodni 'Contents' prikaz izgleda

prema narednoj slici.

Qbasic - Content

Slika 6.2.3 Uvodni ekran sadržaja 'Content' prozora pomoći.

Cjelina 'Orientation' sadži upute kako koristi prikaze pomoći, te kako koristiti komande samog alata

Qbasic. To je u suštini 'toolbar' po windows terminologiji preko kojeg se dolazi do pojedinih

komandi programske potpore QBasic unutar pripadnih padajućih izbornika, kao što je otvaranje i

spremanje datoteka (unutar FILE izbornika) ili ureĊivanje programskih linija u editoru QBasic-a

(unutar EDIT izbornika). Iz literature ili iz programske potpore pomoći samog alata, najvažnije je

prvo spoznati kakva je SINTAKSA jeziĉkog procesora. Sintaksa je skup pravila potrebnih da se

ispravno napišu i poslože naredbe i funkcije koje jeziĉki procesor koristi. Na narednoj slici prikazan

je opis koji korisnika upućuje kako da rastumaĉi upute koje slijede uz svaku KLUĈNU RIJEĈ

jeziĉkog procesora.

QBasic - Sintaksa

Slika 6.2.4 Upoznavanje s pravilima tumaĉenja sitakse QBasic-a.

Program je u suštini smišljeni skup naredbi koje se slijedno izvršavaju prema dijagramu tijeka

odnosno redoslijed akcija nanizanih jedna za drugom. Svaka naredba može se sastojati od:

* Kljuĉne rijeĉi (keyword)

* Objekta ili objekata djelovanja kljuĉne rijeĉi (placeholders)

* Dodatnih naputaka kljuĉnoj rijeĉi (optional item)

* Iskljuĉivo jednog izbora od ponuĊenih (choice x)

* Obrade više pojmova u slijedu (items)

* Strukture od više kljuĉnih rijeĉi (block)

Kljuĉna rijeĉ je nalog-naredba interpreteru da izvrši programski kod unutar jeziĉkog procesora koji

pripada toj rijeĉi (na primjer ABS, BEEP itd.) uz poštivanje svih dodataka koji su toj kljuĉnoj rijeĉi

pridruženi. Kako su te rezervirane rijeĉi upravo pozivi prema pojedinom programskim rutinama

(izvršivi kod) ne smiju se te rijeĉi uporabiti kao imena varijabli, konstanti ili funkcija prilikom

pisanja programskih linija da prilikom njihovog interpretiranja ne bi došlo do zbrke. Nije dobro

nazvati ni funkciju imenom 'absolutno' jer to ime u sebi sadrži kljuĉnu rijeĉ ABS što može opet biti

uzrok zbrci prilikom interpretiranja naredbi.

Svakoj kljuĉnoj rijeĉi pripada opis na koga se njeno djelovanje odnosi (placeholder). To može biti

ime datoteke koju treba otvoriti ili zatvoriti, varijable (kao 'ime_osobe' i / ili prezime_osobe),

ureĊaja (rezolucija ekrana na primjer) i sliĉno. No ne mora biti ništa definirano, ali se tada izvršava

podrazumna akcija (default) ako kljuĉna rijeĉ ustanovi da nema ovog opisa.

Page 2: Q BASIC Prirucnik

Dodatni naputak - opcija (optional) pobliže definirana ponašanje kljuĉne rijeĉi i kako nije obvezan

izvršit će se podrazumni. Ovaj dodatni nalog u prikazu ispravnog pisanja naredbe postavlja se u

uglate zagrade. Dakle može se dopisati, ali ne mora i može ih biti više.

U vitiĉastim zagradama su pojmovi (item) koji mogu biti, na primjer unutar opcija, i koji kažu da se

može uporabiti samo jedan od njih unutar vitiĉastih zagrada. Dakle, to je opis uporabe iskljuĉivo

jednog izbora od ponuĊenih.

Pojmovi u slijedu odnose se najĉešće na skup zapisa koji se moraju upisati u polje( tablicu) ili u

datoteku, ili se iz njih proĉitati, kao na primjer ime1, prezime1, ime2, prezime2 itd. Najĉešće su

pojmovi vezani uz naredbe koje se nalaze unutar nekakve strukture.

Struktura je više naredbenih linija koje zapoĉinju i završavaju poĉetnom i završnom kljuĉnom rijeĉi

strukture. Dakle pojam s najmanje dvije kljuĉne rijeĉi. Unutar strukture mogu biti neke druge

naredbene linije koje ne sadrže kljuĉne rijeĉi strukture. Moguće je da se unutar jeden strukture

nalazi još jedna struktura, ali tada treba paziti da se ne 'ukrižaju'. Naime poĉetak i kraj jedne

strukture (unutarnje) mora biti omeĊen kljuĉnim rijeĉima druge strukture (vanjske). Unutar

strukture obiĉno se nalazi naredba koja u odreĊenim okolnostima daje nalog za napuštanje

strukture.

Kljuĉnih rijeĉi ima popriliĉan broj. Stoga je od velike pomoći abecedni popis kljuĉnih rijeĉi (indeks)

preko kojeg se dolazi do opisa naredbe kako se koristi kljuĉna rijeĉ. Poĉetni dio indeksa prikazan je

na narednoj slici.

QBasic - Naredbe

Slika 6.2.5 Abecedni popis naredbi i funkcija QBasic-a.

Pri odabiru željene kljuĉne rijeĉi, po opisu naredbe kako se koristi, kod složenijih naredbi slijedi i

jednostavan primjer kako se koristi odabrana naredba ili struktura (example), te link-ovi prema

kljuĉnim rijeĉima i strukturama (see also) koji pripadaju uz odabranu kljuĉnu rijeĉ ili su srodne po

naĉinu izvršavanja. Uputa od tri toĉke u vrhu slike vrlo jednostavno opisuje kako doći do željene

kljuĉne rijeĉi.

Kako ima oko 240 kljuĉnih rijeĉi jasno je da ih treba pomno prouĉiti kako bi se znale ispravno

uporabiti. Jedan te isti skup naredbi može se izvršiti s razliĉitom brzinom, ovisno o tome kako su

uporabljene pojedine kljuĉne rijeĉi ili koje su strukture uporabljene za istu zadaću. Stoga je

potrebno uz njihovo poznavanje znati u mogućnosti koje QBasic nudi glede uporabe raĉunalni

resursa. Jasno je da treba poštovati minimalne zahtjeve za raĉunalnu opremu koje proizvoĊaĉ

QBasic-a ili Delphi-ja traži za ispravan i uĉinkovit rad njihovog proizvoda.

QBASIC

PRIRUĈNIK

Page 3: Q BASIC Prirucnik

NAPISAO:

ERTIĆ

ARITMETIĈKI OPERATORI I FUNKCIJE

U aritmetiĉkim izrazima mogu se koristiti slijedeći aritmetiĉki operatori:

+ zbrajanje 7 + 2 = 9

oduzimanje 7 2 = 5

* množenje 7 * 2 = 14

/ dijeljenje 7 / 2 = 3.5

\ cjelobrojno

dijeljenje 7 \ 2 = 3

MOD ostatak kod

cjelob. dijeljenja 7 MOD 2 = 1

ARITMETIĈKE FUNKCIJE

SGN(x) Daje predznak izraza.

SGN ( 4) = 1

SGN (4) = 1

SGN (0) = 0

ABS(x) Izraĉunava apsolutnu vrijednost izraza.

ABS (4) = 4

ABS ( 4) = 4

INT(x) Decimalni broj zaokružuje na prvi manji cijeli broj

FIX(x) Odbacuje decimale broja.

CINT(x) Zaokružuje decimalni broj na prvi bliži cijeli broj.

Page 4: Q BASIC Prirucnik

x INT(x) FIX(x) CINT(x)

---------------------------

2.1 2 2 2

2.9 2 2 3

2.1 3 2 2

2.9 3 2 2

RND Izraĉunava sluĉajni broj izmeĊu 0 i 1.

PRINT RND > .4364328

Kada trebamo neki cijeli broj u odreĊenom intervalu koristimo se slijedećom formulom:

x = a + INT ( RND * ( b a + 1 ))

a najmanji broj

b najveći broj

Primjer: Ispiši jedan sluĉajni broj koji će biti troznamenkast.

PRINT 100 + INT ( RND * ( 999 100 +1 ))

Prije upotrebe funkcije RND potrebno je zadati naredbu RANDOMIZE TIMER. Naredba

RANDOMIZE odre|uje iz koje vrijednosti }e se izra~unavati slu~ajan broj. Da ta vrijednost nikada

ne bi bila ista tj. da bi bila nepredvidljiva koristi se funkcija TIMER. Funkcija TIMER pamti vrijeme

koje je pro{lo od pono}i u sekundama. Npr.

PRINT TIMER ispisat će trenutno vrijeme izraženo u sekundama.

Primjer:

'ĉovjeĉe ne ljuti se

'simulacija bacanja kocke

CLS

RANDOMIZE TIMER

broj%=1+INT(RND*6)

PRINT "Dobio si"; broj%

VARIJABLE

Varijabla je dio memorije u kojem se ĉuva neki podatak. Do podatka koji se ĉuva na nekoj

memorijskoj lokaciji možemo doći navoĊenjem imena varijable za koju je rezerviran taj prostor.

Varijabla ima svoje ime, tip i vrijednost.

1. IME VARIJABLE

Ime varijable je jedna rijeĉ koja mora zapoĉeti slovom i može sadržavati slova i brojeve.

Specijalni znakovi (. , ? itd.) nisu dozvoljeni u imenu varijable. Ime varijable može biti dugaĉko

najviše 40 znakova. Za ime varijable ne može se upotrijebiti rezervirana rijeĉ koja znaĉi neku

naredbu u QBASICU. Uobiĉajeno je da se imena varijabli pišu malim slovom, mada raĉunalo ne

Page 5: Q BASIC Prirucnik

pravi razliku izmeĊu malih i velikih slova.

Primjeri ispravno napisanih imena varijabli:

suma, zbroj1, ponovi, a1 ...

Primjeri neispravno napisanih imena:

1a, umnožak, zbroj 1, print, a.1 ...

Prilikom davanja imena varijabli, trebamo izabrati takvo ime koje će asocirati na ono što se ĉuva

u toj varijabli npr: zbroj, prosjek, prezime itd. Treba izbjegavati imena kao što su: a, b, a1, itd.

zbog toga što je takav program nerazumljiv za onoga tko nije napisao taj program pa ne zna što

znaĉi koja od tih varijabli.

2. TIP VARIJABLE

Tip varijable odreĊuje kakav tip podataka se ĉuva u toj varijabli. Razliĉiti tipovi podataka

zauzimaju razliĉitu koliĉinu memorije. Tipovi su slijedeći:

% INTEGER varijabla u kojoj se ĉuva cjelobrojna vrijednost. U ovom tipu varijable mogu se

ĉuvati samo cijeli brojevi koji se nalaze u intervalu od 32768 do +32767

& LONG dugaĉka cjelobrojna varijabla u kojoj se mogu ĉuvati cijeli brojevi u intrvalu

od 2147483648 do +2147483647. Ova varijabla zauzima više mjesta u memoriji nego INTEGER

varijabla

! SINGLE varijabla u kojoj se mogu ĉuvati decimalni brojevi. Brojevi su prikazani s

takozvanom jednostrukom toĉnošću tj. prikazani su sa 8 znamenki.

# DOUBLE varijabla u kojoj se ĉuvaju decimalni brojevi koji se prikazuju sa dvostrukom

toĉnošću tj. prikaziju se sa 17 znamenki.

$ STRING varijabla u kojoj se ne ĉuvaju brojevi nego se ĉuvaju rijeĉi i reĉenice. Dužina

STRING varijable može biti najviše 32767 znakova.

Pokušajte:

kvoc% = 10/3

PRINT kvoc%

kvoc! = 10/3

PRINT kvoc!

kvoc# = 10/3

PRINT kvoc#

3. VRIJEDNOST VARIJABLE

Varijabli se vrijednost dodjeljuje naredbom za dodjeljivanje vrijednosti ( znak =) npr:

broj%=5

broj!=2+3/4

broj!=broj!+1

Page 6: Q BASIC Prirucnik

UVJETI

Uobiĉajeno, QBASIC prilikom izvršavanja programa ide od vrha prema dnu i izvršava naredbu po

naredbu. MeĊutim, ponekad se program grana na više dijelova i izvršava se samo jedna grupa

naredbi, a druge naredbe se preskaĉu.

Ovo grananje ostvaruje se postavljanjem uvjeta. Ako je postavljeni uvjet ispunjen izvršit će se

jedna grupa naredbi, a ako nije ispunjen izvršit će se druga grupa naredbi.

U QBASIC u ovakvo uvjetno grananje možemo ostvariti na više naĉina. Koji ćemo naĉin

upotrijebiti oviso o složenosti uvjeta koje ispitujemo i o stilu programiranja.

Najjednostavnije uvjete možemo ispitivati pomoću "jednolinijske" IF naredbe. Općeniti oblik ove

naredbe je:

IF uvjet THEN naredbe (ELSE naredbe)

Uvjeti se postavljaju pomoću relacijskih izraza. Relacijski izraz sastoji se od dva aritmetiĉka

izraza izmeĊu kojih je znak relacije:

ocjena% < 5

aritm. aritm.

izraz relacija izraz

Aritmatiĉki izraz može biti bilo koji aritmetiĉki izraz, varijabla ili konstanta.

Relacije koje se mogu upotrebljavati su:

< manje od

> veće od

= jednako

=< jednako ili manje

=> jednako ili veće

<> razliĉito

Ako je uvjet ispunjen izvršit će se naredbe iza THEN a ako uvjet nije ispunjen prijeći će se na

slijedeću naredbu:

INPUT "Koliko imaš iz matematike"; ocjena%

IF ocjena% = 5 THEN PRINT "Bravo!"

IF ocjena% < 5 THEN PRINT "Moraš više uĉiti."

Kada ispitujemo jednostavne uvjete i ako imamo samo dvije mogućnosti možemo IF naredbu

nadopuniti sa ELSE:

INPUT "Koliko imaš iz matematike"; ocjena%

IF ocjena% = 5 THEN PRINT "Bravo!" ELSE PRINT "Moraš više uĉiti."

Ako je uvjet ispunjen, izvršit će se naredba iza THEN, a ako uvijet nije ispunjen, izvršit će se

naredba iza ELSE.

Page 7: Q BASIC Prirucnik

Složenije uvjete možemo ispitivati tako da dva ili više relacijskih izraza povežemo logiĉkim

operatorima OR i AND. (Ostali logiĉki operatori: NOT, XOR, EQV, IMP):

INPUT "Koliko imaš iz matematike"; ocjena%

IF ocjena% > 5 OR ocjena% < 1 THEN PRINT "Upisao si nepostojeću ocjenu."

OR (ili) naredbe iza THEN izvršit će se ako je ispunjen ili prvi ili drugi ili oba uvjeta.

AND (i) naredbe iza THEN izvršit će se samo ako su ispunjena oba uvjeta ( i prvi i drugi).

Zadaci za vježbu:

1. Unesi jedan broj. Program treba provjeriti da li je upisani broj paran ili neparan.

INPUT "Unesi jedan broj", broj%

IF broj% / 2 = INT (broj% / 2) THEN PRINT "Broj je paran." ELSE PRINT "Broj je neparan."

2. Unesi jedan broj. Program treba provjeriti da li je upisani broj pozitivan ili negativan.

INPUT "Unesi jedan broj", broj%

IF broj% => 0 THEN PRINT "Broj je pozitivan." ELSE PRINT "Broj je negativan."

3. Program treba zamisliti dva broja izmeĊu 1 i 10, pitati nas koliko iznosi njihov zbroj i reći nam

da li smo toĉno odgovorili.

RANDOMIZE TIMER

prvi% = 1 + INT (RND * 10)

drugi% = 1 + INT (RND * 10)

zbroj% = prvi% + drugi%

PRINT "Koliko je";prvi%;"+";drugi%;

INPUT odgovor%

IF odgovor% = zbroj% THEN PRINT "Bravo!" ELSE PRINT "Pogrešno. Toĉan odgovor je";zbroj%

"Jednolinijska" IF naredba pogodna je kada se ispituju jednostavni uvjeti i kada je naredba

dovoljno kratka da stane cijela na ekran. Ako to nije sluĉaj, program pisan na ovaj naĉin biti će

nepregledan, neĉitak i nerazumljiv.

Da bi se to izbjeglo, poželjno je koristiti IF END IF strukturu.

Opći oblik IF END IF strukture je:

IF uvjet THEN

naredbe

(ELSEIF uvjet THEN

naredbe)

(ELSE

naredbe)

END IF

Svaku "jednolinijsku" IF naredbu možemo lako prevesti u

IF END IF strukturu:

INPUT "Koliko imaš iz matematike"; ocjena%

Page 8: Q BASIC Prirucnik

IF ocjena% = 5 THEN

PRINT "Bravo!"

ELSE

PRINT "Moraš više uĉiti."

END IF

Upotreba ELSEIF

Recimo da trebamo napisati program koji će na osnovu prosjeka ocjena ispisati s kojim uspjehom

prolazi uĉenik:

IF prosjek! => 4.5 THEN

PRINT "Odliĉan."

END IF

IF prosjek! => 3.5 AND prosjek! < 4.5 THEN

PRINT "Vrlo dobar."

END IF

IF prosjek! => 2.5 AND prosjek! < 3.5 THEN

PRINT "Dobar."

END IF

IF prosjek! < 2.5 THEN

PRINT "Dovoljan."

END IF

Da bi ovakav program uĉinili kraćim i ĉitljivijim, možemo ga napisati ovako:

IF prosjek! => 4.5 THEN

PRINT "Odliĉan."

ELSEIF prosjek! => 3.5 THEN

PRINT "Vrlo dobar."

ELSEIF prosjek! => 2.5 THEN

PRINT "Dobar."

ELSE

PRINT "Dovoljan."

END IF

U QBASIC u postoji još jedna kontrolna struktura:

SELECT END SELECT. Ova struktura je vrlo sliĉna strukturi IF END IF.

SELECT CASE prosjek!

CASE IS => 4.5

PRINT "Odliĉan."

CASE 3.5 TO 4.4

PRINT "Vrlo dobar."

CASE 2.5 TO 3.4

PRINT "Dobar."

CASE ELSE

PRINT "Dovoljan."

END SELECT

Da li će programer koristiti IF END IF strukturu ili strukturu SELECT END SELECT ovisi o

njegovom nahoĊenju i stilu programiranja. Smatra se da je struktura SELECT END SELECT

pogodnija ako treba ispitati više od tri uvjeta.

Page 9: Q BASIC Prirucnik

PONAVLJANJE NAREDBI PETLJE

Petlje koristimo kada neki niz naredbi treba izvršiti više puta. U QBASIC u postoje dva naĉina

zadavanja petlji: FOR NEXT striktura i DO LOOP struktura.

FOR NEXT STRUKTURA

Koristi se kada neki niz naredbi treba ponoviti tono odreĊeni broj puta. Opći oblik strukture je:

FOR varijabla = izraz TO izraz

naredbe

NEXT varijabla

Primjer: Ispiši sve brojeve od 1 do 100.

FOR broj% = 1 TO 100

PRINT broj%;

NEXT broj%

PRINT "Kraj."

Varijabla broj% je kontrolna varijabla. Vrijednost te varijable odre|uje da li će se petlja ponoviti

ili neće. Ona se u svakom prolazu povećava za 1. Kada vrijednost kontrolne varijable postane veća

od 100, naredbe u petlji se neće izvršavati, nego će se program nastaviti iza naredbe NEXT.

Kada želimo da se kontrlna varijabla mijenja u koraku razliĉitom od 1 moramo to zadati

naredbom STEP.

Primjer: Ispiši sve neparne brojeve izmeĊu 1 i 100

FOR nepar% = 1 TO 100 STEP 2

PRINT nepar%;

NEXT nepar%

Primjer: Ispiši sve brojeve unazad od 100 do 1.

FOR broj% = 100 TO 1 STEP 1

PRINT broj%;

NEXT broj%

Petlju možemo zadavati unutar petlje. Pri tome moramo paziti da unutrašnju petlju zatvorimo

prije vanjske.

FOR prvi% = 1 TO 10

FOR drugi% = 1 TO 10

produkt% = prvi% * drugi%

PRINT prvi%;"*";drugi%;"=";produkt%,

NEXT drugi%

PRINT

NEXT prvi%

Želimo li iz FOR NEXT petlje izaći prije nego što ona sama doĊe do kraja možemo koristiti

Page 10: Q BASIC Prirucnik

naredbu EXIT FOR:

PRINT "Program postavlja 100 zadataka."

PRINT "Ako želiš odustati utipkaj 999."

RANDOMIZE TIMER

FOR broj% = 1 TO 100

prvi% = 1+INT(RND*10)

drugi% = 1+INT(RND*10)

produkt% = prvi% * drugi%

PRINT "Koliko je ";prvi%;"*";drugi%

INPUT odgovor%

IF odgovor% = 999 THEN

EXIT FOR

ELSEIF odgovor% = produkt% THEN

PRINT "Toĉno."

ELSE

PRINT "Krivo. Odgovor je "; produkt%

END IF

NEXT broj%

DO LOOP STRUKTURA

Kada želimo odreĊene naredbe ponavljati više puta a ne znamo toĉno koliko puta, već broj

ponavljanja ovisi o nekom uvjetu koristimo DO LOOP strukturu. Ova struktura ima dava oblika.

1. Ispitivanje uvjeta na poĉetku

Opći oblik strukture je:

DO WHILE (UNTIL) uvjet

naredbe

LOOP

Primjer: Izraĉunavanje faktorijela (faktorijel 4!=4*3*2=24)

INPUT "Za koji broj želiš faktorijel";broj%

faktorijel% = 1

kontrola% = 2

DO WHILE kontrola% <= broj%

faktorijel% = faktorijel% * kontrola%

kontrola% = kontrola% + 1

LOOP

PRINT faktorijel%

Varijabla kontrola% odreĊuje koliko puta će se ova petlja ponavljati. U svakom prolazu

kontrola% se povećava za 1 i ova petlja će se ponavljati skroz dok je varijabla kontrola% manja ili

jednaka broju koji smo upisali. Kada ona jednom postane veća, tj kada uvijet više ne bude

ispunjen, petlja se ne}e izvršavati nego će se program nastaviti iza naredbe LOOP.

Umjesto WHILE (dok je) možemo koristiti UNTIL (dok ne bude).

DO UNTIL kontrola% > broj%

LOOP

Page 11: Q BASIC Prirucnik

Petlja zadana na ovaj naĉin prestati će raditi kada uvijet bude ispunjen.

2. Ispitivanje uvjeta na kraju

Opći oblik je:

DO

naredbe

LOOP WHILE (UNTIL) uvjet

Primjer:

DO

CALL igra

INPUT "Želiš li još? (d/n) ", odgovor$

LOOP WHILE odgovor$ = "d"

Ova petlja ponavljati će se skroz dok kao odgovor utipkavamo "d". Ako utipkamo bilo što drugo,

petlja se neće izvršiti.

DO

CALL igra

INPUT "Želiš li još? (d/n)", odgovor$

LOOP UNTIL odgovor$ = "n"

Ova petlja prestati će se izvršavati samo ako pritisnemo "n".

Osnovna razlika izmeĊu ispitivanja uvjeta na poĉetku petlje i i spitivanja uvjeta na kraju petlje je

u tome što će se naredbe u petlji koja ispituje uvjet na kraju izvršiti bar jednom ĉak i ako uvjet za

ponavljanje nije ispunjen. U petlji koja ispituje uvjet na poĉetku, ako uvjet nije ispunjen, neće se

izvršiti niti jedna naredba unutar petlje.

Moguće je napisati beskonaĉnu petlju bez WHILE i UNTIL uvjeta:

DO

PRINT broj%;

broj% = broj% + 1

LOOP

U ovakvoj strukturi možemo koristiti naredbu EXIT DO:

DO

PRINT broj%;

IF broj% > 100 THEN EXIT DO

broj% = broj% + 1

LOOP

MeĊutim, svaku petlju sa EXIT DO možemo napisati kao DO LOOP strukturu sa WHILE ili UNTIL:

DO UNTIL broj% > 100

PRINT broj%;

broj% = broj% + 1

LOOP

ili:

Page 12: Q BASIC Prirucnik

DO

PRINT broj%;

broj% = broj% + 1

LOOP WHILE broj% <= 100

OPERACIJE SA STRINGOVIMA

String je niz znakova (slovĉanih, brojĉanih i drugih znakova). Sadržaj stringa ĉuva se u string

varijabli. Tip ovih varijabli oznaĉava se znakom "$". Dužina string varijable može iznositi najviše

32767 znakova.

U raĉunalu, svaki znak je predstavljen brojĉanim kodom, tj svaki znak ima svoj broj. Znaci su

rasporeĊeni prema tzv. ASCII kodu (American Standard Code for Information Interchange). Postoji

256 razliĉitih ASCII kodova.

Slijedeći program prikazuje svih 256 kodova i znakove koje ti kodovi predstavljaju:

CLS

FOR broj% = 0 TO 255

PRINT broj%; CHR$(broj%),

NEXT broj%

U gornjem programu koristili smo funkciju CHR$(n). Ova funkcija pronalazi znak ĉiji je ASCII kod

n, npr. PRINT CHR$(65) ispisati će znak A.

Suprotna funkcija je ASC(string). Ova funkcija pronalazi ASCII kod prvog karaktera zadanog

stringa, npr. PRINT ASC("A") ispisati će 65.

PODSTRING

Podstring je dio stringa. Postoji više naredbi i funkcija za izdvajanje podstringa.

LEFT$ Ova funkcija izdvaja prvih n karaktera nekog stringa:

pozdrav$="Dobar dan"

PRINT LEFT$(pozdrav$,3)

Dob

RIGHT$ Ova funkcija izdvaja zadnjih n karaktera nekog stringa:

PRINT RIGHT$(pozdrav$,3)

dan

MID$ ova funkcija izdvaja dio stringa zadane dužine poĉevši od zadanog mjesta:

PRINT MID$(pozdrav$,4,2)

ar

Ako izostavimo broj karaktera koje želimo izdvojiti, tada će se izdvojiti svi karakteri od zadane

pozicije do kraja stringa:

PRINT MID$(pozdrav$,4)

Page 13: Q BASIC Prirucnik

ar dan

LEN Ova funkcija prebrojava koliko karaktera je dugaĉak string:

PRINT LEN (pozdrav$)

9

Primjer: Koliko puta se u zadanom stringu pojavljuje znak "a"?

CLS

pozdrav$="Dobar dan"

brojznakova%=0

FOR slovo% = 1 TO LEN (pozdrav$)

znak$=MID$(pozdrav$,slovo%,1)

IF znak$="a" THEN

brojznakova%=brojznakova%+1

END IF

NEXT slovo%

PRINT "Slovo a pojavljuje se"; brojznakova%; " puta."

POREĐENJE STRINGOVA

Stringovi se porede po svojim ASCII kodovima, a poreĊenje poĉinje od prvog karaktera:

"A" < "a"

"abc" < "bca"

"dan" < "danko"

"abc" < " abc"

"BB" < "Ba"

Zbog toga što velika i mala slova imaju razliĉite ASCII kodove, dobro je prije poreĊenja stringove

prevesti u mala slova odnosno velika slova. Za to nam služe funkcije UCASE$ i LCASE$.

Funkcija UCASE$ pretvara sva slova zadanog stringa u velika, a funkcija LCASE$ pretvara sva

slova zadanog stringa u mala:

pozdrav$="Dobar dan"

PRINT UCASE$ (pozdrav$)

DOBAR DAN

PRINT LCASE$(pozdrav$)

dobar dan

OSTALE NAREDBE I FUNKCIJE

LTRIM$(string) eliminira vodeće praznine: " abc"="abc"

RTRIM$(string) eliminira naknadne praznine: "abc "="abc"

STR$(broj) pretvara numeriĉku varijablu u string

VAL(string) pretvara string u broj

STRING$(4,a) ispisuje ĉetiri znaka "a"

SPACE$(7) ispisuje sedam praznina

ZAMJENA JEDNOG STRINGA DRUGIM

Page 14: Q BASIC Prirucnik

MID$(pozdrav$,7,3)="noć" u stringu "Dobar dan", poĉevši od sedmog mjesta, slijedeća tri znaka

zamjeni sa znakovima "noć":

PRINT pozdrav$

Dobar noć

INSTR$("Dobar dan","dan") pronalazi od kojeg mjesta se manji string pojavljuje u većem:

PRINT INSTR$(pozdrav$,"dan")

7

GRAFIKA

Da bi mogli crtati u QBASICU moramo aktivirati grafiĉki ekran. To se ĉini naredbom SCREEN.

Vrsta grafiĉkog ekrana zavisi o vrsti grafiĉke kartice. Najĉešće se koristi ekran niske rezolucije

(SCREEN 1) i ekran visoke rezolucije (SCREEN 2).

NISKA REZOLUCIJA.

Aktivira se naredbom:

SCREEN 1

Rezolucija ovog ekrana je 320 x 200. To znaĉi da je ekran podijeljen na 200 redova a u svakom

redu ima 320 toĉaka. Toĉka 0,0 nalazi se u gornjem lijevom kutu, a toĉka 319,199 nalazi se u

donjem desnom kutu.

VISOKA REZOLUCIJA

Aktivira se naredbom:

SCREEN 2

Rezolucija ovog ekrana je 640 x 200. Toĉka 0,0 nalazi se u gornjem lijevom kutu, a toĉka

639,199 nalazi se u donjem desnom kutu.

NAREDBE ZA CRTANJE

Za crtanje pojedinih toaka na ekranu koristimo naredbu PSET.

PSET (x,y),color

Naredba PSET crta toĉku na zadanim koordinatama u boji koju zadamo. Parametar za boju može

se izostaviti.

Primjer: Crtanje toĉke na sredini ekrana:

SCREEN 1

PSET (160,100)

Page 15: Q BASIC Prirucnik

Za crtanje crta i pravokutnika koristimo naredbu LINE

LINE (x1,y1) (x2,y2),color,BF,stil

(x1,x2) koordinate prve toĉke

(x2,y2) koordinate druge toĉke

color boja crte

B crta pravokutnik sa suprotnim kutevima u toĉkama (x1,y1) i (x2,y2)

F ispunjava pravokutnik bojom olovke

stil vrsta linije (isprekidana, istoĉkana itd.)

Primjeri:

'Dijagonala ekrana

SCREEN 1

LINE (0,0) (319,199)

'Iscrtkana dijagonala

LINE (319,0) (0,199),,,&HF0F0

'Pravokutnik

SCREEN 2

LINE (50,50) (100,100),,B

'Ispunjeni pravokutnik

LINE (100,100) (150,150),,BF

Za crtanje kružnica, lukova, kružnih isjeĉaka i elipsi koristimo naredbu CIRCLE.

CIRLCE (x,y),p,color,poĉ.kut,zav.kut,odnos

(x,y) koordinate središta kružnice

p polumjer kružnice

color boja olovke

poĉ.kut poĉetak luka

zav.kut kraj luka

odnos odnos izmeĊu x i y osi kod elipse

Primjeri:

SCREEN 1

pi!=3.14

'Kružnica

CIRCLE (160,100),30

'Luk

CIRCLE (80,50),30,,pi!/2,pi!

CIRCLE (240,50),30,,pi!,pi!/2

'Isjeĉak

CIRCLE (80,150),30,, pi!/2, pi!

CIRCLE (240,150),30,, pi!, pi!/2

'Elipsa

CIRCLE (160,100),50,,,,0.4

CIRCLE (160,100),50,,,,1.2

Ako želimo dobiti ispunjeni krug ili elipsu, možemo se poslužiti naredbom PAINT.

Page 16: Q BASIC Prirucnik

PAINT (x,y),boja ispune,boja granice,uzorak

(x,y) koordinate toĉke u djelu ekrana kojeg treba ispuniti

bojaisp. broj boje sa kojom se popunjava

bojagr. boja sa kojom je uokvirena površina koja se ispunjava

uzorak uzorak kojim se oblik ispunjava

Primjer:

'Crtanje kružnice bojom 2

'i ispunjavanje bojom 3

SREEN 1

CIRCLE (160,160),100,2

PAINT (160,160),3,2

NIZOVI

Kada u programu koristimo obiĉne varijable, QBASIC rezervira odreĊeni dio memorije za

spremanje te varijable. Taj dio memorije možemo zamisliti kao jednu ladicu na kojoj piše ime

varijable, a u "ladici" se ĉuva vrijednost te varijable. Svaki puta kada u programu koristimo tu

varijablu, QBASIC će pronaći tu "ladicu" i iz nje proĉitati trenutnu vrijednost varijable.

Ako više takvih "ladica" poredamo jednu do druge dobit ćemo niz. Niz je grupa vrijednosti

spremljenih pod istim imenom. Zahvaljujući nizovima, možemo pristupiti svim vrijednostima niza

kao i pojedinaĉnim vrijednostima svakog elementa niza.

Prije korištenja niza moramo ga deklarirati tj. moramo definirati njegovo ime, tip i veliĉinu.

Deklaracija niza provodi se naredbom DIM:

DIM varijabla (dgranica TO ggranica)

npr.

DIM ime$ (1 TO 30).

Gornja naredba definira varijablu ime$ kao niz od 30 "ladica". Svaka "ladica" naziva se element

niza. Da bi toĉno odredili s kojim elementom želimo raditi, koristimo se indeksom elementa.

Indeksi se pišu u zagradama. Prvi element niza je ime$(1), drugi ime$(2) ... ...ime$(30).

Dgranica i ggranica odreĊuju najniži i najviši indeks niza. Broj elemenata niza izraĉunava se po

formuli ggranica dgranica+1. Kod deklaracije niza može se upisati i samo gornja granica npr. DIM

ime$(30). U tom sluĉaju dgranica je 0. Dgranica niza ne mora uvijek biti 0 ili 1. Možemo je zadati

proizvoljno npr. DIM ime$ (30 TO 60)

Kada želimo dodjeliti vrijednosti elementima niza poslužit ćemo se FOR...NEXT petljom:

FOR broj% = dgranica TO ggranica

INPUT ime$(broj%)

NEXT broj%

Page 17: Q BASIC Prirucnik

Ispisivane vrijednosti elemenata niza takoĊer radimo pomoću FOR...NEXT petlje:

FOR broj% = dgranica TO ggranica

PRINT ime$(broj%)

NEXT broj%

Primjeri.

1. Ispiši imena svih uĉenika koji su prošli sa odliĉnim.

' Deklaracija niza od deset elmenata

DIM ime$ (1 TO 10)

DIM ocjena% (1 TO 10)

' Unošenje vrijednosti

FOR broj% = 1 TO 10

PRINT "Upiši ime uĉenika:"

INPUT ime$(broj%)

PRINT "Upiši njegovu ocjenu:"

INPUT ocjena%(broj%)

NEXT broj%

' Traženje uĉenika s odliĉnim uspjehom

PRINT "S odliĉnim su prošli slijedeći uĉenici:"

FOR broj% = 1 TO 10

IF ocjena%(broj%)=5 THEN

PRINT ime$(broj%)

END IF

NEXT broj%

2. Poredaj imena po abecedi.

'Deklaracija niza od pet elemenata

DIM ime$(1 to 5)

'Upisivanje imena

PRINT "Upiši ime uĉenika:"

FOR broj%=1 TO 5

INPUT ime$(broj%)

NEXT broj%

'Sortiranje metodom BUBBLE SORT

FOR prvi%=1 to 4

FOR drugi% =prvi%+1 TO 5

IF ime$(prvi%)>ime$(drugi%) THEN

SWAP ime$(prvi%), ime$(drugi%)

END IF

NEXT drugi%

NEXT prvi%

'Ispis imena po abecedi

FOR broj%=1 TO 5

PRINT ime$(broj%)

NEXT broj%

ZVUK

Page 18: Q BASIC Prirucnik

SOUND sviranje pojedinih tonova (za zvuĉne efekte)

SOUND visina,trajanje

visina broj u intervalu od 37 do 32767

C 523

D 587

E 659

F 698

G 783

A 880

B 987

trajanje broj u intervalu od 0 do 65535.

Primjeri:

visina% = 32767

trajanje% = 246

FOR i% = 60 TO 1 STEP 2

SOUND trajanje% i%/2,i%/20

SOUND visina%,i%/15

NEXT i%

visina% = 780

trajanje% = 650

FOR i% = trajanje% TO trajanje% STEP 4

SOUND visina% ABS(i%),0.3

i%=i% 2/trajanje%

NEXT i%

PLAY makro naredba za programiranje muzike

PLAY string$

string$ sadrži podatke o tonovima koje treba odsvirati, dužini note, oktavi, pauzama,

povisilicama, snizilicama, tempu itd...

C,D,E,F,G,A,B tonovi

,+ snizilica i povisilica

Ln dužina note, može biti u intrvalu od 1 do 64. L1 cijela nota, l2 polovinka, l16

šesnajstinka....

On visina oktave od 0 do 6. Na poĉetku vrijednost za oktavu je 4.

Pn pauza dužine od 1 do 64.

Primjer:

PLAY "L8 O3 g f f2."

PLAY "L8 p4 a b O4 c+ d e f e. d16 d2."

PLAY "L8 p4 d d c O3 b a g b a a2"

PLAY "L4 g f a g. d8 f a8 a2 p8"

PLAY "L4 a2 a2 O4 d e f e8 d8 e."

PLAY "L4 d8 c d O3 a1"

PLAY "L4 d8 c e f c b a"

Page 19: Q BASIC Prirucnik

PLAY "L4 g f a g. d8 f a a1"

ANIMACIJA

Pomicanje nekog objekta po ekranu možemo ostvariti pomoću naredbi GET i PUT.

Pomoću naredbe GET definiramo dio ekrana na kojem se nalazi slika koju želimo pomicati.

Postupak je slijedeći:

naredbom DIM dimenzioniramo niz koji će služiti za spremanje slike sa ekrana

nacrtamo sliku

naredbom GET spremimo sliku u definirani niz.

Problem je definiranje veliĉine niza koji je potreban za pamćenje ž`eljene slike na ekranu. Broj

elemenata niza izraĉunava se formulom:

brojelemenata=INT((x2 x1+1)/8+1)*(y2 y1+1)*c/a+4

x1,y1 i x2,y2 su koordinate vrhova dijagonale pravokutnog dijela ekrana kojeg "skidamo"

"c" ovisi o screen modu (broju boja).Vrijednosti su:

SCREEN "c"

2, 11 1

1, 10 2

7,8,9,12 4

13 8

"a" ovisi o tipu niza. Ako je niz tipa INTEGER (%) tada je vrijednost za "a"=2, a ako je tip

niza LONG (&) vrijednost za "a"=4.

Pretpostavimo da želimo "skinuti" dio ekrana ĉiji se gornji lijevi vrh nalazi na koordinatama 20,20

a donji desni vrh na koordinatama 40,40.

x1=20 y1=20

x2=40 y2=40

Sliku ćemo crtati u SCREENU 1 ("c"=2) i tip niza biti će INTEGER ("a"=2).

brojelemenata=INT((40 20+1)/8+1)*(40 20+1)*2/2+4

=INT(21/8+1)*21*1+4

=3*21+4

=67

Dakle, treba definirati niz od 67 elemenata:

DIM slika%(67)

Ako u tom dijelu ekrana nacrtamo krug:

SCREEN 1

CIRCLE (30,30),9

Page 20: Q BASIC Prirucnik

tada taj krug možemo "skinuti " naredbom:

GET (20,20) (40,40),slika%

Tako spremljenu sliku možemo prikazati na ekranu naredbom:

PUT (x,y),slika%,PSET

(x,y) koordinate gornjeg lijevog kuta slike

slika% ime niza u koji je spremljena slika naredbom GET

PSET naĉin prikazivanja slike i preklapanja s pozadinom. Osim PSET može se koristiti:

PRESET, XOR, OR, AND.

Pomicanje objekta ostvarujemo petljom:

CLS

FOR x = 1 TO 200

PUT (x,100),slika%,PSET

NEXT x

Programski primjer

Na ekranu ispisuje "Pašta-fažol ja volim , pašta-fažol živi vjeĉno" i crta crtu veliĉine 10 pixela

CLS

PRINT"Pašta-fažol ja volim"

PRINT"Pašta-fažol živi vjeĉno"

LINE(0,0)-(10,10)

END

Ovaj program pita korisnika njegov omiljeni nogometni klub, i ispisuje navijaĉku pjesmu:

CLS

INPUT "Koji je vaš omiljeni nogometni klub" ; a$

PRINT UCASE$(a$) " je najbolji, ale ale!"

END

Osnovne naredbe

Tri osnovne naredbe su CLS,INPUT I PRINT. CLS je skraćenica od CLear Screen, cls koristimo na

poĉetku programa kako bi bili sigurni da je sav prijašnji tekst sa ekrana obrisan. INPUT naredba

služi za unos podataka. PRINT naredba ispisuje tekst na ekran npr. 10 PRINT "Hello world". Ove tri

naredbe se najćešće koriste u BASIC programima.

10 CLS

20 PRINT "Kako se zoveš?"

30 INPUT A$

40 PRINT "Drago mi je, ";A$

50 END

Matematiĉke radnje

Svaki BASIC jezik pa tako i QBasic mora moći izvoditi matematiĉke radnje, u daljnjem tekstu

Page 21: Q BASIC Prirucnik

objasnit ću kako napraviti program za zbrajanje. Da bi napravili matematiĉki program morate znati

simbole radnji.TakoĊer morate znati i osnovne naredbe iz prošlog teksta. Ali ima i jedna nova

naredba: x$=y (x$ predstavlja tip podataka (x se zamijeni nekim slovom),a y vrijednost odreĊenog

slova). To je sve što treba znati za jednostavni matematiĉki program. Simboli :

Zbrajanje - +

Oduzimanje - -

Djeljenje - /

Množenje - *

Primjer programa za množenje :

10 CLS

20 PRINT "Dobrodošao u program za množenje"

30 PRINT "Unesi dva broja"

40 INPUT A

50 INPUT B

60 C = A * B

70 PRINT A; "*" ; B; "=" ; C

80 END

Crtanje

U Qbasicu postoji i osnovno crtanje. Možete crtati kružnice i linije te neke 3D oblike. Prije svakog

crtanja morate upisati naredbu SCREEN 12

Primjer programa za crtanje krugova: Nacrtat će kružnicu u sredini ekrana radijusa 50 pixela.

SCREEN 12

CIRCLE (320,240),100

Primjer programa za crtanje linija: Linija vodoravna po sredini ekrana.

SCREEN 12

LINE(320,0)-(320,480)