Struktura Programskog Jezika C

Click here to load reader

download Struktura Programskog Jezika C

of 42

description

Struktura Programskog Jezika C

Transcript of Struktura Programskog Jezika C

Struktura programskog jezika C

Struktura programskog jezika C Azbukapredstavlja osnovni skup znakova od kojih se grade sve sintaksne kategorije jezika. Azbuka jezika C obuhvata:velika i mala slova engleskog alfabeta, dekadne cifre (0 9), specijalne znakove i bele (netampajue) znakove (space, tabulacija, novi red, nova stranica, komentari).

Leksemaznak, ili niz od dva ili vie znakova koji u programu ima odreeno znaenje. Lekseme obrazuju renik i predstavljaju osnovne gradivne elemente programskog jezika. Skup leksema jezika C deli se na: identifikatore, konstante, slubene rei, operatore i separatore.

KonstrukcijePomou leksema grade se konstrukcije. U konstrukcije spadaju: naredbe, programi i direktive. Naredbe su nizovi leksema i mogu biti deklarativne i izvrne. Programi su nizovi naredbi pomou kojih se reava neki zadatak. Direktive su naredbe predprocesora, dela programskog prevodioca koji obrauje tekst programa pre prevoenja.

Struktura programa u C udirektive pretprocesoraspoljanje definicije i deklaracijemain(){deklaracije i definicijeizvrne naredbe/*komentar*/}definicije funkcija

Primer1/*Prikaz na ekranu jedne linije fiksnog teksta*/#include#includemain( ){ printf("\nHello World\n\n"); system("PAUSE");}

Primer2/*Vise poziva funkcije printf(), prikaz na ekranu jedne linije teksta*/#include#includemain( ){ printf("\nDobrodosli "); printf("u jezik C\n\n"); system("PAUSE");}

Primer3/*Jedan poziv finkcije printf( ), prikaz na ekranu vise linija teksta*/#include#includemain( ){ printf("\nDobrodosli\n\n\tu jezik C\n\n"); system("PAUSE");}

Deklaracije i definicijeSvaka deklaracija:daje odreeno znaenje imenu koje e se koristiti,dodeljuje memorijski prostor za objekat oznaen tim imenom,definie ponaanje funkcije ispecificira tip podataka ili funkcije.

Deklaracije i definicije - Primerint x, z;char c;double stepen(double x, double y);

FunkcijeSvaki program moe i mora sadrati samo jednu main() funkciju, od koje zapoinje izvrenje svakog C programa.Funkcija se definie posebnom naredbom za definisanje funkcija:[tip_funkcije] ime_funkcije (lista parametara){telo funkcije}

Identifikatori i rezervisane reiIdentifikatori, ili imena slue za oznaavanje: promenljivih, simbolikih konstanti, funkcija i oznaka naredbi koje su odredite grananja (skoka).

Identifikatori i rezervisane reiIdentifikator (ime) je niz malih i velikih slova, dekadnih cifara i znaka _.Prazna mesta u nizu nisu dozvoljena. Pravi se razlika izmeu velikih i malih slova (Ime ime). Prvi znak u imenu ne moe biti cifra, a ne preporuuje se da znak _ bude prvi.

Identifikatori i rezervisane rei

rezervisane reiRezervisane (kljune) rei imaju tano definisano fiksno znaenje i ne mogu se koristiti kao identifikatori. Sve rezervisane rei piu se malim slovima, dok se identifikatori koje uvodi programer mogu pisati i velikim i malim slovima. Uobiajeno je da se imena konstantnih veliina piu velikim slovima.

Rezervisane reiautodoubleintstructbreakelselongswitchcaseenumregistertypedefcharexternreturnunionconstfloatshortunsignedcontinueforsignedvoiddefaultgotosizeofvolatiledoifstaticwhileTipovi podatakaTipovi podataka mogu biti prosti i sloeni. Prosti tipovi ne mogu da se razloe na manje elemente. Nazivaju se jo i skalarni, elementarni, ili nestrukturni tipovi. Sloeni tipovi podataka sastoje se od vie elemenata koji mogu nezavisno da se obrauju. Sloeni tipovi se nazivaju jo i strukturni tipovi.

Tipovi podatakaU osnovne tipove podataka u C-u spadaju:numeriki tipa) celobrojni tip intb) realni tip float, doubleznakovni tipa) karakteri char nabrojivi tip enum prazan tip void

