Why Use C? In today's world of computer

Size: px
Start display at page:

Download "Why Use C? In today's world of computer"

Transcription

1 Why Use C? In today's world of computer programming, there are many highlevel languages to choose from, such as C, Pascal, BASIC, and Java. These are all excellent languages suited for most programming tasks. Even so, there are several reasons why many computer professionals feel that C is at the top of the list: 1

2 Why Use C? C is a powerful and flexible language. What you can accomplish with C is limited only by your imagination. The language itself places no constraints on you. C is used for projects as diverse as operating systems, word processors, graphics, spreadsheets, and even compilers for other languages. Why Use C? C is a popular language preferred by professional programmers. As a result, a wide variety of C compilers and helpful accessories are available. 2

3 Why Use C? C is a portable language. Portable means that a C program written for one computer system (an IBM PC, for example) can be compiled and run on another system (a DEC VAX system, perhaps) with little or no modification. Portability is enhanced by the ANSI standard for C, the set of rules for C compilers. Why Use C? C is a language of few words, containing only a handful of terms, called keywords, which serve as the base on which the language's functionality is built. You might think that a language with more keywords (sometimes called reserved words) would be more powerful. This isn't true. As you program with C, you will find that it can be programmed to do any task. 3

4 Why Use C? C is modular. C code can (and should) be written in routines called functions. These functions can be reused in other applications or programs. By passing pieces of information to the functions, you can create useful, reusable code. Why Use C? What about C++? You might have heard about C++ and the programming technique called object-oriented programming. Perhaps you're wondering what the differences are between C and C++ and whether you should be teaching yourself C++ instead of C. 4

5 Why Use C? Not to worry! C++ is a superset of C, which means that C++ contains everything C does, plus new additions for object-oriented programming. If you do go on to learn C++, almost everything you learn about C will still apply to the C++ superset. Why Use C? In learning C, you are not only learning one of today's most powerful and popular programming languages, but you are also preparing yourself for object-oriented programming. Another language that has gotten lots of attention is Java. Java, like C++, is based on C. If later you decide to learn Java, you will find that almost everything you learned about C can be applied. 5

6 Prednosti C jezika Jednostavnost Univerzalnost i slobodne forme programiranja, čine ga jezikom opšte namene i primene Razvijena sredstva za prikazivanje strukture podataka Projektovanje programa metodom odozgo na dole Optimizovani C prevodioci za kreiranje efikasnih programa za sistemsko programiranje Uvod u jezik C++ u kome su uspešno zaživele ideje objektno orjentisanog programiranja Tradicionalni, klasični, algoritamski način programiranja je u osnovi proceduralan, zasnovan na funkcionalnoj dekompoziciji korisničkog, a zatim i programskog zahteva. (tipicno unos, obrada prikaz) Pri tome, podaci (atributi) koji se obrađuju i operacije nad njima nisu grupisani zajedno u objektima kao što je to slučaj kod OBJEKTNO ORJENTISANOG PROGRAMIRANJA, ved su razbacani po programu. 6

7 Procesi u izvršavanju programa Tekst editor. Pisanje izvornog koda programa Pretprocesor. Transformiše izvorni kod prema direktivama koji se u njemu nalaze Kompajler. Transformiše izvorni kod u kod na asemblerskom jeziku Asembler. Asemblerski kod translira u objektni kod. Linker. Od formiranog koda i modula iz biblioteke C jezika kreira izvršiv file Let s go! Example 1. Linear function #include<stdio.h> main () int a,b,x,y; a=2; b=4; x=1; y=a*x+b; printf("%10d\n",y); 7

8 Osnovni elementi C jezika Identifikator je sekvenca velikih i malih slova, cifara, i karaktera _. Koristi se za dodeljivanje imena objektima u programu (funkcije, promenljive...) printf("%10d\n",y); je iskaz C jezika i predstavlja elementarnu obradu koju program treba da obavi. Mora se završiti karakterom ; i - su karakteri koji objedinjuju više pojedinačnih iskaza u jednu programsku celinu, analogno komandama BEGIN i END u Pascalu. Osnovni elementi C jezika, nastavak main, printf i scanf su identifikatori sistemskih funkcija Funkcija main informiše program gde treba početi izvršavanje programa, a ( ); označava da sistemska funkcija main nema argumenata. #include<stdio.h> Sve pretprocesorske direktive počinju znakom # i ne pripadaju C jeziku. #include<stdio.h> je instrukcija prevodiocu da upotrebi standardne ulazno izlazne funkcije koje su definisane u file-u <stdio.h> 8

9 Funkcije za realizaciju ulazne i izlazne aktivnosti Funkcije printf i scanf obavljaju formatizovanu ulazno izlaznu aktivnost. Argumenti obe funkcije podeljeni su u dva dela: A) Kontrolni ili konverzioni niz B) Lista argumenata Razlika funkcija scanf i printf je u u listi argumenata. Argumenti funkcije printf se prenose vrednošdu, dok se argumenti funkcije scanf prenose svojom adresom, jer se učitana vrednost mora vratiti u pozivajudi program. To se postiže navođenjem karaktera & ( operator indirekcije ) ispred liste argumenata. Izlazna funkcija printf() Sintaksa printf (Upravljački string *Arg1,Arg2, +) Upravljački string A) printf ( Ispis izlaznih izvestaja ) Konstantni tekst Ispis izlaznih izvestaja B) Sadrži specifikaciju konverzije printf ( Broj Pi ima vrednost %f\n, Pi) Karakter % f određuje na kom mestu i u kom formatu de se štampati vrednost odgovarajudeg argumenta iz liste. \n Jedan karakter. Nekim karakterima se može promeniti uobičajeno značenje ako im prethodi karakter \, tzv. Escape karakteri. 9

10 Opšti oblik specifikacije konverzije %[-][ širina_polja][. Tačnost][1] konverzioni_karakter [-] Argument se poravnava na levoj strani zadane širine širina_polja Zadaje maksimalnu širinu polja. Mesto na kome se štampa argument naziva se polje, a broj karaktera u polju je širina polja. Tačnost Definiše se za realne brojeve, koliko se cifara ispisuje desno od decimalne tačke Konverzioni_karakter definiše konverziju (iz tabele) Simboli specifikacije konverzije Simbol konverzije Tip argumenta c char Jedan znak Osobina izlazne funkcije d int Ceo dekadni broj u int Ceo dek. br.bez znaka o int Ceo okt. br. bez znaka x, X int Ceo hksdek. br. bez znaka s string String f float double Dekadni zapis real. broja e, E float double Eksponencijalni zapis g,g float double Kradi zapis između %f i %e 10

11 Example No 2 main() printf("karakteri:\n%3c\n%5c\n%7c\n",'a','b','c'); Izlaz programa Karakteri: A B C Ulazna funkcija scanf() Sintaksa scanf (Upravljački string *Arg1,Arg2, +) Upravljački string sadrži niz konverzionih specifikacija Lista argumenata sadrži adrese promenljivih. Ispred imena promenljive obavezan je znak &, osim kod string promenljive. scanf( %d%d%d,,&i,&j,&k); 11

12 Opšti oblik konverzione specifikacije %**+š širina_polja] konverzioni_znak * Odgovarajude ulazno polje se ignoriše i ne dodeljuje promenljivoj širina_polja - Predstavlja maksimalnu širinu ulaznog polja konverzioni_znak Definiše konverziju (data tabelom) Tabela konverzionih znakova Simbol konverzije c d ld ili D h o lx, X s f le, le g,g Tip argumenta char int long short int long string float double float double 12

13 Example No 3 main() int x; printf( Upotreba f. scanf:\n Ukucajte broj\n: ) ; scanf ( %d\n, &x); printf( Ukucali ste\n%d\n, x); Izlaz programa Upotreba f. scanf: Ukucajte broj 23 Ukucali ste 23 Example No 4 main() int i,j,k; scanf("%2d%3d%2d",&i,&j,&k); printf("/%d/%d/%d%\n",i,j,k); scanf("%d%d%d",&i,&j,&k); printf("/%d/%d/%d%\n",i,j,k); Za ulazne vrednosti Ispisuje se /12/3 /45/ /6//789/12/ 13

14 Osnovni tipovi podataka Promenljive i konstante su objekti u okviru programa koji se karakterišu svojim: Imenom, tipom podataka koji se može dodeliti promenljivoj, Skupom operatora koji se može primeniti nad tim vrednostima Memorijskim prostorom za smeštaj podataka Osnovni tipovi podataka su: int, float, double i char Osnovni Celobrojni Realni Znakovni Nabrojivi Prazan Tipovi podataka (int) (float) (char) (enum) (void) Slozeni ili Struktuirani Nizovi Strukture Unije 14

15 Promenljive tipa Int U ovu kategoriju podataka ubrajaju se konstante, promenljive, izrazi i funkcije. Tri notacije za predstavljanje celobrojnih vrednosti dekadna, oktalna i heksadecimalna. Pri deklarisanju promenljivih i konstanti može se vršiti i inicijalizacija promenljivih, npr. program Example No5 Opseg celobrojnih vrednosti je različit i može se menjati primenom kvalifikatora Long i Short Unsigned deklariše promenljivu za memorisanje + vrednosti long int x; short int y; unsigned int z; Example No 5 main() int x =11,y =22,z =33; printf( x = %d\n y = %d\n z = %d\n,x,y,z); Izlaz programa x = 11 y = 22 z = 33 15

16 Promenljive tipa float i double Promenljive tipa float i double memorišu vrednosti realnih brojeva i vrednosti sa decimalnim zarezom. Razlika između tipa float i double je u tačnosti predstavljanja realnih vrednosti( brojem decimalnih cifara koje se mogu memorisati). Konstante sa pokretnim zarezom se u C jeziku se mogu predstaviti u običnoj i naučnoj konotaciji. Ne postoji razlika između konstanti tipa float i double C prevodilac sve konstante sa pokretnim zarezom predstavlja kao tip double Promenljive tipa double mogu memorisati grubo dvaput više decimalnih cifara od promenljivih tipa float Example No 6 main() float pi = ; double sqrt_3 = ; printf( pi = %20f\n sqrt_3 = %20f\n\n, pi,sqrt_3); Izlaz programa: pi = sqrt_3 =

17 Promenljive tipa char Promenljive i konstante tipa char memorišu karaktere. Promenljive i konstante tipa char učestvuju u izrazima svojom kodnom vrednošdu u kome je svaki karakter kodiran svojom. 7-bitnom vrednošdu ASCII koda. Pošto su karakteri kodirani celobrojnim vrednostima (leksikografsko uređenje ), mogude je sortiranje karaktera reči i linija. Promenljive i konstante tipa char učestvuju u izrazima svojom kodnom vrednošdu koja se tretira kao celobrojna vrednost. Promenljiva car sadrži karakter a. Sukcesivnim inkrementiranjem promenljive kar dobijaju se karakteri b i c, program example No 7 Example No 7 main() char car = 'a'; printf("karakter je %c\n",car); printf("karakter je %c\n",car+1); printf("karakter je %c\n",car+2); printf("kodna vrednost je %d\n",car+3); Izlaz programa Karakter je a Karakter je b Karakter je c Kodna vrednost je

18 Example No 8 main() char c = 'A'; printf("/ %c / %d / %o / %x \n",c,c,c,c); Izvrsavanjem programa dobija se: /A/65//101/ ASCII dekadna vrednost 101- ASCII oktalna vrednost 41- ASCII heksadekadna vrednost Operacije, izrazi i operatori Operaciju predstavlja simbol koji označava određenu akciju nad određenim podatkom koji se naziva operand. Izraz se sastoji od jednog ili više operanada i simbola operacija. Operacija operira nad operandom Aritmetičke operacije * - množenje / - deljenje % - izdvaja ostatak pri deljenju celih brojeva + - sabiranje - - oduzimanje 18

19 Operacije, izrazi i operatori Operacije poređenja > - vede >= - vede ili jednako < - manje <= - manje ili jednako = = - jednako!= - različito Logičke operacije! - negacija &&, - konjukcija II - disjunkcija Operacije, izrazi i operatori Operacije dodeljivanja < promenljiva> = <izraz>, izvršava se tako što se vrednost desnog operanda, (izraz) dodeljuje levom operandu (promenljiva), koji predstavlja vrednost izraza sa operacijom dodeljivanja. Operator X = Y = Z = 1; Se izvršava tako što izraz Z = 1 dobije vrednost 1 koja je dodeljena promenljivoj Z, izračunata vrednost izraza 1 se dodeljuje promenljivoj y i postaje vrednost izraza y = 1, i na kraju se vrednost izraza dodeljuje promenljivoj x 19

20 Operacije, izrazi i operatori Pojam operatora Operatori su sastavni delovi programa koji predstavljaju potpunu instrukciju računaru. X = 2 je samo izraz, dok je X = 2; operator. Operacije uvedavanja i umanjivanja Izraz ++ x uvedava vrednost promenljive x za 1, a izraz - - x umanjuje vrednost promenljive x za 1. Prefiksni oblik ++x, promenljiva se najpre uvedava pa tek onda koristi u izrazu Postfiksni oblik x++ promenljiva se najpre koristi u izrazu pa tek onda uvedava. Grananje u programu Uslovni operator se pojavljuje u slededim oblicima: If (izraz) operator1 If (izraz) operator1 else operator2 Ako su operator1 i operator2 prosti operatori if (izraz) operator1 else operator2 20

