La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

C programming language

Presentazioni simili


Presentazione sul tema: "C programming language"— Transcript della presentazione:

1 C programming language
2004/05 Увод у програмирање програмски језик C Електротехнички факултет у Источном Сарајеву Пословна информатика, © Зоран Бањац

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

3 C programming language
Испит C programming language 2004/05 (А или Б) и Ц ___________________________ А) 3 Колоквијума обавезна сва три колоквијума за сваки колоквијум (51% минимум) Б) Интегрални испит Ц) Усмени испит Пословна информатика, © Зоран Бањац

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

5 Садржај курса из језика С
C programming language 2004/05 Дефинисање података Оператори Наредбе Низови Показивачи Знакови Функције Претпроцесорске наредбе Структуре Рад са датотекама Повезане листе Пословна информатика, © Зоран Бањац

6 Историја Програмски језик C је први пут развијен почетком 1970-тих (Bell Labs, 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 ) или изворни кôд (Source code). Фајл који садржи кôд се назива Source file. У C програмском језику се низ наредби групише у целине које се називају функције (function) Сваки програм мора да садржи бар једну функцију i to funkciju main( )

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

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

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

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

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

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

17 Претпроцесорка директива
C programming language 2004/05 Пример: #include <stdio.h> #define PI #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”, MAXINT ); 32767_ printf( ”%8.5f\n”, PI ); _ printf( ”%d”, MAXINT ); printf( ”%10.8f\n”, EPS ); printf( ”%8.5f\n”, PI ); printf( ”%d %d”,K_OCT, K_HEX ); 57_65_ printf( ”%10.8f\n”, EPS ); printf( ”%d %d”,K_OCT, K_HEX ); Пословна информатика, © Зоран Бањац

