Sunteți pe pagina 1din 2

Tutoriale C++ - Structura Programului & Memoria Intern

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 sau C++) al unui program. Fiecare fiier surs conine una sau mai multe
funcii i eventual, referine ctre unul sau mai multe fiiere header.
Un fiier header este un fiier aflat n sistem sau creat de ctre programator, care conine declaraii i definiii de funcii,
variabile i clase.
Pentru a nelege mai bine noiunile ce urmeaz a fi prezentate, s considerm urmtorul exemplu:
?
1 #include <iostream>
2 using namespace std;
3
4 // primul meu program in c++
5
6 int main ()
7 {
8
cout << "Hello World!";
9
system("PAUSE"); // pune pauza | programul este impiedicat sa ajunga la final
10 return 0;
11 }
Prima linie este o directiv preprocesor. Este acea instruciune special, executat de preprocesor n prima faz a
compilrii (vezi tutorialul anterior).
Directivele preprocesor, dup cum vedei, sunt indicate de simbolul (#), care trebuie s fie primul caracter (diferit de
spaiu) dintr-o linie.
De asemenea, directivele ocup toat linia pe care se afl, nsemnnd c pe aceeai linie cu directiva nu mai putei avea
alte instruciuni.
Directiva din exemplul meu i spune preprocesorului s includ fiierul header iostream. Preprocesorul localizeaz fiierul
header indicat (parantezele unghiulare < > indic faptul c este vorba de un fiier header sistem, deci va cuta n
directoriile default/implicite) i nlocuiete directiva #include cu ntreg coninutul fiierului header indicat de directiv.
Totul se ntmpl n timpul compilrii i nu putei vedea acest proces de includere; i nici n codul surs nu va aprea.
Vom avea nevoie de iostream, deoarece n el se afl cuvinte, funcii, operatori (etc.) ce permit afiarea pe ecran.
Am spus c fiierele header pot fi create i de programator. n acest caz ele nu fac parte din fiierele header sistem i nu
vom putea folosi parantezele unghiulare pentru a le include. n schimb, folosim ghilimele:
?
1#include "headerulmeu.h"
Numele header-ului inclus ntre ghilimele indic faptul c header-ul este creat de programator, iar preprocesorul va cuta
acest fiier n directorul curent de lucru, adic unde se afl i fiierul surs (.cpp).
Header-ele vor avea extensia .h.
Dac header-ul nu se afl n directorul curent, atunci vei indica i calea ctre acesta:
?
1#include "c:\\bc\\head\\headerulmeu.h"
Motivul pentru care am folosit dublu backslash l vei afla n tutorialele urmtoare.
Linia a doua reprezint folosirea unui namespace. Un namespace este o colecie de funcii, variabile, clase,
constante definite, etc. (vom vorbi despre namespace-uri mai trziu). iostream este structurat pe namespace-uri, iar unul
din ele se numete std, n care se afl funciile, obiectele care permit afiarea pe ecran. Tot ce trebuie s tii la momentul
acesta este c trebuie s folosii namespace-ul std n fiecare program care citete informaii de la tastatur i afieaz pe
ecran (alte informaii).
Simbolul // (linia 4) desemneaz un comentariu. Comentariile sunt ignorate de ctre compilator, ele pot conine un text
explicativ, informaii lmuritoare la anumite aspecte ale problemei sau observaii. Ceea ce urmeaz dup simbolul //, pn
la sfritul liniei, este considerat comentariu.
Dac vrem s extindem comentariile pe mai multe linii, vom folosi simbolurile: /*, care delimiteaz nceputul i */, care
delimiteaz sfritul comentariului.
Introducerea comentariilor n programele surs uureaz nelegerea acestora (mai ales dac sunt programe de mii de
linii de cod).
?
1/* Acesta este
2un comentariu ce se

3extinde pe mai
4multe
5linii */
Funcia principal a programului (a oricrui program) este main. Aceasta poate fi privit ca o funcie master pentru
celelalte funcii din program. Execuia programului ncepe cu execuia acestei funcii, care la rndul ei, poate apela /
invoca alte funcii.
O funcie este un grup (sau grupare) de instruciuni, care sunt executate atunci cnd funcia este apelat (vom vedea cum
se face asta n tutorialele despre funcii).
Deci trebuie s avei o funcie main n fiecare program dac vrei s porneasc (s fie executat).
Pe linia 6, se afl antetul funciei main, care indic:
- tipul valorii returnate de funcie (int n acest caz).
- numele funciei urmat de dou paranteze (), ce indic compilatorului c este vorba de o funcie.
- ntre parantezele rotunde pot exista parametri, dar aici main nu are niciun parametru.
nceputul i sfritul funciei main este indicat de cele dou acolade {} (linia 7 i 11). Corpul funciei, delimitat de
acolade, conine trei instruciuni.
O instruciune este orice expresie valid (ex: atribuire, apelare de funcie) urmat de simbolul (;) ce indic sfritul
instruciunii. Uneori o instruciune poate fi vid (sau nul), doar (;), alteori poate aprea ca instruciune compus, privit
ca o succesiune de instruciuni simple, ncadrate ntre acoladele delimitatoare {}.
NOT: La funcii, acoladele delimiteaz corpul funciei, n niciun caz o instruciune compus. Asta nseamn c dac
avei o funcie ce conine o singur instruciune, NU putei omite acoladele!
O expresie este o structur corect sintactic, format din operanzi i operatori [ex: 8 + 4 sau (a*b) / 5 + (-7) * f(b)], unde
f(b) este o functie ce returneaza o valoare.
Linia 8 implementeaz o operaie de scriere.
Cuvntul cout (console output) este un cuvnt predefinit (n iostream) al limbajului C++, care mpreun cu operatorul <<,
afieaz pe ecran textul dintre ghilimele (un ir de caractere constant; un string). Stringurile sunt ncadrate ntre ghilimele.
La sfritul instruciunii care implementeaz operaia de scriere, apare (;).
return 0; oprete execuia funciei i returneaz valoarea (de tipul funciei) expresiei din dreapta (n acest caz
expresia este o constant, deci returneaz valoarea reprezentat de constant, adic 0).
Cine apeleaz funcia main? Rspunsul este: sistemul de operare. Acesta ateapt o valoare (exit status) de la main
dup ce aceasta i ncheie execuia. Prin convenie, valoarea returnat 0 nseam c totul a decurs OK. O alt valoare
(1, 2 etc.) nseamn c s-a petrecut ceva nedorit.
Dup ce a executat toate instruciunile, programul se oprete. Am pus system("PAUSE") ca s avei timp s vedei
rezultatul (n MinGW i CodeBlocks, nu este necesar s avei acea funcie).
n C++ putei s v structurai programul cum vrei. Exemplu:
?
1#include <iostream>
2using namespace std; int main () {
3cout << "Hello World!";
4return 0; }