21 Ako su operator1 i operator2 složeni operatori if (izraz) operator11 operator12 operator1k else operator21 operator22 operator2k Operator višestrukog izbora SWITCH Omogudava grananje u programu izborom jednog između više operatora switch (izraz) case konstanta1: operator1 break; case konstanta2: operator2 break; case konstantan: operator n break; default : operator0 break; 21

22 Operator višestrukog izbora SWITCH Iza službene reči switch navodi se izraz (selektor) čija je vrednost celobrojna, ili znakovna koja se automatski konvertuje u celobrojnu. Operatorom višestrukog grananja izvršava se ona grupa operatora ispred koje se nalazi konstanta koja je jednaka vrednosti selektora. Ako nije jednaka nijednoj od konstanti izvršava se grupa operatora koja se nalazi iza default alternative. Operator switch na osnovu brojnih ocena 5,4,3,2,1 ispisuje ocene odličan, vrlo dobar, dobar, dovoljan, nedovoljan u example No 8 Example No 8 switch (ocena) case 5: printf ( odličan\n ); break; case 4: printf ( vrlo dobar\n ); break; case 3: printf ( dobar\n ); break; case 2: printf ( dovoljan\n ); break; case 1: printf ( nedovoljan\n ); break; default: printf ( nekorektna ocena\n ); Break operator se koristi u switch operatoru da bi se obezbedio izlaz neposredno iza njega. Ako se iza neke grupe operatora u switch- u ispusti break, tada de se u slučaju izbora te grupe izvršavati sve preostale alternative do pojave break- a ili kraja switch.-a. 22

23 Organizacija ciklusa Niz operatora koji se može izvršavati više puta naziva se ciklus. Telo ciklusa - Niz operatora koji obrazuju ciklus Izlazni kriterijum Uslov koji određuje da li de se telo ciklusa ponovo izvršavati. U zavisnosti od položaja izlaznog kriterijuma u odnosu na telo ciklusa, ciklusi mogu biti sa: Preduslovom (while), skradeno varijanta sa (for) Postuslovom (do while) Ciklus while Operator ciklusa sa preduslovom while omogudava organizovanje ciklusa sa nepoznatim brojem ponavljanja koji zavisi od izračunavanja u telu ciklusa. Opšti oblik operatora while je: while (izraz) operator Ako je vrednost izraza tačno, izvršide se operator koji čini telo ciklusa. Operator se izvršava dok god izraz ima vrednost tačno. Svaki takav korak naziva se iteracija. 23

24 Example No 9 /* Stepen celog broja*/ main() int a,n, i=1,stepen=1; printf("ucitaj a i n:\n"); scanf("%d%d",&a,&n); while (i++<=n) stepen*=a; printf("stepen=%d\n",stepen); Operator ciklusa for Operator ciklusa for se koristi kada je unapred poznato koliko puta treba izvršiti telo ciklusa. for (inicijalizacija; provera_uslova; korekcija) operator I predstavlja skradeni zapis ciklusa while oblika inicijalizacija; while (provera_uslova) operator korekcija Ako provera_ uslova daje tačno telo ciklusa se izvrša jedanput. Iz ciklusa se izlazi kada vrednost izraza za proveru_ uslova postane netačno. 24

25 Example No 10 /* Faktorijel*/ main() long i,n,fakt; scanf("%ld",&n); for (fakt=1,i= 1; i<=n;fakt*=i, i++); printf("fakt=%ld\n",fakt); Realizacija programa 1 1*2 1*2*3 1*2*3* *n Operator ciklusa do - while Operator ciklusa sa postusloviom do - while ima oblik: inicijalizacija; do operator while (provera_uslova); Operator koji čini telo ciklusa se izvrčava bar jedanput, pošto se provera uslova vrši na kraju ciklusa. Ako je vrednost izraza tačno operator tela ciklusa se ponavlja. I ovaj postupak traje, dok izraz ne dobije vrednost netačno 25

26 Example No 11 /* Stepeni dvojke*/ main() int stepen,granica; printf("uneti granicu\n"); scanf("%d",&granica); stepen=2; do printf("%d\n",granica); stepen*=2; while (stepen<=granica); Funkcije Funkcije su osnovno sredstvo na kome su zasnovani osnovni principi i realizacija struktuiranog programiranja. Pomodu njih se: Povedava čitljivost programa. Uspešno uvodi tehnika programiranja odozgo na dole. o Problem se, u početnoj fazi algoritma rešenja, razbija na logičke celine koje se nazivaju moduli. Zatim se vrši detaljizacija svakog prethodno definisanog modula na elementarnije. o Modul na najvišem hijerarhiskom nivou se transformiše u main funkciju a ostali moduli u pojedinačne funkcije ili grupe funkcija. Omogudava strategija u projektovanju podeli pa vladaj, koja je pogodna kada tim programera stvara projekat. 26

27 Definicija funkcije Funkcije se dele na dve osnovne kategorije: Funkcije koje vradaju vrednost (rezultat) pozivajudoj funkciji (main ili neka druga) Funkcije koje ne vradaju vrednost pozivajudoj funkciji (main ili neka druga). Kod funkcija koje ne vradaju vrednost kao tip rezultata navodi se void. Sintaksa Funkcije ima slededi oblik: Tip_rezultata ime_funkcije(formalni parametri) Opis formalnih parametara Definicije i deklaracije Operator1... OperatorN Example No 12 a /* Funkcija izračunava sumu kvadrata celih brojeva od m do n*/ long suma_kvadrata(m,n) int i; long s=0; for(i=m;i<=n;i++) s+=i*i; return (s); Telo funkcije počinje deklarisanjem unutračnjih promenljivih koje su nedostupne pozivajudoj funkciji. Promenljive koje su poznate samo funkciji koja ih sadrži nazivaju se lokalne promenljive. Operator return predaje rezultat izrašunavanja (vrednost funkcije ) pozivajudoj funkciji. 27

28 Example No 12 /* main funkcija ilustruje korišdenje funkcije suma_kvadrata */ main() int m,n,k,l; long p; long suma_kvadrata(); p=suma_kvadrata(2,4); printf("%ld %ld\n",p,suma_kvadrata(-1,3)); scanf("%d%d%d%d",&m,&n,&k,&l); p=suma_kvadrata(m,n)+suma_kvadrata(k,l); printf("%ld %ld\n",p,suma_kvadrata(m+k,n+l)); /* Funkcija izracunava sumu kvadrata celih brojeva od m do n*/ long suma_kvadrata (int m,int n) int i; long s=0; for(i=m;i<=n;i++) s+=i*i; return (s); Korišdenje funkcije suma_kvadrata(); u glavnoj funkciji main() Definisana funkcija testira se pozivima iz glavne funkcije main() Operatori funkcije suma_kvadrata() se izvršavaju kada se iz glavne funkcije main() pozove funkcija. Obradanje funkciji se realizuje zapisom sa imenom funkcije iza koga sledi spisak parametara. Parametri navedeni pri obradanju funkciji nazivaju se stvarni, a (2,4) parametri navedeni u zaglavlju definicije funkcije nazivaju se formalni (m,n). Kada se u Main () funkciji pojavi operator p= suma_kvadrata(2,4); realizuju se sledede akcije: Rezerviše se memorijski prostor za promenljive definisane u funkciji suma_kvadrata(); Formalnim parametrima se dodeljuju vrednosti stvarnih parametara m = 2 i n = 4 Izvršavaju se operatori funkcije, tj. Izračunava se suma kvadrata brojeva od 2 do 4. Rezultat izračunavanja u funkciji se postavlja na mesto obradanja toj funkciji,tj. Dodeljuje promenljivoj p, i prelazi se na izvršavanje slededih operatora funkcije main(). 28

29 Podela memorije između promenljivih koje koriste funkcije main () i suma_kvadrata() main() m n k l p P = suma_kvadrata (2,4) suma_kvadrata() m n s i Pokazivačke promenljive (Pointeri) Pokazivačka promenljiva je promenljiva koja pokazuje na drugu promenljivu, odnosno sadrži adresu memorijske lokacije u kojoj se čuva ta promenljiva Deklariše se tako što se u specifikaciji zada tip promenljive na koju ukazuje pokazivačka promenljiva. Ispred imena promenljive piše se * int *pi /*pokazivač na celobrojnu promenljivu */ char *pc /*pokazivač na znakovnu promenljivu */ float *pf1, *pf2 /*pokazivač na float promenljive */ j = *pi //dodeljuje promenljivoj j celobrojnu vrednost koja se nalazi na adresi sadržanoj u promenljivoj pi. 29

30 Pretpostavimo da postoji slededa deklaracija i inicijalizacija promenljive prom: int prom= 0 ; Deklaracija int * ukaz_prom; nam omogudava da indirektno pristupimo vrednosti promenljive prom. Za promenljive prom i ukaz_prom možemo pisati iskaz: ukaz_prom = &prom; koji promenljivoj ukaz_prom dodeljuje adresu promenljive prom. Ako je promenljiva x deklarisana kao int, tada se iskazom x = *ukaz_prom; Pointeri dodeljuje vrednost promenljive na koju pointer ukaz_prom ukazuje. Pošto je promenljiva ukaz_prom u ranijem iskazu postavljena na vrednost &prom efekat prethodnog iskaza dodeljivanje promenljivoj x vrednost promenljive prom. Operatori & i * su unarni istog prioriteta i inverzni su međusobno. Pretpostavimo da imamo deklaraciju int x,y,*u Tada su iskazi u = &x y= *u; Ekvivalentni iskazu y = *&x Koji je opet ekvivalentan iskazu y = x Operatori dodeljivanja pi = &i j = *pi Imaju isti efekat kao j = i Pointeri 30

