You are on page 1of 7

: znam ja enleskiali ovo ba i neznam...

slijedei tekst je samo za ljubitelje qbasica: Naravno, da bi se u potpunosti ovladalo koritenjem nekog programskog proizvoda, potrebno je konzultirati popratnu literaturu, te ako je mogue pruiti jednostavnije primjere. Svaka programska potpora uz sebe obino ima vie ili manje uspjenu pomo (Help), koja je itekako dobrodola u radu. Nekad su to male enciklopedije. Za uenje programiranja, za poetak najpogodniji je QBASIC (Quick Beginner's All-Purpose Symbolic Instruction Code). Tim vie to ovaj programerski alat pri izradi izvornog koda provjerava greke i ukazuje na njih. Ima dobar i koristan vodi koji prikazuje kako se koriste pojedine komande i sadri primjere funkcija.Uvodni ekran pomoi programske potpore QBasica sastoji se od tri dijela: * Index (Abecedni popis i link-ovi prema naredbama i funkcijama) * Contents (Sadraj Help-a po poglavljima) * Using Help (nain uporabe Help-a)Prvo treba prouiti nain 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 - ContentSlika 6.2.3 Uvodni ekran sadraja 'Content' prozora pomoi.Cjelina 'Orientation' sadi upute kako koristi prikaze pomoi, te kako koristiti komande samog alata Qbasic. To je u sutini 'toolbar' po windows terminologiji preko kojeg se dolazi do pojedinih komandi programske potpore QBasic unutar pripadnih padajuih izbornika, kao to je otvaranje i spremanje datoteka (unutar FILE izbornika) ili ureivanje programskih linija u editoru QBasic-a (unutar EDIT izbornika). Iz literature ili iz programske potpore pomoi samog alata, najvanije je prvo spoznati kakva je SINTAKSA jezikog procesora. Sintaksa je skup pravila potrebnih da se ispravno napiu i posloe naredbe i funkcije koje jeziki procesor koristi. Na narednoj slici prikazan je opis koji korisnika upuuje kako da rastumai upute koje slijede uz svaku KLUNU RIJE jezikog procesora.QBasic - SintaksaSlika 6.2.4 Upoznavanje s pravilima tumaenja sitakse QBasic-a.Program je u sutini smiljeni skup naredbi koje se slijedno izvravaju prema dijagramu tijeka odnosno redoslijed akcija nanizanih jedna za drugom. Svaka naredba moe se sastojati od: * Kljune rijei (keyword) * Objekta ili objekata djelovanja kljune rijei (placeholders) * Dodatnih naputaka kljunoj rijei (optional item) * Iskljuivo jednog izbora od ponuenih (choice x) * Obrade vie pojmova u slijedu (items) * Strukture od vie kljunih rijei (block)Kljuna rije je nalog-naredba interpreteru da izvri programski kod unutar jezikog procesora koji pripada toj rijei (na primjer ABS, BEEP itd.) uz potivanje svih dodataka koji su toj kljunoj rijei pridrueni. Kako su te rezervirane rijei upravo pozivi prema pojedinom programskim rutinama (izvrivi kod) ne smiju se te rijei uporabiti kao imena varijabli, konstanti ili funkcija prilikom pisanja programskih linija da prilikom njihovog interpretiranja ne bi dolo do zbrke. Nije dobro nazvati ni funkciju imenom 'absolutno' jer to ime u sebi sadri kljunu rije ABS to moe opet biti uzrok zbrci prilikom interpretiranja naredbi.Svakoj kljunoj rijei pripada opis na koga se njeno djelovanje odnosi (placeholder). To moe biti ime datoteke koju treba otvoriti ili zatvoriti, varijable (kao 'ime_osobe' i / ili prezime_osobe), ureaja (rezolucija ekrana na primjer) i slino. No ne mora biti nita definirano, ali se tada izvrava podrazumna akcija (default) ako kljuna rije ustanovi da nema ovog opisa.Dodatni naputak - opcija (optional) poblie definirana ponaanje kljune rijei i kako nije obvezan izvrit e se podrazumni. Ovaj dodatni nalog u prikazu ispravnog pisanja naredbe postavlja se u uglate zagrade. Dakle moe se dopisati, ali ne mora i moe ih biti vie.U vitiastim zagradama su pojmovi (item) koji mogu biti, na primjer unutar opcija, i koji kau da se moe uporabiti samo jedan od njih unutar vitiastih zagrada. Dakle, to je opis uporabe iskljuivo jednog izbora od ponuenih.Pojmovi u slijedu odnose se najee na skup zapisa koji se moraju upisati u polje( tablicu) ili u datoteku, ili se iz njih proitati, kao na primjer ime1, prezime1, ime2, prezime2 itd. Najee su pojmovi vezani uz naredbe koje se nalaze unutar nekakve strukture.Struktura je vie naredbenih linija koje zapoinju i zavravaju poetnom i zavrnom kljunom rijei strukture. Dakle pojam s najmanje dvije kljune rijei. Unutar strukture mogu biti neke druge naredbene linije koje ne sadre kljune rijei strukture. Mogue je da se unutar jeden strukture nalazi jo jedna struktura, ali tada treba paziti da se ne 'ukriaju'. Naime poetak i kraj jedne strukture (unutarnje) mora biti omeen kljunim rijeima druge strukture (vanjske). Unutar

strukture obino se nalazi naredba koja u odreenim okolnostima daje nalog za naputanje strukture.Kljunih rijei ima poprilian broj. Stoga je od velike pomoi abecedni popis kljunih rijei (indeks) preko kojeg se dolazi do opisa naredbe kako se koristi kljuna rije. Poetni dio indeksa prikazan je na narednoj slici.QBasic - NaredbeSlika 6.2.5 Abecedni popis naredbi i funkcija QBasic-a.Pri odabiru eljene kljune rijei, po opisu naredbe kako se koristi, kod sloenijih naredbi slijedi i jednostavan primjer kako se koristi odabrana naredba ili struktura (example), te link-ovi prema kljunim rijeima i strukturama (see also) koji pripadaju uz odabranu kljunu rije ili su srodne po nainu izvravanja. Uputa od tri toke u vrhu slike vrlo jednostavno opisuje kako doi do eljene kljune rijei.Kako ima oko 240 kljunih rijei jasno je da ih treba pomno prouiti kako bi se znale ispravno uporabiti. Jedan te isti skup naredbi moe se izvriti s razliitom brzinom, ovisno o tome kako su uporabljene pojedine kljune rijei ili koje su strukture uporabljene za istu zadau. Stoga je potrebno uz njihovo poznavanje znati u mogunosti koje QBasic nudi glede uporabe raunalni resursa. Jasno je da treba potovati minimalne zahtjeve za raunalnu opremu koje proizvoa QBasic-a ili Delphi-ja trai za ispravan i uinkovit rad njihovog proizvoda. QBASICPRIRUNIKNAPISAO: ERTI ARITMETIKI OPERATORI I FUNKCIJE U aritmetikim izrazima mogu se koristiti slijedei aritmetiki operatori: + zbrajanje 7 + 2 = 9 oduzimanje 7 2 = 5 * mnoenje 7 * 2 = 14 / dijeljenje 7 / 2 = 3.5 \ cjelobrojno dijeljenje 7 \ 2 = 3 MOD ostatak kod cjelob. dijeljenja 7 MOD 2 = 1ARITMETIKE FUNKCIJE SGN(x) Daje predznak izraza. SGN ( 4) = 1 SGN (4) = 1 SGN (0) = 0 ABS(x) Izraunava apsolutnu vrijednost izraza. ABS (4) = 4 ABS ( 4) = 4 INT(x) Decimalni broj zaokruuje na prvi manji cijeli broj FIX(x) Odbacuje decimale broja. CINT(x) Zaokruuje decimalni broj na prvi blii cijeli broj. 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 Izraunava sluajni broj izmeu 0 i 1. PRINT RND > .4364328 Kada trebamo neki cijeli broj u odreenom intervalu koristimo se slijedeom formulom: x = a + INT ( RND * ( b a + 1 )) a najmanji broj b najvei brojPrimjer: Ispii jedan sluajni 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 izraeno u sekundama.Primjer: 'ovjee 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 moemo doi navoenjem 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 zapoeti slovom i moe sadravati slova i brojeve. Specijalni znakovi (. , ? itd.) nisu dozvoljeni u imenu varijable. Ime varijable moe biti dugako najvie 40 znakova. Za ime varijable ne moe se upotrijebiti rezervirana rije koja znai neku naredbu u QBASICU. Uobiajeno je da se imena varijabli piu malim slovom, mada raunalo ne pravi razliku izmeu malih i velikih slova.Primjeri ispravno napisanih imena varijabli: suma, zbroj1, ponovi, a1 ...Primjeri neispravno napisanih imena: 1a, umnoak, 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 znai koja od tih varijabli.2. TIP VARIJABLE Tip varijable odreuje kakav tip podataka se uva u toj varijabli. Razliiti tipovi podataka zauzimaju razliitu koliinu memorije. Tipovi su slijedei: % 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 dugaka cjelobrojna varijabla u kojoj se mogu uvati cijeli brojevi u intrvalu od 2147483648 do +2147483647. Ova varijabla zauzima vie mjesta u memoriji nego INTEGER varijabla ! SINGLE varijabla u kojoj se mogu uvati decimalni brojevi. Brojevi su prikazani s takozvanom jednostrukom tonou tj. prikazani su sa 8 znamenki. # DOUBLE

varijabla u kojoj se uvaju decimalni brojevi koji se prikazuju sa dvostrukom tonou tj. prikaziju se sa 17 znamenki. $ STRING varijabla u kojoj se ne uvaju brojevi nego se uvaju rijei i reenice. Duina STRING varijable moe biti najvie 32767 znakova.Pokuajte: kvoc% = 10/3 PRINT kvoc% kvoc! = 10/3 PRINT kvoc! kvoc# = 10/3 PRINT kvoc#3. VRIJEDNOST VARIJABLEVarijabli se vrijednost dodjeljuje naredbom za dodjeljivanje vrijednosti ( znak =) npr: broj%=5 broj!=2+3/4 broj!=broj!+1 UVJETI Uobiajeno, QBASIC prilikom izvravanja programa ide od vrha prema dnu i izvrava naredbu po naredbu. Meutim, ponekad se program grana na vie dijelova i izvrava se samo jedna grupa naredbi, a druge naredbe se preskau. Ovo grananje ostvaruje se postavljanjem uvjeta. Ako je postavljeni uvjet ispunjen izvrit e se jedna grupa naredbi, a ako nije ispunjen izvrit e se druga grupa naredbi. U QBASIC u ovakvo uvjetno grananje moemo ostvariti na vie naina. Koji emo nain upotrijebiti oviso o sloenosti uvjeta koje ispitujemo i o stilu programiranja. Najjednostavnije uvjete moemo ispitivati pomou "jednolinijske" IF naredbe. Openiti oblik ove naredbe je: IF uvjet THEN naredbe (ELSE naredbe) Uvjeti se postavljaju pomou relacijskih izraza. Relacijski izraz sastoji se od dva aritmetika izraza izmeu kojih je znak relacije: ocjena% < 5 aritm. aritm. izraz relacija izraz Aritmatiki izraz moe biti bilo koji aritmetiki izraz, varijabla ili konstanta. Relacije koje se mogu upotrebljavati su: < manje od > vee od = jednako =< jednako ili manje => jednako ili vee <> razliito Ako je uvjet ispunjen izvrit e se naredbe iza THEN a ako uvjet nije ispunjen prijei e se na slijedeu naredbu: INPUT "Koliko ima iz matematike"; ocjena% IF ocjena% = 5 THEN PRINT "Bravo!" IF ocjena% < 5 THEN PRINT "Mora vie uiti." Kada ispitujemo jednostavne uvjete i ako imamo samo dvije mogunosti moemo IF naredbu nadopuniti sa ELSE: INPUT "Koliko ima iz matematike"; ocjena% IF ocjena% = 5 THEN PRINT "Bravo!" ELSE PRINT "Mora vie uiti." Ako je uvjet ispunjen, izvrit e se naredba iza THEN, a ako uvijet nije ispunjen, izvrit e se naredba iza ELSE. Sloenije uvjete moemo ispitivati tako da dva ili vie relacijskih izraza poveemo logikim operatorima OR i AND. (Ostali logiki operatori: NOT, XOR, EQV, IMP): INPUT "Koliko ima iz matematike"; ocjena% IF ocjena% > 5 OR ocjena% < 1 THEN PRINT "Upisao si nepostojeu ocjenu." OR (ili) naredbe iza THEN izvrit e se ako je ispunjen ili prvi ili drugi ili oba uvjeta. AND (i) naredbe iza THEN izvrit e se samo ako su ispunjena oba uvjeta ( i prvi i drugi).Zadaci za vjebu: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 izmeu 1 i 10, pitati nas koliko iznosi njihov zbroj i rei nam da li smo tono 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 "Pogreno. Toan 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 sluaj, program pisan na ovaj nain biti e nepregledan, neitak i nerazumljiv. Da bi se to izbjeglo, poeljno je koristiti IF END IF strukturu. Opi oblik IF END IF strukture je: IF uvjet THEN naredbe (ELSEIF uvjet THEN naredbe) (ELSE naredbe) END IF Svaku "jednolinijsku" IF naredbu moemo lako prevesti uIF END IF strukturu: INPUT "Koliko ima iz matematike"; ocjena% IF ocjena% = 5 THEN PRINT "Bravo!" ELSE PRINT "Mora vie uiti." END IF Upotreba ELSEIF Recimo da trebamo napisati program koji e na osnovu prosjeka ocjena ispisati s kojim uspjehom prolazi uenik: IF prosjek! => 4.5 THEN PRINT "Odlian." 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 uinili kraim i itljivijim, moemo ga napisati ovako: IF prosjek! => 4.5 THEN PRINT "Odlian." 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 slina strukturi IF END IF. SELECT CASE prosjek! CASE IS => 4.5 PRINT "Odlian." 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 nahoenju i stilu programiranja. Smatra se da je struktura SELECT END SELECT pogodnija ako treba ispitati vie od tri uvjeta. PONAVLJANJE NAREDBI PETLJE Petlje koristimo kada neki niz naredbi treba izvriti vie puta. U QBASIC u postoje dva naina zadavanja petlji: FOR NEXT striktura i DO LOOP struktura.FOR NEXT STRUKTURA Koristi se kada neki niz naredbi treba ponoviti tono odreeni broj puta. Opi oblik strukture je: FOR varijabla = izraz TO izraz naredbe NEXT varijablaPrimjer: Ispii 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 nee. Ona se u svakom prolazu poveava za 1. Kada vrijednost kontrolne varijable postane vea od 100, naredbe u petlji se nee izvravati, nego e se program nastaviti iza naredbe NEXT. Kada elimo da se kontrlna varijabla mijenja u koraku razliitom od 1 moramo to zadati naredbom STEP.Primjer: Ispii sve neparne brojeve izmeu 1 i 100 FOR nepar% = 1 TO 100 STEP 2 PRINT nepar%; NEXT nepar%Primjer: Ispii sve brojeve unazad od 100 do 1. FOR broj% = 100 TO 1 STEP 1 PRINT broj%; NEXT broj% Petlju moemo zadavati unutar petlje. Pri tome moramo paziti da unutranju 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 izai prije nego to ona sama doe do kraja moemo koristiti 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 "Tono." ELSE PRINT "Krivo. Odgovor je "; produkt% END IF NEXT broj%DO LOOP STRUKTURA Kada elimo odreene naredbe ponavljati vie puta a ne znamo tono koliko puta, ve broj ponavljanja ovisi o nekom uvjetu koristimo DO LOOP strukturu. Ova struktura ima dava oblika.1. Ispitivanje uvjeta na poetkuOpi oblik strukture je: DO W HILE (UNTIL) uvjet naredbe LOOPPrimjer: Izraunavanje 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% odreuje koliko puta e se ova petlja ponavljati. U svakom prolazu kontrola% se poveava za 1 i ova petlja e se ponavljati skroz dok je varijabla kontrola% manja ili jednaka broju koji smo upisali. Kada ona jednom postane vea, tj kada uvijet vie ne bude ispunjen, petlja se ne}e izvravati nego e se program nastaviti iza naredbe LOOP.Umjesto WHILE (dok je) moemo koristiti UNTIL (dok ne bude). DO UNTIL kontrola% > broj% LOOP Petlja zadana na ovaj nain prestati e raditi kada uvijet bude ispunjen.2. Ispitivanje uvjeta na krajuOpi oblik je: DO naredbe LOOP WHILE (UNTIL) uvjetPrimjer: 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 nee izvriti. DO CALL igra INPUT "eli li jo? (d/n)", odgovor$ LOOP UNTIL odgovor$ = "n" Ova petlja prestati e se izvravati samo ako pritisnemo "n". Osnovna razlika izmeu ispitivanja uvjeta na poetku petlje i i spitivanja uvjeta na kraju petlje je u tome to e se naredbe u petlji koja ispituje uvjet na kraju izvriti bar jednom ak i ako uvjet za ponavljanje nije ispunjen. U petlji koja ispituje uvjet na poetku, ako uvjet nije ispunjen, nee se izvriti niti jedna naredba unutar petlje. Mogue je napisati beskonanu petlju bez WHILE i UNTIL uvjeta: DO PRINT broj%; broj% = broj% + 1 LOOPU ovakvoj strukturi moemo koristiti naredbu EXIT DO: DO PRINT broj%; IF broj% > 100 THEN EXIT DO broj% = broj% + 1 LOOP Meutim, svaku petlju sa EXIT DO moemo napisati kao DO LOOP strukturu sa WHILE ili UNTIL: DO UNTIL broj% > 100 PRINT broj%; broj% = broj% + 1 LOOPili: DO PRINT broj%; broj% = broj% + 1 LOOP WHILE broj% <= 100 OPERACIJE SA STRINGOVIMA String je

niz znakova (slovanih, brojanih i drugih znakova). Sadraj stringa uva se u string varijabli. Tip ovih varijabli oznaava se znakom "$". Duina string varijable moe iznositi najvie 32767 znakova. U raunalu, svaki znak je predstavljen brojanim kodom, tj svaki znak ima svoj broj. Znaci su rasporeeni prema tzv. ASCII kodu (American Standard Code for Information Interchange). Postoji 256 razliitih ASCII kodova. Slijedei 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 vie naredbi i funkcija za izdvajanje podstringa.LEFT$ Ova funkcija izdvaja prvih n karaktera nekog stringa: pozdrav$="Dobar dan" PRINT LEFT$(pozdrav$,3) DobRIGHT$ Ova funkcija izdvaja zadnjih n karaktera nekog stringa: PRINT RIGHT$(pozdrav$,3) danMID$ ova funkcija izdvaja dio stringa zadane duine poevi od zadanog mjesta: PRINT MID$(pozdrav$,4,2) arAko izostavimo broj karaktera koje elimo izdvojiti, tada e se izdvojiti svi karakteri od zadane pozicije do kraja stringa: PRINT MID$(pozdrav$,4) ar danLEN Ova funkcija prebrojava koliko karaktera je dugaak string: PRINT LEN (pozdrav$) 9Primjer: 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."POREENJE STRINGOVA Stringovi se porede po svojim ASCII kodovima, a poreenje poinje od prvog karaktera: "A" < "a" "abc" < "bca" "dan" < "danko" "abc" < " abc" "BB" < "Ba" Zbog toga to velika i mala slova imaju razliite ASCII kodove, dobro je prije poreenja stringove prevesti u mala slova odnosno velika slova. Za to nam slue 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 FUNKCIJELTRIM$(string) eliminira vodee praznine: " abc"="abc"RTRIM$(string) eliminira naknadne praznine: "abc "="abc"STR$(broj) pretvara numeriku varijablu u stringVAL(string) pretvara string u brojSTRING$(4,a) ispisuje etiri znaka "a"SPACE$(7) ispisuje sedam prazninaZAMJENA JEDNOG STRINGA DRUGIMMID$(pozdrav$,7,3)="no" u stringu "Dobar dan", poevi od sedmog mjesta, slijedea tri znaka zamjeni sa znakovima "no": PRINT pozdrav$ Dobar noINSTR$("Dobar dan","dan") pronalazi od kojeg mjesta se manji string pojavljuje u veem: PRINT INSTR$(pozdrav$,"dan") 7 GRAFIKA Da bi mogli crtati u QBASICU moramo aktivirati grafiki ekran. To se ini naredbom SCREEN. Vrsta grafikog ekrana zavisi o vrsti grafike kartice. Najee se koristi ekran niske rezolucije (SCREEN 1) i ekran visoke rezolucije (SCREEN 2).NISKA REZOLUCIJA. Aktivira se naredbom:SCREEN 1Rezolucija ovog ekrana je 320 x 200. To znai da je ekran podijeljen na 200 redova a u svakom redu ima 320 toaka. Toka 0,0 nalazi se u gornjem lijevom kutu, a toka 319,199 nalazi se u donjem desnom kutu.VISOKA REZOLUCIJA Aktivira se naredbom:SCREEN 2 Rezolucija ovog ekrana je 640 x 200. Toka 0,0 nalazi se u gornjem lijevom kutu, a toka 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 toku na zadanim koordinatama u boji koju zadamo. Parametar za boju moe se izostaviti.Primjer: Crtanje toke na sredini ekrana: SCREEN 1 PSET (160,100) Za crtanje crta i pravokutnika koristimo naredbu LINE LINE (x1,y1) (x2,y2),color,BF,stil (x1,x2) koordinate prve toke (x2,y2) koordinate druge toke color boja crte B crta pravokutnik sa suprotnim kutevima u tokama (x1,y1) i (x2,y2) F ispunjava pravokutnik bojom olovke stil vrsta linije (isprekidana, istokana 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 krunica, lukova, krunih isjeaka i elipsi koristimo naredbu CIRCLE. CIRLCE (x,y),p,color,po.kut,zav.kut,odnos

(x,y) koordinate sredita krunice p polumjer krunice color boja olovke po.kut poetak luka zav.kut kraj luka odnos odnos izmeu x i y osi kod elipsePrimjeri: SCREEN 1 pi!=3.14 'Krunica CIRCLE (160,100),30 'Luk CIRCLE (80,50),30,,pi!/2,pi! CIRCLE (240,50),30,,pi!,pi!/2 'Isjeak 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, moemo se posluiti naredbom PAINT. PAINT (x,y),boja ispune,boja granice,uzorak (x,y) koordinate toke u djelu ekrana kojeg treba ispuniti bojaisp. broj boje sa kojom se popunjava bojagr. boja sa kojom je uokvirena povrina koja se ispunjava uzorak uzorak kojim se oblik ispunjavaPrimjer: 'Crtanje krunice bojom 2 'i ispunjavanje bojom 3 SREEN 1 CIRCLE (160,160),100,2 PAINT (160,160),3,2 NIZOVI Kada u programu koristimo obine varijable, QBASIC rezervira odreeni dio memorije za spremanje te varijable. Taj dio memorije moemo zamisliti kao jednu ladicu na kojoj pie ime varijable, a u "ladici" se uva vrijednost te varijable. Svaki puta kada u programu koristimo tu varijablu, QBASIC e pronai tu "ladicu" i iz nje proitati trenutnu vrijednost varijable. Ako vie takvih "ladica" poredamo jednu do druge dobit emo niz. Niz je grupa vrijednosti spremljenih pod istim imenom. Zahvaljujui nizovima, moemo pristupiti svim vrijednostima niza kao i pojedinanim vrijednostima svakog elementa niza. Prije koritenja niza moramo ga deklarirati tj. moramo definirati njegovo ime, tip i veliinu. 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 tono odredili s kojim elementom elimo raditi, koristimo se indeksom elementa. Indeksi se piu u zagradama. Prvi element niza je ime$(1), drugi ime$(2) ... ...ime$(30). Dgranica i ggranica odreuju najnii i najvii indeks niza. Broj elemenata niza izraunava se po formuli ggranica dgranica+1. Kod deklaracije niza moe se upisati i samo gornja granica npr. DIM ime$(30). U tom sluaju dgranica je 0. Dgranica niza ne mora uvijek biti 0 ili 1. Moemo je zadati proizvoljno npr. DIM ime$ (30 TO 60) Kada elimo dodjeliti vrijednosti elementima niza posluit emo se FOR...NEXT petljom: FOR broj% = dgranica TO ggranica INPUT ime$(broj%) NEXT broj% Ispisivane vrijednosti elemenata niza takoer radimo pomou FOR...NEXT petlje: FOR broj% = dgranica TO ggranica PRINT ime$(broj%) NEXT broj% Primjeri.1. Ispii imena svih uenika koji su proli sa odlinim. ' Deklaracija niza od deset elmenata DIM ime$ (1 TO 10) DIM ocjena% (1 TO 10) ' Unoenje vrijednosti FOR broj% = 1 TO 10 PRINT "Upii ime uenika:" INPUT ime$(broj%) PRINT "Upii njegovu ocjenu:" INPUT ocjena%(broj%) NEXT broj% ' Traenje uenika s odlinim uspjehom PRINT "S odlinim su proli slijedei uenici:" 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 "Upii ime uenika:" 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% ZVUKSOUND sviranje pojedinih tonova (za zvune efekte) SOUND visina,trajanjevisina broj u intervalu od 37 do 32767 C 523 D 587 E 659 F 698 G 783 A 880 B 987trajanje broj u intervalu od 0 do 65535.Primjeri:visina% = 32767trajanje% = 246FOR i% = 60 TO 1 STEP 2 SOUND trajanje% i%/2,i%/20 SOUND visina%,i%/15NEXT i%visina% = 780trajanje% = 650FOR 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$ sadri podatke o tonovima koje treba odsvirati, duini note, oktavi, pauzama, povisilicama, snizilicama, tempu itd... C,D,E,F,G,A,B tonovi ,+ snizilica i povisilica Ln duina note, moe biti u intrvalu od 1 do 64. L1 cijela nota, l2 polovinka, l16 esnajstinka.... On visina oktave od 0 do 6. Na poetku vrijednost za oktavu je 4. Pn pauza duine 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"PLAY "L4 g f a g. d8 f a a1" ANIMACIJA Pomicanje nekog objekta po ekranu moemo ostvariti

pomou naredbi GET i PUT. Pomou naredbe GET definiramo dio ekrana na kojem se nalazi slika koju elimo pomicati. Postupak je slijedei: naredbom DIM dimenzioniramo niz koji e sluiti za spremanje slike sa ekrana nacrtamo sliku naredbom GET spremimo sliku u definirani niz. Problem je definiranje veliine niza koji je potreban za pamenje `eljene slike na ekranu. Broj elemenata niza izraunava 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 =67Dakle, treba definirati niz od 67 elemenata: DIM slika%(67)Ako u tom dijelu ekrana nacrtamo krug: SCREEN 1 CIRCLE (30,30),9tada taj krug moemo "skinuti " naredbom: GET (20,20) (40,40),slika%Tako spremljenu sliku moemo 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 nain prikazivanja slike i preklapanja s pozadinom. Osim PSET moe 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 "Pata-faol ja volim , pata-faol ivi vjeno" i crta crtu veliine 10 pixela CLS PRINT"Pata-faol ja volim" PRINT"Pata-faol ivi vjeno" LINE(0,0)-(10,10) ENDOvaj program pita korisnika njegov omiljeni nogometni klub, i ispisuje navijaku pjesmu:CLSINPUT "Koji je va omiljeni nogometni klub" ; a$PRINT UCASE$(a$) " je najbolji, ale ale!"ENDOsnovne naredbeTri osnovne naredbe su CLS,INPUT I PRINT. CLS je skraenica od CLear Screen, cls koristimo na poetku programa kako bi bili sigurni da je sav prijanji tekst sa ekrana obrisan. INPUT naredba slui za unos podataka. PRINT naredba ispisuje tekst na ekran npr. 10 PRINT "Hello world". Ove tri naredbe se najee koriste u BASIC programima. 10 CLS 20 PRINT "Kako se zove?" 30 INPUT A$ 40 PRINT "Drago mi je, ";A$ 50 ENDMatematike radnje Svaki BASIC jezik pa tako i QBasic mora moi izvoditi matematike radnje, u daljnjem tekstu objasnit u kako napraviti program za zbrajanje. Da bi napravili matematiki program morate znati simbole radnji.Takoer morate znati i osnovne naredbe iz prolog teksta. Ali ima i jedna nova naredba: x$=y (x$ predstavlja tip podataka (x se zamijeni nekim slovom),a y vrijednost odreenog slova). To je sve to treba znati za jednostavni matematiki program. Simboli : Zbrajanje - + Oduzimanje - - Djeljenje - / Mnoenje - *Primjer programa za mnoenje : 10 CLS 20 PRINT "Dobrodoao u program za mnoenje" 30 PRINT "Unesi dva broja" 40 INPUT A 50 INPUT B 60 C = A * B 70 PRINT A; "*" ; B; "=" ; C 80 ENDCrtanje U Qbasicu postoji i osnovno crtanje. Moete crtati krunice i linije te neke 3D oblike. Prije svakog crtanja morate upisati naredbu SCREEN 12Primjer programa za crtanje krugova: Nacrtat e krunicu u sredini ekrana radijusa 50 pixela.SCREEN 12 CIRCLE (320,240),100Primjer programa za crtanje linija: Linija vodoravna po sredini ekrana.SCREEN 12 LINE(320,0)-(320,480)

You might also like