18 2. Превођење (Compilation)
Програм којим се обавља превођење назива се преводилац (compiler) Изворни кôд, претходно подвргнут предобради, преводи се у објектни кôд (object code). Проверава се синтакса грешке (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 Формат C програма - стил
#include<stdio.h> /* C program koji ispisuje: "Zdravo!" */ int main ( ) { printf( "Zdravo!\n" ) ; return }

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

29 Улога заграда и неких граничника
C programming language 2004/05 () у именима функција, за смештање аргумената {}, означи почетак и крај тела функције, да издвоји блокове инструкција и ограничи област важења података ; означава крај једног израза или наредбе С језик може у једном реду имати јако дуге и угњеждене изразе (више наредби) Пословна информатика, © Зоран Бањац

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 Децималне цифре Знаци: : _ ! ? . , : ; ‘ = / * # % & \ | ( ) [ ] { } < >

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

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

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

35 исправни идентификатори
suma NovoIme c5_ novo_ime JEDAN_BROJ Broj_studenata TX_protocol Broj_Studenata TRUE _split_name UporediRezultat_sabiranja dugoimesamnogokaraktera

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

37 Службене речи (32) auto double int struct break else long switch case
enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while

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

39 C programming language
Логички подаци C programming language 2004/05 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 Имена, идентификатори променљивих
C programming language 2004/05 Променљиве (варијабле) Променљива је симболичко име за неку меморијску локацију Свака променљива мора имати неко јединствено име!? име се формира од слова, цифара и знака _ први знак не може бити цифра максимално 31 знак разликују се мала и велика слова: име Slovo различито од slovo МЕМОРИЈА Broj-1 123A broj BROJ podatak_1 Пословна информатика, © Зоран Бањац

44 C programming language
Променљиве C programming language 2004/05 СВАКА ПРОМЕНЉИВА МОРА БИТИ ТАЧНО ОДРЕЂЕНОГ ТИПА Тип променљиве не може се мењати током извршења програма променљива може бити неког скаларног - описана једним бројем, или нескаларног типа - састоји се од више делова од којих је сваки и засебан и део податка Може да се мења вредност (садржај меморијске локације) зато се и зове променљива (varijabla) MEMORIJA A x Z G a ABC 2.35 13 char 13 6 -657 ABC 2.35 D 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 бита, могућих вредности 32768 негативних вредности 1 нула 32767 позитивних вредности Прекорачење (Overflow): покушај да се променљивој додели сувише велика вредности ( у short int)

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

51 Реални типови података
Име типа: float (4 bajta) double (8 bajtova) long double (10 bajtova) Могуће вредности: реални бројеви, 5.0, -3.5, 4.01 Операције: аритметичке (сабирање, одузимање, множење, …), друге

52 Реални типови података
float: 4 бајта, 32 бита double: 8 bајтова, 64 бита long double: 10 бајтова, 80 бита Представљање: mEe m магнитуда, мантиса (одређени број бита), децимални број и Е ознака за степеновање са основом е експонент, цео број са знаком

53 Нумеричке константе Целобројне Реалне

54 Целобројне нум. константе
Могу бити написане у децималном, хексадецималном (основе 16) и окталном (основе 8) бројевном систему. 974 Декадна константа типа int 0x2fc хексадецимална константа типа int 974l декадна константа типа long int 01234L октална константа типа long int

55 Целобројне нум. константе
0xffff негативна вредност-хексадец. 0xffffu позитивна вредност-хексадец. 0723 негативна вредност-октална 0723u позитивна вредност-октална

56 Реалне нум. константе Могу бити написане у само у децималном бројевном систему. 2.54Е-34 представља вредност е5 Е-45 F Подразумевани тип је double Додавањем суфикса F или f постаје float

57 C programming language
Дефинисање података C programming language 2004/05 Сваки податак (променљива) мора да се дефинише пре употребе! Општи облик наредбе је tip_podatka ime_podatka; или tip_podatka ime_podatka = početna_vrednost; tip_podatka ime_podatka[= početna_vrednost]; Пословна информатика, © Зоран Бањац

58 Дефиниција променљиве
C programming language 2004/05 Преводиоцу (компајлеру) се мора указати на то да ће се у програму користити нека променљива, како би он могао да резервише потребан простор у меморији Општи облик дефиниције променљиве: tip imepromjenljive [=vrednost] [=vrednost] На пример. int i,j,n=10; float a, e=2.71; char znak=’+’,c; Почетна вредност Не мора се додељивати!! [ ] ове заграде се користе да би се нагласило да нешто није обавезно Пословна информатика, © Зоран Бањац

59 Дефинисање података short int broj1; short int broj2=34,d, gr=5;
char slovo; float a=5.43; float b=12.65; int visina=34/2; float povrsina=a*b;

60 Иницијализација Пример:
је додељивање почетне вредности (initial value) променљивој Промељива се не мора иницијализовати (вредност је у том случају случајна) tip_podatka ime_podatka [=početna_vrednost], ,ime_podatka [= početna_vrednost]; Пример: int broj=2, prisutni=0, godina=2004, br_sati;

61 Дефинисање непроменљивих података
Непроменљиви подаци су именовани подаци чија се вредност не мења. Дефинишу се на сличан начин с тим да: дефинисање почиње са кључном речи const мора бити додељена почетна вредност Општи облик дефинисања непроменљивих података const tip_podatka ime_podatka = početna_vrednost;

62 Дефинисање непроменљивих података
const double e= ; const int br_radnih_dana=26; const float radijus=14; const float cena=14.2, porez=0.22; /* i porez je konstanta*/ const float obim=2*radijus*3.14;

63 Читање и писање података
Сви подаци који се уносе са тастатуре се прихватају као знакови (character). Улазна конверзија се у програмском језику C обавља преко уграђене функције scanf() Приликом исписа података на монитор потребно је да се обави излазна конверзија, Ова конверзија се обавља применом уграђене функције printf()

64 Читање и писање података
Информације о функцијама scanf() и printf() налазе се у фајлу stdio.h. Име stdio потиче од standard input output a екстензија .h од header (заглавље). #include <stdio.h> #include "c:\nekoime.h"

65 C programming language
printf C programming language 2004/05 Стандардна функција за излаз (испис) на екран printf( ”konverzioni string” , lista_argumenata ) ”konverzioni string” lista_argumenata Kontrolni (konverzioni) niz određuje način na koji se vrši ispis Štampa se sve što se nađe unutar ” ” sve dok se ne dođe do znaka % Kad se dođe do znaka % gleda se sljedeći znak (grupa znakova) koji se naziva konverzioni karakter Konverzioni karakter definiše kako će se ispisati odgovarajući podatak iz liste argumenata Mora biti onoliko znakova % u cijelom stringu koliko ima i argumenata u listi Određuje šta treba da se ispiše (koji podaci treba da se ispišu) Argumenti se odvajaju zapetama Argumenti mogu da budu promjenljive, konstante, izrazi Пословна информатика, © Зоран Бањац

66 Писање података ”%[Sirina][.Prec]Tip_kon”
printf("Ovo je jednostavna poruka") Резултат: Ovo je jednostavna poruka printf(format,izraz,...,izraz) izraz може да представља име променљиве, вредност константе или аритметички израз format има облик: ”%[Sirina][.Prec]Tip_kon”

67 ”%[Sirina][.Prec]Tip_kon”
i int децимални цео број d int децимални цео број u int неозначени дец. цео број o int неозначени октални број x int неозначени хексадецимални „abcdef” X int неозначени хексадецимални, „ABCDEF” c int карактер дефинисан једним бајтом (ASCII) e float реални број једноструке тачносити, експ облик f float реални број једноструке тачносити стд. облика g float реални број једноструке тачносити облика f ,e у зависности од тога који је погоднији за приказ

68 Писање података printf("%c ", ’A’); резултат је: А
printf("%c %d", ’A’, 35); резултат је: А 35 размак између %c и %d printf("%c%d", ’A’, 35); резултат је: А35 oвде нема размака. printf("%c %d %f", ’A’, 35, 4.5); резултат је: А printf("%c %d %е", ’A’, 35, ); резултат је: А е+001

69 Пример исписа по разним форматима
C programming language 2004/05 MЕМОРИЈА Пример: #include <stdio.h> main() { int var=65; printf( ”Znakovi:\n”); printf( ”%2c\n”, ’A’); printf( ”%4c\n%6c\n”, var, ’B’); printf( ”%8c\n”, var+1); printf( ”%3d\n”, ’A’); printf( ”%03d”, ’A’); } int var=65; Znakovi: int var=65; printf( ”Znakovi:\n”); printf( ”Znakovi:\n”); printf( ”%2c\n”, ’A’); .A printf( ”%2c\n”, ’A’); printf( ”%4c\n%6c\n”, var, ’B’); ...A .....B printf( ”%4c\n%6c\n”, var, ’B’); printf( ”%8c\n”, var+1); B printf( ”%8c\n”, var+1); printf( ”%3d\n”, ’A’); .65 printf( ”%3d\n”, ’A’); printf( ”%03d”, ’A’); 065 printf( ”%03d”, ’A’); Пословна информатика, © Зоран Бањац

70 C programming language
Променљиве и меморија C programming language 2004/05 Пример: #include <stdio.h> main() { int i=9,j; float a,b; j=i/2; a=i/2.0; b=a*2.0/j; printf( ”i=%d\n”, i ); printf( ”j=%d\n”, j ); printf( ”a=%6.2f\n”, a ); printf( ”b=%6.2f\n”, b ); } b MEMOРИJA 2.25 int i=9,j; float a,b; int i=9,j; float a,b; j=i/2; a j=i/2; a=i/2.0; 4.5 a=i/2.0; b=a*2.0/j; j 4 i 9 Пословна информатика, © Зоран Бањац

71 ”%[Sirina][.Prec]Tip_kon”
.Prec представља прецизност исписа значај само за реалне бројеве: ( e, f, g) одређује број цифара које ће бити исписане након децималне тачке. Подразумевана вредност је 6. Уколико је наведена прецизност мања од броја децимала: исписује се онолико цифара колико прецизност дефинише а последња цифра се заокржује. За тип конверзије g: одређује укупан број цифара који ће се исписати (целобројни +децимални део). Нема заокруживања.

72 ”%[Sirina][.Prec]Tip_kon”
printf("%е", ); резултат је: е+001 Подразумевана вредност је 6 децимала printf("%.4е" ); резултат је: е+001 Исписује онолико децимала колико је наведено printf("%.3е", ); резултат је: 4.213е Заокруживање последње децимале

73 ”%[Sirina][.Prec]Tip_kon”
printf("%f", ); резултат је: Подразумевана вредност је 6 децимала printf("%.7f", ); резултат је: Заокруживање printf("%.2f", ); резултат је: Заокруживање

74 ”%[Sirina][.Prec]Tip_kon”
printf("%g", ); резултат је: printf("%.7g", ); резултат је: одсецање printf("%.2g", ); резултат је: 42 printf("%.2g", ); резултат је: 1.4е+002

75 ”%[Sirina][.Prec]Tip_kon”
Sirina Одређује минимални број карактера који се резервише за испис неког броја. То је позитивна вредност. Уколико је за испис потребно мање карактера од броја који је одређен параметром Sirina, испис се допуњава бленковима (размацима) и поравнава се у десно. Уколико се испред параметра Sirina наведе 0 бленкови се, уколико постоје, замењују нулама.

76 ”%[Sirina][.Prec]Tip_kon”
printf(″%5c%4d″, ’A’, 35); резултат је: А 35 /* четири бленка испред А и два бленка испред 35 printf(″%04d″, 35); резултат је: /* нуле замењују празна места printf("%07.3f", ); /* */ укупно 7 цифара од тога три цифре након децим. тачке и једна за децим. тачку */

77 Додатно форматирање escape sequence \a – bell \\ -- backslash
\b – backspace \? – question mark \f – formfeed \’ – single quote \n – new line \” – quote mark \r – CR \o# – # in octal \t – horiz. tab \x# – # in hex \v – vertical tab

78 35 /* \t je znak tab, 35 je pomeren u desno*/ 42.126000
printf("%c\n\t%d\n%f\n", 'A',35, ); резултат је: А 35 /* \t je znak tab, 35 je pomeren u desno*/

79 C programming language
Променљиве и излаз C programming language 2004/05 MEMORIJA j a b i 9 4 4.5 2.25 Пример: #include <stdio.h> main() { int i=9,j; float a,b; j=i/2; a=i/2.0; b=a*2.0/j; printf( ”i=%d\n”, i ); printf( ”j=%d\n”, j ); printf( ”a=%6.2f\n”, a ); printf( ”b=%6.2f\n”, b ); } b=a*2.0/j; printf( ”i=%d\n”, i ); i=9 printf( ”i=%d\n”, i ); printf( ”j=%d\n”, j ); j=4 printf( ”j=%d\n”, j ); printf( ”a=%6.2f\n”, a ); a= 4.50 printf( ”a=%6.2f\n”, a ); printf( ”b=%6.2f\n”, b ); b= 2.25 Пословна информатика, © Зоран Бањац

80 Читање података-стандардни улаз
Општи облик наредбе је следећи: scanf(format,&podatak,...,&podatak) Oператор & испред имена променљиве означава да се функцији scanf() додељује меморијска адреса променљиве (податка) на коју се уписује резултат конверзије. format има исти облик као и код функције printf().

81 Стандардни улаз података
C programming language 2004/05 Пример: #include <stdio.h> main() { int broj; /*printf( ”Unesite ceо broj:\n” );*/ scanf( ”%d”, &broj ); printf( ”Uneli ste %d\n”, broj ); } MEMOРИЈA Uneli ste 6 broj _ 6 Пословна информатика, © Зоран Бањац

82 Стандардни улаз података
C programming language 2004/05 Пре сваке наредбе за унос пошаљите поруку на екран!! Primjer: #include <stdio.h> main() { int broj; printf( ”Unesite cео broj:\n” ); scanf( ”%d”, &broj ); printf( ”Uneli ste %d\n”, broj ); } MEMOРИJA Uneli ste 6 broj Unesite cео broj: 6 Пословна информатика, © Зоран Бањац

83 пример 1 #include <stdio.h> main() { char cVar; int dVar;
float fVar; scanf("%c %d %f", &cVar,&dVar, &fVar); printf("\n%c \n%d \n%f\n",cVar, dVar, fVar); }

