Documente Academic
Documente Profesional
Documente Cultură
Ca toate limbajele de
programare, nu este altceva decat o modalitate de a da unui calculator indicatii precise din
punct de vedere logic. C++ poate fi oricat de complicat doriti, dar cel mai simplu mod de a
incepe sa-l invatati este de a-l folosi pentru rezolvarea unor probleme de programare
fundamentale.
Programarea nu prea seamana cu nici o alta activitate pe care ati desfasurat-o. In esenta, nu
faceti decat sa dati instructiuni, dar intr-o maniera logica, sistematica.
Calculatoarele nu fac decat ceea ce li se spune. Este cea mai importanta regula , mai ales daca
sunteti incepator in programare. Folosind un limbaj de programare precum C++, dati unui
calculator o lista cu lucruri de facut ; aceasta reprezinta programul.
Un calculator are, desigur, nevoie de informatii ; aceastea sunt datele programului. Dar
sistemul trebuie sa stie si cum sa manipuleze datele respective. Instructiunile care arata
calculatorului ce are de facut ( din motive despre care vom discuta ulterior ) poarte numele de
cod de program.
Definitii tehnice
Aplicatie
In esenta, inseamna acelasi lucru cu program, dar din punctul de vedere al utilizatorului. O
aplicatie este un program pe care il ruleaza un utilizator pentru a efectua o operatie.
Cod
Este un alt sinonim pentru program, dar privit din perspectiva programatorului. "Codul"
reprezinta seria de instructiuni si sintaxa aferenta care compun un program ; aceasta poate
face referire la codul masina sau la codul sursa.
Cod masina
Cod sursa
Este un program scris intr-un limbaj de nivel inalt, precum C++. Codul sursa este compus din
instructiunile C++ care formeaza programul. Codul sursa trebuie convertit in cod masina
inainte de a putea fi rulat efectiv pe un calculator.
Codul masina, este compus din 1 si 0, dar este, de regula, reprezentat in cod hexazecimal
( baza 16 ) . Astfel, codul masina se prezinta , de obicei, astfel:
08 A7 C 3 9 E 58 6C 77 90
Nu e prea clar ce anume face,nu-i asa? Daca nu cautati toate codurile de instructiuni, un
asemenea program este de neinteles - ceea ce reprezinta motivul pentru care foarte putini
programatori folosesc, in prezent, codul masina pentru a scrie programe. Print contrast, codul
sursa C++ arata astfel :
if ( salariu < 0 )
afiseaza_mesaj_eroare ( ) ;
Compilator
Este convertorul de limbaj care preia instructiunile C++ ( Codul sursa C++ ) ca date de intrare
si genereaza programul sub forma de cod masina. Acest fapt este necesar intrucat calculatorul
in sine - unitatea sa centrala de prelucrare ( CPU ) - intelege numai codul masina.
Date
Instructiune
De regula, este o linie dintr-un program C++. In linii mari, o instructiune in C++ corespunde
unei propozitii scrise intr-o limba vorbita, de exemplu in engleza. C++ mai accepta si structuri
complexe, alcatuite dintr-una sau din mai multe instructiuni mai mici ;
Program
Utilizator
Este persoana care ruleaza un program, adica persoana care foloseste calculator pentru a face
o operatie utila, ca de exemplu editarea unui fisier de text, citirea mesajelor de posta
electronica, explorarea Internetului sau scrierea unui cec. Numele oficial al utilizatorului este
utilizator final.
Scrierea unui program reprezinta, de fapt, primul pas in crearea unei aplicatii.
Testarea programului
Dupa ce ati reusit sa construiti un program, trebuie sa-l rulat de cateva ori pentru a va
convinge ca face exact ceea ce doriti.
Daca programul se executa corect, ati terminat. Dar, daca prezinta erori de logica de program,
trebuie sa determinati sursa erorii, sa reveniti si sa operati modificarile in codul sursa C++,
dupa care sa reconstruiti programul.
Exemplu cod sursa
int main ( ) {
cout << " Bla bla bla, bla bla bla " ;
return 0 ;
}
Pentru a construi programul, este suficient sa apasati tasta IDE-ului asociata cu compilarea.
Credeti sau nu, acest program simplu contine o singura instructiune reala. Sintaxa de mai jos
prezinta elementele standard, obligatorii. Pentru moment, nu va intereseaza de ce sunt
necesare ; folositi-le si atat. Intre acolade ( {} ) inserati liniile efective de program - care, in
acest caz, este alcatuit dintr-o singura instructiune.
#include < iostream >
using namespace std ;
int main ( ) {
Introduceti_instructiunile_aici!
return 0 ;
}
Acest program are o singura instructiune reala ( pe care o inserati in a cincea linie a
programului de mai sus ) .
cout << " Bla bla bla, bla bla bla " ;
Ce este cout ? Este un obiect - concept despre care vom discuta mult mai mult in tutorialele
urmatoare. Intre timp, tot ceea ce trebuie sa stiti este:
cout este prescurtarea de la "console output" ( iesire la consola ) . Cu alte cuvinte, reprezinta
ecranul calculatorului. Cand scrieti ceva pentru ecran, textul se afiseaza exact asa cum va
asteptati !
In C++, datele de iesire se afiseaza folosind cout si un operator de "flux" orientat spre stanga (
<< ) , care indica trecerea datelor de la o valoare la consola. Nu veti folosi niciodata cout
gresit daca il vizualizati in acest mod.
Din motive tehnice, cout trebuie sa apara intotdeauna in partea stanga ori de cate ori este
folosit. In acest caz, datele se scurg spre stanga. Folositi "sagetile" orientate spre stanga, care
reprezinta, de fapt, doua semne "mai mic" ( << ) combinate.
In C++, textul trimis pe ecran nu trece in mod automat la urmatoarea linie fizica.Trebuie sa
afisati un caracter linie noua ( newline ) pentru aceasta. Daca nu afisati un caracter linie
noua ,intregul text este afisat pe aceeasi linie fizica.
Exceptie : daca nu afisati un caracter linie noua, textul poate trece in mod automat pe randul
urmator atunci cand linia fizica se umple,dar aceasta poate duce la rezultate inestetice.
O modalitate de afisare a unui caracter linie noua consta in folosirea constantei predefinite
endl. Ca si cout , endl face parte din spatiul de nume std :
std: :cout << " Ana are mere. " << std : : endl ;
O alta modalitate de a insera un caracter linie noua consta in inserarea caraterelor \n.Aceasta
este o secventa escape, pe care C++ o interpreteaza ca avand o semnificatie speciala, in loc sa
o citeasca literal. Instructiunea urmatoare are acelasi efect ca si exemplul de mai sus:
cout << " Ana are mere.\n " ;
Programul din acest tutorial ( exemplul de mai jos ) afiseaza mesaje pe mai multe linii. Daca
introduceti manual programele , nu uitati sa folositi majuscule si minuscule exact asa cum se
vede in aceste tutoriale - ( desi este posibila si modificarea marimii literelor incluse intre
ghilimele, fara a afecta programul ).
#include <iostream>
using namespace std ;
int main ( ) {
cout << "Bun venit pe Linkmania! " << endl ;
cout << "Nu abuzati de sondaje, de imagini in posturi, sau de
termeni de genul "lol" " << endl ;
cout << "Nu utilizati semnaturi prea mari, atat pe latime cat
mai ales pe inaltime. " << endl ;
return 0 ;
In acest mod, puteti afisa orice numar de articole separate, desi, din nou, acestea nu vor trece
pe urmatoarea linie fizica fara un caracter
linie noua ( endl ) .Puteti trimite mai multe elemente la consola cu o singura instructiune :
cout << "Bun venit" << "pe" << "Linkmania !" ;
Acest exemplu ca si celalalt,returneaza o valoare. " Returnarea unei valori " este procesul de
trimitere inapoi a unui semnal - in acest caz, catre sistemul de operare sau mediul de
dezvoltare.O valoare se returneaza folosind instructiunea return sub forma :
return 0 ;
Valoarea returnata de functia main este un cod trimis sistemului de operare prin care 0 indica
reusita. Toate exemplele din aceste tutoriale returneaza valoarea 0.
Observatie : Valorile returnate sunt mai utile pentru alte categorii de functii, despre care veti
invata in tutorialele urmatoare. Returnarea unei valori din functia main est unul dintre acele
lucruri agasante care nu par utile la prima vedere, dar care, pur si simplu, trebuie sa le faceti. (
Retineti : unele programe opteaza pentru a returna valori diferite de 0, pentru a indica
existenta anumitor probleme ). Pentru moment, returnarea valorii 0 din functia main este unul
din acele lucruri care trebuie puse in program pentru a va asigura ca este corect.
Tot ce se afla in afara ghilimelelor face parte din sintaxa C++. In interiorul ghilimelelor se
gasesc date.De fapt,toate datele stocate intr-un calculator sunt, in esenta, numerice.Dar, in
functie de modul de utilizare, acestea pot fi interpretate sub forma unui sir de caractere
tiparibile.Ceea ce se intampla si in cazul nostru.
Poate ati mai auzit de coduri ASCII.Caracterele "N" , "e" , "v" , "e" ,etc. sunt stocate in octeti
individuali reprezentand fiecare un cod numeric care corespunde unui caracter ce se poate
afisa.
Vom discuta mult mai multe despre acest tip de date in urmatoarele tutoriale.Ceea ce trebuie
retinut este faptul ca textele incluse intre ghilimele sunt considerate date nu, nu
comenzi.Aceasta categorie de date este considerata a fi un sir ( in limba engleza: string ) de
text sau, mai frecvent numit, un sir
Daca ar realiza numai afisarea unor mesaje stupide , C++ n-ar fi foarte util.Ideea este, de
regula , sa se obtina date noi dintr-o sursa - ca de exemplu, date introduse de utilizatorul final
- si sa se manipuleze aceste date intr-o maniera interesanta.
Asemenea operatii necesita variabile : acestea sunt locatii in care puteti plasa datele. Puteti
asimila variabilele unor casete magice in care se gasesc valori. Pe masura evolutiei sale,
programul poate citi, scrie sau modifica aceste casete dupa necesitati. In exemplul urmator ,
vom folosi variabile numite ctemp si ftemp , in care se vor stoca valori de temperatura
Celsius , respectiv Fahrenheit.
Dar, inainte de a putea folosi o variabila in C++, trebuie sa o declarati. Aceasta este o regula
imperativa si diferentiaza C++ de limbajul Basic, care este neglijent in aceasta privinta si nu
necesita o declarare. ( Generatii intregi de programatori in Basic s-au dat cu capul de
calculator descoperind erori derivate din lejeritatea pe care o dovedeste limbajul in ceea ce
priveste variabilele. )
Este un aspect suficient de important pentru a fi enuntat din nou, deci il vom transforma in
regula de baza :
Pentru a declara o variabila, trebuie mai intai sa stiti ce tip de date sa folositi.Acesta este un
concept esential atat in C++ , cat si in majoritatea celorlalte limbaje.
O variabila este ceva care poate fi considerat o "cutie magica " in care puteti plasa informatii -
sau mai degraba date.Dar ce fel de date?
Toate datele dintr-un calculator sunt , in ultima instanta, numerice, dar sunt organizate intr-
unul dintre cele trei formate elementare : intreg, in virgula mobila si sir de text.
Exista numeroase diferente intre formatul in virgula mobila si cel intreg.Dar, pentru
programele de inceput, regula este simpla:
* Daca trebuie sa stocati numere cu parti fractionare, folositi o variabila in virgula mobila,
in caz contrar, folositi tipul intreg.
Principalul tip de date in virgula mobila in C++ este double.Pare un nume ciudat ; este
prescurtarea de la "double-precision floating point " ( virgula mobila cu dubla precizie ). Mai
exista si un tip cu simpla precizie ( float ), dar se utilizeaza rareori. Cand aveti nevoie de
capacitatea de a retine portiuni fractionare, veti obtine rezultate mai bune - si mai putine
mesaje de eroare - daca folositi double.
O declaratie double are sintaxa urmatoare. Retineti ca aceasta instructiune se incheie cu punct
si virgula ( ; ), la fel ca majoritatea categoriilor de instructiuni.
double nume_variabila ;
Instructiunea urmatoare , care foloseste sintaxa mai complexa, declara patru variabile double
numite b, c, d, si amount :
double b, c, d, amount ;
Dubla precizie este asemanatoare cu simpla precizie, numai ca este mai buna decat aceasta.
Dubla precizie accepta o gama mai larga de valori, cu o mai mare precizie. (Da, este posibila
pierderea de precizie in cazul variabilelor in virgula mobila ; acesta este un subiect la care
vom reveni in tutorialele urmatoare. )
Deoarece dubla precizie este mai exacta, tipul de date in virgula mobila este preferat in C++ ;
inainte de a executa calcule in virgula mobila C++ converteste toate valorile in formatul dubla
precizie, daca acestea nu se gasesc deja in acest format. De asemenea , C++ stocheaza
constante in virgula mobila in format in dubla precizie, daca nu se specifica altceva ( de
exemplu, folosind notatia 12.5F in loc de 12.5 ).
Dubla precizie prezinta insa un dezavantaj : are nevoie de un volum mai mare de spatiu - mai
concret, de opt octeti in loc de patru (in mediile de tip PC). Acesta nu este un factor
destabilizator nici macar pentru programele simple, deoarece coprocesoarele matematice
accepta, in mod direct, operatiile pe opt octeti.
Aspectul trebuie avut in vedere numai cand pe disc trebuie stocate cantitati mari de valori in
virgula mobila. Atunci si numai atunci se va lua in considerare utilizarea tipului cu simpla
precizie float.
Conversia temperaturilor
Iata formula de conversie. Cand este utilizat la combinarea a doua valori, asteriscul ( * )
inseamna "inmultit cu".
Fahrenheit = ( Celsius * 1,8 ) + 32
Acum, un program util nu calculeaza o singura valoare de temperatura si atata tot. Daca am fi
avut nevoie numai de aceasta am fi folosit aplicatia "Calculator" din Windows ! Nu, un
program cu adevarat util preia orice valoare introdusa ca temperatura in grade Celsius si o
converteste. Pentru aceasta este nevoie de unele caracteristici noi, cum ar fi :
Iata programul complet. Deschideti un fisier sursa nou, introduceti codul de mai jos si salvati-
l sub numele convert . cpp. Apoi compilati-l si executati-l.
#include <iostream>
using namespace std ;
int main ( ) {
double ctemp, ftemp ;
return 0 ;
Programele sunt mai usor de urmarit daca se adauga comentarii, care in C++ se noteaza prin
perechi de caractere slash ( // ). Comentariile sunt ignorate de compilatorul de C++ ( adica nu
au nici un efect asupra comportarii programului ) , dar sunt utile pentru utilizatori. Iata
versiunea "comentata" :
#include <iostream>
using namespace std ;
int main ( ) {
return 0 ;
}
Aceasta versiune comentata, desi este mai usor de citit pentru om, necesita mai multa munca
la introducere. Parcurgand exemplele din aceste tutoriale, puteti omite intotdeauna
comentariile sau puteti opta pentru a le adauga ulterior. Nu uitati urmatoarea regula de baza
pentru comentarii:
* Liniile de program C++ care incep cu o pereche de caractere slash ( // ) sunt comentarii si
sunt ignorate de catre compilatorul de C++ pana la sfarsitul liniei.
Adaugarea comentariilor este intotdeauna optionala, dar este o idee buna. Mai ales daca vreo
fiinta umana (inclusiv dumneavoastra ) isi va arunca vreodata privirea pe respectivul program
C++.
Prima instructiune din cadrul functiei main declara variabilele ctemp si ftemp (ambele de tipul
double ). Aceste variabile stocheaza temperaturile exprimate in grade Celsius, respectiv
Fahrenheit.
double ctemp , ftemp
Astfel, avem doua locatii unde putem stoca numere. Deoarece ele sunt de tipul double , pot
contine parti fractionare. Nu uitati ca double simbolizeaza "valori in virgula mobila si dubla
precizie ".
Observatie : Desi numarul introdus in acest caz a fost "10" , este stocat sub forma 10.0. Din
punct de vedere pur matematic, 10 si 10.0 sunt valori echivalente, dar in C++ notatia "10.0"
indica faptul ca valoarea este stocata in formatul in virgula mobila, nu in formatul intreg. Se
va vedea ca acest fapt are consecinte importante , asa cum vom explica in tutorialele
urmatoare.
Instructiunea care urmeaza executa conversia efectiva, folosind valoarea stocata in ctemp
pentru a calcula valoarea variabilei ftemp :
ftemp = ( ctemp * 1.8 ) + 32
Aceasta instructiune contine o atribuire ; valoarea din partea dreapta a semnului egal ( = ) este
evaluata si apoi copiata in variabila din partea stanga. Aceasta este una dintre cele mai
comune categorii de instructiuni C++.
Din nou, presupunand ca valoarea "10" a fost introdusa de utilizator, diagrama urmatoare
indica modul de trecere a datelor prin program :
Daca examinati cu atentie ultimul exemplu, va puteti pune intrebarea daca este cu adevarat
necesar sa declarati doua variabile in loc de una.
De fapt, nu este necesar. Bine ati venit in lumea optimizarii. Versiunea urmatoare
imbunatateste prima versiune a programuului, debarasandu-se de ftemp si combinand etapele
de conversie si afisare a datelor de iesire. Procedeul nu este intotdeauna functional - intr-un
program mai complex s-ar putea sa fie necesara memorarea valorii Fahrenheit - dar aici
este numai bun.
#include <iostream>
using namespace std ;
int main ( ) {
double ctemp ;
cout << " Temperatura in grade Fahrenheit este : " << ( ctemp *
1.8 ) +32 ;
return 0 ;
Sesizati deja un model care se repeta? In cele mai simple programe, modelul este urmatorul :
1. Declararea variabilelor.
2. Preluarea datelor de intrare de la utilizator ( dupa afisarea unui mesaj de solicitare )
3. Efectuarea calculelor si afisarea rezultatelor
De exemplu, programul urmator efectueaza o alta operatie, dar ar trebui sa va fie familiar.
Programul cere un numar si apoi afiseaza patratul acestuia ( numarul inmultit cu el insusi ).
Instructiunile sunt asemanatoare celor din exemplul precedent ; singurele aspecte care difera
sunt numele variabilei ( n ) si forumula de calcul folosita ( n* n ).
#include <iostream>
using namespace std ;
int main ( ) {
double n ;
return 0 ;
1. Primul caracter trebuie sa fie o litera - nu poate fi numar. Tehnic vorbind , primul caracter
poate fi si o liniuta de subliniere( _ ), dar biblioteca C++ foloseste intern aceasta conventie de
nume, deci cel mai bine este sa evitati sa folositi un nume astfel.
2. Restul numelui poate fi format din litere, numere sau liniute de subliniere ( _ ).
Nu este necesar sa memorati toate cuvintele-cheie din C++, desi multe carti de programare va
sugereaza sa procedati astfel ! Nu trebuie decat sa stiti ca, daca incercati sa folositi un nume
care intra in conflict cu unul dintre cuvintele-cheie din C++, compilatorul va va raspunde cu
un mesaj care se refera la un conflict cu un cuvant-cheie sau la o eroare de sintaxa. In acest
caz , incercati un alt nume.
Etichete: programare-c++
Responses