SADRŽAJ UVOD ........................... .......................................................... ............................................................... ........................................ ........44 PETLJE .............................. ............................................................. ............................................................... ................................... ...55 RAD SA STRINGOVIMA ................................................................... ......................................................................... ...... 11 JEDNODIMENZIONALNI NIZOVI ............................. ............................................................. .................................. 23 DVODIMENZIONALNI NIZOVI NIZO VI ........................... ........................................................... ...................................... ...... 33 POTPROGRAMI ................................................................... .................................................................................... ................. 40
UVOD Poštovane kolegice i kolege!
Qbasic - zadatke s rješenjima podjednako smo namijenili učenicima sedmih i osmih 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
4
QBASIC • 7. i 8. razred
PETLJE Osim FOR-NEXT petljom, koja se naziva i petlja bez logičkog uvjeta, dio programa u Qbasicu možemo višekratno ponoviti uz pomoć neke petlje s logičkim uvjetom. Takve petlje rabimo ako unaprijed ne znamo koliko ponavljanja dijela programa želimo provesti. Postoje dvije takve petlje: WHILE i DO…LOOP. WHILE PETLJA
WHILE
uvjet istinit
WHILE petlja samo na početku provedbe provjerava
zadani uvjet (logički izraz). Petlja se provodi sve dok je uvjet istinit. Petlja završava ključnom riječi WEND WHILE END). (
naredbe WEND
DO…LOOP
Ova petlja s logičkim uvjetom može imati dvije inačice: DO…LOOP WHILE i DO…LOOP UNTIL. DO
Petlja se provodi sve dok je logički uvjet istinit. Uvjet se ispituje na kraju petlje. naredbe LOOP WHILE
DO WHILE
uvjet istinit
uvjet istinit
Petlja se provodi sve dok je logički uvjet istinit. Uvjet se ispituje na početku petlje.
naredbe LOOP
PETLJE
5
DO
naredbe LOOP UNTIL
Petlja se provodi sve dok je logički uvjet lažan. Uvjet se ispituje na kraju petlje. uvjet lažan
DO UNTIL
naredbe LOOP
Petlja se provodi sve dok je logički uvjet lažan. Uvjet se ispituje na početku petlje. uvjet lažan
ZADATAK 1. Izradi program kojim se učitavaju brojevi sve dok se ne unese 0. Program treba izračunati i ispisati zbroj i srednju vrijednost unesenih brojeva. CLS DO INPUT”Unesi broj:”,i x=x+1 br=br+i LOOP UNTIL i=0 PRINT”Srednja vrijednost:”;br/(x-1) END
U programu se rabi DO…LOOP UNTIL petlja koja ispituje uvjet na kraju. Program se izvodi sve dok je uvjet lažan. Program se mogao izraditi i DO…LOOP WHILE petljom, ali bi tada uvjet trebao biti LOOP WHILE i<>0.
6
QBASIC • 7. i 8. razred
ZADATAK 2. Izradi program kojim se učitava prirodni broj manji od 999999 i ispisuju njegove znamenke te se računa njihov zbroj. CLS INPUT”Unesi broj:”,n& DO WHILE n&<>0 z=n& MOD 10 PRINT z zbr=zbr+z n&=INT(n&/10) LOOP PRINT zbr END
Osnovni je problem u tom programu matematički odrediti svaku znamenku iz broja. Budući da se ne zna unaprijed broj znamenaka u broju, rabi se DO WHILE petlja koja uvjet ispituje na početku tako da se u slučaju unosa broja 0 petlja nijednom ne izvodi. Znamenke u broju uzimaju se na način da se uzme zadnja znamenka kao ostatak kod dijeljenja unesenog broja s 10. Nakon toga u liniji n&=INT(n&/10) početnom broju se uklanja zadnja znamenka te se postupak ponavlja sve dok ne dođemo do prve znamenke. Varijabla n definirana je kao LONG INTEGER varijabla (n&) jer se u uvjetima zadatka traži unos broja manjeg od 999999. Primjer: Unesi broj: 14267 1. LOOP znamenka 7, broj 1426 2. LOOP znamenka 6, broj 142 3. LOOP znamenka 2, broj 14 4. LOOP znamenka 4, broj 1 5. LOOP znamenka 1, broj 0 Tip varijable INTEGER LONG INTEGER SINGLE DOUBLE
Raspon brojeva -32768 do 32767 (16 bitova) -2.147.483.648 do 2.147.483.647 32-bitni broj s pomičnim zarezom 64-bitni broj s pomičnim zarezom
Oznaka % & ! #
ZADATAK 3. Izradi program kojim se učitava prirodni broj i ispisuju svi prosti brojevi manji od njega. CLS INPUT”Unesi broj:”,n x=2 ind=0 DO n=n-1
PETLJE
7
DO IF n MOD x=0 THEN ind=1 x=x+1 LOOP WHILE ind=0 AND x
U ovom programu rabe se dvije ugniježđene DO…LOOP petlje. Velika DO…LOOP UNTIL petlja vrti se sve dok uneseni broj ne dođe do 1. U drugoj se petlji ispituje djeljivost broja brojevima 2,3,4… U slučaju da je broj djeljiv s nekim od brojeva u varijablu ind stavlja se vrijednost 1 što znači da će petlja završiti. Petlja se vrti sve dok je u varijabli ind vrijednost 0 i dok je varijabla x manja od kvocijenta broja n s 2. Kada manja DO…LOOP petlja završi, varijable x i ind stavljaju se u početne vrijednosti te se ponovno vrti velika DO…LOOP petlja.
ZADATAK 4. Izradi program kojim se provjerava znanje tablice množenja. Računalo treba zamisliti dva jednoznamenkasta broja i zadati zadatak nakon čega se upisuje rješenje. Program treba brojiti točne i netočne odgovore, a nakon svakog odgovora program treba pitati želimo li nastaviti. Ako se odgovori sa N, program se prekida i ispisuje se statistika broj točnih i netočnih odgovora. CLS RANDOMIZE TIMER DO 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 INPUT“Novi zadatak? (D/N):“,p$ LOOP WHILE p$<>“N“ PRINT“Točnih odgovora:“;t PRINT“Netočnih odgovora:“n
U programu se rabi naredba RND za generiranje slučajnih brojeva. Zadatci se ponavljaju u DO...LOOP petlji koja se vrti sve dok je varijabla p$ različita od „N“. Točna rješenja se broje u varijabli t, a netočna u varijabli n. Kada se u varijablu p$ unese „N“, petlja završava i ispisuje se broj točnih i netočnih odgovora.
ZADATAK 5. Izradi program kojim se unosi stranica kvadrata. Program treba ispisati niz kvadrata u različitim bojama u jednom redu tako da je svaki kvadrat za n manji od prethodnoga. Program će nacrtati samo cijele kvadrate (posljednji kvadrat ne smije biti djelomično nacrtan), odnosno crtat će samo dok je stranica kvadrata veća od 20. 8
QBASIC • 7. i 8. razred
CLS INPUT“Unesi stranicu najvećeg kvadrata:“,a
INPUT“Unesi za koliko se smanjuje stranica:“,n SCREEN 12 x1=0 y1=0 boja=1 DO LINE(x1,y1) - (x1+a,y1+a),boja,BF x1=x1+a y1=y1+n a=a-n boja=boja+1 IF boja=16 THEN boja=1 IF 640-x1=20