programiranje seminarski rad C

26
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 može sve sa svima. Da bi čovjek mogao sam da nauči programski jezik razmatra 4 stvari: 1. Kojim tipovima podataka raspolaže dati jezik: cjelobrojni, znakovni, logički, 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 angažovana cijela tastatura C ima dvije vrsta komentara: 1. Duži komentari i imaju početak dvoznako /* */ 2. Kraći komentari – ne zauzimaju više od jedne linije i počinje sa // U programskom jeziku C naredbe se pišu 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 uđu samo slova i cifre 2. Obavezno je da prvi simbol bude slovo 3. Određen broj prvih simbola će samo biti uzet 4. Identifikatori koji imaju semantiku moraju biti mnemonički. 5. Identifikator obavezno počinje malim slovom, a svaka nova riječ unutar identifikatora počinje velikim slovom. 6. Nula se precrtava da se ne bi zamjenila slovom O 7. Pomoćni identifikatori moraju da budu kratki. Promjenljiva privremeno – temp. Globalna struktura programa i domet identifikatora Proceduralno programiranje: - Programi u C imaju prilično labavu strukturu - Program se raspoređuje u izvorne datoteke i u njima se nalazi code - Može biti više izvornih datoteka - Izvorna datoteka ime.c (c-ekstenzija izvorne datoteke) može biti .cpp (c++) dva prevodioca (kompajlera) - Jedino ograničenje je domet identifikatora (oblast definisanosti) - Domet identifikatora je omeđen njegovom definicijom. Svaki identifikator se mora definisati. - Svaka varijabla treba da se definiše - Domet identifikatora je od momenta definisanja pa do kraja segmenta. Ako imamo definisanu varijablu X i u podprogramu i u izvornoj datoteci, veću važnost ima ona u podprogramu Deklarisanje i definisanje - Identifikator se definiše tačno jednom - Deklarisanje je dodatni mehanizam za širenje dometa - Kada deklarišemo funkciju ''g'' kažemo kompajleru da će se kasnije pojaviti program ''g'' - Kod podprograma je najvažnije deklarisanje

description

dobar seminarski, prolazi

Transcript of programiranje seminarski rad C

Page 1: programiranje seminarski rad C

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 može sve sa svima. Da bi čovjek mogao sam da nauči programski jezik razmatra 4 stvari:1. Kojim tipovima podataka raspolaže dati jezik: cjelobrojni, znakovni, logički, realni2. Kako izgledaju naredbe datog jezika3. Kako se organizuje ulaz/izlaz4. 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 93. -+ ++ = -- <> specijalni znaci gdje je angažovana cijela tastatura

C ima dvije vrsta komentara:1. Duži komentari i imaju početak dvoznako /* */2. Kraći komentari – ne zauzimaju više od jedne linije i počinje sa //

U programskom jeziku C naredbe se pišu 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 uđu samo slova i cifre2. Obavezno je da prvi simbol bude slovo3. Određen broj prvih simbola će samo biti uzet4. Identifikatori koji imaju semantiku moraju biti mnemonički.5. Identifikator obavezno počinje malim slovom, a svaka nova riječ unutar identifikatora počinje velikim slovom.6. Nula se precrtava da se ne bi zamjenila slovom O7. Pomoćni identifikatori moraju da budu kratki. Promjenljiva privremeno – temp.

Globalna struktura programa i domet identifikatoraProceduralno programiranje:

- Programi u C imaju prilično labavu strukturu- Program se raspoređuje u izvorne datoteke i u njima se nalazi code- Može biti više izvornih datoteka- Izvorna datoteka ime.c (c-ekstenzija izvorne datoteke) može biti .cpp (c++) dva prevodioca (kompajlera)- Jedino ograničenje je domet identifikatora (oblast definisanosti)- Domet identifikatora je omeđen njegovom definicijom. Svaki identifikator se mora definisati.- Svaka varijabla treba da se definiše- Domet identifikatora je od momenta definisanja pa do kraja segmenta. Ako imamo definisanu varijablu X i u

podprogramu i u izvornoj datoteci, veću važnost ima ona u podprogramu

Deklarisanje i definisanje- Identifikator se definiše tačno jednom- Deklarisanje je dodatni mehanizam za širenje dometa- Kada deklarišemo funkciju ''g'' kažemo kompajleru da će se kasnije pojaviti program ''g''- Kod podprograma je najvažnije deklarisanje