Memoria Intern
Calculatorul este un sistem electronic (un ansamblu de dispozitive i circuite diverse) complex care prelucreaz datele
(informaia) introduse ntr-o form prestabilit, efectueaz diverse operaii asupra acestora i furnizeaz rezultatele
obinute.
Felul n care aceste date sunt prelucrate este descris de un program (software). Un program este un ir de instruciuni
(sau algoritm), care prelucreaz datele de intrare i ofer ca rezultat, date de ieire.
De exemplu, atunci cnd v jucai pe calculator, folosii tastele i mouse-ul. Butoanele pe care apsai reprezint datele
de intrare - informaia dat, de voi, calculatorului - Apoi programul (jocul video) prelucreaz datele introduse i furnizeaz
date de ieire sub forma de imagini afiate pe monitor (i sunetul din cti sau difuzoare).
Memoria intern (memoria RAM - Random Acces Memory) se prezint ca o succesiune (niruire) de bytes (sau octei).
Un byte are 8 bii.
Bit-ul reprezint unitatea elementar de informaie i poate avea una din valorile: 0 sau 1.
Numrul de ordine al unui byte n memorie se poate specifica printr-un cod (un numr hexazecimal), numit adres.
Ordinea n care sunt adresate (accesate) locaiile de memorie nu este impus, memoria fiind un dispozitiv cu acces
aleator la informaie (Random Acces Memory).
n memoria intern este pstrat doar informaia prelucrat (datele, i vom vedea ce sunt ele) la un moment dat.
Memoria intern are capacitate redus; accesul la informaia pstrat n aceasta este extrem de rapid, iar datele nu sunt
pstrate dup terminarea prelucrrii - dup terminarea programului - (au un caracter temporar).

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