36

Click here to load reader

Informatika 5 6 Dodatak Prirucniku Qbasic

  • Upload
    djuka65

  • View
    178

  • Download
    52

Embed Size (px)

Citation preview

Page 1: Informatika 5 6 Dodatak Prirucniku Qbasic

QBASICzadaci s rješenjima za 5. i 6. razred

Darko Krznar

PROFIL

5-6 Skripta informatika.indd 1 3.2.2009 12:54:50

Page 2: Informatika 5 6 Dodatak Prirucniku Qbasic

IzdavačProfil International, Zagreb, Kaptol 25

Predsjednik Izdavačkog savjetaDaniel Žderić

Za izdavačaAndrija Pećarić

Direktorica izdavaštva i razvojaIvančica Knapić

Glavna urednicaMarija Odak

Urednica Silvana Svetličić

LektoricaVesna Čondić

NaslovnicaStudio 2M

PrijelomGoran Vukašinović

TisakProfil

5-6 Skripta informatika.indd 2 3.2.2009 12:54:50

Page 3: Informatika 5 6 Dodatak Prirucniku Qbasic

SADRŽAJ

UVOD ..................................................................................................4

NAREDBE CLS, PRINT, INPUT ..................................................................5

NAREDBA GRANANJA IF-THEN ............................................................... 10

NAREDBA FOR-NEXT ............................................................................ 19

SLUČAJNI BROJEVI - RND ..................................................................... 29

CRTANJE U QBASICU ........................................................................... 32

5-6 Skripta informatika.indd 3 3.2.2009 12:54:50

Page 4: Informatika 5 6 Dodatak Prirucniku Qbasic

QBASIC • 5. i 6. razred4

UVODPoštovane kolegice i kolege! Qbasic - zadatke s rješenjima podjednako smo namijenili učenicima petih i šestih razreda, i vama - njihovim učiteljicama i učiteljima informatike. Zadaci koji prate nastavni plan i program, učenicima će olakšati usvajanje gradiva iz programiranja u Qbasicu. Dodatni sadržaji (nizovi, rad sa stringovima i sl.) korisna su pomoć prilikom pripremanja učenika za natjecanja iz informatike. Za sve smo zadatke pripremili i rješenja pa ćete lako provjeriti točnost i uspješnost rada svojih učenika. Trudili smo se i ovim dodatnim materijalom odgovoriti na potrebe kolegica i kolega čije ideje, potekle iz svakodnevnoga rada u razredu, osluškujemo i pretvaramo u uspješnu suradnju koja će se, vjerujemo, nastaviti i u godinama pred nama.

Silvana Svetličić, prof.UREDNICA INFORMATIKE

5-6 Skripta informatika.indd 4 3.2.2009 12:54:50

Page 5: Informatika 5 6 Dodatak Prirucniku Qbasic

5NAREDBE CLS, PRINT, INPUT

NAREDBE CLS, PRINT, INPUTQbasic je programski jezik interpreter u kojemu program pišemo nizanjem simboličkih naredaba koje se tijekom pokretanja interpretiraju, odnosno pretvaraju u strojni jezik. Da bi program bio razumljiv, nije dovoljno poznavati samo naredbe, već i pravila kako se naredbe zapisuju. To nazivamo sintaksa.Uobičajeno je da program u Basicu započinjemo naredbom CLS (engl. Clear Screen). Tom naredbom brišemo zaslon. Osim na početku, naredba sa može navesti i na onim mjestima gdje nam je potreban čist zaslon.Naredba PRINT služi za ispis. Budući da nam svaki program treba nešto ispisati, ona je vrlo bitna i rabi se u svakom programu. Ispisati možemo neki tekst ili sadržaj neke varijable.PRINT“Ovo je primjer ispisa teksta“ ispisuje tekst pod navodnicima.Iza naredbe PRINT možemo navesti znakove zarez (,) ili točku sa zarezom (;). Ako stavimo zarez, iduća naredba PRINT ispisat će se u istom retku uz 12 razmaka u odnosu na prethodnu, a znak točka sa zarezom također ispisuje u istom retku, ali bez razmaka.

PRINT“Dobar“, PRINT“Dan“Ispis: Dobar DanPRINT“Dobar“;PRINT“Dan“Ispis: DobarDan

Naredbom PRINT možemo ispisivati i sadržaj varijabla. Varijabla je rezervirano mjesto u memoriji koje može pamtiti podatke. Varijabla mora imati ime koje može biti jedno slovo ili cijela riječ. Kod imenovanja varijabla, treba se držati određenih pravila:

- ime varijable ne može biti rezervirana riječ (CLS, PRINT, INPUT...)- u imenu varijable ne može biti razmaka- ime varijable ne može početi brojkom ili posebnim znakom (+, -, %...).S obzirom na sadržaj postoje dvije vrste varijabla:- numeričke sadrže brojčane vrijednosti- znakovne (string) sadrže tekst i simbole. Ime string varijable završava znakom $.

Vrijednost koju može poprimiti numerička varijabla je između -32768 i 32767. Takva varijabla još se naziva cjelobrojna (INTEGER), a možemo ju pisati i znakom % (npr. a%, broj%). Ako je potreban unos broja izvan ovog raspona, rabe se LONG INTEGER varijable koje u imenu imaju znak & (a&, broj &,...). Takve varijable omogućuju unos brojeva u rasponu od -2.147.483.648 do 2.147.483.647.Vrijednost u neku varijablu možemo postaviti s pomoću naredbe pridruživanja. Evo nekoliko primjera:

a = 15 - varijabli a pridružena je vrijednost 15 broj = 1123 - varijabli broj pridružena je vrijednost 1123ime$=“PERO“ - string varijabli ime$ pridruženo je ime PERO c$ = “PERO IMA 5 IZ INFOMRATIKE.“ - string varijabli c$ pridružen je niz znakova

Kao što je vidljivo, kod pridruživanja vrijednosti string varijablama vrijednost koju pridružujemo, stavljamo pod navodnike.Vrijednosti u varijablu možemo postaviti i upisivanjem tipkovnicom uz primjenu naredbe INPUT. Kad program dođe do naredbe INPUT, prekida se njegovo izvođenje sve dok ne

5-6 Skripta informatika.indd 5 3.2.2009 12:54:50

Page 6: Informatika 5 6 Dodatak Prirucniku Qbasic

QBASIC • 5. i 6. razred6

unesemo vrijednost i potvrdimo tipkom Enter. Iza naredbe INPUT navodi se ime varijable u koju ćemo smjestiti uneseni podatak. Ako unesemo podatak koji ne odgovara tipu varijable, pojavit će se zahtjev za ponovnim unosom Redo from start.Da bi korisniku bilo razumljivo što treba unijeti u programu, uz naredbu INPUT možemo navesti i objašnjenje unosa pod navodnicima. Evo primjera:INPUT a - običan unosINPUT“Unesi broj:“,a - unos s objašnjenjemU radu s brojčanim varijablama potrebni su nam i aritmetički operatori s pomoću kojih izvodimo računske operacije s numeričkim varijablama.

Operatori jesu:+ - operator za zbrajanje- - operator za oduzimanje* - operator za množenje/ - operator za dijeljenjeINT - odcjepljuje decimale u broju INT(2,563) 2MOD - daje ostatak kod dijeljenja dvaju brojeva (10 MOD 3 1)

ZADATAK 1.

Izradi program kojim se unosi ime i broj godina. Program treba ispisati jednu rečenicu u kojoj će se rabiti uneseni podatci.

Ulaz: Marko10

Ispis: Bok, Marko, imaš 10 godina.

CLSINPUT“Unesi ime:“,ime$INPUT“Unesi broj godina:“,gPRINT“Bok “;ime$;“, imaš“;g;“ godina.“

ZADATAK 2.

Izradi program kojim se unosi ime i godina rođenja. Program treba ispisati koliko će godina unesena osoba imati 2050. godine.

Ulaz: Marko1999

Ispis: Marko, 2050 imat ćeš 51 god.

CLSINPUT“Unesi ime:“,ime$INPUT“Unesi godinu rođenja:“,gPRINT ime$;“, 2050 imat ćeš“;2050-g;“. god“

