Предмет | Принципи програмирања |
---|---|
Модул | Информациони системи и технологије |
Статус предмета | Обавезан предмет |
Катедра | Катедра за софтверско инжењерство |
Број ЕСПБ бодова | 5 |
Разумевање и примена принципа, правила и метода програмирања:
•процес развоја програма: анализирање, пројектовање,имплементирање, тестирање, инсталирање и администрирање програма;
•процес кодирање и тестирање програма: израде програма применом одговарајућих алгоритамских структура и структура податакаи провера његове исправности (јединично тестирање);коришћење императивног програмског језика; употреба одговарајућих софтверских алата за израду програма и проверу његове исправности;
•процес евалуације програма: мерење перформанси програма и његова оптимизација;примена основних софтверских метрика
Оспособљеност студената да развијају софтвер применом методе функционалне декомпозиције и структурног програмирања у необјектном императивном језику.
Предавања: Предавања ex cathedra, уз примену мултимедијалних средстава; разрада студијских примера. Вежбе: рад у рачунарској учионици, решавање задатака, програмирање.
Теоријска настава: 1. Увод 2. Програмирање употребом машински зависног програмског језика L3S (2.1. Конструкција хипотетичког језика нижег нивоа: LowLevel Language Simulator (L3S); 2.2. Архитектура процесора на којем се извршавају програми написани у језику L3S; 2.3. Skup naredbi jezika L3S; 2.2. Програмирање у језику L3S) 3. Основе вишег програмског језика C 4. Подаци (4.1. Појам типа податка /TP/; 4.2. Основни ТП; 4.3. Константе; 4.4. Променљиве; 4.5. Набрајајући тип; 4.6. Интервални тип; 4.7. Показивачки тип) 5. Наредбе (5.1. Структура програма; 5.2. Аритметички, логички и остали изрази; 5.3. Наредба доделе вредности; 5.4. Улазно/излазне наредбе; 5.5. Наредбе за управљање током извршавања програма) 6. Алгоритамске структуре /AS/(6.1. Алгоритам; 6.2. Линијска AS /секвенција/; 6.3. Разграната AS /селекција/; 6.4. Циклична AS /итерација/; 6.5. Програмско-језички (имплементациони) идиоми) 7. Потпрограми: функције и процедуре (7.1. Појам потпрограма; 7.2. Врсте параметара: формални и актуални /стварни/, улазни и излазни, вредносни и адресни, константни и неконстантни; 7.3. Механизми преноса параметара по вредности и по адреси; 7.4. Блоковске, локалне и глобалне променљиве; 7.5. Област дефинисаности идентификатора; 7.6. Тестирање потпрограма; 7.7. Алгоритамске (процедуралне) апстракације; 7.8. Рекурзивне функције и процедуре) 8. Структурирани типови података (8.1. Композитни типови: 8.1.1. Структуре; 8.1.2. Уније; 8.2. Колекциони типови: 8.2.1. Статички TP: (а) Низови; (б) Матрице; 8.2.2. Динамички TP: (а) Уланчане листе /показивачи и динамичка алокација меморије; стак, ред, листа; 1UL, 2UL/; (б) Датотеке; 8.3. Апстракције података и ATP) 9. Улазно/излазне операције (9.1. Токови; 9.2. Креирање, отварање и затварање датотека; 9.3. Датотечна променљива; 9.4. Датотечни показивач; 9.5. Читање података из датотеке; 9.6. Уписивање података у датотеку; 9.7. Текстовне датотеке; 9.8. Операције над датотеком: тражење, претраживање, сортирање, ажурирање) 10. Развој програма употребом алгоритамских апстракција и апстракција података (10.1. Процес развоја програма (софтвера); 10.2. Анализирање и пројектовање: метода функционалне декомпозиције (top down); 10.3. Имплементирање: метода структурног програмирања (струцтуред программинг); 10.4. Тестирање: unit testing; 10.5. Студијски пример) 11. Основе софтверског (програмског) инжењерства.
Практична настава: Вежбе су у потпуности усклађена са предавањима, по структури и по садржај
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. Д. Иветић Структурирани приступ програмирању ФТН Издаваштво, Нови Сад 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