Sunteți pe pagina 1din 50

Programarea

Calculatoarelor i
Limbaje de
Programare

Conf. dr. ing. Dana Luca Motoc

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

Link-editare

Rulare

Program.obj

Program.obj

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.

Date (en. data)

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).

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.

gradK=gradC+273;

Instruciunea conine o atribuire. Se evalueaz valoarea


din partea dreapt a semnului = urmat de copierea
acesteia n variabila din partea stng.

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!

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