5-6 Skripta informatika.indd 6 3.2.2009 12:54:51

Page 7: Informatika 5 6 Dodatak Prirucniku Qbasic

7NAREDBE CLS, PRINT, INPUT

ZADATAK 3.

Izradi program kojim se unose dva broja. Program treba ispisati četiri osnovne računske operacije s tim brojevima te ispisati rezultat cjelobrojnog dijeljenja i ostatak kod dijeljenja.

CLSINPUT“Unesi 1. broj:“,aINPUT“Unesi 2. broj:“,bPRINT “Zbroj:“;a+bPRINT“Razlika:“;a-bPRINT“Umnožak:“;a*bPRINT“Kvocijent:“;a/bPRINT“Cjelobrojno dijeljenje:“;INT(a/b)PRINT“Ostatak kod dijeljenja:“;a MOD b

ZADATAK 4.

Izradi program kojim se unose stranice pravokutnika. Program treba ispisati opseg i površinu pravokutnika.

CLSINPUT“Unesi 1. stranicu pravokutnika:“,aINPUT“Unesi 2. stranicu pravokutnika:“,bPRINT “OPSEG:“;2*a+2*bPRINT“POVRŠINA:“;a*b

ZADATAK 5.

Izradi program kojim se unose dva broja. Program treba ispisati:- udvostručeni prvi broj umanjen za drugi broj uvećan za 10- kvocijent prvoga i drugog broja uvećan za njihov umnožak.

Ulazni podatci: 5,2

Izlazni podatci: -2, 12.5

CLSINPUT“Unesi 1. broj:“,aINPUT“Unesi 2. broj:“,bPRINT 2*a - (b+10)PRINT a/b + a*b

ZADATAK 6.

Izradi program kojim se unosi broj sekunda (<=999999). Program treba ispisati koliko je to sati, minuta i sekunda.

Ulaz: 5678

5-6 Skripta informatika.indd 7 3.2.2009 12:54:51

Page 8: Informatika 5 6 Dodatak Prirucniku Qbasic

QBASIC • 5. i 6. razred8

Izlaz: Sati: 1 Minuta: 34 Sekunda: 38

CLSINPUT“Unesi broj sekunda:“,a&h = INT(a&/3600)PRINT“Sati:“;hb = a& MOD 3600m = INT(b/60)PRINT“Minute:“;mPRINT“Sekunde:“; b MOD 60

ZADATAK 7.

Izradi program kojim se unosi iznos u kunama (< 1000). Program treba prikazati taj iznos u apoenima od 100 kn, 20 kn, 10 kn i 1 kn

Ulaz: 678

Izlaz: 100 kn: 6 20 kn: 3 10 kn: 1 1 kn: 8

CLSINPUT“Unesi iznos u kunama:“,ab1 = INT(a/100)PRINT“100 kn:“;b1b = a MOD 100b2 = INT(b/20)PRINT“20 kn:“;b2b = b MOD 20b3 = INT (b/10)PRINT“10 kn:“;b3PRINT“1 kn:“; b MOD 10

Ispis kod naredbe PRINT može se po potrebi obojiti ili pozicionirati na neko mjesto na zaslonu naredbama COLOR i LOCATE.Naredba COLOR služi za boju. Uz naredbu zapisujemo dva broja: prvi broj predstavlja boju teksta, a drugi broj boju pozadine. Ako se navodi samo jedan broj, tada se on odnosi na boju teksta. Prvi broj može biti u rasponu od 0 do 31, a drugi od 0 do 15. Boje 0-15 i 16-31 jednake su, samo što boje iznad 15 trepere.Boje jesu:0 crna, 1 plava, 2 zelena...15 bijela.Naredba LOCATE služi za lociranje ispisa na zaslonu. Ako se ne rabi, ispisuje se od gornjega lijevog vrha zaslona. U tekstovnom načinu rada na zaslon može stati 25 redaka, a u svaki redak 80 stupaca. Naredba LOCATE ima dvije vrijednosti: prva određuje redak (<25), a druga određuje stupac (<80). Gornji lijevi kut zaslona ima koordinate 0,0, gornji desni 0,80, donji lijevi (25,0) i donji desni (25,80).

5-6 Skripta informatika.indd 8 3.2.2009 12:54:51

Page 9: Informatika 5 6 Dodatak Prirucniku Qbasic

9NAREDBE CLS, PRINT, INPUT

ZADATAK 8.

Izradi program kojim će se unijeti ime, redak i stupac za ispis. Program treba uneseno ime ispisati na određenoj lokaciji u zelenoj boji.

CLSINPUT“Unesi ime:“;ime$INPUT“Unesi redak:“;rINPUT“Unesi stupac:“;sCLSCOLOR 2LOCATE r,sPRINT ime$

ZADATAK 9.

Izradi program kojim se unosi datum i ispisuje na sredini zaslona u plavoj treperećoj boji na crvenoj podlozi.

CLSINPUT“Unesi datum:“;datum$COLOR 17,4LOCATE 12,40PRINT datum$

ZADATAK 10.

Izradi program kojim će se s pomoću znaka “*” ispisati plus veličine 5 redaka i stupaca. Srednja zvjezdica mora biti na 12,40, a rubne zvjezdice moraju treperiti.

CLSLOCATE 12,40:COLOR 1:PRINT“*“LOCATE 11,40:COLOR 2:PRINT“*“LOCATE 10,40:COLOR 19:PRINT“*“LOCATE 13,40:COLOR 3:PRINT“*“LOCATE 14,40:COLOR 20:PRINT“*“LOCATE 12,39:COLOR 9:PRINT“*“LOCATE 12,38:COLOR 23:PRINT“*“LOCATE 12,41:COLOR 11:PRINT“*“LOCATE 12,42:COLOR 25:PRINT“*“

5-6 Skripta informatika.indd 9 3.2.2009 12:54:51

Page 10: Informatika 5 6 Dodatak Prirucniku Qbasic

QBASIC • 5. i 6. razred10

NAREDBA GRANANJA IF-THENNaredba grananja omogućuje nam da prema potrebi mijenjamo smjer izvođenja programskih naredaba ovisno o istinitosti postavljenog uvjeta. Naredba IF-THEN ima nekoliko oblika:

1. IF uvjet THEN naredbaTo je najjednostavniji oblik IF-THEN naredbe. Ispituje se istinitost logičkog uvjeta i ako je uvjet istinit, izvršava se naredba iza THEN, a ako je lažan, prelazi se na sljedeću liniju programa.

2. IF uvjet THEN naredba ELSE naredbaOvaj se oblik rabi ako ispitujemo istinitost nekog uvjeta koji može imati samo dvije mogućnosti (npr. broj je paran ili neparan, brojevi su djeljivi ili nisu i sl.). Ako je uvjet istinit, izvršava se naredba iza THEN, a ako je lažan, naredba iza ELSE.

3. IF uvjet THENNaredbe... END IFTaj se oblik rabi ako je potrebno izvršiti više naredaba kad je uvjet zadovoljen. Ovdje naredba IF mora završiti s ENDIF.

4. IF uvjet THENNaredbe ELSEIF uvjet THEN Naredbe ELSEIF uvjet THEN Naredbe

END IFOvim se oblik koristimo kada moramo izvršiti više naredaba kada je uvjet zadovoljen, a uvjet može poprimiti više mogućnosti.

Osim IFTHEN naredbe, kao naredba grananja može se rabiti i naredba SELECT CASE. Ta je naredba korisna ako imamo više mogućih vrijednosti varijable koju testiramo.

SLECET CASE varijabla CASE uvjet Naredbe CASE uvjet Naredbe CASE uvjet Naredbe … CASE ELSE NaredbeEND SELECT

5-6 Skripta informatika.indd 10 3.2.2009 12:54:52

Page 11: Informatika 5 6 Dodatak Prirucniku Qbasic

11NAREDBA GRANANJA IF-THEN

ZADATAK 1.

Učenici neke škole putuju na izlet autobusima. U jedan autobus može stati 45 učenika. Izradi program kojim će se unijeti broj učenika i ispisati koliko je najmanje autobusa potrebno za njihov prijevoz. Ako jedan autobus nije popunjen, treba ispisati koliko je učenika u njemu.

