Sunteți pe pagina 1din 5

Elemente de baza ale limbajului C++

La inceputul anulor 70 a aparut limbajul C, creatia lui Dennis Ritchie si Brian Kernighan. Limbajul
C++ -creatia lui Bjarne Stroustrup- e o extensie a limbajului C care permite programarea pe obiecte.

Limbajul C a aprut n anii 1970 i a fost creat de Dennis Ritchie n laboratoarele AT&T Bell. Limbajul
C face parte din familia de limbaje concepute pe principiile programrii structurate, la care ideea central este
structureaz pentru a stpni o aplicaie. Popularitatea limbajului a crescut rapid datorit eleganei i a
multiplelor posibiliti oferite programatorului (puterea i flexibilitatea unui limbaj de asamblare); ca urmare, au
aprut numeroase alte implementri. De aceea, n anii 80 se impune necesitatea standardizrii acestui limbaj. n
perioada 1983-1990, un comitet desemnat de ANSI (American National Standards Institute) a elaborat un
compilator ANSI C, care permite scrierea unor programe care pot fi portate fr modificri, pe orice sistem.

Limbajul C++ apare la nceputul anilor 80 i l are ca autor pe Bjarne Stroustrup. El este o
variant de limbaj C mbuntit, mai riguroas i mai puternic, completat cu construciile necesare
aplicrii principiilor programrii orientate pe obiecte (POO). Limbajul C++ pstreaz toate elementele
limbajului C, beneficiind de eficiena i flexibilitatea acestuia. Limbajul C++ este un superset al
limbajului C. Incompatibilitile sunt minore, de aceea, modulele C pot fi ncorporate n proiecte C++
cu un efort minim.

Structura programelor C/ C++

Un program scris n limbajul C (sau C++) este compus din unul sau mai multe fiiere surs. Un fiier
surs este un fiier text care conine codul surs (n limbajul C) al unui program. Fiecare fiier surs conine una
sau mai multe funcii i eventual, referine ctre unul sau mai multe fiiere header .

Funcia principal a unui program este numit main. Execuia programului ncepe cu execuia acestei
funcii, care poate apela, la rndul ei, alte funcii. Toate funciile folosite n program trebuie descrise n fiierele
surs (cele scrise de ctre programator), n fiiere header (funciile predefinite, existente n limbaj), sau n
biblioteci de funcii.

Un fiier header este un fiier aflat n sistem sau creat de ctre programator, care conine declaraii i
definiii de funcii i variabile.

Aciunile din fiecare funcie sunt codificate prin instruciuni . Exist mai multe tipuri de instruciuni,
care vor fi discutate n capitolul urmtor.

