Sunteți pe pagina 1din 7

Informatica clasa a X-a

Cap.1 Elemente de baz ale limbajului C++


1.1 Structura unui program C++
n C, elementul de baz al unui program este funcia. O funcie este o seciune de program construit conform anumitor regului pentru declaraii i instruciuni de prelucrare a datelor problemelor. Nu este permis definirea unei funcii n interiorul altei funcii. Structura cea mai general a unui program C este urmtoarea: directive preprocesare declaraii globale funcie1 funcie2 .. main Orice program conine funcia main care este funcia principal a unui program. !ecuia programului ncepe cu e!ecuia acestei funcii. "entru specificarea e!plicaiilor necesare unei mai bune nelegeri i utilizri a programelor se folosete comentariul, care are sinta!a : !""""te#t comentariu"".! . #e!tul din comentariu poate a$ea mai multe linii . Se poate folosi i forma: ..............te#t comentariu caz n care comentariul se refer la te!tul scris p%n la sf%ritul liniei respecti$e. Exemplu : "rogramul urmtor $a realiza doar afiarea unui mesa& cu instruciunea e!presie cout prin care se creaz flu!ul de date de ieire. #include<iostream.h> '( includerea bibliotecii standard pentru citirea i scrierea datelor (' void main() '( funcia principal (' { cout<<Test primul program !"# '( afiare mesa& (' $

1.$ %ocabularul limbajului


lementele de baz ale limba&ului, numite i entiti sintactice sau atomi le!icali, fac parte din urmtoarele categorii : cu&inte rezer&ate : sunt nume rezer$ate instruciunilor, tipurilor fundamentale i sinta!ei de definire a funciilor i a tipurilor de date identificatori : sunt nume de date, constante sau $ariabile. Sunt formate dintr)un ir de caractere care ncepe cu o liter sau cu *+, , urmtoarele caractere put%nd fi litere, cifre sau *+, constante : sunt $alori fi!e reprezent%nd caractere, iruri de caractere, numere ntregi sau raionale delimitatori : reprezint simboluri care separ entitile -spaiu, tab etc. . Observ.: limba&ul C face distincie ntre literele mici i mari, deci identificatorul n este diferit de identificatorul '.

1.( )ipuri de date


"rin tip de dat nelegem necesitatea definirii urmtoarelor aspecte : dimensiunea zonei de memorie asociate mulimea $alorilor corespunztoare tipului timpul de $ia asociat datei mulimea operaiilor prin care $alorile tipului pot fi prelucrate -modificate sau testate. i semnificaia acestor operaii operatorii utilizai i restricii n folosirea acestora n C se lucreaz cu $alori ce pot fi stocate n &ariabile sau constante. /alorile constante nu se modific pe parcursul rulrii programului. 0ac au asociat un nume, atunci se numesc constante simbolice i se declar printr)o directi$ de preprocesare numit macrodefiniie a$%nd sinta!a : *define nume &aloare Exemplu : #define %& 1 #define '( ).1*1+, Observaii: 1. n program, orice referire la identificatorul +, $a a$ea ca efect nlocuirea acestuia de ctre preprocesor cu $aloarea 1.

Informatica clasa a X-a

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

1.. /irecti&e preprocesor


8eprezint operaii care $or fi efectuate naintea compilrii i anume : includerea altor fiiere $erificarea anumitor condiii, a parametrilor de mediu sau a definiiilor realizarea macrodefiniiilor 0irecti$ele de preprocesare ncep cu caracterul * . Exemplul 1 : #include<iostream.h> '(este inclus n program o copie a fiierului standard pentru intrri'ieiri (' Exemplul 2 : #include file1.h" '' sunt incluse fiierele utilizatorului cu numele specificat #include file1.cpp" 5imba&ul C conine un mare numr de funcii pentru prelucrarea datelor. le sunt organizate, n funcie de scopul urmrit, n biblioteci numite fiiere 0eader a$%nd e!tensia 0. iostream.0 9 pentru operaii de citire'scriere de la dispoziti$ele standard stdlib.0 1 mat0.0 9 pentru prelucrri numerice ct2pe.0 9 pentru prelucrarea sau $erificarea caracterelor mem.0 1 string.0 9 pentru prelucrarea zonelor de memorie i a irurilor de caractere alloc.0 1 malloc.0 1 stdlib.0 ) pentru alocarea memoriei grap0ics.0 ) pentru interfaa grafic dos.0 - pentru interfaa cu sistemul de operare

Cap.$ )ipuri fundamentale de date


$.1 -rezentarea tipurilor
5imba&ul C lucreaz cu cinci tipuri de baz : int, c0ar, float, double i &oid. #ipul &oid are semnificaia de :nimic; sau :orice tip; n funcie de conte!t. 4$em urmtoarele tipuri fundamentale de date -scriere ntreag)lung.: c0ar signed c0ar unsigned c0ar signed s0ort int signed int signed long int unsigned s0ort int unsigned int unsigned long int float double long double

Informatica clasa a X-a

#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

Caractere i tipul char


n C, $ariabile de orice tip integral pot fi folosite pentru reprezentarea caracterelor. n particular, $ariabilele de tipul :c0ar; i :int; se folosesc pentru acest scop. n C, toate caracterele sunt tratate ca :ntregi mici;, i reciproc, ntregii mici sunt tratai ca nite caractere. n particular, orice e!presie integral poate fi afiat n format ntreg sau caracter. Exemplu: char c./a/# // a are codul ASCII 97 int i.0+# // 65 este codul ASCII pentru A cout<< c# // este afiat a cout<< char1c213# // este afisat b cout<<c22# // este afisat 99 cout<<char1i2)3# // este afisat D n C, fiecare caracter este memorat pe un octet de memorie -< bii.. =ie declaraia: char c./a/# "utem g%ndi c :c; este memorat pe un octet astfel: 7 1 1 7 7 7 7 1 2C 2B 2A 2D 23 22 21 27

=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.

Tipul de date int


#ipul de date @int; este cel mai folosit tip din limba&ul C. 4cest tip, mpreun cu alte tipuri integrale -cum ar fi @c0ar;, @s0ort; i @long;. este desemnat pentru lucrul cu $alori ntregi reprezentabile pe o main. n matematic, numerele naturale sunt 7,1,2,...,care mpreun cu cele negati$e -corespunztoare. formeaz numerele ntregi. "e o main, se pot reprezenta -folosind un tip integral. numai o submulime finit a acestor numere. 0e obicei, un cu$%nt se memoreaz pe un cu$%nt main. 4numite calculatoare folosesc cu$inte de 2 octei -1B bii., altele de D octei -32 bii.. "resupunem c lucrm pe un calculator care lucreaz pe D octei. 4ceasta implic c un cu$%nt are 32 de bii, deci poate @ine; 2 32 $alori distincte. Eumtate sunt folosite pentru reprezentarea numerelor negati$e i cealalt &umtate pentru cele poziti$e: -$(11-$(1+11""1-$1-113111$1""".1$(1-1

Informatica clasa a X-a

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;.

Tipurile integrale short, long i unsigned


0e obicei, tipul @s0ort; se memoreaz pe 2 octei i tipul @ long; pe D. 4stfel, pe mainile n care cu$intele au D octei, lungimea tipului @ int; este aceeai cu lungimea tipului @ long;, iar pe mainile n care cu$intele au 2 octei, lungimea tipului @int; este egal cu lungimea tipului @s0ort;. Constantele predefinite 9:XS<+=) i 9:X>+'? -n unele implementri >+'?@9:X . caracterizeaz lungimea acestor tipuri. 0e obicei, 9:XS<+=)4$16 i 9:X>+'?4$(1. 4stfel, dac @#; este o $ariabil de tip @s0ort;, atunci: - 9:XS<+=)A4#A49:XS<+=)-1 0ac @t; este o $ariabil de tip @long;, atunci: -9:X>+'?A4tA49:X>+'?-1 n ceea ce pri$ete tipul @unsigned;, acesta este memorat pe acelai numr de octei ca i tipul @ int;. 0ac @u; este o $ariabil de tip @unsigned;, atunci: 3A4uA4$!9:XI')-1

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#

Cap.( +peraiile de citire scriere


"rin intrri ieKiri nelegem un set de operaii care permit sc6imbul de date ntre un program i un periferic. n general, operaia de introducere a datelor de la un periferic se numete operaie de citire, iar cea de ieire pe un periferic scriere. Numim terminal standard terminalul de la care s)a lansat programul. n CHH toate operaiile de intrare)ieire se e!ecut prin flu!uri de date. Gn flu# de date -stream. reprezint flu!ul datelor de la surs la destinaie. Sursa poate fi: tastatura

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# $

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