Program za računanje obima krugaDouble – realan tipKonvencija – velika slova za zaključavanje varijableTipovi podataka: osnovni i izvedeni (niz, slog, pokazivač, unija)Tipovi podataka se interpretiraju bitovima (0 i 1).Bazni: standardni i enumeracija (konstantno definiše programer a ne programski jezik).Standardni:

1. Znakovni – char – identifikator familije znakovnih tipova2. Cjelobrojni – int – indentifikator familije cjelobrojnih tipova3. Realni – float, double

Najfrekventniji je INT.Tip podataka se precizno zadaje pomoću zajedničke riječi za cijelu familiju i sa još dva podatka. Ti podaci su istoriječi a zovu se modifikatori. Oni zajedno omogućavaju precizno definisanje tipa.Modifikator predznaka i modifikator dužine.Modifikatora predznaka ima dva: signed, unsigned (signed ima negativnih vrednosti, unsigned nema).

Page 2: programiranje seminarski rad C

Modifikatora dužine ima dva: short i long.Tipična dužina je -128 do +128; short je 1 bajtFloat – najmanja preciznost i najmanji raspon (brzo)Double – veća preciznost i veći raspon (sporije)Long double – još veća preciznost i još veći raspon (mnogo sporije)Zadavanje naziva tipu:Tip niza i tip sloga i mehanizam koji od niza i sloga pravi novi tip.

PromjenljivePromjenljiva se karakteriše imenom i tipom i mora da ima ime i tip. Da bi se zadalo ime i tip koristi se definicija promenljive.Naredba za definisanje promjenljive izgleda ovako:tip imedouble xint iPromjenljiva može i ne mora da se inicijalizuje tj. da joj se dodaje početna vrijednost:

Modifikator pristupa ima dva oblika:Const – koji zaključava promenljivu, sprečava promjenu njene vrednosti.Volatile – promenljiva koja se koristi u sistemskom programiranju može da se mjenja samo u operativnom sistemu.

