You are on page 1of 36

Darko Krznar

QBASIC
zadaci s rjeenjima za 5. i 6. razred

PROFIL

Izdava
Profil International, Zagreb, Kaptol 25

Predsjednik Izdavakog savjeta


Daniel deri

Za izdavaa
Andrija Peari

Direktorica izdavatva i razvoja


Ivanica Knapi

Glavna urednica
Marija Odak

Urednica
Silvana Svetlii

Lektorica
Vesna ondi

Naslovnica
Studio 2M

Prijelom
Goran Vukainovi Tisak Profil

SADRAJ
UVOD ..................................................................................................4 NAREDBE CLS, PRINT, INPUT ..................................................................5 NAREDBA GRANANJA IF-THEN............................................................... 10 NAREDBA FOR-NEXT ............................................................................ 19 SLUAJNI BROJEVI - RND..................................................................... 29 CRTANJE U QBASICU ........................................................................... 32

UVOD
Potovane kolegice i kolege! Qbasic - zadatke s rjeenjima podjednako smo namijenili uenicima petih i estih razreda, i vama - njihovim uiteljicama i uiteljima informatike. Zadaci koji prate nastavni plan i program, uenicima e olakati usvajanje gradiva iz programiranja u Qbasicu. Dodatni sadraji (nizovi, rad sa stringovima i sl.) korisna su pomo prilikom pripremanja uenika za natjecanja iz informatike. Za sve smo zadatke pripremili i rjeenja pa ete lako provjeriti tonost i uspjenost rada svojih uenika. Trudili smo se i ovim dodatnim materijalom odgovoriti na potrebe kolegica i kolega ije ideje, potekle iz svakodnevnoga rada u razredu, oslukujemo i pretvaramo u uspjenu suradnju koja e se, vjerujemo, nastaviti i u godinama pred nama. Silvana Svetlii, prof. UREDNICA INFORMATIKE

QBASIC 5. i 6. razred

Qbasic je programski jezik interpreter u kojemu program piemo nizanjem simbolikih 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. Uobiajeno je da program u Basicu zapoinjemo naredbom CLS (engl. Clear Screen). Tom naredbom briemo zaslon. Osim na poetku, naredba sa moe navesti i na onim mjestima gdje nam je potreban ist zaslon. Naredba PRINT slui za ispis. Budui da nam svaki program treba neto ispisati, ona je vrlo bitna i rabi se u svakom programu. Ispisati moemo neki tekst ili sadraj neke varijable. PRINTOvo je primjer ispisa teksta ispisuje tekst pod navodnicima. Iza naredbe PRINT moemo navesti znakove zarez (,) ili toku sa zarezom (;). Ako stavimo zarez, idua naredba PRINT ispisat e se u istom retku uz 12 razmaka u odnosu na prethodnu, a znak toka sa zarezom takoer ispisuje u istom retku, ali bez razmaka.
PRINTDobar, PRINTDan Ispis: Dobar PRINTDobar; PRINTDan Ispis: DobarDan

NAREDBE CLS, PRINT, INPUT

Dan

Naredbom PRINT moemo ispisivati i sadraj varijabla. Varijabla je rezervirano mjesto u memoriji koje moe pamtiti podatke. Varijabla mora imati ime koje moe biti jedno slovo ili cijela rije. Kod imenovanja varijabla, treba se drati odreenih pravila: - ime varijable ne moe biti rezervirana rije (CLS, PRINT, INPUT...) - u imenu varijable ne moe biti razmaka - ime varijable ne moe poeti brojkom ili posebnim znakom (+, -, %...). S obzirom na sadraj postoje dvije vrste varijabla: - numerike sadre brojane vrijednosti - znakovne (string) sadre tekst i simbole. Ime string varijable zavrava znakom $. Vrijednost koju moe poprimiti numerika varijabla je izmeu -32768 i 32767. Takva varijabla jo se naziva cjelobrojna (INTEGER), a moemo 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 omoguuju unos brojeva u rasponu od -2.147.483.648 do 2.147.483.647. Vrijednost u neku varijablu moemo postaviti s pomou naredbe pridruivanja. Evo nekoliko primjera:
a = 15 - varijabli a pridruena je vrijednost 15 broj = 1123 - varijabli broj pridruena je vrijednost 1123 ime$=PERO - string varijabli ime$ pridrueno je ime PERO c$ = PERO IMA 5 IZ INFOMRATIKE. - string varijabli c$ pridruen je niz znakova

Kao to je vidljivo, kod pridruivanja vrijednosti string varijablama vrijednost koju pridruujemo, stavljamo pod navodnike. Vrijednosti u varijablu moemo postaviti i upisivanjem tipkovnicom uz primjenu naredbe INPUT. Kad program doe do naredbe INPUT, prekida se njegovo izvoenje sve dok ne
NAREDBE CLS, PRINT, INPUT

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 moemo navesti i objanjenje unosa pod navodnicima. Evo primjera: INPUT a - obian unos INPUTUnesi broj:,a - unos s objanjenjem U radu s brojanim varijablama potrebni su nam i aritmetiki operatori s pomou kojih izvodimo raunske operacije s numerikim varijablama. Operatori jesu:
+ - * / INT MOD operator za zbrajanje operator za oduzimanje operator za mnoenje operator za dijeljenje - odcjepljuje decimale u broju INT(2,563) 2 - 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 reenicu u kojoj e se rabiti uneseni podatci. Ulaz: 10 Ispis: Marko

Bok, Marko, ima 10 godina.

CLS INPUTUnesi ime:,ime$ INPUTUnesi broj godina:,g PRINTBok ;ime$;, ima;g; godina.

ZADATAK 2.
Izradi program kojim se unosi ime i godina roenja. Program treba ispisati koliko e godina unesena osoba imati 2050. godine. Ulaz: 1999 Ispis: Marko

Marko, 2050 imat e 51 god.

CLS INPUTUnesi ime:,ime$ INPUTUnesi godinu roenja:,g PRINT ime$;, 2050 imat e;2050-g;. god

QBASIC 5. i 6. razred