Tipovi podatakaSloeni tipovi su:niz arrayfunkcija functionpokaziva pointerstruktura structureunija union

Celobrojni tip - intPredstavlja pozitivnu ili negativnu celobrojnu vrednost. Postoje tri tipa:int,short int,long int.Veliina celobrojnog tipa je 2B (short int) ili 4B (int, long int), a short i long se nazivaju kvalifikatori. Uz ova tri osnovna tipa postoje i tri dodatna tipa:unsigned int,unsigned short int, unsigned long int.unsigned neoznaen, tj. uzimaju se samo pozitivni celi brojevi.Realni tip float, doublePredstavlja realne brojeve, odnosno brojeve sa pokretnim zarezom (floating point) decimalne brojeve. Razlika izmeu tipova float i double je u preciznosti i opsegu predstavljanja.Promenljiva tipa float pamti vrednost sa najvie 7 tanih decimalnih cifara i predstavljena je sa 4B.Promenljiva tipa double (double precision) pamti vrednosti sa najvie 16 decimalnih cifara i predstavljena je sa 8B.

Znakovni tip char Znakovni tip je podatak kojem moemo dodeliti samo jedan znak iz ASCII koda i veliine je 1B. Uvek se stavlja izmeu dva apostrofa (npr. A).

Primer/*Velicina tipa podataka*/

#include#include

main( ){ printf("\n int zauzima %d B memorije \n", sizeof(int)); system("PAUSE");}ZadatakPreraditi prethodni primer tako da se ispise velicina i sledecih tipova podataka:

shortlongdouble floatcharNabrojivi tip enumTo su sopstveni tipovi koje definie sam programer. U njima se kao vrednosti koriste identifikatori.

typedef enum {PON, UTO, SRE, CET, PET, SUB, NED} Dani;typedef enum {CRVENA, ZELENA, PLAVA} Boje;

KonstanteKonstanta je podatak ija je vrednost unapred zadata i ne moe se menjati tokom izvravanja programa. Konstante se mogu predstaviti direktnim zadavanjem vrednosti, ili pomou simbolikih imena simbolike konstante.Promenljive su podaci kojima se pri izvrenju programa mogu dodeljivati razliite vrednosti, tj. mogu se menjati. Promenljive se u programu oznaavaju pomou identifikatora (imena).

KonstanteCelobrojne konstante

Realne konstante

KonstanteZnakovne konstante tipa char predstavljaju se stavljanjem odgovarajueg znaka izmeu dva apostrofa (npr. 'a' , '7'). Na ovaj nain se mogu predstaviti svi znaci sa tastature, osim \, i . Ova tri izuzetka predstavljaju se na sledei nain: \\ , \ , \ .

Upravljaki (kontrolni) znaci \a davanje zvunog siganala,\b vraanje za jedno mesto nazad,\f nova stranica (list),\n novi red,\r vraanje na poetak reda,\t horizontalna tabulacija,\v vertikalna tabulacija,\ - nastavak linije u novom redu (kada je \ poslednji znak u redu).

ZadatakNapisati program koji ispisiuje sledece:

Radni dani u nedelji su:PonedeljakUtorakSredaCetvrtakPetak

Koristiti samo JEDAN printf. Nakon zavrsenog ispisa staviti zvucni signal.Simbolike konstanteTo su konstante kojima je dodeljeno ime, pa se kasnije u programu koristi to ime, a ne sama vrednost konstante. Uobiajeno je u praksi da se imena simbolikih konstanti piu velikim slovima. Simbolike konstante se u programu moraju definisati direktivom predprocesora #define.

#define PI 3.14#define MAX 100#define PLUS +#define PASS password

ZadatakNapisati program koji racuna i ispisuje povrsine krugova sa sledecim poluprecnicima: 2, 5, 7, 12, 15. Definisati i koristiti za izracunavanje konstantu PI. Ispis na ekranu treba da sadrzi izracunatu povrsinu i poluprecnik odgovarajuceg kruga (npr. Povrsina kruga sa poluprecnikom 2 je .)Unos i prikaz podatakaUnos i prikaz podataka se obavlja pomou ulaznih i izlaznih funkcija ( scanf i printf ) koje se nalaze u sistemskoj datoteci stdio.h. Funkcije printf i scanf obavljaju tzv. formatirani unos, odnosno prikaz podataka. Mesto na kome sa nalazi ulazni, odnosno tampa izlazni podatak naziva se polje. Broj znakova koji se mogu smestiti u polje naziva se irina polja. Format odreuje raspored podataka i irinu polja.

