You are on page 1of 21

Dve osnovne karakteristike za programski jezik C su: 1. C je operatorski jezik (ima preko 40 operatora) 2. C je tzv.slabo tipizirani jezik.

Slabo tipizirani jezik C moe sve sa svima. Da bi ovjek mogao sam da naui programski jezik razmatra 4 stvari: 1. Kojim tipovima podataka raspolae dati jezik: cjelobrojni, znakovni, logiki, realni 2. Kako izgledaju naredbe datog jezika 3. Kako se organizuje ulaz/izlaz 4. Modularizacija kako izgledaju i kako se prave podprogrami. Prvi element programskog jezika je alfabet skup simbola koji se smiju koristiti. Djelimo ga u tri grupe: 1. Mala i velika slova engleske abecede (donja crta tretira se kao slovo) 2. Cifre od 0 do 9 3. -+ ++ = -- <> specijalni znaci gdje je angaovana cijela tastatura C ima dvije vrsta komentara: 1. Dui komentari i imaju poetak dvoznako /* */ 2. Krai komentari ne zauzimaju vie od jedne linije i poinje sa // U programskom jeziku C naredbe se piu jedna pored druge, sa jednim praznim mjestom ili mjestom razmaka. Razmak (;) je dio naredbe i zove se terminator. Identifikatori sinonim za identifikator je ime. U programskim jezicima identifikatori su: podprogrami, varijable, tipovi, konstante. Pravopisna pravila: 1. U identifikator mogu da uu samo slova i cifre 2. Obavezno je da prvi simbol bude slovo 3. Odreen broj prvih simbola e samo biti uzet 4. Identifikatori koji imaju semantiku moraju biti mnemoniki. 5. Identifikator obavezno poinje malim slovom, a svaka nova rije unutar identifikatora poinje velikim slovom. 6. Nula se precrtava da se ne bi zamjenila slovom O 7. Pomoni identifikatori moraju da budu kratki. Promjenljiva privremeno temp. Globalna struktura programa i domet identifikatora Proceduralno programiranje: Programi u C imaju prilino labavu strukturu Program se rasporeuje u izvorne datoteke i u njima se na lazi code Moe biti vie izvornih datoteka Izvorna datoteka ime.c (c-ekstenzija izvorne datoteke) moe biti .cpp (c++) dva prevodioca (kompajlera) Jedino ogranienje je domet identifikatora (oblast definisanosti) Domet identifikatora je omeen njegovom definicijom. Svaki identifikator se mora definisati. Svaka varijabla treba da se definie Domet identifikatora je od momenta definisanja pa do kraja segmenta. Ako imamo definisanu varijablu X i u podprogramu i u izvornoj datoteci, veu vanost ima ona u podp rogramu Deklarisanje i definisanje Identifikator se definie tano jednom Deklarisanje je dodatni mehanizam za irenje dometa Kada deklariemo funkciju ''g'' kaemo kompajleru da e se kasnije pojaviti program ''g'' Kod podprograma je najvanije deklarisanje Program za raunanje obima kruga Double realan tip Konvencija velika slova za zakljuavanje varijable Tipovi podataka: osnovni i izvedeni (niz, slog, pokaziva, unija) Tipovi podataka se interpretiraju bitovima (0 i 1). Bazni: standardni i enumeracija (konstantno definie programer a ne programski jezik). Standardni: 1. Znakovni char identifikator familije znakovnih tipova 2. Cjelobrojni int indentifikator familije cjelobrojnih tipova 3. Realni float, double Najfrekventniji je INT. Tip podataka se precizno zadaje pomou zajednike rijei za cijelu familiju i sa jo dva podatka. Ti podaci su istorijei a zovu se modifikatori. Oni zajedno omoguavaju precizno definisanje tipa. Modifikator predznaka i modifikator duine. Modifikatora predznaka ima dva: signed, unsigned (signed ima negativnih vrednosti, unsigned nema). Modifikatora duine ima dva: short i long.