Ulazni podatci: Broj učenika: 67

Izlazni podatci: Potrebno autobusa: 2 Broj učenika u zadnjem autobusu: 22

CLSINPUT”Unesi broj učenika:”,nIF n MOD 45 = 0 THEN PRINT“Broj učenika:“; n / 45 IF n MOD 45 <> 0 THEN PRINT “Broj učenika:“;INT(n/45)+1PRINT “Broj učenika u zadnjem autobusu:“; n MOD 45END IF

U tom je programu potrebno ispitati je li broj učenika djeljiv s 45. Ako jest, ispiše se kvocijent, a ako nije, ispisuje se cjelobrojni kvocijent uvećan za 1. Na primjer, ako je broj učenika 90, treba 2 autobusa, a ako je broj učenika 95, potrebna su 3.

ZADATAK 2.

Izradi program kojim se unose dvije stranice četverokuta. Ako su unesene stranice jednake, program treba ispisati KVADRAT i izračunati njegov opseg, a u protivnom ispisati PRAVOKUTNIK i izračunati njegovu površinu.

Ulazni podatci:Stranice četverokuta: 5,4

Izlazni podatci: PRAVOKUTNIK 20CLSINPUT”Unesi 1. stranicu četverokuta:”,aINPUT“Unesi 2. Stranicu četverokuta:“,bIF a=b THEN PRINT“KVADRAT“ PRINT 4*aELSE PRINT“PRAVOKUTNIK“ PRINT a*bEND IF

5-6 Skripta informatika.indd 11 3.2.2009 12:54:52

Page 12: Informatika 5 6 Dodatak Prirucniku Qbasic

QBASIC • 5. i 6. razred12

ZADATAK 3.

Marko ima vrpcu duljine m centimetara. Treba ju izrezati na određeni broj dijelova duljine n. Izradi program koji će izračunati koliko se cijelih vrpca može izrezati te koliki dio vrpce ostane. Duljina je vrpce cijeli broj manji od 1000.

Ulazni podatci: Duljina vrpce: 100 Duljina jednoga dijela: 25

Izlazni podatci: Broj dijelova vrpce: 4

CLSINPUT“Unesi duljinu vrpce:“,mINPUT“Unesi duljinu jednoga dijela vrpce:“,nIF m MOD n = 0 THEN PRINT “Broj dijelova vrpce:“; m / nELSE PRINT “Broj dijelova vrpce:“;INT(m / n) PRINT “Ostatak:“;m MOD nEND IF

ZADATAK 4.

Izradi program kojim se unose tri stranice trokuta. Program treba ispisati je li trokut jednakostraničan (ima sve stranice jednake), raznostraničan (ima sve stranice različite) ili jednakokračan (ima dvije stranice jednake).

Ulazni podatci: Stranice trokuta: 4,5,6

Izlazni podatci: RAZNOSTRANIČAN

CLSINPUT“Unesi 1. stranicu trokuta:“;aINPUT“Unesi 2. stranicu trokuta:“;bINPUT“Unesi 3. stranicu trokuta:“;cIF a = b AND a = c AND b = c THEN PRINT „JEDNAKOSTRANIČAN“ENDEND IFIF a = b OR a = c OR b = c THEN PRINT“JEDNAKOKRAČAN“ ENDEND IFIF a <> b AND a <> c AND b <> c THEN PRINT “RAZNOSTRANIČAN“

U ovom se programu rabe logički operatori AND i OR. Operator AND zahtijeva da svi uvjeti budu istiniti, dok operator OR zahtijeva da bar jedan uvjet bude istinit.

5-6 Skripta informatika.indd 12 3.2.2009 12:54:52

Page 13: Informatika 5 6 Dodatak Prirucniku Qbasic

13NAREDBA GRANANJA IF-THEN

ZADATAK 5.

Marko ima kolekciju od n CD-a koje želi složiti u kutije. U jednu kutije stane 20 CD-a, a njezina je cijena 12 kuna. Ako kupi više od 10 kutija, cijena jedne je 10 kuna, a za kupnju više od 20 kutija, cijena jedne je 8 kuna. Pomozi Marku izračunati koliko kutija mora kupiti i koliko mu je novca potrebno. U programu se unosi broj CD-a (manji od 1000), a ispisuje broj kutija i iznos u kunama.

Ulazni podatci: Broj CD-a: 345

Izlazni podatci: Broj kutija: 18 Iznos: 180

CLSINPUT“Unesi broj CDa:“,nIF n MOD 20 = 0 THEN brk = n / 20 ELSE brk = INT(n / 20) + 1c = 12IF brk > 20 THEN c = 8IF brk > 10 AND brk <= 20 THEN c=10PRINT“Broj kutija:“; brkPRINT“Cijena:“; brk * c

ZADATAK 6.

Izradi program kojim se unosi 10 brojeva (manjih od 1000) i ispisuje srednja vrijednost, najveći i najmanji uneseni broj.

Ulazni podatci:Brojevi: 5,12,8,9,3,7,22,1,66,8

Izlazni podatci: Srednja vrijednost: 14.1 Najmanji broj: 1 Najveći broj: 66

CLSmin = 9999max = 01 INPUT“Unesi broj:“,aIF a > max THEN max = aIF a < min THEN min = azbr = zbr + abr = br + 1IF br < 10 THEN GOTO 1PRINT “Srednja vrijednost:“; zbr/10PRINT“Najmanji broj:“; minPRINT“Najveći broj:“;max

5-6 Skripta informatika.indd 13 3.2.2009 12:54:53

Page 14: Informatika 5 6 Dodatak Prirucniku Qbasic

QBASIC • 5. i 6. razred14

U ovom programu petlja je ostvarena s pomoću IFTHEN naredbe i naredbe GOTO. Naredba GOTO je naredba za bezuvjetni skok. S pomoću nje skačemo na neku liniju programa. Kontrolna varijabla br broji unesene brojeve. Kada dođe do 10, petlja završava i prelazi se na ispis.

ZADATAK 7.

Izradi program kojim se unose dimenzije poda kupaonice koja ima pravokutan oblik. U jednome dijelu kupaonice nalazi se kada i na tom dijelu ne treba postavljati pločice. Dimenzije kade također se unose. Program treba izračunati koliko je kvadrata pločica potrebno za opločivanje kupaonice, koliko će paketa pločica trebati ako u jednom paketu ima 2 kvadrata pločica te koliki je ukupan trošak za pločice ako jedan paket stoji 150 kuna.

Ulazni podatci:Dimenzije kupaonice: 5,3Dimenzije kade: 2,1

Izlazni podatci: Kvadrata pločica: 13 Broj paketa: 7 Cijena 1050

CLSINPUT“Unesi dužinu kupaonice:“,dkINPUT“Unesi širinu kupaonice:“,skINPUT“Unesi dužinu kade;“, dINPUT“Unesi širinu kade:“,sp=dk*sk-d*sIF p MOD 2 = 0 THEN bp=p / 2 ELSE bp = INT(p / 2)+1c = bp * 150PRINT“Kvadrata pločica:“;pPRINT“Broj paketa:“,bpPRINT“Cijena:“;c

ZADATAK 8.

Izradi program kojim se unosi broj mjeseca i ispisuje koliko taj mjesec ima dana.

CLSINPUT“Unesi broj mjeseca:“;aSELECT CASE a CASE 1,3,5,7,8,10,12 PRINT“Mjesec ima 31 dan“ CASE 4,6,9,11 PRINT“Mjesec ima 30 dana“ CASE 2 PRINT“Mjesec ima 28 ili 29 dana“END SELECT

5-6 Skripta informatika.indd 14 3.2.2009 12:54:53

Page 15: Informatika 5 6 Dodatak Prirucniku Qbasic

15NAREDBA GRANANJA IF-THEN

ZADATAK 9.

Izradi program kojim se unose dva broja i znak za računsku operaciju. Program treba ispisati rezultat računske operacije. Ako je računska operacija oduzimanje, potrebno je od većega broja oduzeti manji.

Ulazni podatci:1. broj: 52. broj: 2Operator: +