Elementarni ulaz/izlazPodrazumeva 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 objašnjenje koje:%[*] – znači sljedeću poziciju preskoči%[*] [širina] – broj pozicija na ulazu koji je rezervisan za promjenljivu (ako se ne navede,određuje se automatski)%[*] [širina][l] – određuje tipove podatakaPrintf(''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 načina:Jedan je kada koristimo direktno u izrazima: char x, x=145Znakovni tip je član familije cjelobrojnih tipova.Konverziona specifikacija za znakovni tip je c.

Cjelobrojni tipKarakterišu se sa ''int''.

Realni tipovi- Float- Double- Long double

Enumeracija – ima specijalnu namjenu a to je da izvorni kod učini čitljivijim za ljude.Značaj enumeracije – uvesti konstante sa imenom, ali složiti jedan te isti tip.Enumeracija je član familije cjelobrojnih tipova. Sve enumeracije imaju zajedničku ključnu riječ ENUM.

1. Zajedno sa enumeracijom se definiše 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;

Simboličke konstante – treći način kojima se konstantama daje ime; a to se radi predprocesorskom direktivom #definePo pravilu, simboličke konstante se pišu isključivo velikim slovom.

NizoviNiz 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 mašinskom jeziku se vrše tri operacije: množenje, oduzimanje i sabiranje. To je razlog što je minimalna vrijednost nula.

Slog (strutkura)

Page 3: programiranje seminarski rad C

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 zajedničku riječ – struct.

Unija Unija je tip podataka koji podsje’a na strukturu (slog), ali je ponašanje različito

Operator i izraziOperator 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 nadjačavaju sve GRUPE OPERATORA

- Adresni operatori- Aritmetički operatori- Relacioni operatori- Bit operatori- Logički operatori- Operatori dodjele- Operator zapeta

Podjela u C-u ima 11

BINARNI ARITMETIČKI OPERATORISabiranje, oduzimanje, množenje pitanje dijeljenja

Unarne aritmetičke operacijeIma ih četiriUnarne operacije (znači sa jednim operantom) + -- x – unarna operacija promjena predznaka

BOČNI EFEKTIOperatora je češće važniji od glavnog operatora. Def= Operator ima bočni efekat ako mijenja vrijednost operanta. Bočni efekat – generisanje rezultata i promjena vrijednostiPrvi operator sa bočnim efektima INKREMENT ++ i DEKREMENT –

CIKLUSI -blok kodaCiklusi – kada želimo da se ponovi blok koda, određen broj puta.FOR – funkcija ima 3 parametra, prvi je inicijal ili definicija, drugi je uslov, treći je promjena inicijalaWHILE – odmah provjeri uslov, ako nije ispunjen petlja se preskočiDO WHILE – jedina razlika je ta da će do WHILE obraditi barem jednomKorištenje FOR ili WHILE svejedno je , jedina razlika kod FOR-a se svi inicijali su u jednoj liniji koda (odvojeni tačka zarezom)WHILE inicijalWhile (uslov){parametar}ASCII cAski vrijednost predstavljena kao CHAR

Relacioni operatori3x(x>y)Operator relacione jednakosti == != nejednakost>>=<<=Svi generišu 0 ili 1X<y<z - nepravilan izraz u C-u(x<y) && (y<z)

Logički operatoriObično se označavaju sa AND. Jedino u C-u se označavaju simbolima && - konjukcija logičko i || - logičko ili! – negacijaTri osnovna logička operatoraprimjer(a||b) && (C&&d++)X=d++;(a||b)&&(c&&x)...

Page 4: programiranje seminarski rad C

Bit operatoriOni operišu na pojedinačnim bitovima. Neposredni rad sa registrima& - konjukcija| - disjunkcija~ - negacijaBit operatori se koriste u sistemskim programima (registri, procesori)^ - ekskluzivna disjunkcija ili isključivo ili>> operacije pomeraja ili shift<< shiftovanje ulijevo ili desno

Uslovni operatorTzv: Ternarni operator jer ima tri operanta Opšti oblikIzraz1 ? izraz2: Izraz3 - > izraz3 izraz =/ 0, izraz2 =/0(a>b)? a:b

Operatori dodjeleOsnovni operator dodjele – označava se sa =Operator dodjele ima i bočni efekatPr: a=b++3*(c=d<<3)

Eksplicitna konverzija TYPE CAST – zaobilaženje tipaProgramer zahtjeva konverziju (int)a (long)x - eksplicitna konverzija longSa eksplicitnom konverzijom implicitna djeluje npr: (int) (a+b-c/d)Eksplicitna konverzija uvijek nadjačava implicitnu

NIZ IZRAZANiz izraza se izra;unava s lijeva na desnoVELIČINA PODATAKA SIZEOF – jedini operatora u C-u koji se prikazan mnemonički

Biblitečke funkcijeBibliotečke funkcije iako su potprogrami, one su dio jezika. Zajednička osobina svih bibliotečkih funkcija je ta da se pišu malm slovom. U biblioteke se svrstavaju po srodnosti:Stdio.h, math.h, stdlib.h, string.hConio.h – nestandardna biblioteka u code block-u.

NaredbeU C-u naredbe se dijele na dvije grupe: prva su proste naredbe , druga su upravljačke strukture.Prosta naredba je izraz praćen terminatorom(;TERMINATOR)Izraz; x=1; prosta naredbaOd izraza pravimo naredbu samo ako ima barem jedan bočni efekat ; prazna naredba

Upravljačkih struktura u svim programskim jezicima imaju četiri grupe:1. Sekvenca2. Selekcije3. Ciklusi4. Skokovi

Sekvenca je uvedena ’60 U Algolu. Svrha sekvence je objedinjavanje više naredbi u jednu.Selekcije imaju tri Opšti oblik if(izraz) naredbaIf (izraz) naredba else naredba 2

CIKLUSIWhile (izraz) naredba

Page 5: programiranje seminarski rad C

Ciklusi služe da ograničenim fizičkim brojem naredbi zadamo veoma veliki posao. „C“ ima širi ciklus od while, a to je ciklus forSvaki ciklus ima četiri elementa:Priprema – zove se inicijalizacijaNaredba – zove se tijelo ciklusauslov završetka ciklusamodifikacija (promjena) Naredba FOR u C-u ima najšire moguće granice. U praksi FOR koristimo obično kao brojački ciklus.3. DO naredba while(izraz); iz tehnickih razloga se ovdje dodaje tacka zarez.DO while se koristi kada izraz nemoža da se izračuna ako se ne izvrši naredba.

SKOKOVIC – ima tri vrste skokova1. Naredba go to; - skok sa proizvoljnim odredištemgoto LABELLA;LABELLA; naredbaZbog goto je nastala najveća softverska revolucija.Goto naredba se ne koristi jer izaziva nepouzdanost programa2. Break; skok gdje se tačno zna gdje će se pojaviti. Break ovori programu da prekida blok koji se nastavlja. Blok koda – unutar vitičastih zagrada3. Continue – ne iskače se iz ciklusa nekog pred skakanje dijelaPokazivači se smatraju iskorakom u profesionalnom programiranju

POKAZIVAČIPokazivač je skalarni adresni tip koji ima barem jednu lokaciju. Vrijednosti pokazivača su adrese. Pokazivači – pointeri (zovu se još)Lokacije nisu istog tipa i dužine. Mora se znati tip podataka na kojem je pokazivač. Pokazivač je izvedeni tip, zao što se mora znati tip lokacije na koju pokazuje pokazivač.Deferencirani pokazivač ponaša 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 upiše adresa lokacijePosebna vrsta pokazivača su čisti tzv generički pokazivači (ne zna se tip lokacije na koju pokauzuju void* pG, void pokazivač je adresna promjenjiva.Rekurzija – potprogram koji poziva samog sebe

ADRESNA ARITMETIKADodjela (pokazivača pokazivaču) je dozvoljenaDozvoljena je osnovna dodjela samo ako su pokazivači istog tipaKoristenje datotekaKod koristenja datoteka tekst fajlovi I binarni se sasvim razlicito koriste. Tekst fajlovi :- prenos bez konverzije-formatiranja- prenos sa konverzijom – formatiranjePrenos 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 direktivaPrenos sa konverzijom-vrsi se pomocudvije funkcije:F scanf (FILE+dat,”....”)f-printf (FILE+dat,”....”)BINARNE DATOTEKEKoristenje bin datotekaBinarna datoteka za C je sekvenca bajtova.Navigacija – redni borj podatka koji trenutno ocitava tekuci elementStvarni 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 baferaInt vel – velicina jednog elementa u bajtovima

Page 6: programiranje seminarski rad C

Int br – broj elemenata u jednom blokuFILE*dat – broj uspjesno ocitanih elemenataf seak – funkcija za zadavanje mjesta tekućem elementu (pomoću dva podatka zadajemo mjesto: pomjeraj i reper)SEEK END – pomjeraj na kraj datotekeSEEK.CUR – pomjeraj u odnosu na mjesto tekuće datotekeSEEK.SET – pomjeraj na početak datoteke

Osnovne osobine programskog jezika C1. C je operatorski jezik (ima preko 40 operatora tipa +, -, ...)2. C se naziva slabo tipiziran jezik. Dozvoljeno je mješanje tipova podataka. Način realizacije logičkog tipa je drugačiji i utiče na stil programiranja.

Elementi programskog jezika C. To su sintaksa, semantika i pragmatika.- Sintaksa je "pravopis". Ona nam kaže kako nešto napisati.- Semantika je "značenje" 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 način raspoređivanja naredbe. - Slobodni format- Vezani formatKraj naredbe je novi red, to se zove "bijeli znak".Rječnik je skup riječi koje su rezervisane za C. npr. while. Nemožemo nazvati promjenjivu sa riječima iz rječnika. Ima ih ukupno oko 30-40.

Komentari. Su namjenjeni programerima, a nije prevodiocu odnosno kompajleru. C ima duži i kraći komentar./* (otvoren komentar)tekst ......(zatvoren komentar) */

// tekst (kraći komentar je samo za jednu liniju)

Identifikatori. Je ustvari "ime". To su promjenjive, funkcije, tipovi, a može se dati i konstanti npr. π=3.14. U indetifikatore mogu samo da uđu slova i brojevi a nemogu se koristiti specijalni znakovi. Uslov je jedino da prvo bude slovo. Dužina identifikatora može da bude proizvoljno dugačak ali prevodilac uzima samo jedan dio (oko 31 karakter).

Konvencije. Stil programiranja u C-u je vrlo individualan i do rješenja se dolazi na različite načine.1. Prva konvencija je da indetifikatori koji imaju semantiku moraju biti mnemonički tj. da nas posjete na to značenje. Promjenjive se nazivaju MASA, SNAGA itd. tj. imenom.2. Odnosi se na promjenjive i programe a nije opšte prihvaćen. Koriste se tzv. CAMEL notacija (počinje malim slovom, a svaka druga riječ počinje sa velikim) i pišu 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 fizičkog do kraja.Deklaracija u C-u služi za širenje dometa i primjenjuje se prvenstveno na potprograme a nekad i na globalne promjenjive.

Page 7: programiranje seminarski rad C

Osnovne osobine programskog jezika C1. C je operatorski jezik (ima preko 40 operatora tipa +, -, ...)2. C se naziva slabo tipiziran jezik. Dozvoljeno je mješanje tipova podataka. Način realizacije logičkog tipa je drugačiji i utiče na stil programiranja.

Elementi programskog jezika C. To su sintaksa, semantika i pragmatika.- Sintaksa je "pravopis". Ona nam kaže kako nešto napisati.- Semantika je "značenje" 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 način raspoređivanja naredbe. - Slobodni format- Vezani formatKraj naredbe je novi red, to se zove "bijeli znak".Rječnik je skup riječi koje su rezervisane za C. npr. while. Nemožemo nazvati promjenjivu sa riječima iz rječnika. Ima ih ukupno oko 30-40.

Komentari. Su namjenjeni programerima, a nije prevodiocu odnosno kompajleru. C ima duži i kraći komentar./* (otvoren komentar)tekst......(zatvoren komentar) */

// tekst (kraći komentar je samo za jednu liniju)

Identifikatori. Je ustvari "ime". To su promjenjive, funkcije, tipovi, a može se dati i konstanti npr. π=3.14. U indetifikatore mogu samo da uđu slova i brojevi a nemogu se koristiti specijalni znakovi. Uslov je jedino da prvo bude slovo. Dužina identifikatora može da budeproizvoljno dugačak ali prevodilac uzima samo jedan dio (oko 31 karakter).

Konvencije. Stil programiranja u C-u je vrlo individualan i do rješenja se dolazi na različite načine.1. Prva konvencija je da indetifikatori koji imaju semantiku moraju biti mnemonički tj. da nas posjete na to značenje. Promjenjive se nazivaju MASA, SNAGA itd. tj. imenom.2. Odnosi se na promjenjive i programe a nije opšte prihvaćen. Koriste se tzv. CAMEL notacija (počinje malim slovom, a svaka druga riječ počinje sa velikim) i pišu se spojeno. (myAge, inTransactionFile)

Globalna struktura programa i domet identifikatora. Ekstenzija.C je konvencija ali nije pravilo.

Globalna promjenjiva

Domet identifikatora je oblast izvornog programa u kome identifikator smije da se koristi. Domet je od mjesta fizičkog do kraja.Deklaracija u C-u služi za širenje dometa i primjenjuje se prvenstveno na potprograme a nekad i na globalne promjenjive.

Bez naslova-nastavak novog predavanjaPotprogrami su smješteni u biblioteke. Direktive nestižu do prevodioca. Prepoznaju se sa početkom #include <stdio.h> i nemora da bude na početku već prije poziva prve funkcije. Svaka promjenjiva treba da ima ime i tip.

Page 8: programiranje seminarski rad C

#include <stdio.h>const double PI=3.1415926;double obimKruga(doubler) {return 2*r*PI;}Ovo zaokruženo 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 označena velikim slovima. const je modifikator koji zaključava promjenjivu. Naziv potprogram se u C-u neupotrebljava već funkcija. Kad se ispisuje onda se ispisuje tip rezultata pa ime a zatim idu parametri.Vraćena vrijednost funkcije main namjenjena je operativnom sistemu.int znači cjelobrojni tip funkcije main (int main). Takođe 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 piše u scanf-u.

Tipovi podatakaOsnovni (bazni). To su tipovi koji su ugrađeni u programski jezik i sami sebe objašnjavaju. Bazni se djele na:-Standardni [1.znakovni (char), 2.cjelobrojni (int), 3.realni (float, double), 4. void]- EnumeracijaIzvedeni 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 dužine (short i long)- Modifikator predznaka (signed i unsigned)

charsigned charshort [int] - zauzima dva puta manje nego int. Ovo u [ ] nemora da se piše i piše se samo short.unsigned short [int] int - zauzima obično 2 bajta, a opseg je -32768 do +32767unsigned [int] long [int] unsigned long [int] float - on je najmanji po apsolutnoj vrijednosti i mala je preciznostdouble - on je osnovni realni tiplong 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. Važnije su lokalne funkcije. Globalne se najčešće pojavljuju kao konstante koje su imenovane (imenovane konstante).

tip ime1[=pv1] , ime2... -gdje je pv početna vrijednost.int i=0, j, k, t=100;

Imamo dva modifikatora pristupa:- const (njega koristimo)- volatile (koristi se opretavine sisteme)

Znakovni tip.

Page 9: programiranje seminarski rad C

1. 'a' 'M' ' Ǿ ' '_' '+' (Upravljački znaci se prikazuju u tzv. escape sekvencama.)2. '\n' '\b' (back spase) '\t' (tabulacija) '\ Ǿ ' (ASCII nula) '\'' '\''' '\? '\\' (Kada se escape sekvenca nađe unutar stringa (navodnika) apostrofi se ne pišu.)3. Znakovni tip je član familije cjelobrojnih tipova

char c;c=152;%c

char x;x='M';x+1M je u ASCII-u 77 i kada se sabere to je 78

Cjelobrojni tipovi se pišu na tri načina 145 -3122 +1 0435 435U 435L - (U je sufiks za unsigned a L za long. Takođe može da bude i kombinacija ova dva 435UL)

Imamo i oktalni način ali on se slabo koristi:Ǿ 126 (Vodeća 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 uobičajena načina

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 eliminiše višestruko šifrovanje. Ona je skalarni tip, a konstante enumeracije složimo u tip enumeracije. Sve numeracije imaju jednu zajedničku riječ enum.1. način. enum {NE, DA} log1, log2;2. način. Najčešća korištena mogućnost je Tag (ili privjesak), ona služi da precizira enumeraciju.enum RGB {CRVENA, ZELENA, PLAVA};...enum RGB b1, b2;3. način. Ǿ 1 2typedef enum RGB {CRVENA, ZELENA, PLAVA} OsnBoje;...OsnBoje b1, b2;

Enumeracija je član familije cjelobrojnih tipovab1=3*PLAVA;

Ǿ 56 7 20 21

Page 10: programiranje seminarski rad C

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

Simboličke konstante.#define ime vrijednost# define FALSE ǾU stringu neće promjeniti, a u svim ostalim slučajevima hoće (gdje god naiđe na FALSE u ovom slučaju daće vrijednost Ǿ)

Nizovi (tip niza). Svrha niza je da objedini srodne promjenjive u cjelinu.tip imeNiza[dužina] Ǿ ≤ indeks ≤ dužina-1int 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.

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

int iN[4] = {1, 6, -5, 10};= {11, -24};

double d [ ] = {1.5, -0.8, 4.3};double d [30] [40] = { {...}, {...}, ..., {...} };

Logički 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 nemože vršiti.- Druga osobina je način na koji se memoriše.char ime [20] = "Pero Perić";

'P' 'e' 'r' 'o' ' ' 'P' 'e' 'r' 'i' 'ć' '\ Ǿ ' ... '\ Ǿ' -ASCII Ǿ%s - konverziona specifikacijastring.h - biblioteka za stringove

Struktur ili slog. Slog je kolekcija raznovrsnih elemenata (misli se na tip podataka). Slog služi da opišemo neki entitet.Iste su tehnike kao kod enumeracijestruct tck {double x, y;}

struct tck t1, t2 = {1.3, -0.5};t1 = t2 t1.xt1.x t2.y

Page 11: programiranje seminarski rad C

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;

un.cun.iun.d

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

Operatori i izrazi- C jeoperatorski jezik i slabo tipizirani jezik koji ima preko 40 operatora. Dodjela je operacija. Svaka operacija mora da ima (generiše) 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. Aritmetički operatori3. Relacioni operatori4. BIT - operatori5. Logički operatori6. Operatori dodjele7. Operator zapeta (zareza)

Aritmetički operatori. Postoje binarni i unarni aritmetički operatori.1. Binarni su: +, -, *, /, % (ostatak pri djeljenju)2. Unarni su : -+, ++, --

5.0/2 →2.55/2 →299/100 →0

Unarni aritmetički operatori.-+ ++ --

Page 12: programiranje seminarski rad C

-x (- (minus) je operator predznaka)+x (+ je potvrda predznaka i to niko neupotrebljava)

Bočni efekat. To je osobina operatora. Operator sa bočnim efektom mijenja vrijednost bar jednog operanda.

Inkrement i dekrement. Su unarni aritmetički operatori i primjenjuju se za cjelobrojne vrijednosti. Bočni efekat inkrementa ++ povećava vrijednost za 1, a dekrement --smanjuje za 1.++Kje prefiksni oblik K++ postfiksni oblik

k = 1003 * ++k → 3033 * k++ → 300x = x + 1 se u C-u nikad nepišex++ ++x je pravilno napisano

Relacioni operatori.== jednako!= nejednako>manje>= manje ili jednako <veće<= veće ili jednako

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

Logički operatori.&& - i (konjukcija)|| -ili (disjunkcija)! - negacijaα&&β α i β su numerički izrazi po potrebi mogu biti i realni ali se oni izbjegavaju

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

BIT - operatori. To su operatori koji samo liče na logičke ali se drugačije ponašaju& - konjukcija| - disjunkcija^ - isljučivo ili (disjunkcija)~ - komplementiranje>> - pomjeranje u desno (šiftanje)<< - pomjeranje u lijevo (šiftanje)x<<kx<<20110 1011←1010 1100

y>>3

Ǿx - heksa je drugi tip operatoraunsigned - je treći tip operatora

Uslovni izraz (operator).To je operator trećeg reda i ima tri operanda

(x>y)? x:y-izraz (x>y) znači dali je ili nije jednak 0, odnosno u praksi je to Da ili Ne. Sam izraz nema bočne efekte već samo rezultatz=(x>y)? x:y

Page 13: programiranje seminarski rad C

Operatori dodjele. Dodjela u C-u je operator, a u svim ostalim jezicima je naredba i to je operator sa bočnim efektom. Takvih operatora ukupno ima 11.promjenjiva =izrazx=5 =>5y=x+3 =>8

a[3]=10s.t=-3

LVALUE = IzrazL VRIJEDNOST

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

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

}isto

a op =b <=> a = a op B

Konverzija

Treba da sabere realnu sa cjelobrojnom promjenjivom pri tome potprogram koji pretvara cjelobrojnu vrijednost u realni broj i pritome se nemjenja vrijednost.Posvoje dva načina 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 konvertovaće long double)2. double3. flooat

char4. (promocija) short}→int (ako je jedan od ova tri operanda, pretvaraju se u int)

