Cilj
Ishod
Metode izvođenja nastave
Sadržaj
Literatura
Razumevanje i primena principa, pravila i metoda programiranja:
•proces razvoja programa: analiziranje, projektovanje,implementiranje, testiranje, instaliranje i administriranje programa;
•proces kodiranje i testiranje programa: izrade programa primenomodgovarajućih algoritamskih struktura i struktura podatakai provera njegove ispravnosti (jedinično testiranje);korišćenje imperativnog programskog jezika; upotreba odgovarajućih softverskih alata za izradu programa i proveru njegove ispravnosti;
•proces evaluacije programa: merenje performansi programa i njegova optimizacija;primena osnovnih softverskih metrika
Teorijska nastava: 1. Uvod 2. Programiranje upotrebom mašinski zavisnog programskog jezika L3S (2.1. Konstrukcija hipotetičkog jezika nižeg nivoa: LowLevel Language Simulator (L3S); 2.2. Arhitektura procesora na kojem se izvršavaju programi napisani u jeziku L3S; 2.3. Skup naredbi jezika L3S; 2.2. Programiranje u jeziku L3S) 3. Osnove višeg programskog jezika C 4. Podaci (4.1. Pojam tipa podatka /TP/; 4.2. Osnovni TP; 4.3. Konstante; 4.4. Promenljive; 4.5. Nabrajajući tip; 4.6. Intervalni tip; 4.7. Pokazivački tip) 5. Naredbe (5.1. Struktura programa; 5.2. Aritmetički, logički i ostali izrazi; 5.3. Naredba dodele vrednosti; 5.4. Ulazno/izlazne naredbe; 5.5. Naredbe za upravljanje tokom izvršavanja programa) 6. Algoritamske strukture /AS/(6.1. Algoritam; 6.2. Linijska AS /sekvencija/; 6.3. Razgranata AS /selekcija/; 6.4. Ciklična AS /iteracija/; 6.5. Programsko-jezički (implementacioni) idiomi) 7. Potprogrami: funkcije i procedure (7.1. Pojam potprograma; 7.2. Vrste parametara: formalni i aktualni /stvarni/, ulazni i izlazni, vrednosni i adresni, konstantni i nekonstantni; 7.3. Mehanizmi prenosa parametara po vrednosti i po adresi; 7.4. Blokovske, lokalne i globalne promenljive; 7.5. Oblast definisanosti identifikatora; 7.6. Testiranje potprograma; 7.7. Algoritamske (proceduralne) apstrakacije; 7.8. Rekurzivne funkcije i procedure) 8. Strukturirani tipovi podataka (8.1. Kompozitni tipovi: 8.1.1. Strukture; 8.1.2. Unije; 8.2. Kolekcioni tipovi: 8.2.1. Statički TP: (a) Nizovi; (b) Matrice; 8.2.2. Dinamički TP: (a) Ulančane liste /pokazivači i dinamička alokacija memorije; stak, red, lista; 1UL, 2UL/; (b) Datoteke; 8.3. Apstrakcije podataka i ATP) 9. Ulazno/izlazne operacije (9.1. Tokovi; 9.2. Kreiranje, otvaranje i zatvaranje datoteka; 9.3. Datotečna promenljiva; 9.4. Datotečni pokazivač; 9.5. Čitanje podataka iz datoteke; 9.6. Upisivanje podataka u datoteku; 9.7. Tekstovne datoteke; 9.8. Operacije nad datotekom: traženje, pretraživanje, sortiranje, ažuriranje) 10. Razvoj programa upotrebom algoritamskih apstrakcija i apstrakcija podataka (10.1. Proces razvoja programa (softvera); 10.2. Analiziranje i projektovanje: metoda funkcionalne dekompozicije (top down); 10.3. Implementiranje: metoda strukturnog programiranja (structured programming); 10.4. Testiranje: unit testing; 10.5. Studijski primer) 11. Osnove softverskog (programskog) inženjerstva.
Praktična nastava: Vežbe su u potpunosti usklađena sa predavanjima, po strukturi i po sadržaj
1. B.W. Kernighan, D.M. Ritchie Programski jezik C, II izdanje CET, Beograd 2003
2. C.L. Tondo, S.E. Gimpel Programski jezik C – rešenja zadataka, II izdanje CET, Beograd 2004
3. O.J. Dahl, E.W. Dijkstra, C.A.R. Hoare Structured Programming Academic Press 1972
4. N. Wirth Algorithms + Data Structures = Programs Prentice-Hall, Englewood Cliffs 1976
5. D. Ivetić Strukturirani pristup programiranju FTN Izdavaštvo, Novi Sad 2005
6. B.W. Kernighan, R. Pike The Practice of Programming Addison-Wesley 1999
7. D.R. O’Hallaron, R.E. Bryant Computer Systems: A Programmer’s Perspective (using C), 3rd ed. – 2016
8. K.N. King C Programming: A Modern Approach , 2nd ed. – 2008
9. Stephen Kochan Programming in C, 4th ed. – 2014