Izlazni podatci: 7

CLSINPUT“Unesi 1. broj:“,aINPUT“Unesi 2. Broj:“,bINPUT“Unesi znak za računsku operaciju:“,o$

SELECT CASE o$ CASE “+“ PRINT“Zbroj:“;a+b CASE “-” IF a<b THE PRINT“Razlika :“;b-a IF a>b THEN PRINT“Razlika:“;a-b CASE “*“ PRINT“Umnožak:“;a*b CASE „/“ PRINT“Kvocijent:“;a/bEND SELECT

ZADATAK 10.

Izradi program kojim se unosi ime. Ako je ime žensko, treba ga ispisati na sredini ekrana u crvenoj boji. Ako je ime muško, treba ga ispisati na sredini zaslona u plavoj boji. Ime je žensko ako završava na A, a muško ako završava na bilo koje drugo slovo.

CLSINPUT“Unesi ime:“;a$b$ = RIGHT$(a$,1)SELECT CASE a$ CASE “A“ LOCATE 12,40 COLOR 4 PRINT a$ CASE ELSE LOCATE 12,40 COLOR 2 PRINT a$END SELECT

5-6 Skripta informatika.indd 15 3.2.2009 12:54:53

Page 16: Informatika 5 6 Dodatak Prirucniku Qbasic

QBASIC • 5. i 6. razred16

ZADATAK 11.

Marko je vrstan košarkaš. Posebno voli pogađati trice. No ponekad pretjeruje kada prijateljima govori koliko ih je pogodio, ali je uvijek iskren u broju pogođenih dvica. Izradi program kojim se unosi ukupan broj poena koje je postigao Marko te broj pogođenih šuteva za dva poena i za tri poena. Ispitaj je li broj pogođenih trica moguć ili je Marko pretjerao. Ako je pretjerao, izračunaj koliko je trica najviše mogao pogoditi. Zbroj koševa za dva i tri poena uvijek će biti jednak ili veći od ukupnog broja poena.

ULAZ: Poena: 33 Dvica: 6 Trica: 7

IZLAZ: Marko nije pretjerao.

CLSINPUT“Unesi broj poena:“,bpINPUT“Broj koševa za 2:“;bk2INPUT“Broj koševa za 3:“;bk3IF bp=bk2*2 + bk3*3 THEN PRINT “Marko nije pretjerao“ELSE PRINT “Marko je pretjerao“ PRINT“Mogao je pogodti “;(bp-bk2*2)/3;“ trica“END IF

ZADATAK 12.

Ksenija obožava kupovati na rasprodajama. Pronašla je jednu trgovinu u kojoj prilikom kupnje triju proizvoda onaj najjeftiniji dobije u pola cijene. Izradi program kojim se unosi cijena za tri proizvoda (cijeli broj manji od 1000). Unesena tri broja bit će različita. Program treba ispisati iznos koji će Ksenija platiti s obzirom na sniženje te kolika će biti ušteda prema punoj cijeni.Ulazni podatci:

Cijene proizvoda: 120, 60, 200

Izlazni podatci: Ukupna cijena: 350 Ušteda: 30

CLSINPUT“Unesi cijenu prvog proizvoda:“;c1INPUT“Unesi cijenu drugog proizvoda:“;c2INPUT“Unesi cijenu trećeg proizvoda:“;c3IF c1<c2 AND c1<c3 THEN uk=c2+c3+c1/2IF c2<c1 AND c2<c3 THEN uk=c1+c3+c2/2IF c3<c1 AND c3<c2 THEN uk=c1+c2+c3/2PRINT“Ukupna cijena:“;ukPRINT“Ušteda:“;c1+c2+c3-uk

5-6 Skripta informatika.indd 16 3.2.2009 12:54:53

Page 17: Informatika 5 6 Dodatak Prirucniku Qbasic

17NAREDBA GRANANJA IF-THEN

ZADATAK 13.

Marko obožava „surfati“ internetom. Na žalost, ima vrlo sporu modemsku vezu koja se plaća prema vremenu provedenom na internetu. Tako je sat interneta u terminu od 0 do 7 sati 2 kune, između 7 i 19 sati 4 kune, a od 19 do 24 sata ponovno 2 kune. Marko smije „surfati“ jedanput dnevno. Izradi program kojim ćeš pomoći Marku da vodi računa o svojim troškovima. Program traži unos za vrijeme početka veze i vrijeme kraja veze (oba broja su cijela između 0 i 24). Veza nikada ne će prelaziti u drugi dan, a može započeti u satu sa skupljom tarifom i završiti u satu s jeftinijom tarifom i obratno. Broj za početak veze bit će uvijek manji od broja za kraj veze.

Ulazni podatci: Sat početka veze: 14 Sat završetka veze: 17

Izlazni podatci: Ukupni trošak: 12 kn

CLSINPUT“Unesi sat početka veze:“;h1INPUT“Unesi sat završetka veze:“;h2IF h1 < 7 AND h2 <7 THEN cij = (h2-h1) * 2IF h1 < 7 AND h2 > 7 AND h2 < 19 THEN cij = (7-h1)*2 + (h2-7)*4IF h1<7 AND h2 > 19 THEN cij = (7-h1)*2 + 12*4 + (h2-19)*2IF h1 >=7 AND h2 < 19 THEN cij = (h2-h1)*4IF h1 >=7 AND h1<19 AND h2 >19 THEN cij = (19-h1)*4 + (h2-19)*2IF h1>=19 AND h2 >= 19 THEN cij = (h2-h1)*4PRINT“Ukupni trošak:“;cij

ZADATAK 14.

U glavnom gradskom kinu imaju problema s određivanjem početaka kinopredstava. Naime, kada jedna predstava završi, potrebno je 30 minuta da se kino pripremi za novu predstavu. Izradi program kojim će se unijeti sat i minuta početka prve predstave te duljina trajanja predstave. Program treba ispisati kada najranije može započeti nova predstava.

Ulazni podatci: Sat početka predstave: 15 Minuta početka predstave: 30 Duljina trajanja predstave: 1,40 (sati i minute)

Izlazni podatci: Početak sljedeće predstave: 17 sati 40 minutaCLSINPUT “Unesi sat početka predstave:”, h1INPUT “Unesi minutu početka predstave:”, m1INPUT “Unesi duljinu trajanja predstave:”; h2, m2h = h1 + h2m = m1 + m2 + 30IF m > 60 THEN

5-6 Skripta informatika.indd 17 3.2.2009 12:54:54

Page 18: Informatika 5 6 Dodatak Prirucniku Qbasic

QBASIC • 5. i 6. razred18

h = h + INT(m / 60) m = m MOD 60END IFPRINT “Početak sljedeće predstave:”; h; “ sati “; m; “ minuta “

ZADATAK 15.

Marija voli peći kolače. Peče ih u posudi u koju stane 30 kolača. Za pečenje jedne posude treba 20 minuta. Kada izvadi pečene kolače, treba proći 10 minuta kako bi počela peći sljedeću posudu. Izradi program koji će pomoći Mariji izračunati koliko će dugo peći sve kolače. U programu se unosi broj kolača koje je Marija izradila, a ispisuje koliko joj vremena treba da ih sve ispeče. Ako je broj kolača veći od 500, Marija će ih peći u dvije posude, ali u tom je slučaju potrebno 15 minuta da započne peći nove dvije posude.

Ulazni podatci: Broj kolača: 150

Izlazni podatci: Ukupno vrijeme pečenja: 140 minuta

CLSINPUT “Unesi broj kolača:”; nIF n <= 500 THEN IF n MOD 30 = 0 THEN brp = n / 30 ELSE brp = INT(n / 30) + 1 uv = brp * 20 + (brp - 1) * 10ELSE IF n MOD 60 = 0 THEN brp = n / 60 ELSE brp = INT(n / 60) + 1 uv = brp * 20 + (brp - 1) * 15END IFPRINT “Ukupno vrijeme pečenja:”; uv

5-6 Skripta informatika.indd 18 3.2.2009 12:54:54

Page 19: Informatika 5 6 Dodatak Prirucniku Qbasic

19NAREDBA FOR-NEXT