ZADATAK 3.
Izradi program kojim se unose dva broja. Program treba ispisati etiri osnovne raunske operacije s tim brojevima te ispisati rezultat cjelobrojnog dijeljenja i ostatak kod dijeljenja.
CLS INPUTUnesi 1. broj:,a INPUTUnesi 2. broj:,b PRINT Zbroj:;a+b PRINTRazlika:;a-b PRINTUmnoak:;a*b PRINTKvocijent:;a/b PRINTCjelobrojno dijeljenje:;INT(a/b) PRINTOstatak kod dijeljenja:;a MOD b

ZADATAK 4.
Izradi program kojim se unose stranice pravokutnika. Program treba ispisati opseg i povrinu pravokutnika.
CLS INPUTUnesi 1. stranicu pravokutnika:,a INPUTUnesi 2. stranicu pravokutnika:,b PRINT OPSEG:;2*a+2*b PRINTPOVRINA:;a*b

ZADATAK 5.
Izradi program kojim se unose dva broja. Program treba ispisati: - udvostrueni prvi broj umanjen za drugi broj uvean za 10 - kvocijent prvoga i drugog broja uvean za njihov umnoak. Ulazni podatci: 5,2 Izlazni podatci: -2, 12.5
CLS INPUTUnesi 1. broj:,a INPUTUnesi 2. broj:,b PRINT 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

NAREDBE CLS, PRINT, INPUT

Izlaz:

Sati: 1 Minuta: 34 Sekunda: 38

CLS INPUTUnesi broj sekunda:,a& h = INT(a&/3600) PRINTSati:;h b = a& MOD 3600 m = INT(b/60) PRINTMinute:;m PRINTSekunde:; 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: Izlaz: 678 100 kn: 6 20 kn: 3 10 kn: 1 1 kn: 8

CLS INPUTUnesi iznos u kunama:,a b1 = INT(a/100) PRINT100 kn:;b1 b = a MOD 100 b2 = INT(b/20) PRINT20 kn:;b2 b = b MOD 20 b3 = INT (b/10) PRINT10 kn:;b3 PRINT1 kn:; b MOD 10

Ispis kod naredbe PRINT moe se po potrebi obojiti ili pozicionirati na neko mjesto na zaslonu naredbama COLOR i LOCATE. Naredba COLOR slui 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 moe 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 slui za lociranje ispisa na zaslonu. Ako se ne rabi, ispisuje se od gornjega lijevog vrha zaslona. U tekstovnom nainu rada na zaslon moe stati 25 redaka, a u svaki redak 80 stupaca. Naredba LOCATE ima dvije vrijednosti: prva odreuje redak (<25), a druga odreuje stupac (<80). Gornji lijevi kut zaslona ima koordinate 0,0, gornji desni 0,80, donji lijevi (25,0) i donji desni (25,80).

QBASIC 5. i 6. razred

ZADATAK 8.
Izradi program kojim e se unijeti ime, redak i stupac za ispis. Program treba uneseno ime ispisati na odreenoj lokaciji u zelenoj boji.
CLS INPUTUnesi ime:;ime$ INPUTUnesi redak:;r INPUTUnesi stupac:;s CLS COLOR 2 LOCATE r,s PRINT ime$

ZADATAK 9.
Izradi program kojim se unosi datum i ispisuje na sredini zaslona u plavoj trepereoj boji na crvenoj podlozi.
CLS INPUTUnesi datum:;datum$ COLOR 17,4 LOCATE 12,40 PRINT datum$

ZADATAK 10.
Izradi program kojim e se s pomou znaka * ispisati plus veliine 5 redaka i stupaca. Srednja zvjezdica mora biti na 12,40, a rubne zvjezdice moraju treperiti.
CLS LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE 12,40:COLOR 11,40:COLOR 10,40:COLOR 13,40:COLOR 14,40:COLOR 12,39:COLOR 12,38:COLOR 12,41:COLOR 12,42:COLOR 1:PRINT* 2:PRINT* 19:PRINT* 3:PRINT* 20:PRINT* 9:PRINT* 23:PRINT* 11:PRINT* 25:PRINT*

NAREDBE CLS, PRINT, INPUT

NAREDBA GRANANJA IF-THEN

Naredba grananja omoguuje nam da prema potrebi mijenjamo smjer izvoenja programskih naredaba ovisno o istinitosti postavljenog uvjeta. Naredba IF-THEN ima nekoliko oblika: 1. IF uvjet THEN naredba To je najjednostavniji oblik IF-THEN naredbe. Ispituje se istinitost logikog uvjeta i ako je uvjet istinit, izvrava se naredba iza THEN, a ako je laan, prelazi se na sljedeu liniju programa. 2. IF uvjet THEN naredba ELSE naredba Ovaj se oblik rabi ako ispitujemo istinitost nekog uvjeta koji moe imati samo dvije mogunosti (npr. broj je paran ili neparan, brojevi su djeljivi ili nisu i sl.). Ako je uvjet istinit, izvrava se naredba iza THEN, a ako je laan, naredba iza ELSE. 3. IF uvjet THEN Naredbe ... END IF Taj se oblik rabi ako je potrebno izvriti vie naredaba kad je uvjet zadovoljen. Ovdje naredba IF mora zavriti s ENDIF. 4. IF uvjet THEN Naredbe ELSEIF uvjet THEN Naredbe ELSEIF uvjet THEN Naredbe END IF Ovim se oblik koristimo kada moramo izvriti vie naredaba kada je uvjet zadovoljen, a uvjet moe poprimiti vie mogunosti. Osim IFTHEN naredbe, kao naredba grananja moe se rabiti i naredba SELECT CASE. Ta je naredba korisna ako imamo vie moguih vrijednosti varijable koju testiramo.
SLECET CASE varijabla CASE uvjet Naredbe CASE uvjet Naredbe CASE uvjet Naredbe CASE ELSE Naredbe END SELECT

10

QBASIC 5. i 6. razred

ZADATAK 1.
Uenici neke kole putuju na izlet autobusima. U jedan autobus moe stati 45 uenika. Izradi program kojim e se unijeti broj uenika i ispisati koliko je najmanje autobusa potrebno za njihov prijevoz. Ako jedan autobus nije popunjen, treba ispisati koliko je uenika u njemu. Ulazni podatci: Broj uenika: 67 Izlazni podatci: Potrebno autobusa: 2 Broj uenika u zadnjem autobusu: 22
CLS INPUTUnesi IF n MOD 45 IF n MOD 45 PRINT Broj PRINT Broj END IF broj uenika:,n = 0 THEN PRINTBroj uenika:; n / 45 <> 0 THEN uenika:;INT(n/45)+1 uenika u zadnjem autobusu:; n MOD 45

