osnove programiranja - predavanja

113
1 OSNOVE PROGRAMIRANJA OSNOVE PROGRAMIRANJA - predavanja - - predavanja - Veleučilište u Rijeci Veleučilište u Rijeci Stručni studij informatike Stručni studij informatike mr.sc. Alen Jakupović mr.sc. Alen Jakupović e-mail: [email protected] e-mail: [email protected] konzultacije: po dogovoru na e-mail ili tel. 091-5971002 konzultacije: po dogovoru na e-mail ili tel. 091-5971002

Upload: zeljko-baskovic

Post on 27-Nov-2014

562 views

Category:

Documents


37 download

TRANSCRIPT

Page 1: Osnove programiranja - predavanja

1

OSNOVE PROGRAMIRANJAOSNOVE PROGRAMIRANJA- predavanja -- predavanja -

Veleučilište u RijeciVeleučilište u Rijeci

Stručni studij informatikeStručni studij informatike

mr.sc. Alen Jakupovićmr.sc. Alen Jakupović

e-mail: [email protected]: [email protected]: po dogovoru na e-mail ili tel. 091-5971002konzultacije: po dogovoru na e-mail ili tel. 091-5971002

Page 2: Osnove programiranja - predavanja

2

Osnove programiranja - predavanjaOsnove programiranja - predavanja

13.03.13.03. Uvod u kolegij. Pojam i definicija programiranja i programske podrške. Razvoj programskih Uvod u kolegij. Pojam i definicija programiranja i programske podrške. Razvoj programskih jezika. Pojam i definicija algoritma, programa i pseudokoda. Analiza primjera logičkog jezika. Pojam i definicija algoritma, programa i pseudokoda. Analiza primjera logičkog problema.problema.

20.03.20.03. Pojam i definicija osnovnih logičkih struktura (Sekvencija-slijed; Selekcija-odabir; Iteracija-Pojam i definicija osnovnih logičkih struktura (Sekvencija-slijed; Selekcija-odabir; Iteracija-ponavljanje; Skokovi) – analiza primjera u pseudokodu. Pojam i definicija dijagrama toka ponavljanje; Skokovi) – analiza primjera u pseudokodu. Pojam i definicija dijagrama toka programa (blok dijagram) – analiza primjera.programa (blok dijagram) – analiza primjera.

03.04.03.04. Pojam i definicija varijabli i tipova podataka – analiza primjera. Pojam i definicija operatora – Pojam i definicija varijabli i tipova podataka – analiza primjera. Pojam i definicija operatora – analiza primjera.analiza primjera.

17.04.17.04. Analiza primjera za logičku strukturu odabira – selekcije. Analiza primjera za logičku strukturu Analiza primjera za logičku strukturu odabira – selekcije. Analiza primjera za logičku strukturu iteracije – ponavljanja.iteracije – ponavljanja.

2424.04..04. 1. Kolokvij. 1. Kolokvij. Pojam i definicija funkcije – analiza primjera.Pojam i definicija funkcije – analiza primjera.

0088.05..05. Pojam i definicija jednodimenzionalnih polja – analiza primjera. Pojam i definicija nizova Pojam i definicija jednodimenzionalnih polja – analiza primjera. Pojam i definicija nizova znakova – analiza primjera. Pojam i definicija zapisa – analiza primjera. Pojam i definicija znakova – analiza primjera. Pojam i definicija zapisa – analiza primjera. Pojam i definicija pokazivača – analiza primjera.pokazivača – analiza primjera.

15.05.15.05. Pojam i definicija sortiranja – analiza primjera Bubble sorta i sortiranja biranjem (selection Pojam i definicija sortiranja – analiza primjera Bubble sorta i sortiranja biranjem (selection sort).sort).

29.05.29.05. 2. Kolokvij2. Kolokvij

Page 3: Osnove programiranja - predavanja

3

Osnove programiranja - predavanjaOsnove programiranja - predavanja

KolegijKolegij• fond sati tjedno: 1 sat predavanja + 3 sata vježbifond sati tjedno: 1 sat predavanja + 3 sata vježbi• ECTS bodova: 5ECTS bodova: 5PredavanjaPredavanja• Svaki drugi petak po 2 sata (13:30 - 15:00), dvorana IV/1Svaki drugi petak po 2 sata (13:30 - 15:00), dvorana IV/1

BodoviBodovi• 2 boda - minimalno 70% prisutnosti na predavanjima2 boda - minimalno 70% prisutnosti na predavanjima• 3 boda - minimalno 70% prisutnosti na vježbama3 boda - minimalno 70% prisutnosti na vježbama• 10 bodova - 1. Kolokvij (teorijski dio)10 bodova - 1. Kolokvij (teorijski dio)• 20 bodova - 2. Kolokvij (teorijski dio)20 bodova - 2. Kolokvij (teorijski dio)• 15 bodova - 1. Kolokvij (praktični dio)15 bodova - 1. Kolokvij (praktični dio)• 20 bodova - 2- Kolokvij (praktični dio)20 bodova - 2- Kolokvij (praktični dio)• 10 bodova - Popravni ispit (pristupaju studenti s 30 - 39 bodova)10 bodova - Popravni ispit (pristupaju studenti s 30 - 39 bodova)• 30 bodova - Završni ispit (pristupaju studenti s više od 40 bodova)30 bodova - Završni ispit (pristupaju studenti s više od 40 bodova)

LiteraturaLiteratura• Pery G.: Osnove programiranja, Kompjuter biblioteka, Čačak, 2002.Pery G.: Osnove programiranja, Kompjuter biblioteka, Čačak, 2002.• McConnell, S.: Kod iznutra, Znak, Zagreb, 1995.McConnell, S.: Kod iznutra, Znak, Zagreb, 1995.• Čukman, T.; Bolt, V.:C/C++, Procon, Zagreb, 1994.Čukman, T.; Bolt, V.:C/C++, Procon, Zagreb, 1994.• Viduli, R.: Od sada programiramo u C-u, Školska knjiga, Zagreb, 1993.Viduli, R.: Od sada programiramo u C-u, Školska knjiga, Zagreb, 1993.• Eckel, B.: Thinking in C++, Volume 1, 2nd Edition, Eckel, B.: Thinking in C++, Volume 1, 2nd Edition, http://www.planetpdf.com/developer/article.asp?ContentID=6634http://www.planetpdf.com/developer/article.asp?ContentID=6634

Page 4: Osnove programiranja - predavanja

4

Cilj kolegijaCilj kolegija• Razvijanje sustavnog pristupa rješavanju problemaRazvijanje sustavnog pristupa rješavanju problema• Stjecanje znanja i vještina u procesu programiranjaStjecanje znanja i vještina u procesu programiranja• Upoznavanje s osnovnim konceptima programskog jezika C.Upoznavanje s osnovnim konceptima programskog jezika C.

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 5: Osnove programiranja - predavanja

5

ALGORITAMALGORITAM

• Algoritam je Algoritam je preciznoprecizno opisan način rješenja nekog problema koji opisan način rješenja nekog problema koji jednoznačnojednoznačno određuje što određuje što treba napraviti.treba napraviti.

• Pet svojstava algoritma:Pet svojstava algoritma:• konačnostkonačnost - mora uvijek završiti nakon konačnog broja koraka - mora uvijek završiti nakon konačnog broja koraka• definiranostdefiniranost - svaki korak algoritma mora biti precizno definiran - akcije koje treba - svaki korak algoritma mora biti precizno definiran - akcije koje treba

poduzeti moraju biti u svakom slučaju rigorozno i nedvosmisleno specificiranepoduzeti moraju biti u svakom slučaju rigorozno i nedvosmisleno specificirane• ulazulaz - algoritam može ali i ne mora imati ulazne veličine koje su dane inicijalno prije - algoritam može ali i ne mora imati ulazne veličine koje su dane inicijalno prije

početka algoritmapočetka algoritma• izlazizlaz - algoritam ima jednu ili više izlaznih veličina koje su u specificiranom odnosu sa - algoritam ima jednu ili više izlaznih veličina koje su u specificiranom odnosu sa

ulaznim veličinamaulaznim veličinama• efikasnostefikasnost - očekuje se od svakog algoritma - očekuje se od svakog algoritma• učinkovitostučinkovitost - u konačnom broju koraka može se dobiti rješenje - u konačnom broju koraka može se dobiti rješenje

Primjer:Primjer: Izrada ptice od papira Izrada ptice od papira

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 6: Osnove programiranja - predavanja

6

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 7: Osnove programiranja - predavanja

7

ALGORITAMALGORITAM

• Prikaz algoritma: Prikaz algoritma: • tekstualnotekstualno - prirodni jezik - narativni opis - prirodni jezik - narativni opis• grafičkigrafički - dijagram toka (blok dijagram), slikovno - dijagram toka (blok dijagram), slikovno• pseudokodpseudokod - koristi se tekstualni oblik prikaza algoritamskih koraka s formaliziranim - koristi se tekstualni oblik prikaza algoritamskih koraka s formaliziranim

programskim strukturama, odgovara redoslijedu pojavljivanja programskihprogramskim strukturama, odgovara redoslijedu pojavljivanja programskihizraza pri konkretnoj implementaciji u programskom jezikuizraza pri konkretnoj implementaciji u programskom jeziku

• programskim jezikomprogramskim jezikom - - algoritam se u računalu implementira pomoću konkretnog algoritam se u računalu implementira pomoću konkretnog programskog jezikaprogramskog jezika

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 8: Osnove programiranja - predavanja

8

RAČUNALNI PROGRAMRAČUNALNI PROGRAM

• Računalni program je algoritam prilagođen izvađanju na računaluRačunalni program je algoritam prilagođen izvađanju na računalu• Programski jezik je sredstvo za izražavanje računalnih programaProgramski jezik je sredstvo za izražavanje računalnih programa• Osoba koja stvara računalni program se naziva programer, a postupak izrade programa se Osoba koja stvara računalni program se naziva programer, a postupak izrade programa se

naziva programiranjenaziva programiranje• Programer polazi od postavljenog problema i pronalazi algoritam koji ga rješava, a kojeg, u Programer polazi od postavljenog problema i pronalazi algoritam koji ga rješava, a kojeg, u

konačnici, opisuje nekim programskim jezikomkonačnici, opisuje nekim programskim jezikom• Programiranje uključuje učenje sintakse nekog programskog jezika i stjecanje osnovnih Programiranje uključuje učenje sintakse nekog programskog jezika i stjecanje osnovnih intuitivnih znanja glede algoritmizacije problema opisanog riječimaintuitivnih znanja glede algoritmizacije problema opisanog riječima

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 9: Osnove programiranja - predavanja

9

RAČUNALNI PROGRAMRAČUNALNI PROGRAM

• Postoje dvije strategije pri izvršavanju računalnih programa:Postoje dvije strategije pri izvršavanju računalnih programa:• Interpreteri - idu od naredbe do naredbe koda računalnog programa, tumače tu naredbu i Interpreteri - idu od naredbe do naredbe koda računalnog programa, tumače tu naredbu i

izvršavaju je. Kako tumačenje naredbe može uzimati neko vrijeme interpreteri su spori, izvršavaju je. Kako tumačenje naredbe može uzimati neko vrijeme interpreteri su spori, računalni program koji se interpretira zahtjeva da na platformi postoji i program za računalni program koji se interpretira zahtjeva da na platformi postoji i program za interpretaciju. Ne stvara se izvršna datoteka nego se pri svakom pokretanju program interpretaciju. Ne stvara se izvršna datoteka nego se pri svakom pokretanju program mora koristiti program interpreter.mora koristiti program interpreter.

• Kompajleri - znatno su složeniji ali sa mnogo stanovišta bolji od interpretera. Prevodi se Kompajleri - znatno su složeniji ali sa mnogo stanovišta bolji od interpretera. Prevodi se odmah cijeli izvorni program (samo jednom). Rezultat kompajliranja (ako nema grešaka) odmah cijeli izvorni program (samo jednom). Rezultat kompajliranja (ako nema grešaka) je EXE verzija (izvršni program). Vrši se povezivanje više programskih modula je EXE verzija (izvršni program). Vrši se povezivanje više programskih modula

(glavnog programa i potprograma) u jednu cjelinu.(glavnog programa i potprograma) u jednu cjelinu.

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 10: Osnove programiranja - predavanja

10

ŽIVOTNI CIKLUS RAČUNALNOG PROGRAMAŽIVOTNI CIKLUS RAČUNALNOG PROGRAMA

• Postavljanje zadatka, problemaPostavljanje zadatka, problema• Sastavljanje algoritmaSastavljanje algoritma• ProgramiranjeProgramiranje

• prilagođavanje algoritma za izvođenje na računaluprilagođavanje algoritma za izvođenje na računalu• Kodiranje programaKodiranje programa

• pisanje programa u programskom jezikupisanje programa u programskom jeziku• Unos, prevođenje i izvođenje programaUnos, prevođenje i izvođenje programa• Testiranje programaTestiranje programa

• provjera rada prema postavljenim zahtjevimaprovjera rada prema postavljenim zahtjevima• Ispravljanje pogrešaka u programuIspravljanje pogrešaka u programu• Dokumentiranje programaDokumentiranje programa

• opis algoritama i uporabe programaopis algoritama i uporabe programa• Održavanje programaOdržavanje programa

• promjena programa prema zahtjevima korisnikapromjena programa prema zahtjevima korisnika

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 11: Osnove programiranja - predavanja