Tipina duina je -128 do +128; short je 1 bajt Float najmanja preciznost i najmanji raspon (brzo) Double vea preciznost i vei raspon (sporije) Long double jo vea preciznost i jo vei raspon (mnogo sporije) Zadavanje naziva tipu: Tip niza i tip sloga i mehanizam koji od niza i sloga pravi novi tip. Promjenljive Promjenljiva se karakterie imenom i tipom i mora da ima ime i t ip. Da bi se zadalo ime i tip koristi se definicija promenljive. Naredba za definisanje promjenljive izgleda ovako: tip ime double x int i Promjenljiva moe i ne mora da se inicijalizuje tj. da joj se dodaje poetna vrijednost: Modifikator pristupa ima dva oblika: Const koji zakljuava promenljivu, spreava promjenu njene vrednosti. Volatile promenljiva koja se koristi u sistemskom programiranju moe da se mjenja samo u operativnom sistemu. Elementarni ulaz/izlaz Podrazumeva se ulaz preko tastature i izlaz na ekran. Ulaz/izlaz preko C se organizuje preko funkcija: #include <stdio.h> scanf(''formatirani string'', &p1, &p2,...,&pn); (&p1-adresa promjenljive) Konverziona specifikacija se navodi unutar formatnog stringa. To je objanjenje koje: %[*] znai sljedeu poziciju preskoi %[*] [irina] broj pozicija na ulazu koji je rezervisan za promjenljivu (ako se ne navede,odreuje se automatski) %[*] [irina][l] odreuje tipove podataka Printf(''formatni string'', iz1,...) ukupan broj zauzetih pozicija %[float][sirina][.preciznost][l] (broj decimalnih mjesta) Znakovni tip obuhvata familiju znakova i oslanja se na kodni tip.. Kako rukovati znacima koji nisu na tastaturi? Postoje 2 naina: Jedan je kada koristimo direktno u izrazima: char x, x=145 Znakovni tip je lan familije cjelobrojnih tipova. Konverziona specifikacija za znakovni tip je c. Cjelobrojni tip Karakteriu se sa ''int''. Realni tipovi Float Double Long double Enumeracija ima specijalnu namjenu a to je da izvorni kod uini itljivijim za ljude. Znaaj enumeracije uvesti konstante sa imenom, ali sloiti jedan te isti tip. Enumeracija je lan familije cjelobrojnih tipova. Sve enumeracije imaju zajedniku kljunu rije EN UM. 1. Zajedno sa enumeracijom se definie promjenljiva (to je najgori oblik) enum {DA, NE} log1, log2; 2. Koristi se TAG ili privjesak. Enum RGB {CRVENA, ZELENA, PLAVA} 3. Podjednako djelotvoran ali ga programeri ne vole zbog paskala: typedef enum {CRVENA, ZELENA, PLAVA} b1, b2, b3; Simbolike konstante trei nain kojima se konstantama daje ime; a to se radi predprocesorskom direktivom #define Po pravilu, simbolike konstante se piu iskljuivo velikim slovom. Nizovi Niz je jedinstven tip podataka. Niz ima za osnovnu karakteristiku promjenljive istog tipa. Matrica je niz nizova. Najmanja vrijednost indeksa je uvijek nula. Pri svakom indeksiranu u mainskom jeziku se vre tri operacije: mnoenje, oduzimanje i sabiranje. To je razlog to je minima lna vrijednost nula. Slog (strutkura)

Slog se u C-u zove struktura. Semantika konvergencija definicija sloga: Slog je tip podataka koji je izveden iji elementi ne moraju biti istog tipa. C je pravljen kao zamjena za asembler. Svi slogovi imaju zajedniku rije struct. Unija Unija je tip podataka koji podsjea na strukturu (slog), ali je ponaanje razliito Operator i izrazi Operator ima preko 40. Oni se pojavljuju u izrazima (x*y)(z*t). U C-u je dodjela operator. Nivoa prioritea u C-u ima 15 a+b+++c|d<<e+++f ->(g=u++)&&(f-g) Zagrade nadjaavaju sve GRUPE OPERATORA Adresni operatori Aritmetiki operatori Relacioni operatori Bit operatori Logiki operatori Operatori dodjele Operator zapeta Podjela u C-u ima 11 BINARNI ARITMETIKI OPERATORI Sabiranje, oduzimanje, mnoenje pitanje dijeljenja Unarne aritmetike operacije Ima ih etiri Unarne operacije (znai sa jednim operantom) + - x unarna operacija promjena predznaka BONI EFEKTI Operatora je ee vaniji od glavnog operatora. Def= Operator ima boni efekat ako mijenja vrijednost operanta. Boni efekat generisanje rezultata i promjena vrijednosti Prvi operator sa bonim efektima INKREMENT ++ i DEKREMENT CIKLUSI -blok koda Ciklusi kada elimo da se ponovi blok koda, odreen broj puta. FOR funkcija ima 3 parametra, prvi je inicijal ili definicija, drugi je uslov, trei je promjena inicijala WHILE odmah provjeri uslov, ako nije ispunjen petlja se preskoi DO WHILE jedina razlika je ta da e do WHILE obraditi barem jednom Koritenje FOR ili WHILE svejedno je , jedina razlika kod FOR-a se svi inicijali su u jednoj liniji koda (odvojeni taka zarezom) WHILE inicijal While (uslov) {parametar} ASCII c Aski vrijednost predstavljena kao CHAR Relacioni operatori 3x(x>y) Operator relacione jednakosti == != nejednakost >>= <<= Svi generiu 0 ili 1 X<y<z - nepravilan izraz u C-u (x<y) && (y<z) Logiki operatori Obino se oznaavaju sa AND. Jedino u C-u se oznaavaju simbolima && - konjukcija logiko i || - logiko ili ! negacija Tri osnovna logika operatora primjer (a||b) && (C&&d++) X=d++; (a||b)&&(c&&x)...