U tom je programu potrebno ispitati je li broj uenika djeljiv s 45. Ako jest, ispie se kvocijent, a ako nije, ispisuje se cjelobrojni kvocijent uvean za 1. Na primjer, ako je broj uenika 90, treba 2 autobusa, a ako je broj uenika 95, potrebna su 3.

ZADATAK 2.
Izradi program kojim se unose dvije stranice etverokuta. Ako su unesene stranice jednake, program treba ispisati KVADRAT i izraunati njegov opseg, a u protivnom ispisati PRAVOKUTNIK i izraunati njegovu povrinu. Ulazni podatci: Stranice etverokuta: 5,4 Izlazni podatci: PRAVOKUTNIK 20 CLS INPUTUnesi 1. stranicu etverokuta:,a INPUTUnesi 2. Stranicu etverokuta:,b IF a=b THEN PRINTKVADRAT PRINT 4*a ELSE PRINTPRAVOKUTNIK PRINT a*b END IF

NAREDBA GRANANJA IF-THEN

11

ZADATAK 3.
Marko ima vrpcu duljine m centimetara. Treba ju izrezati na odreeni broj dijelova duljine n. Izradi program koji e izraunati koliko se cijelih vrpca moe 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
CLS INPUTUnesi duljinu vrpce:,m INPUTUnesi duljinu jednoga dijela vrpce:,n IF m MOD n = 0 THEN PRINT Broj dijelova vrpce:; m / n ELSE PRINT Broj dijelova vrpce:;INT(m / n) PRINT Ostatak:;m MOD n END IF

ZADATAK 4.
Izradi program kojim se unose tri stranice trokuta. Program treba ispisati je li trokut jednakostranian (ima sve stranice jednake), raznostranian (ima sve stranice razliite) ili jednakokraan (ima dvije stranice jednake). Ulazni podatci: Stranice trokuta: 4,5,6 Izlazni podatci: RAZNOSTRANIAN
CLS INPUTUnesi 1. stranicu trokuta:;a INPUTUnesi 2. stranicu trokuta:;b INPUTUnesi 3. stranicu trokuta:;c IF a = b AND a = c AND b = c THEN PRINT JEDNAKOSTRANIAN END END IF IF a = b OR a = c OR b = c THEN PRINTJEDNAKOKRAAN END END IF IF a <> b AND a <> c AND b <> c THEN PRINT RAZNOSTRANIAN

U ovom se programu rabe logiki operatori AND i OR. Operator AND zahtijeva da svi uvjeti budu istiniti, dok operator OR zahtijeva da bar jedan uvjet bude istinit.
12
QBASIC 5. i 6. razred

ZADATAK 5.
Marko ima kolekciju od n CD-a koje eli sloiti u kutije. U jednu kutije stane 20 CD-a, a njezina je cijena 12 kuna. Ako kupi vie od 10 kutija, cijena jedne je 10 kuna, a za kupnju vie od 20 kutija, cijena jedne je 8 kuna. Pomozi Marku izraunati 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
CLS INPUTUnesi broj CDa:,n IF n MOD 20 = 0 THEN brk = n / 20 ELSE brk = INT(n / 20) + 1 c = 12 IF brk > 20 THEN c = 8 IF brk > 10 AND brk <= 20 THEN c=10 PRINTBroj kutija:; brk PRINTCijena:; brk * c

ZADATAK 6.
Izradi program kojim se unosi 10 brojeva (manjih od 1000) i ispisuje srednja vrijednost, najvei 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 Najvei broj: 66
CLS min = 9999 max = 0 1 INPUTUnesi broj:,a IF a > max THEN max = a IF a < min THEN min = a zbr = zbr + a br = br + 1 IF br < 10 THEN GOTO 1 PRINT Srednja vrijednost:; zbr/10 PRINTNajmanji broj:; min PRINTNajvei broj:;max
NAREDBA GRANANJA IF-THEN

13

U ovom programu petlja je ostvarena s pomou IFTHEN naredbe i naredbe GOTO. Naredba GOTO je naredba za bezuvjetni skok. S pomou nje skaemo na neku liniju programa. Kontrolna varijabla br broji unesene brojeve. Kada doe do 10, petlja zavrava 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 ploice. Dimenzije kade takoer se unose. Program treba izraunati koliko je kvadrata ploica potrebno za oploivanje kupaonice, koliko e paketa ploica trebati ako u jednom paketu ima 2 kvadrata ploica te koliki je ukupan troak za ploice ako jedan paket stoji 150 kuna. Ulazni podatci: Dimenzije kupaonice: 5,3 Dimenzije kade: 2,1 Izlazni podatci: Kvadrata ploica: 13 Broj paketa: 7 Cijena 1050
CLS INPUTUnesi duinu kupaonice:,dk INPUTUnesi irinu kupaonice:,sk INPUTUnesi duinu kade;, d INPUTUnesi irinu kade:,s p=dk*sk-d*s IF p MOD 2 = 0 THEN bp=p / 2 ELSE bp = INT(p / 2)+1 c = bp * 150 PRINTKvadrata ploica:;p PRINTBroj paketa:,bp PRINTCijena:;c

ZADATAK 8.
Izradi program kojim se unosi broj mjeseca i ispisuje koliko taj mjesec ima dana.
CLS INPUTUnesi broj mjeseca:;a SELECT CASE a CASE 1,3,5,7,8,10,12 PRINTMjesec ima 31 dan CASE 4,6,9,11 PRINTMjesec ima 30 dana CASE 2 PRINTMjesec ima 28 ili 29 dana END SELECT

14

QBASIC 5. i 6. razred

