01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24...

47
1 Основи Основи програмирања програмирања 1 1 Висока школа електротехнике и рачунарства струковних студија Београд

Transcript of 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24...

Page 1: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

1

ОсновиОснови програмирањапрограмирања 11

Висока школа електротехнике и рачунарстваструковних студија

Београд

Page 2: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

2

СадржајСадржај

• Шта је програмски језик• Машински језик и асемблери• Виши програмски језици• Развојни циклус програма• Увод у програмски језик „C”• Основе развојног окружења

Page 3: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

3

ПрограмскиПрограмски језицијезици

• Програмски језик је скуп наредби заизвршавање рачунарских задатака

• Представља скуп речи и скуп правила наоснову којих се пише програм

• Развојни цилкус програма скуп правила накојима се заснива развој софтвера

Machine Language

Ada

PascalFortranCOBOL

Assembly Language

Visual BasicBASIC

JavaC / C++

Page 4: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

4

РазвојРазвој програмскихпрограмских језикајезика

• Програмски језици су подељени погенерацијама

• Језици најнижег нивоа су најстарији• Постоји пет генерација програмских језика:

– Машински језици– Асемблерски језици– Процедурални језици– Проблем-оријентисани језици– Природни језици

Page 5: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

5

ЈезициЈезици првепрве генерацијегенерације

Машински језици: – Састоје се од бинарнихбројева (0 и 1)

– Није потребно превођење– Везан је за конкретанрачунар (машину)Свака фамилија процесораима свој (посебан) машински језик

Page 6: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

6

ЈезициЈезици другедруге генерацијегенерације

Асемблерски језици: – Надоградња машинских језика– Нижи програмски језик– Користи кратке словне замене запрограмске наредбе.Ове словне замене сеназивају мнемоници

– Програм се прво пише каоsource code (текстуални фајл) апотом се преводи у машинскијезик

– Програм за превођење: Асемблер

Page 7: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

7

ЈезициЈезици трећетреће генерацијегенерације

• Процедурални језици: – Језици високог нивоа апстракције– Лакши за читање, писање и преправке одмашинских и асемблерских језика

– Користе compiler или interpreter за превод кода• Fortran и COBOL су језици треће генерације

Page 8: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

8

Compiler & InterpreterCompiler & Interpreter

• Компајлер је програм који преводи код (source code) у објектни код

• Интерпретер преводи по једну линију кода иодмах је извршава

Page 9: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

9

ЈезициЈезици трећетреће генерацијегенерације ((наставакнаставак))

Spaghetti Code & the Great Software Crisis:• GOTO наредба довела је до тога да се програмтешко прати

• Тај проблем је довео до тзв. софтверске кризе1960-тих-Рокови за програмирање су се пробијали-Програми су “пробијали” предвиђени буџет-Програми су садржали превише грешака-Корисници нису били задовољни

Page 10: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

10

ЈезициЈезици трећетреће генерацијегенерације ((наставакнаставак))

• Структуирани програмски језици:– Развијени су како би унапредили развојсофтвера

– Представници Algol и Pascal– Забрана употребе GOTO наредби– Употреба контролних структураIF-THEN-ELSE

Page 11: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

11

ЈезициЈезици трећетреће генерацијегенерације ((наставакнаставак))

• Модуларни програмски језици:– Развијени због проблема који су настали уструктуираним програмским језицима

– Користе се за креирање програма који суиздељени на засебне модулеСваки модул обавља специфичнуфункцију

– за различите улазне вредности дајеразличите излазне вредности

Page 12: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

12

РазвојниРазвојни циклусциклус програмапрограма

• Планско решавање проблемапрограмирања и подела на значајнецелине

• Шест фаза:1. Дефинисање проблема2. Дизајнирање програма3. Писање кода (Coding)4. Тестирање и дебаговање5. Формализовање решења6. Имплементација и праћење рада програма

Page 13: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

13

УводУвод уу програмскипрограмски језикјезик „„CC””

• Једноставан• Флексибилан• Преносив• Модуларан