Bit operatori Oni operiu na pojedinanim bitovima. Neposredni rad sa registrima & - konjukcija | - disjunkcija ~ - negacija Bit operatori se koriste u sistemskim programima (registri, procesori) ^ - ekskluzivna disjunkcija ili iskljuivo ili >> operacije pomeraja ili shift << shiftovanje ulijevo ili desno Uslovni operator Tzv: Ternarni operator jer ima tri operanta Opti oblik Izraz1 ? izraz2: Izraz3 - > izraz3 izraz =/ 0, izraz2 =/0 (a>b)? a:b Operatori dodjele Osnovni operator dodjele oznaava se sa = Operator dodjele ima i boni efekat Pr: a=b++3*(c=d<<3) Eksplicitna konverzija TYPE CAST zaobilaenje tipa Programer zahtjeva konverziju (int)a (long)x - eksplicitna konverzija long Sa eksplicitnom konverzijom implicitna djeluje npr: (int) (a+b-c/d) Eksplicitna konverzija uvijek nadjaava implicitnu NIZ IZRAZA Niz izraza se izra;unava s lijeva na desno VELIINA PODATAKA SIZEOF jedini operatora u C-u koji se prikazan mnemoniki Bibliteke funkcije Biblioteke funkcije iako su potprogrami, one su dio jezika. Zajednika osobina svih bibliotekih funkcija je ta da se piu m alm slovom. U biblioteke se svrstavaju po srodnosti: Stdio.h, math.h, stdlib.h, string.h Conio.h nestandardna biblioteka u code block-u. Naredbe U C-u naredbe se dijele na dvije grupe: prva su proste naredbe , druga su upravljake strukture. Prosta naredba je izraz praen terminatorom(;TERMINATOR) Izraz; x=1; prosta naredba Od izraza pravimo naredbu samo ako ima barem jedan bo ni efekat ; prazna naredba Upravljakih struktura u svim programskim jezicima imaju etiri grupe: 1. Sekvenca 2. Selekcije 3. Ciklusi 4. Skokovi Sekvenca je uvedena 60 U Algolu. Svrha sekvence je objedinjavanje vie naredbi u jednu. Selekcije imaju tri Opti oblik if(izraz) naredba If (izraz) naredba else naredba 2 CIKLUSI While (izraz) naredba