enum5. long(6. int) U ovom slučaju ništa se neradi jer nema konverzije.

Eksplicitna konverzija.To se radi tzv. operatorom kasta.(tip)izrazlong(x)

Niz izraza. Služi da više nezavisnih izraza napravimo jedan.izraz1, izraz2, ... , izrazn - (izrazn predstavlja ukupnu vrijednost cijelog niza izraza)x=10, y=x++, z+=y, z--Veličina podatka. Ako u programu trebamo veličinu podatka, nikad se ne stavlja konstanta.

sizeof(tip)

sizeof(int)sizeof(long double)

sizeof izraz sizeof a

Redosljed izračunavanjaoperatora.a*b+c/d (pitanje je šta prvo treba da izračuna a*b ili c/d). Pravilo prioriteta imaju samo susjedni operatori. Ovaj problem riješavamo tako da "razbijemo" izraz .a=b*c+b++x=b++

Page 14: programiranje seminarski rad C

a=b*c+x

Naredbe programskog jezika C. Djele se na dvije vrste: - Proste naredbe i - Upravljačke strukture.Proste naredbeizraz;x=1;Proste naredbe se prave ako imaju bočni efekat.k++; ++k; Rezultati su različiti ali efekat je isti. Kod ++k rezultat je uvećan za 1.

