You are on page 1of 50

Programarea Calculatoarelor i Limbaje de Programare

Conf. dr. ing. Dana Luca Motoc Catedra de Mecanic Fin i Mecatronic Facultatea de Inginerie Mecanic

Primele dvs. programe n C++

Nu avei de ce s v temei de programarea n C++. Serios!

Ca toate limbajele de programare, nu este altceva dect o modalitate de a da unui calculator indicaii precise din punct de vedere logic. Calculatoarele nu fac dect ceea ce li se spune. Utiliznd un limbaj de programare (C++, Visual Basic, Pascal, Fortran, etc.) dai unui calculator o list de sarcini. Acesta este programul. Calculatorul are nevoie de informaii. Acestea sunt datele programului. Acestea trebuie manipulate de ctre sistem. Instruciunile care arat calculatorului ce are de fcut poart denumirea de cod de program.

Stabilii ce va face programul


Calculatorul este cel mai idiot dintre savani. Nu poate s v ghiceasc dorinele. Nu poate s fac raionamente independente. Nu putei s-i dai nici cea mai simpl comand. Trebuie s fii explicit. Ceva de genul:

Stabilii ce va face programul


1. 2.

3.

4. 5.

Scrie mesajul Introducei valoarea razei: Citete un numr de la tastatur i stocheaz-l n variabila raza. Calculeaz aria cercului utiliznd formula: aria=Pi*raza*raza Afieaz mesajul Valoarea ariei este: Afieaz valoarea variabilei aria.

Scriei echivalentele n C++

O instruciune este echivalentul n C++ a unei propoziii ca cele de anterior. Exemplul anterior: 1. Afieaz mesajul Valoarea ariei este: 2. Afieaz valoarea variabilei aria. se convertesc n urmtoarele intruciuni C++: cout<<Valoarea ariei este:; cout<<raza; cout (eng. console output)

Construcia unui program n C++

Introducerea instruciunilor programului


Utiliznd un editor de texte (ex. Microsoft Word, Notepad, etc.) urmat de salvarea fiierului surs ntr-un format txt simplu. Utiliznd un mediu integrat de dezvoltare (IDE eng. Integrated Development Environment) editor de texte & instrumente utile de programare (ex. Microsoft Visual Studio).

Construcia unui program n C++

Construcia programului (compilarea i link-editarea)

Construcia programului procesul de conversie a codului surs (instruciuni C++) ntr-o aplicaie n vederea utilizrii acesteia. Procesul se deruleaz n 2 etape:
Compilarea programului conversia instruciunilor C++ in cod main (cod obiect). OK! Link-editarea combinarea cod-ului main cu linii de cod preluate din biblioteca C++.

Construcia unui program n C++

Construcia programului (compilarea i link-editarea)

Editare Program.cpp (cod surs C++)

Compilare Program.obj

Link-editare Program.obj

Rulare Program.exe (program executabil)

Construcia unui program n C++

Construcia programului (compilarea i link-editarea)


Compilatorul de C++ determin corectitudinea programului din punct de vedere a sintaxei. In cazul apariiei unei erori se indic linia unde apare aceasta. Programul se comport corect n toate situaiile?

Construcia unui program n C++

Testarea programului

Implic rularea de mai multe ori a programului (marile companii de software au departamente specializate n acest sens). Erorile cutate n acest stadiu poart denumirea de erori de logic de programare. Acestea semnific faptul c s-a utilizat corect sintaxa programului dar programul nu se comport conform cu ceea ce s-a dorit a fi.

Construcia unui program n C++

Testarea programului

Erorile de logic de program pot fi mult mai greu detectabile comparativ cu erorile de sintax. Nu se poate furniza ntotdeauna un rspuns clar vis-a-vis de instruciunea care cauzeaz apariia erorii. Procesul de testare a unui program i de determinare a originii unei probleme poart denumirea de depanare.

Construcia unui program n C++


Cod surs C++

Revizuirea
Compilare& link-editare

Succes?

Nu

Rulare i testare

Da

Erori logice?

Nu

Ai terminat!

Recapitularea noiunilor cteva definiii tehnice

Aplicaie (en. application)


Program rulat de ctre utilizator n vederea efecturii unei operaii. Tipuri de aplicaii: procesor de texte, browser de internet, program de gestiune a bazelor de date. Cnd programul dvs. a fost scris, testat i construit a devenit o aplicaie.

