Documente Academic
Documente Profesional
Documente Cultură
2. 0irecti$a *define poate aprea oriunde n program, dar ea afecteaz numai liniile care urmeaz acesteia 3. "rin con$enie, identificatorii care trebuie nlocuii de preprocesor cu $alori se scriu cu ma&uscule 4$anta&e ale folosirii directi$ei *define: 1. 5izibilitate mrit. Se refer la citirea i nelegerea rapid a fiierului surs -spre e!emplu, -I tim ce nseamn i ne amintim c este 3.ce$a, deci nu trebuie s scriem de fiecare dat $aloarea lui.. 2. Sc6imbrile ulterioare ale unor $alori constante se fac foarte uor. 0e e!emplu, $rem s modificm $aloarea lui +, la 7. n locul liniei #define %& 1 scriem linia #define %& 0ac nu am fi folosit acest mod de definire a constantei +,, atunci ar fi trebuit s nlocuim peste tot n program $aloarea 1 cu 7. 0ac nu au nume, constantele se autoreprezint prin nsi maniera lor de scriere. %ariabilele sunt datele care i pot modifica $aloarea pe parcursul e!ecuiei programului. Orice $ariabil are asociat un nume i o zon de memorie care $a fi prelucrat binar conform unor reguli specifice de interpretare a tipurilor de date. Observaie : orice $ariabil trebuie declarat nainte de utilizarea sa. #ipurile de date pot fi predefinite -puse la dispoziie de limba&. sau deri&ate -definite de utilizator .. O alt clasificare posibil este urmtoarea : simple -scalare., care la un moment dat conin o singur $aloare de un anumit tip compuse, care la un moment dat conin mai multe $alori de acelai tip sau de tipuri diferite pointeri, care conin adrese de memorie ale unor entiti
#oate acestea sunt cu$inte rezer$ate, deci nu se pot folosi ca nume de $ariabile. 4lte tipuri de date, cum ar fi $ectorii i pointerii, sunt deri$ate din tipurile fundamentale. 0e obicei, cu$%ntul rezer$at : signed; nu se mai scrie. 0e e!emplu, :signed int; este ec6i$alent cu :int;. 0e asemenea, cu$intele : s0ort int;, :long int; i :unsigned int; pot fi prescurtate, de obicei, ca : s0ort;, :long; i :unsigned;. Cu aceste con$enii, tabelul de mai sus se poate scrie: c0ar signed c0ar unsigned c0ar s0ort int long unsigned s0ort unsigned unsigned long float double long double #ipurile fundamentele se pot grupa dup funcionalitate: 1. tipurile integrale sunt cele care se folosesc pentru reprezentarea $alorilor ntregi 2. tipurile reale sunt cele care se folosesc pentru reprezentarea $alorilor reale 3. tipurile aritmetice sunt tipuri integrale sau reale #ipuri integrale: c0ar signed c0ar unsigned c0ar s0ort int long unsigned s0ort unsigned unsigned long #ipuri reale: float double long double
=iecare celul reprezint un bit i fiecare bit este numerotat -ncep%nd cu cel mai puin semnificati$.. >iii care formeaz un octet sunt fie : on;, fie :off;, aceste stri fiind reprezentate prin 1 i respecti$ 3. 4ceasta ne conduce s g%ndim fiecare octet din memorie ca un ir de < cifre binare -se mai numesc iruri de bii.. 4stfel, $ariabila :c; poate fi g%ndit ca irul de bii 31133331. ?ai general, fiecare cu$%nt main poate fi g%ndit ca un numr binar. n acest fel $aloarea lui :c; este numrul: 31133331$41!$5+1!$6+3!$.+3!$(+3!$$+3!$1+1!$347813 -n baza 17. 5imba&ul C pune la dispoziie trei tipuri referitoare la caractere: c0ar signed c0ar unsigned c0ar 0e obicei, tipul @c0ar; este ec6i$alent cu @signed c0ar;. =iecare din aceste trei tipuri se memoreaz pe un octet -deci poate ;ine; 2AB de $alori distincte.. "entru @ signed c0ar;, $alorile sunt ntre 912< i 12C, iar pentru @unsigned c0ar; ntre 7 i 2AA.
0ac lucrm pe un calculator unde memorarea unui cu$%nt se face pe 2 octei, atunci putem memora 2 1B $alori distincte. /aloarea cea mai mare a tipului @int; este dat de constanta de sistem 9:XI'). $ident cea mai mic $aloare $a fi ;9:XI')-1. 0ac se ncearc, de e!emplu, adunarea a dou numere i se depete aceast $aloare, atunci se $a primi un mesa& @integer overeflow;.
Tipuri reale
5imba&ul C ofer trei tipuri reale: @float;, @double; i @long double;. /ariabilele de acest tip $or putea pstra $alori reale, cum ar fi: 3.331, $.3, (.1.167. 4ceast notaie se numete notaie zecimal deoarece conine punctul zecimal. ?ai e!ist i notaia exponenial: 1.$(.658e6 corespunde cu 1.23DABC(17AF123DAB.C. "e ma&oritatea mainilor, tipul @float; se memoreaz pe D octei, iar tipul @ double; pe < octei. 4sta nseamn c o $ariabil de tip @float; poate a$ea B zecimale, iar o $ariabil de tip @ double; poate a$ea 1A zecimale. 4stfel, o $ariabil de tipul @float; are forma: 31d1d$d(d.d6d5!13n, unde ;(BA4nA4(B 4semntor, o $ariabil de tip @double; are forma: 31d1d$......d16!13n1 unde ;(3BA4nA4(3B 4stfel, instruciunea #41$(..61$(.61$(.61$(.6C '' 27 de cifre semnificati$e $a implica atribuirea lui ! a $alorii 3.1$(.61$(.61$(.6!13( '' 1A cifre semnificati$e Gzual, pentru $ariabilele de tip @long double; se aloc mai mult memorie -17 octei., sunt ns compilatoare care trateaz acest tip e!act ca i @double;. Observaie: 5imba&ul C pune la dispoziie operatorul @sizeof; pentru determinarea numrului de octei necesari memorrii unui obiect. Cu a&utorul lui putei afla c%t memorie aloc compilatorul cu care lucrai pentru fiecare din tipurile de date prezentate.
$.$ Constante
a. Constante Dntregi : pot fi e!primate n bazele <, 17 sau 1B . Constantele n baza < au ntotdeauna prima cifr 7, iar cele n baza 1B au prefi!ul :3#; sau :3X;. Exemple : 318$ '( are 7 n fa, este considerat n baza < (' 1$3 '( este considerat implicit n baza 17 (' 3#8B '( are 7!, este considerat n baza 1B (' Constantele de tip long au adugat la sf%rit litera l sau > . E#emplu E 1> 1333333> 6B1l "entru constantele unsigned se adaug la sf%rit u sau F . Exemplu : 3u 1$333u $3333lu
b. Constante caracter : Orice limba& de programare folosete o codificare a caracterelor cu care lucreaz. 5imba&ul CHH folosete standardul de codificare 4SCII. Conform acestuia, fiecare caracter are un cod 4SCII propriu, un numr ntreg cuprins ntre 7 i 2AA. 4stfel: Caracterele )litere mari *4,, ,>,, J, *K, au codurile cuprinse ntre BA i L7 Caracterele )litere mici *a,, *b,, J, *z, au codurile cuprinse ntre LC i 122 Caracterele 9cifre *7,, *1,,..., *L, au codurile cuprinse ntre D< i AC
Informatica clasa a X-a Caracterele speciale sunt intercalate n tot inter$alul M7, 2AAN.
O constant de tip caracter este un caracter 4SCII cuprins ntre apostrofuri . Exemple : GXH G1H GInH GItH GJH "entru a putea utiliza anumite caractere speciale se folosesc sec$enele de e$itare - escape. prezentate n tabelul de mai &os . O sec$en escape este o succesiune de caractere cuprinse ntre g6ilimele care nu se tipresc , dar care au un anumit efect. Sec&ena I3 Ia Ib If In Ir It I& II IH IP c. %aloare 0e#azecimal 3 3#38 3#3B 3#3C 3#3: 3#3/ 3#37 3#3L 3#6C 3#$8 3#$$ Caracter :SCII 'F>> LE>> LS NN >N C= <) %) I G Q terminator de Kir generator de sunet bacM space sfOrKit de linie linie nou salt la Dnceputul rOndului tab orizontal tab &ertical bacM slas0 apostrof g0ilimele Semnificaia
Constante reale : sunt n $irgul mobil i au n reprezentarea lor urmtoarele componente : partea ntreag punctul zecimal partea fracionar e sau E i un e!ponent 1$(.. 1$e5 -111.$
Exemple :
d. Riruri de caractere : se scriu ntre g6ilimele, iar la sf%ritul irului compilatorul adaug automat terminatorul de ir GI3H. Exemplu : Q)estare siruriP
$.( %ariabile
0eclaraia unei $ariabile are sinta!a : tip@baz list@&ariabile@declarateC 5ista poate fi format din una sau mai multe $ariabile separate ntre ele prin $irgul. O $ariabil poate s includ n declaraie i iniializarea sa. Exemple : int n4 5.-# float media# char c.0+# unsigned long int f# double salar#
Informatica clasa a X-a fiier pe disc $ariabil de memorie -zon de memorie. 0estinaia poate fi: ecranul monitorului fiier pe disc $ariabil de memorie -zon de memorie.
=lu!ul de date este format din sec$ene de caractere organizate pe linii -separate prin codurile 4SCII generate la apsarea tastei Enter. care intr i care ies din program. "rin flu!urile de date ec6ipamentele de intrare 9ieire sunt conectate la programul CHH. "entru operaiile de citire i scriere se folosesc instruciunile e!presie cinSS pentru citire i coutAA pentru scriere prin care se creeaz flu!urile de date, cu a&utorul operatorilor OO, respecti$ PP -rolul operatorilor este de a apela funcii de sistem care se gsesc n 6eader)ul iostream.0.. Semnificaia acestor e!presii este urmtoarea: "entru citire. =lu!ul de date se creeaz ntre tastatur i o $ariabil de memorie: cin reprezint tastatura, iar operatorul de intrare SS nseamn transmiterea unei $alori de la tastatur. "entru scriere. =lu!ul de date se creeaz ntre $ariabila de memorie i monitor: cout reprezint monitorul, iar operatorul de ieKire AA nseamn transmiterea unei $alori ctre monitor. Sinta!a de utilizare pentru operaia de citire este : cinSSnume@&ariabilC pentru citirea $alorii unei singure $ariabile identificat prin numele ei cinSSnume@1SSnume@$SS"SSnume@nC pentru citirea $alorilor a n $ariabile cin.getTnume@&ariabil 1 nrUC pentru citirea unui ir de caractere de lungime nr. +bser&aiiE 1. Introducerea $alorii unei $ariabile se termin apsarea tastei Enter. 2. 0ac pt o $ariabil din list nu se introduce de la tastatur o $aloare care s corespund tipului ei, operaia de citire se bloc6eaz -nu se mai citesc $alorile pt celelalte $ariabile din list. i se trece la e!ecuia urmtoarei instruciuni din program. Sinta!a de utilizare pentru operaia de scriere este : coutAAnume@&ariabilVconstantC pentru afiarea $alorii unei singure $ariabile sau constante simbolice sau pt afiarea unei constante literale coutAAPmesajPC pentru afiarea unui te!t -ir de caractere. E#empluE int aF17,bF27Q coutPPaPP; ;PPbQ '' se afieaz: 17 27 $alorile se scriu pe acelai r%nd, separate prin spaii -folosindu)se o constant de tip ir de caractere pt afiarea spaiilor. coutPPaPPendlPPbQ '' se afieaz: 17 27 $alorile se scriu pe r%nduri diferite, pt separarea lor folosindu)se constanta de sistem endl care corespunde apsrii tastei Enter.
Cu a&utorul instruciunii cout se pot afia nu numai mesa&e, $alori de $ariabile i constante ci i $alori ale unor e!presii -inclusi$ $aloarea de ade$r a unei e!presii logice., $alori returnate de funcii. 4tunci c%nd $rem s afim $aloarea unei e!presii, n cadrul instruciunii cout aceasta trebuie scris ntre paranteze rotunde. coutAA&al@1AA&al@$AA".C $al+1, $al+2, J sunt parametrii care se $or afia. +bser&aiiE 1. 0ac se afieaz o constant de tip ir de caractere n care $rei s afiai i caracterul g6ilimele care este folosit ca delimitator, $ei folosi sec$ena escape pt acest caracter. !emplu: coutPP; 8aspunsul este R;0aR; ;Q '' Se afieaz 8aspunsul este :0a; 2. "rototipurile funciilor apelate n flu!urile de citire cinPP i de scriere coutOO i constanta endl se gsesc n 6eader)ul iostream.0. 3. n instruciunea cout putem a$ea o atribuire: coutAAT&ar4e#presieU $ariabilei &ar i se atribuie $aloarea e!presiei de dup operatorul :F;, apoi se afieaz $aloarea $ariabilei &ar rezultat n urma atribuirii. E#empleE 1. Citii un caracter i scriei)l pe o linie nou urmat de codul su 4SCII . #include<iostream.h>
Informatica clasa a X-a void main13 { char car# cin<<car# //citirea caracterului cout<<"caracterul6 " << car << " are codul 78 ((6 "<<int1car3# $
2. Citii o liter mare i afiai)o ca liter mic . #include<iostream.h> void main13 { char c# cin>>c# //citirea caracterului cout<<char1c9:7:2:a:3# //afiarea ca liter !ic $ 3. Citii numele i prenumele unei persoane de la tastatur i apoi afiai datele respecti$e pe o linie nou separate printr)un tabulator. Se presupune c at%t numele c%t i prenumele nu depesc fiecare A7 de caractere i se separ prin nter la tastare . #include<iostream.h> void main13 { char nume;21< # char prenume;21<# //citirea celor dou iruri de caractere pe " linii separate cin.get1nume4prenume42-3# cin.get13# cin.get1prenume42-3# //afiarea lor separate prin tab cout<<nume<</=t/<<prenume# $ D. Citii un caracter i afiai)l pe ecran precedat de un spaiu . #include<stdio.h> void main13 { char c# cin>>c# //citirea caracterului cout<<" "<<c# //afiarea caracterului precedat de un spa#iu $ A. Citii un caracter i afiai)l pe ecran precedat i urmat de c%te un asterisc. #include<stdio.h> void main13 { char c# cin>>c# //citirea caracterului cout<<">"<<c<<">?# //afiarea in for!atul cerut $ B. Citii o cifr zecimal ca i caracter i afiai)o precedat de 3 zerouri nesemnificati$e . #include<stdio.h> void main13 { char c# cin>>c# //citirea unui caracter //afiarea caracterului precedat de $ %erouri cout<<"---"<<c# $