Ciklusi slue da ogranienim fizikim brojem naredbi zadamo veoma veliki posao. C ima iri ciklus od while, a to je ciklus for Svaki ciklus ima etiri elementa: Priprema zove se inicijalizacija Naredba zove se tijelo ciklusa uslov zavretka ciklusa modifikacija (promjena) Naredba FOR u C-u ima najire mogue granice. U praksi FOR koristimo obino kao brojaki ciklus. 3. DO naredba while(izraz); iz tehnickih razloga se ovdje dodaje tacka zarez. DO while se koristi kada izraz nemoa da se izrauna ako se ne izvri naredba. SKOKOVI C ima tri vrste skokova 1. Naredba go to; - skok sa proizvoljnim odreditem goto LABELLA; LABELLA; naredba Zbog goto je nastala najvea softverska revolucija. Goto naredba se ne koristi jer izaziva nepouzdanost programa 2. Break; skok gdje se tano zna gdje e se pojaviti. Break ovori programu da prekida blok koji se nastavlja. Blok koda unutar vitiastih zagrada 3. Continue ne iskae se iz ciklusa nekog pred skakanje dijela Pokazivai se smatraju iskorakom u profesionalnom programiranju POKAZIVAI Pokaziva je skalarni adresni tip koji ima barem jednu lokaciju. Vrijednosti pokazivaa su adrese. Pokazivai pointeri (zovu se jo) Lokacije nisu istog tipa i duine. Mora se znati tip podataka na kojem je pokaziva. Pokaziva je izvedeni tip, zao to se mo ra znati tip lokacije na koju pokazuje pokaziva. Deferencirani pokaziva ponaa se kao i promjenjiva tog tipa na kojem je pokaziva (samo to treba zvjezdica * ) ADRESNI OPERATOR & Adresni operator kada se koristi kada treba da se upie adresa lokacije Posebna vrsta pokazivaa su isti tzv generiki pokazivai (ne zna se tip lokacije na koju pokauzuju void* pG, void pokaziva je adresna promjenjiva. Rekurzija potprogram koji poziva samog sebe ADRESNA ARITMETIKA Dodjela (pokazivaa pokazivau) je dozvoljena Dozvoljena je osnovna dodjela samo ako su pokazivai istog tipa Koristenje datoteka Kod koristenja datoteka tekst fajlovi I binarni se sasvim razlicito koriste. Tekst fajlovi : - prenos bez konverzije-formatiranja - prenos sa konverzijom formatiranje Prenos je upis ili citanje. Prenos pojedinacnog znaka je prenos bez konverije. Za ovaj prenos postoje sledece finkicije: -Inf getc (FILE*dat); Getc (FILE*dat); - ogovsrajuca makro direktiva Prenos sa konverzijom -vrsi se pomocudvije funkcije: F scanf (FILE+dat,....) f-printf (FILE+dat,....) BINARNE DATOTEKE Koristenje bin datoteka Binarna datoteka za C je sekvenca bajtova. Navigacija redni borj podatka koji trenutno ocitava tekuci element Stvarni sadrzaj datoteke je struktura. Citanje i upis vrsi se u blokovima. Princip baferovanja (citanje/ispis) Ako se ucita sa adrese A, velika je vjerovatnoca da ce se sledeci citati sa adrese A+1( na susjednim adresama) To nam obezbjedjuje operativni sistem tj operativna memorija. Kad se bafer popuni onda prebacuije na disk. FLUSH praznjenje bafera Int vel velicina jednog elementa u bajtovima

Int br broj elemenata u jednom bloku FILE*dat broj uspjesno ocitanih elemenata f seak funkcija za zadavanje mjesta tekuem elementu (pomou dva podatka zadajemo mjesto: pomjeraj i reper ) SEEK END pomjeraj na kraj datoteke SEEK.CUR pomjeraj u odnosu na mjesto tekue datoteke SEEK.SET pomjeraj na poetak datoteke

Osnovne osobine programskog jezika C


1. C je operatorski jezik (ima preko 40 operatora tipa +, -, ...) 2. C se naziva slabo tipiziran jezik. Dozvoljeno je mjeanje tipova podataka. Nain realizacije logikog tipa je drugaiji i utie na stil programiranja.

Elementi programskog jezika C. To su sintaksa, semantika i pragmatika.


- Sintaksa je "pravopis". Ona nam kae kako neto napisati. - Semantika je "znaenje" onoga to je napisano. - Pragmatika je kako se koristi programski jezik, odnosno kako napraviti dobar program.

Alfabet. ...svakog programskog jezika je skup dozvoljenih simbola.


1. Prva grupa simbola je engleski alfabet velikih i malih slova kao i _ (donja crta) 2. Druga grupa su cifre od 0-9. 3. Su specijalni znaci (+ * - ? ; , >> += == >>=)

Format izvornog koda. Format je nain rasporeivanja naredbe.


- Slobodni format - Vezani format Kraj naredbe je novi red, to se zove "bijeli znak". Rjenik je skup rijei koje su rezervisane za C. npr. while. Nemoemo nazvati promjenjivu sa rijeima iz rjenika. Ima ih uku pno oko 30-40.

Komentari. Su namjenjeni programerima, a nije prevodiocu odnosno kompajleru. C ima dui i krai komentar.
/* (otvoren komentar) tekst ... ... (zatvoren komentar) */ // tekst (krai komentar je samo za jednu liniju)

Identifikatori. Je ustvari "ime". To su promjenjive, funkcije, tipovi, a moe se dati i konstanti npr. =3.14. U indetifikatore
mogu samo da uu slova i brojevi a nemogu se koristiti specijalni znakovi. Uslov je jedino da prvo bude slovo. Duina identifikatora moe da bude proizvoljno dugaak ali prevodilac uzima samo jedan dio (oko 31 karakter).

Konvencije. Stil programiranja u C-u je vrlo individualan i do rjeenja se dolazi na razliite naine.
1. Prva konvencija je da indetifikatori koji imaju semantiku moraju biti mnemoniki tj. da nas posjete na to znaenje. Promje njive se nazivaju MASA, SNAGA itd. tj. imenom. 2. Odnosi se na promjenjive i programe a nije opte prihvaen. Koriste se tzv. CAMEL notacija (poinje malim slovom, a svaka druga rije poinje sa velikim) i piu se spojeno. (myAge, inTransactionFile)

Globalna struktura programa i domet identifikatora. Ekstenzija.C je konvencija ali nije pravilo.
Domet identifikatora je oblast izvornog programa u kome identifikator smije da se koristi. Domet je od mjesta fizikog do kra ja. Deklaracija u C-u slui za irenje dometa i primjenjuje se prvenstveno na potprograme a nekad i na globalne promjenjive.

Osnovne osobine programskog jezika C


1. C je operatorski jezik (ima preko 40 operatora tipa +, -, ...) 2. C se naziva slabo tipiziran jezik. Dozvoljeno je mjeanje tipova podataka. Nain realizacije logikog tipa je drugaiji i utie na stil programiranja.

Elementi programskog jezika C. To su sintaksa, semantika i pragmatika.


- Sintaksa je "pravopis". Ona nam kae kako neto napisati. - Semantika je "znaenje" onoga to je napisano. - Pragmatika je kako se koristi programski jezik, odnosno kako napraviti dobar program.

Alfabet. ...svakog programskog jezika je skup dozvoljenih simbola.


1. Prva grupa simbola je engleski alfabet velikih i malih slova kao i _ (donja crta) 2. Druga grupa su cifre od 0-9. 3. Su specijalni znaci (+ * - ? ; , >> += == >>=)

Format izvornog koda. Format je nain rasporeivanja naredbe.


- Slobodni format - Vezani format Kraj naredbe je novi red, to se zove "bijeli znak". Rjenik je skup rijei koje su rezervisane za C. npr. while. Nemoemo nazvati promjenjivu sa rijeima iz rjenika. Ima ih ukupno oko 30-40.

Komentari. Su namjenjeni programerima, a nije prevodiocu odnosno kompajleru. C ima dui i krai komentar.
/* (otvoren komentar) tekst ... ... (zatvoren komentar) */ // tekst (krai komentar je samo za jednu liniju)

Identifikatori. Je ustvari "ime". To su promjenjive, funkcije, tipovi, a moe se dati i konstanti npr. =3.14. U indetifikatore
mogu samo da uu slova i brojevi a nemogu se koristiti specijalni znakovi. Uslov je jedino da prvo bude slovo. Duina identifikatora moe da budeproizvoljno dugaak ali prevodilac uzima samo jedan dio (oko 31 karakter).

Konvencije. Stil programiranja u C-u je vrlo individualan i do rjeenja se dolazi na razliite naine.
1. Prva konvencija je da indetifikatori koji imaju semantiku moraju biti mnemoniki tj. da nas posjete na to znaenje. Promje njive se nazivaju MASA, SNAGA itd. tj. imenom. 2. Odnosi se na promjenjive i programe a nije opte prihvaen. Koriste se tzv. CAMEL notacija (poinje malim slovom, a svaka druga rije poinje sa velikim) i piu se spojeno. (myAge, inTransactionFile)

Globalna struktura programa i domet identifikatora. Ekstenzija.C je konvencija ali nije pravilo.
ime.c j
deklaracija f

f f g

Globalna promjenjiva Domet identifikatora je oblast izvornog programa u kome identifikator smije da se koristi. Domet je od mjesta fizikog do kra ja. Deklaracija u C-u slui za irenje dometa i primjenjuje se prvenstveno na potprograme a nekad i na globalne promjenjive.

Bez naslova-nastavak novog predavanja


Potprogrami su smjeteni u biblioteke. Direktive nestiu do prevodioca. Prepoznaju se sa poetkom #include <stdio.h> i nemora da bude na poetku ve prije poziva prve funkcije. Svaka promjenjiva treba da ima ime i tip.

#include <stdio.h> const double PI=3.1415926; double obimKruga(doubler) { return 2*r*PI; } Ovo zaokrueno i boldirano bi bila definicija funkcije. Prilikom definisanja u zagradama su parametri ili formalni parametri. Na mjestu gdje se funkcija poziva ono to je na mjestu parametara zove se argument. Imenovana konstanta je u praksi uvijek oznaena velikim slovima. const je modifikator koji zakljuava promjenjivu. Naziv potprogram se u C-u neupotrebljava ve funkcija. Kad se ispisuje onda se ispisuje tip rezultata pa ime a zatim idu parametri. Vraena vrijednost funkcije main namjenjena je operativnom sistemu. int znai cjelobrojni tip funkcije main (int main). Takoe funkcija main nemora da ima parametre (int main ()) int main (){ double poluprecnik, obim; scanf("%lf", &poluprecnik); obim=obimKruga(poluprecnik); printf("Obim kruga je:%f", obim); return 0; } Konvenciona specifikacija % je prva koja se pie u scanf-u.

Tipovi podataka
Osnovni (bazni). To su tipovi koji su ugraeni u programski jezik i sami sebe objanjavaju. Bazni se djele na: -Standardni [1.znakovni (char), 2.cjelobrojni (int), 3.realni (float, double), 4. void] - Enumeracija Izvedeni tipovi. Koji sam naziv govori da nije dovoljno da objasni sam tip.To su: niz, slog (struktura), pokaziva, datoteka... Uvedeni su modifikatori u svrhu potpunog definisanja tipa i postoje dvije vrste a to su: - Modifikator duine (short i long) - Modifikator predznaka (signed i unsigned) char signed char short [int] - zauzima dva puta manje nego int. Ovo u [ ] nemora da se pie i pie se samo short. unsigned short [int] int - zauzima obino 2 bajta, a opseg je -32768 do +32767 unsigned [int] long [int] unsigned long [int] float - on je najmanji po apsolutnoj vrijednosti i mala je preciznost double - on je osnovni realni tip long double

Zadavanje imena tipu. Kod imena obavezno je da bude prvo slovo veliko. Treba ih stavljati izvan funkcije.
typedef opis Ime; typedef double Rastojanje;

Promjenjive. Lokalne promjenjive su definisane unutar funkcije, a globalne van nje. Vanije su lokalne funkcije. Globalne se
najee pojavljuju kao konstante koje su imenovane (imenovane konstante). tip ime1[=pv1] , ime2... -gdje je pv poetna vrijednost. int i=0, j, k, t=100; Imamo dva modifikatora pristupa: - const (njega koristimo) - volatile (koristi se opretavine sisteme)

Znakovni tip.
1. 'a' 'M' ' ' '_' '+' (Upravljaki znaci se prikazuju u tzv. escape sekvencama.) 2. '\n' '\b' (back spase) '\t' (tabulacija) '\ ' (ASCII nula) '\'' '\''' '\? '\\' (Kada se escape sekvenca nae unutar stringa (navodnika) apostrofi se ne piu.)

3. Znakovni tip je lan familije cjelobrojnih tipova char c; c=152; %c char x; x='M'; x+1 M je u ASCII-u 77 i kada se sabere to je 78 Cjelobrojni tipovi se piu na tri naina 145 -3122 +1 0 435 435U 435L - (U je sufiks za unsigned a L za long. Takoe moe da bude i kombinacija ova dva 435UL) Imamo i oktalni nain ali on se slabo koristi: 126 (Vodea je nula ) Heksa decimalni se esto koriste i oni su podesniji za prikazivanje samog binarnog broja a1b6 1FA8 %d %u - unsigned %o - oktalni %x - heksadecimalni %i - tu vrijednost unosi programer tipa oktalnu, dekadnu, heksadecimalnu Realne konstante se prikazuju u dva uobiajena naina 1.3 -0.8 +432.521 1E -6 -3.8e10

1.42 (double) 1.42F (float) 1.42L (long double) Ulazna konverzija: %lf -double %f -float %Lf -long double Izlazna konverzija: %f -double %l -float %g -long double

Enumeracija. Je namjenjena da eliminie viestruko ifrovanje. Ona je skalarni tip, a konstante enumeracije sloimo u tip
enumeracije. Sve numeracije imaju jednu zajedniku rije enum. 1. nain. enum {NE, DA} log1, log2; 2. nain. Najea koritena mogunost je Tag (ili privjesak), ona slui da precizira enumeraciju. enum RGB {CRVENA, ZELENA, PLAVA}; ... enum RGB b1, b2; 3. nain.
1 2

typedef enum RGB {CRVENA, ZELENA, PLAVA} OsnBoje; ... OsnBoje b1, b2; Enumeracija je lan familije cjelobrojnih tipova b1=3*PLAVA;
56 7 20 21

enum tg {P1, P2=5, P3, P4, P5=20, P6};

Simbolike konstante.

#define ime vrijednost # define FALSE U stringu nee promjeniti, a u svim ostalim sluajevima hoe (gdje god naie na FALSE u ovom sluaju dae vrijednost )

Nizovi (tip niza). Svrha niza je da objedini srodne promjenjive u cjelinu.


tip imeNiza[duina] indeks duina-1 int vek [50], i=1, j; vek [10] vek [i] vek [2*i-j+1] vek [50] Indeksiranje u C-u je operacija za razliku od svih drugih programskih jezika.
memorija

double mtr [30] [40] mtr [i] [j] mtr [k] mtr [2]

prva vrsta druga vrsta treda vrsta : .

int iN[4] = {1, 6, -5, 10}; = {11, -24}; double d [ ] = {1.5, -0.8, 4.3}; double d [30] [40] = { {...}, {...}, ..., {...} };

Logiki tip.

Tip stringa. String se u C-u realizuje kao znakovni niz sa specijalnim osobinam. Znakovni niz se pojavljuje u dve uloge.
- Jedna uloga je niz iji su elementi znakovi. - Druga uloga je znakovni niz u ulozi stringa. Ima tri osobine: - Prva osobina je posjedovanje stringovne konstante (Literale) "Pero Peri" Mogu se koristiti za inicijalizaciju ili kao argument funkcije. Dodjela se nemoe vriti. - Druga osobina je nain na koji se memorie. char ime [20] = "Pero Peri"; 'P' 'e' 'r' 'o' ' ' 'P' 'e' 'r' 'i' '' '\ ' ... '\ ' -ASCII %s - konverziona specifikacija string.h - biblioteka za stringove

Struktur ili slog. Slog je kolekcija raznovrsnih elemenata (misli se na tip podataka). Slog slui da opiemo neki entitet.
Iste su tehnike kao kod enumeracije struct tck { double x, y; } struct tck t1, t2 = {1.3, -0.5}; t1 = t2 t1.x t1.x t2.y

Unija.
struct st { char c; int i; double d; }; struct st s; s.c s.i s.d

union un { char c; int i; double d; }; union un u;


i c d

un.c un.i un.d

union reg { unsigned p; [2] unsigned short q ; };


p

q[0]

q[1]

Operatori i izrazi
- C jeoperatorski jezik i slabo tipizirani jezik koji ima preko 40 operatora. Dodjela je operacija. Svaka operacija mora da ima (generie) rezultat. Podrazumjevani smjer je smjer grupisanja i to je s lijeva u desno ,ali ima i onaj drugi s desna u lijevo. 1. Adresni operatori (oni su najprioritetniji) 2. Aritmetiki operatori 3. Relacioni operatori 4. BIT - operatori 5. Logiki operatori 6. Operatori dodjele 7. Operator zapeta (zareza)

Aritmetiki operatori. Postoje binarni i unarni aritmetiki operatori.


1. Binarni su: +, -, *, /, % (ostatak pri djeljenju) 2. Unarni su : -+, ++, -5.0/2 2.5 5/2 2 99/100 0 Unarni aritmetiki operatori. -+ ++ --x (- (minus) je operator predznaka) +x (+ je potvrda predznaka i to niko neupotrebljava)

Boni efekat. To je osobina operatora. Operator sa bonim efektom mijenja vrijednost bar jednog operanda. Inkrement i dekrement. Su unarni aritmetiki operatori i primjenjuju se za cjelobrojne vrijednosti. Boni efekat inkrementa ++ poveava vrijednost za 1, a dekrement --smanjuje za 1. ++Kje prefiksni oblik K++ postfiksni oblik k = 100 3 * ++k 303 3 * k++ 300 x = x + 1 se u C-u nikad nepie x++ ++x je pravilno napisano

Relacioni operatori.
== jednako != nejednako >manje >= manje ili jednako <vee <= vee ili jednako

x < y < z ovako netreba nikada pisati jer daje netaan rezultat (x < y) && (y < z) ovo je pravilno napisano

Logiki operatori.
&& - i (konjukcija) || -ili (disjunkcija) ! - negacija && i su numeriki izrazi po potrebi mogu biti i realni ali se oni izbjegavaju

x=d++ a&&b || c&&d

BIT - operatori. To su operatori koji samo lie na logike ali se drugaije ponaaju
& - konjukcija | - disjunkcija ^ - isljuivo ili (disjunkcija) ~ - komplementiranje >> - pomjeranje u desno (iftanje) << - pomjeranje u lijevo (iftanje) x<<k x<<2 0110 1011 1010 1100 y>>3 x - heksa je drugi tip operatora unsigned - je trei tip operatora

Uslovni izraz (operator).To je operator treeg reda i ima tri operanda

(x>y)? x:y-izraz (x>y) znai dali je ili nije jednak 0, odnosno u praksi je to Da ili Ne. Sam izraz nema bone efekte ve samo rezultat z=(x>y)? x:y

Operatori dodjele. Dodjela u C-u je operator, a u svim ostalim jezicima je naredba i to je operator sa bonim efektom. Takvih
operatora ukupno ima 11.

promjenjiva =izraz x=5 =>5 y=x+3 =>8 a[3]=10 s.t=-3 LVALUE = Izraz L VRIJEDNOST

}ovo je posebna vrsta gdje se dodjeljuJje vrijednost preko operatora dodjele


