Sunteți pe pagina 1din 16

1

Tema 1. Limbajul de programare C. Noiuni elementare


1.0. Scurt istoric
1.1. Structura unui program C
1.2. Preprocesare
1.3. Date constante i date variabil e
1.4. Ti puri de date de baz n C: char, i nt, fl oat, doubl e, voi d
1.5. Modi fi catori de ti p: si gned, unsi gned, short, l ong, const
1.6. Secvene escape
1.7. Constante
1.8. Variabil e
1.9. Decl araia i i ni i ali zarea vari abil el or si mpl e
1.10. Tabl ouri de date
1.11. Decl araia i i ni iali zarea tabl ouri l or de date
1.12. Comentarii

1.0. Scurt istoric
Apari i a li mbajul ui C a fost precedat i anunat de di verse ncercri de a construi un li mbaj care s corespund ceri nel or aprute o
dat cu dezvol tarea calcul atoarel or: portabili tate, uuri n n fol osire, li bertate de expri mare, text surs compact etc.
Motorul cercetri l or a fost dezvol tarea unui nou si stem de operare: UNIX. Evol ui a li mbajul ui i a sistemul ui de operare a avut l oc n
paral el , fi ecare i mpul si onnd dezvol tarea cel uil al t. Se consi der c C a fost creat special pentru si stemel e de operare di n familia UNIX.
De fapt C este un rezul tat al experi enei acumulate n aceste cercetri , chi ar dac este consi derat un li mbaj de autor.
n 1969 a fost lansat li mbajul BCPL (Basic Combi ned Programmi ng Language), conceput l a Uni versi tatea Cambri dge. Era un li mbaj
dependent de structura mai nii pe care era fol osi t i nu avea conceptul de ti p de dat datel e se reprezentau bi nar, pe cuvi nte de
memori e. n 1970 a aprut o form mai avansat, li mbajul B, utili zat sub sistemul de operare al calculatoarel or DEC PDP. Numel e
li mbajul ui este o prescurtare a acroni mul ui BCPL.
n 1978 Denni s Ri tchi e i Brian Kerni ghan i -au fi nali zat cercetril e publicnd The C Programmi ng Language (Li mbajul de programare C),
care este li mbajul cunoscut astzi . Li mbajul a fost denumi t astfel pentru c C este li tera care urmeaz dup B.
Lucrarea l ui Kerni ghan i Ri tchi e este consi derat momentul ofici al al apari i ei li mbajul ui C.
n peri oada urmtoare, porni nd de l a speci fi caiil e li mbajul ui , s -au creat numeroase compilatoare C, fi ecare aducnd propriil e di ferene
fa de li mbajul i ni i al , ajungndu-se l a variante foarte mul t di feri te unel e fa de al tel e. n acest fel s -a pus n peri col i deea i nii al de
portabili tate. Ca urmare, n 1988 Comi tetul pentru l i mbajul C al Insti tutul ui Nai onal de Standardi zare al SUA (ANSI) a i mpus un standard
cunoscut drept ANSI C. Acesta este i mpl ementat n toate versi unil e de compi latoare ul teri oare. Odat cu acest standard l egtura
i mplici t cu si stemul UNIX a di sprut, li mbajul fii nd disponi bil pe ori ce pl atform.
Avantajele limbajului C:
1. Li mbaj de programare de scop general
- permi te dezvol tarea de apli caii di verse: soft ti i ni fic, soft pentru gesti unea bazel or de date, edi toare de texte, jocuri , etc.
- nu este speci ali zat pe un domeni u parti cular de apli caii ;
2

- ofer un control modern al funciil or i al structuril or de date i posed un set bogat de operatori ;
2. Permi te o foarte bun portabili tate a programel or
- programel e scrise n C pot fi transferate uor de l a un cal culator la al tul ;
3. Permi te programarea structurat (modular);
4. Permi te scri erea softul ui de baz (programare de sistem);
5. Ofer posi bili tatea l ucrul ui pe bi i i a cal cul ul ui adresel or.
1.1. Structura unui program C
Un program C const di n una sau mai mul te funci i . O funci e are numel e prestabili t, mai n(). Prezena ei este obl i gatori e pentr u orice
program. Cu funci a mai n() ncepe execui a ori crui program C.
Pe l ng funcii , un program mai poate coni ne directi ve pentru preprocesor i decl araii de vari abil e.
Preprocesorul este un program speci al , care prel ucreaz programul nai nte de compi l are.
Un program poate fi scris n orice edi tor de texte. Programul trebui e sal vat ntr -un fi i er cu extensia .c, care se numete fi i er surs.
Pentru a executa un program C, el trebui e s treac trei etape: compi larea, edi tarea l egturil or i execui a. Rezul tatul compil rii este un
fi i er obi ect, cu extensi a .obj. Edi torul de l egturi va genera un fi i er cu extensia .exe, programul executabi l .
Exi st mai mul te IDE (medi u i ntegrat de dezvol tare), care au i ntegrate n si ne i edi tor de programe C i compi lator C i edi tor de
l egturi . Ne vom fol osi , pentru nceput, de IDE Borl and C++ 3.1 ( BC31 ).
Exemplu de program C:
#i ncl ude <stdi o.h>
#i ncl ude <coni o.h>
mai n()
{
clrscr();
pri ntf(Sal ut, l ume!\n);
pri ntf(In C rezul tatul i mpartiri i a 2 i ntregi este un i ntreg:\n);
pri ntf(13/5=%d,13/5);
getch();
return 0;
}
Li nia #i ncl ude <stdi o.h> i ncl ude n program fi i erul stdi o.h di n bi bli oteca standard INCLUDE.
Li nia #i ncl ude <coni o.h> i ncl ude n program fi i erul coni o.h di n bi bli oteca standard INCLUDE.
Programul const di ntr-o si ngur funci e, funcia pri nci pal mai n(). Dup numel e funci ei , n acol ade, urmeaz corpul funci e. n corp
sunt scri se toate i nstruci unil e , pe care trebui e s l e execute funci a.
clrscr() este o funci e standard care cur (terge) ecranul . Ea este descris n fi i erul i ncl us coni o.h.
pri ntf() este o funci e care extrage i nformaii la ecran. Ea este descris n fi i erul stdi o.h.
getch() este o funci e standard care i ntroduce un caracter de l a tastatur. Ea este descris n fi i erul coni o.h.
return 0 este o i nstruci une care returneaz val oarea 0 i i ese di n funcia mai n(). Pri n aceasta se termi n execui a programul ui.
n rezul tatul execui ei acestui program, pe ecran vom obi ne i nformai a:
3