NAREDBA FOR-NEXTNaredba FORNEXT još se naziva i petlja bez logičkog uvjeta. Služi za ponavljanje dijela programa točno određeni broj puta. Dakle, ako se želimo koristiti FOR-NEXT petljom, moramo znati koliko puta želimo izvršiti neki dio programa. FOR-NEXT petlja zapisuje se na sljedeći način:FOR x = n TO m (STEP k) naredbe …NEXT xx kontrolna varijabla u petljin početna vrijednost kontrolne varijablem završna vrijednost kontrolne varijablek korak u petljiKontrolna varijabla mijenja se od početne vrijednosti prema završnoj, i to za korak k. Opciju STEP nije potrebno pisati ako je korak 1. Ako je korak veći od 1 ili negativan, mora se pisati. Korak je negativan ako je početna vrijednost kontrolne varijable veća od završne vrijednosti. FOR-NEXT petlja završava ključnom riječi NEXT.

ZADATAK 1.

Napiši program kojim se ispisuju svi parni dvoznamenkasti brojevi i ispisuje njihov zbroj.

CLSFOR x = 10 TO 98 STEP 2 PRINT x; zbr = zbr + xNEXT xPRINTPRINT“Zbroj parnih dvoznamenkastih brojeva je:“;zbr

ZADATAK 2.

Napiši program kojim se unosi jedan troznamenkasti broj. Program treba ispisati koliko ima troznamenkastih brojeva većih od unesenog broja koji su djeljivi s 3. Program treba ispisati zbroj tih brojeva.

Ulazni podatci: Broj: 428

Izlazni podatci: Brojeva djeljivih s 3: 191 Zbroj: 136374

CLSINPUT“Unesi jedan troznamenkasti broj:“,aFOR x = a+1 TO 999 IF x MOD 3 = 0 THEN

5-6 Skripta informatika.indd 19 3.2.2009 12:54:54

Page 20: Informatika 5 6 Dodatak Prirucniku Qbasic

QBASIC • 5. i 6. razred20

br = br+1 zbr = zbr + x END IFNEXT xPRINT“Ukupno brojeva djeljivih s 3:“;brPRINT“Zbroj tih brojeva:“;zbr

ZADATAK 3.

Izradi program kojim se unosi dužina, širina i visina prostorije te broj otvora prostorije. Za svaki otvor treba unijeti širinu i visinu. Program treba izračunati koliko u toj prostoriji ima površine za bojenje (ne boji se pod i otvori), koliko je kanta boje potrebno ako se s jednom kantom može obojiti 20 kvadrata te koliko će koštati bojenje ako je jedna kanta 120 kn. Sve se dimenzije unose u metrima.

Ulazni podatci: Dimenzije prostorije: 6,4 Broj otvora: 2 Dimenzije otvora: 2,1 i 1,1

Izlazni podatci: Ukupna površina za bojenje: 81 Broj kanta: 5 Cijena: 600

CLSINPUT”Unesi dužinu prostorije:“,dINPUT“Unesi širinu prostorije:“,sINPUT“Unesi visinu prostorije:“,vp1=d*sp2=2*d*vp3=2*s*vpz=p1+p2+p3INPUT“Unesi broj otvora:“,nFOR x=1 TO n INPUT“Unesi širinu otvora:“,so INPUT“Unesi visinu otvora:“,vo po=po+so*voNEXT xpu=pz-poIF pu MOD 20 = 0 THEN brk=pu / 20 ELSE brk=INT(pu / 20) + 1PRINT “Ukupna površina za bojenje:“;puPRINT“Broj kanta:“;brkPRINT“Cijena:“;brk*120

U ovom je zadatku prvo potrebno izračunati ukupnu površinu zidova (bez poda). Zatim se unose dimenzije otvora i računa njihova ukupna površina. Kada dobijemo ukupnu površinu (varijabla pu), računamo broj kanta s bojom te ukupnu cijenu boje.

5-6 Skripta informatika.indd 20 3.2.2009 12:54:54

Page 21: Informatika 5 6 Dodatak Prirucniku Qbasic

21NAREDBA FOR-NEXT

ZADATAK 4.

Izradi program kojim se unosi broj ocjena te ocjene iz svih predmeta. Program treba ispisati opći uspjeh, i to po sljedećem kriteriju:- ako je ijedna ocjena 1, opći uspjeh je nedovoljan - ako je prosjek ocjena manji od 2,5, opći uspjeh je dovoljan- ako je prosjek ocjena manji od 3,5 i jednak ili veći od 2,5, opći uspjeh je dobar- ako je prosjek manji od 4,5 i jednak ili veći od 3,5, opći uspjeh je vrlo dobar- ako je prosjek jednak ili veći od 4,5, opći uspjeh je odličan.Kod unosa ocjena uvijek se moraju unijeti sve ocjene bez obzira na unesenu jedinicu.

Ulazni podatci: Broj ocjena: 5 Ocjene: 4,3,4,5,4

Izlazni podatci: Vrlo dobar

CLSINPUT”Unesi broj ocjena:“;nFOR x=1 TO n INPUT“Unesi ocjenu:“,o IF o=1 THEN ind=1 zbr = zbr + oNEXT xIF ind=1 THEN PRINT“Opći uspjeh je nedovoljan“ENDEND IFpro = zbr / nSELECT CASE pro CASE IS < 2.5 PRINT “Opći uspjeh je dovoljan“ END CASE IS <= 3.5 PRINT“Opći uspjeh je dobar“ END CASE IS <=4.5 PRINT“Opći uspjeh je vrlo dobar“END CASE ESLE PRINT“Opći uspjeh je odličan“END SELECT

Budući da se ocjene u programu moraju unijeti za sve predmete bez obzira na unesenu jedinicu, ovdje je rabljena varijabla ind koja će u slučaju unesene jedinice poprimiti vrijednost 1. Ako se ne unese ocjena 1, varijabla ind imat će vrijednost 0. Ispitivanje vrijednosti varijable ind utvrđujemo je li opći uspjeh nedovoljan. Ako nije, računa se prosjek ocjena i opći uspjeh prema opisanom kriteriju.

5-6 Skripta informatika.indd 21 3.2.2009 12:54:55

Page 22: Informatika 5 6 Dodatak Prirucniku Qbasic

QBASIC • 5. i 6. razred22

ZADATAK 5.

Trener košarkaškog kluba ima problema s nekim igračima koji žele izbjegavati treninge. Da bi sebi olakšao posao otkrivanja koji igrač nije došao na trening, osmislio je sljedeću taktiku. Svim je igračima podijelio dresove s brojevima 4,5,6,7…15. Svaki put na treningu nedostaje jedan igrač od njih ukupno 12. Izradi program kojim će se unijeti 11 brojeva, a program treba ispisati koji broj nedostaje na treningu.

Ulazni podatci: 6,7,10,11,4,5,9,8,15,13,14

Izlazni podatci: 12

CLSFOR x=1 TO 11 INPUT“Unesi broj igrača:“,a zbr = zbr + aNEXT xPRINT“Na treningu nema igrača s brojem:“;114-zbr

Budući da je ukupan zbroj brojeva na dresovima igrača 114, igrač koji nedostaje dobit će se tako da se od broja 114 oduzme zbroj brojeva na dresovima prisutnih igrača.

ZADATAK 6.

Na jedan CD stane 80 minuta zvuka, odnosno 4800 sekunda. Izradi program kojim se unosi duljina trajanja za n pjesama u sekundama. Program treba ispisati koliko će pjesama stati na CD te koliko će slobodnog prostora ostati. Pjesme se stavljaju onim redom kako se unose.

Ulazni podatci:Broj pjesama: 3Duljina trajanja: 2000, 2500, 1000

Izlazni podatci: Broj pjesama: 2 Slobodnog mjesta: 300

CLSINPUT“Unesi broj pjesama:“,nFOR x=1 TO n INPUT“Duljina trajanja pjesme:“,a us = us + a IF us > 4800 THEN brp = brp - 1 us = us - aGOTO 1 END IF brp = brp + 1NEXT x1 PRINT“Broj pjesama:“; brp+1PRINT“Slobodnog prostora:“;4800 - usEND