Preostalih 10 operatora dodjele ponaaju se isto: +=, -=, *=, /=, %=, &=, |=, ^=, >>=, <<= x+=10 x=x+10

}isto
a op =b <=> a = a op B

Konverzija
2.5 10

d+i
10.0

Treba da sabere realnu sa cjelobrojnom promjenjivom pri tome potprogram koji pretvara cjelobrojnu vrijednost u realni broj i pritome se nemjenja vrijednost. Posvoje dva naina konverzije: 1. Implicitnaili automatska (koju radi prevodilac) 2. Eksplicitna konverzija TYPE CAST (tzv. kastovanje) gdje to radi programer. Implicirana konverzija. 1. long double (ako je bar jedan long double konvertovae long double) 2. double 3. flooat char 4. (promocija) short}int (ako je jedan od ova tri operanda, pretvaraju se u int) enum 5. long (6. int) U ovom sluaju nita se neradi jer nema konverzije. Eksplicitna konverzija.To se radi tzv. operatorom kasta. (tip)izraz long(x)

Niz izraza. Slui da vie nezavisnih izraza napravimo jedan.


izraz1, izraz2, ... , izrazn - (izrazn predstavlja ukupnu vrijednost cijelog niza izraza) x=10, y=x++, z+=y, z-Veliina podatka. Ako u programu trebamo veliinu podatka, nikad se ne stavlja konstanta. sizeof(tip) sizeof(int) sizeof(long double) sizeof izraz sizeof a