Recapitularea noiunilor cteva definiii tehnice

Cod (en. code)


Serie de instruciuni i sintaxe aferente care compun un program. Ex.: cod main (succesiune de 0 i 1); cod surs (instruciunile C++) Denumirea se utilizeaz uneori pentru a diferenia informaia pasiv inclus ntr-un program (datele programului) i acea parte a programului care efectueaz operaii (codul).

Recapitularea noiunilor cteva definiii tehnice

Cod main (en. machine code)

Limbajul nativ al microprocesorului, n care fiecare instruciune de calculator const dintr-o combinaie (cod) unic format din 1 i 0. Limbajele precum C++ asigur o modalitate de a scrie programe ntr-o form mai apropiat de limba vorbit, dar suficient de precis din punct de vedere logic pentru a putea fi convertite n cod main.

Recapitularea noiunilor cteva definiii tehnice

Cod surs (en. source code)


Program scris ntr-un limbaj de nivel nalt (C++, Pascal, java, Fortran, Basic, etc.). Codul surs este compus din instruciunile specifice limbajului, instruciuni care formeaz programul dvs. Codul surs trebuie convertit n cod main nainte de a putea fi rulat efectiv pe un calculator. Codul main este compus din 1 i 0, dar este de regul reprezentat n baza hexazecimal (16). Ex.: 08 A7 C3 9E 58 6C 77 90 i chineza pare mai simpl!

Recapitularea noiunilor cteva definiii tehnice

Cod surs (continuare)

Spre deosebire de cazul anterior, codul surs C++ arat astfel:

if (salariu<salariul_minim) afiseaza_mesaj_demisie();

Recapitularea noiunilor cteva definiii tehnice

Compilator (en. compiler)

Convertorul de limbaj care preia instruciunile limbajului (codul surs) ca date de intrare i genereaz programul sub form de cod main. Acest fapt este necesar ntruct calculatorul n sine unitatea central de prelucrare a acestuia CPU nelege numai codu-ul main. Informaii stocate de un program n vederea manipulrii sau afirii. La nivel elementar informaiile sunt alctuite din cuvinte i/sau numere (dei pot fi organizate sub form de clase i obiecte).

Date (en. data)


Recapitularea noiunilor cteva definiii tehnice

Instruciune (en. statement)


Linie dintr-un program. Aceasta corespunde unei propoziii scrise ntr-o limb vorbit (englez). C++ mai accept i structuri complexe, alctuite din 1 sau mai multe instruciuni mai mici. Majoritatea instruciunilor din C++ execut o operaie, dei unele dintre ele pot executa mai multe operaii.

Recapitularea noiunilor cteva definiii tehnice

Program

Serie de intruciuni care urmeaz a fi duse la ndeplinire de un calculator folosind datele iniiale. Scrierea unui program poate necesita mult timp! Execuia acestuia se face cu viteza luminii! Utilizare la nesfrit!

Recapitularea noiunilor cteva definiii tehnice

Utilizator (en. user)


Persoan care ruleaz un program. Numele oficial al utilizatorului este de utilizator final. Dup scrierea unui program vei fi probabil i prima persoan (chiar singura) care ruleaz i testeaz programul. A nu se uita! suntei ntotdeauna i utilizator nu numai programator.

Diferene dintre limbajele de programare

Majoritatea consideraiilor anterioare se aplic limbajelor de nivel nalt, ceea ce nseamn c nu corespund ndeaproape codului main dar utilizeaz cuvinte cheie (ex. if, while). De ce sunt att de multe limbaje? Fiecare limbaj a fost creat cu un anumit scop. Basic a fost proiectat pentru a fi simplu de nvat i utilizat. Sintaxa este lejer dar n timp conduce la obiceiuri de programare proaste. Cu toate acestea Visual Basic (Microsoft) s-a dovedit a fi un instrument puternic, comod i rapid, utilizabil n vederea construciei de aplicaii pentru Windows.

Diferene dintre limbajele de programare

Pascal a fost conceptul n vederea utilizrii n medii academice pentru nsuirea unor concepte sofisticate de programare. Spre deosebire de Basic, Pascal este elaborat i plin de sintaxe complexe. Programatorii l evit datorit numeroaselor restricii care sunt impuse.

Diferene dintre C i C++


Scurt istoric al limbajului de programare C