Page 14: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

14

ИсторијаИсторија

• Програмски језик C је први пут развијенпочетком 1970-тих (Bell Labs, USA)

• Намена: основа за развој оперативногсистема UNIX.

• Други виши програмски језици тогвремена (COBOL, FORTRAN, PL/I, ALGOL...) су били превише спори.

• Као основа за програмски језик C супослужила два виша програмскa језика: ALGOL и BCPL.

Page 15: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

15

ПисањеПисање програмапрограма

• Скуп наредби (instructions, statements) сеназива кôд (Code ) илиизворни кôд (Source code).

• Фајл који садржи кôд се назива Source file. • У C програмском језику се низ наредбигрупише у целине које се називајуфункције (function)

Page 16: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

16

• Сваки програм мора да садржи бар једну функцију ито функцијуmain( )

• Функција main( ) се не позива, то радиоперативни систем.

• Свака функција се састоји од– повратне вредности (int)– имена (main)– листе улазних аргумената (листа унутар заграда () )– тела (унутар заграда {} )

Page 17: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

17

CC програмпрограм

main( ){

}

int main( ){return 0;

}

/* komentar */int main( ){return 0;

}

#include <stdio.h>/* ispisujem: Zdravo! */int main( ){

printf("Zdravo!\n");return 0;

}

main( ){

;}

Page 18: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

18

CC програмпрограм

• Име функције main• Тело функције {}• Најкраћи програм

main( ){

}

int main( ){return 0;

}

• Тип функције int• наредба return 0• завршетак наредбе ;• повратна вредност 0

Page 19: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

19

return 0return 0

• Функција main() враћа целобројну вредност• Коме?• Наредба којом се та вредност враћа и којом сеодређује која вредност се враћа

return 0;

• Оперативном систему се враћа вредност 0• Касније детаљније о повратној вредности

Page 20: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

20

ПутПут додо извршногизвршног програмапрограма

1. Предобрада (Preprocessing)

2. Превођење (Compilation)

3. Повезивање (Linking)

Page 21: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

21

1. 1. ПредобрадаПредобрада # # ((PreprocessingPreprocessing))

• Обавља се програмом који се назива preprocessor.

• Мења изворни кôд (у RAM-у) у складу сaнаредбама за предобраду (preprocessor directives).Ове наредбе ближе дефинишу начин превођења.

• Занемарују се коментари (comments) и празанпростор (white space) из кôда.

• Кôд, који је програмер написао и претходноснимио на диск, се НЕ МЕЊА у процесупредобраде!

Page 22: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

22

2. 2. ПревођењеПревођење ((CompilationCompilation))

• Програм се назива преводилац (compiler)• Изворни кôд, претходно подвргнут предобради, се преводи у објектни кôд (object code).

• Проверава се синтаксагрешке (errors) иупозорења (warnings)

• Снима објектни кôд на диск (нови фајл).• Ако се приликом превођења констатује грешка, НЕ ГЕНЕРИШЕ се објектни кôд.

Page 23: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

23

3. 3. ПовезивањеПовезивање ((LinkingLinking))

• Уколико је кôд писан у више фајлова постојивише фајлова са објектним кодом.

• Објектни фајлови се повезују у једну целинукако би се формирао извршни фајл(executable file, са екстензијом .еxe).

• Други објектни фајлови могу да настанупозивањем готових функција из тзв. библиотека (Libraries, Run-Time Library) илиобјектних фајлова које је креирао програмер.

• Уколико се приликом линковања констатујегрешка неће се формирати извршни фајл!

Page 24: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

24

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

Повезивање

Програм за унос и обраду текста

filename1.c

filename2.c

...

filenameN.c

Предобрада

Предобрада

Предобрада

Предобрада

filename1.obj

...

filenameN.obj

filename2.obj

Објектни фајлови

Фајл након предобраде, памти се у RAM-у

Превођење

Превођење

Превођење

Превођење

filename1.objfilename1.obj ... filenameN.obj

project_filename.prj

Извршни програм.exe

