Nastavna tema: Osnove programiranja i programski jezik QBASIC Nastavna jedinica: RAUNAR DONOSI ODLUKE - IF - THEN - ELSE I GOTO NAREDBE Cilj sata: osposobiti uenike za samostalno kodiranje kraih programa u QBASIC-u Zadaci nastave: o vaspitni shvatiti nain na koji raunar donosi odluke! nauiti pojam logikog uslova! nauiti kako se algoritmi grananja kodiraju u programskom jeziku QBASIC o "unk#ionalni razvijati logiko mi$ljenje! razvijati sposobnosti ra$lanjivanja problema o vaspitni potisti#ati saradniki odnos u radu! marljivost! upornost i urednost Nastavne metde: metode praktinog rada na raunaru! razgovora! pismenih radova! demonstra#ije! #rtanja Nastavna sredstva: prezenta#ija %%&! gra"o"olija !"lici rada: "rontalni! grupni! individualni rad #rtikulacija nastavn$ %asa: 'vod %ostavljanje problema Sjetimo se problema Vi ste ef raunovodstva u jednom velikom raunskom centru koje ima 10000 radnika. Direktor trai da mu u roku pola sata kaete koji radnik ima najveu, a koji radnik najmanju platu, i kolika je prosjena plata po radniku. (oje algoritamske postupke moramo koristiti da bi rije$ili postavljeni zadatak) *+rananje i petlja, %onovimo (ako smo u dijagramu tijeka opisali simbol za odluku) *-omb unutar kojeg se nalazi uslov! koji je imao . izlaza / 0A ako je uslov istinit te 12 ako je uslov la3an4, 1ajava #ilja 0anas emo nauiti kako u programskom jeziku QBASIC mo3emo kodirati granaje! te jedan mogui nain za petlju4 1akon toga moi ete na raunaru rije$iti zadani problem4 'poznat emo I5 / &621 / 27S2 naredbu4 Obrada novih sadr3aja &rimjer ': 1api$imo program koji za dva upisana razliita broja ispisuje vei od ta dva broja44 -je$enje algoritam: poetak upi$i A!B ako je A8B onda ispi$i A inae ispi$i B kraj
9 0A 12 uslov dijagram toka: %rogram C7S I1%'& :'pi$i dva razliita broja:! a! b I5 a 8 b &621 %-I1& :;ei je:< a 27S2 %-I1& :;ei je:< b 'poznali smo novu naredbu () * +,-N nared"u4 Op$ti oblik I5 - &621 naredbe je sljedei () uslv +,-N nared"a -./- nared"a 0slv koji slijedi iza I5 mora biti l$i%k$ ti1a! $to znai da na njega mo3emo uvijek tano odgovoriti da li je istinit ili la3an4 Ako je uslov istinit! izvr$it e se nareda i!a THEN! a ako uslov ni"e istinit izvr$it e se nareda i!a ELSE! uslv da ne
nared"a nared"a iza +,-N iza -./-
Sada emo upoznati kako postupiti ako moramo provjeriti vi$e od jednog uslova4 1avikavati uenike na preglednom pisanju koda! tj4 slo3enu I5 naredbu nauiti pisati pregledno 27S2 ispod &621! naredbe za pojedini uslova jedna ispod druge! uvueno ispod kljunih rijei &621 ili 27S241aredba za kraj petlje 210 I5 pi$e se ispod kljune rijei I5 na koju se odnosi4 %rimjer = ' pro$lom primjeru pretpostavili smo da upisujemo dva razliita broja4 1api$imo program koji za zadana dva broja ispisuje poruku je li a8b ili a>b ili a?b4 1pr4 za brojeve = i @ treba ispisati =>@! a za brojeve A i . treba ispisati A8.4 -je$enje Bitav program sastoji se od uitavanja dva broja koji se pamte na nepoznani#ama a i " i jedne slo3ene I5- &621-27S2 naredbe4 %rvo treba provjeriti je li a8b4 Ako je taj uslov istinit ispisujemo poruku i program zavr$ava4 Ako nije a8b! tada treba provjeriti je li a>b4 Opet ako je sada uslov istinit ispisujemo poruku4 CeDutim ako uslov a>b nije istinit onda mo3emo odmah ispisati poruku da je a?b *jer smo provjerili da nije a8b niti a>b! pa je to jedina mogunost,4 . 12 S&A-& A! B A (-AE A8B B 0A %rika3imo tu naredbu shematski a2" DA NE (s1is 1ruke: a3" a2" DA NE
(s1is 1ruke: (s1is 1ruke: a3" a4" ' ovakvom sluaju koristimo tzv4 slo3enu I5 / &621 / 27S2 naredbu4 Ona se mo3e pisati u vi#e redova! ali tada itava I5 naredba mora zavr$iti s kljunom rijei -ND () *$to znai kraj I5 naredbe,4 2vo programa C7S I1%'& :'pi$i dva broja:! a! b I5 a 8 b &621 %-I1& a< :8:< b 27S2 I5 a > b &621 %-I1& a< :>:< b 27S2 %-I1& a< :?:< b 210 I5 210 I5 1aglasimo i sljedee ' slo3enoj I5 - &621 - 27S2 naredbi! naredbe iza &621 i 27S2 pi$u se u novi red4 Obrada novog gradiva Sada emo upoznati novu naredbu koja nam u kombina#iji s I5- &621- 27S2 naredbom omoguava kodiranje petlje4 %rimjer @ 1api$imo program za ispis prvih .F prirodnih brojeva4 %risjetimo se postupka 94 Odaberimo jednu nepoznani#u koja e pamtiti koji broj trenutno ispisujemo4 1eka je to nepoznani#a G4 .4 %rvo stavimo 9 u G4 *G?9, H4 Ispi$emo vrijednost od G4 *%-I1& G, =4 %oveamo vrijednost od G za 94 *G?GI9, @4 Ako je G .F vraamo se na ispisivanje G *korak H4,! a inae zavr$imo program *jer znai da je G8.F pa su svi brojevi od 9 do .F su ispisani, 0akle za ovaj posljednji korak potrebna nam je naredba koja nam omoguuje da odemo natrag na korak H4 &o je naredba 5!+!4 (ljunu rije 5!+! slijedi broj koji oznaava red programa na koji se 3elimo vratiti4 algoritam poetak G?9 ispi$i G G?GI9 ako je G .F idi na naredbu ispi$i G kraj H dijagram toka: %rogram C7S J ? 9 9F %-I1& J J ? J I 9 I5 J >? .F &621 +O&O 9F %rilikom pokretanja programa ispisat e se prvih .F prirodnih brojeva4 ;je3banje 0a bi rije$ili problem s poetka asa *raunovodstvo, potrebno je znati napisati program za odreDivanje najveeg broja4 %odijelimo uenike u grupe i potaknimo ih da sami slu3ei se knjigom rije$e sljedei primjer %rimjer A4 1api$imo program koji za zadane prirodne brojeve odreDuje najvei meDu njima4 Brojevi se zadaju sve dok se ne upi$e F4 Cetodom razgovora moramo provjeriti jesu li grupe dobro rije$ile zadatak4 %ritom inzistirati na logikom povezivanju algoritma! dijagrama toka i programa4
algoritam: poetak najvei?F upi$i J ako je J?F onda ispi$i najvei! idi na kraj inae ako je = S&A-& 0A 12 X 20 G?9 G?GI9 G (-AE J8najvei onda najvei?J vrati se na naredbu upi$i J dijagram toka: %rogram C7S najve#i ? F 9F I1%'& J I5 J ? F &621 +O&O .F I5 J 8 najve#i &621 najve#i ? J +O&O 9F .F %-I1& :1ajvei broj:< najve#i 0i"eren#irani rad 0o sada steenim znanjem ueni#i mogu rje$avati razliite programske zadatke4 Ovdje nam se ine zgodnim razliiti zada#i s is#rtavanjem nizova raznobojnih znakova! npr4 zvjezdi#a koji tvore neke oblike4 1apredniji ueni#i mogu rje$avati Kproblem raunovodstvaL! dok ostali mogu #rtati programe sa zvjezdi#ama4 I rad Ksa zvjezdi#amaL treba di"eren#irati dok e jedni znati sami odmah kodirati program! drugima emo pomoi da @ S&A-& najvei?F najvei?J 12 0A J?F (-AE najvei J 12 0A J8najvei prvo razrade algoritam i na#rtaju dijagram toka! a zatim kodiraju4 Cogue je da e biti i onih uenika koji e samo prepisivati gotov program u raunaru i izvr$iti ga4 %rimjer M4 1api$imo program koji uitava prirodan broj 1>.= i #rta niz od 1 zvjezdi#a jednu ispod druge u razliitim bojama! od prve do 1-te boje4 Ako je zadan 18.= treba ponoviti zadavanje broja 14 %rilikom izvr$enja programa dobit emo ovu sliku4 Opi$imo postupak 94 %rvo uitavamo prirodan broj 14 'koliko je 18 .H treba se vratiti na ponovno uitavanje broja4 .4 %otrebna nam je jedna nepoznani#a na kojoj emo brojati koji red u kojem trenutno ispisujemo zvjezdi#u4 1eka je to nepoznani#a "rj4 %ostavljamo broj ? 94 H4 Boja prve zvjezdi#e je 9 *plava,! boja druge zvjezdi#e je . *zelena,! itd4 pa boju pojedine zvjezdi#e namje$tamo naredbom CO7O- broj4 =4 Ispisujemo zvjezdi#u u redu broj i 9F4 stup#u 4 @4 Broja redova "rj poveavamo za 94 A4 %rovjeravamo jesmo li ispisali sve redove4 'koliko je broj N1 *u QBASIC-u se znak N *manje ili jednako, pi$e K>?L,! vraamo se na namje$tanje boje kojom e se ispisati sljedea zvjezdi#a4 %rogram C7S @ I1%'& 1 I5 1 8 .H &621 +O&O @ broj ? 9 9F CO7O- broj 7OCA&2 broj! 9F %-I1& :O: broj ? broj I 9 I5 broj >? 1 &621 +O&O 9F %rimjer P4 1api$imo program koji uitava prirodni broj 1 *1>.=, i #rta 1 redova zvjezdi#a4 ' prvom redu ima jedna zvjezdi#a! a u svakom sljedeem redu ima jedna zvjezdi#a vi$e nego u predhodnom redu4 ;idi sliku -je$enje primjera P4 treba izgledati ovako Opi$imo postupak 94 (ao i u pro$lom primjeru uitavamo 1 i provjeravamo je li 18.H! pa ako jest vraamo se na ponovno uitavanje4 .4 Osim brojaa "rj za broj redova koje moramo ispisati! potreban nam je broja 6 koji broji koliko smo trenutno zvjezdi#a u pojedinom redu ispisali4 H4 Sada treba ispisati red zvjezdi#a4 ' prvom redu je jedna zvjezdi#a! u drugom redu dvije! u treem tri itd4 0akle u svakom redu je onoliko zvjezdi#a koliko trenutno pi$e na nepoznani#i broj4 A =4 %ostavljamo J ?F i ispisujemo zvjezdi#e jednu pokraj druge *%-I1& :O:<, sve dok je J>broj4 @4 (ad je J? broj znai da smo ispisali sve zvjezdi#e u tom redu i pokaziva treba preba#iti u drugi red4 &o radi naredba %-I1&4 A4 Ostaje poveati broja "rj za broj redova i provjeriti je li broj N1 kako se vratili na ispisivanje sljedeeg reda4 %rogram C7S @ I1%'& n I5 n 8 .H &621 +O&O @ broj ? 9 .F CO7O- broj J ? F 9F %-I1& :O:< J ? J I 9 I5 J > broj &621 +O&O 9F broj ? broj I 9 %-I1& I5 broj >? n &621 +O&O .F %rimjer Q4 1api$imo program koji #rta piramidu zvjezdi#a od 1 redova! 1 treba uitati *1>.=,! na sljedei nain ' prvoj redu je jedna zvjezdi#a! u sljedeem redu su tri zjezdi#e! pa @ zvjezdi#a! itd4 Svaki red obojan je drugom bojom redom poev$i od plave4 *program FFHF=-9M4bas,4 ;idi sliku -je$enje primjera Q4 treba izgledati ovako Opi$imo postupak 94 'itavamo 1 i provjeravamo je li 1> .= kao u pro$lim primjerima4 .4 %ostavljamo nepoznani#u za broj redova "rj broj?9 i boju prvog reda CO7O- broj H4 Sada treba odrediti koliko zvjezdi#a ima u pojedinom redu4 Ako u prvom redu ima jedna zvjezdi#a! a u drugom redu H! u treem @ zvjezdi#a! to su redom neparni brojevi! pa u retku "rj ima !roj"1 zvjezdi#a4 =4 Rvjezdi#a u prvom redu neka bude na sredini ekrana / =F stupa#! a prva zvjezdi#a u svakom sljedeem redu pomie se jedno mjesto udesno! pa je 7OCA&2 broj! =F - *broj - 9,4 @4 Sada mo3emo ispisivati zvjezdi#e u pojedinom redu4 &reba nam nepoznani#a pomou koje emo brojati koliko je zvjezdi#a ispisano u pojedinom redu4 Stavimo ispisano?F4 A4 Ispi$imo prvu zvjezdi#u %-I1& :O:< M4 %oveajmo nepoznani#u koja broji koliko smo zvjezdi#a ispisali ispisano ? ispisano I 9 P4 Ako nismo ispisali sve zvjezdi#e u tom retku vraamo se na ispis sljedee zvjezdi#e! a ako smo ispisali sve zvjezdi#e u pojedinom redu! prelazimo u novi red na ekranu *%-I1&, Q4 'pravo smo ispisali #ijeli red! pa poveavamo nepoznani#u koja broji redove *broj?brojI9, M 9F4 'koliko nismo ispisali 1 redaka treba se vratiti na liniju koja e odrediti boju novog reda4 %rogram C7S @ I1%'& :n?:! n I5 n 8 .H &621 +O&O @ broj ? 9 .F CO7O- broj imaih ? . O broj - 9 7OCA&2 broj! =F - *broj - 9, ispisano ? F 9F %-I1& :O:< ispisano ? ispisano I 9 I5 ispisano > imaih &621 +O&O 9F %-I1& broj ? broj I 9 I5 broj > n I 9 &621 +O&O .F %rimjer 9F 1api$imo program koji zbraja prvih 1 prirodnih brojeva4 %rirodan broj 1 treba uitati! a ispisati zbroj4 Opi$imo postupak 1. Radajemo broj 14 2. %otrebne su nam dvije napoznani#e pomou nepoznani#e 6 pamtit emo koji broj trenutno zbrajamo! a u nepoznani#i z"rj pamtit emo trenutni zbroj brojeva do broja J4 Objema pridru3imo nulu4 '. %oveavamo J za 9 *J?JI9, i taj broj dodajemo nepoznani#i zbroj *zbroj ? zbrojIJ,4 7. Ako je J>1 tada treba dodati sljedei broj nepoznani#i z"rj *nismo jo$ sve brojeve zbrojili,! a inae treba ispisati vrijednost nepoznani#e z"rj. 2vo programa C7S I1%'& n J ? F zbroj ? F 9F J ? J I 9 zbroj ? zbroj I J I5 J > n &621 +O&O 9F %-I1& :Rbroj?:< zbroj P -je$enje Kproblema raunovodstvaL algoritam: poetak broj?F upi$i radni#i upi$i plata maJ?plata min?plata zbroj?plata sve dok je broj>radni#i ponavljaj upi$i plata ako je plata>CI1 onda CI1?plata ako je plata8CAG onda CAG?plata zbroj?zbrojIplata broj?brojI9 kraj ponavljanja prosjek?zbrojSradni#i ispi$i CI1! CAG! prosjek kraj Q dijagram toka: 9F (-AE MIN, MAX, prosjek S&A-& broj?9 CI1?plata 0A 12 broj>9FFFF F maJ?plata min?plata zbroj?plata plata 12 0A plata>CI1 12 0A plata8CAG CAG?plata zbroj?zbrojIplata prosjek?zbrojS9FFFF broj?brojI9 plata %rogram C7S broj ? F I1%'& :Broj radnika?:! radni#i I1%'& plata min ? plata maJ ? plata zbroj ? plata broj ? broj I 9 9F I5 broj > radni#i &621 I1%'& plata I5 plata > min &621 min ? plata I5 plata 8 maJ &621 maJ ? plata zbroj ? zbroj I plata broj ? broj I 9 27S2 +O&O .F 210 I5 +O&O 9F .F prosjek ? zbroj S radni#i %-I1& :1ajvea plata je :< maJ %-I1& :1ajmanja plata je:< min %-I1& :%rosjena plata je :< prosjek 99 (za8i iz du9ana.