Sal ut, l ume!
In C rezul tatul i mparti rii a 2 i ntregi este un i ntreg:
13/5=2

1.2. Preprocesare
Un program C, nai nte de compi l are este prel ucrat de preprocesor. Acesta este un program speci al care prel ucreaz programul , l
pregtete pentru compi lare.
Preprocesorul are un i r de i nstruci uni care se numesc directi ve. O di recti v defi nete careva aci uni asupra programul ui . Di recti vel e se
scri u n program cte una pe l i ni e. Fi ecare di recti v ncepe cu si mbol ul #, dup care urmeaz numel e di recti vei . Dup numel e di recti vei
pot urma parametrii ei . De exempl u: #i ncl ude <stdi o.h>, #defi ne a 10, #undef a .a.
Directiva #include
Aceast directi v i ncl ude un fi i er n program. Fi i erul este i ncl us n acel punct al programul ui , unde este sc ri s di recti va. Numel e
fi i erul ui i ncl us se arat dup numel e di recti vei : #i ncl ude <coni o.h>. Cu #i ncl ude se pot aduga l a program att fi i ere cu extensi a .h, ct
i fi i ere cu extensi a .c. Dac numel e fi i erul ui este scris n paranteze unghi ul are: <math.h>, atunci fi i erul este cutat n bi bli oteca
INCLUDE. Fi i erul , ce trebui e i ncl us, poate fi i ndi cat i n ghili mel e: sortare.c sau f:\antet1.h, acestea sunt fi i ere al e programatorul ui
i nu fi i ere de bi bl i otec. Fi i erul sortare.c este cutat n di rectorul curent, de unde a fost startat programul . Fi i erul f:\antet1.h este
cutat pe cal ea i ndi cat n ghili mel e.
De obi cei , directi vel e #i ncl ude se scri u l a nceputul programul ui , dar pot fi pl asate i pe parcursul programul ui , pri ntre funcii .
Directiva #define
Di recti va #defi ne se fol osete mai des pentru a face substi tui i n program. De exempl u, di recti va #defi ne a 3.14 va substi tui orice nume
a di n program cu i rul de caractere 3.14, i ar
#defi ne MAX (x<y)?(x):(y) va nl ocui numel e MAX cu i rul (x<y)?(x):(y). Substi tui a se face di n punctul programul ui unde a fost scris
di recti va: #defi ne a 3.14 i pn la sfri tul programul ui sau pn la ntl ni rea di recti vei respecti ve #undef a.

1.3. Date constante i date variabile
Orice program prel ucreaz careva date. Sunt date constante i date variabil e.
O dat este constant, dac val oarea ei nu poate fi modi fi cat pe tot parcursul execui ei programul ui .
Orice constant are val oare i ti p. i val oarea i ti pul sunt defi ni te pri n modul de reprezentare (s cri ere) a constantei n program i nu mai
pot fi schi mbate pe tot ti mpul execui ei programul ui .
Exempl e de constante: 2010, -3.14, S, ASEM, \n, 8.
O dat, val oarea crei a poate fi schi mbat n ti mpul execui ei programul ui , este o dat vari abil. Ea se numete vari abil. Variabi la este
un nume asociat cu o l ocai e de memori e unde pot fi scrise val ori de un ti p anumi t. Val oarea unei variabil e poate fi modi fica t, dar ti pul
ei nu poate fi schi mbat.
O variabil se i ntroduce n program pri n decl arai a ei .

1.4. Tipuri de date de baz n C
4