Upravljačke strukture. Su standardni dio svakog programskog jezika i djeli se u 4 grupe.1. Sekvenca2. Selekcije3. Ciklusi4. Skokovi

Sekvenca. Je jednostavna upravljačka struktura koja je najvažnija od svih. Svrha je da se od više 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 brojački ciklus.

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

Page 15: programiranje seminarski rad C

3. do whiledo naredba while (izraz);

Skokovi1.go to: naredbago to LABELA;go to NASTAVAK;:NASTAVAK: naredbaOva naredba se nekoristi jer je idealan izvor grešaka, i program postaje nepouzdan. Ova naredba se koristi samo u slučaju izlaska iz ugnježdenih struktura.

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

Pokazivači. Pokazivač je sam po sebi skalarna veličina. Vrijednosti koje zauzimaju pokazivači su adrese u memoriji.

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

Page 16: programiranje seminarski rad C

pI int*int x, j=1, a[100], *pI, *pJ; (*pI i *pJ su int*)pIme - Predstavlja Mađarsku notaciju pokazivačaPristup pokazivanoj lokaciji zove se Dereferenciranje. To je unarni operator. *pI je deferencirani pokazivač.Generički pokazivači su čiste skalarne adresne promjenjive i nemožemo pristupiti adresi i nemože se dereferencirati.void * pG

