You are on page 1of 5

MINISTERUL EDUCAIEI, CERCETRII, TINERETULUI I SPORTULUI

PROIECT
- Pentru disciplin ! In"#r$ tic% -

Ele&! Di c#nu M rin cl s ! I' pr#"es#r c##rd#n t#r!

An (c#l r )*+,-)*+-

Introducere in Limbajul C++++


Limbajul C++ este un limbaj de programare universal, caracterizat printr-o exprimare concisa, un control modern al fluxului executiei, structuri de date, si un bogat set de operatori. Limbajul C++ nu este un limbaj de nivel foarte inalt si nu este specializat pentru un anumit domeniu de aplicatii. Absenta restrictiilor si generalitatea sa il fac un limbaj mai convenabil si mai eficient decit multe alte limbaje mai puternice. Limbajul C++ permite scrierea de programe bine structurate, datorita constructiilor sale de control al fluxului grupari de instructiuni, luari de decizii !if", cicluri cu testul de terminare inaintea ciclului !#$ile, for" sau dupa ciclu !do" si selectia unui caz dintr-o multime de cazuri !s#itc$". Limbajul C++ permite lucrul cu pointeri si are o aritmetica de adrese puternica. Limbajul C++ nu are operatii care prelucreaza direct obiectele compuse cum sint sirurile de caractere, multimile, listele sau masivele, considerate fiecare ca o entitate. Limbajul C++ nu prezinta facilitati de alocare a memoriei altele decit definitia statica sau disciplina de stiva relativa la variabilele locale ale functiilor. %n sfirsit, Limbajul C++ nu are facilitati de intrare-iesire si nici metode directe de acces la fisiere. &oate aceste mecanisme de nivel inalt sint realizate prin functii explicite. 'esi Limbajul C++ este, asadar, un limbaj de nivel relativ scazut, el este un limbaj agreabil, expresiv si elastic, care se preteaza la o gama larga de programe. C este un limbaj restrins si se invata relativ usor, iar subtilitatile se retin pe masura ce experienta in programare creste. Primele programe %n aceasta sectiune sint prezentate si explicate patru programe cu scopul de a asigura un suport de baza pentru prezentarile din capitolele urmatoare. (rin traditie primul program C este un mic exemplu din lucrarea devenita clasica ) &$e C programming language, de *rian + ,ernig$am si 'ennis - .itc$ie.

#include main() { printf("Salutare lume !\n"); return 0; }

Acest program afiseaza un mesaj de salut. (rima linie indica faptul ca se folosesc functii de intrare / iesire, si descrierea modului de utilizare !numele, tipul argumentelor, tipul valorii returnate etc" a acestora se afla in fisierul cu numele stdio.$ .A doua linie declara functia main care va contine instructiunile programului. %n acest caz singura instructiune este un apel al functiei printf care afiseaza un mesaj la terminal. -esajul este dat intre g$ilimele si se termina cu un caracter special ne#-line !01n0". %nstructiunea return preda controlul sistemului de operare la terminarea programului si comunica acestuia codul 2 pentru terminare. (rin conventie aceasta valoare semnifica terminarea normala a programului - adica nu au aparut erori in prelucrarea datelor. Corpul functiei main apare intre acolade. Al doilea program asteapta de la terminal introducerea unor numere intregi nenule si determina suma lor. %n momentul in care se introduce o valoare zero, programul afiseaza suma calculata.
#include main() { int s,n; printf("Salutare lume !\n"); s = 0; do { scanf(" %d",&n); s = n; } !"ile (n!=0); printf(" %d\n",s); return 0; }

%n cadrul functiei main se declara doua variabile s si n care vor memora valori intregi. 3ariabila s !care va pastra suma numerelor introduse" este initializata cu valoarea 2. %n continuare se repeta o secventa de doua instructiuni, prima fiind o operatie de intrare si a doua o adunare. (rimul argument al functiei scanf - formatul de introducere 45d4 - indica faptul ca se asteapta introducerea unei valori intregi in format zecimal de la terminal !consola". Al doilea argument indica unde se va depune in memorie

valoarea citita6 de aceea este necesar sa se precizeze adresa variabilei n !cu ajutorul operatorului 7". %n a doua instructiune la valoarea variabilei s se aduna valoarea variabilei n. 8peratorul +9 are semnificatia aduna la. Aceasta secventa se repeta !do" cit timp !#$ile" valoarea introdusa !n" este nenula. 8peratorul :9 are semnificatia diferit de. %n final functia printf afiseaza pe terminal valoarea variabilei s in format zecimal. Al treilea program asteapta de la terminal introducerea unei valori naturale n, dupa care mai asteapta introducerea a n valori reale !dubla precizie" a2, a;, ..., an;. %n continuare se parcurge aceasta lista si se determina produsul valorilor strict pozitive. %n final programul afiseaza produsul calculat.
#include main() { int n,i; dou#le a$%00&, p; scanf("%d",&n); for (i=0; i scanf("%lf",&a$i&); p = %; for (i=0; i if (a$i&'0) p (= a$i&; printf("%lf\n",p); return 0; }

%n cadrul functiei main se declara doua variabile n si i care vor memora valori intregi. 3ariabila n pastreaza numarul de valori reale din lista a. <e declara de asemenea un tablou unidimensional a care va memora ;22 de valori de tip real !dubla precizie", si o variabila p care va memora produsul cerut. <e citeste de la terminal o valoare n. %n continuare se introduc valorile reale ai !i 9 2, ;, ..., n-;". =ormatul de introducere 45lf4 indica faptul ca se asteapta introducerea unei valori reale de la terminal, care va fi depusa la locatia de memorie asociata variabilei ai. %n locul constructiei 7a>i? se poate folosi forma ec$ivalenta a+i. (entru a introduce toate valorile ai se efectueaza un ciclu for, in cadrul caruia variabila i !care controleaza ciclul" ia toate valorile intre 2 !inclusiv" si n !exclusiv" cu pasul ;. &recerea la urmatoarea valoare a variabilei i se face cu ajutorul operatorului ++. %n continuare variabila p, care va memora produsul valorilor cerute, se initializeaza cu ;. =iecare valoare aieste verificata !instructiunea if" daca este strict

pozitiva si in caz afirmativ este inmultita cu valoarea p. 8peratorul @9 are semnificatia inmulteste cu. Al patrulea program este o ilustrare a unor probleme legate de capacitatea reprezentarilor valorilor de tip intreg si virgula mobila.
#include main() { s"ort ),i; float a,#,c,u,*,!; i=+,0; )=i(i; printf("%"d\n",)); a=%+-,./01; #=%+-,./02; c=a(a3#(#; u=a(a; *=#(#; !=u3*; printf("%f %f\n",c,!); if (c==!) return 0; else return %; }

3ariabila A, care ar trebui sa memoreze valoarea BCD22, are tipul intreg scurt !s$ort", pentru care domeniul de valori este restrins la )EFCDG H EFCDC. Astfel ca valoarea ;;;2222;22222222!F" !in zecimal BCD22", in reprezentare intreaga cu semn este de fapt )CIED. Al doilea set de operatii necesita o analiza mai atenta6 explicatiile sint valabile pentru programe care ruleaza pe ar$itecturi %ntel. 3ariabila c, care ar trebui sa memoreze valoarea FJD;EBC !rezultatul corect", va avea valoarea FJD;EBD, deoarece tipul float are rezervate pentru mantisa doar FJ de cifre binare. .ezultatul este foarte apropiat de cel corect deoarece rezultatele intermediare se pastreaza in registrii coprocesorului matematic cu precizie maxima. Abia la memorare se efectueaza trunc$ierea, de unde rezulta valoarea afisata. Cu totul altfel stau lucrurile in cazul celui de al treilea set de operatii. Aici rezultatele intermediare sint memorate de fiecare data cu trunc$iere in variabile de tip float. %n final se calculeaza si diferenta dintre cele doua valori trunc$iate, de unde rezulta valoarea ;DCCCF;D. %nainte de terminare se verifica daca valorile c si # sint egale. %n caz afirmativ se comunica sistemului de operare un cod 2 !terminare normala". %n caz contrar se comunica un cod ; !terminare anormala". .ulati acest program pe diferite sisteme de calcul si observati care este rezultatul.

You might also like