Datel e prel ucrate de program au ti p i val oare. Un ti p de date preci zeaz un set de val ori , o mul i me de operaii ce pot fi efectuate cu
aceste val ori , ct memori e este al ocat pentru o val oare de acest ti p i cum este reprezentat ea n memori a cal culatorul ui .
Ti puril e de date de baz n C sunt: char, i nt, fl oat, doubl e, voi d.
Tipul char
Ti pul char se fol osete pentru reprezentarea caracterel or. Un caracter este al ocat pe un octet pri n codul su ASCII. Coduril e ASCII sunt
numer el e ntregi de l a 0 pn l a 127. Cu toate acestea, di apazonul de val ori pentru ti pul char sunt toate numerel e ntregi de l a -128 pn
la 127.
Deoarece val oril e de ti p char sunt numere ntregi , cu el e pot fi efectuate toate operai il e ce pot fi apli cate la numerel e ntr egi .
Tipul int
Ti pul i nt este fol osi t pentru pstrarea numerel or ntregi . O val oare de ti pul i nt este pstrat pe un cuvnt cal culator. La un calculator pe
16 bi i , o val oare i nt este pstrat pe 2 octei , i ar la un cal culator pe 32 bi i , o val oare i nt este pstrat pe 4 octei .
IDE Borland C++ 3.1 al oc 2 octei pentru val ori de ti pul i nt.
Numerel e i nt sunt reprezentate n memori a cal culatorul ui n compl ement fa de 2. Di apazonul de val ori i nt sunt numerel e ntr egi de l a -
32768 pn la +32767. Bi tul cel mai semni fi cati v este rezervat pentru semnul numrul ui .
Operaiil e cu numere i nt sunt operai il e obi nui te cu numere ntregi : +,-,*,/,%. Operai a % este restul mpri rii a dou val ori ntregi , se
numete operai a modul o.
mprirea a dou numere ntr egi este numr ntreg, partea fraci onar se pi erde, nu se face rotunjirea rezul tatul ui .
Tipul float
Ti pul fl oat se fol osete pentru pstrarea numerel or real e, n virgula mobil, cu preci zi e si mpl , ordi nar, pn la 6 ci fre c orecte. O
val oare fl oat se pstreaz pe 4 octei . Diapazonul de val ori pentru ti pul fl oat sunt val oarea 0 i val oril e cu modul ul cupri ns nt re 3.4*10
-38

i 3.4*10
+38
.
Operaiil e pentru val oril e fl oat sunt cel e obi nui te: +,-,*,/. n C nu exi st operaia ri dicrii la putere ( x
y
). Pentru aceasta este o funci e
special ( pow(x,y) ).
Tipul double
Ti pul doubl e de asemenea se fol osete pentru pstrarea numerel or real e, n virgula mobil, dar cu o preci zi e mai mare, preci z ie dubl ,
pn la 15 ci fre corecte. O val oare doubl e s e pstreaz pe 8 octei . Di apazonul de val ori pentru ti pul fl oat sunt val oarea 0 i val oril e cu
modul ul cupri ns ntre 1.7*10
-308
i 1.7*10
+308
.
Tipul void
Ti pul voi d este un ti p fr ti p. El semni fi c li psa ti pul ui . Domeni ul de val ori pentru ti pul voi d este mul i mea vi d. Acest ti p se fol osete
pentru a i ndi ca l i psa parametril or la o funci e ( ...f(voi d) ... ), pentru a i ndica la o funci e c ea nu returneaz ni ci -un rezul tat ( voi d f(...) ),
pentru a decl ara poi nteri generi ci ( voi d *p ), adic adrese de memori e pentru care nu se ti e ti pul val oril or ce vor fi pstrate acol o.

1.5. Modificatori de tip
n C sunt modi fi catori de ti p care permi t modi fi carea unor propri eti al e unui ti p deja existent. Aceti modi ficatori sunt: signed (cu
semn), unsigned (fr semn), short (scurt), long (l ung), const.
5

Modificatorul signed
poate fi apli cat la un ti p i ntegral , adi c ti p de numere ntregi , i ncl usi v char. El determi n n mod expl i ci t, c val oril e reprezentate sunt
tratate ca val ori cu semn, adic pozi ti ve sau negati ve. Bi tul cel mai semni fi cati v este al ocat pentru semnul numrul ui .
Astfel , obi nem ti puril e si gned char i si gned i nt. De obi cei , ti pul char, ca i ti pul i nt, sunt ti puri cu semn, chi ar dac nu e scris
modi fi catorul si gned.
Modificatorul unsigned
trateaz val oril e ntregi ca fii nd fr semn. Nu se mai al oc un bi t pentru semn. Toi bi ii sunt al ocai pentru ci frel e val orii ntregi
respecti ve.
Astfel , obi nem ti puril e unsi gned char i unsi gned i nt. De obi cei , pentru ti pul unsi gned i nt se scri e unsi gned, adic se omi te cuvntul i nt.
Modificatorul short
La ti puril e i nt i unsi gned se poate apli ca modi fi catorul short. El deter mi n faptul , ca pentru val ori de aceste ti puri se al oc 2 octei
i ndependent de l ungi mea cuvntul ui cal culator.
n aa mod, obi nem ti puril e short i nt i short unsi gned. De obi cei , short i nt se prescurteaz la short.
Modificatorul long
Apl icat l a ti puril e i nt i unsi gned, modi fi catorul l ong determi n faptul , ca pentru val ori de aceste ti puri se al oc 4 octei i ndependent de
l ungi mea cuvntul ui cal culator.
n aa mod, obi nem ti puril e l ong i nt i l ong unsi gned. De obi cei , l ong i nt se prescurteaz la l ong.
Modi ficatorul l ong poate fi apl icat i l a ti pul doubl e. Astfel , obi nem ti pul l ong doubl e. El reprezi nt acel eai numere real e, dar cu o
preci zi e mai mare, preci zi e quadrupl, pn la 19 ci fre corecte. O val oare l ong doubl e este al ocat pe 10 octei . Di apazonul de val ori
pentru modul ul unei val ori l ong doubl e este 0 i numerel e de l a 3.4*10
-4392
pn l a 3.4*10
+4392
.
Modificatorul const
Val oarea unei date variabil e poate fi modi fi cat n ti mpul execui ei programul ui . O dat variabil se i ntroduce n program pri n decl arai a
ei . Dac la declarai e aplicat modi fi catorul const, atunci acesta i nterzi ce modi ficarea val orii , adic aceast dat va fi o constant:
Construcia i nt x=3; decl ar pe x ca o dat vari abil cu val oarea i ni ial 3. Aceast val oare i ni i al 3 poate fi schi mbat ul teri or.
Construcia const i nt y=4; decl ar pe y ca o dat variabil cu val oarea i ni ial 4, dar aceast val oare 4 nu mai poate fi schi mbat pe tot
ti mpul execui ei programul ui . Acest fapt a fost determi nat de modi ficatorul const di n declaraia l ui y.