5-6 Skripta informatika.indd 22 3.2.2009 12:54:55

Page 23: Informatika 5 6 Dodatak Prirucniku Qbasic

23NAREDBA FOR-NEXT

ZADATAK 7.

Izradi program kojim se unosi nosivost lifta u kilogramima te broj osoba koje ulaze u lift. Za svaku se osobu unosi njezina težina. Program treba ispisati je li lift preopterećen ili nije te ako je preopterećen, koliko osoba može ostati u liftu da bi mogao krenuti. U slučaju preopterećenja iz lifta izlazi osoba koja je posljednja ušla.

Ulazni podatci: Nosivost lifta: 650 Broj osoba: 4 Težine osoba: 120,90,100,85

Izlazni podatci: Lift nije preopterećen.

CLSINPUT“Unesi nosivost lifta:“,nINPUT“Unesi broj osoba:“,aFOR x=1 TO a INPUT“Težina osobe:“; t ut = ut + t IF ut > n THEN PRINT“Lift je preopterećen:“ PRINT“Broj osoba koje mogu ostati u liftu:“;x - 1 END END IF brp = brp + 1NEXT xPRINT“Lift nije preopterećen“

ZADATAK 8.

Izradi program kojim će se unijeti dva broja manja od 10000. Program treba ispisati koliko ima parnih brojeva između tih dvaju unesenih brojeva.

Ulazni podatci: 1. broj: 45 2. broj: 90

Izlazni podatci: 22

CLSINPUT“Unesi prvi broj:“,aINPUT“Unesi drugi broj:“,bFOR x = a+1 TO b-1 IF x MOD 2 = 0 THEN br = br + 1NEXT xPRINT br

5-6 Skripta informatika.indd 23 3.2.2009 12:54:55

Page 24: Informatika 5 6 Dodatak Prirucniku Qbasic

QBASIC • 5. i 6. razred24

ZADATAK 9.

Ivona ima štene po imenu Čili i mora ga redovito hraniti. Čili je naučeno jesti svaka 4 sata od kada se probudi s time da nakon 22 sata više ne smije jesti. Čili se uvijek budi između 4 i 10 sati ujutro, a poslijepodne spava između 15 i 17 sati. Ako vrijeme hranjenja padne u terminu spavanja, tada se preskače. Izradi program kojim ćeš pomoći Ivoni da odredi u koje vrijeme mora hraniti Čilija. U program se unosi vrijeme kada se Čili probudio (cijeli broj između 4 i 10), a program treba ispisati u koja se vremena Čili treba nahraniti i koliko će obroka dnevno imati.

Ulazni podatci: Vrijeme buđenja: 6

Izlazni podatci: Vrijeme obroka: 6,10,14,18,22 Broj obroka: 5

CLSINPUT“Unesi vrijeme buđenja:“,vFOR x = v TO 22 STEP 4 IF x <=15 OR x>=17 THEN PRINT x; br = br + 1 END IFNEXT xPRINTPRINT“Broj obroka:“; br

ZADATAK 10.

Marko je odlučio promijeniti mobilnog operatera jer je dobio jedinstvenu ponudu kojom se pet razgovora kraćih od 20 sekunda ne naplaćuju. Izradi program koji će pomoći Marku da vodi brigu o troškovima telefoniranja. U program se unosi broj poziva i duljina trajanja svakoga poziva. Program treba ispisati ukupno vrijeme trajanja poziva koji se naplaćuju te ukupan trošak poziva ako jedna sekunda stoji 2 lipe. Trošak treba iskazati u kunama i lipama.

Ulazni podatci: Broj poziva: 3 Duljina trajanja poziva: 40, 10, 30

Izlazni podatci: Ukupno poziva za naplatu: 70 Ukupna cijena poziva: 1 kuna i 40 lipa

CLSINPUT“Unesi broj poziva:“;nFOR x = 1 TO n INPUT“Unesi duljinu trajanja poziva:“,t

5-6 Skripta informatika.indd 24 3.2.2009 12:54:55

Page 25: Informatika 5 6 Dodatak Prirucniku Qbasic

25NAREDBA FOR-NEXT

IF t<20 THEN bp=bp+1 IF bp>5 THEN ut = ut + t ELSE ut = ut + t END IFNEXT xPRINT“Ukupno trajanje poziva:“;uttrosak = ut * 2PRINT“Ukupan trošak poziva;“; INT(trosak / 100);“ kuna i “;trosak MOD 100;“ lipa“

ZADATAK 11.

Marko je trener nogometne momčadi. Primijetio je da svake godine tijekom zimskoga odmora neki igrači dobiju na težini. Igrač je normalne težine ako je razlika njegove visine u centimetrima i 100 veća ili jednaka njegovoj težini. Izradi program koji će pomoći Marku da ustanovi koji su igrači prekomjerne težine. Program traži unos broja igrača te za svakoga visinu i težinu. Program treba ispisati koliko je igrača prekomjerne, a koliko normalne težine.

Ulazni podatci: Broj igrača: 3 Visina i težina igrača: 185,100 170,65 192,105

Izlazni podatci: Prekomjerna težina: 2 Normalna težina: 1

CLSINPUT“Unesi broj igrača:“,nFOR x=1 TO n INPUT“Unesi visinu igrača:“,v INPUT“Unesi težinu igrača:“,t IF v - 100 < t THEN p = p + 1 ELSE no=no+1NEXT xPRINT “Broj igrača prekomjerne težine:“;pPRINT“Broj igrača normalne težine:“;no

ZADATAK 12.

Ivona jako voli baku i djeda od kojih redovito mjesečno dobiva džeparac, no s djedom ima tajni dogovor. Nakon što dobije džeparac od bake, djed će joj dati 20% više. Izradi program kojim će se unijeti iznos džeparca koji je Ivona dobila od bake (cijeli broj manji od 200) i ispisati koliko će džeparca Ivona dobiti od djeda te koliko je dobila ukupno. Ako iznos djedova džeparca nije djeljiv s 10, tada se zaokružuje na prvi veći broj koji je djeljiv s 10.

Ulazni podatci: Džeparac od bake: 150

5-6 Skripta informatika.indd 25 3.2.2009 12:54:56

Page 26: Informatika 5 6 Dodatak Prirucniku Qbasic

QBASIC • 5. i 6. razred26

Izlazni podatci: Džeparac od djeda: 180 Ukupni džeparac: 330

CLSINPUT“Unesi džeparac od bake:“;bd = b*1.2IF d MOD 10 <> 0 THEN FOR x=d TO 200 IF x MOD 10 = 0 THEN d = xGOTO 1 END IF NEXT xEND IF1 PRINT“džeparac od djeda:“;dPRINT“Ukupno džeparca:“;d+b

ZADATAK 13.

Marko u slobodno vrijeme obožava bacati dvije kockice i pratiti koje brojeve dobiva. Izradi program kojim ćeš pomoći Marku da vodi evidenciju svojih bacanja. U programu se unosi broj bacanja te za svako bacanje vrijednosti za prvu i drugu kocku. Program treba ispisati najveći i najmanji zbroj koji je Marko dobio. Ako se najveći ili najmanji zbroj ponove nekoliko puta, treba ispisati broj ponavljanja.

Ulazni podatci:Broj bacanja: 3 Vrijednosti kocaka: 3,4 4,4 2,6

Izlazni podatci: 7 8, dva puta

CLSINPUT“Unesi broj bacanja:“;nmax=0min=12FOR x=1 TO n INPUT“Rezultat bacanja:“;k1,k2 IF k1+k2 < min THEN min = k1+k2brmin=0 END IF IF k1+k2 = min THEN brmin=brmin+1 IF k1+k2 > max THEN max = k1+ k2 brmax=0 END IFIF k1 + k2 = max THEN brmax = brmax + 1

5-6 Skripta informatika.indd 26 3.2.2009 12:54:56

Page 27: Informatika 5 6 Dodatak Prirucniku Qbasic

27NAREDBA FOR-NEXT

NEXT xPRINT“Minimalni zbroj:“;minIF brmin>0 THEN PRINT“Minimalni zbroj pojavio se:“; brmin;“ puta.“PRINT“Maksimalni zbroj:“;maxIF brmax>0 THEN PRINT“Maksimalan zbroj pojavio se:“;brmax;“ puta.“