31 Pokazivači Int x=1, y=2; Int *ip ip=&x x 1 y 2 ip 100» » y= *ip x 1 y 1 ip 100» x=ip x x 100 y 2 ip 100» *ip=3 x 3 y 2 ip 100» Pointeri, opet, ali malo drugačije Pokazivač se definiše kao i ostale promenljive. Razlika je što se nazivu promenljive dodaje unarni operator simbol (*) ispred identifikatora određene promenljive. Zvezdica (*) je simbol za indirektno adresiranje pa se zato i sam operator (*) naziva i operatorom indirektnog adresiranja. Kada se operator indirekcije (*) primeni na neki pokazivač, njime se pristupa objektu na koji pokazivač pokazuje. int *p1; /* pokazivač na integer promenljivu char *p2; /* pokazivač na char promenljivu long double *p4; /* pokazivač na long double prom. 31

32 Pointeri Pokazivač je dakle promenljiva koja sadrži adresu objekta tj. neke promenljive na koji pokazuje. Kada je sadržaj pokazivača adresa nekog objekta tada je pokazivač inicijalizovan. Adresa nekog objekta u memoriji koji je predstavljen svojim identifikatorom, može da se dobije pomođu prefiksnog unarnog operator (&), odnosno adresa neke promenljive dobija se korišdenjem ovog adresnog operatora. Jedan poučan primer int broj; /* promenljiva tipa int int *pok; /* pokazivač na int tip broj = 10; /* inicijalizacija promenljive broj na 10 pok = &broj; /* inicijalizacija pokazivača tako da pokazuje na promenljivu broj *pok = 100; /* promena sadržaja promenljive broj na 100 preko pokazivača. broj = 100; 32

33 DEKLARACIJA POKAZIVAČA Pokazivač omogudava indirektan način pristupa vrednosti određenog podatka, i to pomodu adresa podatka u memoriji računara. Kako to funkcioniše na najjednostavnem primeru: int broj = 10, *pok; Da bi se uspostavila veza između promenljivih broj i pok, koristi se operator (&) koji daje adresu odgovarajude promenljive. pok = &broj Ovim je pridružena memorijska adresa promenljive broj pokazivaču pok, tj. sadržaj promenljive pok je adresa promenljive broj 33

34 Vrednost promenljive broj pridružuje se nekoj drugoj promenljivoj npr x upotrebom promenljive pok, koristedi operator (*). x = *pok; ima isto značenje kao i: x = broj; tj. u jednom i drugom slučaju vrednost promenljive x je 10. Veza između funkcija korišdenjem pokazivača Funkcija kvadrat_kub () koja je definisana iza glavne funkcije main() u primeru No14 ima četiri parametra m, n, kv i kub. Prva dva parametra su ulazni podaci koje ne želimo menjati u toku izvršetka funkcije i nazivaju se vrednosni parametri. Pre izvršavanja funkcije tim parametrima se dodeljuju vrednosti stvarnih parametara. Pri pozivu funkcije kvadrat_kub(2,4,&p&q); predaju se adrese promenljivih p i q što znači da de formalni parametri kv i kub koji su definisani u zaglavlju funkcije kvadrat_kub (m, n, kv, kub) biti opisani kao pokazivači. Pošto su p i q celobrojne promenljive promenljive kv, kub treba da budu opisane kao pokazivači na celobrojne promenljive, pa se deklarišu na slededi način int m, int n, int *kv, int *kub Ovi parametri se nazivaju adresni parametri, i koriste se za određivanje izlaznih vrednosti funkcije ili promenu vrednosti odgovarajudih stvarnih parametara. Na mestu programa na kome se funkcija izvršava prvi put promenljivim p i q se dodeljuju vrednosti stvarnih parametara 2 i 4. Pokazivačke promenljive *kv, i *kub dobijaju adrese stvarnih parametara &p i &q tako da se sve operacije koje se u funkciji realizuju nad *kv, i *kub su operacije koje se realizuju nad stvarnim parametrima p i q 34

35 Example No 14 main() int m,n,k,l,p,q,r; void kvadrat_kub(); kvadrat_kub(2,4,&p,&q); printf("p = %d q =%d\n",p,q); scanf("%d%d%d%d",&m,&n,&k,&l); kvadrat_kub(m,n,&p,&q); printf("p = %d q =%d\n",p,q); kvadrat_kub(m-k,n+l,&p,&r); printf("p = %d q =%d\n",p,r); void kvadrat_kub(int m, int n, int *kv, int *kub) int i; *kv = *kub =0; for(i=m;i<=n;i++) *kv+=i*i; *kub+=i*i*i; Podela memorije između promenljivih koje koriste funkcije main () i kvadrat_kub() m n k l main() p q kvadrat_kub(int m, int n, int *kv, int *kub); *kv kv i m n *kub kub r 35

36 Prosleđivanje argumenata funkciji upotrebom pokazivača U nekim slučajevima nije dovoljno da funkcija vrada samo jednu vrednost. Naredbom return mogude je vratiti samo jednu vrednost. U cilju rešavanja ovog problema, potrebno je razmotriti osobine koje imaju parametri funkcije. U trenutku prenosa promenljive kao parametra funkcije, u okviru funkcije se automatski kreira lokalna kopija promenljive. Ukoliko funkcija menja vrednost parametara (dodeljuje mu vrednost i sl.), promena je ''vidljiva'' samo u okviru funkcije, jer se menja samo vrednost lokalne kopije promenljive, a ne i ''originala''. Da bi promena vrednosti parametara bila vidljiva i van okvira funkcije, tj. u okviru programa koji je funkciju pozvao, potrebno je funkciji preneti ne promenljivu, ved adresu promenljive. U tom slučaju se ne kreira kopija promenljive.). Prosleđivanje argumenata funkciji upotrebom pokazivača Prenos promenljive na način na koji se kreira lokalna kopija promenljive se naziva prenos po vrednosti, a prenos promenljive na način na koji se koristi ''zajednička' promenljiva se naziva prenos po referenci. Prenos po vrednosti i prenos po referenci su ilustrovani na slededem primeru: 36

37 Prenos parametara po vrednosti void f_ja(int x) x = x + 3; void main() int param = 5; f_ja(param); Nakon poziva funkcije f_ja vrednost promenljive param je 5 (nepromenjena). Prenos parametara po referenci void f_ja(int *x) *x = *x + 3; void main() int param = 5; f_ja(&param); Nakon poziva funkcije f_ja vrednost promenljive param je 8 (promenjena) 37

38 Memorijske klase Pored pripadnosti odredjenom tipu promenjlive imaju i svoju memorijsku klasu. Memorijska klasa daje mogudnost da se odredi sa kojim funkcijama je povezana promenljiva ili koje funkcije imaju pristup promenljivoj. Pri opisu memorijske klase koriste se sledede rezervisane reči: auto static register extern Automatske promenljive Automatske promenljive se deklarišu rezervisanom reči auto ispred specifikacije tipa kao u slededem primeru: auto int a; auto int b=777; auto double d; Oblast u kojoj deluje automatska promenljiva ograničena je blokom (u granicama definisanim zagradama u kome je deklarisana). Dok god se blok koji je sadrži izvršava ona živi, kada program napusti taj blok promenljiva iščezava. Ona je dostupna i u svakom podbloku bloka u kome je deklarisana. Primer No 15 ilustruje oblast delovanja automatskih promenljivih. 38

39 Example No 15 main() /*spoljasnji blok*/ auto int x=1; /*podblok #1 */ auto int y=2; printf( %d%d\n,x,y); /*podblok #2*/ printf( %d%d\n,x,y);/*linija 12 */ printf( %d%d\n,x,y);/*linija 14*/ Statičke promenljive Kao i automatske, statičke promenljive su lokalne u funkciji odnosno bloku u kome su deklarisane. Razlika je u tome što statičke promenljive ne iščezavaju kada funkcija koja ih sadrži prekine izvršavanje. Ako program ponovo pređe na izvršavanje funkcije koja sadrži statičku promenljivu ona de imati vrednost sa kojom je prekinuta funkcija u prethodnom izvršavanju. Primer deklaracije i inicijalizacije: static int a = 1; float c = 0,0;... U slededem primeru Example No 16 funkcija uvedaj () se poziva tri puta. Inicijalna vrednost promenljive x je 0. U slededim pozivima funkcije koristi se vrednost sačuvana iz prethodnog izvršavanja. 39

40 main() void uvecaj(); uvecaj(); uvecaj(); uvecaj(); void uvecaj() static int x=0; x++; printf( %d\n,x); Ispisuje se Example No 16 Spoljašnje promenljive Promenljiva deklarisana van funkcije naziva se spoljašnja promenljiva. Ona se može deklarisati i u funkciji koja je koristi navođenjem rezervisane reči extern. Na primer: int x; /*deklaracija spoljasnje promenljive x */ char c; double x; main() extern int a; extern char c ; extern double x ;.. Navođenjem rezervisane reči extern spoljašnja promenljiva postaje dostupna funkciji definisanoj bilo gde u tom i u bilo kom file-u 40

41 Primeri deklarisanja spoljašnjih promenljivih int x = 707; /* globalna deklaracija promenljive x */ main() printf( %d/n, x); Pošto je promenljiva x definisana van funkcije main() ona je globalna I funkcija joj može pristupiti. Izvrčavanjem programa dobija se 707 A izvršenjem programa int x = 707; /* globalna deklaracija promenljive x */ main() int x = 101; /* lokalna deklaracija promenljive x */ printf( %d/n, x); dobija se 101 U toku izvršavanja funkcije važeda je vrednost lokalne promenljive Example No17 int x; /*deklaracija spoljasnje promenljive x */ main() printf("pocetna vrednost od x je%d\n",x); dodaj(); oduzmi(); dodaj(); oduzmi(); printf("krajnja vrednost od x je %d\n",x); /*uvecava spoljasnju promenjivu x*/ dodaj() x++; printf("dodavanjem 1 dobija se %d\n",x); /*umanjuje spoljasnju promenjivu x*/ oduzmi() x--; printf("oduzimanjem 1 dobija se %d\n",x); 41

42 Kreiranje projekta U okruženju C jezika programi koji se formiraju iz više file-ova nazivaju se projekti. Svaki projekat je povezan sa projektnim file-om koji treba kreirati i u kome se nalazi opis projekta, ili spisak file-ova koji obrazuju projekat. Projektni file-ovi moraju imati ekstenziju PRJ. Na primer ako treba napraviti program iz file-ova PRVI. C main() printf( Ovo je iz file-a1.\n ); pisi() /*U File-u DRUGI.C */ i DRUGI. C pisi() printf( Ovo je iz file-a2.\n ); Treba kreirati projektni file npr. PRVIPROJ. PRJ: PRVI DRUGI U podmeniju Project u opciji Project Name navede se ime projekta PRVIPROJ. Opcijom RUN zadaje se kompilacija i izvršavanje projekta. U podmeniju Compile opcija Make kreira se EXE verzija projekta. Nizovi Niz je ograničen uređen skup promenljivih istog tipa, koje se nazivaju komponente. Tip komponenti se naziva bazni tip. Vrednostima pojedinih komponenti može se pristupiti pomodu indeksa, koji ukazuje koju komponentu treba obrađivati.pri definisanju nizova treba voditi računa o dve stvari: Treba ukazati na broj komponenti i način referisanja na komponente. Treba ukazati na tip vrednosti koje se u njemu čuvaju. Opis niza Niz se opisuje kao i ostali podaci, samo što se dodaju kvadratne zagrade iza imena niza. Unutar zagrada se navodi broj koji pokazuje broj elemenata u nizu. Int broj [1000] ; Ovom deklaracijom se uvodi niz broj koji se sastoji iz 1000 celobrojnih promenljivih sa imenima broj [0], broj [1]... broj [999]. Indeksiranje elemenata niza je od 0. Svaka promenljiva pošto je celobrojna zauzima dva bajta. 42

43 Example No 18 //Izracunati srednju vrednost niza od n elemenata(n<50) main() int n,i; float x[50]; printf( Uneti broj elemenata niza ); scanf( %d,&n); for(suma=0,i=0; i<n; i++) printf( %3d.broj x=,i); scanf( %f,&x*i]); suma+= x[i]; printf( Srednja vrednost je %f\n, (float)suma/n); Example No 19 //Izracunati maksimalnu vrednost u nizu od n elemenata(n<50) main() int n,i; float x[50],xmax; printf( uneti broj elemenata niza ); scanf( %d,&n); for(i=0;i<n;i++) printf( %3d.broj x=,i); scanf( %f,&x*i+) /*izracunava maksimalnu vrednost niza*/ xmax=x[0]; for (i=1;i<n;i++) if (x[i]>xmax) xmax=x[i]; printf( \nmaksimalna vrednost je %f\n,xmax); 43

44 Example No 20 //Izracunati indeks najveceg elemenata niza x od n elemenata (n<50) main() int n,i,imax; float x[50],xmax; printf( Uneti broj elemenata niza ); scanf( %d,&n); for(i=0;i<n;i++) printf( %3d.broj x=,i); scanf( %f,&x*i]); /*Izracunava indeks maksimalne vrednosti u nizu*/ xmax=x[0]; /*pretpostavljajuci da je x[0] najveca vrednost*/ imax=0; /*sacuvamo njen indeks*/ for(i=1;i<n;i++) if(x[i]>xmax) /*kada se naidje na element veci od xmax*/ /*zamenjuje se vrednost xmax I imax*/ xmax=x[i]; /*sa x[i] I indeksom i*/ imax=i; printf( \nindeks maksimalne vrednosti je %d\n,imax); Example No20a DRUGO RESENJE ISKLJUCUJE UPOTREBU PROMENLJIVE XMAX: imax=0; for(i=1;i<n;i++) if(x[i]>x[imax]) imax=i; 44

45 Inicijalizacija Nizova Nizovima je u C jeziku moguce dodeljivati pocetne vrednosti. Ako se inicijalizacija ne zadaje eksplicitno niz se inicijalizuje nulom, Medjutim ako je potrebno da se niz inicijalizuje vrednostima razlicitim od nule potrebno je da se pri deklaraciji niza izmedju viticastih zagrada navedu zeljene vrednosti razdvijene zarezom. Int dani [12]= 31,28,31,30,31,30,31,31,30,31,30,31 main() int i; extern int dani[ ]; /*neobavezna deklaracija*/ for (i=0; i<12; i++) printf( Mesec%d ima%dana.\n,i+1,dani[i]); Izvrsavanjem programa se ispisuje: Mesec 1 ima 31 dana Nizovi i pokazivači Ime niza ekvivalntno je adresi njegovog nultog elementa x =&x[0], jer se u oba dela jednakosti definišu adrese nultog elementa niza. Na primer ako je data deklaracija int x[4],*pti; Dodela pti=x i ako je niz smešten počev od adrese (&x[0]), da bi se odredile lokacije i elementi niza na koje pokazuju pti, pti+1 pti+2pti+3. Dodavanje jedinice pokazivaču automatski povedava adresu na koju on pokazuje za 2 jer se radi pokazivaču na int tip. 45

46 Nizovi i pokazivači Oba dela jednakosti X= &x[0] definišu adresu nultog elementa niza. Obe oznake su konstante pokazivačkog tipa i ne mogu se menjati. Prema tome njih možemo dodeljivati pokazivačkim promenljivim. x+2 ==&x[2] /*jer su im iste adrese*/ *(x+2) == x[2] /*jer su im iste vrednosti*/ Odavde se vidi da se pokazivači mogu koristiti za adresiranje elemenata niza, kao i za dobijanje njihove vrednosti. Nizovi i pokazivači Kada se navede X+2 to kompajler tretira kao adresu koja se dobija dodavanjem na adresu X ne 2, ved 2 puta broj baytova koje zauzimaju komponente niza X. U suštini se radi o različitim oznakama za jedno te isto, jer kompajler pretvara oznake niza u pokazivače, pa je brzine radi, preporučljivo koristiti pokazivače. 46

