Programareacalculatoarelor
Universitatea Constantin Brncui din Trgu-JiuFacultatea de Inginerie
Departamentul de Automatic, Energie i Mediu
Lect.dr. Adrian Runceanu
Curs 3 Elemente introductive ale
limbajului C++
24.10.2014 Curs - Programarea calculatoarelor 2
3. Elemente introductive ale limbajuluiC++
3.1. Programarea i limbaje de programare3.2. Limbajul C3.3. Elemente de baz ale limbajului C++
3.3.1. Tipuri de date3.3.2. Modificatorii de tip3.3.3. Constante3.3.4. Variabile
3.4. Operatorii limbajului C++3.4.1. Operatori aritmetici3.4.2. Operatori relationali3.4.3. Operatori de egalitate
24.10.2014 Curs - Programarea calculatoarelor 3
3.1. Programarea i limbaje de programare
Prin programare se nelege n mod generictranspunerea unor operaii repetitive, asupra unui set dedate, ntr-un limbaj inteligibil de ctre un sistem de calculcare urmeaz ulterior s le execute.Acest lucru este realizat n dou etape:
1. etap n care este implicat omul i anume cea detrecere de la problema real la transpunerea ntr-unlimbaj de programare.
2. o a doua etap, automat, care transpune codul surs(niruirea de instruciuni specifice limbajului respectiv)ntr-un cod direct executabil (inteligibil sistemului decalcul) lucru de care se ocup programe specializatenumite compilatoare.24.10.2014 Curs - Programarea calculatoarelor 4
3.1. Programarea i limbaje de programare
Rolul programrii este ca de fiecare datcnd o anumit operaiune sau o suit deoperaiuni repetitive care se aplic asupra unorseturi de date mereu diferite s fie scris unprogram care s:
1. cear setul de date de intrare (cele care trebuies fie prelucrate)
2. s execute asupra lor suita standard deoperaiuni
3. i s livreze datele de ieire (adic rezultatele)
24.10.2014 Curs - Programarea calculatoarelor 5
3. Elemente introductive ale limbajuluiC++
3.1. Programarea i limbaje de programare3.2. Limbajul C3.3. Elemente de baz ale limbajului C++
3.3.1. Tipuri de date3.3.2. Modificatorii de tip3.3.2. Constante3.3.2. Variabile
3.4. Operatorii limbajului C++3.4.1. Operatori aritmetici3.4.2. Operatori relationali3.4.3. Operatori de egalitate
24.10.2014 Curs - Programarea calculatoarelor 6
3.2. Limbajul C
Limbajele de programare de nivel mediu au fostserios dezvoltate pe la mijlocul anilor '50.
La ora actual se estimeaz c exist peste 2000 delimbaje de programare, diferenele ntre ele fiind legaten principal de stilul de programare.
Limbajul C, dezvoltat n 1972 de Dennis M. Ritchie*la Laboratoarele AT&T Bell, este primul limbaj pentrucrearea de sisteme de operare.
*Dennis M. Ritchie a decedat pe 14.10.2011 (la varsta de70 de ani)!
24.10.2014 Curs - Programarea calculatoarelor 7
3.2. Limbajul C
Numele limbajului provine din faptul c esterezultatul mbuntirii limbajului B, folosit n scriereasistemului de operare UNIX pentru DEC PDP7.
Prima documentaie despre acest limbaj a fost "TheC Programing Language", scris de Dennis Ritchie iBrian Kernighan n 1977.
naintea ei exista doar "The C Reference Manual",scris de Dennis Ritchie.
O caracteristic important a acestui limbaj estefaptul c poate fi considerat simultan i un limbaj denivel mediu i un limbaj de nivel sczut.
24.10.2014 Curs - Programarea calculatoarelor 8
3.2. Limbajul C
Limbajul C i versiunile sale OOP (ObjectOriented Programming) C++, Visual C++ imai noul C# sunt printre cele mai folositelimbaje de programare la ora actual.
24.10.2014 Curs - Programarea calculatoarelor 9
3.2. Limbajul C
Limbajul C permite folosirea a dou tehnicide programare:
1. programare structurat2. acces direct la main
fapt care-l face s fie foarte flexibil.Ultimul i poate cel mai important motiv
pentru nvarea limbajului C este faptul cpermite trecerea cu uurin la varianta sa C++,la limbajul Java sau la limbajul C#.
24.10.2014 Curs - Programarea calculatoarelor 10
3. Elemente introductive ale limbajuluiC++
3.1. Programarea i limbaje de programare3.2. Limbajul C3.3. Elemente de baz ale limbajului C++
3.3.1. Tipuri de date3.3.2. Modificatorii de tip3.3.3. Constante3.3.4. Variabile
3.4. Operatorii limbajului C++3.4.1. Operatori aritmetici3.4.2. Operatori relationali3.4.3. Operatori de egalitate
24.10.2014 Curs - Programarea calculatoarelor 11
3.3. Elemente de baz ale limbajului C++
Vom studia n cele ce urmeaz variantaorientat pe obiecte a limbajului standard C, ianume limbajul C++.
24.10.2014 Curs - Programarea calculatoarelor 12
3.3. Elemente de baz ale limbajului C++
1. Tipuri de date. Variabile. ConstanteCuvinte cheie
Limbajul C, ca orice limbaj de programare,este compus din cteva denumiri (identificatori)cu o semnificaie bine stabilit, numite cuvintecheie.
Observaie: Cnd alegei denumiri de variabilepentru programe s nu utilizai aceste denumiri.
24.10.2014 Curs - Programarea calculatoarelor 13
3.3. Elemente de baz ale limbajului C++
Limbajul C++ adaug noi noi cuvinte cheie la celeexistente ale limbajului C.
24.10.2014 Curs - Programarea calculatoarelor 14
auto break case char const continue default dodouble else enum extern float for goto ifint long register return short signed sizeof staticstruct switch typedef union unsigned void volatile while
asm bool catch class deletefriend inline mutable namespace newoperator private public protected templatethis using virtual
Cuvintele cheie ale limbajului C.
3. Elemente introductive ale limbajuluiC++
3.1. Programarea i limbaje de programare3.2. Limbajul C3.3. Elemente de baz ale limbajului C++
3.3.1. Tipuri de date3.3.2. Modificatorii de tip3.3.3. Constante3.3.4. Variabile
3.4. Operatorii limbajului C++3.4.1. Operatori aritmetici3.4.2. Operatori relationali3.4.3. Operatori de egalitate
24.10.2014 Curs - Programarea calculatoarelor 15
3.3.1. Tipuri de date
Un tip de date specific (precizeaz):mulimea de valori pe care variabila respectiv
le poate luact i setul de operaii pe care programatorul le
poate efectua cu acea variabil
24.10.2014 Curs - Programarea calculatoarelor 16
3.3.1. Tipuri de dateNUMELE TIPULUI
CARACTERISTICI
char reine un singur caracter Exemple: A, a, %, etc.
int reine numere ntregi cu semn Exemple: 23, -45, 0, etc.
float reine numere reale n format cu virgul mobil, n simpl precizie Exemple: 7.8965, -4.123, 7.0, etc.
double
reine numere reale n format cu virgul mobil, n dubl precizie Exemple: 123456789.89654321, -123456789.1234567890, 123456789.0, etc. (se utilizeaz cnd se prelucreaz numere foarte mari sau foarte mici)
void tip de date special care nu specific un anumit set de valori iniial, dar care poate fi specificat ulterior declarrii.
24.10.2014 Curs - Programarea calculatoarelor 17
3.3.1. Tipuri de dateReprezentarea caracterelor in memoria calculatorului
Programatorii pot folosi in programe valori de orice tip (cifra,litera mica, litera mare, caractere speciale, alte caractere).
In memoria calculatorului fiecare astfel de caracter sereprezinta printr-un cod numeric - ASCII (codul numeric alcaracterului respectiv). Intervalul este intre 0 si 255.
24.10.2014 Curs - Programarea calculatoarelor 18
Interval valori(selecie)Cod ASCII
Semnificaie
[0, 32] Caractere neprintabile(netipribile)
[48, 57] Cifrele de la 0 la 9
[65, 90] Literele mari de la A la Z
[97, 122] Literele mici de la a la z
3.3.1. Tipuri de date
1. Tipul de date char
Se reprezint n memoria calculatorului folosind 8 bii (un octet) ipoate pstra valori cuprinse ntre 128 i 127.Dac se declar fr semn (adic se utilizeaz modificatorul unsigned),intervalul de valori se ntinde de la 0 la 255.
Programatorii pot atribui valori de tip caracter unei astfel devariabile n dou modaliti distincte, dar care acioneaz identic:
reprezentarea din ASCII (codul numeric al caracterului respectiv) sau caracterul respectiv ntre dou apostrofuri
24.10.2014 Curs - Programarea calculatoarelor 19
Exemplu:char litera_mica; char litera_mica=97;
sau char litera_mica=a;
char ;
3.3.1. Tipuri de date
2. Tipul de date int
Se reprezint n memoria calculatorului folosind 16bii (2 octei) i poate pstra valori cuprinse ntre 32768 i 32767.
Dac se declar fr semn (adic se utilizeazmodificatorul unsigned), intervalul de valori se ntindede la 0 la 65535.
24.10.2014 Curs - Programarea calculatoarelor 20
int ;
Exemplu: int a=9;int b=6725;int c=-31567;
3.3.1. Tipuri de date
3. Tipul de date float
Se reprezint n memoria calculatoruluifolosind 32 bii (4 octei) i poate pstra valoricuprinse ntre 3.4E-38 i 3.4E+38.
24.10.2014 Curs - Programarea calculatoarelor 21
float ;
Exemplu: float x=9.789;float y=-6725.123;
float z=-3156723;
3.3.1. Tipuri de date
4. Tipul de date double
Se reprezint n memoria calculatorului folosind64 bii (8 octei) i poate pstra valori cuprinse ntre1.7E-308 i 1.7E+308.
24.10.2014 Curs - Programarea calculatoarelor 22
double ;
Exemplu:
double numar_foarte_mare=123456789123456789.123456789123456789;double numar_foarte_mic=-123456789123456789.123456789123456789;double numar_mare=-123456789;
3.3.1. Tipuri de date
5. Tipul de date void
Este tipul de dat vid (fr tip specificat), utilizat n generalpentru mrirea claritii programelor.
Tipul void permite explicitarea faptului c o funcie nureturneaz nimic sau nu are nici un parametru.
24.10.2014 Curs - Programarea calculatoarelor 23
[void ]
3. Elemente introductive ale limbajuluiC++
3.1. Programarea i limbaje de programare3.2. Limbajul C3.3. Elemente de baz ale limbajului C++
3.3.1. Tipuri de date3.3.2. Modificatorii de tip3.3.3. Constante3.3.4. Variabile
3.4. Operatorii limbajului C++3.4.1. Operatori aritmetici3.4.2. Operatori relationali3.4.3. Operatori de egalitate
24.10.2014 Curs - Programarea calculatoarelor 24
3.3.2. Modificatorii de tip
Limbajul C++ ofer pe lng cele 5 tipuri de bazprezentate mai sus, un set de modificatori de tip:
1. unsigned (fr semn)2. long (lung)3. signed (cu semn) 4. register (registru)5. short (scurt) Un modificator de tip schimb domeniul valorilor pe care o
variabil le poate pstra, sau modul n care compilatorulpstreaz o variabil.
Pentru a se modifica un tip de data, se va plasa modificatoruln faa tipului respectiv.
24.10.2014 Curs - Programarea calculatoarelor 25
Exemplu: unsigned int numar;register int i;long int numar_foarte_mare;
3. Elemente introductive ale limbajuluiC++
3.1. Programarea i limbaje de programare3.2. Limbajul C3.3. Elemente de baz ale limbajului C++
3.3.1. Tipuri de date3.3.2. Modificatorii de tip3.3.3. Constante3.3.4. Variabile
3.4. Operatorii limbajului C++3.4.1. Operatori aritmetici3.4.2. Operatori relationali3.4.3. Operatori de egalitate
24.10.2014 Curs - Programarea calculatoarelor 26
3.3.3. Constante
Sunt date a cror valoare nu poate fi
modificat n timpul execuiei programului.
Ele reprezint un tip i o valoare i astfel pot fi de mai
multe tipuri:
1. constant ntreag
2. constant flotant
3. constant caracter
4. constant ir de caractere
24.10.2014 Curs - Programarea calculatoarelor 27
3.3.3. Constante1. constant ntreag = se reprezint sub forma unei niruiri de cifre.
Se clasific n: constante zecimale (se scriu n baza 10) Exemplu: 14, 568,
17342 constante octale (se scriu n baza 8) Exemplu: 0ir de cifre n
baza 8 constante hexazecimale (se scriu n baza 16) Exemplu: 0x ir de
cifre n baza 16Constantele ntregi se reprezint pe 16 bii sau pe 32 de bii. Dacla sfritul unei constante punem litera l sau L, atunci constantarespectiv va fi reprezentat pe 32 de bii.
Exemplu: numrul 17 se reprezint pe 16 biinumrul 17L se reprezint pe 32 bii
24.10.2014 Curs - Programarea calculatoarelor 28
3.3.3. Constante
2. constant flotant este compus din 2 pri partea fracionar (care poate fi vid) i exponent (care poate fi el vid)
O constant real este sub urmtoarea form:
Exemplu: 3.45e-17 3,45*10-17
Toate constantele flotante se reprezint pe 16 bii.
24.10.2014 Curs - Programarea calculatoarelor 29
parte ntreag.parte fracionar e exponent
3.3.3. Constante3. constant caracter este de fapt un caracter ntre apostrofuri.
Se reprezint pe 8 bii, fiind chiar reprezentarea n codulASCII a caracterului respectiv.
Exemplu:A reprezentare intern: 65 (codul ASCII a caracterului A)a reprezentare intern: 97 (codul ASCII a caracterului a)
n plus avem o notaie special \ = backslash, care se poatefolosi mpreun cu cteva litere mici cu urmtoarelesemnificaii:
24.10.2014 Curs - Programarea calculatoarelor 30
Caracter semnificatie\n linie noua\r retur de car\t tabulator orizontal\v tabulator vertical\\ backslash\nnn valoare ASCII in octal
\xnnn valoare ASCII in hexazecimal
3.3.3. Constante
4. constant ir sau ir de caractere Acest tip de constant apare ca o succesiune de caractere scrise ntre
ghilimele. Poate fi i irul vid. Reprezentarea intern este astfel nct fiecare
caracter apare pe cte un singur octet, iar ca terminator de ir avemcaracterul 0 (nul).
Constantele ir pot fi scrise pe linii diferite, dar pe prima linie ultimulcaracter este backslash, nainte de apsarea tastei RETURN.
Exemplu: linia 1 : conti\linia 2 : nuare
Exemplu : AbbA se reprezint intern astfel:
659898650 A b b A
24.10.2014 Curs - Programarea calculatoarelor 31
3. Elemente introductive ale limbajuluiC++
3.1. Programarea i limbaje de programare3.2. Limbajul C3.3. Elemente de baz ale limbajului C++
3.3.1. Tipuri de date3.3.2. Modificatorii de tip3.3.3. Constante3.3.4. Variabile
3.4. Operatorii limbajului C++3.4.1. Operatori aritmetici3.4.2. Operatori relationali3.4.3. Operatori de egalitate
24.10.2014 Curs - Programarea calculatoarelor 32
3.3.4. Variabile
Pentru a putea utiliza informaiile ce pot fiprelucrate prin intermediul programelor,trebuie s folosim denumiri (identificatori), cares fie compui din caractere litere, cifre iliniua de subliniere - underscore(_) dinmaximum 31 caractere.
Numim variabil o denumire (identificator)pe care compilatorul o asociaz cu o anumitzon de memorie.
24.10.2014 Curs - Programarea calculatoarelor 33
3.3.4. Variabile
Cnd se declar o variabil, trebuie specificat att numele ei ct i tipul de date asociat.
24.10.2014 Curs - Programarea calculatoarelor 34
Exemple:int variabila_de_tip_intreg;float variabila_de_tip_real;char variabila_de_tip_caracter;void variabila_fara_tip;
Restricie: Numele variabilelor nu pot s nceap cuo cifr.
Exemplu: variabila1 - este corect1variabila - nu este corect
3.3.4. Variabile
Observaie:Limbajul C este case sensitive, adic face
diferena dintre literele mici i mari, astfel nct,dou denumiri de variabile sau de funcii, caresunt identice dar sunt scrise o dat cu litere miciiar apoi cu litere mari, se consider ca fiind doudenumiri de variabile sau de funcii diferite.
Exemplu: int var_intreaga;int VAR_INTREAGA;
semnific dou denumiri total diferite.24.10.2014 Curs - Programarea calculatoarelor 35
3.3.4. Variabile
Variabilele pot fi:1. simple2. compuse:
a) tabloub) structur/uniune
24.10.2014 Curs - Programarea calculatoarelor 36
3.3.4. Variabile
Variabilele simpleDeclaraia de variabil simpl are forma:
Exemplu:
24.10.2014 Curs - Programarea calculatoarelor 37
tip nume_variabila;
int i;int j, k, l;double a, b;float x, y;char m, n, t;
3.3.4. Variabile
Variabilele tablouPrin tablou nelegem o mulime ordonat
de acelai tip; accesul la elementele tablouluifcndu-se cu ajutorul indicilor.
Declaraia este:
Exemplu:
24.10.2014 Curs - Programarea calculatoarelor 38
tip nume_tablou[dimensiune];
int v[5];float x[15];double a[3];
3.3.4. Variabile
Observaie:Numerotarea elementelor unui tablou n
limbajul C++ ncepe cu indicele 0.Elementele lui int v[5] vor fi:
v[0],v[1],v[2],v[3],v[4];Indice poate s fie orice expresie ntreag.Putem avea chiar i tablouri de iruri de
caractere: char t[20];Numele tabloului este de fapt adresa
primului su element.24.10.2014 Curs - Programarea calculatoarelor 39
3.3.4. VariabileIniializarea variabilelor
Poate fi fcut chiar pe linia de declarare a variabilelor:Exemplu:
Pentru iniializarea variabilelor de tip ir de caractere avemurmtoarele posibiliti:
char t[15] = { s, i, r, , c, o, r, e, c, t, \0 };sau char t[15] = sir corect;
24.10.2014 Curs - Programarea calculatoarelor 40
int i=5;float x=7.8;int v[5]={1,2,7,10,-5};float y[3]={-9.034,89,2};char c=B;
3.3.4. VariabileComentarii n programeNumim comentarii, acele texte care nu sunt luaten considerare de compilator i care apar ntresimbolurile
/* comentariu */saucnd este vorba despre o singur linie
// comentariuSe mai pot pune comentarii pentru ca s se
elimine una sau mai multe instruciuni dinprogramul C++.
24.10.2014 Curs - Programarea calculatoarelor 41
3. Elemente introductive ale limbajuluiC++
3.1. Programarea i limbaje de programare3.2. Limbajul C3.3. Elemente de baz ale limbajului C++
3.3.1. Tipuri de date3.3.2. Modificatorii de tip3.3.3. Constante3.3.4. Variabile
3.4. Operatorii limbajului C++3.4.1. Operatori aritmetici3.4.2. Operatori relationali3.4.3. Operatori de egalitate
24.10.2014 Curs - Programarea calculatoarelor 42
3.4. OPERATORII LIMBAJULUI C++
Expresii
O expresie poate s fie un operand sau maimuli operanzi legai prin operatori.
Orice expresie are tip i valoare care sunt datedup evaluarea expresiei.
24.10.2014 Curs - Programarea calculatoarelor 43
3.4. OPERATORII LIMBAJULUI C++
Operatori
Operatorii folosii n limbajul C++ au o asocierede la stnga la dreapta n general cu excepiaoperatorilor unari (se aplic la un singur operand),relaionalii de atribuire,
la care asocierea se face de la dreapta la stnga.
24.10.2014 Curs - Programarea calculatoarelor 44
3.4. OPERATORII LIMBAJULUI C++
Operatorii sunt mprii n 11 categorii:
Operatori
1 aritmetici
2 relaionali 3 de egalitatite
4 logici
5 logici pe bii 6 de atribuire
7 de incrementare i decrementare 8 de conversie explicit (cast) 9 de lungime (sizeof)
10 condiional 11 virgul
24.10.2014 Curs - Programarea calculatoarelor 45
3. Elemente introductive ale limbajuluiC++
3.1. Programarea i limbaje de programare3.2. Limbajul C3.3. Elemente de baz ale limbajului C++
3.3.1. Tipuri de date3.3.2. Modificatorii de tip3.3.3. Constante3.3.4. Variabile
3.4. Operatorii limbajului C++3.4.1. Operatori aritmetici3.4.2. Operatori relationali3.4.3. Operatori de egalitate
24.10.2014 Curs - Programarea calculatoarelor 46
3.4.1. Operatori aritmetici
n cele mai simple programe se pot utiliza operaii matematice cum ar fiadunarea, scderea, nmulirea i mprirea.
OPERATOR FUNCIE + Adunare
- Scdere * nmulire / mprire
% Restul mpririi + adunare unar - scdere unar
24.10.2014 Curs - Programarea calculatoarelor 47
Exemplu:int i=9, j=2;
atunci i/j are ca rezultat 4i%j are ca rezultat 1
3.4.1. Operatori aritmeticiPrezentm n urmtorul program scris n C++, principalii operatorimatematici:
#include int main(void){int secunde_pe_ora;float media;secunde_pe_ora = 60 * 60;media = (5 + 10 + 15 + 20) / 4;cout
3.4.1. Operatori aritmetici
Dup execuia programului se vor afia pe ecranurmtoarele rezultate:
Numarul de secunde intr-o ora este 3600 Media numerelor 5, 10, 15 si 20 este 12.000000Numarul de secunde in 48 de minute este 2880
24.10.2014 Curs - Programarea calculatoarelor 49
3. Elemente introductive ale limbajuluiC++
3.1. Programarea i limbaje de programare3.2. Limbajul C3.3. Elemente de baz ale limbajului C++
3.3.1. Tipuri de date3.3.2. Modificatorii de tip3.3.3. Constante3.3.4. Variabile
3.4. Operatorii limbajului C++3.4.1. Operatori aritmetici3.4.2. Operatori relationali3.4.3. Operatori de egalitate
24.10.2014 Curs - Programarea calculatoarelor 50
3.4.2. Operatori relaionalin programe, prin aplicarea acestor operatori relaionali se
pot obine dou valori posibile, la evaluarea expresiilor care iconin:
0 ceea ce nseamn c expresia este fals1 ceea ce nseamn c expresia este adevrat
OPERATOR FUNCIE < mai mic
mai mare
>= mai mare sau egal
24.10.2014 Curs - Programarea calculatoarelor 51
Exemplu:
int i=3, j=8;Atunci pentru expresia i < j avem valoarea 1
Iar pentru expresia i >= j avem valoarea 0
3.4.2. Operatori relaionaliSe citesc doua numere ntregi a si b. S se realizeze un algoritmcare s verifice care numar este mai mare, afiandu-se un mesajcorespunzator:
#include int main(void){
int a,b;cin>>a; cin>>b; if(a > b)
cout
3. Elemente introductive ale limbajuluiC++
3.1. Programarea i limbaje de programare3.2. Limbajul C3.3. Elemente de baz ale limbajului C++
3.3.1. Tipuri de date3.3.2. Modificatorii de tip3.3.3. Constante3.3.4. Variabile
3.4. Operatorii limbajului C++3.4.1. Operatori aritmetici3.4.2. Operatori relationali3.4.3. Operatori de egalitate
24.10.2014 Curs - Programarea calculatoarelor 53
3.4.3. Operatori de egalitate
n programe, prin aplicarea acestor operatori de egalitate sepot obine dou valori posibile, la evaluarea expresiilor care iconin:
0 ceea ce nseamn c expresia este fals1 ceea ce nseamn c expresia este adevrat
OPERATOR FUNCIE == egal
!= diferit
24.10.2014 Curs - Programarea calculatoarelor 54
Exemplu:int i=2, j=5, k=2;
Atunci pentru expresia i!=j avem valoarea 1Pentru expresia i==j avem valoarea 0Iar pentru expresia i==k avem valoarea 1
3.4.3. Operatori de egalitateSe citete un numr ntreg a. S se realizeze un algoritm care sverifice dac numrul a este par, afiandu-se un mesajcorespunzator:
#include int main(void){
int a;cin>>a; if( a % 2 == 0 )
cout
ntrebri?
24.10.2014 Curs - Programarea calculatoarelor 56