Redosljed izraunavanjaoperatora.
a*b+c/d (pitanje je ta prvo treba da izrauna a*b ili c/d). Pravilo prioriteta imaju samo susjedni operatori. Ovaj problem rijeavamo tako da "razbijemo" izraz . a=b*c+b++ x=b++ a=b*c+x

Naredbe programskog jezika C. Djele se na dvije vrste: - Proste naredbe i - Upravljake strukture.

Proste naredbe izraz; x=1; Proste naredbe se prave ako imaju boni efekat. k++; ++k; Rezultati su razliiti ali efekat je isti. Kod ++k rezultat je uvean za 1. Upravljake strukture. Su standardni dio svakog programskog jezika i djeli se u 4 grupe. 1. Sekvenca 2. Selekcije 3. Ciklusi 4. Skokovi

Sekvenca. Je jednostavna upravljaka struktura koja je najvanija od svih. Svrha je da se od vie naredbi napravi jedna.
{nar1 nar2 narn} {x=1; y+=x; z/=y;}

Selekcije.C ima tri vrste selekcije.


1. if (izraz) naredba - Ovo je sintaksa

Ciklusi. C ima tri naredbe ciklusa.


1. while (izraz)naredba. Koristimo kada nije brojaki ciklus.

=0

izraz izraz 0

