UNIVERZITET EDUKONS NOVI SAD SREMSKA KAMENICA PREZENTACIJA. Dr Dušan T. Malbaški 2014.
|
|
- Μαία Κυπραίος
- 6 χρόνια πριν
- Προβολές:
Transcript
1 UNIVERZITET EDUKONS NOVI SAD SREMSKA KAMENICA PREZENTACIJA Dr Dušan T. Malbaški 2014.
2 Dr Dušan T. Malbaški 1 UVOD 2 Programski jezik C Dennis Ritchie (Bell Laboratories) viši programski jezik koji se po brzini i iskorišćenju memorijskog prostora može približiti asemblerskom jeziku nastao kao zamena za asemblerski jezik u svrhu izrade sistemskih programa funkcija cilja: mali i brzi programi 3 1
3 Osnovne osobine jezika C 1. operatorski jezik (preko 40 operatora, 15 nivoa prioriteta, oba smera grupisanja) 2. slabo tipiziran jezik, tj. dozvoljava mešovite izraze na poseban način realizuje logički tip 4 2
4 2 ELEMENTI PROGRAMSKOG JEZIKA C Sadržaj alfabet programskog jezika C format izvornog koda komentarisanje izvornog koda identifikatori globalna struktura programa primer 2 Izučiti procedurni programski jezik znači: 1. proučiti tipove podataka kojima raspolaže 2. proučiti kakvim naredbama raspolaže 3. proučiti kako je realizovan ulaz-izlaz 4. proučiti kako su realizovani potprogrami 3 1
5 Alfabet programskog jezika C Mala i velika slova engleske abecede (znak _ tretira se kao slovo). C pravi razliku između malih i velikih slova, dakle a A! Cifre Specijalni znaci + - *!!= += <<= itd. 4 Format izvornog koda slobodan format (elementi izvornog koda se slobodno raspoređuju po ekranu) while(x--) {y+=x; z*=y;} while(x--) { y+=x; z*=y; } isto! while(x--) { y+=x; z*=y; } 5 Terminatori naredbe se razdvajaju tzv. belim znakom (razmaknica, blanko, novi red) za razliku od paskala, znak ; nije znak za razdvajanje naredbi nego deo nekih naredbi. Zove se terminator. x = 1; y = z+5; while(a<3) b--; naredbe 6 2
6 Rečnik mora da postoji zbog slobodnog formata sadrži rezervisane reči (koje programer ne sme da upotrebi po volji) primeri: double while do int return 7 Komentarisanje izvornog koda duži komentar /* t e k s t */ kraći komentar // tekst x++; // uvecaj x za 1 y+=x; // nadodaj x na y /* Program za racunanje snage Verzija 2.5 Datum: */ 8 Identifikatori identifikator je reč koja se jednoznačno pridružuje nekim elementima izvornog koda (promenljiva, tip, imenovana konstanta, potprogram) pravila: 1. može sadržati samo slova i cifre 2. prvi simbol mora biti slovo x123 myage MAXD _m a+b 236pq 128 +k da ne 9 3
7 postoji više konvencija vezanih za oblik identifikatora; najvažnije: identifikator koji ima semantiku mora biti mnemonički sila napon2 masa power myfile 10 Globalna struktura programa ime_dat.ekst (obično: ime_dat.c) direktiva potprogram (funkcija) tip potprogram (funkcija) globalna promenljiva potprogram (funkcija) 11 Domet identifikatora je oblast izvornog koda u kojoj se on može upotrebiti počinje definicijom proteže se do kraja izvornog koda ili do kraja potprograma ako je identifikator lokalan za potprogram može se proširiti deklarisanjem (dakle, u programskom jeziku C definisanje i deklarisanje nisu sinonimi) definicija je jedna, a deklaracija može biti proizvoljan broj, uključujući i nijednu 12 4
8 const double PI = ; double f(double x) { g(a,b)... } f void g(int i, double y) { int j; f(t) } j PI 13 Primer: računanje obima kruga obim.c zaglavlje biblioteke #include <stdio.h> globalna promenljiva const double PI = ; parametar double obimkruga(double r) { return 2*r*PI; ime funkcije funkcija } int main() { algoritam glavnog programa double poluprecnik, obim; lokalne promenljive printf( Uneti poluprecnik: ); scanf( %lf,&poluprecnik); argument obim = obimkruga(poluprecnik); printf( Obim kruga je %f,obim); return 0; } 14 izvorni program smešten je u datoteku obim.c posle prevođenja u folderu se pojavljuje izvršni program obim.exe dijalog izgleda ovako: program korisnik Uneti poluprecnik: 1.5<Enter> Obim kruga je
9 Rezime alfabet programskog jezika C: slova, cifre, specijalni znaci format izvornog koda: slobodan komentarisanje izvornog koda: dve vrste komentara identifikatori: semantika zahteva mnemoniku globalna struktura programa: labava domet identifikatora: oblast važenja primer: obim kruga 16 6
10 3 TIPOVI PODATAKA Sadržaj klasifikacija tipova podataka standardni tipovi podataka iskaz typedef promenljive elementarni ulaz-izlaz znakovni, celobrojni i realni tipovi enumeracija logički tip simboličke konstante 2 klasifikacija tipova podataka tip podataka standardni - znakovni -celobrojni - realni - tip void bazni enumeracija izvedeni - niz - slog (struktura) - unija - pokazivač - datotečni tip -programerski definisani tipovi 3
11 familija znakovnih tipova: char familija celobrojnih tipova: int familija realnih tipova: double i float Modifikatori: dužine short, long predznaka signed, unsigned 4 standardni bazni tipovi char unsigned char signed char short [int] unsigned short [int] [signed] short [int] int unsigned [int] signed [int] long [int] unsigned log [int] [signed] long [int] celobrojni double float long double realni [xxx] znači da xxx nije obavezno navesti 5 Iskaz typedef konstruisanje programerski definisanih tipova typedef opis_tipa Ime_tipa; gde Ime_tipa po konvenciji počinje velikim slovom typedef double Rastojanje; 6
12 Promenljive definicijom se zadaju tip i ime (identifikator), a kompajler na osnovu tipa rezerviše memorijsku lokaciju moraju se definisati tačno jedanput domet promenljive počinje definicijom tip ime 1 [=pv 1 ], ime 2 [=pv 2 ], ime n [=pv n ]; gde su pv 1,,pv n (neobavezne) početne vrednosti (inicijalizacija) 7 promenljiva se može inicijalizovati samo konstantnim izrazom int i, j=0, k=-1; //i nije inicijalizovana j i k jesu double x=0.5, y; //x je inicijalizovana, y nije double z=x; //ne moze! x nije konstanta 8 Modifikatori pristupa const: promenljiva je zaključana (ne može menjati vrednost) const double PI = ; //uociti velika slova volatile: promenljivoj se može pristupati izvan programa 9
13 Elementarni ulaz-izlaz jeste ulaz sa tastature odn. izlaz na ekran obavlja se posredstvom posebnih funkcija iz zaglavlja stdio.h ulaz: funkcija scanf izlaz: funkcija printf 10 Funkcija scanf scanf("formatni string", &p 1,...,&p n ) formatnim stringom zadaje se način interpretacije znakova koji pristižu sa tastature &p 1,...,&p n su adrese promenljivih p 1,..., p n čije vrednosti se učitavaju konverziona specifikacija: %[*][širina][h l L]tip_konverzije gde znači "ili" 11 Funkcija printf printf("formatni string", iz 1,...,iz n ) formatnim stringom zadaje se način interpretacije i raspored vrednosti koje će biti prikazane na ekranu iz 1,...,iz n su izrazi čije vrednosti se prikazuju na ekranu slobodni tekst se prenosi bez izmena konverziona specifikacija: %[flegovi][širina][.preciznost][h l L]tip_konverzije 12
14 Znakovni tip predstavlja pojedinačne simbole iz datog kodnog sistema (ASCII, UNICODE) identifikator familije: char uz modifikatore signed i unsigned konverziona specifikacija: %c u izvornom kodu, konstante se predstavljaju na tri načina i to iz tehničkih razloga 13 pravi simboli kojih ima na tastaturi 'a' '+' '0' '5' 'X' osim simbola? ' " \ 14 upravljački simboli prikazuju se pomoću tzv. "eskejp sekvenci" počinju znakovima '\ i završavaju se znakom ' '\0' znak sa kodom 0 '\n' novi red '\b' backspace '\f' form feed '\r' carriage return '\t' tab 15
15 eskejp sekvencom prikazuju se znaci? \ ' " '\?' '\\' '\'' '\"' kada se nalaze unutar znakova navoda eskejp sekvence pišu se bez apostrofa "ovo je neka linija\n" 16 simboli kojih nema na tastaturi 1. preko dekadne vrednosti koda 2. preko eskejp sekvence oblika '\oktalne cifre' '\heksadecimalne cifre Inače, na ovaj način mogu se predstaviti svi znaci. 17 znakovni tip je član familije celobrojnih tipova! znakovna promenljiva ima istovremeno i celobrojnu vrednost jednaku njenom kodu char x,y;..... x = 'M'; isto x = 67; y = x + 1; //y dobija vrednost 68 odnosno 'N' 18
16 char ch='+'; printf("%c",ch); //na ekranu se pojavljuje + printf("%d",ch); //na ekranu se pojavljuje Celobrojni tip podskup skupa celih brojeva identifikator familije: int prikaz konstanata u izvornom kodu: dekadni: oktalni: heksadecimalni: 0x32a 0xDB3-0X2e sufiksi: U ili u za unsigned i L ili l za long 256U -0x78abL 126LU 20 Konverzione specifikacije %d dekadna konverzija signed %u isto za unsigned %o oktalna konverzija %x heksadecimalna konverzija %i na ulazu: prepoznaje se oblik konstante na izlazu: isto što i %d 21
17 Realni tip podskup skupa realnih brojeva identifikatori: double float long double osnovni realni tip je double prikaz konstanata u izvornom kodu: decimalni: eksponencijalni: 1e6-0.8E12 2.7e-9 sufiksi: F ili f za float, L ili l za long double F -0.6L 1e8L 22 Konverzione specifikacije za ulaz %lf %le %lg za tip double %f %e %g za tip float %Lf %Le %Lg za tip long double sva tri oblika se ponašaju jednako 23 Konverzione specifikacije za izlaz %f izlaz je decimalni double i float %e izlaz je eksponencijalni %g izlazni oblik bira se prema veličini broja za long double %Lf %Le %Lg long double 24
18 Tip enumeracije vrednosti su imenovane konstante koje su definisane u programu svrha: povećanje čitljivosti (razumljivosti) izvornog koda, tj. povećanje pouzdanosti obično se označavaju velikim slovima: PONEDELJAK UTORAK SREDA itd. JANUAR FEBRUAR MART APRIL itd. identifikator familije: enum definiše se na tri osnovna načina 25 1) direktno enum {V 1,,V n } p 1,,p m ; V 1,,V n vrednosti enumeracije p 1,,p m promenljive tipa enumeracije enum {NE,DA} log1,log2; promenljive se moraju definisati zajedno sa enumeracijom, tj. ne mogu se definisati naknadno 26 2) putem taga (priveska) enum tag {V 1,,V n }; gde je tag kratak identifikator, jedinstven za svaku enumeraciju puno ime enumeracije enum RGB {CRVENA,ZELENA,PLAVA}; promenljive se ne moraju definisati zajedno sa enumeracijom enum RGB b1,b2; //bilo gde iza definicije puno ime enumeracije je sada enum tag 27
19 3) primenom typedef typedef enum {V 1,,V n } ImeEnumeracije; gde je sada ImeEnumeracije identifikator pridružen enumeraciji ime enumeracije enum {CRVENA,ZELENA,PLAVA} OsnBoja; promenljive se ne moraju definisati zajedno sa enumeracijom OsnBoja b1,b2; //bilo gde iza definicije ImeEnumeracije se sada koristi kao njen identifikator 28 Vrednosti enumeracije vrednosti enumeracije su istovremeno i celobrojne (kao i kod znakovnog tipa) implicitno: prva vrednost je 0, a svaka ostala je za 1 veća od prethodne enum dan {PONEDELJAK,UTORAK,SREDA,CETVRTAK,PETAK,SUBOTA,NEDELJA}; =0 =1 =2 enum dan d1, d2; d1 = UTORAK; //vrednost d1 je istovremeno jednaka 1 d2 = d1 + 3; //d2 je istovremeno PETAK i 4 29 Vrednosti enumeracije mogu se zadati eksplicitno, putem inicijalizacije enum xyz {V1=10,V2,V3,V4=20,V5=30,V6}; =10 =11 =12 =30 =31 primer: typedef enum {PLUS='+',MINUS='-',PUTA='*'} ZnakOper; ZnakOper op=plus; //vrednost op je istovremeno PLUS, '+' i 43! 30
20 Realizacija logičkog tipa Logički tip, kao tip, obuhvata logičke (Bulove) konstante (T i F),kao i odgovarajuće operacije (Λ V ) Realizacija logičkog tipa u programskom jeziku C je specifična: logički tip realizuje se preko baznih tipova! 31 kada je logički tip rezultat operacije tada se u ulozi F pojavljuje celobrojna vrednost 0, a u ulozi T (celobrojna) vrednost 1 kada je operand logičkog tipa tada se u ulozi F pojavljuje 0, a u ulozi T bilo koja vrednost različita od 0 primer (α i β su izrazi baznog tipa, && u C-u označava konjunkciju) =0 (F) α && β =0 (F) 0 (T) =1 (T) 32 Simboličke konstante predstavljaju još jedan način za efektivno imenovanje konstanti zaključane promenljive imaju status promenljive, a imenovane konstante su konstante u pravom smislu reči realizuju se pogodnom primenom tzv. pretprocesorske direktive #define ne stižu do kompajlera 33
21 definicija: #define IME vrednost primer: #define TRUE 1 pre prelaska na prevođenje, modul sa imenom pretprocesor skenira izvorni kod i gde god pronađe ime simboličke konstante zameni ga vrednošću (osim ako je ime unutar znakova " ". 34 #define TRUE 1 TRUE briše se iz izvornog koda TRUE "...TRUE..." TRUE 1 1 "...TRUE..." 1 35 Rezime klasifikacija tipova podataka iskaz typedef: konstruisanje novih tipova kombinovanjem postojećih promenljive: pre prve upotrebe moraju se definisati; modifikatorom const mogu se zaključati, te se ponašaju kao imenovane konstante (iako ostaju promenljive) elementarni ulaz-izlaz: funkcije scanf i printf standardni bazni tipovi: znakovni, celobrojni i realni tip enumeracija: povećanje čitljivosti izvornog koda znakovni tip i enumeracija su istovremeno i celobrojni logički tip realizuje se na poseban način, preko baznih tipova simboličke konstante su imenovane konstante u pravom smislu reči 36
22 4 IZVEDENI TIPOVI tip niza tip stringa tip sloga (strukture) tip unije Sadržaj 2 Tip niza tip niza predstavlja sredstvo za grupisanje više vrednosti istog tipa, tako da im se pristupa na osnovu pozicije, tzv. indeksiranjem same vrednosti mogu biti proizvoljnog tipa (baznog ili izvedenog) nizovi baznih tipova zovu se jednodimenzioni nizovi ili vektori, a nizovi takvih nizova nose naziv matrice memoriju za niz zauzima kompajler u fazi prevođenja i ona se ne može menjati u toku izvršenja programa 3
23 Definisanje niza Niz se definiše iskazom tip imeniza[duzina]; gde je tip tip elemenata niza, a konstantni izraz duzina predstavlja najveći mogući broj elemenata niza. primer: iskazom int vek[50]; definiše se niz vek čiji su elementi tipa int i ne može ih biti više od Smeštanje niza u memoriju Na osnovu dužine i veličine u bajtovima svakog elementa (određuje se iz tipa elementa), kompajler rezerviše memoriju za niz. Niz se smešta u jedinstvenu zonu operativne memorije. Dakle, za niz vek biće rezervisan memorijski prostor veličine 50 * l(int) gde je l(int) veličina podataka tipa int u bajtovima 5 aktuelni elementi neaktuelni elementi... prvi element poslednji element tokom izvršenja programa, memorija ne može da se menja dakle, broj aktuelnih elemenata niza vek može biti manji od 50, ali veći ne! zaključak: niz treba tretirati kao rezervisani memorijski prostor u kojem su (ređe) svi ili (najčešće) samo neki elementi aktuelni 6
24 Nizovi i simboličke konstante Za zadavanje dužine niza (naročito ako se koristi više nizova iste dužine) koriste se simboličke konstante: #define MAX_EL 100 int niz1[max_el]; za zadavanje dužine niza ne mogu se koristiti zaključane promenljive, jer one po prirodi nisu konstante nego promenljive. 7 Pristup elementima niza nizom se može rukovati isključivo preko pojedinačnih elemenata; dodela niza nizu nije dozvoljena ni u jednom procedurnom programskom jeziku, pa ni u C-u elementima niza pristupa se operacijom koja nosi naziv indeksiranje operator indeksiranja je binaran, sa nizom kao levim operandom, a indeksom kao desnim. Oznaka operatora je [], a ispisuje se oko desnog operanda 8 levi operand imeniza[indeks] desni operand najmanja vrednost indeksa je 0; najveća vrednost indeksa je duzina-1 0 indeks duzina-1 indeks je unsigned izraz; u praksi se najčešće koriste int izrazi (kompatibilni su sa unsigned) kompajler računa adresu elementa po formuli adr(imeniza[indeks]) = adr(imeniza[0]) + indeks*l (tip) u toku izvršenja programa "proboj" indeksa (izlazak iz opsega) se ne proverava, što znatno ubrzava indeksiranje, ali ako dođe do proboja posledice su nepredvidive! 9
25 int vek[50], vek1[50], i, j; vek[15] vek1[0] vek[i] vek1[2*i-j+1] vek[50] //greska, ali nece biti prijavljena vek = vek1; //dodela nije dozvoljena 10 Inicijalizacija niza niz se može inicijalizovati inicijalizatorom ={vr 1,vr 2,,vr n } gde su vr 1,vr 2,,vr n konstantne vrednosti koje se dodeljuju elementima niza pri kompilaciji primeri: int iniz[4] = {3,-1,10,20}; //iniz[0]=3,iniz[1]=-1,iniz[2]=10,iniz[3]=20 double db[10] = {1.3,-0.5}; //db[0]=1.3, db[1]=-0.5, ostali nedefinisani int in[] = {10,25,2,8,19} ; //in dobija duzinu 5 sic! 11 Multiindeksni tipovi niz baznih tipova nosi naziv vektor; nizovi čiji su elementi nizovi, nizovi nizova itd. zovu se multiindeksni ili multidimenzionalni tipovi najpoznatiji multiindeksni tip je niz vektora koji nosi naziv matrica (nizovi sa više od 2 dimenzije se retko koriste) definicija multiindeksnog tipa: tip ime[duzina 1 ][duzina 2 ] [duzina k ]; indeksiranje: ime[indeks 1 ][indeks 2 ] [indeks k ] 12
26 Matrica definicija: tip imematrice[duzina 1 ][duzina 2 ]; indeksiranje imematrice[indeks 1 ][indeks 2 ] pošto je matrica niz nizova, izraz oblika imematrice[indeks] je dozvoljen i po tipu je niz (predstavlja vrstu matrice) 13 smeštanje matrice u memoriju kompajler pakuje matricu, tj. seče je po vrstama i smešta sukcesivno u memoriju nulta vrsta vrsta vrsta... vrsta poslednja vrsta ako je definisana matrica double m[maxv][maxk]; //MAXV I MAXK su simbolicke konstante adresa elementa sa indeksima i i j računa se uočiti: prva dimenzija MAXV se ne koristi u formuli formulom adr(m[i][j]) = adr(m[0][0])+(i*maxk+j)*l(double) 14 inicijalizacija matrice matrica se inicijalizuje kao i svaki drugi niz, uzimajući u obzir to da je svaki član takvog niza takođe niz primer: int mtr[2][3]={{2,6,-1},{3,8,2}};
27 Tip stringa tip stringa, kao takav, jeste tekstuelni tip, tj. tip čije su konstante tekstovi u C-u, tip stringa realizuje se kao specijalni znakovni niz dakle, znakovni niz u C-u pojavljuje se u dve uloge: u ulozi (običnog) niza čiji su elementi znakovnog tipa i u ulozi stringa 16 String-konstante Specifičnost znakovnog niza u ulozi stringa. Oblik: "sadrzaj stringa" Na primer, "Jovan Jovic" Mogu se upotrebiti za inicijalizaciju char ime[] = "Jovan Jovic"; 17 Memorisanje stringa Kada je znakovni niz u ulozi stringa, iza poslednjeg aktuelnog znaka umeće se znak '\0'. char niz kao string char ime[12]="ana Peric"; 'A' 'n' 'a' ' ' 'P' 'e' 'r' 'i' 'c' '\0' char ime[12]={'a','n','a',' ','P','e','r','i','c'}; običan char niz 'A' 'n' 'a' ' ' 'P' 'e' 'r' 'i' 'c' 18
28 za ulaz-izlaz stringova postoji posebna konverziona specifikacija %s operacije nad stringovima (spajanje ili konkatenacija, kopiranje, brisanje podstringa, dodavanje podstringa, određivanje dužine stringa itd.) izvedene su kao funkcije i nalaze se u biblioteci čije je zaglavlje <string.h> 19 Tip sloga (strukture) tip sloga ili zapisa generalno predstavlja sredstvo za grupisanje više vrednosti različitog tipa, sa svrhom da posluži za opis entiteta; u C-u se za tip sloga (iz nejasnih razloga) koristi termin struktura elementi su semantički nesamostalni; da bi se to podvuklo, umesto termina "element" koristi se termin polje polja strukture mogu biti proizvoljnog tipa (baznog ili izvedenog) memoriju za strukturu zauzima kompajler u fazi prevođenja i ona se ne može menjati u toku izvršenja programa 20 Definisanje strukture ključna reč struct zajednička je za sve strukture (kao kod enumeracije reč enum) shodno tome, postoje ista tri načina za definisanje sloga: direktno primenom taga primenom typedef 21
29 Opšta šema (sa npr. tagom): struct tag { tip 1 p 1, p 2,, p k ; tip 2 q 1, q 2,, q m ; tip 3 r 1, r 2,, r n ; polja tipa tip 1 polja tipa tip 2 polja tipa tip 3.. }; gde su tip 1,... tipovi polja, a p 1, q 1, r 1, njihovi nazivi 22 direktno struct {int i; double a,b; char ch;} s1,s2; sa tagom struct tck { char oznaka; //polje tipa char double x,y; //dva polja tipa double };. struct tck t1,t2; //definisanje promenljivih 23 sa typedef typedef struct { char ime[15]; char prezime[30]; unsigned godrodj; } Osoba; Osoba pers1,pers2; 24
30 Rukovanje strukturama pristup poljima: pomoću operatora koji se zove selektor i predstavlja simbolom. (tačka) imesloga.imepolja primer: pers1.godrodj pers2.ime pers2.prezime[5] 25 operator dodele = jeste definisan za strukture struct tck t1,t2; t2.oznaka='a'; t2.x=4.2; t2.y=-0.5; t1 = t2; //polja t2 se kopiraju u odgovarajuca polja t1 'a' t1 'a' t2 26 struktura se može inicijalizovati, istim konstruktom kao i niz ={vr 1,vr 2,...,vr n } gde su vr 1,vr 2,...,vr n konstantne vrednosti koje se dodeljuju poljima redom kojim su polja definisana primer: struct tck t = {'b',0.8,-2.4}; gde će biti: t.oznaka='b' t.x=0.8 t.y=
31 Tip unije u formalnom smislu (sintaksno) definiše se i koristi isto kao i struktura; razlika je samo u ključnoj reči koja je kod unije union (umesto struct), sve ostalo je isto po pitanju ponašanja, potpuno se razlikuje od strukture 28 struct str { char c; int i; double d; }... struct str s; c i d union un { char c; int i; double d; }... union un u; i d polja dele memoriju c 29 polja unije dele memorijski prostor (jednak najdužem polju) što u potpunosti menja ponašanje odgovarajućih promenljivih! ređe se koriste, a tipična primena je reinterpretacija memorijskog prostora //Pretpostavka: unsigned short zauzima 2 bajta, a unsigned char 1 bajt union reg { unsigned short rec; unsigned char bajt[2]; //bajt[0] je nizi bajt rec, a bajt[1] je visi bajt rec }; 30
32 int main() { union reg registar; registar.rec = 0xA15D; printf("rec: %X\n",registar.rec); printf("bajtovi: %X %X\n",registar.bajt[0],registar.bajt[1]); return 0; registar.rec } izlaz: Rec: A15D 5D A1 smer rasta adresa Bajtovi: 5D A1 registar.bajt[0] registar.bajt[1] 31 Rezime niz objedinjava elemente istog tipa, sa mogućnošću pristupa indeksiranjem niz skalara zove se vektor, a niz vektora zove se matrica memoriju za niz zauzima kompajler i ona se ne može menjati u toku izvršavanja programa string je tekstuelni tip koji se u C-u realizuje preko specijalnog znakovnog niza tip sloga (strukture) služi za objedinjavanje elemenata (polja) različitog tipa u svrhu opisa odgovarajućeg entiteta unija objedinjuje polja različitog tipa, s tim što polja dele memorijski prostor 32
33 5 OPERATORI I IZRAZI klasifikacija operatora pregled operatora konverzija Sadržaj niz izraza veličina podatka redosled primene operatora bibliotečke funkcije 2 C ima preko 40 operatora na 15 nivoa prioriteta indeksiranje i selektor kod strukture i unije su operatori; dodela je takođe operator; svaki poziv funkcije sa n argumenata tretira se kao n+1-arni operator (n+1-vi operand je ime funkcije) ima ih unarnih, binarnih i jedan ternarni operatori na istom nivou prioriteta podrazumevano se izvršavaju s leva u desno, ali neki se izvršavaju s desna u levo (ovo se zove smer grupisanja) svi operatori generišu rezultat 3
34 Klasifikacija operatora (približno opadajući nivo prioriteta) adresni operatori aritmetički operatori relacioni operatori bit-operatori logički operatori operatori dodele operator, (zapeta) 4 Binarni aritmetički operatori + sabiranje - oduzimanje * množenje / deljenje % ostatak pri deljenju (za celobrojne operande) Deljenje: ako su oba operanda celobrojna, znak / predstavlja celobrojno deljenje (razlomljeni deo se odseca); u suprotnom radi se o običnom deljenju 5.0/2 daje 2.5 5/2 daje /10000 daje 0 5 Unarni operatori + i - unarni operator predstavlja promenu predznaka unarni operator + je potvrda predznaka (nema dejstvo) Ako je x bilo jednako 10 tada je rezultat x jednak -10, a +x jednako je 10 6
35 Bočni efekat operator ima bočni efekat ako menja vrednost operanda operand koji menja vrednost mora posedovati lokaciju u memoriji; takve vrednosti nose naziv LVALUE (LVREDNOST) LVALUE su promenljive, indeksirani izrazi, selektovana polja, dereferencirani pokazivači i kombinacije: LVALUE: promenljiva []. * 7 Operatori inkrementa i dekrementa unarni aritmetički operatori sa bočnim efektom dakle, generišu rezultat i menjaju vrednost operanda operand može biti bilo kojeg baznog tipa (uključujući i realni), a može biti i tzv. pokazivač označavaju se sa ++ (inkrement) i -- (dekrement) pišu se ili ispred operanda (prefiksna forma) ili iza operanda (postfiksna forma) 8 Neka je k neka int promenljiva i neka ima trenutnu vrednost 10. prefiksni inkrement je ++k postfiksni inkrement je k++ U oba slučaja bočni efekat je povećanje vrednosti k za 1; rezultat je k+1 kod prefiksnog ili k kod postfiksnog (k=10) ++k rezultat je 11; k postaje 11 k++ rezultat je 10; k postaje 11 9
36 pažnja: x = x + 1; //izrazito los stil programiranja u C-u x++; odnosno ++x; //u C-u se pise ovako! 10 dekrement -- ponaša se analogno, samo što se ovde dešava umanjenje za 1 (k=10) --k rezultat je 9; k postaje 9 k-- rezultat je 10; k postaje 9 11 x = 1; y = 5; x--+y++ p = 10; q = 20; ++q-p-- r = 2; s = 4; r+++++s Primeri //rezultat: 6, x=0, y=6 //rezultat: 11, p=9, q=21 //rezultat: 7, r=3, s=5 12
37 Relacioni operatori standardnih 6: == (jednako)!= (nejednako) < (manje) <= (manje ili jednako) > (veće) >= (veće ili jednako) rezultat je 0 ili 1! 13 Primeri a = 1; b = 5; 4*(a < b) //rezultat: 4 p = 10; q = 20; p == q //rezultat: 0 x = 0.3; y = 0.5; z = 0.7; x < y < z //oprez! 14 ako je x=0.3, y=0.5, z=0.7 rezultat izraza =1 =0.7 neće biti 1 nego 0! x < y < z zato je sigurnije pisati onako kako se piše i u drugim programskim jezicima (x < y) && (y < z) gde je && operator konjunkcije 15
38 Logički operatori && konjunkcija disjunkcija! negacija rezultat je 0 (u ulozi F) ili 1 (u ulozi T) operandi su izrazi baznog tipa; vrednost operanada: =0 (u ulozi F) 0 (u ulozi T) a = 5; b = 0; c = -3.8 a && b //rezultat je 0 b c //rezultat je 1!c //rezultat je 0 16 optimizacija računanje konjunkcije i disjunkcije je uvek optimizovano; ako je kod konjunkcije jedan operand =0 drugi se možda neće izračunavati jer je rezultat sigurno 0; kod disjunkcije isto, samo za vrednost 1; da li će optimizacija biti primenjena ili neće zavisi od konkretnog slučaja i programer to ne zna! 17 oprez! ako neki operand ima bočnih efekata treba biti oprezan bočni efekat (a-b) && (c+d++) ako je a-b=0 i ako se a-b računa prvo, bočni efekat neće biti izveden i d neće promeniti vrednost; ako se prvo računa c+d++ bočni efekat biće izveden! Rešenje je: x = d++; (a-b) && (c+x) 18
39 Bit - operatori operatori koji se izvode nad pojedinačnim bitovima celobrojnih operanada služe za rad sa memorijskim registrima na nivou bita & bit-konjunkcija bit-disjunkcija ^ bit-ekskluzivna disjunkcija ~ bit-negacija (komplementiranje) << šift ulevo >> šift udesno 19 bit-konjunkcija, disjunkcija i ekskluzivna disjunkcija izvode se, međusobno nezavisno nad odgovarajućim parovima bitova operanada x y x&y komplementiranje: unarni operator; svaka 0 pretvara se u 1 i svaka 1 u 0 u opštem slučaju x&y x&&y x y x y!x ~x 20 Šiftovanje (pomeranje) bitovi levog operanda pomeraju se ulevo ili udesno za broj pozicija naznačen desnim operandom kod šifta ulevo << upražnjene pozicije popunjavaju se nulama kod šifta udesno upražnjene pozicije popunjavaju se nulama ako je levi operand unsigned, odn. bitom predznaka ako je levi operand signed 21
40 neka je unsigned x = ; tada x << 2 daje rezultat x >> 2 daje rezultat uočiti da šift ulevo za n pozicija ima isti efekat kao množenje sa 2 n, a šift udesno za n pozicija isti efekat kao celobrojno deljenje sa 2 n 22 Uslovni operator ternarni operator (ima 3 operanda) opšti oblik izraz 1? izraz 2 : izraz 3 rezultat je jednak izraz 2 ako je izraz 1 0 odnosno izraz 3 ako je izraz 1 =0 primer: (a>b)? a : b daće za rezultat veću od vrednosti a odnosno b 23 Operatori dodele dodela je u C-u operator postoji ukupno 11 operatora dodele: tzv. osnovni operator dodele i još 10 posebnih svi imaju smer grupisanja s desna u levo svi imaju bočni efekat 24
41 Osnovni operator dodele opšti oblik LVALUE = izraz bočni efekat je dodela vrednosti izraza objektu LVALUE rezultat je vrednost LVALUE (tj. levog operanda) posle dodele 25 Primeri x = 5 //x dobija vrednost 5; rezultat je 5 y = 2*z // y dobija vrednost 2*z i to je rezultat a = b = c = d = 1 //a,b,c,d su 1; rezultat je 1 tzv. višestruka dodela a = b++*(1-x)+(d=c<<3) ++s (t=3*p) 26 Ostali operatori dodele svi imaju istu strukturu i ponašanje LVALUE op= izraz sa značenjem LVALUE = LVALUE op izraz gde oznaka op predstavlja jedan od operatora + - * / % & ^ << >> Dakle, operatori su += -= *= /= %= &= = ^= <<= >>= 27
42 x += y x = x+y p[i] *= (k=j+1) p[i] = p[i]*(k=j+1) t -= q += 3 t = t-(q=q+3) smatra se vrlo lošim stilom programiranja pisati npr. a=a+b umesto a+=b, iako je efekat isti; dakle, p -= 3 p = p-3 28 Konverzija C dozvoljava gotovo potpuno mešanje tipova u binarnim izrazima, tj. u izrazu α op β podizrazi α i β mogu biti ma kojeg baznog tipa direktno izvršavanje operacija nad različitim tipovima nije moguće zbog ograničenja računara u toku izvođenja operacije op tipovi operanada moraju se izjednačiti (bez uticaja na same operande!) takvo izjednačavanje nosi naziv konverzija 29 konverzija može biti: Vrste konverzije implicitna (na bazi ugrađenih pravila obezbeđuje je kompajler) ili eksplicitna (na zahtev programera, posredstvom posebnih operatora); eksplicitna konverzija zove se još i kast (od type cast) 30
43 Implicitna konverzija dva pravila: jedno za sve operatore osim dodele i drugo za operatore dodele svi operatori osim dodele: koristi se tzv. tablica složenosti, pri čemu se manje složen tip konvertuje u složeniji; 1. long double 2. double 3. float 4. (promocija) char, short i enum u int (jedan ili oba operanda) 5. long 6. int unsigned varijanta je složenija od signed 31 int i,j; double d; char c1,c2; long double ld; d+j //j u double; rezultat double ld-i //i u long double; rezultat long double c1+c2 //c1 i c2 u int; rezultat int (d+c1)*(i/j)+ld //krajnji rezultat long double double int double long double long double 32 konverzija kod dodele za njih važi posebno pravilo: tip desnog operanda prilagođava se tipu levog operanda (zbog bočnog efekta operatora dodele) int j; double d; j = 3.8 //j = rezultat = 3; decimale se seku d = 23 //d = rezultat = 23.0 j = 1e12 // j i rezultat su slucajni! 1e12 preveliko 33
44 eksplicitna konverzija (kast) primenom posebnih unarnih operatora vrednost izraza se konvertuje u ciljni tip, bez obzira na to kakav je tip vrednosti oblik svih operatora kasta je (tip) gde je tip ciljni tip u koji se konvertuje operatori se primenjuju na izraze; vrednosti samih izraza ostaju nepromenjene! primeri: (int) (long double) (long) (float) 34 double x=3.5; int k=10; (long)k //rezultat je 10L (long double)(x+k) //rezultat je 13.5L (unsigned)k //rezultat je 10U 35 Niz izraza niz izraza je sredstvo za objedinjavanje više izraza u jedan; to se postiže primenom operatora, opšti oblik: izraz 1,izraz 2,...,izraz n izrazi se računaju s leva u desno, a vrednost celog niza jednaka je rezultatu krajnjeg desnog izraza (izraz n ) vrednost celog niza izraza x=10, y+=x, z*=y, y--, t=++z 36
45 Veličina podatka u određenim slučajevima neophodno je odrediti koliko bajtova zauzima neki podatak standardi ne garantuju skoro ništa (npr. int može da zauzima 2 bajta ili 4 bajta) veličina se dobija operatorom sizeof, koji može da se primeni na tip ili na vrednost sizeof(tip) daje veličinu podataka datog tipa; primenjuje se na bazne tipove i sve tipove definisane sa typedef (sizeof)izraz daje veličinu u bajtovima vrednosti izraza 37 typedef struct {double a; int b;} MyRecord; int a; MyRecord rec; sizeof(double) //velicina double podataka sizeof(myrecord) //velicina MyRecord sizeof a //velicina promenljive a (tj. velicina int) sizeof rec //velicina promenljive rec sizeof (a+1.5) //velicina izraza a+1.5 (tj. velicina double) 38 Redosled primene operatora redosled primene susednih operatora regulisan je prioritetom i upotrebom zagrada redosled primene nesusednih operatora nije regulisan nikakvim pravilima nesusedni operatori primer: a*b + c/d sigurno je da će množenje i deljenje biti izvedeno pre sabiranja; ne zna se da li će prvo biti izvedeno množenje, a zatim deljenje ili obrnuto 39
46 ovo važi u svim programskim jezicima, ali može da stvori problem samo tamo gde ima bočnih efekata a*b + b++ ne zna se kojom vrednošću b će biti pomnoženo a: originalnom ili uvećanom za 1 situacija se prepoznaje po tome što se nesusedni operatori primenjuju na istu promenljivu, a bar jedan ima bočni efekat 40 rešenje je uvesti pomoćne izraze x = b; ili x = b+1; //zavisi od toga sta programer hoće a*x + b++ 41 Bibliotečke funkcije gotovi potprogrami (tipa sin, printf itd.) raspoređeni su u biblioteke, prema srodnosti poslova koje obavljaju imena svih standardnih funkcija pišu se isključivo malim slovima pre prve upotrebe bilo koje standardne funkcije mora se, direktivom #include naznačiti zaglavlje biblioteke u kojoj se funkcija nalazi: #include <zaglavlje.h> pored funkcija, u bibliotekama se nalaze i drugi elementi C-a: simboličke konstante, gotovi tipovi itd. 42
47 zaglavlja standardnih biblioteka stdio.h - funkcije za ulaz-izlaz math.h - matematičke funkcije string.h - rad sa stringovima stdlib.h - razne funkcije, uključujući i one za rad sa pokazivačima u praksi se pojavljuju još neke biblioteke, pa uvek treba proveriti skup i sadržaj biblioteka koje nudi konkretan C-ov sistem 43 Rezime klasifikacija operatora: adresni, aritmetički, relacioni, logički, bit-operatori, dodele, uslovni, operator, pregled operatora konverzija se vrši prilikom izračunavanja mešovitih izraza niz izraza služi za grupisanje izraza u jedan veličina podatka nije garantovana redosled primene operatora za nesusedne operatore nije unapred određen bibliotečke funkcije su gotovi potprogrami i deo su C-a 44
48 6 NAREDBE klasifikacija naredbi prosta naredba sekvenca selekcije ciklusi programski skokovi Sadržaj 2 naredbe (u užem smislu reči) jesu osnovni elementi za opis algoritma dele se na prostu naredbu i upravljačke strukture naredbe prosta naredba upravljačke strukture sekvenca selekcije ciklusi skokovi 3 1
49 Prosta naredba izvodi se iz izraza dodavanjem terminatora ; izraz; rezultat koji generiše izraz se ignoriše x = 5 //izraz veoma različite stvari! x = 5; //naredba k++; //povecanje k za 1; isto sto i ++k; sin(2*y-1); // dozvoljeno, ali besmisleno ; //prazna naredba prosta naredba ima smisla samo ako izraz ima bočni efekat; prazna naredba ima smisla samo kao deo neke naredbe 4 Sekvenca služi za grupisanje više naredbi u jednu (kao što niz izraza grupiše više izraza u jedan) opšti oblik programske zagrade {naredba 1 naredba 2... naredba n } naredbe se razdvajaju tzv. belim znacima (blanko, novi red, razmaknica) x = 1; y*=z+3; t++; //ovo su tri naredbe {x = 1; y*=z+3; t++;} //ovo je jedna naredba! 5 Selekcije svrha: omogućavanje različitih varijanata izvršenja algoritma tri vrste selekcije: selekcija if selekcija if-else višestruka selekcija switch 6 2
50 selekcija if izvršavanje naredbe pod nekim uslovom (tzv. zaštićena naredba) if(izraz) naredba =0 izraz 0 naredba if(a>b) x++; sintaksa if((p==q)&&(s<0)) {p+=q; s++;t=sin(p);} semantika pragmatika if(x+=--y*(z+1)) { t--; a/=2; } 7 selekcija if-else izbor između dve alternative if(izraz) naredba 1 else naredba 2 0 =0 izraz if(a>b) x++; else p=0; naredba 1 naredba 2 if(t++) {if(a!=0) d+=4;} else z--; if(t++) if(a!=0) d+=4; else z--; nije isto! 8 selekcija switch izbor između više varijanata za nastavak algoritma, na osnovu vrednosti celobrojnog izraza podseća na naredbu case paskala, ali nije ista! 9 3
51 ! celobrojni izraz c 1 c 2 niz_naredbi 1 niz_naredbi 2 default niz_naredbi 0 niz_naredbi k c k switch(celobrojni_izraz) { case c 1 : niz_naredbi 1 case c 2 : niz_naredbi 2... default: niz_naredbi 0... case c k : niz_naredbi k } deo default nije obavezan 10 i+j=-4 switch(i+j) { case 2: x = 1; y++; case 0: case -4: z*=t; t--; case 6: p = q = r = s = 0; case 1: x++; } uloga break uočiti višestruke case labele i+j=-4 switch(i+j) { case 2: x = 1; y++; break; case 0: case -4: z*=t; t--; break; case 6: p = q = r = s = 0; break; case 1: x++; } 11 Ciklusi osnovna svrha ciklusa jeste da omoguće da se fizički relativno malim obimom izvornog koda računaru zada velik posao ovo se postiže ponavljanjem neke naredbe u promenljivim uslovima naredba 12 4
52 Ciklus while while(izraz) naredba =0 izraz 0 naredba while(s<a) { t++; s *= z++; } while(++x-y) z/=x; 13 načelno, ciklus while može se koristiti u svim situacijama tipična primena su situacije u kojima se u trenutku otpočinjanja ciklusa ne zna koliko će se puta ponoviti naredba (nema tzv. odbrojavanja) 14 inicijalizacija Ciklus for for(izraz 1 ;izraz 2 ;izraz 3 ) naredba telo ciklusa provera kraja modifikacija izraz 3 izraz 1 izraz 2 0 naredba =0 //racunanje zbira nizova a i b for(j=0;j<m;j++) c[j] = a[j]+b[j]; //racunanje n! if(n==0) f = 1; else for(f=1,i=1;i<=n;i++) f*=i; 15 5
53 nijedan od 3 izraza nije obavezan; može se pisati for(k=m;k>0;) t+=k--; pa čak i for( ; ;) ; //besmisleno, ali dozvoljeno ciklus for je najširi mogući ciklus i primenljiv je u svim situacijama tipična primena je kod tzv. brojačkih ciklusa (upravljačka promenljiva menja vrednost od početne do krajnje, a provera obuhvata poređenje sa krajnjom vrednošću) 16 računanje upravljačka promenljiva primer brojačkog ciklusa n 1 s i 0 a[ i]* b[ i] for(s=0,i=0;i<n;i++) s+=a[i]*b[i]; for(s=0,i=0;i<n;s+=a[i]*b[i],i++); for(s=0,i=0;i<n;s+=a[i]*b[i++]); /* ne! indeksiranje a[i] i inkrement u b[i++] su nesusedni; ishod je neizvesan */ 17 Ciklus do-while do naredba while(izraz); znak ; je obavezan naredba izraz 0 =0 t = 0; do { printf("uneti broj > 0"); scanf("%d",&n); if(n>0) t+=n; } while(n>0); /*ciklus se zavrsava kada se ukuca broj <= 0 /* 18 6
54 ciklus do-while koristi se u situacijama u kojima je za proveru kraja neophodno da se prethodno izvrši naredba tipičan slučaj su meniji 19 Naredbe skoka postoje tri naredbe skoka: goto, break i continue naredba goto se ne koristi, izuzev u jednoj jedinoj situaciji naredbe break i continue koriste se retko (osim naredbe break kao dela naredbe switch) 20 Naredba goto goto LABELA; gde je LABELA oznaka neke naredbe. Naredba se labelira dodavanjem konstrukta LABELA: ispred nje LABELA: naredba Inače, LABELA je identifikator ili niz cifara. po izvršenoj naredbi goto, sledeća nije prva naredba posle goto nego ona sa LABELA-om 21 7
55 if((z=a+b)<c) goto 10; t+=z; goto 15; 10: t+=a; 15: (naredba) if((z=a+b)<c) t+=a; else t+=z; ne ovako nego ovako naredba na koju se preskače može biti fizički ispred ili iza naredbe goto naredbu goto treba striktno izbegavati jer bitno smanjuje razumljivost izvornog koda i predstavlja izvor grešaka! 22 jedina (i vrlo retka) situacija u kojoj se preporučuje primena goto je iskok iz ugneždenih ciklusa (ciklus u ciklusu u ciklusu...) 23 Naredba break break; koristi se u dva slučaja: u okviru naredbe switch (već je opisano) za iskakanje iz pojedinačnog cuklusa while(1) { if(i<0) break; t+= x[i--]; z*= t; } 24 8
56 Naredba continue continue; koristi se unutar ciklusa za momentalni prelaz na sledeće ponavljanje (iteraciju, prolaz) for(j=0;j<n;j++) { if(a[j]<=0) continue; sp+=a[j]; } 25 Rezime klasifikacija naredbi: prosta naredba i upravljačke strukture prosta naredba: izraz zatvoren terminatorom ; sekvenca: objedinjavanje više naredbi u jednu selekcije: izbor načina nastavka algoritma ciklusi: malim obimom izvornog koda zadati velik posao programski skokovi: promeniti redosled izvršavanja naredbi 26 9
57 7 POKAZIVAČI Sadržaj tip pokazivača korišćenje pokazivača adresna aritmetika dinamička alokacija memorije korišćenje nizova u dinamičkoj zoni pokazivači na strukture 2 Pokazivači služe za pristup podacima putem adrese (uočiti da je adresa element programa koji je dostupan i u fazi prevođenja i u fazi izvršenja!) Vrednosti samog pokazivača su adrese, tj. skalari Memorijska lokacija čiju adresu sadrži pokazivač nosi naziv pokazivana lokacija Da bi se moglo pristupiti podatku na pokazivanoj lokaciji mora se znati tip tog podatka, te se tip pokazivača izvodi iz tipa pokazivane lokacije 3 1
58 Definisanje pokazivača pokazivač se definiše iskazom tip *imepokazivaca; gde tip označava tip pokazivane lokacije. int *pi, *pj, x, a[100]; //tip pi i pj je int *! pi i pj su pokazivači na int lokaciju; x je obična int promenljiva, a je int niz. 4 Elementarno korišćenje pokazivača osnovna operacija nad pokazivačima je pristup pokazivanoj lokaciji; nosi naziv dereferenciranje i realizuje se unarnim operatorom * operator dereferenciranja *imepokazivaca na primer, *pk //pristup lokaciji ciju adresu sadrzi pk konverziona specifikacija za prikaz pokazivača pomoću printf je %p. Vrednost se prikazuje heksadecimalno. 5 Adresni operator u određenoj vezi sa pokazivačima je i tzv. adresni operator: unarni operator & koji primenjen na promenljivu daje njenu adresu x //obezbedjuje vrednost promenljive x &x //obezbedjuje adresu promenljive x 6 2
59 ilustracija ponašanja pokazivača int *pi, *pj, x; x = 10; pi = &x; //koliko je pi? //koliko je *pi? pj = pi; //koliko je *pj? *pi = -5; //koliko je x? pi A A x 10 pj A 7 Generički pokazivači Generički pokazivači su pokazivači kod kojih nije definisan tip pokazivane lokacije; realizuju se kao tip void* void *pg; generički pokazivači se ne mogu dereferencirati (jer se ne zna tip pokazivane lokacije) *pg 8 Osnovni operator dodele Osnovni operator dodele pokazivača pokazivaču p2 = p1 može da se izvrši ako su p1 i p2 istog tipa ako je bar jedan od njih void pokazivač 9 3
60 int *pj, *pk; double *pd; void *pg; pj = pk; //moze pg = pj; //moze pg = pd; //moze pd = pg; //moze pg = pk; //moze pj = pd; //ne moze! pd = pk; //ne moze! 10 razlog zašto pokazivači koji nisu istog tipa ne mogu da se dodele je dereferenciranje pk *pk pd *pd pd = pk -25? posle dodele pd=pk, rezultat *pd je slučajan! dodela generičkom pokazivaču dozvoljena je, jer se on ne može dereferencirati 11 Sabiranje i oduzimanje operacije: = = jedan operand je pokazivač, a drugi celobrojni podatak; jedinica mere za celobrojni podatak je veličina pokazivane lokacije (1 bajt za void pokazivač) int *pk, i; double *pd; void *pv; pk + i izvodi se kao pk+i*sizeof(int) pd - i izvodi se kao pd-i*sizeof(double) pv + i izvodi se kao pv+i pk++ na pk se dodaje sizeof(int) 12 4
61 Pokazivači i nizovi jedinstvena osobina C-a: ime niza je pokazivač na njegov nulti element int a[100], j; a *a *(a+1) *(a+j) a[0] a[1]..... a[j]..... a[99] *(a+j) a[j] a+j &a[j] 13 još neke operacije nad pokazivačima definisani su još i relacioni operatori ==!= > >= < <= oduzimanje pokazivača od pokazivača (koje ima smisla samo ako pokazivači pokazuju na elemente istog niza) 14 NULL vrednost pokazivača konkretne vrednosti pokazivača su adrese i nisu od interesa (čak se mogu menjati od slučaja do slučaja) uopšte, pokazivačima se ne mogu dodeljivati konstantne vrednosti izuzetak je simbolička konstanta NULL (definisana u zaglavljima stdio.h i stdlib.h) kada ne postoji pokazivana lokacija pokazivač treba da ima vrednost NULL (u suprotnom se dereferencira slučajna lokacija) 15 5
62 Dinamička dodela memorije izuzetno moćan mehanizam koji omogućuje da se tokom izvršenja, programu dodeli dodatna memorija, odnosno da se ona oslobodi dodela memorije zove se alokacija, a oslobađanje dealokacija zona operativne memorije u kojoj se vrši alokacijadealokacija zove se hip (heap) rukovalac hipom (heap manager) je C-ov podsistem za upravljanje hipom iz programa, hipom se rukuje preko odgovarajućih funkcija 16 u toku izvršenja programa, identifikatori više ne postoje (koristio ih je kompajler); shodno tome, jedini način da se rukuje memorijom na hipu jesu adrese, što znači da je osnovni mehanizam za rukovanje hipom u toku izvršenja programa pokazivač osnovne funkcije za korišćenje hipa su malloc (za alokaciju) i free (za dealokaciju) 17 pokazivač p A alokacija statička memorija A *p malloc (otvara blok, uspostavlja vezu) hip 18 6
63 dealokacija p A statička memorija A *p free (oslobadja blok, raskida NULL vezu, upisuje NULL u p) hip 19 funkcije za rad sa hipom osnovne funkcije za korišćenje hipa su: malloc(no_bytes) Zauzima blok od no_bytes bajtova na hipu i vraca pokazivac na taj blok; ako ne uspe vraća NULL. free(pokazivac) Oslobadja blok na koji pokazuje pokazivač i upisuje u pokazivač vrednost NULL 20 dodatne funkcije calloc(n,no_bytes) Zauzima blok od n*no_bytes bajtova na hipu i vraca pokazivac na taj blok; ako ne uspe vraća NULL; blok se popunjava nulama. Smatra se zastarelom (engl. deprecate) realloc(pokazivac,new_bytes) Efektivno proširuje ili skraćuje blok na koji pokazuje pokazivac na veličinu new_bytes. 21 7
64 primer long double *pld; //zauzimanje memorije za long double podatak pld = malloc(sizeof(long double));... podatku se pristupa preko *pld... //oslobadjanje memorije free(pld); 22 Curenje memorije curenje memorije (memory leak) je situacija u kojoj je nedostupni blok na hipu označen kao zauzet tipičan slučaj: pokazivač koji pokazuje na blok A na hipu preusmeri se na blok B, a da blok A nije prethodno oslobođen; time se efektivno smanjuje hip curenje memorije se ne sme tolerisati ni pod kakvim uslovima! 23 p A blok A je nedostupan! B p = malloc(sizeof(nekitip)); //preusmeravanje na blok B 24 8
65 postulat za korišćenje hipa jeste sve što se alocira pomoću malloc, calloc ili realloc mora se eksplicitno osloboditi pomoću free 25 Nizovi na hipu korišćenjem pokazivača nizovi se realizuju na hipu, što je znatno bolji način jer više ne predstavljaju rezervisani memorijski prostor zauzimaju tačno onoliko memorije koliko imaju aktuelnih elemenata broj elemenata (dužina) ne zadaje se u toku prevođenja, pa se u tu svrhu mogu koristiti i promenljive 26 int *a, i, n; //pokazivac a ponasace se kao niz!... //na hipu se zauzima prostor potreban za int niz //sa n elemenata a = malloc(n*sizeof(int));... i-tom elementu "niza" a pristupa se sa a[i] zato sto je a[i] isto sto i *(a+i)... free(a): //obavezna dealokacija 27 9
66 napomena: isto se radi i sa matricom, uz korišćenje dvostrukog pokazivača ** double **mtr; int m, n, i, j; //alokacija mtr = malloc(m*sizeof(double*)); for(i=0;i<m;i++) mtr[i] = malloc(n*sizeof(double));... elementima "matrice" pristupa se sa mtr[i][j]... //dealokacija for(i=0;i<m;i++) free(mtr[i]); //oslobadjanje vrsta free(mtr); 28 Pokazivači na strukture vrlo čest slučaj: strukture na hipu neka je ps pokazivač na strukturu i neka struktura ima polje x. Pristup polju x preko pokazivača ps izvodi se operacijom (*ps).x pošto je ovo vrlo često, uveden je poseban operator -> nikad se ne koristi (*ps).x ps->x 29 Rezime tip pokazivača je tip* gde je tip tip pokazivane lokacije korišćenje pokazivača: najvažniji operator je dereferenciranje * dodela, sabiranje, oduzimanje i relacioni operatori mogući su pod određenim uslovima dinamička alokacija memorije: zauzimanje i oslobađanje memorije u toku izvršenja programa korišćenje nizova na hipu je, u stvari, normalan način za njihovu upotrebu 30 10
67 8 FUNKCIJE Sadržaj definisanje i korišćenje funkcije prenos argumenata u potprogram prototip lokalne i globalne promenljive pretprocesor izrada biblioteka rekurzivne funkcije pokazivači na funkcije argumenti programa 2 Definisanje i korišćenje funkcija potprogram je predstavlja sintaksnu i semantičku celinu generalno, potprogrami mogu i ne moraju da formiraju neki rezultat u vidu izlazne vrednosti (kaže se "imaju vrednost") u C-u, potprogrami nose naziv funkcije poziv (aktiviranje) funkcije u C-u tretira se kao primena operatora reda n+1, gde je n broj argumenata (n+1-vi operand je ime funkcije) 3 1
68 Definisanje funkcije { } zaglavlje blok lokalne promenljive + naredbe zaglavlje: tip imefunkcije(t 1 p 1,...,T n p n ) tip - tip vrednosti funkcije; bilo šta osim niza; ako se ne navede, podrazumeva se int; ako funkcija nema vrednost piše se void p i - identifikator i-tog parametra T i - tip (formalnog) parametra p i 4 tip vrednosti f-je ime funkcije parametar (formalni parametar) double zbir(double x,double y) { double s; s = x+y; return s; } lokalna promenljiva vraćanje vrednosti funkcije double zbir(double x,double y) { double s=x+y; //parametri mogu ucestvovati u inicijalizaciji return s; } double zbir(double x,double y) { return x+y; } može i ovako 5 Pozivanje (aktiviranje) funkcije funkcije koje imaju vrednost pozivaju se uključivanjem u izraze (kao i matematičke funkcije) 5 i 6 su argumenti (stvarni parametri) t = 2 * zbir(5,6)-3; //2*(11)-3=18 argumenti (stvarni parametri) su u opštem slučaju izrazi z = 5.8*zbir(3*a,b*c)+zbir(1,f/g)-1; 6 2
69 Vraćanje rezultata vrednost funkcije formira se ("vraća se") naredbom return izraz; efekat naredbe return jeste formiranje vrednosti i završetak funkcije funkcije koje imaju vrednost mogu imati proizvoljan broj naredbi return, a najmanje jednu! 7 funkcija koja ima vrednost, a kada to ima smisla, može biti pozvana i prostom naredbom, umesto uključivanja u izraz takva funkcija je scanf koja, inače, ima vrednost jednaku broju uspešno učitanih promenljivih; kada je pozovemo prostom naredbom scanf("%d%d",&a,&b); vrednost funkcije (jednaka 2 ako su oba učitavanja uspešna) se ne koristi 8 Prenos argumenata u potprogram važi za sve programske jezike, procedurne i objektne prenos argumenata u potprogram i vraćanje vrednosti iz njega, obavlja se posredstvom posebne memorijske zone koju poseduje svaki program i koja se zove stek (stack) postoje dve vrste prenosa prenos po vrednosti prenos po adresi 9 3
70 prenos po vrednosti arg stek rezultat funkcija radi sa kopijom f prenos po adresi arg &arg stek rezultat funkcija radi sa originalom g 10 prenos po vrednosti u C-u, svi argumenti osim nizova prenose se po vrednosti double f(double x) { return 2*++x; //kopija x se povecava za 1 //original se ne menja! } a = 5.6; b = 2*f(a); //a zadrzava vrednosti 5.6! 11 prenos po adresi prenos po adresi vrši se tako što je parametar pokazivač očekuje se adresa argumenta int g(int *a) { (*a)++; //original se povecava za 1 return 10*a; } šalje se adresa argumenta p = 1; b = 2*g(&p); // b=20; p=2; 12 4
71 na steku se čuvaju: vrednosti svih parametara vrednosti svih lokalnih promenljivih (promenljivih koje su definisane unutar funkcije) vrednost funkcije (ako funkcija ima vrednost) podaci potrebni za nastavak programa po završetku funkcije (tzv. povratna adresa) po završetku funkcije, deo steka sa njenim podacima se eliminiše 13 Formiranje rezultata preko liste parametara ako neka funkcija treba da vrati više vrednosti ili ako je rezultat jedan ili više nizova, tada se rezultati prosleđuju preko liste parametara uz korišćenje prenosa po adresi, što se tretira kao bočni efekat primer za to je funkcija scanf za koju su promenljive koje se učitavaju - izlaz: k = scanf("%lf%lf",&a,&b); prenos po adresi 14 void funkcije void funkcije su potprogrami koji nemaju vrednost; ako imaju rezultat, on se prosleđuje preko liste parametara, prenosom po adresi pozivaju se prostim naredbama završavaju se ili izvršavanjem fizički poslednje linije koda ili naredbom return; naredbi return može biti više (ali i nijedna) 15 5
3.1 Granična vrednost funkcije u tački
3 Granična vrednost i neprekidnost funkcija 2 3 Granična vrednost i neprekidnost funkcija 3. Granična vrednost funkcije u tački Neka je funkcija f(x) definisana u tačkama x za koje je 0 < x x 0 < r, ili
Osnovni primer. (Z, +,,, 0, 1) je komutativan prsten sa jedinicom: množenje je distributivno prema sabiranju
RAČUN OSTATAKA 1 1 Prsten celih brojeva Z := N + {} N + = {, 3, 2, 1,, 1, 2, 3,...} Osnovni primer. (Z, +,,,, 1) je komutativan prsten sa jedinicom: sabiranje (S1) asocijativnost x + (y + z) = (x + y)
Iskazna logika 3. Matematička logika u računarstvu. novembar 2012
Iskazna logika 3 Matematička logika u računarstvu Department of Mathematics and Informatics, Faculty of Science,, Serbia novembar 2012 Deduktivni sistemi 1 Definicija Deduktivni sistem (ili formalna teorija)
Teorijske osnove informatike 1
Teorijske osnove informatike 1 9. oktobar 2014. () Teorijske osnove informatike 1 9. oktobar 2014. 1 / 17 Funkcije Veze me du skupovima uspostavljamo skupovima koje nazivamo funkcijama. Neformalno, funkcija
UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET SIGNALI I SISTEMI. Zbirka zadataka
UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Goran Stančić SIGNALI I SISTEMI Zbirka zadataka NIŠ, 014. Sadržaj 1 Konvolucija Literatura 11 Indeks pojmova 11 3 4 Sadržaj 1 Konvolucija Zadatak 1. Odrediti konvoluciju
Operacije s matricama
Linearna algebra I Operacije s matricama Korolar 3.1.5. Množenje matrica u vektorskom prostoru M n (F) ima sljedeća svojstva: (1) A(B + C) = AB + AC, A, B, C M n (F); (2) (A + B)C = AC + BC, A, B, C M
Elementi spektralne teorije matrica
Elementi spektralne teorije matrica Neka je X konačno dimenzionalan vektorski prostor nad poljem K i neka je A : X X linearni operator. Definicija. Skalar λ K i nenula vektor u X se nazivaju sopstvena
MATRICE I DETERMINANTE - formule i zadaci - (Matrice i determinante) 1 / 15
MATRICE I DETERMINANTE - formule i zadaci - (Matrice i determinante) 1 / 15 Matrice - osnovni pojmovi (Matrice i determinante) 2 / 15 (Matrice i determinante) 2 / 15 Matrice - osnovni pojmovi Matrica reda
numeričkih deskriptivnih mera.
DESKRIPTIVNA STATISTIKA Numeričku seriju podataka opisujemo pomoću Numeričku seriju podataka opisujemo pomoću numeričkih deskriptivnih mera. Pokazatelji centralne tendencije Aritmetička sredina, Medijana,
DISKRETNA MATEMATIKA - PREDAVANJE 7 - Jovanka Pantović
DISKRETNA MATEMATIKA - PREDAVANJE 7 - Jovanka Pantović Novi Sad April 17, 2018 1 / 22 Teorija grafova April 17, 2018 2 / 22 Definicija Graf je ure dena trojka G = (V, G, ψ), gde je (i) V konačan skup čvorova,
5. Karakteristične funkcije
5. Karakteristične funkcije Profesor Milan Merkle emerkle@etf.rs milanmerkle.etf.rs Verovatnoća i Statistika-proleće 2018 Milan Merkle Karakteristične funkcije ETF Beograd 1 / 10 Definicija Karakteristična
Verovatnoća i Statistika I deo Teorija verovatnoće (zadaci) Beleške dr Bobana Marinkovića
Verovatnoća i Statistika I deo Teorija verovatnoće zadaci Beleške dr Bobana Marinkovića Iz skupa, 2,, 00} bira se na slučajan način 5 brojeva Odrediti skup elementarnih dogadjaja ako se brojevi biraju
Program testirati pomoću podataka iz sledeće tabele:
Deo 2: Rešeni zadaci 135 Vrednost integrala je I = 2.40407 42. Napisati program za izračunavanje koeficijenta proste linearne korelacije (Pearsonovog koeficijenta) slučajnih veličina X = (x 1,..., x n
PRAVA. Prava je u prostoru određena jednom svojom tačkom i vektorom paralelnim sa tom pravom ( vektor paralelnosti).
PRAVA Prava je kao i ravan osnovni geometrijski ojam i ne definiše se. Prava je u rostoru određena jednom svojom tačkom i vektorom aralelnim sa tom ravom ( vektor aralelnosti). M ( x, y, z ) 3 Posmatrajmo
Pravilo 1. Svaki tip entiteta ER modela postaje relaciona šema sa istim imenom.
1 Pravilo 1. Svaki tip entiteta ER modela postaje relaciona šema sa istim imenom. Pravilo 2. Svaki atribut entiteta postaje atribut relacione šeme pod istim imenom. Pravilo 3. Primarni ključ entiteta postaje
Računarska grafika. Rasterizacija linije
Računarska grafika Osnovni inkrementalni algoritam Drugi naziv u literaturi digitalni diferencijalni analizator (DDA) Pretpostavke (privremena ograničenja koja se mogu otkloniti jednostavnim uopštavanjem
Strukture podataka i algoritmi 1. kolokvij 16. studenog Zadatak 1
Strukture podataka i algoritmi 1. kolokvij Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i službeni šalabahter. Predajete samo papire koje ste dobili. Rezultati i uvid u kolokvije: ponedjeljak,
Osnovne teoreme diferencijalnog računa
Osnovne teoreme diferencijalnog računa Teorema Rolova) Neka je funkcija f definisana na [a, b], pri čemu važi f je neprekidna na [a, b], f je diferencijabilna na a, b) i fa) fb). Tada postoji ξ a, b) tako
7 Algebarske jednadžbe
7 Algebarske jednadžbe 7.1 Nultočke polinoma Skup svih polinoma nad skupom kompleksnih brojeva označavamo sa C[x]. Definicija. Nultočka polinoma f C[x] je svaki kompleksni broj α takav da je f(α) = 0.
41. Jednačine koje se svode na kvadratne
. Jednačine koje se svode na kvadrane Simerične recipročne) jednačine Jednačine oblika a n b n c n... c b a nazivamo simerične jednačine, zbog simeričnosi koeficijenaa koeficijeni uz jednaki). k i n k
IZVODI ZADACI (I deo)
IZVODI ZADACI (I deo) Najpre da se podsetimo tablice i osnovnih pravila:. C`=0. `=. ( )`= 4. ( n )`=n n-. (a )`=a lna 6. (e )`=e 7. (log a )`= 8. (ln)`= ` ln a (>0) 9. = ( 0) 0. `= (>0) (ovde je >0 i a
ELEKTROTEHNIČKI ODJEL
MATEMATIKA. Neka je S skup svih živućih državljana Republike Hrvatske..04., a f preslikavanje koje svakom elementu skupa S pridružuje njegov horoskopski znak (bez podznaka). a) Pokažite da je f funkcija,
MATEMATIKA 2. Grupa 1 Rexea zadataka. Prvi pismeni kolokvijum, Dragan ori
MATEMATIKA 2 Prvi pismeni kolokvijum, 14.4.2016 Grupa 1 Rexea zadataka Dragan ori Zadaci i rexea 1. unkcija f : R 2 R definisana je sa xy 2 f(x, y) = x2 + y sin 3 2 x 2, (x, y) (0, 0) + y2 0, (x, y) =
M086 LA 1 M106 GRP. Tema: Baza vektorskog prostora. Koordinatni sustav. Norma. CSB nejednakost
M086 LA 1 M106 GRP Tema: CSB nejednakost. 19. 10. 2017. predavač: Rudolf Scitovski, Darija Marković asistent: Darija Brajković, Katarina Vincetić P 1 www.fizika.unios.hr/grpua/ 1 Baza vektorskog prostora.
Ispitivanje toka i skiciranje grafika funkcija
Ispitivanje toka i skiciranje grafika funkcija Za skiciranje grafika funkcije potrebno je ispitati svako od sledećih svojstava: Oblast definisanosti: D f = { R f R}. Parnost, neparnost, periodičnost. 3
IZVODI ZADACI ( IV deo) Rešenje: Najpre ćemo logaritmovati ovu jednakost sa ln ( to beše prirodni logaritam za osnovu e) a zatim ćemo
IZVODI ZADACI ( IV deo) LOGARITAMSKI IZVOD Logariamskim izvodom funkcije f(), gde je >0 i, nazivamo izvod logarima e funkcije, o jes: (ln ) f ( ) f ( ) Primer. Nadji izvod funkcije Najpre ćemo logarimovai
2log. se zove numerus (logaritmand), je osnova (baza) log. log. log =
( > 0, 0)!" # > 0 je najčešći uslov koji postavljamo a još je,, > 0 se zove numerus (aritmand), je osnova (baza). 0.. ( ) +... 7.. 8. Za prelazak na neku novu bazu c: 9. Ako je baza (osnova) 0 takvi se
Kontrolni zadatak (Tačka, prava, ravan, diedar, poliedar, ortogonalna projekcija), grupa A
Kontrolni zadatak (Tačka, prava, ravan, diedar, poliedar, ortogonalna projekcija), grupa A Ime i prezime: 1. Prikazane su tačke A, B i C i prave a,b i c. Upiši simbole Î, Ï, Ì ili Ë tako da dobijeni iskazi
Parser primer kalkulatora
Parser primer kalkulatora Primer gramatike za jednostavni kalkulator lines ε lines NEWLINE lines e NEWLINE e e "+" NUMBER e " " NUMBER NUMBER (podrazumeva se da su NUMBER i NEWLINE simboli) Ulaz: Izlaz:
SISTEMI NELINEARNIH JEDNAČINA
SISTEMI NELINEARNIH JEDNAČINA April, 2013 Razni zapisi sistema Skalarni oblik: Vektorski oblik: F = f 1 f n f 1 (x 1,, x n ) = 0 f n (x 1,, x n ) = 0, x = (1) F(x) = 0, (2) x 1 0, 0 = x n 0 Definicije
IspitivaƬe funkcija: 1. Oblast definisanosti funkcije (ili domen funkcije) D f
IspitivaƬe funkcija: 1. Oblast definisanosti funkcije (ili domen funkcije) D f IspitivaƬe funkcija: 1. Oblast definisanosti funkcije (ili domen funkcije) D f 2. Nule i znak funkcije; presek sa y-osom IspitivaƬe
Algoritmi zadaci za kontrolni
Algoritmi zadaci za kontrolni 1. Nacrtati algoritam za sabiranje ulaznih brojeva a i b Strana 1 . Nacrtati algoritam za izračunavanje sledeće funkcije: x y x 1 1 x x ako ako je : je : x x 1 x x 1 Strana
a M a A. Može se pokazati da je supremum (ako postoji) jedinstven pa uvodimo oznaku sup A.
3 Infimum i supremum Definicija. Neka je A R. Kažemo da je M R supremum skupa A ako je (i) M gornja meda skupa A, tj. a M a A. (ii) M najmanja gornja meda skupa A, tj. ( ε > 0)( a A) takav da je a > M
Pismeni ispit iz matematike Riješiti sistem jednačina i diskutovati rješenja sistema u zavisnosti od parametra: ( ) + 1.
Pismeni ispit iz matematike 0 008 GRUPA A Riješiti sistem jednačina i diskutovati rješenja sistema u zavisnosti od parametra: λ + z = Ispitati funkciju i nacrtati njen grafik: + ( λ ) + z = e Izračunati
Zadaci sa prethodnih prijemnih ispita iz matematike na Beogradskom univerzitetu
Zadaci sa prethodnih prijemnih ispita iz matematike na Beogradskom univerzitetu Trigonometrijske jednačine i nejednačine. Zadaci koji se rade bez upotrebe trigonometrijskih formula. 00. FF cos x sin x
Univerzitet u Nišu Građevinsko-arhitektonski fakultet. Informatika2. 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje.
Univerzitet u Nišu Građevinsko-arhitektonski fakultet Informatika2 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje Milica Ćirić Ciklična algoritamska struktura Ciklična struktura (petlja)
APROKSIMACIJA FUNKCIJA
APROKSIMACIJA FUNKCIJA Osnovni koncepti Gradimir V. Milovanović MF, Beograd, 14. mart 2011. APROKSIMACIJA FUNKCIJA p.1/46 Osnovni problem u TA Kako za datu funkciju f iz velikog prostora X naći jednostavnu
Zavrxni ispit iz Matematiqke analize 1
Građevinski fakultet Univerziteta u Beogradu 3.2.2016. Zavrxni ispit iz Matematiqke analize 1 Prezime i ime: Broj indeksa: 1. Definisati Koxijev niz. Dati primer niza koji nije Koxijev. 2. Dat je red n=1
I.13. Koliki je napon između neke tačke A čiji je potencijal 5 V i referentne tačke u odnosu na koju se taj potencijal računa?
TET I.1. Šta je Kulonova sila? elektrostatička sila magnetna sila c) gravitaciona sila I.. Šta je elektrostatička sila? sila kojom međusobno eluju naelektrisanja u mirovanju sila kojom eluju naelektrisanja
Sistemi veštačke inteligencije primer 1
Sistemi veštačke inteligencije primer 1 1. Na jeziku predikatskog računa formalizovati rečenice: a) Miloš je slikar. b) Sava nije slikar. c) Svi slikari su umetnici. Uz pomoć metode rezolucije dokazati
Univerzitet u Nišu Građevinsko-arhitektonski fakultet. Konstante, promenljive, identifikatori, operatori Biblioteka funkcija Milica Ćirić
Univerzitet u Nišu Građevinsko-arhitektonski fakultet Informatika 2 Mathematica Konstante, promenljive, identifikatori, operatori Biblioteka funkcija Milica Ćirić Mathematica Programski paket Mathematica
Dijagonalizacija operatora
Dijagonalizacija operatora Problem: Može li se odrediti baza u kojoj zadani operator ima dijagonalnu matricu? Ova problem je povezan sa sljedećim pojmovima: 1 Karakteristični polinom operatora f 2 Vlastite
XI dvoqas veжbi dr Vladimir Balti. 4. Stabla
XI dvoqas veжbi dr Vladimir Balti 4. Stabla Teorijski uvod Teorijski uvod Definicija 5.7.1. Stablo je povezan graf bez kontura. Definicija 5.7.1. Stablo je povezan graf bez kontura. Primer 5.7.1. Sva stabla
Programski jezik C - 1. deo. Struktura C-programa. Struktura programa u C-u. (materijal sa predavanja D. Vitasa)
Programski jezik C - 1. deo (materijal sa predavanja D. Vitasa) Struktura C-programa Struktura programa Promenljive i ključne reči Adresiranje Struktura programa u C-u Program se sastoji od funkcija. Sve
Linearna algebra 2 prvi kolokvij,
1 2 3 4 5 Σ jmbag smjer studija Linearna algebra 2 prvi kolokvij, 7. 11. 2012. 1. (10 bodova) Neka je dano preslikavanje s : R 2 R 2 R, s (x, y) = (Ax y), pri čemu je A: R 2 R 2 linearan operator oblika
KVADRATNA FUNKCIJA. Kvadratna funkcija je oblika: Kriva u ravni koja predstavlja grafik funkcije y = ax + bx + c. je parabola.
KVADRATNA FUNKCIJA Kvadratna funkcija je oblika: = a + b + c Gde je R, a 0 i a, b i c su realni brojevi. Kriva u ravni koja predstavlja grafik funkcije = a + b + c je parabola. Najpre ćemo naučiti kako
III VEŽBA: FURIJEOVI REDOVI
III VEŽBA: URIJEOVI REDOVI 3.1. eorijska osnova Posmatrajmo neki vremenski kontinualan signal x(t) na intervalu definisati: t + t t. ada se može X [ k ] = 1 t + t x ( t ) e j 2 π kf t dt, gde je f = 1/.
Računarska grafika. Rasterizacija linije
Računarska grafika Osnovni inkrementalni algoritam Drugi naziv u literaturi digitalni diferencijalni analizator (DDA) Pretpostavke (privremena ograničenja koja se mogu otkloniti jednostavnim uopštavanjem
PARCIJALNI IZVODI I DIFERENCIJALI. Sama definicija parcijalnog izvoda i diferencijala je malo teža, mi se njome ovde nećemo baviti a vi ćete je,
PARCIJALNI IZVODI I DIFERENCIJALI Sama definicija parcijalnog ivoda i diferencijala je malo teža, mi se njome ovde nećemo baviti a vi ćete je, naravno, naučiti onako kako vaš profesor ahteva. Mi ćemo probati
2 tg x ctg x 1 = =, cos 2x Zbog četvrtog kvadranta rješenje je: 2 ctg x
Zadatak (Darjan, medicinska škola) Izračunaj vrijednosti trigonometrijskih funkcija broja ako je 6 sin =,,. 6 Rješenje Ponovimo trigonometrijske funkcije dvostrukog kuta! Za argument vrijede sljedeće formule:
Funkcije. Definisanje funkcija. [tip] ime(argumenti) telo
Funkcije Definisanje funkcija Potprogrami: dekompozicija složenih problema na jednostavnije procesna apstrakcija samo funkcije (nema procedura) funkcija - n-arni operator najvišeg prioriteta vraća rezultat
Obrada signala
Obrada signala 1 18.1.17. Greška kvantizacije Pretpostavka je da greška kvantizacije ima uniformnu raspodelu 7 6 5 4 -X m p x 1,, za x druge vrednosti x 3 x X m 1 X m = 3 x Greška kvantizacije x x x p
EXIT. Programski jezik C - 6. deo. Funkcija exit. (materijal sa predavanja D. Vitasa)
Programski jezik C - 6. deo (materijal sa predavanja D. Vitasa) EXIT Funkcija exit Funkcija exit se nalazi u sa prototipom void exit( status ); Izaziva normalan završetak programa (zatvaranje
KOMUTATIVNI I ASOCIJATIVNI GRUPOIDI. NEUTRALNI ELEMENT GRUPOIDA.
KOMUTATIVNI I ASOCIJATIVNI GRUPOIDI NEUTRALNI ELEMENT GRUPOIDA 1 Grupoid (G, ) je asocijativa akko važi ( x, y, z G) x (y z) = (x y) z Grupoid (G, ) je komutativa akko važi ( x, y G) x y = y x Asocijativa
INFORMATIKA II MATLAB 2. deo. Rudarsko-geološki fakultet Rudarski odsek
INFORMATIKA II MATLAB 2. deo Rudarsko-geološki fakultet Rudarski odsek Nizovi Niz (array) je osnovni oblik u kojem MATLAB čuva podatke i radi s njima Niz je skup brojeva poređanih u vrste (redove) i/ili
10 Iskazni račun - deduktivni sistem za iskaznu logiku
10 Iskazni račun - deduktivni sistem za iskaznu logiku Definicija 20 Iskazni račun je deduktivni sistem H = X, F orm, Ax, R, gde je X = S {,, (, )}, gde S = {p 1, p 2,..., p n,... }, F orm je skup iskaznih
FORMALNI SISTEMI KAO OSNOVA ZA PROJEKTOVANJE KOMPAJLERA
FORMALNI SISTEMI KAO OSNOVA ZA PROJEKTOVANJE KOMPAJLERA Definicije Sintaksa, Semantika Projektovanje kompajlera kompajlera. 1 Kompajler, Procedura, Algoritam: KOMPAJLER: prevodioc sa višeg programskog
1 Promjena baze vektora
Promjena baze vektora Neka su dane dvije različite uredene baze u R n, označimo ih s A = (a, a,, a n i B = (b, b,, b n Svaki vektor v R n ima medusobno različite koordinatne zapise u bazama A i B Zapis
Konstruisati efikasan algoritam znači dati skup preciznih uputstava kako doći do rešenja zadatog problema Algoritmi se mogu opisivati:
Staša Vujičić Konstruisati efikasan algoritam znači dati skup preciznih uputstava kako doći do rešenja zadatog problema Algoritmi se mogu opisivati: pseudo jezikom prirodnim jezikom dijagramom toka. 2
Iskazna logika 1. Matematička logika. Department of Mathematics and Informatics, Faculty of Science, University of Novi Sad, Serbia.
Matematička logika Department of Mathematics and Informatics, Faculty of Science,, Serbia oktobar 2012 Iskazi, istinitost, veznici Intuitivno, iskaz je rečenica koja je ima tačno jednu jednu istinitosnu
radni nerecenzirani materijal za predavanja R(f) = {f(x) x D}
Matematika 1 Funkcije radni nerecenzirani materijal za predavanja Definicija 1. Neka su D i K bilo koja dva neprazna skupa. Postupak f koji svakom elementu x D pridružuje točno jedan element y K zovemo funkcija
Matematička logika. novembar 2012
Predikatska logika 1 Matematička logika Department of Mathematics and Informatics, Faculty of Science, University of Novi Sad, Serbia novembar 2012 1 različiti nazivi: predikatska logika, logika prvog
PID: Domen P je glavnoidealski [PID] akko svaki ideal u P je glavni (generisan jednim elementom; oblika ap := {ab b P }, za neko a P ).
0.1 Faktorizacija: ID, ED, PID, ND, FD, UFD Definicija. Najava pojmova: [ID], [ED], [PID], [ND], [FD] i [UFD]. ID: Komutativan prsten P, sa jedinicom 1 0, je integralni domen [ID] oblast celih), ili samo
1. Pojam fazi skupa. 2. Pojam fazi skupa. 3. Funkcija pripadnosti, osobine i oblici. 4. Funkcija pripadnosti, osobine i oblici
Meko računarstvo Student: Indeks:. Poja fazi skupa. Vrednost fazi funkcije pripadnosti je iz skupa/opsega: a) {0, b) R c) N d) N 0 e) [0, ] f) [-, ] 2. Poja fazi skupa 2. Na slici je prikazan grafik: a)
DRUGI KOLOKVIJUM IZ MATEMATIKE 9x + 6y + z = 1 4x 2y + z = 1 x + 2y + 3z = 2. je neprekidna za a =
x, y, z) 2 2 1 2. Rešiti jednačinu: 2 3 1 1 2 x = 1. x = 3. Odrediti rang matrice: rang 9x + 6y + z = 1 4x 2y + z = 1 x + 2y + 3z = 2. 2 0 1 1 1 3 1 5 2 8 14 10 3 11 13 15 = 4. Neka je A = x x N x < 7},
Klasifikacija blizu Kelerovih mnogostrukosti. konstantne holomorfne sekcione krivine. Kelerove. mnogostrukosti. blizu Kelerove.
Klasifikacija blizu Teorema Neka je M Kelerova mnogostrukost. Operator krivine R ima sledeća svojstva: R(X, Y, Z, W ) = R(Y, X, Z, W ) = R(X, Y, W, Z) R(X, Y, Z, W ) + R(Y, Z, X, W ) + R(Z, X, Y, W ) =
4.7. Zadaci Formalizam diferenciranja (teorija na stranama ) 343. Znajući izvod funkcije x arctg x, odrediti izvod funkcije x arcctg x.
4.7. ZADACI 87 4.7. Zadaci 4.7.. Formalizam diferenciranja teorija na stranama 4-46) 340. Znajući izvod funkcije arcsin, odrediti izvod funkcije arccos. Rešenje. Polazeći od jednakosti arcsin + arccos
Programiranje 1 6. predavanje
Programiranje 1 6. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 6. predavanje p. 1/91 Sadržaj predavanja Konstante i varijable: Konstante.
FTN Novi Sad Katedra za motore i vozila. Teorija kretanja drumskih vozila Vučno-dinamičke performanse vozila: MAKSIMALNA BRZINA
: MAKSIMALNA BRZINA Maksimalna brzina kretanja F O (N) F OI i m =i I i m =i II F Oid Princip određivanja v MAX : Drugi Njutnov zakon Dokle god je: F O > ΣF otp vozilo ubrzava Kada postane: F O = ΣF otp
Programiranje I - II deo, šk. 2008/09. g.
Programiranje I - II deo, šk. 2008/09. g. dr Gordana Pavlović-Lažetić 5 Pregled programskog jezika C U ovoj tački biće izložen kratki pregled programskog jezika C, i to kroz prikaz njegovih osnovnih karakteristika,
Betonske konstrukcije 1 - vežbe 3 - Veliki ekscentricitet -Dodatni primeri
Betonske konstrukcije 1 - vežbe 3 - Veliki ekscentricitet -Dodatni primeri 1 1 Zadatak 1b Čisto savijanje - vezano dimenzionisanje Odrediti potrebnu površinu armature za presek poznatih dimenzija, pravougaonog
SKUPOVI I SKUPOVNE OPERACIJE
SKUPOVI I SKUPOVNE OPERACIJE Ne postoji precizna definicija skupa (postoji ali nama nije zanimljiva u ovom trenutku), ali mi možemo koristiti jednu definiciju koja će nam donekle dočarati šta su zapravo
IZVODI ZADACI (I deo)
IZVODI ZADACI (I deo Najpre da se podsetimo tablice i osnovnih pravila:. C0.. (. ( n n n-. (a a lna 6. (e e 7. (log a 8. (ln ln a (>0 9. ( 0 0. (>0 (ovde je >0 i a >0. (cos. (cos - π. (tg kπ cos. (ctg
(P.I.) PRETPOSTAVKA INDUKCIJE - pretpostavimo da tvrdnja vrijedi za n = k.
1 3 Skupovi brojeva 3.1 Skup prirodnih brojeva - N N = {1, 2, 3,...} Aksiom matematičke indukcije Neka je N skup prirodnih brojeva i M podskup od N. Ako za M vrijede svojstva: 1) 1 M 2) n M (n + 1) M,
IZRAČUNAVANJE POKAZATELJA NAČINA RADA NAČINA RADA (ISKORIŠĆENOSTI KAPACITETA, STEPENA OTVORENOSTI RADNIH MESTA I NIVOA ORGANIZOVANOSTI)
IZRAČUNAVANJE POKAZATELJA NAČINA RADA NAČINA RADA (ISKORIŠĆENOSTI KAPACITETA, STEPENA OTVORENOSTI RADNIH MESTA I NIVOA ORGANIZOVANOSTI) Izračunavanje pokazatelja načina rada OTVORENOG RM RASPOLOŽIVO RADNO
Kaskadna kompenzacija SAU
Kaskadna kompenzacija SAU U inženjerskoj praksi, naročito u sistemima regulacije elektromotornih pogona i tehnoloških procesa, veoma često se primenjuje metoda kaskadne kompenzacije, u čijoj osnovi su
5 Ispitivanje funkcija
5 Ispitivanje funkcija 3 5 Ispitivanje funkcija Ispitivanje funkcije pretodi crtanju grafika funkcije. Opšti postupak ispitivanja funkcija koje su definisane eksplicitno y = f() sadrži sledeće elemente:
Riješeni zadaci: Nizovi realnih brojeva
Riješei zadaci: Nizovi realih brojeva Nizovi, aritmetički iz, geometrijski iz Fukciju a : N R azivamo beskoači) iz realih brojeva i ozačavamo s a 1, a,..., a,... ili a ), pri čemu je a = a). Aritmetički
18. listopada listopada / 13
18. listopada 2016. 18. listopada 2016. 1 / 13 Neprekidne funkcije Važnu klasu funkcija tvore neprekidne funkcije. To su funkcije f kod kojih mala promjena u nezavisnoj varijabli x uzrokuje malu promjenu
radni nerecenzirani materijal za predavanja
Matematika 1 Funkcije radni nerecenzirani materijal za predavanja Definicija 1. Kažemo da je funkcija f : a, b R u točki x 0 a, b postiže lokalni minimum ako postoji okolina O(x 0 ) broja x 0 takva da je
1 Afina geometrija. 1.1 Afini prostor. Definicija 1.1. Pod afinim prostorom nad poljem K podrazumevamo. A - skup taqaka
1 Afina geometrija 11 Afini prostor Definicija 11 Pod afinim prostorom nad poljem K podrazumevamo svaku uređenu trojku (A, V, +): A - skup taqaka V - vektorski prostor nad poljem K + : A V A - preslikavanje
3. STRUKTURE PODATAKA
3 STRUKTURE PODATAKA Osnovni ili primitivni tipovi podataka sa kojima se instrukcijama mikroprocesora C68020 direktno operiše, su označene i neoznačene celobrojne vrednosti, BCD celobrojne vrednosti i
Prvi pismeni zadatak iz Analize sa algebrom novembar Ispitati znak funkcije f(x) = tgx x x3. 2. Naći graničnu vrednost lim x a
Testovi iz Analize sa algebrom 4 septembar - oktobar 009 Ponavljanje izvoda iz razreda (f(x) = x x ) Ispitivanje uslova Rolove teoreme Ispitivanje granične vrednosti f-je pomoću Lopitalovog pravila 4 Razvoj
SOPSTVENE VREDNOSTI I SOPSTVENI VEKTORI LINEARNOG OPERATORA I KVADRATNE MATRICE
1 SOPSTVENE VREDNOSTI I SOPSTVENI VEKTORI LINEARNOG OPERATORA I KVADRATNE MATRICE Neka je (V, +,, F ) vektorski prostor konačne dimenzije i neka je f : V V linearno preslikavanje. Definicija. (1) Skalar
21. ŠKOLSKO/OPĆINSKO/GRADSKO NATJECANJE IZ GEOGRAFIJE GODINE 8. RAZRED TOČNI ODGOVORI
21. ŠKOLSKO/OPĆINSKO/GRADSKO NATJECANJE IZ GEOGRAFIJE 2014. GODINE 8. RAZRED TOČNI ODGOVORI Bodovanje za sve zadatke: - boduju se samo točni odgovori - dodatne upute navedene su za pojedine skupine zadataka
Inženjerska grafika geometrijskih oblika (5. predavanje, tema1)
Inženjerska grafika geometrijskih oblika (5. predavanje, tema1) Prva godina studija Mašinskog fakulteta u Nišu Predavač: Dr Predrag Rajković Mart 19, 2013 5. predavanje, tema 1 Simetrija (Symmetry) Simetrija
Apsolutno neprekidne raspodele Raspodele apsolutno neprekidnih sluqajnih promenljivih nazivaju se apsolutno neprekidnim raspodelama.
Apsolutno neprekidne raspodele Raspodele apsolutno neprekidnih sluqajnih promenljivih nazivaju se apsolutno neprekidnim raspodelama. a b Verovatno a da sluqajna promenljiva X uzima vrednost iz intervala
Algoritmi i strukture podataka - 1.cas
Algoritmi i strukture podataka - 1.cas Aleksandar Veljković October 2016 Materijali su zasnovani na materijalima Mirka Stojadinovića 1 Složenost algoritama Približna procena vremena ili prostora potrebnog
KVADRATNA FUNKCIJA. Kvadratna funkcija je oblika: Kriva u ravni koja predstavlja grafik funkcije y = ax + bx + c. je parabola.
KVADRATNA FUNKCIJA Kvadratna funkcija je oblika: a + b + c Gde je R, a 0 i a, b i c su realni brojevi. Kriva u ravni koja predstavlja grafik funkcije a + b + c je parabola. Najpre ćemo naučiti kako izgleda
Algebarske strukture sa jednom operacijom (A, ): Ako operacija ima osobine: zatvorenost i asocijativnost, onda je (A, ) polugrupa
Binarne operacije Binarna operacija na skupu A je preslikavanje skupa A A u A, to jest : A A A. Pišemo a b = c. Označavanje operacija:,,,. Poznate operacije: sabiranje (+), oduzimanje ( ), množenje ( ).
Linearna algebra 2 prvi kolokvij,
Linearna algebra 2 prvi kolokvij, 27.. 20.. Za koji cijeli broj t je funkcija f : R 4 R 4 R definirana s f(x, y) = x y (t + )x 2 y 2 + x y (t 2 + t)x 4 y 4, x = (x, x 2, x, x 4 ), y = (y, y 2, y, y 4 )
Riješeni zadaci: Limes funkcije. Neprekidnost
Riješeni zadaci: Limes funkcije. Neprekidnost Limes funkcije Neka je 0 [a, b] i f : D R, gdje je D = [a, b] ili D = [a, b] \ { 0 }. Kažemo da je es funkcije f u točki 0 jednak L i pišemo f ) = L, ako za
INTELIGENTNO UPRAVLJANJE
INTELIGENTNO UPRAVLJANJE Fuzzy sistemi zaključivanja Vanr.prof. Dr. Lejla Banjanović-Mehmedović Mehmedović 1 Osnovni elementi fuzzy sistema zaključivanja Fazifikacija Baza znanja Baze podataka Baze pravila
Neka su A i B proizvoljni neprazni skupovi. Korespondencija iz skupa A u skup B definiše se kao proizvoljan podskup f Dekartovog proizvoda A B.
Korespondencije Neka su A i B proizvoljni neprazni skupovi. Korespondencija iz skupa A u skup B definiše se kao proizvoljan podskup f Dekartovog proizvoda A B. Pojmovi B pr 2 f A B f prva projekcija od
Sortiranje prebrajanjem (Counting sort) i Radix Sort
Sortiranje prebrajanjem (Counting sort) i Radix Sort 15. siječnja 2016. Ante Mijoč Uvod Teorem Ako je f(n) broj usporedbi u algoritmu za sortiranje temeljenom na usporedbama (eng. comparison-based sorting
RAČUNSKE VEŽBE IZ PREDMETA POLUPROVODNIČKE KOMPONENTE (IV semestar modul EKM) IV deo. Miloš Marjanović
Univerzitet u Nišu Elektronski fakultet RAČUNSKE VEŽBE IZ PREDMETA (IV semestar modul EKM) IV deo Miloš Marjanović MOSFET TRANZISTORI ZADATAK 35. NMOS tranzistor ima napon praga V T =2V i kroz njega protiče
Zadaci iz trigonometrije za seminar
Zadaci iz trigonometrije za seminar FON: 1. Vrednost izraza sin 1 cos 6 jednaka je: ; B) 1 ; V) 1 1 + 1 ; G) ; D). 16. Broj rexea jednaqine sin x cos x + cos x = sin x + sin x na intervalu π ), π je: ;
RIJEŠENI ZADACI I TEORIJA IZ
RIJEŠENI ZADACI I TEORIJA IZ LOGARITAMSKA FUNKCIJA SVOJSTVA LOGARITAMSKE FUNKCIJE OSNOVE TRIGONOMETRIJE PRAVOKUTNOG TROKUTA - DEFINICIJA TRIGONOMETRIJSKIH FUNKCIJA - VRIJEDNOSTI TRIGONOMETRIJSKIH FUNKCIJA
Trigonometrijske nejednačine
Trignmetrijske nejednačine T su nejednačine kd kjih se nepznata javlja ka argument trignmetrijske funkcije. Rešiti trignmetrijsku nejednačinu znači naći sve uglve kji je zadvljavaju. Prilikm traženja rešenja
POTPUNO RIJEŠENIH ZADATAKA PRIRUČNIK ZA SAMOSTALNO UČENJE
**** MLADEN SRAGA **** 011. UNIVERZALNA ZBIRKA POTPUNO RIJEŠENIH ZADATAKA PRIRUČNIK ZA SAMOSTALNO UČENJE SKUP REALNIH BROJEVA α Autor: MLADEN SRAGA Grafički urednik: BESPLATNA - WEB-VARIJANTA Tisak: M.I.M.-SRAGA