ZADATAK 9.
Izradi program kojim se unose dva broja i znak za raunsku operaciju. Program treba ispisati rezultat raunske operacije. Ako je raunska operacija oduzimanje, potrebno je od veega broja oduzeti manji. Ulazni podatci: 1. broj: 5 2. broj: 2 Operator: + Izlazni podatci: 7
CLS INPUTUnesi 1. broj:,a INPUTUnesi 2. Broj:,b INPUTUnesi znak za raunsku operaciju:,o$ SELECT CASE o$ CASE + PRINTZbroj:;a+b CASE - IF a<b THE PRINTRazlika :;b-a IF a>b THEN PRINTRazlika:;a-b CASE * PRINTUmnoak:;a*b CASE / PRINTKvocijent:;a/b END 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 muko, treba ga ispisati na sredini zaslona u plavoj boji. Ime je ensko ako zavrava na A, a muko ako zavrava na bilo koje drugo slovo.
CLS INPUTUnesi 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
NAREDBA GRANANJA IF-THEN

15

ZADATAK 11.
Marko je vrstan koarka. Posebno voli pogaati trice. No ponekad pretjeruje kada prijateljima govori koliko ih je pogodio, ali je uvijek iskren u broju pogoenih dvica. Izradi program kojim se unosi ukupan broj poena koje je postigao Marko te broj pogoenih uteva za dva poena i za tri poena. Ispitaj je li broj pogoenih trica mogu ili je Marko pretjerao. Ako je pretjerao, izraunaj koliko je trica najvie mogao pogoditi. Zbroj koeva za dva i tri poena uvijek e biti jednak ili vei od ukupnog broja poena. ULAZ: Poena: 33 Dvica: 6 Trica: 7

IZLAZ: Marko nije pretjerao.


CLS INPUTUnesi broj poena:,bp INPUTBroj koeva za 2:;bk2 INPUTBroj koeva za 3:;bk3 IF bp=bk2*2 + bk3*3 THEN PRINT Marko nije pretjerao ELSE PRINT Marko je pretjerao PRINTMogao je pogodti ;(bp-bk2*2)/3; trica END IF

ZADATAK 12.
Ksenija oboava kupovati na rasprodajama. Pronala 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 razliita. Program treba ispisati iznos koji e Ksenija platiti s obzirom na snienje te kolika e biti uteda prema punoj cijeni. Ulazni podatci: Cijene proizvoda: 120, 60, 200 Izlazni podatci: Ukupna cijena: 350 Uteda: 30
CLS INPUTUnesi cijenu prvog proizvoda:;c1 INPUTUnesi cijenu drugog proizvoda:;c2 INPUTUnesi cijenu treeg proizvoda:;c3 IF c1<c2 AND c1<c3 THEN uk=c2+c3+c1/2 IF c2<c1 AND c2<c3 THEN uk=c1+c3+c2/2 IF c3<c1 AND c3<c2 THEN uk=c1+c2+c3/2 PRINTUkupna cijena:;uk PRINTUteda:;c1+c2+c3-uk
16
QBASIC 5. i 6. razred

ZADATAK 13.
Marko oboava surfati internetom. Na alost, ima vrlo sporu modemsku vezu koja se plaa prema vremenu provedenom na internetu. Tako je sat interneta u terminu od 0 do 7 sati 2 kune, izmeu 7 i 19 sati 4 kune, a od 19 do 24 sata ponovno 2 kune. Marko smije surfati jedanput dnevno. Izradi program kojim e pomoi Marku da vodi rauna o svojim trokovima. Program trai unos za vrijeme poetka veze i vrijeme kraja veze (oba broja su cijela izmeu 0 i 24). Veza nikada ne e prelaziti u drugi dan, a moe zapoeti u satu sa skupljom tarifom i zavriti u satu s jeftinijom tarifom i obratno. Broj za poetak veze bit e uvijek manji od broja za kraj veze. Ulazni podatci: Sat poetka veze: 14 Sat zavretka veze: 17 Izlazni podatci: Ukupni troak: 12 kn
CLS INPUTUnesi sat poetka veze:;h1 INPUTUnesi sat zavretka veze:;h2 IF h1 < 7 AND h2 <7 THEN cij = (h2-h1) * 2 IF h1 < 7 AND h2 > 7 AND h2 < 19 THEN cij = (7-h1)*2 + (h2-7)*4 IF h1<7 AND h2 > 19 THEN cij = (7-h1)*2 + 12*4 + (h2-19)*2 IF h1 >=7 AND h2 < 19 THEN cij = (h2-h1)*4 IF h1 >=7 AND h1<19 AND h2 >19 THEN cij = (19-h1)*4 + (h2-19)*2 IF h1>=19 AND h2 >= 19 THEN cij = (h2-h1)*4 PRINTUkupni troak:;cij

ZADATAK 14.
U glavnom gradskom kinu imaju problema s odreivanjem poetaka kinopredstava. Naime, kada jedna predstava zavri, potrebno je 30 minuta da se kino pripremi za novu predstavu. Izradi program kojim e se unijeti sat i minuta poetka prve predstave te duljina trajanja predstave. Program treba ispisati kada najranije moe zapoeti nova predstava. Ulazni podatci: Sat poetka predstave: 15 Minuta poetka predstave: 30 Duljina trajanja predstave: 1,40 (sati i minute) Izlazni podatci: Poetak sljedee predstave: 17 sati 40 minuta

CLS INPUT Unesi sat poetka predstave:, h1 INPUT Unesi minutu poetka predstave:, m1 INPUT Unesi duljinu trajanja predstave:; h2, m2 h = h1 + h2 m = m1 + m2 + 30 IF m > 60 THEN
NAREDBA GRANANJA IF-THEN

17

END IF PRINT Poetak sljedee predstave:; h; sati ; m; minuta

h = h + INT(m / 60) m = m MOD 60

ZADATAK 15.
Marija voli pei kolae. Pee ih u posudi u koju stane 30 kolaa. Za peenje jedne posude treba 20 minuta. Kada izvadi peene kolae, treba proi 10 minuta kako bi poela pei sljedeu posudu. Izradi program koji e pomoi Mariji izraunati koliko e dugo pei sve kolae. U programu se unosi broj kolaa koje je Marija izradila, a ispisuje koliko joj vremena treba da ih sve ispee. Ako je broj kolaa vei od 500, Marija e ih pei u dvije posude, ali u tom je sluaju potrebno 15 minuta da zapone pei nove dvije posude. Ulazni podatci: Broj kolaa: 150 Izlazni podatci: Ukupno vrijeme peenja: 140 minuta
CLS INPUT Unesi broj kolaa:; n IF n <= 500 THEN IF n MOD 30 = 0 THEN brp = n / 30 ELSE brp = INT(n / 30) + 1 uv = brp * 20 + (brp - 1) * 10 ELSE IF n MOD 60 = 0 THEN brp = n / 60 ELSE brp = INT(n / 60) + 1 uv = brp * 20 + (brp - 1) * 15 END IF PRINT Ukupno vrijeme peenja:; uv

