Veleučilište u Rijeci Stručni studij informatike
OSNOVE PROGRAMIRAN PROGRAMIRANJA JA - predavanja -
mr.sc. Alen Jakupović
e-mail: alen.jakupovi
[email protected] [email protected] alen.jakupovic @veleri.hr konzultacije: po dogovoru na e-mail ili tel. 091-5971002
Osnove programiranja - predavanja
13.03.
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 problema.
20.03.
Pojam i definicija osnovnih logičkih struktura (Sekvencija-slijed; Selekcija-odabir; Iteracijaponavljanje; Skokovi) – analiza primjera u pseudokodu. Pojam i definicija dijagrama toka programa (blok dijagram) – analiza primjera.
03.04.
Pojam i definicija varijabli i tipova podataka – analiza primjera. Pojam i definicija operatora – analiza primjera.
17.04.
Analiza primjera za logičku strukturu odabira – selekcije. s elekcije. Analiza primjera za logičku strukturu iteracije – ponavljanja.
24.04.
1. Kolokvij. Pojam i definicija funkcije – analiza primjera. Pojam i definicija jednodimenzionalnih polja – analiza primjera. Pojam i definicija nizova znakova – analiza primjera. Pojam i definicija zapisa – analiza primjera. Pojam i definicija pokazivača – analiza primjera.
08.05.
15.05.
Pojam i definicija sortiranja – analiza primjera Bubble sorta i sortiranja biranjem (selection sort).
29.05.
2. Kolokvij
2
Osnove programiranja - predavanja Kolegij Kolegij • fond sati tjedno: 1 sat predavanja + 3 sata vježbi • ECTS bodova: 5 Predavanjaa Predavanj • Svaki drugi petak po 2 sata (13:30 - 15:00), dvorana IV/1 Bodovi • 2 boda - minimalno 70% prisutnosti na na predavanjima • 3 boda - minimalno 70% prisutnosti na na vježbama • 10 bodova - 1. Kolokvij (teorijski dio) • 20 bodova - 2. Kolokvij (teorijski dio) • 15 bodova - 1. Kolokvij (praktični dio) • 20 bodova - 2- Kolokvij (praktični dio) • 10 bodova - Popravni ispit (pristupaju studenti s 30 - 39 bodova) • 30 bodova - Završni ispit (pristupaju studenti s više od 40 bodova) Literatura • Pery G.: Osnove programiranja, Kompjuter biblioteka, Čačak, 2002. • McConnell, S.: Kod iznutra, Znak, Zagreb, Zagreb, 1995. 1995. • Čukman, T.; Bolt, V.:C/C++, Procon, Zagreb, 1994. • Viduli, R.: Od sada programiramo u C-u, C -u, Školska knjiga, Zagreb, 1993. C-u, • Eckel, B.: Thinking in C++, Volume 1, 2nd Edition, http://www.planetpdf.com/developer/article.asp?ContentID=6634
3
Osnove programiranja - predavanja Cilj kolegija • Razvijanje sustavnog pristupa rješavanju problema • Stjecanje znanja i vještina u procesu programiranja • Upoznavanje s osnovnim konceptima programskog jezika C.
4
Osnove programiranja - predavanja ALGORITAM • Algoritam je precizno opisan način rješenja nekog problema koji jednoznačno određuje što treba napraviti. • Pet svojstava algoritma: • konačnost - mora uvijek završiti nakon konačnog broja koraka • definiranost - svaki korak algoritma mora biti precizno definiran - akcije koje treba poduzeti moraju biti u svakom slučaju rigorozno i nedvosmisleno specificirane • ulaz - algoritam može ali i ne mora imati ulazne veličine koje su dane inicijalno prije prij e početka algoritma • izlaz - algoritam ima jednu ili više izlaznih veličina veličina koje su u specificiranom odnosu sa ulaznim veličinama • efikasnost - očekuje se od svakog algoritma • učinkovitost - u konačnom broju koraka može se dobiti rješenje
Primjer: Izrada ptice od papira
5
Osnove programiranja - predavanja
6
Osnove programiranja - predavanja ALGORITAM •
Prikaz algoritma: • tekstualno - prirodni jezik - narativni opis • grafički - dijagram toka (blok dijagram), slikovno • pseudokod - koristi se tekstualni oblik prikaza algoritamskih koraka s formaliziranim programskim strukturama, odgovara redoslijedu pojavljivanja programskih izraza pri konkretnoj implementaciji u programskom jeziku • programskim jezikom - algoritam se u računalu implementira pomoću konkretnog programskog jezika
7
Osnove programiranja - predavanja RAČUNALNI PROGRAM • Računalni program je algoritam prilagođen izvađanju na računalu • Programski jezik je sredstvo za izražavanje računalnih programa • Osoba koja stvara računalni program se naziva programer, a postupak izrade programa se naziva programiranje • Programer polazi od postavljenog problema i pronalazi algoritam koji ga rješava, a kojeg, u konačnici, opisuje nekim programskim jezikom • Programiranje uključuje učenje sintakse nekog programskog jezika i stjecanje osnovnih intuitivnih znanja glede algoritmizacije problema opisanog riječima
8
Osnove programiranja - predavanja RAČUNALNI PROGRAM • Postoje dvije strategije pri izvršavanju računalnih programa: • 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, 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 mora koristiti program interpreter. • 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) je EXE verzija (izvršni program). Vrši se povezivanje više programskih modula (glavnog programa i potprograma) u jednu cjelinu.
9
Osnove programiranja - predavanja ŽIVOTNI CIKLUS RAČUNALNOG PROGRAMA • Postavljanje zadatka, problema • Sastavljanje algoritma • Programiranje • prilagođavanje algoritma za izvođenje na računalu • Kodiranje programa • pisanje programa u programskom jeziku • Unos, prevođenje i izvođenje programa • Testiranje programa • provjera rada prema postavljenim zahtjevima • Ispravljanje pogrešaka u programu • Dokumentiranje programa • opis algoritama i uporabe programa • Održavanje programa • promjena programa prema zahtjevima korisnika
10
Osnove programiranja - predavanja FAZE RAZVOJA PROGRAMSKIH JEZIKA • Na prvim računalima “programiranje”se provodilo fizičkim lemljenjem pojedinih elektronskih dijelova (projekt Eniac). • 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 računalu. • Prvi jezik koji je primjenjen na elektronskim računalima bio je Short-code1949-te godine.
11
Osnove programiranja - predavanja FAZE RAZVOJA PROGRAMSKIH JEZIKA • I Faza: oko 1950-te (razvoj prvih programskih jezika) Stvoreni su jezici: Plankalkul, Shortcode, MATH-MATIC, Autocode itd. Uglavnom nisu zaživjeli. • II Faza: Oko 1960-te (razvoj teorije i prvih kvalitetnih programskih jezika). Stvoreni su jezici: Fortran(FORmula TRANslation system), ALGOL(ALGOrithm Language), LISP(LISt Programming–za podršku umjetnoj inteligenciji), COBOL(COmmon Business Oriented Language). Utječu na razvoj programiranja do današnjih dana. Ovo je j e i period početka programerske edukacije.
12
Osnove programiranja - predavanja FAZE RAZVOJA PROGRAMSKIH JEZIKA • III Faza: oko 1970-te godine (na osnovi prethodnih iskustava iskustava kreiranje jednostavnih i moćnih programskih jezika) Standardizacija i usvajanje usvajanje tehnologije strukturnog programiranja. Stvoreni su jezici APL(ostavio trag na kasnije jezike), BASIC(Beginners All-purpose Instruction Code omogućio silazak programiranja iz znanstvenih laboratorija među “narod” “ narod” –– stvorena prva video 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 su u ovoj fazi standardizirani
13
Osnove programiranja - predavanja FAZE RAZVOJA PROGRAMSKIH JEZIKA • IV Faza: oko 1980-te godine (dolazi do razvoja programskih jezika za objektno objektno programiranje koji omogućavaju “lakše” pisanje velikih paketa). Stvoreni ili usavršeni jezici C++, Java, Smalltalk, Ada itd. • V Faza – danas (teško je izdvojiti prevladavajući pravac) Razvoj jezika jezika za za paralelno paralelno programiranje, razvoj strategija za OO projektiranje, mrežne aplikacije, programiranje na prijenosnim uređajima (mobilni telefoni, Palm računala), povezivanje aplikacija (VisualBasic)...
14
Osnove programiranja - predavanja
PRIMJER PROBLEMA • Sastavite algoritam za izračunavanje telefonskih troškova na kraju mjeseca, ako su poznati količina telefonskih razgovora u minutama, cijena jedne jedne minute te iznos telefonske pretplate. U iznos telefonske pretplate uračunato je 60 minuta. • Početno poznati podaci • Ukupno trajanje telefonskih razgovora u minutama • KOLIČINA • Cijena jedne minute • CIJENA • Iznos telefonske pretplate • PRETPLATA • Količina razgovora uračunata u pretplatu • 60 • Željeni rezultantni podatak • Iznos ukupnih telefonskih troškova • TROŠAK
15
Osnove programiranja - predavanja
IZRAČUNAVANJE TROŠKA • VIŠAK = KOLIČINA - 60 • TROŠAK = PRETPLATA + VIŠAK * CIJENA
KORACI ALGORITMA Pseudokod: /* Kolika je KOLIČINA telefonskih razgovora (u minutama)? Koliki je iznos PRETPLATE? Kolika je CIJENA jedne minute? Ako je KOLIČINA > 60 onda VIŠAK = KOLIČINA - 60 inače VIŠAK = 0 TROŠAK = PRETPLATA + VIŠAK * CIJENA */
16
Osnove programiranja - vježbe PRIMJER PROBLEMA • Odredi ocjenu na osnovu broja bodova. 50 - 60 dovoljan 61- 75 dobar 76 - 90 vrlo dobar 91 - 100 odličan • Početno poznati podaci • BODOVI • Željeni rezultantni podatak • OCJENA
17
Osnove programiranja - vježbe IZRAČUN OCJENE • • • • •
BODOVI < 50 50 <= BODOVI <= 60 61 <= BODOVI <= 75 76 <= BODOVI <= 90 91 <= BODOVI
NEDOVOLJAN DOVOLJAN DOBAR VRLO DOBAR ODLIČAN
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' */
18
Osnove programiranja - vježbe IZRAČUN OCJENE • • • • •
BODOVI < 50 50 <= BODOVI <= 60 61 <= BODOVI <= 75 76 <= BODOVI <= 90 91 <= BODOVI
NEDOVOLJAN DOVOLJAN DOBAR VRLO DOBAR ODLIČAN
Pseudokod: /* Koliki su BODOVI? Ako su BODOVI < 50 onda OCJENA = 'NEDOVOLJAN' inače Ako su BODOVI <= 60 onda OCJENA = 'DOVOLJAN' inače Ako su BODOVI <= 75 onda OCJENA = 'DOBAR' inače Ako su BODOVI <= 90 onda OCJENA = 'VRLO DOBAR' inače OCJENA = 'ODLIČAN'
19
Osnove programiranja - predavanja SADRŽAJ • 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.
Pojam i definicija osnovnih logičkih struktura (Sekvencija-slijed; Selekcijaodabir; Iteracija-ponavljanje; Skokovi) – analiza primjera u pseudokodu. Pojam i definicija dijagrama toka programa (blok dijagram) • Pojam i definicija varijabli i tipova podataka – analiza primjera. Pojam i definicija definicij a operatora operatora –– analiza primjera. • Analiza primjera za logičku strukturu odabira – selekcije. Analiza primjera za logičku strukturu iteracije – ponavljanja. • Pojam i definicija funkcije – analiza primjera. Pojam i definicija jednodimenzionalnih polja – analiza primjera. • Pojam i definicija nizova znakova – analiza primjera. Pojam i definicija zapisa z apisa – analiza primjera. • Pojam i definicija pokazivača – analiza primjera. Pojam i definicija sortiranja – analiza analiza primjera primjera Bubble sorta.
20
Osnove programiranja - predavanja OSNOVNE LOGIČKE STRUKTURE • • • •
Sekvencija (slijed) Selekcija (izbor) Iteracija (ponavljanje) Skokovi
21
Osnove programiranja - predavanja SEKVENCIJA (SLIJED) Pseudokod: /* Izvrši 1. naredbu. Izvrši 2. naredbu. Izvrši 3. naredbu. */ • Oblik u C-u:
{ ... naredba_1; naredba_2; naredba_3; ... }
• Primjer: { printf ("Ovo je 1. naredba"); printf ("\nOvo je 2. naredba"); printf ("Ovo je 3. naredba"); }
Pseudokod: /* Ispiši "Ovo je 1. naredba". Ispiši u novi red "Ovo je 2. naredba". Ispiši "Ovo je 3. naredba". */
22
Osnove programiranja - predavanja SELEKCIJA (IZBOR) • Pseudokod 1: /* Ako je zadovoljen UVJET onda izvrši ovaj BLOK NAREDBI. */
•
Oblik u C-u: { ... if (UVJET) { BLOK NAREDBI; } ... }
• Primjer: { if (a < 0) { printf("a je negativan \n"); printf("a nije pozitivan \n"); printf("a nije 0"); } }
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" */
23
Osnove programiranja - predavanja SELEKCIJA (IZBOR) • Pseudokod 2: /* Ako je zadovoljen UVJET onda izvrši BLOK NAREDBI_1. inače izvrši BLOK NAREDBI_2. */
• Primjer: { if (a < 0) { printf("a je negativan"); } else { printf("a je pozitivan ili nula"); }
•
Oblik u C-u: { ... if (UVJET) { BLOK NAREDBI_1; } else { BLOK NAREDBI_2; } ...
Pseudokod: } /* Ako je a < 0 onda ispiši "a je negativan". inače ispiši "a je pozitivan ili nula". */
24
Osnove programiranja - predavanja SELEKCIJA (IZBOR) • • 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. */
Oblik u C-u: { ... if (UVJET_1) { BLOK NAREDBI_1; } else if (UVJET_2) { BLOK NAREDBI_2; } ... else { BLOK NAREDBI_n; } ... }
25
Osnove programiranja - predavanja SELEKCIJA (IZBOR) • Primjer: { if (a < 0) { printf("a je negativan"); } else if (a > 0) { printf("a je pozitivan"); } else { printf("a je nula"); }
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". */
}
26
Osnove programiranja - predavanja SELEKCIJA (IZBOR) • Koji uvjet mora biti ispunjen da bi se ispisao C, koji da bi se ispisao D, te koji da da bi bi se se ispisao E? {
{ if (a == 0) if (b == 0) printf("C"); else printf("D"); printf("E");
}
Pseudokod: /* Ako je a = 0 onda Ako je b = 0 onda ispiši "C". inače ispiši "D". Ispiši "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");
}
}
27
Osnove programiranja - predavanja SELEKCIJA (IZBOR) • • 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.
*/
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; ... }
28
Osnove programiranja - predavanja SELEKCIJA (IZBOR) • 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"); } }
29
Osnove programiranja - predavanja SELEKCIJA (IZBOR) • 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: /* 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". */
30
Osnove programiranja - predavanja ITERACIJA (PONAVLJANJE) • Pseudokod 1 (ponavljanje s izlazom na vrhu): /* Dok vrijedi UVJET ponavljaj izvedi BLOK NAREDBI. */
•
Oblik u C-u: { ... while (UVJET) { BLOK NAREDBI; } ... }
• Primjer: { a = 0; while (a < 5) { a = a + 1; printf("\nDobar dan"); }
Pseudokod: /* Postavi a = 0. Dok vrijedi a < 5 ponavljaj postavi a = a +1. ispiši "Dobar dan". */
}
31
Osnove programiranja - predavanja ITERACIJA (PONAVLJANJE) • Pseudokod 2 (ponavljanje s izlazom na dnu): /* Ponavljaj izvedi BLOK NAREDBI. Dok vrijedi UVJET. */
•
Oblik u C-u: { ... do { BLOK NAREDBI; } while (UVJET); ... }
• Primjer: { a = 0; do { a = a + 1; printf("\nDobar dan"); } while (a < 5);
Pseudokod: /* Postavi a = 0. Ponavljaj postavi a = a +1. ispiši "Dobar dan". Dok vrijedi a < 5. */
}
32
Osnove programiranja - predavanja ITERACIJA (PONAVLJANJE) • Što će biti rezultat slijedećih programa: {
{ a = 5; while (a < 5) { a = a + 1; printf("\nDobar dan"); }
a = 5; do { a = a + 1; printf("\nDobar dan"); } while (a < 5);
} }
Pseudokod: /* Postavi a = 5. Dok vrijedi a < 5 ponavljaj postavi a = a +1. ispiši "Dobar dan". */
Pseudokod: /* Postavi a = 5. Ponavljaj postavi a = a +1. ispiši "Dobar dan". Dok vrijedi a < 5. */
33
Osnove programiranja - predavanja ITERACIJA (PONAVLJANJE) • Pseudokod 3 (ponavljanje s eksplicitnim brojačem): /* Ponavljaj N puta izvedi BLOK NAREDBI. */
•
Oblik u C-u: { ... for(int i=1; i<=N; i++) { BLOK NAREDBI; } ... }
• Primjer: { for(int i=1; i<=5; i++) { printf("\nDobar dan"); }
Pseudokod: /* Ponavljaj 5 puta ispiši "Dobar dan". */
}
34
Osnove programiranja - predavanja SKOKOVI • Pseudokod 1: /* ... Skoči na LABELA_1. ... LABELA_1: izvrši BLOK NAREDBI. */
•
Oblik u C-u: { ... goto LABELA_1; ... LABELA_1: { BLOK NAREDBI; } }
• Primjer: { if (provjera < 0) { goto greska; } ... greska: { printf("Greška!"); }
Pseudokod: /* Ako je provjera < 0 onda skoči na labelu GRESKA. ... GRESKA: ispiši "Greška". */
35
Osnove programiranja - predavanja SKOKOVI • Pseudokod 2: /* ... Vrati VRIJEDNOST. ... */
• Primjer: { if (provjera < 0) { return -1; } else { return 1; } }
•
Oblik u C-u: { ... return VRIJEDNOST; ... }
Pseudokod: /* Ako je provjera < 0 onda vrati -1. inače vrati 1. */
36
Osnove programiranja - predavanja SKOKOVI • Pseudokod 3: /* ... nastavi petlju. ... */ • Primjer: { a = 0; do { a = a + 1; if (a == 1) { continue; } printf("\nDobar dan"); } while (a < 5); }
•
Oblik u C-u: { ... continue; ... }
Pseudokod: /* Postavi a = 0. Ponavljaj postavi a = a +1. Ako je a = 1 onda nastavi petlju. ispiši "Dobar dan". Dok vrijedi a < 5. */
37
Osnove programiranja - predavanja SKOKOVI • Pseudokod 4: /* ... izvrši prekid. ... */ • Primjer: { a = 0; do { a = a + 1; if (a == 1) { break; } printf("\nDobar dan"); } while (a < 5); }
•
Oblik u C-u: { ... break; ... }
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. */
38
Osnove programiranja - predavanja SKOKOVI • Pseudokod 4: /* ... izvrši prekid programa. ... */ • Primjer: { a = 0; do { a = a + 1; if (a == 1) { exit(-1); } printf("\nDobar dan"); } while (a < 5); }
•
Oblik u C-u: { ... exit(VRIJEDNOST); ... }
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. */
39
Osnove programiranja - predavanja DIJAGRAM TOKA PROGRAMA (BLOK DIJAGRAM) • Skup simbola koji se koriste u grafičkom opisu algoritma.
početak i kraj algoritma obrada (procesiranje) u algoritmu upis podataka potrebnih za algoritam ili ispis rezultata algoritma
grananje u algoritmu
tijek koraka u algoritmu
40
Osnove programiranja - predavanja DIJAGRAM TOKA PROGRAMA (BLOK (BLOK DIJAGRAM) • Primjer:
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):
Početak
Ispiši Ovo je 1. naredba Ovo je 2. naredba Ovo je 3. naredba Kraj
41
Osnove programiranja - predavanja DIJAGRAM TOKA PROGRAMA (BLOK (BLOK DIJAGRAM) • Primjer:
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" */
Dijagram toka programa (blok dijagram):
Početak Upiši a Ispiši a je negativan a nije pozitivan a nije 0
d a
a<0 n e Kraj
42
Osnove programiranja - predavanja DIJAGRAM TOKA PROGRAMA (BLOK (BLOK DIJAGRAM) • Primjer:
Dijagram toka programa (blok dijagram):
Pseudokod: /* Ako je a < 0 onda ispiši "a je negativan". inače ispiši "a je pozitivan ili nula". */
Početak Upiši a Ispiši a je negativan
d a
a<0
n e Ispiši a je pozitivan ili nula Kraj 43
Osnove programiranja - predavanja DIJAGRAM TOKA PROGRAMA (BLOK DIJAGRAM) • Primjer: 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". */
Dijagram toka programa (blok dijagram): Početak Upiši a Ispiši da a < 0 a je negativan ne a>0 ne Ispiši a je nula Kraj
44
da
Ispiši a je pozitivan
Osnove programiranja - predavanja DIJAGRAM TOKA PROGRAMA (BLOK DIJAGRAM) • Primjer:
Pseudokod: /* Postavi a = 0. Dok vrijedi a < 5 ponavljaj postavi a = a +1. ispiši "Dobar dan". */
Dijagram toka programa (blok dijagram): Početak a=0 ne
a<5 da a=a+1
Ispiši Dobar dan
Kraj
45
Osnove programiranja - predavanja DIJAGRAM TOKA PROGRAMA (BLOK DIJAGRAM) • Primjer:
Pseudokod: /* Postavi a = 0. Ponavljaj postavi a = a +1. ispiši "Dobar dan". Dok vrijedi a < 5. */
Dijagram toka programa (blok dijagram): Početak a=0 a=a+1 Ispiši Dobar dan ne
a<5 da Kraj
46
Osnove programiranja - predavanja SADRŽAJ • 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. • Pojam i definicija osnovnih logičkih struktura (Sekvencija-slijed; Selekcija-odabir; Iteracijaponavljanje; Skokovi) – analiza primjera u pseudokodu. Pojam i definicija dijagrama toka programa (blok dijagram)
Pojam i definicija varijabli i tipova podataka – analiza primjera. Pojam i definicija operatora – analiza primjera. • Analiza primjera za logičku strukturu odabira – selekcije. Analiza primjera za logičku strukturu iteracije – ponavljanja. • Pojam i definicija funkcije – analiza primjera. Pojam i definicija jednodimenzionalnih polja – analiza primjera. • Pojam i definicija nizova znakova – analiza primjera. Pojam i definicija zapisa z apisa – analiza primjera. • Pojam i definicija pokazivača – analiza primjera. Pojam i definicija sortiranja – analiza analiza primjera primjera Bubble sorta.
47
Osnove programiranja - predavanja POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA • Varijabla je imenovani dio memorije računala • Svojstva varijabli: • ime (identifikator) • adresa • vrijednost • tip (tip podatka) • trajanje • doseg
48
Osnove programiranja - predavanja POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA • Dozvoljeni znakovi u sastavljanju imena (identifikatora) varijabli: • slova engleske abecede (A-Z, a-z) • brojevi (0-9) • podcrta (underscore '_') • Prvi 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.)
Primjer valjanih imena varijabli
DobroIme DObroIme Popis_Studenata Popis1godina Umnozak
Primjer nevaljanih imena varijabli
Popis Studenata Popis-Studenata 1godinaPopis 51000 Umnožak Switch A1
49
Osnove programiranja - predavanja POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA • Prilikom izbora imena varijable, dobro je voditi računa o tome da ime precizno opisuje što varijabla predstavlja.
Svrha varijable Stanje na računu
Dobro ime Loše ime Stanje_na_racunu, Stanje, Saldo SR, S, X, X1, X2
Brzina vlaka
Brzina_vlaka, Brzina, Brzina_u_Kmh
Vlak, B, BV, X, X1, X2
Tekući datum
Tekuci_datum
Datum, Tekuci, TD, X, X1, X2
Broj linija po stranici
Broj_linija_po_stranici, Br_linija_po_stranici
BLS, Linija, L, X1, X2, X3
50
Osnove programiranja - predavanja POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA • Tip podatka određuje način korištenja varijable. Statički
Cjelobrojni - INT
Jednostavni
Znakovni - CHAR
Interni
Logički - BOOL Realni - FLOAT
Složeni
Polje, Niz, Slog Lista, stog, stablo, pokazivači
Dinamički Datoteke
Tekstualne Tipizirane
Eksterni Baze podataka
ASCII Sekvencijalne, indexsekvencijalne SQL
51
Osnove programiranja - predavanja POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA • Osnovna obilježja tipova podataka
INTERNI STATIČKI JEDNOSTAVNI SLOŽENI DINAMIČKI LINEARNA LISTA BINARNO STABLO POKAZIVAČI EKSTERNI DATOTEKE TEKSTUALNE TIPIZIRANE SEKVENCIJALNE INDEKSIRANE BAZE PODATAKA
- u glavnoj memoriji računala - odmah dodjeljen memorijski prostor , fiksna veličina - nedjeljivi - sastavljeni od jednostavnih - veličina memorijskog prostora može rasti i padati - linijska struktura: svi elementi jednako vrijedni - hijerarhijska struktura: nadređeni i podređeni el ementi - sadrže adresu objekta na koji pokazuju - na vanjskim nosiocima podataka - imenovani skup komponenti - skup redova teksta - skup slogova - slijedni pristup slogu - direktni i slijedni pristup slogu - skup relacijski povezanih tablica
52
Osnove programiranja - predavanja POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA • Deklarirati varijablu znači jednoznačno odrediti njezino ime i tip podatka.
Ime: Rezultat Tip podatka: decimalni C: double Rezultat; G Ime: Faktor Tip podatka: cjelobrojni C: int Faktor = 1;
F E Memorija računala
D C
1
B A
0
Ime: brojac Tip podatka: cjelobrojni C: int brojac; brojac = 0;
1 2 3 4 5 6 7
53
Osnove programiranja - predavanja POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA • Konstanta: • imenovana predefinirana vrijednost koja se ne mijenja u programu • kao konstante se mogu koristiti klasične varijable kojima je dodjeljena početna i jedina vrijednost
int VisinaMtEverest = 8848; float Pi=3.14; int KiloByte =1024;
54
Osnove programiranja - predavanja POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA • Konstanta:
float Opseg = 2 * r * 3.14159265359; float Povrsina = r * r * 3.14159265359;
const double Pi = 3.14159265359; float Opseg = 2 * r * Pi; float Povrsina = r * r * Pi;
55
Osnove programiranja - predavanja POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA • Deklaracija varijable i pridruživanje vrijednosti:
int a = 2; int a = 2; a = 5;
int a = 2; int b = a; int c = b + a;
isto isto
int a; a = 2; int a; a = 2; a = 5;
c=? c=4
56
Osnove programiranja - predavanja POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA • Pridruživanje vrijednosti varijabli: • koristi se operator = • vrijednost izraza desno od operatora = se pridružuje varijabli koja se nalazi lijevo od operatora = • izraz desne strane može biti varijabla, konstanta ili formula
8=4*2 3 * 6 = 18 3.14159 = pi
a = b = c = 0; a = b = c + d; a = b + 1 = c; b = e = f - 3 * 4 + e - b;
57
Osnove programiranja - predavanja POJAM I DEFINICIJA VARIJABLI I TIPOVA PODATAKA
a = b = c = 1; d = 2; a = b = c + d;
a=? b=? c=? d=?
b = e = f = 2; b = e = f - 3 * 4 + e - b;
a=3 b=3 c=1 d=2 b=? e=? f=?
b = -10 e = -10 f=2 58
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • Algebarski izraz
operacija
c=(a + b)
operand
operand
c=(a + b)
izraz operator
59
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • Operand je je podatak koji sudjeluje u operaciji, najčešće je to vrijednost varijable, vrijednost konstante ili neka konkretna vrijednost. • Operator je je znak ili riječ koja određuje postupak koji se treba provesti nad operandima s ciljem dobivanja novog podatka. • Izraz je je sažeta uputa računalu, tj. logički napisan skup operanada i operatora u cjelinu koja bi trebala rezultirati novim podatakom • Operacija je izraz koji formira novi podatak, iz kojeg se može pročitati njegova njegova semantička semantička Operacija je vrijednost koja čini (stvara) novu informaciju.
60
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • • • •
Aritmetički operatori grade algebarske izraze Dijele se na unarne i binarne Unarni 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 operanda
61
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • Unarni operatori:
predznaci +X -X
unarni plus unarni minus
inkremencija X++ uvećaj nakon (postfiks operatori) ++X uvećaj prije (prefiks operatori) dekremencija X-umanji nakon (postfiks operatori) --X umanji prije (prefiks operatori)
62
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • Unarni operatori (predznaci):
a = b = 1; a = +a; b = -b; a = b = -1; a = +a; b = -b;
a=? b=?
a=? b=?
a=1 b = -1
a = -1 b=1
63
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • Unarni operatori (prefiks operatori: ++X i --X) • ++X najprije će se X povećati za 1, a tek onda koristiti • --X najprije će se X smanjiti za 1, a tek onda koristiti Primjer:
int a = 1; printf("%d", ++a); ispisuje 2
isti rezultat
int a = 1; a=a+1; printf("%d", a);
int a = 1; printf("%d", --a); ispisuje 0
isti rezultat
int a = 1; a=a-1; printf("%d", a); 64
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • Unarni operatori (prefiks operatori - ++X i --X)
int a = -3; printf("%d", a); printf("%d", ++a); printf("%d", a);
1. ispis = ? 2. ispis = ? 3. ispis = ? 1. ispis = -3 2. ispis = -2 3. ispis = -2
int a = -3; printf("%d", a); a=a+1; printf("%d", a); printf("%d", a);
65
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • Unarni operatori (postfiks operatori - X++ i X--) • X++ najprije će se X koristiti, a tek ona povećati za 1 • X-najprije će se X koristiti, a tek onda smanjiti za 11 Primjer:
int a = 1; printf("%d", a++);
isti rezultat
int a = 1; printf("%d", a); a=a+1;
isti rezultat
int a = 1; printf("%d", a); a=a-1;
ispisuje 1, pa tek onda povećava za 1
int a = 1; printf("%d", a--); ispisuje 1, pa tek onda smanjuje za 1
66
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • Unarni operatori (postfiks operatori - X++ i X--)
int a = -3; printf("%d", a); printf("%d", a++); printf("%d", a);
1. ispis = ? 2. ispis = ? 3. ispis = ? 1. ispis = -3 2. ispis = -3 3. ispis = -2
int a = -3; printf("%d", a); printf("%d", a); a=a+1; printf("%d", a);
67
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • binarni operatori:
zbrajanje:
a+b
oduzimanje:
a–b
množenje:
a*b
dijeljenje:
a/b
modulo (ostatak kod cjelobrojnog dijeljenja ): a % b
68
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • Operatori dodjele tipa:
int Brojnik=5, Nazivnik=3; float Rezultat; Rezultat = Brojnik / Nazivnik;
Rezultat = ? Rezultat = 1
Rezultat treba biti 1.66666
int Brojnik=2, Nazivnik=5; float Rezultat; Rezultat = Brojnik / Nazivnik;
Rezultat = ? Rezultat = 0
Rezultat treba biti 0.4 • Dijeljenjem dva cijela broja izazvano je cjelobrojno dijeljenje i rezultat rezultat je je cijeli cijeli broj, broj, sa sa izostavljenim decimalama (odnosno ostatkom).
69
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • 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.
int Brojnik=5, Nazivnik=3; float Rezultat; Rezultat = float(Brojnik) / Nazivnik;
Rezultat = 1.66666
int Brojnik=2, Nazivnik=5; float Rezultat; Rezultat = Brojnik / float(Nazivnik);
Rezultat = 0.4
70
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • Logički i relacijski operatori grade logičke izraze • Logički operatori:
!x x && y ’) x || y
negacija (not ) konjunkcija (and - logičko ’i disjunkcija (or - logičko ‘ili ’)
71
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • Tablice istinitosti logičkih operatora:
NOT a T F
I - AND !a
ILI - OR b
AND &&
T
T
T
b
F
OR ||
T
F
F
T
T
T
F
T
F
F T
a
a F
F
F
72
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • Relacijski operatori (operatori uspoređivanja):
a
b a >= b a == b a != b
da li je a manje od b da li je a manje ili jednako b da li je a veće od b da li je a veće ili jednako b da li je a jednako b da li je a različito od b
73
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • Jednostavni logički izraz:
operand
a == b
operand
relacija, uspoređivanje
sud, tvrdnja
74
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • Složeni logički izraz:
logički operator
(a < b) && (c == d) || (e > f) jednostavni logički izraz 1
jednostavni logički izraz 2
jednostavni logički izraz 3
sud, tvrdnja 75
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • Primjer 1:
(a < b) && (c = = d) || (e > f) 0 a=b=1 c=d=2 e=4 f=3
&& 0
1
1 1
|| 1 76
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • Primjer 2:
(a < b) && ((c = = d) || (e > f)) 0 0
1 && 0
1
|| 1
a=b=1 c=d=2 e=4 f=3 77
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • Prioriteti ispitivanja:
(1) (2) (3) (4) (5)
zagrade jednostavni logički izrazi negacije konjunkcija disjunkcija
78
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • Zadatak: • •
• •
Fakultet nagrađuje najboljeg studenta studijskim putovanjem u SAD. Kandidiraju se studenti A i B. Nagrada je samo jedna, a dobiti će je bolji. Kriteriji: • bolji je onaj koji ima veću prosječnu ocjenu (PoA i PoB), • ako su im prosječne ocjene jednake, bolji je onaj koji je je položio više ispita (BiA i BiB), • ako imaju iste prosječne ocjene i jednaki broj položenih ispita, bolji je onaj koji je ispite položio u manje pokušaja (BpA i BpB).
Zadatak: postavite složeni logički izraz čijim će se ispitivanjem doznati tko će dobiti nagradu. Pretpostavka: ne može se dogoditi da svi kriteriji budu jednaki.
79
Osnove programiranja - predavanja POJAM I DEFINICIJA DEFINICIJA OPERATORA • Zadatak:
if (PoA>PoB) || (PoA == PoB) && (BiA > BiB) || (PoA == PoB) && (BiA == BiB) && (BpA
Podaci za test (2) PoA=PoB=4.83 BiA=28 BiB=27 BpA=29 BpB=30
Podaci za test (3) PoA=PoB=4.83 BiA=BiB=28 BpA=29 BpB=30 80
Osnove programiranja - predavanja SADRŽAJ • 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. • Pojam i definicija osnovnih logičkih struktura (Sekvencija-slijed; Selekcija-odabir; Iteracijaponavljanje; Skokovi) – analiza primjera u pseudokodu. Pojam i definicija dijagrama toka programa (blok dijagram) • Pojam i definicija varijabli i tipova podataka – analiza primjera. Pojam i definicija definicij a operatora operatora –– analiza primjera.
Analiza primjera za logičku strukturu odabira – selekcije. Analiza primjera za logičku strukturu iteracije – ponavljanja. • Pojam i definicija funkcije – analiza primjera. Pojam i definicija jednodimenzionalnih polja – analiza primjera. • Pojam i definicija nizova znakova – analiza primjera. Pojam i definicija zapisa z apisa – analiza primjera. • Pojam i definicija pokazivača – analiza primjera. Pojam i definicija sortiranja – analiza analiza primjera primjera Bubble sorta.
81
Osnove programiranja - predavanja • Zadatak:
• •
• • •
Preko tipkovnice se učitavaju dva cijela pozitivna broja A i B. Ponudi se odabir operacija: • zbrajanje (+) • oduzimanje (-) • množenje (*) • dijeljenje (/) Korisnik mora odabrati jednu od operacija. Izabrana operacija se izvršava, a rezultat ispisuje na ekran (zaslon). Računalo postavlja pitanje da li se želi ponovno računanje (d/n)
82
Osnove programiranja - predavanja • Algoritam:
1. Upis broja A i broja B 2. Ispis izbornika matematičkih operacija + = zbrajanje - = oduzimanje * = množenje / = dijeljenje 3. Izbor matematičke operacije. 4. Grananje u ovisno o izabranoj matematičkoj operaciji: zbrajanje oduzimanje množenje dijeljenje računanje računanje računanje računanje ispis ispis ispis ispis 5. Ispitivanje ponovnog računanja (d/n): "d" = ponavljanje od 1. koraka
ili
"n" = prekid izvođenja
83
Osnove programiranja - predavanja • Pseudokod:
/* 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 = '+' onda Ispiši A + B. Inače ako je MO = '-' onda Ispiši A - B. Inače ako je MO = '*' onda Ispiši A * B. Inače ako je MO = '/' onda Ispiši A / B. Ispiši "Ponoviti (d/n)?". Unesi odgovor ODG. Dok vrijedi ODG = 'd'.
/* 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 = '+' onda Ispiši A + B. Inače ako je MO = '-' onda Ispiši A - B. Inače ako je MO = '*' onda Ispiši A * B. Inače ako je MO = '/' onda Ispiši A / B. Ispiši "Ponoviti (d/n)?". Unesi odgovor ODG. 84 Ponavljaj.
Osnove programiranja - predavanja • Dijagram toka programa (blok dijagram):
POČETAK +
Upiši A Upiši B
Rez = A+B
Ispiši izbornik + , - ,* ,/
Ispiši Rez
Upiši izbor MO da
Ovisno o MO izvedi Rez = A-B
Ispiši Rez Ispiši Ponoviti ?
ODG = 'd'
* Rez = A*B
Ispiši Rez
/ Rez = A/B
Ispiši Rez
Upiši ODG
KRAJ
ne
85
Osnove programiranja - predavanja • Zadatak: • •
Napisati program koji će upisivati brojeve dok se za kraj ne upiše 0. Kao rezultat ispisati zbroj upisanih brojeva.
• Algoritam: 1. Upis broja A 2. ZBROJ = ZBROJ + A 3. Ako je A <> 0 onda ponovi algoritam od 1. koraka 4. Ispiši ZBROJ • Pseudokod:
/* 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. 86
Osnove programiranja - predavanja • Dijagram toka programa (blok dijagram):
Početak
Upiši broj br
Suma = Suma + br
Da li je br = 0 ne
da
Ispiši Suma
Kraj
87
Osnove programiranja - predavanja • Zadatak: • Napisati program koji će upisivati brojeve dok se za kraj ne upiše 0. • Kao rezultat ispisati aritmetičku sredinu upisanih brojeva. • Algoritam: 1. Upis broja A 2. ZBROJ = ZBROJ + A 3. BROJAC = BROJAC + 1 4. Ako je A <> 0 onda ponovi algoritam od 1. koraka 5. Ispiši ZBROJ/BROJAC • Pseudokod:
/* 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. 88
Osnove programiranja - predavanja • Dijagram toka programa (blok dijagram):
Početak
Upiši broj br
Da li je br = 0
da
ne Suma = Suma + br
Brojac = Brojac + 1
Prosjek = Suma / Brojac
Ispiši Prosjek
Kraj
89
Osnove programiranja - predavanja • Zadatak: • Napisati program koji će upisivati ocjene dok se za kraj ne upiše 0. • Kao rezultat ispisati prosjek ocjena. • Ne smije se dozvoliti upis nekorektno upisanih ocjena (ocjena mora biti 1,2,3,4 ili 5).
• Algoritam: 1. Upis broja A 2. Ako je 1<=A<=5 onda ZBROJ = ZBROJ + A BROJAC = BROJAC + 1 inače Ako je A <> 0 ponovi algoritam od 1. koraka 3. Ispiši ZBROJ/BROJAC
90
Osnove programiranja - predavanja • Pseudokod:
/* Ponavljaj Unesi broj A. Ako je 1<=A<=5 onda ZBROJ = 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 onda ZBROJ = ZBROJ + A. BROJAC = BROJAC + 1 Ponavljaj. Ispiši ZBROJ/BROJAC. */
91
Osnove programiranja - predavanja • Dijagram toka programa (blok dijagram): Početak
Upiši broj br
Da li je br = 0
da
ne ne
Prosjek = Suma / Brojac
Ispiši Prosjek
1<=br<=5 da
Suma = Suma + br Brojac = Brojac + 1
Kraj
92
Osnove programiranja - predavanja SADRŽAJ • 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. • Pojam i definicija osnovnih logičkih struktura (Sekvencija-slijed; Selekcija-odabir; Iteracijaponavljanje; Skokovi) – analiza primjera u pseudokodu. Pojam i definicija dijagrama toka programa (blok dijagram) • Pojam i definicija varijabli i tipova podataka – analiza primjera. Pojam i definicija definicij a operatora operatora –– analiza primjera. • Analiza primjera za logičku strukturu odabira – selekcije. Analiza primjera za logičku strukturu iteracije – ponavljanja.
Pojam i definicija definicija funkcije – analiza primjera. Pojam i definicija jednodimenzionalnih polja polja –– analiza analiza primjera. primjera. • Pojam i definicija nizova znakova – analiza primjera. Pojam i definicija zapisa z apisa – analiza primjera. • Pojam i definicija pokazivača – analiza primjera. Pojam i definicija sortiranja – analiza analiza primjera primjera Bubble sorta.
93
Osnove programiranja - predavanja POJAM I DEFINICIJA FUNKCIJE • Funkcija je potprogram koji izvršava određenu aktivnost. • Funkcija ne mora obavljati neke minorne minorne aktivnosti aktivnosti (npr. zbrajanje dva broja), nego može može obavljati i složenije i veće aktivnosti.
94
Osnove programiranja - predavanja POJAM I DEFINICIJA FUNKCIJE • Svojstva funkcija: • poziva se po potrebi i na mjestima gdje je to potrebno • može se pozivati beskonačni broj puta • programer mora znati ustrojstvo funkcije, mora znati što funkcija radi ali ne i kako • funkcija komunicira sa mjestom od od kuda je pozvana isključivo parametrima (argumentima) • funkcija može i ne mora vratiti vrijednost - rezultat (funkcija koja ne vraća vvrijednost rijednost još se naziva procedura)
95
Osnove programiranja - predavanja POJAM I DEFINICIJA FUNKCIJE • Svojstva funkcija: • ako funkcija vraća vrijednost, tada se to naziva povratna vrijednost – rezultat • funkcija može pozvati drugu funkciju, ali i samu sebe (rekurzija) • deklariranjem funkcije, deklariramo prototip funkcije što znači njezin naziv, popis parametara koje prima, te povratni tip (ako vraća vvraća raća vrijednost) • deklaracija 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 jedan • redoslijed nizanja argumenata prilikom poziva je j e uređen, ne smiju se miješati argumenti, je točno je poznat redoslijed nizanja argumenata argumenata • naredbe koje se izvode po pozivu funkcije čine tijelo funkcije
96
Osnove programiranja - predavanja DEKLARACIJA DEKLARACIJA, DEKLARACIJA,, DEFINICIJA I POZIV FUNKCIJE Format deklaracije:
ime_funkcije ( argument_1, argument_2, ..., argument_n);
DEKLARACIJA (primjer): prototip funkcije povratni tip
int Potencija (int baza, int eksponent );
ime funkcije
tip argumenta
naziv argumenta (parametra)
97
Osnove programiranja - predavanja DEKLARACIJA DEKLARACIJA, DEKLARACIJA,, DEFINICIJA I POZIV FUNKCIJE • •
Definicija funkcije opisuje što i kako funkcija funkcija radi radi Funkcija koja vraća vrijednost u tijelu funkcije mora mora imati imati naredbu naredbu return
DEFINICIJA (primjer):
tijelo funkcije
formalni argumenti
int Potencija (int baza, int eksponent) { int rezultat; rezultat=1; for (int i=1; i<=eksponent; i++) { rezultat=rezultat * baza; } return rezultat; } 98
Osnove programiranja - predavanja DEKLARACIJA, DEFINICIJA I POZIV FUNKCIJE stvarni argument
POZIV (primjer): Primjeri poziva funkcija:
printf ("%d", Potencija (2, 3));
TestnaFunkcija(); • funkcija bez parametara i povratne vrijednosti TestnaFunkcija(5,x); • funkcija koja šalje dva argumenta, konstantu i varijablu, i ne vraća vrijednost Broj=TestnaFunkcija(y); • funkcija za poslanu vrijednost parametra y , vraća vrijednost koju pridružuje varijabli Broj Rez=Iznos+TestnaFunkcija(8); • u izrazu pridruživanja, vrijednosti varijable Iznos dodaje se vrijednost koju je vratila funkcija prilikom poziva sa konstantnim parametrom printf(“Rezultat=%d”,TestnaFunkcija()); • ispis teksta na ekran, s vrijednošću koju je vratila funkcija
99
Osnove programiranja - predavanja Deklaracija funkcija Kada funkcija ne treba vratiti vrijednost, tada se ona deklarira tipom void. Tada se u tijelu funkcije ne koristi naredba return. Ako je definicija funkcije funkcije navedena prije njenog prvog poziva uu programu, nije potrebno posebno navoditi deklaraciju, već se definicija smatra ujedno i deklaracijom.
DEFINICIJA (primjer):
POZIV (primjer):
void Zbroj (int x, int y) { printf ("%d", x+y); } ... Zbroj(2,5); ... 100
Osnove programiranja - predavanja Jednodimenzionalna polja 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. Indeksi polja u programskom jeziku C su cijeli brojevi između između 00 ii duljine duljine polja polja umanjenog umanjenog za za 1. 1. Format deklaracije: tip_podatka identifikator [broj ];
DEKLARACIJA (primjer):
float x[5]; float float float float float x[0] x[1] x[2] x[3] x[4]
Prvi član polja ima indeks nula
101
Osnove programiranja - predavanja Jednodimenzionalna polja Format deklaracije: tip_podatka identifikator [ ]={vrijednost_1 , vrijednost_2 , ..., vrijednost_n }; tip_podatka
identifikator [broj_clanova ];
DEKLARACIJA I PRIDRUŽIVANJE VRIJEDNOSTI (primjer):
float x[]={2.2,5.1,8.33,1.22,9.01};
2.2 5.1 8.33 1.22 9.01 x[0] x[1] x[2] x[3] x[4]
float x[5]; x[0] = 2.2; x[1] = 5.1; x[2] = 8.33; x[3] = 1.22 x[4] = 9.01;
102
Osnove programiranja - vježbe Pokazivači Pokazivači Svaka deklarirana varijabla posjeduje adresu memorijske lokacije na kojoj se čuvaju vrijednosti varijable. Pokazivač sadrži adresu memorijske lokacije varijable na koju pokazuje.
DEKLARACIJA (primjer): int x=5; int *pokazivac_na_x; pokazivac_na_x = &x;
pokazivac_na_x
x = a_ n _ c a i v p o k a z & x ;
adresa
200 5 x
vrijednost identifikator
103
Osnove programiranja - vježbe Pokazivači Pokazivači Operator * - operator dereferenciranja ili indirekcije (dereferencing, indirection operator) - izravno pridruživanje vrijednosti varijable pokazivaču. Operator & - operator adrese (address-of operator) int x=5, y; int *pokazivac_na_x; pokazivac_na_x = &x; y = *pokazivac_na_x; printf ("Vrijednost varijable x: %d, a adresa memorijske lokacije: %d", x, pokazivac_na_x); printf ("\nVrijednost na koju pokazuje pokazivač je: %d", y);
pokazivac_na_x
x = _ a n _ i v a c p o k a z & x ; x; ac_ na_ v i z a k o p * y =
200 5 x
adresa vrijednost identifikator
104
Osnove programiranja - vježbe Znakovni niz Znakovni nizovi su jednodimenzionalna polja znakova koja služe za pohranjivanje teksta:
char grad[]=“Rijeka”; Na kraju niza se automatski postavlja nul-znak (engl. null-character) \0 koji označava kraj niza znakova.
R
grad[0]
i
grad[1]
j
grad[2]
e
grad[3]
k
grad[4]
a
grad[5]
\0
grad[6]
105
Osnove programiranja - vježbe Zapis Zapis je skup podataka koji mogu biti međusobno različitih tipova (zapis je novi složeni slož eni tip tip podatka). podatka). Svaka komponenta zapisa ima svoje ime preko kojeg joj se pristupa. Deklaracija zapisa:
struct identifikator { deklaracija 1; deklaracija 2; ... deklaracija n;
} identifikator,...;
106
Osnove programiranja - vježbe Zapis Primjer deklaracije zapisa:
struct datum{ int dan; int mjesec; int godina;
} dt; dt.dan = 13; dt.mjesec = 5; dt.godina = 2009;
13 dan
5
mjesec
2009 godina
dt 107