C a fost conceput pentru scrierea sistemelor de operare. 1972 Dennis Ritchie (Bell Telephone Laboratories, Inc.) i completat ulterior de ctre Brian Kernighan. C este rezultatul combinrii a 2 limbaje de programare anterioare BCPL i B dezvoltate tot n cadrul Bell Laboratories. A fost asociat iniial cu sistemul de operare UNIX, acesta din urm fiind scris n C. 1983 ANSI (American National Standards Institute) s-a creat un comitet n vederea standardizrii limbajului.

Diferene dintre C i C++


Particulariti ale limbajului C

C este adesea denumit limbaj de programare de nivel mediu. Combin elemente ale limbajelor de nivel nalt (Pascal, Fortran) cu funcii ale limbajului de asamblare. C este un limbaj structurat. Codul surs poate fi divizat n mai multe buci care la rndul lor vor fi nserate n subprograme (sau funcii). Programul principal va fi constituit din subprograme multiple. Fiecare subprogram are propria sa logic i se constituie un program el nsui. Aceasta permite concperea de programe mari care pot fi nelese cu uurin.

Diferene dintre C i C++


Particulariti ale limbajului C

Programarea n C face din acesta un limbaj eficient. Programele n C pot fi scrise n cteva rnduri spre deosebire de alte limbaje de programare care necesit pagini ntregi pentru acelai lucru. Programele scrise n C sunt portabile. Aceasta presupune faptul c pot fi rulate (cu mici modificri) pe alte sisteme de operare (existena a mai multor compilatoare). Limbajul de programare C este puternic i flexibil. Acesta nu a fost conceput s fi citit cu uurin sau simplu pentru a fi neles. Scopul a constat n a permite programatorului s acceseze calculatorul la toate nivelele acestuia.

Diferene dintre C i C++


Cum rmne cu C++? C++ a fost creat de ctre Bjarne Stroustrup, la sfritul anilor 80. Principala diferen dintre C i C++ este c cel din urm dispune, n plus, de posibilitatea de programare orientat spre obiecte. Aceasta este o abordare adecvat mai ales n lucrul cu sisteme complexe (interfee grafice cu utilizatorul, medii de reea). Ca programator orientat spre obiecte trebuie s v punei urmtoarele ntrebri:

Care sunt principalele tipuri de date (informaii) din problema care urmeaz a fi rezolvat? Care sunt operaiile ce trebuie definite pentru fiecare tip de date? Cum interacioneaz ntre ele obiectele de date?

Java i C#?
Programarea orientat spre obiecte.

Limbaje bazate pe C. Au adoptat o mare parte din sintaxa utilizat n C/C++ dar spre deosebire de acestea nu permit accesul la adrese arbitrare de memorie. Unii le consider implementri pure ale programrii orientate spre obiecte. Nu exist diferene mari ntre Java i C#. Acestea difer ca platform i biblioteci de suport. Java creat de ctre Sun Microsystems ca limbaj independent de platform C# - creat de ctre Microsoft pentru platforma sa .NET. C++ odat nvat permite asimilarea mult mai uoar a programelor Java i C#.

Primul meu program!

Afiarea unui mesaj simplu

Exemplul 1: # include <iostream.h> int main() { cout<<Am scris primul meu program in C++!\n; return 0; }

Primul meu program!


Exemplul 1.1 (varianta modificata): # include <iostream.h> void main() { cout<<Am scris primul meu program in C++!\n; } Observaie: Tot ce este scris cu litere aldine prezint elemente standard, obligatorii.

Primul meu program!

Semnificaia instruciunilor:
Definirea unei funcii main() { } care nu prezint nici un argument i nu face nimic. Acoladele { i } sunt utilizate pentru a indica nceputul i sfritul instruciunilor cuprinse n corpul funciei main. Fiecare program C++ trebuie s prezinte o funcie main() pe care o execut cel dinti. Programul de la exemplul 1 are o singur instruciune real: cout<<Am scris primul meu program in C++!\n;

Primul meu program!

Semnificaia instruciunilor:

cout este un obiect prescurtarea de la console output (ieire la consol). Se utilizeaz mpreun cu un operator de flux orientat spre stnga (<<) n vederea afirii datelor de ieire. Nu se va grei utilizarea dac se vizualizeaz astfel:

Am scris primul meu program in C++!

cout<<Am scris primul meu program in C++!\n;

Primul meu program!

Semnificaia instruciunilor:

Fiecare instruciune C++ trebuie s fie finalizat cu ; Cum rmne cu #include?


#include<iostream.h> reprezint un exemplu de directiv de preprocesor din C++ , adic o instruciune general destinat compilatorului de C++. O directiv de forma #include <nume_fiier> ncarc declaraii i definiii care accept o parte a bibliotecii standard C++.

\n semnific trecerea la o linie nou. O alt modalitate de trecere la urmtoarea linie de afiare:

cout<<Am scris primul meu program in C++!<<endl;

unde endl este prescurtarea de la end line.

Primul meu program!

Sarcini de lucru!

Scriei, testai i rulai programul de la exemplul 1. Scriei, testai i rulai varianta modificat de program de la exemplul 1.1. Modificai programul de la exemplul 1 astfel nct instruciunea de afiare s efectueze trecerea la linie nou utiliznd opiunea endl. Rulai programul.

Scriei un program care afieaz mesajul C++ pare att de simplu! Scriei un program care afieaz numele dvs.

Mai multe ... exemple!

Afiarea pe mai multe linii

Exemplul 2 # include <iostream.h> int main() { cout<<Parc ncep s devin profesionist,<<endl; cout<<i-mi vine s dau examenul acum.<<endl; cout<<STOP! Visez prea frumos.<<endl; return 0; } Salvai programul sub denumirea de exemplul2.cpp, compilai-l i rulai-l.

Mai multe ... exemple!


Exemplul 2.1 (variant modificat) C++ permite trimiterea a mai multor elemente la consol utiliznd o singur instruciune: cout<<Parc ncep s devin profesionist,<<i-mi vine s dau examenul acum.; care n urma execuiei afieaz urmtoarele: Parc ncep s devin profesionist, i-mi vine s dau examenul acum. Exemplul 2.2 (variant modificat) Inserarea unui caracter de linie nou are ca rezultat: cout<<Parc ncep s devin profesionist,<<endl<<i-mi vine s dau examenul acum.; Parc ncep s devin profesionist, i-mi vine s dau examenul acum.

Mai multe ... exemple!

Semnificaia lui return

Returnarea unei valori este procesul de trimitere napoi a unui semnal n cazul de fa ctre sistemul de operare sau mediul de dezvoltare. return 0 valoare returnat de ctre funcia main este un cod trimis sistemului de operare prin care 0 indic reuita. Returnarea unei valori din funcia main este unul dintre acele lucruri agasante care nu par utile la prima vedere, dar care trebuie fcute pentru a v asigura de corectitudinea efecturii operaiilor.

Mai multe ... exemple!

Sarcini de lucru!

Scriei, testai i rulai programul de la exemplul 2. Scriei, testai i rulai varianta modificat de program de la exemplul 2.1. Scriei, testai i rulai varianta modificat de program de la exemplul 2.2. Modificai exemplul 2.2 astfel nct s afieze o linie vid ntre fiecare dou linii de ieire (spaiai rezultatul la 2 rnduri nu la 1 rnd sugestie: afiai 2 caractere linie nou la sfritul fiecrui ir de text!).

Stocarea datelor: variabile C++


Variabilele locaii n care se pot plasa date. Cum ajung valorile s fie inserate n variabile?
O metod const n introducerea de la consol. cin (en. console input) urmat de un operator de flux >> Ex.: cin >>variabila Ca rspuns la aceast instruciune:

Programul i suspend execuia i ateapt ca utilizatorul s introduc un numr. Utilizatorul introduce un numr i apas tasta ENTER. Numrul este acceptat i transmis n variabila predefinit. Programul i reia execuia.

Regul: n C++ este obligatorie declararea unei variabile nainte de utilizarea acesteia.

Noiuni introductive cu privire la tipurile de date

Toate datele dintr-un calculator sunt, n ultim instan numerice, i organizate ntr-unul din cele 3 formate elementare:

ntreg (ex. 5, -33, 306, etc.) Virgul mobil (ex. -8.7, 2.003, 387.1, etc.) ir de text (ex. Oficial mi-e bine)

Regul: Dac trebuie s stocai numere cu pri fracionare, utilizai o variabil n virgul mobil; n caz contrar utilizai tipul ntreg.

Noiuni introductive cu privire la tipurile de date

Date n virgul mobil