18

QBASIC 5. i 6. razred

NAREDBA FOR-NEXT
FOR x = n TO m (STEP k) naredbe NEXT x

Naredba FORNEXT jo se naziva i petlja bez logikog uvjeta. Slui za ponavljanje dijela programa tono odreeni broj puta. Dakle, ako se elimo koristiti FOR-NEXT petljom, moramo znati koliko puta elimo izvriti neki dio programa. FOR-NEXT petlja zapisuje se na sljedei nain:

x kontrolna varijabla u petlji n poetna vrijednost kontrolne varijable m zavrna vrijednost kontrolne varijable k korak u petlji Kontrolna varijabla mijenja se od poetne vrijednosti prema zavrnoj, i to za korak k. Opciju STEP nije potrebno pisati ako je korak 1. Ako je korak vei od 1 ili negativan, mora se pisati. Korak je negativan ako je poetna vrijednost kontrolne varijable vea od zavrne vrijednosti. FOR-NEXT petlja zavrava kljunom rijei NEXT.

ZADATAK 1.
Napii program kojim se ispisuju svi parni dvoznamenkasti brojevi i ispisuje njihov zbroj.
CLS FOR x = 10 TO 98 STEP 2 PRINT x; zbr = zbr + x NEXT x PRINT PRINTZbroj parnih dvoznamenkastih brojeva je:;zbr

ZADATAK 2.
Napii program kojim se unosi jedan troznamenkasti broj. Program treba ispisati koliko ima troznamenkastih brojeva veih 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
CLS INPUTUnesi jedan troznamenkasti broj:,a FOR x = a+1 TO 999 IF x MOD 3 = 0 THEN
NAREDBA FOR-NEXT

19

END IF NEXT x PRINTUkupno brojeva djeljivih s 3:;br PRINTZbroj tih brojeva:;zbr

br = br+1 zbr = zbr + x

ZADATAK 3.
Izradi program kojim se unosi duina, irina i visina prostorije te broj otvora prostorije. Za svaki otvor treba unijeti irinu i visinu. Program treba izraunati koliko u toj prostoriji ima povrine za bojenje (ne boji se pod i otvori), koliko je kanta boje potrebno ako se s jednom kantom moe obojiti 20 kvadrata te koliko e kotati 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 povrina za bojenje: 81 Broj kanta: 5 Cijena: 600
CLS INPUTUnesi duinu prostorije:,d INPUTUnesi irinu prostorije:,s INPUTUnesi visinu prostorije:,v p1=d*s p2=2*d*v p3=2*s*v pz=p1+p2+p3 INPUTUnesi broj otvora:,n FOR x=1 TO n INPUTUnesi irinu otvora:,so INPUTUnesi visinu otvora:,vo po=po+so*vo NEXT x pu=pz-po IF pu MOD 20 = 0 THEN brk=pu / 20 ELSE brk=INT(pu / 20) + 1 PRINT Ukupna povrina za bojenje:;pu PRINTBroj kanta:;brk PRINTCijena:;brk*120

U ovom je zadatku prvo potrebno izraunati ukupnu povrinu zidova (bez poda). Zatim se unose dimenzije otvora i rauna njihova ukupna povrina. Kada dobijemo ukupnu povrinu (varijabla pu), raunamo broj kanta s bojom te ukupnu cijenu boje.

20

QBASIC 5. i 6. razred

ZADATAK 4.
Izradi program kojim se unosi broj ocjena te ocjene iz svih predmeta. Program treba ispisati opi uspjeh, i to po sljedeem kriteriju: - ako je ijedna ocjena 1, opi uspjeh je nedovoljan - ako je prosjek ocjena manji od 2,5, opi uspjeh je dovoljan - ako je prosjek ocjena manji od 3,5 i jednak ili vei od 2,5, opi uspjeh je dobar - ako je prosjek manji od 4,5 i jednak ili vei od 3,5, opi uspjeh je vrlo dobar - ako je prosjek jednak ili vei od 4,5, opi uspjeh je odlian. 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
CLS INPUTUnesi broj ocjena:;n FOR x=1 TO n INPUTUnesi ocjenu:,o IF o=1 THEN ind=1 zbr = zbr + o NEXT x IF ind=1 THEN PRINTOpi uspjeh je nedovoljan END END IF pro = zbr / n SELECT CASE pro CASE IS < 2.5 PRINT Opi uspjeh je dovoljan END CASE IS <= 3.5 PRINTOpi uspjeh je dobar END CASE IS <=4.5 PRINTOpi uspjeh je vrlo dobar END CASE ESLE PRINTOpi uspjeh je odlian END SELECT

Budui da se ocjene u programu moraju unijeti za sve predmete bez obzira na unesenu jedinicu, ovdje je rabljena varijabla ind koja e u sluaju unesene jedinice poprimiti vrijednost 1. Ako se ne unese ocjena 1, varijabla ind imat e vrijednost 0. Ispitivanje vrijednosti varijable ind utvrujemo je li opi uspjeh nedovoljan. Ako nije, rauna se prosjek ocjena i opi uspjeh prema opisanom kriteriju.

NAREDBA FOR-NEXT

21

ZADATAK 5.
Trener koarkakog kluba ima problema s nekim igraima koji ele izbjegavati treninge. Da bi sebi olakao posao otkrivanja koji igra nije doao na trening, osmislio je sljedeu taktiku. Svim je igraima podijelio dresove s brojevima 4,5,6,715. 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
CLS FOR x=1 TO 11 INPUTUnesi broj igraa:,a zbr = zbr + a NEXT x PRINTNa treningu nema igraa s brojem:;114-zbr