int *pI , pJ, x;

::

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

Adresna aritmetika.1. Osnovni operator dodjele

int *pI, pJdouble *pDvoid *pG

pI = pJ

pG = pIpG = pDpD = pG

pG = pIpD = 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 možemo koristiti i jedno i drugo (ovo što je boldirano), odnosno to je isto.

- == != <<= >>=

Page 17: programiranje seminarski rad C

- NULL se nalazi u stdio.h i stdlib.h i to znači da pokazivač ne pokazuje na ništa (NULL).%p - to je prikaz pokazivača

Dinamička dodjela memorije.

Zauzimanje memorije zove se alokacija. Oslobađanje memorije zove se dealokacija. Funkcije se nalaze u stdlib.h.

void * malloc (b)void * malloc (n, b) -(n je broj elemenata niza, a b je bajt) free (poc)

long double *pX;:.

pX = malloc(sizeof(long double)) *pXfree(pX); pX==NULL

Funkcije.

tip koji vraća funkcija

tip ime (tip1 p1, tip2 p2, ... , tipn pn)

Funkcija nemože da vrati vrijednost niza. U inicijalizaciji mogu da učestvuju i parametri.

double zbir (double x; double y) {double z;z = x+y;return z;}

Funkcija koja vraća vrijednost poziva se u uključivanje izrazat = 2 * zbir(p, 6.3) - 1;

