Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

Dr.

Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Pregled tematskih jedinica
Radna skripta za kurs “Tehnike programiranja” na Elektrotehničkom fakultetu u Sarajevu (akademska godina 2016/17)

Pregled tematskih jedinica kursa “Tehnike programiranja”


po predavanjima
Predavanje 1_a
− Osnovna forma C++ programa
− Imenici i standardna biblioteka jezika C++
− Ulazni i izlazni tokovi
− Ključne riječi
− Spremnik ulaznog toka i upravljanje spremnikom

Predavanje 1_b
− Specifičnosti definiranja promjenljivih u jeziku C++
− Konverzije tipova
− Specifičnosti funkcija za rad sa realnim brojevima u jeziku C++
− Ograničenja opsega brojčanih podataka
− Klasična, konstruktorska i jednoobrazna inicijalizacija promjenljivih
− Tretman konstantnih vrijednosti u jeziku C++
− Formatirani ispis i ulazno-izlazni manipulatori

Predavanje 2_a
− Logički tip podataka i tretman logičkih izraza u jeziku C++
− Pobrojani tipovi (enumeracije)
− Tipovi za rad sa kompleksnim brojevima
− Operatori i funkcije za rad sa kompleksnim brojevima

Predavanje 2_b
− Vektori kao alternativa nizovima
− Manipulacije sa vektorima
− Inicijalizacione liste
− Odnos vektora i pokazivačke aritmetike
− Prenošenje vektora u funkcije i vraćanje vektora kao rezultata iz funkcije
− Rangovske for-petlje
− Automatsko određivanje tipa promjenljivih prilikom inicijalizacije
− Pristup elementima vektora uz kontrolu ispravnosti indeksa
− Semantika pomjeranja (move-semantika)
− Dekovi

Predavanje 3_a
− Matrice kao vektori vektôrā
− Tretman znakovnih tipova u jeziku C++
− Manipulacije sa nul-terminiranim stringovima naslijeđenim iz jezika C

Predavanje 3_b
− Dinamički stringovi
− Manipulacije s dinamičkim stringovima
− Bacanje i hvatanje izuzetaka
− Standardni izuzeci

1
Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Pregled tematskih jedinica
Radna skripta za kurs “Tehnike programiranja” na Elektrotehničkom fakultetu u Sarajevu (akademska godina 2016/17)

Predavanje 4_a
− Reference
− Prenos parametara putem referenci
− Upotreba referenci u rangovskim for-petljama
− Ulazni, izlazni i ulazno-izlazni parametri
− Pojava aliasinga
− Vraćanje referenci iz funkcija
− Reference na konstantne objekte
− R-vrijednosne reference

Predavanje 4_b
− Parametri sa podrazumijevanim vrijednostima
− Preklapanje funkcija po broju i tipu parametara
− Funkcije definirane preko šablona (predložaka)
− Generičke funkcije
− Specijalizacija generičkih funkcija

Predavanje 5_a
− Potpuna i djelomična dedukcija tipa u generičkim funkcijama
− Koncepti i modeli koncepata
− Automatsko određivanje tipa izraza
− Alternativna specifikacija povratnog tipa funkcije
− Iteratori i njihova upotreba
− Osnovni standardni bibliotečki algoritmi
− POD i ne-POD tipovi podataka

Predavanje 5_b
− Prenos funkcija kao parametara u druge funkcije
− Lambda funkcije
− Pokazivači na funkcije
− Nizovi pokazivača na funkcije
− Standardni bibliotečki algoritmi koji koriste prenos funkcija kao parametara
− Standardni bibliotečki algoritmi za sortiranje i pretraživanje

Predavanje 6_a
− Dinamička alokacija individualnih promjenljivih
− Strategije upravljanja memorijom
− Curenje memorije i viseći pokazivači
− Dinamička alokacija jednodimenzionalnih nizova
− Tretman izuzetaka pri dinamičkoj alokaciji

Predavanje 6_b
− Pokazivači na nizove, nizovi pokazivača i dvojni pokazivači (pokazivači na pokazivače)
− Dinamička alokacija višedimenzionalnih nizova
− Kontinualna i fragmentirana alokacija
− Reference na pokazivače
− Tretman izuzetaka pri dinamičkoj alokaciji višedimenzionalnih nizova

2
Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Pregled tematskih jedinica
Radna skripta za kurs “Tehnike programiranja” na Elektrotehničkom fakultetu u Sarajevu (akademska godina 2016/17)

Predavanje 7_a
− Specifičnosti nizova pokazivača na znakove
− Primjena nizova pokazivača pri manipulaciji masivnim objektima
− Detaljnije razmatranje problematike curenja memorije
− Dijeljeni pametni pokazivači i njihova primjena

Predavanje 7_b
− Jedinstveni pametni pokazivači i njihova primjena
− Iteratori kao poopćenje pokazivača
− Osnovne kategorije iteratora (ulazni, izlazni, sa kretanjem unaprijed, dvosmjerni, sa direktnim
pristupom)
− Liste i jednosmjerne liste (bibliotečki definirane)
− Skupovi i multiskupovi
− Obrnuti iteratori i umetači (inserteri)
− Stek, red i red sa prioritetom
− Zarobljavanje u lambda funkcijama i lambda zatvorenja
− Polimorfni funkcijski omotači
− Osnovne ideje funkcionalnog programiranja