Simpl precizie float Dubl precizie double (en. double-precision floating point tr. virgul mobil cu dubl precizie) Sintaxa: double nume_variabil; double nume_variabila1, nume_variabila2, ...; Ex.: double pisica; double a, b, c, suma; Datele n dubl precizie sunt mult mai exacte dar necesit un volum mai mare de spaiu pentru a fi stocate (8 octei n loc de 4).

Alte exemple
Conversia temperaturilor Exemplul 3 # include <iostream.h> int main() { double gradC, gradK; cout<<Introduceti valoarea, in grade C, a temperaturii si apasati tasta ENTER:; cin>>gradC; gradK=gradC+273; cout<<Temperatura, in grade K, este:; return 0; } Deschidei un fiier surs nou, introducei programul i salvai-l sub numele de temperatura.cpp. Compilai programul i executai-l.

Alte exemple
Exemplul 3.1 (varianta modificata comentat) # include <iostream.h> int main() { // declararea variabilelor in virgula mobila double gradC, gradK; // introducerea unei valori de intrare pentru gradC cout<<Introduceti valoarea, in grade C, a temperaturii si apasati tasta ENTER:; cin>>gradC; // calcularea valorii gradK si afisarea acesteia gradK=gradC+273; cout<<Temperatura, in grade K, este:; return 0; }

Alte exemple

Liniile de program C++ care ncep cu o pereche de caractere slash (//) sunt comentarii i sunt ignorate de ctre compilator. Comentariile sunt opionale.
Instruciunea conine o atribuire. Se evalueaz valoarea din partea dreapt a semnului = urmat de copierea acesteia n variabila din partea stng.

gradK=gradC+273;

Chiar este nevoie s fie utilizate 2 variabile?

Alte exemple
Exemplul 3.2 (varianta optimizat) # include <iostream.h> int main() { // declararea variabilei gradC in virgula mobila double gradC; // introducerea unei valori de intrare pentru gradC cout<<Introduceti valoarea, in grade C, a temperaturii si apasati tasta ENTER:; cin>>gradC; // conversia temperaturii gradC cout<<Temperatura, in grade K, este:<<gradC+273; return 0; }

Alte exemple

Sesizai un model care se repet?


Declararea variabilelor. Preluarea datelor de intrare de la utilizator. Efectuarea calculelor i afiarea rezultatelor.

Care sunt numele de variabile permise? Rspuns: oricare cu condiia de a se respecta urmtoarele reguli:

Primul caracter trebuie s fie o liter nu poate fi un numr. Se poate utiliza _ dar C++ utilizeaz acest semn n cadrul bibliotecii sale. Restul numelui poate fi format din litere, numere sau liniue de subliniere (_). A se evita utilizarea cuvintelor care au deja o semnificaie special, predefinit n C++.

Alte exemple
Exemplul 4 Care dintre cuvintele din lista urmtoare sunt nume corecte de variabile n C++ i care nu? a x x2 Eroilor29 Student Chiar?? 17Vlad_Tepes main main4

Alte exemple
Exemplul 5 (ridicarea unui numr la ptrat) # include <iostream.h> int main() { // declararea variabilei n ca variabila in virgula mobila double n; // introducerea unei valori de intrare pentru n cout<<Introduceti un numar si apasati apoi tasta ENTER:; cin>>n; // efectuarea calculului i afiarea valorii de ieire cout<<Patratul numarului este:<<n*n; return 0; } Salvai sub denumirea de patrat.cpp.

Alte exemple

Sarcini de lucru!

Rescriei programul de la exemplul 3 astfel nct s execute conversia invers: se introduce o valoare n gradK (Kelvin) i se convertete n gradC (Celsius). Scriei programul de conversie din Kelvin n Celsius utiliznd o singur variabil gradK. Varianta este o optimizare a exerciiului precedent. Scriei un program care s efectueze transformarea gradelor Celsius in Fahrenheit gradF=(gradC*1.8)+32. Cum arat varianta optimizat? Scriei un program care s realizeze conversia grad Fahrenheit in grad Celsius. Cum arat varianta optimizat?

Alte exemple

Sarcini de lucru!

Scriei un program care introduce o valoare ntr-o variabil n i afieaz cubul acesteia (n*n*n). Rescriei exemplul patrat.cpp utiliznd numele de variabila numar in loc de n. Scriei un program care s efectueze urmtoarea nmulire:
x=y*2

Ajunge! Ce mult avem de lucru!

You might also like