84 пример 1 унете вредности излазне вредности

85 пример 2 #include <stdio.h> main() { int x; char c; float y;
scanf("%d %c %f", &x, &c, &y); printf("\n%d \n%c \n%f\n",x, c, y); scanf("%d", &x); printf("Da li sam cekao za drugi \ unos?\n"); printf("\n%d\n",x); }

86 пример 2

87 Оператори Радње које се извршавају над операндима и које дају одређени резултат. Аритметички оператори Оператор доделе вредности Релацијски оператори Логички оператори Оператори по битовима Величина податка Условни израз

88 Аритметички оператори
Бинарни оператори Име Oператор Пример Сабирање num1 + num2 Одузимање initial - spent Множење * kolicna * 6 Дељење / suma /kolicina Модуо % m % n

89 Дељење Ако су оба операнда при дељењу типа int онда ће и резултат бити типа int. 17 / 5 = 3 4 / 3 = 1 35 / 9 = 3 #include <stdio.h> main() { int x=5, y=2, а; float z; а=x/y; /* a=2 */ z=x/y; /* z = 2.5 */ }

90 Дељење Aко је бар један операнд типа float резултат ће бити типа float. Примери: / 5 = 3.4 4/ 3.2 = 1.25 35.2/9.1 = Објашњење? Целобројни (int) операнд се привремено конвертује у реалну вредност (float), па се онда обави дељење.