Budui da je ukupan zbroj brojeva na dresovima igraa 114, igra koji nedostaje dobit e se tako da se od broja 114 oduzme zbroj brojeva na dresovima prisutnih igraa.

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: 3 Duljina trajanja: 2000, 2500, 1000 Izlazni podatci: Broj pjesama: 2 Slobodnog mjesta: 300
CLS INPUTUnesi broj pjesama:,n FOR x=1 TO n INPUTDuljina trajanja pjesme:,a us = us + a IF us > 4800 THEN brp = brp - 1 us = us - a GOTO 1 END IF brp = brp + 1 NEXT x 1 PRINTBroj pjesama:; brp+1 PRINTSlobodnog prostora:;4800 - us END
22
QBASIC 5. i 6. razred

ZADATAK 7.
Izradi program kojim se unosi nosivost lifta u kilogramima te broj osoba koje ulaze u lift. Za svaku se osobu unosi njezina teina. Program treba ispisati je li lift preoptereen ili nije te ako je preoptereen, koliko osoba moe ostati u liftu da bi mogao krenuti. U sluaju preoptereenja iz lifta izlazi osoba koja je posljednja ula. Ulazni podatci: Nosivost lifta: 650 Broj osoba: 4 Teine osoba: 120,90,100,85 Izlazni podatci: Lift nije preoptereen.
CLS INPUTUnesi nosivost lifta:,n INPUTUnesi broj osoba:,a FOR x=1 TO a INPUTTeina osobe:; t ut = ut + t IF ut > n THEN PRINTLift je preoptereen: PRINTBroj osoba koje mogu ostati u liftu:;x - 1 END END IF brp = brp + 1 NEXT x PRINTLift nije preoptereen

ZADATAK 8.
Izradi program kojim e se unijeti dva broja manja od 10000. Program treba ispisati koliko ima parnih brojeva izmeu tih dvaju unesenih brojeva. Ulazni podatci: 1. broj: 45 2. broj: 90 Izlazni podatci: 22
CLS INPUTUnesi prvi broj:,a INPUTUnesi drugi broj:,b FOR x = a+1 TO b-1 IF x MOD 2 = 0 THEN br = br + 1 NEXT x PRINT br
NAREDBA FOR-NEXT

23

ZADATAK 9.
Ivona ima tene po imenu ili i mora ga redovito hraniti. ili je naueno jesti svaka 4 sata od kada se probudi s time da nakon 22 sata vie ne smije jesti. ili se uvijek budi izmeu 4 i 10 sati ujutro, a poslijepodne spava izmeu 15 i 17 sati. Ako vrijeme hranjenja padne u terminu spavanja, tada se preskae. Izradi program kojim e pomoi Ivoni da odredi u koje vrijeme mora hraniti ilija. U program se unosi vrijeme kada se ili probudio (cijeli broj izmeu 4 i 10), a program treba ispisati u koja se vremena ili treba nahraniti i koliko e obroka dnevno imati. Ulazni podatci: Vrijeme buenja: 6 Izlazni podatci: Vrijeme obroka: 6,10,14,18,22 Broj obroka: 5
CLS INPUTUnesi vrijeme buenja:,v FOR x = v TO 22 STEP 4 IF x <=15 OR x>=17 THEN PRINT x; br = br + 1 END IF NEXT x PRINT PRINTBroj obroka:; br

ZADATAK 10.
Marko je odluio promijeniti mobilnog operatera jer je dobio jedinstvenu ponudu kojom se pet razgovora kraih od 20 sekunda ne naplauju. Izradi program koji e pomoi Marku da vodi brigu o trokovima telefoniranja. U program se unosi broj poziva i duljina trajanja svakoga poziva. Program treba ispisati ukupno vrijeme trajanja poziva koji se naplauju te ukupan troak poziva ako jedna sekunda stoji 2 lipe. Troak 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
CLS INPUTUnesi broj poziva:;n FOR x = 1 TO n INPUTUnesi duljinu trajanja poziva:,t

24

QBASIC 5. i 6. razred

NEXT x PRINTUkupno trajanje poziva:;ut trosak = ut * 2 PRINTUkupan troak poziva;; INT(trosak / 100); kuna i ;trosak MOD 100; lipa

IF t<20 THEN bp=bp+1 IF bp>5 THEN ut = ut + t ELSE ut = ut + t END IF

ZADATAK 11.
Marko je trener nogometne momadi. Primijetio je da svake godine tijekom zimskoga odmora neki igrai dobiju na teini. Igra je normalne teine ako je razlika njegove visine u centimetrima i 100 vea ili jednaka njegovoj teini. Izradi program koji e pomoi Marku da ustanovi koji su igrai prekomjerne teine. Program trai unos broja igraa te za svakoga visinu i teinu. Program treba ispisati koliko je igraa prekomjerne, a koliko normalne teine. Ulazni podatci: Broj igraa: 3 Visina i teina igraa: 185,100 170,65 192,105 Izlazni podatci: Prekomjerna teina: 2 Normalna teina: 1
CLS INPUTUnesi broj igraa:,n FOR x=1 TO n INPUTUnesi visinu igraa:,v INPUTUnesi teinu igraa:,t IF v - 100 < t THEN p = p + 1 ELSE no=no+1 NEXT x PRINT Broj igraa prekomjerne teine:;p PRINTBroj igraa normalne teine:;no

ZADATAK 12.
Ivona jako voli baku i djeda od kojih redovito mjeseno dobiva deparac, no s djedom ima tajni dogovor. Nakon to dobije deparac od bake, djed e joj dati 20% vie. Izradi program kojim e se unijeti iznos deparca koji je Ivona dobila od bake (cijeli broj manji od 200) i ispisati koliko e deparca Ivona dobiti od djeda te koliko je dobila ukupno. Ako iznos djedova deparca nije djeljiv s 10, tada se zaokruuje na prvi vei broj koji je djeljiv s 10. Ulazni podatci: Deparac od bake: 150

NAREDBA FOR-NEXT

25

Izlazni podatci: Deparac od djeda: 180 Ukupni deparac: 330


CLS INPUTUnesi deparac od bake:;b d = b*1.2 IF d MOD 10 <> 0 THEN FOR x=d TO 200 IF x MOD 10 = 0 THEN d = x GOTO 1 END IF NEXT x END IF 1 PRINTdeparac od djeda:;d PRINTUkupno deparca:;d+b