11

FAZE RAZVOJA PROGRAMSKIH JEZIKAFAZE RAZVOJA PROGRAMSKIH JEZIKA

• Na prvim računalima “programiranje”se provodilo fizičkim lemljenjem pojedinih elektronskih Na prvim računalima “programiranje”se provodilo fizičkim lemljenjem pojedinih elektronskih dijelova (projekt Eniac).dijelova (projekt Eniac).

• Prvi programski jezik razvio je Konrad Zuse (Njemačka) 1946. godine (programski jezik se zvao Prvi programski jezik razvio je Konrad Zuse (Njemačka) 1946. godine (programski jezik se zvao Plankalkul po znanstveniku Planku) i ovaj jezik nikada nije primijenjen na elektronskom Plankalkul po znanstveniku Planku) i ovaj jezik nikada nije primijenjen na elektronskom

računalu.računalu.• Prvi jezik koji je primjenjen na elektronskim računalima bio je Short-code1949-te godine.Prvi jezik koji je primjenjen na elektronskim računalima bio je Short-code1949-te godine.

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 12: Osnove programiranja - predavanja

12

FAZE RAZVOJA PROGRAMSKIH JEZIKAFAZE RAZVOJA PROGRAMSKIH JEZIKA

• I Faza: oko 1950-te (razvoj prvih programskih jezika) Stvoreni su jezici: Plankalkul, Shortcode, I Faza: oko 1950-te (razvoj prvih programskih jezika) Stvoreni su jezici: Plankalkul, Shortcode, MATH-MATIC, Autocode itd. Uglavnom nisu zaživjeli.MATH-MATIC, Autocode itd. Uglavnom nisu zaživjeli.

• II Faza: Oko 1960-te (razvoj teorije i prvih kvalitetnih programskih jezika). Stvoreni su jezici: II Faza: Oko 1960-te (razvoj teorije i prvih kvalitetnih programskih jezika). Stvoreni su jezici: Fortran(FORmula TRANslation system), ALGOL(ALGOrithm Language), LISP(LISt Fortran(FORmula TRANslation system), ALGOL(ALGOrithm Language), LISP(LISt

Programming–za podršku umjetnoj inteligenciji), COBOL(COmmon Business Oriented Programming–za podršku umjetnoj inteligenciji), COBOL(COmmon Business Oriented Language). Utječu na razvoj programiranja do današnjih dana. Ovo je i period početka Language). Utječu na razvoj programiranja do današnjih dana. Ovo je i period početka programerske edukacije.programerske edukacije.

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 13: Osnove programiranja - predavanja

13

FAZE RAZVOJA PROGRAMSKIH JEZIKAFAZE RAZVOJA PROGRAMSKIH JEZIKA

• III Faza: oko 1970-te godine (na osnovi prethodnih iskustava kreiranje jednostavnih i moćnih III Faza: oko 1970-te godine (na osnovi prethodnih iskustava kreiranje jednostavnih i moćnih programskih jezika) Standardizacija i usvajanje tehnologije strukturnog programiranja. Stvoreni programskih jezika) Standardizacija i usvajanje tehnologije strukturnog programiranja. Stvoreni su jezici APL(ostavio trag na kasnije jezike), BASIC(Beginners All-purpose Instruction Code - su jezici APL(ostavio trag na kasnije jezike), BASIC(Beginners All-purpose Instruction Code - omogućio silazak programiranja iz znanstvenih laboratorija među “narod” – stvorena prva video omogućio silazak programiranja iz znanstvenih laboratorija među “narod” – stvorena prva video igrica Star Wars), Pascal(smišljen kao edukacijski programski jezik ali je postao jedan od igrica Star Wars), Pascal(smišljen kao edukacijski programski jezik ali je postao jedan od najpopularnijih), C (omogućio lako pisanje sistemskog softvera i pristup hardveru). COBOL i C najpopularnijih), C (omogućio lako pisanje sistemskog softvera i pristup hardveru). COBOL i C su u ovoj fazi standardiziranisu u ovoj fazi standardizirani

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 14: Osnove programiranja - predavanja

14

FAZE RAZVOJA PROGRAMSKIH JEZIKAFAZE RAZVOJA PROGRAMSKIH JEZIKA

• IV Faza: oko 1980-te godine (dolazi do razvoja programskih jezika za objektno programiranje IV Faza: oko 1980-te godine (dolazi do razvoja programskih jezika za objektno programiranje koji omogućavaju “lakše” pisanje velikih paketa). Stvoreni ili usavršeni jezici C++, Java, koji omogućavaju “lakše” pisanje velikih paketa). Stvoreni ili usavršeni jezici C++, Java,

Smalltalk, Ada itd.Smalltalk, Ada itd.• V Faza – danas (teško je izdvojiti prevladavajući pravac) Razvoj jezika za paralelno V Faza – danas (teško je izdvojiti prevladavajući pravac) Razvoj jezika za paralelno programiranje, razvoj strategija za OO projektiranje, mrežne aplikacije, programiranje na programiranje, razvoj strategija za OO projektiranje, mrežne aplikacije, programiranje na prijenosnim uređajima (mobilni telefoni, Palm računala), povezivanje aplikacija (VisualBasic)...prijenosnim uređajima (mobilni telefoni, Palm računala), povezivanje aplikacija (VisualBasic)...

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 15: Osnove programiranja - predavanja

15

PRIMJER PROBLEMAPRIMJER PROBLEMA

• Sastavite algoritam za izračunavanje telefonskih troškova na kraju mjeseca, ako su poznati Sastavite algoritam za izračunavanje telefonskih troškova na kraju mjeseca, ako su poznati količina telefonskih razgovora u minutama, cijena jedne minute te iznos telefonske količina telefonskih razgovora u minutama, cijena jedne minute te iznos telefonske

pretplate. U iznos telefonske pretplate uračunato je 60 minuta.pretplate. U iznos telefonske pretplate uračunato je 60 minuta.• Početno poznati podaciPočetno poznati podaci

• Ukupno trajanje telefonskih razgovora u minutamaUkupno trajanje telefonskih razgovora u minutama• KOLIČINAKOLIČINA

• Cijena jedne minuteCijena jedne minute• CIJENACIJENA

• Iznos telefonske pretplateIznos telefonske pretplate• PRETPLATAPRETPLATA

• Količina razgovora uračunata u pretplatuKoličina razgovora uračunata u pretplatu• 6060

• Željeni rezultantni podatakŽeljeni rezultantni podatak• Iznos ukupnih telefonskih troškovaIznos ukupnih telefonskih troškova

• TROŠAKTROŠAK

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 16: Osnove programiranja - predavanja

16

IZRAČUNAVANJE TROŠKAIZRAČUNAVANJE TROŠKA

• VIŠAK = KOLIČINA - 60VIŠAK = KOLIČINA - 60• TROŠAK = PRETPLATA + VIŠAK * CIJENATROŠAK = PRETPLATA + VIŠAK * CIJENA

Osnove programiranja - predavanjaOsnove programiranja - predavanja

KORACI ALGORITMAKORACI ALGORITMA

Pseudokod:Pseudokod:/* /*

Kolika je KOLIČINA telefonskih razgovora (u minutama)?Kolika je KOLIČINA telefonskih razgovora (u minutama)?Koliki je iznos PRETPLATE?Koliki je iznos PRETPLATE?Kolika je CIJENA jedne minute?Kolika je CIJENA jedne minute?Ako je KOLIČINA > 60 ondaAko je KOLIČINA > 60 onda

VIŠAK = KOLIČINA - 60VIŠAK = KOLIČINA - 60inačeinače

VIŠAK = 0VIŠAK = 0TROŠAK = PRETPLATA + VIŠAK * CIJENATROŠAK = PRETPLATA + VIŠAK * CIJENA

*/*/

Page 17: Osnove programiranja - predavanja

17

Osnove programiranja - vježbeOsnove programiranja - vježbe

PRIMJER PROBLEMAPRIMJER PROBLEMA

• Odredi ocjenu na osnovu broja bodova. Odredi ocjenu na osnovu broja bodova. 50 - 60 50 - 60 dovoljandovoljan61- 75 61- 75 dobardobar76 - 90 76 - 90 vrlo dobarvrlo dobar91 - 100 91 - 100 odličanodličan

• Početno poznati podaciPočetno poznati podaci• BODOVIBODOVI

• Željeni rezultantni podatakŽeljeni rezultantni podatak• OCJENAOCJENA

Page 18: Osnove programiranja - predavanja

18

Osnove programiranja - vježbeOsnove programiranja - vježbe

IZRAČUN OCJENEIZRAČUN OCJENE

• BODOVIBODOVI < 50 < 50 NEDOVOLJANNEDOVOLJAN• 50 <= BODOVI <= 6050 <= BODOVI <= 60 DOVOLJANDOVOLJAN• 61 <= BODOVI <= 7561 <= BODOVI <= 75 DOBARDOBAR• 76 <= BODOVI <= 9076 <= BODOVI <= 90 VRLOVRLO DOBAR DOBAR• 91 <= BODOVI91 <= BODOVI ODLIODLIČANČAN

Pseudokod:Pseudokod:/*Koliki su BODOVI?Ako su BODOVI < 50 onda

OCJENA = 'NEDOVOLJAN'Ako su BODOVI >= 50 i BODOVI <= 60 onda

OCJENA = 'DOVOLJAN'Ako su BODOVI >= 61 i BODOVI <= 75 onda

OCJENA = 'DOBAR'Ako su BODOVI >= 76 i BODOVI <= 90 onda

OCJENA = 'VRLO DOBAR 'Ako su BODOVI >= 91 onda

OCJENA = 'ODLIČAN'*/

Page 19: Osnove programiranja - predavanja

19

Osnove programiranja - vježbeOsnove programiranja - vježbe

IZRAČUN OCJENEIZRAČUN OCJENE

• BODOVIBODOVI < 50 < 50 NEDOVOLJANNEDOVOLJAN• 50 <= BODOVI <= 6050 <= BODOVI <= 60 DOVOLJANDOVOLJAN• 61 <= BODOVI <= 7561 <= BODOVI <= 75 DOBARDOBAR• 76 <= BODOVI <= 9076 <= BODOVI <= 90 VRLOVRLO DOBAR DOBAR• 91 <= BODOVI91 <= BODOVI ODLIODLIČANČAN

Pseudokod:Pseudokod:/*Koliki su BODOVI?Ako su BODOVI < 50 onda

OCJENA = 'NEDOVOLJAN'inače

Ako su BODOVI <= 60 ondaOCJENA = 'DOVOLJAN'

inačeAko su BODOVI <= 75 onda

OCJENA = 'DOBAR'inače

Ako su BODOVI <= 90 ondaOCJENA = 'VRLO DOBAR'

inačeOCJENA = 'ODLIČAN'

*/

Page 20: Osnove programiranja - predavanja

20

Osnove programiranja - predavanjaOsnove programiranja - predavanja

SADRŽAJSADRŽAJ

• Uvod u kolegij. Pojam i definicija računalnog programa i programiranja. Razvoj programskih Uvod u kolegij. Pojam i definicija računalnog programa i programiranja. Razvoj programskih jezika. Pojam i definicija algoritma, programa i pseudokoda. Analiza primjera logičkog problema.jezika. Pojam i definicija algoritma, programa i pseudokoda. Analiza primjera logičkog problema.

• Pojam i definicija osnovnih logičkih struktura (Sekvencija-slijed; Selekcija-Pojam i definicija osnovnih logičkih struktura (Sekvencija-slijed; Selekcija-odabir; Iteracija-ponavljanje; Skokovi) – analiza primjera u pseudokodu. Pojam odabir; Iteracija-ponavljanje; Skokovi) – analiza primjera u pseudokodu. Pojam i definicija dijagrama toka programa (blok dijagram)i definicija dijagrama toka programa (blok dijagram)

• Pojam i definicija varijabli i tipova podataka – analiza primjera. Pojam i definicija operatora – Pojam i definicija varijabli i tipova podataka – analiza primjera. Pojam i definicija operatora – analiza primjera.analiza primjera.

• Analiza primjera za logičku strukturu odabira – selekcije. Analiza primjera za logičku strukturu Analiza primjera za logičku strukturu odabira – selekcije. Analiza primjera za logičku strukturu iteracije – ponavljanja. iteracije – ponavljanja.

• Pojam i definicija funkcije – analiza primjera. Pojam i definicija jednodimenzionalnih polja – Pojam i definicija funkcije – analiza primjera. Pojam i definicija jednodimenzionalnih polja – analiza primjera. analiza primjera.

• Pojam i definicija nizova znakova – analiza primjera. Pojam i definicija zapisa – analiza primjera. Pojam i definicija nizova znakova – analiza primjera. Pojam i definicija zapisa – analiza primjera.

• Pojam i definicija pokazivača – analiza primjera. Pojam i definicija sortiranja – analiza primjera Pojam i definicija pokazivača – analiza primjera. Pojam i definicija sortiranja – analiza primjera Bubble sorta.Bubble sorta.

Page 21: Osnove programiranja - predavanja

21

OSNOVNE LOGIČKE STRUKTUREOSNOVNE LOGIČKE STRUKTURE

• Sekvencija (slijed)Sekvencija (slijed)• Selekcija (izbor)Selekcija (izbor)• Iteracija (ponavljanje)Iteracija (ponavljanje)• SkokoviSkokovi

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 22: Osnove programiranja - predavanja