91 Дељење нулом Дељење нулом није математички дефинисано.
Ако у току извршавања програма дође до дељења нулом то ће проузроковати прекид извшења програма fatal error.

92 Модуо - Остатак при дељењу
Израрз m % n даје целобројни остатак дељења m са n. Оба операнда МОРАЈУ бити целобројна Примери : 17 % 5 = 2 6 % 3 = 0 9 % 2 = 1 5 % 8 = 5 a % b = a – (a/b)*b

93 Модуо - Остатак при дељењу
C programming language 2004/05 Пример употребе % оператора Primjer: #include <stdio.h> main() { int sek; printf( ”Unesite vreme u sekundama: ” ); scanf( ”%d”, &sek ); /* ovde se ucitava podatak */ printf( ”To je: %02d:%02d:%02d\n”, sek/3600,sek%3600/60,sek%60 ); } Unesite vreme u sekundama: 4000 To je: 01:06:40 Пословна информатика, © Зоран Бањац

94 Аритметички оператори
Унарни оператори: +, - Представљају предзнак операнда Унарни оператори: ++, −− Оператор ++ увећава вредност операнда за 1 (increment). Оператор −− умањује вредност операнда за 1 (decrement).

95 Унарни оператори: ++, −−
а++; /* одговара наредби а = а+1; */ ++а; /* одговара наредби а = а+1; */ а--; /* одговара наредби а = а-1; */ --а; /* одговара наредби а = а-1; */

