Прва вежба¶
Упознавање са радом у развојном окружењу
Задатак: Креирати пројекат у Microsoft Visual Studio 2010 окружењу и приложени кôд уврстити у пројекат. Превести и покренути на извршење дати програм. Уколико се програм не може превести због синтаксних грешака, грешке уочити и исправити тако да се не мења предвиђена намена програма. Унети захтеване вредности улазних параметара и забележити вредности добијених излаза.
Напишите извештај који треба да садржи:
- грешке које сте уочили у коду,
- улазне податке које сте унеки након покретања програма и излазе које Вам је програм приказао и
- вредности променљивих у осамнаестој линији ко̑да (добијене дебагирањем програма).
Интегрисано развојно окружење¶
Како би било могуће превести и покренути на извршење дати програмски код написан у програмском језику вишег нивоа, потребно је тај програмски код компајлирати, линковати и саставити извршну датотеку коју је могуће покренути као прогам. Све алатке потребне за извођење тога се могу прибавити на лак начин у пакету интегрисаног развојног окружења.
Microsoft Visual Studio је пример интегрисаног развојног окружења (енг. IDE, Integrated Development Environment) који осим едитора кода пружа широк појас алатки који омогућава превођење и извршавање програмског кода многих програмских језика (C/C++, C#, F#, JavaScript, Python, ...) и додатних могућности откланања грешака (дебагирања, енг. debugging) и профајлирања тока извршавања програма. С обзиром на то да је реч о интегрисаном развојном окружењу, могуће је веома лако у клику једног дугмета покренути целокупан процес превођења и извршења програма.
Осим Microsoft Visual Studio интегрисаног развојног окружења, постоје и многи други с којима ћете се сусретати у наредним годинама студија.
Основе C програмског језика¶
C је типизован и компајлерски програмски језик. Извршење програма почиње у main функцији и није могуће превести и покренути програм уколико она не постоји.
Код је организован по блоковима, почетак блока обележен је са {
, а завршетак са }
; док некада блок који се састоји из само једне линије може и да није обележен са { ... }
(препорука је увек обележавати великим заградама блок кода). Ради читкости често се блок увлачи за по један табулар (TAB
тастер) или са по 2, 4 или 8 бланко знака (SPACE
тастер) - код едитори и интегрисана развојна окружења често аутоматизују процес увлачења линија кода како програмер отвара и затвара блок кода са { ... }
карактерима. Функције, наредбе гранања, петље, ... поседују блокове кода, тј. скупина кода на тај начин написана која ће се извршити на процесору уколико се позове дата функција на извршење, услов гранања је испуњен или све док услов петље важи и сл.
Крај израза се дефинише карактером ;
.
Извештај¶
1. Грешке уочене у коду¶
Постоји више грешака у приложеном изворном коду:
- синтаксне грешке (заборављена
;
на крају линије), - грешке у куцању (декларисана променљива
J
великим словом, a коришћењеj
малим словом), - логичке грешке (погрешно тумачење типа променљиве
S
при штампању - употребљена је%d
конверзија која се користи за податкеint
типа, уместо%ld
заlong int
тип).
Како би програм могли да покренемо, неопходно је исправити синтаксне грешке и грешке у куцању.
2. Улазни и излази подаци програма¶
Пример 1: Улазни подаци:
Излази програма:
Пример 2: Улазни подаци:
Излаз:
3. Вредности променљивих дебагирањем¶
Као што се може видети, на 18. линији је употребљена променљива \(S\), а њена вредност је \(45097157104\) (добијена дебагирањем). Ова вредност је другачија од излаза програма, \(-2147483152\). Ово се дешава управо због логичке грешке у изворном коду програма - променљиву \(S\) исписујемо употребом %d
што се користи за променљиве типа int
, па зато вредност постаје негативна (дошло је до overflow-а типа података int
). Како би добили испарвну вредност променљиве \(S\) на излазу програма, потребно је да испис коригујемо на %ld
што се користи за испис променљивих типа long int
.