Administratie | Alimentatie | Arta cultura | Asistenta sociala | Astronomie |
Biologie | Chimie | Comunicare | Constructii | Cosmetica |
Desen | Diverse | Drept | Economie | Engleza |
Filozofie | Fizica | Franceza | Geografie | Germana |
Informatica | Istorie | Latina | Management | Marketing |
Matematica | Mecanica | Medicina | Pedagogie | Psihologie |
Romana | Stiinte politice | Transporturi | Turism |
LIMBAJUL DE PROGRAMARE 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 aparut in anii 1970 si a fost creat de Dennis Ritchie in laboratoarele AT&T Bell. Limbajul C face parte din familia de limbaje concepute pe principiile programarii structurate, la care ideea centrala este "structureaza pentru a stapani o aplicatie". Popularitatea limbajului a crescut rapid datorita elegantei si a multiplelor posibilitati oferite programatorului (puterea si flexibilitatea unui limbaj de asamblare); ca urmare, au aparut numeroase alte implementari. De aceea, in anii '80 se impune necesitatea standardizarii acestui limbaj. In 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 fara modificari, pe orice sistem.
Limbajul C++ apare la inceputul anilor '80 si il are ca autor pe Bjarne Stroustrup. El este o varianta de limbaj C imbunatatit, mai riguroasa si mai puternica, completata cu constructiile necesare aplicarii principiilor programarii orientate pe obiecte (POO). Limbajul C++ pastreaza toate elementele limbajului C, beneficiind de eficienta si flexibilitatea acestuia. Limbajul C++ este un superset al limbajului C. Incompatibilitatile sunt minore, de aceea, modulele C pot fi incorporate in proiecte C++ cu un efort minim.
Structura
programelor C/ C++
Un program scris
in limbajul C (sau C++) este compus din unul sau mai multe fisiere
sursa. Un fisier sursa este un
fisier text care contine codul sursa (in limbajul C) al unui
program. Fiecare fisier sursa contine una sau mai multe functii si
eventual, referinte catre unul sau mai multe fisiere header .
Functii si structuri
Functia principala a unui program este numita main. Executia programului incepe cu executia acestei functii, care poate apela, la randul ei, alte functii. Toate functiile folosite in program trebuie descrise in fisierele sursa (cele scrise de catre programator), in fisiere header (functiile predefinite, existente in limbaj), sau in biblioteci de functii.
Un fisier header este un fisier aflat in sistem sau creat de catre programator, care contine declaratii si definitii de functii si variabile.
Actiunile din fiecare functie sunt codificate prin instructiuni . Exista mai multe tipuri de instructiuni, care vor fi discutate in capitolul urmator.
O instructiune este orice expresie valida (de obicei, o asignare sau un apel de functie), urmata de simbolul . In figura 2.2.b. este dat un exemplu de instructiune simpla. Uneori, ca instructiune poate apare instructiunea nula (doar ;), sau instructiunea compusa (privita ca o succesiune de instructiuni simple, incadrate intre acoladele delimitatoare
Functiile trebuie
descrise fie in fisierele sursa, fie in fisiere separate numite fisiere header,
fie in biblioteci de functii
Functia main are urmatoarea forma:
void main( )
Pentru a intelege mai bine notiunile prezentate, sa consideram un exemplu foarte simplu. Programul
urmator afiseaza pe ecran un mesaj
(mesajul Primul meu program).
Informatia de prelucrat (de intrare) este
insusi mesajul (o
Exemplu:
#include <iostream.h> // linia 1
void main // linia 2 - antetul functiei main
// linia6-sfarsitul corpului functiei
Prima linie este o directiva preprocesor (indicata de simbolul ) care determina includerea in fisierul sursa a fisierului header cu numele iostream.h. Acest headerpermite realizarea afisarii pe monitor.
Programul contine o singura functie, functia principala, numita main, al carui antet (linia 2) indica:
- tipul valorii returnate de functie (void, ceea ce inseamna ca functia nu returneaza nici o valoare)
- numele functiei (main
- lista argumentelor primite de functie, incadrata de cele 2 paranteze rotunde.
Functiile comunica intre ele prin argumente. Aceste argumente reprezinta datele de intrare ale functiei. In cazul nostru, nu avem nici un argument in acea lista, deci puteam sa scriem antetul functiei si astfel:
void main(void)
Ceea ce urmeaza dupa simbolul , pana la sfarsitul liniei, este un comentariu, care va fi ignorat de catre compilator. Comentariul poate contine un text explicativ; informatii lamuritoare la anumite aspecte ale problemei sau observatii. Daca vrem sa folosim un comentariu care cuprinde mai multe linii, vom delimita inceputul acestuia indicat prin simbolulurile , iar sfarsitul - prin (vezi liniile 3, 4). Introducerea comentariilor in programele sursa usureaza intelegerea acestora. In general, se recomanda introducerea unor comentarii dupa antetul unei functiei, pentru a preciza prelucrarile efectuate in functie, 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.
Inceputul si sfarsitul corpului functiei main sunt indicate de cele doua acoalade (linia 6).
Corpul functiei (linia 5) este format dintr-o singura instructiune, care implementeaza o operatie de scriere.
Cuvantul cout este un cuvant predefinit al limbajului C++ - console output - care desemneaza dispozitivul logic de iesire;
simbolul << este operatorul de transfer a informatiei. Folosite astfel, se deschide un canal de comunicatie a datelor catre dispozitivul de iesire, in cazul acesta, monitorul.
Dupa operator se specifica informatiile care vor fi afisate (in acest exemplu, un sir de caractere constant). Faptul ca este un sir constant de caractere este indicat de ghilimelele care il incadreaza.
La sfarsitul instructiunii care implementeaza operatia de scriere, apare
Etapele rezolvarii unei probleme cu ajutorul calculatorului
Sa detaliem in continuare etapa de implementare. Dupa analiza problemei si stabilirea algoritmului, acesta trebuie tradus (implementat) intr-un limbaj de programare.
q Scrierea (editarea) programului sursa.
Programele sursa sunt fisiere text care contin instructiuni (cu sintactica si semantica proprii limbajului utilizat). Programul (fisierul) sursa este creat cu ajutorul unuieditor de texte si va fi salvat pe disc (programele sursa C primesc, de obicei, extensia .c, iar cele C++, extensia .cpp).
Pentru a putea fi executat, programul sursa trebuie compilat si linkeditat
q Compilarea
Procesul de compilare este realizat cu ajutorul compilatorului, care translateaza codul sursa in cod obiect (cod masina), pentru ca programul sa poata fi inteles de calculator. In cazul limbajului C, in prima faza a compilarii este invocat preprocesorul. Acesta recunoaste si analizeaza mai intai o serie de instructiuni speciale, numite directive procesor. Verifica apoi codul sursa pentru a constata daca acesta respecta sintaxa si semantica limbajului. Daca exista erori, acestea sunt semnalate utilizatorului. Utilizatorul trebuie sa corecteze erorile (modificand programul sursa). Abia apoi codul sursa este translatat in cod de asamblare, iar in final, in cod masina, binar, propriu calculatorului. Acest cod binar este numit cod obiect si de obicei este memorat intr-un alt fisier, numit fisier obiect. Fisierul obiect va avea, de obicei, acelasi nume cu fisierul sursa si extensia .obj.
q Linkeditarea
Dupa ce programul sursa a fost translatat in program obiect, el este va fi supus operatiei de linkeditare. Scopul fazei de linkeditare este acela de a obtine o forma finala a programului, in vederea executiei acestuia. Linkeditorul "leaga" modulele obiect, rezolva referintele catre functiile externe si rutinele din biblioteci si produce cod executabil, memorat intr-un alt fisier, numit fisier executabil (acelasi nume, extensia .exe)
q Executia
Lansarea in executie consta in incarcarea programului executabil in memorie si startarea executiei sale.
|
|
|
Observatii:
Mediile de programare integrate (BORLANDC, TURBOC) inglobeaza editorul, compilatorul, linkeditorul si depanatorul (utilizat in situatiile in care apar erori la executie);
Daca nu se utilizeaza un mediu integrat, programatorul va apela in mod explicit (in linie de comanda) un editor de texte, compilatorul, linkeditorul. Lansarea in executie se va face tot din linie de comanda.
Extensiile specificate pentru fisierele sursa, obiect si 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 < > indica faptul ca este vorba de un fisier header sistem (predefinit). Cand procesorul intalneste aceasta linie, datorita simbolului #, o recunoaste ca fiind o directiva preprocesor, localizeaza fisierul header indicat.
Programatorul isi poate crea propriile fisiere header
caz in care acesta va fi incadrat intre '
De exemplu:
#include 'headerul_meu.h'
Numele fisierului header inclus intre ghilimele, indica faptul ca headerul_meu.h este un fisier header creat de utilizator. Preprocesorul va cauta sa localizeze acest fisier in directorul curent de lucru al utilizatorului. In cazul in care fisierul header nu se afla in directorul curent, se va indica si calea catre acesta.
In acest exemplu, pentru interpretarea corecta a caracterului backslash , a fost necesara 'dublarea' acestuia, din motive pe care le vom prezenta in paragrafeleurmatoare
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 intregi 1 numelui (constantei simbolice) TRUE, si a valorii 0 numelui simbolic FALSE. Ca urmare, inaintea compilarii propriu-zise, in programul sursa, aparitiile numelor TRUE si FALSE vor fi inlocuite cu valorile 1, respectiv 0.
Un prim exemplu de program C++:
#include <iostream.h>
void
main( )
Obs.: << este operatorul de insertie
>> este
operatorul de extractie
cin este
'console in' pentru citire de date
Unitatile lexicale, numite si lexeme (engl. token, lexeme) sunt constructiile elementare ale limbajului ('atomii' acestuia). Acestea sunt simboluri, formate din unul sau mai multe caractere, care au o anumita semnificatie in limbaj. Dupa rolul indeplinit, unitatile lexicale sunt:identificatori,cuvinte cheie,literali,separatori,operatori,comentarii si spatii
1.Identificatori
Numele date programelor sau
componentelor acestora (clase, variabile, functii etc.) se numesc
identificatori. Identificatorii se aleg de catre programator,
respectand anumite reguli.
In limbajul C++, identificatorii sunt siruri formate din litere, cifre si
caractere de subliniere ('_'), care nu pot incepe cu o cifra. Lungimea identificatorului
nu prezinta importanta, insa acesta nu poate contine spatii libere sau alte
caractere, decat cele mentionate aici.
Exemple de identificatori valabili:
viteza
v15XB7
pretDeVanzare
pret_de_vanzare
Este de preferat ca identificatorii sa aiba nume sugestive, amintim insa ca, pentru calculator, identificatorii nu au nici o alta semnificatie, deci, din acest punct de vedere, toate exemplele de identificatori date aici sunt la fel de bune.
2.Cuvinte
cheie
In
orice limbaj de programare, exista un set de cuvinte, numite cuvinte cheie, care
sunt considerate simboluri sintactice si nu pot fi folosite in program ca
identificatori. De exemplu: for, while, pentru
ca acestea sunt nume de instructiuni.
3.Literali (constante)
Literalii sunt reprezentarile in
fisierele sursa ale valorilor constante. Exemple de literali:
- caractere: 'a', 'A', '+', '$', '5';
- siruri de caractere: 'sir de caractere', 'abc$79.28#^z';
- numere intregi: 14726, -25413;
- numere reale: 12.7389, -0.05673, 2.3075E12,
-1.4237E-5;
4.Separatori
Separatorul este un caracter care
delimiteaza formele sintactice sau le separa intre ele. In limbajul C++ se folosesc urmatorii separatori: spatiul, caracterul
CR, sfarsit de linie sau ';'.
5.Comentariile
Comentariile sunt texte care pot fi
introduse in programul sursa, dar nu sunt luate in consideratie de compilator
si deci nu au efect in timpul executarii programului. Comentariile sunt utile
pentru o mai buna intelegere a programului de catre om.
In programele C++, se pot folosi doua feluri de comentarii:
a) comentarii care se pot extinde pe una sau mai multe linii
si au forma
/* <comentariu> */
b) comentarii de sfarsit de linie, care incep cu simbolul //
si continua pana la sfarsitul liniei respective, deci au forma
// <comentariu>
#include<iostream.h>
/* functia main este functia principala, cu care
incepe executarea programului */
void main( )
// sfarsitul functiei main
Observatie :comentariile
sunt absolut necesare pentru intelegerea programului. In acelasi timp, abuzul
de comentarii poate sa faca urmarirea acestuia
dificila. Este, deci, recomandabil sa se introduca in
program toate comentariile necesare pentru o buna intelegere a acestuia, dar nu
mai mult.
Exemplu de program realizat in C++
#include<iostream.h> void main()
if(s==2)
cout<<'Numarul
este prim'
else
cout<<'Numarul
nu este prim'}
Cu ajutorul acesui program se poate verifica daca un numar este prim.un numar este prim daca nu are alti divizori decat pe 1 sau pe el insusi.Primul pas este sa introducem biblioteca iostream.h care lucreaza cu siruri de caractere
Acest document nu se poate descarca
E posibil sa te intereseze alte documente despre:
|
Copyright © 2024 - Toate drepturile rezervate QReferat.com | Folositi documentele afisate ca sursa de inspiratie. Va recomandam sa nu copiati textul, ci sa compuneti propriul document pe baza informatiilor de pe site. { Home } { Contact } { Termeni si conditii } |
Documente similare:
|
ComentariiCaracterizari
|
Cauta document |