96 Унарни оператори: ++, −−
int broj_a, broj_b, broj_c, broj_d; broj_a = 3; broj_b = 6; broj_c = broj_b++; /* broj_c je jednak 6 a nakon toga se povećava b na 7*/ broj_c = ++broj_a; /* prvo se broj_a poveća na 4 a potom je broj_c jednak 4*/ broj_d= broj_b; /* broj_d je jednak 7*/

97 Оператор доделе вредности
operator = += - = *= /= %= Општи облик ime_promenljive [operator]= izraz

98 Оператор доделе вредности
C programming language 2004/05 c MEMOРИJA Пример: #include <stdio.h> main() { int a,b,c; a=b=c=10; printf( ”%d %d %d\n”, a,b,c ); a = (b=10) + (c=20); } b a Пословна информатика, © Зоран Бањац

99 Оператор доделе, пример
broj_a=3; broj_c= broj_b; a=а+1; a += b; /* isto je sto i a=a+b; */ a -= b; /* isto je sto i a=a-b; */ a *= b; /* isto je sto i a=a*b; */ a /= b; /* isto je sto i a=a/b; */ a %= b; /* isto je sto i a=a%b; */ a=b=c=27; b += c+2; /* isto je sto i b=b+(c+2); */ d *= e-5; /* isto je sto i d=d*(e-5); */

100 Релацијски оператори > веће од a > b < мање од a < b
Резултати поређења су целобројног типа (int) и могу имати вредност: 1 ако релација важи или 0 уколико релација не важи.

101 Релацијски оператори, пример
3.1 != -3.1 /* rezultat 1 */ 5.2 >= 6 /* rezultat 0 */ 7<= 7 /* rezultat 1 */ 0.5 == 4.2 /* rezultat 0 */ a != /* rezultat zavisi od vrednosti promenljive a */

102 Логички оператори ! негација && логичко И || логичко ИЛИ

103 Логички оператори, пример
да ли се вредност променљиве налази између 10 и 100 (10<а) && (а<100) /* Ako je a>10 i a<100 vrednost izraza je 1, u suprotnom 0*/ да ли је апс. вредност променљиве већа од 15 (а <-15) || (а>15) /* ako je a<-15 ili a>15 vrednost izraza je 1, u suprotnom 0 */

104 Оператори по битовима ~ комплемент << логичко попмерање у лево
~ комплемент << логичко попмерање у лево >> логичко померање у десно & логичко И на битском нивоу | логичко ИЛИ на битском нивоу ^ ексклузивно или (exor)

105 Оператори по битовима, пример
0x1234 & 0x5678 (4660 & 22136) & = =0x1230(4656) 0x1234 | 0x5678 | = =0x567c

106 Оператори по битовима, пример
0x1234 ^ 0x5678 ^ = =0x444c ~0x1234 ~ = =0xedcb 0x0001<<5 <<5 =

107 Оператори над битовима, пример
C programming language 2004/05 & - битско AND Пример: #include <stdio.h> main() { char c=’9’; short cifra; cifra = c & 0x0F; printf( ”%d\n”, cifra ); } MEMOРИJA cifra c c 0x0F & 9 Пословна информатика, © Зоран Бањац

