Programiranje I - II deo, šk. 2008/09. g.
|
|
- Σαλώμη Αλεξίου
- 7 χρόνια πριν
- Προβολές:
Transcript
1 Programiranje I - II deo, šk. 2008/09. g. dr Gordana Pavlović-Lažetić
2 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, i kroz pored enje sa svojstvima programskog jezika Pascal. 5.1 Filozofija jezika Programski jezik C je mali jezik (kao i Pascal) i može jednostavno da se implementira na malim mašinama. Programski jezik C potiče od jezika BCPL i B, koji su korišćeni za pisanje operativnih sistema i jezičkih procesora. Ovi jezici obezbed uju efikasan interfejs prema tehničkom sistemu računara (hardveru), nisu tipizirani i omogućuju različite interpretacije jednog podatka. Osnovni doprinos C-a, u odnosu na ove jezike, jesu tipizirane promenljive. Programski jezik C implementiran je godine (Dennis Ritchie), kao jezik za programiranje aplikacija pod UNIX operativnim sistemom na DEC PDP-11 seriji računara. Godine izgrad ena je verzija programskog jezika C (Portable C compiler) nezavisna od vrste računara, koja je omogućila prenosivost programa napisanih u C-u. S obzirom na svoju filozofiju i namenu, programski jezik C blizak je operacijama mašinskog nivoa, omogućuje rad sa pojedinačnim bitovima i memorijskim adresama, fleksibilan je. Ova fleksibilnost i odsustvo restrikcija čini ga primenljivim u raznovrsnijim (u odnosu na Pascal) domenima programiranja. Takod e, u odnosu na Pascal, a baš zbog odsustva restrikcija (npr. stroge tipiziranosti) i malog broja tipova, programi napisani u programskom jeziku C su manje pouzdani i teže čitljivi nego programi napisani u programskom jeziku Pascal. Dok je cilj izgradnje programskog jezika Pascal bio razvoj pouzdanih pro- 39
3 40 5. Pregled programskog jezika C grama primenom strogih ograničenja jezika, pomoć pri otkrivanju grešaka i onemogućenje pristupa memorijskim lokacijama izvan zone podataka (otuda i njegova ograničenja), dotle je programski jezik C oslobod en mnogih ograničenja kako bi bio primenljiv u širokom spektru aplikacija. Jezik je mali i ne uključuje svojstva kao što su ulaz/izlaz, matematičke (elementarne) funkcije sin, cos, exp, itd., ali se ove komponente ugrad uju u C iz odgovarajućih biblioteka. Osnovna razlika izmed u programskog jezika C i Pascal-a je upravo tretman tipova. Pascal je nastao od svojih tipiziranih prethodnika (Algol60, AlgolW), i veoma je blizu tzv. strogo tipiziranim jezicima. Pri tome se stroga tipiziranost karakteriše sledećim principima: 1. Svaki objekat u jeziku pripada tačno jednom tipu. 2. Konverzija tipova se odvija konvertovanjem vrednosti iz jednog tipa u drugi, tj. transformacijom reprezentacije vrednosti a ne različitom interpretacijom iste reprezentacije. Programski jezik C, mada je tipiziran (ima tipove), nije strogo tipiziran jezik. Stroga tipiziranost povećava jasnoću programa i pouzdanost. Programski jezik C, kao deo svoje filozofije, pruža programeru slobodu interpretacije iste reprezentacije (u slučaju unije i komponenti strukture, prenosa parametara, pokazivača). Nedostaci stroge tipiziranosti Pascal-a ogledaju se, na primer, u strogom dimenzionisanju nizova i nemogućnosti izgradnje procedura za rad sa nizovima različitih dimenzija; slaba tipiziranost C-a dopunjuje se strožim tipovima u novijim verzijama jezika. S druge strane, a u vezi sa tipovima, ovi jezici se razlikuju po opsegu implicitne konverzije tipova: u Pascal-u se implicitno mogu transformisati samo podintervalni u odgovarajuće osnovne tipove, i ceo u realni tip to su konverzije kojima se ne gubi informacija; u C-u može da se izvrši implicitna konverzija izmed u bilo koja dva njegova osnovna tipa ili pokazivača. 5.2 Struktura programa Sledeća svojstva karakterišu strukturu programa na programskom jeziku C: 1. Program može da se sastoji od većeg broja rutina (potprograma) koje se nalaze u većem broju izvornih datoteka (program u Pascal-u sastoji se od zaglavlja i tela programa i tačke; telo programa sastoji se od odeljaka za deklarisanje obeležja, definisanje konstanti, definisanje tipova, deklarisanje promenljivih, deklarisanje rutina (procedura i funkcija), i odeljka sa iskazima). 2. Jedna izvorna datoteka sastoji se od spoljašnjih (external) objekata podataka i funkcija (to su podaci koji su definisani izvan funkcija a sve funkcije su spoljašnje) i koji mogu biti deklarisani kao lokalni za tu datoteku (to su
4 5.2. Struktura programa 41 statički static objekti) ili globalni za sve datoteke tog programa. Dakle, važenje imena (objekata) vezano je za fizičku datoteku, a ne za blok ili rutinu (u Pascal-u važe normalna pravila važenja objekata u blokovskim strukturnim jezicima; objekti su lokalni za rutine procedure i funkcije u kojima su deklarisani, a globalni za rutine sadržane (deklarisane) u rutini u kojoj je objekat deklarisan). Jedan spoljašnji objekat dostupan je svim funkcijama u istoj izvornoj datoteci koje slede za definicijom tog objekta. Pristup spoljašnjim objektima definisanim u jednoj izvornoj datoteci, od strane funkcija iz druge datoteke, postiže se navod enjem deklaracije external koja samo navodi ime i tip ali ne rezerviše memorijski prostor. 3. Svi izvršni iskazi sadržani su u blokovima koji mogu da budu ugnježdeni do proizvoljne dubine. Promenljive mogu da budu deklarisane na početku bilo kog bloka (i vide se samo u tom bloku). Svaki iskaz završava se tačakazapetom (;), a blokovi su uokvireni zagradama ({, ) (u Pascal-u iskazi se razdvajaju tačka-zapetom, a blokovi se uokviruju rezervisanim rečima BEGIN END; promenljive se uvode samo na početku rutine odnosno programa). 4. Većina izvornih datoteka C-programa počinje uvodnim delom sa tzv. preprocesorskim instrukcijama. Standardni uvodi uključuju se sredstvima preprocesora. Preprocesorska instrukcija počinje znakom #. 5. Po konvenciji, svaki program ima funkciju main kojom počinje izvršavanje. 6. Sve C-ovske rutine (potprogrami) su funkcije. Svaka funkcija može da vraća vrednost, koja može biti bilo kog tipa osim nizovskog (u Pascalu rutine su procedure koje ne vraćaju vrednost i funkcije koje vraćaju vrednost skalarnog ili pokazivačkog tipa). C-ovske rutine navode se jedna za drugom unutar jedne izvorne datoteke, dok u Pascal-u mogu biti ugnježdene (lokalne deklarisane jedna unutar druge). Zato C nije blokovski jezik u punom smislu dok Pascal jeste. 7. Parametri funkcija prenose se po vrednosti, osim za nizove. Vrednost nizovskog parametra je adresa prvog elementa niza (u Pascal-u, parametri se prenose po vrednosti ili po imenu). 8. Izvršavanje funkcije završava se posle izvršenja poslednjeg iskaza funkcije, ili posle izvršenja return iskaza. Funkcija ne mora da izračunava (i vraća) vrednost, a ako to čini, onda se iskaz return koristi i za vraćanje vrednosti funkcije (u Pascal-u, izvršavanje rutine procedure ili funkcije, završava se izvršenjem poslednjeg iskaza; svaka funkcija vraća vrednost čiji tip se deklariše u zaglavlju deklaracije funkcije, i koja se dodeljuje imenu funkcije). 9. Komentari se pišu izmed u para oznaka /, / (u Pascal-u, izmed u zagrada {, ).
5 42 5. Pregled programskog jezika C 5.3 Primer programa Da bismo ilustrovali strukturu programa na programskom jeziku C (i uporedili je sa strukturom programa na jeziku Pascal), razmotrimo primer funkcije za binarno pretraživanje. Funkcija uzima niz slogova sortiranih po ključnom polju i traži slog sa zadatom vrednošću ključnog polja; vraća indeks sloga čija je vrednost ključnog polja jednaka traženoj, ako takav postoji, i indikator neuspeha, u suprotnom. Ako su slogovi u nizu A a vrednost ključa koja se traži u promenljivoj k, algoritam može imati sledeći oblik: 1. Postaviti l na najmanji indeks a d na najveći indeks niza A. 2. Dok je l d, ponoviti korake 3 5. Ako je l > d, vratiti neuspeh. 3. Postaviti s na indeks na sredini izmed u l i d. 4. Ako je ključ sloga A s jednak k, vratiti s. 5. Ako je ključ sloga A s manji od k, postaviti l na s + 1, inače postaviti d na s 1. Ovaj algoritam se u C-u može zapisati funkcijom BinarPret koja ima tri argumenta niz slogova A, broj slogova n i ključ k koji se traži. Funkcija vraća celobrojnu vrednost indeks sloga sa ključem k, ako takav postoji, ili 1 ako takav slog u nizu A ne postoji. Program ima sledeći oblik: #include <stdio.h> #define NEUSPEH 1 #define MAXELEM 100 typedef struct { int kljuc; char vrednost; slog; slog A[MAXELEM]; int BinarPret(slog A[ ], int n, int k); main() { int i,n,x; printf( unesi broj elemenata i celobrojne elemente niza u rastucem poretku\n ); scanf( %d, &n); for(i=0;i<n; ) scanf( %d, &(A[i++].kljuc)); printf( unesi celobrojnu vrednost kljuca koji se trazi\n ); scanf( %d, &x);
6 5.3. Primer programa 43 printf( indeks trazenog elementa je %d, BinarPret(A,n,x)); int BinarPret(slog A[ ], int n, int k) / vraca indeks elementa niza A sa kljucem k, vraca NEUSPEH ako k nije u A / { int l=0, d=n-1,s; while(l <= d) { s = (l + d)/2; if(k < A[s].kljuc) d=s-1; else if(k > A[s].kljuc) l=s+1; else return(s); return(neuspeh); Struktura tipa slog ima polja kljuc i vrednost, pri čemu se polje kljuc koristi za pored enje, a polje vrednost se i ne koristi ono je prisutno kao predstavnik drugih informacija koje se pamte o pojedinom slogu. U Pascal-u, isti algoritam može se zapisati istoimenom funkcijom BinarPret koja koristi globalne objekte uvedene sledećim definicijama i deklaracijama: const max = 100; neuspeh = -1; type indeks = 1..max; string = packed array[1..20] of char; slog = record kljuc: integer; vrednost: string; end; podaci = array[1..max] of slog; Deklaracija funkcije u Pascal-u ima sledeći oblik: function BinarPret (var A:podaci; n:indeks; k:integer):integer; var l,s,d:indeks; rezultat:integer; begin l:=1; d:=n; rezultat:=neuspeh; while (l<=d) and (rezultat = neuspeh) do begin s:=(d+l) div 2; if k< A[s].kljuc then
7 44 5. Pregled programskog jezika C d:=s-1 else if k> A[s].kljuc then l:=s+1 else rezultat:=s end; BinarPret:=rezultat end 5.4 Preprocesor C-a U prethodnom primeru, program na C-u počinje linijama kojima prethodi znak #. To su instrukcije procesoru čiji rad prethodi prevod enju programa sa C-a na mašinski jezik tzv. preprocesoru. Postoje tri vrste preprocesorskih instrukcija (sve počinju znakom #): zamena stringova instrukcijom # define (u našem primeru string NEUSPEH zamenjuje se, gdegod se pojavi u programu, stringom 1 ), uključivanje teksta, obično tekstuelne datoteke koja sadrži standardni skup deklaracija, tzv. standardno zaglavlje, instrukcijom # include (u našem primeru na početak programa uključuje se tekstuelna datoteka stdio.h), i instrukcije za uslovnu kompilaciju (kasnije o njima). 5.5 Tipovi podataka Deklaracija promenljivih u C-u ima oblik vrsta tip lista-promenljivih gde je vrsta oznaka memorijskog prostora i trajnosti promenljivih (auto, static, extern, register, typedef), tip identifikator tipa (predefinisanog, korisnički definisanog ili strukturnog strukture ili unije). Na primer, int v[50]; deklariše 50-elementni celobrojni niz v. Korisnički tip može se definisati definicijom tipa oblika npr. typedef tip id-tipa, typedef int[50] vector; (definisan je novi tip koji se zove vektor i koji je 50-elementni celobrojni niz). Niz v sada može da se deklariše i kao vector v; U našem primeru, definicijom tipa strukture definisan je tip sa imenom slog.
8 5.5. Tipovi podataka 45 Oblast važenja promenljive zavisi od toga gde je deklarisana i koje je vrste, i može biti blok, funkcija, izvorna datoteka, ili sve izvorne datoteke. Trajanje promenljive je nezavisno od njene oblasti važenja, zavisi od njene vrste, i može biti trajanje izvršavanja bloka, funkcije ili programa. Na primer, promenljiva lokalna za blok, sa trajanjem izvršenja bloka, zove se automatska (auto) promenljiva, dok je promenljiva lokalna za blok sa trajanjem izvršenja programa statička (static) promenljiva. U našem primeru, niz A sa elementima tipa slog je spoljašnji objekat koji se vidi i u funkciji main i u funkciji BinarPret, i čije je trajanje trajanje celog programa; celobrojne promenljive i,n,x su automatske promenljive (unutrašnje za funkciju main sa trajanjem te funkcije), dok su promenljive l,d,s automatske promenljive funkcije BinarPret. Postoji i vrsta registarske (register) promenljive koja se veoma često koristi pa se sugeriše kompilatoru da je pridruži mašinskom registru. Promenljive se mogu inicijalizovati definicijama (u našem primeru int l=0), ali se strukturne promenljive (npr. nizovske) mogu inicijalizovati samo ako su statičke (podrazumeva se njihova inicijalizacija na 0, za razliku od Pascal-skih promenljivih koje su inicijalno nedefinisane). Osnovni tipovi. U C-u postoje tri osnovna tipa podataka: znakovni (char), celobrojni i realni (za razliku od Pascal-a u kome postoji i tip Boolean, kao i podintervalni tipovi). Celobrojni tip se javlja u tri veličine (int, short, longint), realni u dve (float, double). Celi brojevi mogu biti i neoznačeni (unsigned) za manipulisanje bitovima i adresama. Nabrojivi tipovi. U C-u (slično Pascal-u) postoje i nabrojivi tipovi koji se sastoje od nabrojivih konstanti sa celobrojnim vrednostima (od 0 do broja konstanti 1, što se podrazumeva, ili sa vrednostima koje su tim konstantama eksplicitno dodeljene). Na primer, enum boolean {NE, DA; je nabrojivi tip nazvan boolean sa dve nabrojive konstante od kojih prva (NE) ima vrednost 0 a druga (DA) vrednost 1. Ali, u primeru enum meseci { JAN=1, FEB, MAR, APR, MAJ, JUN, JUL, AVG, SEP, OKT, NOV, DEC ; nabrojiva konstanta JAN ima vrednost 1 a svaka sledeća za 1 veću od prethodne. ). Nabrojivi tip je alternativni vid definisanja imenovanih konstanti (pored #define Strukturni tipovi. U C-u su prisutna dva mehanizma za struktuiranje podataka: niz i struktura. Deklaracija niza ima oblik vrsta tip elementa ime [veličina]...
9 46 5. Pregled programskog jezika C Tip elementa može biti bilo koji tip, ali veličina mora biti konstantni celobrojni izraz. Elementi niza ime imaju indekse od 0 do veličina 1 (u našem primeru niz A ima elemente tipa slog a indekse od 0 do MAXELEM 1, tj. 99). Prednost C-a u odnosu na Pascal kada su nizovi u pitanju jeste da parametar funkcije može biti niz sa proizvoljnim brojem elemenata (u Pascal-u su nizovi sa različitim brojem elemenata različitih tipova i ne odgovaraju istom parametru), dok je prednost Pascal-a u tome što indeksi niza ne moraju biti celobrojni, a ako jesu, ne moraju počinjati unapred zadatom vrednošću (npr. 0 ili 1). Struktura u C-u je objekat koji se sastoji od jednog ili više polja, gde je svako polje objekat proizvoljnog tipa. U našem primeru, struktura tipa slog sastoji se od dva polja jedno je kljuc i celobrojnog je tipa, a drugo je vrednost i tip mu je pokazivač na objekte tipa karakter (zbog tesne veze izmed u pokazivača i nizova u C-u, vrednost je zapravo ime niza karaktera, tj. adresa prvog elementa niza karaktera v. sledeći paragraf Pokazivači ). Obraćanje polju strukture vrši se na sličan način kao i u Pascal-u ime strukture, tačka, ime polja u našem primeru, A[s].kljuc. Dve varijante tipa strukture u C-u su unija i bit-polja (o ovim varijantama biće reči kasnije). Pokazivači. Pokazivač u C-u pokazuje na objekat nekog specifičnog tipa, tj. predstavlja memorijsku adresu tog objekta. Deklaracija char vrednost; struct slog sp; definiše vrednost kao pokazivač na objekte tipa karakter a sp kao pokazivač na objekte tipa slog. Operator (tzv. operator dereferenciranja) daje kao rezultat promenljivu na koju pokazuje pokazivač argument ovog operatora, tj. promenljivu čija je adresa argument ovog operatora. Tako, vrednost i sp su adrese, vrednost je karakter, a ( sp).kljuc (ili, ekvivalentno, sp kljuc) je ceo broj. Operator & (tzv. operator referenciranja) inverzan je operatoru i daje rezultat adresu objekta. Tako sp može da bude inicijalizovano sa sp = &primerak sloga; Nad adresama (pokazivačima) definisani su operatori pored enja, dodavanja i oduzimanja celih brojeva. Račun nad adresama izvodi se u jedinicama veličine memorije potrebne za smeštanje vrednosti baznog tipa za pokazivač. Zato, vrednost + 1 pokazuje na sledeći karakter u memoriji a sp + 1 pokazuje na sledeći primerak sloga. Pokazivači i nizovi su tesno povezani u C-u. Ime niza je pokazivač na prvi element niza. Tako, ako je A niz, njegovom prvom elementu može se pristupiti bilo sa A[0] ili A. Slično, vrednost[0] označava karakter na koji pokazuje vrednost, vrednost[ 1] je prethodni karakter a vrednost[1] je sledeći karakter. Za razliku od Pascal-a gde pokazivačke promenljive mogu da pristupe samo dinamičkim promenljivim, u C-u pokazivači mogu da pristupe i eksplicitno deklarisanim promenljivim (u našem primeru, npr. int n; &n).
10 5.6. Izrazi 47 Komentar o tipovima. Dok je filozofija tipova podataka u Pascal-u skrivanje svojstava hardvera, adresa, bitova, filozofija tipova podataka u C-u je obezbed enje pogodnog načina da se tim hardverom upravlja. Mada je nivo instrukcija u C-u obično viši od mašinskog, objekti kojima operiše su nivoa sličnog mašinskom. U C-u se može jednostavno pristupiti specifičnim fizičkim adresama, kao i specifičnim bitovima u reči, što u Pascal-u nije moguće ili nije jednostavno. Zbog mešanja buleanskog i celobrojnog tipa (svaka celobrojna vrednost 0 u C- u se može interpretirati kao TRUE, a 0 kao FALSE; logički iazraz dobija vrednost 1 ako je tačan, i 0 ako je netačan), C kompilatori ne mogu da otkriju izvesne greške koje se lako otkrivaju u Pascal-u. Na primer, u C-u su sintaksno korektni relacijski izrazi 1<2<3 i 3<2<1 i oba se izračunavaju na 1 (TRUE). Naime, izračunavanje izraza ide sleva na desno. U prvom izrazu, 1<2 daje 1 (tačno), a 1<3 daje opet jedan. U drugom izrazu, 3<2 daje vrednost 0 (netačno), a 0<1 daje opet jedan. Nizovi različitih dimenzija u Pascal-u su različitih tipova, pa se ne mogu napisati procedure (funkcije) koje prihvataju nizove različitih dužina. Zato se ne može napisati biblioteka opštih rutina za obradu stringova (nizova karaktera). U C-u ovaj problem ne postoji. 5.6 Izrazi Izrazi se grade od konstanti, promenljivih, poziva funkcija, i operacija. Programski jezik C uključuje sledeće skupove operacija: 1. aritmetičke (+,,, /, % (moduo); deljenje (/) nad celim brojevima daje celobrojni deo količnika) 2. logičke (&&,,!) 3. relacijske (==,! =, <, <=, >, >=) 4. manipulisanje bitovima (&,, ˆ,... ) 5. uvećanja i umanjenja za jedan (++, ) 6. promena tipa ((tip) izraz) 7. dodele (=, +=, =, =, /=, %=,... ) U C-u postoji veći broj prioriteta operacija (npr. == i! = su nižeg prioriteta od ostalih relacijskih operacija, a sve one su višeg prioriteta od logičke operacije konjunkcije && koja je višeg prioriteta u odnosu na disjunkciju, ).
11 48 5. Pregled programskog jezika C Operatori dodele. Za C je karakteristično da operator dodele (=) može da učestvuje u izrazu kao i svaki drugi operator. Vrednost dodele je vrednost desnog operanda transformisana u tip levog operanda dodele. Na primer, izraz (x=sledeci())! =KRAJ dobija vrednost 1 (tačno) ili 0 (netačno), jer funkcija sledeci svoju vrednost dodeljuje promenljivoj x, i pri tome izraz x=sledeci() dobija vrednost promenljive x; zato se ta vrednost može dalje porediti sa konstantom KRAJ, a vrednost tog pored enja je 1 (za tačno) ili 0 (za netačno). Pored uobičajene dodele, C ima i operatore dodele sa dodavanjem, oduzimanjem, množenjem i deljenjem, tj. +=, =, =, /=, %=,..., kao i operatore uvećanja odnosno umanjenja, ++,. Na primer, v+=a+5; je ekvivalentno sa v=v+a+5; ++v je uvećanje vrednosti promenljive v pre korišćenja njene vrednosti, a v++ uvećanje vrednosti te promenljive posle korišćenja njene vrednosti. Dopuštanjem dodela unutar izraza programski jezik C doprinosi bočnim efektima, koji čine program manje preglednim, manje pouzdanim i teže izmenljivim. Ova mogućnost, s druge strane, čini program kompaktnijim od odgovarajućeg programa na Pascal-u. Na primer, sledeći iskaz u C-u while((s[i++]=getchar())! =EOF); odgovara sledećem segmentu programa u Pascal-u: while not eof do begin s[i]:=getchar(); i:=i+1 end Logički izraz. Logički izrazi izračunavaju se uslovno, sleva na desno, samo dok se ne utvrdi njihova istinitosna vrednost; desni operand operacija AND (&&), OR ( ) izračunava se samo ako vrednost izraza nije utvrd ena izračunavanjem levog operanda (za razliku od Pascal-a gde se logički izraz uvek izračunava u celosti pa zato mora biti u potpunosti definisan). Uslovni operator. Ovaj operator, u oznaci?:, uzima tri operanda: uslov, tačno-deo, netačno-deo. Na primer, vrednost izraza y! =0?1/y:BESKONACNO jeste 1/y ako y nije 0, i BESKONACNO, inače. Operator,. Operator, omogućuje kombinovanje dva izraza u jedan. Vrednost rezultujućeg izraza je vrednost desnog izraza. Na primer, izraz i=0, j=1 dodeljuje 0 promenljivoj i a 1 promenljivoj j, i dobija vrednost 1.
12 5.7. Iskazi Iskazi U programskom jeziku C, svaki izraz može biti pretvoren u iskaz ako mu se na kraj doda tačka-zapeta ( ; ); izraz se tada izvršava da bi se izvršili njegovi bočni efekti, a vrednost koju izračunava zanemaruje se. Dodela. Serijska kompozicija. Iskaz dodele u C-u je izraz dodele sa tačkazapetom na kraju. Dodela se može izvršiti izmed u svih tipova osim nizovskog. Višestruke dodele imaju smisla jer je dodela izraz. Na primer, i=j=k=0; jeste izraz (odnosno iskaz) koji se izračunava zdesna ulevo tako što promenljiva k dobija vrednost 0, podizraz k = 0 dobija vrednost 0, ta vrednost se dodeljuje promenljivoj j, podizraz j = k = 0 dobija vrednost 0, a ta vrednost se dodeljuje promenljivoj i i ceo izraz dobija vrednost promenljive i (0). Niz iskaza grupiše se u jedan logički (serijski komponovani) iskaz uokviravanjem zagradama ({, ). Selekcija. Osnovna konstrukcija za selekciju (izbor) iskaza u C-u je oblika if(uslov) iskaz1 else iskaz2 Uslov je izraz čija je istinitosna vrednost netačno ako je 0, a inače je tačno. Semantika iskaza je ista kao i u drugim programskim jezicima. Za višestruki izbor prema vrednosti izraza programski jezik C ima iskaz switch: switch (izraz) { case konstantni izraz1: lista iskaza 1 ; case konstantni izraz2: lista iskaza 2 ;. default: podrazumevana lista iskaza;.. Za razliku od sličnog iskaza u Pascal-u, posle izvršenja liste iskaza pridruženih vrednosti izraza, izvršavanje se nastavlja razmatranjem sledećeg slučaja, osim ako se kontrola ne prenese eksplicitno (iskazom break) na drugi deo programa. Iteracija (ponavljanje). Programski jezik C ima iterativne konstrukcije (petlje) sa proverom uslova na početku ili na kraju: while (uslov) iskaz odnosno do iskaz while uslov
13 50 5. Pregled programskog jezika C U oba slučaja iskaz se izvršava sve dok se logički izraz uslov izračunava na vrednost tačno. Ciklus oblika inicijalizacija petlje; while (uslov) { iskaz; reinicijalizacija petlje; zapisuje se u C-u sintaksom koja objedinjuje inicijalizacije i uslov u zaglavlje petlje: for(inicijalizacija petlje; uslov; reinicijalizacija petlje) iskaz; Komponente zaglavlja for iskaza su izrazi, i svaki može da bude prazan (prazan uslov ima vrednost tačno). Na primer, for(i=0; i<n; i++)a[i]=0; For-iskaz u C-u nema dobra svojstva sličnog iskaza u Pascal-u (da se sigurno završava, da je smer iteracije odred en iz samog teksta programa, i da je broj iteracija poznat na početku izvršavanja iskaza), ali ima veću fleksibilnost (npr. vrednost kontrolne promenljive ne mora da se menja za (+ )1. Bezuslovni prenos kontrole. U C-u postoje tri iskaza bezuslovnog prenosa kontrole upravljanja: break, continue i goto. Break izlazi iz unutrašnje petlje ili switch iskaza. Continue prelazi na sledeću iteraciju unutrašnje petlje, dok goto prenosi upravljanje na obeležje (koje ima oblik identifikatora). Prenos je moguć izmed u blokova i upravljačkih struktura, ali ne izmed u funkcija. 5.8 Ulaz-izlaz Operacije ulaza i izlaza nisu deo programskog jezika C, već se realizuju funkcijama iz standardne C biblioteke (pripadaju tzv. okruženju C-jezika). Standardno zaglavlje stdio.h uključuje rutine za čitanje i pisanje podataka u blokovima proizvoljne dužine, i za čitanje i ispis formatiranog teksta. Najjednostavniji mehanizam za unošenje jeste čitanje jednog po jednog karaktera sa standardnog ulaza, obično tastature, celobrojnom funkcijom getchar bez argumenata (void označava odsustvo argumenata): int getchar(void) koja vraća sledeći učitani karakter ili EOF kada naid e na kraj datoteke. Slično, funkcija int putchar(int) koristi se za izdavanje: putchar(c) izdaje karakter c na standardni izlaz, obično ekran. Mehanizam formatiranja se koristi za izgradnju stringova proizvoljne forme, bilo na izlazu (pri izdavanju podataka) ili u memoriji (pri učitavanju podataka).
14 5.8. Ulaz-izlaz 51 Funkcija izlaza, printf, prevodi interne vrednosti (iz memorije) u niske karaktera (stringove). Oblik njenog zaglavlja je int printf(char format, arg 1, arg 2,... ) Ova funkcija konvertuje, formatira i izdaje vrednosti svojih argumenata arg 1, arg 2,... na standardni izlaz, pod kontrolom zadatog formata. Funkcija vraća broj izdatih karaktera. Pri pozivu funkcije printf, argument format (s obzirom da je string) piše se izmed u navodnika. Pored običnih karaktera koji se izdaju kako su napisani, format uključuje i objekte za specifikaciju konverzije, tj. objekte koji govore kojim tipom interpretirati i u koji oblik konvertovati svaki od argumenata. Zato format mora da ima tačno onoliko objekata za specifikaciju konverzije koliko argumenata ima printf. Ovi objekti počinju znakom % i uključuju (pored ostalog) neki od karaktera d, i (za izdavanje celog broja), c za izdavanje jednog karaktera, s za izdavanje stringa (niske karaktera), f za izdavanje realnog broja, itd. Na primer, poziv funkcije printf( indeks trazenog elementa je %d, BinarPret(A,n,x)); iz našeg primera, izdaje tekst indeks trazenog elementa je, a zatim pod kontrolom objekta specifikacije konverzije %d (dakle, u obliku celog broja), izdaje vrednost svog jedinog argumenta vrednosti funkcije BinarPret(A,n,x). Ako je, na primer, vrednost te funkcije ceo broj 3, funkcija printf izdaće tekst indeks trazenog elementa je 3 Funkcija scanf je analogon funkcije printf za formatirani unos. Ova funkcija uzima nisku karaktera sa standardnog ulaza, pronalazi (prepoznaje) podniske čija sintaksa odgovara tipovima (objektima specifikacije konverzije) iz formata, konvertuje te podniske karaktera u odgovarajuće tipove (npr. cele, realne brojeve) i dodeljuje ih promenljivim svojim argumentima arg 1, arg 2,.... Preciznije, dodela se vrši promenljivim čije su adrese arg 1, arg 2,..., jer, za razliku od funkcije printf, svi argumenti funkcije scanf osim prvog (formata) moraju da budu pokazivači. Na primer, poziv funkcije scanf( %d, &x); iz našeg primera, učitava nisku karaktera (koja se sastoji od dekadnih cifara), konvertuje je u ceo broj i vrednost tog celog broja dodeljuje celobrojnoj promenljivoj x. Funkcija scanf vraća broj uspešno prepoznatih i dodeljenih vrednosti. Kako operacije ulaza i izlaza nisu deo samog C jezika, neslaganje u tipu ili broju komponenti formata i odgovarajućih argumenata ne može da bude otkriveno u vreme kompilacije, nego tek u vreme izvršavanja programa.
15 52 5. Pregled programskog jezika C
16 6 Osnovni tipovi podataka 6.1 O tipovima U matematici se promenljive klasifikuju po značajnim karakteristikama kao realne, kompleksne, logičke, skupovne, skupove skupova, funkcije, funkcionale, skupove funkcija, itd. U računarskoj obradi podataka klasifikacija se pokazuje još važnijom. U matematici se tip podataka prepoznaje iz konteksta. U programiranju se tip eksplicitno deklariše, i ukazuje na dimenziju prostora koji kompilator odred uje za podatak tog tipa. Pri tome važi: tip odred uje skup vrednosti tip se može odrediti iz oblika (npr. konstante) ili deklaracije (npr. promenljive), bez izvršavanja procesa računanja svaka operacija ili funkcija očekuje argumente odred enog tipa i proizvodi rezultat odred enog tipa. Ako operacija uzima argumente različitih tipova (npr. + nad tipom float, int), tip rezultata se odred uje iz jezičkih pravila. U većini slučajeva, novi tip podataka definiše se u terminima prethodno definisanih tipova. Vrednosti takvih tipova su konglomerati komponentnih vrednosti prethodno definisanih konstituentnih tipova, i takav, novi tip naziva se struktuiranim (ili strukturnim) tipom. Ako se tip sastoji samo od jednog konstituentnog tipa, on je primitivni (ili osnovni, ili bazni) tip. Broj različitih vrednosti tipa T je njegova kardinalnost. Kardinalnost obezbed uje meru prostora potrebnog za predstavljanje promenljive x tipa T (T x). Komponentni tipovi mogu biti opet struktuirani, ali su krajnje komponente obavezno atomične (primitivnih tipova). Zato je neophodno da programski jezik obezbedi mogućnost uvod enja primitivnih (nestruktuiranih) tipova. 53
17 54 6. Osnovni tipovi podataka Jedan način za uvod enje primitivnih tipova jeste nabrajanje (enumeracija). Ovo su nabrojivi tipovi i njih definiše programer, npr. u C-u enum mesec {JAN=1, FEB, MAR, APR, MAJ, JUN, JUL, AVG, SEP, OKT, NOV, DEC; ili, u Pascal-u dan =(pon, uto, sre, cet, pet, sub, ned) Drugi način za uvod enje primitivnih tipova su predefinisani, standardni tipovi podataka. Ovi tipovi obično uključuju brojevne i znakovne (a često i logičke) vrednosti. Programski jezik opšte namene mora da ponudi i više metoda struktuiranja, kojima se grade struktuirani tipovi. U matematičkom smislu svi mogu biti ekvivalentni, ali se u programerskom smislu razlikuju po operatorima za konstruisanje vrednosti i izbor komponenti tih vrednosti. Osnovne metode struktuiranja tipova su niz, slog i sekvenca (datoteka) u C-u niz i struktura. Kompleksnije strukture se obično ne definišu kao statični tipovi, već se dinamički generišu za vreme izvršavanja programa. Ove strukture uključuju liste, prstenove, drveta, i uopšte, konačne grafove. Najznačajniji primitivni (osnovni) operatori programskog jezika su pored enje i dodela, tj. test jednakosti (i ured enja ako je definisano), i komanda za nametanje jednakosti. Razlika izmed u ova dva operatora najčešće je vidljiva i u notaciji. Na primer, u C-u test jednakosti ima oblik x == y, dok dodela ima oblik x = y (u Pascal-u test jednakosti ima oblik x = y, dok dodela ima oblik x := y; neki jezici, kao npr. Fortran ili PL/I, nažalost, ne prave tu razliku u notaciji). Ovi operatori su definisani za skoro sve tipove podataka. Med u osnovnim implicitno ili eksplicitno definisanim operatorima su i tzv. operatori transfera. Oni preslikavaju tipove podataka u druge tipove podataka. Standardni primitivni tipovi podataka zahtevaju i standardne primitivne operatore. Na primer, brojevni i logički tipovi podataka zahtevaju operatore aritmetičke i iskazne logike. Svakom standardnom tipu pridružene su dopuštene operacije i standardne funkcije. Neke standardne funkcije imaju isti tip kao i argument (na primer, funkcija koja izračunava apsolutnu vrednost broja u Pascal-u je abs(x), a u programskom jeziku C funkcije iz odgovarajuće biblioteke su abs(i), fabs(x)), a mogu transformisati i vrednost jednog tipa u drugi tip (na primer, funkcija koja vraća celobrojnu vrednost niske cifara s u C-u je atoi( s)). Struktuirane vrednosti se generišu tzv. konstruktorima, a komponente se izdvajaju tazv. selektorima. Svaki struktuirani tip ima pridružen par ovakvih operatora transfera. 6.2 Osnovni tipovi u C-u Standardnih osnovnih tipova u C-u je veoma malo. To su:
18 6.2. Osnovni tipovi u C-u 55 char jedan bajt, može da primi jedan karakter u lokalnom skupu karaktera; int ceo broj, obično veličine celog broja na pripadnom računaru (npr. 2, 4 bajta) float realni broj u tzv. pokretnom zarezu, jednostruke preciznosti; double realni broj u pokretnom zarezu, dvostruke preciznosti Znakovni tip Znakovni tip je konačni i ured eni skup karaktera. Kao što je već rečeno u delu Azbuka, reč, jezik, jezički procesori, svaki računar ima svoj skup karaktera za komunikaciju sa korisnikom, i taj skup nije standardizovan. Skup karaktera je ured en prema ured enju njihovih unutrašnjih kodova u odgovarajućoj kodnoj šemi (npr. ASCII kodu). Osnovni objekti podataka nad kojima program vrši operacije jesu konstante i promenljive. Znakovna konstanta je ceo broj, zapisan u obliku jednog karaktera izmed u jednostrukih navodnika, npr. x. Vrednost znakovne konstante je vrednost kôda tog karaktera u pripadnom karakterskom skupu odnosno kodnoj šemi. Na primer, vrednost znakovne konstante 0 je 48, i ta dva zapisa imaju identičnu vrednost ASCII kôd znaka 0 ; ipak, zapis 0 je pouzdaniji jer ne zavisi od pripadne kodne šeme. Znakovne konstante mogu da učestvuju u aritmetičkim izrazima baš kao i drugi celi brojevi. Neki karakteri predstavljaju se kodnom sekvencom, na primer \n (karakter za novi red), \t (tabulator) \b (karakter unazad engl. backspace), \? (znak pitanja), \\ (kosa crta unazad engl. backslash), itd; ove sekvence izgledaju kao dva karaktera, ali predstavljaju jedan karakter. Znakovna konstanta \0 predstavlja karakter sa vrednošću 0, tj. ima vrednost 0. To je tzv. nula-karakter. Znakovna konstanta može da bude zapisana i u obliku oktalnog broja, na primer: \101, \61, odnosno heksadecimalnog: \x41, \x31. Znakovnoj konstanti (kao i konstantama drugih tipova) može se dodeliti ime (identifikator) instrukcijom preprocesora #define, npr. #define GRANICNIK $ a one se zatim mogu koristiti u izgradnji konstantnih izraza kojima se, na primer, deklarišu nizovi: #define MAXLINE 1000 char linija[maxline+1]; / niz znakova linija ima MAXLINE+1 element / Uvod enjem identifikatora za konstante postiže se pouzdanije i lakše programiranje i modifikacija programa. Niska karaktera, ili literal, ili string, jeste niz od 0 ili više karaktera navedenih izmed u dvostrukih navodnika, kao, na primer, ovo je string. String je zapravo niz karaktera sa nula-karakterom na kraju. Standardna biblioteka funkcija sadrži
19 56 6. Osnovni tipovi podataka funkciju strlen(s) koja se deklariše u standardnom zaglavlju <string.h> i koja vraća dužinu stringa s, ne računajući nula-karakter. Dakle, bitna razlika izmed u znakovne konstante i stringa je što je znakovna konstanta ceo broj, a string je niz karaktera za kojim sledi nula-karakter. Promenljiva ima ime (identifikator), tip, adresu i vrednost. Identifikator se sastoji od slova i cifara (prvi karakter je slovo) pri čemu se i podvlaka ( ) računa kao slovo, a mala i velika slova su različiti karakteri. Dužina identifikatora zavisi od vrste promenljive identifikatori unutrašnjih promenljivih mogu da budu i do 31 karakter dugački, a spoljašnjih, kao i imena funkcija, bar do 6. Definicijom promenljivih uvode se nove promenljive u program, tj. imena promenljivih koje će se koristiti nabrajaju se, navode se njihovi tipovi (za znakovne promenljive tip char), rezerviše se memorijski prostor za te promenljive (za promenljive tipa char 1 bajt) i eventualno dodeljuju početne vrednosti. Deklaracijom promenljivih nabrajaju se promenljive koje će se koristiti (i koje mogu biti uvedene na drugom mestu u programu), i navode se njihovi tipovi. Dakle, definicije su ujedno i deklaracije, dok obratno ne važi. Na primer, char c, linija[1000]; int granica = MAXLINE+1; Promenljiva znakovnog tipa može da bude označena i tako da joj se vrednost ne menja, ili kao parametar (funkcije) kome funkcija ne može da menja vrednost. Na primer, const char poruka[ ] = warning: ; int strlen(const char[ ]); Na promenljive tipa char može da se primeni kvalifikator signed (označen) ili unsigned (neoznačen), pri čemu se neoznačeni tip interpretira kao skup pozitivnih brojeva ili 0. Na primer, ako je tip char dužine 8 bita, onda promenljive tipa unsigned char imaju vrednosti od 0 do 255 (reprezentacija predstavlja vrednost 0 a reprezentacija predstavlja vrednost 255 tj ). S druge strane, tip signed char uključuje vrednosti od -128 do 127 (ima ih takod e 2 8 = 256, ali je interpretacija zapisa ceo broj u tzv. potpunom komplementu: negativan broj se dobija kada se u binarnom zapisu odgovarajućeg pozitivnog broja binarne cifre dopune do 1 0 se zamenjuje sa 1 a 1 sa 0, a zatim se tako transformisani zapis sabira sa 1. Tako najveću vrednost ima zapis vrednost je 127, dok zapis ( ) ima vrednost 127. Broj za 1 manji ima zapis pa se njime predstavlja broj 128). Znakovnom tipu odgovaraju funkcije iz standardne C-biblioteke, kojima se stringovi kopiraju, dopisuju, porede, pronalaze podstringovi, odred uje dužina, itd. Ove funkcije nalaze se u standardnom zaglavlju <string.h> Zadatak: Napisati funkciju int lower(int c) koja konvertuje karakter c (njegov ASCII kôd) u malo slovo (ako je c veliko slovo), inače vraća isti karakter c.
20 6.2. Osnovni tipovi u C-u Celobrojni tip U računaru se može predstaviti samo konačno mnogo celih brojeva, tj. celobrojni tip (npr, u C-u int, u Pascal-u integer) je konačni podskup skupa celih brojeva. Taj podskup je definisan implementacijom, i zavisi od dužine (u bajtovima tj. bitovima) kojom se ceo broj predstavlja. Ako se podatak tipa int predstavlja sa dva bajta (16 bitova), onda se mogu predstaviti celi brojevi u intervalu [ 2 15, ]. Upotreba brojeva izvan ovog intervala dovodi do greške. Na celobrojni tip int mogu se primeniti i dodatni kvalifikatori, short i long. Oni označavaju veličinu celog broja, tj. broj bitova za njegovu reprezentaciju; short int (kratki ceo broj) i obični int su bar po 16 bita (2 bajta), long int (dugački ceo broj) je bar 32 bita (4 bajta), i važi da je short int int long int. U standardnom zaglavlju limits.h definisane su konstante-ograničenja tipa int, zavisna od implementacije. Celobrojni tip, slično znakovnom, može biti kvalifikovan kao signed (označen) ili unsigned (neoznačen), sa istom interpretacijom kao i odgovarajući znakovni tip. Tip konstante očigledan je iz samog njenog zapisa celobrojna konstanta ima uobičajenu sintaksu (npr. 1234) i njen tip je int. Ako se celobrojna konstanta završava slovom l (ili L), ili ako je suviše velika da bi bila tipa int, konstanta je tipa long int; ako se završava slovom u (U), odnosno ul (UL), konstanta je neoznačen, odnosno dugački neoznačen ceo broj. Celobrojna konstanta može da bude zapisana i u oktalnom odnosno heksadekadnom zapisu (sistemu) ako počinje cifrom 0 odnosno cifrom 0 i slovom x (X) (cifre oktalnog sistema su 0 7, a heksadekadnog cifre 0 9 i slova a f, odnosno A F ). Tako je 31 dekadni ceo broj sa istom vrednošću kao i oktalni ceo broj 037 tj. heksadekadni ceo broj 0x1f (tj. 0X1F). Nad operandima celobrojnog tipa dopuštene su operacije + (sabiranje), (oduzimanje), (množenje), / (izračunavanje celobrojnog dela količnika) i % (izračunavanje ostatka pri celobrojnom deljenju). Sve operacije nad celobrojnim argumentima proizvode celobrojne rezultate. Za operacije / i % važi sledeća relacija: a % b = a ((a / b) b). Znak može biti i unaran (npr. 50). Operatori uvećanja i umanjenja Pored prethodnih, na promenljive celobrojnog tipa u C-u mogu da se primene i dva specifična operatora, obično niskog (mašinskog ) nivoa dodavanja 1 na argument ++ i oduzimanja 1 od argumenta. Na primer, if(c== \n ) ++n; Ono što je neobično o ovim operatorima jeste to što se oni mogu primenjivati pre ili posle korišćenja vrednosti promenljive. Tako, na primer, iskaz
21 58 6. Osnovni tipovi podataka x = n++; dodeljuje vrednost promenljive n promenljivoj x, a zatim povećava vrednost promenljive n za 1, dok iskaz x = ++n; povećava vrednost promenljive n za 1 a zatim tako povećanu vrednost dodeljuje promenljivoj x. Ove se operacije mogu primenjivati samo na promenljive (ne i na izraze). Prioritet operacija nad celobrojnim tipovima (v. tačku 6.4) je sledeći: unarni + i, uvećanje (++) i umanjenje ( ) najvišeg prioriteta, zatim operatori umnožavanja, / %, i najzad operatori sabiranja i oduzimanja + i. Nad celobrojnim tipom, kao i nad ostalim primitivnim tipovima, dopuštene su i relacijske operacije == (jednakost),! = (različitost), <, >, <=, >=, čiji je rezultat logičkog tipa. Tako je vrednost pored enja 3<4 tačno (1), a 4<3 netačno (0). Relacijske operacije su nižeg prioriteta od aritmetičkih. Standardne funkcije za rad sa celim brojevima u C-u deklarisane su u standardnim zaglavljima <stdlib.h> i <math.h> standardne biblioteke. Sa rezultatom celobrojnog tipa su, na primer, abs(n) apsolutna vrednost (n celobrojnog tipa), atoi(s) celobrojna vrednost niske cifara s, (zaglavlje <stdlib.h>). Funkcije za izračunavanje najmanjeg celog broja većeg ili jednakog od x, najvećeg celog broja manjeg ili jednakog x ceil(x), floor(x), pri čemu su i x i vrednost funkcije tipa realnog broja dvostruke tačnosti (double), na primer, nalaze se u standardnom zaglavlju <math.h>, zajedno sa drugim realnim funkcijama. Primer: Neka je potrebno sabrati dva cela broja zadata njihovim nizovima cifara. Ako su to, na primer, trocifreni brojevi, onda program na Pascal-u može imati sledeći oblik: #include stdio.h char c11, c12, c13, c21, c22, c23; int b1, b2, zbir; main() { scanf( %c, %c, %c, %c, %c, %c, &c11, &c12, &c13, &c21, &c22, &c23); b1 = ((c11 0 ) 10 +(c12 0 )) 10 + c13 0 ; b2 = ((c21 0 ) 10 + (c22 0 )) 10 + c23 0 ; zbir = b1+b2; printf( %d\n, zbir); Standardna funkcija transfera stringa (koji se sastoji od karaktera cifara) u ceo broj (int atoi(char [])) biće prikazana u tački Med utim, ako su brojevi dugi (imaju po n cifara, npr. za n=100), oni mogu izaći iz dijapazona celih (pa i dugačkih celih) brojeva u C-u, pa se zadatak mora rešavati na drugi način. Jedan takav način je da se imitira pismeno sabiranje
22 6.2. Osnovni tipovi u C-u 59 zdesna ulevo, a da se i cifre zbira predstavljaju kao znakovi (karakteri) (v. tačku 10.1) Logički tip Logički tip nije standardni tip u C-u. Može se uvesti kao nabrojivi tip, ali, bez obzira na to, konstanta 0 u okviru logičkog izraza ponaša se kao logička vrednost netačno, dok se konstante različite od 0 ponašaju kao logička vrednost tačno. Slično, tačan logički izraz (na primer, pored enje 3<4) proizvodi vrednost 1, dok netačan logički izraz proizvodi vrednost 0. Za logički tip koristi se i termin buleanski, kao sinonim. Za logički tip karakteristični su operatori konjunkcije, (&&), disjunkcije ( ) i negacije (!). Izrazi buleanskog tipa (sa istinitosnom vrednošću) veoma su česti u programiranju. Svako pored enje ima vrednost koja je buleanskog tipa. Razmotrimo sledeći primer. Program koji ponavlja čitanje znaka sa ulaza i izdavanje tog znaka na izlazu, sve dok se na ulazu ne pojavi znak $, može se zapisati na sledeći način: char ch; main() { for(; (ch=getchar())!= $ ; ;) putchar(ch); Izraz (ch=getchar())!= $ uključuje čitanje karaktera sa standardnog ulaza, dodelu tog karaktera promenljivoj ch i pored enje (na različitost) tog karaktera sa karakterom $. Ovo pored enje je jednostavni logički izraz koji može da ima vrednost tačno ili netačno. Sve dok je njegova vrednost tačno (karakter je različit od $ ), ponavljaju se radnje izdavanja karaktera na standardni izlaz i čitanja novog karaktera sa standardnog ulaza; kada vrednost pored enja postane netačno (učitani karakter nije različit od $ ) sa tim radnjama se završava. Nad jednostavnim logičkim izrazima može se graditi složeniji logički (buleanski) izraz (kao što je opisano u tački 4.1.1, Dvovalentna logika ). Vrednost logičkog izraza izračunava se lenjo : samo dok se ne utvrdi njegova istinitosna vrednost. Na primer, pri izračunavanju vrednosti logičkog izraza (3<5) (a/b>5) ceo izraz dobija vrednost true već po izračunavanju prvog disjunkta, pa se drugi disjunkt i ne izračunava i može biti i nedefinisan (npr. ako je b=0). Neka je definisan nabrojivi tip boolean i deklarisane sledeće promenljive (u C-u): enum boolean {N, T; int kolicina, kol1; float duzina, visina; boolean kraj;
23 60 6. Osnovni tipovi podataka Tada su primeri logičkih (buleanskih) izraza: kolicina < kol1 (kolicina == kol1) && (duzina >= visina) && kraj (kolicina % kol1 ==0) (kolicina <= 100). U odnosu na matematičku notaciju, uočimo dve bitne razlike u zapisu logičkih izraza u programiranju: 1) zapis, npr. minimum vrednost maximum, na koji smo toliko navikli, može se u C-u zapisati u sličnom obliku: minimum <= vrednost <= maximum, ali, kao što je već naglašeno u preglednom delu, ovaj izraz ne mora da dobije očekivanu logičku vrednost izračunava se sleva nadesno, pa, na primer, 5<= 2 <=1 dobiće vrednost 1 (tačno), mada se to ne očekuje. Zato se pripadnost intervalu po pravilu zapisuje kao konjunkcija dva pored enja: minimum <= vrednost && vrednost <= maximum (u Pascal-u se ovo pored enje može zapisati samo kao eksplicitni logički izraz sa konjunkcijom (and): (minimum <= vrednost) and (vrednost <= maximum)); 2) realne brojeve je u programiranju bolje ne upored ivati na jednakost (==), zbog zaokrugljivanja u računaru, već na dovoljnu bliskost. Na primer, umesto pored enja a==b (a,b realne vrednosti), bolje je porediti ih sa fabs(a b)< ɛ, za dovoljno malo ɛ, npr. fabs(a b)< fabs(a 1E 6) (razlika na milioniti deo od a, v. Realni tip ) Realni tip Realna konstanta u C-u mora da ima bar jednu cifru u celom delu, ili u razlomljenom delu, i mora da ima decimalnu tačku ili eksponent; ako je u eksponencijalnom obliku, onda mora da ima bar jednu cifru i iza slova E. Zato su niske.5 ili 2. ili 1.E-2 ili 1E5, , E 28 (masa elektrona), 123.4, 1e-2, 123.4e-2, ispravne realne konstante u C-u dok niska 3.0E nije (v. sliku 6.1). Konstanta u eksponencijalnom obliku npr e-2 ima vrednost r.broj celi deo, razl.deo celi deo celi deo razl.deo E + cifra e razl.deo cifra Figure 6.1: Sintaksni dijagram realne konstante
24 6.2. Osnovni tipovi u C-u 61 Tip realne konstante je double (realni broj dvostruke tačnosti). Realni broj može biti i dugački realni broj dvostruke tačnosti čime se postiže povećana preciznost (broj značajnih cifara). Ako se realna konstanta završava slovom f (F), ona je realni broj jednostruke tačnosti; ako se završava slovom l (L), konstanta je dugački realni broj dvostruke tačnosti. Kvalifikator long (dugački) može se primeniti na promenljive tipa double. Prava veličina (broj bajtova) za long double zavisi od računara, ali, kao i za tip int, važi da je veličina tipa float ne veća od veličine double, a ona ne veća od veličine tipa long double. Vrednost realnog tipa (tipa real) je element konačnog podskupa skupa realnih brojeva koji je definisan implementacijom. Implementacija definiše najmanji, najveći realni broj i gustinu tj. tačnost sa kojom se mogu registrovati realni brojevi (standardno zaglavlje float.h sadrži definicije konstanti za realni tip koje zavise od implementacije). Na primer, realni broj x koji je različit od 0 može biti u intervalu x 10 38, a tačnost sa kojom se realni brojevi registruju može biti 7 značajnih cifara. Ako dva realna broja imaju po više od 7 značajnih cifara, i ako su im prvih 7 značajnih cifara jednake (a prethodi im isti broj nula), onda ta dva broja mogu da se registruju kao jednaki brojevi (osim ako se zbog zaokrugljivanja nekom od njih poveća poslednja cifra). Tako, na primer, program #include <stdio.h> float x,y; main() { scanf( %f, %f, &x, &y); printf( x=%f, y=%f, x, y); za dva različita ulazna broja: , izdaje isti rezultat (sa šest cifara u razlomljenom delu, ali sa ukupno 7 značajnih, tj. tačnih cifara): x= , y= Isti program za učitane brojeve , izdaje isti rezultat (sa zaokrugljivanjem na šest cifara u razlomljenom delu sve cifre su značajne): x= , y= Kako svaki, proizvoljno mali interval na realnoj osi sadrži beskonačno mnogo vrednosti (realna osa je kontinuum), to realni tip u programskom jeziku jeste konačni skup predstavnika intervala na realnom kontinuumu. Izračunati rezultati nad realnim brojevima su aproksimacije pravih rezultata. Procenom greške pri približnom računanju sa realnim brojevima bavi se numerička matematika. Ipak, neku predstavu o tačnosti računanja sa realnim brojevima možemo dobiti iz načina na koji se realni broj predstavlja u savremenom elektronskom računaru. Uobičajena reprezentacija realnog broja u računaru je tzv. reprezentacija sa pokretnom tačkom (floating point representation). U ovoj reprezentaciji realni broj
25 62 6. Osnovni tipovi podataka x predstavljen je parom celih brojeva, e i m, tzv. eksponent i mantisa, svaki sa konačno mnogo cifara, tako da je x = m B e, E < e < E, M < m < M. U ovom zapisu m se zove koeficijent ili mantisa, a e eksponent. B, E, M su celobrojne konstante koje karakterišu reprezentaciju. B se zove baza reprezentacije sa pokretnom tačkom, i obično nije 10 već neki mali stepen od 2 (obično 2 1, 2 3, 2 4 ). Na primer, ako se realni broj predstavlja u četiri bajta (32 bita), mantisa može biti predstavljena sa 24 bita (24-cifreni binarni broj odgovara 7-cifrenom dekadnom broju pa to odred uje 7 značajnih cifara u dekadnom zapisu), a eksponent može da bude predstavljen sa 8 bitova, pa je binarni eksponent e b (za bazu B = 2) 125 e b 128, a odgovarajući dekadni eksponent e d (t.d. 10 e d 2 e b ) 37 e d 38. Za odabranu bazu B, dati broj x može biti predstavljen mnogim parovima (m, e). Kanonički ili normalizovani oblik realnog broja x definiše se uslovom koji mantisu deljenjem stepenom baze svodi na najveći razlomljen broj: 1 B m < 1. Ako se koristi samo ovaj oblik, onda gustina predstavnika intervala realne prave opada eksponencijalno sa povećanjem x. Na primer, interval [0.1..1] sadrži približno isto onoliko predstavnika kao i interval [ ], a tačno isto toliko ako je B = 10. Med u predstavnicima realnih brojeva uvek su 0 i 1. Rad sa realnim brojevima u programiranju je dosta problematičan. Probleme prave kako sabiranje i oduzimanje (skoro jednakih brojeva), tako i deljenje, zbog odsecanja značajnih cifara. Na primer, ako su brojevi predstavljeni sa četiri značajne cifre, x = 9.900, y = 1.000, z = (x + y) + z = ( 0.999) = x + (y + z) = = pa je prekršen zakon asocijativnosti. Mera preciznosti date aritmetike sa pokretnom tačkom, ɛ, približno je 10 n, ako računar predstavlja realni broj sa n dekadnih cifara. Preciznost ɛ (ili epsilon mašine ) definiše se kao najmanji pozitivni broj takav da 1 i 1 + ɛ imaju različite predstavnike (npr. ɛ = 10 7 ). Nad realnim tipom dopuštene su operacije +,,, / i relacijske operacije (kao i nad celobrojnim tipom). Ako je bar jedan operand realnog tipa, operacije +,,, / daju rezultat realnog tipa. Prioritet ovih operacija je kao i kod celobrojnog tipa. Standardne funkcije koje se primenjuju nad realnim tipovima nalaze se u standardnom zaglavlju math.h. To su trigonometrijske funkcije sin, cos, tan, sinh, cosh, tanh,..., eksponencijalna (exp) i logaritamske funkcije log (prirodni logaritam), log10 (logaritam sa osnovom 10), pow(x,y) (x y ), sqrt (kvadratni koren), ceil, floor (ranije pomenute), itd. Za sve ove funkcije i argumenti i vrednost funkcija su tipa double. Pri formatiranom učitavanju ili izdavanju realnog broja, potrebno je preneti podatak sa jednog medija na drugi (sa tastature u memoriju odnosno iz memorije
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)
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
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
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
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)
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,
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
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
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
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
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,
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
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
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.
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
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/.
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
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
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
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
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
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
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
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
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
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)
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:
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
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: ;
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
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
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
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,
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
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:
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
(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,
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,
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
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
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
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
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
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
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
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
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
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
TRIGONOMETRIJSKE FUNKCIJE I I.1.
TRIGONOMETRIJSKE FUNKCIJE I I Odredi na brojevnoj trigonometrijskoj kružnici točku Et, za koju je sin t =,cost < 0 Za koje realne brojeve a postoji realan broj takav da je sin = a? Izračunaj: sin π tg
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
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) =
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
Glava 1. Realne funkcije realne promen ive. 1.1 Elementarne funkcije
Glava 1 Realne funkcije realne promen ive 1.1 Elementarne funkcije Neka su dati skupovi X i Y. Ukoliko svakom elementu skupa X po nekom pravilu pridruimo neki, potpuno odreeni, element skupa Y kaemo da
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
INTEGRALNI RAČUN. Teorije, metodike i povijest infinitezimalnih računa. Lucija Mijić 17. veljače 2011.
INTEGRALNI RAČUN Teorije, metodike i povijest infinitezimalnih računa Lucija Mijić lucija@ktf-split.hr 17. veljače 2011. Pogledajmo Predstavimo gornju sumu sa Dodamo još jedan Dobivamo pravokutnik sa Odnosno
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
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
Veleučilište u Rijeci Stručni studij sigurnosti na radu Akad. god. 2011/2012. Matematika. Monotonost i ekstremi. Katica Jurasić. Rijeka, 2011.
Veleučilište u Rijeci Stručni studij sigurnosti na radu Akad. god. 2011/2012. Matematika Monotonost i ekstremi Katica Jurasić Rijeka, 2011. Ishodi učenja - predavanja Na kraju ovog predavanja moći ćete:,
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
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
Matematička analiza 1 dodatni zadaci
Matematička analiza 1 dodatni zadaci 1. Ispitajte je li funkcija f() := 4 4 5 injekcija na intervalu I, te ako jest odredite joj sliku i inverz, ako je (a) I = [, 3), (b) I = [1, ], (c) I = ( 1, 0].. Neka
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.
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
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
Binarno kodirani dekadni brojevi
Binarno kodirani dekadni brojevi Koriste se radi tačnog zapisa mešovitih brojeva u računarskom sistemu. Princip zapisa je da se svaka dekadna cifra kodira odredjenim binarnim zapisom. Za uspešno kodiranje
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},
Diskretna matematika. Prof. dr Olivera Nikolić
Diskretna matematika Prof. dr Olivera Nikolić onikolic@singidunum.ac.rs 1 OSNOVNI POJMOVI MATEMATIČKE LOGIKE 2 1. Diskretna matematika 2. Kontinualna matematika 3 Pojam diskretne matematike Diskretna matematika
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
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
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
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
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
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
Pismeni ispit iz matematike GRUPA A 1. Napisati u trigonometrijskom i eksponencijalnom obliku kompleksni broj, zatim naći 4 z.
Pismeni ispit iz matematike 06 007 Napisati u trigonometrijskom i eksponencijalnom obliku kompleksni broj z = + i, zatim naći z Ispitati funkciju i nacrtati grafik : = ( ) y e + 6 Izračunati integral:
Celi brojevi su svi nerazlomljeni brojevi, pozitivni, negativni i nula. To su
Poglavlje 1 Brojevi i brojni sistemi Cvetana Krstev 1.1 O brojevima Prirodni brojevi su brojevi sa kojima se broji, uključujući i nulu: 0, 1, 2, 3,.... Pojam pozitivnih i negativnih brojeva nije definisan
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 ) =
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
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
Jednodimenzionalne slučajne promenljive
Jednodimenzionalne slučajne promenljive Definicija slučajne promenljive Neka je X f-ja def. na prostoru verovatnoća (Ω, F, P) koja preslikava prostor el. ishoda Ω u skup R realnih brojeva: (1)Skup {ω/
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
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)
Trigonometrija 2. Adicijske formule. Formule dvostrukog kuta Formule polovičnog kuta Pretvaranje sume(razlike u produkt i obrnuto
Trigonometrija Adicijske formule Formule dvostrukog kuta Formule polovičnog kuta Pretvaranje sume(razlike u produkt i obrnuto Razumijevanje postupka izrade složenijeg matematičkog problema iz osnova trigonometrije
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
4 Izvodi i diferencijali
4 Izvodi i diferencijali 8 4 Izvodi i diferencijali Neka je funkcija f() definisana u intervalu (a, b), i neka je 0 0 + (a, b). Tada se izraz (a, b) i f( 0 + ) f( 0 ) () zove srednja brzina promene funkcije
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
Matematka 1 Zadaci za drugi kolokvijum
Matematka Zadaci za drugi kolokvijum 8 Limesi funkcija i neprekidnost 8.. Dokazati po definiciji + + = + = ( ) = + ln( ) = + 8.. Odrediti levi i desni es funkcije u datoj tački f() = sgn, = g() =, = h()
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
Prediktor-korektor metodi
Prediktor-korektor metodi Prilikom numeričkog rešavanja primenom KP: x = fx,, x 0 = 0, x 0 x b LVM α j = h β j f n = 0, 1, 2,..., N, javlja se kompromis izmed u eksplicitnih metoda, koji su lakši za primenu
ANALIZA SA ALGEBROM I razred MATEMATI^KA LOGIKA I TEORIJA SKUPOVA. p q r F
ANALIZA SA ALGEBROM I razred MATEMATI^KA LOGIKA I TEORIJA SKUPOVA. Istinitosna tablica p q r F odgovara formuli A) q p r p r). B) q p r p r). V) q p r p r). G) q p r p r). D) q p r p r). N) Ne znam. Date
1. zadatak , 3 Dakle, sva kompleksna re{ewa date jedna~ine su x 1 = x 2 = 1 (dvostruko re{ewe), x 3 = 1 + i
PRIPREMA ZA II PISMENI IZ ANALIZE SA ALGEBROM. zadatak Re{avawe algebarskih jedna~ina tre}eg i ~etvrtog stepena. U skupu kompleksnih brojeva re{iti jedna~inu: a x 6x + 9 = 0; b x + 9x 2 + 8x + 28 = 0;
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
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
(y) = f (x). (x) log ϕ(x) + ψ(x) Izvodi parametarski definisane funkcije y = ψ(t)
Izvodi Definicija. Neka je funkcija f definisana i neprekidna u okolini tačke a. Prvi izvod funkcije f u tački a je Prvi izvod funkcije f u tački : f f fa a lim. a a f lim 0 Izvodi višeg reda funkcije
Sume kvadrata. mn = (ax + by) 2 + (ay bx) 2.
Sume kvadrata Koji se prirodni brojevi mogu prikazati kao zbroj kvadrata dva cijela broja? Propozicija 1. Ako su brojevi m i n sume dva kvadrata, onda je i njihov produkt m n takoder suma dva kvadrata.
( ) ( ) 2 UNIVERZITET U ZENICI POLITEHNIČKI FAKULTET. Zadaci za pripremu polaganja kvalifikacionog ispita iz Matematike. 1. Riješiti jednačine: 4
UNIVERZITET U ZENICI POLITEHNIČKI FAKULTET Riješiti jednačine: a) 5 = b) ( ) 3 = c) + 3+ = 7 log3 č) = 8 + 5 ć) sin cos = d) 5cos 6cos + 3 = dž) = đ) + = 3 e) 6 log + log + log = 7 f) ( ) ( ) g) ( ) log
Zadaci iz Osnova matematike
Zadaci iz Osnova matematike 1. Riješiti po istinitosnoj vrijednosti iskaza p, q, r jednačinu τ(p ( q r)) =.. Odrediti sve neekvivalentne iskazne formule F = F (p, q) za koje je iskazna formula p q p F
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
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 )
Otpornost R u kolu naizmjenične struje
Otpornost R u kolu naizmjenične struje Pretpostavimo da je otpornik R priključen na prostoperiodični napon: Po Omovom zakonu pad napona na otporniku je: ( ) = ( ω ) u t sin m t R ( ) = ( ) u t R i t Struja