i
10 Izrada web-stranica 10.14. Kako u programu Blok za pisanje pospremate web-stranicu? 10.15. Nabrojite neke programe u kojima se mogu
izrađivati
web-stranice.
10.16. Navedite neke HTML oznake koje dolaze u parovima. 10.17. Napišite HTML kod koji datoteku dan.htm.
će
odrediti da je na
riječi
dan postavljena poveznica na
10.2 Prva web-stranica, 10.3 Rad s tekstom 10.18. Napravite novu, praznu web-stranicu. a) napišite u nju neke tri rečenice; b) spremite je u datoteku zadatak10-18.htm, pri spremanju napišite naslov stranice "Dobar početak". 10.19. Napravite novu , praznu web-stranicu. a) napišite u nju tekst neke pjesme; b) podesite kodiranje za hrvatski jezik; c) napišite naslov stranice - naslov pjesme; d) spremite je u datoteku zadatak10-19.htm. 10.20. Napravite novu, praznu web-stranicu. a) stavite joj žutu podlogu; b) napišite 4 rečenice o rijeci Korani; c) tekst Oblikujte: plavo, Arial 14; d) podesite kod iranje za hrvatski jezik; e) napišite naslov stranice "Rijeka Korana"; f) spremite je u datoteku zadatak10-20.htm. 10.21. Otvorite datoteku zadatak10-20.htm, pa: a) napisani tekst kopirajte tri puta; b) svaki kopirani primjerak teksta obojite drugom bojom; c) prvi primjerak teksta poravnajte lijevo, drugi po sredini, obostrano; d) spremite je u datoteku zadatak10-21.htm .
treći
desno, a četvrti
149
Informatika i računalstvo - zbirka zadataka 10.22. Napravite novu, praznu web-stranicu. a) stavite joj plavu podlogu; b) napišite plan svojih aktivnosti po danima u tjednu, upotrijebite numerirane popise; c) tekst oblikujte: bijelo, Com ic Sans 14; d) podesite kodiranje za hrvatski jezik; e) napišite naslov stranice "Plan aktivnosti"; f) spremite je u datoteku zadatak10-22.htm.
grafičke
i
10.23. Opišite postupak izrade nove, prazne web-stranice. 10.24. U kojem pogledu treba biti otvorena stranica da na njoj možete pisati tekst? 10.25. Opišite postupak podešavanja kodiranja web-stranice za hrvatski jezik. 10.26. Opišite postupak oblikovanja odlomka teksta da izgleda ovako: Arial 16, plavo, podcrtano, poravnato po sredini.
10.4 Izrada web-mjesta, 10.5 Teme u FrontPageu 10.27. Kako se primjenjuje tema na cijeli web? 10.28. Kako se može uređivati tema? 10.29. Napravite novo web-mjesto o kućnim ljubimcima: a) koristeći predložak Personal Web Site, u mapu zadatak10-29; b) promijenite naslove svih stranica (ispod početne), redom u mačke, psi, papige, ribice, kanarinci; c) podesite kodiranje svih stranica na hrvatski jezik; d) spremite web-mjesto. 10.30. Otvorite web zadatak10-29: a) napišite tekst na početnoj stranici ; b) napišite tekstove o kućnim ljubimcima na svim ostalim stranicama tog weba; c) spremite web-mjesto.
150
10 Izrada web-stranica 10.31. Otvorite web zadatak1 0-29: a) umetnite dvije nove web-stranice u drugoj razini weba, imenujte ih - zmije i kornjače;
b) umetnite dvije nove stranice kao "djecu" web-stranice mačke, imenujte ih perzijske i sijamske; c) napišite po dvije rečenice teksta na svim novim stranicama; d) provjerite kodiranje i podesite za hrvatski jezik; e) spremite web-mjesto. 10.32. Opišite postupak stvaranja novog weba prema nekom predlošku iz FrontPagea. 10.33. Kako u web
umećete
novu praznu web-stranicu?
10.34. Kako se sprema web-mjesto? 10.35. Kako uklanjate neku stranicu iz weba? 10.36. Umetnete li novu stranicu u web na koji ste primijenili neku FrontPageovu temu, hoće li tema biti automatski primijenjena na tu novu stranicu ili to trebate učiniti sami?
10.6 Rad sa slikama 10.37. Otvorite datoteku zadatak10-20.htm, pa: a) pripremite dvije slike vezane uz rijeke (fotografije, crtežni isječci, i sL), slike trebaju biti u gif ili jpg datotekama; b) umetnite jednu sliku na početak teksta, poravnajte je lijevo tako da tekst ide uz nju; c) drugu sliku umetnite ispod teksta, poravnajte je po sredini ; d) spremite web-stranicu u datoteku zadatak10-37.htm. 10.38. Otvorite datoteku zadatak10-22.htm, pa: a) pripremite tri slike koje prikazuju vaše aktivnosti (fotografije, crtežni isječci, i sL) ; b) umetnite prvu sliku ispred teksta, poravnajte je lijevo; c) umetnite drugu sliku na početak prvog odlomka, poravnajte je desno tako da tekst ide uz nju; d) treću sliku umetnite ispod teksta, poravnajte je po sredini; e) spremite web-stranicu u datoteku zadatak10-38.htm.
151
Informatika i računalstva - zbirka zadataka 10.39. Otvorite datoteku zadatak10-3S.htm, pa: a) za sve umetnute slike napravite smanjene i načice pomoću alata Auto Thumbnail; b) spremite web-stranicu u datoteku zadatak10-39.htm. 10.40. Napravite novu, praznu web-stranicu. a) pripremite četiri slike članova obitelji ili prijatelja (fotografije, crtežni isječci, i sL), slike trebaju biti u gif ili jpg datotekama; b) stavite joj bež podlogu; c) umetnite sve slike i uz svaku napišite ime osobe na slici; d) tekst oblikujte: plavo, Arial 16; e) podesite kodiranje za hrvatski jezik; f) napišite naslov stranice "Obitelj" ili "Prijatelji"; g) spremite je u datoteku zadatak1 0-40.htm. 10.41. Napravite nove web-stranice: a) za svaku od osoba koju ste spomenu li u prethodnom zadatku . b) na svakoj stranici napišite par rečenica o tOj osobi; c) u naslov stranice upišite ime osobe; d) podesite kodiranje za hrvatski jezik; e) stranice spremite pod imenima zadatak1 0-41 a.htm, zadatak1 0-41 b.htm, zadatak10-41c.htm i zadatak1 0-41 d.htm 10.42. Nabrojite neke slikovne formate koji su prikladni za korištenje na web-stranicama. 10.43. Opišite postupak umetanja slike iz datoteke na web-stranicu. 10.44. Opišite postupak izrade umanjene inačice slike koja je umetnuta na web-stranicu. 10.45. Otvorite web zadatak10-29: a) na svaku web-stranicu umetnite po jednu sliku b) spremite web.
odgovarajuće
životinje;
10.7 Poveznice 10.46. Napravite novu web-stranicu: a) napišite pet rečenica o svojoj školi, oblikujte tekst po želji; b) umetnite sliku škole, napravite umanjenu inačicu; c) na ime škole i na sliku škole umetnite poveznice na web-adresu školskih web-stranica; d) napišite naslov stranice i podesite kodiranje; e) stranicu spremite pod imenom zadatak10-46.htm. 152
10 Izrada web-stranica 10.47. Otvorite datoteku zadatak10-40.htm, pa: a) na svaku sliku umetnite poveznicu na web-stranicu o tOj osobi (web-stranice napravljene u zadatku 41); b) spremite web-stranicu u datoteku zadatak10-40.htm. 10.48. Otvorite datoteke zadatak10-41a.htm, zadatak10-41b.htm, zadatak10-41c.htm i zadatak1 0-41 d.htm, pa: a) u svaku od njih na dnu stranice umetnite riječ "Natrag" i na tu riječ umetnite poveznicu na datoteku zadatak10-40.htm; b) sve datoteke spremite pod imenom koje su imale. 10.49. Pokrenite web-preglednik: a) otvorite datoteku zadatak10-40.htm; b) provjerite rade li dobro poveznice sa slika na odgovarajuće web-stranice i natrag; ako ima pogrešaka ispravite ih. 10.50. Napravite sedam novih web-stranica: a) svaka stranica treba imati naslov po jednom danu u tjednu; b) na svakoj stranici napišite svoje obaveze za taj dan; c) stranice spremite pod imenima redom od zadatak1 0-50a.htm do zadatak10-50g.htm u mapu zadatak10-50; d) na početak svake stranice umetnite sedam interaktivnih gumba, s nazivima prema danima u tjednu i s poveznicama na pojedini dan u tjednu; e) spremite sve stranice pod postojećim imenima. 10.51. Pokrenite web-preglednik: a) otvorite datoteku zadatak10-50a.htm; b) provjerite rade li dobro poveznice između odgovarajućih web-stranica, ako ima pogrešaka ispravite ih. 10.52. Što su poveznice? 10.53. Opišite postupak umetanja poveznice na sliku. Poveznica treba pokazivati na neku datoteku na računalu. 10.54. Opišite postupak umetanja poveznice koja pokazuje na neku URL adresu. Poveznica se treba nalaziti na jednoj riječi u tekstu web-stranice.
153
Informatika i računalstvo - zbirka zadataka 10.8 Navigacija na internetu, 10.9 Rad s tablicama 10.55. Napravite novu web-stranicu: a) na stranicu umetnite tablicu s dva stupca i pet redaka; b) u tablicu upišite pet imena i datume rođenja za osobe rođene u s ij ečnju; c) oblikujte obrub, poravnavanje i podlogu tablice; d) napišite naslov "Siječanj" i podesite kodiranje; e) stranicu spremite pod imenom zadatak10-55.htm . 10.56. Napravite 11 novih web-stranica: a) kao u prethodnom zadatku, ali za mjesece redom veljača, ožujak, travanj, ... , prosinac; b) spremite ih pod imenima zadatak10-56a.htm, zadatak10-56b.htm, zadatak10-56c.htm, .. . zadatak10-56k.htm. 10.57. Otvorite datoteke zadatak10-55.htm, zadatak10-56a.htm, ... , zadatak10-56k.htm. a) umetnite po dvije poveznice u svaku od njih i povežite ih s prethodnim i sljedećim mjesecom; b) spremite ih pod postojećim imenima; c) pregledajte stranice u web-pregledniku, ispravite pogreške ako je potrebno. 10.58. Napravite novu web-stranicu: a) umetnite nevidljivu tablicu s dva retka i tri stupca; b) u središnjem dijelu tablice napišite tekst o nekim hrvatskim gradovima; c) u posljednjem retku tablice napravite navigacijsku traku; d) u navigacijskoj traci umetnite poveznice na web-stranice nekih hrvatskih gradova; e) stranicu spremite pod imenom zadatak10-58.htm. 10.58. Napravite novu web-stranicu: a) u obliku stranice godišnjaka sa slikom i tekstom o sebi; b) spremite je pod svojim imenom (primjerice ana.htm) u mapu zadatak10-58; c) kopirajte na svoje računalo, u mapu zadatak10-58, datoteke sa stranicama godišnjaka svojih prijateljica i prijatelja; d) napravite novu web-stranicu kao naslovnu stranicu godišnjaka, spremite je pod imenom zadatak10-58.htm; e) na tu, naslovnu stranicu umetnite poveznice na sve stranice godišnjaka; f) na svaku pojedinu stranicu godišnjaka umetnite poveznicu na naslovnu stranicu; g) sve stranice spremite pod postojećim imenima.
154
10 Izrada web-stranica 10.59. Napravite novu web-stranicu: a) na stranicu umetnite nevidljivu tablicu koja će se prilagođavati širin i korisničkog zaslona; b) u prvi stupac tablice umetnite četiri navigacijska gumba s imenima geometrijskih tijela; c) u tablicu napišite tekst o geometrijskim tijelima; d) stranicu spremite pod imenom zadatak10-59.htm . 10.60. Napravite četiri nove web-stranice: a) na svakoj napišite tekst o jednom geometrijskom tijelu; b) umetnite sliku tog tijela; c) napišite formule za izračunavanje obujma i oplošja tog tijela; d) stranice spremite pod imenima zadatak1 0-60a.htm, zadatak10-60b.htm, zadatak10-60c.htm, zadatak10-60d.htm. 10.61. Otvorite datoteku zadatak10-59.htm: a) na navigacijske gumbe umetnite poveznice na datoteke zadatak10-60a.htm, zadatak10-60b.htm, zadatak10-60c.htm, zadatak10-60d.htm; b) stranicu spremite pod imenom zadatak1 0-59.htm . 10.62. Otvorite datoteke zadatak10-60a.htm, zadatak10-60b.htm, zadatak10-60c.htm, zadatak1 0-60d.htm: a) uz svaku umetnite riječ "Glavna" s poveznicom na datoteku zadatak10-59.htm; b) sve stranice spremite pod postojećim imenima. 10.63. Pokrenite web-preglednik: a) otvorite datoteku zadatak10-59.htm; b) provjerite rade li dobro poveznice na odgovarajuće web-stranice; c) provjerite vide li se dobro tekstovi, formule i slike; d) ako ima grešaka ispravite ih. 10.64. Napravite pet novih web-stranica: a) glavnu, naslovnu stranicu spremite u datoteku zadatak10-64a.htm; b) ostale četiri stranice spremite u datoteke zadatak10-64b.htm - zadatak10-64e.htm; c) na stranice umetnite tekstove i slike o temi po želji; d) oblikujte tekstove; e) za veće slike koristite umanjenu inačicu; f) odaberite podloge za sve stranice; g) za svaku stranicu napišite naslov i podesite kodiranje; h) na sve stranice umetnite riječi koje ćete koristiti za navigaciju; i) međusobno povežite te web-stranice; j) sve stranice spremite pod postojećim imenima; k) provjerite stran ice u web-pregledniku. 155
Informatika i računalstvo - zbirka zadataka 10.65. Napravite pet novih web-stranica: a) glavnu, naslovnu stranicu spremite u datoteku zadatak10-65a.htm; b) ostale četiri stranice spremite u datoteke zadatak10-65b.htmzadatak10-65e.htm; c) na stranice umetnite tekstove i slike o nekim europskim državama; d) oblikujte tekstove; e) za veće slike koristite umanjenu inačicu; f) umetnite slike kao podloge za sve stranice; g) za svaku stranicu napišite naslov i podesite kodiranje; h) na sve stranice umetnite slike koje ćete koristiti za navigaciju; i) međusobno povežite te web-stranice; j) sve stranice spremite pod postojećim imenima; k) provjerite stranice u web-pregledniku. 10.66. Napravite pet novih web-stranica: a) glavnu, naslovnu stranicu spremite u datoteku zadatak10-66a.htm; b) ostale četiri stranice spremite u datoteke zadatak10-66b.htm zadatak10-66e.htm; c) upotrijebite tablice za raspored sadržaja na stranicama; d) na stranice umetnite tekstove i slike o turističkim odredištima; e) oblikujte tekstove; f) za veće slike koristite umanjenu inačicu; g) umetnite slike kao podloge za sve stranice; h) za svaku stranicu napišite naslov i podesite kodiranje; i) na sve stranice umetnite slike ili riječi koje ćete koristiti za navigaciju; j) međusobno povežite te web-stranice; k) na nekim web-stranicama umetnite poveznice na web-adrese s informacijama o odabranom turističkom odredištu; I) sve stranice spremite pod postojećim imenima; m) provjerite stranice u web-pregledniku. 10.67. Napravite pet novih web-stranica: a) glavnu, naslovnu stranicu spremite u datoteku zadatak10-67a.htm; b) ostale četiri stranice spremite u datoteke zadatak1 0-67b.htm zadatak10-67e.htm; c) upotrijebite tablice za raspored sadržaja na stranicama; d) na stranice umetnite tekstove i slike o hrvatskim muzejima; e) oblikujte tekstove; f) uredite podloge za sve stranice; g) za svaku stranicu napišite naslov i podesite kodiranje; 156
10 Izrada web-stranica h) na sve stranice umetnite riječi koje ćete koristiti za navigaciju; i) međusobno povežite te web-stranice; j) na nekim web-stranicama umetnite poveznice na web-adrese pojedinih muzeja; k) sve stran ice sprem ite pod postojećim imenima; I) provjerite stranice u web-pregledniku. 10.68. Opišite postupak umetanja tablice s četiri stupca i tri retka. 10.69. Kako ćete podesiti da se ne vide obrubi tablice? 10.70. Kako ćete podesiti da se tablica prikazuje po cijeloj širini zaslona? 10.71 . Opišite postupak izrade gumba za navigaciju. 10.72. Kako
ćete
podesiti da tablica ima crvenu podlogu?
10.73. Kako ćete podesiti da web-stranica ima plavu podlogu, naslov "Glavna" i da je jezik na njoj hrvatski? 10.74. U mapi zadatak10-74 napravite novo web-mjesto s mapom weba, kao na slici: Početna
I
I
I
Mama
Sestra
I Životinje
Tata
Baka
I Sport
Vezenje
10.75. Otvorite web zadatak10-74 a) na web primijenite neku temu s plavom podlogom; b) na svaku web-stranicu upišite par rečenica; c) na svaku web-stranicu umetnite po jednu sliku; d) stranice i web spremite pod postojećim imenima.
157
Informatika i računalstvo - zbirka zadataka 10.76. Otvorite web zadatak10-74 a) na sve stranice umetnite zajednički rub slijeva; b) u zajednički rub umetnite neku sliku. 10.77. U mapi zadatak10-77 napravite novo web-mjesto s mapom weba, kao na slici:
Početna
I
1
I Muzika
Film
10.78. Otvorite web zadatak10-77: a) na web primijenite neku temu s bež podlogom; b) umetnite po tri web-stranice ispod stranica Muzika i Film; c) na svakoj web-stranici napišite neki tekst i umetnite barem jednu sliku; d) na stranici Film umetnite poveznicu na web-stranice skinoprogramom; e) na stranici Muzika umetnite poveznicu na web-stranice s muzikom. 10.79. Otvorite web zadatak10-77: a) umetnite zajednički rub s navigacijskom trakom slijeva; b) promijenite nazive u navigaciji na: početna, roditeljska, prethodna i sljedeća. 10.80. U mapi zadatak10-80 napravite novo web-mjesto s temom po želji: a) sa šest web-stranica; b) s navigacijskom trakom u zajedničkom gornjem rubu; c) primijenite neku FrontPageovu temu; d) napišite tekstove i umetnite slike; e) umetnite poveznicu na neku web-adresu. 10.81. Kako se
umeće zajednički
rub?
10.82. Kako se umetne navigacijska traka pri umetanju zajedničkog ruba? 10.83. Kako se mogu promijeniti nazivi koje FrontPage ima određene za početnu, roditeljsku, prethodnu i sljedeću stranicu? 10.84. Gdje se na stranici može smjestiti navigacijska traka ako je umećete unutar zajedničkog ruba?
158
10 Izrada web-stranica 10.85. U mapi zadatak1 0-85 napravite novo web-mjesto o animiranom filmu: a) s barem šest web-stranica; b) s navigacijskom trakom u zajedn i čkom gornjem rubu; c) primijenite neku FrontPageovu temu, dodatno uredite temu; d) napišite tekstove i umetnite slike; obavezno napišite nešto o povijesti animiranog filma u Hrvatskoj i o najnovijim animiranim filmovima koji se prikazuju u našim kinima. 10.86. U mapi zadatak10-86 napravite novo web-mjesto o svjetskim čudima: a) s barem šest web-stranica; b) s navigacijskom trakom u zajedničkom gornjem rubu; c) primijenite neku FrontPageovu temu, dodatno uredite temu; d) napišite tekstove i umetnite slike; obavezno napišite nešto o suvremenim svjetskim čudima i umetnite odgovarajuće slike. 10.87. U mapi zadatak10-87 napravite novo web-mjesto o povijesti interneta u Hrvatskoj: a) s barem šest web-stranica; b) s navigacijskom trakom u zajedničkom lijevom rubu; c) primijenite neku FrontPageovu temu; d) napišite tekstove i umetnite slike. 10.88. U mapi zadatak10-88 napravite novo web-mjesto o nekom sportu: a) s barem šest web-stranica; b) s navigacijskom trakom u zajedničkom lijevom rubu; c) primijenite neku FrontPageovu temu; d) napišite tekstove i umetnite slike.
10.10 Rad sa zvukom 10.89. Otvorite web zadatak10-77: a) umetnite glazbenu datoteku u pozadinu početne stranice i podesite da se zvuk izvodi neprestano; spremite web pod postojećim imenom. 10.90. Otvorite web zadatak10-80: a) umetnite glazbenu datoteku u pozadinu početne stranice i podesite da se zvuk izvodi neprestano; b) na svaku stranicu ispod početne umetnite interaktivni gumb s poveznicom na glazbenu datoteku; spremite web pod postojećim imenom.
159
Informatika i računalstvo - zbirka zadataka 10.90. Otvorite web zadatak10-85: a) pronađite glazbene datoteke koje pripadaju animiranim filmovima koje spominjete na stranicama; b) na svaku stranicu umetnite interaktivni gumb s poveznicom na glazbenu datoteku; spremite web pod postojećim imenom. 10.91. Otvorite web zadatak10-88: a) pronađite videoisječki koje ilustriraju sportove koje spominjete na stranicama; b) umetnite videoisječke na odgovarajuće stranice; spremite web pod postojećim imenom.
10.11 Objavljivanje web-mjesta 10.92. U mapi zadatak10-92 napravite novo web-mjesto o mjestu u kojem živite : a) s barem pet web-stranica; b) tekstovima, slikama i animiranim slikama; c) kopirajte web-mjesto na neko drugo računalo; d) provjerite izgled i funkcioniranje tog web-mjesta - rade li poveznice, vide li se svi tekstovi i slike ispravno; e) ispravite greške, pa ponovite postupak kopiranja i provjeravanja. Pronađite
10.93.
web zadatak10-88: a) kopirajte web-mjesto zadatak1 0-88 na neko drugo računalo; b) provjerite izgled i funkcioniranje tog web-mjesta - rade li poveznice, vide li se svi tekstovi, slike i videoisječci ispravno; c) ispravite greške, pa ponovite postupak kopiranja i provjeravanja.
10.94.
Pronađite web zadatak1 0-85: a) kopirajte web-mjesto zadatak10-85 na neko drugo računalo; b) provjerite izgled i funkcioniranje tog web-mjesta - rade li poveznice, vide li se svi tekstovi i slike, čuju li se glazbene datoteke; c) ispravite greške, pa ponovite postupak kopiranja i provjeravanja.
10.95. U mapi zadatak10-95 napravite novo web-mjesto o vašem razredu: a) s barem pet web-stranica; b) tekstovima, slikama, animacijama, glazbenim datotekama i videoisječcima; c) prebacite web-mjesto na internet;
160
10 Izrada web-stranica d) provjerite izgled i funkcioniranje tog web-mjesta - rade li poveznice, vide li se svi tekstovi, slike, animacije, videoisječci i glazbene datoteke ispravno; e) ispravite greške, pa ponovite postupak prebacivanja i provjeravanja. 10.96. U mapi zadatak10-96 napravite novo web-mjesto s temom po želji: a) s barem šest web-stranica; b) tekstovima, slikama i animiranim slikama; c) prebacite web-mjesto na internet, provjerite ga i popravite ako je potrebno. 10.97. Kako se web-mjesto objavljuje iz FrontPagea? 10.98. Kako se web-mjesto objavljuje iz FTP Voyagera? 10.99. Koje je
uobičajeno
ime za
početnu
stranicu weba?
10.100. Što je sinkronizacija weba? 10.101. Kako možete svoj web prijaviti na Google? 10.102. Nabrojite nekoliko programa koji se mogu upotrijebiti za izradu web-stranica. Koji od njih vi koristite i zašto? 10.103. Nabrojite nekoliko programa koji se mogu upotrijebiti za objavljivanje web-stranica. Koji od njih vi koristite i zašto? 10.104. Mogu li se web-stranice neki primjer?
izrađivati
korištenjem web-preglednika? Kako, navedite
10.105. Istražite što su CMS (Content Management System) i LMS (Learning Management System). Koja im je namjena i u čemu se razlikuju? Nabrojite nekoliko primjera jednog i drugog sustava. Postoje li još neki sustavi slične namjene? 10.106. Koji protokol se koristi za objavljivanje weba korištenjem programa FTP Voyager? 10.107. Istražite koji hrvatski pružatelji internetskih usluga omogućuju besplatan prostor za web-stranice. Koliki prostor omogućuju? Koji su potrebni podaci za korištenje tog webprostora? Koji način objavljivanja web-stranica je moguće koristiti?
161
Informatika i računalstvo - zbirka zadataka
11 UVOD U MICROSOFT OFFICE 2007 Sustav Microsoft Office 2007 donosi nekoliko temeljnih novosti i značajnih poboljšanja. Novi vizualni izgled i nova funkcionalnost prozora programa u sustavu Office 2007 naziva se Fluent
korisničko sučelje.
Glavna promjena
očituje
se u
novom grafičkom objektu vrpca (Ribbon) koja zamjenjuje izborne i alatne trake iz prijašnjih inačica Officea. Elemente novog
sučelja
i novih
mogućnosti čine:
• gumb Microsoft Office - zamjena za izbornik Datoteke s proširenim mogućnostima
• alatna traka za brzi pristup - promjenjiva traka stalno vidljiva i dostupna u suče iju
• kontekstualne kartice - programske kartice koje se pojavljuju ovisno o kontekstu • galerije - grafički izbornik brzih stilova i postavki • pred pregled uživo - prikaz učinaka oblikovanja i postavki prije primjene • mini alatna traka - traka s najčešćim naredbama koja se pojavljuje na mjestu pisanja •
pokretač
dijaloškog okvira - gumb za pokretanje dijaloških okvira
• nova pisma - pet novih fontova • natuknice za tipke - pokretanje naredbi na vrpci pomoću tipkovnice • statusna traka - proširene mogućnosti i skup informacija u statusnoj traci • pametni dijagrami - dijagrami koji pamte i održavaju hijerarhijsku strukturu • zaslonski opisi - opisi naredbi opsežnijeg sadržaja Osim toga, uvedeni su novi, sigurniji i ekonomičniji formati Office dokumenata. Važno je znati da novi formati nisu kompatibilni s prijašnjim inačicama Officea. To znači
da dokument načinjen u programu sustava Office 2007 nije moguće učitati,
tj. otvoriti s istoimenim programom iz prijašnjih inačica Office sustava.
162
11 Uvod u Microsoft Office 2007 11.1. Može li se sustav Microsoft Office 2007 instalirati na računalo koje radi pod operacijskim sustavom Windows XP? 11.2. Iz koje inačice Office sustava su ovdje prikazane ikone?
B
~
11.3. Na koji se nači n alatne trake i trake izbornika iz inačice Office 2003 mogu aktivirati u sučeiju sustava Office 2007? 11.4. Navedite dijelove prozora novog sučelja sustava Office 2007 i opiŠite koje nove mogućnosti sadrže. x
Knjigal - Microsoft Excel Umetnl e.llbrl
Poda ci
__ ~
,-
• II
1-=.
..J
ZlI~'PI rtedu) r.
Formule
l:.oled stranice
Pregled
O p će n i t o
,. ~-
I..
...
"f. 000
I ~ t~ ll~ -l @ ~og .~g
r.
Poravnanje
fi
BrOJ
=
Pnkl: Uvjetno obli kovanje ..
~~ Umet nl ..
Obllk.u klo t.bllcu •
~lzbrll l
:;t Stilovi ć.I U-
r.
•
Obllk.u • Ce lije
1: "
-
Sortlr.J I Pron.dll - ad.b.rl UređIVa e
flltrlr~
Al A
B
ir~~_ 9 10 11 12 13 14 15 16 17 18 19 20
M
E
--- -o
--+
11.5. Zašto se ovaj gumb 2007? Kako se zove taj gumb?
jednako zove u svim programima sustava Microsoft Office
163
Informatika i računalstvo - zbirka zadataka 11.6. Koje su nove mogućnosti gumba Microsoft Office u odnosu na izbornik Datoteke iz inačice Office 2003? 11.7. Koje su prednosti alatne trake za brzi pristup? 11.8. Zašto je novo sučelje prozora u sustavu Microsoft Office 2007 User Interface, iako mu to nije pravi naziv?
često
naziva Ribbon
11.9. Pretpostavimo da često imate potrebu ispisivati dokumente na pisač. Što biste trebali učiniti
da što je više moguće pojednostavite i ubrzate ispisivanje dokumenata?
11.10. Dok radimo na nekom dokumentu, ponekad nam zatreba što veći radni prostor. Koji je najbrži i najjednostavniji način da povećamo radnu površinu u prozoru dokumenta? 11.11. Navedite i ukratko opišite glavne elemente vrpce označene na slici.
Alati za crtanje DrjaproJekclja
Pregled
Prrkaz
~
-
X
Oblrk Pozadinski stllovr r
~
Sakrij pozadinsku grafiku Po:adlna
11.12. Na primjeru neke radnje (po želji) usporedite slijed potrebnih koraka (naredbi) u Office 2003 i Office 2007 inačici. Dokažite da je slijed potrebnih koraka u inačici Office 2007 kraći za najmanje jedan korak, odnosno jednu naredbu. 11.13. Navedite barem jedan primjer koji pokazuje da je vrpca "pametan" objekt koji nudi naredbe i opcije sukladno tome što trenutačno radimo u dokumentu. 11.14. U PowerPointu 2007 otvorite novi dokument i na prvi slajd umetnite tablicu. Koje dvije promjene će se automatski dogoditi na vrpci? Što to dokazuje? 11.15. Umetnite u dokument (svejedno kojeg Office 2007 programa) isječak crteža i nakon toga grafičk i oblik Elipsa. Kako ćete na vrpci ponovo dobiti vidljivu karticu Alati slike?
164
11 Uvod u Microsoft Office 2007 11.16. U novom dokumentu Worda 2007 napišite rečenicu "Automatska promjena veličine pisma." i označite riječ "promjena". U izborniku Veličina fonta pogledajte kako će označena riječ izgledati u veličini pisma od 28 točaka. Na koje dvije nove značajke Officea 2007 vas podsjeća ovaj način rada? 11.17. Otvorite novu prezentaciju u PowerPointu 2007. Na prvom slajdu umetnite tekstni okvir i upišite tekst "Ovo je prvi tekstni okvir.". Kako ćete podcrtati riječ "prvi" a da ne pozovete tipkovni prečac, niti neku naredbu sa vrpce? 11.18. Po čemu znamo kada su naredbe iz mini alatne trake dostupne za korištenje? 11.19. Postoji li način da u Office 2007 programima biramo i namještamo postavke pomoću dijaloških okvira? 11.20. Koje je podrazumijevano pismo u svim programima sustava Office 2007? 11.21. Zašto u Officeu 2007 (više) nije moguće pozivati tipkovne prečace pomoću lijeve tipke ALT? Znači li to za tipkovni prečaci (više) ne postoje? 11.22. Koji od programa u sustavu Office 2007 prikazuje najviše informacija u statusnoj traci? Koliko je tih informacija? 11.23. Je li
moguće isključiti
prikazivanje informacija u statusnoj traci?
11.24. Što pametne dijagrame napravljene pomoću SmartArt tehnologije čini "pametnima"? 11.25. Pretpostavimo da ste tijekom oblikovanja pametnih dijagrama pogriješili u postupku. Mogu li se jednom oblikovani pametni dijagrami preoblikovati ili postupak oblikovanja treba započeti ispočetka?
11.26. Primjerice Word 2007 ima preko 1500 naredbi i podešavanja pa ih je teško sve upamtiti. Koji je način da dobijete detaljniji opis pojedine naredbe a da ne morate pozivati sustav pomoći (He/p)? 11.27. Otvorite novu radnu knjigu u Excelu 2007 i spremite je pod nazivom zadatak11-27. Može li se ta radna knjiga na ikoji način otvoriti pomoću programa Excel 2003?
165
Informatika i računalstvo - zbirka zadataka 11.28. U Wordu 2003 otvorili smo novi dokument, upisali sva slova hrvatske abecede i spremili dokument na disk. Zatim smo taj isti tekst upisali u novi dokument otvoren u Wordu 2007 i isto ga spremili na disk. Dokument napravljen u Wordu 2003 ima 22 KB, a onaj napravljen u Wordu 2007 ima 10 KB. Zašto je potonji dokument manji? Koji podaci su se izgubili? 11.29. U sklopu kojih paketa sustava Office 2007 dolazi program za izradu web-stranica FrontPage? 11.30. Koja je osnovna prednost čitanja dokumenta preko cijelog zaslona u Wordu 2007? Kako se pokreće ova značajka? 11.31. Pomoću kojih programa iz sustava Office 2007 možemo neposredno (iz programa) prenijeti dokument na blog servis? 11.32. U tablici Excela 2007 primijenjeno je dvobojno uvjetno oblikovanje ćelija pod nazivom "Žuto - crveni spektar boja" (primjer oblikovanja prikazan je na slici). Koju će boju imati ćelije E2 i H2 nakon što u ćeliji E2 promijenimo vrijednost iz 4 u 40?
H 7
11.33. S kojim sve inačicama Excela možemo otvarati dokumente s nastavkom .xLSX? 11.34. U čemu se sastOji
značajno
proširenje podrške za zvuk u PowerPointu 20077
11.35. Načinili smo novu bazu podataka pomoću programa Access 2007. Smijemo li odmah upisivati podatke u tablicu podataka ili najprije moramo odrediti njenu strukturu? 11.36. Istražite što sve možemo spremiti u Privitak - novu vrstu polja tablice koju podržava Access 2007. 11.37. Podatkovni obrasci Accessa 2007 u statusnoj traci sadrže neke nove kontrolne gumbe. Koje su to gumbi i čemu služe?
166
11 Uvod u M icrosoft Office 2007
167
Informatika i računalstvo - zbirka zadataka
12 PROGRAMIRANJE 12.3 Programski jezik QBASIC UVOD 12.3.0 Korak po korak do algoritma Prije samog pisanja programa vrlo je važno zadani problem znati opisati na način koji je razumljiv računalu. Stoga je prije pisanja programa poželjno i korisno napisati algoritam. Algoritam je postupak kOjim se opisuje točan redoslijed kojim obavljamo neki posao. Algoritam nam služi da dobro opišemo problem koji računalo treba riješiti, odnosno moramo toč no predvidjeti što želimo da računalo napravi u određenom slučaju. Važno je algoritam pisati pomoću točno određenih riječi, od kojih kasnije sastavljamo programe. Dobar algoritam omogućit će vam da zadani problem riješite brže, točnije i uspješnije. Napisani algoritam možemo prikazati i grafički. Grafički prikazan algoritam nazivamo dijagram toka .
Primjer: Napišite algoritam i dijagram toka koji će provjeriti jesu li dva broja jednaka ili nisu .
dijagram toka: algoritam: upiši a, b ( ako je a = b onda ispiši Brojevi su jednaki. inače ispiši Brojevi su različiti.
POČETAK) ~ DA
KRAJ
168
12 Programiranje - Programski jezik QBASIC 12.3.1 Naredbe za ispis i unos •
•
r·
Programski jezik QBASIC jedna je od inačica programskoga jezika BASIC, što je ,. kratica od Beginners All-purpose Symbolic Instruction Code (u prijevodu: programski jezik različitih n~mjena za početn i ke) . QBASIC pokrećete dvostrukim klikom na ikonu.
Nakon pokretanja programa prozor QBASIC-a nema veličinu cijelog zaslona. Pritiskom na tipke ALT + Enter povećat ćete prozor QBASIC-a na veličinu čitavog zaslona. Istom kombinacijom tipki ponovno ćete ga vratiti u prozor. U gornji veći prozor pišemo programe. Donji manji prozor (s naslovom Immediate) služi za izravno izvršavanje jedne po jedne naredbe. Tipkom F6 možemo prelaziti iz jednog prozora u drugi. Program spremamo tako da: 1. Iz izbornika File odaberemo naredbu Save. 2. Otvorit će se novi prozor gdje u prozorčiću File Name ("ime programa") upisujete ime programa, npr. prvi, te pritisnete tipku Enter ili pak kliknete na OK. QBASIC je imenu programa dodao nastavak .bas koji omogućava računalu prepoznati da se radi o programu napisanom u QBASIC-u. Otvaranje programa 1. Iz izbornika File odaberite Open 2. Otvorio se novi prozor pod imenom Open. 3. Iz okvira Files odaberemo ime programa koji želimo otvoriti i pritisnemo Enter. Naredba je uputa programu da obavi jednu operaciju . Postupak pisanja programa nazivamo programiranje. Program je konačan niz naredbi razumljivih računalu koje rješavaju neki problem. Programski jezik je skup naredbi i pravila za njihovo pisanje.
Naredba koju koristimo za ispis podataka je naredba PRINT. Ova naredba jednostavno ispisuje tekst, koji smo naveli unutar navodnika, na ekran počevši od trenutačnog položaja pokazivača. Na kraju naredbe PRINT možemo staviti zarez ili pak točku zarez. Ako na kraj stavimo zarez, sljedeća PRINT naredba će se ispisati u istom retku, ali će ostaviti dvanaest mjesta razmaka. Ako pak na kraju navedemo točku zarez, pokazivač će na zaslonu ostati na tom mjestu i sljedeća PRINT naredba će ispisati tekst počevši od tog mjesta. Uz tekst napisan unutar navodnika, PRINT naredba može ispisati i brojeve i vrijednosti smještene u varijable. Uz naredbu PRINT često ćemo upotrijebiti i naredbu LOCATE. Ova naredba pomiče pokazivač po zaslonu u zadani redak i zadani stupac. Ima sljedeći oblik LOCATE red, stupac. Prvi broj u naredbi predstavlja broj retka, a drugi broj je broj stupca. 169
Informatika i računalstvo - zbirka zadataka Naredba koja nam omogućuje upis podataka s tipkovnice, tj. interakciju s korisnikom programa je naredba INPUT. Iza ključne riječi INPUT slijedi ime varijable na koju želimo učitati podatak s tipkovnice.
12.3.2 Varijable Varijabla je ime koj e može sad ržati neku vrijednost. Svaka varijabla ima svoj tip koji definira vrstu vrijednosti koju ona sadrži. Varijab le mogu biti znakovnog tipa (string) i brojčanog tipa. Znakovni tip podataka označavat ćemo znakom $. Kod brojčanog tipa podataka imamo dva tipa koji predstavljaju cijele brojeve INTEGER i LONG i dva tipa koji predstavljaju decimalne odnosno realne brojeve SINGLE i DOUBLE. Navedene tipove, također prepoznajemo po znaku koji ih označava . Pa tako, tip INTEGER označavamo znakom %, tip LONG znakom &, tip SINGLE znakom !, a tip DOUBLE znakom # . •••1="=1.,,STRING INTEGER LONG SINGLE DOUBLE
~I
.
1" _
-IIIr- .U:J
A$ B% C& D! E#
12.3.3 Naredbe grananja Program može odlučiti koje će naredbe izvršiti ako postavimo njemu razum ljivo "pitanje". Program razum ije samo ona pitanja na koja može dati odgovor istina ili laž. Pitanja koja računal o razumije nazivamo l ogički uvjeti. Naredba oblika a=a+ 1 zove se naredba pridruživanja i računalo je razumije ovako: broju koji se nalazi u varijabli a dodaj 1 i rezultat vrati u varijablu a. Ovdje je znak "=" operator pridruživanja, a ne znak matematičke jednakosti. Naredba IF """ THEN (engl. ako .. . onda) je naredba koju koristimo kada, ovisno o postavljenom uvjetu, trebamo izvršiti određenu naredbu ili određeni niz naredbi. Ovo je naredba koja omogućuje donošenje odluka u programu. QBASIC nam nudi dva oblika IF ... THEN naredbe. Prvi, opći oblik IF ... THEN naredbe je: IF uvjet THEN naredba Zadani uvjet mora biti logičkog tipa, dok je odgovor na postavljeni uvjet ili istinit ili pak lažan. Ako je postavljeni uvjet istinit, izvršit će se naredbe koje slijede iza THEN i nastavit će se izvršavanje prve naredbe koja slijedi iza naredbe IF ... THEN. Ako pak uvjet nije istinit prelazi se na izvršavanje s ljedeće programske naredbe. 170
12 Programiranje - Programski jezik QBASIC Primjer upotrebe jednostavne IF ... THEN naredbe: CLS INPUT "Pritisni broj 1 ako želiš pizzu, a broj 2 ako želiš sok.", broj% IF broj% = 1 THEN PRINT "Izvoli tvoju pizzu" IF broj% = 2 THEN PRINT "Izvoli tvoj sok" IF broj% <> 1 AND broj% <> 2 THEN PRINT "Ne želiš ni pizzu ni sok!" END
Drugi oblik naredbe IF ... THEN je: IF uvjet THEN naredba_1 ELSE naredba_2
U ovom obliku naredbe izvršava se naredba_1 ukoliko je postavljeni uvjet istinit, a ako je pak postavljeni uvjet lažan, izvršava se naredba_2. Primjer složene IF ... THEN naredbe: CLS INPUT "Pritisni broj 1 ako želiš pizzu, a broj 2 ako želiš sok.", broj% IF broj% = 1 THEN PRINT "Evo tvoje pizze" ELSEIF broj% = 2 THEN PRINT "Evo tvog soka" ELSE PRINT "Ne želiš ni pizzu ni sok!" END IF
Ponekad ćete u rješavanju problema naići na niz uzastopnih IF ... THEN naredbi koje u ovisnosti o vrijednosti neke nepoznanice izvršavaju različite operacije. Ovakav niz uzastopnih IF ... THEN naredbi možemo zamijeniti naredbom SELECT CASE. Naredba SELECT CASE ima sljedeći oblik: SELECT CASE ime_nepoznanice CASE vrijednost_1 CASE vrijednost_2 CASE vrijednost_3 CASE vrijednost_n CASE ELSE END SELECT
171
Informatika i računalstvo - zbirka zadataka Vrijednost nepoznanice iza CASE naredbe možemo navoditi na nekoliko načina: • kao jednu vrijednost • kao više vrijednosti odvojenih zarezom • kao interval ( npr. Sto 10 interval brojeva od 5 do 10) i • kao logički izraz. Umjesto vrijednosti kod zadnje CASE naredbe navodi se riječ ELSE koja nam osigurava da će ovdje biti sadržane sve vrijednosti nepoznanice koje nisu navedene u prethodnim CASE naredbama.
12.3.4 Naredbe za ponavljanje U nastavku slijede naredbe koje nam omogućavaju ponavljanje slijeda naredbi određeni broj puta ili do ispunjenja zadanog uvjeta. U QSASIC-u su nam na raspolaganju sljedeća tri tipa petlji: • FOR '" NEXT petlja • WHILE .. , WENO petlja i • DO .. , LOOP petlja Ako nam je broj ponavljanja poznat prije ulaska u petlju, upotrijebit ćemo FOR .. , NEXT petlju. Prvi, opći oblik FOR oo. NEXT petlje: FOR kontrolna_varijabla
= početna_vrijednost TO konačna_vrijednost
naredba 1 naredba 2 naredba n N EXT kontrolna_varijabla Petlja počinje ključnom riječju FOR iza koje slijedi kontrolna varijabla, u našem slučaju broj, koja odbrojava broj prolazaka kroz petlju mijenjajući se od početne do konačne vrijednosti s jediničnim korakom. Na početku petlje kontrolnoj varijabli broj se pridružuje početna vrijednost, broj 1. Ako je početna vrijednost varijable veća od konačne vrijednosti, završava se izvršavanje FOR oo. NEXT petlje. Ako je pak početna vrijednost manja od konačne , izvršavaju se naredbe unutar petlje. Primjer: CLS FOR broj = 1 TO 15 PRINT broj NEXT broj 172
12 Programiranje - Programski jezik QBASIC Petlju FOR ... NEXT mnogo češće ćemo upotrebljavati u obliku FOR ... NEXT ... STEP. Ovaj oblik petlje omogućava nam da sami odredimo korak, tj. broj za koliko će se kontrolna varijabla petlje promijeniti pri svakom prolazu petljom. Korak možemo zadati kao pozitivnu i negativnu vrijednost. U slučaju da je početna vrijednost petlje veća od konačne vrijednosti korak petlje treba biti negativan broj. Ako je pak početna vrijednost manja od konačne vrijednosti korak petlje treba biti pozitivan broj. Primjer:
CLS FOR broj = l TO 23 STEP 2 LOCATE broj, broj*3 PRINT "QBASIC" NEXT broj WHILE ... WEND petlju koristimo kad se unaprijed ne zna koliko će puta biti potrebno izvršiti neku naredbu ili niz naredbi. Ova će petlja izvršavati naredbe navedene unutar petlje sve dok je uvjet postavljen na početku petlje istinit. Petlja završava izvođenje naredba i kontrolu predaje sljedećoj programskoj naredbi kada postavljeni uvjet postane lažan. WHILE ... WEND petlja ima sljedeći oblik: WHILE uvjet naredba 1 . naredba 2
naredba n WEND
1. Petlja počinje ključnom riječju WHILE koju slijedi logički uvjet, a završava ključnom riječi WEND (kratica od WHILE END). 2. Naredbe unutar petlje izvršavaju se sve dok je logički uvjet na početku petlje istinit. 3. Ako je logički uvjet pokraj WHILE lažan prije nego što se petlja počne izvoditi, program će preskočiti čitavu petlju. Primjer:
CLS INPUT "Upiši broj: " n# najveci# = n# WHILE n# > O INPUT "Upiši broj: ", n# IF n# > najveci# THEN najveci#
=
n#
WEND
PRINT
"Najveći učitani
broj . "; USING "##.##"; najveci#; 173
Informatika i računalstvo - zbirka zadataka Petlja DO
000
LOOP
Za petlju DO ... LOOP moglo bi se reći da je univerzalna petlja. Ova nam petlja omogućava ispitivanje uvjeta na početku i na kraju petlje. Dolazi u dva osnovna oblika. U prvom obliku uvjet se ispituje na početku petlje i možemo ga prikazati na sljedeći način: DO
WHILE/UNTIL uvjet naredba 1 naredba 2
000
naredba n LOOP U ovom obliku DO oo. LOOP petlje može se dogoditi da se naredbe unutar petlje ne izvrše nijednom. Primjerice, ako je postavljeni uvjet lažan kod DO oo. WH ILE, odnosno ako je postavljeni uvjet istinit kod DO oo. UNTIL. Pogledajmo
I
=
sljedeći
primjer:
10
PRINT "Vrijednost varijable I na početku petlje je "; I DO WHILE I < 10 I = I + 1 LOOP PRINT "Vrijednost varijable I na kraju petlje je "; I
Kako je postavljeni uvjet na početku petlje lažan, zaključujemo da se ova petlja neće izvršiti nijednom. U drugom pak obliku DO oo. LOOP petlje uvjet ispitujemo na kraju petlje i možemo ga prikazati na s ljedeći način: DO
naredba 1 naredba 2 naredba n LOOP WHILE/UNTIL uvjet Za razliku od prvog oblika, u drugom obliku DO oo . LOOP petlje, naredbe jednom jer se uvjet ispituje na kraju petlje. Pogledajmo primjer: I = 10 DO PRINT "Vrijednost varijable I na
I
=
početku
se izvršiti barem
petlje je
I + 1
LOOP WHILE I < 10 PRINT "Vrijednost varijable I na kraju petlje je 174
će
"; I
"; I
12 Programiranje - Programski jezik QBASIC DO .. . LOOP petlju možemo koristiti umjesto WHILE ... WENO petlje. Pogledajmo primjer DO ... LOOP petlje: najveci% = O DO INPUT "Upisi broj ", a% IF a% > najveci% THEN najveci% = a% LOOP WHILE a% <> O PRINT "Najveći učitani broj je: "; najveci%
12.3.5 Crtanje u QBASIC-u QBASIC nam daje mogućnost da biramo jedan od četrnaest različitih zaslona koji imaju svaki svoju namjenu . Jedan od njih je tekstualni zaslon, koji smo do sada koristili, a preostalih trinaest su grafički zasloni. Mi ćemo raditi u grafičkom zaslonu pod brojem 12 koji ima razlučivost 640x480 i u kojem možete koristiti 16 boja. Naredba koja nam omogućava odabir grafičkog zaslona je naredba SCREEN. Iza naredbe navodimo broj grafičkog zaslona u kojem želimo raditi. Primjerice SCREEN 12. Naredba LINE crta crtu od jedne točke do druge točke. Točke su zadane svojim X i Y koordinatama. Primjerice, naredba L INE (O, O) - (32 O, 24 O), 4 crta crtu počevši od koordinate (0,0), koja se nalazi u gornjem lijevom kutu zaslona. Crta završava u točki (320, 240) koja se nalazi u središtu zaslona. Posljednji broj, broj 4 je broj koji određuje boju crte. Uz boju, LINE naredbi možemo dodati još neobveznih parametara. Pa tako za crtanje pravokutnika upotrijebite sljedeću naredbu:LiNE (xi, yi )-(x2, y2), 1, B. U ovoj naredbi točke (x1, y1) i (x2, y2) od ređuju par nasuprotnih vrhova kOjima je naš pravokutnik jednoznačno određen. Broj 1 određuje nam boju crte, dok B (kratica od engl. Box) označava da je potrebno nacrtati pravokutnik. Umjesto slova B u LINE naredbi možemo navesti i slova BF (kratica od engl. Box Fil!). Ovom naredbom nacrtat ćemo pravokutnik koji je ispunjen zadanom bojom, obojeni pravokutnik. Za crtanje kružnice upotrijebit ćemo naredbu CIRCLE koja ima s lj edeći oblik: CIRCLE (x,Y), r, boja
Koordinate točke (x,y) predstavljaju središte kružnice. Slovo "r' označava polumjer kružnice, dok je "boja" broj koji određuje boju kojom će kružnica biti nacrtana. Naredba PAINT ispunjava zadanom bojom zatvoreni lik. Pogledajmo oblik naredbe PAINT: PAINT (x,y), boja1, boja2
Koordinate točke (x,Y) govore računalu gdje da počne sa bojanjem zadanog lika. Ovo može biti bilo koja točka koja se nalazi unutar područja koje želite obojiti. Boja 1 je broj koji predstavlja 175
Informatika i računalstvo - zbirka zadataka boju kojom želimo obojiti željeni lik, a boja2 je broj koji predstavlja boju ruba područja koje želimo obojiti.
12.3.6 Znakovni tip podataka i rad s riječima Uz
brojčane
tipove podataka u QBASIC-u imamo i tip podataka koji pamti nizove znakova (riječi i rečenice). Skup znakova U QBASIC-u čine sva slova, znamenke, specijalni znakovi kao što su +,-,*,!,:,;,%,# ... i razmak. Niz znakova pišemo između navodnih znakova. Valja naglasiti da navodni znakovi nisu dio niza, oni samo označavaju njegov početak i kraj. Primjerice "adsl", "123", "Knez Trpimir" i "*101#" su nizovi znakova. Kao s brojevima i s nizovima znakova možemo izvoditi različite operacije. U tu svrhu u QBASIC-u postoji niz funkcija koje nam omogućavaju rad s nizovima znakova tj. riječima. Slično kao što zbrajamo dva broja možemo "zbrajati" i dva niza. Nizove, naravno, ne zbrajamo, u matematičkom smislu, već ih sljepljujemo dodavanjem jednog niza na drugi. Kao rezultat ove operacije dobit ćemo novi niz. A$ = "DOBAR" B$ = "DAN !" c$ = " " PRINT A$ + c$ + B$ Funkcija LEN
vraća
duljinu niza tj. broj znakova u nizu, a ima sljedeći oblik:
LEN(niz_znakova) Uz funkciju LEN, za rad s nizovima često rabimo i funkcije za određivanje podniza zadanog niza. To su funkcije LEFT$, RIGHT$ i MID$. Funkcija LEFT$ (left eng. lijevo) daje niz znakova s lijeve strane zadanog niza. Funkcija ima sljedeću sintaksu: LEFT$(niz_znakova,n) Funkcija RIGHR$ (right eng. desno) daje niz znakova s desne strane zadanog niza. Funkcija ima sljedeću sintaksu: RIGHT$(niz_znakova,n) Funkcija MID$ je funkcija koja nam može zamijeniti funkcije LEFT$ i RIGHT$. Ime joj dolazi od eng. middle što znači sredina. Ona nam daje podniz znakova koji se nalaze na sredini zadanog niza. Funkcija ima sljedeću sintaksu: MID$(niz_znakova, početak[, duljina]) Funkcije LEFT$ i RIGHT$ mogu se prikazati pomoću funkcije MID$ na sljedeći način: LEFT$(A$,k)
= MID$(A$,1 ,k)
RIGHT$(A$,k) 176
= MID$(A$,LEN(A$)-k,k) = MID$(A$,LEN(A$)-k)
12 Programiranje - Programski jezik QBASIC Primjer: Potrebno je
učitati rečenicu
i ispisati je u obrnutom redu.
INPUT "Upiši rečenicu: ", a$ FOR k = LEN(a$) TO 1 STEP -1 b$ = b$ + MID$(a$, k, 1) NEXT k
PRINT "Obrnuta
rečenica
je: "; b$
12.3.7 Logičke funkcije u QBASIC-u U QBASIC-u možemo rješavati i složene logičke probleme. Dovoljno je upotrijebiti neku od petlji u kojima koristimo logičke uvjete i neku od potrebnih logičkih operatora I (AND), ILI (OR) i NE (NOT). Logički
operator AND
AND Vraća istinitu vrijednost (TRUE) ako su svi uvjeti istiniti; inače vraća laž (FALSE). AND treba dva uvjeta. Ako je manje ili više uvjeta, AND i svi uvjeti moraju biti u zagradama. Logički
OR
operator OR
vraća
vraća
lažnu vrijednost (FALSE) ako su svi uvjeti lažni. Ako je bilo koji od uvjeta istinit OR istinitu vrijednost (TRUE).
Logički
operator NOT
NOT vraća istinitu vrijednost (TRUE) ako je uvjet lažan, a inače vraća lažnu vrijednost (FALSE).
12.3.8 Potprogrami i funkcije Kao i u većini programskih jezika, i u QBASIC-u imamo dva tipa potprograma. Prvi su potprogrami općeg tipa, tipa SUB, koji mogu imati više ulaznih i više izlaznih vrijednosti pridruženih varijablama. Riječ SUB je kratica od SUBROUTINE što prevedeno s engleskog znači potprogram. Drugi su funkcijski potprogrami, tipa FUNCTION, koji mogu imati više ulaznih vrijednosti i samo jednu izlaznu. Funkcijske potprograme kraće nazivamo funkcije. Potprograme u QBASIC-u upotrebljavamo kako bismo pojednostavili složeni program. POsebno su korisni kad određeni postupak moramo ponoviti na različitim mjestima u programu s različitim ulaznim vrijednostima.
Potprograme zadajemo na dva načina: 1. U glavnom programu napišemo SUB, ime programa i popis ulaznih podataka ipritisnemo tipku Enter. Otvara nam se prozor za pisanje potprograma. 177
Informatika i
računalstvo
- zbirka zadataka
2. Iz izbornika Edit odaberemo New SUB, u polje Name upišemo ime procedure pritiskom na tipku Enter otvara nam se prozor za pisanje potprograma. Potprogram pozivamo na dva načina: 1. Navodeći u glavnom programu ili potprogramu ime potprograma koji pozivamo i pokraj imena popis ulaznih podataka. 2. Napišemo ključnu riječ CALL, ime potprograma te u okruglim zagradama popis ulaznih podataka. Primjer: Što će ispisati sljedeći program?
zbroj = O zbroji 1, zbroj PRINT zbroj
SUB zbroji (x, zbroj) IF x > 10 THEN EXIT SUB zbroj = zbroj + x zbroji x + 1, zbroj END SUB Osnovna razlika između funkcije i potprograma je u tome što u funkciji mora postojati naredba koja rezultat funkcije stavlja u varijablu koja je upravo ime funkcije . Kad u glavnomu programu vidimo najmanji(x,Y) znamo da će se upravo na to mjesto "vratiti" ona vrijednost koju smo u FUNCTION najmanji(x,Y) stavili u varijablu najmanji. Potprogram SUB najmanji(x,Y) pozivamo ovako: najmanji x,Y Međutim, FUNCTION najmanji(x,y) ne možemo pozvati s: najmanji x,y, pa niti najmanji(x,y) jer je to zapravo neki broj. Stoga moramo pisati: a= najmanji(x,y) ili: PRINT najmanji(x,y).
Primjer: Napišite funkciju koja određuje koji je od zadana dva broja manji:
INPUT "x = ", x INPUT "y = ", Y PRINT " Najmanji broj - , najmanji (x, y) FUNCTION najmanji (x, y) IF x < Y THEN najmanji = x ELSE najmanji = y END IF END FUNCTION _11.
178
12 Programiranje - Programski jezik QBASIC ZADACI 12.3.0 Korak po korak do algoritma 12.1. Koja je uloga algoritma i dijagrama toka u procesu programiranja? 12.2. Napišite algoritam i nacrtajte dijagram toka koji upisuje ime, prezime i adresu učenika te ispisuje uneseno ime i prezime u prvi red, a adresu u drugi red. Rješenje spremite pod imenom zad12-2.doc. 12.3. Napišite algoritam za pripremanje spremite pod imenom zad12-3.doc.
sendviča
12.4. Dopunite dijagram toka za pripremanje
od šunke, sira i zelene salate. Rješenje
sendviča
od šunke, sira i zelene salate.
POČETAK
\
KRiŠKA / '----------rŠUN-------,KE
~
KRiŠKA KRUHA
KR_AJ_~)
( ___
179
Informatika i računalstvo - zbirka zadataka 12.5. Ponestale su vam mine za pisanje u vašoj nacrtajte dijagram toka za punjenje imenom zad12-5.doc. 12.6. Nacrtajte
četverokut
koji
ćete
tehničke
tehničkoj
olovci. Napišite algoritam i
olovke s tri nove mine. Rješenje spremite pod
koristiti u dijagramu toka za prikaz algoritma grananja. DA
~NE 12.7. Napišite algoritam i nacrtajte dijagram toka za odabir bazena za plivanje. Postoje dva bazena, u jednom je voda hladna, a u drugom topla. U rješenje svakako treba uključiti i unos sklonosti našega plivača, voli li više hladnu ili toplu vodu za plivanje. Rješenje spremite pod imenom zad12-7.doc. 12.8. Napišite algoritam i nacrtajte dijagram toka za donošenje i ispisivanje odluke o terminu za gledanje filma 'Harry Potter i Red Feniksa'. Prva kino predstava počinje u utorak u 20.00, a druga u srijedu u 17.00 sati. Ograničenja na koje morate pripaziti su sljedeća:
• potrebno vam je 30 minuta da bi prevalili udaljenost od kina do kuće • film traje 2 sata i 18 minuta • u školu ovaj tjedan idete u jutarnjoj smjeni i zadnje vrijeme kad morate biti u krevetu je 22.00 sata Rješenje spremite pod imenom zad12-8.doc.
12.3.1 Naredbe za ispis i unos - 12.3.3 Naredbe grananja 12.9. Na jednostavnom primjeru objasnite upotrebu naredbi PRINT, CLS i COLOR. Ukratko objasnite čemu služi koja naredba. 12.10. Napišite program koji će ispisati vaše ime, prezime i naziv škole koju polazite. Ime i prezime ispišite zelenom bojom na crnoj podlozi, a naziv škole ispišite, u drugom redu, u ljubi častoj boji na svijetlo nebesko plavoj pozadini. Rješenje spremite pod imenom zad12-10.bas.
180
12 Programiranje - Programski jezik QBASIC 12.11. Napišite program
čiji će
rezultat ispisa izgledati kao na slici.
Rješenje spremite pod imenom zad12-11.bas. 12.12. Napišite program koji će izračunati i ispisati tri višekratnika broja 15 uz uvjet da su od 50. Rješenje spremite pod imenom zad12-12.bas.
veći
12.13. Napišite program koji će izračunati i ispisati broj dana potrebnih da bi pojeli čokoladu od 250 grama ako dnevno smijete pojesti ni više ni manje nego 12,5 grama. Rješenje spremite pod imenom zad12-13.bas. 12.14. Napišite program koji će izračunati i ispisati vrijeme kad počinje i kad završava veliki odmor u najpoznatijoj školi za male čarobnjake Hogwarts. Informacije koje su vam potrebne za rješavanje ovog zadatka su s lj edeće:
• veliki odmor u Hogwarts školi počinje nakon prvog sata i traje 35 minuta • prvi sat počinje u 9.00 sati • svaki sat u ovoj školi traje točno 55 minuta. Rješenje spremite pod imenom zad12-14.bas. 12.15. Na osnovu algoritma i dijagrama toka kojeg ste izradili u zadatku 12.8 napišite program i njegovo rješenje spremite pod imenom zad12-15.bas. 12.16. Napišite program koji će na osnovu upisanih dužina stranica, izračunati opseg i površinu pravokutnika te neposredno prije rezultata izračuna ispisati i pripadajuće formule za opseg i površinu. Rješenje spremite pod imenom zad12-16.bas. 181
Informatika i računalstvo - zbirka zadataka 12.17. Na osnovu algoritma i dijagrama toka kojeg ste izradili u zadatku 12.7 napišite program za odabir bazena za plivanje. Postoje dva bazena, u jednom je voda hladna, a u drugom topla. U rješenje svakako treba uključiti i unos sklonosti našeg plivača, voli li više hladnu ili toplu vodu za plivanje. Rješenje spremite pod imenom zad12-17.bas. 12.18. Napišite program koji učitava dva prirodna broja, računa njihov količnik, djelomični količnik kao i ostatak pri dijeljenju. Program spremite pod imenom zad12-18.bas. 12.19. Napišite program koji učitava visinu učenika u milimetrima te je pretvara u metre, deci metre i centimetre. Milimetre pretvorene u metre potrebno je ispisati žutom bojom, pretvorene u decimetre plavom bojom i centimetre zelenom bojom. Program spremite pod imenom zad12-19.bas. 12.20. Perica je odlučio pogledati svoj omiljeni film 'Harry Potter i Red Feniksa'. Perici je potrebno 30 minuta da bi prevalio udaljenost od kina do kuće, 10 minuta da bi kupio karte, a film traje 2 sata i 18 minuta. Napišite program koji računa i ispisuje koliko minuta mora izdvojiti Perica da bi pogledao svoj film? Rješenje spremite pod imenom zad12-20.bas. 12.21. Napišite program koji će ispisati imena dana u tjednu tako da:
• svako ime dana bude ispisano u novi red i to tako da imena idu dijagonalno preko zaslona; • svaki dan u tjednu bude druge boje; • nedjelja bude ispisana žutom bojom na plavoj pozadini. Program spremite pod imenom zad12-21.bas.
*
12.22. Napišite program koji učitava četiri proizvoljna prirodna broja: a, b, c i d. Od ta četiri prirodna broja sastavlja razlomke na sljedeći način i te izračunava i ispisuje njihov zbroj, razliku i umnožak. Program spremite pod imenom zad12-22.bas.
%
12.23. Napišite program koji će ispisati sve brojeve između 101 i 121 tako da sve proste brojeve ispiše plavom bojom na bijeloj pozadini, a sve složene brojeve bijelom bojom na plavoj pozadini. Svaki broj se ispisuje u novi red. Program spremite pod imenom zad12-23.bas. 12.24. Napišite program koji će prihvatiti vrijednosti dviju kateta pravokutnog trokuta i kraticu za mjernu jedinicu u kojoj su izražene dužine kateta. Na osnovu upisanih dužina kateta program izračunava površinu trokuta te neposredno prije rezultata izračuna ispisuje i pripadajuću formulu za površinu. Ako je površina trokuta veća od 20, potrebno je ispisati poruku: 'Površina pravokutnog trokuta veća je od 20 kratica za jedinicu na kvadrat. Prije ispisa traženih podataka potrebno je ispisati jedan prazan red, te ispis podatak pomaknuti da počne u 5. koloni.
Rješenje spremite pod imenom zad12-24.bas. 182
12 Programiranje - Programski jezik QBASIC 12.25. Napišite program za ispisivanje informacije tko je od dvojice braće stariji. Očekuje se
unos godine
rođenja
sestre i unos godina starosti brata. Ispis rezultata odvojiti jednim
praznim redom od redova u kojima su unijete informacije o tome tko je stariji potrebo je ispisati od
braće.
trenutačnu
braći.
Prije same informacije o
kalendarsku godinu i godine starosti svakog
Rješenje spremite pod imenom zad12-25.bas.
12.3.4 Naredbe za ponavljanje 12.26. Napišite algoritam, nacrtajte dijagram toka te napišite program za uključivanje u igru 'Čovječe ne ljuti se'. Rješenje spremite pod imenom zad12-26.doc.
12.27. Napišite program koji će ispisati višekratni ke unijetog broja n. Broj mora biti veći od
5 i manji od 20. Ispisuju se samo višekratnici koji su manji od 150. Nakon unijetih podataka ispisuje se jedan prazan red. Prvi red počinje se ispisivati u 2 ko loni. Svaki sljedeći redak pomaknut je za jedno mjesto udesno u odnosu na prethodni redak. U jedan redak ispisuje se po pet brojeva. Svaki red ispisuje se u drugoj boji. Rješenje spremite pod imenom zad12-27.bas 12.28. Napišite program koji će prihvatiti dva broja, prvi u rasponu od 50 do 150, a drugi
manji od 15, te će ispisati sve cjelobrojne rezultate dijeljenja većeg broja sa razlikom manjeg broja i vrijednosti 'koraka' petlje. Nakon unijetih podataka, a prije ispisa rezultata dijeljenja, ispisuje se jedan red u dužini 10 znakova ,*, . Rješenje spremite pod imenom zad12-28.bas 12.29. Napišite program koji će prihvatiti vrijednosti stranica a i b pravokutnika. Potrebno je izračunati
i ispisati opseg i površinu tog pravokutnika te izračunati i ispisati površine do
5 puta većih pravokutnika od početnog. Svaka sljedeća veća površina ispisuje se u drugi red zajedno s informacijom koliko puta je ispisana površina veća od
početne
površine.
Rješenje spremite pod imenom zad12-29.bas
183
Informatika i računalstvo - zbirka zadataka 12.30. Napišite program koji će ispisati podatke o vama, vašoj školi i vremena početka svakog školskog sata. Podatke koje je potrebno unijeti su
slijedeći:
• ime i prezime učen i ka • ime škole • početak prvog sata • trajanje malog odmora (u minutama) • trajanje velikog odmora (u minutama) • veliki odmor je nakon kojeg sata • maksimalni broj sati u jednoj smjeni. Svaki početak sata ispisuje se u novi red. Podatke o vama i školi jednim praznim redom odvojite od podataka o
početku
prvog sata. Rješenje spremite pod imenom
zad12-30.bas 12.31. Napišite program koji će ispisati formulu za površinu kvadrata i vrijednosti površina kvadrata kojima se stranica
povećava
od 1 pa do n. Prije ispisa rezultata
potrebno je ispisati jedan red u dužini 10 znakova '-' . U svakom retku potrebno je ispisati vrijednosti dužine stranice i pripadajuću površinu kvadrata. Rješenje spremite pod imenom zad12-31.bas 12.32. Napišite program koji će odrediti sve višekratnike broja n, veće od 100 i manje od 1000. Nakon retka za unos broja za kojeg tražimo višekratnike potrebno je ispisati jedan red u dužini od 20 znakova *, u zelenoj boji. Ispis višekratnika grupirati na sljedeći 200,201-300, .... , grupe se pišu u novi red i svaka drugom bojom
(slučajni
način
101 -
odabir) . Rješenje
spremite pod imenom zad12-32.bas 12.33. Napišite program koji
će
ispisati sve neparne brojeve koji su manji od n. Vrijednost
varijable n se može kretati u rasponu od 20 do 35. Svaki broj se ispisuje u drugi redak i drugom bojom. Boje se izmjenjuju po algoritmu od 3 do 15, te od 15 do 3 s korakom 3. Rješenje spremite pod imenom zad12-33.bas 12.34. Napišite program koji će izračunati od koliko kockica se sastoji čoko l ada od 125 grama, ako jedna kockica ima 1,25 dekagrama. Program mora ispisati za koliko dana ćemo pojesti cijelu čokoladu ako svakoga dana pojedemo po jednu kockicu. Potrebno je
184
12 Programiranje - Programski jezik QBASIC prikazati kako se dnevno smanjuje rezultata pogledajte na slici.
količina
preostale
čokolade
u gramima. Primjer izlaznih
Rješenje spremite pod imenom zad12-34.bas 12.35. Napišite program koji zbraja sve višekratnike broja 7 koji se nalaze između zadanih brojeva A i B. Ako između zadanih brojeva nema višekratnika broja 7, ispišite poruku "Nema traženih višekratnika!" zelenom bojom. Program spremite pod imenom zad12-35.bas. .... -
12.36. Napišite program koji ispisuje sve parne brojeve koji se nalaze između brojeva A i B. Svaki parni broj se ispisuje u novi red drugom bojom. Boje se izmjenjuju po algoritmu 4 do 12, te od 12 do 4 s korakom 2. Brojevi A i B se unose. Program spremite pod imenom zad12-36.bas. 12.37. Napišite program koji učitava dva prirodna broja A i B te određuje i ispisuje njihov zajednički djelitelj. Uputa: Za određivanje zajedničkog djelitelja koristite Euklidov algoritam. Program spremite pod imenom zad12-37.bas. 12.38. NapiŠite program koji učitava prirodne brojeve sve dok se ne učita broj 9999. Program ispisuje najmanji učitani broj . Program spremite pod imenom zad12-38.bas. 12.39. NapiŠite program koji učitava prirodne brojeve sve dok se ne učita nula. Program ispisuje najveći učitani broj. Program spremite pod imenom zad12-39.bas. 12.40. NapiŠite program koji učitava prirodan broj i ispisuje mu znamenke počevši od znamenke najveće mjesne vrijednosti. Program spremite pod imenom zad12-40.bas.
185
Informatika i računalstvo - zbirka zadataka 12.41. Jedna sretna mnogobrojna obitelj sa 23 člana odlučila je posjetiti rođake u susjednom mjestu. Kako obitelj posjeduje dva automobila, jedan za prijevoz četiri osobe i jedan za prijevoz pet osoba, željeli su saznati koliko puta moraju kojim automobilom prevaliti put do rođaka kako bi prevezli sve putnike. Uputa: Potrebno je napisati program koji pronalazi sve uređene parove prirodnih brojeva (x,Y) takvih da je 4X+5X=23. Program spremite pod imenom zad12-41.bas. 12.42. Napišite program koji provjerava je li zadani broj prosti broj. Broj je prost ako je djeljiv samo s 1 i sa samim sobom. Program spremite pod imenom zad12-42.bas. 12.43. NapiŠite program koji ispisuje sve brojeve koji su manji od n i veće od m. Program spremite pod imenom zad12-43.bas. 12.44. NapiŠite program koji omogućava učitavanje maksimalno 25 brojeva. Program ispisuje:
• • • • •
koliko koliko koliko koji je koji je
ima učitanih pozitivnih brojeva; ima učitanih negativnih brojeva; puta je učitana nula; najveći učitani broj i najmanji učitani broj.
Program spremite pod imenom zad12-44.bas. 12.45. Napišite program za igru "Pogodi broj". Računalo odabire jedan slučajni broj, a vi ga morate pogoditi. Za svaki upisani broj računalo vraća povratnu informaciju u obliku poruke: Broj je veći ili manji od broja koji ste upisali. Nakon što pogodite broj, treba ispisati poruku u koliko ste pokušaja pogodili broj. Program spremite pod imenom zad12-45.bas. 12.46. NapiŠite program koji omogućava učitavanje najviše 20 brojeva. Program provjerava i ispisuje koliko je od učitanih brojeva prostih, koliko složenih i koliko puta je učitana nula. Broj prostih brojeva ispiši plavom bojom, broj složenih brojeva žutom bojom, a broj nula zelenom bojom. Program spremite pod imenom zad12-46.bas. 12.47. Koju petlju je potrebno upotrijebiti i na kojem mjestu unutar petlje je potrebno postaviti zadani uvjet kako bi se petlja izvela barem jedanput?
Napišite jedan primjer programa s ovakvom petljom i spremite ga pod imenom zad12-47.bas.
186
12 Programiranje - Programski jezik QBASIC 12.3.5 Crtanje u QBASIC-u 12.48. Napišite program koji crta niz od 10 kvadratića stranice duljine a, ako je a< 45. Donji lijevi vrh prvog kvadratića nalazi se u točki (40,440) . Program spremite pod imenom zad12-48.bas. (40+ a.44 0-a)
(40.440)
a
12.49. Napiši program koji crta niz kvadrata. Svaki veći kvadrat ima stranicu za A dulju od stranice prethodnog kvadrata. Svaki kvadrat je druge boje. Program spremite pod imenom zad12-49.bas. 12.50. Napišite program koji crta niz od n kvadrata sa stranicom duljine A tako da su kvadrati poredani kao stepenice, odnosno dva susjedna kvadrata imaju jednu zajedničku točku . Svaka stepenica je druge boje. Program spremite pod imenom zad12-50.bas. 12.51. Napiši program koji crta neboder kao na slici. Neboder ima četiri kata i na svakom katu nekoliko prozora. Boju nebodera i prozora odaberite po želji. Program spremite pod imenom zad12-51.bas.
187
Informatika i računalstvo - zbirka zadataka
12.52. Napišite program koji crta niz od n krugova polumjera r, kao na slici. Krug crvene boje omeđen je bijelom kružnicom. Program spremite pod imenom zad12-52.bas.
12.53. Napišite program koji crta n koncentričnih kružnica polumjera r. Program spremite pod imenom zad12-53.bas.
12.54. Napišite zadatak koji crta n kružnica sa slučajno određenim središtima, polumjerom i bojom (vidi sliku). Program spremite pod imenom zad12-54.bas. 12.55. Napišite program koji crta niz ispunjenih kvadrata jedan unutar drugoga. Stranica najvećeg kvadrata A se unosi. Stranica svakog sljedećeg kvadrata je za A/4 manja. Crtanje kvadrata se prekida kada je stranica najmanjeg kvadrata manja od 25. Program spremite pod imenom zad12-55.bas.
188
12 Programiranje - Programski jezik QBASIC 12.56. Napišite program koji crta niz kružnica koje se dodiruju iznutra. Potrebno je učitati središte (x, y) i polumjer r najveće kružnice te razmak između središta susjednih kružnica d. Crtanje se prekida kada je polumjer najmanja kružnice manji od 30. Program spremite pod imenom zad12-56.bas. 12.57. Napišite program koji crta dva niza kružnica s jednom zajedničkom točkom. Svaki niz kružnica sastoji se od N kružnica, a polumjer najveće kružnice je r. Program spremite pod imenom zad12-57.bas.
12.3.6 Znakovni tip podataka i rad s riječima 12.58. Pomoću koje naredbe možemo definirati niz znakova u QBASIC-u? 12.59. Možemo li "zbrajati" nizove znakova? Ako možemo, napišite primjer programa koji "zbraja" nizove A$ i B$. Program spremite pod imenom zad12-59.bas. 12.60. Koja funkcija
vraća
duljinu niza znakova?
12.61. U koju svrhu upotrebljavamo redom funkcije: LEFT$, RIGHT$ i MID$. Uz objašnjenje svake funkcije napišite kratki primjer njezine upotrebe. 12.62. Napišite program koji učitava rečenicu i provjerava je li učitana rečenica palindrom ili ne, te o tome ispisuje poruku . Program spremite pod imenom zad12-62.bas. 12.63. Napišite program koji ispisuje kodiranu poruku. Kodiranje vršimo po sljedećem ključu: Samoglasnike mijenja sljedećim znakovima (vidi tablicu).
I~~:k
I~
l!
I~
I~
I~
Program spremite pod imenom zad12-63.bas. 12.64. Napišite program koji učitava niz znakova te ih ispisuje obrubljene obrubom od rombova (vidi sliku). Program spremite pod imenom zad12-64.bas.
189
Informatika i računalstvo - zbirka zadataka 12.3.7 Logičke funkcije u QBASIC-u 12.65. Napišite program koji će ispisati višekratnike unijetoga broja n. Broj mora biti 5 i manji od 20. Uvjeti za ispis višekratnika su s lj edeći:
veći
od
• ispisuju se samo višekratnici koji su manji od 200 • ako je unijeti broj paran, ispisuju se samo parni višekratnici, u crvenoj boji • ako je unijeti broj neparan, ispisuju se samo neparni višekratnici, u zelenoj boji Nakon unijetih podataka ispisuje se jedan prazan red. Prvi red počinje se ispisivati u 2 koloni . Svaki sljedeći redak pomaknut je za jedno mjesto udesno u odnosu na prethodni redak . U jedan redak ispisuje se po pet brojeva. Rješenje spremite pod imenom zad12-65.bas. 12.66. Napišite program koji će na temelju unijete boje koja trenutačno svijetli na semaforu odlučiti
je li dozvoljen prolaz kroz raskrižje. Dozvoljeno je i malo prometnih prekršaja. Samo pazite, uz samo raskrižje može i ne mora biti prometni policajac. Nakon unijetih podataka ispisuje se jedan prazan red. Ako je dozvoljen prolaz kroz raskrižje poruku ispiši zelenom bojom, a ako je potrebno zaustaviti se, poruku ispišite crvenom bojom. Primjer nekih izlaznih rezultata pogledajte na slici:
Rješenje spremite pod imenom zad12-66.bas.
190
12 Programiranje - Programski jezik QBASIC 12.67. Napišite program koji će kvadrat sa stranicom 350 prekriti dijagonainim prugama obojenim različitim bojama. Širina pruge i šifre za tri boje koje se ne smiju pojaviti na slici
se unose s tipkovnice. Vrijednost širine pruge može biti od 20 do 35, za ostale vrijednosti potrebno je ispisati poruku o krivo unijetoj vrijednosti za širinu. Lijeva stranica kvadrata nalazi se u koordinati X= 100. Rješenje spremite pod imenom zad12-67.bas. 12.68. Napišite program koji prihvaća u programske varijable tri prirodna broja te ih sortira uzlazno crvenom bojom, a silazno zelenom bojom. Ispis organizirati u dva stupca, u kojima su brojevi ispisani u boji stupca.
Primjer izlaznog rezultata pogledajte na slici:
Rješenje spremite pod imenom zad12-68.bas. 12.69. Napišite program koji crta geometrijski lik u zadanoj boji. Ako je unijeti broj manji ili jednak od 200 nacrta kvadrat, inače crta krug polumjer a/2. Donji lijevi vrh kvadrata nalazi se u točki (100,300), a središte kružnice u točci (200,150) . Rješenje spremite pod imenom zad12-69.bas.
12.3.8 Potprogrami i funkcije 12.70. Objasnite osnovnu razliku između potprograma i funkcija. Navedite po jedan jednostavan primjer primjene potprograma i funkcija.
191
Informatika i računalstvo - zbirka zadataka 12.71. Napišite program koji će simu lirati bacanje dviju kockica n-puta, te ispisati statistiku koliko je puta bačena kombinacija istih brojeva s podatkom koji su to brojevi te statistiku koliko puta je bačen zbrOj kockica 2,3,4, .... 12. Bacanje kockice smjesti u funkciju baci. kockicu, a ispis statistike o istim brojevima u potprogram ispis.isti.broj, a ispis statistike u potprogram ispis.suma.komada. Primjer izlaznog rezultata pogledajte na slici:
Nakon unijetih podataka ispisuje se jedan prazan red te i zmeđu ispisa statistike istih brojeva i statistike suma ispisati također jedan red prazan. Rješenje spremite pod imenom zad12-71.bas. 12.72. Napišite program koji ekranu:
će vraćati točno
vrijeme u obliku kako je to prikazano na
Ispis vremena spremi u funkciju tocno.vrijeme.hh24mm. Rješenje spremite pod imenom zad12-72.bas.
192
12 Programiranje - Programski jezik QBASIC 12.73. Napišite program koji će prihvatiti vrijednosti polumjera kružnice r i vrijednost koordinate y te će na ekranu, u koordinatnom sustavu, nacrtati krug polumjera r sa središtem (-20, y). Boja kruga se određuje slučajnim odabirom. Rješenje spremite pod imenom zad12-73.bas. 12.74. Napišite program koji crta kružnicu polumjera R i njenu tang entu u točki D. Potrebno je nacrtati i označiti točku središta kružnice, kao točku dirališta tangente i kružnice. Program spremite pod imenom zad12-74.bas. 12.75. Napišite program koji prikazuje kretanje automobila na autocesti. Automobi l se počeo približavati naplatnim kućicama i stao je da plati cestarinu. Ulazi u program su: brzina kretanja, kod uočavanja znaka za približavanje naplati cestarine te akceleracija kojom je automobil počeo usporavati. Primjer izlaznog rezultata pogledajte na slici:
J ednoliko us poreno gibanje a=? 1.Z t= 83.33333 s u=? 100 n/s Preualjeni put: s = 4166.667 n
11e lee 90
8e 7e 6e se
30
ze 10
le
ze
3e 4e se 6e
7e 8e ge lee lle lze 13e 14e lse 16e 17e
/
s
Press any key to continue Rješenje spremite pod imenom zad12-75.bas.
193
Informatika i računalstva - zbirka zadataka 12.76. Napišite program koji računa i ispisuje maseni udio vodika (H) i kisika (O) u molekuli vode (HP) i provjerite je li Izračun
izračunati
postotni udjeli kisika i vodika zajedno
čine
100% .
udjela bilo kojeg sastojaka u nekoj smjesi stavite u funkciju udio.u.smjesi koja ima
ulazne parametre Ar - relativnu atomsku masu i Mr - relativnu molekularnu masu. Rješenje spremite pod imenom zad12-76.bas. 12.77. Napišite program koji unosi prirodan broj N veći ili jednak nuli i manji od 10000, te ispisuje broj znamenaka
učitanog
broja. Ako upisani broj nije u zadanim granicama,
ispisuje se poruka "Broj je izvan granica" crvene boje i traži se ponovni unos broja. Program spremite pod imenom zad12-77.bas. 12.78. Napišite program koji pretvara i ispisuje unijeti dekadski broj D u heksadekadski broj. Za pretvaranje dekadskog broja u heksadekadski upotrijebi potprogram. Program spremite pod imenom zad12-78.bas. 12.79. Napišite program koji uz upotrebu potprograma izračunava i ispisuje oplošje i obujam kvadra, valjka i pravilne četverostrane piramide. Program spremite pod imenom zad12-79.bas. 12.80. Napišite program koji uz upotrebu funkcija izračunava i ispisuje oplošje i obujam kocke i kugle. Program spremite pod imenom zad12-80.bas. 12.81. Napišite program koji učitava koordinate dviju točaka A i B te pomoću funkcije udaljenost (x1, y1, x2, y2) izračunava njihovu udaljenost. Program ispisuje udaljenost među
zadanim
točkama.
Program spremite pod imenom zad12-81.bas.
12.82. Napišite program koji uz upotrebu funkcija kvadrat(a) i korijen(a) ispisuje kvadrate i između
M i N. Ispis treba oblikovati tako da se u prvi stupac ispisuje broj plavom bojom, u drugi stupac kvadrat zadanog broja žutom bojom, a u treći stupac korijen zadanog broja narančastom bojom . Program spremite pod imenom zad12-82.bas. korijene brojeva
12.83. Napišite program koji crta kružne valne fronte vala koji nastaje u točki A(x,y), a valna duljina mu je L. Valne fronte se prestaju crtati kada se val udalji od svog izvora za 250. Program spremite pod imenom zad12-83.bas.
194
12 Programiranje - Programski jezik QBASIC 12.84. Napišite program koji računa i ispisuje maseni udio vode (HP) u modroj galici
(CuS0 4 5HP)i provjerite je li
izračunati
postotni udjeli zajedno
čine
100%. Izračun udjela
bilo kojeg sastojaka u nekoj smjesi stavi u funkciju udio.u.smjesi koja ima ulazne parametre
Ar - relativnu atomsku masu i Mr - relativnu molekularnu masu. Program spremite pod imenom zad12-84.bas. 12.85. Napišite program koji unosi prirodan broj X i računa volumen dušika u X litara
zraka, ako je volumni udio dušika u zraku 78%. Program spremite pod imenom zad12-85.bas. 12.86. Napišite funkciju koja
vraća
i ispisuje broj suprotne vrijednosti od unesenog broja.
Rješenje spremite pod imenom zad12-86.bas.
195
Informatika i računalstvo - zbirka zadataka
12.4 Programski jezik Pascal UVOD 12.4.2 Tipovi podataka Ti pove podataka možemo pod ijeliti u tri sku pine: IrH, i l'iTi'J:l F.Wi11
1 J:11~
Standardni
Kori snički
cjelobrojni (integer) realni (real) znakovni (char) l og i č ki (8oolean)
Pobrojani Intervalni
.. .
.
skup (set) niz, polje (array) zapis, slog (record) datoteka (file) string
Standardni jednostavni tipovi podataka Cjelobrojni tip (integer) Cjelobrojni tip je ko n ačni podsku p skupa cijelih brojeva. N ajveći cijeli broj određe n je konstantom maxint, a najmanji konstantom minint. N ajveći cijeli broj maxint zavisi od konkretne realizacije na račun alu .
Ako cijeli broj prikažemo sa 16 bitova, maxint će biti 32767, a minint -32768. O pćenito:
maxint = 2 n.' minint = 2n.' Opć i
-
1
oblik deklaracije cjelobrojne varijable:
var
a: integer; U Turbo Pascalu i Free Pascalu postoji prošireni skup cjelo brojnih tipova podataka koji se razlikuju po intervalu vrij ednosti i broju bitova koji zauzimaju .
......
Syte Shortint Integer Word Longint
196
. .
: @llĐI~
8 8 16 16 32
•
iI:r~.
0- 255 -128 - 127 -32768 - 32767 0 ..65535 -2147483648 .. 2147483647
12 Programiranje - Programski jezik PASCAL Na cjelobrojnom tipu podataka definirani su sljedeći standardni operatori: + zbrajanje oduzimanje * množenje div cjelobrojno dijeljenje ( 17 div 8 = 2, -13 div 3 = -4) mod ostatak cjelobrojnog dijeljenja (17 mod 8 = 1, -16 mod 4 = O) Operacije div, mod, * imaju viši prioritet od nadesno.
+ i -. Operacije istog prioriteta izvršavaju se slijeva
Na cjelobrojnom tipu definirane su standardne funkcije koje daju cjelobrojni rezultat: abs(i) apsolutna vrijednost abs(-15) = 15 sqr(i) kvadrat sqr(6) =36 succ(i) sljedbenik, i+ 1 suee(2)=3 prethodnik, i-1 pred(2) = 1 pred(i) trunc(x) cijeli dio realnog broja trune (3.75) =3 round(x) zaokružuje x na najbliži cijeli broj round(3.15) =3 round(3 .67) =4 (x - realni argument, i - cjelobrojni argument)
Realni tip (real) Realni tip predstavlja na računalu.
konačni
podskup skupa realnih brojeva koji zavisi od konkretne realizacije
Osnovne operacije definirane na realnom tipu: + zbrajanje oduzimanje * množenje dijeljenje / Standardne funkcije abs(x) sqr(x) sin (x), cos (x) arctan(x) exp(x) In(x) sqrt(x) int(x)
koje kao rezultat daju realni tip podataka: apsolutna vrijednost kvadrat trigonometrijske funkcije arku s tangens eksponencijalna funkcija eX prirodni logaritam drugi korijen (x > =0) daje cijeli dio od x, npr. int(15.87) = 15.00
197
Informatika i računalstvo - zbirka zadataka Zbog konačne duljine riječi računala operacije se vrše nad približnim vrijednostima pa su rezultati aproksimativni. U Turbo Pascalu i Free Pascalu definirani su
sljedeći
M~.n-:A·l'J;1 6
~
Real Single
4
Double Extended
8 10
7-8 15-16
Comp
8
'iiIP
tipovi:
. -
10-12
19-20 19-20
~ 2.9E-39 .. 1. 7E38 1.5E-45..3.4E38 5.0E-324 .. 1.7E308 3.4E-4932 .. 1.1 E4932 -9.2E18 .. 9.2E18
Znakovni tip (char) Char je standardni redni tip i predstavlja linearno uređeni konačni skup znakova koji zavisi od realizacije na računalu. Svakom znaku pridružen je redni broj koji se zapisuje u memoriji.
Opći
je oblik deklaracije znakovne varijable:
var
a: char; Znakovni tipovi podataka u Pascalu zauzimaju jedan byte . Konstanta tipa char se zapisuje u jednostrukim navodnicima: '8', '*',}'. Znakovnom tipu pripada i praznina. Svaki znak ima svoj kod. Najčešće se služimo ASCII kodom. Upotrebljavaju se funkcije:
ord(c) chr(n)
redni broj znaka c (npr. ord(8') =66) znak čiji je redni broj n (npr. chr(66) ='8')
Skup osnovnih znakova
uređen
je prema ASCII vrijednostima, mogu se primijeniti i operacije
uspoređivanja.
Npr.
'A' <'M' rezultat operacije logičkog tipa je true rezultat operacije logičkog tipa je false. 'b'<'8' Funkcije pred i succ definirane su na pred(c) succ(c) 198
sljedeći način:
prethodni znak (npr. pred('c') ='b') sljedeći znak (npr. succ(c') = 'd')
12 Programiranje - Programski jezik PASCAL Logički Logički
tip (boolean)
tip standardni je redni tip s dva elementa: istina (true) i laž (false). False i true su standardna
imena. Primjer: Boolean = (false, true) ord(true) = 1 ord(false) = O pred(true) = false succ(false) = false Opći
je oblik deklaracije varijable l ogičkog tipa:
var
a: boolean; logičkim
Nad
tipom definirani su standardni operatori:
negacija (NE) konjunkcija (I) disjunkcija (ILI)
NOT AND
OR
Relacijski operatori (= , < , >, < = , > = , < » daju rezultate l ogičkog tipa. Koristeći svojstvo da je false < true, možemo definirati i ekskluzivnu disjunkciju, implikaciju i ekvivalenciju: <> ekskluzivna disjunkcija < = implikacija = ekvivalencija Sljedeće
standardne funkcije daju vrijednosti l ogičkog tipa:
odd(x) eof(d) eoln(d)
ako je x neparan, daje vrij ednost true, inače fal se (odd(13) = true) ako je kraj datoteke, daje vrijednost true ako je kraj linije datoteke, daje vrijednost true.
Nestandardni jednostavni tipovi podataka Opći
oblik definicije nestandardnog tipa podataka je:
type
a: podrucje _vrijednosti; Npr., područje vrijednosti tipa integer je: (-maxint, .. ,-1 ,0,1 ,.. ,maxint).
199
Informatika i računalstvo - zbirka zadataka Na ovom tipu možemo se poslužiti standardnom funkcijom definiranom na rednim tipovima podataka: redni broj elementa x , redni broj prvog je O ord(x) sljedbenik elementa x succ(x) pred (x) prethodnik elementa x Relacijski operatori ( =, < , > , < =, > = , < » definirani su preko rednog broja elementa (ard) . Nekoliko primjera: type dani=(pon, uto, sri, cet, pet, sub, ned); mjeseci=(sijecanj, veljaca, ozujak, travanj, svibanj , lipanj, srpanj, kolovoz, rujan, listopad, studeni, prosinac); note=(do, re, mi, fa, so, la, ti); Tako definirani tip podataka naziva se pobrojani. Ako u programu želimo ograničiti područje vrijednosti varijable, tada definiramo tip podataka koji se naziva intervalni. Nekoliko primjera: type dani = 1 .. 30; slova = 'A' .. 'Z'; cijeli = -maxint . . maxint; var a: dani; b: slova: c: cijeli; Pobrojani tip podataka je konačan, uređen skup imena. Imena se navode u zagradama i odvajaju zarezima. ! Varijablama pobrojanog tipa ne možemo se služiti u naredbama read i write.
l.
Primjeri definicije nabrajanja i definicije intervala:
.
I
•
- ,
(pet, sest, sedam, osam) (crvena, plava, zelena) 1990.. 2003 1.. 7
200
.
.
I
•
I
(pet,6,7,osam) ('crvena', 'plava', 'zelena') 1990 .. dvijetisucetreca 1.0..7.0
12 Programiranje - Programski jezik PASCAL 12.4.3 Operatori i izrazi Operatori i izrazi Kombinacijom varijabli, konstanti i operatora nastaju izrazi. Osnovni elementi izraza su faktori. Faktor može biti: • konstanta bez predznaka: 5.21,200; • varijabla: i, s1; • poziv funkcije : sqrt(x),abs(a); • izraz u zagradama: (1 + a), (5 - 4*a) Izrazi su riječi ili simboli koji unarni, binarni i ternarni.
određuju
da se s varijablama u programu nešto
učini.
Mogu biti:
Operator pridruživanja Operatorom pridruživanja varijabli s njegove lijeve strane pridružuje se vrijednost izraza koja se nalazi s njegove desne strane. Tip vrijednosti izraza treba odgovarati tipu varijabli. Operator pridruživanja u Pascalu je :
Primjer:
a := a*3; b := b+2; Aritmetički
Simboli
operatori
aritmetičkih
aritmetičkih
operatora uglavnom odgovaraju standardnim operacija:
.- .
I.~
••• - •
.
zbrajanje oduzimanje množenje dijeljenje cjelobrojno dijeljenje ostatak pri cjelobrojnom dijeljenju
matematičkim
oznakama
~
+ *
/ div mod
Ako se u izrazu nalazi više operatora, redoslijed izvršavanja ovisi o prioritetu operatora. Nižeg
201
Informatika i računalstvo - zbirka zadataka prioriteta su zbrajanje i oduzimanje, a višeg prioriteta su množenje, dijeljenje, cjelobrojno d ijeljenje te ostatak pri cjelobrojnom dijeljenju. Redoslijed prioriteta može se promijeniti uporabom zagrada 0, pri tome treba paziti da broj otvorenih i zatvorenih zagrada bude jednak. Uz operatore u izrazima se mogu koristiti i matemati čke funkcije. Pregled najčešće upotrebljavanih matematičkih funkcija:
.
~
Ix I
abs(x)
..Jx
sqrt(x)
X2
sinx cosx arctQx eX Inx inc(x) dec(x)
sqr(x) sin(x) cos (x) arctan(x) exp(x) In(x) povećava vrijednost cjelobrojne varijable x za 1 smanjuje vrijednost cjelobrojne varijable x za 1
Primjer: Zapišite u programskom jeziku
,
sljedeće
algebarske izraze:
......
f = 3x +2y
f:= (3*x +2*y )/(4 *z);
4z
f:= a
+ (2 * b -
c)/(d * d);
Relacijski i logički operatori Relacijskim i logičk i m operatorima utvrđuje se povezanost dviju varijabli, funkcija ili izraza.
.- .
e el=lr-J.lern
manje manje ili jednako jednako veće veće
ili jednako
različ ito
202
~ < <= = > >= <>
12 Programiranje - Programski jezik PASCAL
......... Negacija I, konjukcija Logički ILI , disjunkcija
NOT AND OR
Logički
Vrijednosti
m
o o
Dl
1 1
o
logičkih
operacija:
IDf..i.1IOO I!l
F.D'f:'r.l
o o o
1
o
1 o 1 1 1 1 (O - laz (fa/se), 1 - Istina (true))
mrmm 1 1
o o
v
12.4.4 Ulaz i izlaz Naredba READ Standardna naredba za učitavanje podataka naredba je read. Ona prihvaća podatke sa standardnog ulaza i pridružuje ih varijablama navedenim u popisu. Varijable se navode unutar okruglih zagrada i odvajaju zarezima. Primjer 1.
var a,b:integer; read(a,b) ;
.266 Između
a
= 26 b=6 dvaju ulaznih podataka nalazi se praznina.
Primjer 2.
var a,b,c : integer; readln(a,b) ; read(c,d) ;
.a = 26 2661956 2710
b=6 = 27 d=10
c
203
Informatika i računalstvo - zbirka zadataka Primjer 3. readln;
Ova naredba propušta jednu ulaznu liniju . Deklarirane varijable mogu biti cjelobrojnog, znakovnog i realnog tipa. Kod praznine se zanemaruju, a kod znakovnih se uzimaju u obzir.
numeričkih
varijabli vo-
deće
Naredba WRITE Standardna naredba za ispis podataka naredba je write. Sve što se ispisuje naredbom write navodi se unutar okruglih zagrada. Varijable č ije se vrijednosti ispisuju odvajaju se zarezom. Nekoliko oblika naredbe write. Primjer 4. write (a,b,c) ;
Ta naredba ispisuje vrijednosti varijabli a, b, e u jednu izlaznu liniju. Primjer 5. writeln(a,b,c);
Ta naredba ispisuje varijable a, b, e u jednu izlaznu liniju i na kraju ispisa prelazi na početak s lj edeće linije. Primjer 6. writeln;
Ta naredba propušta jednu liniju. Naredbom write može se ispisivati i rezultat nekog izraza, kao i tekst napisan unutar jednostrukih navodnika. Primjer 7. write('Vrijednost izraza
Ispisat
2*5) ;
će
se: Vrijednost izraza
= 10
Primjer 8. Pretpostavimo da varijabla a ima vrijednost 26. Naredbom : write('Vrijednost iznosi = " a); ispisat će se: Vrijednost iznosi 26
=
204
12 Programiranje - Programski jezik PASCAL Umjesto a ispisuje se
trenutačna
vrijednost koju ima ta varijabla.
Formatirani ispis podataka pridonosi boljoj preglednosti dobivenih rezultata. Formatiranjem se broj mjesta za ispis podataka. Za realne brojeve moguće je odrediti ukupan broj mjesta koje će zauzeti broj koji ispisujemo i broj decimala toga broja.
određuje
Opći
oblik: write(a:duljina);
ili za realne brojeve write(a:duljina: broLdecimala);
12.4.5 Kontrola toka programa Naredbe u Pascalu mogu biti jednostavne ili strukturne. I"l:J..ill.l-"1~t.'JIL:J
Prazne naredba Naredba pridruživanja Bezuvjetni skok GOlO
Složena naredba Uvjetne naredbe Naredbe za ponavljanje
IF CASE WHILE REPEAl FOR
Strukturne naredbe su sastavljene od drugih naredbi koje opet mogu biti jednostavne ili strukturne. U Pascalu je dopuštena prazna naredba koja nema nikakvu oznaku niti utječe na izvršavanje programa.
Jednostruka uvjetno grananje Jednostruko uvjetno grananje ispituju logički izraz. Ako je on istinit, izvršava se naredba. Uvjet u naredbi if može biti logički ili aritmetički izraz. Sintaksa: if B then S
B-
logički
izraz, S - naredba
205
Informatika i
računalstvo
- zbirka zadataka
Primjer 1: Napišite program koji će od zadana tri broja ispisati najveći.
program narif; var a,b,c,max: integer; begin writeln('Zadaj tri broja: '); readln(a,b,c) ; max:=a; if b> max then max:=b; if c> max then max:=c; writeln('Najveci je : max) ; readln; end.
Višestruko uvjetno grananje Naredba IF ... THEN ... ELSE Sintaksa:
if B then S else S1 B-
logički
Ako je
izraz, S i S1 - naredbe.
logički
izraz B istinit izvršit će se S, a ako nije onda naredba S1
Primjer 2:
Napišite program koji
će
za
učitani
cijeli broj ispisati je li paran ili neparan.
program narif; var a: integer; begin writeln('Zadaj broj: '); readln(a) ; if (a mod 2 = O) then writeln('Broj je paran') else writeln('Broj je neparan'); readln; end.
206
12 Programiranje - Programski jezik PASCAL Naredba CASE Naredba CASE omogućava grananje programa u više smjerova ovisno o vrijednosti selektorskog izraza. Vrijednost selektorskog izraza može biti tipa integer, Boolean, char, intervalni ili pobrojani tip. Sintaksa: case E of
L,: S,; L2 : S2;
L:S n n end;
E - selektorski izraz LI' L2 , ... , Ln - popis case oznaka 5 1, 5 2 , ... , Sn- naredbe (mogu biti prazne) Primjer 3: Zadani su a, b. Ovisno o selektoru i izračunaj: ako je i=1 izračunaj a+b, ako je i=2 izračunaj a-b, ako je i=3 izračunaj a/b. Na kraju ispišite a, b, x. program cl; var a,b,i:integer; begin write('Zadaj prvi broj: '); readln(a) ; write('Zadaj drugi broj: '); readln(b) ; write('Izaberi broj l, 2 ili 3 '); readln(i) ; case i of 1: writeln('a=' ,a:5, ' b=' ,b:5,' i=' ,i:5,' a+b=' ,a+b:5); 2: writeln('a= ',a:5,' b=' ,b:5,' i=' ,i:5,' ab=' ,a*b:5); 3: if b=O then writeln('Djeljenje s nulom nije definirano') else wri teln ( , a=' ,a: 5,' b=', b: 5,' i=', i : 5, ' a/b=', a/b: 5 : 2) ; else writeln('Nije ni jedan od zadanih brojeva'); end; readln; end.
207
Informatika i računalstvo - zbirka zadataka Programske petlje Programske petlje upotrebljavaju se za višestruka uvjetna ponavljanja blokova naredbi. S obzirom na mjesto ispitivanja uvjeta ponavljanja, dvije su grupe programskih petlji. Postoje programske petlje s ispitivanjem uvjeta ponavljanja na početku bloka naredbi i petlje s ispitivanjem uvjeta ponavljanja na kraju bloka naredbi. Programske petlje su : • • •
for while repeat ... until
Programska petlja FOR Sintaksa programske petlje FOR. 1. for i: = x to Y do S 2. for i:= x downto y do S
i - kontrolna varijabla, početna
vrijednost kontrolne varijable, y - završna vrijednost kontrolne varijable.
x-
Primjer 1: Napišite program koji će zbrojiti sve cijele brojeve od 200 do 300 koji su djeljivi sa 7. Koliko ima takvih brojeva?
program forl; var i,s,b:integer; begin s:=O; for i:= 200 to 300 do if i mod 7 =0 then begin s:=s+i; b:=b+I; end; writeIn('Zbroj brojeva od 200 do 300 koji su djeljivi s 7 iznosi:' ,s); writeln('Takvih brojeva ima:' ,b); readln; end.
208
12 Programiranje - Programski jezik PASCAL Programska petlja WHILE Sintaksa petlje WHILE: while B do S gdje je B - logički izraz (uvjet), S - naredba. Uvjet je aritmetički ili logički izraz čija vrijednost
određuje
obavljanje bloka naredba.
Primjer 2: Uz pomoć petlje while izračunaj zbroj neparnih brojeva od 1 do 100
program petlja1; var i,s :integer; begin i:=l; while i<=100 do begin if i mod 2=1 then s:=s+i; i:=i+1; end; writeln('Zbroj neparnih brojeva od 1 do 100 iznosi: readln; end.
',s);
Programska petlja REPEAT ... UNTIL Sintaksa: repeat S until B B - logički izraz (uvjet) S - naredba ili niz naredbi Izvršavaju se naredbe sve dok logički izraz ne dobije vrijednost true. Kod naredbe repeat, ako je naredba složena, ne moramo pisati begin ... end jer njihovu ulogu preuzimaju ključne riječi repeat .. . until
209
Informatika i računalstvo - zbirka zadataka
Primjer 3: Napišite program koji će unositi brojeve sve dok se ne unese negativan broj. Program treba ispisati koliko je od zadanih brojeva djeljivo s tri, a koliko sa sedam.
program repeat1; var i,n,sl,s2,a:integer; begin repeat write('Unesi broj: '); readln(a) ; if a mod 3 O then sl:=sl +1; if a mod 7 = O then s2:=s2 +1; until a
, a djeljivih sa sedam
12.4.6 Potprogrami Za realizaciju ideje strukturnog programiranja potrebno je poznavati potprograme. Potprogrami su zasebne cjeline nizova naredbi najednom mjestu, a mogu se pozivati proizvoljan broj puta. Svaki potprogram ima svoje ime kojim se poziva. Potprogram se poziva iz glavnog programa i u tom trenutku se izvršava. Metoda rješavanja problema koja se naziva "TOP-DOWN" (odozgo prema dolje) postupak je kojim raščlanjivanjem globalnog zadatka dolazimo do pojedinih manjih zadataka. Početni se zadatak podijeli na manje dijelove - logi č ke cjeline, koje se nazivaju moduli. Dalje se moduli mogu po potrebi podijeliti na manje dijelove.
Vrste potprograma U Pascalu postoje dvije vrste potprograma: funkcije i procedure. Kod potprograma se pojavljuju parametri koji mogu biti stvarni i formalni . Kad definiramo potprogram koristimo formalne parametre. Oni se upotrebljavaju za razmjenu podataka i zmeđu programa i potprograma. To su nazivi varijabli koje se navode unutar zagradaO, a upotrebljavaju se za razmjenu između programa i potprograma.
210
12 Programiranje - Programski jezik PASCAL Stvarni parametri upotrebljavaju se pri pozivu potprograma, a povezuje se s formalnim parametrima. Dvije su vrste formalnih parametara:
a) b)
vrijednosni (ulazni) koji se potprogramu zadaju u trenutku poziva; promjenjivi ili varijabilni (ulazno - izlazni) koji mogu preuzimati vrijednosti iz glavnog programa, ali mogu i mijenjati vrijednost varijabli (stvarnih parametara) kojima su povezani pri pozivu potprograma.
Procedure mogu mijenjati vrijednost jednog parametra, više parametra ili nijednog eksplicitno. Procedure i funkcije moguće je upotrijebiti s formalnim parametrima ili bez njih. Funkcije vraćaju u program samo jednu vrijednost.
Procedure Razlikujemo tri oblika procedura: 1. procedure koje su s okolinom povezane preko globalnih varijabli (bez formalnih parametara): PROCEDURE krug;
2. procedure koje su povezane s okolinom samo preko formalnih parametara: PROCEDURE krug (r:real, VAR o,p:real);
3. procedure koje su kombinacija prvih dvaju oblika. Procedure pozivamo na izvođenje imenom nadopunjenim stvarnim parametrima. Stvarni parametri mogu biti izrazi, a s formalnim parametrima moraju se slagati u tipu, redoslijedu i broju. Formalni parametri mogu biti navedeni bez VAR (vrijednosni) ili kao varijable s VAR (varijabilni). Ulazne parametre navodimo kao vrijednosne, a izlazne kao varijabilne. Svi objekti određeni i najavljeni u glavnom programu globalni su, a objekti određeni i najavljeni u bloku procedure lokalni su za tu proceduru. Globalne varijable mogu se upotrijebiti u svim dijelovima i u svim blokovima u kojima ne postoji lokalna varijabla istog imena. Ako postoji lokalna varijabla istog imena kao i neka globalna, tada je u proceduri dostupna samo lokalna varijabla. Primjer 1: Napišite proceduru čiji će ulazi parametri biti polumjer i visina stošca. Procedura treba računati oplošje i obujam tog stošca.
program ps; var r,v,o,ob:real; procedure stozac(var o,ob:real;r,v:real); var s:real; begin s:=sqrt(sqr(r)+sqr(v» ; o:=r*pi*(r+s) ;
211
Informatika i računalstvo - zbirka zadataka ob:=sqr(r)*pi*v/3; end; begin write('Zadaj visinu stošca: '); readln(v) ; write('Zadaj polumjer baze: '); readln(r) ; stozac(o,ob,r,v) ; writeln('Oplošje stošca je ',0:4:2, ' obujam stošca je ',ob:4:2); readln end.
Funkcije Funkcije su potprogrami koji daju jedan izlazni rezultat a taj je sadržan u imenu funkcije. U zaglavlju je potrebno navesti tip funkcije, a na kraju izlaznu vrijednost dodijeliti imenu funkcije. U Pascalu se može upotrijebiti niz standardnih funkcija. Primjer 2: Ispišite korijen iz prirodnog broja x.
program fup; var x:integer; y:real; begin write('Zadaj prirodni broj: '); readln(x) ; if x>l then begin y:=sqrt(x) ; writeln('Korijen iz ',x,' iznosi:' ,y:4:2); end else writeln('Zadani broj nije prirodan'); readln end.
U primjeru se koristi standardna funkcija sqrt. Poziv funkcije je: y:= sqrt(4), ako je učitani broj 4 koji se dodjeljuje varijabli x. Parametar na koji se funkcija odnosi je 4. Sqrt(4) vrijednost je koju funkcija "vraća u program". Ako među standardnim funkcijama ne postoji funkcija koja je potrebna za rješavanje nekog zadatka, moguće je napisati vlastitu funkciju koja se u programu upotrebljava na isti nač in kao i standardna funkcija. Funkcija se izvršava tek kada je pozvana u glavnom programu. Funkcija se u programu poziva svojim
212
12 Programiranje - Programski jezik PASCAL imenom. U trenutku poziva funkcije stvarni se parametri redom dodjeljuju formalnim parametrima i tek tada se funkcija izvršava s vrijednostima stvarnih parametara. Formalni parametri kojima se pri pozivu funkcije dodjeljuju vrijednosti stvarnih parametara nazivaju se vrijednosni parametri. Stvarni parametri mogu biti općenito konstante, varijable ili izrazi. Vrijednosti varijabli i izraza u trenutku poziva funkcije moraju biti poznate. Stvarni se parametri moraju s formalnim parametrima slagati po redoslijedu, tipu i broju. Ako je formalni parametar realan, tada stvarni parametar može biti realan ili cjelobrojan. Funkcija može biti pozvana u okviru nekog izraza, naredbe dodjele ili u naredbi za ispis.
Rekurzivni potprogrami Za potprograme koji pozivaju same sebe kažemo da su rekurzivni potprogrami. Potprogram koji pozivamo rekurzivno pozivamo s drugačijim izrazom, nego je navedeno u zaglavlju potprograma (npr. ako je u zaglavlju naveden parametar n, rekurzivni poziv može biti s parametrom n-1). Obvezno moramo definirati kriterij koji će odrediti kada će potprogram prestati pozivati samog sebe (početni uVjet).
Primjer 3:
Napišite rekurzivnu funkciju za računanje broja parnih brojeva prvih n prirodnih brojeva. Objašnjenje: Ako je broj =5, onda se treba prebrojati koliko ima parnih brojeva i zmeđu 1,2,3,4,5. Ima ih 2, a to su brojevi 2 i 4. program rp1; var n,m:integer; function broj (n : integer) :integer; begin if (n=1) or (n=O) then broj:=O else broj:=broj(n-2)+1; end; begin write ('broj=') ; readln(n) ; if n mod 2 =0 then m:=n else m:=n- 1; writeln( 'Broj parnih brojeva brojeva iznosi:' ,broj (m» readln; end.
prvih
',n, 'ucitanih
prirodnih
213
Informatika i računalstvo - zbirka zadataka Primjer 4: Napišite rekurzivni funkciju čiji će ulazni parametar biti prirodni broj n . Funkcija treba izračunati n-ti element Fibonaccijevog niza. Objašnjenje: Fibonaccijev niz je niz a l = 1, a 2 = 1, ... , an = a 17 _ 2 + an_I program rp2; var n:integer; function fib(n:integer) :integer; begin if(n=l) or (n=2) then fib:=l else fib:=frb(n-l)+fib(n-2) ; end; begin write('Unesi prirodan broj: '); readln(n) ; writeln(n,' -ti Fibonaccijev broj je ',fib(n»; readln; end.
12.4.7 Složeni tipovi podataka Složeni su tipovi podataka: skup (set), niz (array), zapis (record) i datoteke (file) .
Niz Ponekad u programu trebamo pamtiti veći broj podataka istog tipa. Umjesto da za svaki podatak uvodimo posebnu varijablu, možemo zadati jednu varijablu sastavljenu od potrebnog broja komponenata. Niz (AR RAY) složeni je tip podataka sastavljen od komponenata istog tipa. Tip komponente može biti bilo koji jednostavni ili složeni tip, osim FILE . Ime komponente niza sastoji se od imena niza i indeksa koji se navodi unutar uglatih zagrada (npr. x[1]). Svaka komponenta može se shvatiti kao zasebna varijabla. Komponente se međusobno razlikuju po indeksu. Svi indeksi moraju biti istog tipa. Indeksi su ordinalnog tipa (zna se prethodnik i sljedbenik, što znači da ne može biti tipa real). Niz može biti jednodimenzionalni , dvodimenzionalni ili višedimenzionalni.
214
12 Programiranje - Programski jezik PASCAL Jednodimenzionalni niz Jednodimenzionalni niz uređen je ograničen skup varijabli istog tipa kod kojega je svaka komponenta određena samo jednim indeksom. Indeks određuje mjesto komponente u nizu. 1-2.3
x[3]
x[2]
x[1 ]
x[4]
I···
. . ... . ....
1-3.1
x[n]
Svi elementi niza istog su tipa, a prepoznaju se po indeksu, koji određuje mjesto svakog pojedinog elementa u nizu. Indeks niza pišemo unutar uglatih zagrada [] i mora biti pozitivni cijeli broj odnosno cjelobrojna konstanta, varijabla ili izraz. Na primjer: x[2]:= -2.3 gdje je: x - ime, identifikator polja (niza, vektora) 2 - indeks elementa u polju (u primjeru se radi o drugom elementu polja) -2.3 - vrijednost tog elementa polja Opći
oblik deklaracije varijable jednodimenzionalnog niza: var niz: array[tip _indeksa] of tip _komponenti_niza;
ili posredno,
pomoću
definicije tipa:
type detniza
= array[tip_indeksa] of tip_komponenti_niza;
var niz :detniza;
Primjeri:
type red= array[l .. BO] of char; vektor= array[l .. B] of real; dani= (ponedjeljak,utorak,srijeda,cetvrtak,petak,subota,nedjelja) var red; a xl,yl vektor; sati array[dani] of real; Neka je:
const max=3; type niz=array[l .. max] of integer; var a,b: niz; i: 1. .max;
215
Informatika i računalstvo - zbirka zadataka Primjer 1:
Napišite program koji će učitati jednodimenzionalni niz od najviše 100 brojeva, ispisati ga te ispisati zbroj i umnožak svih njegovih brojeva. var a:array[1 .. 100]of real; i,n:integer; s,p:real; begin repeat write('Koliko niz ima brojeva: '); readln(n) ; until (n>O) and (n<=100); s:=0;p:=1; for i:=1 to n do begin write('Zadaj brojeve niza: '); readln(a[i]) ; s:=s+a[i] ; p:=p*a[i]; end; writeln('Ispis brojeva niza: '); for i:=1 to n do writeln(a[i] :10:2); writeln('Zbroj brojeva niza iznosi:' ,s:10:2,',a umnožak brojeva niza' ,p:10:2); readln; end.
Dvodimenzionalni niz Dvodimenzionalno niz (matricu) možemo si predočiti kao tablicu brojeva. Pri tome razlikujemo redove i stupce. Svaki element matrice nalazi se na presjeku određenog reda i stupca. Na primjer:
1. stupac
1. red 2.red
216
--. --.
•
a[1,1] a[2,1]
2. stupac
a[1,2] a[2,2]
•
3. stupac
•
a[1,3] a[2,3]
4. stupaca
•
a[1 A] a[2A]
12 Programiranje - Programski jezik PASCAL Neka su elementi matrice a:
Tadaj~
a[1,1]=2
7
I~
I~
a[2,2]=8
Deklaracija dvodimenzionalnih polja analogna je jednodimenzionalnim. type matrica = array[1 .. m, 1..n] of integer; var a: matrica; Komponentu varijable a koja se nalazi u i-tom retku i j-tom stupcu, označavamo a{i,j}. Za varijablu a rezervira se prostor u memoriji dovoljan za smještanje svih komponenata. Primjer 2: Napišite program koji će učitati kvadratnu matricu tipa (n,n) (n < = 1O), ispisati je u obliku tablice te naći i ispisati zbroj brojeva drugog reda. var a:array[1 .. 10,1 .. 10]of real; i,j,n:integer; s:real; begin repeat write('Red matrice: '); readln(n) ; until (n>l) and (n<=10); for i:=l to n do for j:=l to n do begin write('a[' ,i,' ,',j,']='); readln (a [i, j] ) ; end; for i:=l to n do begin for j:=l to n do write(a[i,j] :10:2); writeln; end; s:=O; for j:=l to n do s:=s+a[2,j] ; writeln('Zbroj brojeva drugog reda:' ,s:10:2); readln; end.
217
Informatika i računalstvo - zbirka zadataka String U programskom jeziku Pascal definiran je tip string kao pakirani niz znakova. Najveća (statička) duljina stringa je 255 znakova. Najveću duljinu stringa možemo ograničiti tako da u uglatim zagradama dodamo ovu najveću duljinu :
var s: string; a: string[l6]; b: string[l]; Na tipu string mogu se upotrebljavati operatori pridruživanja i relacijski operatori ( = < , > , < =, > =, < ». Parametri procedura write, write/n, read i read/n mogu biti string.
! Treba paziti da se varijable znakovnog tipa i stringovi ne miješaju jer to u Pascalu nije dopušteno. Konstanta znakovnog tipa može se shvatiti kao string[1}. Komponenta stringa znakovnog je tipa. Ako se kod deklaracije varijable tipa string ne navede nikakav broj, deklaracijskoj varijabli može biti dodijeljen bilo koji niz znakova duljine od O do 255. String varijabli a može biti dodijeljen bilo koji niz znakova duljine od O do 16, string varijabli b može biti dodijeljen bilo koji niz znakova duljine od O do 1, dok string varijabli s može biti dodijeljen bilo koji niz znakova od O do 255, tj. najduži, budući da kod deklaracije nije ništa navedeno. Primjer 3: var
a:string[8]; U programu je izvršena naredba dodjele:
a : = 'Jelena'; Prikaz u memoriji :
le
ln
la
Prvi bajt označava važeći dio stringa, duljina važećeg dijela stringa. Ostatak se zanemaruje. Budući da je string niz znakova, pojedini znak neke string vrijable može se dobiti analogno kao i komponente niza, navođenjem imena varijabli, unutar uglatih zagrada indeksa. Npr.: a[l]=J, a[5]=n Varijable tipa string ispisuju se naredbom write ili write/n, dok se read/n. Za rad sa stringovima definirane su : a) funkcije: upcase, concat, copy, length, pos b) procedure: delete, insert, str, val
218
učitavaju
samo naredbom
12 Programiranje - Programski jezik PASCAL Funkcije definirane za rad sa stringovima Pri pozivu funkcija vraća samo jednu vrijednost u program. Može se pozvati u sklopu izraza, naredbe dodjele ili naredbe za ispis. Funkcija /ength(s) function length(s:string):integer; Daje broj znakova varijable s. Ako je, npr.: s:='Jurica' , tada je /ength(s) =6. Funkcija ucase(s) function upcase(s:char) :char; Prevodi malo slovo u veliko, a na ostale znakove ne
utječe .
Primjer 4: U petlji treba proći od prvog do posljednjeg znaka varijable i svaki znak (ako je to malo slovo) zamijeniti velikim. for i:= 1 to length(s) do s [iJ := upcase (s [iJ) ;
Funkcija concatO function concat(s1 ,.. ,sn:string):string; Spaja stringove s1, .. ,sn u jedan string. Spajanje nizova naziva se nadovezivanje (konkatenacija) nizova. Neka je sl : =' Jelena' ; s2 :=' i ' ; s3 :=' Jurica' ;
Naredba s:=concat(sl,'
',s2,'
',s3); writeln(s);
na izlazu daje Jelena i Jurica.
To isto može se dobiti upotrebom znaka
+, tj . naredba s:=s1 +s2+s3 dat će isti rezultat.
Funckija pos(s1 ,s) function pos(s1 ,s:string): integer; Daje mjesto (indeks prvog znaka) prve pojave podstringas1 unutar stringas, a ako s1 nije sadržan u s, daje o.
219
Informatika i računalstvo - zbirka zadataka Nekaje s:='Matematika'; sl:='at'; Naredba write1n (pos (sl, s), pos (' ka' ,s) : 3) ; Izlaz: 2 9
Funkcija copy(s,m,n) function copy(s:string;m,n:integer):string; Daje podstring duljine n iz stringa s počevš i od m-tog znaka. Neka je sl: =' Informatika' ; Naredba s: = copy (sl, 8,3) ; Izlaz: tik
Procedure definirane za rad sa stringovima Procedura delete(s,m,n) procedure delete(VAR s:string; m,n:integer); Briše u stringu s podstring koji počinje od pozicije m, a ima duljinu n. Na primjer: Nakon naredbi: s:= 'Marko'; m:=3; n:=2; delete (s ,m, n) ; vrijednost varijable s je 'Mao'.
Procedura insert(s1 ,s,m) procedure insert(s1 :string; VAR s:string; m:integer); Dodaje string s1 u string s
počevši
od pozicije m.
Na primjer: Nakon naredbi:
s:='pro jezici'; sl:='gramski' ; m:=4; insert(sl,s,m) ; vrijednost varijable s je 'programski jezici'.
220
12 Programiranje - Programski jezik PASCAL Procedura str(x,s) procedure str(x; VAR s:string); Pretvara realni ili cijeli broj x u string kojem možemo odred iti broj mjesta. 1 1~r;l(~
--
• • r.'
Str(200,s) Str(200:8,s) Str(3.5,s) Str(3.5:5:2,s)
.
. ...
- • .
'200' 200' '3.5000000000E + OO' , 3.50'
,
Procedura val(s,x,m) procedure va l(s:string; x; VAR m:integer) Pretvara niz znamenka u cijeli ili realni broj x, varijabla m daje mjesto neodgovarajućeg znaka.
Na primjer: Neka je s: =' 30' ; naredba val(s,x,m) ;writeln(x); izlaz 30
Zapis Zapis (RECORD) složeni je tip podataka koji se sastoji od više istovrsnih ili različitih tipova podataka koji čine jednu log i čku cjelinu .
type naziv_recorda= record komponenta1 :tip komponente1; komponenta2:tip komponente2; deklaracija komponentaN:tip komponenteN; end;
Primjeri: type kompleksni= record realni: real; imaginarni: real; end; var a,b: kompleksni; 221
Informatika i računalstva - zbirka zadataka
var ucenik: record ime: string[40]; uspjeh: integer; prosjek: real; end;
Članovima zapisa (rekorda) pristupa se direktno putem identifikatora "." (točka). Točka operator povezuje ime varijable tipa zapis s članovima, komponentama zapisa.
Sintaksa: ime_varijable_tipa_zapis.ime komponente
U primjeru s kompleksnim brojevima realnom dijelu varijable a pristupamo s a.realni , a imaginarnom s a.imaginarni. Primjer 5: Napišite program koji će izračunati sumu dvaju kompleksnih brojeva. Dobiveni kompleksni broj ispišite kao uređeni par (realni dio, imaginarni dio).
var a,b,c:record re:real; im:real; end; begin writeln('Zadaj prvi broj'); readln(a.re,a.im) ; writeln('Zadaj prvi broj'); readln(b.re,b.im) ; c.re:=a.re+b.re; c.im : =a.im+b.im; wri teln ( , ( , , c . re : 6 : 2, , , , , c . im: 6 : 2, , ) , ) ; end. Primjer 6: Napišite program koji će od zadanih opravdanih i neopravdanih izostanaka za svakog učenika izračunati njegove ukupne izostanke, kao i koliko sati u prosjeku je izostao svaki učenik tog razreda. Također treba ispisati imena učenika s najviše izostanaka.
222
12 Programiranje - Programski jezik PASCAL Ovo je primjer kako se koristi niz čiji elementi su tipa zapis. var
i,max,n:integer; r: array[l .. 45] of record ime:string[15] ; o,n,u:word; end; pro:real; begin repeat writeln('Koliko ucenika'); readln(n) ; until (n>O); for i:=l to n do begin wri te ( , Ime: ' ) ; readln(r[i] . ime) ; repeat wri te ( , Opravdani: '); readln(r[i] . 0); until rei] .0>=0; repeat write('Neopravdadni: '); readln(r[i] .n) ; until r[i] .n>=O; r[i].u :=r[i] .o+r[i] .n; pro :=pro+r[i] . u; if max
U Pascalu naredba with omogućuje kraće zapisivanje komponenti zapisa. U naredbi with navedu se varijable tipa record te unutar područja naredbe with komponente zapisa označavamo samo njihovim imenom.
223
Informatika i računalstvo - zbirka zadataka Primjer upotrebe naredbe with za varijablu a deklariranu var a:record realni: real; imaginarni: real; end; HmI:r'~
'~~Il::I'
with a do begin
!lENfIlW
a. realni: =-5.5; a. imaginarni:=3.2;
realni: =-5.5; imaginarni: =3.2; end;
Skup - set Programski jezik Pascal raspolaže i složenim tipom podataka set (odnosno skup), koji predstavlja partitivni skup nekog baznog tipa (boolean, chat, integer, pobrojani, intervalni). Na primjer: type slovo= set of 'A' . . 'Z'; oktalni= set of 0 .. 7; Skup zadajemo tako da u uglatim zagradama navedu elementi skupa koji naravno po tipu moraju odgovarati baznom tipu skupa. [ ] je prazni skup Na primjer: Ako imamo varijablu o tipa oktalni broj, možemo joj pridružiti neko od sljedećih skupova: [], [O], [5], [0,1,2,3] Na tipu podataka set definirani su
.. - ..
IN
+ * = <> <= >=
224
sljedeći
operatori:
.- provjerava je li element skupa unija skupova presjek skupova razlika skupova jednakost skupova različitost skupova podskup nadskup
. . O in [0,1,3] A+B A*B A-B A=B A <>B A<=B A>=B
12 Programiranje - Programski jezik PASCAL Datoteka Ako u programu želimo koristiti datoteke, potrebno je deklarirati datotečnu varijablu: type datoteka = file of T; var d:datoteka
T je tip podataka koje datoteka sadrži, a može biti bilo koji tip, osim tipa file. Često se koriste tekstualne datoteke koje se deklariraju na sljedeći način: var t:text; Naredbe potrebne za rad s datotekama: datotečnoj varijabli f pridružuje datoteku ime otvara postojeću datoteku za čitanje kreira i otvara datoteku za pisanje zatvara datoteku daje duljinu datoteke daje trenutačni položaj u datoteci briše datoteku mijenja staro ime datoteke u zadano briše sve iza trenutačnog položaja u datoteci čitanje iz datoteke pisanje u datoteku ima vrijednost true ako je kraj datoteke
assign(f,ime) reset(f) rewrite(f) close (f) filesize(f) filepos(f) erase(f) rename(f, ime) truncate(f) read (f,var1,var2, ... ) write(f,var1,var2, ... ) eof(f)
Naredbe samo za tekstualne datoteke readln(f,var1 ,var2, ... ); wfiteln(f,varl ,var2,... ); eoln(f) - ima vrijednost true ako je kraj reda
Primjer 7: Napišite program koji će učitavati brojeve i spremati ih u datoteku brojevi.dat sve dok se ne upiše broj nula.
var d:file of integer; n,s,x:integer; begin assign (d,'brojevi.dat'); rewrite(d) ; writeln('Zadaj brojeve' ); repeat readln(x) ; if x <> O then write(d,x); until x O; close (d); end.
=
225
Informatika i računalstvo - zbirka zadataka 12.4.8 Pokazivači Svaka varijabla smještena je u memoriji računala na određenoj adresi. Adresa i veličina memorijskog bloka kod statičkih varijabli ne može se mijenjati tijekom izvođenja programa. Za razliku od njih dinamičke varijable stvaraju se po potrebi za vrijeme izvođenja programa. Vrijednost dinamičke varijable moguće je dobiti preko adrese memorijske lokacije koju sadrži pridružena pokazivač ka varijabla. Definicija tipa: type pokazivac =
A
Tip;
Tip pokazivac je skup vrijednosti koje pokazuju varijable tipa T. U početku tip pokazivac uvijek sad rži vrijednost NILL koja ne pokazuje ni na jednu dinamičku varijablu. Deklaracija varijable tipa
pokazivač:
var p:pokazivac; Ovom naredbom određuje se memorijska lokacija samo za p, pri čemu treba imati na umu da vrijednost varijable p u početku nije definirana. Procedurom new(p) stvara se dinamička varijabla p tipa T. Unarni operator @ daje adresu varijable. Procedurom dispose(p) možemo osloboditi memorijski prostor koji zauzima neka nepotrebna varijabla. U Turbo Pascalu za brisanje se koriste i procedure mark i release. A
Primjer 1: var a,b:integer; p: "integer; begin a:=520; p:=@a; b:=p"; writeln (b) ; end.
Naredbom p=@a varijabli p dodjeljuje se adresa na kojoj je zapisana vrijednost varijable a, a naredbom b=p A , varijabli b dodjeljuje se sadržaj memorijske lokacije s adrese na koju pokazuje pokazivač p, dakle b poprima vrijednost 520. Pokazivači se najčešće koriste za stvaranje dinamičke vezane liste podataka kod koje je svaki član liste rekord, zapis kojem je jedna (a može i više) komponenta pokazivač na nekog člana liste.
226
12 Programiranje - Programski jezik PASCAL 12.4.9 Vanjski potprogrami Jedan ili više potprograma možemo pohraniti u posebnu datoteku na disku. Te vanjske potprograme uključujemo u program u procesu prevođenja naredbom : (*$1 ime_datoteke *) pri čemu je ime_datoteke - ime pod kojim smo potprograme pohranili na disk. Potprograme u danom programu pozivamo kao da su napisani u bloku programa. Primjer 1. U datoteku dje/_van.pas pohranite function potprogram koji će odrediti koliko dani prirodni broj ima djelitelja te proceduru koja će ispisivati djeliteije danog prirodnog broja.
function b (n:word) :word; var br,i:word; begin br:=O; for i:=l to n do if n mod i = O then br:=br+l; b:=br; end; procedure d(n:word); var i:word; begin writeln ('Djelitelji broja ',n,' su: for i:=l to n do if n mod i = O then write(i:l0); end;
');
12.4.10 Unit Standardne funkcije i procedure u Turbo Pascalu smještene su u jedinice SYSTEM , CRT, GRAPH , GRAPH3, DOS, PRINTER, TURB03, OVERLAY i ukoliko ih želimo koristiti potrebno ih je uključiti naredbom: uses imejedinice;
227
Informatika i računalstvo - zbirka zadataka Možemo i sami kreirati vlastitu jedinicu , prevesti je tako da se na disku dobije datoteka s nastavkom .tpu. Tako kreiranu jedinicu možemo uključivati u svoje programe kao i sve ostale jedinice. Svaka jedinica (unit) sastoji se od četiri dijela: • zaglavlj e - UNIT ime; • dio koji sadrži objekte dostupne u programu - INTERFACE • unutarnji objekat - IMPLEMENTATION • dio koji sadrži naredbe za inicijalizaciju - počinje s BEGIN i završava s END. Primjer 1: Broj djelitelja i djelitelji danog broja N upotrebom unita.
unit djel; INTERFACE function b (n:word) :word; procedure d(n:word) ; procedure pf(n:word) ; IMPLEMENTATION function b (n:word) :word; var br,i:word; begin br:=O; for i:=l to n do if n mod i = O then br:=br+l; b:=br; end; procedure d(n:word); var i:word; begin writeln ('Djelitelji broja ',n,' su: for i:=l to n do if n mod i = O then write(i:l0); end; BEGIN END.
Program koji koristi prethodni unit: uses djel; var n:integer; begin repeat readln(n) until n>O; writeln('Broj djelitelja:' ,b(n) :5); writeln; writeln(d(n» ; writeln; end.
228
');
12 Programiranje - Programski jezik PASCAL ZADACI 12.87. Zadane su
sljedeće
definicije tipova i deklaracije varijabli:
type dani=(ponedjeljak,utorak,srijeda,cetvrtak,petak,subota, nedjelja) ; ocjene= 1 .. 5; var dan : dani; broj : ocjena;
Koje od dolje navedenih naredbi nisu ispravne; a) dan: = veljaca; b) dan: = 'utorak'; c) dan : = utorak; d) read(utorak); e) write(utorak); f) broj := -2; g) broj: = 30 div 6; 12.88.
I zračunajte
vrijednost izraza: a) ponedjeljak > srijeda; b) ord(srijeda); c) succ(petak) ; d) pred(petak);
12.89. Definirajte intervalni tip za: a) negativne cijele brojeve; b) cijele brojeve veće ili jednake 100 i manje ili jednake 200; c) prirodne brojeve veće ili jednake 200.
229
Informatika i računalstvo - zbirka zadataka 12.4.3 Operatori i izrazi 12.90. Zap išite u prog ramskim jezici ma Pascal
s lj ed eće
algebarske izraze:
-Ja - b
a) j = - -
3a la - bl
b)j = - -
ab
a +l b b-l
c) j = -2-
d) j = -
3a
b
e) j
= j +3- -
f) j
= ,) b 2 - 4ac
c
b a +c g) j = 3d
smx
h) j = -
x
smx - cosx smx
i) j = - .-12.91 . S lj edeće izraze napisane u programskom jeziku Pascal zapišite m ate m ati čki : a) f: =sqrt(abs(x-y)); b) f: =sqrt(sqr(x) +sqr(y)); c) f:=a/b +c/d; d) f:=sin(2* x); e) f :=sqr(x-y); 12.92. Koju će vrij ednost poprimiti varijabl a x u izrazu x = (4*(3-2)-2)/2? a) x = 1;
• b) x = 4; c) x = 6; 12.93. Koju će vrij ednost imati varijabla b nako n što se izraz b: = abs(-18)/sqrt(81) izvrši u Pascalu? 230
12 Programiranje - Programski jezik PASCAL 12.94. Koju Pascalu?
će
vrijednost imati varijabla f nakon što se izraz f: = sqrt(sqr(3)+sqr(-4» izvrši u
12.95. Koju će vrijednost imati varijabla k nakon što se izraz k: = (sqrt(25) +sqr(-3» mod 5 izvrši u Pascalu? 12.96. Koju će vrijednost imati varijabla m nakon što se izraz m:= 13 mod 5+ 13 div 5 izvrši u Pascalu?
12.4.4 Ulaz i izlaz 12.97. Pretpostavimo da imamo
sljedeći
program:
var a b
integer; real;
c,d: char;
Vrijednosti varijabli su: a = -23, b = 3.5, c='M', d = 'J'. Što će se ispisati naredbom write (a,b: 7: 2, e: 4 ,d: 4) ; ?
12.98. Koje vrijednosti
će
imati varijabie a i b nakon
učitavanja
uiaznih podataka?
var a,b: integer; read(a,b);
Ulazni podaci su: 266 12.99. Koje vrijednosti
će
imati varijable a, b i e nakon
učitavanja
ulaznih podataka?
var a,b,c : integer; readln(a,b) ; read(c,d) ;
Ulazni podaci: 2661956 2710
231
Informatika i
računalstvo
- zbirka zadataka
12.100. Koje vrijednosti će biti pridružene varijablama a, b, C , d za zadani ulaz nakon slj edećeg programskog od sječka? Što će program ispisati?
begin var a,b: integer; e: ehar; d: real; readln(b,e,d,a) ; writeln( 'a=' ,a, 'b=' ,b, 'e=' ,e, 'd=' ,d); end. Ulaz: 567, 23, d, 34.5, 12.101 . Napišite prog ram koji će ga pretvoriti uradijane.
u čitati
kut u stupnjevima, minutama i sekundama, a zatim
12.102. U čitajte dva kompleksna broja i ispišite njihovu razliku i umnožak.
12.4.5 Kontrola toka programa Jednostruko uvjetno grananje 12.103. Zadajte pri rod ni broj. Ispišite je li zadani broj parni ili neparni . 12.104. Zadajte pri rod ni broj. Ispišite je li zadani broj djeljiv sa 2, 3 ili 5.
Višestruko uvjetno grananje Naredba IF ... THEN ... ELSE
12.105. Napišite program koji će za zadane stranice trokuta Heronove formul e u programskom jeziku Pascal.
232
i z rač un ati
površinu uz
po m oć
12 Programiranje - Programski jezik PASCAL 12.106. Napišite program koji će za zadani broj
x izračunati vrijednost funkcije:
3X+5,X < 2
f(x)
2 x 2 + 3 x- 5, 2 ~ x ~ 12
=
{
x-10,x>12
12.107. Napišite program za rješavanje kvadratne jednadžbe.
Naredba CASE
12.108. Napišite program koji će pretvoriti stupnjeve u radijane i obratno, ovisno o izabranom selektoru. 12.109. NapiŠite program koji će unositi postotak riješenosti pismenog testa i ispisivati odgovarajuću .111 [:! Ir.
od ličan
vrlo dobar dobar dovoljan I neaovolJan
ocjenu: 1·!iBJ~III:1-"1:!II.}'"1U
100 - 90 89 - 74 73 - 60 59 - 41 .- - O 14u
12.110. NapiŠite program koji će ovisno o selektoru izračunati
+, -, *, / za dva kompleksna broja.
Programske petlje
Programska petlja FOR 12.111 . NapiŠite program koji će učitati n brojeva i ispisati najveći od njih. 12.112. Napišite program koji vrši računanje faktorijela za učitani prirodni broj manji od 12.
233
Informatika i računalstvo - zbirka zadataka 12.113. Zašto je u prijašnjem zadatku broj na ulazu ograničen na manji od 12? 12.114. Napišite program koji će izračunati i ispisati umnožak parnih prirodnih brojeva do učitanog
broja n.
12.115. Zadane su za n učenika ocjene iz matematike, hrvatskog jezika i informatike. Izračunajte prosjek iz matematike. Koliko učenika ima 5 iz hrvatskog jezika, a koliko ima manje od 4 iz informatike.
Programska petlja WHILE 12.116. Napišite program koji će ispisati najveći od n učitanih brojeva 12.117. Napišite program koji će izračunati zbroj pozitivnih brojeva. 12.118. Napišite program koji će ispisati koliko ima brojeva djeljivih sa 13 na odsječku
[100,500].
Programska petlja REPEAT ... UNTIL 12.119. Napišite program koji koliko neparnih.
će
za zadanih n cijelih brojeva ispisati koliko je parnih, a
12.120. Napišite program koji će ispisati koliko ima brojeva djeljivih sa 7 na odsječku
[200,500]. 12.121. Zadano je n brojeva. Ispišite: a) prosjek svih zadanih brojeva,
b) c) d) e)
234
koliko ima negativnih i neparnih brojeva, umnožak neparnih brojeva, koliko je brojeva u intervalu <-2,7> djeljivo s 3, koliko ima pozitivnih brojeva.
12 Programiranje - Programski jezik PASCAL 12.4.6 Potprogrami
Vrste potprograma Procedure i funkcije
12.122. Napišite program koji će pomoću procedure ispisati zbroj brojeva djeljivih sa 13 sa U glavnom programu treba obaviti samo ulazno-izlazne operacije, a ostalo upotprogramu.
odsječka[200,400].
12.123. Napišite program koji će pomoću funkcije izračunavati tangens kuta zadanog u stupnjevima, minutama i sekundama. 12.124. Napišite program koji će pomoću funkcije za zadanu stranicu i dijagonalu pravokutnika izračunati drugu stranicu , opseg i površinu. U glavnom programu treba obaviti samo ulazno-izlazne operacije, a ostalo upotprogramu. 12.125. Napišite program koji će pomoću funkcije za zadana dva kompleksna broja ispisati njihov zbroj i umnožak. U glavnom programu treba obaviti samo ulazno-izlazne operacije, a ostalo upotprogramu. 12.126. Napišite program koji će pomoću funkcije izračunati i ispisati imaginarni dio umnoška dva kompieksna broja. U giavnom programu treba obaviti samo ulazno-izlazne operacije, a ostalo u potprogram u 12.127. Napišite program koji će pomoću procedure ispisati zbroj i umnožak znamenki učitanog prirodnog broja. U glavnom programu treba obaviti samo ulazno-izlazne operacije, a ostalo upotprogramu. 12.128. Napišite program pomoću procedure čiji će ulazni parametri biti vrijeme u sekundama. Procedura treba uneseno vrijeme pretvoriti u sate, minute i sekunde.
Rekurzivni potprogrami 12.129. Napišite rekurzivnu funkciju koja će računati umnožak prvih n neparnih prirodnih brojeva.
235
Informatika i računalstvo - zbirka zadataka 12.130. Napišite program pomoću funkcijskog potprograma koji će za zadani x izračunati vrijednost rekurzivno zadane funkcije (rekurzivna funkcija je ona kod koje se nova vrijednost definira na osnovu neke prethodne) . Ako je x > 12, onda je f(x) = f(x-5) +4, ako je x> 1 i x< = 12, onda je f(x) = f(x-3) +4, a ako je x< =1, onda je f(x) = -1. a) Koliku vrijednost će poprimiti funkcija za početni ulazni parametar 15? b) Koliko se puta funkcija poziva uz vrijednost iz točke a)?
12.4.7 Složeni tipovi podataka
Niz Jednodimenzionalni niz
12.131. Napišite program koji će učitati jednodimenzionalni niz od najviše 100 brojeva, ispisati ga te ispisati aritmetičku sredinu njegovih brojeva. 12.132. Napišite program koji će učitati jednodimenzionalni niz od n brojeva, ispisati ga te ispisati najmanji broj niza. 12.133. Napišite program koji prema manjem.
će učitati
niz brojeva, sortirati ga i ispisati sortiranog od
većeg
12.134. Napišite program koji će učitati jednodimenzionalni niz od n brojeva, ispisati broj nula, zbroj pozitivnih i broj negativnih brojeva niza. 12.135. Napišite program koji će učitati jednodimenzionalni niz od n brojeva, te ispisati broj parnih brojeva niza i broj neparnih brojeva niza. 12.136. Napišite program koji će učitati uspjeh n učenika, izračunati i ispisati prosječan uspjeh, te broj odličnih, vrlo dobrih, dobrih, dovoljnih i nedovoljnih učenika.
236
12 Programiranje - Programski jezik PASCAL Dvodimenzionalni niz
12.137. Napišite program koji će učitati matricu tipa (n,m)(n,m<=10), ispisati je u obliku tablice te naći umnožak brojeva trećeg stupca. 12.138. Napišite program koji će učitati matricu reda n, ispisati je u obliku tablice te naći koliko je brojeva matrice veće od prosjeka. 12.139. NapiŠite program koji će učitati matricu tipa (n,n), ispisati je u obliku tablice te ispisati najveći broj matrice. 12.140. Napišite program koji će učitati kvadratnu matricu tipa (n,n) i realni broj x te umnožak matrice i broja x. Dobivenu matricu ispiŠite.
naći
12.141. NapiŠite program koji će učitati matricu reda n(n< = 10), ispisati ju u obliku tablice i ispisati umnožak brojeva sporedne dijagonale. 12.142. Napišite program koji će učitati dvije matrice reda n(n<=10) te naći njihov zbroj, razliku i produkt.
String 12.143. NapiŠite program koji će za učitani string ispisati njegovu duljinu. 12.144. NapiŠite program koji će učitanu rečenicu ispisati s desna na lijevo. 12.145. Napišite program koji slova B.
će
prebrojiti koliko puta se u
učitanom
stringu pojavilo
12.146. NapiŠite program koji će ispisati ima li u učitanom stringu više slova A ili slova B. 12.147. Napišite program koji će provjeriti je li učitani string palindrom. 12.148. Napišite program koji će sve riječi u uČitanoj rečenici ispisati jednu ispod druge. 12.149. Napišite program koji će učitani string ispisati u obliku slijedećeg trokuta. (Npr. string JECA) a) J b) A JE CA JEC ECA JECA JECA
237
Informatika i računalstvo - zbirka zadataka Zapis 12.150. Napišite deklaraciju za zapis koji će sadržavati podatke o imenu, prezimenu, ocjenama iz hrvatskog jezika, matematike te prosjek ocjena jednog učenika . 12.151. Napišite deklaraciju za zapis koja će sadržavati ime i prezime te godinu rođenja za neku osobu. 12.152. Napišite program koji će izračunati udaljenost dviju točaka u koordinatnoj ravnini. 12.153. Napišite program koji će izračunati razliku dva kompleksna broja. Dobiveni kompleksni broj ispišite kao uređeni par (realni dio, imaginarni dio). 12.154. Napišite program koji će izračunati umnožak dva kompleksna broja. Dobiveni kompleksni broj ispišite kao uređeni par (realni dio, imaginarni dio). 12.155. Napišite program koji će za n učenika nekog razreda, iz zadanih podataka: ime, ocjena iz matematike, fizike i informatike, izračunati prosjek iz matematike, koliko učenika ima ocjenu dobar iz fizike. Program, također, treba ispisati najbolje učenike iz informatike.
Skup - set 12.156. NapiŠite program koji će simulirati rad kalkulatora sa 4 računske operacije (+, *, -, 1). 12.157. NapiŠite program koji će za zadani string ispisati koliko se različitih znakova nalazi u njemu. 12.158. Ispišite sve proste brojeve do učitanog prirodnog broja N, NQ50.
Datoteka 12.159. Napišite program koji će čitati brojeve iz datoteku brojevi.dat te izračunati njihovu sumu . 12.160. Datoteka racun.dat sadrži sljedeće podatke: naziv proizvoda (do 25 znakova, količinu i cijenu). NapiŠite program koji će čitati podatke iz datoteke racun.dat ispisati ih u obliku tablice, za svaki proizvod izračunati ukupnu vrijednost (količina * cijena) te ispisati koji je proizvod najskuplji i kojeg ima najviše.
238
12 Programiranje - Programski jezik PASCAL 12.161. Napišite program koji će u datoteku upisati sljedeće podatke o učenicima: ime,
prezime, broj opravdanih, broj neopravdanih izostanaka. Za svakog učenika treba izračunati ukupan broj izostanaka i sve podatke zapisati u datoteku. Zatim treba podatke pročitati iz datoteke, pregledno ih ispisati te pojedinačni ukupni broj izostali h sati.
pronaći najveći
12.162. Napišite program koji će sadržaj tekstualne datoteke tekst.dat ispisati tako da će sve znakove: zamijeniti znakom ;, a sve znakove; zamijeniti znakom:
12.4.8 Pokazivači 12.163. Napišite program koji će zamijeniti vrijednosti dviju prirodnih varijabli. Zadatak riješi koristeći
varijable tipa
pokazivač.
12.164. Napišite program koji će za učitani niz od N brojeva provjeriti je li uzlazno sortiran.
Zadatak riješite
koristeći
varijable tipa
pokazivač.
12.4.9 Vanjski potprogrami 12.165. Napišite program koji će uključiti vanjske potprogame iz datoteke dje/Jan.pas te za učitani prirodni broj ispisati koliko ima i koji su mu djelitelji. 12.166. Napišite program koji će za dva učitana broja izračunati i ispisati njihov zbroj,
razliku, kvocijent i umnožak te modul svakog od učitanih brojeva. Potprogrami neka budu u posebnoj datoteci.
12.4.10 Unit 12.167. Napravite jedinicu (unit) koja će sadržavati potprograme kojima će se za dani
prirodni broj moći odrediti broj znamenki, suma i umnožak znamenki te odrediti najveću i najmanju znamenku u danom broju. Potrebno je napisati i program koji će koristiti tu jedinicu. 239
Informatika i računalstvo - zbirka zadataka
12.5 Programski jezik e UVOD 12.5.2 Tipovi podataka Programski jezik
e ima pet osnovnih tipova podataka: : ~I"'" . .
znakovni
char
. ..
~
8
0-255
~
cjelobrojni
int
16
-32768 - 32767
realni
float
32
3.4E-38 - 3.4E+38
double
64
1.7E-308 - 1.7E+308
O
bez vrijednosti
realni dvostruke preciznosti tip podataka koji ne sadrži vrijednosti
void
Promjenu opsega pojedinog osnovnog tipa moguće je ostvariti pomoću modifikatora: signed, unsigned, long, short. Dopuštene su kombinacije:
l'iiI'Đ II I IF-Ilir. char unsigned char signed char int unsigned int signed int short int long int unsigned long int float double long double
1C!lmrm1 0-255 0-255 -128 -127 -32768 - 32767 0-65535 -32768 - 32767 -32768 - 32767 2147483648 - 2147483647 O - 4294967295 3.4E-38 - 3.4E+38 1.7E-308 - 1.7E+308 1.7E-308 - 1.7E+308
Deklaracija varijabli Sve varijable koje se koriste u programu potrebno je deklarirati, odnosno dati im ime (ili identifikator) i odrediti tip. To se obavlja naredbom oblika: tip podatka
lista_varijabli;
Lista varijabli sadrži jednu ili više varijabli navedenog tipa Ako lista varijabli sadrži više varijabli, navedene varijable potrebno je razdvojiti zarezom.
240
12 Programiranje - Programski jezik e Primjer:
int aa,b,ce; float x, y, z, B; char c; long int faktorijel;
e
Kako programski jezik razlikuje velika i mala slova, tako je dopušteno služiti se istim imenom varijable, samo pisano malim, odnosno velikim slovima za dvije različite varijable, ne nužno čak ni istog tipa.
e
U programskom jeziku deklaraciju varijable moguće je napraviti izvan svih funkcija, na početku pojedine funkcije, kao argumentfunkcije, ili pak na početku određenog bloka naredbi . Mjesto deklaracije određuje područje djelovanja određene varijable. Prema području djelovanja varijable mogu biti globalne ili lokalne: - Globalne varijable, one koje su dostupne kako za programa, deklariraju se izvan svih funkcija. -
čitanje ,
tako i za promjenu u bilo kojem dijelu
Lokalne varijable se deklariraju na početku neke funkcije, kao argument (parametar) funkcije ili na početku nekog bloka naredbi. Ove varijable vrijede samo unutar funkcije u kojoj su definirane odnosno unutar bloka naredbi na čijem početku su deklarirane. Izlaskom iz funkcije, odnosno danog bloka naredbi, lokalna varijabla više ne postoji. Dopušteno je služiti se istim imenom lokalnih varijabli u različi tim blokovima, odnosno u različitim funkcijama. Naravno, imena globalnih varijabli moraju biti različita. Dopušteno je isto ime za lokalnu i globalnu varijablu, no to je poželjno izbjegavati jer su moguće logičke pogreške. Ako u funkciji postoji istoimena lokalna i globalna varijabla, vidljiva je samo ona lokalna.
Konstante Vrijednost konstante ne mijenja se za vrijeme
izvođenja
programa.
Prema tipu podataka razlikujemo cjelobrojne, realne i znakovne konstante. Cjelobrojne su konstante cijeli brojevi iz dopuštenog opsega, odnosno sa segmenta [-32768, 32767], zapisani u standardnom obliku. Ako je riječ o cjelobrojnoj konstanti tipa long int, tada je potrebno na kraju konstante napisati oznaku I ili L. Analogno, ako se rad i o cjelobrojnoj konstanti tipa unsigned int, na kraju konstante piše se oznaka u ili U. Kad konstanta završava s ul, odnosno UL, to znači da je riječ o cjelobrojnoj konstanti tipa unsigned long int. Primjeri:
cjelobrojna konstanta tipa int
cjelobrojna konstanta tipa long int cjelobrojna konstanta tipa unsigned int
345 -57 65432101 -98712304L 40000u 50000U
cjelobrojna konstanta tipa unsigned long int
2222222222ul 3455433456UL 241
Informatika i računalstvo - zbirka zadataka Realne konstante sadrže realne brojeve sa ili bez predznaka zapisane u standardnom obliku tako da decimalna točka odvaja cjelobrojni od decimalnog dijela. Realne konstante smiju biti zapisane i u eksponencijalnom zapisu koji možemo podijeliti na tri dijela. Prvi dio realan je broj (sa ili bez predznaka), zatim slovo e (ili E) i iza cijeli broj (sa ili bez predznaka) koje predočava eksponent baze 10. Tako broj 0.02 možemo zapisati i u obliku 2.E-2. Ako je riječ o realnim konstantama tipa long double , onda one kao i cjelobrojne trebaju završavati s I ili L. Od numeričkih konstanti programski jezik C dopušta još i oktalne i heksadecimalne konstante. Oktalne konstante počinju s nulom, a heksadecimalne s Ox (nula x). Primjeri:
realna konstanta tipa floaf
987.654 -2.34567 2E-2 -5.3e5
realna konstanta tipa long double
-777777777.88881 987654321.0123L
oktalna konstanta
044 -037
heksadekadna konstanta
-Oxfc Ox789
Znakovne konstante pišu se unutar jednostrukih navodnika - literala, u pravilu se sastoje samo od jednog znaka. Vrijednost znakovne konstante odgovara numeričkoj vrijednosti koja odgovara ASCII kodu znaka koji se nalazi unutar jednostrukih navodnika. Tako je numerička vrijednost npr. znakovne konstante 'A' jednaka 65. Znakovne konstante mogu se pojavljivati u aritmetičkim izrazima i tada se upotrebljava isključivo njihova numerička vrijednost. U programskom jeziku C postoji još i konstanta niza znakova, ili tzv. string konstanta. Ona se sastoji od nula ili više znakova napisanih unutar navodnika. Ta konstanta zapisuje se u memoriji računala kao jednodimenzionalno polje znakova koje završava nul znakom odnosno s \0. Ovaj znak ima ASCII vrijednost nula. Za smještaj niza od n znakova potreban je stoga prostor od n+ 1 bajtova. Uvijek treba imati na umu da su 'A' i "A" dvije različite konstante. U prvom slučaju radi se o jednom bajtu ASCII vrijednosti 65 dok se u drugom slučaju radi o dva bajta, ASCII vrijednostima 65 i o.
lznimno znakovna konstanta može sadržavati dva znaka, no tada je prvi od njih obvezno znak \ (backslash ili obrnuta kosa crta). Te konstante su posebni znakovi koji uglavnom služe za nadzor ispisa.
242
12 Programiranje - Programski jezik
• .
.
.•
~ -
e
.- -
\b
8
pomak za jedno mjesto ulijevo (backspace)
\r
13
povratak na
\n
10
novi red (new line, line feed, LF)
\f
12
nova stranica (form feed)
\0
O
nul znak, završetak stringa
\v
11
vertikalni tabulator
\t
9
horizontalni tabulator
\"
34
znak navodnika
\'
39
znak literala
\\
92
znak backslash - obrnuta kosa crta
\?
63
znak '?'
\a
7
zvučni
početak
reda (carriage return, CR)
signal
\ 000
00° (8)
znak
čiji
ASCII kod je jednak oktalnom broju 000
\xhh
hh(16)
znak
č ij i
ASCII kod je jednak heksadekadnom broju hh
Specijalne znakove iz gornje tablice možemo koristiti i kada u znakovni niz želimo unijeti neki od tih znakova. Želimo li na primjer u znakovni niz upisati dva znaka navodnika i obrnutu kosu crtu, učinit ćemo to ovako: "\ "\ "\ \" .
Primjer znakovnih konstanti:
znakovna konstanta
konstanta niza znakova
'F' '5' '\n'
"\\" "programski jezik C"
243
Informatika i računalstva - zbirka zadataka Imena (identifikatore) varijabli i konstanti tvore se slično kao i u ostalim programskim jezicima. Ključne riječi koje ne smijete koristiti za imena varijabli i konstanti su: auto long char short default static
double switch extern unsigned goto while
int case return continue sizeof
struct enum union for volatile
break register const signed do
else typedef float void if
12.5.3 Operatori i izrazi Kombinacijom varijabli , konstanti i operatora nastaju izrazi . Osnovni elementi izraza su faktori. Faktor može biti: • • • • •
konstanta bez predznaka: 5.21,200; varijabla: i, s1; poziv funkcije: sqrt(x),abs(a); izraz u zagradama: (1 + a), (5 - 4*a) negacija faktora logičkog tipa: !(a
Izrazi su riječi ili simboli koji binarni i ternarni.
određuju
da se s varijablama u programu nešto
učini.
Mogu biti unarni,
Operator pridruživanja Operatorom pridruživanja varijabli s njegove lijeve strane pridružuje se vrijednost izraza koja se nalazi s njegove desne strane. Tip vrijednosti izraza treba odgovarati tipu varijable. Operator pridruživanja je: E3
+= -= *= /= %=
.
.. •
••~:u:.ll'H'
var1 operator= izraz znači
var1 = var1 operator izraz
Primjer:
a += 5; a *= 2;
244
je u programskom jeziku je u programskom jeziku
e kraći zapis za a e kraći zapis za a
a a
+ 5;
*
2;
12 Programiranje - Programski jezik Aritmetički
e
operatori
Simboli aritmetičkih operatora uglavnom odgovaraju standardnim matematičkim oznakama operacija:
aritmetičkih
.. .
.......
.
zbrajanje oduzimanje množenje dijeljenje cjelobrojno dijeljenje* ostatak pri cjelobrojnom dijeljenju
{il +
* / / %
* U programskom jeziku e koristi se ista oznaka za dijeljenje i cjelobrojno dijeljenje. Ako su svi članovi u izrazu cjelobrojnog tipa, radit će se o cjelobrojnom dijeljenju (npr. ako dijelimo cijele brojeve 5 i 2 bit će 5/2 = 2) , a čim je jedan od njih realan , primijenit će se standardno dijeljenje (npr. dijelimo realni broj i cjelobrojni broj ili pak dva realna broja i tad imamo 5.0/2 = 2.5, 5/2.0 = 2.5, 5.0/2.0 = 2.5).
Ako se u izrazu nalazi više operatora, redoslijed izvršavanja ovisi o prioritetu operatora. Nižeg prioriteta su zbrajanje i oduzimanje, a višeg prioriteta su množenje, dijeljenje, cjelobrojno dijeljenje te ostatak pri cjelobrojnom dijeljenju. Redoslijed prioriteta može se promijeniti uporabom zagrada O, pri tome treba paziti da broj otvorenih i zatvorenih zagrada bude jednak. Programski jezik e ima još dva unarna operatora: uvećaj za jedan + + (inkrement) i umanji za jedan - (dekrement). Operatori se mogu pisati ispred varijable kao prefiks ++x ili iza varijable kao postfiks x++. Izraz x
=x
+ l;
identičan
je x++; ++x;
Izraz x
=x
-
l;
identičan
je x --; -- x;
Inkrement i dekrement operatori primjenjuju se samo na varijable i ne mogu se primijeniti na izraze niti na konstante. Kada su operatori inkrement i dekrement sastavni dijelovi izraza, nije svejedno na kojem se mjestu nalaze (ispred ili iza varijable). Ako se nalaze ispred varijable, onda se vrijednost te varijable prvo poveća ili umanji za jedan i tako dobivena nova vrijednost se koristi pri izračunavanju izraza; ako je operator iza varijable, prvo se izračuna vrijednost izraza, a tek nakon toga se vrijednost varijable poveća ili umanji za jedan . U Pascalu postoji ekvivalent postfiks obliku ova dva operatora u obliku funkcija incO i decO. Primjer: Koje vrijednosti poprimaju varijable a i b nakon naredbi:
a b
= 2; - - a +2;
Rješenje: Vrijednost varijable a prvo je jednaka 2. Nakon toga se prefiksom ,_o' smanjuje na 1 te mu se tada dodaje 2. Rješenje je a = 1, b = 3.
245
Informatika i računalstvo - zbirka zadataka Primjer: Koje vrijednosti poprimaju varijable a i b nakon naredbe:
a b
= 3; a++ -2 ;
Rješenje: Na p očetku je a = 3, zatim se od njega oduzima 2 i rješenje se sprema u varijablu b . Nakon toga se varijabla a poveća za 1. Rješenje je a = 4, b = 1.
Uz operatore u izrazima se mogu koristiti i mate matičke funkcije. Pregled naj češće upotrebljavanih matematičkih funkcija dan je u s lj edećoj tablici :
.
arctg x
atan (x)
Fx
sqrt(x)
eX
exp (x)
sin x cos x
sin (x) cos (x)
ln x xy
l og (x) p ow(x,y)
e s ljedeće izraze: Rješenje:
f= 5 x -2y 7z
f
iii
Ix I
Primjer: zapišite u prog ramskom jeziku Izraz
.
~
abs (x)
f = ( 5 * x - 2 * y) / ( 7 * z);
3b+l c l
= sin a + ----'---' 3
f = sin(a)
d
+ (3 * b + abs(c) ) / pow( d, 3);
Relacijski i logički operatori Relacijskim i
l ogič kim
.
operatorima "
.
..
"
manje manje ili jednako jednako
utvrđuj e
.
.
se povezanost dviju varijabli, funkcija ili izraza.
.- .
[il
< <=
veće
--
različito
veće
.. .. "
ili jednako
ci > >= !=
Napomena: obratite pozornost na razliku između operatora pridruživanja = i relacijskog operatora jednakosti = =
246
IL. ~' •• " .•
[il
Negacija Log ički I, konjukcija Logički ILI, disjunkcija
&&
!
II
12 Programiranje - Programski jezik Vrijednost
logičkih
operacija O - laž (;l
O O 1 1
~ O 1 O 1
e
1 - istina ~ O O O 1
ralll~
.~.
O 1 1 1
1 1 O O
12.5.4 Ulaz i izlaz Postoji nekoliko naredbi kojima se može ostvariti programskom jeziku C.
učitavanje,
odnosno ispis vrijednosti varijabli u
Upis jednog znaka ostvaruje se funkcijom getcharO; Sintaksa: int getchar( void ); Primjer:
void main() { char c; c
=
getchar();
Ako pri izvršenju gornjeg primjera pritisnemo tipku p i zatim Enter, vrijednost znakovne varijable e bit će p (c='p'). Ista vrijednost bit će pridružena varijabli e i ako upišemo proba . Za ispis jednog znaka upotrebljava se funkcija putcharO. Sintaksa: int putchar( int c ); Primjer:
void main() { char c;
c
=
getchar();
putchar(c);
247
Informatika i računalstvo - zbirka zadataka Unos jednog znaka
moguće
je obaviti i naredbom getch () .
Sintaksa: int getch( void );
Za razliku od funkcije getchar () funkcija getch () ne ne prikazuje se na monitoru.
čeka
da se pritisne tipka Enter.
Učitani
znak
Analogno, za ispis jednog znaka može se upotrijebiti i funkcija putch () . Sintaksa: int putch( int z ); Primjer:
void main() { char z; while (z != 13){ z=getch() ; putch(z) ;
To je primjer prikazivanja upisanih znakova na monitoru sve dok se ne pritisne tipka Enter (13 je ASCII kod za "carriage-return", odnosno "enter"). Za unos niza znakova upotrebljava se funkcija gets () . Sintaksa: char *gets(char *string);
Funkcijom gets() nije
moguće
unijeti znak za novi red '\n'.
Za ispis niza znakova na standardni izlaz - monitor upotrebljava se funkcija puts() . Sintaksa: int puts (const char *s); Primjer:
void main() { char s[80]; gets (s) ; puts ("Učitani niz znakova je:"); puts(s) ;
Ako pri pokretanju programa upišemo: Proba ispisa naredbom puts, nakon izvršenja gornjeg bloka naredbi na monitoru će biti ispisano: Učitani
niz znakova je: Proba ispisa naredbom puts
248
12 Programiranje - Programski jezik
e
Funkcijom puts() m og uće je ispisati i dio stringa, odnosno ispisati string tako da se ne ispisuje prvih nekoliko znakova stringa. Primjer:
void main() { char a []
"Proba" ;
puts (a+l) ;
Nakon pokretanja gornjeg programa ispis bi bio: roba
odnosno ne bi se ispisalo prvo slovo zadanog stringa. Primjer:
void main() { char a [ ]
"Proba" ;
puts(a+3) ;
Sada se ne bi ispisala prva tri znaka zadanog stringa, pa bi ispis bio: ba
Ipak, za ulaz i izlaz podataka u programskom jeziku e najčešće se upotrebljavaju funkcije za formatirani ulaz, odnosno formati rani izlaz. Naredba formatiranog ulaza funkcija je scanf() . Sintaksa: int scanf ("formati varijabli", lista varijabli);
Varijable iz liste varijabli međusobno se odvajaju zarezom , a prenose se putem adrese (pointera ili pokazivača), što znači da se ispred imena varijable mora nalaziti adresni operator &. Ako se unosi varijabla tipa string, varijabla koja je definirana kao niz znakova, nije potrebno upotrijebiti adresni operator, već je dovoljno samo navesti ime varijable. Format varijable sastoji se od znaka % i tipa formata. Najčešći
su formati :
~ %c %d %f %s %p
.- učitava
jedan znak učitava cijeli broj učitava realan broj učitava string , niz znakova učitava pokazivač
249
Informatika i računalstvo - zbirka zadataka Primjer:
void main() { int a; float b; ehar e, s[80]; seanf("%d,%f,%e, %s", &a,&b,&e, s);
Ako poslije pokretanja programa upišemo: 3, 4.5, d, proba varijable
će
imati
sljedeće
vrijednosti: b=4.5
a=3
c='d'
s= "proba"
Treba paziti da pri definiranju formata znak koji se nalazi izm eđu formata određuje i način upisa podataka pri pokretanju programa. Ako je format "%d,%f" to znač i da se unose dvije varijable, cjelobrojna i realna, i da pri upisu trebaju biti odvojene zarezom (npr. 4, 5.7). Ako je format "%d %f" onda pri upisu vrijednosti varijabli ne treba upotrijebiti zarez (npr. 4 5.7). Formatom varijable varijabli.
moguće
je odrediti i maksimalan broj znakova koji
će
biti pridružen pojedinoj
Primjer:
void main() { int a,b; ehar s[80]; seanf("%2d %d %3s", &a, &b,s);
Ako poslije pokretanja programa upišemo: 123456 unos varijable
će
imati
a=12
sljedeće
vrijednosti: b=3456
s="uno"
Format "%2d" određuje da je varijabla a najviše dvoznamenkasti broj, pa od ponuđenog 123456 uzima prve dvije znamenke, odnosno 12. Sljedeć i form at "%d" određuje da je varijabla b cjelobrojna pa se ostatak broja 3456 pridružuje varijabli b. Format "%3s" određuje da se string s sastoji najviše od triju znakova, tako da će od upisane r ij eči, unos, uzeti prva tri znaka. Pri formatu unosa dopuštenaje i upotreba znaka * koj i označava zanemarivanje, preskakanje određenog dijela unosa. Ako se navede "%*s", to znači da će se sljedeći niz znakova zanemariti ili pak ako se navede "%*d", bit će zanemaren sljedeći cijeli broj .
250
12 Programiranje - Programski jezik
e
Primjer:
void rnain() { int a,b; char
5[80];
float e; scanf("%2d %3d %*d %f %35", &a, &b,&c,s);
Ako poslije pokretanja programa upišemo: 1234576 895.3 matematika varijable će imati sljedeće vrijednosti: a=12
b=345
c=895.3 s="mat"
Analizirajmo sada zadani format. Varijabli a pridružuju se dvoznamenkasti cijeli broj, dakle 12, varijabli b troznamenkasti cijeli broj, odnosno 345. Nailazi se na format %*d koji određuje da preskočimo sljedeći cijeli broj (76) i nakon toga se varijabli c pridružuje realni broj 895.3, a string u s prva tri znaka, odnosno "mat". Ako poslije pokretanja programa pak upišemo: 123 76.3 matematika varijable će poprimiti sljedeće vrijednosti: a=12
c=0.3
b=3
s="mat"
Varijabla a uzme prva dva broja, a= 12, b bi trebala biti najviše troznamenkasti broj, no kako je preostao samo broj 3 do razmaka, b=3, sad se preskače sljedeći cijeli broj, tj. do decimalne točke, pa c=.3, odnosno 0.3. String poprima vrijednost po istom načelu kao i u prethodnom pokretanju. Funkcija je fOimatiianog ispisa printf ( ) . Sintaksa: printf ("tekst i/ili formati varijabli", lista varijabli); Najčešći
su formati: lil.lu.mc %c %d %f %u %ld %lf %h %s %p %% %n
.- ispisuje jedan znak ispisuje cijeli broj ispisuje realan broj ispisuje decimalni broj bez predznaka ispisuje cijeli broj tipa long int ispisuje decimalni broj tipa double ispisuje cijeli broj tipa short int ispisuje string , niz znakova ispisuje pokazivač ispisuje znak % označava broj znakova za ispis
251
Informatika i računalstvo - zbirka zadataka Tom funkcijom
moguće
je ispisivati i samo
određene
poruke, premda je za to pogodnija i brža funkcija
puts() .
Primjer.
void main() { printf("Dobar dan");
Taj bi programčić ispisao poruku Dobar dan. Nakon ispisa kursor bi ostao u istom redu , novi unos ili ispis nastavio bi neposredno iza slova n (od dan). Ako želimo da nakon ispisa kursor prijeđe u novi red, onda funkcija treba izgledati: printf("Dobar dan \n");
12.5.5 Kontrola toka programa Naredbe za nadzor tijeka programa određuju redoslijed izvršavanja pojedinih naredbi ili blokova naredbi programa. Naredbe za nadzor tijeka programa možemo podijeliti u skupinu naredbi uvjetnih i višestrukih uvjetnih grananja programa (if, if - else if - else), skupinu naredbi za ponavljanje dijelova programa, programske petlje (for, while , do while), skupinu naredbi za ispitivanje niza stanja i jednostruko grananje programa (switch - case), naredba bezuvjetnog grananja programa (gota) . Sve naredbe u G-u završavaju oznakom kraja naredbe (;) . Skup naredbi koji čini jednu logičku i izvršnu cjelinu naziva se blok naredbi. Blok naredbi se označava: početak ({ ) i završetak ( }).
Jednostruka uvjetna grananja Naredba if može se pisati na dva načina.
if (uvjet) naredba;
if (uvjet){ blok naredbi; }
Zadani uvjet može biti logički ili aritmetički izraz. Ako je zadani uvjet logički izraz, naredba ili blok naredbi izvršava se ako je vrijednost logičkog izraza istina. Kad je uvjet aritmetički izraz, naredba ili blok naredbi se izvršava u slučaju kad je vrijednost aritmetičkog izraza različita od nule.
252
12 Programiranje - Programski jezik
e
Višestruka uvjetna grananja Za višestruka uvjetna grananja upotrebljavaju se dva dodatna oblika naredbe if. Prvi oblik if (uvjet1){ blok naredbi1; } else { blok naredbi2; } Drugi oblik: if(uvjet1 ){ blok naredbi1; } else if(uvjet2){ blok naredbi2; } else if(uvjet N-1){ blok naredbi N-1; } else { blok naredbi N; }
Uvjetni operatori
e
U programskom jeziku postoji uvjetni operator? koji može zamijeniti naredbu if. Sintaksa uvjetnog operatora je: uvjet? izraz1 : izraz2; Izraz1 i izraz2 su aritmetički izrazi ili funkcije. Ako je uvjet točan, cijeli izraz poprimit izraz1 a inače izraz2.
će
vrijednost
Primjer:
printf("%d",a> O ? a : -a); Gornja naredba ispisuje apsolutnu vrijednost varijable a. Ovo je
identično
kao da smo napisali:
if (a > O) printf ("%d",a); else printf ("%d",-a);
253
Informatika i računalstva - zbirka zadataka Primjer: Koje vrijednosti poprimaju varijable a, b,
C
nakon što se izvrši blok naredbi:
void main () {
int a
a
=
(a
= 1, b = 2, == ( c < 1
c
=
-4;
II ? b--
c++;
Rješenje: Prvo se ispita istinitost uvjeta. Budući da je istina da je c< 1, a poprima vrijednost b odnosno 2. Poslije toga b se smanji za jedan (b--) i iznosi 1. Naredba c+ + nikad se ne izvrši i costaje -4. Rezultat iznosi a = 2, b = 1, c = -4.
Primjer: Koje vrijednosti poprimaju varijable a, b i c nakon izvršenja sljedećeg programskog bloka: void main () {
int a = 5, b -5, c; c = ( a <= b l ? ( b--
( a += b++ l;
Rješenje: Ispita se uvjet (a
Naredba switch - case Naredba switch - case upotrebljava se za ispitivanje vrijednosti jedne varijable ili izraza i ovisno o toj vrijednosti, za izvršavanje jednog od niza različitih blokova naredbi. switch(izraz){ case L1:
S1; break; case L2:
S2; break;
default: Sn; break;
254
12 Programiranje - Programski jezik
e
Kod naredbe switch - case prvo se izračuna izraz. Nakon toga vrijednost izraza uspoređuje se s nizom zadan ih konstanti (L 1, .. , Ln). Kada je vrijednost izraza jednaka bilo kojoj od zadanih konstanti (L 1, ... , Ln), izvršava se blok naredbi (S1, .. , Sn) pridružen toj konstanti. Izlazak iz bloka naredbi switch - case označava naredba break na kraju bloka. Grana default izvršava se ako vrijednost izraza nije jednaka ni jednoj od zadanih konstanti. } označava i kraj bloka switch - case. Primjer: Zadani su a i b. Ovisno o selektoru j, u varijablu x upiši a-b ako je j = -1 ; a·b ako je j = O i alb ako je j = 1. Na kraju ispišite a, b, j ix. Rješenje: Moramo posebno obratiti pozornost na ispisa za brojeve a, b, j i x:
moguće
dijeljenje s nulom u izrazu alb, te na
različite
formate
#include
printf("\n a = %.2f getch () ;
b= %.2f
i= %d
x= %.2f",a, b,j,x);
255
Informatika i računalstvo - zbirka zadataka Programske petlje Programska petlja for Opći
oblik programske petlje for u G-u:
Sintaksa: for (inicijalizacija; uvjet; promjena_vrijednosti){ blok naredbi; }
gdje je inicijalizacija dio u kojem se postavlja inicijalna vrijednost kontrolne varijable petlje, uvjet je uvjet koji kontrolna varijabla petlje mora zadovoljiti da bi se izvršio blok naredbi, a promjena_vrijednosti dio je u kojem se mijenja stanje kontrolne varijable. Uvjet se ispituje na početku petlje i ako nije zadovoljen , petlja se ne izvrši nijednom.
Primjer: for ( i= 1; i
Ovaj program ispisuje brojeve od 1 do 4 svaki u novom retku.
Petlja for ( i= 1; i
i++); printf("%d\n" ,i);
ispisati ništa.
Programska petlja while
Opći
oblik programske petlje while: while (uvjet){
blok naredbi; }
gdje je uvjet aritmet i čki ili logički izraz č ij a vrijednost određuje izvršavanje bloka naredbi. Blok naredbi izvršava se ako je vrijednost uvjetnog izraza istinita ili različita od nule. Inače se blok naredbi preskače.
256
12 Programiranje - Programski jezik
e
Primjer: a=l; while (a!=4){ printf("%d\n",a) ; a++;
Program
će
ispisati brojeve od 1 do 3.
Programska pet/ja do ... while
'-
-
Sintaksa programske petlje do - while: do { blok naredbi; } while (uvjet);
Primjer:
int i=O; do { printf("%d\n",i) ; i+=2; while ( i <= 8) ;
Primjer ispisuje brojeve O, 2, 4, 6, 8. Ako je na početku međutim varijabla i
=
lO ispisat će se broj 10 (iako nije manji i jednak 8) zato što
se uvjet ispituje na kraju petlje nakon naredbe printf.
12.5.6 Potprogrami Funkcije Jedinstvene logičke cjeline izdvajaju se u funkcije. One jednostavnije pronalaženje i otklanjanje pogrešaka.
omogućuju
Funkcije u G-u mogu vratiti jednu ili nijednu vrijednost (što je vrijednosti preko argumenata funkcije.
bolju preglednost izvornog koda i
određeno
tipom funkcije) ili pak niz
Svi programi u G-u sastoje se od jedne ili više funkcija. U programu je obvezna samo jedna funkcija funkcija mainO. Tom funkcijom označava se početak izvršavanja programa. Za poziv funkcija dovoljno je navesti ime funkcije i listu argumenata. Lista argumenata funkcije može biti prazna.
257
Informatika i računalstva - zbirka zadataka Definicija funkcije u G-u: tipJunkcije ime_funkcije( deklaracija liste_argumenata) { deklaracija lokalnih varijabli; tijelo funkcije return vrijednost; } Primjer:
int produkt( int i, int j){ int p; 1* deklaracija lokalnih varijabli *1 produkt = i*j; 1* tijelo *1 printf("\n %d*%d = %d",i,j,p); return p; I*povrat vrijednosti u glav.program *1
Tip_funkcije određuje tip vrijednosti koju pozvana funkcija vraća u nadređenu funkciju, ime:funkcije je identifikator preko kojeg se funkcija poziva, a lista argumenata je niz podataka koji se iz nadređene funkcije prenose u pozvanu funkciju . Primjer:
proba(){ return 5.3;
Koju će vrijednost naredba return vratiti u nadređenu funkciju: realnu, cjelobrojnu ili će prevod itelj tijekom prevođenja programa dojaviti pogrešku? Rješenje: Točan
je odgovor cjelobrojnu. Naredbom return realni tip podataka pretvara se u cjelobrojni i u se funkciju vratiti cjelobrojna vrijednost. Razlog je tome što je pretpostavljeni (defaultni) tip funkcije u G-u cjelobrojni, a funkcija proba nema u definiciji eksplicitno deklariran tip. nadređenu će
Funkcija se može deklarirati: 1. Na početku programa 2. U odvojenoj datoteci 3. Unutar druge funkcije Glavni program main() u G-u je također funkcija. Ovu funkciju mora imati svaki program. Funkcija main() također može imati ulazne parametre. Pogledajmo primjer: void main ( int argc, char *argv[] ) int i; for ( i = O ; i < argc ; i++ ) printf("%s\n",argv[i]) ;
258
12 Programiranje - Programski jezik
e
Parametar argc je ukupan broj parametara, a argv[] je niz stringova u kojima su parametri (uključivši i ime samog programa kao prvi parametar). Ako se program zove proba.exe, pokrenemo li program s proba 1234 program će ispisati: proba.exe
1 2 3 4
Rekurzija Programski jezik e , za razliku od nekih programskih jezika, dopušta da funkcija poziva samu sebe. Takve funkcije nazivaju se rekurzivnim funkcijama. Određene
probleme moguće je riješiti, osim rekurzivno, i iterativno. U pravilu, rekurzivna rješenja nekog problema kraća su i u mnogo slučajeva prirodnija, no vrijeme je izvođenja rekurzivnog rješenja nešto duže.
Primjer: izračunavanje faktorijela
U matematici je faktorijel definiran ovako: ~
- -
n! = n
* (n-1)!
O! = 1 Drugim riječima ni = n * (n-i)
* (n-2) * ... * 2 * i
iii ni
i
* 2 * 3 * ... * (n-l) * n
Pogledajmo sada kako izgleda funkcija u e -u koja ovaj problem rješava iterativno int faktorijel (int n) { int i, f; f=1; for ( i = 2 ; i <= n f *= i; return f;
i++ )
A sada rekurzivno: int faktorijel (int n) { if ( n==O ) return 1; return n * faktorijel(n-1);
259
Informatika i računalstvo - zbirka zadataka lli još
kraće:
int faktorijel (int n) return ( n==O ? 1
n
*
faktorijel(n-1) );
Kao što vidimo, rekurzivno rješenje je mnogo kraće, iako možda teže za razumijevanje. Postoje problemi koji se mogu riješiti isključivo rekurzijom. U rekurziji je bitno da postoji izlazak iz rekurzije, odnosno slučaj koji se rješava bez rekurzije, tzv. osnovni slučaj. Također je bitno da svaki poziv rekurzije vodi bliže tom osnovnom slučaju. U slučaju loše definiranog izlaska iz rekurzije moguće je ostvariti beskonačnu rekurziju.
Primjer :
int ne_valja( int n) { i f ( n==O ) return 1; return n + ne_valja( n/(n+1) + 1 );
Ako funkciju ne _va/ja pozovemo vrijednošću O, ona će biti konačna i vratit će 1. U svim drugim slučajevima dolazi do beskonačnog pozivanja funkcije, jer n/(n+1)+1 uvijek ima vrijednost 1. Za pohranjivanje rezultata i povratak iz rekurzije jezik e interno koristi strukturu podataka koja se naziva stog (stack) . Stog je struktura podataka u koju se podaci smještaju "jedni na druge" tako da je zadnje upisani podatak uvijek na vrhu. Kada se podaci čitaju sa stoga ("skidaju"), uvijek se čita s vrha i pri svakom čitanju briše se podatak na vrhu stoga. Pri svakom pozivu potprograma na vrh stoga upisuje se povratna adresa, odnosno mjesto na kojem će se nastaviti izvršavanje programa nakon završetka upravo pozvanog potprograma. Potprogram također na stog smješta svoje lokalne varijable te ih nakon završetka potprograma briše sa stoga. Promotrimo
sljedeći
primjer:
Treba napisati rekurzivnu funkciju koja će računati sumu prvih n prirodnih brojeva 1 + 2 + ... + n. Rješenje: Ako
pomoću
sum (n) definiramo funkciju koja
za n = 1 za n = 2 za n = k Rekurzivna bi funkcija koja
računa
zbroj prvih n prirodnih brojeva, onda imamo:
sum(1) = 1 sum(2) = sum(1)+2 = 1+2 = 3 sum(k) = sum(k-1)+k izračunava
zbroj prvih n prirodnih brojeva glasila:
int sum(int n){ return1; i f ( n == 1 else return n + sum( n - 1 );
260
12 Programiranje - Programski jezik
e
Pogledajmo kako bi se mijenjalo stanje na stogu prilikom sljedećeg poziva te rekurzije: m=sum(3);
~
~
STOG
sum (int n) if (n==1) return 1;
V
if (n==1) .., return 1; else return n+sum(n-1) 3 ~
...
·nt sum (int n) if (n==1) 1 return 1; / ./" else else /~ 1 return n+sum(n-1) return n+sum(n-1)
~nt
3~ int sum (int n)
...
m=sum(3) .......
I
/
I
I
3
2 3
/
I
1 2 3
Pri prvom pozivu rekurzivne funkcije sum na stog se spremi vrijednost od n = 3. Kako 3 nije jednako 1, ponovno se poziva funkcija, al i sad s vrijednošću n=n-1, odnosno n=2, i na stog se spremi 2. Kako opet nije ispunjen uvjet n= = 1, funkcija sum ponovno se poziva i to za n=1, i 1 se sprema na stog. Sad je ispunjen uvjet i funkcija vraća vrijednost 1. Zatim se vraća vrijednost 3 (2+sum(1)=2 + 1 =3) , i na kraju vrijednost 6 (3+3).
12.5.7 Složeni tipovi podataka Niz Kad nam treba više podataka istog tipa koji predstavljaju cjelinu, upotrebljavamo podatkovnu strukturu koja se naziva polje. Polje može biti jednodimenzionalno (najčešće se tad govori o polju , nizu ili vektoru), dvodimenzionalno (matrica) ili višedimenzionalno. Prvo ćemo se baviti jednodimenzionalnim poljem , odnosno nizom.
5.0 x[O]
-2.5 x[1]
9.3 x[2]
7.4 x[3]
-3.6 x[n-1]
Svi elementi niza istog su ti pa, a prepoznaju se po indeksu koji određuje mjesto svakog pojedinog elementa u nizu. Indeks niza pišemo unutar uglatih zagrada [] i mora biti nenegativan cijeli broj (odnosno cjelobrojna konstanta, varijabla ili izraz). U programskom jeziku e indeks prvog elementa niza je o. Deklaracija niza: tip_elementa ime_varijable[broL elemenata_niza] Pridruživanje vrijednosti elementu niza: ime _varijable[indeks_elemenata] = vrijednost
261
Informatika i računalstvo - zbirka zadataka Primjer:
Varijabla a niz je od najviše 10 cjelobrojnih elemenata - brojeva, a varijabla b niz je od najviše 100 realnih elemenata - brojeva. void main() { int a[10] ; float b[100] ; a[3]
b[O]
= 7; = 6 . 1;
/* četvrti element niza je 7 */ /* prvi element niza je 6 */ /* GREŠKA ovo je JEDANAESTI element */
a[10] = 2;
Pri deklaraciji
moguće
je i pridruživanje
početnih
vrijednosti elementima niza.
void rnain(){ int a[10]={10,9,B,7,6,5,4,3,2,1};
Gornjom deklaracijom pridružene su sljedeće vrijednosti elementima niza. g 7 4 2 10 8 5 3 6 a[g] a[7] a[1] a[2] a[3] a[4] a[5] a[6] a[8] alOJ
Prva vrijednost iz skupa vrijednosti odgovara prvom elementu niza, druga drugom i tako redom. Kad pri inicijalizaciji vrijednosti skup vrijednosti sadrži manje elemenata nego što je deklarirano za niz, podrazumijeva se da su vrijednosti tih elemenata u nizu nula.
void main() { int a[10]={10,9,B,7 , 6 , 5,4,1} ;
10
g
alOJ
a[1]
8 a[2]
7 a[3]
6 a[4]
5 a[5]
4 a[6]
a[7]
O a[8]
O a[g]
Nije dopušteno da skup vrijednosti sadrži više elemenata od deklariranog maksimalnog broja elemenata u nizu. Kako se niz ustvari sastoji od više elemenata istog tipa, unos svih elemenata niza nije moguće ostvariti jednom naredbom (premda je kod stringa koji je u stvari niz znakova to moguće). Trebamo učitati vrijednost za svaki pojedini element niza, alO], a[1], a[2], a[3], ... ,a[n-1]. Kako su svi elementi niza istog tipa, jedino po čemu se razlikuju je indeks koji se mijenja od O do n-1 pa je učitavanje vrijednosti elemenata niza pogodno napraviti u petlji. Često ćemo u zadacima deklarirati polje na maksimalno npr. 100 elemenata, no stvarni ćemo broj elemenata unositi.
262
12 Programiranje - Programski jezik
e
Primjer: Napišite program koji učitava elemente niza tipa float (n < = 1OO). Rješenje: void main() { int i,n; float a[lOO] ; do{ printf("\n Broj elemenata u nizu="); scanf("%d",&n) ; while n <= O ); for ( i = O ; i < n i++) scanf("%f",&a[i]);
Elementi niza također se ispisuju u petlji, praktički istoj petlji kao što je za unos, samo se funkcija za učitavanje (scanf()) zamijeni funkcijom za ispis (printf()) . Primjer - sortiranje niza Učitani niz podataka ispisati sortiran uzlazno (od najmanjeg elementa polja do najvećeg). Rješenje:
Postoji nekoliko algoritama sortiranja, ali ovdje će biti objašnjen jedan od jednostavnijih. Zamisao je da se prvo pronađe najmanji element niza, i da se on smjesti na prvo mjesto u nizu (a[OJ). Nakon toga se traži najmanji od preostalih i dovodi ga se na drugo mjesto u nizu (a[1 J). Taj postupak se ponavlja dok niz ne bude sortiran.
void main() { int i,j,n; float a[lOO], p; do{ printf("\n Broj elemenata u nizu="); scanf("%d",&n) ; while ( n <= O ); for ( i = O ; i < n i++ ) scanf("%f",&a[i]); printf ("\n"); for ( i = O ; i < n - l ; i++ ) for( j = i + l ; j < n ; j++ ) if ( a[i] > a[j] ){ l/zamijeni vrijednosti p = č!-[i] ; a[i] a[j]; a[j] = p; for ( i = O ; i < n ; i++ printf("%7.2f",a[i]) ; printf ("\n");
263
Informatika i računalstva - zbirka zadataka Prođimo
sada kroz gornji program ako su elementi niza:
47 alO]
78 a[1 ]
17 a[2]
53 a[3]
61 a[4]
Za i = O, j će poprim iti vrijednosti 1,2, 3 i 4, što znači da će se element niza alO] uspoređivati s preostalim elementima. Svaki put kad neki drugi element bude manji od elementa alOJ, doći će do zamjene vrijednosti. i
j
O
1
O
2
O
3
O
4
alO] > 47> alO] > 47> alO] > 17> alO] > 17>
a[1] 78 a[2] 17 a[3] 53 a[4] 61
nejednakost ne vrijedi pa ne treba
činiti
ništa
nejednakost vrijedi pa se zamijene vrijednosti, sada je alO] = 17, a[2] =47 nejednakost ne vrijedi pa ne treba
č initi
ništa
nejednakost ne vrijedi pa ne treba
činiti
ništa
Nakon prvog prolaza na prvom mjestu u nizu nalazi se najmanji element niza. Niz sada izgleda: 78 a[1]
17 alO]
47 a[2]
53 a[3]
61 a[4]
Sada od preostalih elemenata (od mjesta 1 do 4) tražimo najmanji. i
j
1
2
1
3
1
4
a[1 ] > 78> a[1] > 47 > a[1] > 47>
a[2] 47 a[3] 53 a[4] 61
nejednakost vrijedi pa se zamijene vrijednosti, sada je a[1] = 47, a[2]=17 nejednakost ne vrijedi pa ne treba
č initi
ništa
nejednakost ne vrijedi pa ne treba
č initi
ništa
Nakon drugog prolaza niz izgleda: 17 alO]
47 a[1]
i
j
2
3
2
4
78 a[2]
a[2] > 78> a[1] > 53>
a[3] 53 a[4] 61
53 a[3]
61 a[4]
nejednakost vrijedi pa se zamijene vrijednosti, sada je a[2] = 53, a[3]=78 nejednakost ne vrijedi pa ne treba
činit i
ništa
Sada niz izgleda: 17 alO]
264
47 a[1]
i
j
3
4
53 a[2] a[3] > a[4] 78 > 61
78 a[3]
61 a[4]
nejednakost vrijedi pa se zamijene vrijednosti, sada e a[3] = 61 , a[4]=78
12 Programiranje - Programski jezik
e
Petlje su završene, a samim tim i postupak sortiranja. Niz koji će biti ispisan izgleda:
I
17 alO]
I
47 a[1]
I
I
53 a[2]
61 a[3]
I
78 a[4]
I
U svim dosadašnjim primjerima odmah na početku programa deklariranjem varijable tipa polje rezervirali smo određeni prostor u memoriji za to polje.
String Niz znakova, string, zauzima u memoriji jedan ili više bajtova koji su kontinuirano smješteni. String u programskom jeziku e možemo promatrati kao polje, niz tipa char. Oznaka kraja stringa, odnosno posljednji znak svakog stringa je nul znak \0. Prema tome, za string od n znakova potrebno je n+1 memorijsko mjesto. U polje duljine n znakova možemo pohraniti string maksimalne duljine od n-1 znaka. Primjer: Neka je s="Jezik
e". Prikaz je stringa s u memoriji:
Pojedinom znaku stringa s moguće je pristupiti i navođenjem njegove pozicije - indeksa u stringu. Tako je npr. s[4]=k. Deklaracija stringa char ime _varijable[maksimalni_broLznakova];
ili ch ar ime_varijable[] = inicijalan_sadržaLstringa; Primjer: deklaracija stringa duljine najviše 80 znakova
char string[80];
char s tringl [ ] =" Programski j ez ik e"; deklaracija i pridruživanje vrijednosti varijabli string1.
Funkcije za rad sa stringovima Za rad sa stringovima potrebno je
uključiti
string.h i to naredbom:
#inc lude
Programski jezik e obiluje raznim funkcijama za rad sa stringovima, no ovdje neke od njih, one koji se upotrebljavaju najčešće.
ćemo
prikazati samo
265
Informatika i računalstvo - zbirka zadataka Funkcija strienO daje duljinu stringa, pri
čemu
se nul znak ne broji.
size_t strlen(const char *s);
Sintaksa:
Funkcija struprO sva mala slova engleske abecede pretvara u velika, a ostale znakove ne mijenja. char *strupr(char *s);
Sintaksa:
Funkcija strlwrO sva velika slova engleske abecede pretvara u mala, a ostale znakove ne mijenja. char *strlwr(char *s);
Sintaksa:
Funkcija strcpyO kopira jedan string u drugi. char *strcpy(char *s1, const char *s );
Sintaksa:
Sadržaj stringa s kopira se u string s1. Kopiraju se svi znakovi, uključujući i nul znak.
Funkcija strncpyO kopira prvih n znakova stringa u drugi string. char *strncpy(char *s1, const char *s, size_t n );
Sintaksa:
Ako je duljina stringa s veća od n, onda se kopira prvih n znakova stringa s. Treba paziti na to da se u string s1 tada ne iskopira nul znak, pa ga je poželjno dodati. Kada je n veći od duljine stringa s, tada se iskopiraju svi znakovi stringa s (uključujući i nul znak). Prethodni sadržaj stringa s1 bit će prebrisan novim.
Funkcija strcatO spaja dva stringa. char *strcat(char *s1, const char *s );
Sintaksa:
String s dodaje se na kraj stringa s1 , lijepi string s na kraj stringa s1.
Primjer: Zadani string ispišite velikim slovima. Rješenje: #include
Nakon pokretanja programa iz ovog primjera ispis bi bio: U SKOLI
e
266
12 Programiranje - Programski jezik
e
Dvodimenzionalno polje - Matrica Dvodimenzionalno polje - matricu možemo si predočiti kao tablicu brojeva. Pri tome razlikujemo redove i stupce matrice. Svaki element matrice nalazi se na presjeku određenog reda i stupca. Kako indeksi u programskom jeziku e kreću od 0, element matrice koji se nalazi u prvom redu i prvom stupcu ima indekse [O) [O). Primjer: 1. stupac
1.red 2.red
2. stupac
3. stupac
4. stupac
~
r---~~---+--~~~--+---~~~~----~~--~
~
L-~~~_ _- L_ _~~~_ _~_ _~~~~_ _ _ _~~_ _~
Neka su elementi matrice a:
2 -5
Deklaracija dvodimenzionalnog polja analogna je jednodimenzionalnom:
void main(){ int a[10] [10]; float x[50j [2] ;
U tom primjeru deklarirana je cjelobrojna kvadratna matrica a reda 10 (broj redaka jednak je broju stupaca), s maksimalno 10 redova, odnosno deset stupaca, i realna matrica x tipa (50,2), s maksimalno 50 redova i najviše 2 stupca. Kao i kod niza, pri deklaraciji je
moguće
i pridjeljivanje inicijalnih vrijednosti elementima matrice:
void main(){ float a [3] [2] ={{l, 2} , {3} , { 4 ,S} } ;
U tom primjeru deklarirana je realna matrica a tipa (3,2). Element a[1 )[1) =0, jer je pri deklaraciji za elemente drugog reda (indeks drugog reda je 1, jer indeksi kreću od O) upisano samo {3} , što znači da su ostali elementi tog reda O. Unositi elemente matrice možemo po redovima. Prvo se upišu svi elementi prvog reda, zatim svi elementi drugog reda i tako redom.
267
Informatika i računalstvo - zbirka zadataka Elementi matrice a tipa (n,m), pri čemu su n:=;1 O i m:=;1 O, učitavaju se po redovima:
void main(){ int i,j,n,m; float a[lO] [10]; do { printf("\nZadaj tip matrice"); scanf("%d,%d",&n,&m); }while ( (n<=O) II (m<=O) I I (n>lO) I I (m>10) ); for(i=O;i
Upis se obavlja u dvije petlje: vanjska petlja (/) određuje red matrice, a unutarnja (j) stupac. Za svaku vrijednost vanjske petlje (i) potpuno će se izvršiti unutarnja petlja (j), pa se tako upisuju elementi po recima. Elementi matrice mogli bi se upisati i po stupcima, odnosno prvo se upišu svi elementi prvog stupca, zatim drugog i tako redom. Tada bi vanjska petlja trebala određivati stupac, a unutarnja red. Prepuštamo vam da sami pokušate napisati program za takav unos. Primjer: Ispišite učitane matrice a tipa (n,m) u obliku tablice. Rješenje:
Svi elementi jednog retka trebaju biti ispisani prije prelaska u novi . Da bi ispis bio u obliku tablice, upotrijebit ćemo horizontalni tabulator \t.
void main(){ int i,j,n,m; floa t a [10] [10] ; do{ printf("\nZadaj tip matrice") ; scanf("%d,%d",&n,&m) ; }while ( (n <= O ) I I ( m <= O ) I I ( n > 10 ) I I (m > 10 ) ); for( i = O ; i < n ; i++ ) for( j = O ; j < m ; j++ ) učitavanje matrice scanf ("U" , &a [i] [j]) ; for( i = O ; i < n ; i++ ){ for (j=O; j
S matricama je moguće obavljati i osnovne matematičke operacije. Pri tome je potrebno paziti jesu li ispunjeni svi uvjeti.
268
12 Programiranje - Programski jezik
e
Primjer - zbrajanje matrica Napišite program za zbrajanje matrica. Rješenje:
Zbrajati (odnosno oduzimati) možemo samo matrice istog tipa. Rezultat je ponovno matrica tog istog tipa. Pojedini element matrice rezu ltata jednak je zbroju (odnosno razlici) elemenata zadanih matrica na odgovarajućim mjestima: ci.i =ai.i + bi.i, odnosno ci.j=ai.i - bi.j"
void main() { int i,j,n,m; float a [10] [10] ,b [10] [10] , c [10] [10] ; do{ printf("\nZadaj tip matrice"); scanf("%d,%d",&n,&m) ; }while ( ( n <= O ) I I (m <= O ) I I ( n > 10 ) I I (m > 10 ) ); printf("\nZadaj elemente prve matrice") ; fort i = O ; i < n ; i++ ) fort j = O ; j < m ; j++ ) scanf ("%f" , &a [i] [j]) ; printf("\nZadaj elemente druge matrice"); fort i = O ; i < n ; i++ ) fort j = O ; j < m ; j++ ){ scanf (" %i" , &b [i] [j] ) ; c[i] [j] = a[i] [j] + b[i] [j]; printf("\nZbroj matrica je:\n"); fort i = O ; i < n ; i++ ){ fort j = O ; j < m ; j++ ) printf("%.2f\t H ,c[ij [jj); printf("\n");}
Zapis Zapis structure je složeni tip podataka koji se sastoji od više istovrsnih ili čine jednu logičku cjelinu . Deklaracija zapisa: struct naziv_zapisa { tip_komponente1 komponenta1; tip_komponente2 komponenta2;
raz l ičitih
tipova podataka koji
Deklaracija varijable tipa zapis: naziv_zapisa varijabla;
tip_komponenteN komponentaN; };
269
Informatika i računalstva - zbirka zadataka
Primjer1: struet kompleksni { float realni; float imaginarni; };
kompleksni a,b,e Primjer 2: struet ehar ime[40]; int uspjeh; float prosjek; ueenik;
Kao što vidimo u primjeru definicija varijabli tipa zapis može uslijediti i neposredno nakon deklaracije strukture. Članovima zapisa (rekorda, odnosno strukture) pristupa se direktno putem identifikatora "." (točka). operator povezuje ime varijable tipa zapis sa članovima, komponentama zapisa.
Točka
Sintaksa:
ime_varijable_tipa_zapis. ime komponente
Primjer:
U primjeru s kompleksnim brojevima realnom dijelu varijable a pristupamo s a.realni, a imaginarnom s a.imaginarni. Primjer - zbrajanje kompleksnih brojeva:
Napišite program koji će izračunati sumu dva kompleksna broja. Dobiveni kompleksni broj ispišite kao uređeni par (realni dio, imaginarni dio). Rješenje: #inelude
=
270
12 Programiranje - Programski jezik
e
Datoteka Ako u programu želimo koristiti datoteke, potrebno je deklarirati
datotečnu
varijablu, a to se
čini
na
sljedeći način.
FILE *datotečna_varijabla
Nakon toga, potrebno je datoteku otvoriti za pristup te zatim možemo pristupati sadržaju datoteke ili podatke upisivati u datoteku. Prilikom pristupa datoteci, kao referenca na nju služi nam upravo datotečna varijabla. Naredbe potrebne za rad s datotekama: ~
i'F.17, • iF.1 datotečna_varijabla
fclose(znak, fputc(znak, fputs(niz
= fopen(ime_datoteke, nacin _otvaranja)
datotečna
upisuje u datoteku jedan slovni znak upisuje string
datotečna_varijabla)
varijabla)
fwrite(spremnik, duljina_zapisa, broj zapisa, datotečna_varijabla) fprintf(file, format, podatak1, podatak2 ,... ) ch = fgetc(datotečna varijabla) string = fgets(niz-znakova, broj znakova, datotečna varijabla) fread(spremnik, duljina zapisa, broj zapisa, datotečna varijabla) fscanf(datotečna varijabla, format, &var1, &var2, ... ) fseek( datotečna_varijabla, skok,
upisuje složene tipove podataka (npr. strukture) formatirani upis čitanje
jednog slovnog znaka
čitanje
stringa od n znakova
čitanje
složenih tipova podataka
formati rano čitanje omogućuje direktan skok na traženi
početna_pozicija)
podatak ima vrijednost true ako je kraj
feof( datotečna _varijabla) Načini
otvara datoteku pod nazivom ime_ datoteke zatvara datoteku
varijabla)
znakova,datotečna
-
datoteke
otvaranja datoteke u programskom jeziku C.
~.
. - -
• ..
"r" ili Hrt"
Otvara datoteku za
čitanje.
Ako datoteka ne postoji, javlja grešku.
IIwllilillwtll
Otvara datoteku za pisanje u nju. Ako datoteka ne postoji bit će kreirana. Ako datoteka postoji, njen sadržaj bit će izbrisan.
"a" ili "at"
Otvara datoteku za dodavanje novih podataka na njen kraj. Ako datoteka ne postoji, kreira je.
"r+" ili "r+t" "w+" ili "w+t" "rb"
Otvara datoteku za
čitanje
i pisanje. Ako datoteka ne postoji, javlja grešku.
Otvara datoteku za čitanje i pisanje. Ako datoteka ne postoji, bit će kreirana. Ako datoteka postoji, njen sadržaj bit će izbrisan. Otvara binarnu daoteku za
čitanje.
271
Informatika i računalstva - zbirka zadataka
• "wb"
Otvara binarnu datoteku za pisanje u nju.
"ab"
Otvara binarnu datoteku za dodavanje novih podataka na njen kraj. čitanje
"r+b"
Otvara binarnu datoteku za
"w+b"
Otvara datoteku za čitanje i pisanje. Ako datoteka ne postoji , bit će kreirana. Ako datoteka postoji njen sadržaj bit će izbrisan.
i pisanje. Ako datoteka ne postoji, javlja grešku.
Primjer: Napišite program koji će učitavati brojeve i spremati ih u datoteku brojevi. dat sve dok se ne
upiše broj nula. Rješenje:
#include
12.5.8 Pokazivači Sve varijable, osim onih koje se smještaju u registre procesora, smještene su u memoriji računala na određenoj adresi. Dakle svaka memorijska lokacija ima adresu, i svakoj memorijskoj lokaciji možemo pristupiti putem te adrese, pa samim tim i varijabli pohranjenoj na toj adresi. U programskom jeziku C, pokazivač (pointer) nije osnovni tip (kao što su int, float , double , char, vOid), već govorimo o pokazivaču na neki tip, npr. pokazivač na char, int, float ili double. Pri deklaraciji pokazivača, ispred identifikatora (imena) pokazivača stavlja se unarni operator zvjezdica (*).
272
12 Programiranje - Programski jezik
e
Sintaksa:
tip *ime_varijable; pri čemu je tip neki od osnovnih ili korisnički definiranih tipova podataka. Ovisno o mjestu deklaracije, kao i sve ostale varijable i varijabla tipa pokazivač može biti globalna ili lokalna. Primjer:
float *niz; int *matrica; char *s; Pristupanje vrijednosti na koju pokazuje
pokazivač također
se ostvaruje unarnim operatorom *.
Primjer:
int *m; *m = 1001; Naredbom int *m definirali smo da je varijabla m pokazivač na vrijednost tipa int. Naredbom *m = 1001 vrijednost 1001 nismo upisali u varijablu m, nego smo je upisali na memorijsku lokaciju čija adresa se nalazi u varijabli m . Operator & ispred neke varijable daje adresu na kojoj se u memoriji ta varijabla nalazi. Ovim operatorom možemo neki pokazivač usmjeriti da pokazuje na točno određenu varijablu. Primjer: int *p; int a=30,b; p=&a; b=*p;
pI
<:::::
al
--- t 30
Naredbom p = &a varijabli p dodjeljuje se adresa na kojoj je zapisan broj 30 (sadržaj varijable a), a naredbom b = *p, varijabli b dodjeljuje se sadržaj memorijske lokacije čiju adresu sadrži pokazivač p, dakle b poprima vrijednost 30.
Česta primjena pokazivača je za prijenos podataka u funkciju preko adrese, a to se postiže deklariranjem argumenta funkcije kao pokazivača. Na ovaj način funkcija može mijenjati vrijednost prenesenih varijabli. Tako npr. funkcija scanf () kao parametar ima pokazivač na char. Također česta
primjena pokazivača je i kod nizova Uednodimenzionalnih, dvodimenzionalnih, niza znakova) . Da bismo mogli pristupati pojedinom elementu polja preko pokazivača, potrebno je deklarirati varijablu pokazivač na isti tip kao što je i polje čijim elementima želimo pristupati i pridružiti mu početnu adresu polja.
273
Informatika i računalstvo - zbirka zadataka Primjer:
int niz [5] , *pp,a; pp=&niz[O] ; Pokazivač pp sadrži adresu prvog člana niza, pa je naredbom a=*pp varijabli a pridružena vrijednost prvog elementa niza.
pp
l
niz [O]
niz[1]
niz[2]
niz[3]
niz[4]
Kako pp pokazuje na prvi član niza, onda će pp + 1 pokazivati na sljedeći element niza, odnosno na niz[1] . Kad bismo sada imali naredbua= *pp, varijabli a pridružena bi bila vrijednost drugog elementa niza. Postoje dva načina kako možemo pristupati pojedinim elementima niza. Pogledajmo
sljedeći
primjer:
int niz [5] , *pp,a; pp=&niz[O] ; pp++; a = *pp
Naredbom pp++; pomakne se pokazivač na sljedeći element u nizu (s prvog na drugi), i zatim se vrijednost tog elementa niza pridruži varijabli a. pp
Treba razlikovati pokazivač pp i vrijednost varijable na koju pokazivač pokazuje *pp. Tako naredbom pp+ +; pomičemo pokazivač na sljedeći element niza, a naredbom( *pp) + +; povećavamo vrijednost varijable na koju pokazivač pokazuje za jedan. Zbog prioriteta moraju biti zagrade. Drugi
način
je: int niz [5] , *pp,a; pp = &niz[O]; a = * (pp+1) ;
274
12 Programiranje - Programski jezik
e
U ovom primjeru nije došlo do pomicanja pokazivača, ali varijabli a opet je pridružena vrijednost drugog elementa niza. pp
l
niz [O]
niz[1]
niz[2]
niz[3]
niz[4]
Analogno i za konstantu niza znakova možemo definirati pokazivač koji pokazuje na adresu memorijske lokacije u kojoj počinje zapis niza znakova.
Primjer: char *s="Jezik C"; printf ("\n Četvrto slovo
%c"
*(5+3»;
Nakon izvršenja gornje funkcije printfO ispisalo bi se slovo i. Pokazivač s pokazuje na adresu prvog znaka, dakle na adresu slO], a *(s+3) određuje da se radi o znaku udaljenom za 3 od početnog, tj. o s[3], a to je slovo i.
12.5.9 Preprocesorske naredbe Prije prevođenja izvornog koda u izvršni, izvršavaju se preprocesorske naredbe. Ako linija programskog koda počinje znakom # , radi se o preprocesorskoj naredbi . Te naredbe izvršava posebni dio prevoditelja koji se naziva preprocesor i koji prije samog procesa prevođenja na osnovu prepdocesorskih naredbi mijenja tekst izvornog koda. Opći
oblik preprocesorskih naredbi je: #naredba parametri
Neke od preprocesorskih naredbi su:
#include #define #undef #if #ifdef #ifndef #elif #else
275
Informatika i računalstvo - zbirka zadataka Naredbom #inelude u dva oblika
uključujemo
sadržaj navedene datoteke u izvorni kod. Naredba se može pojaviti
#include "ime_datoteke" ili
#include
#include
Naredba #define ima sintaksu
#define ime vrijednost Primjer:
#define pi=3.14 #define maxint=32767
Vrijednost je sve što slijedi neposredno iza imena pa do kraja linije. Naredba #define zato na kraju nema točku-zarez (;). Od mjesta gdje se nalazi naredba pa do kraja datoteke svako pojavljivanje imena ime zamijenit će se prije prevođenja pridruženom vrijednosti vrijednost. Naredba #define može se koristiti i za definiranje parametriziranih makroa. Primjer:
#define max(A,B)
«A»(B) ?
(A)
(B»
pri čemu su A i B argumenti. Ako se u kodu programa kasnije pojavi naredba x= max(e,d); procesor
će
je zamijeniti s x= ((e) > (d)? (e): (d»;
Uočljiva je s ličnost parametriziranih makroa s funkcijama, no kako ovdje nema funkcijskog poziva i prenošenja argumenata, ovo je ponekad učinkovitiji način rješenja zadatka.
276
12 Programiranje - Programski jezik C ZADACI 12.5.2 Tipovi podataka 12.168. Koji od identifikatora su pravilno napisani? a) Proba1 b) 1A1 c) auto e) konst g) IF 12.169. Koji od identifikatora nisu pravilno napisani i zašto? a) const b) A#3 c) test2 d) min max e) a11 f) While g) 101ol0lli 12.170. Koliko različitih identifikatora je napisano?
c G proba Proba PROBA 12.171. Koje konstante su pravilno napisane? a) 345 b) 'ABG' c) 1.11 E-3 d) 34.76 12.172. Koje od navedenih konstanti nisu pravilno napisane i zašto? a) '\n' b) "G" c) 049 d) "ELEKTROTEHNIKA" e) 3xO f) 'pi' g) " , " 12.173. Koje od navedenih konstanti nisu pravilno napisane i zašto? a) 1231231223L b) E-2 c) 'Strojarstvo' d) Ox32AG e) 5E7.3
277
Informatika i računalstvo - zbirka zadataka 12.174. Kolika je dekadska vrijednost konstante 015? 12.175. Kolika je decimalna vrijednost konstante Ox1A?
12.5.3 Operatori i izrazi 12.176. Zapišite u programskom jeziku
e s lj edeće algebarske izraze:
3x+2y 4z 2b-c b)/=a+-,d-
a) /
= --"-
12.177. Zapišite u programskom jeziku a) / =
-Ja-b 3a b-l
d)/=-
3a
J a - bl ab
b)/ - - -
a+-
/ = __ c 3d
a +l / = -2b
i)
/
b c
h)
/
smx
=-
x
12.178. Slj edeće izraze napisane u programskom jeziku a) a + = 7 + c ; b) a -= bl ( c + d )
d)a=d/b/c
c)
e) / = / +3--
b
g)
e sljedeće algebarske izraze:
e zapišite matematički:
e)a=++b*c--
12.179. Koju će vrijednost poprimiti varijabla x = 10*3+6/2;
a) 33 b) 30 c) 25 12.180. Koju vrijednost poprima varijabla b nakon naredbi: a = 1; b = ++a +3; 12.181. Koju vrijednost poprima varijabla b nakon naredbe:
a b 278
= =
1; a++
+3;
smx-cosx smx
=-. --
c) a -= --c 12 * b
12 Programiranje - Programski jezik
e
12.182. Koje vrijednosti poprimaju varijable aJ b nakon što se izvrši sljedeći blok naredbi programskog jezika C: int a , b = 2 , e = 3; a = b = (e + 5 ) % 3 * 3; 12.183. Kolika je vrijednost varijabli aJ b i e nakon što se izvrši blok naredbi programskog jezika C: float a; int b = 13 , e = 5; a = --b/e * c++; 12.184. Kolika je vrijednost varijable b nakon što se izvrši blok naredbi u programskom jeziku C: b = abs(-18)/sqrt(81);
12.5.4 Ulaz i izlaz 12.185. Što će se ispisati kad se izvrši sljedeći program? void rnain() { int a = 345; float b = 456.372; printf("%d %f \n",a,b);
12.186. Što će se ispisati kad se izvrši sljedeći program? void main(){ int a = 345; float b = 456.372; printf("a %d b %f \n",a,b);
=
=
12.190. Što će se ispisati kad se izvrši sljedeći program?
void rnain() { int a = 345; float b = 456.372; printf("a = %d \nb
=
%f \n",a,b);
279
Informatika i računalstvo - zbirka zadataka 12.191. Što će se ispisati kad se izvrši sljedeći program? void main() { int a = 345; float b = 456.372; printf("a = %4d \nb = %7.2f \n",a,b);
12.192. Što će se ispisati kad se izvrši sljedeći program? void main(){ int a = 345; float b = 456.372; printf("a = %2d \nb = %7.1f \n",a,b);
12.193. Napišite program koji će učitati kut u stupnjevima, minutama i sekundama, a zatim ga pretvoriti uradijane.
12.5.5 Kontrola toka programa 12.194. Koju vrijednost poprimaju varijable a i b nakon izvršenog bloka naredbi: void main(){ int a = 3, b = O; if ( a+=b ) a += 1;
b = a
+ 1;
12.195. Koje vrijednosti poprimaju varijable a, b i e nakon izvršenog bloka naredbi: void main(){ int a = 5, b = 10, c = 15; if (! (a==c) >0) { a += b++;
c+-- ;
280
12 Programiranje - Programski jezik
e
12.196. Koje vrijednosti poprimaju varijable a, b i e nakon izvršenog bloka naredbi: void main(){ int a = 6, b = 5, e = 4; if ( ! (a = e) > O ) { e = a++; b
=b
- a;
12.197. Koje vrijednosti poprimaju varijable a i b nakon izvršenog bloka naredbi: void main(){ int a = l,b =0; if( !b-a b = --a; else a = --b;
12.198. Koje vrijednosti poprimaju varijable a i b nakon izvršenog bloka naredbi: void main(){ int a = 5, b =1; if (a = b) b = 3; if(b!=!a){ b
=
7;
a = ++b;
12.199. Što će se ispisati nakon što se izvrši blok naredbi: void main (){ int a = 5, b =3 ; if (! (a < b) && (a%b -- 2)){ printf("%d,",a) ; printf("%d",b) ;
12.200. Napišite program koji će za zadani napon i otpor u strujnom krugu izračunati jakost struje.
281
Informatika i računalstvo - zbirka zadataka 12.201. Koje vrijednosti poprimaju naredbe a, b, e nakon što se izvrši blok naredbi: void main() { int a = 3, b, e; b=c=l; if (a == b+1 && b < 4) a=b; else if (a == 3 I I b == a) e = a; else b = a;
12.202. Što će se ispisati nakon što se izvrši blok naredbi: void main(){ int a = 5, b = 7; if(a=b) printf("%d %d",a,b); else b = 10; %d" ,a,b) ; printf("%d
12.203. Što će se ispisati nakon što se izvrši blok naredbi: void main() { int a, b, e; a = b = e = 5; if ( a < b ) printf("A"); else if ( b < e ) printf("B"); else if ( e <= a ) printf("C"); else printf("D") ;
12.204. Zadajte prirodni broj. Ispišite je li zadani broj parni ili neparni. 12.205. Koje vrijednosti poprimaju varijable a, b, e nakon što se izvrši blok naredbi: void main () { int a = 1, b = 4, e = -3; a = (a == ( c < 1 » ? b++
282
c++;
12 Programiranje - Programski jezik 12.206. Koje vrijednosti poprimaju varijable a, b i e nakon izvršenja bloka: void main() { int a = 4, b = 4, Ci c = ( a < b ) ? ( ++b
12.207. Napišite program koji
će
s lj edećeg
e
programskog
( a -= b++ );
ispisati manji od dvaju zadanih brojeva.
#include
:printf (" \n Manji je %d" ,b) ;
12.208. Napišite program koji će od zadanog cijelog broja, ako je on pozitivan, ispisati njegov korijen, a ako je negativan, njegov kvadrat. 12.209. Zadaj broj. Ako je broj je manji ili jednak 11 !
veći
od 11, ispišite poruku: broj je veći od 11; ako nije, broj
12.210. Zadani su a, b. Ovisno o selektoru i, u varijablu x upiši a+b ako je i= 1; a·b ako je i=2; a/b ako je i=3. Na kraju ispišite a, b, i, x. 12.211. Kolika je vrijednost varijable e nakon izvršenja sljedećeg programskog bloka u programskom jeziku C: void main(){ int a = 53, b=7, c=5; switch «a - b) %c){ case O c += 5; case l c += 4; case 2 c += 3; case 3 c += 2; case 4 c += l; case 5 c *= 2;
283
Informatika i računalstvo - zbirka zadataka 12.212. Kolika je vrijednost varijable r nakon što se izvrši: void main (){ int a = 15, b = 5, c = 10, c = ( ! (a %b» ? a + b : a switch (a/b){ case 3: r = a + 2*b + case 2: r= a + b + c; case 1: r = 3*a + 2*b
r; / b; 3*c; + c;
12.213. Napišite program u programskom jeziku obratno, već prema izabranom selektoru .
e koji će pretvoriti stupnjeve u radijane i
12.214. Jesu li jednaki ispisi: for ( i= 1; i -4; i -= 3 i %= ++j; printf( "i = %d j= %d\n " ,i , j );
12.216. Kolika je vrijednost varijable s nakon izvršenja sljedećeg bloka naredbi: void main (){ int i, s = O; for ( i = 5 ; i == 50; i += 5 ){ if ( i % 7 == O) s++ ;
12.217. Napišite program koji će zbrojiti sve cijele brojeve od 200 do 300 koji su djeljivi sa 7. Koliko ima takvih brojeva?
284
12 Programiranje - Programski jezik
e
12.218. Napišite program koji će učitati n brojeva i ispisati najveći od njih. 12.219. Napišite program pomoću kojeg se upisuju visine i težine za n učenika . Program na kraju treba ispisati koliko je učenika viših od 168 cm, a koliko je težih od 63 kg. 12.220. Koje vrijednosti imaju varijable a, b, e nakon izvršenog bloka naredbi :
void main(){ int a = O, b = O, c = O; while (! ( a==4 » { c++; b += c; a++;
12.221. Kolika je vrijednost varijable s nakon izvršenog bloka naredbi:
void main(){ int i = lO, s = O; while ( i--) s+ =i;
12.222. Koliko puta će se izvršiti i što će se ispisati nakon izvođenja slj edećeg
programskog odsj ečka, objasni: void main(){ int i = 30000; while i > O ){ printf("%d",i) ; i += 1000;
12.223. Uz pomoć petlje while izračunajte zbrOj neparnih brojeva od 1 do 100. 12.224. Napišite program koji će ispisati najveći od n učitanih brojeva. 12.225. Napišite program koji će izračunati zbroj pozitivnih brojeva. 12.226. Napišite program koji će ispisati koliko ima brojeva djeljivih s 13 na odsječku [100,500].
12.227. Zadaj n brojeva. I zračunajte njihovu aritmetičku sredinu i ispišite najveći od njih.
285
Informatika i računalstvo - zbirka zadataka 12.228. Kolika je vrijednost varijable i nakon što se izvrši sljedeći blok naredbi: void main() { int i = O; do{ i i
+= 2; += 1;
while ( i-l <= 8);
12.229. Što će se ispisati nakon što se izvrši sljedeći blok naredbi: void main(){ int k = O, s = O; do{ k += 3; s += k; while ( k > 10 ) ; printf("%d %d " ,k, s) ;
12.230. Kolika je vrijednost varijable s nakon što se izvrši sljedeći blok naredbi: void main(){ int a = 6, s = O; do{ a-- ; if ( a %3 -- O) continue; if ( a -- 6) break; s += a; } while (a) ;
12.231. Napišite program koji će unositi brojeve sve dok se ne unese negativan broj. Program treba ispisati koliko je od zadanih brojeva djeljivo s tri, a koliko sa sedam . 12.232. Uz pomoć petlje do while ispišite brojeve sa 17. Ispišite koliko ima takvih brojeva.
286
veće
od 500 i manje od 700 koji su djeljivi
12 Programiranje - Programski jezik
e
12.5.6 Potprogrami
12.233. Definirana je funkcija:
proba(){ return 11/3; }
Koju će vrijednost naredba return vratiti u nadređenu funkciju? 12.234. Koji je rezultat nakon završetka programa:
#include
proba(){ return(5.3) ;
a) 5.
e) 7.8
b) 6.
12.235. Definirana je funkcija:
in t proba () { int x, y, z; x = 5; return ( x + 5 );
Y
=
4;
return( y z = 7; return ( z
+ 20); + 15);
Koja će se vrijednost vratiti u nadređenu funkciju? a) 10 b) 14 c) 22
287
Informatika i računalstvo - zbirka zadataka 12.236. Što će se ispisati nakon izvršenja sljedećeg programskog bloka: void main(){ int x = 345; while ( x > O ) { printf("%d",z(x)) ; x /= 10;
int z (int b) { return b% 10;
12.237. Kolika je vrijednost varijabli a i b nakon izvršenja
s lj edećeg
bloka:
void main(){ int a = 5, b; b = f(a); }
int f(int a){ a= a+1; return a;
12.238. Zadan je polumjer r i izvodnica s stošca. Izračunajte v (visinu), O (oplošje) i V (obujam) stošca. Napišite program pomoću funkcija u programskom jeziku C. 12.239. Zadane su stranice trokuta a, b, c. funkcija u programskom jeziku C.
I zračunajte
opseg i površinu trokuta
pomoću
12.240. Zadana su dva kompleksna broja. I zračunajte njihov zbroj i umnožak. Napišite program korištenjem funkcija u programskom jeziku C. 12.241. Zadane su stranica i dijagonala pravokutnika. Izračunajte drugu stranicu, opseg i površinu pravokutnika. Napišite program pomoću funkcije. 12.242. Napišite rekurzivnu funkciju koja
će računati
sumu niza n realnih brojeva: 1
+ 1/2
+1/3+ ... +1/n. 12.243. Napišite rekurzivnu funkciju koja izračunava zbroj znamenka učitanog prirodnog broja. Nacrtaj stanje na stogu nakon svakog rekurzivnog koraka za zadani broj 543.
288
12 Programiranje - Programski jezik
e
12.244. Što će se ispisati nakon što se izvrši sljedeći blok naredbi:
void main(){ printf("%d ", f(3456));
int f(int (n)){ if (n==O) return 1; return n%10*f((int)n/10);
12.245. Što će se ispisati nakon što se izvrši sljedeći blok naredbi:
void main(){ printf("%d ", f(19));
int f(int (n)){ if ( n==1 ) return 1; return n + f(n-2);
12.246. Napišite rekurzivnu funkciju koja će za prirodne brojeve n i m izračunati n·m. 12.247. Napišite rekurzivnu formulu za izračunavanje binomnih koeficijenata.
12.5.7 Složeni tipovi podataka 12.248. Napišite program koji učitava elemente niza tipa int (n < = 1OO) . 12.249. Napišite program koji treba zbroj svih elemenata niza.
učitati
niz od n elemenata (n ::;100), ispisati ga te
naći
12.250. Odredi najmanji element niza. Naputak: Zamisao je da se prvi element niza proglasi trenutačnim minimumom. Zatim se prolazi kroz niz i svaki element niza se usporedi s trenutačnim minimumom. U slučaju da je element niza manji od minimuma, njega se proglašava trenutačnim minimumom. Tako će nakon prolaska kroz cijeli niz trenutačni minimum ustvari biti najmanji element niza.
12.251. Napišite program koji će učitati niz od n < 1OO podataka tipa int i ispisati ga sortiranog silazno (od najvećeg elementa polja do najmanjeg).
289
Informatika i računalstvo - zbirka zadataka 12.252. Napišite program koji će učitati jednodimenzionalni niz od najviše 100 brojeva, ispisati ga te ispisati zbroj i umnožak svih njegovih brojeva. 12.253. Napišite program koji će učitati jednodimenzionalni niz od najviše 100 brojeva, ispisati ga te ispisati aritmetičku sredinu njegovih brojeva. 12.254. Kolika je vrijednost varijable s nakon što se izvrši
sljedeći
program:
void main(){ int a[10] = {10,-S,13,7,15,-20,21,35,26,2}; int i, n = 10, s = O; for ( i = O ; i < n ; i++ ) if(! (a[i]%5» s += a[i] ; }
12.255. Koje vrijednosti imaju elementi niza nakon što se izvrši sljedeći program: void main() { int a[5] = {10,-5,13,7,-15}; int i, n = 5; for ( i = O ; i < n ; i++ ) if( a[i] < O ) a[i] += -a[i];
12.256. Zadani string "C U SKOLI" ispišite malim slovima. 12.257. Odredi duljinu zadanog stringa. 12.258. Zadani string ispišite malim slovima. 12.259. Napišite program koji A (ili a).
će
prebrojiti koliko puta se u
učitanom
stringu pojavilo slovo
12.260. Napišite program koji će prebrojiti koliko riječi ima učitani string. 12.261. Što će se ispisati nakon izvršenja sljedećeg bloka naredbi: #include
290
12 Programiranje - Programski jezik
e
12.262. Što će se ispisati? #include
12.263. Što će se ispisati? #include
'- -
12.264. Napišite program koji će učitani string ispisati u obliku pravokutnog trokuta. Npr. ako je učitani string S="PET", ispis bi trebao biti: p PE PET 12.265, Što će se ispisati nakon što se izvrši sljedeći blok naredbi:
#include
12.266. Što će se ispisati nakon što se izvrši sljedeći blok naredbi: #include
291
Informatika i računalstvo - zbirka zadataka 12.267. Što će se ispisati nakon što se izvrši sljedeći blok naredbi: #include
12.268. Napišite program koji će učitanu rečenicu ispisati sdesna nalijevo. 12.269. Napišite program koji
će
za zadanu
riječ
provjeriti da li je palindrom.
12.270. Napišite program koji će prebrojiti I ispisati koliko puta se u učitanom stringu pojavilo slovo a. 12.271. Napišite program koji će učitati matricu cijelih brojeva s 5 redaka i 3 stupca te je ispišite po recima. 12.272. Što će se ispisati nakon što se izvrši sljedeći program: void main() { int n = 4; int a[4] [4] = {{1,2,0,3},{4,-2,5},{1,-1,1,1},{1,2,5}}; printf ("%d" ,a [O] [1] +a [3] [2]) ;
12.273. Što će se ispisati nakon što se izvrši s lj edeći program: void main(){ int n=4; int a[4] [4] = {{1,2,0,3},{4,-2,5},{1,-1,1,1},{1,2,5}}; printf("%d",a[2] [l]*a[l] [2]);
12.274. Što će se ispisati nakon što se izvrši sljedeći program: void main(){ int i, n = 4, s = O; int a[4] [4] = {{1,2,0,3},{4,-2,5},{1,-1,1,1},{1,2,5}}; for ( i = O ; i < n ; i++ ) s += a [ i] [i] ; printf("%d",s) ;
292
12 Programiranje - Programski jezik
e
12.275. Napišite program koji će učitati matricu tipa (n,m)(n,m <=10) , ispisati je u obliku tablice te naći umnožak brojeva trećeg stupca. 12.276. Napišite program koji će učitati kvadratnu matricu tipa (n,n)(n <= 10), ispisati je u obliku tablice te nać i i ispisati zbroj brojeva drugog reda. 12.277. Što će se ispisati nakon što se izvrši sljedeći blok naredbi: void main () { int i,n=4, p=1; int a[4] [4] = {{1,2,O,3},{4,-2,5}, {1, -1,1,1},{1,2,5}}; for (i=O; i
12.278. U uČitanoj matrici tipa (n,m) treba naći sumu svakog reda zasebno. 12.279. U kvadratnoj matrici razlikujemo pojmove glavne i sporedne dijagonale. Glavnu dijagonalu (gornji lijevi kut, donji desni kut) čine oni elementi matrice koji imaju jednake indekse reda i stupca, npr. a[O][O], a[1][1], a[2][2], ... , a[n-1 ][n-1]. Sporednu dijagonalu (gornji desni kut, donji lijevi kut) čine oni elementi matrice kojima zbroj indeksa reda (/) i indeksa stupca (j) iznosi n-1, npr. a[0][n-1], a[1 ][n-2], a[2][n-3], .. ., a[n-1 ][0] . Odredi trag učitane matrice i umnožak elemenata sporedne dijagonale. Napomena: trag matrice je zbroj elemenata glavne dijagonale. 12.280. NapiŠite program za množenje matrice skalarom . Naputak: Matricu možemo množiti nekim skalarom (brojem). Rezultat te operacije ponovno je matrica kojoj su svi elementi pomnoženi tim brojem. Npr: ako želimo skalarom x=5 pomnožiti matricu A čije elemente označavamo s ai.j i rezultat zapisati u matricu B, onda za elemente matrice B vrijedi bi.j =x·ai. r
A = 4 3 -2]
[1
° -3
'
x
=5
,
B= x · A = [20 15 -10]
5
° -15
12.281. Napišite program za oduzimanje matrica. 12.282. Napišite program za množenje matrica. Naputak: Množiti se mogu samo ulančane matrice. Matrice su ulančane ako je broj redova druge matrice jednak broju stupaca prve matrice. Važno je uočiti da množenje matrica nije komutativno; štoviše, ne moraju biti ni moguća oba umnoška. Rezultat množenja ponovno je matrica. Ako je A matrica tipa (n,m) , B matrica tipa (m, p), tada je rezultat množenja matrica e koja je tipa (n,p) , tj. ima redova koliko prva matrica, a stupaca koliko druga. Način množenja matrica pokazat ćemo na primjeru. Neka je A matrica tipa (2,3) s elementima aI,J, a B matrica tipa (3,2) čije elemente označavamo b.I.J. Rezultat množenja je matrica e tipa (2,2) . Elementi matrice e izračunavaju se na sljedeći način:
293
Informatika i računalstvo - zbirka zadataka
, odnosno:
e = [ao,o . bo,o + ao,1. bl,o + aO,2 • b2,o al ,o . bo,o + al ,1 . bl,o + a l,2 . b2 ,o
ao,o . bo,1+ ao,1. bl ,1 + aO,2 • b2 ,1] al ,o . bo,1+ a l ,1 . bl ,1 + al,2 . b2 ,1
Dakle, da bismo dobili prvi element matrice e, co.o potrebno je množiti prvi red matrice A (indeks tog reda je O) s prvim stupcem matrice B (indeks tog stupca je O) i to tako da se prvi element u redu množi s prvim elementom stupca, drugi element reda s drugim elementom stupca i tako dalje, a dobiveni umnošci se zbrajaju. Za element c,,' potrebno je isti postupak provesti s drugim redom matrice A (indeks mu je 1) i drugim stupcem matrice B (indeks mu je 1).
e
potrebno je navedeni postupak množenja i zbrajanja Analogno, za dobivanje elementa Ci,1 matrice provesti nad redom matrice A čiji indeks je i i stupcem matrice B čiji je indeks j . U kvadratnim matricama (broj redova jednak broju stupaca) uvijek su moguća oba umnoška (AB i BA) , ali komutativnost, naravno, ni sada ne vrijedi i rezultat je također kvadratna matrica istog reda.
12.283. Napišite deklaraciju za zapis koja neku osobu .
će
sadržavati ime i prezime te godinu
rođenja
za
12.284. Napišite program koji će izračunati i 1isati modul kompleksnog broja. Modul 2 2 kompleksnog broja definiran je kao + bžl = a + b .
la
12.285. Napišite program koji
će izračunati
udaljenost dviju
točaka
u koordinatnoj ravnini.
12.286. Napišite program koji će izračunati razliku dva kompleksna broja. Dobiveni kompleksn i broj ispišite kao uređeni par (realni dio, imaginarni dio). 12.287. Napišite program koji će izračunati umnožak dva kompleksna broja. Dobiveni kompleksni broj ispišite kao uređeni par (realni dio, imaginarni dio). 12.288. Napišite program koji će od zadanih opravdanih i neopravdanih izostanaka za svakog učenika izračunati njegove ukupne izostanke, kao i koliko sati u prosjeku je izostao svaki učenik tog razreda. Također treba ispisati imena učenika s najviše izostanaka. 12.289. Napišite program koji će za n učenika nekog razreda, iz zadanih podataka: ime, ocjena iz matematike, fizike i informatike, izračunati prosjek iz matematike te koliko učenika ima ocjenu dobar iz fizike. Program također treba ispisati najbolje učenike iz informatike.
294
12 Programiranje - Programski jezik
e
Datoteka 12.290. Napišite program koji će učitavati slova i spremati ih u datoteku slova.dat sve dok se ne upiše točka. 12.291. Napišite program koji će n brojeva spremiti u datoteku brojevi.dat. Te brojeve pročitajte iz datoteke te izračunajte njihovu sumu. 12.292. U datoteku marko. txt spremite n brojeva. Te brojeve uČitajte iz datoteke i ispišite ih, te ispišite koliko je od njih parnih brojeva. 12.293. Napišite program koji će u datoteku upisati sljedeće podatke o učenicima: ime, prezime, broj opravdanih, broj neopravdanih izostanaka. Za svakog učenika treba izračunati ukupan broj izostanaka i sve podatke zapisati u datoteku. Zatim treba podatke pročitati iz datoteke, pregledno ih ispisati te pronaći najveći pojedinačni ukupni broj izostalih sati. 12.294. Dodajte u datoteku brojevi.dat iz zadatka 12.291 još 5 brojeva i ponovno izračunajte njihovu sumu .
12.5.8 Pokazivači 12.295. Napišite program koj i će zamijeniti vrijednosti dviju prirodnih varijabli. 12.296. Napišite funkciju int du/j(char *5) koja
određuje
duljinu stringa.
12.297. Što će se ispisati izvođenjem sljedećeg programskog bloka: void main(){ int a = 1; int *b;
= &a; *b = 5; printf("%d %d",a,*b);
b
295
Informatika i računalstvo - zbirka zadataka 12.298. Što će se ispisati izvođenjem sljedećeg programskog bloka: void main(){ int niz[3] = {8,6,4}, *pn; pn = niz; pn++; printf("%d ",*( pn++ »;
12.299. Napišite program koji
će
sadržaj jednog stringa pridružiti drugom,
koristeći
pokazivače .
12.300. Napišite program koji će izračunati umnožak elemenata jednodimenzionalnog polja upotrebljavajući pokazivače. 12.301. Napišite program jednu ispod druge.
upotrebljavajući pokazivače
koji
će riječi učitane rečenice
12.5.9 Preprocesorske naredbe 12.302. Napišite parametrizirani makro koji rezultira manjom od dvije vrijednosti. 12.303. Što će se ispisati nakon što se izvrši: main () #define kvadrat(x) (x*x) { int a = 5; printf("\n %d",kvadrat(a»;
12.304. Što će se ispisati nakon što se izvrši: main () #define kvadrat(x) (x*x) { int a = 5; printf("\n %d",kvadrat(a++»;
296
ispisati
12 Programiranje - Programski jezik
e
297
Informatika i računalstvo - zbirka zadataka
13 OBJEKTNO ORIJENTIRANO PROGRAMIRANJE Temeljna ideja objektno orijentiranog programiranja je programski kod upotrijebiti u više aplikacija na
način
da se samo referencira na njega.
Osnovni pojmovi su klasa i objekt. Klasa je predložak za objekt, sastoji se od svojstava i metoda. Svojstva su neke
značajke,
dok su metode radnje nad
klasom. Instanciranjem klase dobivamo objekt i svojstvima pridružujemo vrijednosti. Vrijednosti se svojstvima pridružuju unutar posebne metode koju nazivamo konstruktor. Četiri su osnovna principa objektno orijentiranog programiranja: apstrakcija,
začahurivanje
(enkapsulacija) ,
nasljeđivanje
i
polimorfizam. Jedan od popularnijih programskih jezika koji
omogućavaju
objektno orijentirano
programiranje je Visual Studio C# (iz programskog paketa MS Visual Studio Team System 2008) . Oblik definicije klase u C# je: public class ime {
l/svojstva i metode }
Opći
oblik definicije metode je:
modifikator tip ime (parametri) {
l/definicija metode return vrijednost; }
Modifikator može biti:
298
•
pri va te - metodi se može pristupiti samo iz klase u kojoj se metoda nalazi
•
public - metodi se može pristupiti iz bilo koje klase koja koristi dotičnu klasu
13 Objektno orijentirano programiranje •
protected - metodi se može pristupiti iz klase u kojoj se metoda nalazi te iz
klasa koje nasljeđuju tu klasu, ali se ne može pristupiti iz klasa koje instanciraju tu klasu Osnovni tipovi podataka: •
neobjektni (npr. int - cjelobrojni, double - realni, ehar - znakovni, boal -logički)
•
objektni (npr. String, poredak, različite klase, ... )
Opći
oblik deklaracije varijabli:
modifikator tip ime;
Naredba grananja - if naredba: if (uvjet) naredbal; else naredba2; for petlja - broj ac poprima sve vrijednosti od poe vri do kon vri i pri prolasku
vrijednost brojača automatski se povećava ili smanjuje za 1 : for
(broj ac = poe- vri; brojae <= kon - vri; brojac++) naredba;
ili for
(brojae = poe - vri; brojae >= kon vri; brojae--) naredba;
while petlja - uvjet se provjerava na početku, ne mora se izvršiti niti jednom, a
izvršava se dok je uvjet istinit (true): while
(uvjet) naredba;
while petlja - uvjet se provjerava na kraju, uvijek se izvrši bar jednom, a izvršava se
dok je uvjet istinit (true): do while
naredba (uvjet);
299
Informatika i računalstvo - zbirka zadataka ZADACI
13.1 Osnovni pojmovi 13.1. Objasni razliku
i zm eđu
proceduralnog i objektno orijentiranog programiranja.
13.1.1 Klasa i objekt 13.2. Opiši pojam kl ase i objekta te objasni razliku. 13.3. Navedi nekoliko primjera klase iz svakodnevn og života. Što trebaš napraviti kako bi odabrana kl asa postala objekt?
13.1.2 Elementi klase 13.4. Navedi primjer nekoliko klasa iz svakodnevnog života, odredi im osnovna svojstva koja ju opisuju te nekoliko osnovnih metoda. 13.5. Koja bi svojstva, a koje metode imala klasa Cetverokut, koja predstavlja pojam četvero kuta?
m ate m ati čki
13.6. Objasni pojam instanciranja klase.
13.1.3 Microsoft Visual Studio 13.7. Što je MS Visual Stu dio Team System 2008? 13.8. Koji od s lj edeć ih jezika su sadržani u MS Visual Stu diu Team System 2008? a) Visual Pascal b) Visual C# c) Visual Basic d) Visual Logo
e) C g) PHP
300
f) Visual C+ +
13 Objektno orijentirano programiranje 13.9. Pokreni MS Visual Studio Team System 2008 te provjeri koje se vrste aplikacija mogu kreirati u Visual C#. S kojim od tih vrsta aplikacija si se susreo/susrela do sada? 13.10. Pokreni MS Visual Studi o Team System 2008, otvori neku postojeću Windows aplikaciju ili kreiraj novu te navedi najmanje 5 svojstava klase Form.
13.1.4
Događaji
13.11. Objasni pojam
događaja .
13.12. Pokreni MS Visual Studio Team System 2008, otvori neku postojeću Windows aplikaciju ili kreiraj novu te navedi najmanje tri osnovna događaja definiranih nad klasom Form.
13.1.5 Jednostavni Windows program 13.13. Koji su od navedenih elementi grafičkog sučelj a u Visual C#? a) Button
b) c) d) e) f)
CheckBox RadioCheckBox TextField ListBox Link
13.14. Napiši program s grafi čkim korisničkim suče lj em, koji će se sastoj ati od jednog gumba na kojem će pisati tekst OK te jedne labele. Klikom na gumb OK na labeli se treba ispisati poruka Kliknuli ste. Rješenje zadatka spremi u projekt pod nazivom: zad13-14.sln. 13.15. Napiši program koji će na ekranu crtati prozor i dva gumba (Gumb 1 i Gumb 2) . Na početku će biti aktivan samo prvi gumb (Gumb 1), klikom na prvi gumb on postaje neaktivan, a aktivan postaje drugi gumb. Klikom na drugi gumb on postaje neaktivan, a aktivan postaje ponovo prvi gumb .. . Rješenje zadatka spremi u projekt pod nazivom: zad13-15.sln.
301
Informatika i računalstvo - zbirka zadataka 13.1.6 Izvođenje programa s grafičkim korisničkim sučeljem 13.16. Objasni princip izvršavanja prog rama upravljanog d ogađajim a . Usporedi to sa standardnim programom kakve si do sada radila/radio. Potkrijepi primjerima!
13.2 Struktura klasa i metoda 13.2.2 Tipovi podataka 13.17. Koji su osnovni neobjektni tipovi podataka u C#? 13.18. Koji od identifikatora su praviln o napisani? Objasni zašto neki identifikator nije ispravno napisan. a) Pr ograml c) x -3 d) 2broja e) prv i b roj 13.19. Što zn ači rij eč partial u s lj edeće m zaglavlju kl ase public partial class Forml : Form? 13.20. Objasni pojam modifikatora 13.21 . S lj ed eće modifikatore povežite s opisom: private public protected
Elementu se može pristupiti iz svake klase koja koristi danu kl asu. Elementu se može pristupiti samo iz klase koja n as lj e đuj e danu klasu. Elementu se može pristupiti samo unutar klase u kojoj je element definiran.
13.22. Deklariraj s lj ed eće varijable: a) cjelobrojnu varij ablu a, kojoj će se m oć i pristupiti samo iz klase u kojoj se varijabla i nalazi b) realnu varijablu x, kojoj će se m oć i pristupiti iz svih kl asa koje koriste klasu u kojoj je varijabla dekl arirana c) l og i č ku varijablu uvjet, kojoj će se m oći pristupiti samo iz klase u kojoj se varijabla i nalazi
302
13 Objektno orijentirano programiranje 13.2.3 Struktura metode 13.23. Objasni značenje riječi void u sljedećem zaglavlju metode: private void t est () 13.24. Objasni značenje naredbe return e;
U
sljedećoj metodi. Što radi metoda zb r o j?
public int zbroj (int a , int b) {
int c = a + b ; return c ;
13.25. Napiši metodu koja će imati jedan cjelobrojni parametar (a) i vraćati a. Rješenje zadatka spremi u projekt pod nazivom: zad13-25.sln.
će
kvadrat broja
13.26. Napiši metodu koja će imati dva cjelobrojna parametra (a i b) i vraćati će:
a) razliku brojeva a i b b) umnožak brojeva a i b Rješenje zadatka spremi u projekt pod nazivom: zad13-26.sln.
13.2.4 Konstruktor klase 13.27. Što je po strukturi konstruktor klase? 13.28. Koja je namjena konstruktora klase?
13.3. Principi objektno orijentiranog programiranja 13.29. Navedi četiri osnovna principa objektno orijentiranog programiranja. 13.30. Objasni princip apstrakcije i enkapsulacije (potkrijepi primjerima) .
303
Informatika i računalstvo - zbirka zadataka
13.4 Elementi i tehnike objektno orijentiranog programiranja 13.4.1 Operacije i funkcije 13.31. Koja
će
biti vrijednost varijable e nakon izvršavanja odgovarajućih operacija, ako je
vrijednost varijable a a) e !a c) e
=
=
true i b
=
false ? b) e d) e
! (a && b )
13.32. Koje će biti vrijednosti a) 3 <= 5 b) 'af < ' A f
sljedećih
b && a =
a
&&
(b
II
(! b ) )
izraza?
c) 3 ! = 5
13.33. Koja će biti vrijednost varijab le x nakon djelovanja odgovarajući h operatora, ako je x cjelobrojna varijabla čija je vrijednost postavljena na 5? a) x ++; b) x = x + 3 ; c) x = x % 3 ; d) x * = 3 ; 13.34. Sljedećim metodama klase Math pridruži opise: Abs
Ceiling Pow Round Sqrt
potenciranje zaokruživanje na najbliži cijeli broj najmanji cijeli broj
veći
ili jednak od zadanog realnog broja
apsolutna vrijednost broja kvadratni korijen
13.35. Objasni pojam konverzije tipova podataka (casting). 13.36. Odredite vrijednost varijable a nakon izvršavanja izraza. a)a (int ) (3 .1 4 ); b) a (float ) (1 0 ); c) a (float ) (1 0 ) / 4; d) a (float ) (1 0 / 4 ); 13.37. Kreiraj klasu Cetverokut, čija će svojstva biti duljine stranica četverokuta, a jedina metoda će biti ona za računanje opsega četverokuta . Klasa treba imati dva konstruktora. Rješenje zadatka spremi u projekt pod nazivom: zad13-37.sln.
304
13 Objektno orijentirano programiranje 13.38. Definiraj kl asu Krug, č ij e će jedino svojstvo biti polumjer kru ga, a imat će i metode za rač un anj e opsega pripadne kružnice i površine kruga. Klasa treba imati dva konstruktora (bez parametra i s jednim parametrom). Rješenje zadatka spremi u projekt pod nazivom: zad13-38.sln . 13.39. Kreiraj kl asu Sort, koja će imati tri svojstva, prirodn e brojeve a, b i c. Klasa nadalje treba imati metode: min (), max () i s r e dn j i (), koje će vraćati , najmanji, najveć i i srednji po ve li čini od tri dana broja. Klasa treba imati dva konstruktora (bez parametara i s tri parametra). Rješenje zadatka spremi u projekt pod nazivom: zad13-39.sln . 13.40. *Kreiraj kl asu Kompleksni, č ij a će svojstva biti realni i imaginarni dio nekog kompleksnog broja. Nadalje klasa treba imati s lj edeće metode: • Ko mple k s ni zbro j (Komp l e k s n i z) - Vraća kompleksni broj koji se dobije zbrajanjem trenutnog kompleksnog broja (onoga č iji su realni i imag inarni dio elementi kl ase) i kompleksnog broja z. • Komple k s ni r az l i k a (Komplek s n i z ) - Vraća kompleksni broj koji se dobije oduzimanjem kompleksnog broja z i trenutnog kompleksnog broja . • Kompl e k s ni umno z a k (Komple k s n i z ) - Vraća kompleksni broj koji se dobije množenjem kompleksnog broj a z i trenutnog kompleksnog broja. • Komple k s ni kvocij e nt (Komple k s n i z) - Vraća kompleksni broj koji se dobij e dijeljenjem kompleksnog broja z i trenutnog kompleksnog broja . • d o uble a p solut n a Vr ij e dnost () - Vraća apsolutnu vrijed nost kompleksnog broja. S tri ng isp is () - Vraća kompleksni kao strin g, u obliku a + bi. • Kl asa treba imati dva konstruktora (bez parametara i s dva parametra). Rj ešenje zadatka spremi u projekt pod nazivom: zad13-40.sln.
13.4.2 Naredba if 13.41. Koja će biti vrijednost varijabli a i b nakon s lj ed ećeg dijela prog rama? int a 3, b if (a > b)
=
4;
a = a + b;
a) else
b
b + a;
305
Informatika i računalstva - zbirka zadataka
b)
int a = 3, b = a++i if (b > 3) a++i else b --i int a = 9, bi if (Math . Sqrt(a)
Math . Round( Math .Sqrt(a)) )
{
b = ai
a += 3i c)
else {
b (int ) Math . Sqrt(a) a = a * ai
i
13.42. Napiši metodu čiji će ulazni parametar biti prirodan broj n, metoda treba vraćati
true ako je n paran, a false inače . Rješenje zadatka spremi u projekt pod nazivom: zad13-42.sln. 13.43. Napiši metodu čiji će ulazni parametar biti prirodan broj n, metoda treba vraćati n -ti po redu element s ljedećeg niza: 1, 2, 3, 1, 2, 3, 1, 2, 3 ... Rješenje zadatka spremi u projekt pod nazivom : zad13-43.sln.
13.44. Napiši metodu čij i će ulazni parametri biti tri jednoznamenkasta prirodna broja (a, b, e). Metoda treba vraćati najveći troznamenkasti broj koji se dobije lijepljenjem ova tri
jednoznamenkasta broja. Primjerice, za brojeve: 3, 4, 1 je to broj 431. Rješenje zadatka spremi u projekt pod nazivom : zad13-44.sln .
13.45. Napiši metodu čiji će ulazni parametri biti tri prirodna broja. Ukoliko uneseni brojevi mogu biti tri uzastopna elementa nekog rastućeg aritmetičkog niza, metoda treba vraćati prvi s ljedeći element toga niza, inače treba vraćati -1 . Za niz ćemo reći da je aritm etički ukoliko mu je razlika između svaka dva susjedna člana jednaka, a niz je rastući ukoliko mu je svaki s lj edeći element veći od prethodnog. Primjerice, ako se radi o brojevima 7,3 i 5, ti brojevi su elementi rastućeg aritmetičkog niza 3,5,7, a prvi s lj edeći element je 9, dakle, metoda vraća 9. Dok, primjerice, brojevi 2, 4, 5 ne mogu biti elementi rastućeg aritmetičkog niza te metoda vraća -1. Rješenje zadatka spremi u projekt pod nazivom : zad13-45.sln.
306
13 Objektno orijentirano programiranje 13.4.3 Preopterećenje metoda 13.46. Objasni pojam 13.47. Po
čemu
preopterećenja
(overloading) metoda.
se moraju razlikovati dvije metode koje imaju isto ime?
13.48. Definirano je zaglavlje metode: public int zbroj(int a, int b). Koje od je moguće imati u istoj klasi istovremeno s navedenom metodom? a) public int zbroj (double a, double b) b) public int zbroj () c) public double zbroj (int a, int b) d) public int zbroj (int a, int b, int c) e) public int zbroj (int a, int b)
sljedećih
metoda
13.4.4 Uporaba kreirane klase 13.49. Kreiraj korisničko sučelje za unos duljina stranica četverokuta i računanje opsega. Klikom na gumb na labeli se treba pojaviti opseg četverokuta. Napomena: za rješavanje ovog zadatka koristi klasu Cetverokut (zadatak 36). Rješenje zadatka spremi u projekt pod nazivom: zad13-49.sln. 13.50. Kreiraj korisničko sučelje za unos duljina polumjera kruga i računanje opsega ili površine. Odabir opcije za računanje opsega ili površine realiziraj okruglim gumbima za odabir. Opseg ili površina računaju se klikom na gumb. Napomena: za rješavanje ovog zadatka koristi klasu Krug (zadatak 37). Rješenje zadatka spremi u projekt pod nazivom: zad13-50.sln. 13.51. Kreiraj korisničko sučelje za unos duljina tri broja te računanje najvećeg, najmanjeg te srednjeg broja i ispisa sva tri broja poslagana po veličini, od najmanjeg prema najvećem. Odabir opcije (Najmanji, Najveći, Srednji, Sortirani brojevi) realiziraj okruglim gumbima za odabir. Sve navedene radnje odvijaju se klikom na gumb. Napomena: za rješavanje ovog zadatka koristi klasu Sort (zadatak 38) . Rješenje zadatka spremi u projekt pod nazivom: zad13-51.sln. 13.52. Kreiraj program s grafičkim korisničkim sučeljem, koje će se sastojati od dva okvira za tekst i gumba Mijenjaj. Pokraj prvog okvira za tekst piše Centimetri , a pokraj drugog Inchi. Klikom na gumb Mijenjaj se iznos duljine u centimetrima treba pretvoriti u iznos duljine u inch ima (1 inch = 2.54 cm). Rješenje zadatka spremi u projekt pod nazivom: zad13-52.sln . 13.53. Kreiraj program s grafičkim korisničkim sučeljem, koje će se sastojati samo od jednog gumba. Kada se program pokrene, na gumbu treba pisati tekst Broj: o. Svakim klikom na gumb tekst na gumbu se treba izmijeniti i to tako da se izmijeni broj pokraj teksta Broj (nakon prvog klika na gumbu treba pisati Broj: 1, nakon drugog Broj: 2, ... ). Rješenje zadatka spremi u projekt pod nazivom: zad13-53.sln. 307
Informatika i računalstvo - zbirka zadataka 13.54. Kreiraj program koji će pretvarati stupnjeve Celzijusa u stupnjeve Fahrenheita i obrnuto. Program se treba sastojati od dva okvira za tekst Uedan za stupnejve Celzijusa, a drugi za stupnjeve Fahrenheita) te dva gumba: U Celzijuse i U Fahrenheite. Klikom na gumb U Celzijuse treba se pročitati vrijednost iz okvira za tekst u kojem je upisana vrijednost u stupnjevima Fahrenheita te se ta vrijednost treba pretvoriti u stupnjeve Celzijusa i upisati u okvir za tekst predviđen za unos temperature u stupnjevima Celzijusa. Klik na gumb U Fahrenheite treba raditi analogno. Formula za pretvaranje je sljedeća: Celzius = ~ (Fahrenheit - 32) Rješenje zadatka spremi u projekt pod nazivom: zad13-54.sln. 9
13.55. Kreiraj korisničko sučelje za unos realnog i imaginarnog dijela dvaju kompleksnih brojeva. Program treba omogućiti zbrajanje, oduzimanje, množenje i dijeljenje zadanih kompleksnih brojeva. Opcije se biraju odabirom odgovarajućeg okrug log gumba za odabir, a naredba se izvršava klikom na gumb. Rezultat izvršavanja naredbe ispisuje se na label i. Napomena: za rješavanje ovog zadatka koristi klasu Kompleksni (zadatak 38) . Rješenje zadatka spremi u projekt pod nazivom: zad13-55.sln.
13.4.5
Nasljeđivanje
13.56. Objasni pojam
i polimorfizam
nasljeđivanja
klasa.
13.57. Što se nasljeđuje, a što ne nasljeđuje nasljeđivanjem neke klase? 13.58. Objasni pojam polimorfizam . 13.59. Kreiraj klasu Cetverokut koja će imati svojstva duljine stranica i metodu koja vraća opseg četverokuta. Klasa Cetverokut treba imati dva konstruktora (bez parametara i s četiri parametra). Nadalje, slijedeći hijerarhiju, kreiraj još klase Pravokutnik i Kvadrat S pripadnim konstruktorima te metodom za računanje. Rješenje zadatka spremi u projekt pod nazivom: zad13-59.sln. 13.60. Kreiraj klasu NTerokut koja će predstavljati pravilni n-terokut. Klasa treba imati dva svojstva: broj stranica n-terokuta te duljinu stranice n-terokuta. Klasa treba imati dva konstruktora te metode za računanje mjere središnjeg kuta n-terokuta i opsega n-terokuta. Nadalje kreiraj klasu Sesterokut koja nasljeđuje klasu NTerokut, ima jedan konstruktor te metodu za računanje površine šesterokuta. Rješenje zadatka spremi u projekt pod nazivom: zad13-60.sln.
308
13 Objektno orijentirano programiranje 13.4.6 Rad s datotekama 13.61. Poveži klase s
odgovarajućim
opisima.
StreamReader
čitanje
StreamWriter
pisanje podataka u datoteku
podataka iz datoteke
13.62. Pokreni Visual C# te napiši najmanje 5 metoda kase. a) streamReader b) StreamWriter 13.63. Napiši program koji će kreirati grafičko korisničko sučelje koje će se sastojati od jednog okvira za tekst te dva gumba Učitaj i Spremi. Klikom na gumb Učitaj, učitava se tekst iz datoteke zad13-63.txt, i ispisuje u okviru za tekst. Datoteka sadrži samo jedan redak i u njemu se nalazi odgovarajući tekst. Klikom na gumb Spremi, sadržaj okvira za tekst se sprema u datoteku zad13-63.txt, u njen prvi red. Rješenje zadatka spremi u projekt pod nazivom : zad13-63.sln. 13.64. Odaberi neke od zadataka iz intervala 49-52. Odabrane zadatke izmijeni tako da se u okvire za tekst (za unos podataka) inicijalno upišu neki brojevi. Brojevi koji se upisuju učitavaju se iz tekstualne datoteke zad13-63.txt. U svakom redu datoteke nalazi se po jedan broj . Nadalje, prilikom zatvaranja programa, vrijednosti upisane u okvire za tekst spremi natrag u datoteku (svaki broj u svoj red). Rješenje zadatka spremi u projekt pod nazivom: zad13-64.sln.
13.4.7 Petlje 13.65. Što će pisati u varijabli n nakon sljedećeg dijela programa? int n = l; for (int i n *= i;
13.66. Objasni razliku
l;
i
između
<= 5; i++)
for i while petlje.
309
Informatika i računalstvo - zbirka zadataka 13.67. Što će pisati u varijabli p nakon izvođenja sljedećeg dijela programa? int n
= 5, P = n;
while
(n
> l)
P *= n;
13.68. Napiši program s grafičkim kori sn ičkim suče ljem koje će zadržavati okvir za unos teksta, labelu i gumb Prost. Korisnik u okvir za unos teksta unosi prirodan broj n. Klikom na gumb Prost na label u se treba ispisati poruka: Broj je prost, ukoliko je broj n prost, odnosno: Broj nije prost, ukoliko n nije prost broj. Za broj ćemo reći da je prost ako je djeljiv samo s jedan i sa samim sobom i niti jednim trećim brojem. Takvi su primjerice brojevi: 2, 3, 5, 7, 11, .... Rješenje zadatka spremi u projekt pod nazivom: zad13-68.sln . 13.69. Napiši program s grafičkim koris ničkim sučeljem koje će zadržavati okvir za unos teksta, labelu i gumb Savršen. Korisnik u okvir za unos teksta unosi prirodan broj n. Klikom na gumb Savršen na labelu se treba ispisati poruka: Broj je savršen, ukoliko je broj n savršen , odnosno: Broj nije savršen, ukoliko n nije savršen. Za broj ćemo reći da je savršen ako je jednak zbroju svojih djelitelja, ne računajući njega samog (npr. 6, 28 ... ). Rješenje zadatka spremi u projekt pod nazivom : zad13-69.sln . 13.70. Napiši program s grafičkim koris ničkim sučeljem koje će zadržavati okvir za unos teksta, labelu i gumb Računaj . Korisnik u okvir za unos teksta unosi prirodan broj n. Klikom na gumb Računaj na labelu se treba ispisati n-ti po redu element Fibbonaccijevog niza. Fibonaccijev niz je niz čija su prva dva elementa jednaka 1, a svaki sljedeći element jednak je zbroju prethodna dva elementa Fibonacijevog niza. Prvih nekoliko elemenata Fibonacijevog niza su: 1, 1, 2, 3, 5, 8, 13, 21 ... Rješenje zadatka spremi u projekt pod nazivom: zad13-70.sln. 13.71. Napiši program s grafičkim kori snič kim s učeljem koje će zadržavati okvir za unos teksta, label u i gumb Računaj. Korisnik u okvir za unos teksta unosi prirodan broj n. Klikom na gumb Računaj na labelu se treba ispisati: a) zbroj znamenaka broja n b) najveća znamenka broja n Rješenje zadatka spremi u projekt pod nazivom: zad13-71.sln. 13.72. Napiši program s grafičkim kori sničkim sučeljem koje će zadržavati okvir za unos teksta, labelu i gumb Binarni. Korisnik u okvir za unos teksta unosi prirodan broj n. Klikom na gumb Binarni na labelu se treba ispisati binarni zapis dekadskog broja n. Rješenje zadatka sprem i u projekt pod nazivom : zad13-72.sln.
310
13 Objektno orijentirano programiranje 13.4.8 Poredak (niz) 13.73. Koje će biti vrijednosti elemenata poretka nakon izvršavanja sljedećih naredbi? in t [J a = {l, 2, 3, 4, 5}; for (int i = O; i < a.Length; i++) ari] = ari] + i;
13.74. Napiši program s grafičkim korisničkim sučeljem koje će se sastojati od gumba i labele. Nadalje je kreirana datoteka zad13-74.txt, koja se sastoji od nekoliko brojeva (svaki broj je zapisan u svom retku). Klikom na gumb program treba na label u ispisati najveći i najmanji broj koji se nalazi u datoteci. Rješenje zadatka spremi u projekt pod nazivom: zad13-74.sln . 13.75. Napiši program s grafičkim korisničkim sučeljem koje će se sastojati od gumba i labele. Nadalje je kreirana datoteka zad13-7S.txt, koja se sastoji od nekoliko brojeva (svaki broj je zapisan u svom retku). Klikom na gumb program treba na labelu ispisati sve brojeve iz datoteke sortirane od najmanjeg prema najvećem. Rješenje zadatka spremi u projekt pod nazivom: zad13-7S.sln. 13.76. Napiši program s grafičkim korisničkim sučeljem koje će se sastojati od gumba i labele. Nadalje je kreirana datoteka zad13-76.txt, koja se sastoji od tri retka i tri stupca. U redcima i stupcima nalaze se rezultati igre križić- kružić. Rezultati igre su znakovi x ili o. Klikom na gumb program treba na labelu ispisati pobjednika (x ili o), odnosno nema pobjednika ili neriješeno. Rješenje zadatka spremi u projekt pod nazivom: zad13-76.sln.
Primjer ulaza: xox xoo xxo Tekst na labeli: Pobjednik je x.
13.4.9 Elementi grafičkog korisničkog sučelja 13.77. NapiŠi program s grafičkim korisničkim sučeljem na kojem će se nalaziti padajuća lista, dva okvira za tekst te gumb Generiraj. Klikom na gumb Generiraj u padajuću listu se trebaju upisati svi brojevi iz segmenta [a, b J , pri čemu je a broj unesen u prvi okvir za 311
Informatika i računalstvo - zbirka zadataka tekst, dok je b broj unesen u drugi okvir za tekst. Rješenje zadatka spremi u projekt pod nazivom: zad13-77.sln. 13.78. Napiši program koji će računati cijenu pizze. Program se treba sastojati od jednog prozora na kojem će se nalaziti padajuća lista unutar koje se nalaze vrste pizza (Margherita, Vesuvio, Capricciosa, Piccante, Frutti di Mare). Nadalje na prozoru se treba nalaziti jedna obična lista, u kojoj je moguće istovremeno odabrati više stavki. U navedenoj listi se nalazi popis priloga (R ajčica, Masline, Vrhnje, Feferoni, Jaje, Ajvar). Na prozoru se treba nalaziti labela na kojoj piše cijena pizze. Cijena pizze se računa na osnovu cijene odabrane pizze te ukupnih cijena svih priloga. Cijene pizza su: • Margherita - 30 Cijene priloga su: • Rajčica - 5 • Masline - 5 • Vesuvio - 32 • Vrhnje - 7 • Capricci osa - 34 • Feferoni - 5 • Piccante - 38 • Jaje - 3 • Frutti di Mare - 35 • Ajvar - 7 Rješenje zadatka spremi u projekt pod nazivom: zad13-78.sln .
13.4.10 Klasa String 13.79. Navedi nekoliko metoda za rad s klasom String (najmanje 5) . 13.80. Napiši program s g rafičk im korisničkim suče lj em na kojem će se nalaziti okvir za tekst, label a i gumb. U okvir za tekst korisnik unosi neku riječ. Klikom na gumb na label i se treba upisati nova riječ koja se iz ulazne dobiva tako da se iza svakog slova ulazne rij eč i doda razmak. Rješenje zadatka spremi u projekt pod nazivom: zad13-80.sln . 13.81. Napiši program s grafičkim korisničkim sučeljem na kojem će se nalaziti okvir za tekst, labela i gumb. U okvir za tekst korisnik unosi neku riječ . Klikom na gumb na labeli se treba upisati: Pa/indrom, ukoliko je riječ unesena u okvir za tekst palindrom, odnosno: Nije pa/indrom, ukoliko unesena riječ nije palindrom . Za riječ ćemo reći da je palindrom ukoliko se jednako čita s lijeva na desno i s desna na lijevo (palindromi su riječi: kisik, kapak .. .). Rješenje zadatka spremi u projekt pod nazivom: zad13-81.sln. 13.82. Napiši program s grafičkim kori s ničkim sučeljem na kojem će se nalaziti okvir za tekst, labela i gumb. U okvir za tekst korisnik unosi neku rečenicu (niz riječi odvojenih jednim ili više razmaka). Klikom na gumb na labeli se treba upisati broj riječi u rečenici. Rješenje zadatka sprem i u projekt pod nazivom: zad13-82.sln.
312
13 Objektno orijentirano programiranje 13.83. Jedan od načina šifriranja teksta je da sve znakove ciklički pomaknemo za nekoliko znakova. Napiši program s grafičkim korisničkim sučeljem na kojem će se nalaziti dva okvira za tekst, labela i gumb. U prvi okvir za tekst korisnik unosi neki tekst, koji će se sastojati samo od velikih slova engleske abecede. U drugi okvir za tekst korisnik unosi jedan prirodan broj (do 10). Klikom na gumb na labeli se treba ispisati tekst koji dobijemo šifriranjem ulaznog teksta, uz zadani pomak, pri čemu je pomak broj koji je korisnik upisao u drugi okvir za tekst. Napomena: Niti jedan znak Šifriranog teksta ne smije izaći izvan velikih slova engleske abecede. Znakovi se ciklički ponavljaju; nakon Z dolazi ponovo A. Rješenje zadatka spremi u projekt pod nazivom: zad13-83.sln. 13.84. Ponekad se umjesto nekih slova hrvatske abecede (LJ, NJ, Ć, Č, Š, Ž, Đ, DŽ) piŠU zamjenski znakovi i to prema sljedećoj tablici.
I ~~= I
I Znak Zamjena
Napiši program s grafičkim korisničkim sučeljem na kojem će se nalaziti okvir za tekst, label a i gumb. U okvir za tekst korisnik unosi neki tekst, koji će se sastojati samo od velikih slova engleske abecede te znakova = i -. Klikom na gumb na labeli se treba ispisati broj slova hrvatske abecede. Rješenje zadatka spremi u projekt pod nazivom: zad13-84.sln. Primjer: LJULJAC=KA ima 7 slova u hrvatskoj abecedi.
13.4.11 Rad s datumom i vremenom 13.85. Pokraj odgovarajućeg elementa klase DateTime napiši radi li se o svojstvu ili metodi te kratak opis. AddDay Month Second
' - - - - 1 -
-
-
-
-
-
-
-
-
,
13.86. Kreiraj program s grafičkim korisničkim sučeljem koje će se sastojati od jedne labele i gumba Točno vrijeme. Klikom na gumb na labeli se treba pojaviti današnji datum i točno vrijeme. Rješenje zadatka spremi u projekt pod nazivom: zad13-86.sln. 13.87. Kreiraj program s grafičkim korisničkim sučeljem koje će se sastojati od padajućih listi za dan, mjesec i godinu, labele i gumba Računaj starost. Pomoću padajućih lista korisnik odabere datum svog rođenja, a klikom na gumb na labeli se pojavi starost u danima. Starost u danima se računa na osnovu unesenog datuma rođenja i današnjeg datuma. Rješenje zadatka spremi u projekt pod nazivom: zad13-87.sln. 313
Informatika i računalstvo - zbirka zadataka
DODATAK
..
QBASIC osnovne naredbe i funkcije ~ .Ji.IeI:-, 111:1 · ~DI •• prenosi kontrolu drugoj proceduri, potprogramu DECLARE deklarira potprograme koje koristite u programu GOSUB bezuvjetan skok u potprogram; računalo pamti mjesto skoka i nakon izvođenja naredbe RETURN vraća se na sljedeću naredbu glavnog programa izlaz iz FUNCTION potprograma EXIT FUNCTION
CALL
EXIT SUB FUNCTION ... END FUNCTION SUB ... END SUB
izlaz iz SUB potprograma izraz koji označava početak i kraj funkcije izraz koji ozn ačava početak i kraj potprograma
I ll.~l'.,fIT.JJ""'~1iF.TT;To
vraća trenutačni
INKEY$ INPUT$ INPUT
učitava
LINE INPUT LOCATE
broj retka u kojem je pozicioniran kursor znak s tipkovnice niz znakova s tipkovnice
omogućava
ulaz podataka s
tipkovnice učitava bilo koji niz znakova s tipkovnice pomiče pokazivač na tekstualnom zaslonu u zadani red i stupac
PRINT ispisuje tekst na zaslonu PRINT USING ispisuje tekst na zaslonu u zadanom formatu POS (n) vraća trenutačnu broj stupca u kojem je pozicioniran kursor SPC preskače n mjesta u PRINT naredbi TAB pomiče poziciju ispisa u PRINT naredbi
314
·111rt!I(;'!ill:iwu.· ~
or:
ASC CHR$ DATE$ INSTR
pretvara znak u ASCII kod pretvara ASCII kod u znak ispiše datum traži i vraća redni broj pojavljivanja podniza u nizu
LCASE$ LEFT$ LEN LTRIM$ MID$
pretvara veliko slovo u malo funkcija oblika LEN$(a$,n); stvara podniz od n prvih znakova u nizu a$ daje duljinu niza vraća
kopiju niza bez vodećeg znaka
funkcija oblika MID$(niz, izraz1,izraz2); stvara podniz od mjesta koje definira izraz1 u duljini izraza2
RIGHT$
funkcija oblika RIGHT$(a$,n) ; stvara podniz od n-tog znaka do kraja niza a$
SPACE$ STR$
stvara niz od n praznih mjesta stvara niz koji predstavlja numeričku vrijednost izraza
STRING$ funkcija oblika STRING$(n,a); stvara niz od n znakova a ASCII šifrom a
• •
CSRLlN
učitava
I ~ f.Tl' •
UCASE$ VAL 1lW1EI·
.mHI
CIRCLE COLOR DRAW GET LINE PAINT
pretvara malo slovo u veliko pretvara znak u broj
·U1il!l~1 crta kružnicu odabire boju teksta, boju pozadine i boju crte grafička naredba koja interpretira znakovnu ulaznu vrijednost i crta objekt
sprema sliku sa zaslona crta ravn u crtu popunjava područje zadanom bojom ili uzorkom PALETTE mijenja boju na paleti boja POINT čita broj boje piksela sa zaslona PRESET crta točku na zaslonu, kao i PSET PSET crta točku na zaslonu PUT postavlja crtež spremljen pomoću naredbe GET na zaslon SCREEN ovisno o ulaznoj vrijednosti određuje tip zaslona TIME$ ispisuje trenutačno vrijeme VIEW definira veličinu dijela grafičkoga zasio· na na kOjem se prikazuje izlazni crtež
Dodatak 1~F.Tl"'
•
;Y;ls~IE3~1
DEFDBL DEFINT DEFLNG DEFSNG DEFSTR DOUBLE
..
..
.....
definira varijablu tipa DOUBLE, realni brojevi dvostruke točnosti definira varijablu tipa INTEGER, cijeli brojevi definira varijablu tipa LONG, cijeli brojevi dvostruke točnosti definira varijablu tipa SINGLE, realni brojevi jednostruke točnosti definira varijablu tipa STRING , znakovi tip podataka, realni brojevi dvostruke točnosti
INTEGER LONG
tip podataka, cijeli brojevi tip podataka, cijeli brojevi dvostruke
SINGEL
tip podataka, realni brojevi jednostruke točnosti znakovni tip podataka
točnosti
STRING
1~F.T7· ••
·IEmITeTil
DO LOOP
FOR ... NEXT EXIT DO EXIT FOR IF ... THEN ... ELSE SELECT CASE
.
lW.l.i.!:.I ~.
! U---UU;
h'Jl:l' :I.'}:1I[ot:<, II.I:
ABS COS INT LOG LOG10 MOD RND RANDOMIZE
SIN SQR EXP
IH•
..
.mm:Dm
ponavlja naredbe između DO i LOOP ili sve dok postavljeni uvjet nije istinit (DO LOOP UNTIL uvjet) ili sve dok je postavljeni uvjet istinit (DO LOOP WHILE uvjet) ponavlja naredbe između FOR i NEXT određeni broj puta omogućava alternativni izlaz iz DO LOOP petlje omogućuje alternativni izlaz iz FOR petlje uvjetno izvodi određene naredbe omogućava
višestruki izbor, zamjenjuje niz IF ... THEN naredbi WHILL .WEND ponavlja naredbe između WHILE i WENO sve dok je postavljeni uvjet istinit
apsolutna vrijednost broja kosinus kuta zadanog u radijanima daje najveći cijeli broj manji ili jednak izrazu daje prirodni logaritam izraza daje dekadski logaritam izraza vraća ostatak pri dijeljenju dva broja daje slučajni broj između O i 1 aktivira generator slučajnih brojeva (funkcija RNO) tako da se stvaraju različiti redoslijed i brojeva sinus kuta zadanog uradijanima kvadrat izraza eksponent izraza
•
• :lt:.ltlll--I:II •• .
< <= = > >= <>
manje manje ili jednako jednako veće veće
1nr.rnfm •• AND EQV IMP NOT OR XOR
ili jednako
različito
. logički
I, konjunkcija ekvivalencija implementacija logički NE, negacija logički ILI, disjunkcija ekskluzivno (isključivo) ILI
315
Informatika i računalstvo - zbirka zadataka PASCAL osnovne naredbe i funkcije
.
l:fll •
+
* / div mod
.
-
•
zbrajanje oduzimanje množenje dijeljenje cjelobrojno dijeljenje ostatak cjelobrojnog dijeljenja
~I·· -I"U....
< <= = > >= <>
manje manje ili jednako jednako veće veće
ili jednako
~~je nad nizovima Dee Ine Odd Pred Suee
..
-
Coneat Copy Delete Insert Length Pos
umanjuje vrijednost u nizu uvećava vrijednost u nizu je li broj paran prethodnik u nizu sljedbenik u nizu
. ·1 E'i!.tll.L. "l'l11W
združivanje, objedinjavanje stringova kopiranje dijela stringa brisanje dijela stringa umetanje stringa očitava duljinu stringa očitava mjesto u nizu
različito
~. konverzije IIlt;Ti1f,f!ft I. • -
and not or
. konjunkcija (I) negacija (NE) disjunkcija ( ILI)
Chr Ord Round Str Trune Val UpCase
pretvara ASCII u karakter ordinalni broj karaktera pretvara realni u cjelobrojni broj pretvara broj u karakter zaokruživanje pretvara karakter u broj pretvara malo slovo u veliko
vraća
naredba pridruživanja rm ~
... lIe
·101
.
l:um
IIIi
Addr CSeg Dispose DSeg FreeMem GetMem Mark MemAvail MaxAvail New Ots Ptr Release Seg SPtr SSeg
316
vraća adresu objekta vrijednost kod segmenta brisanje sa heap-a vraća vrijednost data segmenta oslobađa memoriju rezervira dio heap-a markira heap pokazivač vraća količinu raspoložive memorije maksimalna veličina bloka kreiranje pokazivača ofset adresa pokazivača brisanje sheapa segmentni dio adrese vraća sadržaj SP registra adresa stek segmenta
Dodatak I~
-IHI'
. -.
Hi Lo Move ParamCount ParamStr Random Randomlze Size Ot
Swap
ChOir GetDir MkDir RMDir
read
1[IfiI!l'E
.ltl'[O{- '1IIIl'11:iIlI!I1 .t:H'
dodjeljivanje naziva datoteci zatvaranje datoteke detekcija kraja datoteke brisanje datoteke detekcija l/O pogreške preimenovanje datoteke pristup datoteci pristup datoteci
Assign Close Eot Erase IOResult Rename Reset Rewrite
~
.
.. . . . -.
Append Eoln Flush SeekEot SeekEoln SetTextBut
BIokWrite FilePos FileSize Seek Truncate
- 1~1.t:H.l(- :t:
. -.
a
••
učitavanje
•
podataka u jednoj ulaznoj
liniji readln
writeln
učitavanje podataka u više ulaznih linija ispisivanje podataka u jednoj izlaznoj liniji ispisivanje podataka u više izlaznih linija
ILl:t:. - •• -~~. 'IL",
~I'
-Irmnrm
..
IH
omogućava višestruki izbor, zamjenjuje niz if naredbi programska petlja, ponavljanje for blok naredba dok je zadani uvjet istinit, odnosno različit od nule prekida izvršavanje programa i goto prenosi kontrolu na naredbe s navedenom oznakom omogućava grananje u programu it ovisno o vrijednosti logičkog izraza repeat __ until naredba za ponavljanje, broj ponavljanja ovisi o ispunjenju nekog uvjeta while naredba ponavljanja, uvjet se ispituje na početku, naredbe unutar petlje ponavljaju se sve dok uvjet nije ispunjen
case
lit:
dodavanje sloga na kraj detekcija kraja retka zapis datotečnog buffera pristup kraju datoteke pristup kraju retka setiranje tekst buffera
I~'1 fmTOF.Tli Itl:) I • • f'\i i1r:l~
BIokRead
- :t:IIlt:id
.
mijenjanje trenutačnog direktorija očitavanje trenutačnog direktorija kreiranje novog direktorija brisanje direktorija
LIlf:r..ur.
write 1 ~'1fmTOF.Tlim:-
- 'H' -
1[!]l131 •
popunjava memoriju karakterima vraća vrijednost višeg bajta vraća vrijednost nižeg bajta kopiranje u memoriju broj parametara unaredbenom retku očitava string naredbe nog retka slučajni broj inicijalizacija slučajnih brojeva veličina varijable zamjena interupt vektora
FillChar
-11:iIlI!I L&.L:;U.I ~
čitanje
bloka s diska upisivanje bloka na disk pozicija zapisa u datoteci veličina datoteke izravan pristup podatku u datoteci brisanje slogova datoteke
317
Informatika i računalstvo - zbirka zadataka Naredbe i funkcije za. r~d s crtežima arc crta kružni luk bar crta ispunjeni pravokutnik bar3d crta kvadar circle crta kružnicu cleardevice briše grafički ekran closegraph zatvara grafički mod rada detectgraph određuje grafički drajver i mod drawpoly crta poligon ellipse crta elipsu
crta ispunjenu elipsu crta ispunjeni poligon ispunjava zatvoreno područje vraća vrijednost boje pozadine vraća vrijednost trenutačno aktivne boje crtanja getimage sprema u memoriju bit image zadanog pravokutnog područja vraća broj potrebnih bajtova za imagesize spremanje slike initgraph inicijalizira grafički mod line crta crtu između zadanih točaka lineto crta crtu od trenutačno točke do zadane outtextxy ispisuje tekst u grafičkom modu počevši na zadanoj poziciji pieslice crta ispunjeni kružn i iSječak putimage prikazuje bit image iz memorije putpixel crta točku rectangle crta pravokutnik sector crta ispunjeni isječak elipse setbkcolor postavlja boju pozadine setcolor postavlja boju za crtanje setiinestyle postavlja stil crte settextjustify postavlja način poravnavanja teksta settextstyle postavlja parametre za tekst, tip slova, veličinu i orijentaciju
filleIIipse fillpoly floodfill getbkcolor getcolor
318
Dodatak
e + osnovne naredbe i funkcije •• · 1#:1 tll1
~li111
zbrajanje oduzimanje množenje dijeljenje ostatak pri cjelobrojnom dijeljenju inkrementiranje dekrementiranje
+
*
/ % ++
--
~I" -
•
< <=
manje manje ili jednako
--
jednako
> >= !=
veće veće
&&
logički
!
logički
II
logički
..
-
=
+= -= *= /= %=
.
!~
•
.
,-
.
-
abs acos asin atan cos exp log log10 pow rand randomize sin sqrt tan
apsolutna vrijednost broja arkus kosinus argumenta arkus sinus argumenta arku s tangens argumenta kosinus argumenta eksponent argumenta prirodni logaritam argumenta logaritam baze10 argumenta potenciranje xY slučajni broj inicijalizacija slučajnih brojeva sinus argumenta kvadratni korijen argumenta tangens argumenta
ili jednako
različito
I ~I"
Ih'lF:l, :.T,.l:l IToI: OI
I, konjunkcija NE, negacija ILI, disjunkcija
!I~Lt.:l:Wll
jednostavno dodjeljivanje dodijeli zbroj dodijeli razliku dodijeli umnožak dodijeli kvocijent dodijeli ostatak pri cjelobrojnom dijeljenju
strcat strchr strcmp strcpy str!en strncat strncpy strrev strset strstr strrch r
-I[mnl~·
!Hlll[-
spaja dva stringa traži prvu pojavu zadanog znaka u stringu uspoređuje dva stringa kopiranje jedan string u drugi očitava dužinu stringa spaja prvih n znakova jednog stringa u drugi string kopira prvih n znakova stringa u drugi string okreće string (ovi-> ivo) sve znakove stringa zamjenjuje željnim znakom traži u zadanom stringu prvu pojavu nekoga stringa traži zadnju pojavu zadanog znaka u stringu
319
Informatika i računalstvo - zbirka zadataka -
pretvara string u realni broj pretvara string u cijeli broj vraća najmanji cijeli broj veći od argumenta pretvara realan broj u string vraća najveći cijeli broj manji od argumenta pretvara cijeli broj u string velika slova pretvara u mala pretvara string u realni broj dvostruke preciznosti mala slova pretvara u velika
atof atoi eeil fevt floor itoa strlwr strtod strupr
...
Ih.., F.TiTi F.1TO liT,
~~.
·~Ufl!llm
-IDI
.
ealloe
alocira blok memorije (alocirani blok memorije je inicijaliziran nulama)
free malloe
delocira (osobađa) blok memorije alocira blok memorije (alocirani blok memorije je ne inicijaliziran) kopira blok memorije s jedne adrese na drugu (ako se blokovi preklapaju, kopiranje neće biti ispravno obavljeno) uspoređuje blokove memorije kopira blok memorije (radi i kad se blokovi preklapaju) realocira blok memorije (novolocirani dio bloka memorije je ne inicijaliziran)
memepy
mem cm p memmove
realloe
IOIml fclose feof ferror fgete fgets fopen fprintf fpute fputs fread fseanf fseek ftell fwrite
11!lI:1!!I1' rl1T:Ti11
zatvaranje datoteke detekcija kraja datoteke detekcija l/O pogreške čitanje jednog znaka iz datoteke čitanje stringa iz datoteke pristup datoteci formatirani upis podataka u datoteku upis jednog znaka u datoteku upis stringa u datoteku čitanje podataka iz datoteke formatirani učitavanje podataka iz datoteke izravan pristup podatku u datoteci vraća trenutačnu poziciju u datoteci upis bloka podataka u datoteku
lF.IiI::J I.1"liTM, .1ll7trenutačnoga
mijenjanje
očitavanje trenutačnoga
mkdir
kreiranje novog direktorija briše datoteku brisanje direktorija
remove rmdir
L·~iJ.lfJF.1
geteh getehar
putehar puts
320
. ~ rim!] I ij:1[e <1~d
getcurdir
puteh
uzlazno sortira niz elemenata pretražuje uzlazno sortirani niz
.
ehdir
gets printf
qsort bseareh
.. .
seanf
direktorija direktorija
[;:) I il'I'C:I". Or:J učitavanje
jednog znaka jednog znaka učitavanje niza znakova formati rani ispis podataka ispis jednog znaka ispis jednog znaka ispis niza znakova formati rani unos podataka učitavanje
Dodatak 1 1~f'"TN. 'r:1D~fEl1MI~1 ~
arc bar bar3d circle cleardevice closegraph detectgraph drawpoly ellipse filleIIipse fillpoly floodfill getbkcolor getcolor getimage imagesize initgraph line lineto outtextxy pieslice
puti mage
crta kružni luk crta ispunjeni pravokutnik crta kvadar crta kružnicu briše grafički ekran zatvara grafički mod rada određuje grafički drajver i mod crta poligon crta elipsu crta ispunjenu elipsu crta ispunjeni poligon ispunjava zatvoreno područje vraća vrijednost boje pozadine vraća vrijednost trenutačno aktivne boje crtanja sprema u memoriju bit image zadanog , pravokutnog područja vraća broj potrebnih bajtova za spremanje slike inicijalizira grafički mod crta crtu između zadanih točaka crta crtu od trenutačne točke do zadane ispisuje tekst u grafičkom modu počevši na zadanoj poziciji crta ispunjeni kružni isječak
prikazuje bit image iz memorije putpixel crta točku rectangle crta pravokutnik sector crta ispunjeni isječak elipse setbkcolor postavlja boju pozadine setcolor postavlja boju za crtanje setIinestyle postavlja stil crte settextjustify postavlja način poravnavanja teksta settextstyle postavlja parametre za tekst, tip slova, veličinu i orijentaciju
1~J:17- •• -j-~~TeTili7.IIl"1Il!1!1nI'I'" ~.
..
1,,;.:mDtt
'11:1111 I
H
if
iskakanje iz while, for, do ili switch naredbe prelazak na izvršavanje sljedeće iteracije while, for ili do naredbe ponavlja naredbe između do i while sve dok je postavljeni uvjet istinit ili različit od nule programska petlja, ponavlja blok naredbi dok je zadani uvjet istinit, odnosno različit od nule uvjetno izvodi određene naredbe
return
vraća
break continue do ... while
for
switch case while
..
- char double FILE float
int long short signed struct typedef unsigned void
vrijednost višestruki izbor, zamjenjuje niz if naredbi ponavlja blok naredbi dok je uvjet istiniti ili različit od nule omogućava
. ,Iiffi] (l] I
..
... .
tip podatka, znakovni tip podatka, realni brojevi dvostruke točnosti datoteka tip podatka, realni brojevi tip podatka, cijeli brojevi modifikator tipa podataka, povećava opseg modifikator tipa podataka, smanjuje opseg modifikator tipa podataka, omogućava predznak deklaracija strukture definicija tipa modifikator tipa podataka, bez predznaka tip podataka bez vrijednosti
321
Informatika i računalstvo - zbirka zadataka C# osnovne klase,
događaji
i operacije
II ~. F.J:r.]I;Ii]ijj1
I~
Text
Tekst koji se nalazi u naslovnoj traci prozora
Name
Ime prozora
BackColor BackgroundImage
Pozadinska boja prozora Slika u pozadini prozora
Icon
Sličica
Size
Veličina
'l"i1:or.1I
Svojstva Text Name BackColor ForeColor BorderStyle Font Size TextAlign Enabled
Svojstva
prozora prozora
Događaji
Tekst koji se nalazi u okviru za tekst Ime okvira za tekst Pozadinska boja okvira za tekst Boja teksta na okviru za tekst Oblik ruba okvira za tekst Font znakova na okviru za tekst Veličina
okvira za tekst
Poravnanje teksta na okviru za tekst
Click
Klik na nekom dijelu prozora
DoubleClick
Dvostruki kl ik na nekom dijelu prozora
Click
Klik na okviru za tekst
Load
Učitavanje
TextChanged
Promjena sadržaja okvira za tekst
Okvir za tekst je aktivan
Događaji
prozora
113B~IIT:F.Till :r*I. -Ii' Metode StreamReader (String put, Encoding enc)
Konstruktor klase Čita jedan znak iz datoteke i vraća njegov odgovarajući ASCII kod
int Read () ; String ReadLine() ;
Učitava
void Close
Zatvara vezu s datotekom
()
Svojstva bool EndOfStream
jednu liniju teksta iz datoteke
Sadrži informaciju jesmo li na kraju datoteke
1 l1c~~"f:~
Metode StreamWriter (String put, Encoding enc)
Konstruktor klase
void WriteLine (String tekst);
Piše tekst u datoteku i prelazi u novi redak
void Write (String tekst) ;
Piše tekst u datoteku
void Close
Zatvara vezu s datotekom
()
1:~~"JF.1Ii1
Metode double Abs
(double x)
int Ceiling (double x) double Cos
(double x)
double Exp (double x)
322
Apsolutna vrijednost realnog broja x Najmanji prirodan broj veći ili jednak od realnog broja x (Ma th . Ceiling (3 . 7 ) = 4) Kosinus kuta x Vrijednost funkcije er
int Floor (double x)
Najveći
double loglO (double x)
Logaritam po bazi 10 realnog broja x
double Max (double x, double y) double Min (double x, double y)
Veći
double Pow (double a, double x)
Vrijednost vrijednost potencije if
double Round (double xr int n) double Sin (double x)
Sinus kuta x
double Sqrt (double x)
Drugi korijen realnog broja x
prirodan broj manji ili jednak od x (Math . Floor (3 . 7 ) = 3)
od brojeva x i y
Manji od brojeva x i y Realni broj x zaokružuje na n decimala
Dodatak 1l3t!E1' . Svojstva int Day
Dan u mjesecu
int Month
Mjesec
int Year
Godina
int Hour
Sat
int Minute
Minute
int Second
Sekunde
Metode DateTime AddDay (int d) DateTime AddMonth (int m)
Datum i vrijeme koje
će
biti nakon d dana
Datum i vrijeme koje
će
biti nakon m mjeseci
DateTime AddYear (int y) DateTime AddHour (int h) DateTime AddMinute (int min)
Datum i vrijeme koje
će
biti nakon y godina
Datum i vrijeme koje
će
biti nakon h sati
Datum i vrijeme koje
će
biti nakon min minuta
DateTime AddSecond (int sec)
Datum i vrijeme koje
će
biti nakon sec sekundi
11IDnE§Uli:m Metode bool Equals (String s) int IndexOf (String s) String Replace (String sl, String s2)
true ako su dva stringa jednaka
Vraća
poziciju prvog pojavljivanja stringa s ustringu
Svako pojavljivanje stringa sl zamjenjuje stringom s2 Vraća
String[] Split (char[] c)
čemu
dio stringa, m znakova, počevši od znaka s indeksom n . Kao i kod poretka prvi znak u stringu ima indeks 0, drugi 1, itd.
Vraća
String ToLower ()
slova
String Trim ()
Vraća
string koji se dobije iz
slova
odgovarajućim
•• :r.n
I~
Ime
padajuće
liste
BackColor
Pozadinska boja liste
ForeColor
Boja teksta
FlatStyle
Oblik
Font
Font znakova na padajućoj listi
padajuće
padajuće
padajuće
liste
liste
Size
Veličina padajuće
Enabled
Padajuća
Items
Popis stavki
liste
lista je aktivna padajuće
Svojstva Name
Ime liste
BackColor
Pozadinska boja liste
ForeColor
Boja teksta liste
BorderStyle
Oblik ruba liste
Font
Font znakova na listi
Size
Veličina padajuće
Enabled
Gumb za odabir je aktivan
Items
Popis stavki
Odabrana je neka druga stavka u popisu
liste
padajuće
liste
Događaji
liste
Događaji
SelectedIndexChanged
string koji se dobije iz početnog stringa zamjenom svih velikih malim slovima, ostali znakovi ostaju isti
odgovarajućim
početnog stringa zamjenom svih malih velikim slovima, ostali znakovi ostaju isti Vraća string koji se dobije iz početnog brisanjem svih suvišnih razmaka na početku i na kraju stringa
String ToUpper ()
Svojstva Name
poredak stringova koji se dobije rastavljanjem stringa, pri je razdjeljnik znak
Vraća
String Substring (int n, int m)
.
Vraća
SelectedIndexChanged
Odabrana je neka druga stavka u Iisti
DoubleClick
Dva puta je kliknuto na stavku u Iisti
323
Informatika i računalstvo - zbirka zadataka 13ml~
1CĐ'iIE~ Svojstva Text
Tekst koji se nalazi na labeli
Svojstva Text
Tekst koji se nalazi na gumbu
Name
Ime labele
Name
Ime gumba
BackColor
Pozadinska boja labele
BackColor
Pozadinska boja gumba
ForeColor
Boja teksta na label i
BackgroundImage
Slika u pozadini gumba
FlatStyle
Oblik label e
FlatStyle
Oblik gumba
Font
Font znakova na label i
ForeColor
Boja teksta na gumbu
Size
Veličina
Font
TextAlign
Poravnanje teksta na labeli
Size
Enabled
Labela je aktivna
TextAlign
Poravnanje teksta na gumbu
Enabled
Gumb je aktivan
label e
Događaji
Click
l3l!IE1 :F.T•
Događaji
Klik na labelu
Click
Klik na gumb
MouseHover
Postavljanje miša nad gumb
• :mill
Svojstva
1 13D~:rr.m[:}:tI: ;n
Text
Tekst koji se nalazi na okruglom gumbu za odabir
Svojstva
Name
Ime gumba za odabir
Text
Tekst koji se nalazi u za tekst
BackColor
Pozadinska boja gumba za odabir
Name
Ime područja za tekst
FlatStyle
Oblik gumba za odabir
BackColor
Pozadinska boja područja za tekst
ForeColor
Boja teksta na području za tekst
BorderStyle
Oblik ruba
Font
Font znakova u području za tekst
Size
Veličina područja
Enabled
Područje
ForeColor
Boja teksta na gumbu za odabir
Checked
Vraća
Font Size TextAlign Enabled
True ako je gumb odabran
Font znakova na gumbu za odabir Veličina gumba za odabir Poravnanje teksta na gumbu za odabir Gumb za odabir je aktivan
Događaji
Click
označen/odznačen
područja
području
za tekst
za tekst
za tekst je aktivno
Događaji
Click
Klik na područje za tekst
TextChanged
Promjena sadržaja područja za tekst
Klik na gumb
CheckedChanged Gumb je
324
Font znakova na gumbu gumba
Veličina
Dodatak -, ,-
,
.. 1I~.Ji1IT.
,
"
i f (uvjet)
,
- , - IIT:-
"
inače
naredbal ; else naredba2 ; for (bro j ac = poc_vri; bro j ac <= kon_ vri; broj ac++) naredba ;
Ukoliko je uvjet istin it izvršava se naredba1, naredba 2
ili
Petlja koja se izvršava naredbu dok je vrijednost manja/veća od konačne vrijednosti
for (brojac = poc_ vri; brojac >= kon_ vri; brojac-- ) naredba ;
do
Vraća
return
•• iF.lF-1:-F.1
"
~: -
vrijednost
" -
I liJ
int
Cjelobrojni
--
double
Realni
!=
Različito
bool
Logički
<
char
Znakovni
<=
Manje Manje ili jednako
>
Veće
>=
Veće
..
.
,-
+
Zbrajanje
-
Oduzimanje
.
,-
Jednakost
, ,
Množenje
=
Pridruživanje
+=
Povećanje
%
Ostatak cjelobrojnog dijeljenja
Negacija
&&
Logički
II
Logički
i (AND) ili (OR)
l3I
I Povećanje varijable za 1 IUmanjenje varijable za 1 ']ill'-
2
Cjelobrojno i realno dijeljenje
!
.. . . . . .
++ --
ili jednako
/
" -
•
++
~i
*
"
neće
Izvršava naredbu sve dok je uvjet istinit (naredba će se uvijek izvršiti bar jednom jer se uvjet provjerava na kraju petlje)
n aredba ; while (uvjet)
.
brojača
Izvršava naredbu sve dok je uvjet istinit (naredba se izvršiti niti jednom ako je uvjet na početku lažan)
while (uvjet) naredba ;
-, ,
se izvršava
sadržaja varijable
-=
Umanjenje sadržaja varijable
*=
Množenje sadržaja varijable
/=
Dijeljenje sadržaja varijable
%=
Ostatak dijeljenja sadržaja varijable
3 4 5 6 7
8
* /
+
96
-
< > <= >=
!=
&& II = +=
*= /= %=
325
Informatika i racunal tvo
zbirka adataka
TIPKOVNIČKI PREČACI Za brzo pisanje korisni su prečaci na tipkovnici. Ovdje su prikazani samo oni koji vrijede u hrvatskoj verziji Officea. Legenda + oznaka za istovremeno pritiskanje dviju ili više tipki razdvaja tipke koje je potrebno pritisnuti jednu za drugom
1. Windows XP 1.1. Standardni prečaci
Imm
l~
Q
Otvaranje izbornika s desne strane ili otvaranje podizbornika.
<=-
Otvaranje izbornika s lijeve strane ili zatvaranje podizbornika.
ALT+Enter
Dijaloški okvir za svojstva
ALT+ESC
Kretanje
ALT+F4
Zatvaranje
ALT +povlačenje objekta
Pravljenje
ALT +SHIFT + TAB
Kružno premještanje na prethodni otvoreni prozor.
među
objekta.
trenutačnoga prečaca
za
odgovarajućeg
prozora.
označeni
objekt.
izbornika (u nazivu ima podcrtano slovo).
ALT +slovo
Prikaz
ALT +SPACEBAR
Prikaz kontrolnog izbornika trenutačnoga prozora.
ALT+TAB
Kružno premještanje na sljedeći otvoreni prozor.
ALT+.[).
Otvaranje okvira s
CTRL+A
Označavanje
padajućim
popisom.
svih objekata u oknu/prozoru.
CTRL+C
Kopiranje.
CTRL+ESC
Otvaranje/zatvaranje Start izbornika.
CTRL+F4
Zatvaranje aktivnog dokumenta u programu koji otvaranje više dokumenata istovremeno.
CTRL+povlačenje
objekta
Kopiranje
CTRL+SHIFT + povlačenje objekta Pravljenje CTRL+SHIFT +kursorska tipka
326
označenog
prozorima redom kOjim su otvarani.
označenog
objekta.
prečaca
označeni
Označavanje
za
omogućava
objekt.
dijela teksta.
CTRL+V
Lijepljenje.
CTRL+X
Izrezivanje.
CTRL+Z
Poništavanje zadnje radnje .
CTRL+<=-
Premještanje
pokazivača
na
početak
CTRL+Q
Premještanje
pokazivača
na
početak sljedeće riječi.
CTRL+1I
Premještanje
pokazivača
na
početak
CTRL+.[).
Premještanje
pokazivača
na
početak sljedećega
prethodne
riječi.
prethodnog odlomka. odlomka.
DELETE
Brisanje.
ENTER
Jednako što i dvoklik na objekt ili klik lijevom tipkom miša na gumb.
ESC
Otkazivanje trenutačne radnje ili jednako što i klik na gumb Cancel.
F1
Sustav
F2
Preimenovanje
F3
Traženje datoteka ili mapa.
F4
Otvaranje okvira s
pomoći
za Windows. označenog
objekta.
padajućim
popisom.
Dodatak ml
r,:;1
F5
Osvježavanje sadržaja aktivnog prozora/mape .
F6
Kretanje
među
elementima u prozoru ili na radnoj površini.
F10
Aktiviranje trake izbornika u trenutačnom prozoru.
SH IFT nakon umetanja medija u optički pogon
S prječavanje
SH IFT +DELETE
Trenutačno
SHIFT +F10
Skočni
automatskog
izvođenja
medija.
brisanje označenog objekta bez slanja u Koš za smeće.
izbornik za
označeni
označavanje
objekt Uednako što i desni klik mišem).
SHIFT +kursorska tipka
Redom skupno
SHIFT +povlačenje objekta
Premještanje
slovo
U trenutačno otvorenom izborniku premještanje na pripadajuću naredbu (koja u nazivu ima podcrtano slovo).
1.2.
Prečaci
I~
označenog
s Windows tipkom
I~
I~
lB
Otvaranje/zatvaranje izbornika Start.
lB+BREAK
Dijaloški okvir Svojstva sustava.
J!B+D
Minimiziranje svih prozora i prikaz radne površine. Program Moje Računalo .
:3ll+E
objekata.
objekta.
~
:lll+L
Trenutačna
l!I+R
Dijaloški okvir Pokreni.
odjava iz sustava Windows . Minimiziranje trenutačno otvorenih lB+M prozora (ne vrijedi za dijaloške okvire). J!ll+SHIFT + M Poništavanje naredbe 11l+M.
Pomicanje po gumbima na programskoj traci. Dijaloški okvir Upravitelj pomoćnih lIll+U programa. ;::;; Skočni izbornik za označeni obiekt. \I\findovvsov sustav namoći . ::!ll+F1 ~--------~---------------~------------~ ~I'_ ~----------~--------------------------~ Program za traženje mapa ili datoteka. CTRL+JlI+F Program za traženje računala . lB+F
1Il+ TAB
1.3. Windows Explorer I~
mum
BACKSPACE END HOME F4 F5 F6 slovo - na brojčanoj tipkovnici + na brojčanoj tipkovnici * na brojčanoj tipkovnici
Premještanje na nadređenu mapu (za jednu razinu iznad) . Premještanje na dno popisa u okviru s mapama ili datotekama Premještanje na vrh popisa u okviru s mapama ili datotekama. Premještanje na popis mapa u okviru Adresa. Osvježavanje sadržaja aktivnog okna ili objekta. Premještanje iz okna u okno . Premještanje na mapu čije ime počinje zadanim slovom Sažmi mapu - sažimanje trenutačne mape. Proširi mapu - prikazivanje podmapa prve podrazine. Proširi sve - prikazivanje svih pod mapa trenutačne mape. Proširivanje trenutačne mape ako nije proširena, ili prelazak na prvu podmapu . Sažimanje trenutačne mape ako je proširena, ili prelazak na nadre đenu mapu.
Q
<::o
Popis svih
pre čaca
Windowsa XP u datoteci XP _precaci.pdf
327
Informatika i računalstvo - zbirka zadataka 2. Prečaci zajednički svim Office 2003 programima
~ ALT+F8 ALT +F11 ALT +k6d
CRTl +RAZMAKNICA
I~ Otvaranje prozora s makro naredbama. Otvaranje sučelja Visual Basic for Application. Daje ANSI znak za utipkani dekadski kod na brojčanoj tipkovnici. Npr. za znak € treba pritisnuti tipku ALT i na numeričkoj tipkovnici utipkati 0128. Otvaranje izbornika Okna zadatka. svih objekata/cijelog
dokumenta. CTRL+B
Podebljavanje teksta.
CTRL+C
Kopiranje izraza/objekta.
CTRL+F
Traženje izraza u dokumentu .
CTRL+F1
Prikazivanje/skrivanje Okna zadataka.
CTRL+F6
Kružno premještanje na sljedeći dokument u sklopu iste Office aplikacije.
CTRL+H
Traženje i zamjena izraza/oblikovanja u dokumentu.
CTRL+I
Ukošeni tekst.
CTRL+K CTRl+kursorska tipka
Umetanje hiperveze (linka). Pomicanje piksel.
grafičkog
objekta za jedan
CTRl+mijenjanje Mijenjanje veličine grafičkog objekta u veličine odnosu na središte objekta.
I~
CTRL+N
Otvaranje novog dokumenta.
CTRL+O
Dijaloški okvir Otvaranje dokumenta.
CTRL+P
Dijaloški okvir Ispis dokumenta.
CTRL+S
Spremanje dokumenta.
CTRL+SHIFT+F6
Kružno premještanje na prijašnji dokument u sklopu iste Office aplikacije.
CTRL+SHIFT +mijenjanje
Proporcionalno mijenjanje veličine objekta u odnosu na središte objekta. Podcrtavanje teksta.
veličine Označavanje
CTRL+A
~
CTRL+U
grafičkog
CTRL+V
Lijepljenje izraza/objekta.
CTRL+W
Zatvaranje dokumenta (ne i programa)
CTRL+X
Izrezivanje izraza/objekta.
CTRL+Y
Ponavljanje zadnje radnje.
CTRL+Z
Poništavanje radnje.
F1
Okno zadataka
F7
Provjera pravopisa.
F12
Dijaloški okvir Spremi kao ...
kursorske tipke
Pomicanje grafičkog objekta za jednu jedinicu mreže.
SHIFT+F7
Okno zadatka Tezaurus.
SHIFT + mijenjanje
Mijenjanje veličine grafičkog objekta uz zadržavanje proporcija objekta.
veličine
Pomoć .
3. Word 2003 3.1. Kretanje po dokumentu
328
Prečac
Namjena
Prečac
<>
Jedan znak ulijevo.
HOME
Na
~
Jedan znak udesno .
CTRL+END
Na kraju dokumenta
Namjena početak
početak
retka
"fr
Gore jedan redak
CTRL+HOME
Na
.().
Dolje jedan redak
PAGE DOWN
Pomicanje dolje za jedan zaslon
CTRL+<>
Jedna
riječ
ulijevo
PAG E UP
Pomicanje gore za jedan zaslon
CTRL+~
Jedna
riječ
nadesno
CTRL + PAGE DOWN
CTRL+"fr
Jedan odlomak gore
Na vrh sljedeće stranice Na vrh prethodne stranice
CTRL+.().
Jedan odlomak dolje
TAB
Jedna
ćelija
udesno (u tablici)
SHIFT + TAB
Jedna
ćelija
ulijevo (u tablici)
END
Na kraj retka
CTRL + PAGE UP SHIFT +F5
dokumenta
Nakon otvaranja dokumenta, premještanje na točku unosa koja je bila aktivna pri zadnjemu zatvaranju dokumenta.
Dodatak 3.2. Pisanje i oblikovanje
Iimtlm
.
.
.
I~
.
.
.
ALT lijevi+SHIFT
Prebacivanje između izgleda tipkovnice i jezika.
CTRL+Q
Uklanjanje oblikovanja odlomka.
ALT+CTRL+S
Podjela prozora dokumenta na dva dijela.
CTRL+R
Poravnanje odlomka nadesno .
ALT+CTRL+Y
Ponavljanje traženja (nakon zatvaranja prozora Traženje i zamjena).
CTRL+RAZMAKNICA
Označavanje
CTRL + SHIFT +A
Promjena slova u velika.
ALT +Iijeva tipka miša
bloka teksta (u obliku
Uklanjanje svih oblikovanja dijela teksta.
označenog
pravokutnika) CTRL+O
Dodavanje/uklanjanje jednog proreda koje prethodi odlomku
CTRL+SHIFT +C
Kopiranje oblikovanja iz teksta.
CTRL+1
Jednostruki prored
CTRL+SHIFT +D
Dvostruko podcrtan tekst.
CTRL+2
Dvostruki prored
CTRL+SHIFT +F3
Lijepljenje sadržaja Šiljka (sadržaj iz Šiljka dobiven s CRTL+F3 zalijepi se u tekst).
CTRL+S
Postavljanje proreda na 1,5 redaka
CTRL+SHIFT +H
Primjena skrivenog oblikovanja teksta.
CTRL+ALT+F
Smanjenje fonta označenog teksta za jednu točku. Povećanje fonta označenog teksta za jednu točku.
CTRL+SHIFT +K
Promjena slova u mala.
CTRL+SHIFT +M
Uklanjanje nalijevo .
riječi
CTRL+SHIFT + Q
Promjena fonta označenog teksta u font Symbol.
CTRL + SHIFT +RAZMAKNICA
Stvaranje razmaka.
CTRL+ALT+G CTRL+ BACKSPACE
Brisanje jedne
ulijevo .
CTRL+C, CTRL+C
Prikazivanje Officeovog međuspremnika.
uvlačenja
odlomka
nerastavljajućeg
CTRL+D
Dijaloški prozor Font Uednako kao Oblikovanje> Font).
CTRL+SHIFT + T
Smanjivanje viseće uvlake.
CTRL+DELETE
Brisanje jedne
riječi
CTRL+SHIFT +V
CTRL+E
Centriranje odlomka.
CTRL+ SPOJNICA
CTRL+ F3
Izrezivanje sadržaja u Šiljak (dodavanje sadržaja jedan za drugim u međuspremnik) .
CTRL+T
Primjena kopiranog oblikovanja na tekst. Stvaranje nerastavljajuće spojnice. Stvaranje viseće uvlake.
CTRL+G
Odlazak na stranicu, oznaku stranice, fusnotu, tablicu, komentar, grafiku ili neko drugo mjesto.
F2+nova točka unosa+ENTER
Premještanje teksta i grafike.
CTRL+J
Obostrano poravnanje odlomka.
SHIFT+F1
Pregledavanje oblikovanj a teksta.
CTRL+L
Poravnanje odlomka ulijevo.
SHIFT +F3
Promjena malihNELlKIH slova.
CTRL+M
Uvlačenje
nadesno.
odlomka ulijevo.
Popi s svih prečaca MS Worda 2003 u datoteci Word2003_precaci.pdf
329
ln ormatika i racunal t o
zbi ka adataka
4. Excel 2003 4.1. Kretanje po dokumentu
Ii1'rtml
~'ill
~{!]
Iml"~
ALT + PAGE DOWN
Pomicanje nadesno za jedan zaslon .
F6
Prijelaz u sljedeće okno u razdvojenom radnom listu .
ALT + PAGE UP
Pomicanje ulijevo za jedan zaslon.
HOME
Pomicanje na
CTRL + BACKSPACE
Pomicanje da bi se prikazala aktivna
kursorske tipke
Pomicanje za jednu ćeliju prema gore, prema dolje, lijevo ili desno.
ćelija.
CTRL + END
Pomicanje na posljednju lista. početak
ćeliju
CTRL + HOME
Pomicanje na
CTRL + kursorska tipka
Pomicanje na rub podataka.
CTRL + PAGE DOWN CTRL + PAGE UP
Pomicanje na
F5
Prikaz dijaloškog okvira Idi na.
radnog
radnog lista.
list u radnoj knjizi .
Pomicanje na prethodni list u radnoj knjizi.
retka.
PAGE DOWN
Pomicanje prema dolje za jedan zaslon.
PAGE UP
Pomicanje prema gore za jedan zaslon.
SHIFT + F4
Ponavljanje posljednje akcije Traženje (isto kao i Traži sljedeće).
SHIFT + F5
Prikaz dijaloškog okvira Traženje.
SHIFT + F6
Prijelaz u prethodno okno u radnom listu koji ste razdvojili.
SHIFT + F11
Umetanje novog radnog lista.
trenutačnoga područja
sljedeći
početak
TAB
Pomicanje po otključanim radnom listu.
ćelijama
u
zaštićenom
Popis svih prečaca MS Excela 2003 u datoteci ExceI2003_precaci.pdf
5. PowerPoint 2003 5.1. Rad sa slajdovima i prozorima
It.m®a
~
~
ALT+F5
Vraćanje
ALT+F10
normalnu veličinu. Maksimiziranje PowerPointovog prozora.
PowerPointovog prozora na
CTRL+Enter
Premještanje iz naslova u tekst / Premještanje iz teksta na naslov u novom slajdu.
CTRL+F5
Vraćanje
prozora prezentacije na normalnu
I~
SHIFT+F5
Pokretanje Slide Show izvođenja prezentacije od trenutačnog slajda nadalje.
CTRL+G
Dijaloški okvir za prikazivanje/ skrivanje mreže i vodilica.
CTRL+SHIFT +G
Grupiranje
grafičkih
objekata.
veličinu.
CTRL+SHIFT +H
CTRL+F10
Maksimiziranje prozora prezentacije.
CTRL+SHIFT +J
Razgrupiranje grafi čkih objekata. Regrupiranje grafičkih objekata.
CTRL+M
Umetanje novog slajda.
CTRL+Q
Izlaz iz programa PowerPoint.
SHIFT+ gumb Normal View
Prebacivanje iz Normal View u Slide Master View.
CTRL +SHIFT+M
Umetanje novog slajda nalik na prethodni.
SHIFT + gumb Slide Show form current
Prebacivanje iz Slide Show from current u Setup Show.
F5
Pokretanje Slide Show prezentacije.
SHIFT + gumb Slide Sorter View
Prebacivanje iz Slide Sorter View u Handout Master View.
izvođenja
Popis svih prečaca MS PowerPointa 2003 u datoteci PP2003_precaci.pdf
330
Dodatak 6. FrontPage 2003 6.1. Uporaba pogleda
I§
~
CTRL+ SHIFT +8
Uključivanje/isključivanje
prikaza
F12
neispisivih znakova. Prikazivanje/skrivanje okna Folder List. Kružno biranje između Code, Design , Split i Preview pogleda.
ALT+F1 ALT + PAGE DOWN / ALT+PAGE UP
Kursorske tipke SH IFT +Ć"
Uključivanje/isključivanje
CTRL+ / CTRL+PAGE DOWN / CTRL+PAGE UP
prikaza HTML tag ova u Design pogledu. Kružno biranje između Code, Design, Split i Preview pogleda.
SHIFT+q
li.lEJ Prikazivanje trenutačne web-stranice u web-pregledniku. Kretanje kroz hiperlink čvorove (u pogledu Hyperlinks) . Širenje trenutačnoga čvora i premještanje ulijevo (u pogledu Hyperlinks). Širenje trenutačnoga čvora i premještanje udesno (u pogledu Hyperlinks).
Popis svih prečaca MS FrontPagea 2003 u datoteci FP2003_precaci.pdf
TI PKOVNIČKE KRATICE
tJ
l:.J Poništi
t j lzreži
Kopiraj
Stvori prečac do odabranog objekta
Kopiraj odabrani objekt
••
• ..:.J Odaberi sve
Odabrani objekt trajno izbriši ne stavljajući ga u Smeće
Prikazuje svojstva odabranog objekta
•
Otvara izbornik prečac za aktivni prozor Prebacivanje između objekata redom kojim su otvarani Prikaži izbornik Start
•
Zatvara aktivni dokument u programima koji dopuštaju istodobno otvaranje više dokumenata
•
•
Zatvori aktivni objekt ili program
Prebacivanje
između
otvorenih objekata
Prikaži izbornik prečac za odabrani objekt Sprječava
automatsko pokretanje CD-a
početak sljedeće riječi
Pomakni pokazivač na početak prethodne riječi
Pomakni pokazivač na početak odlomka
Pomakni pokazivač na početak prethodnoga odlomka
Pomakni pokazivač na
sljedećega
• m~lIiiill Označi
dio teksta
•
Označi više od jednog objekta ili označi dio teksta
331
ASCII tablica
o D D 1 2 3 4 5 6 7 8
D D D D D D D D
D D D D D D D D
9 Tab Tab
!
65
A
A
97
a
a
129
D
34
u
66
B
B
98
b
b
130
35
#
#
67
e
e
99
c
c
131
36
$
$
68
D
D
100 d
d
132
38 39 40 41
& , (
& , (
)
200 Č
232
č
R
If
233
e
(j
h
136
D
73 74
J
J
106
j
j
138 Š
137 %0
k
139
12 FF FF
44
,
,
76
L
L
108
I
I
140 S
13 eR eR
45
-
-
77
M
M
109 m
m
141
D ~ D ~ D ~ D D l D !! D 11 D § D D I D T D l D -+
46
78
N
N
110 n
79
O
O
111
17 18 19
..
112 P
~
205
i
=
237
i
Y
n
142 Ž
ft.
174 ®
«
206
i
~~
238
I
t
o
143 Z
Ć
175 Z
»
207 čl
lX
239 d'
...
208
đ
240
đ
P
144
q
145
50
2
2
82
R R 114 r
r
146
83
S
s
147
D E ,
u
t
t
53
5
5
85
U
U
117 u
u
149
54
6
6
86
V
V
118 v
v
55
7
7
87 W
W
119 w
56
8
8
88
X
X
120 x
57
9
9
89
Y
Y
121
58
90
Z
27 Esc +-
59
91
[
D D D D D D D
60
92
29 30 31
<
<
\
.
176
o
Đ
H
209 N
Đ
241
rl
..
T
178
I
210 N
tl
242 li
,
6
179
I
211 6
E
243 6
ci
180
~
212 6
CI
244 6
-
L:
181
§
t
A
213 6
til
245 ci
150 -
182 11
A
214 6
[
246 ci
w
151 -
S
183
~
215
i
247
x
152
D s
184
~
216 R
e
248
f
Y
Y
153
TM
249
LJ
Z
122 z
z
154 š
250 II
[
123 {
{
\
124
I
93
l
l
62
>
>
94
1\
1\
63
?
?
95
125 }
}
>
x
6
185 q
~I
217 O
j
O
186
~
U
218 (j
r
219 O
155
)
t
187 »
;J
156
s
t
188 L
,!J
220 O
157 t'
t.
.. 189
Z
221 Y
190
l'
z
222
191
z
126
- -
158 ž
x
127
D
159 t.
č
o
-
177 ±
lJ
I
y
l
,.
= =
61
il
173
116
28
171
Z
T
26
čl
t
T
25
r
236
84
24
~
I~
4
23
234
204 E
4
22
.II.
Č
52
21
202 ~
I
(
148 ..
20
170 $
e e
113 q 115 s
6
235
Q
S
~
.,
'Ii'
81
3
201
E
169 ©
203 E
1
3
e
ž
1
51
l
I I
« ., 172
49
Q
fi
~
104 h
P
rl
š
H
P
a
<;:
<;:
80
228
231
135 :j:
107 k
O
-
(!,
g
K
O
196 ft.
ii
103 g
K
48
-"!
199 <;:
G
75
16
164
ž
G
o
til
167 § .. 168
71
+
I
227 ii
Š
+
I
f-
Ć
43
47
195 A
230
D D
15
II
tl
fi..
134 t
42
14
163 t
a 6
198 Ć
f
10 LF LF 11
226
Ž
f
i
T
166
102
i
194 A
229
F
105
6
+
F
I
r.,
197 L
70
I
225 Et
~
Ć
. . )
.L
133 ...
E
H
193 A
[
E
72
i
-
u 165 Ac
69
e
6
162
! u
128 €
e
r-
e D a .. a
33
101
224
161
96
%
L
li
@
%
192 R
160
64 @
37
a
<;:
32 Spc Spc
,
T
223 r.,
••
251
..
(j
Ll
252 li
lt
T
253 Y
r
()
254
•
•
255
t