1.6. Secvene escape
Un caracter i mpri mabil poate fi reprezentat n program pri n scri erea caracterul ui respecti v ntre apostrofuri : a, W, ;, * etc. Excepi e
fac caracterel e cu semni fi cai e special n C. Acestea sunt: caracterel e apostrof, cod ASCII 39, ghili mel e, cod ASCII 34 i backsl ach, cod
ASCII 92. El e se scri u cu un backsl ash n fa: \, \, \\.
Reprezentarea caracterel or cu fol osirea caracterul ui backsl ash, se numete secven escape. Secvenel e escape se fol osesc, n pri mul
rnd, pentru reprezentare caracterel or ne i mpri mabil e, caractere de control ce au codul ASCII ntre 0 i 31.
Exempl e: \n este caracterul newl i ne, trecere l a nceputul unei li nii noi , codul 10, \t este caracterul tabulator ori zontal , codul 9, \0
este caracterul nul , codul 0 .a.m.d.
6

Caracterel e codul ui ASCII exti ns (coduri 128-255) se pot reprezenta numai pri n secvene escape n fel ul urmtor: \ddd, unde ddd este
codul ASCII al caracterul ui respecti v n si stemul de numerai e octal . Aceast construci e poate fi fol osi t pentru a reprezenta orice
caracter al setul ui ASCII.
Orice caracter al setul ui ASCII poate fi reprezentat i pri n secvena escape de forma \xhh, unde hh este codul ASCII n hexazeci mal al
caracterul ui respecti v.

1.7. Const ante
Constanta este o dat constant. Val oarea ei nu poate fi modi fi cat. Sunt constante numeri ce, al fanumeri ce i constante i r de
caractere.
Orice constant are val oare i ti p. i val oarea i ti pul unei constante sunt deter mi nate de modul cum a fost scris ea n program i nu mai
pot fi schi mbate.
O constant numeric expri m o val oare numeri c. Ti pul acestei val ori depi nde de modul cum a fost scris val oarea.
O constant ntreag, expri mat pri n ci fre, este de ti pul i nt, dac ea este di n domeni ul de val ori al ti pul ui i nt i este de ti pul l ong i nt,
dac ea este di n domeni ul ti pul ui l ong i nt, dar nu ncape n domeni ul i nt. Astfel , constantel e 123, +45, -67 vor fi de ti pul i nt, iar
123456789 va fi de ti pul l ong i nt.
n scri erea unei constante numeri ce pot fi n cali tate de sufi x o li ter l sau L, o li ter u sau U sau combi nai a acestor li t ere l sau L i u sau
U (mari sau mici , n orice ordi ne). Li tera l sau L determi n ti pul l ong, iar li tera u sau U determi n ti pul unsi gned. Astfel , constanta 3u este
de ti pul unsi gned i nt, 3L este de ti pul l ong i nt, 3ul este de ti pul unsi gned l ong i nt .a.m.d.
Constanta ntreag, ce ncepe cu o ci fr di feri t de 0, este o constant zecimal. Dac o constant ntreag ncepe cu 0x sau 0X, atunci
ea este hexazecimal. Constanta ntreag ce ncepe cu 0 i nu este hexazeci mal, este o constant octal. Astfel , constanta 123 este
zeci mal, 0123 este octal, iar 0x123 este hexazeci mal .
O constant numeri c, ce nu este ntreag, cum sunt 12.34, 0.123456, -4.6 , este de ti pul doubl e. Dac o astfel de constant are sufixul f
sau F, atunci ea va fi de ti pul fl oat: 12.34f, 0.12343456F, +4.6f. Constantele reale cu sufixul l sau L vor avea ti pul l ong doubl e:
3.141592653l .
Constantel e real e pot fi reprezentate i n mod ti i ni fi c: 1.234e+1, 1.234E+1, 0.1e-7 etc. El e vor fi de ti pul doubl e.
O constant caracter reprezi nt un caracter. n C o constant caracter are tipul int. Ea se i ntroduce n program pri n scri erea caracterul ui
i mpri mabil ntre apostrofuri : a, W, %, ; etc. Excepi e fac caracterel e cu semni fi cai e special apostrof cod 39, ghili mel e cod 34,
backsl ash, cod 92. Acestea se scri u precedate de un backsl ach n apostrofuri : \, \, \\.
Pri n secvene escape se scri u i caracterel e ne i mpri mabil e, caractere de control , special e, cu coduril e de l a 0 la 31.
O constant caracter poate fi reprezentat n program pri n secvena escape format di n codul ASCII octal sau hexazeci mal . Constantel e
\110, \x41, A toate r eprezi nt li tera A.
O constant ir de caractere este un i r format di n 0 sau mai mul te caractere scrise n ghi li mel e : Li mbajul de programare C. i rul e este
pstrat n memori e ntr-un set de octei consecuti vi . Fi ecare caracter este pstrat pe un octet. Dup ul ti mul caracter al irul ui , pe un
octet este scris automat caracterul nul , codul 0. Acest caracter semni fi c sfri tul irul ui .
O constant ir de caractere poate coni ne secvene escape: ASEM\nCSIE\tInformati ca. Caracterul ghili mel e i backsl ach se scri u ntr-o
constant i r de caractere cu un backsl ash n fa: Cartea se numete \Li mbajul C\, Constanta \\0 reprezi nt caracterul nul .
7