naredba

2. for (izraz1; izraz2; izraz3) naredba. U ciklusu imamo inicijalizaciju, provjeru kraja, modifikaciju i tijelo ciklusa.

Izraz 1

Izraz 3 Izraz Izraz 2 2 naredba 0 =0

3. do while do naredba while (izraz);

naredba

Izraz Izraz =0

Skokovi
1.go to: naredba go to LABELA; go to NASTAVAK; : NASTAVAK: naredba Ova naredba se nekoristi jer je idealan izvor greaka, i program postaje nepouzdan. Ova naredba se koristi samo u sluaju izlaska iz ugnjedenih struktura.

2. break; (Koristi se kod switch case i ciklusa)

Pokazivai. Pokaziva je sam po sebi skalarna veliina. Vrijednosti koje zauzimaju pokazivai su adrese u memoriji.
P A pokaziva A lokacija tip

tip *p int *pI -(int je lokacija, a pI je pokaziva)

pI int* int x, j=1, a[100], *pI, *pJ; (*pI i *pJ su int*) pIme - Predstavlja Maarsku notaciju pokazivaa Pristup pokazivanoj lokaciji zove se Dereferenciranje. To je unarni operator. *pI je deferencirani pokaziva. Generiki pokazivai su iste skalarne adresne promjenjive i nemoemo pristupiti adresi i nemoe se dereferencirati. void * pG int *pI , pJ, x;

: : x=10; pI =&x; pI ? 10 pI ? A pJ = pI; pJ ? 10 * pI = 100 x ? 100 pJ ? A *pJ ? 100 Ovo je ilustracija kako rade pokazivai, i nije primjer primjene.

Adresna aritmetika.
1. Osnovni operator dodjele int *pI, pJ double *pD void *pG pI = pJ pG = pI pG = pD pD = pG pG = pI pD = pG + + = ++ - - = -pI + 1 pI + 1 *sizeof (int) (* predtavlja puta i nije pokaziva) pI + i pI + i *sizeof (int) int a [100], i; a

| a[0]

| a[1]

...

| a[i]

| a[i+1]

... a[99]

...

Ime niza aje pokaziva na njegov nulti element. *a a [0] *(a+1) a [1] *(a+i) a [i] a+i &a [i] U programu gdje je definisan niz moemo koristiti i jedno i drugo (ovo to je boldirano), odnosno to je isto. == != <<= >>=

- NULL se nalazi u stdio.h i stdlib.h i to znai da pokaziva ne pokazuje na nita (NULL). %p - to je prikaz pokazivaa

Dinamika dodjela memorije.