U dvjema pomoćnim varijablama pamti se najmanji i najveći zbroj. Varijabla za najmanji zbroj na početku je stavljena na vrijednost 12, a varijabla za najveći broj na vrijednost 0. Za svako se bacanje unose vrijednosti kockica te se odmah provjerava je li zbroj kockica veći od trenutačno maksimalnog i manji od trenutačno minimalnog. Ako je varijable za brojenje ponavljanje najvećeg i najmanjeg, zbroj se postavljaju na vrijednost 0 te se pamte najveća, odnosno najmanja vrijednost. Potom se ispituje je li zbroj kockica jednak najvećem ili najmanjem, kako bi se brojila ponavljanja. Na kraju se ispisuju najveći i najmanji zbrojevi te broj ponavljanja ako je veći od 0.

ZADATAK 14.

Ivona subotom voli gledati Ples sa zvijezdama. Međutim, ljuti ju posljednji sudac koji je vrlo strog i daje najniže ocjene. Primijetila je da je njegova ocjena uvijek za 1 manja od najniže ocjene prethodnih triju sudaca. Jedino u slučaju da sva tri suca jednako ocijene, tada će i on dati tu ocjenu. Pomozi Ivoni da lakše izračuna koju će ocjenu dodijeliti posljednji sudac te koliki će biti zbroj ocjena. U programu se unose ocjene prvih triju sudaca (1-10), a program treba ispisati ocjenu četvrtoga suca te ukupan zbroj ocjena.

Ulazni podatci: Ocjene prvih triju sudaca: 6, 8, 7

Izlazni podatci: Ocjena četvrtoga suca: 5 Zbroj ocjena: 26

CLSmin = 10FOR x = 1 TO 3 INPUT “Unesi ocjenu:”, ocj zbro = zbro + ocj IF ocj < min THEN min = ocj brz = brz + 1 END IF IF ocj > min THEN brz = brz + 1NEXT xIF brz = 1 THEN PRINT “Ocjena 4.suca je:”; ocj PRINT “Zbroj ocjena je:”; 4 * ocjELSE PRINT “Ocjena 4.suca je:”; min - 1 PRINT “Zbroj ocjena je:”; zbro + min - 1END IF

5-6 Skripta informatika.indd 27 3.2.2009 12:54:56

Page 28: Informatika 5 6 Dodatak Prirucniku Qbasic

QBASIC • 5. i 6. razred28

Najbitnije je odrediti najnižu ocjenu koju su suci dodijelili kako bi se mogla odrediti ocjena četvrtoga suca. Varijabla brz služi nam za detektiranje različitih ocjena. Ako je vrijednost varijable brz 1, nakon petlje napravljena je samo jedna zamjena ocjena što znači da su ocjene svih sudaca jednake. U slučaju da ocjene svih sudaca nisu jednake, ocjena četvrtoga za jedan je manja od najmanje ocjene koja je pohranjena u varijabli min.

ZADATAK 15.

Marko voli čitati knjige, no ima problema s vraćanjem knjiga. Često vraća knjige sa zakašnjenjem pa mora plaćati zakasninu. Izradi program koji će pomoći Marku da odredi koliku će zakasninu platiti kod vraćanja knjiga. U programu se unosi broj knjiga koje je Marko posudio (najviše 4) te koliko je dana knjige držao kod sebe. Vrijeme posudbe je 21 dan, a zakasnina po danu 0,50 kn po knjizi. Najveća zakasnina koja se može platiti iznosi 100 kn. Ako Marko vrati knjige sa zakašnjenjem od 100 dana, tada ne će morati platiti kaznu.

Ulazni podatci: Broj knjiga: 3 Broj dana: 43

Izlazni podatci: Zakasnina: 33 kune

CLSINPUT “Unesi broj posuđenih knjiga:”, nINPUT “Koliko je dana Marko držao knjige:”, dIF d <= 21 THEN PRINT “Knjige su vraćene na vrijeme” ENDELSE zak = d - 21END IFiznos = n * .5 * zakIF zak = 100 THEN PRINT “Marko ne mora platiti zakasninu” ENDEND IFIF iznos > 100 THEN iznos = 100PRINT iznos

5-6 Skripta informatika.indd 28 3.2.2009 12:54:56

Page 29: Informatika 5 6 Dodatak Prirucniku Qbasic

29SLUČAJNI BROJEVI - RND

SLUČAJNI BROJEVI - RNDNaredba RND služi za generiranje slučajnih brojeva. Slučajni broj koji računalo zamisli, decimalni je broj veći od 0, a manji od 1. Stoga se obično taj broj množi s 10, 100 ili više te mu se naredbom INT uklanjaju decimale kako bi se dobio cijeli broj. Da bi se kod svakog pokretanja programa zamislili drugačji brojevi, na početak programa stavlja se naredba RANDOMIZE TIMER.

ZADATAK 1.

Napiši program za pogađanje brojeva manjih od 100. Računalo treba zamisliti program, a broj pokušaja pogađanja jest 6. Pri svakom pokušaju treba ispisati je li uneseni broj manji ili veći od zamišljenoga. Ako se broj pogodi, treba ispisati u kojemu je pokušaju pogođen.

CLSRANDOMIZE TIMERb = INT(RND*100)FOR x=1 TO 6 INPUT“Unesi broj:“;a IF a<b THEN PRINT „Zamišljeni broj je veći“ IF a>b THEN PRINT“Zamišljeni broj je manji“ IF a=b THEN PRINT“POGODAK“ PRINT“Broj pokušaja:“;x END END IFNEXT xPRINT“Na žalost nisi pogodio“

ZADATAK 2.

Izradi program kojim se zadaje 10 zadataka iz zbrajanja jednoznamenkastih brojeva. Brojevi se u zadatcima slučajno odabiru. Program treba brojiti točne odgovore te na kraju ispisati ocjenu po kriteriju:9 10 bodova - odličan 8 bodova - vrlo dobar6 7 bodova - dobar4 5 bodova - dovoljan0 3 boda - nedovoljan

CLSRANDOMIZE TIMERFOR x=1 TO 10 a=INT(RND*10) b=INT(RND*10) PRINT a;“+“;b;“=“; INPUT r IF r=a+b THEN t=t+1 ELSE n=n+1

5-6 Skripta informatika.indd 29 3.2.2009 12:54:57

Page 30: Informatika 5 6 Dodatak Prirucniku Qbasic

QBASIC • 5. i 6. razred30

NEXT xSELECT CASE t CASE 9,10 PRINT“odličan“ CASE 8 PRINT“vrlo dobar“ CASE 6,7 PRINT“dobar“ CASE 4,5 PRINT“dovoljan“ CASE ELSE PRINT“nedovoljan“END SELECT

ZADATAK 3.

Izradi program kojim će se slučajno generirati tri jednoznamenkasta broja. Program treba ispisati najveći mogući troznamenkasti broj koji se može zapisati trima generiranim znamenkama.

CLSRANDOMIZE TIMERz1=INT(RND*10)z2=INT(RND*10)z3=INT(RND*10)IF z1>=z2 AND z1>=z3 AND z2>=z3 THEN PRINT z1*100+z2*10+z3IF z1>=z2 AND z1>=z3 AND z3>=z2 THEN PRINT z1*100+z3*10+z2IF z2>=z1 AND z2>=z3 AND z1>=z3 THEN PRINT z2*100+z1*10+z3IF z2>=z1 AND z2>=z3 AND z3>=z1 THEN PRINT z2*100+z3*10+z1IF z3>=z1 AND z3>=z2 AND z1>=z2 THEN PRINT z3*100+z1*10+z2IF z3>=z1 AND z3>=z2 AND z2>=z1 THEN PRINT z3*100+z2*10+z1

ZADATAK 4.

Napravi igru par-nepar. Računalo generira jedan slučajni broj manji od 10. Igrač unosi s tipkovnice jedan broj (0-10) te bira je li par ili nepar. Program treba ispisati pobjednika igre. Igra se ponavlja 5 puta nakon čega se ispisuje ukupan rezultat.