O dat vari abil devi ne dat constant, dac n declaraia datei variabil e este fol osi t modi ficatorul const. Astf el , construcia i nt r=1234;
defi nete variabil a r de ti p i nt i i atri bui e val oarea i ni i al 1234. Aceast val oare poate fi schi mbat ul teri or. Iar cons truci a const i nt
z=11; defi nete variabil a z de ti p i nt, i atri bui e val oarea 11 i aceast val oare nu mai poate fi schi mbat.
O constant poate fi i ntrodus n program cu un nume si mboli c, pri n directi va #defi ne. Astfel , construcia #defi ne pi 3.14159 2653
atri bui e numel e si mboli c pi constantei 3.141592653. pi este o constant simbolic. La preprocesare, numel e pi di n program va fi
substi tui t cu val oarea respecti v.

1.8. Variabile
Variabil a este o l ocai e de memori e la care se face referi na pri ntr -un i denti fi cator, nume. Ea pstreaz val oarea unei date ce poate fi
modi fi cat, adic a unei date vari abil e. Numel e variabil ei poate fi format di n li tere, ci fre i caracterul _ (underl i ne, subli ni ere). Pri mul
caracter trebui e s fi e o l i ter. C face o deosebi re stri ct ntre li terel e mi ci i li terel e mari . Astfel , numel e Abc i abc sunt nume di feri te.
Lungi mea unui nume de variabil teoreti c este nel i mi tat, dar n compilatoarel e concrete este setat o l ungi me concret. Astfel , n BC31
i mplici t sunt l uate n seam pri mel e 32 de caractere.
Deosebi m variabile simple i variabile compuse (structurate). Dac o dat nu Are l egturi cu al te date, atunci ea se numete i zol at.
Numel e unei date i zol ate reprezi nt o variabil si mpl.
Dac datel e se grupeaz ntr-un anumi t mod, atunci numel e acestui grup de date reprezi nt o variabil compus sau structurat. Astfel
sunt tabl ouril e de date: vectori , matri ce, structuri .
Unei vari abil e i corespunde un ti p de date. El determi n ti pul datel or ce vor fi pstrate n l ocaia de memori e referi t de variabil a
respecti v.
Dac ti pul unei constante este determi nat automat de compi l ator di n reprezentarea constantei , pentru o vari abil trebui e expli ci t de
artat ti pul ei . Acest l ucru se face l a declaraia vari abil ei . Anume pri n decl arai a variabil ei se stabil ete corespondena di ntre numel e
vari abil ei i ti pul ei .
n C nu exist decl araii i mpli ci te. Ori ce variabil ce va fi fol osi t n program trebui e s fi e declarat.

1.9. Declaraia i iniializarea variabilelor simple
Decl araia unei variabil e si mpl e speci fi c ti pul variabil ei i numel e ei . Ori ce declarai e se termi n cu punct i vi rgul : int x; n rezul tatul
decl arai ei se al oc n memori e un numr de octei necesari pentru a pstra o val oare de ti pul speci fi cat al variabil ei . Locai a rezervat
va fi ul teri or referi t pri n numel e variabil ei i n ea va fi stocat o val oare de ti pul respecti v.
Se pot decl ara mai mul te vari abil e concomi tent: i nt x, y, z;
O variabil nu poate fi declarat de mai mul te ori .
O variabil se poate i ni ial i za l a declarai e: i nt x=2010, y; Variabil a x este i ni i ali zat cu val oarea 2010, iar vari abila y rmne
nei ni i ali zat, adi c val oarea ei rmne nedetermi nat pn l a pri ma atri bui re.