ZADATAK 13.
Marko u slobodno vrijeme oboava bacati dvije kockice i pratiti koje brojeve dobiva. Izradi program kojim e pomoi 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 najvei i najmanji zbroj koji je Marko dobio. Ako se najvei 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

CLS INPUTUnesi broj bacanja:;n max=0 min=12 FOR x=1 TO n INPUTRezultat bacanja:;k1,k2 IF k1+k2 < min THEN min = k1+k2 brmin=0 END IF IF k1+k2 = min THEN brmin=brmin+1 IF k1+k2 > max THEN max = k1+ k2 brmax=0 END IF IF k1 + k2 = max THEN brmax = brmax + 1
26
QBASIC 5. i 6. razred

NEXT x PRINTMinimalni zbroj:;min IF brmin>0 THEN PRINTMinimalni zbroj pojavio se:; brmin; puta. PRINTMaksimalni zbroj:;max IF brmax>0 THEN PRINTMaksimalan zbroj pojavio se:;brmax; puta.

U dvjema pomonim varijablama pamti se najmanji i najvei zbroj. Varijabla za najmanji zbroj na poetku je stavljena na vrijednost 12, a varijabla za najvei broj na vrijednost 0. Za svako se bacanje unose vrijednosti kockica te se odmah provjerava je li zbroj kockica vei od trenutano maksimalnog i manji od trenutano minimalnog. Ako je varijable za brojenje ponavljanje najveeg i najmanjeg, zbroj se postavljaju na vrijednost 0 te se pamte najvea, odnosno najmanja vrijednost. Potom se ispituje je li zbroj kockica jednak najveem ili najmanjem, kako bi se brojila ponavljanja. Na kraju se ispisuju najvei i najmanji zbrojevi te broj ponavljanja ako je vei od 0.

ZADATAK 14.
Ivona subotom voli gledati Ples sa zvijezdama. Meutim, ljuti ju posljednji sudac koji je vrlo strog i daje najnie ocjene. Primijetila je da je njegova ocjena uvijek za 1 manja od najnie ocjene prethodnih triju sudaca. Jedino u sluaju da sva tri suca jednako ocijene, tada e i on dati tu ocjenu. Pomozi Ivoni da lake izrauna 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
CLS min = 10 FOR 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 + 1 NEXT x IF brz = 1 THEN PRINT Ocjena 4.suca je:; ocj PRINT Zbroj ocjena je:; 4 * ocj ELSE PRINT Ocjena 4.suca je:; min - 1 PRINT Zbroj ocjena je:; zbro + min - 1 END IF

NAREDBA FOR-NEXT

27

Najbitnije je odrediti najniu ocjenu koju su suci dodijelili kako bi se mogla odrediti ocjena etvrtoga suca. Varijabla brz slui nam za detektiranje razliitih ocjena. Ako je vrijednost varijable brz 1, nakon petlje napravljena je samo jedna zamjena ocjena to znai da su ocjene svih sudaca jednake. U sluaju 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 vraanjem knjiga. esto vraa knjige sa zakanjenjem pa mora plaati zakasninu. Izradi program koji e pomoi Marku da odredi koliku e zakasninu platiti kod vraanja knjiga. U programu se unosi broj knjiga koje je Marko posudio (najvie 4) te koliko je dana knjige drao kod sebe. Vrijeme posudbe je 21 dan, a zakasnina po danu 0,50 kn po knjizi. Najvea zakasnina koja se moe platiti iznosi 100 kn. Ako Marko vrati knjige sa zakanjenjem od 100 dana, tada ne e morati platiti kaznu. Ulazni podatci: Broj knjiga: 3 Broj dana: 43 Izlazni podatci: Zakasnina: 33 kune
CLS INPUT Unesi broj posuenih knjiga:, n INPUT Koliko je dana Marko drao knjige:, d IF d <= 21 THEN PRINT Knjige su vraene na vrijeme END ELSE zak = d - 21 END IF iznos = n * .5 * zak IF zak = 100 THEN PRINT Marko ne mora platiti zakasninu END END IF IF iznos > 100 THEN iznos = 100 PRINT iznos

28

QBASIC 5. i 6. razred

SLUAJNI BROJEVI - RND

Naredba RND slui za generiranje sluajnih brojeva. Sluajni broj koji raunalo zamisli, decimalni je broj vei od 0, a manji od 1. Stoga se obino taj broj mnoi s 10, 100 ili vie te mu se naredbom INT uklanjaju decimale kako bi se dobio cijeli broj. Da bi se kod svakog pokretanja programa zamislili drugaji brojevi, na poetak programa stavlja se naredba RANDOMIZE TIMER.

ZADATAK 1.
Napii program za pogaanje brojeva manjih od 100. Raunalo treba zamisliti program, a broj pokuaja pogaanja jest 6. Pri svakom pokuaju treba ispisati je li uneseni broj manji ili vei od zamiljenoga. Ako se broj pogodi, treba ispisati u kojemu je pokuaju pogoen.
CLS RANDOMIZE TIMER b = INT(RND*100) FOR x=1 TO 6 INPUTUnesi broj:;a IF a<b THEN PRINT Zamiljeni broj je vei IF a>b THEN PRINTZamiljeni broj je manji IF a=b THEN PRINTPOGODAK PRINTBroj pokuaja:;x END END IF NEXT x PRINTNa alost nisi pogodio

ZADATAK 2.
Izradi program kojim se zadaje 10 zadataka iz zbrajanja jednoznamenkastih brojeva. Brojevi se u zadatcima sluajno odabiru. Program treba brojiti tone odgovore te na kraju ispisati ocjenu po kriteriju: 9 10 bodova - odlian 8 bodova - vrlo dobar 6 7 bodova - dobar 4 5 bodova - dovoljan 0 3 boda - nedovoljan
CLS RANDOMIZE TIMER FOR 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
SLUAJNI BROJEVI - RND

29

NEXT x SELECT CASE t CASE 9,10 PRINTodlian CASE 8 PRINTvrlo dobar CASE 6,7 PRINTdobar CASE 4,5 PRINTdovoljan CASE ELSE PRINTnedovoljan END SELECT