CLSRANDOMIZE TIMERFOR x=1 TO 5a=INT(RND*10)INPUT“Odaberi svoj broj:“;bINPUT“Biraj par/nepar:“;c$zbr=b+aIF zbr MOD 2 = 0 AND c$=“par“ THEN PRINT“Pobjednik je igrač“ i=i+1END IF

5-6 Skripta informatika.indd 30 3.2.2009 12:54:57

Page 31: Informatika 5 6 Dodatak Prirucniku Qbasic

31SLUČAJNI BROJEVI - RND

IF zbr MOD 2 = 0 AND c$=“nepar“ THEN PRINT“Pobjednik je računalo“ r=r+1END IFIF zbr MOD 2 = 1 AND c$=“nepar“ THEN PRINT“Pobjednik je igrač“ i=i+1END IFIF zbr MOD 2 = 1 AND c$=“par“ THEN PRINT“Pobjednik je računalo“ r=r+1END IFzbr=0NEXT xPRINTIF i>r THEN PRINT“Pobjednik je igrač“ ELSE PRINT“Pobjednik je računalo“

ZADATAK 5.

Izradi program kojim se generiraju dva slučajna broja manja od 100. Program treba napraviti niz na osnovi razlike između tih dvaju brojeva sve do 100. Na primjer, ako su generirani brojevi 7 i 25, program treba ispisati brojeve 43, 61, 79, 97 jer je korak između generiranih brojeva 18.

CLSRANDOMIZE TIMERa=INT(RND*100)b=INT(RND*100)PRINT a,bIF a>b THEN k=a-b IF a+k>100 THEN PRINT“NIJE MOGUĆE FORMIRATI NIZ“ENDEND IFFOR x=a+k TO 100 STEP k PRINT x;NEXT xELSE k=b-aIF b+k>100 THEN PRINT“NIJE MOGUĆE FORMIRATI NIZ“ENDEND IF

FOR x=b+k TO 100 STEP k PRINT x; NEXT xEND IF

5-6 Skripta informatika.indd 31 3.2.2009 12:54:57

Page 32: Informatika 5 6 Dodatak Prirucniku Qbasic

QBASIC • 5. i 6. razred32

CRTANJE U QBASICUZa crtanje u Qbasicu potrebno je definirati grafički zaslon. To radimo s pomoću naredbe SCREEN. Karakteristike grafičkog zaslona određuju se brojevima 0-13. Najčešće se rabi zaslon SCREEN 12 koji ima sljedeće karakteristike:• 16 boja• rezolucija 640 x 480.Kod ovoga zaslona krajnji vrhovi imaju sljedeće koordinate:

0,0

0,480

640,0

640,480

Za crtanje se koristimo sljedećim osnovnim naredbama:PSET (x,y),n crta točku s koordinatama u točki x,y u boji n (boja može biti broj 0-15).LINE (x1,y1)-(x2,y2),n crta ravnu liniju između točaka x1,y1 i x2,y2 u boji n.Naredba LINE može završiti parametrom B ili BF. Parametar B (Box) nacrtat će pravokutnik čiji su krajnji vrhovi u točkama x1,y1 i x2,y2. Parametar BF (Box Fill) nacrtat će također pravokutnik koji će biti ispunjen bojom.CIRCLE (x,y),r,b crta kružnicu sa središtem u točki x,y, polumjerom r i u boji b.PAINT (x,y), b1, b2 boji ispunu nekoga zatvorenog oblika. Točka x,y jedna je točka unutar zatvorenoga oblika, b1 je boja ispune, a b2 boja linije.

ZADATAK 1.

Izradi program kojim se crta n vodoravnih linija u različitim bojama duljine 600 s razmakom između linija k. U programu se unosi razmak između linija, a broj linija ovisi o koraku. Linije se crtaju do koordinate 400 horizontalno.

CLSINPUT“Korak:“;kSCREEN 12n=1FOR x=0 TO 400 STEP k LINE (0,x) - (640,x),n n=n+1 IF n=16 THEN n=1NEXT x

5-6 Skripta informatika.indd 32 3.2.2009 12:54:57

Page 33: Informatika 5 6 Dodatak Prirucniku Qbasic

33CRTANJE U QBASICU

ZADATAK 2.

Izradi program kojim se crta niz obojenih kvadrata (vidi sliku). Prvi kvadrat počinje na (0,0), a kvadrati se crtaju do horizontalnoga pomaka od 450. Stranica se kvadrata unosi.

CLSINPUT “Stranica kvadrata:”; abrk = INT(450 / a)SCREEN 12boja = 1FOR x = 1 TO brk LINE (y, y)-(y + a, y + a), boja, BF y = y + a boja = boja + 1 IF boja = 16 THEN boja = 1NEXT x

Stranica se kvadrata unosi pa je potrebno izračunati koliko se kvadrata može nacrtati do horizontalnog pomaka od 450. To je izračunano u varijabli brk. Kvadrati se crtaju u FOR-NEXT petlji.

5-6 Skripta informatika.indd 33 3.2.2009 12:54:58

Page 34: Informatika 5 6 Dodatak Prirucniku Qbasic

QBASIC • 5. i 6. razred34

ZADATAK 3.

Izradi program kojim se crta niz obojenih kvadrata jedan unutar drugoga (vidi sliku). Prvi kvadrat ima stranicu 400, a svaki sljedeći za 20 manju stranicu. Prvi kvadrat započinje na (0,0).

CLSINPUT “Unesi korak smanjivanja stranice kvadrata:”; kSCREEN 12brk = INT(400 / k)y = 0y1 = 400boja = 1FOR x = 1 TO brk LINE (y, y)-(y1, y1), boja, BF y = y + k / 2 y1 = y1 - k / 2 boja = boja + 1 IF boja = 16 THEN boja = 1NEXT x

Budući da se korak za smanjivanje kvadrata unosi, prvo je potrebno izračunati koliko se kvadrata može nacrtati (varijabla brk). Zatim se u FOR-NEXT petlji crtaju kvadrati u različitim bojama ispune.

ZADATAK 4.

Izradi program kojim se crta niz koncentričnih kružnica koje imaju središte u sredini zaslona. Polumjer najmanje kružnice i korak za koji raste polumjer unosi se. Kružnice se crtaju sve dok su u cijelosti vidljive na zaslonu.

5-6 Skripta informatika.indd 34 3.2.2009 12:54:58

Page 35: Informatika 5 6 Dodatak Prirucniku Qbasic

35CRTANJE U QBASICU

CLSINPUT “Polumjer najmanje kružnice:”, aINPUT “Korak za povećanje polumjera:”, kSCREEN 12FOR x = 1 TO 100 CIRCLE (320, 240), a a = a + k IF a + 240 >= 460 THEN ENDNEXT x

Budući da se sve kružnice moraju u cijelosti vidjeti na zaslonu, program se prekida kada je polumjer uvećan za polovicu vertikalnoga pomaka (240) veći ili jednak 460.

ZADATAK 5.

Izradi program kojim se na sredini zaslona crta kvadrat sa stranicom a u crvenoj boji. Na svakom vrhu kvadrata treba se nacrtati jedan krug u zelenoj boji čiji je polumjer polovica stranice kvadrata. Kvadrat treba biti ispred krugova.

5-6 Skripta informatika.indd 35 3.2.2009 12:54:58

Page 36: Informatika 5 6 Dodatak Prirucniku Qbasic

QBASIC • 5. i 6. razred36

CLSINPUT “Unesi stranicu kvadrata:”; ar = a / 2x1 = (640 - a) / 2x2 = (480 - a) / 2SCREEN 12CIRCLE (x1, x2), r, 2PAINT (x1, x2), 2, 2CIRCLE (x1 + a, x2), r, 2PAINT (x1 + a, x2), 2, 2CIRCLE (x1, x2 + a), r, 2PAINT (x1, x2 + a), 2, 2CIRCLE (x1 + a, x2 + a), r, 2PAINT (x1 + a, x2 + a), 2, 2LINE (x1, x2)-(x1 + a, x2 + a), 4, BF

5-6 Skripta informatika.indd 36 3.2.2009 12:54:58