1.10. Tablouri de date
Un tabl ou de date (array, masi v) este un set ordonat de date de acel ai ti p la care ne putem referi pri n i ndeci . Setul respecti v de date
are un ti p comun i un nume comun pentru toate el ementel e. Fi ecare el ement i are l ocul su bi ne stabili t n tabl ou i poate fi
determi nat pri n unul sau mai mul i i ndeci .
8

Dac l ocul fi ecrui el ement n tabl ou este stabili t pri ntr-un i ndi ce, atunci tabl oul se numete unidimensional sau vector.
Tabl oul , n care l ocul fi ecrui el ement este stabil i t pri n doi i ndeci , se numete bidimensional sau matrice.
Dac l ocul fi ecrui el ement n tabl ou este stabili t pri n n i ndeci , atunci tabl oul se numete
n-dimensional.
Tabl oul este un mod de grupare a datel or de acel ai ti p ntr-o enti tate.
Un al t mod de grupare a datel or este structura. O structur este un set de date cu nume comun, dar el ementel e pot fi de ti puri di feri te.
Un tabl ou de date, ca i o structur, este o vari abil compus (structurat).
Ca i o variabi l si mpl, ori ce variabil tabl ou de date trebui e decl arat pentru a o putea fol osi n program.

1.11. Declaraia i iniializarea tablourilor de date
Decl araia unui tabl ou este anal ogi c declarai ei unei vari abil e si mpl e. Se scri e ti pul comun tuturor el ementel or tabl oul ui , numel e
tabl oul ui i n paranteze ptrate pentru fi ecare i ndi ce n parte se arat numrul de el emente dup fi ecare di mensi une. Numr ul de
el emente di n parantezel e ptrate, trebui e s fi e o constant numeri c sau o expresi e constant, adic o expresi e, val oarea crei a poate
fi determi nat la compil area programul ui .
Astfel , decl araia int x[10]; declar vectorul cu numel e x ce const di n 10 el emente de ti pul i nt. Aceasta nseamn c i ndicel e ce
determi n pozi i a el ementel or, poate avea val oril e 0, 1, 2, ..., 9. Pentru ori ce i ndi ce, cea mai mic val oare admis este 0. Pentru a accesa
un el ement al vectorul ui , se scri e numel e vectorul ui , dup care, n paranteze ptrate, se scri e i ndexul el ementul ui . Astfel , x[0] este
pri mul el ement, x*1+ este al doil ea el ement .a.m.d. x*9+ este ul ti mul , al zecel ea el ement. n rezul tatul declarai ei , vor fi al ocate 10 l ocaii
consecuti ve pentru pstrarea val oril or acestor 10 el emente. Fi ecare l ocai e const di n numrul necesar de octei pentru a pstra o
val oare de ti pul tabl oul ui , ai ci ti pul i nt. n cazul nostru, vor fi al ocai 2*10=20 octei .
n C numel e tabl oul ui este un si mbol (o variabil de ti p poi nter), care are ca val oare adresa pri mul ui el ement di n tabl ou.
La decl arai a unui vector, pot fi i ni iali zate toate sau unel e el emente al e tabl oul ui :
int x[5]={1,2,1,-2,0}; Ai ci sunt i ni iali zate toate cel e 5 el emente al e vectorul ui x.
Nu se pot scri e mai mul te val ori de i ni iali zare dect numrul de el emente i ndicat n parantezel e ptrate.
double a[]={1.1, 2.2, -3.14}; Ai ci vectorul a are 3 el emente i toate sunt i ni iali zate. n cazul cnd numrul de el emente n decl arai e nu
este i ndi cat, numrul l or se determi n dup numrul val oril or de i ni i ali zare.
float b[5]={-1, -1.7, 34}; Ai ci sunt i ni i ali zate numai pri mel e 3 el emente al e vectorul ui . Cel elal te rmn nei ni iali zate, adic valoarea l or
este nedeter mi nat pn la pri ma atri buire.
O matri ce se declar n fel ul urmtor: long a[2][3]; ai ci matri cea a are 2 li nii i 3 col oane. El ementel e unui tabl ou mul ti di mensional sunt
pstrate n memori e n ordi ne l exicografic: cel mai repede i schi mb val oarea i ndexul cel mai di n dreapta. Pentru matri ce, el ementel e
sunt pstrate dup l i nii . n exempl ul nostru, el ementel e sunt: a*0+*0+, a[0][1], a[0][2], a[1][0], a[1][1], a[1][2].
Matri cea poate fi i ni ial i zat compl et sau parial l a declaraia ei : short a[2][2]={1,2,2,1}; Ai ci matricea a este i ni iali zat complet. Ea
poate fi i ni i ali zat i al tfel , pe l i nii : short b[2][2]={ {1,2}, {-1,-2} }; n cazul i nt c[2][3]={ 1,2,3}; sunt i ni iali zate numai 3 el emente di n cel e
6 al e matri cei c.
int m[2][2][3][2]; este decl araia unui tabl ou 4-di mensi onal . El const di n 2*2*3*2=24 el emente de ti p i nt i va fi pstrat n memori e pe
24*2=48 octei .
9