Prenos argumenta u funkciju.Argument se u funkciji prenose na dva načina:1. Prenos po vrijednosti2. Prenos po adresi

double f (double a) {...}

Page 18: programiranje seminarski rad C

Stek služi kao posrednik u prenošenju. Vrijednost se prenosi u Stek a funkcija radi sa kopijom.

Funkcija radi sa orginalom a ne sa kopijom sa steka.

Nizovi u C-u se isključivo prenose po adresi, zato što je ime niza adresa.

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 nađe 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

Page 19: programiranje seminarski rad C

Direktive pretprocesoru počinju sa #. Direktiva ima 10-15, a mi ćemo izdvojiti 3.

1. #include služi za umetanje sadržaja datoteke u izvorni kod.#include <ime.ekst> ili da se piše #include "ime.ekst" i efekat je isti.

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

3. # ifndef #endif za uslovno uključivanje teksta.

# ifndef TOKENna 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 načinu korištenja mikrodirektive se nerazlikuju od funkcija

# define prod (A,B) ((A)*(B))

Page 20: programiranje seminarski rad C

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

Biblioteke

Pokazivači na funkcije

double (*pF) (double);double f (double x); {....}pF =ff(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.8int 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.

Radnje:1. Definisanje datotečne promjenjive

Page 21: programiranje seminarski rad C

2. Otvaranje datoteke3. Zatvaranje datoteke4. Korištenje datotekeSav posao sa datotekama obavlja se sa funkcijama stdio.h.FILE * dat; ovo bi bio tip datotečne promjenjive

Otvaranje datoteke se otvara sa funkcijom (koja se nalazi ustdio.h) fopenFILE * fopen ("putanja", "režim")

tekst"r" (read-only)"w" (write-only)"a" (dodavanje na postojeći sadržaj)"r+" "w+""a+"

binarno"rb" (read-only)"wb" (write-only)"ab" (dodavanje na postojeći sadržaj)"r+b" "rb+" "w+b" "wb+" "a+b" "ab+"

if ((myFile = fopen("C:\\MyFolder\\dat.txt", "r")) == NULL) greškaAko otvaranje nije uspjelo fopen vraća NULL pokazivač i može se provjeriti dali je otvaranje uspjelo.

Zatvaranje datotekeint fclose(dat)fclose(myFile);

- U programu datoteka treba da bude minimalno otvorena i po potrebi, a treba je zatvarati kada se ne koristi.

Korištenje datoteke1. Prenos podataka bez formatiranja

int fget (FILE *) getc (FILE *)int getchar ( )int fputc (intz, FILE * dat) putc (intz, FILE * dat)int putchar (intz)

fgetsfputs

2. Prenos podataka sa formatiranjem

f scanf (FILE * dat, ...f printf (FILE * dat, ...