1 / 123

Увод у програмирање програмски језик C

Увод у програмирање програмски језик C. Електротехнички факултет у Источном Сарајеву. Професор. Doc.dr Slobodan Obradović, dipl.inž.el. E-mail: sobradovic @ vets.edu.yu. Испит. (А или Б) и Ц ___________________________ А) 3 Колоквијума обавезна сва три колоквијума

peers
Télécharger la présentation

Увод у програмирање програмски језик C

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Увод у програмирање програмски језик C Електротехнички факултет у Источном Сарајеву

  2. Професор Doc.dr Slobodan Obradović, dipl.inž.el. E-mail: sobradovic@vets.edu.yu

  3. Испит • (А или Б) и Ц ___________________________ • А) 3 Колоквијума • обавезна сва три колоквијума • за сваки колоквијум (51% минимум) • Б) Интегрални испит • Ц) Усмени испит

  4. Литература • Ласло Краус, “Програмски језикСса решеним задацима”, Академска мисао, Београд, 2004. • Додатна литература

  5. Садржај курса из језика С • Дефинисање података • Оператори • Наредбе • Низови • Показивачи • Знакови • Функције • Претпроцесорске наредбе • Структуре • Рад са датотекама • Повезане листе

  6. Историја • Програмски језик C је први пут развијен почетком 1970-тих (BellLabs, USA) • Намена: основа за развој оперативног система UNIX. • Други виши програмски језици тог времена (COBOL, FORTRAN, PL/I, ALGOL...)су били превише спори. • Као основа за програмски језик C су послужила два виша програмскa језика: ALGOLи BCPL.

  7. Историја • 1960: ALGOL (ALGOrithmic Language) • 1967: BCPL (Basic Combined Programming Language) • 1970: B programming language (без типова) • 1972: C: BCPL+B(уведени типови) • 1978: Kernighan + Ritchieстандард заC • 1989: ANSI стандард за C

  8. Предности С језика • Опште намене, од ОС до специфичних проблема • Врло ефикасни компајлери за вели број процесора и оперативних система • Преносивост компајлера • Моћни оператори • Мали скуп наредби и богате библиотеке • Језик средњег нивоа, дакле може ефикасно да приступи и хардверу

  9. Решавање задатака • Анализа задатка, деф. проблема, подела на делове и одређивање коначног циља • Разрада алгоритма, тј. Решавање задатка • Кодирање програма и превођење на машински језик • Тестирање и отклањање грешака • Израда коначне документације • Употреба и одржавање програма

  10. Писање програма • Скуп наредби (instructions, statements) се назива кôд (Code ) или изворни кôд (Sourcecode). • Фајл који садржи кôд се назива Sourcefile. • У C програмском језику се низ наредби групише у целине које се називају функције (function) • Сваки програм мора да садржи бар једну функцију i to funkciju main( )

  11. Како изгледа програм у језику C Претпроцесорска директива Сваки програм мора да имаmainфункцију заглављефункције #include <stdio.h> main() { printf(“Primer”); ; } Почетак блока граничникисказа, наредби телофункције (блок наредби) Крајблока #include <stdio.h> main() { printf(“Primjer”); }

  12. Фазе обраде програма • Писање програма (Editing) • Предобрада (Preprocessing) • Превођење (Compilation) • Повезивање (Linking) • Има још једна фаза код модерних програмских језика а то је пуњење (Loading) • Извршавање (Executing)

  13. 1. Предобрада # (Preprocessing) • Обавља се програмом који се назива preprocessor. • Модификује изворни кôд (у RAM-у) у складу сa наредбама за предобраду (preprocessordirectives).Ове наредбе ближе дефинишу начин превођења. • Приликом предобраде се занемарују коментари (comments) и празан простор (whitespace) из кôда. • Кôд, који је програмер написао и претходно снимио на диск, НЕ МЕЊА се у процесу предобраде!

  14. Претпроцесорка директива #include <stdio.h> Претпроцесорска директива #include <stdio.h> main() { printf(“Primer”); } Обрађује се пре превођења програма Обавезно почиње са# #include– најчешће коришћена директива Укључује у програм садржај датотеке која се наводи као параметар #include <ime> или #include ”ime” #define– често коришћена директива Дефинише симболичке константе i макрое #define IME vrednost #define PI 3.14159 #define EPS 0.0001 Стандардне библиотеке <stdio.h> функције за стандардни улаз/излаз <math.h> библиотека математичких функција ...

  15. Претпроцесорка директива • Директиве служе за повезивање програма са стандардним библиотекама, сваки програм захтева бар једну stdio.h • Екстензија .h је од речи header, заглавље • Корисник може да прави сопствене библиотеке • Служе за дефинисање симболичких константи, сва константа има засебну директиву • Свака директива почиње са # • Иза ових редова нема ;

  16. Претпроцесорка директива Претпроцесорска директива укључује стандардне функције за улаз/излаз података Претпроц. директива деф. симболичку константуEPS = 0.000001 Претпроцесорска директива деф. целобројну константуMAXINT = 32767 Претп. директива деф. симболичку константу PI #include <stdio.h> #define PI 3.14159 #define EPS 1e-6 #define MAXINT 32767 Дефинише окталну константу K_OCT = 071 Октална константа започиње са 0 071 = 7*8 + 1*1 = 56 + 1 = 57 dec Деф. Хексадецималну константу K_HEX = 0x41 Хексадецимална конст. почиње са 0x 0x41 = 4*16 + 1*1 = 64 + 1 = 65 dec #define K_OCT 071 #define K_HEX 0x41 printf( ”%d”,MAXINT ); printf( ”%8.5f\n”, PI ); printf( ”%10.8f\n”, EPS ); printf( ”%d %d”,K_OCT, K_HEX ); Главни програм (функција main) Исписује вредност дефинисаних константи на екрану За иепис на екран користи се стандардна функцијаprintf() Пример: #include <stdio.h> #define PI 3.14159 #define EPS 1e-6 #define MAXINT 32767 #define K_OCT 071 #define K_HEX 0x41 main() { printf( ”%d”,MAXINT ); printf( ”%8.5f\n”, PI ); printf( ”%10.8f\n”, EPS ); printf( ”%d %d”,K_OCT, K_HEX ); }

  17. Претпроцесорка директива 32767_ _3.14159 0.00000100 57_65_ printf( ”%d”,MAXINT ); printf( ”%d”,MAXINT ); printf( ”%8.5f\n”, PI ); printf( ”%8.5f\n”, PI ); printf( ”%10.8f\n”, EPS ); printf( ”%10.8f\n”, EPS ); printf( ”%d %d”,K_OCT, K_HEX ); Пример: #include <stdio.h> #define PI 3.14159 #define EPS 1e-6 #define MAXINT 32767 #define K_OCT 071 #define K_HEX 0x41 main() { printf( ”%d”,MAXINT ); printf( ”%8.5f\n”, PI ); printf( ”%10.8f\n”, EPS ); printf( ”%d %d”,K_OCT, K_HEX ); } printf( ”%d %d”,K_OCT, K_HEX );

  18. 2. Превођење (Compilation) • Програм којим се обавља превођење назива се преводилац (compiler) • Изворни кôд, претходно подвргнут предобради, преводи се у објектни кôд (objectcode). • Проверава се синтакса грешке (errors) и упозорења (warnings) • Снима објектни кôд на диск (нови фајл). • Ако се приликом превођења констатује грешка, НЕ ГЕНЕРИШЕ се објектни кôд.

  19. 3. Повезивање (Linking) • Уколико је кôд писан у више фајлова постоји више фајлова са објектним кодом. • Објектни фајлови се повезују у једну целину како би се формирао извршни фајл (executable file, са екстензијом .еxe). • Други објектни фајлови могу да настану позивањем готових функција из тзв. библиотека (Libraries, Run-Time Library) или објектних фајлова које је креирао програмер. • Уколико се приликом линковања констатује грешка неће се формирати извршни фајл!

  20. Како до извршног програма?

  21. Отклањање грешака • deBUGing • bug - computer bugs - debug

  22. Врсте грешака • Синтаксне грешке (syntax errors) • Грешке при извршавању (run time error) • Грешке намере (semantic error)

  23. Синтаксне грешке • Неправилно раздвајање инструкција • Неправилно отварање-затварање коментара • Коришћење апострофа, наводника, ... Унутар стринга • Неправилна употреба зареза или размака • Позивање функције или променљиве пре него што је дефинисана • Употреба функције као инструкције (увек мора бити на десној страни) и погрешна имена

  24. Грешке при извршавању • Неправилна употреба контролних структура • Погрешан унос података • Типски конфликти

  25. Грешке намере • Погрешан математички модел • Погрешан алгоритам • Употреба глобалних променљивих • Недостају ознаке за поч. и крај блока • Употреба погрешних услова лог. Фја. • Појава бесконачне петље • Занемаривање грешака заокругљивања

  26. Формат Cпрограма - стил #include <stdio.h> /* C program koji ispisuje: "Zdravo!" */ int main() { printf("Zdravo!\n"); return 0; } #include <stdio.h>/* C program koji ispisuje: "Zdravo!" */int main (){printf("Zdravo!\n");return 0;}

  27. #include<stdio.h> /* C program koji ispisuje: "Zdravo!" */ int main ( ) { printf( "Zdravo!\n" ) ; return 0 ; } Формат Cпрограма - стил

  28. Формат Cпрограма • Најпрегледније, најразумљивије • Најлакше за тестирање • Најпогодније за “дораду” • Правила#include <stdio.h > printf("Ovo je veoma, veoma,\veoma, veoma,duga linija.");

  29. Улога заграда и неких граничника • () у именима функција, за смештање аргумената • {}, означи почетак и крај тела функције, да издвоји блокове инструкција и ограничи област важења података • ; означава крај једног израза или наредбе • С језик може у једном реду имати јако дуге и угњеждене изразе (више наредби)

  30. Граматика језика • Азбука - скуп дозвољених знакова, симбола • Лексика – исправно писање недељивих целина • Синтакса – исправно писање решеница • Семантика – смисао

  31. Елементи језика C • Скуп знакова • Велика и мала слова енглеског алфабетаAa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm Nn Oo Pp Qq Rr Ss Tt Uu Vv Ww Xx Yy Zz • Децималне цифре 0 1 2 3 4 5 6 7 8 9 • Знаци:: _ ! ? . , : ; ‘ = + - / * # % & \ | ( ) [ ] { } < >

  32. Лексички симболи - токени • Идентификати • Службене, резервисане речи (пишу се малим словима енглеске азбуке!) • Константе • Оператори • Сепаратори(граничници) • Знаковни низови

  33. Идентификатори • Служе за означавање елемената програма (података, симболичких константи, нових типова података, функција ...)и представљају називе објеката језика Правила 1. Могу да се састоје од: • Слова (малих и великих) • Цифара • Знака подвучено ( _ )

  34. Идентификатори 2. Први знак у имену мора да буде слово. Може да буде и знак подвучено али... 3. Дужина имена идентификатора да не буде већа од 31 карактера Пример: JednaPromenljivaKojaImaKarakteraJakoPuno = 1 JednaPromenljivaKojaImaKarakteraSamoJedanVise = 3 4. C разликује мала и велика слова (Rezultatиrezultat)Case Sensitive 5. Имена идентификатора не могу да буду из скупа службених речи.

  35. исправни идентификатори sumaNovoIme c5_4novo_ime JEDAN_BROJBroj_studenata TX_protocolBroj_Studenata TRUE _split_name UporediRezultat_sabiranja dugoimesamnogokaraktera

  36. неисправни идентификатори 70fс почиње бројем x-nameзнак - није дозвољен ime sa razmakom размак није дозвољен intрезервисана реч axx&знак &није дозвољен Površina*kruga знак *није дозвољен jedan,dva знак ,није дозвољен

  37. Службене речи(32)

  38. Подела података • Скаларни (знаковни, целобројни, реални) • Нескаларни (структуре података)

  39. Логички подаци C не располаже логичким типом података у неким програмским језицима то су LOGICAL или BOOLEAN Нису имплементиране ни логичке константе TRUE (istina) i FALSE (laž) Било који података се може посматрати као логички ISTINA ...podatak <> 0 LAŽ ... podatak = 0 Уобичајено је да се користе целобројни подаци Резултат логичких операција је: rezultat=1 ->ISTINA (tačno) rezultat=0 ->LAŽ (netačno)

  40. Подаци, Променљиве и типови података • Подаци су предмет обраде у програмима. • Сваки податак има одређене особине, а скуп свих особина једног податка одређује тип податка. • Тип податка је одређен: • скупом могућих вредности које податак може да узме и • скупом могућих операција које је могуће извести над податком.

  41. Подаци • Подаци у програму могу да се представе помоћу: • вредности или • идентификатора. c=a+5 • Подаци педставњени преко вредности се називају константе • Подаци педстављени преко идентификатора се називају променљиве

  42. Подаци – симболичке константе • Посебан случај непроменљивих података представљају симболичке константе. #define PI=3.14; #define MIN_RASTOJANJE=2; #define Broj_Semestara=8;

  43. Имена, идентификатори променљивих МЕМОРИЈА МЕМОРИЈА 123A podatak_1 Broj-1 BROJ broj Променљиве (варијабле) Променљива је симболичко име за неку меморијску локацију Свака променљива мора имати неко јединствено име!? име се формира од слова, цифара и знака _ први знак не може бити цифра максимално 31 знак разликују се мала и велика слова: име Slovo различито од slovo

  44. Променљиве MEMORIJA G Z 2.35 a A 13 ABC x 13 2.35 -657 6 D ABC СВАКА ПРОМЕНЉИВА МОРА БИТИ ТАЧНО ОДРЕЂЕНОГ ТИПА Тип променљиве не може се мењати током извршења програма променљива може бити неког • скаларног - описана једним бројем,или • нескаларног типа - састоји се од више делова од којих је сваки и засебан и део податка Може да се мења вредност (садржај меморијске локације) зато се и зове променљива (varijabla) char int

  45. Типови променљивих података • Тип неког податка одређује : • Меморијски простор који података заузима • Скуп вредности који тај податак може да има • Скуп операција дефинисаних над њим. • Програмски језикC познаје само нумеричке типове података • целобројни нумерички типови • реални нумерички типови.

  46. Целобројни типови података • Име типа: • int • short int • long int • Опсег вредности: цели бројеви (унутар датог опсега) • Пример: 5, -35, 401 • Операције: аритметичке (сабирање, одузимање, множење, …), друге

  47. Целобројни типови података • сваки од ових типова може бити неозначен (само позитивне вредности) • unsigned int • unsigned short int • unsigned long int

  48. Пример опсега вредности не заборавитеsigned unsigned

  49. Зашто постоје ограничења • Са одређеним бројем бита, могуће је дефинисати одређени скуп вредности • 16 бита, 65536 могућих вредности • 32768 негативних вредности • 1 нула • 32767 позитивних вредности • Прекорачење (Overflow): • покушај да се променљивој додели сувише велика вредности (40000 уshort int)

  50. Целобројни типови података Тип char • Мали означени целобројни податак • величине 8 бита (1 бајт). • Намењен за манипулацију карактерима, али може послужити и за рад са малим бројевима са вредностима у распону од од 128 до 128. • unsigned charможе имати вредности од 0 до 255. ( ASCII табела има 256 знакова).

More Related