n mod anal ogi c sunt declarate i i ni iali zate tabl ouril e, el ementel e crora sunt caractere. n C nu exi st ti pul de date i r de caractere. De
aceea, un i r de caractere se reprezi nt ca un vector, el ementel e cruia sunt caractere. Astfel , char s[5]={ A, S, E, M, \0 }; decl ar
vectorul s, care reprezi nt irul ASEM. n tabl oul s, dup ul ti ma li ter a irul ui ASEM este i ncl us caracterul nul , care semni fi c
sfri tul i rul ui , el nu i ntr n componena i rul ui ASEM.
Pentru ori ce i r de caractere, pstrat n memori e, dup ul ti mul caracter al i rul ui trebui e s fi e scri s n memori e caracterul nul , care
semni fic sfri tul i rul ui respecti v.
Pentru a si mpli fi ca i ni ial i zarea unui i r de caractere l a declarai a l ui , C permi te construcii de fel ul :
char u*5+=CSIE; Ai ci , caracterul nul va fi scris automat l a sfri tul i rul ui .
Important este faptul , ca pentru un i r format di n n caractere, s fi e al ocai cel pui n n+1 octei n memori e, pentru a putea scri e toate
caracterel e i rul ui i , pe un octet supl i mentar, caracterul nul , ce semnali zeaz sfri tul irul ui .

1.12. Comentarii
Comentari ul este o remarc, un text expli cati v la program. Comentari ul ui ncepe cu caracterel e /* i se termi n cu */. Un comentari u
poate fi exti ns pe una sau mai mul te l i nii :
/* Acesta este un comentari u stil C esti ns pe o li ni e */
/* Ai ci avem un comentari u stil C
exti ns pe 2 li nii */
Un comentari u poate fi plasat n program ori unde, unde poate fi pl asat un spai u. La compilare comentariil e sunt i gnorate de
compil ator, sunt tratate ca un spai u.
Unel e compi l atoare C, i ncl usi v BC31, permi t fol osirea comentariil or stil C++. Un comentari u stil C++ este comentari u de o li ni e. El ncepe
cu // i conti nu pn la sfri tul li ni ei curente:
i nt x=123; // x este o vari abil de ti pul i nt, i ni iali zat la declarai e cu val oarea 123.

Anexa 1. Tipuri de date n C

Tabelul urmtor conine tipuri de date C i caracteristica lor.
Tip
Dimensiune
n octei
Ce reprezint Domeniu de valori Mod de reprezentare
char
signed char
1 caractere [-128, +127]
Codul ASCII al
caracterului. Poate fi
prelucrat ca un
character sau ca ntreg
cu semn.
unsigned char 1 caractere [0, +255]
Codul ASCII al
caracterului. Poate fi
prelucrat ca un
10

character sau ca ntreg
fr semn.
short
short int
signed short
signed short int
2 numere ntregi [-32768, +32767] Complement fa de 2
unsigned short
unsigned short
int
2 numere ntregi [0, +65535] ntreg fr semn
int
signed int
2 numere ntregi [-32768, +32767] Complement fa de 2
unsigned
unsigned int
2 numere ntregi [0, +65535] ntreg fr semn
long
long int
signed long
signed long int
4 numere ntregi
[-2147483648,
+2147483647]
Complement fa de 2
unsigned long
unsigned long
int
4 numere ntregi [0, +4294967295] ntreg fr semn
float 4
numere
flotante
0, [10
-39
, 10
+39
]
Virgul mobil precizie
simpl
double 8
numere
flotante
0, [10
-308
, 10
+308
]
Virgul mobil precizie
dubl
long double 10
numere
flotante
0, [10
-4392
, 10
+4392
]
Virgul mobil precizie
quadrupl

Anexa 2. Secvene escape
Constant
caracter
Val oare
(Cod ASCII)
Denumi re
caracter
Uti li zare
\0 0 NUL semnali zeaz sfri tul unui ir de caractere
\a 7 BEL acti vare sunet
\b 8 BS reveni re cu un spai u
11

\t 9 HT tabulator ori zontal
\n 10 newl i ne pozi i oneaz cursorul la nceputul li ni ei urmtoare
\v 11 VT tabulator verti cal
\f 12 FF sal t de pagi n la i mpri mant
\r 13 CR pozi i oneaz cursorul la nceputul li ni ei curente
\ 34 ghili mea i ncl ude caracterul ghili mel e n i ruri de caractere
\ 39 apostrof i ncl ude caracterul apostrof n i ruri de caractere
\\ 92 backsl ash i ncl ude caracterul backsl ach n iruri de caractere