ZADATAK 3.
Izradi program kojim e se sluajno generirati tri jednoznamenkasta broja. Program treba ispisati najvei mogui troznamenkasti broj koji se moe zapisati trima generiranim znamenkama.
CLS RANDOMIZE TIMER z1=INT(RND*10) z2=INT(RND*10) z3=INT(RND*10) IF z1>=z2 AND z1>=z3 IF z1>=z2 AND z1>=z3 IF z2>=z1 AND z2>=z3 IF z2>=z1 AND z2>=z3 IF z3>=z1 AND z3>=z2 IF z3>=z1 AND z3>=z2

AND AND AND AND AND AND

z2>=z3 z3>=z2 z1>=z3 z3>=z1 z1>=z2 z2>=z1

THEN THEN THEN THEN THEN THEN

PRINT PRINT PRINT PRINT PRINT PRINT

z1*100+z2*10+z3 z1*100+z3*10+z2 z2*100+z1*10+z3 z2*100+z3*10+z1 z3*100+z1*10+z2 z3*100+z2*10+z1

ZADATAK 4.
Napravi igru par-nepar. Raunalo generira jedan sluajni 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.
CLS RANDOMIZE TIMER FOR x=1 TO 5 a=INT(RND*10) INPUTOdaberi svoj broj:;b INPUTBiraj par/nepar:;c$ zbr=b+a IF zbr MOD 2 = 0 AND c$=par THEN PRINTPobjednik je igra i=i+1 END IF
30
QBASIC 5. i 6. razred

IF zbr MOD 2 = 0 AND c$=nepar THEN PRINTPobjednik je raunalo r=r+1 END IF IF zbr MOD 2 = 1 AND c$=nepar THEN PRINTPobjednik je igra i=i+1 END IF IF zbr MOD 2 = 1 AND c$=par THEN PRINTPobjednik je raunalo r=r+1 END IF zbr=0 NEXT x PRINT IF i>r THEN PRINTPobjednik je igra ELSE PRINTPobjednik je raunalo

ZADATAK 5.
Izradi program kojim se generiraju dva sluajna broja manja od 100. Program treba napraviti niz na osnovi razlike izmeu 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 izmeu generiranih brojeva 18.
CLS RANDOMIZE TIMER a=INT(RND*100) b=INT(RND*100) PRINT a,b IF a>b THEN k=a-b IF a+k>100 THEN PRINTNIJE MOGUE FORMIRATI NIZ END END IF FOR x=a+k TO 100 STEP k PRINT x; NEXT x ELSE k=b-a IF b+k>100 THEN PRINTNIJE MOGUE FORMIRATI NIZ END END IF FOR x=b+k TO 100 STEP k PRINT x; NEXT x

END IF

SLUAJNI BROJEVI - RND

31

CRTANJE U QBASICU

Za crtanje u Qbasicu potrebno je definirati grafiki zaslon. To radimo s pomou naredbe SCREEN. Karakteristike grafikog zaslona odreuju se brojevima 0-13. Najee se rabi zaslon SCREEN 12 koji ima sljedee karakteristike: 16 boja rezolucija 640 x 480. Kod ovoga zaslona krajnji vrhovi imaju sljedee koordinate:

0,0

640,0

0,480

640,480

Za crtanje se koristimo sljedeim osnovnim naredbama: PSET (x,y),n crta toku s koordinatama u toki x,y u boji n (boja moe biti broj 0-15). LINE (x1,y1)-(x2,y2),n crta ravnu liniju izmeu toaka x1,y1 i x2,y2 u boji n. Naredba LINE moe zavriti parametrom B ili BF. Parametar B (Box) nacrtat e pravokutnik iji su krajnji vrhovi u tokama x1,y1 i x2,y2. Parametar BF (Box Fill) nacrtat e takoer pravokutnik koji e biti ispunjen bojom. CIRCLE (x,y),r,b crta krunicu sa sreditem u toki x,y, polumjerom r i u boji b. PAINT (x,y), b1, b2 boji ispunu nekoga zatvorenog oblika. Toka x,y jedna je toka unutar zatvorenoga oblika, b1 je boja ispune, a b2 boja linije.

ZADATAK 1.
Izradi program kojim se crta n vodoravnih linija u razliitim bojama duljine 600 s razmakom izmeu linija k. U programu se unosi razmak izmeu linija, a broj linija ovisi o koraku. Linije se crtaju do koordinate 400 horizontalno.
CLS INPUTKorak:;k SCREEN 12 n=1 FOR x=0 TO 400 STEP k LINE (0,x) - (640,x),n n=n+1 IF n=16 THEN n=1 NEXT x
32
QBASIC 5. i 6. razred

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

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

Stranica se kvadrata unosi pa je potrebno izraunati koliko se kvadrata moe nacrtati do horizontalnog pomaka od 450. To je izraunano u varijabli brk. Kvadrati se crtaju u FOR-NEXT petlji.

CRTANJE U QBASICU

33

ZADATAK 3.
Izradi program kojim se crta niz obojenih kvadrata jedan unutar drugoga (vidi sliku). Prvi kvadrat ima stranicu 400, a svaki sljedei za 20 manju stranicu. Prvi kvadrat zapoinje na (0,0).

CLS INPUT Unesi korak smanjivanja stranice kvadrata:; k SCREEN 12 brk = INT(400 / k) y = 0 y1 = 400 boja = 1 FOR 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 = 1 NEXT x

Budui da se korak za smanjivanje kvadrata unosi, prvo je potrebno izraunati koliko se kvadrata moe nacrtati (varijabla brk). Zatim se u FOR-NEXT petlji crtaju kvadrati u razliitim bojama ispune.

ZADATAK 4.
Izradi program kojim se crta niz koncentrinih krunica koje imaju sredite u sredini zaslona. Polumjer najmanje krunice i korak za koji raste polumjer unosi se. Krunice se crtaju sve dok su u cijelosti vidljive na zaslonu.

34

QBASIC 5. i 6. razred

CLS INPUT Polumjer najmanje krunice:, a INPUT Korak za poveanje polumjera:, k SCREEN 12 FOR x = 1 TO 100 CIRCLE (320, 240), a a = a + k IF a + 240 >= 460 THEN END NEXT x

Budui da se sve krunice moraju u cijelosti vidjeti na zaslonu, program se prekida kada je polumjer uvean za polovicu vertikalnoga pomaka (240) vei 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.

CRTANJE U QBASICU

35

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

36

QBASIC 5. i 6. razred