190 likes | 351 Views
Programski jezik Small Basic. Program za ispis kalendara u pojedinom mjesecu. Program 63Bzad72.sb na. Program ispisuje kalendar za svaki mjesec u godini koja nije prijestupna.
E N D
Programski jezik Small Basic Program za ispis kalendara u pojedinom mjesecu
Program 63Bzad72.sb na • Program ispisuje kalendar za svaki mjesec u godini koja nije prijestupna. • Korisnik treba upisati koji dan u tjednu je 1. u mjesecu (1-ponedjeljak, 2-utorak, 3-srijeda, 4-četvrtak, 5-petak, 6-subota, 7-nedjelja), te za koji mjesec (upisati broj od 1 do 12) se ispisuje kalendar. • Program će ispisati kalendar.
O čemu moramo voditi računa? • Mjesec u godini koja nije prijestupna može imati 28, 30 ili 31 dan. • Datumi su jednoznamenkasti ili dvoznamenkasti brojevi, pa ćemo ispisivati u svaki treći stupac • Položaj 1. u mjesecu moramo odrediti ovisno o učitanom danu u tjednu • Sljedeća 3 reda sigurno imaju po 7 dana • U petom redu treba ispisati preostale datume u mjesecu • Ako smo u 5. redu već ispisali 7 dana, a ostalo je još dana u mjesecu preostale dane ispisujemo u 6. redu
Varijable koje se koriste • prvi – broj od 1 do 7 – pamti dan u tjednu prvoga dana u mjesecu • mjesec – pamti mjesec • broj – broj dana u mjesecu • ispisano – koliko smo dana ispisali • dan – redni broj dana kojeg treba ispisati • broji_dan – broji koliko je dana ispisano u pojedinom retku
Rješenje (1/6): Upis ulaznih vrijednosti: TextWindow.Title="PROGRAM ZA ISPIS KALENDARA" TextWindow.WriteLine("Upiši redni broj koji označava koji dan u tjednu je 1. u mjesecu") TextWindow.WriteLine("1-ponedjeljak, 2-utorak,3-srijeda, 4-četvrtak 5-petak, 6-subota, 7-nedjelja") TextWindow.Write("Prvi u mjesecu je:") prvi=TextWindow.ReadNumber() TextWindow.Write("Upiši mjesec za koji se kalendar ispisuje:") mjesec=TextWindow.ReadNumber()
Rješenje (2/6): Određivanje broja dana u mjesecu: Ifmjesec=9Then broj=30 Gotobriši EndIf Ifmjesec=11Then broj=30 Gotobriši EndIf broj=31 briši: TextWindow.Clear() Ifmjesec=2Then broj=28 Gotobriši EndIf Ifmjesec=4Then broj=30 Gotobriši EndIf Ifmjesec=6Then broj=30 Gotobriši EndIf započinje ispis kalendara
Rješenje (3/6): Ispis prvog retka Ako u varijabli prvi pamtimo redni broj prvog dana u mjesecu onda u prvom redu treba ispisati 8-prvi dana (Ako je prvi=1ispisujemo svih 7 dana, a ako je npr. prvi=6 ispisujemo samo 2 dana: subotu i nedjelju. dan=1 ispisano=0 stupac=(prvi-1)*3+3 Form=1To8-prvi TextWindow.CursorTop=4 TextWindow.CursorLeft=stupac TextWindow.Write(dan) dan=dan+1 stupac=stupac+3 ispisano=ispisano+1 EndFor Nakon ove Forpetlje u varijablidannalazi se broj dana kojeg sljedećeg treba ispisati, a u varijabli ispisano koliko smo dana ispisali.
Rješenje (4/6): Ispis redaka u kojima ima 7 dana: stupac=3 Fork=0To2 Form=1To7 TextWindow.CursorTop=2+k TextWindow.CursorLeft=stupac TextWindow.Write(dan) dan=dan+1 stupac=stupac+3 ispisano=ispisano+1 EndFor stupac=3 EndFor Ifispisano=brojThen Gotokraj EndIf
Rješenje (5/6): Ne možemo koristiti Forpetlju jer ne znamo koliko je dana preostalo. Dane ispisujemo dok nismo ispisali sve dane (dan<=broj) ili dok nismo ispisali cijeli tjedan (broji_dan<=7) broji_dan=1 stupac=3 povratak: TextWindow.CursorTop=5 TextWindow.CursorLeft=stupac TextWindow.Write(dan) dan=dan+1 broji_dan=broji_dan+1 stupac=stupac+3 ispisano=ispisano+1 Ifdan<=brojThen Ifbroji_dan<=7Then Gotopovratak EndIf EndIf
Rješenje (6/6): Ako je ispisano=broj, onda smo ispisali sve potrebne dane i preskačemo na kraj programa. Inače, ispisujemo posljednji redak kalendara. Ifispisano=brojThen Gotokraj EndIf broji_dan=1 stupac=3 gore: TextWindow.CursorTop=6 TextWindow.CursorLeft=stupac TextWindow.Write(dan) dan=dan+1 broji_dan=broji_dan+1 stupac=stupac+3 Ifdan<=brojThen Gotogore EndIf kraj: TextWindow.WriteLine("")
Zadaci za učenike: • Dopuni program tako da ispisuje kalendar i za prijestupnu godinu • Radne dane ispiši žutom bojom, a nedjelje crvenom • Na vrhu kalendara ispiši početna slova dana u tjednu: P, U, S, Č, P, S i N. • Dodaj naredbe koje ispisuju ime pojedinog mjeseca u godini.
Rješenje (1/7): TextWindow.Title="PROGRAM ZA ISPIS KALENDARA" TextWindow.WriteLine("Upiši redni broj koji označava koji dan u tjednu je 1. u mjesecu") TextWindow.WriteLine("1-ponedjeljak, 2-utorak,3-srijeda, 4-četvrtak 5-petak, 6-subota, 7-nedjelja") TextWindow.Write("Prvi u mjesecu je:") prvi=TextWindow.ReadNumber() TextWindow.Write("Upiši mjesec za koji se kalendar ispisuje:") mjesec=TextWindow.ReadNumber() TextWindow.Write("Je li godinaprijestupna? 0-NE, 1-DA:") prijestupna=TextWindow.ReadNumber() Nove naredbe označene su svijetlo plavom podlogom.
Rješenje (2/7): Ifmjesec=9Then broj=30 Gotobriši EndIf Ifmjesec=11Then broj=30 Gotobriši EndIf broj=31 briši: TextWindow.Clear() TextWindow.ForegroundColor=11 TextWindow.CursorTop=1 TextWindow.CursorLeft=11 Ifmjesec=2Then Ifprijestupna=1Then broj=29 Else broj=28 EndIf Gotobriši EndIf Ifmjesec=4Then broj=30 Gotobriši EndIf Ifmjesec=6Then broj=30 Gotobriši EndIf
Rješenje (3/7): Ifmjesec=7Then TextWindow.Write("SRPANJ") EndIf Ifmjesec=8Then TextWindow.Write("KOLOVOZ") EndIf Ifmjesec=9Then TextWindow.Write("RUJAN") EndIf Ifmjesec=10Then TextWindow.Write("LISTOPAD") EndIf Ifmjesec=11Then TextWindow.Write("STUDENI") EndIf Ifmjesec=12Then TextWindow.Write("PROSINAC") EndIf Ifmjesec=1Then TextWindow.Write("SIJEČANJ") EndIf Ifmjesec=2Then TextWindow.Write("VELJAČA") EndIf Ifmjesec=3Then TextWindow.Write("OŽUJAK") EndIf Ifmjesec=4Then TextWindow.Write("TRAVANJ") EndIf Ifmjesec=5Then TextWindow.Write("SVIBANJ") EndIf Ifmjesec=6Then TextWindow.Write("LIPANJ") EndIf
Rješenje (4/7): TextWindow.CursorTop=2 TextWindow.CursorLeft=3 TextWindow.ForegroundColor=15 TextWindow.WriteLine("P U S Č P S N") TextWindow.ForegroundColor=14 dan=1 ispisano=0 stupac=(prvi-1)*3+3 Form=1To8-prvi TextWindow.CursorTop=4 TextWindow.CursorLeft=stupac Ifstupac=21Then TextWindow.ForegroundColor=12 Else TextWindow.ForegroundColor=14 EndIf TextWindow.Write(dan) dan=dan+1 stupac=stupac+3 ispisano=ispisano+1 EndFor
Rješenje (5/7): stupac=3 Fork=0To2 Form=1To7 TextWindow.CursorTop=5+k TextWindow.CursorLeft=stupac Ifstupac=21Then TextWindow.ForegroundColor=12 Else TextWindow.ForegroundColor=14 EndIf TextWindow.Write(dan) dan=dan+1 stupac=stupac+3 ispisano=ispisano+1 EndFor stupac=3 EndFor Ifispisano=brojThen Gotokraj EndIf
Rješenje (6/7): broji_dan=1 stupac=3 povratak: TextWindow.CursorTop=8 TextWindow.CursorLeft=stupac Ifstupac=21Then TextWindow.ForegroundColor=12 Else TextWindow.ForegroundColor=14 EndIf TextWindow.Write(dan) dan=dan+1 broji_dan=broji_dan+1 stupac=stupac+3 ispisano=ispisano+1 IFdan<=brojThen Ifbroji_dan<=7Then Gotopovratak EndIf EndIf
Rješenje (7/7): Ifispisano=brojThen Gotokraj EndIf broji_dan=1 stupac=3 gore: TextWindow.CursorTop=9 TextWindow.CursorLeft=stupac Ifstupac=21Then TextWindow.ForegroundColor=12 Else TextWindow.ForegroundColor=14 EndIf TextWindow.Write(dan) dan=dan+1 broji_dan=broji_dan+1 stupac=stupac+3 Ifdan<=brojThen Gotogore EndIf kraj: TextWindow.WriteLine("")