1 / 39

Programski jezik C

Programski jezik C. C je mali jezik (kao i Pascal) i mo ž e jednostavno da se implementira na malim ma š inama. Potiče od jezika BCPL i B, koji su korišćeni za pisanje operativnih sistema i jezi č kih procesora.

elden
Download Presentation

Programski jezik C

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programski jezik C

  2. C jemali jezik (kao i Pascal) i može jednostavno da se implementirana malim mašinama. • Potiče od jezika BCPL i B, koji su korišćeni za pisanje operativnih sistema i jezičkih procesora. • Ovi jezici obezbeđuju efikasan interfejsprema hardveru, nisu tipizirani i omogućuju različiteinterpretacije jednog podatka.

  3. Programskijezik C implementiran je 1972. godine (Dennis Ritchie), kaojezikzaprogramiranjeaplikacija pod UNIX operativnimsistemomna DEC PDP serijiračunara. • Godine 1977. izgrađena je verzijaprogramskogjezika C (Portable Ccompiler) nezavisnaodvrsteračunara, koja je omogućilaprenosivostprogramanapisanih u C-u. • S obzirom na svoju filozofiju i namenu, programski jezik C blizak je operacijama mašinskognivoa, omogućujeradsapojedinačnimbitovimaimemorijskimadresama -fleksibilan je.

  4. Ključne reči iz ISO/ANSI C-a auto enum restrict unsigned break extern return void case float short volatile char for signed while const goto sizeof _Bool continue if static _Complex default inline struct _Imaginary do int switch  double long typedef  else register union  Podebljanim slovima su označene ključne reči uklučene u standar C90. Obojene (braon) su ključne reči uključene sa standardom C99.

  5. Strogatipiziranost se karakteriše sledećimprincipima: • Svaki objekat u jeziku pripada tačno jednom tipu. • Konverzijatipova se odvijakonvertovanjemvrednostiizjednogtipa u drugi,tj. transformacijom. • Programskijezik C, mada je tipiziran (imatipove), nijestrogotipiziranjezik. • Programskijezik Cpruža programerusloboduinterpretacijeistereprezentacije.

  6. Struktura programa • Program se može sastojati od većeg broja potprograma koje senalaze u većem broju izvornih datoteka. • Jedna izvorna datoteka sastoji se od spoljašnjih (external) objekata – podatakai 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 statički –”static” objekti) ili globalni za sve datoteke tog programa.

  7. Svi izvršni iskazi sadržani su u blokovima koji mogu da budu ugnježdenido proizvoljne dubine. • Svaki iskaz završava se tačakazapetom(;), a blokovi su uokvireni zagradama ({,}) promenljive se uvode samo napočetku rutine odnosno programa. • Promenljive mogu da budu deklarisane na početkubilo kog bloka (i vide se samo u tom bloku).

  8. Većina izvornih datoteka C-programa počinje uvodnim delom sa tzv. preprocesorskiminstrukcijama.Preprocesorska instrukcija počinje znakom #. • Po konvenciji, svaki program imafunkcijumain kojompočinjeizvršavanje. • Sve C-ovskerutine (potprogrami) sufunkcije. Svakafunkcija može davraćavrednost, koja može bitibilokogtipaosimnizovskog C-ovskerutinenavode se jednazadrugomunutarjedneizvornedatoteke, dok u Pascal-u mogubitiugnježdene. Zato C nijeblokovskijezik u punomsmisludok Pascaljeste.

  9. Parametri funkcija prenose se po vrednosti, osim za nizove. Vrednost nizovskogparametra je adresa prvog elementa niza. • 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 vrednostifunkcije. • Komentari se pišu između para oznaka ”/*”, ”*/”

  10. /* preprocesorske direktive */ /* globalne declaracije */ main() { /* localne pronmenljive funkcije main */ /* naredbe (iskazi) funkcije main */ } funkcija1(…) { /* lokalne promenljive funkcije 1*/ /* nardbe funkcije 1 */ } funkcija2(…) { /* lokalne promenljive funkcije 2 */ /* naredbe funkcije 2 */ }

  11. include <stdio.h> main() { printf("hello, world\n"); }

  12. Deklaracija promenljivih u C-u 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).

  13. int a; • char c, ch, b = ‘B’; • int niz[100]; • float rbm = 9.23; • long double ld = 1.23456;

  14. 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. • Trajanjepromenljive je nezavisno od njene oblasti važenja, zavisi od njene vrste, i može bititrajanje izvršavanja bloka, funkcije ili programa.

  15. void main() { { int i=3; { int i=1; printf("%d\n", i); } printf("%d\n",i); } printf("%d\n",i); }

  16. Pokazivači • Pokazivač u C-u pokazuje na objekat nekog specifičnog tipa, tj. predstavlja memorijsku adresu tog objekta. char *vrednost; struct slog *sp; definiše vrednost kao pokazivača na objekte tipa karakter a sp kao pokazivač naobjekte tipa slog. • Operator * (tzv. operator dereferenciranja) daje kao rezultatpromenljivu na koju pokazuje pokazivač – argument ovog operatora, tj. promenljivu čija je adresa – argument ovog operatora. • Vrednost i sp su adrese, *vrednost je karakter, a (*sp).kljuc (sp -> kljuc) je ceo broj. • Operator & (tzv.operator referenciranja) inverzan je operatoru * i daje rezultat – adresu objekta. Tako sp može da bude inicijalizovano sasp = &primerak sloga;

  17. Nad adresama (pokazivačima) definisani su operatori poređenja, dodavanja ioduzimanja celih brojeva. Račun nad adresama izvodi se u jedinicama veličinememorije potrebne za smeštanje vrednosti baznog tipa za pokazivač. • Pokazivači i nizovi su tesno povezani u C-u. Ime niza je pokazivač na prvi element niza. • Ako je A niz, njegovom prvom elementu može se pristupiti bilosa A[0] ili *A.

  18. Izrazi • Izrazi se grade od konstanti, promenljivih, poziva funkcija, i operacija. Programskijezik C uključuje sledeće skupove operacija:

  19. 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čniefekti, a vrednost koju izračunava – zanemaruje se. • Iskaz dodele: • a = 22; • A = b = xt = 0;

  20. Selekcija Uslov je izrazčija je istinitosnavrednostnetačno ako je 0, a inače je tačno. if(uslov) iskaz1; if(uslov) iskaz1; else iskaz2;

  21. if(a > b) max = a; else max = b; Umesto if-naredbe može se upotebiti operator ? : (uslov) ? then-grana : else-grana Primer: max = (x>y) ? x : y;

  22. switch (izraz) { case konstantni izraz1: lista iskaza1; case konstantni izraz2: lista iskaza2; ... default: podrazumevana lista iskaza; ... }

  23. switch (x) { case 'a': case 'e':case 'i': case 'o': case 'u': printf(" x je samoglasnik"); break; case 'r': printf(" x je r"); break; default: printf(" x je suglasnik"); } }

  24. #include<stdio.h> int main() { int n; printf("Unesi paran broj manji od 10\n"); scanf("%d",&n);

  25. switch(n) { case 0: printf("Uneli ste nulu\n"); break; case 2: printf("Uneli ste dvojku\n"); break; case 4: printf("Uneli ste cetvorku\n"); break; case 6: printf("Uneli ste sesticu\n"); break; case 8: printf("Uneli ste osmicu\n"); break; defalut: printf("Uneli ste nesto sto nije paran broj\n"); } return 0; }

  26. U T Naredba Iteracija while (uslov) iskaz; do iskaz; while (uslov) Naredba  U T

  27. while(n>0) { printf(“%d\t”, n); n--; } do { s[i++] = n % 10 + '0'; /* get next digit */ } while ((n /= 10) > 0);

  28. For petlja inicijalizacija petlje; while (uslov) { iskaz; reinicijalizacija petlje; } for(inicijalizacija petlje; uslov; reinicijalizacija petlje) iskaz;

  29. #include <stdio.h> int power(int m, int n); main() { inti; for (i = 0; i < 10; ++i) printf("%d %d %d\n", i, power(2,i), power(-3,i)); return 0; } int power(int base, int n) { inti, p; p = 1; for (i = 1; i <= n; ++i) p = p * base; return p; }

  30. Bezuslovni prenos kontrole. U C-u postoje tri iskaza bezuslovnog prenosakontrole upravljanja: break, continue i goto. • Break izlazi iz unutrašnje petlje iliswitch iskaza. • Continue prelazi na sledeću iteraciju unutrašnje petlje. • gotoprenosi upravljanje na obeležje (koje ima oblik identifikatora). Prenos je moguć između blokova i upravljačkih struktura, ali ne između funkcija.

  31. 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 zaglavljestdio.h uključuje rutine za čitanje i pisanje podataka u blokovima proizvoljnedužine, i za čitanje i ispis formatiranog teksta.

  32. Najjednostavniji mehanizam za unošenje jeste čitanje jednog po jednog karaktera sastandardnogulaza, celobrojnomfunkcijomgetcharbezargumenata: intgetchar(void) kojavraća sledeći učitanikarakterili EOF kadanaiđe nakrajdatoteke. intputchar(int) koristi se zaizdavanje: putchar(c) izdajekarakter c nastandardniizlaz, običnoekran.

  33. #include <stdio.h> main() { int c; c = getchar(); while (c != EOF) { putchar(c); c = getchar(); } }

  34. Funkcija izlaza, printf, prevodi interne vrednosti (iz memorije) u niske karaktera(stringove). • Oblik njenog zaglavlja je: int printf(char *format, arg1, arg2, . . . ) • Funkcija vraća broj izdatih karaktera.

  35. Pored običnihkarakterakoji se izdajukakosunapisani, formatuključujeiobjektezaspecifikacijukonverzije, tj. objektekojigovorekojimtipominterpretiratii u kojioblikkonvertovatisvakiodargumenata. • Formatmoradaimatačno onolikoobjekatazaspecifikacijukonverzijekolikoargumenataimaprintf. • 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 (niskekaraktera), ”f” zaizdavanjerealnogbroja, itd.

  36. printf("%d\n", n); • printf(“ Zbir: %d + %d = %d\n", a, b, a+b);

  37. scanf Ova funkcijauzima nisku karaktera sa standardnog ulaza, pronalazi (prepoznaje) podniske čija sintaksa odgovara tipovima (objektima specifikacije konverzije) iz formata, konvertujete podniske karaktera u odgovarajuće tipove (npr. cele, realne brojeve) i dodeljuje ih promenljivim – svojim argumentima arg1, arg2, . . . . Svi argumenti funkcije scanf osim prvog (formata) moraju da budu pokazivači.

  38. Na primer, poziv funkcije scanf(”%d”, &x); učitava nisku karaktera (koja se sastoji od dekadnih cifara), konvertujeje u ceo broj i vrednost tog celog broja dodeljuje celobrojnoj promenljivojx. Funkcija scanf vraća broj uspešno prepoznatih i dodeljenih vrednosti.

More Related