O instruciune este orice expresie valid (de obicei, o asignare sau un apel de funcie), urmat de
simbolul ;. n figura 2.2.b. este dat un exemplu de instruciune simpl. Uneori, ca instruciune poate apare
instruciunea nul (doar ;), sau instruciunea compus (privit ca o succesiune de instruciuni simple, ncadrate
ntre acoladele delimitatoare {}.

Functiile treb
uie descrise fie in fisierele sursa, fie in fisiere separate numite fisiere header, fie in biblioteci de functii
Functia main are urmatoarea forma:
void main( )
{instructiuni;
}

Pentru a nelege mai bine noiunile prezentate, s considerm un exemplu foarte simplu. Programul urmtor
afieaz pe ecran un mesaj (mesajul Primul meu program). Informaia de prelucrat (de intrare) este nsui
mesajul (o constant ir), iar prelucrarea ei const n afiarea pe ecran.
Exemplu:
#include <iostream.h> // linia 1
void main() // linia 2 - antetul funciei main
{ /* linia 3 - nceputul corpului funciei, a unei intruciuni
compuse */
cout<<Primul meu program in limbajul C++; // linia 5
} // linia6-sfritul corpului
funciei

Prima linie este o directiv preprocesor (indicat de simbolul #) care determin includerea n fiierul surs a
fiierului header cu numele iostream.h. Acest header permite realizarea afirii pe monitor.

Programul conine o singur funcie, funcia principal, numit main, al crui antet (linia 2) indic:
- tipul valorii returnate de funcie (void, ceea ce nseamn c funcia nu returneaz nici o valoare)
- numele funciei (main)
- lista argumentelor primite de funcie, ncadrat de cele 2 paranteze rotunde.
Funciile comunic ntre ele prin argumente. Aceste argumente reprezint datele de intrare ale funciei. n cazul
nostru, nu avem nici un argument n acea list, deci puteam s scriem antetul funciei i astfel:
void main(void)

Ceea ce urmeaz dup simbolul //, pn la sfritul liniei, este un comentariu, care va fi ignorat de ctre
compilator. Comentariul poate conine un text explicativ; informaii lmuritoare la anumite aspecte ale problemei
sau observaii. Dac vrem s folosim un comentariu care cuprinde mai multe linii, vom delimita nceputul
acestuia indicat prin simbolulurile /*, iar sfritul - prin */ (vezi liniile 3, 4). Introducerea comentariilor n
programele surs uureaz nelegerea acestora. n general, se recomand introducerea unor comentarii dup
antetul unei funciei, pentru a preciza prelucrrile efectuate n funcie, anumite limite impuse datelor de intrare,
etc.

Cele doua paranteze se ataseaza oricarei functii. Intre ele se scriu optional anumiti parametri ( in
acest caz lipsesc)
O functie poate intoarce un rezultat. Daca nu intoarce nici un rezultat spunem ca tipul rezultatului
este void. Exista functii cu rezultat de tip real, intreg etc.

De asemenea, programul poate contine si declaratii de variabile globale - adica variabile cu care pot
lucra toate functiile care il alcatuiesc.
Instructiunile care pot aparea sunt fie expresii fie implementari ale structurilor de control ca if, for,
while etc.

nceputul i sfritul corpului funciei main sunt indicate de cele dou acoalade { (linia3) i }(linia 6).

Corpul funciei (linia 5) este format dintr-o singur instruciune, care implementeaz o operaie de scriere.

Cuvantul cout este un cuvnt predefinit al limbajului C++ - console output - care desemneaz dispozitivul
logic de iesire;

simbolul << este operatorul de transfer a informaiei. Folosite astfel, se deschide un canal de comunicaie a
datelor ctre dispozitivul de ieire, n cazul acesta, monitorul.

Dup operator se specific informaiile care vor fi afiate (n acest exemplu, un ir de caractere constant). Faptul
c este un ir constant de caractere este indicat de ghilimelele care l ncadreaz.

La sfritul instruciunii care implementeaz operaia de scriere, apare ;

Etapele rezolvrii unei probleme cu ajutorul calculatorului

S detaliem n continuare etapa de implementare. Dup analiza problemei i stabilirea algoritmului, acesta
trebuie tradus (implementat) ntr-un limbaj de programare.

Scrierea (editarea) programului surs.


Programele surs sunt fiiere text care conin instruciuni (cu sintactica i semantica proprii limbajului
utilizat). Programul (fiierul) surs este creat cu ajutorul unui editor de texte i va fi salvat pe disc
(programele surs C primesc, de obicei, extensia .c, iar cele C++, extensia .cpp).
Pentru a putea fi executat, programul surs trebuie compilat i linkeditat.

Compilarea
Procesul de compilare este realizat cu ajutorul compilatorului, care translateaz codul surs n cod obiect
(cod main), pentru ca programul s poat fi neles de calculator. n cazul limbajului C, n prima faz a
compilrii este invocat preprocesorul. Acesta recunoate i analizeaz mai nti o serie de instruciuni
speciale, numite directive procesor. Verific apoi codul surs pentru a constata dac acesta respect sintaxa
i semantica limbajului. Dac exist erori, acestea sunt semnalate utilizatorului. Utilizatorul trebuie s
corecteze erorile (modificnd programul surs). Abia apoi codul surs este translatat n cod de asamblare, iar
n final, n cod main, binar, propriu calculatorului. Acest cod binar este numit cod obiect i de obicei este
memorat ntr-un alt fiier, numit fiier obiect. Fiierul obiect va avea, de obicei, acelai nume cu fiierul
surs i extensia .obj.

Linkeditarea
Dupa ce programul surs a fost translatat n program obiect, el este va fi supus operaiei de linkeditare.
Scopul fazei de linkeditare este acela de a obine o form final a programului, n vederea execuiei
acestuia. Linkeditorul leag modulele obiect, rezolv referinele ctre funciile externe i rutinele din
biblioteci i produce cod executabil, memorat ntr-un alt fisier, numit fiier executabil (acelai nume,
extensia .exe)

Execuia
Lansarea n execuie const n ncrcarea programului executabil n memorie
i startarea execuiei sale.

Observaii:
1. Mediile de programare integrate (BORLANDC, TURBOC) nglobeaz editorul,
compilatorul, linkeditorul i depanatorul (utilizat n situaiile n care apar erori la execuie);
2. Dac nu se utilizeaz un mediu integrat, programatorul va apela n mod explicit (n linie de comand) un
editor de texte, compilatorul, linkeditorul. Lansarea n execuie se va face tot din linie de comand.
3. Extensiile specificate pentru fiierele surs, obiect i executabile sunt CPP (sau
C), OBJ respectiv EXE.

Preprocesorul

In prima faza a etapei de compilare este apelat preprocesorul C. Acesta va trata o serie de directive
speciale numite directive preprocesor pe care le gaseste in fisierul sursa. O directiva preprocesor incepe
cu simbolul #
Directivele preprocesor se folosesc in urmatoarele situatii:

1. Includerea fisierelor header in codul sursa. Exemplu: directiva include:

# include<iostream.h>
pentru citiri sau scrieri

parantezele unghiulare < > indic faptul c este vorba de un fiier header sistem (predefinit). Cnd procesorul
ntlnete aceast linie, datorit simbolului #, o recunoate ca fiind o directiv preprocesor, localizeaz
fiierul header indicat.

Programatorul isi poate crea propriile fisiere header caz in care acesta va fi incadrat intre " " . De
exemplu:
#include "headerul_meu.h"
Numele fiierului header inclus ntre ghilimele, indic faptul c headerul_meu.h este un
fiier header creat de utilizator. Preprocesorul va cuta s localizeze acest fiier n directorul curent de
lucru al utilizatorului. n cazul n care fiierul header nu se afl n directorul curent, se va indica i calea
ctre acesta.

Exemplu:

#include "c:\\bc\\head\\headerul_meu.h"

n acest exemplu, pentru interpretarea corect a caracterului backslash \, a fost necesar "dublarea" acestuia, din
motive pe care le vom prezenta n paragrafele urmatoare.

2. Asignarea unor nume simbolice pentru constante. De exemplu:


#define PI 3.14
PI este numele constantei simbolice iar 3.14 este valoarea constantei

In locurile in care in codul sursa apar numele constantelor simbolice carora li s-a asignat o valoare
printr-o directiva define in mod automat numele constantei este inlocuit prin valoarea acestora

Exemplu:
#define TRUE 1
#define FALSE 0

Tratarea acestor directive preprocesor are ca efect asignarea (atribuirea) valorii ntregi 1
numelui (constantei simbolice) TRUE, i a valorii 0 numelui simbolic FALSE. Ca urmare, naintea
compilrii propriu-zise, n programul surs, apariiile numelor TRUE i FALSE vor fi nlocuite cu
valorile 1, respectiv 0.

Un prim exemplu de program C++:

#include <iostream.h>

void main( )
{
int a; // acesta este un comentariu de sfarsit de linie - am declarat o variabila de tip intreg

cout << "Tastati un numar intreg ";


cin >> a;
cout << "Ati tastat numarul " << a ;
}

Obs.: << este operatorul de insertie


>> este operatorul de extractie
cin este "console in" - pentru citire de date

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