Unos i prikaz podataka

Izlazna funkcija printf( )Opti oblik opisa konverzije za funkciju printf je sledei:%[-+#0][n][.][k]q simboli u [ ] nisu obavezni% - uvod u konverziju- - poravnanje sa leve strane (inae se poravnava sa desne strane)+ - obavezno ispisuje + ispred podatka# - obavezno ispisivanje 0 za oktalni zapis, 0x za heksadcimalni ili decimalne take za realne brojeve bez razlomljenog dela0 kod numerikih konverzija pri ravnanju udesno, sa leve strane se obavezno dopisuju nule umesto razmakan minimalna irina izlaznog polja. odvaja n i kk broj decimala sa kojima se ispisuje izlazni podatakq vrsta konverzije (d, f, lf, c, s)

Izlazna funkcija printf( )Umesto n i k moe se staviti *. U tom sluaju se n i k moraju deklarisati kao tip int. printf(%8.*f,k,x);printf(%*.*f,n,k,x);

Zadatak#include#include

main(){ int x = 999; double y = 1.2345; printf("\nCeo broj:\n\n"); printf("%10d\n",x); printf("%-10d\n",x);

printf("\nRealan broj:\n\n"); printf("%10f%\n",y); printf("%-10f\n",y); printf("%10.2f\n",y); printf("%.2f\n",y); getch();}Ulazna funkcija scanf( )Ova funkcija se koristi za formatirano itanje podataka. Opti oblik opisa konverzije za funkciju scanf je sledei:

%[n]q

% - uvod u konverzijun maksimalna irina ulaznog poljaq vrsta konverzije (d, f, lf, c, s)

Ulazna funkcija scanf( )Primeri:scanf(%d%d%d,&a,&b,&c);ako ovde unesemo npr. 12 370 5, promenljivima a, b i c dodelie se sledee vrednosti a=12, b=370 i c=5

scanf(%2d%3d%1d,&a,&b,&c);ako ovde unesemo npr. 123705, promenljivima a, b i c dodelie se sledee vrednosti a=12, b=370 i c=5

Zadatak/*Prikaz na ekranu zadatog celog broja u raznim oblicima*/#include#includemain(){ int x; printf("\nUnesite ceo broj:\t"); scanf("%d",&x); printf("\nDecimalni oblik:\t%d",x); printf("\nOktalni oblik:\t\t%o",x); printf("\nHeksadecimalni oblik:\t%x (%X)\n\n",x,x); getch();}

ZadatakNapisati program koji racuna i ispisuje povrsine krugova za poluprecnik koji unese korisnik. Definisati i koristiti za izracunavanje konstantu PI. Ispis na ekranu treba da sadrzi izracunatu povrsinu i poluprecnik odgovarajuceg kruga (npr. Povrsina kruga sa poluprecnikom 2 je .). Zaokruyiti povrsinu na dve decimale.Primer#include#includemain(){int x,y;printf(\nUnesite brojeve x i y u obliku x,y\n);scanf(%d,%d,&x,&y);printf(\nUneti brojevi su %d i %d.\n,x,y);getch();}

Zadatak/*Prihvatanje imena od korisnika i prikaz na ekranu licnog pozdrava*/

#include#include

#define MAX 30

main( ){ char ime[MAX]; printf("\nVase ime?\n\n"); scanf("%s",&ime); printf("\nZdravo %s, dobrodosli u jezik C.\n\n", ime); system("PAUSE");}dozvoljeni identifikatorinedozvoljeni identifikatori

alfa2ab

B01a-5

ime_i_prezimeA:5

nova_vrednost$x2

_nije_preporuenoime i prezime

tipopseg vrednosti

signed char-128 127

char-128 1270 255

unsigned char0 255

ispravne celobrojne konstanteneispravne celobrojne konstante

2003-12a4

-1870192

07652.41

0xFFaf01bf7

0xab050xa3gj

ispravne realne konstanteneispravne realne konstante

3.141591,23

-0.00651bE-7

0.1E-06e-2

-1.06e+04.E-2