22

SEKVENCIJA (SLIJED)SEKVENCIJA (SLIJED)

Pseudokod:Pseudokod:/*

Izvrši 1. naredbu.Izvrši 2. naredbu.Izvrši 3. naredbu.

*/

• Oblik u C-u:Oblik u C-u:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

{ ... naredba_1; naredba_2; naredba_3; ...}

• Primjer:Primjer:

{ printf ("Ovo je 1. naredba"); printf ("\nOvo je 2. naredba"); printf ("Ovo je 3. naredba");}

Pseudokod:Pseudokod:/*

Ispiši "Ovo je 1. naredba".Ispiši u novi red "Ovo je 2. naredba".Ispiši "Ovo je 3. naredba".

*/

Page 23: Osnove programiranja - predavanja

23

SELEKCIJA (IZBOR)SELEKCIJA (IZBOR)

• Pseudokod 1:Pseudokod 1:/*Ako je zadovoljen UVJET onda

izvrši ovaj BLOK NAREDBI.*/

Osnove programiranja - predavanjaOsnove programiranja - predavanja

• Primjer:Primjer:

{ if (a < 0) { printf("a je negativan \n"); printf("a nije pozitivan \n"); printf("a nije 0"); }}

• Oblik u C-u:Oblik u C-u:{ ... if (UVJET) { BLOK NAREDBI; } ...}

Pseudokod:Pseudokod:/*Ako je a < 0 onda ispiši "a je negativan" i postavi kursor u novi red ispiši "a nije pozitivan" i postavi kursor u novi red ispiši "a nije 0"*/

Page 24: Osnove programiranja - predavanja

24

SELEKCIJA (IZBOR)SELEKCIJA (IZBOR)

• Pseudokod 2:Pseudokod 2:/*Ako je zadovoljen UVJET onda

izvrši BLOK NAREDBI_1. inače izvrši BLOK NAREDBI_2.

*/

Osnove programiranja - predavanjaOsnove programiranja - predavanja

• Primjer:Primjer:

{ if (a < 0) { printf("a je negativan"); } else { printf("a je pozitivan ili nula"); }}

• Oblik u C-u:Oblik u C-u: { ... if (UVJET) { BLOK NAREDBI_1; } else { BLOK NAREDBI_2; } ...}Pseudokod:Pseudokod:

/*Ako je a < 0 onda ispiši "a je negativan". inače ispiši "a je pozitivan ili nula".*/

Page 25: Osnove programiranja - predavanja

25

SELEKCIJA (IZBOR)SELEKCIJA (IZBOR)

• Pseudokod 3:Pseudokod 3:/*Ako je zadovoljen UVJET_1 onda

izvrši BLOK NAREDBI_1. inače ako je zadovoljen UVJET_2 onda izvrši BLOK NAREDBI_2. .... inače izvrši BLOK NAREDBI_n.

*/

Osnove programiranja - predavanjaOsnove programiranja - predavanja

• Oblik u C-u:Oblik u C-u: { ... if (UVJET_1) { BLOK NAREDBI_1; } else if (UVJET_2) { BLOK NAREDBI_2; } ... else { BLOK NAREDBI_n; } ...}

Page 26: Osnove programiranja - predavanja

26

SELEKCIJA (IZBOR)SELEKCIJA (IZBOR)

Osnove programiranja - predavanjaOsnove programiranja - predavanja

• Primjer:Primjer:

{ if (a < 0) { printf("a je negativan"); } else if (a > 0) { printf("a je pozitivan"); } else { printf("a je nula"); }}

Pseudokod:Pseudokod:/*Ako je a < 0 onda ispiši "a je negativan".inače ako je a > 0 onda ispiši "a je pozitivan".inače ispiši "a je nula".*/

Page 27: Osnove programiranja - predavanja

27

SELEKCIJA (IZBOR)SELEKCIJA (IZBOR)

Osnove programiranja - predavanjaOsnove programiranja - predavanja

• Koji uvjet mora biti ispunjen da bi se ispisao C, koji da bi se ispisao D, te koji da bi se Koji uvjet mora biti ispunjen da bi se ispisao C, koji da bi se ispisao D, te koji da bi se ispisao E?ispisao E?

{ if (a == 0) if (b == 0) printf("C"); else printf("D"); printf("E");}

{ if (a == 0) if (b == 0) printf("C"); else printf("D"); printf("E");}

{ if (a == 0) { if (b == 0) { printf("C"); } else { printf("D"); } } printf("E");}

Pseudokod:Pseudokod:/*Ako je a = 0 onda Ako je b = 0 onda ispiši "C". inače ispiši "D".Ispiši "E".*/

Page 28: Osnove programiranja - predavanja

28

SELEKCIJA (IZBOR)SELEKCIJA (IZBOR)

• Pseudokod 4:Pseudokod 4:/*Ako je IZRAZ jednak

KONSTANTI_1: izvrši BLOK NAREDBI_1. KONSTANTI_2: izvrši BLOK NAREDBI_2. izvrši prekid. KONSTANTI_3: KONSTANTI_4: izvrši BLOK NAREDBI_3. izvrši prekid. ... inače: izvrši BLOK NAREDBI_n.

*/

Osnove programiranja - predavanjaOsnove programiranja - predavanja