108 Оператори над битовима, пример
C programming language 2004/05 | - битско OR Пример: #include <stdio.h> main() { short cifra=9; char c; c = cifra | 0x30; printf( ”%c\n”, c ); } MEMORIJA c cifra cifra 0x30 | 9 Пословна информатика, © Зоран Бањац

109 Оператори над битовима
C programming language 2004/05 ~ - битско NOT MEMOРИJA Пример: #include <stdio.h> main() { short x=1,y; y = ~x; printf( ”%d\n”, y ); } y x x ~ -2 Пословна информатика, © Зоран Бањац

110 Оператори над битовима
C programming language 2004/05 ^ - XOR (EX ILI) Пример: #include <stdio.h> main() { short x=0x73,y; y = x^0x32; printf( ”%c\n”, y ); } MEMORIJA y x x 0x32 ^ A Пословна информатика, © Зоран Бањац

111 C programming language
Оператори померања C programming language 2004/05 << - померање лево Пример: #include <stdio.h> main() { short x=3,y; y = x<<1; printf( ”%d\n”, y ); } MEMOРИJA y x x <<1 6 Пословна информатика, © Зоран Бањац

112 C programming language
Оператори померања C programming language 2004/05 << - померање лево Пример: #include <stdio.h> main() { short x=3,y; y = x<<4; printf( ”%d\n”, y ); } MEMOРИJA y x x <<4 48 Пословна информатика, © Зоран Бањац

113 C programming language
Оператори померања C programming language 2004/05 >> - померање десно MEMOРИJA Пример: #include <stdio.h> main() { short x=12,y; y = x>>1; printf( ”%d\n”, y ); } y x x >>1 6 Пословна информатика, © Зоран Бањац

114 C programming language
Оператори померања C programming language 2004/05 >> - померање десно MEMOРИJA Пример: #include <stdio.h> main() { short x=-4,y; y = x>>2; printf( ”%d\n”, y ); } y x x >>2 -1 Пословна информатика, © Зоран Бањац

115 Величина податка Bеличина меморијске локације коју заузима неки податак се може израчунати употребом оператора sizeof. Примери: sizeof( short int); sizeof( long int); sizeof( broj_a); sizeof( broj_a*broj_b-3);

116 Условни оператор uslov ? izraz1 : izraz2 c= (a>b) ? a : b;
c=(x<=y && y>=z) ? y : (x+z)/2

117 C programming language
Условни оператор C programming language 2004/05 Условни оператор (?:) Општи облик: uslov ? izraz1 : izraz2 ISTINA LAŽ uslov izraz1 izraz2 нпр. y = 5; x = (y>0) ? 100 : 200; x  100 нпр. y = -2; x = (y>0) ? 100 : 200; x  200 Пословна информатика, © Зоран Бањац

118 Конверзија типа Бинарни оператори захтевају да два оператора имају исти тип. Када то није испуњено долази до аутоматске конверије типова. /* isto sto i */ 5/ /* rezultat 4*/ 3.0*5/4 /* (3.0*5)/4=(3.0*5.0)/4 15.0/4 =15.0/4.0=3.75 */

119 Конверзија типа Експлицитном наредба за промену типа применом тзв. cast-оператора. Његов општи облик је: (novi_tip) izraz int a; (char)a; float x; double y; y=sin((double)x);

120 Редослед извршавања оператора
Редослед извршавања оператора је унапред дефинисан одговарајућим приоритетом . Заграде ( ) имају највиши приоритет.

121 C programming language
Приоритет оператора C programming language 2004/05 Приоритет и асоцијативност оператора Приоритет оператори Асоцијативност највиши најнижи ! ~ * & (tip) ( ) { } -> . ( ) { } -> . * / % ! ~ * & (tip) + - * / % << >> + - < <= > >= << >> == != & ^ | && || < <= > >= ?: == != & ^ | && || = += -= *= /= %= &= ^= |= ?: , = += -= *= /= %= &= ^= |= , Пословна информатика, © Зоран Бањац

122 Асоцијативност оператора
C programming language 2004/05 Асоцијативност оператора слева удесно () тзв. лева асоцијативност оператора X op Y op Z  (X op Y) op Z Асоцијативност оператора здесна улево () тзв. десна асоцијативност оператора X op Y op Z  X op (Y op Z) Пословна информатика, © Зоран Бањац

123 C programming language
2004/05 Хвала на пажњи Питања? Пословна информатика, © Зоран Бањац


Scaricare ppt "C programming language"

Presentazioni simili


Annunci Google