Zauzimanje memorije zove se alokacija. Oslobaanje memorije zove se dealokacija. Funkcije se nalaze u stdlib.h. void * malloc (b) void * malloc (n, b) free (poc)

-(n je broj elemenata niza, a b je bajt)

long double *pX; : . pX = malloc(sizeof(long double)) *pX free(pX); pX==NULL

Funkcije.
zaglavlje {

blok

tip koji vrada funkcija tip ime (tip1 p1, tip2 p2, ... , tipn pn) Funkcija nemoe da vrati vrijednost niza. U inicijalizaciji mogu da uestvuju i parametri. double zbir (double x; double y) { double z; z = x+y; return z; } Funkcija koja vraa vrijednost poziva se u ukljuivanje izraza t = 2 * zbir(p, 6.3) - 1; Prenos argumenta u funkciju. Argument se u funkciji prenose na dva naina: 1. Prenos po vrijednosti 2. Prenos po adresi double f (double a) { ... }

F(t) t f 3.8 3.8

Stek

Stek slui kao posrednik u prenoenju. Vrijednost se prenosi u Stek a funkcija radi sa kopijom.
q g &q

Funkcija radi sa orginalom a ne sa kopijom sa steka. Nizovi u C-u se iskljuivo prenose po adresi, zato to je ime niza adresa.
const double *a const double *b

double skalpro ( double a [ ], double b [ ], int n) {

double S; int j; for (S = ; j = ; j < n; j++) st = a [j] * b [j]; return S; } double u [100], u [100], z, t; int n; z = t + 3 * skalpro (u, u, n); Kada vidimo char* to nije pokaziva ve je u pitanju string.Ukoliko su nizovi isto ulazni ubacuje se rije const. Kada je u pitanju prenos po vrijednosti na mjesto funkcije smije da se nae izraz.

void polar (double x, double y, double * r, double * fi) { *r = sqrt (x * x + y * y); *rfi = (x ==o) && (y == 0) ? o : atan2 (y, x); } double x, y, mod, arg; polar (x, y, &mod, &arg);

Pretprocesor jezika C

P.C

procesor

P.C

Kompaj.

.exe

Direktive pretprocesoru poinju sa #. Direktiva ima 10 -15, a mi emo izdvojiti 3. 1. #include slui za umetanje sadraja datoteke u izvorni kod. #include <ime.ekst> ili da se pie #include "ime.ekst" i efekat je isti.
#include <ime.ekst> Ime.ekst

2. #define za zamjenu djelova teksta drugim tekstom #define TOKEN1 TOKEN2 #define TRUE 1
P.C TRUE TRUE TRUE

1 1 1

3. # ifndef #endif za uslovno ukljuivanje teksta. # ifndef TOKEN na re dbe #endif

Mikrodirektive
#define ime(P1, ... ,Pn) izlaz #define max (P, Q) (((P)>(Q))?(P):(Q)) t = sin(z) + max(x, a+b); t = sin(z) + x> a*b ? x : a+b; Po nainu koritenja mikrodirektive se nerazlikuju od funkcija # define prod (A,B) ((A)*(B))

j = prod (x+y, z+t); j = x+y*z+t;

Biblioteke

Pokazivai na funkcije
double (*pF) (double); double f (double x); { .... } pF =f f(y) (*pF) (y) void tabela (double x[ ], intn, double(*pf) (double)) {... (*pf) x[i]) for (i=0; i<n;i++) print("...", x[i], f(x[i]) double g (doublex) { return sin(x) * exp(x); } tabela (y, m, g)

Argument glavnog programa


test 10 2.8 int main (int arc, char * argv[ ]) { int iPar; double dPar; iPar = atoi (argv[1]); dPar = atof (argv[2]);

Datoteke
Datoteka nije dio programa, ona je dio operativnog sistema. C vidi datoteku kao niz bajtova.
FILE my File; C:\MyFold\dat.txt

Radnje: 1. Definisanje datotene promjenjive

2. Otvaranje datoteke 3. Zatvaranje datoteke 4. Koritenje datoteke Sav posao sa datotekama obavlja se sa funkcijama stdio.h. FILE * dat; ovo bi bio tip datotene promjenjive Otvaranje datoteke se otvara sa funkcijom (koja se nalazi ustdio.h) fopen FILE * fopen ("putanja", "reim") tekst "r" (read-only) "w" (write-only) "a" (dodavanje na postojei sadraj) "r+" "w+" "a+" binarno "rb" (read-only) "wb" (write-only) "ab" (dodavanje na postojedi sadraj) "r+b" "rb+" "w+b" "wb+" "a+b" "ab+" if ((myFile = fopen("C:\\MyFolder\\dat.txt", "r")) == NULL) greka Ako otvaranje nije uspjelo fopen vraa NULL pokaziva i moe se provjeriti dali j e otvaranje uspjelo. Zatvaranje datoteke int fclose(dat) fclose(myFile); - U programu datoteka treba da bude minimalno otvorena i po potrebi, a treba je zatvarati kada se ne koristi. Koritenje datoteke 1. Prenos podataka bez formatiranja int fget (FILE *) getc (FILE *) int getchar ( ) int fputc (intz, FILE * dat) putc (intz, FILE * dat) int putchar (intz) fgets fputs 2. Prenos podataka sa formatiranjem f scanf (FILE * dat, ... f printf (FILE * dat, ...

You might also like