Anexa 3. Codul ASCII standard i extins
Codul ASCII (Ameri can Standard Code for Informati on Interchange) este un cod standard de reprezentare a caracterel or ca val ori ntregi
pe 7 bi i . Acest cod a fost i ntrodus pentru a se obi ne o compati bili tate ntre di feri tel e ti puri de echi pamente fol osi te l a procesarea
datel or.
Codul ASCII standard const di n 128 de numer e ntregi (reprezentate pe 7 bi i , cu val ori ntre 0 i 127) atri bui te unor caractere, numer e,
semne de punctuai e, i cel or mai uzual e caractere speci al e.
Codul ASCII extins const de asemenea di n 128 numere ntr egi , cu val ori ntre 128 i 255 (pentru reprezentarea l or fol osi ndu-se toi cei
8 bi i ai unui octet), care reprezi nt caractere supli mentare matemati ce, grafi ce, caractere special e sau caractere di n di verse limbi .
n fi guril e urmtoare sunt date coduril e ASCII (standard i exti ns) i caracterel e corespunztoare.
Caractere ASCII imprimabile
Numerel e de l a 32126 sunt asociate caracterel or pe care l e gsi i pe tastatur i care apar atunci cnd vi zuali zai sau i mpri mai un
document. Numrul 127 reprezi nt comanda DELETE.
Zecimal Caracter Zecimal Caracter Zecimal Caracter Zecimal Caracter
32 spaiu 56 8 80 P 104 h
33 ! 57 9 81 Q 105 i
34 " 58 : 82 R 106 j
12


35 # 59 ; 83 S 107 k
36 $ 60 < 84 T 108 l
37 % 61 = 85 U 109 m
38 & 62 > 86 V 110 n
39 ' 63 ? 87 w 111 o
40 ( 64 @ 88 X 112 p
41 ) 65 A 89 Y 113 q
42 * 66 B 90 Z 114 r
43 + 67 C 91 [ 115 s
44 , 68 D 92 \ 116 t
45 - 69 E 93 ] 117 u
46 . 70 F 94 ^ 118 v
47 / 71 G 95 _ 119 w
48 0 72 H 96 ` 120 x
49 1 73 I 97 a 121 y
50 2 74 J 98 b 122 z
51 3 75 K 99 c 123 {
52 4 76 L 100 d 124 |
53 5 77 M 101 e 125 }
54 6 78 N 102 f 126 ~
55 7 79 O 103 g 127 DEL

Caracterele ASCII ne-imprimabile de control
13

Numerel e de l a 0 la 31 di n tabel a ASCII sunt atri bui te caracterel or de control care se utili zeaz pentru a control a dispozi ti ve peri ferice
cum ar fi i mpri mantel e. De exempl u, 12 reprezi nt funcia sal t de pagi n/pagi n nou. Aceast comand i ndi c unei i mpri mante s sar
la nceputul pagi nii urmtoare.
Zecimal Caracter Zecimal Caracter
0 nul 16 comutare a l egturi i de date
1 nceput de antet 17 caracter de control al dispozi ti vul ui 1
2 nceput de text 18 caracter de control al dispozi ti vul ui 2
3 sfri t de text 19 caracter de control al dispozi ti vul ui 3
4 sfri t de transmisi e 20 caracter de control al dispozi ti vul ui 4
5 i nterogare 21 confirmare negati v
6 confirmare 22 pauz de si ncroni zare
7 semnal sonor 23 sfri t de bl oc de transmisi e
8 pas napoi 24 i nvali dare
9 tabulator ori zontal 25 sfri t de suport
10 sal t de li ni e/li ni e nou 26 caracter de substi tui e
11 tabulator verti cal 27 caracter de evi tare
12 sal t de pagi n/pagi n nou 28 separator de fi i er
13 retur de car 29 separator de grupuri
14 desel ectare al ternati v 30 separator de nregi strri
14

15 sel ectare al ternati v 31 separator uni ti

Caracterele ASCII imprimabile extinse
Caracterel e ASCII exti nse corespund necesi til or de a avea mai mul te caractere. Codul ASCII exti ns cupri nde cel e 128 de caractere
cupri nse n ASCII i adaug nc 128 de caractere supli mentare, total i znd 256. Chi ar i cu aceste caractere supli mentare, mul te l i mbi
coni n si mbol uri care nu pot fi condensate n 256 de caractere. De aceea, exi st vari ante de ASCII care cupri nd caractere i simbol uri
regi onal e.
Zecimal Caracter Zecimal Caracter

Zecimal Caracter Zecimal Caracter
128 160

192

224
129 161

193 225
130 162

194

226
131 163

195 227
132 164

196

228
133 165

197 229
134 166

198

230
135 167

199 231
136 168

200 232
137 169

201

233
138 170

202 234
139 171

203

235
15

140 172

204

236
141 173

205 237
142 174

206

238
143 175

207 239
144 176


208

240
145 177

209 241
146 178


210

242
147 179

211 243
148 180


212

244
149 181

213 245
150 182


214

246
151 183

215 247
152 184

216 248
153 185


217

249
154 186

218 250
155 187


219

251
156 188

220 252
16

157 189


221

253
158 190

222 254
159 191


223

255

Dincolo de ASCII
O al t tabel de caractere, mai nou, este denumi t Uni code (Uni code: Un standard de codare a caracterel or dezvol tat de Uni code
Consorti um. Uti li znd mai mul t de un octet pentru reprezentarea fi ecrui caracter, Uni code permi te ca practi c toate li mbil e s crise di n
l ume s fi e reprezentate uti li znd un set uni c de caractere.). Deoarece Uni code este o tabel mul t mai mare, ea poate reprezenta 65.536
de caractere n l oc de cel e 128 al e ASCII sau cel e 256 al e ASCII exti ns. Aceast capaci tate mai mare permi te ca majori tatea caracterel or
di versel or li mbi s fi e cupri nse ntr-un si ngur set de caractere.

S-ar putea să vă placă și