47 Ilustracija pokazivača i adresa na koje ukazuju» pti pti+1 pti+2 pti+3 Adresa: X[0] X[1] X[2] X[3] Pokazivaci pti, pti+1, pti+2 i pti+3 redom pokazuju na adrese: 56006, 56008, i i elemente niza: x[0], x[1], x[2] i x[3], X[0] POKAZIVAČI NA NIZOVE v[0] v[1] 1012 v[2 ] v[3] 1020 \ p1 p2 p3 int v[ ] = 1, 2, 3,4; /*niz */ int* p1 = v; /*pokazivač na niz odnosno uvek na prvi ele ment niza tj. p1=&v[0] */ int* p2 = &v[1]; /*pokazivač na prvi element niza */ int* p3 = &v[4]; /*pokazivač na poslednji element niza */ Primer: Štampanje zadatog niza Sa indeksom for (i = 0; i<4; i++) printf("%d ", a[i]); Sa pokazivačem for (i = 0; i<4; i++) printf("%d ", p1++); 47

48 Funkcije, nizovi, pokazivači, parametri, prenošenje argumenata... Prenošenja nizova kao argumenata može se analizirati na problemu određivanja broja studenata koji su imali natprosečne rezultate na proveri znanja iz osnova programskog jezika C. Algoritam ovog problema se može razložiti na sledede module Učitavanje vrednosti elemenata niza Izračunavanje prosečnog rezultata Prebrojavanje natprosečnih rezultata Ispis izlaznog izveštaja Example No. main() int n,i,broj,ocena[50]; /*niz od 50 elemenata*/ float prosek(); printf('\n Unesi broj takmicara:'); scanf(%d',&n); /*ucitavanje elemenata niza*/ printf('\n Unesi rezultate:\n'); for (i:=0;i<n;i++) printf('ocena[%d]+',i); scanf('%d,&ocena[i]) To be continue 48

49 Contnue. /*prebrojavanje natprosecnih rezultata*/ broj=0 for(i=0;i<n;i++) if(ocena[i]>prosek(ocena,n)) broj++; printf(''prosecan rezultat je:%f.\n'',prosek(ocena,n)); printf (''natprosecne rezultate je imalo:%d takmicara.\n'',broj); float prosek(int x [],int n) int i,suma; suma=0; for(i=0;i<n;suma+=x[i],i++); return ((float)suma/n); Funkcije, nizovi, pokazivači, parametri, prenošenje argumenata... Pri definiciji funkcije prosek() koja se poziva iz main() deklaracija int x[] kreira, ne niz, ved pokazivač na niz: float prosek(int *x, int n) int i,suma; suma=0; for(i=0;i<n;suma+=*(x+i),i++); return ((float)suma/n); 49

50 Funkcije, nizovi, pokazivači, parametri, prenošenje argumenata... Poziv funkcije prosek (ocena,n) sadrži ime ocena koje predstavlja adresu nultog elementa od najviše 50 elemenata. Time se pri pozivu funkcije predaje pokazivačka konstanta (adresa nultog elementa niza) ocena = &ocena[0] To znači da je formalni parametar funkcije pokazivačkog tipa pa se u funkciji prosek() može izvršiti deklaracija na slededi način prosek(int *x,int n) Funkcije, nizovi, pokazivači, parametri, prenošenje argumenata... Operatori int x []; int*x; Su ekvivalentni jer oba deklarišu promenljivu x kao pokazivač na niz celih brojeva... Operatori koji u funkciji prosek () koriste pokazivač *X rade sa nizom ocena koji se nalazi u telu funkcije main() Poziv funkcije inicijalizuje pokazivač X tako da pokazuje na ocena [0] Kada index i u funkciji prosek () uzme vrednost 4 tada je izraz x [4] ekvivalentan sa *(x+4). 50

51 Funkcije, nizovi, pokazivači, parametri, prenošenje argumenata... Znači pošto (x+0) pokazuje na ocena[0] to x+4 pokazuje na ocena[4]. Prenos jednodimenzionalnih nizova se ostvaruje navođenjem imena niza u pozivu funkcije bez ikakvog indeksa. Na ovaj način u funkciju se prenosi informacija (adresa) o lokaciji niza u pozivajudoj funkciji. Funkcije, nizovi, pokazivači, parametri, prenošenje argumenata... Čak i deklaracija x [100] ima isto značenje kao i x [] jer C kompajler generiše kod koji funkciji predaje pokazivač tako da je beznačajna specificirana dužina niza. X== &x[0] X +0== &x[0] X+2 ==&x[2] /*jer su im iste adrese*/ *(x+2) == x[2] /*jer su im iste vrednosti*/ *(x+i) == x[i] Prema tome jednodimenzionalni nizovi se prenose isključivo po adresi 51

52 Sortiranje nizova Program kojim se korišdenjem odgovarajude funkcije učitani niz sortira u monotono neopadajudi poredak Example No 21 main() int float a[50]; void citaj(); void pisi(); void sort1(); printf( \nuneti broj elemenata niza: ); scanf( %d,&n); printf( \nunesi elemente niza:\n ); citaj(a,n); sort1 (a,n); printf( Niz posle sortiranja je:\n ); pisi(a,n); void citaj(float x[],int n) int i; for(i=0;i<n;i++) printf( x*%d+=,i); scanf( %f,&x*i+); void pisi(float x[],int n) int i; for(i=0;i<n;i++) printf( x*%d+=%f\n,i,x[i]); Example No 21 52

53 Example No 21 void razmeni(float*a,float*b) float pom; pom=*a;*a=*b;*b=pom; void sort(float a[],int n) int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(a[i]>a[j]) razmeni(&a[i],&a[j]); ISTI ALGORITAM SE MOGAO PRIMENITI U FUNKCIJI KOJA KORISTI POKAZIVACE: void sort1(float*a,int n) int i,j; for(i=0;n-1;i++) for(j=i+1;j<n;j++) if(*(a+i)>*(a+j)) razmeni(a+i,a+j); Višedimenzionalni nizovi Dvodimenzionalni nizovi se se u memoriji registruju po vrstama zauzimajudi susedne memorijske lokacije.ako se dvodimezionalni niz deklariše na slededi način: int a[3][2] ; njegovi elementi de biti raspoređeni na slededi način: a [0][0] a [0][1] a [1][0] a [1][1] a [2][0] a [2][1] Imajudi ovo u vidu, ako definišemo pokazivač na int tip int * poki, dodelom poki = a; definiše pokazivačka promenljiva na element u nultoj vrsti i koloni jer važi jednakost a =& a [0][0] 53

54 Višedimenzionalni nizovi Prema navedenoj deklaraciji važi: poki =& a [0][0] Poki+1 =& a [0][1] Poki+2 =& a [1][0] Poki+3 =& a [1][1] Poki+4 =& a [2][0] Poki+5 =& a [2][1] U ovom primeru a je ime dvodimenzionalnog niza a, a [0], a [1], a [2] su imena jednodimenzionalnih nizova koje predstavljaju vrste matrice. Ime niza je pokazivač na taj niz jer pokazuje na njegov prvi element, tako da važi: a [0] =& a [0][0] a [1] =& a [1][0] a [2] =& a [2][0] Ova osobina nam koristi da funkciju namenjenu za obradu jednodimenzionalnog niza koristimo pri obradi vrsta dvodimenzionalnog niza. main() static float a[3][4]= 1.0,2.0,3.0,4.0, 11.5,22.4,33.3,44.2, 10.1,20.2,30.3,40.4 Example No 22 ; int i; float sredina(); for (i=0;i 3;i++) printf( srednja vrednost vrste %d je %f\n,i,sredina(a*i+,4)); /*a[i] je jednodimenzionalni niz od četirielementa*/ float sredina(float x[],int n) int i; float suma=0; for (i=0;i<n;i++) suma+=x[i]; return suma/n; 54

55 Example No 23 main() int i,n; int x[10][10] void citaj(); void pisi(); void sort1(); printf( \nuneti broj vrsta matrice: ); scanf( %d,&n); printf( \nunesi elemente matrice po vrstama :\n); citaj(x,n); sort1(x[i],n); printf( matrica posle sortiranja je:\n ); pisi(x,n); Example No 23 /*funkcija koja ucitava elemente matrice*/ void citaj(int x[][10],int n) int i,j; for(i=0;i<n;i++) for(j=0;j<n;j++) printf( x*%d,%d+=,i,j); scanf( %d,&x*i+*j+); /*funkcija koja ispisuje elemente matrice*/ void pisi(int x[][10],int n) int i,j; for(i=0;i<n;i++) for(j=0;j<n;j++) printf( %3d,x*i+*j+); printf( \n ); 55

56 Example No 23 void razmeni(int*a,int*b) float pom; pom=*a;*a=*b;*b=pom; void sort_po_vrstama(int a[][10],int n) int i,j,k; for(i=0;i<n;i++) for(j=0;j<n-1;j++) for(k=j+1;k<n;k++) if(a[i][j]>a[i][k]) razmeni(&a[i][j],&a[j][k]); Znakovni nizovi u jeziku c Jezik C nema ugrađen znakovni niz podataka. Umesto toga, jezik C sledove znakova koji se završavaju nultim znakom (NULL) tretira kao znakovne nizove. Znakovni nizovi mogu se napraviti deklarisanjem niza znakova i dodeljivanjem vrednosti njegovim elementima. Završni znak mora biti nulti znak, koji se prikazuje kao znakovna konstanta sa vrednošdu \0. Bez ovog znaka imate običan niz znakova. 56

57 (Malo podsedanja) main() char c = A ; printf( / %c / %d / %o / %x \n,c,c,c,c); Izvrsavanjem programa dobija se: /A/65//101/ ASCII dekadna vrednost 101- ASCII oktalna vrednost 41- ASCII heksadekadna vrednost Da sumiramo Znači, izraz A je znakovna konstanta a, A je prikriven, skradeni, prikaz konstantnog znakovnog niza sastavljenog iz dve znakovne konstante A i \0. 57

58 Inicijalizacija znakovnih nizova Rekli smo da je nizovima u C jeziku mogude dodeljivati početne vrednosti. Ako se inicijalizacija ne zadaje eksplicitno niz se inicijalizuje nulom, međutim, ako je potrebno da se niz inicijalizuje vrednostima različitim od nule potrebno je da se pri deklaraciji niza izmedju vitičastih zagrada navedu željene vrednosti razdvijene zarezom. Inicijalizacija znakovnih nizova Nizovi se mogu inicijalizovati korišdenjem string konstanti. Na primer, operator static char tekst * +=, F, e, s, t, i, n, a, t, a, m, s, e, m, e, n, t, e, m, s, a, e, p, e, d, e, c, i, p, e, r, e,, s, e, r, o, t, i, n, a, m, s, e, m, p, e, r, \0 -; inicijalizuje statički niz tekst datom string konstantom ili skradeni oblik inicijalizacije izgleda ovako: static char tekst [ ]= Festinatam sementem saepe decipere, serotinam semper ; 58

59 Nizovi karaktera i pokazivači Pošto je ime niza ekvivalentno adresi njegovog nultog elementa ( predstavlja pokazivač na nulti element) tako je i string konstanta pokazivač na nulti element niza u kome je registrovan string. Operator static char s[ ] = IBM PC ; inicijlizije statički niz s datom string konstantom On predstavlja skradeni oblik inicijalizacije static char s[ ] =, I, B, M, P, C, \0 -; Ako bi se izostavio završni znak to više ne bi bio string ved samo niz znakova. Kao i kod drugih nizova ime s predstavlja pokazivač na nulti element. s =& s[0], *s = I, *(s +1) = s[1] = B, Nizovi karaktera i pokazivači Za kreiranje stringa može se koristiti i pokazivač. Na primer deklaracijom: char *pok = Festinatam sementem saepe decipere, serotinam semper ; pokazivač pok je inicijalizovan adresom nultog znaka stringa Ekvivalentna inicijalizacija se može realizovati slededim operatorima: char *pok; pok = Festinatam sementem saepe decipere, serotinam semper ; Za razne operacije nad ovim stringom dovoljno je da znamo adresu njegovog nultog znaka. 59

60 Example N 0... koji ispisuje string u direktnom i inverznom poretku. main() static char s[ ]= Festinatam sementem saepe decipere, serotinam semper ; char *pok; pok = s; while (*pok) /*ili while (*pok!= \0 ) */ putchar (*pok++); while (--pok >=s) putchar (*pok); putchar ( \n ); Inicijalizacija stringova Opisom stringa pomodu niza u statičkoj memoriji se kreira niz. Svaki element niza se inicijalizuje odgovarajudim znakom a ime niza postaje sinonim adrese nultog elementa. Ime niza je konstanta pokazivačkog tipa koja se ne može menjati. Opisom stringa pomodu pokazivača takođe se u statičkoj memoriji kreira niz ali i rezerviše memorijski prostor za pokazivačku promenljivu koja pokazuje na početak stringa. Njena vrednost se može menjati na primer sa ++ pok da bi se definisao pokazivač na slededi znak stringa. 60

61 Pokazivači na stringove Primer funkcije kojom se na osnovu parametara koji je POKAZIVAČ NA STRING ispituje da li je dati string palindrom Funkcija palindrom int palindrom (char * strpok) char *strpok1 = strpok; while (*strpok1) ++strpok; --strpok1; /* povratak unazad za jedan znak */ while (strpok<strpok1) if(*strpok++!=*strpok1--) /* poredjenje simetricnih znakova*/ return 0; return 1; 61