• Oblik u C-u:Oblik u C-u: { ... swich (IZRAZ) { case KONSTANTI_1: BLOK NAREDBI_1; case KONSTANTI_2: BLOK NAREDBI_2; break; case KONSTANTI_3: case KONSTANTI_4: BLOK NAREDBI_3 break; ... default: BLOK NAREDBI_n; ...}

Page 29: Osnove programiranja - predavanja

29

SELEKCIJA (IZBOR)SELEKCIJA (IZBOR)

Osnove programiranja - predavanjaOsnove programiranja - predavanja

• Primjer:Primjer:

{ switch (ocjena) { case 1: printf ("Nedovoljan (1)"); case 2: printf ("Dovoljan (2)"); case 3: printf ("Dobar (3)"); case 4: printf ("Vrlo dobar (4)"); case 5: printf ("Izvrstan (5)"); default: printf ("Ocjena nepoznata"); }}

Page 30: Osnove programiranja - predavanja

30

SELEKCIJA (IZBOR)SELEKCIJA (IZBOR)

Osnove programiranja - predavanjaOsnove programiranja - predavanja

• Primjer:Primjer:

{ switch (ocjena) { case 1: printf ("Nedovoljan (1)"); break; case 2: printf ("Dovoljan (2)"); break; case 3: printf ("Dobar (3)"); break; case 4: printf ("Vrlo dobar (4)"); break; case 5: printf ("Izvrstan (5)"); break; default: printf ("Ocjena nepoznata"); }}

Pseudokod:Pseudokod:/*Ako je OCJENA jednaka 1: ispiši "Nedovoljan (1)". izvrši prekid. 2: ispiši "Dovoljan (2)". izvrši prekid. 3: ispiši "Dobar (3)". izvrši prekid; 4: ispiši "Vrlo dobar (4)". izvrši prekid. 5: ispiši "Izvrstan (5)". izvrši prekid. inače: ispiši "Nepoznata ocjena".*/

Page 31: Osnove programiranja - predavanja

31

Osnove programiranja - predavanjaOsnove programiranja - predavanja

ITERACIJA (PONAVLJANJE)ITERACIJA (PONAVLJANJE)

• Pseudokod 1 Pseudokod 1 (ponavljanje s izlazom na vrhu):(ponavljanje s izlazom na vrhu):/*Dok vrijedi UVJET ponavljaj

izvedi BLOK NAREDBI.*/

• Oblik u C-u:Oblik u C-u: { ... while (UVJET) { BLOK NAREDBI; } ...}

• Primjer:Primjer:

{ a = 0; while (a < 5) { a = a + 1; printf("\nDobar dan"); }}

Pseudokod:Pseudokod:/*Postavi a = 0.Dok vrijedi a < 5 ponavljaj postavi a = a +1. ispiši "Dobar dan".*/

Page 32: Osnove programiranja - predavanja

32

Osnove programiranja - predavanjaOsnove programiranja - predavanja

ITERACIJA (PONAVLJANJE)ITERACIJA (PONAVLJANJE)

• Pseudokod 2 Pseudokod 2 (ponavljanje s izlazom na dnu):(ponavljanje s izlazom na dnu):/*Ponavljaj

izvedi BLOK NAREDBI. Dok vrijedi UVJET.

*/

• Oblik u C-u:Oblik u C-u: { ... do { BLOK NAREDBI; } while (UVJET); ...}

• Primjer:Primjer:

{ a = 0; do { a = a + 1; printf("\nDobar dan"); } while (a < 5);}

Pseudokod:Pseudokod:/*Postavi a = 0.Ponavljaj postavi a = a +1. ispiši "Dobar dan".Dok vrijedi a < 5.*/

Page 33: Osnove programiranja - predavanja

33

Osnove programiranja - predavanjaOsnove programiranja - predavanja

ITERACIJA (PONAVLJANJE)ITERACIJA (PONAVLJANJE)

• Što će biti rezultat slijedećih programa:Što će biti rezultat slijedećih programa:

{ a = 5; do { a = a + 1; printf("\nDobar dan"); } while (a < 5);}

Pseudokod:Pseudokod:/*Postavi a = 5.Ponavljaj postavi a = a +1. ispiši "Dobar dan".Dok vrijedi a < 5.*/

{ a = 5; while (a < 5) { a = a + 1; printf("\nDobar dan"); }}

Pseudokod:Pseudokod:/*Postavi a = 5.Dok vrijedi a < 5 ponavljaj postavi a = a +1. ispiši "Dobar dan".*/

Page 34: Osnove programiranja - predavanja

34

Osnove programiranja - predavanjaOsnove programiranja - predavanja

ITERACIJA (PONAVLJANJE)ITERACIJA (PONAVLJANJE)

• Pseudokod 3 Pseudokod 3 (ponavljanje s eksplicitnim brojačem):(ponavljanje s eksplicitnim brojačem):/*Ponavljaj N puta

izvedi BLOK NAREDBI. */

• Oblik u C-u:Oblik u C-u: { ... for(int i=1; i<=N; i++) { BLOK NAREDBI; } ...}

• Primjer:Primjer:

{ for(int i=1; i<=5; i++) { printf("\nDobar dan"); }}

Pseudokod:Pseudokod:/*Ponavljaj 5 puta ispiši "Dobar dan".*/

Page 35: Osnove programiranja - predavanja

35

Osnove programiranja - predavanjaOsnove programiranja - predavanja

SKOKOVISKOKOVI

• Pseudokod 1: Pseudokod 1: /*

...Skoči na LABELA_1.

... LABELA_1: izvrši BLOK NAREDBI.

*/

• Oblik u C-u:Oblik u C-u: { ... goto LABELA_1; ... LABELA_1: { BLOK NAREDBI; }}

• Primjer:Primjer:

{ if (provjera < 0) { goto greska; } ... greska: { printf("Greška!"); }}

Pseudokod:Pseudokod:/*Ako je provjera < 0 onda skoči na labelu GRESKA....GRESKA: ispiši "Greška".*/

Page 36: Osnove programiranja - predavanja

36

Osnove programiranja - predavanjaOsnove programiranja - predavanja

SKOKOVISKOKOVI

• Pseudokod 2: Pseudokod 2: /*

...Vrati VRIJEDNOST.

... */

• Oblik u C-u:Oblik u C-u: { ... return VRIJEDNOST; ...}

• Primjer:Primjer:

{ if (provjera < 0) { return -1; } else { return 1; }}

Pseudokod:Pseudokod:/*Ako je provjera < 0 onda vrati -1.inače vrati 1.*/

Page 37: Osnove programiranja - predavanja

37

Osnove programiranja - predavanjaOsnove programiranja - predavanja

SKOKOVISKOKOVI

• Pseudokod 3: Pseudokod 3: /*

...nastavi petlju.

... */

• Oblik u C-u:Oblik u C-u: { ... continue; ...}

• Primjer:Primjer:

{ a = 0; do { a = a + 1; if (a == 1) { continue; } printf("\nDobar dan"); } while (a < 5);}

Pseudokod:Pseudokod:/*Postavi a = 0.Ponavljaj postavi a = a +1. Ako je a = 1 onda nastavi petlju. ispiši "Dobar dan".Dok vrijedi a < 5.*/

Page 38: Osnove programiranja - predavanja

38

Osnove programiranja - predavanjaOsnove programiranja - predavanja

SKOKOVISKOKOVI

• Pseudokod 4: Pseudokod 4: /*

...izvrši prekid.

... */

• Oblik u C-u:Oblik u C-u: { ... break; ...}

• Primjer:Primjer:

{ a = 0; do { a = a + 1; if (a == 1) { break; } printf("\nDobar dan"); } while (a < 5);}

Pseudokod:Pseudokod:/*Postavi a = 0.Ponavljaj postavi a = a +1. Ako je a = 1 onda izvrši prekid. ispiši "Dobar dan".Dok vrijedi a < 5.*/

Page 39: Osnove programiranja - predavanja

39

Osnove programiranja - predavanjaOsnove programiranja - predavanja

SKOKOVISKOKOVI

• Pseudokod 4: Pseudokod 4: /*

...izvrši prekid programa.

... */

• Oblik u C-u:Oblik u C-u: { ... exit(VRIJEDNOST); ...}

• Primjer:Primjer:

{ a = 0; do { a = a + 1; if (a == 1) { exit(-1); } printf("\nDobar dan"); } while (a < 5);}

Pseudokod:Pseudokod:/*Postavi a = 0.Ponavljaj postavi a = a +1. Ako je a = 1 onda izvrši prekid programa. ispiši "Dobar dan".Dok vrijedi a < 5.*/

Page 40: Osnove programiranja - predavanja

40

DIJAGRAM TOKA PROGRAMA (BLOK DIJAGRAM)DIJAGRAM TOKA PROGRAMA (BLOK DIJAGRAM)

• Skup simbola koji se koriste u grafičkom opisu algoritma.Skup simbola koji se koriste u grafičkom opisu algoritma.

Osnove programiranja - predavanjaOsnove programiranja - predavanja

početak i kraj algoritmapočetak i kraj algoritma

obrada (procesiranje) u obrada (procesiranje) u algoritmualgoritmu

upis podataka potrebnih za algoritam upis podataka potrebnih za algoritam ili ispis rezultata algoritmaili ispis rezultata algoritma

grananje u algoritmugrananje u algoritmu

tijek koraka u algoritmutijek koraka u algoritmu

Page 41: Osnove programiranja - predavanja

41

DIJAGRAM TOKA PROGRAMA (BLOK DIJAGRAM)DIJAGRAM TOKA PROGRAMA (BLOK DIJAGRAM)

• Primjer:Primjer:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Početak

IspišiOvo je 1. naredbaOvo je 2. naredbaOvo je 3. naredba

Pseuodkod:Pseuodkod:/*Ispiši "Ovo je 1. naredba".Ispiši u novi red "Ovo je 2. naredba".Ispiši "Ovo je 3. naredba".*/

Dijagram toka programa (blok dijagram):Dijagram toka programa (blok dijagram):

Kraj

Page 42: Osnove programiranja - predavanja

42

DIJAGRAM TOKA PROGRAMA (BLOK DIJAGRAM)DIJAGRAM TOKA PROGRAMA (BLOK DIJAGRAM)

• Primjer:Primjer:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Početak

Upiši a

Dijagram toka programa (blok dijagram):Dijagram toka programa (blok dijagram):

Kraj

Pseudokod:Pseudokod:/*Unesi a.Ako je a < 0 onda ispiši "a je negativan" i postavi kursor u novi red ispiši "a nije pozitivan" i postavi kursor u novi red ispiši "a nije 0"*/

a < 0Ispiši

a je negativana nije pozitivan

a nije 0

da

ne

Page 43: Osnove programiranja - predavanja

43

DIJAGRAM TOKA PROGRAMA (BLOK DIJAGRAM)DIJAGRAM TOKA PROGRAMA (BLOK DIJAGRAM)

• Primjer:Primjer:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Početak

Upiši a

Dijagram toka programa (blok dijagram):Dijagram toka programa (blok dijagram):

Kraj

a < 0Ispišia je negativan

da

ne

Pseudokod:Pseudokod:/*Ako je a < 0 onda ispiši "a je negativan".inače ispiši "a je pozitivan ili nula".*/

Ispišia je pozitivan ili nula

Page 44: Osnove programiranja - predavanja

44

DIJAGRAM TOKA PROGRAMA (BLOK DIJAGRAM)DIJAGRAM TOKA PROGRAMA (BLOK DIJAGRAM)

• Primjer:Primjer:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Početak

Upiši a

Dijagram toka programa (blok dijagram):Dijagram toka programa (blok dijagram):

a < 0Ispišia je negativan

da

ne

Pseudokod:Pseudokod:/*Ako je a < 0 onda ispiši "a je negativan".inače ako je a > 0 onda ispiši "a je pozitivan".inače ispiši "a je nula".*/

a > 0 Ispišia je pozitivan

da

Ispišia je nula

Kraj

ne

Page 45: Osnove programiranja - predavanja

45

DIJAGRAM TOKA PROGRAMA (BLOK DIJAGRAM)DIJAGRAM TOKA PROGRAMA (BLOK DIJAGRAM)

• Primjer:Primjer:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Početak

Dijagram toka programa (blok dijagram):Dijagram toka programa (blok dijagram):

a < 5

da

ne

IspišiDobar dan

Kraj

Pseudokod:Pseudokod:/*Postavi a = 0.Dok vrijedi a < 5 ponavljaj postavi a = a +1. ispiši "Dobar dan".*/

a=0

a=a+1

Page 46: Osnove programiranja - predavanja

46

DIJAGRAM TOKA PROGRAMA (BLOK DIJAGRAM)DIJAGRAM TOKA PROGRAMA (BLOK DIJAGRAM)

• Primjer:Primjer:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Početak

Dijagram toka programa (blok dijagram):Dijagram toka programa (blok dijagram):

a < 5da

ne

IspišiDobar dan

Kraj

a=0

a=a+1

Pseudokod:Pseudokod:/*Postavi a = 0.Ponavljaj postavi a = a +1. ispiši "Dobar dan".Dok vrijedi a < 5.*/

Page 47: Osnove programiranja - predavanja

47

Osnove programiranja - predavanjaOsnove programiranja - predavanja

SADRŽAJSADRŽAJ

• Uvod u kolegij. Pojam i definicija računalnog programa i programiranja. Razvoj programskih Uvod u kolegij. Pojam i definicija računalnog programa i programiranja. Razvoj programskih jezika. Pojam i definicija algoritma, programa i pseudokoda. Analiza primjera logičkog problema.jezika. Pojam i definicija algoritma, programa i pseudokoda. Analiza primjera logičkog problema.

• Pojam i definicija osnovnih logičkih struktura (Sekvencija-slijed; Selekcija-odabir; Iteracija-Pojam i definicija osnovnih logičkih struktura (Sekvencija-slijed; Selekcija-odabir; Iteracija-ponavljanje; Skokovi) – analiza primjera u pseudokodu. Pojam i definicija dijagrama toka ponavljanje; Skokovi) – analiza primjera u pseudokodu. Pojam i definicija dijagrama toka programa (blok dijagram)programa (blok dijagram)

• Pojam i definicija varijabli i tipova podataka – analiza primjera. Pojam i Pojam i definicija varijabli i tipova podataka – analiza primjera. Pojam i definicija operatora – analiza primjera.definicija operatora – analiza primjera.

• Analiza primjera za logičku strukturu odabira – selekcije. Analiza primjera za logičku strukturu Analiza primjera za logičku strukturu odabira – selekcije. Analiza primjera za logičku strukturu iteracije – ponavljanja. iteracije – ponavljanja.

• Pojam i definicija funkcije – analiza primjera. Pojam i definicija jednodimenzionalnih polja – Pojam i definicija funkcije – analiza primjera. Pojam i definicija jednodimenzionalnih polja – analiza primjera. analiza primjera.

• Pojam i definicija nizova znakova – analiza primjera. Pojam i definicija zapisa – analiza primjera. Pojam i definicija nizova znakova – analiza primjera. Pojam i definicija zapisa – analiza primjera.

• Pojam i definicija pokazivača – analiza primjera. Pojam i definicija sortiranja – analiza primjera Pojam i definicija pokazivača – analiza primjera. Pojam i definicija sortiranja – analiza primjera Bubble sorta.Bubble sorta.

Page 48: Osnove programiranja - predavanja

48

POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKAPOJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA

• Varijabla je imenovani dio memorije računalaVarijabla je imenovani dio memorije računala• Svojstva varijabli:Svojstva varijabli:

• ime (identifikator)ime (identifikator)• adresaadresa• vrijednostvrijednost• tip (tip podatka)tip (tip podatka)• trajanjetrajanje• dosegdoseg

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 49: Osnove programiranja - predavanja

49

POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKAPOJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA

• Dozvoljeni znakovi u sastavljanju imena (identifikatora) varijabli:Dozvoljeni znakovi u sastavljanju imena (identifikatora) varijabli:• slova engleske abecede (A-Z, a-z)slova engleske abecede (A-Z, a-z)• brojevi (0-9)brojevi (0-9)• podcrta (underscore '_')podcrta (underscore '_')

• Prvi znak u imenu varijable ne smije biti brojPrvi znak u imenu varijable ne smije biti broj• Ime varijable ne može biti isto kao neka ključna riječ (npr. switch, printf, if, case itd.)Ime varijable ne može biti isto kao neka ključna riječ (npr. switch, printf, if, case itd.)

Osnove programiranja - predavanjaOsnove programiranja - predavanja

DobroImeDobroImeDObroImeDObroImePopis_StudenataPopis_StudenataPopis1godinaPopis1godinaUmnozakUmnozak

Popis StudenataPopis StudenataPopis-StudenataPopis-Studenata1godinaPopis1godinaPopis5100051000UmnožakUmnožakSwitchSwitchA 1A 1

Primjer valjanih Primjer valjanih imena varijabliimena varijabli

Primjer nevaljanih Primjer nevaljanih imena varijabliimena varijabli

Page 50: Osnove programiranja - predavanja

50

POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKAPOJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA

• Prilikom izbora imena varijable, dobro je voditi računa o tome da ime precizno opisuje što Prilikom izbora imena varijable, dobro je voditi računa o tome da ime precizno opisuje što varijabla predstavlja.varijabla predstavlja.

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Svrha varijableSvrha varijable Dobro imeDobro ime Loše imeLoše imeStanje na računuStanje na računu Stanje_na_racunu, Stanje, SaldoStanje_na_racunu, Stanje, Saldo SR, S, X, X1, X2SR, S, X, X1, X2

Brzina vlakaBrzina vlaka Brzina_vlaka, Brzina, Brzina_vlaka, Brzina, Brzina_u_KmhBrzina_u_Kmh

Vlak, B, BV, X, X1, X2Vlak, B, BV, X, X1, X2

Tekući datumTekući datum Tekuci_datumTekuci_datum Datum, Tekuci, TD, X, X1, Datum, Tekuci, TD, X, X1, X2X2

Broj linija po Broj linija po stranicistranici

Broj_linija_po_stranici, Broj_linija_po_stranici, Br_linija_po_straniciBr_linija_po_stranici

BLS, Linija, L, X1, X2, X3BLS, Linija, L, X1, X2, X3

Page 51: Osnove programiranja - predavanja

51

POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKAPOJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA

• Tip podatka određuje način korištenja varijable.Tip podatka određuje način korištenja varijable.

Osnove programiranja - predavanjaOsnove programiranja - predavanja

InterniInterni

EksterniEksterni

StatičkiStatički

DinamičkiDinamički

JednostavniJednostavni

SloženiSloženi

DatotekeDatoteke

BazeBazepodatakapodataka

TekstualneTekstualne

TipiziraneTipizirane

Cjelobrojni - INTCjelobrojni - INT

Znakovni - CHARZnakovni - CHAR

Logički - BOOLLogički - BOOL

Realni - FLOATRealni - FLOAT

Polje, Niz, SlogPolje, Niz, Slog

Lista, stog, stablo, Lista, stog, stablo, pokazivačipokazivači

ASCIIASCII

Sekvencijalne, index-Sekvencijalne, index-sekvencijalnesekvencijalne

SQLSQL

Page 52: Osnove programiranja - predavanja

52

POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKAPOJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA

• Osnovna obilježja tipova podatakaOsnovna obilježja tipova podataka

Osnove programiranja - predavanjaOsnove programiranja - predavanja

• INTERNIINTERNI• STATIČKISTATIČKI

• JEDNOSTAVNIJEDNOSTAVNI• SLOŽENISLOŽENI

• DINAMIČKIDINAMIČKI• LINEARNA LISTALINEARNA LISTA• BINARNO STABLOBINARNO STABLO• POKAZIVAČIPOKAZIVAČI

• EKSTERNIEKSTERNI• DATOTEKEDATOTEKE

• TEKSTUALNETEKSTUALNE• TIPIZIRANETIPIZIRANE

• SEKVENCIJALNESEKVENCIJALNE• INDEKSIRANEINDEKSIRANE

• BAZE PODATAKABAZE PODATAKA

- u glavnoj memoriji- u glavnoj memoriji računala računala- odmah dodjeljen- odmah dodjeljen memorijski prostor memorijski prostor, fiksna veličina, fiksna veličina- nedjeljivi- nedjeljivi- sastavljeni od jednostavnih- sastavljeni od jednostavnih- veličina- veličina memorijskog prostora memorijskog prostora može rasti i padati može rasti i padati- linijska struktura: svi elementi jednako vrijedni- linijska struktura: svi elementi jednako vrijedni- hijerarhijska strukt- hijerarhijska strukturaura: nadređeni i podređeni el: nadređeni i podređeni elementiementi- sadrže adresu objekta na koji pokazuju- sadrže adresu objekta na koji pokazuju- na vanjskim nosiocima podataka- na vanjskim nosiocima podataka- imenovani skup komponenti- imenovani skup komponenti- skup redova teksta- skup redova teksta- skup slogova- skup slogova- slijedni pristup slogu- slijedni pristup slogu- direktni i slijedni pristup slogu- direktni i slijedni pristup slogu- skup relacijski povezanih- skup relacijski povezanih tablicatablica

Page 53: Osnove programiranja - predavanja

53

POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKAPOJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA

• Deklarirati varijablu znači jednoznačno odrediti njezino ime i tip podatka.Deklarirati varijablu znači jednoznačno odrediti njezino ime i tip podatka.

Osnove programiranja - predavanjaOsnove programiranja - predavanja

GG

FF

EE

DD

CC 11

BB

AA 00

11 22 33 44 55 66 77

Memorija Memorija računalaračunala

Ime:Ime: brojac brojacTip podatka:Tip podatka: cjelobrojni cjelobrojni C:C: int brojac; brojac = 0; int brojac; brojac = 0;

Ime:Ime: Rezultat RezultatTip podatka:Tip podatka: decimalni decimalni C:C: double Rezultat; double Rezultat;

Ime:Ime: Faktor FaktorTip podatka:Tip podatka: cjelobrojni cjelobrojni C:C: int Faktor = 1; int Faktor = 1;

Page 54: Osnove programiranja - predavanja

54

POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKAPOJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA

• Konstanta:Konstanta:• imenovana predefinirana vrijednost koja se ne mijenja u programuimenovana predefinirana vrijednost koja se ne mijenja u programu• kao konstante se mogu koristiti klasične varijable kojima je dodjeljena početna i jedina kao konstante se mogu koristiti klasične varijable kojima je dodjeljena početna i jedina

vrijednostvrijednost

Osnove programiranja - predavanjaOsnove programiranja - predavanja

int VisinaMtEverest = 8848;int VisinaMtEverest = 8848;float Pi=3.14;float Pi=3.14;int KiloByte =1024;int KiloByte =1024;

Page 55: Osnove programiranja - predavanja

55

POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKAPOJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA

• Konstanta:Konstanta:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

float Opseg = 2 * r * 3.14159265359;float Opseg = 2 * r * 3.14159265359;float Povrsina = r * r * 3.14159265359;float Povrsina = r * r * 3.14159265359;

const double Pi = 3.14159265359;const double Pi = 3.14159265359;

float Opseg = 2 * r * float Opseg = 2 * r * PiPi;;float Povrsina = r * r * Pi;float Povrsina = r * r * Pi;

Page 56: Osnove programiranja - predavanja

56

POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKAPOJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA

• Deklaracija varijable i pridruživanje vrijednosti:Deklaracija varijable i pridruživanje vrijednosti:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

int a = 2;int a = 2;istoisto int a;int a;

a = 2;a = 2;

int a = 2;int a = 2;a = 5;a = 5;

istoistoint a;int a;a = 2;a = 2;a = 5;a = 5;

int a = 2;int a = 2;int b = a;int b = a;int c = b + a;int c = b + a;

c = ?c = ?c = 4c = 4

Page 57: Osnove programiranja - predavanja

57

POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKAPOJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA

• Pridruživanje vrijednosti varijabli:Pridruživanje vrijednosti varijabli:• koristi se operator koristi se operator ==• vrijednost izraza desno od operatora vrijednost izraza desno od operatora == se pridružuje varijabli koja se nalazi lijevo od se pridružuje varijabli koja se nalazi lijevo od

operatora operatora ==• izraz desne strane može biti varijabla, konstanta ili formulaizraz desne strane može biti varijabla, konstanta ili formula

Osnove programiranja - predavanjaOsnove programiranja - predavanja

8 = 4 * 2 8 = 4 * 2 3 * 6 = 183 * 6 = 183.14159 = pi3.14159 = pi

a = b = c = 0;a = b = c = 0;a = b = c + d; a = b = c + d; a = b + 1 = c;a = b + 1 = c;b = e = f - 3 * 4 + e - b;b = e = f - 3 * 4 + e - b;

Page 58: Osnove programiranja - predavanja

58

POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKAPOJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA

Osnove programiranja - predavanjaOsnove programiranja - predavanja

a = b = c = 1;a = b = c = 1;d = 2;d = 2;a = b = c + d; a = b = c + d;

b = e = f = 2;b = e = f = 2;b = e = f - 3 * 4 + e - b;b = e = f - 3 * 4 + e - b;

a = ?a = ?b = ?b = ?c = ?c = ?d = ?d = ?

a = 3a = 3b = 3b = 3c = 1c = 1d = 2d = 2

b = ?b = ?e = ?e = ?f = ?f = ? b = -10b = -10

e = -10e = -10f = 2f = 2

Page 59: Osnove programiranja - predavanja

59

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• Algebarski izrazAlgebarski izraz

Osnove programiranja - predavanjaOsnove programiranja - predavanja

operacijaoperacija c=c=(a + b) (a + b)

izrazizrazc=c=(a + b)(a + b)

operandoperand operandoperand

operatoroperator

Page 60: Osnove programiranja - predavanja

60

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• OperandOperand je podatak koji sudjeluje u operaciji, najčešće je to vrijednost varijable, vrijednost je podatak koji sudjeluje u operaciji, najčešće je to vrijednost varijable, vrijednost konstante ili neka konkretna vrijednost.konstante ili neka konkretna vrijednost.

• OperatorOperator je znak ili riječ koja određuje postupak koji se treba provesti nad operandima s ciljem je znak ili riječ koja određuje postupak koji se treba provesti nad operandima s ciljem dobivanja novog podatka. dobivanja novog podatka.

• IzrazIzraz je sažeta uputa računalu, tj. logički napisan skup operanada i operatora u cjelinu koja bi je sažeta uputa računalu, tj. logički napisan skup operanada i operatora u cjelinu koja bi trebala rezultirati novim podatakomtrebala rezultirati novim podatakom

• OperacijaOperacija je izraz koji formira novi podatak, iz kojeg se može pročitati njegova semantička je izraz koji formira novi podatak, iz kojeg se može pročitati njegova semantička vrijednost koja čini (stvara) novu informaciju.vrijednost koja čini (stvara) novu informaciju.

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 61: Osnove programiranja - predavanja

61

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• Aritmetički operatori grade algebarske izrazeAritmetički operatori grade algebarske izraze• Dijele se na unarne i binarneDijele se na unarne i binarne• Unarni operatori su oni operatori koji se upotrebljavaju u kombinaciji sa samo jednim operandomUnarni operatori su oni operatori koji se upotrebljavaju u kombinaciji sa samo jednim operandom• Binarni operatori su oni operatori koji se upotrebljavaju u kombinaciji sa dva operandaBinarni operatori su oni operatori koji se upotrebljavaju u kombinaciji sa dva operanda

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 62: Osnove programiranja - predavanja

62

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• Unarni operatori:Unarni operatori:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

predznacipredznaci+X+X unarni plusunarni plus -X-X unarni minusunarni minus

inkremencijainkremencijaX++X++ uvećaj nakonuvećaj nakon (postfiks operatori) (postfiks operatori)++X++X uvećaj prijeuvećaj prije (prefiks operatori) (prefiks operatori)

dekremencijadekremencijaX--X-- umanji nakonumanji nakon (postfiks operatori) (postfiks operatori)--X--X umanji prijeumanji prije (prefiks operatori) (prefiks operatori)

Page 63: Osnove programiranja - predavanja

63

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• Unarni operatori (predznaci):Unarni operatori (predznaci):

Osnove programiranja - predavanjaOsnove programiranja - predavanja

a = b = 1;a = b = 1;a = +a;a = +a;b = -b;b = -b;

a = ?a = ?b = ?b = ? a = 1a = 1

b = -1b = -1

a = b = -1;a = b = -1;a = +a;a = +a;b = -b;b = -b;

a = ?a = ?b = ?b = ? a = -1a = -1

b = 1b = 1

Page 64: Osnove programiranja - predavanja

64

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• Unarni operatori (prefiks operatori: ++X i --X)Unarni operatori (prefiks operatori: ++X i --X)• ++X++X najprije će se X povećati za 1, a tek onda koristitinajprije će se X povećati za 1, a tek onda koristiti• --X--X najprije će se X smanjiti za 1, a tek onda koristitinajprije će se X smanjiti za 1, a tek onda koristiti

Primjer:Primjer:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

int a = 1;int a = 1;printf("%d", ++a);printf("%d", ++a);

ispisuje 2ispisuje 2

int a = 1;int a = 1;a=a+1;a=a+1;printf("%d", a);printf("%d", a);

isti rezultatisti rezultat

int a = 1;int a = 1;printf("%d", --a);printf("%d", --a);

ispisuje 0ispisuje 0

int a = 1;int a = 1;a=a-1;a=a-1;printf("%d", a);printf("%d", a);

isti rezultatisti rezultat

Page 65: Osnove programiranja - predavanja

65

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• Unarni operatori (prefiks operatori - ++X i --X)Unarni operatori (prefiks operatori - ++X i --X)

Osnove programiranja - predavanjaOsnove programiranja - predavanja

int a = -3;int a = -3;printf("%d", a);printf("%d", a);printf("%d", ++a);printf("%d", ++a);printf("%d", a);printf("%d", a);

int a = -3;int a = -3;printf("%d", a);printf("%d", a);a=a+1;a=a+1;printf("%d", a);printf("%d", a);printf("%d", a);printf("%d", a);

1. ispis = ?1. ispis = ?2. ispis = ?2. ispis = ?3. ispis = ?3. ispis = ? 1. ispis = -31. ispis = -3

2. ispis = -22. ispis = -23. ispis = -23. ispis = -2

Page 66: Osnove programiranja - predavanja

66

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• Unarni operatori (postfiks operatori - X++ i X--)Unarni operatori (postfiks operatori - X++ i X--)• X++X++ najprije će se X koristiti, a tek ona povećati za 1najprije će se X koristiti, a tek ona povećati za 1• X--X-- najprije će se X koristiti, a tek onda smanjiti za 1najprije će se X koristiti, a tek onda smanjiti za 1

Primjer:Primjer:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

int a = 1;int a = 1;printf("%d", a++);printf("%d", a++);ispisuje 1, pa tek onda ispisuje 1, pa tek onda povećava za 1povećava za 1

int a = 1;int a = 1;printf("%d", a);printf("%d", a);a=a+1;a=a+1;

isti rezultatisti rezultat

int a = 1;int a = 1;printf("%d", a--);printf("%d", a--);ispisuje 1, pa tek onda ispisuje 1, pa tek onda smanjuje za 1smanjuje za 1

int a = 1;int a = 1;printf("%d", a);printf("%d", a);a=a-1;a=a-1;

isti rezultatisti rezultat

Page 67: Osnove programiranja - predavanja

67

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• Unarni operatori (postfiks operatori - X++ i X--)Unarni operatori (postfiks operatori - X++ i X--)

Osnove programiranja - predavanjaOsnove programiranja - predavanja

int a = -3;int a = -3;printf("%d", a);printf("%d", a);printf("%d", a++);printf("%d", a++);printf("%d", a);printf("%d", a);

int a = -3;int a = -3;printf("%d", a);printf("%d", a);printf("%d", a);printf("%d", a);a=a+1;a=a+1;printf("%d", a);printf("%d", a);

1. ispis = ?1. ispis = ?2. ispis = ?2. ispis = ?3. ispis = ?3. ispis = ? 1. ispis = -31. ispis = -3

2. ispis = -32. ispis = -33. ispis = -23. ispis = -2

Page 68: Osnove programiranja - predavanja

68

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• binarni operatori:binarni operatori:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

zbrajanje:zbrajanje: a + ba + b

oduzimanje:oduzimanje: a – b a – b

množenje:množenje: a * ba * b

dijeljenje:dijeljenje: a / ba / b

modulo (ostatak kodmodulo (ostatak kod cjelobrojnog dijeljenjacjelobrojnog dijeljenja):): a % ba % b

Page 69: Osnove programiranja - predavanja

69

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• Operatori dodjele tipa:Operatori dodjele tipa:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

int Brojnik=5, Nazivnik=3;int Brojnik=5, Nazivnik=3;float Rezultat;float Rezultat;Rezultat = Brojnik / Nazivnik;Rezultat = Brojnik / Nazivnik;

Rezultat = ?Rezultat = ?Rezultat = 1Rezultat = 1

int Brojnik=2, Nazivnik=5;int Brojnik=2, Nazivnik=5;float Rezultat;float Rezultat;Rezultat = Brojnik / Nazivnik;Rezultat = Brojnik / Nazivnik;

Rezultat = ?Rezultat = ?Rezultat = 0Rezultat = 0

Rezultat treba biti 1.66666Rezultat treba biti 1.66666

Rezultat treba biti 0.4Rezultat treba biti 0.4

• Dijeljenjem dva cijela broja izazvano je cjelobrojno dijeljenje i rezultat je cijeli broj, sa Dijeljenjem dva cijela broja izazvano je cjelobrojno dijeljenje i rezultat je cijeli broj, sa izostavljenim decimalama (odnosno ostatkom).izostavljenim decimalama (odnosno ostatkom).

Page 70: Osnove programiranja - predavanja

70

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• Ako dijeljenje treba dati realni rezultat, tada je potrebno izazvati realno dijeljenje, na način da se Ako dijeljenje treba dati realni rezultat, tada je potrebno izazvati realno dijeljenje, na način da se barem jedan operand “ponaša” kao realni broj.barem jedan operand “ponaša” kao realni broj.

Osnove programiranja - predavanjaOsnove programiranja - predavanja

int Brojnik=5, Nazivnik=3;int Brojnik=5, Nazivnik=3;float Rezultat;float Rezultat;Rezultat = float(Brojnik) / Nazivnik;Rezultat = float(Brojnik) / Nazivnik;

Rezultat = 1.66666Rezultat = 1.66666

int Brojnik=2, Nazivnik=5;int Brojnik=2, Nazivnik=5;float Rezultat;float Rezultat;Rezultat = Brojnik / float(Nazivnik);Rezultat = Brojnik / float(Nazivnik);

Rezultat = 0.4Rezultat = 0.4

Page 71: Osnove programiranja - predavanja

71

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• LLogički i relacijski operatori grade logičke izrazeogički i relacijski operatori grade logičke izraze• Logički operatori:Logički operatori:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

! x! x negacija (negacija (notnot ))x && yx && y konjunkcija (konjunkcija (and - and - logičko ’logičko ’ii ’)’)x || yx || y disjunkcija (disjunkcija (or - or - logičko ‘logičko ‘iliili ’)’)

Page 72: Osnove programiranja - predavanja

72

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• Tablice istinitosti lTablice istinitosti logičkih operatora:ogičkih operatora:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

FF

TTTT FF

FF FF

TT TT

TT FF

aa !a!a

TT

FF

NOTNOT

aaFF

TT

bb

TT FFANDAND&&&&

I - ANDI - AND

aaFF

TT

bb

TT FFOROR||||

ILI - ORILI - OR

Page 73: Osnove programiranja - predavanja

73

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• RRelacijski operatori (operatori uspoređivanja):elacijski operatori (operatori uspoređivanja):

Osnove programiranja - predavanjaOsnove programiranja - predavanja

a < ba < b da li je a manje od bda li je a manje od ba <= ba <= b da li je a manje ili jednako bda li je a manje ili jednako ba > ba > b da li je a veće od bda li je a veće od ba >= ba >= b da li je a veće ili jednako bda li je a veće ili jednako ba == ba == b da li je a jednako bda li je a jednako ba != ba != b da li je a različito od bda li je a različito od b

Page 74: Osnove programiranja - predavanja

74

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• Jednostavni logički izraz:Jednostavni logički izraz:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

a == ba == boperandoperand operandoperand

relacija, relacija, uspoređivanjeuspoređivanje

sud, tvrdnjasud, tvrdnja

Page 75: Osnove programiranja - predavanja

75

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• Složeni logički izraz:Složeni logički izraz:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

(a < b) && (c == d) || (e > f)(a < b) && (c == d) || (e > f)jednostavnijednostavni

logičkilogičkiizraz 1izraz 1

jednostavnijednostavnilogičkilogičkiizraz 2izraz 2

jednostavnijednostavnilogičkilogičkiizraz 3izraz 3

logičkilogičkioperatoroperator

sud, tvrdnjasud, tvrdnja

Page 76: Osnove programiranja - predavanja

76

(a < b) && (c = = d) || (e > f)(a < b) && (c = = d) || (e > f)

00 11 11

00 11

11a = b = 1a = b = 1c = d = 2c = d = 2

e = 4e = 4f = 3f = 3

&&&&

||||

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• Primjer 1:Primjer 1:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 77: Osnove programiranja - predavanja

77

(a < b) && ((c = = d) || (e > f))(a < b) && ((c = = d) || (e > f))

00 11 11

00 11

00a = b = 1a = b = 1c = d = 2c = d = 2

e = 4e = 4f = 3f = 3

&&&&

||||

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• Primjer 2:Primjer 2:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 78: Osnove programiranja - predavanja

78

(1) zagrade(1) zagrade(2) jednostavni logički izrazi(2) jednostavni logički izrazi(3) negacije(3) negacije(4) konjunkcija(4) konjunkcija(5) disjunkcija(5) disjunkcija

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• Prioriteti ispitivanja:Prioriteti ispitivanja:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 79: Osnove programiranja - predavanja

79

• Fakultet nagrađuje najboljeg studenta studijskim putovanjem u SAD. Kandidiraju Fakultet nagrađuje najboljeg studenta studijskim putovanjem u SAD. Kandidiraju se se studenti A i B. Nagrada je samo jedna, a dobiti će je bolji.studenti A i B. Nagrada je samo jedna, a dobiti će je bolji.

• Kriteriji:Kriteriji:• bolji je onaj koji ima bolji je onaj koji ima veću prosječnu ocjenu veću prosječnu ocjenu (P(PoA i PoBoA i PoB),),• ako su im prosječne ocjene jednake, bolji je onaj kojiako su im prosječne ocjene jednake, bolji je onaj koji je položio je položio više ispita više ispita (Bi(BiA i A i

BiBBiB),),• ako imaju iste prosječne ocjene i jednaki brojako imaju iste prosječne ocjene i jednaki broj položenih ispita, bolji je onaj koji je položenih ispita, bolji je onaj koji je

ispite položio u ispite položio u manje pokušajamanje pokušaja (Bp (BpA i BpBA i BpB).).• Zadatak:Zadatak: postavite složeni logički izraz čijim će se ispitivanjem doznati tko postavite složeni logički izraz čijim će se ispitivanjem doznati tko

će dobiti nagradu.će dobiti nagradu.• PretpostavkaPretpostavka: ne može se dogoditi da svi kriteriji budu jednaki.: ne može se dogoditi da svi kriteriji budu jednaki.

*

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• Zadatak:Zadatak:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 80: Osnove programiranja - predavanja

80

ifif (PoA>PoB)(PoA>PoB) || (PoA == PoB) && (BiA > BiB)|| (PoA == PoB) && (BiA > BiB)|| (PoA == PoB) && (BiA || (PoA == PoB) && (BiA ==== BiB) && (BpA<BpB) BiB) && (BpA<BpB)printf("printf("A je boljiA je bolji")");;

elseelseprintf("printf("B je boljiB je bolji")");;

Podaci za test (3)Podaci za test (3)PoA=PoB=4.83PoA=PoB=4.83BiA=BiB=28BiA=BiB=28BpA=BpA=2929BpB=BpB=3030

Podaci za test (2Podaci za test (2))PoA=PoB=4.83PoA=PoB=4.83BiA=28BiA=28BiB=27BiB=27BpA=BpA=2929BpB=BpB=3030

*

Podaci za test (1Podaci za test (1))PoA=4.82PoA=4.82PoB=4.83PoB=4.83BiA=BiB=28BiA=BiB=28BpA=BpA=2929BpB=29BpB=29

POJAM I DEFINICIJA OPERATORAPOJAM I DEFINICIJA OPERATORA

• Zadatak:Zadatak:

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 81: Osnove programiranja - predavanja

81

Osnove programiranja - predavanjaOsnove programiranja - predavanja

SADRŽAJSADRŽAJ

• Uvod u kolegij. Pojam i definicija računalnog programa i programiranja. Razvoj programskih Uvod u kolegij. Pojam i definicija računalnog programa i programiranja. Razvoj programskih jezika. Pojam i definicija algoritma, programa i pseudokoda. Analiza primjera logičkog problema.jezika. Pojam i definicija algoritma, programa i pseudokoda. Analiza primjera logičkog problema.

• Pojam i definicija osnovnih logičkih struktura (Sekvencija-slijed; Selekcija-odabir; Iteracija-Pojam i definicija osnovnih logičkih struktura (Sekvencija-slijed; Selekcija-odabir; Iteracija-ponavljanje; Skokovi) – analiza primjera u pseudokodu. Pojam i definicija dijagrama toka ponavljanje; Skokovi) – analiza primjera u pseudokodu. Pojam i definicija dijagrama toka programa (blok dijagram)programa (blok dijagram)

• Pojam i definicija varijabli i tipova podataka – analiza primjera. Pojam i definicija operatora – Pojam i definicija varijabli i tipova podataka – analiza primjera. Pojam i definicija operatora – analiza primjera.analiza primjera.

• Analiza primjera za logičku strukturu odabira – selekcije. Analiza primjera za Analiza primjera za logičku strukturu odabira – selekcije. Analiza primjera za logičku strukturu iteracije – ponavljanja.logičku strukturu iteracije – ponavljanja.

• Pojam i definicija funkcije – analiza primjera. Pojam i definicija jednodimenzionalnih polja – Pojam i definicija funkcije – analiza primjera. Pojam i definicija jednodimenzionalnih polja – analiza primjera. analiza primjera.

• Pojam i definicija nizova znakova – analiza primjera. Pojam i definicija zapisa – analiza primjera. Pojam i definicija nizova znakova – analiza primjera. Pojam i definicija zapisa – analiza primjera.

• Pojam i definicija pokazivača – analiza primjera. Pojam i definicija sortiranja – analiza primjera Pojam i definicija pokazivača – analiza primjera. Pojam i definicija sortiranja – analiza primjera Bubble sorta.Bubble sorta.

Page 82: Osnove programiranja - predavanja

82

• Preko Preko tipkovnicetipkovnice se učitavaju dva cijela pozitivna broja A i B. se učitavaju dva cijela pozitivna broja A i B.• Ponudi se odabir operacija:Ponudi se odabir operacija:

• zbrajanjezbrajanje (+) (+)• oduzimanjeoduzimanje (-) (-)• množenjemnoženje (*) (*)• dijeljenjedijeljenje (/) (/)

• Korisnik mora odabrati jednu od operacija.Korisnik mora odabrati jednu od operacija.• Izabrana operacija se izvršava, a rezultat ispisuje na ekran (zaslon).Izabrana operacija se izvršava, a rezultat ispisuje na ekran (zaslon).• Računalo postavlja pitanje da li se želi ponovno računanje (d/n)Računalo postavlja pitanje da li se želi ponovno računanje (d/n)

Osnove programiranja - predavanjaOsnove programiranja - predavanja

• Zadatak:Zadatak:

Page 83: Osnove programiranja - predavanja

83

1. 1. Upis broja A i broja BUpis broja A i broja B2. 2. Ispis Ispis iizbornika matematičkih operacijazbornika matematičkih operacija

++ = zbrajanje = zbrajanje -- = oduzimanje = oduzimanje ** = množenje = množenje // = dijeljenje = dijeljenje3. 3. Izbor Izbor matematičke operacije.matematičke operacije.4. 4. GrananjeGrananje u u ovisno o ovisno o izabranoj matematičkoj operacijiizabranoj matematičkoj operaciji::

zbrajanjezbrajanje oduzimanjeoduzimanje množenjemnoženje dijeljenjedijeljenjeračunanjeračunanje računanjeračunanje računanjeračunanje računanjeračunanjeispisispis ispis ispis ispis ispis ispisispis

5. 5. Ispitivanje Ispitivanje ponovnog računanja (d/n)ponovnog računanja (d/n)::""dd" " = ponavljanje= ponavljanje od od 1. koraka1. koraka iliili ""nn"" = prekid izvođenja = prekid izvođenja

Osnove programiranja - predavanjaOsnove programiranja - predavanja

• Algoritam:Algoritam:

Page 84: Osnove programiranja - predavanja

84

/*Ponavljaj Unesi brojeve A i B.

Ispiši "+ = zbrajanje".Ispiši "- = oduzimanje".Ispiši "* = množenje".Ispiši "/ = dijeljenje".

Unesi matematičku operaciju MO.Ako je MO = '+' ondaIspiši A + B.Inače ako je MO = '-' ondaIspiši A - B.Inače ako je MO = '*' ondaIspiši A * B.Inače ako je MO = '/' ondaIspiši A / B.Ispiši "Ponoviti (d/n)?".Unesi odgovor ODG.

Dok vrijedi ODG = 'd'.*/

Osnove programiranja - predavanjaOsnove programiranja - predavanja

• Pseudokod:Pseudokod:/*ODG = 'd'.Dok vrijedi ODG = 'd' Unesi brojeve A i B.

Ispiši "+ = zbrajanje".Ispiši "- = oduzimanje".Ispiši "* = množenje".Ispiši "/ = dijeljenje".

Unesi matematičku operaciju MO.Ako je MO = '+' ondaIspiši A + B.Inače ako je MO = '-' ondaIspiši A - B.Inače ako je MO = '*' ondaIspiši A * B.Inače ako je MO = '/' ondaIspiši A / B.Ispiši "Ponoviti (d/n)?".Unesi odgovor ODG.

Ponavljaj.*/

Page 85: Osnove programiranja - predavanja

85

POČETAKPOČETAK

Upiši AUpiši AUpiši BUpiši B

Ispiši izbornikIspiši izbornik+ , - , * , /+ , - , * , /

Upiši izborUpiši izborMOMO

OvisnoOvisnoo MO o MO izvediizvedi

Ispiši RezIspiši Rez Ispiši RezIspiši Rez Ispiši RezIspiši Rez Ispiši RezIspiši Rez

IspišiIspišiPonoviti ?Ponoviti ? Upiši ODGUpiši ODG

ODG = 'd'ODG = 'd'

Rez = A+BRez = A+B

++

Rez = A-BRez = A-B

--

Rez = A*BRez = A*B

**

Rez = A/BRez = A/B

//

dadaKRAJKRAJ

nene

Osnove programiranja - predavanjaOsnove programiranja - predavanja

• Dijagram toka programa (blok dijagram):Dijagram toka programa (blok dijagram):

Page 86: Osnove programiranja - predavanja

86

Osnove programiranja - predavanjaOsnove programiranja - predavanja

• Zadatak:Zadatak:

• Napisati program koji će upisivati brojeve dok se za kraj ne upiše 0. Napisati program koji će upisivati brojeve dok se za kraj ne upiše 0. • Kao rezultat ispisati zbroj upisanih brojeva. Kao rezultat ispisati zbroj upisanih brojeva.

1. 1. Upis broja AUpis broja A2. ZBROJ = ZBROJ + A2. ZBROJ = ZBROJ + A3. Ako je A <> 0 onda ponovi algoritam od 1. koraka3. Ako je A <> 0 onda ponovi algoritam od 1. koraka4. Ispiši ZBROJ4. Ispiši ZBROJ

• Algoritam:Algoritam:

/*Ponavljaj Unesi broj A.

ZBROJ = ZBROJ + A.

Dok vrijedi A <> 0.Ispiši ZBROJ.*/

/*A = 1.Dok vrijedi A <> 0 Unesi broj A.

ZBROJ = ZBROJ + A.

Ponavljaj.Ispiši ZBROJ.*/

• PseudokodPseudokod::

Page 87: Osnove programiranja - predavanja

87

PočetakPočetak

UpišiUpišibroj brbroj br

KrajKraj

Da li jeDa li jebr = 0br = 0

IspišiIspišiSumaSumadada

Suma = Suma + brSuma = Suma + br

nene

Osnove programiranja - predavanjaOsnove programiranja - predavanja

• Dijagram toka programa (blok dijagram):Dijagram toka programa (blok dijagram):

Page 88: Osnove programiranja - predavanja

88

Osnove programiranja - predavanjaOsnove programiranja - predavanja

• Zadatak:Zadatak:• Napisati program koji će upisivati brojeve dok se za kraj ne upiše 0. Napisati program koji će upisivati brojeve dok se za kraj ne upiše 0. • Kao rezultat ispisati aritmetičku sredinu upisanih brojeva.Kao rezultat ispisati aritmetičku sredinu upisanih brojeva.

1. 1. Upis broja AUpis broja A2. ZBROJ = ZBROJ + A2. ZBROJ = ZBROJ + A3. BROJAC = BROJAC + 13. BROJAC = BROJAC + 14. Ako je A <> 0 onda ponovi algoritam od 1. koraka4. Ako je A <> 0 onda ponovi algoritam od 1. koraka5. Ispiši ZBROJ/BROJAC5. Ispiši ZBROJ/BROJAC

• Algoritam:Algoritam:

/*Ponavljaj Unesi broj A.

ZBROJ = ZBROJ + A.BROJAC = BROJAC + 1.

Dok vrijedi A <> 0.Ispiši ZBROJ/BROJAC.*/

/*A = 1.Dok vrijedi A <> 0 Unesi broj A.

ZBROJ = ZBROJ + A.BROJAC = BROJAC + 1

Ponavljaj.Ispiši ZBROJ/BROJAC.*/

• PseudokodPseudokod::

Page 89: Osnove programiranja - predavanja

89

Početak

Upišibroj br

Kraj

Suma = Suma + br

ne

Da li jebr = 0

Brojac = Brojac + 1

IspišiProsjek

Osnove programiranja - predavanjaOsnove programiranja - predavanja

• Dijagram toka programa (blok dijagram):Dijagram toka programa (blok dijagram):

daProsjek = Suma / Brojac

Page 90: Osnove programiranja - predavanja

90

Osnove programiranja - predavanjaOsnove programiranja - predavanja

• Zadatak:Zadatak:• Napisati program koji će upisivati ocjene dok se za kraj ne upiše 0. Napisati program koji će upisivati ocjene dok se za kraj ne upiše 0. • Kao rezultat ispisati prosjek ocjena.Kao rezultat ispisati prosjek ocjena.• Ne smije se dozvoliti upis nekorektno upisanih ocjena (ocjena mora biti 1,2,3,4 ili 5).Ne smije se dozvoliti upis nekorektno upisanih ocjena (ocjena mora biti 1,2,3,4 ili 5).

1. 1. Upis broja AUpis broja A2. Ako je 1<=A<=5 onda 2. Ako je 1<=A<=5 onda

ZBROJ = ZBROJ + AZBROJ = ZBROJ + A BROJAC = BROJAC + 1BROJAC = BROJAC + 1

inače inače Ako je A <> 0 ponovi algoritam od 1. korakaAko je A <> 0 ponovi algoritam od 1. koraka

3. Ispiši ZBROJ/BROJAC3. Ispiši ZBROJ/BROJAC

• Algoritam:Algoritam:

Page 91: Osnove programiranja - predavanja

91

Osnove programiranja - predavanjaOsnove programiranja - predavanja

/*Ponavljaj Unesi broj A.

Ako je 1<=A<=5 ondaZBROJ = ZBROJ + A.BROJAC = BROJAC

+ 1.Dok vrijedi A <> 0.Ispiši ZBROJ/BROJAC.*/

/*A = 1.Dok vrijedi A <> 0 Unesi broj A.

Ako je 1<=A<=5 ondaZBROJ = ZBROJ + A.BROJAC = BROJAC + 1

Ponavljaj.Ispiši ZBROJ/BROJAC.*/

• PseudokodPseudokod::

Page 92: Osnove programiranja - predavanja

92

Početak

Upišibroj br

Kraj

Suma = Suma + brBrojac = Brojac + 1

da

Da li jebr = 0

IspišiProsjek

Osnove programiranja - predavanjaOsnove programiranja - predavanja

• Dijagram toka programa (blok dijagram):Dijagram toka programa (blok dijagram):

daProsjek = Suma / Brojac

1<=br<=5

ne

ne

Page 93: Osnove programiranja - predavanja

93

Osnove programiranja - predavanjaOsnove programiranja - predavanja

SADRŽAJSADRŽAJ

• Uvod u kolegij. Pojam i definicija računalnog programa i programiranja. Razvoj programskih Uvod u kolegij. Pojam i definicija računalnog programa i programiranja. Razvoj programskih jezika. Pojam i definicija algoritma, programa i pseudokoda. Analiza primjera logičkog problema.jezika. Pojam i definicija algoritma, programa i pseudokoda. Analiza primjera logičkog problema.

• Pojam i definicija osnovnih logičkih struktura (Sekvencija-slijed; Selekcija-odabir; Iteracija-Pojam i definicija osnovnih logičkih struktura (Sekvencija-slijed; Selekcija-odabir; Iteracija-ponavljanje; Skokovi) – analiza primjera u pseudokodu. Pojam i definicija dijagrama toka ponavljanje; Skokovi) – analiza primjera u pseudokodu. Pojam i definicija dijagrama toka programa (blok dijagram)programa (blok dijagram)

• Pojam i definicija varijabli i tipova podataka – analiza primjera. Pojam i definicija operatora – Pojam i definicija varijabli i tipova podataka – analiza primjera. Pojam i definicija operatora – analiza primjera.analiza primjera.

• Analiza primjera za logičku strukturu odabira – selekcije. Analiza primjera za logičku strukturu Analiza primjera za logičku strukturu odabira – selekcije. Analiza primjera za logičku strukturu iteracije – ponavljanja. iteracije – ponavljanja.

• Pojam i definicija funkcije – analiza primjera. Pojam i definicija Pojam i definicija funkcije – analiza primjera. Pojam i definicija jednodimenzionalnih polja – analiza primjera. jednodimenzionalnih polja – analiza primjera.

• Pojam i definicija nizova znakova – analiza primjera. Pojam i definicija zapisa – analiza primjera. Pojam i definicija nizova znakova – analiza primjera. Pojam i definicija zapisa – analiza primjera.

• Pojam i definicija pokazivača – analiza primjera. Pojam i definicija sortiranja – analiza primjera Pojam i definicija pokazivača – analiza primjera. Pojam i definicija sortiranja – analiza primjera Bubble sorta.Bubble sorta.

Page 94: Osnove programiranja - predavanja

94

POJAM I DEFINICIJA FUNKCIJEPOJAM I DEFINICIJA FUNKCIJE

• Funkcija je potprogram koji izvršava određenu aktivnost. Funkcija je potprogram koji izvršava određenu aktivnost. • Funkcija ne mora obavljati neke minorne aktivnosti (npr. zbrajanje dva broja), nego može Funkcija ne mora obavljati neke minorne aktivnosti (npr. zbrajanje dva broja), nego može

obavljati i složenije i veće aktivnosti.obavljati i složenije i veće aktivnosti.

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 95: Osnove programiranja - predavanja

95

POJAM I DEFINICIJA FUNKCIJEPOJAM I DEFINICIJA FUNKCIJE

• Svojstva funkcija: Svojstva funkcija: • poziva se po potrebi i na mjestima gdje je to potrebnopoziva se po potrebi i na mjestima gdje je to potrebno• može se pozivati beskonačni broj putamože se pozivati beskonačni broj puta• programer mora znati ustrojstvo funkcije, mora znati što funkcija radi ali ne i kakoprogramer mora znati ustrojstvo funkcije, mora znati što funkcija radi ali ne i kako• funkcija komunicira sa mjestom od kuda je pozvana isključivo parametrima (argumentima)funkcija komunicira sa mjestom od kuda je pozvana isključivo parametrima (argumentima)• funkcija može i ne mora vratiti vrijednost - rezultat (funkcija koja ne vraća vrijednost još se funkcija može i ne mora vratiti vrijednost - rezultat (funkcija koja ne vraća vrijednost još se

naziva procedura)naziva procedura)

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 96: Osnove programiranja - predavanja

96

POJAM I DEFINICIJA FUNKCIJEPOJAM I DEFINICIJA FUNKCIJE

• Svojstva funkcija: Svojstva funkcija: • ako funkcija vraća vrijednost, tada se to naziva povratna vrijednost – rezultatako funkcija vraća vrijednost, tada se to naziva povratna vrijednost – rezultat• funkcija može pozvati drugu funkciju, ali i samu sebe (rekurzija)funkcija može pozvati drugu funkciju, ali i samu sebe (rekurzija)• deklariranjem funkcije, deklariramo prototip funkcije što znači njezin naziv, popis deklariranjem funkcije, deklariramo prototip funkcije što znači njezin naziv, popis parametara koje prima, te povratni tip (ako vraća vrijednost)parametara koje prima, te povratni tip (ako vraća vrijednost)• deklaracija funkcije ne sadržava opis funkcije, tj. što funkcija radi i kakodeklaracija funkcije ne sadržava opis funkcije, tj. što funkcija radi i kako• u teoriji funkcija može imati i n argumenata (parametara), ali ne mora imati niti jedanu teoriji funkcija može imati i n argumenata (parametara), ali ne mora imati niti jedan• redoslijed nizanja argumenata prilikom poziva je uređen, ne smiju se miješati argumenti, redoslijed nizanja argumenata prilikom poziva je uređen, ne smiju se miješati argumenti,

točno je poznat redoslijed nizanja argumenatatočno je poznat redoslijed nizanja argumenata• naredbe koje se izvode po pozivu funkcije čine tijelo funkcijenaredbe koje se izvode po pozivu funkcije čine tijelo funkcije

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Page 97: Osnove programiranja - predavanja

97

Osnove programiranja - predavanjaOsnove programiranja - predavanja

DEKLARACIJA, DEFINICIJA I POZIV FUNKCIJEDEKLARACIJA, DEFINICIJA I POZIV FUNKCIJE

Format deklaracije:Format deklaracije:

<povratni tip> ime_funkcije (<tip> argument_1, <tip> argument_2, ..., <tip> argument_n);<povratni tip> ime_funkcije (<tip> argument_1, <tip> argument_2, ..., <tip> argument_n);

int int PotencijaPotencija (int (int baza, int eksponentbaza, int eksponent));;

naziv naziv argumentargumenta (parametra)a (parametra)

DEKLARACIJA (primjer):DEKLARACIJA (primjer):

povratni tippovratni tip

ime funkcijeime funkcijetip argumentatip argumenta

prototip funkcijeprototip funkcije

Page 98: Osnove programiranja - predavanja

98

Osnove programiranja - predavanjaOsnove programiranja - predavanja

DEKLARACIJA, DEFINICIJA I POZIV FUNKCIJEDEKLARACIJA, DEFINICIJA I POZIV FUNKCIJE

• Definicija funkcije opisuje što i kako funkcija radiDefinicija funkcije opisuje što i kako funkcija radi• Funkcija koja vraća vrijednost u tijelu funkcije mora imati naredbu Funkcija koja vraća vrijednost u tijelu funkcije mora imati naredbu returnreturn

int int PotencijaPotencija (int (int baza, int baza, int eksponenteksponent) ) {{ int rezultat;int rezultat; rezultat=1;rezultat=1; for (int i=1; i<=eksponent; i++)for (int i=1; i<=eksponent; i++) {{ rezultat=rezultatrezultat=rezultat ** baza;baza; }} return return rezultatrezultat; ; }}

tijelo funkcijetijelo funkcije

formalni formalni argumentargumentiiDEFINICIJA (primjer):DEFINICIJA (primjer):

izračunata vrijednost se vraćaizračunata vrijednost se vraća

Page 99: Osnove programiranja - predavanja

99

Osnove programiranja - predavanjaOsnove programiranja - predavanja

DEKLARACIJA, DEFINICIJA I POZIV FUNKCIJEDEKLARACIJA, DEFINICIJA I POZIV FUNKCIJE

POZIV (primjer):POZIV (primjer):printf ("%d", Potencijaprintf ("%d", Potencija ( (2, 2, 33))););

stvarni stvarni argumentargument

Primjeri poziva funkcija:Primjeri poziva funkcija:

TestnaFunkcija();TestnaFunkcija(); • funkcija bez parametara i povratne vrijednostifunkcija bez parametara i povratne vrijednosti

TestnaFunkcija(5,x);TestnaFunkcija(5,x); • funkcija koja šalje dva argumenta, konstantu i varijablu, i ne vraća vrijednostfunkcija koja šalje dva argumenta, konstantu i varijablu, i ne vraća vrijednost

Broj=TestnaFunkcija(y);Broj=TestnaFunkcija(y); • funkcija za poslanu vrijednost parametra funkcija za poslanu vrijednost parametra yy, vraća vrijednost koju pridružuje varijabli , vraća vrijednost koju pridružuje varijabli BrojBroj

Rez=Iznos+TestnaFunkcija(8);Rez=Iznos+TestnaFunkcija(8); • u izrazu pridruživanja, vrijednosti varijable u izrazu pridruživanja, vrijednosti varijable IznosIznos dodaje se vrijednost koju je vratila dodaje se vrijednost koju je vratila

funkcija prilikom poziva sa konstantnim parametrom funkcija prilikom poziva sa konstantnim parametrom

printf(“Rezultat=%d”,TestnaFunkcija()); printf(“Rezultat=%d”,TestnaFunkcija()); • ispis teksta na ekran, s vrijednošću koju je vratila funkcijaispis teksta na ekran, s vrijednošću koju je vratila funkcija

Page 100: Osnove programiranja - predavanja

100

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Deklaracija funkcijaDeklaracija funkcija

Kada funkcija ne treba vratiti vrijednost, tada se ona deklarira tipom Kada funkcija ne treba vratiti vrijednost, tada se ona deklarira tipom voidvoid. Tada se u tijelu funkcije . Tada se u tijelu funkcije ne koristi naredba ne koristi naredba returnreturn..Ako je definicija funkcije navedena prije njenog prvog poziva u programu, nije potrebno posebno Ako je definicija funkcije navedena prije njenog prvog poziva u programu, nije potrebno posebno navoditi deklaraciju, već se definicija smatra ujedno i deklaracijom.navoditi deklaraciju, već se definicija smatra ujedno i deklaracijom.

voidvoid ZbrojZbroj (int x (int x, int , int yy) ) {{ printfprintf ("%d", x+y)("%d", x+y); ; }}

......Zbroj(2,5);Zbroj(2,5);......

DEFINICIJA (primjer):DEFINICIJA (primjer):

POZIV (primjer):POZIV (primjer):

Page 101: Osnove programiranja - predavanja

101

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Jednodimenzionalna poljaJednodimenzionalna polja

Polje je niz varijabli istog tipa podataka definiranih zajedničkim imenom.Polje je niz varijabli istog tipa podataka definiranih zajedničkim imenom.Pojedinom elementu polja pristupa se preko imena polja i indeksa (rednog broja) elementa u polju. Pojedinom elementu polja pristupa se preko imena polja i indeksa (rednog broja) elementa u polju. Indeksi polja u programskom jeziku C su cijeli brojevi između 0 i duljine polja umanjenog za 1.Indeksi polja u programskom jeziku C su cijeli brojevi između 0 i duljine polja umanjenog za 1.

Format deklaracije:Format deklaracije:

tip_podatkatip_podatka identifikator [ identifikator [brojbroj ];];

floatfloat x[5]x[5];;DEKLARACIJA (primjer):DEKLARACIJA (primjer):

floatfloatx[x[00]]

floatfloatx[x[11]]

floatfloatx[x[22]]

floatfloatx[x[33]]

floatfloatx[x[44]]

Prvi član polja ima indeks nulaPrvi član polja ima indeks nula

Page 102: Osnove programiranja - predavanja

102

Osnove programiranja - predavanjaOsnove programiranja - predavanja

Jednodimenzionalna poljaJednodimenzionalna polja

Format deklaracije:Format deklaracije:tip_podatkatip_podatka identifikator [ ]={ identifikator [ ]={vrijednost_1vrijednost_1, , vrijednost_2vrijednost_2, ..., , ..., vrijednost_nvrijednost_n};};

floatfloat x[]={x[]={2.22.2,5,5.1.1,8,8.33.33,1,1.22.22,,9.019.01};};

DEKLARACIJA I PRIDRUŽIVANJE VRIJEDNOSTI (primjer):DEKLARACIJA I PRIDRUŽIVANJE VRIJEDNOSTI (primjer):

2.22.2x[x[00]]

5.15.1x[x[11]]

8.338.33x[x[22]]

1.221.22x[x[33]]

9.019.01x[x[44]]

floatfloat x[x[55]];;x[0] = 2.2;x[0] = 2.2;x[1] = x[1] = 55.1;.1;x[2] = x[2] = 88.33;.33;x[3] = x[3] = 11.22.22x[4] = 9.01x[4] = 9.01;;

tip_podatkatip_podatka identifikator [ identifikator [broj_clanovabroj_clanova];];

Page 103: Osnove programiranja - predavanja

103

Osnove programiranja - vježbeOsnove programiranja - vježbe

PokazivačiPokazivači

Svaka deklarirana varijabla posjeduje adresu memorijske lokacije na kojoj se čuvaju vrijednosti Svaka deklarirana varijabla posjeduje adresu memorijske lokacije na kojoj se čuvaju vrijednosti varijable. Pokazivač sadrži adresu memorijske lokacije varijable na koju pokazuje.varijable. Pokazivač sadrži adresu memorijske lokacije varijable na koju pokazuje.

int int xx==55;;int *pokazivac_na_x;int *pokazivac_na_x;

pokazivac_na_x = &x;pokazivac_na_x = &x;

DEKLARACIJA (primjer):DEKLARACIJA (primjer):

pokazivac_na_xpokazivac_na_x

20020055xx

adresaadresa

vrijednostvrijednost

identifikatoridentifikatorpokazivac_na_x =

pokazivac_na_x =

&x;&x;

Page 104: Osnove programiranja - predavanja

104

Osnove programiranja - vježbeOsnove programiranja - vježbe

PokazivačiPokazivači

Operator *Operator * - - operator dereferenciranja ili indirekcije (dereferencing, indirection operator) - izravno operator dereferenciranja ili indirekcije (dereferencing, indirection operator) - izravno pridruživanje vrijednosti pridruživanje vrijednosti varijablevarijable pokazivaču. pokazivaču.Operator &Operator &

- - operator adrese (address-of operator)operator adrese (address-of operator)

int int xx==5, y5, y;;int *pokazivac_na_x;int *pokazivac_na_x;

pokazivac_na_x = &x;pokazivac_na_x = &x;y = *pokazivac_na_x;y = *pokazivac_na_x;

printf printf ("Vrijednost varijable x: %d, a adresa memorijske lokacije: %d", x, pokazivac_na_x);("Vrijednost varijable x: %d, a adresa memorijske lokacije: %d", x, pokazivac_na_x);printf ("\nVrijednost na koju pokazuje pokazivač je: %d", y);printf ("\nVrijednost na koju pokazuje pokazivač je: %d", y);

pokazivac_na_xpokazivac_na_x

20020055xx

adresaadresa

vrijednostvrijednost

identifikatoridentifikatorpokazivac_na_x =

pokazivac_na_x =

&x;&x;y = *pokazivac_na_x;y = *pokazivac_na_x;

Page 105: Osnove programiranja - predavanja

105

aagradgrad[[55]]

\0\0gradgrad[[66]]

Osnove programiranja - vježbeOsnove programiranja - vježbe

Znakovni nizZnakovni niz

Znakovni nizovi su jednodimenzionalna polja znakova koja služe za pohranjivanje teksta:Znakovni nizovi su jednodimenzionalna polja znakova koja služe za pohranjivanje teksta:

char grad[]=“Rijeka”;char grad[]=“Rijeka”;

Na kraju niza se automatski postavlja nul-znak (engl. null-character) Na kraju niza se automatski postavlja nul-znak (engl. null-character) \0\0 koji označava kraj niza koji označava kraj niza znakova.znakova.

RRgradgrad[[00]]

iigradgrad[[11]]

jjgradgrad[[22]]

eegradgrad[[33]]

kkgradgrad[[44]]

Page 106: Osnove programiranja - predavanja

106

Osnove programiranja - vježbeOsnove programiranja - vježbe

ZZapisapis

Zapis je skup podataka koji mogu biti međusobno različitih tipova (zapis je novi složeni tip podatka).Zapis je skup podataka koji mogu biti međusobno različitih tipova (zapis je novi složeni tip podatka).Svaka komponenta zapisa ima svoje ime preko kojeg joj se pristupa.Svaka komponenta zapisa ima svoje ime preko kojeg joj se pristupa.

Deklaracija zapisa:Deklaracija zapisa:

struct struct identifikatoridentifikator{{deklaracija 1; deklaracija 1; deklaracija 2; deklaracija 2; ......deklaracija n;deklaracija n;

} } identifikator,...;identifikator,...;

Page 107: Osnove programiranja - predavanja

107

Osnove programiranja - vježbeOsnove programiranja - vježbe

ZZapisapis

Primjer deklaracije zapisa:Primjer deklaracije zapisa:

struct struct datumdatum{{ int dan; int dan;

int mjesec; int mjesec; int godina;int godina;

} } dt;dt;dt.dan = 13;dt.dan = 13;dt.mjesec = 5;dt.mjesec = 5;dt.godina = 2009;dt.godina = 2009;

1313dandan

55mjesecmjesec

20092009godinagodina

dtdt

Page 108: Osnove programiranja - predavanja

108

Osnove programiranja - predavanjaOsnove programiranja - predavanja

SortiranjeSortiranje

Sortiranje biranjem (selection sort)Sortiranje biranjem (selection sort)Algoritam:Algoritam:1. Pronađi najmanji element u danom nizu i zamjeni ga sa prvim elementom niza1. Pronađi najmanji element u danom nizu i zamjeni ga sa prvim elementom niza2. Ponavljaj korak 1 s ostatkom nesortiranog niza2. Ponavljaj korak 1 s ostatkom nesortiranog niza

66 44 11 88 77 55 33 22

11 44 66 88 77 55 33 22

11 22 66 88 77 55 33 44

11 22 33 88 77 55 66 44

11 22 33 44 77 55 66 88

11 22 33 44 55 77 66 88

11 22 33 44 55 66 77 88

11 22 33 44 55 66 77 88

11 22 33 44 55 66 77 88

Page 109: Osnove programiranja - predavanja

109

Osnove programiranja - predavanjaOsnove programiranja - predavanja

SortiranjeSortiranje

Bubble sortBubble sortAlgoritam:Algoritam:1. idi od početka niza do kraja i zamjeni dva elementa ako je prvi veći od drugog1. idi od početka niza do kraja i zamjeni dva elementa ako je prvi veći od drugog2. Ponavljaj korak 1 s ostatkom nesortiranog niza2. Ponavljaj korak 1 s ostatkom nesortiranog niza

1. PROLAZAK:1. PROLAZAK:

66 44 11 88 77 55 33 22

44 66 11 88 77 55 33 22

44 11 66 88 77 55 33 22

44 11 66 88 77 55 33 22

44 11 66 77 88 55 33 22

44 11 66 77 55 88 33 22

44 11 66 77 55 33 88 22

44 11 66 77 55 33 22 88

66 44 11 88 77 55 33 22

Page 110: Osnove programiranja - predavanja

110

Osnove programiranja - predavanjaOsnove programiranja - predavanja

SortiranjeSortiranje

2. PROLAZAK:2. PROLAZAK:44 11 66 77 55 33 22 88

44 11 66 77 55 33 22 88

11 44 66 77 55 33 22 88

11 44 66 77 55 33 22 88

11 44 66 77 55 33 22 88

11 44 66 55 77 33 22 88

11 44 66 55 33 77 22 88

11 44 66 55 33 22 77 88

Page 111: Osnove programiranja - predavanja

111

Osnove programiranja - predavanjaOsnove programiranja - predavanja

SortiranjeSortiranje

3. PROLAZAK:3. PROLAZAK: 11 44 66 55 33 22 77 88

11 44 66 55 33 22 77 88

11 44 66 55 33 22 77 88

11 44 66 55 33 22 77 88

11 44 55 66 33 22 77 88

11 44 55 33 66 22 77 88

11 44 55 33 22 66 77 88

Page 112: Osnove programiranja - predavanja

112

Osnove programiranja - predavanjaOsnove programiranja - predavanja

SortiranjeSortiranje

4. PROLAZAK:4. PROLAZAK: 11 44 55 33 22 66 77 88

11 44 55 33 22 66 77 88

11 44 55 33 22 66 77 88

11 44 55 33 22 66 77 88

11 44 33 55 22 66 77 88

11 44 33 22 55 66 77 88

5. PROLAZAK:5. PROLAZAK: 11 44 33 22 55 66 77 88

11 44 33 22 55 66 77 88

11 44 33 22 55 66 77 88

11 33 44 22 55 66 77 88

11 33 22 44 55 66 77 88

Page 113: Osnove programiranja - predavanja

113

Osnove programiranja - predavanjaOsnove programiranja - predavanja

SortiranjeSortiranje

6. PROLAZAK:6. PROLAZAK:

7. PROLAZAK:7. PROLAZAK:

11 33 22 44 55 66 77 88

11 33 22 44 55 66 77 88

11 33 22 44 55 66 77 88

11 22 33 44 55 66 77 88

11 22 33 44 55 66 77 88

11 22 33 44 55 66 77 88

11 22 33 44 55 66 77 88