Katedra za teorijske i primijenjene osnove informacijskih znanosti
RI
5. semestar
Osnovne informacijemdi-information-variantIzvođači nastavemdi-account-groupNastavni plan i programmdi-clipboard-text-outlineModel praćenjamdi-human-male-boardIspitni rokovimdi-clipboard-check-outlineRasporedmdi-calendar-clockKonzultacijemdi-account-voice
Kolegij se nastavlja na Programiranje I s kojim predstavlja cjelinu. Po završetku, studenti trebaju biti sposobni oblikovati, kodirati, testirati, ispravljati i dokumentirati programska, prije svega objektno orijentirana rješenja problema algoritamskog tipa. Ciljna razina složenosti programa jesu programi koji rade s više datoteka i više klasa
Uvodno predavanje: logički razvoj programa (1*2 sata) Razvoj programa uz korištenje kontrolnih točaka na kojima se program verificira sintaksno i logički. Tehnika pisanja programa na način da on bude provjerljiv unutar 10 novih programskih redaka. Programiranje uz pomoć sučelja %22Verifikator%22.
Implementacija i primjena dinamičkih struktura podataka u programiranju (3*2 sata) Dinamičke strukture podataka i instrumenti njihove implementacije u C++. Implementacija vezane liste: kreiranje, dodavanje elemenata, pretraživanje, sortiranje, brisanje elemenata, dealokacija liste. Primjena vezane liste unutar programa u C++. Implementacija binarnog stabla: kreiranje, dodavanje elemenata, pretraživanje, brisanje elemenata, dealokacija stabla.Rekurzivne funkcije. Biblioteke. Primjer: biblioteka s funkcijama za mjerenje vremena.
Rad s datotekama (3*2 sata) Datoteke s fiksnom veličinom sloga: sekvencijalne, relativne i indeksne. Rad s datotečnim pokazivačem. Primjer: program predložak za rad s datotekama u C++. Pretraživanje indeksa: slijedno i binarno. Analiza brzine pretraživanja kod sekvencijalnih, relativnih i indeksnih datoteka. Primjer u C++: telefonski imenik. Primjer u C++: kopiranje podataka između datoteka i vezanih lista, te datoteka i polja.
Objektni pristup (3*2 sata) Koncepti objektnog programiranja. Usporedba sa strukturnim pristupom. Primjer: biblioteka klasa za mjerenje vremena u odnosu na biblioteku funkcija za mjerenje vremena.Nasljeđivanje, tipovi nasljeđivanja, višestruko nasljeđivanje, virtualni funkcijski članovi i polimorfizam, prijatelj klase.Apstraktne klase i čiste virtualne funkcije.Primjer polimorfizma: vezana lista s heterogenim elementima. Primjer u C++: registar vozila.Primjer objektno-orijentiranog razvoja programa uz implementaciju objektnog mehanizma za upravljanje indeks-sekvencijalnim datotekama: prijave studenata.
Napredne tehnike programiranja (2*2 sata) Algoritmi temeljeni na rekurziji. Primjeri u C++: pronalaženje najkraćeg puta, pretraživanje binarnog stabla. Predlošci funkcija i klasa. Primjer u C++: implementacija vezanih listi uz pomoć predložaka klasa. Primjer u C++: upotreba binarnog stabla kao pomoćne strukture za sortiranje. Repovi čekanja, hrpa, stog. Primjeri implementacije u C++.
Metodologije razvitka programa (1*2 sata) Postupci razvoja programa i usporedbe prema standardu IEEE 1058.1: svrha, definicije pojmova, odgovornosti i uloge, voditelj projekta, osiguranje kvalitete, opis postupka, općenito. Faze razvoja programa, testiranje (potvrda i ovjera programskog proizvoda), promjene u razvoju programa, dokumentacija.
Modeliranje kao osnova programiranja (2*2 sata) Modeliranje procesa: dijagram strukture procesa, procesi transformacijske strukture, procesi transakcijske strukture, detaljni opis procesa (dijagrami akcija), pseudojezik i strukturirani prirodni jezik, stabla odlučivanja, tablice odlučivanja, odlučivanje i dijagrami akcija. Primjena UML dijagrama u razradi objektnog modela programa. Implementacija modela podataka objekti-veze-svojstva uz pomoć objektnog modela.
Sadržaj seminara/vježbi
Uvodna vježba: korištenje sučelja %22Verifikator%22 Unos tri programska primjera različite složenosti uz pomoć sučelja %22Verifikator%22.
Funkcije i biblioteke Izraditi biblioteku funkcija i uključiti je u program.
Vezana lista Kreiranje i osnovne operacije nad vezanom listom.
Vezana lista (nastavak) Dvostruko vezana lista. Sortiranje i dealokacija vezane liste.
Datoteke Rad s tekstualnim datotekama i datotekama s fiksnom veličinom zapisa.
Organizacije datoteka. Rad sa sekvencijalnim, relativnim i indeksnim datotekama.
Osnovne operacije nad datotekama. Sortiranje datoteka. Pretraživanje datoteka različitih organizacija uz mjerenje performansi.
Objektno-orijentirano programiranje Klasa, objekt, specifikatori pristupa, princip enkapsulacije, vanjski i unutarnji pristup članovima klasa, pokazivač this, princip skrivanja podataka
Objektno-orijentirano programiranje (2) Konstruktor i destruktor, prijatelj klase, nasljeđivanje, tipovi nasljeđivanja, zaštićeni pristup članovima klasa, višestruko nasljeđivanje, virtualne metode i polimorfizam, apstraktne klase.
Objektno-orijentirano programiranje (3) Odnosi među klasama: sadržavanje, korištenje, ugniježđena klasa. Implementacija ER modela podataka pomoću objektnog modela.
Napredne tehnike programiranja (1) Generičko programiranje. Predlošci funkcija i klasa. Standardna biblioteka predložaka (STL).
Napredne tehnike programiranja (2) Rukovanje iznimkama. Upotreba binarnog stabla za indeksiranje datoteke. Rekurzivni algoritmi.
Red, hrpa i stog. Implementacija reda, hrpe, i stoga u C++.
Ishodi učenja kolegija
steći potrebna predznanja za kolegije: Algoritmi,Baze podataka I,Operacijski sustavi I,Zemljopisni informacijski sustavi
biti sposobni izraditi objektno-orijentirane programske aplikacije koje uključuju: više klasa,rad s osnovnim statičkim i dinamičkim strukturama podataka, uključujući vezane liste, binarna stabla, različite organizacije datoteka, primjenu naprednih algoritama
poznavati osnovne koncepte objektno-orijentiranog programiranja, u prvom redu enkapsulacija, skrivanje podataka, nasljeđivanje, polimorfizam, te ih implementirati u programskom jeziku C++
dobiti uvod u napredne tehnike programiranja i objektno modeliranje tehnikom UML
primjenjivati osnovne koncepte objektno-orijentiranog programiranja, u prvom redu enkapsulaciju, skrivanje podataka, nasljeđivanje i polimorfizam unutar programa u programskom jeziku C++
Ishodi učenja programa
razumjeti i primijeniti ključne aspekte informacijske tehnologije (programiranje, algoritmi, strukture podataka, baze podataka i znanja
razumjeti i primijeniti metode, tehnike razvoja informacijskih i programskih sustava u suvremenim razvojnim okolinama
Osnovna literatura
Radošević, D. Programiranje 2. TIVA,Fakultet organizacije i informatike, Varaždin, 2007.
Kolegiji sličnog sadržaja i naziva izvode se na nekoliko visokoškolskih institucija u Hrvatskoj (npr. FER, FESB, Filozofski fakultet u Rijeci), te u susjednim državama (npr. na Univerzi u Mariboru i Ljubljani, Univerzitetu u Beogradu itd
Redoviti studentiIzvanredni studenti
U kalendaru ispod se nalaze konzultacije predmetnih nastavnika, no za detalje o konzultacijama možete provjeriti na profilu pojedinog predmetnog nastavnika.