62 Testiranje funkcije palindrom main() if ( palindrom(anavolimilovana )) printf( string 1 je palindrom\n ); if (palindrom( ASTERIX )) printf( string 2 je palindrom\n ); Example No 25 char veliko (char c) if (c<= z && c>= a ) return ( A +c- a ); else return (c) 62

63 Nizovi pokazivača na stringova Koristedi niz stringova Stringu se može pristupiti preko indexa. Deklaracijom: static char *jezici [4] =, PASCAL, MODULA, C++, ADA -; Definisan je niz pokazivača jezici na stringove Nulti pokazivač jezici [0] pokazuje na nulti string, prvi pokazivač jezici [1] pokazuje na prvi string, tako da važi : *jezici *0+= P, *jezici *1+= M, *jezici *2+= C, *jezici *3+= A jezici [0] jezici [1] jezici [2] jezici [3] PASCAL MODULA C++ ADA NIZOVI POKAZIVAČA #include <stdio.h> main() static char *dani[] = "Nedelja", "Ponedeljak", "Utorak", "Sreda", "Cetvrtak", "Petak", "Subota"; int i; for( i = 0; i < 6; ++i ); printf( "%s\n", dani[i]); Rezultat Nedelja Ponedeljak Subota Adr. Vred. Naziv Dan[0] Dan[1] Dan[6] 1036 N 1037 e 1038 d 1039 l 1040 j 1041 a 1042 k 1043 \ P 1045 o \ U t 1082 a 1083 \

64 Nizovi pokazivača Ime niza je dani. Veličina niza nije specificirana. Prevodilac, onaj bistrooki, de izračunati veličinu niza. Svaki element niza je pokazivač na znak. Zbog prisustva konstantnih znakovnih nizova u inicijalizatorskoj listi nizovi se smeštaju negde u memoriji, a njihove adrese u NIZ DANI. U elementu 0 nalazi se adresa konstantnog znakovnog niza Nedelja a, u elementu 1 adresa niza Ponedeljak... Strukture Struktura predstavlja skup podataka kojim se opisuju svojstva objekta ili, strukture predstavljaju složene objekte koji se sastoje od komponenti raznih tipova Komponente koje obrazuju strukturu nazivaju se elementi strukture Opis strukture: struct oznaka_str Tip ime _elementa1 Tip ime _elementa2 ; 64

65 Deklaracija strukturnih promenljivih Ako definišemo model strukture označene sa ličnost ispred funkcije main () #define MAXIME 31 #define MAXADRESA 41 struct licnost char ime [MAXIME]; char adresa [MAXADRESA]; unsigned starost; ; Tada u funkciji možemo opisati strukturne promenljive korišdenjem oznake strukture struct licnost osoba 1, osoba2; Strukture koje sadrže pokazivače Dva niza znakova u ovoj strukturi zauzimaju prostor fiksne veličine. Pošto su članovi strukture ime i adresa nizovi oni zauzimaju podjednako veliki memorijski prostor bez obzira šta je u njih upisano. Efikasniji način organizovanja podataka je korišdenje POKAZIVAČA kao članova strukture i njihovo usmeravanje na efikasnije i ekonomičnije smeštanje znakovnih nizova. 65

66 Strukture koje sadrže pokazivače Nova deklaracija struct licnost char *ime; char *adresa ; unsigned starost; ; šablona strukture Dva niza znakova zamenjena su pokazivačima na znak pri čemu svaki zauzima onoliko mesta koliko je potrebno za pokazivač Deklaracija strukturnih promenljivih Pri opisu strukturnog modela dozvoljeno je da se definišu i promenljive, tako da je: struct licnost osoba 1, osoba2; skradeni zapis struct licnost char ime [MAXIME]; char adresa [MAADRESA]; unsigned starost; osoba1, osoba2; 66