Page 25: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

25

ФорматФормат CC програмапрограма

#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;}

Page 26: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

26

ФорматФормат CC програмапрограма

#include<stdio.h>/* C program koji ispisuje:

"Zdravo!" */int main()

{printf("Zdravo!\n");return0; }

Page 27: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

27

ФорматФормат CC програмапрограма

• Најпрегледније, најразумљивије• Најлакше за тестирање• Најпогодније за “дораду”

• Правила#include

<stdio.h>printf("Ovo je veoma, veoma,\veoma, veoma,duga linija.");

Page 28: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

28

ЕлементиЕлементи језикајезика CC

• Скуп знакова• Велика и мала слова енглеског алфабета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

• Знаци:: _ ! ? . , : ; ‘ = + -/ * # % & \ | ( ) [ ] { } < >

Page 29: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

29

O O коментримакоментрима

• Део кода који се не преводи• Намена му је да програмеру олакша праћење кода• може да се налази у једној или у више линија

/* komentar u celoj liniji */

printf("Ispis"); /* komentar dela linije*/

/* komentar u više linija */

Page 30: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

30

СС програмпрограм саса коментаримакоментарима

/****************************************** Program: zdravo.c **** Autor: Henry Neeman **** Kurs: Programiranje1 2006/07 **** Objasnjenje: Ispis "Zdravo svima!" **** standardni izlaz. ******************************************/#include <stdio.h>

int main() /* pocetak funkcie main */{ /****** Telo funkcije *********/

/*Prikazi recenicu */printf(“Zdravo svima!\n");

} /* kraj funkcije main */

Page 31: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

31

СС програмпрограм безбез коментаракоментара

#include <stdio.h>

int main(){ printf(“Zdravo svima!\n");

}

Page 32: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

32

ОО исписуиспису

• ИзлазZdravo svima!

• printf постојећа функција за испис на екран• исписује све између знакова навода

#include <stdio.h>/* C program koji ispisuje: "Zdravo!" */int main( ){

printf("Zdravo svima!");

return 0; }

Page 33: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

33

ОО исписуиспису

• ИзлазZdravo svima!

#include <stdio.h>int main( ){

printf("Zdravo ");printf("svima!");

return 0; }

Page 34: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

34

ОО исписуиспису

• ИзлазZdravosvima!

#include <stdio.h>

int main( ){

printf("Zdravo \nsvima!");

return 0; }

Page 35: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

35

ОО исписуиспису

• ИзлазZdravo

svima!

#include <stdio.h>

int main( ){

printf("Zdravo \n\nsvima\n!");

return 0; }

Page 36: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

36

ОО исписуиспису

• ИзлазZdravo

svima!

#include <stdio.h>

int main( ){

printf("\tZdravo \n\nsvima!");

return 0; }

Page 37: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

37

ОО прихватуприхвату податакаподатака• ИзлазVase ime?

#include <stdio.h>#define MAX 30int main( ){

char ime[MAX];

printf("\nVase ime?\n\n");gets(ime);

printf("Vi ste %s\n“, ime);

return 0; }

Vase ime?Marko

Vase ime?MarkoVi ste Marko

Page 38: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

38

РазвојноРазвојно окружењеокружење

Page 39: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

39

РазвојноРазвојно окружењеокружење

Page 40: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

40

РазвојноРазвојно окружењеокружење

Page 41: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

41

РазвојноРазвојно окружењеокружење

Page 42: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

42

РазвојноРазвојно окружењеокружење

Page 43: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

43

РазвојноРазвојно окружењеокружење

Page 44: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

44

РазвојноРазвојно окружењеокружење

Page 45: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

45

РазвојноРазвојно окружењеокружење

Page 46: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

46

РазвојноРазвојно окружењеокружење

Page 47: 01 Uvodno predavanje - vps.ns.ac.rsvps.ns.ac.rs/Materijal/mat21059.pdf · 24 Какодоизвршногпрограма? Повезивање Програм за унос и обраду

47

Хвала на пажњи

Питања?