Predavanje 8_a
− Strukturni tipovi podataka i strukturne promjenljive
− Manipulacije sa strukturnim podacima
− Pokazivači na strukturne podatke
− Dinamička alokacija strukturnih podataka

Predavanje 8_b
− Generičke strukture
− Uređeni parovi i mape
− Strukture koje sadrže pokazivače
− Plitke i duboke kopije
− Čvorovi i implementacija jednostruko povezane liste
− Problem kružnog referenciranja pri upotrebi pametnih pokazivača

Predavanje 9_a
− Nedostaci struktura i proceduralnog pristupa programiranju
− Uvod u objektno zasnovano programiranje
− Klase kao nadgradnja struktura
− Atributi i funkcije članice (metode)
− Javni i vidljivi dio klase
− Skrivanje informacija i enkapsulacija
− Pristupne metode, davači (geteri) i postavljači (seteri)
− Umetnute funkcije
− Inspektori i mutatori

Predavanje 9_b
− Statički atributi i statičke funkcije članice
− Primjeri objektno zasnovanog pristupa razvoju programa
− Prijateljske funkcije i klase

3
Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Pregled tematskih jedinica
Radna skripta za kurs “Tehnike programiranja” na Elektrotehničkom fakultetu u Sarajevu (akademska godina 2016/17)

Predavanje 10_a
− Konstruktori
− Uloga parametara u konstruktorima
− Kreiranje bezimenih (anonimnih) privremenih objekata pomoću konstruktora
− Kopirajući konstruktor
− Agregatska inicijalizacija
− Automatska pretvorba tipa putem konstruktora

Predavanje 10_b
− Direktna i kopirajuća inicijalizacija
− Kreiranje nizova i vektora čiji su elementi primjerci klasa
− Nizovi i vektori čiji su elementi pokazivači na primjerke klasa
− Konstruktorske inicijalizacione liste
− Pokazivači i reference kao atributi klasa

Predavanje 11_a
− Dinamička alokacija memorije u konstruktorima
− Automatizacija upravljanja resursima putem konstruktora (RAII)
− Destruktori
− Eksplicitni konstruktori
− Sekvencijski konstruktor (konstrutor inicijalizacione liste)
− Problem interakcije između destruktora i plitkih kopija (zakon velike trojke)
− Implementacija dubokog kopiranja pomoću kopirajućeg konstruktora
− Kopirajući operator dodjele
− Pomjerajući konstruktor i operator dodjele
− Implementacija semantike pomjeranja (move-semantike)
− Automatski generirani elementi klase

Predavanje 11_b
− Rješavanje problema interakcije između destruktora i plitkih kopija brojanjem referenciranja
− Kopiranje pri upisu
− Primjer razvoja kontejnerskog tipa podataka
− Zabrana kopiranja i međusobnog dodjeljivanja primjeraka klase
− Enkapsulacija dinamičkog upravljanja memorijom

Predavanje 12_a
− Operatorske funkcije
− Preklapanje operatora putem globalnih operatorskih funkcija
− Specifičnosti preklapanja operatora za ulaz i izlaz
− Preporuke za preklapanje operatora i primjeri preklapanja

Predavanje 12_b
− Preklapanje operatora putem operatorskih funkcija članica
− Preklapanje operatora indeksiranja
− Funkcijske klase i objekti (funktori)
− Standardni bibliotečki funktori
− Lambda zatvorenja kao funkcijski objekti
− Veznici, adapteri i držači
− Operatorske funkcije za pretvorbu tipova

4
Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Pregled tematskih jedinica
Radna skripta za kurs “Tehnike programiranja” na Elektrotehničkom fakultetu u Sarajevu (akademska godina 2016/17)

Predavanje 13_a
− Metodologija objektno orjentiranog programiranja
− Nasljedđivanje kao osnovna metodologija objektno orjentiranog programiranja
− Bazne i izvedene klase
− Regularno i neregularno nasljeđivanje
− Poređenje nasljeđivanja i agregacije
− Preglasavanje funkcija
− Javno i privatno izvođenje
− Statički i dinamički tip pokazivača i objekta
− Rano i kasno povezivanje
− Virtualne funkcije članice
− Polimorfizam i polimorfne promjenljive
− Pretvorbe naviše i naniže
− Statička i dinamička pretvorba pokazivača

Predavanje 13_b
− Heterogeni kontejnerski objekti
− Primjena polimorfizma i virtualnih funkcija u objektno orjentiranom programiranju
− Hijerarhije klasa
− Polimorfno kopiranje
− Surogatske klase

Predavanje 14_a
− Datoteke u jeziku C++
− Tokovi vezani za datoteke
− Rad sa tekstualnim datotekama
− Tokovi vezani za memorijske spremnike

Predavanje 14_b
− Rad sa binarnim datotekama
− Upravljanje kurzorom i datoteke sa direktnim pristupom
− Smještanje kontejnerskih objekata u datoteke
− Serijalizacija

You might also like