67 Inicijalizacija i dodela vrednosti strukturnim promenljivim Elementima strukturne promenljive mogud je direktan pristup ( bez nabrajanja elemenata koji mu prethode. Pristup elementima ime, adresa, starost promenljive osoba1 može se ostvariti pomodu složenih imena osoba1. ime osoba1.adresa osoba1.starost Inicijalizacija i dodela vrednosti strukturnim promenljivim Elementima strukture mogu se učitavati vrednosti korišdenjem funkcija gets() i scanf() gets(osoba1.ime); gets(osoba1.adresa); scanf( %d,&osoba1.starost); 67

68 Inicijalizacija i dodela vrednosti strukturnim promenljivim Za učitavanje stringova jednostavnije je koristiti funkciju gets() od scanf(). Funkcija gets() prihvata znake sa tastature dok ne naiđe na znak za novu lininju ( \n ) koji se proizvodi pritiskom na taster ENTER. Funkcija predaje učitane znake pozivajudoj funkciji ignorišudi znak za novu liniju i dodajudi završni ili nulti znak ( \0 ) Funkcija scanf() omogudava učitavanje mešovitih podataka u standardnoj formi. o počinje znakom koji nije praznina, o ako je specifikacija %s učitava se do prvog praznog znaka, ali ignorišudi ga Strukturne promenljive i pokazivači Ako je definisana pokazivačka promenljive osoba: struct ličnost*osoba; Elementima strukture na koju ova promenljiva pokazuje može se pristupiti korišdenjem operatora tačka (*osoba).ime (*osoba).adresa (*osoba).starost Radi jednostavnijeg pristupa elementima strukturne promenljive na koju pokazuje pokazivačka promenljiva uveden je operator strelica u desno (->) osoba->ime osoba->adresa osoba->starost 68

69 Example No. Napisati program kojim se učitavaju podaci za dve osobe i ispisuju podaci o starijoj #include<stdio.h> #define MAXIME 31 #define MAXADRESA 41 struct licnost char ime[maxime]; char adresa[maxadresa]; unsigned starost; ; Example No. void citaj(struct licnost * osoba) printf( Unesite ime osobe: ); gets(osoba->ime); printf( Unesite adresu osobe: ); gets(osoba->sdresa); printf( Unesite starost osobe: ); scanf( %u,&osoba->starost); while(getchar()!= \n ); /*ocistiti ulazni string iz scanf jer je nova linija separator */ 69

70 Example No. main() struct licnost osoba 1,osoba2,*stariji; printf( Unesi poidatke za prvu osobu:\n ); citaj(&osoba 1); printf( Unesi podatkke za drugu osobu:\n ); citaj(&osoba2); if (osoba1.starost>osoba2.starost) stariji=&osoba1; else stariji=&osoba2; printf( Stariji je: ); printf( %s,%s,star:%ug.\n,stariji->adresa,stariji->starost); Nizovi struktura Niz struktura se opisuje kao i svaki drugi niz deklaracijom struct licnost osoba[maxos] Ovom deklaracijom opisuje se struktura od MAXOS elemenata. Svaki element predstavlja strukturu tipa ličnost. Ako deklarišemo pokazivač na strukturu licnost struct licnost osoba[maxos], *pok_lic; Otada su inicijalizacije pokazivačke promenljive pok_lic=osoba; pok_lic=&osoba [0]; ekvivalentne Pošto pok_lic pokazuje na osoba [0], to pok_lic +1 pokazuje na osoba [1]. osoba [0].starost == (*pok_lic) starost== pok_lic-> starost 70

71 Example No. Napisati program kojim se čitaju broj fudbalskih ekipa, za svaku ekipu: naziv, broj osvojenih bodova i gol razlika, a zatim ispisuje tabela sa gol razlikom. # define MAXIME 30 #define MAXEKIPA 20 struct tabela char ime [maxekipa]; unsigned bodovi; int razlika; ; main() int n; struct tabela ekipa[maxekipa]; void citaj(); void pisi(); void sort(); printf(''\n Unesi broj ekipa:''); scanf(''%d'',&n); printf(''\n Unesi ime,bodove I gol-razliku svake ekipe:\n''); citaj(ekipa,n); sort(ekipa,n); printf(''niz posle sortiranja je :\n''); pisi(ekipa,n); 71

72 void citaj(struct tabela x[],int n) int i; for(i=0;<n;i++) printf(''%d.'',i+1); scanf(''%s %u %d',&x[i].ime,&x[i].bodovi,&x[i].razlika); void pisi(struct tabela x[],int n) int i; for(i=0; i<n;i++) printf(''%d. %s %u %d\n'',i+1,x[i].bodovi,x[i].razlika); 72

73 void razmeni(struct tabela *a, struct tabela *b) struct tabela pom; pom=*a;*a=b;*b=pom; void sort (struct tabela a[],int n) int I,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if((a[i].bodovi<a[j].bodovi) ((a[i].bodovi==a[j].bodovi& &(a[i].razlika<a[j].razlika))) razmeni(&a[i],&a[j]); 73

74 DINAMIČKO DODELJIVANJE MEMORIJE U programskom jeziku C mogude je izvršiti dinamičku dodelu memorijskog prostora, tako da se u toku izvršenja programa koristi samo potreban memorijski prostor. Statička dodela je neracionalna. Dinamičkim zauzimanjem memorijskog prostora, koje se obavlja tokom izvršenja programa, postiže se racionalno korišdenje memorije. U toku programa mogude je dodeljivanje i otkazivanje "rezervacije" memorijskog prostora. DINAMIČKO DODELJIVANJE MEMORIJE Za razliku od statičke dodele memorije gde se podacima pristupa preko imena promenljivih, dinamički pristup podacima vrši se uglavnom preko pokazivača. Sama dodela memorije obavlja se uz pomod bibliotečnih funkcija koje se nalaze u <stdlib.h> kao što su: malloc(n) - funkcija dodeljuje memoriju od n bajtova; calloc(x,n) - dodeljuje memorijski prostor za x komponenti niza od n bajtova. free(p) - oslobađa prostor. 74

75 malloc char *malloc( unssigned n) gde n predstavlja broj bajtova koje izdvaja funkcija. Vreednost funkcije je znakovni pokazivač na prvi bajt izdvojene oblasti. Slededi operatori funkcijom malloc izdvajaju 200 bajta int *pint pint = (int*) malloc(200) sizeof sizeof (izraz) - Vrada memorijski prostor neophodan za čuvanje izraza sizeof (T) - Vrada memorijski prostor neophodan za čuvanje vrednosti tipa T 75

76 Statička dodela memorije Prilikom definicije niza od n članova u pokazivaču niz počinje sa adresom u memoriji prvog elementa niza. int *niz; niz=calloc(n,sizeof(int)); Na ovaj način dodeljivanja memorijskog prostora unapred je definisan broj članova niza n, tj veličina memorije na početku izvršenja program. Ovako se rezerviše n puta 2 (4) bajta jer je sizeof(int) 2 ili 4 u zavisnosti od računara. Dinamička dodela memorije Kada je potrebno rezervisati prostor za pokazivač p sa još nedefinisanim sadrzajem treba napisati sledede: p=(int*)malloc(sizeof(int); 76

77 Dinamička dodela memorije Rezervisanom prostoru se može pristupiti samo preko pokazivača p naredbom: *p=5; na adresi 1253 dolazi vrednost 5. Dinamička dodela memorije Funkcija free oslobađa prostor u memoriji koji je prethodno rezervisan preko funkce malloc, a čija se adresa nalazila u pokazivaču p. free(p) Vrednost koja se nalazi na toj adresi na koju je upudivao pokazivač p ostaje, ali joj se više ne može pristupiti 77

78 Dinamička dodela memorije Vrednost koja se nalazi na toj adresi na koju je upudivao pokazivač p ostaje, ali joj se više ne može pristupiti Example N #include <stdio.h> /* Neophodno je ukljuciti stdlib.h */ #include <stdlib.h> main() int n; /* Deklaracija int a[n]; nije dozvoljena, jer kompajler ne moze u vreme prevodjenja da odredi potrebnu kolicinu memorije. Umesto ovoga, vrši se dinamička alokacijai memorije tj. rezervacija memorije u fazi izvrsavanja rograma kada bude poznata vrednost broja n. Zbog toga je potrebno upamtiti samo adresu pocetka alociranog bloka sto se postize koriscenjem sledeceg pokazivaca: */ 78

79 Example N int* a; int i, max; printf("unesi dimenziju niza : "); scanf("%d", &n); /* U ovom treunutku se zna koliko je memorije potrebno i poziva se funkcija malloc za dinamicku alokaciju. */ Example N a = (int*) malloc(n*sizeof(int)); /* U slucaju da nema dovoljno memorije malloc vraca NULL */ if (a == NULL) printf("greska : Nema dovoljno memorije!\n"); return 1; 79

80 /* Kao obican niz */ for (i = 0; i<n; i++) printf("a[%d]=", i); scanf("%d", &a[i]); /* Nalazi maksimum */ max = a[0]; for (i = 1; i<n; i++) if (a[i] > max) max = a[i]; printf("najveci element je %d\n", max); /*Alocirana memorija se oslobadja */ free(a); return 0; DINAMIČKA ALOKACIJA MEMORIJE CODE System space Program space STATIC DATA STACK Compile-time allocate memory HEAP Run-time allocate memory 80

81 DINAMIČKA ALOKACIJA MEMORIJE Rezervacija i oslobadjanje heap memory manager Potreban je memorijski blok veličine n malloc(n) ili calloc(x,n) Nije više potreban memorijski blok free(p) user code Ovde je pokazivač bloka malloc(n) - funkcija dodeljuje memoriju od n bajtova; calloc(x,n) - dodeljuje memorijski prostor za x komponenti niza od n bajtova. free(p) - oslobaďa prostor. PROGRAM UNOSI NIZ PROIZVOLJNE DIMENZIJE I NALAZI NAJVECI ELEMENT */#include <stdio.h> /* Neophodno je ukljuciti stdlib.h */ #include <stdlib.h> int main() int n; int* a; int i, max; printf("unesi dimenziju niza : "); scanf("%d", &n); a = (int*) malloc(n*sizeof(int)); /* U slucaju da nema dovoljno memorije malloc vraca NULL */ if (a == NULL) printf("greska : Nema dovoljno memorije!\n"); return 1; /* Nadalje a koristimo kao obican niz */ for (i = 0; i<n; i++) printf("a[%d]=", i); scanf("%d", &a[i]); /* Nalazimo maksimum */ max = a[0]; for (i = 1; i<n; i++) if (a[i] > max) max = a[i]; printf("najveci element je %d\n", max); /* Duzni smo da rucno alociranu memoriju rucno i oslobodimo */ free(a); return 0; 81

82 POKAZIVAČI NA MATRICE Matrica je po definiciji dvodimenzionalni niz. Matrica predstavlja niz jednodimenzionalnih nizova. U memoriji su smeštene u jednodimenzionalni niz tako što se prvo smešta prvi red matrice a zatim redom i ostali stoga pokazivač ukazuju na niz pokazivača koji ukazuju na niz(red) podataka. DINAMIČKA ALOKACIJA MATRICE int i, j, n; /*i, j indeksi matrice; n veličina*/ double **a; Alociranje memorije za n elemenata double pokazivača a = (double **) calloc(n, sizeof(double *)); Alociranje memorije za redove matrice for (i = 0; i < n; ++i) (n elementa-double) a[i] = (double *) calloc(n, sizeof(double)); a[n-1] n a[1] n-1 a a[0] n-1 82

Programiranje III razred

Programiranje III razred Tehnička škola 9. maj Bačka Palanka Programiranje III razred Naredbe ciklusa for petlja Naredbe ciklusa Veoma često se ukazuje potreba za ponavljanjem nekih naredbi više puta tj. za ponavljanjem nekog

More information

24/03/2018. Deklaracija promenljivih. Inicijalizacija promenljivih. Deklaracija i inicijalizacija promenljivih

24/03/2018. Deklaracija promenljivih. Inicijalizacija promenljivih. Deklaracija i inicijalizacija promenljivih Deklaracija promenljivih Inicijalizacija promenljivih Deklaracija promenljive obuhvata: dodelu simboličkog imena promenljivoj i određivanje tipa promenljive (tip određuje koja će vrsta memorijskog registra

More information

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa Uvod u programiranje - vežbe Kontrola toka izvršavanja programa Naredbe za kontrolu toka if, if-else, switch uslovni operator (?:) for, while, do-while break, continue, return if if (uslov) naredba; if

More information

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1 NIZOVI Niz deklarišemo navođenjemtipa elemenata za kojim sledi par srednjih zagrada[] i naziv niza. Ako je niz višedimenzionalni između zagrada[] se navode zarezi, čiji je broj za jedan manji od dimenzija

More information

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi DELEGATI Bezbedni pokazivači na funkcije Jer garantuju vrednost deklarisanog tipa. Prevodilac prijavljuje grešku ako pokušate da povežete

More information

NIZOVI.

NIZOVI. NIZOVI LINKOVI ZA KONZOLNI C# OSNOVNO http://www.mycity.rs/net/programiranje-u-c-za-osnovce-i-srednjoskolce.html http://milan.milanovic.org/skola/csharp-00.htm Niz deklarišemo navođenjem tipa elemenata

More information

Prirodno-matematički fakultet u Nišu Departman za fiziku. dr Dejan S. Aleksić Programiranje u fizici

Prirodno-matematički fakultet u Nišu Departman za fiziku. dr Dejan S. Aleksić Programiranje u fizici Programiranje u fizici Prirodno-matematički fakultet u Nišu Departman za fiziku dr Dejan S. Aleksić Programiranje u fizici 7-8 Definicija, inicijalizacija promenljivih 2/21 u C-u Program napisan u programskog

More information

Programiranje 1 Programski jezik C 2. čas. Mirko Spasić

Programiranje 1 Programski jezik C 2. čas. Mirko Spasić Programiranje 1 Programski jezik C 2. čas Mirko Spasić Operatori U C-u postoji veliki broj operatora. Mogu biti unarni (imaju jedan argument) i binarni (dva argumenta). Unarni operatori mogu biti prefiksni

More information

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010 Programiranje Programski jezik C prof.dr.sc. Ivo Ipšić 2009/2010 Sadržaj Ulazno-izlazne funkcije Datoteke Formatirane datoteke Funkcije za rad s datotekama Primjeri Datoteke komunikacija između programa

More information

Osnovne strukture podataka

Osnovne strukture podataka Osnovne strukture podataka Osnovni pojmovi Promenljive i konstante su osnovni oblici podataka sa kojima se operiše u programu Deklaracije listaju spisak promenljivih koje ce se koristiti, određuju kog

More information

Veliki računski zadaci mogu se razbiti u manje delove i time se omogućava ljudima da iskoriste ono što su neki drugi već uradili, umesto da počinju

Veliki računski zadaci mogu se razbiti u manje delove i time se omogućava ljudima da iskoriste ono što su neki drugi već uradili, umesto da počinju Staša Vujičić Čas 9 Veliki računski zadaci mogu se razbiti u manje delove i time se omogućava ljudima da iskoriste ono što su neki drugi već uradili, umesto da počinju sve od početka. Odgovarajuće funkcije

More information

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end. NAREDBA CIKLUSA SA PREDUSLOVOM WHILE 1.Odrediti vrednosti s i p nakon izvrsenja sledecih naredbi za dato a=43, a=34, a=105 program p1; var a,s,p:integer; write('unesite a:');readln(a); p:=a; s:=0; while

More information

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije }

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije } 1. FUNKCIJE I STRUKTRUE PROGRAMA Složeni problemi lakše se rašavaju ako se podele na manje celine koje mogu nezavisno da se rešavaju. Rešenje celokupnog složenog problema dobija se kombinovanjem rešenja

More information

2. Linijska algoritamska struktura

2. Linijska algoritamska struktura Univerzitet u Nišu Građevinsko-arhitektonski fakultet Informatika 2 2. Linijska algoritamska struktura Milica Ćirić Blokovi za prikaz algoritma Algoritam se vizuelno može prikazati pomoću blok dijagrama,

More information

Programske paradigme Funkcionalna paradigma

Programske paradigme Funkcionalna paradigma Programske paradigme Funkcionalna paradigma 1. čas: Uvod u funkcionalno programiranje. Programski jezik Haskel. Upoznavanje sa razvojnim okruženjem. Tipovi podataka. Funkcionalno programiranje Stil u programiranju

More information

Univerzitet u Nišu Građevinsko-arhitektonski fakultet. 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje.

Univerzitet u Nišu Građevinsko-arhitektonski fakultet. 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje. Univerzitet u Nišu Građevinsko-arhitektonski fakultet Informatika 2 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje Milica Ćirić Ciklična algoritamska struktura Ciklična struktura (petlja)

More information

... ; ako je a n parno. ; ako je a n neparno

... ; ako je a n parno. ; ako je a n neparno Zadaci vezani za ciklus sa preduslovom (WHILE) Zad. Napisati program za izračunavanje n_tog stepena broja a. Zad2. Napisati program za izračunavanje sume S kvadrata parnih i kubova neparnih prirodnih brojeva

More information

for i:=2 to n do if glasovi[i]>max then begin max:=glasovi[i]; k:=i {*promenljiva k ce cuvati indeks takmicara sa najvise glasova *} end;

for i:=2 to n do if glasovi[i]>max then begin max:=glasovi[i]; k:=i {*promenljiva k ce cuvati indeks takmicara sa najvise glasova *} end; {*Na Evroviziji je ucestvovalo n izvodjaca. Koji od njih je osvojio najvise glasova publike?*} program Evrovizija; glasovi:array[1..50] of integer; max,k:integer; writeln('unosi se broj izvodjaca:'); writeln('unose

More information

VHDLPrimeri Poglavlje5.doc

VHDLPrimeri Poglavlje5.doc 5. VHDL opis kola koja obavljaju osnovne aritmetičke funkcije Sabirači Jednobitni potpuni sabirač definisan je tablicom istinitosti iz Tabele 5.1. Tabela 5.1. cin a b sum cout 0 0 0 0 0 0 0 1 1 0 0 1 0

More information

f2() f6() main() f3() f7() f4()

f2() f6() main() f3() f7() f4() VI Potprogrami i funkcije Uobičajeno je da se pri pisanju programa koji treba da reše složene probleme, problemi razlažu na niz jednostavnijih(elementarnih) delova Za njihovo rešavanje se pišu nezavisni

More information

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Nasledjivanje klasa Modifikator new class A { public virtual void F() { Console.WriteLine("I am A"); } } class B : A { public override void F()

More information

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0. Kontrolne naredbe Primjeri: Opšti oblik razgranate strukture (if sa ) if (uslov) Naredba 1 ili blok naredbi1 Naredba 2 ili blok naredbi2 Učitati broj x i štampati vrijednost double x, z; Scanner in=new

More information

Uputstvo za korišćenje logrotate funkcije

Uputstvo za korišćenje logrotate funkcije Copyright AMRES Sadržaj Uvod 3 Podešavanja logrotate konfiguracionog fajla 4 Strana 2 od 5 Uvod Ukoliko je aktivirano logovanje za RADIUS proces, može se desiti da posle određenog vremena server bude preopterećen

More information

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt Funkcionalno programiranje Interoperabilnost jezika Scala i Java Prevođenje u Java bajt kod Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući

More information

Lekcija 02 Uslovni iskazi i petlje, Funkcije. Miljan Milošević

Lekcija 02 Uslovni iskazi i petlje, Funkcije. Miljan Milošević Lekcija 02 Uslovni iskazi i petlje, Funkcije Miljan Milošević USLOVNI ISKAZI I PETLJE, FUNKCIJE 01 02 03 04 Uvod Uslovni iskazi i Ciklusi Operatori skoka Funkcije u C-u grananja Uslovni iskaz if Uslovni

More information

Rekurzivne metode. Posmatrajmo rekurzivan metod kojim u objektu listbox1 klase ListBox upisujemo sve prirodne brojeve od 1 do datog n.

Rekurzivne metode. Posmatrajmo rekurzivan metod kojim u objektu listbox1 klase ListBox upisujemo sve prirodne brojeve od 1 do datog n. Rekurzivne metode Rekurzivan metod je onaj metod koji u nekoj svojoj instrukciji sadrži poziv samog sebe. Svakako prilikom kreiranja rekurzivnog metoda moramo voditi računa da ne dodje do beskonačne rekurzije

More information

Programiranje III razred

Programiranje III razred Tehnička škola 9. maj Bačka Palanka Programiranje III razred Konverzija tipova Konverzija tipova Prilikom komunikacije aplikacije sa korisnikom, korisnik najčešće unosi ulazne podatke koristeći tastaturu.

More information

PREDMET. Osnove Java Programiranja. Čas JAVADOC

PREDMET. Osnove Java Programiranja. Čas JAVADOC PREDMET Osnove Java Programiranja JAVADOC Copyright 2010 UNIVERZITET METROPOLITAN, Beograd. Sva prava zadržana. Bez prethodne pismene dozvole od strane Univerziteta METROPOLITAN zabranjena je reprodukcija,

More information

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list. Ime i prezime: Asistent: Predava : Programiranje (C) 1. kolokvij 14. 4. 2003. 1. 2. 3. 4. 5. 6. 7. Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj

More information

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets CSS CSS CSS: Cascading Style Sheets - Opisuje izgled (appearance) i raspored (layout) stranice - Sastoji se od CSS pravila, koji defini[u skup stilova selector { property: value; 1 Font face: font-family

More information

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET Katedra za elektroniku Računarska elektronika Grupa br. 11 Projekat br. 8 Studenti: Stefan Vukašinović 466/2013 Jelena Urošević 99/2013 Tekst projekta :

More information

For. 1) program ispis; {ispisuje brojeve od 1 do 5 jedan ispod drugog} uses wincrt; var s,i:integer; begin for i:=1 to 5do writeln(i); end.

For. 1) program ispis; {ispisuje brojeve od 1 do 5 jedan ispod drugog} uses wincrt; var s,i:integer; begin for i:=1 to 5do writeln(i); end. For 1) program ispis; {ispisuje brojeve od 1 do 5 jedan ispod drugog} for i:=1 to 5do writeln(i); 2) program ispis; {ispisuje brojeve od 5 do 1 jedan ispod drugog} for i:=5 downto 1 do writeln(i); 3) program

More information

Vežbe - XII nedelja PHP Doc

Vežbe - XII nedelja PHP Doc Vežbe - XII nedelja PHP Doc Dražen Drašković, asistent Elektrotehnički fakultet Univerziteta u Beogradu Verzija alata JavaDoc za programski jezik PHP Standard za komentarisanje PHP koda Omogućava generisanje

More information

Fortran 90. Numeričke Metode DECEMBAR ĐURĐEVAC NATAŠA

Fortran 90. Numeričke Metode DECEMBAR ĐURĐEVAC NATAŠA Fortran 90 Numeričke Metode DECEMBAR 2007. ĐURĐEVAC NATAŠA Zašto Fortran? jer je konstruisan da bi se koristio za rešavanje matematičkih problema. jer je jednostavan jezik sa dobrim performansama (odlična

More information

12. Uskladištene procedure (Stored Procedures)

12. Uskladištene procedure (Stored Procedures) 12. Uskladištene procedure (Stored Procedures) Uskladištena procedura je skup SQL iskaza koji su kompajlirani i sačuvani u trenutku njenog kreiranja. Veoma su moćne i preko njih mogu da se izvršavaju sve

More information

Algoritmi i strukture podataka 2. Čas, Uvod u C++

Algoritmi i strukture podataka 2. Čas, Uvod u C++ Algoritmi i strukture podataka 2. Čas, Uvod u C++ Aleksandar Veljković 2017/2018 1 Uvod Jezik C++ je jezik koji pripada objektno orijentisanoj paradigmi, ipak, u okviru ovog kursa naglasak neće biti na

More information

NISKE (stringovi) u C-u: podsećanje. 1. Primer programa koji uvodi niske karaktera terminisane nulom

NISKE (stringovi) u C-u: podsećanje. 1. Primer programa koji uvodi niske karaktera terminisane nulom NISKE (stringovi) u C-u: podsećanje 1. Primer programa koji uvodi niske karaktera terminisane nulom #include main() /* Poslednji bajt niske karaktera s se postavlja na '\0' tj. 0 char s[] = 'a',

More information

Uvod u relacione baze podataka

Uvod u relacione baze podataka Uvod u relacione baze podataka Ana Spasić 5. čas 1 Podupiti, operatori exists i in 1. Izdvojiti imena i prezimena studenata koji su položili predmet čiji je identifikator 2001. Rešenje korišćenjem spajanja

More information

PITANJA ZA II KOLOKVIJUM NASLJEĐIVANJE, VIRTUELNE FUNKCIJE I POLIMORFIZAM

PITANJA ZA II KOLOKVIJUM NASLJEĐIVANJE, VIRTUELNE FUNKCIJE I POLIMORFIZAM PITANJA ZA II KOLOKVIJUM NASLJEĐIVANJE, VIRTUELNE FUNKCIJE I 1. Definicija svake klase sadrzi kljucnu rec iza koje se navodi ime klase: class public extends 2. Kada je funkcija clanica definisana izvan

More information

GUI - događaji (Events) i izuzeci. Bojan Tomić

GUI - događaji (Events) i izuzeci. Bojan Tomić GUI - događaji (Events) i izuzeci Bojan Tomić Događaji GUI reaguje na događaje (events) Događaj je neka akcija koju korisnik programa ili neko drugi izvrši korišćenjem perifernih uređaja (uglavnom miša

More information

Funkcije, prenos parametara i dinamička alokacija memorije

Funkcije, prenos parametara i dinamička alokacija memorije Tema 04 Funkcije, prenos parametara i dinamička alokacija memorije dr Vladislav Miškovic vmiskovic@singidunum.ac.rs Fakultet za informatiku i računarstvo - Tehnički fakultet OBJEKTNO ORIJENTISANO PROGRAMIRANJE

More information

8. NIZOVI. // deklaracija niza od 10 elemenata: data[0], data[1],..data[9] int data[10] ; S elementima niza se operira kao s prostim varijablama

8. NIZOVI. // deklaracija niza od 10 elemenata: data[0], data[1],..data[9] int data[10] ; S elementima niza se operira kao s prostim varijablama 8. NIZOVI Niz je indeksirani skup podataka - elemenata niza. Niz se deklarira imenom iza kojeg se u uglatim zagradama zapisuje broj elemenata niza, a ispred imena se zapisuje tip elemenata. // deklaracija

More information

I PISMENI ZADATAK III6 I GRUPA IME I PREZIME

I PISMENI ZADATAK III6 I GRUPA IME I PREZIME I PISMENI ZADATAK III6 I GRUPA IME I PREZIME 1.1.Pronaci najveći i najmanji element unete matrice dimenzija n x m i mesto na kome se nalaze. Korististi 2.1. Na osnovu unete matrice A (nxn) celih brojeva

More information

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv Mašinska vizija Dr Nenad Jovičić 2017. tnt.etf.rs/~mv Linearne 2D geometrijske transformacije 2D geometrijske transformacije Pretpostavka: Objekti u 2D prostoru se sastoje iz tačaka i linija. Svaka tačka

More information

Programiranje 1. Školska 2006/2007 godina. Matematički fakultet, Beograd

Programiranje 1. Školska 2006/2007 godina. Matematički fakultet, Beograd Programiranje 1 Beleške sa vežbi Školska 2006/2007 godina Matematički fakultet, Beograd Jelena Tomašević December 12, 2006 2 Sadržaj 1 Programski jezik C 5 1.1 Nizovi osnovni pojmovi................................

More information

OBJEKTNO ORIJENTISANO PROGRAMIRANJE

OBJEKTNO ORIJENTISANO PROGRAMIRANJE OBJEKTNO ORIJENTISANO PROGRAMIRANJE PREDAVANJE 12: NASLEĐIVANJE Miloš Kovačević Đorđe Nedeljković 1 /17 OSNOVNI KONCEPTI - Statički i dinamički tipovi podataka - Prepisivanje metoda superklase - Polimorfizam

More information

Uvod u programiranje i softverski paketi. Milan Gocić

Uvod u programiranje i softverski paketi. Milan Gocić Univerzitet u Nišu Građevinsko-arhitektonski fakultet V čas Uvod u programiranje i softverski paketi - Algoritam: pojam, dizajn i analiza - Milan Gocić septembar, 2013. Algoritam Postupak transformacije

More information

VEŽBA 5 do while petlja, switch case

VEŽBA 5 do while petlja, switch case VEŽBA do while petlja, switch case Petlja sa ulaznim uslovom do while U slučaju do while petlje obavezno izvršavanje bar jedne iteracije se postiže tako što je upravljački izraz petlje na samom dnu petlje.

More information

Internet programiranje JavaScript - školska 2017/2018

Internet programiranje JavaScript - školska 2017/2018 Internet programiranje JavaScript - školska 2017/2018 Dražen Drašković, Elektrotehnički fakultet u Beogradu Sanja Delčev, Elektrotehnički fakultet u Beogradu Zašto JavaScript Nedostatak HTML strana je

More information

Nizovi. Programiranje 1

Nizovi. Programiranje 1 Nizovi Programiranje 1 VB Nizovi Zamislite da imate 10,000 šešira i da morate svakome od njih dati jedinstvenu oznaku. Kako biste to napravili? Bilo bi razumno svakom šeširu dati njegov broj. Sada možete

More information

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA SPECIFIKACIJA BAZE PODATAKA ZA PROJEKAT NAZIV_PROJEKTA Veb knjižara - Specifikacija baze podataka 1 10.04.2017. Verzija V 1.0 Datum: 20. mart 2017. Istorija

More information

PITANJA ZA II KOLOKVIJUM KLASE I OBJEKTI

PITANJA ZA II KOLOKVIJUM KLASE I OBJEKTI PITANJA ZA II KOLOKVIJUM KLASE I OBJEKTI 1. Enkapsulacija je podataka. skrivanje apstrakcija nasledivanje 2. Unutar deklaracije klase navode se: definicije funkcija clanica prototipovi (deklaracije) funkcija

More information

Dežurni nastavnik: Kolokvijum traje 1.5 sat, prvih sat vremena nije dozvoljeno napuštanje kolokvijuma. Upotreba literature nije dozvoljena.

Dežurni nastavnik: Kolokvijum traje 1.5 sat, prvih sat vremena nije dozvoljeno napuštanje kolokvijuma. Upotreba literature nije dozvoljena. Dežurni nastavnik: Elektrotehnički fakultet u Beogradu Katedra za računarsku tehniku i informatiku Predmet: Testiranje Softvera (SI3TS) Nastavnik: doc. dr Dragan Bojić Asistent: dipl. ing. Dražen Drašković

More information

[] znači opciono; znači ili. Strana 3 od 5

[] znači opciono; znači ili. Strana 3 od 5 Database Programming with SQL kurs 2017 database design and programming with sql students slajdovi 2-1 Columns Characters and Rows Concatenation (pridruživanje) stanje povezanosti kao kod lanca; unija

More information

VB komande. Programiranje 1

VB komande. Programiranje 1 VB komande Programiranje 1 Zadatak 1: Sastaviti program koji se sastoji iz jedne ListBox kontrole, jedne Textbox kontrole i dva komandna dugmeta. Klikom na prvo komandno dugme umeće se u ListBox sadržaj

More information

1/42 SQL DDL. CREATE ALTER DROP Schema Table Tablespace Index View Domain Constraint... DECLARE TABLE (DB2)

1/42 SQL DDL. CREATE ALTER DROP Schema Table Tablespace Index View Domain Constraint... DECLARE TABLE (DB2) 1/42 SQL DDL CREATE ALTER DROP Schema Table Tablespace Index View Domain Constraint... DECLARE TABLE (DB2) 2/42 SQL DDL: CREATE SCHEMA CREATE SCHEMA ime-sheme [ AUTHORIZATION ime-vlasnika-sheme] [ CREATE

More information

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Spojnice using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO;

More information

EL E E L M E EN E T N I PRO R GR G A R M A SKO K G G JEZ E I Z KA A C# C PROF DR SAŠA BOŠNJAK

EL E E L M E EN E T N I PRO R GR G A R M A SKO K G G JEZ E I Z KA A C# C PROF DR SAŠA BOŠNJAK ELEMENTI PROGRAMSKOG JEZIKA C# PROF DR SAŠA BOŠNJAK 1.Linija menija i torba sa alatima (Menu Bar and Toolbar) Menu File Edit View Website Build Debug Format Tools Test Analyze Windows Help Opis Sadrži

More information

VRIJEDNOSTI ATRIBUTA

VRIJEDNOSTI ATRIBUTA VRIJEDNOSTI ATRIBUTA Svaki atribut (bilo da je primarni ključ, vanjski ključ ili običan atribut) može i ne mora imati ograničenja na svojim vrijednostima. Neka od ograničenja nad atributima: Null / Not

More information

x y = z Zadaci - procedure

x y = z Zadaci - procedure Zadaci - procedure Zad1. Data je kvadratna meta u koordinatnom sistemu sa koordinatama A(0,0), B(1,0), C(1,1), D(0,1). Sastaviti proceduru Gadjanje koja će odrediti broj poena na sledeći način: ako je

More information

Programiranje 2. Odsek za Softversko inženjerstvo. Elektrotehnički fakultet Beograd

Programiranje 2. Odsek za Softversko inženjerstvo. Elektrotehnički fakultet Beograd Programiranje 2 Odsek za Softversko inženjerstvo Elektrotehnički fakultet Beograd UVOD Literatura: Laslo Kraus, Programski jezik C sa rešenim zadacima, Akademska misao, 9. izdanje, Beograd, 2014. Laslo

More information

Naredbe za kontrolu toka

Naredbe za kontrolu toka Naredbe za kontrolu toka Naredbe za kontrolu toka Nakon odslušanog bit ćete u stanju: objasniti semantiku naredbi za kontrolu postupaka navesti sintaksu naredbi if, if-else i case u programskom jeziku

More information

Oracle Proprietary Joins Za upite nad više od jedne tabele korišćenjem Oracle proprietary sintakse koristiti join uslov u WHERE izrazu:

Oracle Proprietary Joins Za upite nad više od jedne tabele korišćenjem Oracle proprietary sintakse koristiti join uslov u WHERE izrazu: Database Programming with SQL kurs 2017 database design and programming with sql students slajdovi 7-1 Oracle Equijoin and Cartesian Product Prethodna sekcija se bavila upitima preko više od jedne tabele

More information

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133 Binarne hrpe Potpuno binarno stablo binarno stablo u kojem svaki čvor koji nije list ima točno 2 nasljednika. Binarna hrpa potpuno binarno stablo u kojem svaki čvor koji nije list ima veću ključnu vrijednost

More information

VHDLPrimeri Poglavlje3.doc. end process seq; Slika 3.1: Anatomija osnovne definicije test bench-a

VHDLPrimeri Poglavlje3.doc. end process seq; Slika 3.1: Anatomija osnovne definicije test bench-a 3. Verifikacija projekta - Test bench entity TestBench is end entity TestBench; architecture TB_Arhitektura of TestBench is component UUT (Arhitektura_UUT) port( end component UUT; prazan entitet -- deklarisanje

More information

PRIJEMNI ISPIT IZ INFORMATIKE

PRIJEMNI ISPIT IZ INFORMATIKE PRIRODNO-MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Petak,04.09.2015 PRIJEMNI ISPIT IZ INFORMATIKE PITANJA I ZADACI IZ INFORMATIKE 1. Kombinacija tastera Ctrl+C koristi se u Windows aplikacijama

More information

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta String string ili znakovni niz (string) nije niz znakova u Javi su stringovi klase String paketa java.lang!!! Usporedba: char gf = G ; Niz znakova String char [] gf = { G, e, o, d, e, t, s, k, i ; String

More information

Ovde će se raditi na funkcijama konverzija: konverzija tipa datuma u znak tip i obrnuto, konverzija broja u karakter tip i obrnuto

Ovde će se raditi na funkcijama konverzija: konverzija tipa datuma u znak tip i obrnuto, konverzija broja u karakter tip i obrnuto Database Programming with SQL kurs 2017 database design and programming with sql students slajdovi 5-1 Conversion Functions U db formatiranje i promene izgleda se izvode pomoću funkcija konverzija Ove

More information

Jezik Baze Podataka SQL. Jennifer Widom

Jezik Baze Podataka SQL. Jennifer Widom Jezik Baze Podataka SQL SQL o Jezik koji se koristi u radu sa relacionim bazama podataka o Nije programski jezik i manje je kompleksan. o Koristi se isključivo u radu za bazama podataka. o SQL nije case

More information

Modbus TCP i dva PLC S7 1200

Modbus TCP i dva PLC S7 1200 Industrijski sistemi i protokoli Modbus TCP i dva PLC S7 1200 1 Modbus TCP i dva PLC S7 1200 Laboratorijski deo - obavezno: Detaljno proučiti i testirati već napravljeni projekat za PLC-ove, koji se nalazi

More information

Lekcija 07 C++ funkcije, stringovi, imenski prostor, memorija i fajlovi. Miljan Milošević

Lekcija 07 C++ funkcije, stringovi, imenski prostor, memorija i fajlovi. Miljan Milošević Lekcija 07 C++ funkcije, stringovi, imenski prostor, memorija i fajlovi Miljan Milošević C++ FUNKCIJE, STRINGOVI, IMENSKI PROSTOR, UPRAVLJANJE MEMORIJOM I FAJLOVI 01 02 03 04 Uvod Reference Funkcije u

More information

Ugradjena promenljiva ans cuva poslednju vrednost koja nije dodeljena ni jednoj promenljivoj >> ans+3

Ugradjena promenljiva ans cuva poslednju vrednost koja nije dodeljena ni jednoj promenljivoj >> ans+3 Ugradjena promenljiva Pi >> pi 3.1416 Ugradjena promenljiva NaN (Not A Number) >> NaN NaN Beskonacno >> Inf Inf Ugradjena funkcija exp() za eksponencijalnu funkciju (npr. e na 3 stepen) >> exp(3) 20.0855

More information

Računarske osnove Interneta (SI3ROI, IR4ROI)

Računarske osnove Interneta (SI3ROI, IR4ROI) Računarske osnove terneta (SI3ROI, IR4ROI) Vežbe MPLS Predavač: 08.11.2011. Dražen Drašković, drazen.draskovic@etf.rs Autori: Dražen Drašković Naučili ste na predavanjima MPLS (Multi-Protocol Label Switching)

More information

Lekcija 01 Uvodna razmatranja, Uvod u C. Miljan Milošević

Lekcija 01 Uvodna razmatranja, Uvod u C. Miljan Milošević Lekcija 01 Uvodna razmatranja, Uvod u C Miljan Milošević UVODNA RAZMATRANJA, UVOD U C 01 02 03 04 Uvod Uvodna razmatranja Faze generisanja programa Osnovna anatomija C programa Program sa više fajlova

More information

PROGRAMIRANJE. Amir Hajdar

PROGRAMIRANJE. Amir Hajdar PROGRAMIRANJE Amir Hajdar Teme 2 Klase i objekti u Javi Primjer kroz klasu Krug Atributi i metode Inicijalizacija objekata (konstruktori) Polymorphism Statičke varijable i metode This Klase i objekti u

More information

Programiranje kroz aplikacije. Kontrola toka programa Nizovi

Programiranje kroz aplikacije. Kontrola toka programa Nizovi Programiranje kroz aplikacije Kontrola toka programa Nizovi Kontrola toka u VBA If naredba Select Case naredba GoTo naredba For petlja While petlja Do While petlja Do Until petlja If naredba Opšti oblik

More information

Visual Basic 6.0. Osnove VB. Uvod u računarstvo 1

Visual Basic 6.0. Osnove VB. Uvod u računarstvo 1 Visual Basic 6.0 Osnove VB Uvod u računarstvo 1 Uvod u računarstvo 2 Zadatak 3 Sastavite program za izračunavanje zbira dva broja koristeći ugrađene InputBox () i MsgBox () Visual Basic funkcije. Zadatak

More information

C++ minitutorial. Osnovni elementi i koncepti programskog jezika C++ uz primere

C++ minitutorial. Osnovni elementi i koncepti programskog jezika C++ uz primere C++ minitutorial Osnovni elementi i koncepti programskog jezika C++ uz primere Sadržaj I. Ugrađeni tipovi podataka II. Doseg (scope) III. Životni vek objekta IV. Konverzija tipa (casting) V. Struktura

More information

Prva recenica. Druga recenica.

Prva recenica. Druga recenica. Algoritmi i programiranje Predavanje 4 METODE LOKALNE, GLOBALNE VARIJABLE I KONSTANTE METODA je imenovani izdvojeni slijed naredbi koji rješava određeni zadatak i po potrebi se poziva jednom ili više puta

More information

Numeričke metode i praktikum

Numeričke metode i praktikum Numeričke metode i praktikum Aleksandar Maksimović IRB / 23/03/2006 / Str. 1 vektori Vektor u 3D prostoru. C: int v1[3]; v1[0]=a;v1[1]=b;v1[2]=c; Fortran: INTEGER V1(3) V1(1)=a V1(2)=b V1(3)=c Skalarni

More information

Uputstvo za podešavanje mail klijenta

Uputstvo za podešavanje mail klijenta Uputstvo za podešavanje mail klijenta 1. Podešavanje Thunderbird mail klijenta 1.1 Dodavanje mail naloga Da biste podesili Vaš mail klijent (u ovom slučaju Thunderbird) da prima i šalje mail-ove potrebno

More information

modifier returnvaluetype methodname(list of parameters) { // Method body; }

modifier returnvaluetype methodname(list of parameters) { // Method body; } Početna grupa, 28.11.2015. Metodi 1. Metodi opšti oblik metoda: modifier returnvaluetype methodname(list of parameters) // Method body; 2. Ime metoda: početno slovo je malo, a zatim slijede slova, cifre

More information

Objektno orijentisano programiranje

Objektno orijentisano programiranje Matematički fakultet, Univerzizet u Beogradu Katedra za računarstvo i informatiku Objektno orijentisano programiranje vežbe Biljana Stojanović Nemanja Mićović Nikola Milev 1 Stringovi String literali i

More information

Osnove programskog jezika C#

Osnove programskog jezika C# Deklaracija i inicijalizacija promenljive u C# Osnove programskog jezika C# Deklaracija: int x; // samo deklaracija Inicijalizacija: x = 10; Deklaracija sa inicijalizacijom: int x = 10; Inicijalizcija

More information

Mikrokontroleri. Poglavlje IV. Skup instrukcija mikrokontrolera familije MCS-51

Mikrokontroleri. Poglavlje IV. Skup instrukcija mikrokontrolera familije MCS-51 Mikrokontroleri Poglavlje IV Skup instrukcija mikrokontrolera familije MCS-51 Uvod Instrukciju računara čine kod operacije (op-code) iza koga mogu da slede jedan ili dva operanda Op-cod identifikuje tip

More information

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi.

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi. 1 PANEL komponenta kontejnerska, slična GropBox. Roditeljska komponenta za komp. postavljene na nju. Zajedno se pomeraju. Caption svojstvo za naziv; Alighment pomera svojstvo Caption levo i desno; Align

More information

Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0

Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0 POM - Pomoć korisnicima Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0 IZUM, 2016 COBISS, COMARC, COBIB, COLIB, IZUM su zaštićeni znaci u posedu

More information

JavaScript JS Cookies

JavaScript JS Cookies Predmet: Aplikativni softver Predavač: dr Violeta Tomašević, vanr.prof. JavaScript JS Cookies Literatura Boško Nikolić, Internet programiranje: HTML, CSS, JavaScript, Panevropski univerzitet Apeiron za

More information

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a Webmail sistem ima podršku za SSL (HTTPS). Korištenjem ovog protokola sva komunikacija između Webmail sistema i vašeg Web čitača je kriptovana. Prilikom pristupa

More information

KLASIFIKACIJA JELENA JOVANOVIĆ. Web:

KLASIFIKACIJA JELENA JOVANOVIĆ.   Web: KLASIFIKACIJA JELENA JOVANOVIĆ Email: jeljov@gmail.com Web: http://jelenajovanovic.net PREGLED PREDAVANJA Šta je klasifikacija? Binarna i više-klasna klasifikacija Algoritmi klasifikacije Mere uspešnosti

More information

Ispit iz Programiranja 1

Ispit iz Programiranja 1 ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU BEOGRAD, 27.06.2018. Ispit iz Programiranja 1 Ispit traje 120 minuta Napomene: a) Pažljivo proučite Uputstvo pre popunjavanja Obrasca za odgovore. b) Vrednost

More information

Izrada VI laboratorijske vježbe

Izrada VI laboratorijske vježbe Izrada VI laboratorijske vježbe 1. Programirati proceduru koja se aktivira sa Standard palete alatki klikom na button Fajlovi. Prilikom startovanja procedure prikazuje se forma koja sadrži jedan list box

More information

JavaScript i HTML DOM

JavaScript i HTML DOM 4. vježbe iz WEB programiranja četvrtak, 22. ožujka 2012. JavaScript 1. dio JavaScript i Što je DOM? Kako JS koristi DOM? Pristup elementima dokumenta Promjena i učitavanje vrijednosti tagova Primjer 1.

More information

PHP? PHP (recursive acronym "PHP: Hypertext Preprocessor") Open Source general-purpose scripting language Web development

PHP? PHP (recursive acronym PHP: Hypertext Preprocessor) Open Source general-purpose scripting language Web development Intro to PHP PHP? PHP (recursive acronym "PHP: Hypertext Preprocessor") Open Source general-purpose scripting language Web development Ugrađen u HTML. HTML script sa kodom koji nešto radi Izvršavanje na

More information

Verifikacija softvera

Verifikacija softvera Simboličko izvršavanje (drugi deo) www.matf.bg.ac.rs/~milena Matematički fakultet, Univerzitet u Beogradu Pregled Modelovanje memorije 1 Modelovanje memorije 2 3 4 Pregled Modelovanje memorije 1 Modelovanje

More information

/*#include <iostream> // Prvi zadatak sa integralnomg ispita

/*#include <iostream> // Prvi zadatak sa integralnomg ispita /*#include // Prvi zadatak sa integralnomg ispita 27.01.2015 #include using std::setw; using std::cout; const int red(5), kolona(4); void unos(int[]); void ispis(int[][kolona]); float

More information

public static void main(string []args) { System.out.println("Hello World"); /* prints Hello World */

public static void main(string []args) { System.out.println(Hello World); /* prints Hello World */ Java Uvod Hello world primer Java program predstavlja skup objekata koji prozivaju jedni drugima metode i tako komuniciraju. Izvorni kod se uvek čuva u datotekama sa ekstenzijom.java. Ispod je predstavljen

More information

Aktuelna verzija Matlaba je 7, koja ima dosta poboljšanja u odnosu na prethodne.

Aktuelna verzija Matlaba je 7, koja ima dosta poboljšanja u odnosu na prethodne. 1. MATLAB UVOD Matlab predstavlja vrlo razvijen skup alata za računanje (matrice, kompleksni brojevi, simbolička matematika), vizualiziranje (2D i 3D), modeliranje, simulaciju i programiranje. Karakterizira

More information

HTML, CSS i JavaScript

HTML, CSS i JavaScript Tehnologije za Web HTML, CSS i JavaScript HTML, CSS i JavaScript su jezici koji se koriste pri pravljenju interaktivnih web sajtova. Ovi jezici dopunjuju jedan drugog, i zbog toga se često koriste zajedno.

More information

Push(3,&S) 3 1 S Uvijek trebamo paziti da ne zovemo Pop nad praznim stogom.

Push(3,&S) 3 1 S Uvijek trebamo paziti da ne zovemo Pop nad praznim stogom. tog (tack) tog je posebna vrsta liste: od svih operacija dozvoljeno je ubacivanje, brisanje i gledanje sadržaja elementa samo na jednom kraju liste koji zovemo vrh stoga. tog zovemo i lifo last in first

More information