2.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
PROGRAMARE
Cc
Proiectare Programul Inclusiv Structuri de
date
DS Malik
Editia a 7-
‘lest RUsersviorelDesktopoodG++%620Programming.hin2.082016 C ++ ce programare: Projectarea programuld, ncluiv uct de dat, eda 7.
“com
¢ se angajeze pe Creier
Acumpar, chit, ces,
fisierele de date de acces pentru studenti si alte instrumente de studiu privind cengagebrain.com.
Pentru instructiuni detaliate , accesali http://solutions.cengage.com/ctdownloads/
Stocatifierele de date peo unitate USB pentru efcients maxim in organizaes gi lucrul cu fea
Utiizatoni Macintosh a rebul s foloseascS un program pentru a extinde WinZip sau PKZI ative, Adress instuctorl sau coordonator de Iborator
penta asistents
C ++ DE PROGRAMARE:
PRolecTare PROGRAMUL INCLUSIV STRUCTURI DE DATE EDITIA A SAPTEA
DS Malik
Cengage
invatare*
Ansats- Bryon Coes Mes Signore Spin: Rpt Ma
‘lest RUsersviorelDesktopoodG++%620Programming.hin 22306 +4 ce programare: Protectarsa programuld, nclusiv stuctr de da, eta 7,
Acosta este o versuneclsronsd a manual de imprinure. Din cauzarestrcilor legs de drepurileclecvonice, uncle coon td pate poate
suprinat Reviaite editorial a consider! ci ovce confinusupriat nu afew in mod semmicav experi general de invite, Publisher reer
rept de a elimina conor dn acest, in ore moment in cazal resto legate dedrepturile sal lerioareimpan. Petr informa valroase
privndpreuil eitile ameciom, modi itil eure ifrmate akemasve, i raghn si vit way cengage comigherad pentru a cduta
dupa ISBN #, autor, titlu, sau un cuvant cheie pentru materialele in domeniile dumneavoastra de interes.
Cengage ** Learning *
Prolectarea program incu struct
date, Eta aptea DS Malik: C++ Programare
Director de produ: Kthleen MVshor Salar Manag
prolac: enter Flr-George Are Dect’ GFX Publishing
Enutersocecom proofrender:Anares Seheinindeatorl
produ Ji Gey Senor Content Developer: lyzs Prat Aten produ: isn Davee Cantant Manager de
ences Print Cumparstor: to Fspe'ss Cover Designer GX Publishing Serer Cover Fte: © Olegoorosin?
‘Sharon Higenberg Composter: nega Sofware sevces
{© 2015 Cangage Leaming WEN: 02-200-208
TOATE DREPTURILEREZERVATE. Nico pat a cat ici scoparia de drptul dso al pot Freprede, anes, oct su tate once fom rn
tie mslacegrafie electronice su mecance, nut at fra a sla fotocopere eg rae eenate, agar iregstare pe Sands, Web sieriouve, rele de
Infomare sv ce stcare regsece»nfrmape! steele co excep carlo arms conforma cu second 107 s5 108g 1876 enele Unt le Aer Copmght
‘Attia permisoen Sesh prea 3 eat
Bhioteca Cones Num
Invitaren Cengage
200 pine nd StarfontPace, 4 Ie
Stale Une ale Aer
Cengage Learning este un import: friar ie Save reo
Brana spon ocala biol ee
te wecmmpso com/sabal
Ccumpsra eae cin produslenoate a magsinal ds, coli laa sau a miagaiul ost prefer! clin: ww cenasgebrain. com
Una i
ure produsl deni comet
eae produdtorle 9 vnaitolr respect
te fst lost doar n Scop de dente pot mel comers tel comercile
opt de eran rods Wi cosf lst cu permisune de a Mirsat Corpratin
Ccuexcepin cal cect al tete ara stable © 25 Cengage Leming prods de neg
Cengage Leaming rae capt ea ei acest nbleatisdea face moa cin cid ncn incom hr nica
‘lest RUsersviorelDesktopoodG++%620Programming.hin 32302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
‘ore date Fete fertoare a pertsne sau sci su URL late pe parc cate Sn este destnat doar pan eopu de intrute La momenta respect aos
tiprt aeasts carte, ore fel de date a os Fit care ra apa ie ue persoane rae sou compar
Programa dn aces crt sun doar pert sopu' de instueAcete yo estate cv i dr mu sun garntepeiw inte spec al dnclo de scopur
saucstorale Atop etorlnu ote ie gan tu eprarentoe, fim mu sccpts nel pain cova epee arose
‘Tipit Stato Unie ale Ameriii 123456720 1918 1716 15 18
BRIEF CONTENTS
PREFATA KV,
2 Elemente de bazA ale C+#.27
3._intrare / iosire 123
4, Stueturi de control (Selectie} 185
Si_Stouctur de contolalll- les tenetiial 263
Funcile definite de uttzator 34
7. Tpurl ge date definite de utizator simp, Namespaces,
sleizul de up sss
8,_sasfetior si siruride caractere 519
Records (st
10,__clase si date Abstactio 649
11,_Mostenirea si737 Gomporitia
412, Pointer, Clase, funcfivituale, Case abstracte gi ste de 811.
418,_Supraincdrcarea gi gabloane 901
14, Bxcopte de manipulare 997
15__Recursiviate 1039,
Istole corelate 107
7. Stvete ¢ Cozile 1165
‘lest RUsersviorelDesktopoodG++%620Programming.hin 42302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
18 Céutaroa gi algoritmi de sortare 1268
19,_Avoor| bingy 1347
20. Graficele 1403,
andar Library (STL) 144
Cuvinte ANEXA A Rezervat 1561
ANEXA B Operator Prtizare 1563
ANEXA setur de caractere 1565
ANEXA D Operator Overloading 1569
ANEXAE euplimentare € ++ Sublecte 1571
ANEXA F AntotFisioro 2503
Anexa G Dimenslune memorie pe un sistem si aleatorit
Numi Generator
TABLE OF CONTENTS
Protata soy
O PREZENTARE GENERALA A CALCULATOARE $I
Introducere 2
O scurta trecere in revista a istoriei
de Calculatoare 2
Elemente ale unui sistem mputer
rdware 4
Unitatea de procesare central si Memoria principala 4
‘lest RUsersviorelDesktopoodG++%20Programming hin 92302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Evolutia Limbaje 7
Procesarea unul program C ++ 9
Programarea cu problema
Ciolul de analiza-codificare a mérfurilor-11 Executie
Programarea 20 Metodologii de
Programare structuraté 20
Programare orientaté-obiect 20
ANSI / ISO standard ¢ ++ 22
Revizuirea rapida 22
exercitii 24
O scurta privire la un program C ++ 28
Bavele unui program C ++ 34
34 Comentarii
Simboluri speciale 35
Cuvinte rezervate (cuvinte cheie) 36
identificatorii 36
3Zspatii goale
Tipuri de date 38
Tipuri de date simple 38
Invirguld mobila Tipuri de date 41
Tipuri de date, variabile si Atribuire
Meclaratii 42
Operatorii aritmetica, Operatorul Precedence,
sLexpresil 43
Ordinea orecedentei 46
expresiile 48
‘lest RUsersviorelDesktopoodG++%620Programming.hin
2302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Expresii mixte 49
Tip de conversie (de turnatorie) 51
‘String Tip 53
Variabile, instructiuni de atribuire, si de intrare
Geclaratii 54
Alocéind Memorie cu Constante $i variabile 54
rea datelor ir bile
Salvarea gi Utilizarea valorii unei expresii 61
Declararea si initializarea variabilelor 62
De intrare (citire) Declaratia 63
Initial riabil
Incrementare gi decrementare 70
iesire 72
Directivele preprocesorului 79 si spafiul de nume Utilizarea si cout cin
intr-un program de 80
Folosin: ir Intr-un program 84
Crearea unui program C ++ 84
Debugging: intelegerea $i fixare
Erori de sintaxA
Program de Stil si Forma 89
ntaxei
Folosirea Blanks 90
Folosirea virgulele, intre paranteze si virgulele 9
20 semantici
Identificatorii 90 Namin
Linii Promot 94
documentare 92
Forma gi stil 92
Exemplu de programare: Conversie Lungime 96
‘lest RUsersviorelDesktopoodG++%620Programming.hin
72302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Revizuirea rapida 103
Programarea Exercitii 115
© Curente gi Standard Dispozitive 1/0124
CIN gi Operatorul de extractie >> 125
rea functilor predefinite intr-
siget cin Functia 133,
cin si 135 Funetia ignore
Cei $i PEEK Funetiile readucere la starea activa 136 Dot notatie intre 1 / 0 Stream
Variabile sil / 0 Functii: A Precautie 139
ntrare Ner rea 141
Clar Functia 142
jesire gi formatare de iesire 144
Setorecision Manipulator 144
Manipulator fix 145
int Manipulator 14
setw 149
rea de formatare Instrumente 151.
Manipulator setfill 151
nga si dreapta Manipulatori 154
inware / iesire Si upul sir de caractere 156
Debugging: Erori Logic intelegerea
eclaratille co!
Fisierul de intrare / iesire 160
Exemplu de programare: Bilete film
Vanzarea $i Donatie Caritate 164
Exemplu de programare: Student Grad 170
‘lest RUsersviorelDesktopoodG++%620Programming.hin
230c2052016 C++. programare: Prolectaresprogramul,inckaiv suture date, ed
Revizuirea rapid’ 173
174 exerciti
CONTROL STRUCTURI I (selectie) 185
SELECTIE: daca si daca
Iteeva 187
Operator relationali gi tipuri de date simple 187
re 188 compar.
One-Way Selection 189
Doua cai de selectie 192 int Tip de date $i logice (boolean)
Expresiile 196 bool Tipul de date gi logice (boolean)
Expresii logice (196) Sooleene Operatori gi logica
xpresiile 197
Ordinea oreceden
Operator relationali si tipul sir de caractere 20:
Compuse (Bloc) Declaratii 205,
Selecfii multiple: cuibarit in cazul in care 205 in cazul in care ... Comparand else cu
rie de 208 if
Scurt-circuit de evaluare 209 Compararea numere de puncte in virgula mobila pentru egalitatea:
0 Precautie 210 Asociativitatea operatorilor relationale:
Un Precautie 211 Evitarea Bugs Evitand Inteles Parfial
Concepte gi tehnici 213
Eseoul de intrare si confuzie daca Declaratie 217 dintre Operatorul Egalitati
(=) Si operatorul de atribuire (=) 220
Operator conditional (:) Stil 224 Programul si Forma (Revisited): identarea 222
Cu ajutorul pseudocod pentru a dezvolta, testa,
si Debug un program 223
ructuril mutare 22!
Evitand Bug.uri Evitand Inteles Partial
‘lest RUsersviorelDesktopoodG++%620Programming.hin 92302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Un program cu incheiere assert
funetia 234
Exemplu de programare: Companie de cablu
facturare 236,
Revizuirea rapid 242
exercitii de 243,
Hi
Structurile de control al Il-lea (REPETAREA) 263
tie?
in timp ce Looping (Repetitia) Structura 267
jectare wt
Cazul 1: Counter-controlat in timp ce 272 Bucle
Cazul 2: Sentinel-controlat in timp ce 275 Bucle
Telefon Digits 278
Cazul 3: Flag-controlate in timp ce Bucle 281,
Numar de ghicitul ioe 282
Cazul 4: EOF-controlat in timp ce 284 Bucle
EOF Functia 285
Mai multe despre expresii ih timp ce 290 Declaratille
Exemplu de programare: Fibonacci Number 291.
pentru Looping (Repetitia) Structura 295
Exemplu de programare: Numere 303 Clasificarea
do ... in timp ce Looping (Repetitia) Structura 307
Divizibilitatea de incereare de 3 si 9 309
Alegerea structurii pe dre Bu 14
fupe si pentru a continua Declaratiile 311,
ructuri de control imbri 14
i ur tar bur
Debugging Buclele 322
‘lest RUsersviorelDesktoptoodG++%420Programming hin
102302.082016
324 exercitil
ri cit
Functiile definite de utilizator 345
ctii predefinite
Funetii-recurenti Valoare 354.
loares i
Sintaxa: Parametru formal List 353
Funetia de apel 353
Parametri i
intoarcere Declaratie 354
intaxa: intoarcere Declaratie 354
Functia prototip 358
Sintaxa: Functie prototip 359-recurenti Valoare Funelii: Unele Particularitatile 360 Mai multe exemple de
functii Valoare-362 recuren|
Flux de compilare gi de executie 373
Exem rogramare: cel mai mare numar 374
Functii nule 376
Valoare Parametri 382
Variabilele de referinta ca parametri de 384:
Se calculeaza Grad 385
Valoarea gi parametri de referinta gi
Alocarea de memorie 388
Parametrii de referinta gi valoarea-recurenti
functii 397
Domeniul de aplicare a unui identificator 397
Variabile globale, Constante cu numele,
Efecte secundare si 401.
riabile statice si aut
‘lest RUsersviorelDesktopoodG++%620Programming.hin
6 +4 ce programare: Prtectarsa programuld, inclusiv stuctr de da, eda 7,
2302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Debugging: Utilizarea driverelor $i Ciorne 41.1
Functia Suprasarcina: Introducere 413
u i it 4:
Exemplu de programare: Clasificati Numere 418
emplu de programare: Date Compararea 423
Revizuirea rapida 433
exercitii 436
Programarea Exercitii 451
D USER-DEFINIT TIPURI DE DATE SIMPLE,
Namespace SI string TIP 465
numerdrii Ti
Variabile 468 declarindu
buirea 46:
Tipuri de operatiuni pe 469 Enumerarea
Operatori relationali 469
Intrare / iesire a tipurilor de 470 Enumerarea
Funefii $i Tipuri de Enumerarea 473 Declararea variabilelor Atunci cdnd defineste
Enumerdrii Tip 474
Tipuri de date anonime 475
Declaratie typedef 47:
Exemplu de programare: The Game of Rock,
Hartie si foarfece 477
485 namespace-uri
string Tip 490
rail 1 imentare 494
Exemplu de programare: Pasdreasea Corzi 504
Revizuirea rapid
310 exercitii
Programarea Exercitii S16
Matricile $1 STRINGS 519
‘lest RUsersviorelDesktopoodG++%620Programming.hin
2202.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
matricele 521
Array 523 A mponent
Matricele de prelucrare cu o singurd dimensiune 525
Array Index limitelor 529
Initializarea Array in timpul Declaratiei 530 Initializarea partiala a Matricele in timpul Declaratiei 530
Unele restrictii cu privire la Array Procesarea 531.
Matrici rametri Funetii 532
Tablourile constant formal Parametrii 533 Adresa de baza a unui Array i Array in calculator
Memorie 535 Funetii nu poate returna o valoare a
Tip Array 538
Integral Tip de date si Array Indici 541.
Alte modalitéti de a declara Arrays 542
Cdutarea unei matrice pentru un element specific 542
sortarea 545
Declaratie automata si Range-Based Pentru Bucle 549
€-Corzi (Tablourile de caractere) 550
mparare 6
Citire si scriere Corzi 554
Sirul de intrare 554.
Jesire 556 sir de caractere
Specificarea de intrare / iesire fisiere la 557 Timp de executie
Tip sir si de intrare / iesire fisiere 557
Arrays paralele 558
Dové- si multidimensionali Arrays 559.
Accesul la componentele Array 561 bidimensionala Array Initializarea in timpul
declaratie 562
Doud-dimensionale Tablourile si tipuri d Enumerare
initlalizarea 566
566 de Imorimare
‘lest RUsersviorelDesktopoodG++%620Programming.hin
192002.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
inttare 567
‘Suma de 567 Rand
‘Suma de coloand 567
Ce| mai mare element in fiecare rand $i fiecare coloana 568 Pase cele bidimensionale ca parametri
Functiila 568
Matricile de siruri 572
Matricile de siruri de caractere gi de tip sir 572
Matricilor de coarde si C-Corzi (Tablourile de caractere) 572
alta modalitate de a dectara o matrice bidimensionald 573
rays 574 multidir q
Exemplu de programare: detectare Cod 576
Exemplu de programare: Procesare text 582
Revizuirea rapid’ 589
exercitii 590
Programarea Exercitii 602
INREGISTRARI (struct S) 609
Inregistrari (structs) 61
Membrii struct 612 accesarea
Atribuirea 615
Intrare / iesire 617
Variabile struct si functii 647
Matricile versus structs 618
Arrays in structs 61:
structs matricelor 621
structs intr-un struct 623
Exemplu de programare: vanzari Analiza datelor 627
Revizuirea rapida 644
xercitii 641
‘lest RUsersviorelDesktopoodG++%620Programming.hin
woo2.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Clase si 649 DATE Abstractie
ase 650
Unified Modeling Language Class Diagrame 654
Glasa de accesare a membrilor 655,
Operatiuni deja integrate in clasele 657
Operator de atribuire siclasele 657
Clasa de 658 Domeniu de aplicare
Funofii si clasele 658 Parametrii de referinta si de clas Obiecte
(variabile) 653
Punerea in aplicare a Membru Functii 659
Accesor gi Mutator Functii 664 Ordine membrilor publice si private
Clasa 668
nstructori
Invocind 671 Bruynzee!
Invocind implicit 674 Bruynzeel
Invocind construc- cu parametri 672
Constructori si parametrii implicit 675
Clase si: Constructorilor 675 0 masura de precautie in-line Inifializarea date membre si
Implicit Bruynzeel 676 Matricele de clasa obiecte (variabile) si 677 Constructorilor
ructori 67:
Abstractizare, Clase si date Rezumat
Tipuri de d
Un struct versus 0 clasd 682
Informatii Ascunderea 683
7 Cod ex: ila
Mai multe exemple de clase 689
Membrii stati nei
Exemplu de programare: sue Masina 705
‘lest RUsersviorelDesktoptoodG++%20Programming hin 15230c2052016 C++. programare: Prolectaresprogramul,inckaiv suture date, ed
Revizuirea rapid’ 718
exercitii 720
Programarea Exerciti 7
MOSTENIRE $I COMPOZITIE 737
mostenire 738
Redefinind (prioritari) Functii membre
din clasa de bazéi 741
Din rivate constructori si Base 74:
Incluziuni multiple ale unui figier antet 758
++ Stream 762
Protejat Membrii unui 763 de mostenire din clasa ca publice, protejate, sau private 763 (Accesarea
protejate Membriidin derived
Clasa de) 764
zitie (Agregarea) 767
Proiectarea orientata obiect (0D) si
-Programare orientata pe obiecte (OOP) 772
ntificare, obiecte gi operatii 774
Revizuirea rapida 7:
exercitil 797,
Programarea Exercitii 806
Pointer Tip de date si Pointer Variabile 812
Variabile pointer 812 declarandu
Adresa operatorului (&) 814
Dereferencing Operator (*) 815
‘lest RUsersviorelDesktopoodG++%620Programming.hin
192002.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Clase, variabile structs, $i Pointer 820
Initializarea Variabile pointer 823
Operatorul sterge 825
Operatii asupra variabilelor pointer 829
Arrays dinamice 831,
Matricile si Range-Based pentru Bucle (Revisited) 834
Funofii si pointeri 836
Pointeri si returnare Functie Valori 836
Dinamice cele bidimensionale 836
anc fata TK a i
Clase si Pointerii: 841 unele particularitati
ructor 842
Atribuirea operatorului 843
Sopiere 845 Bruynzee|
Mostenire, Pointeri si virtuale Functii 852
Clase si Destructori Virtual 859
Clase abstracte si functii virtuale pure 859
Liste neordonat 7
Liste ordonate 879
Adresa operatorului si clasele 881
Revizuirea rapida 884
887 exercitii
mares rcitii 896
SUPRAINCARCAREA SI 901 Template-uri
De ce este nevoie de un operator Supraincarcarea 902
‘lest RUsersviorelDesktopoodG++%620Programming.hin
wwes0c2052016 C++. programare: Prolectaresprogramul,inckaiv suture date, ed
Operatorul Supraincércarea 903
Sintaxa operatorului Functii 904
‘Suprainedrearea unui operator: unele restrictii 904
907 acest POINTER
Functiile si prieten Clasele 912 Functii de operator ca funefii membre
sinonmember Functii 915
Suprainearca binare Operatorii 918 supraine” rearea Insertion Stream (<<)
side extractie (>>) Operatori 924
Suprainearcarea operatorului de atribuire (=) 929
Supraincarca unar Operatorii 937 Operator Suprasarcina: Membru versus nonmember 943 Clase $i
variabile pointer membre (Revisited) 944
ratort reina: Un ultim cuva
Exemplu de programare: clockType 944
Exemplu de programare: Numere complex:
Supraincarcarea Index Array (Subscript)
Operatorul ([] 958
Exemplu de programare: newstring 960
Functia Supraincarcarea 966
Template-uri
Funofia Sabloane 967
‘Template-uri din clasa 969
Lista-Based (Matrice) Revisited 972
Revizuirea rapida 978
exercitii 981
Programarea Exercitii 987
eptiilor
Exceptii de manipulare in cadrul unui program 998
C++ Mecanisme de manipulare Exceptie 1002
in 5
Folosind C ++ clasele de exceptie 1009
rearea de dvs, clas xcept proprii 104:
Rethrowing sia aruncat o exceptie 1022
‘lest RUsersviorelDesktopoodG++%620Programming.hin 192302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
‘Tehnisi de tratare a excentillor 1026
Inchide Programul 1026
r re i
Logati Error si Continue 1027
Stivd Relaxarea 1028
Revizuirea rapid 1034
exercitii de 1033
Programarea Exercitii 1038
In mod direct gi indirect Recursivitate 1042
Recursivitate infinit 1042
i i i
Turnul din Hanoi: Analiza 1053
Recursie sau iterarea? 1053
Exemplu de programare: Conversia unui
Numi nar in zecimal 4
Exemplu de programare: Conversia unui
Numérul de zecimale la binar 4
Revizuirea rapida 1062
exercitii de 1063
i cit
LISTE CONEXE 1071
Lis 1072
Liste legate de: Unele proprietati 1073
rgere 107!
nstruirea une’ Ih 4
Logat Lista ca un ADT 1085
Structura Linked Nodurile List 1086 Variabile membru al clasei
linkedListType 1086
‘last RUsersviorelDesktopoodG++%20Programming hin
192002.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Merator legate Lista 1087
Imprimati lista 1003
Lungimea unei liste 1093
Recuperarea datelor din primul nod 1094
in ultimul n
Incepe gi se termind 1094
Copiati lista de 1095
Mestructor 1096
Copiere Bruynzeel 1096
rator 1
Liste corelate neordonate 1097
Caut in lista de 1098
Ase introduce primul nod 1099
inte {mul nod 11.06
Fisier antetul listel de legéitura neordonata 1105
Liste ordonate corelate 1106
Cauti
lista de 1107
Se introduce un nod 1108
Mal inti se introduce gi Insert Ultima 1112
Sterge un nod 1113
Fisier antetul comandat lista infAntuité 1114
Imprimati o lista Linked in ordine invers&
Recursivitate Revisited) 1117
printListReverse 1119
Listele 11.20 conectate dublu
cit Bruynzeel 112:
isEmptvList 1123
Distruge ti 112:
Initializa List 1124
Lungimea Listei 1124
mprimati lista 1124
Inversa Imprimati lista 1124
‘lest UsersviorelDesktoptoodG++%420Programming hi2.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Caut in lista de 1125
Primul si ultimul element 1125
iste circulare conectate 1134.
Exemplu de programare: DVD Store 1132
Revizuirea rapida 1152
exercitii de 1152
Programarea Exercitii 1158
Stivele $1 1165 Queues
stivele 1166
Stivé Operatii 1168
Punerea in aplicare a Stivele ca Arrays 1170
niljaliza stivé 1173
Stivd goale 1174
Stiva full 4174
Apasd 1174
Returneaza elementul Top 1176
pop 1176
Copiere stiva 1478
j Destructor 1178 Bruynzee!
Coviere Bruvnzeel 1179
Operatorului de asignare (=) 117:
Fisier stiva Antet 1,180
Exemplu de programare: Nivel GPA 1184
Punerea in aplicar vele 14
Implicit Bruynzeel 1191,
iva i Teancul 1194
Initializa stiva 1192
Apasi 1192
Returneaza elementul Top 1194
‘lest RUsersviorelDesktopoodG++%620Programming.hin 212302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
pop i194
Copiere stiva 1196
Constructor! si Destructor’ 1197
Operatorului de asignare (=) 1197 stiva derivate din clasa
unorderedLinkedList 1200
Aplicarea Stivele: Postfix expresiilor
Calculator 1201
Algoritmul principal 1204
Functia evaluateExpression 1204
Eunctia evaluateOpr 1206
Functia discardExo 1208
Funetia printResult 1208
‘Indepartarea Recursivitate: Nonrecursive
Algoritmul pentru a imprima o list legat inapoi 1211
cozile 1215
Operalii coad’ de 1216
Punerea in aplicare a Cozile ca Arrays 1218
Punerea in aplicare legat de Cozile 1227 Coada derivate din clasa
nor ist
Aplicarea Cozile: Simulare 1233
Proiectarea unui sistem de asteptare 1234
1235 de client
serverul 1238
Server List 1244
Clientii care asteapta coada 1245
Programu| principal 1247
Revizuirea rapidd 1254
exercitii de 1252
Programarea Exercitii 1261.
Investigarea si ALGORITMILOR 1265 SORTAREA
‘lest RUsersviorelDesktopoodG++%620Programming hinca08.2016 (© +4 do programare:Protecareaprogramul, incl stuctr de date, ed a7.
C4utarea $i algoritmii de sortare 1266
Algoritmi de cdutare 1266
autar ‘alk
Cautare binara 1269
Performanta binara de cautare binaré 1274 de cdutare Algoritmul si clasa
orderedArrayListTyoe 1275
Notatia asimptoticdi: Big-O notalie 1276 Lower Bound Cautarea de comparare bazata pe
algoritmi 1284
Algoritmi de sortare 1284
Sortarea o lista: Bubble Sort 1284
Analiza: Bubble Sort 1288 Bubble Sort Algoritm gi clasa
unorderedArrayListType 1289
Selectia Sortare: Lista-Based Array 1290
Analiza: Selectie Sort 1292
Inserare Sortare: Lista-Based Array 1,292
Analiza: Insertion Sort 1296
Limita inferioara Comparatie bazata pe
Algoritmi de sortare 1297
are rapid: Lista-Based Array 12
Analiza: Sortare rapid 1305
1306
binare 1340
Analiza: Merge Sort 1313
Exemplu de programare: Rezultatele alegerilor 1316
Revizuirea rapida 1337
exercitii de 1338
Programarea Exercitii 134:
arbori binari
1347
1348
1353
‘lest RUsersviorelDesktoptoodG++%620Programming hin
232302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
1354
1359
1367
1378
Arbori binare
Arborele de copiere
Arborele binar Traversal de punere in aplicare binar Arbori
Arbori binare de cautare
Binar copac Cautare: Analiza
Nonrecursive binare Arborele Traversal Algoritmi 137!
Nonrecursive Inorder Traversal 1379
Nonrecursive Precomandati Traversal 4:
Nonrecursive postordine Traversal 1382
Arborele binar Traversal Algoritmi
i functii ca parametri de 1;
Exemplu de programare: DVD-Store (Revisited) 1387
Revizuirea rapida 4:
exercitii de 1398
Programarea Exercitii 1401
GRAFICE
1403
1404
1405
1408
1408
1409
1409
1410
1414
‘lest RUsersviorelDesktopoodG++%620Programming.hin2.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
1414
1416
1418
1420
1426
1433
1435
1438
Introducere
Definitii Grafic si Notati
Reprezentarea grafic
Listele adiacenta adiacenta Matrix
Operatii pe grafice
Graficele ca ADTs
traversari Grafic
Adancime Primul Traversal Latime Primul Traversare
Algoritmul drumul cel mai scurt
drumul cel mai scurt
Exercitii minime Spanning Arborele de revizuire rapida
Exercitii de programare
STANDARD TEMPLATE Library (STL) 1441
mponentele STL 1442
Tipuri de containere 1443
jnere de secventa 144:
Funofli membre comune pentru toate functiile Containere 1452 membre comune la secventa
containere 1454
‘lest RUsersviorelDesktopoodG++%620Programming.hin2.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Exemplarul Algoritmul 1455
Gama-Based pentru Bucle 1458
Initializarea obiectelor vectoriale Tn timoul Declaratiel 1461,
Secventa de containere: deque 1462
A cor ist
iteratori 1473
Tipuri de tteratori 1473
erator Stream 1479
ere asociativi 1479
Asociativa Containere: set si multiset 1480 Set nedeclararea sau multiset asociativa
Containere 1480 Postul de inserare gi stergere din setul / multiset 1482
Adaptoare de containere 1486
stv 1486
Coada de 1488
Containere, asociate antet figiere,
sisuport Iterator 1489
algoritmi 1490
STL Clasificare Algoritmul 1491
Funefia Obiecte 1493
Se introduce Iterator 1499
Algoritmi STL 1501.
re Sif
Funetiile de a genera si generate_n 1503 Functille gsi, find if, find end si find first_ of 1505
Funetii mina, remove if, remove i remov if 1511
Funofille inlocuiesc, replace_if, replace_copy $i replace_copy_if 1513 Funofille de swap, iter_swap $i
swap_ranges 1517
Functiile de cdutare, search _n, sortare, si binary search 1520
Functii adjacent find, imbinare, si inplace merge 1524.
1SA, revers rotire sir
Functii conta, count if, max, max element, min, min element si random shuffle 1534
Functile for_each gi transforma 1535 Funcfile includ, set_intersection, set_union, set_difference i
set_symmetric_difference 1538
‘lest RUsersviorelDesktopoodG++%620Programming.hin 252302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Funofiile se acumuleazé, adjacent_difference,
inner_product gi partial sum 1546
4 ‘
exercitii de 1555
mar rcitii 156
ANEXA A: REZERVAT CUVINTE 1561
ANEXA B: OPERATOR PRIORITATEA 1563
ANEXA C: CARACTERUL SETURL 1565
ASCII (American Standard Code pentru
iformati fer)
EBCDIC (Extended Binary Coded Decimal
Cod de schimb) 1566
ANEXA D: OPERATOR SUPRAINCARCAREA 1569
ANEXA E: SUPLIMENTARE C ++ SUBIECTE 1571
Reprezentarea binara (Baza 2) a unui
Integer nenegativ 1571 Conversia unui numar de baz 10 la un binar
Numér (baz 2) 1571 Conversia unui numar binar (baza 2) la baza 10 1573 Conversia unui numér binar
(baza 2) pana la octal (baza 8) si hexazecimale (Base 16) 1574
Mai multe desore fisier de intrare / iesire 1576
Binar Figiere 1576 Figier Random Access 1582
Conventii de numire de figiere antet in
ANSI / ISO standard C ++ si Standard C ++ 1590
ANEXA F: headerul PILE 1593
cassert fisier antet (assert.h) 1593
cctype figier antet (ctype.h) 1594
isier
climits fisier antet (limits.h) 1596
cmath fisier antet (math.h) 1598
iddet i
CString fisier antet (string.h) 1599
ANEXA G: MEMORIE DIMENSIUNE PE UN SISTEM
SLRANDOM GENERATOR 1603 NUMARUL
‘lest RUsersviorelDesktopoodG++%620Programming.hin
are02.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Generator de numere aleatoare 1604
ANEXA H: REFERINTE 1605
ANEXA I: RASPUNSURILE LA impari
EXERCITII 1607
Capitolul 1.1607,
Capitolul 2 1610
Capitolul 3 1613
Capitolul 41614
Capitolul 5 1617
Capitolul 6 1619
Capitolul 7 1622
Capitolul 8 1623,
Capitolul 9 1626
Capitolul 10 1627
Capitolul 11.1630
Capitolul 12 1633
Capitolul 13 1634
(capitol[.4]1635]
Capitol[15 [1637
Capitol|16][1638|
(Capitol17)[1640
Capitol [18 [1644]
(Capitol [191643]
(Capitol [20/1646]
Capitol [21 [1647]
index [|_[1649]
‘lest RUsersviorelDesktopoodG++%620Programming.hin 282302.082016 (C ++ ce programare: Proietarea programuld, ncluiv uct de date, eda 7.
PREFACE
Binet wnt laa saterotienC + de programare: Proietarea progranilui,incusv Struc de date Proiectat dou semestra (CSI $i C82) C=+
Desigur acest text va oferi o gurd de aer proaspit pentru durmeavoastri si elevii dumneavoastrd, Cursurile de CS1 si CS2 servese drept
piata de temelie a curriculum -ului Computer Science. Scopul meu principal este de a motiva si excita toti clevii de programare
introduetive, indiferent de nivetal lor. Motivatia pentru invatare rase de excitare. Motivatia si de excitare sunt factor crtici care duc la
suecesul studentului de programare. Acest text este 0 culme gi dezvoltarea notele mele de clasa de-a lungul mai mult de cincizeci de
semestre de predare de programare de succes studentilor Computer Science.
Avertisment: Acest text poate fide asteptat si creeze o reducere serioasi a cereriide ajutor de programare in timpul orelor de birou,
‘Alte react adverse includ dependenja de student semnificativ diminuat pe alii fn timp ce invata programul
C +4 de programare: Proiectarea programului,inclusl struct de date a incepul ca o colectie de exemple scurte, exerciti si exemple de
programare de lunga duratd pentru a suplimenta cdnile care au fost utilizate la universicatea noastr. sa transformat in curdnd intr-0
colectie suficient de mare pentru a se deavolta intr un text. Abordarea adoptaté in aceasta carte exe, de fap, determinati de cerereastudenpilor
pentru claritate i lizibiltate, Materialul a fost scrs gi rescris ping cdnd elevii simgit confortabil cu ea. Cele mai multe dintre exemplele din
aceasti carte a rezultat din interactiunea clev in clas
Ca iin orice profesie, practica este esentiald. elevii de gatit practicd etetele lor. violonisti inmugurese practicd edntare lor. Noi
programatori tebuie sé practice de rezolvate a problemelor si scrierea de cod. Aceasta nu este o carte de bucate C ++. Noi nu lista par
sisimplu sintaxa C~+, urmat de un exemplu; vom diseea” de ee? *in spatele tuturor conceptelor. Chestiunea eruciala a" de ce?”
Raspuns penta fiecare subiect atunci cénd a introdus mai inti, Aceastl tebnicd oferi o punte de invajare C++, Studenfii trebuie sé
infeleagi" de ce? "Pentru a fi motivati si Invete,
1m mod traditional, un C ++ de programare neofit nevoie de o cunoastere de lucru a unui alt limbaj de programare. Aceastd carte nu ig
sum nici o experien}i de programare prealabili. Cu toate acestea, este necesar un anumit fond de matematicd adcevate, cum ar fi
algebra colegiu,
Modificari in editia a saptea
Cea de a saptea editie contine mai mult de 200 de noi exerctii si mai mult de 30 de noi exercitii de programare. O caracteristicd
spociald a editici a saptea este cartografierea exercitilor de sfirsit de capitol, cu obiectival lor respective de invajare (e) enumerate la
Sneeputul capitolul
Prima parte a capitolului 4 este reorganizat prin introducerea in eazul gi daca. structuile altceva mai devreme. De asemenea, prima
parte a capitolului $ este rescris. Aceasti edisie introduce, de asemenea, unele caracteristici ale C ++ 11, cum ar fi gama pe baza de
bucle, in capitolul 8, si ilustreaza modul in care si le foloseased pentru a procesa elementele unei matte, in capitolele 8 gi 12, precum
si pe recipientele de secventd, in Capitolul 21. Am inclus, de asemene, dferite exemple noi, cum ar fi exemplele 2-19, 3-12, 3-13, 3-
14,4-14, 65, 6-16, 87, 10-11, 11-4, 13-1 si21-6
Abordare
LLimbajul de programare C++, care a evoluat de la C, nu mai este considerati o limba in industrie, Numeroase colegii si universititi
folosese C++ pentru primul lor curs de limbaj de programare, C+ este o combinatie de programare structuratl si programarca
orientatd pe object, iar aceasta carte se adreseazs ambelortipuri
Aceasti carte este destinati pent un curs de doud semestre, CSI i CS2, in informaticd. Primele 10 sau 11 capitole pot fi acoperite in
primal curs, iartestul inal doilea curs.
‘lest RUsersviorelDesktopoodG++%620Programming.hin 292302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
InJuly 198 ANSI/ ISO standard € 1 a fost aprobat oficial. Aceastd carte se concentreazii pe ANSI/ ISO standard C | +. Chiar daca
sintaxa standard C ++ si ANSI/ ISO standard C ++ este foarte similar, Capitolul 7 discuté despre unele dint caracteristicile ANSI
ISO standard C ++, care mu sunt disponibile in standard C ++,
Capitolul 1 recenzii, pe scurt istoricul calculatoarelor gi limbaje de programare, Cititorul poate risfoi rapid prin acest capitol sisi se
familiarizeze cu unele dintre componentele hardware si componentele software ale calculatarului. Acest capitol confine o secjiune
privind procesarea unui program C +=, Acest capitol se desctie, de asemenca structuraté si programarea orientatd pe obiec:
Capitolul 2 trateazi clementele de bazi ale C++, Dupaiterminarea acestui capitol, elev si se familiarizeze eu elementele de baza ale
C++ si sunt gata pentru a serie programe care sunt suficient de complicate pentru a face unele calcule. Intare/iegire este
fundamentala pent orice limbaj de programare. Este introdust mai devreme, in capitolul 3, geste acoperit in detaliu,
Capitolele 4 gi 5 introducd structuri de control pentra a modifica fluxul seevential de execufie. Capitolul 6 studi de fumefit definite de
utilizator, Se recomanda ca cititori eu nici un fundal de programare prealabila a petrece timp suplimentar la capitolul 6, Céteva
exemple sunt fumizate pentru a ajutacititorii sd injeleagd conceptele de parametru de intdlnire gi domeniul de aplicare al unui
ator.
identifi
Capitolul 7 diseuta despre tipul simplu definit de utilizator de date (de tip enumerare), meeanismual de ANSI spatiul de nume / ISO
standard C++, si tipul sir. Versiunile anterioare ale C nu au inclus tipul de enumerare, Tipari de Enumerarea au utilizare foarte
Timitat’; seopul lor principal este de a face programul ugor de eit. Aceasta carte este onganizat ast(el ineat cititorii pot siri peste
seetiunea privind tipurile de enumerate in timpul primei lectui, fd a se conffunta eu nici o discontinuitate si apoi mai tirziu du-te
prin aceasta sectiune.
Capitolul 8 trateazi matrici in detaliu. De asemenca, acest capitol prezinté pe baza de gama pentru bucle, 0 caracteristici a limbajului
C +11 Standard si explied modul in care si le foloseased pentzu a process elementele unui ablou, Limitiri ale variat pe baza pentru
bbucle pe matric transmise ca parametrii functilor sunt, de asemenea, discutate. Capitolul 8 discut, de asemenea, un algoritm
sceventfial de cdutare si un algoritm de selecfie sortare. Capitolul 9 introduce inregistrde (structs) Introducerea struct in aceastd carte
este similar cu structs C. fn acest capitol este facultativa; aceasta nu este o conditie prealabili pentru oricare dintre capitolcle ramase.
Capitolul 10 ineepe studiul programarii orientate pe obiect (OOP) i introduce clase. Prima jumatate a acestui eapitol prezint& modul
in clase sunt definite ¢ uilizate inten program, Cea de a doua jumaitate a capitolului introduce tipuri de date abstracte (ADTS). Acest
capitol se arati modul in care clase in C++ sunt un mod nacural de a pune in aplicare AD'IS. Capitolul 11 continué cu fundamentele
de design orientatobiect (OOD) si OOP, si discuta despre mostenirca si compozifia. Aceasta explicé modul in clase in C ++ fumizeazi
‘un mecanism natural pentru OOD si modul in C ++ suporta OOP, Capitolul 11 discuti, de asemenea, modul in care pentru a gis
objeete intro anumitd problem’,
Capitolul 12 studi indict in detaliu. Dupa ce introducerea indicii si modul in care i le foloseascd inten program, acest capitol
scoate in evidenta particulaitijle clasclor cu membrii de date pointer si cum si le evite, Mai mult decit ati, acest capitol discut
despre modul de a crea side a lucra cu dinamice matrici bidimensionale, gi, de asemenea, explica de ce eu variat pe bazi de bucle nu
pot fi utilizate pe tablouri dinamice, Capitolul 12 discutd, de asemenea, clase abstracte gi un tip de polimorfism realizaté prin
intermediul funepilor vistuale.
Capitolul 13 continua studiul of 0D gi OOP in special, studiile polimorfismului in C+. Capitolul 13 trateaza in mod specific dou
tipuri de polimorfism-Supraincdrcarea si sabloane.
Capitolul 14 discutd despre © manipulare exceptie in detaliu, Capitolul 15 introduce gi discutd recussivitate, Acest
sine statdtor astfel neat si poatd fi studiate in orice moment dupa capitolul 9
este un capitol de
Capitolele 16 si 17 sunt dedicate studiului structurilor de date. Diseutate in delaliu sunt legate listele in eapitolul 16 gi slive gi eozile
de la capitolul 17. Codul de programare elaborat in aveste capitole este generic. Aceste eapitole folosese in mod eficient fundamentele
de Ooo,
Capitolul 18 discuta diverse cdutarea gi algoritmi de sortare. in plus fa}4 de modul in care aratdlocul de munca acest algoritmi, acesta
Hi, de asemenea, analize si rezultate relevante in evea ce priveste performanla algoritmilor. Analiza de algoritm permite
utilizatorului si decidd care algoritmul de utiizat int-o anumitd aplicatie. Acest capitol include, de asemenea, mai multi algoritmi de
sostare, Instructorul poate decide cate algoritmi pentru a acoper
Capitolul 19 oferd o introducere in arbori binari. divers algoritmi parcurgeri, precum si proprietitile de bazi ale arborilorbinari, sunt
discutate gi ilustrate. Sunt introduse arbori binari speciale, numite arbori de céutare binare,, Cularea, precum gi inserarea element gi
stergere dinte-un arbore binar de cdutare, sunt descrse gi ilustrate, Capitolul 19 discutd, de asemenea, algoritmi binare nonrecursive
copac traversal, Mai mult decat atdt, pentra a spori flexibilicateaalgoritmilor pareurgen, aati cum s& construiased si s& trac functii ca
parametri pentru alte functii. Acest capitol se discuta, de asemenea, (cchilibrate inaltime) arbor AVL in detaliu. Din cauza unor
considerente de lungime a textului, discujia privind arborii AVL este fumizat ca o sectiune separati si este disponibil pe site-al Web
care Insoleste aceasti carte
algoritmi de grafic sunt discutate in capitolul 20. Dupa introducerea terminologia de baz teoria grafutilor, este discutatd reprezentarea
sraficclorin memoria calculatorului, Acest capitol se discuta, de asemenca, algoritmi de grafice parcurgeri, cel mai scurt algritmul
‘lest RUsersviorelDesktopoodG++%620Programming.hin 302302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
dil, iaralgoritmul de arborele de acoperire minim. sortare topologicd este, de asemenea, discutate fn acest capitol si sunt disponibile
pe site-ul Web care insofeste aceasta carte.
C + este echipat ew un motor putemic biblioteca Standard Template Library (STL) -din siructuri de date si algoritmi care pot fi
Uulilizate in mod eficient intro gama largd de aplicatii. Capitolul 21 deserie in detaliu STL. Dupé introducerea eelortrei componente
de bara ale STL, se rat madul in care recipientele de seeven}a sunt utilizate inten program. Containere speciale, cumar fi stive $i
co7i, sunt, de asemenca, discutate. A doua jumdtate a acestui capitol prezint3 modul in care diversi algoritmi STL pot fi utilizate tote
tun program. Accst capitol destul de lunga; in fanctie de disponibilitatea de timp, instructorul poate acoper cel pufin seeventa de
containere,iteratori,clasele de stv si coad’ gi anu algoritmi
‘Anexa A enumeri cuvintele rezervate in C 1. Anexa B prezinta gi ordinea de prioritate asociativitatea operatorilor C |. Anexa
listeaz ASCII (American Standard Code pentra schimbul de informafii) si EBCDIC Extended Binary Coded Decimal Interchange),
seturi de caractere. Anexa D cnumerd operatorii de C++, eare poate fi supraincarcat
Anexa E are rei obiective in primul rind, vom discuta despre cum sf convert un numdr de la zecimal in binar gi bina in zecimal
‘Apo vor discuta despre fisierele de acces binare gi aleatoare in detalu, In cele din unm, vom desctie conventile de denumite a
figictelor de antet in mele ANSI/ ISO standard C ++ si Standard C ++. Anexa F discuté despre unele dntte cel rutine de biblioteca
cle mai utlizate pe scar larg i include numele figcrelor header standard C++, Programele din Anexa G arata cum se imprima
dimensiunea memorei pent: tipurle de date incorporate pe ssteraul dummeavoasts,precum si modul de ullizare a unui generator de
humerealeatoare. Apendicele H di refernge selectate pentu studi fn continua, Anexa [fer rispunsurile la exereiji numerotate
imparta cane
Jn figura 1, liniile punctate inscamné c& capitolul precedent este utilizat intruna dintre sectiunile eapitolului si nu este neapirat 0
conditie prealabila pentru capitolul urmnitor, De exemplu, capitolul 8 se refer Ia matrici in detaliu, in capitolele 9 i 10, ne arata relagia
Intre matrce si structs si matrice gi clase, respectiv. Cu toate acestea, in cazul in care capitolul 10 este studiatdinainte de capitolul 8,
apoi sectiunea care se ocupd cu tablouri din capitolul 10 poate fi omisi fird nici o intrerupere, Aceasti sectiune particulard poate fi
studiaté dupa cea studiat a capitolul 8.
Se recomanda ca primele gase capitole sunt acoperite secvential. Dupii care si acopere primele gase capitole, in cazul in care cititonul
este interesat de invajare OOD si OOP timpuriu, atunei capitolul 10 poate fi studiatd imediat dupé capitolul 6. Capitolul 7 pot fi
studiate oricdnd dupa capitolul 6. Dupi studierea primelor sase capitole in ondine, unele dintre abordari sunt
1. capitole de studiu in scevenga: 8,9, 10, 1, 12, 13, 14, 15, 16,17, 18, 19,20, 21
2.capitole de studiu in seeventa: 8,10, 12, 13, 11, 15, 16,17, 14, 18, 19,.20,21
3. capitole de studiu in seeventa: 10, 8,12, 13, 11, 15, 16,17, 14, 18, 19,20, 21
Pe misuri ce diagrama capitolal depe capitolele 17 si L8 pot fi acoperite in orice seevents
tipic, capitolele 17 gi 18 sunt studiate in ordine. In mod ideal, ar trebui si studieze capitolele 16, 17,18 gi
5121 pot fi studiate in orice seeventa.
u toate acestea, in mod
19 in ovdine, Capitolele 20
Cum se foloseste Cartea
Aceasti carte poate fi folosit in diverse moduri. Figura 1 araté dependenga de capitole
‘lest RUsersviorelDesktopoodG++%620Programming.hin 312302082016 C ++ ce programare: Prjectarea programuld ncluiv uct de dat, eda 7.
Cater 6
FIGURA 1 Capitolul Diagrama de dependent
CaRACTERISTICI ALE CARTII
arena ene ta | 2
aes |
epaoing Rc 5 i i hap nyu a one C1
Piperepemente Ne Cem Cea ene
‘sence i Beart
[clipes aren Spence le kop se ape etam a
‘cxomplu de programa: Fibonacci Numa
Patru cular! de design interior prezinta exacte C ++ cod gl comentatll legate.
‘lest RUsersviorelDesktopoodG++%620Programming.hin2.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Un singur film este disponibil pentru ecare capitol priving optional
CourseMate care insofegte acest text, Flecare flm este prolectat pentru a explica madul fn eare funefieneaza un program,
sega
Feria dec aah
Chen pnt nt hc hs Ppa a ena ce
‘Ee seve ump deci ps pe can Su nepte aa
‘Sttuoturi ce control
aeae eee ee cee eee ee
‘tpt seers, poemelcrcontaplpencuue fase arene Ca () freee pep pe mic echo wal eaten eife be ems
I
a
t
au
‘lest RUsersviorelDesktopoodG++%620Programming.hin 392302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Roo
Relstat
reer erm
Mai mutt de 400 de diagrame vizuale, aat extinse gi exhaustive, sa ilustreze concepte difcile.
Exemplele ilustreazai conceptele numerotate cheie cu codul lor relevant. Codul de programare n aceste exemple este urmati de o Run
Sample. 0 explicate atunci rezulta ea descrie ceea ce fiecare inie din codul face.
la act ge a evidentia fapte importante despre conceptele Intraduse th acest eapitl
‘Dhekelia
Tew eet Jee farmer oe]
[a oe |
[oe er |
‘lest RUsersviorelDesktopoodG++%620Programming.hin6 +4 ce programare: Prtectarsa programuld, inclusiv stuctr de da, eda 7,
Exemple de programare sunt in cazul in cave tatu in eapitolul vine improuna.
Aceste exemple predau abiltii de rezolvare a problemelor $i includ etapele concrete de intrare, de iegire, analiza problemelor gi
algoritmul de proiectare, design de class, gi un program de stare, Toate programele sunt concepute pentru a fimetodic, consecvent gi
gor de utiliza. Ficoare Exemplu de programare incene cu 9 analiza a problemelor, care este urmat de algoritmul de aroiectare $i / sau.
ce prolectare de clasé, gi flecare pas al algoritmulul este codat in C +. in plus fafa de a alutaelevil sa invefe tehnicle problemelor este,
aceste programe detaliate araté elevului cum s& pund in aplicare concepte intr-un program de real C ++,
xempl de programa: Conversie Lungime
a
De ermine
ede speech eee a comarmec
socom eet, 2 cen emus cone
Igri comet
Va recomandam insistent ca elev sd studieze cu atentle exemplele de programare, in scopul de a invata C++ In mod eficient. Student
Iva de obicei mult de la programe complet lucrate-out. Mal depart,
exemale de programare a reduce In moc: considerabil "nevola de alutor, Tn afara séll de clasé g!s& susfiné studenfilorelevilInorederes tn
exec
Lines
‘lest RUsersviorelDesktopoodG++%620Programming.hin 392302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
prop i
visit
thet pi ave ce
sty AAR
compile
conned ston
Exercif dea consolida In continuare de invatare gi s8 se asigure c& studenti au, de tapt, stapanit materialul
sto, eesti an lace ea
Narr in pancetta na xcs label de fv dace
|. Mae umioac fii end deviate sa se.
‘ln Hpoateretcn eet eee)
Inc +, sai por sent dant ening coral ost)
«Ades operator etuousadena vl operandi)
{LF ete varia pointer ste prefer lean dererae acre pnt (3)
| se opto darting prota mie dst psstoral pane
{Merbilele cast eto inpal cs! progam st ui vriailedinenie()
‘Varia innic sat iste loin operortn* W668)
Detain poe desows inde varia p.(6)
LDosaatina eg pelos vail inch ewe sein 716)
judas ince pesto vabl pon, po dea *p*2, exe vain +.) Ava a vee ei
Into i
lnsructiueea “Ute stevia +)
I avindin veto deli at * dss: p ze (50
{ne gure based pervs busta ()ar Im pul deer ane ane poste on pont}. Inte copie demic adinime, out sal mute edie Se acl p pune acer
‘mae (11) Lepse eilervraalareloelnmomenal compa (13)
‘lest RUsersviorelDesktopoodG++%620Programming.hin 362302.082016 C ++ ce programare: Projectarea programuld, ncluiv uct de dat, eda 7.
opt ee estate Tre tsp Namen ag
eta mp eumerace eng natn ene ede ere
Exerc de programare provocare elev s& scrie programe C ++ cu un rezuat specificat
1b, sertetee eaghtbg crac emerson rpc gies te CrP ee
engraver do pieac dene Skstagnctettas step)
aim ech ar tag,
Sveum pora crs rao ae ge arr nrg germ rng
alae Perea Earchree apa (compe eo ein oe nb ie ar pide
Trivu incuatcacvearatpc cae
ere S0s5200S rate pene te 8%,
are 015 sn, te ee 2885 8
atthe pe 19808,
Pee $e MAS, ln ein de $4.
ne eres ion br oe mira dc itd
‘lest RUsersviorelDesktopoodG++%620Programming.hin 3772302.082016 (C ++ ce programare: Proietarea programuld, ncluiv uct de date, eda 7.
SUPPLEMENTAL
RESOURCES
CourseMate
Proftai la maximum de impul de studiu cu tot ce ai nevoie pent areus fntr-un singurloe. Citi manual, evidentag is ia
notie, examinafi flashcards, vizionaclipuri video is ia practicachestionare on-line. fat mai ule la wwos.censave con/onursemate
C++ programare CourseMate include urmitoarele caracteristci
+ Video pas prin programe in fiecare capitol, in timp ce teste integrate asigura un feedback imediat pentru a evalua infelegerea
dumneavoastr
+ Manual Lab vB permite sé aplicafi material eu o multitudine de practice, exercitii practice
+ Interactive Teste gi jocuri de studiu de foraj concepte cheie de capitol, m timp ce cesiuni deschise dezvolta abilitayi de gindite
critic.
+ Interactiv de carte eleetronie, Mash-wrilo, mai mult!
Instructoii pot adfuga CourseMate la pachetul de manual, sau studengii pot cumpata CourseMate direct prin wnscngaehraincom,
Cod sursa
Codul sursi, in ANST/ ISO standard C ++, este disponibil pentru studenfii pentru a descirca de la wwwceneugebrain comsi prin
CourseMate disponibile pentru acest text. Aceste fisiere sunt , de asemenea , disponibile pentru instructori la
sso.cengage com. Figierele de intvare necesare pentru a rula unele programe sunt incluse , de asemenea , cu codul sus,
Resurse instructor
Unmitoarele materiale suplimentare sunt disponibile atunci cdnd aceasta carte este folositi intr un cada clas, Toate instrumentele de
predare sunt disponibile cu aceasté carte la ss0.cengage-com. Este necesar un cont de instructor.
Manual de instructor electronic
Manualul instructorului wrmeaza textul capitolului-cu-capitol si include materiale pentra a ajute la planificares gi onganizarea unui
curs eficfent, angajarea,
Manualul include Overviews, capitolul Obiective, Predarca Sfaturi, Teste rapide, Clasa Discutie Subiecte, Proiecte aditionale, resurse
suplimentare gi termeni cheie. © programa analitica a probelor este de asemenea disponibil,
Banca de testare
‘Testarea de invijare Cengage Powered by Cognero este un sistem flexibil, online, care vi permite si
+ autor, edita gi gestiona confinutul de testare bancar din soluyii multiple Cengage de invajare
‘lest RUsersviorelDesktopoodG++%620Programming.hin 382302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
+ creati mai multe versiuni de test into elipa
+ livreze teste de la LMS dumneavoastt, la clas, sau oriunde dori
Prezentari PowerPoint
Aceasté carte Vine cu slide-uri PowerPoint pentru a insotiflecare capitol. Slide-uri pot fi folosite pentru a ghida prezentarea la clasd,
pentnu a pune Ia dispozifia studenfilor pentru revizuite capitol, sau penteu a imprima ca fige de clasd. Instructorii pot adauge proprille
Jorslide-uri pentru subicete suplimentare pe care le introduc in clasf, precum si personaliza slide-urile cu figura completa Fisierele din
text.
solutie Figiere
Fisierele de solutii pentru toate exercitiile de programare, in ANSI ISO C ++, sunt disponibile pentru descareare instructor de la
sso.cengage com. Figietele de intrare necesare pentru a rula unele dintte exerifii de programare sunt de asemenea incluse cu fisierele de
solufie.
ACKNOWLEDGEMENTS
Exist multi oameni care tebe se muljumese cine, ntr-un fel sau altel, u contribu le suceesulacesei cin primal sin, 5
dor se moljurnese tuturor studentior eae, n timp pregitini, a fost spontane fa mine spune éacd anumite porivninecesare
‘pent af reformalat pentru o mai bund intclegere gi citire mai clad fa continua, ag dors le mulyumeseeelor cae au timis-e
numsroase comentarii pentru a imbundtii la a gsea edie, Sunt, de asemenea, foarte recinoscitor pent rcetzorit cre au evizuit
versiumile antrioae ale acosei ct sau oferit multe sugesti crite eu privire la modal in care sl fmbundteasca
Ii datorez foarte mutta urmitoarelerecenzorii care au ficut sugesti utile, critic pentru inbundtitrea acess ei a textului: Tey
Hoffer Montana State Univerity City College; Douglas Krench: North Central State College: Xiangdong Li: New York City
College of Technology; s Jey Miller: Coleg! Occidentl.
in continuare, imi exprim datoriti Jim Gish, Senior Product Manager, pentru recunoasterea importanfei si unicitatea acestui proiect.
Toate acestea nu ar fi fost posibild fir o planificare atentd a Developer Senior Content, Alyssa Prat si Product Development Manager,
Leigh Hefferon, Eu adresez sincere multumiri Alyssa, precum si de a Content Manager de proiect, Jennifer Felts-George. De asemenea,
‘mulfumese Shanthi Guruswamy de Integra Software Services pentru noi asistarea in menfinerea proiectului in grafic. As dori sii
‘muljumese lui Chris Scriver si Serge Palladino de Cengage de invatare pentru testarea cu rabdare gi cu atengie codul si a descoperi
crorile de seriere si erori
Aceasti carte este dedicatd parintilor mei, care le muljumese pentru binecuvantarile loz,
in cele din uma, sunt recunoscator pentru sprijinul sofiei mele sadhana si mai ales fiica mea Shelly, M-au inveselit ori de cite ori am.
{ost coplesit in timpul serierii acestei cit
Salut orice comentari cu privite la text. Comentarile pot fi transmise la urmatoatea adresd de e-mail: maliki@ereiebton.edu_
DS Malik
CAPITOL
‘lest RUsersviorelDesktopoodG++%620Programming.hin 302302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
O PRIVIRE DE ANSAMBLU CALCULATOARE SI
LIMBAJE DE PROGRAMARE
Tot in acest capitol, vet:
1. Aflati mai muite despre diferiteletipuri de calculatoare
2. Exploreaza componentele hardware i software ale unui sistem informati
2. Aflati mat mute despre timba unui calculator
4. Aflati mal mutte despre evolutiatimbilor de programare
5. Examinaglimbaje de programare de nivel nalt
6, Descoperitice un compilator este i ce face
7. Se examineazi un program ¢ ++
8, Exploreaza modul h care un program C ++ este procesat
9. lati ce un algoritm este side a explora tehnic de rezolvare a problemelor
10, Fil congtient de proiectare structuraté si metodoloi de programare de proiectare orientate obiect
11. Fi congient de standard C ++, ANSI /ISO standard C 4» si +611
Introducere
Termeni precum" Intemetul, "care nu erau familiarizati cum doar 20 de ani, sunt acum connane. Elevii din scoala elementard cu
regularitate "suri" Intemetul side a folosi calculatoare pentns a proiecta si implementa proicctele lors clasa. Multi oameni folosese
{ntemetul pentns a cduta informatii si de e comunica cu ceilalfi, Acest lucra este tot ficul posibil prin uilizarea de software difeite,
asemenea, cunoscut sub numele de programe pentru calculator. Faria software-ului, un computer nu poate functiona,
ddezvoltat prin utilizarea limbaje de programare. C ++ este una dintre limbile de programate, cate este foarte potrivit pentru dezvoltarea
de software pentru a realiza sarcini specifice. Obiectivul principal al acestei cj este de a va ajuta sf Inveje C+ limbaj de
programare pentru a scrie programe. Insinte de a incepe programarea, este util sd se infeleagd uncle dintre terminologis de bazd sia
diverselor componente ale unui calculator. Incepem cu o trecere in revista istorii calculatoarelor
Softwareal este
O scurta trecere in revista a istoriei Calculatoare
‘lest RUsersviorelDesktopoodG++%620Programming.hin 40230czonz018 (C++ co programa: Prletreaproramld inckaiv struct de dle, eda 7.
Primal dispozitiv de cunoscut pent a eféctua calcule a fost abacul. Abac a fost inventat in Asia, dara (ost folost tm vechiul Babilon,
China, sin toatS Europa, ping la sfrgitul Evului Mediu, Abacfoloseste un sistem de alunecare margele intrun suport peniru adunare
si scAdere. in 1642, filosofil francs si matematician Blase Pascal a inventatdispozitv de calcul numitPascaline. Acest a avut opt
selectoare mobile pe rot i ar putea calcula sume de pin la opt fre lung Atitabae i Pasealine ar putes efectua doar operat de
auunare si seidere. Maj trziu, in secolul al 17-lea, Gottied von Leibniz a inventat un dispozitiv care a fost capabil de a adauga,
seSdea, iamulf gi impaqi.in 1819, Joseph Jacquard, un fesiforfancez, a descoperitc¥ instrufiunile de fesut penta rizboaie de fesut
sale arputea fl stocate pe eardui cu giuri pecforte ia cle. fa timp ov cle deplasate prin rizboiul de fesu in secvenfs ae a tecut
prin gdurile i ar lat fre de culoarea corceté gi textura, Un fesitr ar putea rearanja cardi si schimba modcll ysuts In ese},
ciile programate un rizbo’ de fesut pentra a produce modele din pind, industria de jsut poate pirca si iba pufine in comun ca
industria de ealculatoare. Cu toate acestea decade a stoca informati prin stanjare glu pe un card sau dovedita fi de © mare
Jimportanja fa dezvoltarea ulterior a calculatoarelor.
a inceputul sila mijlocul anilor 1800, Charles Babbage, un matematician englez siom destin fz
calcula: motoraléiferena si motorl analitic. Motorul ar putea efectua operfiuni de diferent complexe , cum ar fin mod automat
cuadratura numere. Babbage a construit un prototip al motorulu difereng, dar nu a constuitdispozitivul ea. rimul motor complet
diferentaa fost finalizata la Londra ,in 2002, 183 de ani dupa ce a fost proiectat. Se compune din 8.000 de pies, ate o greutate de
cinci tone, si masoara 11 de picioare lungi. O replica a motorului diferent a fst finalizata in 2008 gi este expusd la Muzeul de storie
Computer in Mountain View, Califomia (juz isos comousrhistorvare/ Babbage 9. Majoitatea lucriilor lui Babbage este cunoscut
prin serierie sale coleg Ada August, contest de Lovelace, Augusta este considera primal programator de calculator.
La sfargitul secolului al 19-Iea, oficialii US Census nevoie de ajutor in tabulating eu exactitate datele recensimantului. Herman
Hollerith a inventat o maging de calcul care a fugit pe electrcitate gi utilizate cartele perforate pentru a stoca date, Masina de Holletith
a fost extrem de succes,
Hollerith a fondat Machine Company Tabulating, care mai (arziu 2 devenit calculator si tehnologie de corporatie cunoscuti sub
snumele de IBM.
Prima masina de calculator cum arf fost Mark I. A fost constrain 1944, in comun de ede IBM gi de la Universitatea Harvard, sub
conduceres ofHowatd Aiken. cartele perforate au fost utilizate pentru a alimenta date in aparat, Mark Ta fost de 52 de picioare
lungime, edntireste 50 de tone, sia avut 750.000 de piese.
Jn 1946, numeri integrator calculator electronic (ENIAC) a fost constr la Universitatea din Pennsylvania, Acesta continea
18.000 de tuburi de vid gi se cdntareste aproximativ 30 de tone
Computerele pe care le eunoastem astizi floseseregulile de proiectareofeite de John von Neumann la sfritulanilor 1940. Proicctl
sua inclus componente cum ar fo unitate aritmeti logied,o unitate de control, memori si dispoziive de intrare/ ieir, Acexte
componente sunt descrse fa setiunea unnitoae, design pe computer von Neumann face posibila stocarea instraetiunilor de
programare satel in acelasi spfiu de memorie. in 1951, Computerul Automatic Universal (UINIVAC),a fost constut i vindut la
US Census Bureau
in 1956, invensia de tranzistori avut ca reaultat mai mici, mai rapide, mai Giabile gi mai multe computere eficiente din punet de vedere
energetic. Aceasta eri a vazut, de asemenea, apariia industriel de dezvoltare de Software, odatd cu introducerea FORTRAN si
COBOL, dous limbaje de programare timpuie. In urmatoarea progresul tehnologic major, tranzistori au fost inlocuite cu cizeuite de
miei dimeasiuni integrate, sau" chips-usi." Chips-urile sunt mult mai mici si mai eficiente decat tranzistor, si cu noua tehnologic de
azi poate fi ficuta si conjini mii de circuite pe un singurcip. Ele dau computere viteza de procesare extraordinarl.
In anul 1970, microprocesorl, o unitate central de procesare intregul (CPU) pe ua singurcip, a fost inventat. in 1977, Stephen
‘Wozniak si Steven Jobs a proicctat sia construe prin! computer Apple in gatajul lor. in 1981, IBM a inttodus computer iu
personal (PC). In 1980, clone ale PC-ul IBM a facut calculatorul personal chiar mai accesibile. Pe la mijlocul anilor 1990, oamenii din
‘mai multe plimibari de vial au fost eapabili ski permite, Calculatoarele contiguk sk devini mai rapid si msi pusincostisivoare ca
avansuri tehaologice.
calculatoare modeme zi sunt putemice,fiabile gi ugor de utlizat. Fi pot accepta instructiuni rstite cuvinte gi 8 imite rationamentul
‘uman prin inteligenfé artificial, Sistemele expert asista medicil ina face diegnostice, aplicaji de calcul mobile sunt in crestere in mod
semnificativ, Cu ajutoral dispozitivelor portabile, drivere de livrare pot avea acces Ia sateliii de pozitionare global (GPS) pentru a
verifica locatile clientilor pentru camionete gi livriri, Telefoanele mobile vi permit si verificati email, a face rezerviri aeriene, ase
vedea modul in care stocusile sunt performante, accesarea conturilor bancare, si si comunice cu familia si prietenii prin intermediul
social media,
‘lest RUsersviorelDesktopoodG++%620Programming.hin 412302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
esi existd mai multe categorii de caleulatoare, cum ar fi mainffame, de dimensiuni medii, si micro, toate caleulatoarele in comun
cdteva elemente de baz, care sunt descrise in sectiunea unmatoare
Elemente ale unui sistem informatic
Un computereste un disportiv eletronie de comenzi ofperforming capabile. Comencile de baza pe care orealizeazA pentru calculator
sunt de intare (obtine date), de isie (rezultat de afigare), stocare, precum 9 performanfa de operat aritmetice i logice. Exist dou
componente principale ale una sistem informatic: hardware i software. ln umtosrelecétevesecfuni, vei inva oscutétecere in
revist @ acestor component. Si ne uitim la hardwarel mai ita
hardware-ul
Componentele hardware majore includ unitatea central de procesare (CPU); memorie principala (MM), numité memoric cu acces
aleator (RAM); dispozitive de intrare / iste; gi de stocare secundar. Cateva exemple de dispozitive de intrare sunt tastatura, mouse-ul,
side stocare secundar, Exemple de disporitive de ieste sunt ecranul, imprimanta i stocarea secundard. SA ne uitim la fieeare dintre
aceste componente mai in detaliu
Unitatea central de prelucrare si memorie principal
Unitatea centralé de procesare este "ereierul "al unui calculator si piesa cea mai scumpa de hardware intr -un calculator Cu eat este
‘i puternic procesorul, mai repede calculatorul, Operaii atitmetice i logice sunt efectuate in interionul procesorului, Figusa 1-1 (@)
prezintd uncle componente hardware.
34
“
Componentele hardware FIGURA 1-1 dint-un calculator gi memoria prineipala
1000
1001
A
2000 2001
Memoria principals (b)
memoria principal, sau memorie cu aces aleato, este conectat direct la CPU. Toate programe tebe 3 fe incdrate ia memoria
principal inate dea putea fi execuate In mod sila, toate datletrebuie sfc aduse in memoria principal insinte dem program
poate man care computeral este opi, ote in memori principal este pier.
Memoria principald este o seeventi ordonati de celule, nu
principal, mumita adresa celulei. Aceste adrese Vi ajuti
principala cu uncle dete.
ite celule de memoric. Ficcare celuld are o locayie unicd in memoria
scesati informariile stocate in celuld, Figura 1-1 (b) arat memoria
computerele de astizi vin cu memorie principali constind din milioane de miliarde de celule, Cu toate cd Figura 1-1 (b) araté datele
‘lest RUsersviorelDesktopoodG++%620Programming.hin 422302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
stocate fn celule, continutul unei celule poate fi fie o instructiune de programare sau de date. Mai mult decdt atit, aceasta figurd
prezintd datele ca numere gi litere. Cu toate acestea, dup’ cum sa explicat mai tarziu in acest capitol, memoria principala stocheaz
toate ca socvente de 0 si 1. Adresele de memorie sunt de asemenca exprimate ca seevente de 0 sil
SSEGUNDARE DE DEPOZITARE
Pentru ci programele gi datele tebuie si fie incdteate in memoria principald inainte de preluctate gi pentru cd totul in memoria
principald se pierde atunei cdnd caleulatorul este opt, informatiile stocate in memoria prineipald trebuie si fie salvate inte-un alt
dispozitiv de stocare permanentd, Dispozitivul care stocheazd informatii permanent (cu exceptia eazului in dispozitivul devine
inutilizabil sau modificafiinformafile prin reserierea acestuia) se numeste stocare secundar. Pentru putea transfera informatii din
‘memoria principala la stocare secundara, aceste componente trebuie si fie conectate direct unul cu altul. Exemple de stocare secundare
sunt hard disk-uri, lash drive si CD-ROM-ur
Intrare / iesire Dispozitive
Pentru un calculator pentru a efectua o sarcini utili, acesta trebuie si fie fn misura si iain date si programe gi afigarea rezultatelor
caleulelor. Dispozitivele care se hrnese date si programe in computere sunt numite dispozitive de intrare. Tastatura, mouse-ul, scanner,
‘camera foto, si secundare de stocate sunt exemple de dispozitive de inttare. Dispozitivele care utilizeaz computerul pentru a afiga
rezultatele sunt numite dispozitive de iesire. Un monitor, imprimanté si stocare socundara sunt exemple de dispozitive de iosire.
Software-ul
Software-ul sunt programe scrise pentru a efectus sarcini specifice. De exemplu, procesoare de cuvinte sunt programe pe care le
utilizafi pentru a serie scrisori, documente, si chiar crf, Toate software-al este scrs in limbaie de programare, Existi dou tipuri de
programe: programe de sistem si programe de aplicatie.
Programele de sistem de control calculator. Programul de sistem care se incated mai intai cdnd pomiti calculatonul este denumit
sistemul de operare. Faré un sistem de operare, computerul este inutil. Sistermul de operare se ocupa de activitatea de ansamblu a
calculatorului si fumizeaza servicii, Unele dintre aceste servicii includ managementul memoriei, intrae /iesie activi,
‘management de stocare. Sistemul de operare are un program special care organizeavd stocare secundari, astfel ined si putefi avea
acces convenabil informatii. Unele sisteme de operare bine-cunoscute sunt Windows 8, Mac OS X, Linux i Android.
Programele de aplicatic a efectua o anumitd sarcina. Procesoare de texte, foi de calcul si jocuri sunt exemple de programe de aplicatie.
Sistemul de operare este programul care ruleaza programe de eplicatic.
Limbajul unui calculator
Atunci cdnd apasati A pe tastaturd, caleulatorulafigeaza A de pe ecran, Dar ceva ce este de fapt stocat fn interiorul memoria principal
a caleulatorului? Care este limba calculatorului? Cum aejioneaza stoca tot ecea ce tastati pe tastaturs?
Amintifi- vi cd un calculator este un dispozitiy electronic, Semnalele electrice sunt utilizate in interionul calculatorutui pentru a
procesa informatii. Existi dou tipuri de semale electrice:. Analogice gi digitale semnale analogice sunt in mod continuu sub diferite
forme de unda continua folosite pentru a eprezenta lucturi cum ar fi un sunet, Casete audio, de exemplu, a stoca datele in semnale
analogice. Sermnalele digitale reprezinta informafi cu 0 secven{d de 0 si 1. A 0 reprezint& o tensiune joa, iar | reprezinta o tensiune
ridicata. Semnatele digitale sunt purtatoare de informafii mai Gabile decat semnalele analogice gi pot fi copiate de la un dispozitiv la
altul ,cu 0 precizie exacti, $-ar putea si fi observat ci atunci cdnd face @ copie a unei casete audi, calitatea sunetului a copiei nu este
Ja fel de bun ea gi banda original, Pe de altd parte, atunci cind copiafi un CD, copia este aceeasi ea gi originalul. Caleulatoarele
folosesc semmale digitale.
Deoarece semnalele digitale sunt prelucrate in interiorul unvi calculator, limba unui calculator, numit limbaj magind, este 0 sceven}a
dde Osi 1. Ciffa 0 san I se numeste o cifti binar sau bifi, Uneori, 0 secventi de 0s gi Is este mentionatd ca un cod binar sau un numir
binar
Bit: O citi binard 0 seu 1
0 seoventi de opt biti se mumeste octet. Mai mult decdt atat, 2" octefi = 1024 octeti se mumeste kilooctet (KB), Tabelul 1-1 rezum
temenii folosigi pentru a deserie diferite namere de octet
‘lest RUsersviorelDesktopoodG++%620Programming.hin 432302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Tabelul 1-1 unt binare
[Unitere _][Simbol]Biti/ Bytes
footet vip
fkiobyte KB __|2® octet = 1024 octeti
megabyte |MB 1024 KB= 2 7° KB = 2° octef = 1.048.576 ostef
[weabre [88 [1024 Me = 2 mB = 2° ootef = 1.073.741.8264 de octefi
ferabye [te 2024 G8 = 2 7s = 2° octet = 1,099,541,627.776 octef
102478 = 2° Te
Petaocret|[PB.
Exabyte fee
11,152,921,504,608,846,976 bytes
bettacctei|28 [104 eB = 27 eB ~ 27 octofi = 1,180,594,620,717,411.303,424 octef)
Ficcare lite, un numarsau un simbol special (cum arf * su {) de pe tastatui este codifcat cao seevent de biti, fecareavind o
reprezentate unica. Schema de codificae cel mai feevent ulizate pe calculatorele personal este de sate ii American Standard
Code pentru Schimbl de Informa (ASC). Setul de date ASC est format din 128 de caractere numeroate de la 0 Ta 127. Accasta
este, in setul de date ASCII, pozitia primului caracter este 0, pozitia celui de al doilea caracter este I, si aga mai departe, in aceasta
Schomé, A este codifica ea numa bier 1060001. De pt, A este caraterl 66th fn codul de eractere ASC, dar porifa sa este de 65
= deoarece poziiaprimulu caracter este 0. fn plus, numa binar 1000001 este cel Reprezentarea binaré a 65. caracterl 3 este
Codificat co 011001 denotat edn setul de caactere ASCIL, poziti personajului 3 este de 51. este incatcaracterl 3 este caracteral
52nd di setul ASC, De asemenca, rezult cé 0110011 este reprezontara binar a $1, Ponto list completa stului de caractre
{ASCII imprimabile, consulta Anexa
NOTA Sistemul Numarul pe care Ie folosim In viata noasted de 7 cu 21 se numogte sistemul zecimal, sau baa 10.
Deoarace totu in interorul unui calculator este reprezentata ca o suecesiune de O's! adie,
rhumere binare, sistemul numeric care utlizeaz8 un calculator este numit binar, sau o baz 2. Am indicat m paragraful precedent c&
‘umarul 1000001 este reprezentarea binaré a 65. Anexa E deserie modul in care se efestueaza conversia unui numar de la baz 10a
baza 2 $1 vieeversa,
In interiors calculatoralui, fiecare caracter este reprezentat printr -0 secventa de opr biti, adic’, ca un octel, Acum ,reprezentarea
binari cu opt biti de 65 de ani este 01000001. De notat ci am addugat 0 la stinga reprezentari sapte bifi de 65 de ani pentru a se
converti lao reprezentare de opt biti in mod similar, vom adauga 0 0 Ia valoarea binari de $1 pentru a objine opt biti reprezentarea sa
binari 00110011
ASCTI este un cod de sapte bifi, Prin urmare, pentni a reprezenta fiecare caracter ASCII in interiorul calculatorului, rebuie convert
repreventarea binard de sapte bifi un caracter ASCII lao reprezentare de opt biti binar. Acest lucmu se realizea7i prin addugarea la 0 la
stinga codificarii ASCU sapte biti cu caracter. Prin urmare, in interiorul ealculatorului,caracterul A este reprezentat ca 01000001, iar
ccaractenul 3 este reprezentat ca 00110011.
Mai exist galt scheme de codificare, cum ar fi EBCDIC (utilizat de IBM) si Unicode, care este o dezvoltare mai recent, EBCDIC
este format din 256 de caractere; Unicode este format din 65.536 de caractere. Pentru a stoca un caracter care apartine Unicode, aveti
nevoie de 16 biti sau doi octeyi. Unicode a fost creat pentru a reprezenta o varictate de earactere $i este in continu expansiune. Se
compune din caractere din alte limbi decét engleza.
Evolutia de limbaje de programare
(Cea mai limba de baz a unui calculator, imba masind, of’ instructiuni de program in bifi. Chiar dac’ majoritatea caleulatoarelor
cefectueaz’ aceleasitipuri de operatiuni, designerii de calculator pot fi alese diferite seturi de coduri binare pentru a efectua
‘operatiunile. Prin urmate, limba masina de o maging nu este neaparat acceasi cu limba masina de alta masind, Singura consistenta
dintre caleulatoare este faptul ca, in orice computer modem, toate datele sunt stocate si manipulate ca coduri binare.
caleulatoarele impurii au fost programate in limbaj masind. Pentru a vedea modul in care instructiunile sunt serise in limbaj masin’, si
‘lest RUsersviorelDesktopoodG++%620Programming.hin 402302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
presupunem cl dori si utilizai ecuatia:
salarii= rata + ore
penina calcula salaile ptimnae. in plus, sf presupunem ci codul bina 100100 standut petra srsin, 100110 standuri penta
tultiplicare si 100010 standu pentru migacin a limba) masind, poate fnevoie de unndtoaea secven(h de insiiciuni penta
calcula sla elptimdnale
100100 010001 100110010010 100010 oL0011
Pentru a reprezenta ecuafia salariilor pe sdptdmand inttun limbaj masind, programator a trebuit si-si aminteascd codutile de limb
‘masind pentru diverse operatii, De asemenea, pentru a manipula datele, programator a trebuit i-si aminteasc’ locatiile datelor din
‘memoria prineipala, Acest lucru trobuie si vi amintifi coduri specifice de programare ficute nu numai foarte dificil, dar, de asemenca,
predispuse la ero,
limbajete de asamblare au fost dezvoltate penta face munca programatonului mai usoard. trun limba) de asamblar,oinstuctiune
este o form uso de refit, numit un maemonie, De exemplu presupunem ci SARCINA reprezinté codul magni 100100, standuri
pent MULT eod masiné 100110 (mltiplicare) si STOR reprezinta codul masini 100010
Folosind instructivni limbaj de asamblare, putefi serie ecuayia pentru a calcula salariile siptimanale dupa cum urmeazi:
covficient de fucireare de ore MULT stor salar
Dupa cum puteti vedea, este mult mai usor si serie instructiuni in limbaj de asamblare, Cu toate acestea, un calculatornu poate
executa in mod direct instrucfiuni limbaj de asamblare. Instuctiunile trebuie mai inti si fie traduse fn limbaj masind. Un program
‘numit un limba) de asamblare traduce instructiunile de limbaj de asamilare in limba) magind
Montator: Un program care traduce un program scrs in limbaj de asamblare intr-un program echivalent in limbaj masina,
Trecerea de Ia limbaj magin’ la limbaj de asamblare a ficut mai usor de programare, dar un programator a fost ined fortat si gandeases
in termenii instructiunilor individuale ale masinii. Urmtoral pas spre a face mai usor de programare a fost de a concepe limbaje de
nivel malt, care au fost mai aproape de limi naturale, cum ar fi engleza,franceza, germana si spaniola. Basic, FORTRAN, COBOL, C,
C++, CH: si Java sunt toate limajele de nivel fnalt. Vei invata limbaj de nivel inalt C+* in accasti cart.
Jn C++, sero ccuatia salailor pe siptimind, dup cum urmeazs
selon = rata * or;
Instrefiunea de seris in + este mult mai usor de infeless este auto ~explicatve la un utlizator novice , cae exe failiriat ou
aritmetica de bazd, Cas in caval limbajului de asamblare, cu toate aestea, computerut na poate executa in mod direct instructiunt
scrigefntr-un limba) de nivel fnalt. Pentru a executa pe un ealeulatos, aceste instructiuni C + trebuie mai inti sl fie traduse im limbaj
‘masina. Un program numit un compllator traduce instructiuni scrise fn limbaje de nivel inalt in cod masi
Compilatorul: Un program care traduce instructiuni serise intr-un limbaj de nivel inalt in limbaj masind echivalent.
Procesarea unui program C ++
fn seiunite anterioare, am discutat limb may i Timbaje de nivel inal yi a ardtat o dectarafe C++, Pentru ct un computer poate
ingelege doar ima} masind, sutefi gata si evizuiascd masurle necesare penta a procesa un program sri nC +
Laat
‘considerare urmtorul program C++:
include
folesind n:
sspace std; int main ()
‘
‘lest RUsersviorelDesktopoodG++%620Programming.hin 482302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
cout <<"Programul Prima mea C 4 ."<< Endl; reveni. 0;
}
Laacest moment, nu trebuie si fie prea preocupat de detaliile acestui program. Cu toate acestea, daci rulaji (executa) acest program,
acesta va aliga urmatoatea linie de pe ecran
Primul meu program C++
ne amnintim cdtun computer poate infelege doar limibaj masind. Prin unnate tn scopul dea mula cu succes acest program, codul
teebuie mai itd fe raduse fn limba] masina In aeasté setiune, vor examina masurle necesare penta a execula programe serise
inc
Pasii urmatori, aga cum se arati in Figura 1-2, sunt ned
sare pentru a procesa un program C++,
1. Utilizai un editor de text pentma a erea un program € 41 urmdnd regulile, sau sincera, a limbajului de nivel inalt. Acest program se
‘numeste codul sus, sau progremul sutsi, Programul tiebuie si fie salvat intr -un figier text care are extensia, epp. De exemplu, da
afi salvat programul precedent in fisierul numit FirstCPPProgram, atunci numele sdu complet este FitstCPPProgram.epp.
Program Sursa: Un program seris intr-un limbaj de nivel inal
2. Programul C++ in secjiuneaabterioard confine instucfiunea #ineLude . futr-un program C ++, delami care incep
cut simbotul# sunt mite directive preprocesor.Acestedeclarfi sunt proccsate de un program numst preprocesor.
3. up’ procesarea directivelor preprocesor, unmitorul pas este de a verifica dac& programul se supune regulilor programatii
limbajului, adie3, programul este corectsintactic gi traduce progranaul in limba masini echivalent, Compilator verified programul suis
pentru erori de sintaxa si in cazul in care se constatd nici o eroar, se traduce programul tn limbs maging echivalent. Programul
Jimbaj masind echivalent este numit un program de obicct, Programul Objeet: Versiuneca fn limba magina a programului de limibaj de
nivel inalt
4, Programele pe care le serieti intra limbaj de nivel inalt suat dezvoltate folosind un mediu de dezvoltare integrat (DE). IDE-al
confine mai multe programe care sunt utile in crearea programului. De exemplu, acesta confine codul necesar (program) pentnu a afiga
rezultatele programului si mai multe funcyii matematice pentru a fice Joc de muned programator oarecum mai ugor. Prin urmare, in
cazul in care anumite elemente de cod este deja disponibil, pute}i utiliza acest cod, mai degrabi decat a sctie propriul cod. Odata ce
programul este dezvoltat si compilat eu succes, rebuie s¥ adued in continuate codul penta: resursele utlizate din IDE in programul tu
penttu a produce un program de final pe care computerul poate executa, Acest cod setis dinainte (program) se af
bibliotecd. Un program numit un agent de legaturi combing programal obiect cu programele din biblioteci
feu loe numit
Linkerut: Un program care combina programal obiect cu alte programe in bibliote
executabil
sieste folosit in program pentru a erea codul
5. Trebuie sf incdreati programul executabil urmator in memoria principal& pentiu executie. Un program numit un inedtedtor
indeplineste aceasta sarcina
fncarestor: Un program care fncareé un program executabil in memoria principal
6. Ultimul pas este dea executa program
FIGURA 1-2 Procesarea unul program C+
Figura 1-2 prezintd modul in care un program tipic C-++ este process.
‘lest RUsersviorelDesktopoodG++%620Programming.hin 462302.082016 (© ++ ce programare: Prjectarea programuld, ncluiv uct de dat, eda 7.
cH Program
+ spi
Stop2
step3
a |,
Stop
Stops
Stops
Ca programator, vei nevaie in principal, si se preacupe de pasul I, Asta este, trebuie sa invefe, sd inteleaga si sf stipancascé regulile
limbii de programare pentru a erea programe de sursi,
up’ cum sa mentionat mai devreme, programele sunt dezvoltate folosind un IDE. IDEs utilizate pentru a crea programe in limbaj de
nivel inalt C++ includ Visual C+ 2012 Express si Visual Studio 2012 (de la Mierosofi), si C ++ Builder (de la Borland) bine-
ccunoscut, De asemenca, puteti utiliza Dev-C += IDE de la Software-ul pentru a crea Varsarea de singe si de programe de testare C +>.
Aceste IDE-ari conn un editor de text pentru a crea programal sursi, un compilator pentru a verifica programul sursi pentru erori de
sintaxa, un program pentru a lega codul obiect eu resursele IDE, precum si un program pentnu a exeeuta programul
AcesteIDE-ari sunt desta de usor de utiliza. Cand compilati programal, compilator na numa c@ identifica erorile de sintaxd, dar de
asemenea, de obice,sugereaz8 cum si le corecteze. Mai mult dec att, cu doar simpla comand, codul obiect exe egat ct resurscle
utilzate de IDE. De exerplu, comanda cae face legitura pe Visual C +4 2012 Expres si Visual Stadio 2012 este den eons sau
reconstu.(Penra clarifies uplimentare in ceea ce privexeutilizares acestor comer, vertical documentatia acestor IDE). fn
azul in care programul nu est ined compilat, fecaredntre acestecomenzi mai inti compilea7d programul si apoi lik-ii produce
codul executabil
Site-ul Web fun msdn micrasofcom/ensitbrar /vsudio/ns255620asne explic’ modul de utilizare Visual C ++ 2012 Express
si Visual Studio 2012 pentru a crea un program C++.
Programarea cu ciclul Analiza problemei-codificare a marfurilor-Executie
Programarea este un proces de vezolare a problemelor. Diferte persoane folosese tehnici diferite pentru a ezolva probleme, Anumite
tehnici sunt bine conturat gi usor de urmat. Ei nu rezolvl numai problema, dar de asemenea , da o perspectiva asupra modului in eare
se ajunge Ia solutia, Aceste tehnici pot fi modificate rezolvarea problemelor cu usurin}a daca domeniul probleme se schimb,
Pentru a fi un bun rezolvator problema si un programator bun, trebuie s§ urmeze bunele tebnici de rezolvare a problemelor. Una
ccomund tebnica de rezolvare a problemelor include analizarea nei probleme, subliniind cerinfele probleme’ si proiectarea pasi, mumit
un algoritm, penteu a ezolva problema,
Algoritmul: Un proces de rezolvare a problemelor pas cu pas in care a ajuns o solutic, la intro camtitatefints de timp.
Intr-un mediu de programare, procesul de rezolvare a problemelor necesita urnitoarele tri etape:
1. Analiza si sublinia problema si cerinjele sale de solujie, precum si proiectarea unui algoritm pentnu a rezolva problema.
2, Punerea in aplicare a algoritmului inte-un limbaj de progremare, cum ar fi C+, sisi verfice daca algoritml functioneazi,
3. Menfinerea programului prin utiizarea si modificares-l ifthe schimbisi de domeniu problemi,
Figura 1-3 rezumd primele doud etape ale acestui proces de programare.
‘lest RUsersviorelDesktopoodG++%620Programming.hin 472302082016 © ++ ce programare: Prlectarea programuld, incluiv stuctr de dat, eda 7.
——
a
=|
=
=.
Te
FIGURA 1-3 Problem-analizd codare-executie dclu
Pentru a dezvolta un program pentru a rezolva o problemi, incepe prin analizarea problemei. Apoi proiectati algoritmul; a serie
instructiunile de program intr-un limbaj de nivel inalt, au un cod program; si introdueeti programul intr-un sistem informatie.
Analizind problema este primul si cel mai important pas, Accasté ctapi va cere sf faceji umtoarele:
1. infetege bine problema,
2. $i infeleaga cerinfele probleme. Cerinjele pot include, dacd programal necesitd interactiunes cu utilizatorul, indiferent daca acesta
‘manipuleazi date,
daci aceasta produce iyi, cosa cede ier rat. fn carl n care programul manipulea date, programatorrebuie si sie ce date
este moduli care este eprzentt. Asta exe tebuie tla datele most a cazl in cae program produce de epi, ebuie
5 gu cum artrebul a fe generate gi fomatat rezultatele.
3. In cazul in care problema este complexd, se imparte problema in subprobleme si repetafi pasii| si2. Accasta este, pentru probleme
complexe, evefi nevoie pentru a analiza iecare subproblenna ¥ si in{eleaga cerialele fiecarei subproblema lui
Dupi ce analiza ca atentie problema, miter pas este dea proieta un algoritm penta rzolva problema. Daci ati rupe problema
in subprobleme, ave nevoie pent aproieca un algortm pentma fiecaresubproblema. Oda ce ai proicta un algoritm,tebuie si
‘etfica corectitudincs. Pate} testa, uncor,corectitudinca unui algoritn prin uilzarea de date de csantionare. ln alte momente, a
putea avea nevoie penta a efectuaunele analize matematie penta testa corecttudines algoritmalui
dati ce ati proiectat algoritmul gia verificat corectitudinea sa, pasul urmitor este sil transforme fnteun cod de programare
echivalent. Apoi utilizaji un editor de text pentru a introduce codul de programare sau prograraul int-un calculator. fn continuare,
tucbuie 88 v8 asigurai c programul urmncazS sintaxa limbii lui. Pentru a verfica corcctitudinea sintaxa, executaji codul printr-un
‘lest RUsersviorelDesktopoodG++%620Programming.hin 48230coos 2016 (++ ce rotamer: Preiecara program, inci uct de dt 7
compitator fn cazal fn care compilatonl genereazd mesaje de eroar,trebuie si idenifcaierrile din codul, eliminates apo
exccutafi codul pein compilator din nou. Atunei cand sunt eliminate toate eroile de siataxé, compilatorl genereacodul msi
cchivalent,lnkeral lagi codul masin curesursee sistemului iar ncSredtoral plascaza programul in memoria principala, este incdt
S$ post fi exeeutati
UUeimul pas este dea executaprogramul. Compitatorulgaranteaz doar ci programal urmeazsintaxalimbi ui. Aceasta mu
garanteazi cd programul val corect. In timpul execute, programul s-ar putea termina anormal din cauza unor ero logice, cum arf
maria eu zero. Chiardacdprogramal se ermin® in mod normal, acasta poate genera in continuarerzultatecronate. In aceste
conditi sar putea st reexamine cod lgoritmul sa chiar analiza problem
Experienja dvs. de programare generald va avea sueces daca iti petreci suficient timp pentru a finaliza analiza problema inainte de a
incerva si serie instructiunile de programare. De obicei tu faci aceasté ucrare pe haitie cu ajutoral unui pix sau creion, Lund aceasta
abordare atenti a progra de avantaje, Este mult mai usor de a gisi croriinte-un program care este bine analizat si bine
concepute, Mai mult decat atat, un program de analizat cu atenjie gi proicctal este mult mai usor de uamécit gi de a modifica, Chiar gi
cei mai experimentafi programatori petrec o perioadd considerabild de timp, analiza unei probleme si proieclarea unui algoritm.
De-a lungul acestei citi, nu vei invata numai regulile de seriere a programelor in C ++, dar vei invata, de asemenea, tehnici de
rezolvare a problemelot. Cele mai multe dintre capitole congin exemple de programare care discuta despre probleme de programare.
Aceste exemple de programare predau tehnici de modul de a analiza yi dea rezolva probleme, algoritmi de proiectare, algoritmii de
cod in C ++, si, de asemenea ajuta si infelegeti conceptele discutate in acest capitol, Pentru a beneficia pe deplin de carte suport toate
astea, va recomandam s8 luctaji prin aceste exemple de programare.
{In continuare, vi oferim exemple de diferite tehnici de analiza a problemelor sia algoritmalui de proicetar.
Exemplul 4-1
In acest exemplu, vom projecta un algoritm pentru a gasi perimetrul si aria unui dreptunghi
Pentru gasi perimotrul si aria unui dreptunghi, trebuie sd siti Iungimea si lafimea dreptunghiului
Peri
1 si aria dreptunghiului sunt apoi date prin urmatoarele formule:
perimetru = 2 + (latime lungime ~
zona de latime lungime
Algoritmal pentra a gsi perimetnal gi aria dreptunghiului este:
11a lungimes dreptunghiului,
2. 1a latimea dreptunghiului
3. Gasiqi perimetrl folosind urmitoarea ecuatie:
perimetru = 2 + lungime + latime)
4, Gasiqi zona cu ajutorul urmitoarei eeuatil:
Suprafita ~ latime tungime
Exemplul 1-2
In acest exemplu, vom proiecta un algoritm care calculea7d taxa de vanzare gi prejul unui articol vandut inteaan anumit stat
Impozitul pe vanziri se calculeazi dupa cum unmeaz’: Porjiunca statului ataxei de vanzare este de 4%, iar porjiunea din orag a taxci
de vanzare este de 1,5%. In cazul in care clementul este un element de lux, cum ar fio magina mai mult de $0,000 $, stunci exists o
taxi de lux de 10%,
Pentnua calcula preful elementului, avem nevoie pentru a caleula porjiunea de stata impozitului pe vanzii, portiunea orasului a taxei
de vanzare, si, in eazul in care acesta este un element de lux, taxa de ux. salePrice denotd s& presupunem prejul de vanzare al
clementului, stateSalesTax denoté impozitul pe vanziri de stat, citySalesTax denoté impozitul pe vinzari al oragului, luxury Tax
denoti taxa de lux, salesTax denota impozitul total al vinzarilor, iar amountDue denoti pretul final al elementulu:
Pentnua calcula impozitul pe vanziri rebuie si cunoastem preful de vanzare al elementului si daca elementul este un element de lux.
StateSelesTax 5 citySalesTax poate fi calculaté cu ajutorul urmatoarclor formule:
stareSalesTax ~ salePrice + 0,04 eitySalesTax ~ salePrice + 0.015
‘lest RUsersviorelDesktopoodG++%620Programming.hin 49230coo 2016 (++ ce rotamer: Preiecara program, inci uct de dt 7
fn continuare, pure determina luxunyTax dupa cum umes
{n cazul in care (clement este un element de lux)
JwxuryTax = salePrice «0,1 sltfel
IuxuryTax=0
in continuare, pureti determina salesTax dupa cum unmeazs
salesTax = stateSalesTax + citySalesTax + luxuryTax
In cele din una, puteti calcula amountDue dupé cum umeaza
amountDue = salePrice + salesTax
Algoritmul pent determinarea salesTax si amountDue est, prin urmare:
1. Japrefl de vinzare al clementului
2, Se determind daci clementul este un element delux.
3. Glut portunea de stata taxei de vinzare eu gjutorul formule
stateSalesTax = salePrice + 0,04
4. sii poniuneaoragului a taxel de vinzare cu ajutonl formule
citySalestax = sloPrice 0.015
5, Gisiji taxa de lux flosind urmitoarea formu
in carlin cae (clement est un clement delux)
JoxunyTax= salePrice 01 altel
JwxunyTax = 0
6. Gast salestax folosin fom:
selesTax = stateSalesTax + itySolesTax + haxuryTax
7. Gasiti amountDue folosind formula: amountDue ~ salePzice + salesTax
Exemplul 1-3
In acest exemplu, vom proiecta un algoritm care calculeava salariul lunaral unui agent de vanziri la un magazin local.
Privesteflnarea
Fiecate agent de vinzdri are un salar de bazd, Vanzitorl primeste, de asemenea, un bonus, la sfisitul fect luni, pe baza
uumitoarelor rite: fa cazul in care vinzitonil a fost cu magazia tap de cine ani sau mai pufin bonusul este de 10 § pentru fiecare
an incare el sa ea a kucrt acolo. in cazul in care vanzitorul a fost cu magazinul de mai mult de cinci ani, bonusul este ée 20 $ pentru
fiecare an in care el sau ea a Tuerat acolo, Agentul de vinzari poate eitiga un bonus suplimentar, dup eum urmeaza fn cazul in eae
totalul vanzirlor eatizate de agent de vanzari pentru luna sunt de cel putin 5.000 8, dar mai putin de 10.000 $, el sau ea primeste un
commision de 3% la inzae. fn cazul ta cae total vinzisilorrealizate de agent de Vanzari pentru luna sunt de cel pufin 10,000 §, el
sau ea primeste un comision de 6% la vinzare
‘lest RUsersviorelDesktopoodG++%620Programming.hin 502302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Penta a calcula salariul lunarun agent de vanzar, trebuie si siti salarul de baz, numdnul de ani pe care vanzitonil a fost cu
compania, iar vanzarile totale realizate de agent de vanzari pentru luna. Sa presupunem cd baseSalary denotd salarul de baz,
noOfService Years eprezint numarul de ani pe care vanzatoral a fost cu magazin, bonus denoti bonus, totalSales denota vanzarile
totale relizate de agent de vanzari pentru luna, jar additionalBonus denota bonus suplim
Putefi determina bonusul dup cum urmea73:
if oO fService Years este mai mic sau egal cu cinci) bonus = 10 noOfService Years altfel
bonus = 20 + noOfService Yeas
In continuave, pute determina bonus suplimentar de agent de vanzii, dupa cum urmeazi
fn cazul in care (totalSales este mai mica de 5000) additfonalBonus= 0 altfel
daca (totalSates este mai mate sau egald eu 5000 gi totaSales este mai micd de 10000) additional Bonus = totalSals + (0,03) altel
additionalBonus = totalSales + (0,06)
fn urma discutiet de mai sus, aveti posbilitatea si proiectai scum algoritmel pentru a calcul salaiul lunar un agent de vinci
1. la baseSalary
2. lenoOfServiceYeas
3. bonus Se calculeazdfolosind umuitonre fonmuli
if n00fService Years este mai mic sat egal cu cinci bonus ~ 10 noOfService Years altfl
bonus = 20 noOfService Years
4. latotalSees.
5, Se calculeazi additionalBonus utilizind umitoarea formula
cazul in cre (totalSale este mai mic de $000) additionalBBonus ~ 0 altel
acd (totalSales este mai mare sau gall cu 5000 gi totalSals este mai mcd de 10000) additionslBomus ~ totalSales + (0,03) ltl
adéitionalonus = totalSeles (0,06)
6 Secalculearé Paycheck uilizand ecuata
Paycheck = baseSelary + bonus ~ additionalBonus
Exemplul 1-4
In acest exemplu, vom proicta un algortm pentra a juca un joc shicitl nam
Obicctivl este accla dea gener leatoru un mumérinteg mai mare sau egal cu 0 i mai putin de 100, Apoi cee players (wiizator)
penta a ghici numirul in cazul in care juedtorul ghiceste numirulcorect, ese un mesa) adecvat, in eaz contra, veifcaji dacd
‘numarul ghicit este mai mie decdt numarul aleator. Dacd numacul ghicit este mai mic decdt numéral aleator generat, de iegire mesajul *
ghici ta este mai mic decét numdrul. Ghiceste din nou!"; in caz contrar, iesire mesajul," ghici ta este mai mare decdt numa. Ghiceste
din nou!”, Apoi cers jucdtorului petra a introduce un alt numir, Jucdtorul este determinat si ghiccascd numérul aleatoriu pani cind
jucitoru! introduce numarul coreet
ste diseutat
Primul pas este de a genera un numir aleator, asa cum este descris mai sus. C++ ofri mijloacele de a face acest luctu,c
in Capitolul 5. Num Presupunem e4 reprezinta numdnul yi ghici aleatoare standuri pentru numarul de ghicit de tre jucdtor
Dupa ce aparatul intr ghi
puteti compara ghici cu numirul aleatoriu, dupa cura urmeaza:
{in cazul in care (ghici este egal cu num)
Imprima "Afi ghicit numrul corect." in eaz contrar
daca (ghici este mai mid deedt num)
‘lest RUsersviorelDesktopoodG++%620Programming.hin 512302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Imprima "ghici dumneavoastri este mai mie decdt numarul, Ghici din nou!” in eaz contrar
Imprima *ghici dumncavoastr este mai mare decét numarul. Ghici din nou!"
Acum aveti posibilitatea si proiectafi un algoritm dupa cum umeazi
1G
area unui numa alestor sun cu num.
2. Serepsi pait urmator pnd cindjucitoral a ghicit numimil corect
A. Prompt player penta introduce ghic
. Verfcai valoarea de ghici
in cazul in care (ghici este egal eu num)
lunprima “Aji ghicit numdrul corct.” in eaz contrar
daca (ghii este mai mied decdt num)
Innprima “ghici dumneavoastl este mai mic decdt numitul, Ghici din nou!” AltfeL
Inmprima "ghiei dunmeavoasts este mai mare dsett numul, Ghici din nou!"
5, vom folosi acest algoritm pentru a serie un program C ++ pentru ajuca ghcitul numnul
in capitol joc
EXEMPLUL 1-5
Existé 10 elevi intro elasi. Figcare elev a luat einei teste iar fiecare test este in valoare de 100 de puncte, Dorim si proiecteze un
algoritm pentru a calcula nota pent fiecare elev, precum si media de clasd. Calificativul se atribuie dup cum urmea7a: Dac scorul
‘mediu de testare este mai mare sau egal cu 90, nota este A; daca scorul mediu de testare este mai mare sau egal cu 80 gi mai pufin de
90, nota este B; daca scorul mediu de testare este mai mare sau egal cu 70 si mai putin de 80, nota este C; daca scomul mediu de testere
este mai mare sau egali cu 60 si mai putin de 70, nota este D; in caz contrar, nota este F. De notat cd datele este format din numele
clevilor si scorutile lor de testare,
Accasta este o problema care poate fi impanitd in subprobleme, dup cum urmeaza: Exist cinei teste astfel inet sA proicctaji un
algoritm pentru a gsi scorul mediu de testare, in continuare, vi proiectafi un algoritm pentru a determina gredul. Cele dows
subproblemelor sunt de a determina scorul mediu de testare gi pentru a determina gradul
‘Si ne proiecta mai inti un algoritm pentru determinarea punctajului mediu de testare. Pentru a gsi punctajul mediu de testare, se
adauga cele cinci scorurile de testae si apoi se imparte suma de 5. Prin urmare, algoritmul este umatoarea:
1 Ia cinci scorurile de
2. Adangati cinei scorusile de test
‘Suma reprezintl pentru Sa presupunem ca suma scorusilor de
3.medie pentru
‘anduri Presupunem c& scomal mediu de testare. Apoi
suma medie /5;
Jn contisuare, v8 proiectai un algoritm pentru a determina gradu. clasa de standuri si presupunem class stibuis unui student.
Unnitorlalgoritm detemnind note
dlacd medie este mai mare sau egal cu 90 grade = O alfel,
daci mec este mai mare sav egal cu 80 grade~ B altel
> lungime cin; >> latime cin;
13. Se calcuteaza perimetr
lperimetru=2 * (ungime + Iatime); zona latin
[4 Se caleleaza zona,
Luati in considerare prima declarafie In C ++, standuti pentru intrare cin comin. In timpul executiei programulti, codul asoc
instruciuniutiizatorului la datele de intrare gin cazul in care utilzatorul introduce o arigine valida, atunci de origine vor fi stcate in
‘memorie, dict, va deveni valoarea hungimil. Codul C ++ in Pasul 3 folosegte valorile lungime gi lime pentru a calcula perimetrului, care
apoi este atribuit perimetruul,
cu acesta da
in scopul de a scrie un program complet C ++ pentru a calcula suprafafagI perimetrul,trebule s8 cunoascd structura de baz a unl
program C +=, care va fi introdusa in capitolul urmitor. Cu toate acestea, daca suntefi curios si gtie cum arata programul complet C ++,
putefi vista site-ul Web care insofegte aceasta carte gi ulta-te la codul de programare stocate in figierul Cht_Example_1-1_Code.cpp.
Metodologii de programare
oud abondiri populare pentru designul de programare sunt abordarea siructuraté si abordarea orientatd pe obiecte, care sunt
prezentate mai jos,
Programare structurata
Impartind o problema in subprobleme mai mici, se numeste proiectare structurati, Fiecare subproblema este apoi analizata, iaro solutic
este objinutd pentru a ezolva subproblema, Solufile la tate subproblemelor sunt apoi combinate pent arezalva problema de
ansamblu. Acest proces de implementare a unui desen sau model structurat se numeste programare structurata. Abordatea structurata-
‘lest RUsersviorelDesktopoodG++%620Programming.hin 592302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
design este, de asemenea, cunoscut sub numele de design de sus in jos, de design de jos in sus, rafinament In trepte gi programarea
modular,
Programare orientaté-obiect
Proiectarea otientata obiect (00D) este o metodologie de programare utilizat pe scari larga, In OOD, primul pas in procesul de rezolvare
a problemelor este de a identifies componentele numiteobiete care tau Ia baza ofthe soli si pent a determina modkl in care
tceateabiecte interactioncaza une cu ceallta, De exempll, of presupunem cl dort sf sere un program care automatizeat proces
de iehirere video pentru un magazin local de video. Cele dou obicete principale fn acest problem sunt video gi client
Dupa identificarea obicetclor, pasul urmator este de a specifica pentru ficcare obiect datele relevante si eventualele operatii care
trebuie efectuate pe datele respective , De exemplu, pentru un obiect video, dates pot include:
+ numelefilmului
+ an a lansat
+ producator
+ companie de productic
+ numirl de copii in stoe
Uncle dinte aceste operat pe un obieet video dear putea include:
+ verificaea numele filmu
+ educerea numicului de exemplare fn ste deere unl dup o copie inchiriata
+ inerementarea numarul de exemplare in stoc de cétre unul dup un client retumeaza un anumit videoclip
Acest lucru ilustreaza faptul ci fiecare obiect este format din date gi operafi la aceste date. Un obiect combina date si operafit asupra
datelor intr-o singurd unitate. in OOD, programul final este o colectie de obiecte care interactioneazd. Un limbaj de programare care
pune in aplicare OOD se numeste programarea orientata spre obiecte (OOP) limba. Vei invata despre multiplele avantaje ale OOD in
capitolele ulterioar.
Pentru ci un obiect este format din date si operafi la aceste date, inainte de a putea proiecta side a folosi obiecte, avefi nevoie pentre a
{nvafa cum si reprezinte date in memoria calculatorului, cum si manipuleze date, precum si modul in care si puna in aplicane
‘operafiuni. La capitotul 2, vet invaja tipurile de date de baz ale C ++ si de a descoperi cum sa reprezinte si si manipuleze datele din
memoria calculatoralui, Capitolul 3 analizeaz modul in care datele de intrare inten program C +~ si wzultatele generate de un
program C++ de icgire
Pentru a crea operat, scrieti algoritmi sisi le puni in aplicare int-un Limba de programare. Pentru ed un element de date int-un
program complex, de abicei, aro mai multe operafi, pentru operatiuni separate una de alta $i s& le utilizeze in mod eficient $i inteun
‘mod convenabil, utilizatifunctii pentru a pune in aplicare algoritm. Dupa o scurtd introducere in capitolele 2 si 3, veti invita detaile
funefilor in Capitolul 6. Anumite algoritmi impun ca un program de a lua decizii, un proces numit de sclectie. Alt algoritmi pot
necesita anumite declare}ii si fie repetate pana edad sunt indeplinite anumite condifi, un proces numit repetitie. Alji algoritm ar
putea necesita atit de selectie gi de repetife. Vei invata despre mecanismele de selecjie gi de repetifie, numite structuri de control, in
capitolele 4 si $. De asemenea, in capitolul 8, folosind un mecanism numit o matrice, vetiinvaja cum s8 manipuleze datele atunci cdnd
celementele de date sunt de acelas tip, cum ar fi elementele dintr-o lista de cifre de vanzar
inecle din umn, pentru a Iucra cu obicet,tcbuie sf titi cum sé combine datele si operafi asupradatelorfntr-o singurs unitate in ©
++, mecanismul care permite combinarea datelor si operafiunilor privind datele intr—o singurk unitate se numest o cast Vei fava
urn functioneazd clase, eum si ucteze eu clas, si cum si creeze clase in clase capitol si date Abstractie (nai tru i aceasté cat).
Dupa cum puteti vedea, trebuic si invefi destul de cateva lucrarifnainte de s lucra cu metedologia OOD. Pentru a face acest lucra mai
tusor de invijare si mai eficienté, aceasti carte se imparte in mod intentionat structure de control in doua capitole (Capitolul 4-
selecfie; Capitolul $-repetitie)
‘lest RUsersviorelDesktopoodG++%620Programming.hin 502302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Pentru nele probleme, abordarea structuratd a conceperii de programe va fi foarte eficient. Alte probleme vor fl abordate mai bine de
OOD. De exemplu, dacé o problema necesité manipularea seturi de numere cu functii matematice,s-ar putea folosi abordarea de
proicctare structuraté si prezinta ctapele necesare pentru obyinerea solujici. Biblioteca C+ fumizcaza © multitudine de funetii pe care
Je putefi utiliza in mod eficient pentru a manipula numere, Pe de alté parte, daca dorti si serie un program care ar face o masina de
bomboane operafionale, abordarea OOD este mai eficientd, C ~* a fost proieetat special pentru a pune in aplicare OOD. Mai mult
decdt att, OOD fimcineas bine x ws design struct
Att aborditile de proiectare si OOD structurate cer si stipancasc# componentele de ba7a ale unui limbaj de programare pentru a fi un
programator cficient. in capitolele 2 pani la 8, veti invija componentele de baza ale C + +, cum ar fi tipurile de date, de intrare / ieyire,
structuri de control, funcfille definite de utiizator, si tablouri, cerute de oricare tip de programare, Dezvoltim si ilustreazii modul in
care aceste concepte funcjioneaza falosind abordarea de programare structurata. Incepind eu Clasele capital si date abstractiune, vom,
dezvolta si dea folosi abondarea OOD,
ANSI/ ISO standard C ++
Limbajul de programare C ++ a evoluat de la C, sia fost proiectat de Bjame Stroustrup de la Bell Laboratories Ia ineeputul anilor
1980. De Ia inceputul anilor 1980 pana la inceputul anilor 1990, mai multe compilatoare C ++ au fost disponibile. Chiar dacd
tudsiturile fundamentale ale C +~ fn toate compilatoarele au fost in mate parte aceeasi,limbajul C++, se face referite in aceastd carte
ca standard C++, fost in evolufic in moduri usor diferite in diferite compilatoare. Ca urmare, programele C ++ nu au fost intotdeauna
portabil de la un compilator la altul
Pentna a rezolvaaccasté problem ta incepusulanitor 1990, fost ret un eomitetcomun al American National Standards Institute
(ANSI si OnganizayiaIntemafionala de Stndardizare (ISO) pentru standardizazea sintaxa C + +. La mijlocul lui 1998, ANSI/ ISO C
“++ standardele lingvistce au ost aprobate. Cele mai multe dintrecompilatoarcle de azi sunt conforme cuaceste noi standarde. De-a
Jungul uli eajiva ani, ++, comisia sa itait de mai multe or penta standardiza in continvare sinlaxa C-+~,In aml 201,
doitea standard de C+ fost aprobat, Obicctivul principal al wcestui standard, denumit in continuare C+ + II, este dea face cod C
“++ mai curat si mai ectente, De exemp, noul standard intoduce datcle de tip mg, lane. pent a ace Tas eu numer ntregi mari,
declararea automata a variabilelor folosind dectarji de ingializare, imbuntjind funcionaltatea pentra bucte dea luca in mod
ficient eu tablouri i containee gi noi algoritmi. Unele dine aveste noi caracteristii C-++ sunt introduse in aceast cart
Aceast carte se concentcszi pe sintaxa C + eum fost aprobat de ANSI/ ISO, denomit ANSI ISO standand C++
SCURTA REVIZUIRE_
1. Un computer este un disporitiv electronic capabil 58 cfetuere opera aritmetice si logice
2. Unsistem informatie are dou componcnte: hardware wi sofware.
3. Unitateacentala de procesare (CPU) si memoria principala sunt exemple de componente hardware.
4, Toate programele trebuie si fie aduse in memoria principal
inte de a putea fi executate,
5. Atunei cind aparatul este oprit, totul in memoria principalé este pierdut.
6, depozitare secundari asiguré stocerea permanent pentru informatii. Hard disk - uri, flash drive si CD-ROM-ari sunt exemple de
stocare secundare,
7 Intrare la calculator se face prin intermediul unui dispozitiv de inttare. Doua dispocitive de intrare sunt tastatura gi mouse - ul
8 Calculatozul timite isira sal un disporiti de igie, cum ar fi ecranul ealculatorufui saw oimprimant’,
9. Software -ul sunt programe conduse de ealeulator,
10, Sistemul de opera se ocups de actvitatee de ansamablu s calculatovului i famizeazS servic
11, Limba cea mai de baza a unui calculator este o seevenfi de Os gi 1s numit limba} magind, Piecare computer ingelege in mod ditect
propria limba masind.
12, Unbiteste o cif binari, 0 sau 1
‘lest RUsersviorelDesktopoodG++%620Programming.hin 52302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
12, Un octet este o seeventd de opt biti
14.0 sceventd de Os gi 1s este menfionatd ca un cod binar sau un numar binar.
15. Unkilobyte (KB) este de 2 " ~ 1024 octeti; un singur megabyte (MB) este de 22” ~ 1.048.576 bytes; gigaoctet (GB)este de 2
30 1073741824 octofi; unul terabyte (TB) este de 2 *” = 1,099,511,627,776 octet; onepetabyte (PB) este de 2.59 =
1,125,899,906,842,624 octeti; una Exabyte (EB) este de 2.6 ~ 1,152,921,504,606,846,976 octet si unul zettaoctet (7B) este de 27°
= 1,180,591,620,717.411,303,424 octeti
16, Limbajul de esamblare utilizeaza usor de rejinut instructiuni numite mnemonic.
17, Montatori sunt programe eare tradue un program seri in limbaj de asamblare in limbaj magind,
18. compilatoare sunt programe care raduc un program scris intr-un limbaj de nivel inalt in eod masind, numit cod obicct
18. Un linker leagi codul obiect cu alte programe oferite de mediul de dervoltare integrat (IDE) si tilizate in program pentru a
produce cod executabil
20, De obicci, sunt necesare gase pasi pentru a exccuta un program C ~+: edita, preprocesa, compilare, link -ul, de incdreae gi
exceutat
21, Un cod executabil transferurile Incdredtor in memoria principal
22, Unalgoritm este un proces pas-cu-pas de rezalvare a problemelorin care a ajuns 0 solusie , la int
‘ cantitate finita de timp.
23. Procesul de rezolvarea problemelor are tre etape: analiza problema sia proiecta un algoritm, pune:
Snte- un limbaj de programare, sisi menfind programul
aplicarea algoritmalut
24. In proiectarea structuratd,o problem este impanitd in subprobleme mai mici. Fiecare subproblema este rezolvat
pentru toate subproblemelor sunt apoi combinate pentru a rezolva problema.
3 ar solufile
25. In design ovientatabiect (OOD), aprogram este o colectie de obiecte care interacfioneazd
26, Un obiect est format din dates oper la acest date.
27, ANSI/IS0 standard C-+~ sintaxa fost aprobat la ijfocul anu 1998
28, Al-doilea standard de C
C14 12 fost aprobat in 2011
EXERCITI_
Numirul din paranteze la sfiryital unui exerifi se rer la obiectivul de fovijare enumerate la fneeputul eapitolui
4. Marcaji unndtoareleafirmafi ca find adevarate sau false
a. Prim dispozitiv cunoscut pentru a efectua ealeule a fost abacul. (1)
b. mapini de calcul Pascaline dispozitiy ar putea efectue doar adunare si seddere. (1)
«Funefile CPU sub controlul memoriei principale. 2)
4. Informatie stocate in memoria secundara este permanent. 2)
« Limbajul unui caleulatoreste o seevenié de Osi 1.8)
{. In Unicode fccare earacter este codificat ca seeventi de 16 biti. 3)
9. ZBeste zeto octet. (3)
fh. Un program seris intr-um limbaj de programare de nivel inalt se numeste un program de sursé. (4)
i. Un compilator raduce programul sursiintr-un program de obiect. (6)
j. Un link - uri linker si incared codul obiect din memoria principala in CPU pentru executie. (8)
ik. Procesarea unui program C ++ include sase etape. (9)
‘lest RUsersviorelDesktopoodG++%620Programming.hin 562302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
1 Primal pas in procesul de ezolvare a problemeloreste de a analiza problema. (10) m. Qod Temenul standui penta dezvottare
orientate pe obiect. (10) m Ince priveste designul orienta pe abies, un program esto coleciefuncileofinterating. (10)
2, Care sunt cele dou componente principale ale unui calculator? (2)
3. Care este scopul principal de memorie? (2)
4,De_co-estencvoie de stocare secundar? (2)
5, Care este funcfia unui sistem de operare? (2)
6. Care sunt eele dous tipuri de programe? (2)
7, Care sunt diferenele dintre limbi mayini gi limbaje de nivel inalt? (3)
8. Ceeste un program de abiect? (5)
9. Care este fumcfia unui ineareator? (8)
10. Cese leagi? (8)
11. Ce fel de ero sunt raportate de cate un compilator? (8)
12. Ceesteun algoritm? (9)
13, Deserieti cele tei etape ale procesului de rezolvare a problemelor intr-un mediu de programare. (9)
14, Care sunt avantajele si analiza problemelor de proicetare algoritm seri , in mod direct peste un program intr -un limisaj de nivel
inalt? )
15, Proiectarea unui algoritm pentru a gsi media ponderaté a patru scoruri de test. Cele patru gi rezultatle testelor ponderile respective ale
acestora sunt prezentate in urmatorul format: (9)
test Score! weightTestScorel
De exemplu, datele esantionului este urmitoarea!
750,20 95 0,35 85 0,15 65 0,30
16. Proiactarea unui algoritm pentru a convert schimbarea data in sferturi, Dimes, marunt
i banuti in bani)
17. Avid in raz
in inci, $1 preful unei pizza, proiecta un algoritm pentru a gasi pretul de pizza pe inch patrat. (9)
18, Pentru a face un profit, proturilearticolelor vnduteintr-un magazin de mobild sunt marcate cu 80%. Dupa ce marcarea preturilor, fiecare
slement este pus la vinzare lao reducere de 10%. Proiectarea unui algoritm pentru a gas! preful de vinzare al unui articol vindut la
rmagazinul de mobild. Ce informatiiaveti nevoie pentru a gsi preful de vanzare? (9)
19, Volumul unei sfere este (40 / 3,0), pr gi suprafata este 4.0ftr?, unde r este raza sferel, vind in vedere raza, proiecta un algoritm care
calculeaza voluml gi suprafafa suprafata sfere. De asemenea ,folosind + + declarafile C previzute Ia exemplul 1-1, saefi ++ C
instrucjunes corespunzitoarefiecirei declarai in algoritmul. (Se presupune c& p= 3.141592) (9)
20. Tom si Jery a deschis un nou serviciu de gazon. Ee ofert tre tipuri de servcit cosit,fertlizatoare, gi plantarea de copaci. Costu de tuns
ba este de 35.00 § pe 5000 Yarzi patrat, este de 30,00 $ fertifzat per aplicatie, gi plantarea unui copac este de § 50,00. Sere un algoritm
care solicits utifzatorului $8 inte in zona de gazon, numdrul de fetilizare cererilr, precum gi numdrul de arbor care urmeazd #8 fie
lantate, Algoritml determina apoi valoarea de facturare, (Sa presupunem c& ordinele de utilzator toate cele trei servci) (9)
21. Jason foloseste de obicei Internetul pentru a cumpéra diverse obiecte. In cazul in care costul total al elementelor comandate, la un
‘moment dat, este de 200 $ sau mai mult, atunci transport gi manipulare, este gratuit in caz contrar, de transport martim gi de manipulare
este de $ 10 pe articol. Proiectarea unui algoritm care solicit Jason pentru a introduce numarul de articole comandate gi pretul fieciru
‘lemant. Algoritmul emite atunci suma totald de facturare, Algoritmul dumneavoasta trebuie s8 utilizeze o bucld (structurd de repetitie)
‘lest RUsersviorelDesktopoodG++%620Programming.hin 72302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
pentru a obtine pretul fiecdrui artical. (Pentru simplifiare, 5
moment dat) (8)
putea presupune ci ordinele de Jason nu mai mult de cincielemente de la un
22. Un ATM permite unui client si-gi retragii un maximum de 500 $ pe zi Tn cazul in care un client se retrage mai mull de 300 S, taxa de
serviciu este de 4% din suma de peste 300 $. Tn eazul in care clentul nu are bani sufcieni in cont, ATM informeazd clentul despre fondurile
Insuficiente 111 da cllentulul posbilitatea de a retrage bani pentru o taxa de serviciu de § 25,00. Dacd nu exist nel
bani fn contl sau in cazl in care soldul conrufui est negatv, ATM-u ma permite clienthui sé retagé bani fn cazal fa care soma care
ameaza si fie retasd este mai mare de 500 S, ATM informeazi clientul eu prvite a sma maxims care poats fetes Serie un
algoritm care permite clientuli pent a introduce suma care umeazi se eta, Algoritmulverfica apoisuma total intra cont
Jrmpare bani clentuli si debiteaza contul de soma retras stance de sorvciu, dacdacesta exist. (9)
23. Proioctares unui algoritm pentma a gasiridacinile reale ale unci ecuafi patratice de forma ax? + te +
numere reale, iar o este nenul. (9)
0, unde a,b si esunt
24. Un student petrece majoritatea week - end gi interpretarea lui vizionarea sport, obositor, prin urmare,si-1afard si care duce la el
side multe ori domi prea mult dor de luni , 8 clasa lui AM matematicd. $3 presupunem cd de scolarizare pe semestru este de 25.000 $ ,
iar semestnil medi este format din 15 unity. In cazul in eare elasa de matematic’ se intélneste de tei zile pe sSptamna, o or8 in
ficcare zi, timp de 15 siptamani, i este un curs de patru unitate, cét de mult ficcare ord de clasa de matematicd costa student?
Proiectarea unui algoritm care calculeaza costul fect’ clase de matematics. (9)
25, Vi se oft o list de nume ale elevilor i scorusile lor de testa, Proiectarea unui algoritm care face umitoaree:
a. Calculesza sconurle medi de testare.
b. Determina si imprima numele tuturorstudenfilorale cdr scoruri de testare sunt sub scomul mediu de testare
&Stabileste cel mai mate scor de test.
4. Se imprimi numele tuluror studentilor ale céror scoruri de testare sunt aceleagica gi cel mai mare scor de test
(Trebuie sd imparté aceasti problema in subprobleme dupa cum urmeaza: Prima subproblema determina scorul mediu de testare al
doilea subprobleme determina si imprima numele tuturor studenfilor ale earor scorur de testare sunt sub scorul mediu de testare la al
tucilea subproblems determina cel mai mate scor de incereare... patra subproblema imprima numele tuturor studenjilor ale c&tor
sconuri de testare sunt aceleagica gi cel mai mare seor de tes, algoritmal prineipal combina solutile subproblemelor) (9)
CAPITOL
ELEMENTELE DE BAZA ALE C ++
Totin acest
vet
1. Famlirizarea cu componentele de baza ale unui program C +, inchisiv funeti,simboluri speciale, gi identifieatori
2, Exploreaza tpur simple de date
23, Descopert cum se utlizesz& operatori matematici
4. Se examineaza modul in care un program evalueaza expres aritmetice
5. Familia cu tpul de date ir
6, Invafao decaratie de atribuire este gi ce face
7. Aftati mai multe despre dectaratia varia
8, Descoperiti cum la datele de intrare in memorie,folosind declaraii de intrare
9, Sse far
izeze cu utlizarea operatorilr de cregtere gi decrement
10, s8 examineze modalitfile de iegre rezultate folosind declaafii de iegire
‘lest RUsersviorelDesktopoodG++%620Programming.hin 582302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
11. flat cum 8 foloseasc directive preprocesor gi de ce sunt necesare
12. Aflai cum si depanare erori de sintaxd
13. Exploreaza modul corect de structurare a unui program, inclsi folosind comentai pentru a documenta un program de
14, Sa se familaizeze cu instruction’ compuse
15, Aflayi cum s8 scrie un program C++
In acest capitol, vei invata clementele de baza ale C++. Dupil cum obiectivul est de a invita limbajul de programare C ++, doua
intrebari aparin mod natural n prim rind cea ce ese un program de calculator? fnal doilea rind, ceca ce este de programsare? Un
program de calculator seu un program, csc 0 scevent de instractuni al ciror obictv est accls de a eaizao sarc, Programarce
éstcimn proces de planifieare si de a crea un program. Aceste dou dest spun adevaral, dara intregul adv, despre programs
Fate posibil si dueze foarte bine o carte intteagi penta ada o defniie bund salisficitoare de programe. -r putea obtine o mai
bund injlegere a naturi programani dint analoge, astfel inet sine intoarcem la un subiect despre care aproapetoatalumea are
cova cunostinje de gait O refed este de asemenea, un program, si toat lumea cu ceva experienta de gatit poate fi de acord cu privire
Je urmatoarse:
1. De obicei, este mai usor si urmeze o meet
st pentru a crea unal
2, Existd rejete bune si exist refete proaste
3.Unel
relete sunt usor de urmat, er unele nu sunt uyor de urmat
4. Unele retete produc rezultate faite gi unele nu.
5, Trebuie s aveti uncle cunostinge despre modul in cate si foloseasd instrument de gitit penta ums o rote pn la finaizar.
6, Pentna a crea rette bune noi, rebuie sl ave o muljime de cunostinf go bund ingelegere a gti.
Aceste aceleasi gase puncte sunt de asemenea adevarat despre programare. Sé lum analogia de gatit eu un pas mai departe. S8
presupuncm cd avefi nevoie si invefe cineva cum si devind un chef How ar merge despre asta? V-ar introduce mai intai persoana la
‘maineare bun, in speranfa ci un gust pentru mincare bun se dezvolti? V-ar avea refeta urmirire persoand dup’ refeta, in speranfa clio
parte din ea freaci off? Sau te invefe mai inti utlizarea de instrumente si natura ingredientelor, produsele alimentare si condimente, gi
explicd modul in care acestea se potrivese impreund? La fel cum existé un dezacord cu privite la modul in care si-i inveje de gatis,
exist un dezacord cu privize la modul de a preda progra
fnvitarea unc imi stikine de programare este cade fnvitare pent a deven un bucitar sau de fnvijare pent a juca un instrament
muzica. Toi cei tr necestéointracjune diectécuinstrrpetele. Nu poti deveni un bucatar bun doar eitind rete. fn mod similar,
tu pot deveni un muzician citing ct despre instrament mazicale.Acolasiluer este valail de programare. Tebuie s avetio
cuunoastere fundamental a limb, i rebuie sv testai programele de pe computer penta ava asigura c@ficare program face cee ce
ar cba i acd
O scurta privire la un program C ++
in acest capitol, vei inva clementele de baz si concepte ale +~ limbajului de programa C pent a crea programe C ++. in plus
faja dea da exemple pentna ailusta diverse concepte, vom arata, de asemenca programe C-+~ pentru clarifice aceste concept. in
aceastésectiune, noi oferim un exemplu de program C ++, cae calculeazs perimetul gi aria unui
folosind namespace std;
int main 0)
{
lungime dublis latime dubli; zond dubli; perimetrul dublu;,
cout << "Program pentru a calcula side iesire din perimetrul si"
<< "Zoni a unui dreptunghi.” << Endl;
lungime = 6,0; width = 4,0;
perimetru=2 * (lungime~ atime); zona latime = lungime *;
uungime =" <
ne permite si uilizeze (obiect predefinit) cout pentru a genera iesie gi (manipulator) Endl. Declaratia
folosind namespace std;
vi permite si wilizati cout gi endl fini prefix = std, Aceasta inseamni cd, daca nu include(i aceasté afirmatie, tune cout artrebui sa fie
folosite ca std :: cout si end! ar trebui sa fie folosite ea std :: endl, Von detalia acest lucru mai tirziu in acest capitol.
{n continuare ia in considerare umitoarcalinie:
int main Q
Acesta est ttlul principal funefei. Linia de urmatoare const dintr 0 proteza din stinga. Acest lucru marchea7 inceputul (corpul)
principalelor func, Bretele dreapta (la ultima linie a programului) se potsiveste acestei bretele din stinga si marcheaza sfusitul
compului principal functiei. Vom explica sensul altor temmeni, cum ar fi cele prezentate in albastru, mai tarziu in aceasta carte. Rejine{i
ein C+ =,<< este un operator, numit operon de nserar
Inaimte de aincheia aceastseotune, sine dentiticeanumite pari ale programullus C++ fn Figua 2-1
I) sreeeeeeeneeversersorsnraunnonnansannannnnnnane snananeaneeee Avion vedere luge $i iinea uot eepungi, aes rogram C ++ casters
‘lest RUsersviorelDesktoptoodG++%620Programming hin 612302.082016 (© ++ ce programare: Protectarea programuld, inclusiv stuctr de date, eda 7.
‘epi perimerl aria deepunghiu eresreneennenne
CComenait
och using namespace std; int main ()
‘
int inci; / variabila pentru a stoca inch totale
inch = 100; / magazin 100
inci variabile
cout << inch << "inch (ele) =" legire valoarea
‘inci si semmul egal cout << inch / 12 << *picioare (picion si"; maxima de iesire
1 Numarul de picioare (pieior)
cout << inch% 12 << "inch (es)"<< endl! iesire
Holi
a reveni 0;
}
rule egantion:
‘lest RUsersviorelDesktopoodG++%620Programming.hin 92302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
100 inch (clasele) = 8 picioare (picion) si 4 inch (es)
Resin cd de fiecare daté cnd executati acest program, acesta va afisa valoarca de 100 de inci, Pentru a converti o alta valoare de
inch, avefi nevoie pentru a edita acest program si stoca o valoare diferité in inci variable, care nu este foarte convenabil. Mai tarziu, i
cu
acest capitol vom ilusira madul in care si includa afirmafi inte-un program care va instru utlizatorul si introdued valor difert
toate acestea, dacd sunteficuriogi si aflai in acest moment, apoi inlocuifi dectaratia
inch = 100; / magazin 100 le
cu umndtoarele afirmafit gi nulayi din nou programul:
cout << "Entertotal inch gi apasaji Enter: / prompta
1 wilizatorul pentru a intra in inei total cin >> inch; // toca valoarea introdusi de cite uilizator /!,
cout << endl;
Programul modificat este disponibil pe site-ul Web care insojeste aceasté carte gi este numit Example?
Modificd.epp.
Lua in considerare urmitoarele expresii, pe care le-au fost obignuiti si luereze eu ined din liceu: -5,8-7,3 + 4,2 +3*5,5,6 +623,
six+2*546/y ,undex gi y sunt numere necunoscute. Acestea sunt exemple de expresii artmetice. Numerele cate apar in
expresiile sunt numite operanzi. Numerele care suzt folosite pentru a evalua un operator, sust numite operanzii pentru acel operator.
In expresia 5, simbolul - specified faptul c& numérul 5 este negativ. In aceasta expresie,
Are doar un singur operand, Operatori care au ua singur operand sunt numite operator unr
in expresia 8-7, simbolul - este utilizat pentru a scfdea 7 Ia 8. in accasti expresic, - are doi operanzi, 8 si 7. Operatorii care au dowd
‘operanzi sunt numite operator binare,
Operatorul unar: Operatorul care are doar un singur operand,
Operator binar: Un operator care are doi operanzi
fn expresie 3+ 4,3 si 4 sunt operanzii pentru operator +. in aceasta expresie, operatorul + are doué operanai gi este un operator binar
Mai mult decdt att, in expresia ~27, operatorul + indicd fapral ed numdul 27 este pozitiv. Aici, + are doar un singur operand gi
actionea7i astfel ca un operator unat.
Din discufia anterioari,rezulti cd - si + sunt ambii operator aritmetici unari si binare, Cu toate acestea, in calitate de operatori
‘matematici, *, /si% sunt binare si deci trebuie si aibi dow’ operanzi
Ordinea precedentei
Atunci cand mai mult de un operator aritmeticd este utilizat int-o expresie, C ++ utilizeaza regulile operatorului de prioritate pentru a
evalua expresia. In conformitate eu ondinea de reguli prioritate pentru operatoriiaritmetci
nm
sunt la un nivel mai ridicat de prioritate decd +,
Retin cd operatorii*,/ si % au acclagi nivel de priartate, In mod similar, operatori = si- au acclasi nivel de prioitat,
Atunei cdnd operatorii au acelasi nivel de prioritate, operafiunile sunt eféctuate de la stanga la dreapta, Pentru a evita confuzia, putett
utiliza paranteze pentru expresii aritmetice de grup. De exemplu, in ordinea regulilor de precedent,
3176+ 245/8+6
{nseamni urmitoarele
MB *7) 6) + (2*5) 14) 6 = (21-6) + (10/4) 6 (Evaluates *)
= (21-6) +2)6 —(Evaluarea |, Retineti
wceasta este o divizie intreg.)
(5+2)+6 (Evaluarea-)
=1746 (Evaluarea prima ~)
‘lest RUsersviorelDesktopoodG++%620Programming.hin 702302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
23° (Evaluarea 1)
Resin} cd utilizarca parantezelor in al doilea exemplu clarficd ordinea de prioritate, De asemenea, putefi utiliza paranteze pentru a
supraserie ordinea regulilor de prioritate
Pentru cd operator aritmetici, folosind regulile de priortate, sunt evaluate de la stinga la dreapta, cu exceplia cazului in paranteze
sunt incidente , asociativitatea operatoriloraritmetici este declarat afi de la stanga la dreapta,
NOTA (caractere aritmetica) Deoarece char tipul de date este , de asemenea , un tip de date integrale, C++
Va permite sa efectuati operat aritmetice pe char de date. Cu toate acestea, ar trebui sé utiizaficu atenfie aceastéabiltate. Existé 0
diferent intre caracterul "8" gi numrulintreg 8. Valoareaintreaga a 8 este 8. Valoarea intreagi a '8 este 56, care este ASC colafionare
secventa caracterului 8
[Atuncl cind evaluarea expresilor aritmet
63, Mai mult decdt ati, pentru ca '8* "7
date de caractere ASCI
84.7 = 15; "8" + "7" = 56 + 55, care randamentele 111; gi'8! + 7 = 56 + 7, care randamentele
16 * 55 = 2080 gi setul de caractere ASCII are doar 128 valori'8°*°7" este nedefint in setul de
Aceste exemple ilustreazd faptul cd multe Iucruri pot merge prost,atunci cAnd efectuafiaritmeticd caracter. In cazul in care trebuie si le
angajeze, utlizeazi operail aritmetice pe tipul de date char cu precautia,
Unmitorul exemplu arati modul in care operator aritmetied de mune’,
EXEMPLUL 2.5
1 Acest program ilustrexzi modul in care aritmetici de munci operatori, #include
folosind namespace std;
[main 0
[cout|<<| <2
(cout <<] =
[cout [<<] Wee
(cout |< using amespace sit main 0
(
fou eSa TSS P=
[eout|<<["15,6/2+ (ol) [2+ 5 << endl;
coul[e<[P4ts720— Par 5) 0 Fnak
fcout|<<[va*3>7/5 L2ss= |"
e<[erst7/5- [ess
[e<[enais
return 0;
>
Sample Run:
32 455=65
156/24 5= 12.8
445/2.0=654*3+7/8255=-125
Aceste exemple ilustreaza faptul ed un numir intreg nu este conver
fntreg gi unul in virguli mobi
‘operatorul si fie evaluate are un num
‘lest RUsersviorelDesktopoodG++%620Programming.hin
i fntean num in vinguld mobild, cu exceptia cazului fn care
742302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Tipul de conversie (de turnatorie)
in setiunes anterior, ji fnvdjat &, la evaluarea unei expres aritmetice, in cal in care operator are operani mite, valoaree
intreag est shimbat Iso valoarein virgulé mobilé cu pateazecimalé zero, Atunci cin o valoare de un tip de date se modifica
automat la un alt tip de date, un tp de constrdngere implica se spune ca avut loc. Aga cum exemplele din sectiume precedent
itustteazs, dack. nu sunteti tent eu privte la tiprile de date, de tip consteingere implicté poate genera rezuliate neasteplate
Pentru a evita tip consteingere impliciti, C ++ prevede conversia de tip explicit prin utilizarea unui operator de distribute.
peratorul tumat, de ascmenea, numit tip de conversie sau de tumare de tip,
ia forma urmitoare:
static_cast (expresie)
In primol rind, expresia este evaluatd, Valoarca sa este apoi convertiti Iso valoare de tipul specificat de dataTypeName, In C++,
static_cast este un cuviint rezerval
La conversia unui numar in virguld mobild (zecimal) la un intreg folosind operatorul tumat, picdturd puri simplu partea zecimala a
‘umdrului in virgula mobild. Accasta este, numdrul de virguld flotanté este trunchiatd. Excmplul 2-9 aratd modul in care operator de
distributie de munca. Asigurafi-vl cd afi injeles de ce ultimele doud expresii evalucaz4 aga cumo fac,
EXEMPLUL 2.9
Expresie
static_cast (7.9) statie_cast (3.3) static_cast (25) static_cast (6 + 3) turmate static (1S)/2
static_cast (15/2)
static_east (7.8 + turmate stati (15) /2)
seevalucaz la
1
3
25.0
= Static_cast (8)= 8,0 15,0/2
(pentru cf statie_east (15) = 15,0) = 15,0/2,0= 7,5
= Static_east (7) (deoarece 15/2 = 7)= 7,0
= Static_cast (78 +7,5)
= Statle_east (15,3)
cast (7.8 + turnate statie (15/2)
static_east (7.8 + static_east (14.8)
70)
“4
Ummatorul program C ++ evalueazi expresile precedente:
{f Acest program ilustrea7 modul in care functioneaza explicit tip de conversic.
#inelude
‘lest RUsersviorelDesktopoodG++%620Programming.hin 752302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
folosind namespace std;
exprimate (7.9)= "turnat (7.9)
int main 0)
c
cout<<<<<<
cout << (3.3) "turnat @.3)
turnat (25)~ "turnat 25)
_east (6 +3)="turmat 6 +3)
_ast (15)/2 = "rurnat (15)/2
_cast (15/2) = "turnat (15/2)
_cast (7.8 + static_cast (15)/2) exprimate (15)/2)
east (7.8 + static,
cast (15/2)) exprimate (7.8 + turnate static (15/2)
a reveni 0;
)
Sample Run:
static_cast (7.9) ~ 7 static_cast (3.3)~3 statie_cast 25)~ 25 statie_cast (5 ~3)~8 static_cast
(15)/2 = 75 statie_cast (15/2)=7
statie_cast (15) /2)~ 15 static_east (7.8 + statie_east (15/2)) = 14
Resincf ca valoarcastatie_cast expresici (25) este de 25,0. Ca toate acestea, cate de iesie 25 in loc de 25,0, Acest luc se
datoreazSfaptului of noi au am diseutat ined cum s iegire numere zest cu 0 pit zocimale entra a arita punctului zesial
zero, Capitolul 3 explie# modul de ieire mere zecimale intra format dori, n mod similar, produeta altornumerezecimale cu
Dali zecimale zero este irda punctuli zecimal gi partea 0 zecimald
NOTA\n € +4, operatorul turnat poate lua, de asemenea , forma datatype (expresie). Acastformular se numegte turnare cum ar fi C. De
‘exemplu, dublu (5) = 5,0 glint (17,6) = 17. Cu toate acestea,static_cast este mal stabil decit turnare cum ar fi,
De asemenea , putefi utiliza operatorii exprimate pentru a convert in mod explicit char va
in charvalori de date, Pantru a converti char valori de date in int valori de date, utlizafi o secventé de colafionare. De exemply,
caractere ASCI,static_cast ("A este de 65 gi static_cast (8 este $6. In mod similar, static_cast (65) este "A" gi
setul de
I, a invatat cum expresilaitmetice sunt formate gi evaluate in C ++. In eazul in care dort sh utilizativaloarea
Mai devreme in acest capi
lunel expres int-o alta expresi, mal intl trebuie s@ salvai valoarea expresiel. Exista mai multe motive pentru a salva valoatea une expres
Unele expres sunt complexe gi pot necesita © cantitate considerabila de timp de calculator pentru a evalua, Prin caleularea valorilor o data
41 salvarea acestora pentru o utizare ulterioar, salvafi nu numai timp de caleulator gi de a crea un program care executa mai repede, de
asemenea, sé evitafi posibilele eraritipagrafice. in C ++, expresile sunt evaluate, iar in cazul In care valoarea nu este salvaté,acesta este
Pierdut. Adica, daca nu este salvat, valoarea unei expres nu poate fi utiliza in calculle ulterioare. Mai tirziu, In acest capitol, veti invita
‘cum si salvati valoarea unei expresi gi sil utiliza in calculele ulterioare
inainte de a paris! discutia de tipuri de date, sf ne diseutirn mai multe date de un singur tip gir.
string Tip
Tipul de date string este un tp de date definit de programator. Aceasta nu este direct disponibil pentru utilizar intr - un program ca simple
‘lest RUsersviorelDesktopoodG++%620Programming.hin 712302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
tipuri de date discutate anterior. Pentru a utiliza acest tip de date, aveti evoie pentru a avea acces la componentele de program din
bibliotecs, care vor fi discutate mai tirau In acest capitol Tipul de date string este 0 caracteristicd a ANSI /1SO standard C + +
NOTA Inainte de standardul mbit ANSI / ISO C ++, standardul C ++ biblioteca nu a furnizat un tip de date gir. Vanzatorl de compiatorulul
furnizate adesea theirown de tip gir definit de programator, iar sintaxa i semantica operafilr ir de multe ori a variat de la furnizor la
furnizor.
Un gir este seeventd de zero sau mai multe caractere, Siruri de caractere ia C++ sunt Iachise in ghilimele duble. Un side caractere
care nu confine caractere este numit nul sau gol sir. Urmitoarele sunt exemple de sirui de caractere. Retineri ci“ este gol sil
"Wiliam Jacob”
Mickey’
Ficcare caracter intr-un sir de earactere are o poziic relativa in gir. Pozitia primului caracter este 0, pozitia celui de al doilea caracter
este 1, si asa mai departe, Lungimea unui sir este numérul de earactere in ea, Atunei cfd se determin’ Iungimea unui sir de caractere,
trebuie si conta, de asemenea, spafit in sir.
Exemplul 240
Sir Porgia unui carater is langimea yrului de earactere al String
“William J
1cob" Positia "W" este 0, 13,
ita prime‘! este 1.
Pozitia" (spatiu) este 7.
Poritia ‘I aste 8.
zitia "beste 12.
"Mickey" Poritia 'M" este 0.6
fia i este
Portia “e" este 2
Poritia "k" este 3
Pozitis'y" este 5
Lungimea sirului urmator este de 22.
(e0 7ifrumoasa"
Tipul string este foarte putemic si mai complexe decattipuri simple de date. Acesta oferd nu numai spafiul fizie necesar pentru a stoca
sirul, dar multe operatii pentru a manipula siruri de caractere. De exemplu, acesta oferd operatii pentru a gasi lungimea unui sir de
ccaractere, o parte dintrn sir de caractere, si compara}i giruni. Vei invata despre acest tip de date in urmatoarcle cateva capitole,
Variabile, Declaratiile incadrarilor si declaratii de intrare
[Dupa cum sa mentionat mai devreme, obictivul principal al ueui program C + este de efeetuacateule ide a manipula datee, St
ne amintim cd datele tebuie sie inercate in memoria principal nainte de a putea f manipula. in aceasta seciune, vei fnvata cum
$4 pund date in memoria calculatoralui, Stocareadatelor in memoria calcultorul este un proces in dou ctape
1. Instruiti computenul pentru a aloca memorie,
2. Includeyi declarajii fn program pentru a pune date in memoria alocatd
Alocand Memorie cu Constante si variabile
‘Atunci eénd instrai computeral pentmy a eloca memorie, tu spune nu numai ce nume si foloseasea pentnt fiecare locafic de memoric,
dar, de asemenea, ce tip de date pentru a stoce in acele locafii de memorie. Cunoasterea locajici de date este esenfiala, deoarece datele
stocate intro singurd locajie de memorie ar putea fi necesare in mai multe locusi in program, Dupi eum afi vizut mai devreme, tind
‘lest RUsersviorelDesktopoodG++%620Programming.hin 782302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
ce tip de date pe care le aveti este cruciald pentnu efectuarea de calcule precise. De asemenea, este important si
sti dacd datele dumneavoastr trebuie sf rimang fixate pe parcursul execujici programului sau dacd acesta ar trebui si se schimbe,
Unele date trebuie si riminé la fel pe tot parcursul unui program. De exemplu, formula de conversie care converteste inch in
centimetri este fixd, pentru cd 1 inch este Intotdeauna egala eu 2,54 centimetri. Atunci cand stocate in memorie, acest tip de date
ttebuie 84 fie protejate impotriva schimbarilor accidentale in timpul execufici programului. In C++, putef utiliza 0 constantd pe nume
pentru a instrui un program pentru a marca acele locafii de memorie in care datele sunt fixate pe parcursul execufiei programului
Numi constant: © locatie de memorie al cirei confinut nu este permis si se schimbe in timpul executiei programului
Pentru a aloca memoric, folosim deelarajii din declarajia de C ~~ s. Sintaxa de a declara o constanta pe nume este
identificatorul dataType cons
aloare;
in C+, consteste un cuvént rezervat.Arteebuiremarcat fptul co numité constant este inifislizat ia declarat inte 0 singurs
declare ge acesta neti fe inifilizat end acosta este doclaat pentru cd din aceasta declare eu prvie Ia compilator va
respinge orice incereae dea schimbs valoaes,
Exemplul 2-11
Luayi in considerare urmatoarele afirmafii C +>:
dublu const TRANSFORMAREA = 2,54; const int NO_OF_STUDENTS = 20; const char BLANK ="
Prima declazafie spune compilatorului pentru a aloca memorie (opt octet) pentru a stoca o valoare de tip dublu, numese aceasti
memorie spatiu de conversie gi, stoca valoarea 2.54 in a. De- lungul unui program care utilizeazi accasté afimnafic, ori de céte ori
este necesar formula de conversie, conversia spatiu de memorie poate fi accesal. Semnificatia celorlalte declarajii este similar
Refine ed identificatorul pentru o constantd este nurmit in litere majuscule. Chiar dacd nu existd reguli ser
preferd in general si foloseascd litere mari pentru a num o constant pe nume. Mai mule deeat atat, in eazul
constante pe nume este o combinafie de mai mult ée un cuvant, numit un cai na npreund, atu cuvintele sunt de obicei separate
utilizin un subliniere. De exemplu, in exemplul precedent, NO_OF_STUDENTS este un cuvént-alenga impreuna, (A se vedea de
aasemenea sectiunea programului Style gi forma, mai trziu i acest capitol, corect de structurare a unui program)
programatori C44
care numele unei
[NOTA Dupé cum sa menfionat mai devreme, tipul implicit de numere in virgula mobilé este dublu, Prin urmare, dack declarafi o constanté
pe nume de tip float, atuncitrebuie si specifica cd valoarea este de tip float, dupa cur urmeazi
const float TRANSFORMAREA = 2.54f,
{In caz contrar, compilatorul va genera un mesaj de avertzare. Observai cé 2. 54f spune ci este 0 valoare float. Sa ne amintim cé
ddimensiunea memoriel pentru valorile float este cle patru octet; pentru valori duble, opt octefi. Pentru cd dimensiunea memoriei este de
Ingrijorare in aceste ile, aga cum este indicat mai devreme, vom folosi cea mai mare parte de tip dublu pentru aluera cu valor In
vigulé mobili.
Cu ajutorul unei constante pe nume pentni a stoca date fixe, mai degraba decit folosind valoarea de date in sine, are un avantaj major
fn cazul in care modificarile de date fixe, nu trebuie sé editatiintregul program si modificaji vechea valoare la noua valoare ori de ite
oti se utilizeaza valoarea veche. (De exemplu, in cadrul programului, care caleuleaza impozitul pe vanzari, cota de impozit de vanzare
poate schimba.) in schimb, puteti face schimbarea de la doar un singur loc, recompilati programul si il va executa folosind noua
valoare pe tot parcursul, In plus, prin stocarea unci valor si care se refer la acea locafie de memorie ori de ete oi este nevoie de
valoarea, evita si tastati din now gi din now aceeasi valoare si pentru a preveni erorile de scriere accidentale, Daca afi misspell numele
locatiei valoarea constanté a Tui, calculatorul vi va avertiza printeun mesaj de eroare, dar nu vi va avertiza dacii valoarea este seis,
gresit
cd
Mai devreme in acest capitol, am introdus variabila pe termen lung si cum si-l declare, Noi acum o recenzie despre acest concept si da,
de asemenea, sintaxa generald de a declara variabile,
{n uncle programe, datele trebuie si fie moditicate in timpul execufiei programului. De exemplu, dupa fiecare test, scortestul mediu si
‘numarul de teste ealizate moditicdri. In mod similar, dups fiecare crestere cu plata, modilicarile selariale ale angajatului. Acest tip de
date trebuie si fie stocate in acele celule de memorial edrorcon{inat poate fi modifica in timpul execu(iei programului. In C ++
celule de memorie al edror eontinut poate fi modificat in timpul executiei programlui sunt numite variabile
Variabila: © locajie de memorial clrei conyinut se poate schimba in simpul exccusici programului
‘lest RUsersviorelDesktopoodG++%620Programming.hin 702302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Sintaxa pentru declararea uneia variabile variable sau multiple este:
identificatorul data Type, identificatorul,
EXEMPLUL 62-12
Luati in considerare urmitoarele afimati
amountDue dublu; contor int; ch char; int x,y; string name;
Prima declarajie spune compilatorului sd aloce opt bytes de spatiu de memorie pentru a staca o valoare de tip dublu si o numese
amountDue. A doua si a treia comunicare au conventii similare, Patra declaratie spune compilatorului si aloce doua spatii diferite de
‘memorie, fiecare patra octefi, pentma a stoca o valoare de tip int; numele prima memorie de spafiu x; si numele deal doilea spatiu de
rmemaorie y.-A cincea declarafie spune compilatorului pentru a aloca spafiu de memorie si il numesc numele,
agin cara numiit constante numite, nu exists regulisrise pentru denumireavatiabilelor. Cu toate acestea,programatori
folosese de obice liter mici pent a declara variable. n azul in care un nume de varabia ete o combinatie de mai mult de un
avin, apoi prima liter a fiecdri cuvint, cu excopfi primului cuvnt, este majuseule, (De excmplu, ase veda varabila amountDue
jn exemplul precedent)
De acum incolo, cdnd spunem variabila *, ne referim la o locatie de memorie variabild
lin € ++, trebuie si declare toate datele de identiicare inainte de a le putea folosi. in cazul in care va refer la un identificator fard a declara
acesta, compilatorul va genera un mesaj de eroare (eroare de sintaxd, ndicind faptul ct identficatorul nu este declarat doa
Uutliza fie © constanté numitd sau o variabila,trebuie mai ital s8-1 declare.
NoTA
J
Acum ci tiputile de date, variable si constante au fost definite si discutate, este posibil si se ofere o definitie fonmala a tipurilor de
date simple, Un tip de date se aumeste simplu daca constanta variabild sau numit de acest tip poate stoca doar singurd valoare la un
‘moment dat. De exemplu, daca X este o variabila int, la un moment dat, o singura valoare poate fi stocatd in x.
Punerea datelor in variabile
‘Acum, cd stii cum si declare variabile, urmitoarea intrebare este: Cum pune datele in aceste variable? in C++,
variabil
putefi plasa date intro
idm dou’ modus
1. Utilizati C-++ e declaratia de atribuire
2, Utilizarea de intrare(ctire) declarai
Declaratie de atribuire
Instrucfiunea de atribuire ia urmitoarea forma: variabila
cexpresie;
Inteo declarajie de aribuire, valoarca expresici rebuic si se potriveasca cu tipul de date al variable. Expresia de pe partea drcapta
este evaluatd, iat valoarea sa este atribuitd variabilei (si prin urmare, intro locale de memorie) pe partea stanga a
© variabila se spune ca este inijiaizat prima datd ednd o valoare este plasatd in variabila, Si ne amintim ed in C +, se numeste
coperatorul de atibuire.
Exemplul 2-43
Si presupunem ci aveti urmitoarcle declarafii variabile:
Intmom!, num2; dubla vinzare: char mai inti; stsir
Acum ia in considerare umétoarcleafrmati de atribuie:
uml = 4)
‘lest RUsersviorelDesktopoodG++%620Programming.hin 902302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
‘num2 = 4 * 5-11; vanzare = 0.02 * 1000; primal =D’
str= "Este 0 71 insorta.";
Pentru fiecare dintre aceste afiemalii, computerul evalueaza in primal rind expresia de pe magazinele de dreapta gi apoi care valoarca,
Jnteo locajie de memorie numité de identificatorul de pe partea stinga. Prima declaratie stochea7 valoarea 4 in numl, a doua
magazine declarajie 9 in aum2, a treia magazine declaratie 20.00 in vanzave ia a patra magazine declarafie caracterul dezveltivi in
primul rind, Cea de a cineca Declaratiaatribuie sirul "Este o 71 insorits." la strvariabila,
Umatonul program C++ preci
.tul declaraiilor precedente:
1 Acest program ilustreazi modul in care datele din variabilele suat / manipulate.
#inelude
#inelude
folosind namespace std; int main ()
‘
int num!, num2; dubla vinzare; char mai inti; st st;
4
cout << "numl ="<< << numl endl;
num2=4* 5-11;
cout << "num? ="<< << num? endl;
vinzare = 0.02 * 1000;
cout << "vanzare ="<< vanzare << endl:
primul ="D';
cout << "prima =" << prima << endl;
str scout << "str =" << str << endl;
return 0;
>
vanzare= 20 prima =D
str = Este 0 2i insoriti,
Pentru cea mai mare parte, programul precedent este simplu. Si ne aruncim o privire la declaratia de iesire:
cout <<"numl =" << <>. Sintaxa, impreund cu
>> CIN este:
> variabild >> cin variabila
Accasta se numeste o declaratie de intrare (cite). n C++,>> se mumeste operatonul de extracfie flux.
NOTA intr-o sintaxd, umbrie indica o parte a definitiai care este opfionala. Mai mult decst atit,h toata aceasta cart, sintaxa este Inchist th
cut galbene.
Exemplul 246
Si presupunem cd de mile este 0 variabild de tip dublu. Si presupunem ci de intrare este 73.65. Luafi in considerare umitosrea
declaratie:
>> mile cin,
Aceasti declaratie determin computerul pentru # objine de intrae, care este de 73.65, de la dispozitivul standard de intrare gi il
stocheaza in mile variabile. Asta este, dupa aceasti declarajie executd, valoarea variabilei mile este 73.65,
Exemplul 2-17 explicd in continuare cum se introduce date numerice fi
stun program,
Exemplul 247
Si presupunem od avem urmitoarele afirmayi
int picioare;
inch;
Si presupunem ed intrarea este:
237
In continuare, luati in considerare urmitoarea declarajie: >> picioare >> CIN inci;
toch
Aceasti declerati ‘mai inti numinul 23 in picioare variable gi apoi numirul 7 in inci variable, Observati cd atunei edd
aceste numere sunt introduse prin intermedi tastaturi, acestea sunt separate cu un martor. De fept, ele pot fi separate eu unt sau mai
multe spafi libere sau lini sau chiar earacterul tab
‘lest RUsersviorelDesktopoodG++%620Programming.hin 392302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Ummitonul program C +1 aratd efectul declaratilor de intrare precedente:
11 Acest program ilustreazi modul in care funcfioneazi dectaratiile de intrare,
#inelude
folosind namespace std; int main ()
‘
picioare int; int inch;
cout << "Introduceti doua numere separate prin unul sau mai multe spat
> picioare >> cin inci; cout << endl;
cout << "picioar
<< picioare << endl; cout << "Inches
" << inch << endl;
return 0;
>
Sample Run: in acest esantion a alerga, intrare de utilizator este umbritd,
237
Introduceti dou numere tntregi separate p
Picioare = 2:
Inches
Variable, instructiunilor de atrbuire gi declara
sinai de caractere gi date numerice
Exemplul 2-18
1V Acest program ilustrear modul dea citi siruri de caractere si date numerice.
include
finelude
folosind namespace stint main 0
c
(/ Linia 1) Linia 2// Linia 3 // Linia 4
firstName sir; lastName sir; vdrsta int; greutate dubl
cout << "Introducefi prenumele numele, prenumele, varsta,”
i greutate, separate prin spat
<< Endl;
>> >> firstName cin lastName; >> >> cin varsti greutate;
cout << "Nume:" << firstName <<"
H Linia 8
‘lest RUsersviorelDesktopoodG++%620Programming.hin 962302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
1 Linia 9 // Linia 10
4
iat
<< LastName << endl;
cout << "Varsta:" << varsta << endl; cout << "Greutate:" << greutate << endl;
return 0;
>
Sample Run: in acest esantion a alerga, Intrare de utlizator este umbriti.
Introduceti prenumele, prenumele, varsta si greutatea, separate prin spatit
Mann 231205
Vairsta: 23
Greutate: 1205
firmafiile din linile 1 1a 4 declare varia
Programul precedent funcfioneazi dupa cum urmeaz
tip sir, varsta de tip int, si greutaten
ilele firstName gi lastName de
tip dublu. Afirmatia din Linia 5 este 0 declarat
‘aumite linii rapide) Dupa cum se ara
‘pune utilizatorului ce si facd. (. Astfel de declarati de iesire sunt
1 in termen de proba, de intrare la program este:
Sh
‘Mann 231205
Afitmatia din Linia 6 eiteste mai inti gi stochea7a gira! Sheila in variabila firstname gi apoi sare peste spatiul dupa Sheila i citeste $1
stochea7a sirul Mann ia Lastname variabild. In continuare, declaratia in linia 7 sare peste primul martor, dup Mann si citeste si
stocheaza 23 in varsta variabils si apoi sare peste martor, dupa 23 si citeste si stocheaza 120.5 in greutate variabilé,
Declaratiile din liniile 8,9 10 produc al treilea, al patrulea gal cincilea lini de fugi de proba,
NOTA In timpul executiei de programare, in cazul in care mai mult de o valoare este introdust intr =o line, aceste valor trebuie s& fie
separate prin cel putin un gol sau fil, In mod alternati, © valoare pent fiecarelnie poate fi introdus.
Inifializarea variabilei
Amintifi-va, existé dou moduri de a inijializa o variabila: utilizand instructiunea de atribuite gi folosind
in considerare umitoarea declaratie:
structiume de citire. Luafi
int picioare;j
inch;
Lua in considerare urmatoarele doua seturi de cod:
(A) pivioare ~ 35; B) cout <
inch = 6; >> picioa
cout << "Total inch =" cout << endl;
2 * picioare + inch; eout <<
Introduceti inch:";
>>; inch cin
cout << endl;
cout << "Total inch ="
2-* picioare + inch;
‘lest RUsersviorelDesktopoodG++%620Programming.hin 72302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
(A), picioare si inci sunt initializate folosind instructiuni de atribuire, stn (b), aceste variabile sunt initializate folosind declarati de
intrare. Cu toate avestea, de flecare datd cand codul de la litera (a) executd, picioare gi inci sunt inilializate la acecasi valoare, eu
exceptia cazului cind editati codul surs8, modificati valoarea, ecompilati, sia alenga, Pe de altd parte, in (b), de ficcare dat cand
programul se executi, vi se solicit si introduceti valori pentra picioare gi inci, Prin urmare, 0 declaraje de citre este mult mai versal
decit o declarafie de atribuire.
1e de atribuize. Acest lucru este valabil mai ales in cazul in
itirea si stocarea datclor,
Uneori este necesar si inifializeze o variabild utilizand o instruci
variabila este utilizaté numai pentma caleulu! intem si nu penta:
ne amintim e3 C =+ nu inifializeze automat variabile atunei cdnd sunt declarate, Unele variable pot fi initializate atunei edd
acestea sunt declarate, in timp ce altele trebuie si fie iniializatd folosind fie o instructiune de atribuire sau o declaratie de eitie.
NOTA Atunci cénd programul este compilat,unele dintre cele mai noi IDE - uri s- ar putea da mesaje de avertizare in cazul in care
programul utlzeaza valoarea unel variable fara inifializarea mal intl in mod corespunzator acea variabild. In acest caz, dacd ignorati
avertismental gis execute programul, programul s ~ ar putea termina anormal , cu un mesa} de eroare,
NOTA Sé presupunem cd dori s8stcati un caracter intr - un cher variable tind oinstructiune de intar. In mpl execu
programultatunci cind introduce caracterul, nu inchid ghiimele simple. De exempl, #8 presupunem cd CH este un caracter variabil
tuati
considerare urmatoarea declaratie de intare:
In care dori i Sie tien timpul executiei program, introduceti doar K, In mod similar,
azul in care doris stocafi un gir de caractere int-o variabilé gir folosind o instruciune de inrate, in timpul executiel programulu,
Intreducefi doar girul fara afi ghilimele duble
Exemplul 249
Acest exemplu ilustreaza in continuare modul in declarafiie de atribuite gi a declarafilor de intrare manips
considerare urmitoarele declarafil:
variabile. Luafi in
ime, suprafat ch char string name:
De asemenca, si presupuncm ci urmatoarcle afirmafii executa fn ordinea data
T._[Numar =
>> lungime >> in timer
zona latime = kungime *
llungime = lungimes = 2
[atime = 2 = lungime -litime de 5*;
2
B
a
5. [>> numele cin,
G
2
8
zona atime = lungime *
(9. [b> chain
10, temp = Numar de + static cast (ch)
Jn plus, 8 presupunem de itrare est:
105 40 Amy A
Aceasti linie are patru valori,10.5, 4.0, Amy, si A, iar fecare valoare este separatd de celelalte printr-un spaiu liber
‘Si determinim acum valorile variabilelor declarate dup ultima declarafie executd, Pentra a arita in mod explicit modul in cate ©
anumitd afirmafie modificd valoarea unei variabile, sunt prezentate valorile variabilelor dupa fiecare declarafie Executd. (In Figura 2-4,
un semn de fntzebare [2] Intro cutie indica faptul c4 valoarea in cascta este necunoscut.)
Inainte de executa declaratia I toate vribilele sunt nenitializat, aga cum se arti fn Figura 2-4
‘lest RUsersviorelDesktopoodG++%620Programming.hin 382302.082016 (© ++ ce programare: Prjectarea programuld, ncluiv uct de dat, eda 7.
count temp length width area ch name
FIGURA 2-4 Variaileinainte de 1 decarafe Executa
Jn continuare, vom aria valorile variabilelor dupa executarea fide declrai
Vali vatibilor/ Declare
Dip
st
Explicaie
conta lungime temp Nr suprafafa lafime nume ch
Ase pasta | in conta,
conta lungime temp zona de lijime conta nume ch = conta* 1;
Numar de +1= 11+ = 2.2 A se phstra in conta, Aceastd declaratie a inlocuiegte vechea valoare a numdrului cu aceastd noua valoare,
conta lungime temp zona de lijime nume ch cin >> Iungime >> latime:
3
Desduce doud mumere, are sunt
105 4140, ge pastreazdprimul numér in lungime, iar a dous in lime.
105a4o
420
4
Numar temp lungime nume ch suprafafé Latime
zona latime ~ lungime *;
lungime *latime = 10.5 *
4
2.0, Magazin 42. 0 Tn zon’
‘lest RUsersviorelDesktopoodG++%620Programming.hin2.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
105m 4.0 042.0
Amy
‘Numar temp lungime mume ch suprafatd Laime
>> numele cin;
Citi intrarea urmatoare, Amy, dela tastaturd gi pastati In numele.
Valorlevariabilelor/ Declare
Dupa
se
xplcaic
2212.5 conta lungime temp zona latime Iungime = Nume ch lungime + 2;
4.00420
bE 125|5[+2.0|feh-ul Am)
Numarde lungime temp Lajimea zonei Nume ch latime = 2 * lungime - 5 * latime;
2 lungime « 5 * Iatime = 2+ 12.5 = 5 * 4.0 = 5.0. Se depositeaza 5,
aceasté nous valoare,
Jn litime. Aceasta declaraic a inlocuiagte vechea valoare a latimil cu
7
125 m50
625
‘Numa temp lungime nume ch suprafapé Latime
zona latime = longime *;
lungime *Iatime = 125 *
2.5, Se depositeazs in zona 62.5, Aceasth declaratic a inlocuiegte vechea valoare a zonel cu aceast’ nous valoare.
if
‘lest RUsersviorelDesktopoodG++%620Programming.hin
5 + 2 = 12,5, Magazinul [2.5 in lungime, Aceasta dectaratie a inlocuiegte vechea valoare a lungimil cu aceasta noua valoare,2.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
A
conta temp lungime zona latime nume ch >> ch cin;
Amy
Citi intrarea urmatoare, A, cela tastaturd gi pasta in cap,
6
Amy
10
Numar temp Iungime nume ch suprafafé Latime
temp = Numar
+ static cas (ch);
12.5 5.0 m625
Numat de +
static_cast (ch) = 2 + staig_east
(OR) = 2.4 65 = 67. 67 Ase pasta in temp,
NOTA Cind ceva nu merge bine int-un program gi rezultatele pe care le genereazd, nu ceea ce se agteapti sunt, ar trebui si facie plimbare
prin a dedlaratilor care atribuie valori variabilelor dumneavoastri. Exemplul 2-19 ilustreazii medul de a face o plimbare prin a programul
Aceasta este 0 tehnicd foarte eficienta de depanare,Site-ul web care Insoteste aceasta carte contine un program de ++ C, care arata efectul
calor 10 afrmatii enumerate la inceputul exemplului 2-19. Program este numit Exemplul 2 19.
4
inta, bs
a= loss [iLinial[
= 8 /Minial|2
feout|<< 9/4 <
De exemplu, urmitoarca instractiune include iostream figienal antet fntr-un program C+: #include
Direetivele preprocesorului pentru a include fisiere antet sunt plasate ea prima Linie a unui program, astfel inet identificatorii
declarate in acele fisiere antet pot fi utilizate pe tot parcursul programului. (Si ne amintim cd in C ++, identificatori trebuie declarate
fnainte de a putea fi uilizate,)
Anumite figiere antet sunt fumizate ca parte a C++, Anexa F descrie uncle dintre fisierele header utilizate in mod obisauit.
programatori individuali pot erea, de asemenea, propriilefisiere antet, care este discutat in clasele de eapitol si date abstractiune, mai
trai in aceasti carte
Reyinetic& comenzile preprocesor sunt preluerate de cdtre preprocesorinainte ca programul trece prin compilator.
Din Figura 1-2 (Capitolul 1), putem trage concluzia ed un sistem de C 1+ are trei componente de bard: mediul de dezvoltare a
progeamului,limbajul C ++, iar biblioteca C ++, Toate cele trei componente sunt parte integrand a sistemului C-+~, Mediul de
dezvoltare program este format din cele sase etape prezentace in Figura 1-2. Pe mAsuri ce inveti limbajul C ++ pe tot percursul citi,
vom discuta componente ale bibliotecii C +~ aga cum avemnevoie de ele.
Spatiu de nume siutilizarea cin si cout intr - un program
Anterior, afi aflat ci ambele gi cout sunt cin identificatori predefinite. ANSI/ ISO standard C ++, acesti identificatori sunt declarate in
figieral iostream antet, dar intr-un spajiu de nume. Numele acestui spagiu de nume este std, (Mecanismul spafiului de nume va fi definit
{in mod formal si discutate in detaliu in capitolul 7. Pentru moment, trebuie si siti doar eum s8 foloseased si cout si cin, de fapt,
alt identificator de iostream fisicr antet.)
Exist mai multe metode prin care se poate utiliza un identificator declarat in std spafiul de nume. O modalitate de a utiliza gi cout este
cin si se facd referite Ia ele ca std :: CIN si std :: cout pe tot parcursul programului
© altd opfiune
dea include urmatoarea declaratie in program:
folosind namespace std;
Aceastd declaratie trebuie si apard dupa instructiunea #inelude . Aveti posibilitatea si facd referie la cin si cout fini a
utiliza std :: prefixul, Pentru a simplifica utlizarea si cout cin, aceasté carte foloseste a doua forma, Aceasta este, de a utiliza si cout cin
fntr- un program, programele vor confine urmatoarele dows afirmai
fHinelude using namespace std;
In C+, spafiul de nume si folosind sunt cuvinte rezervate,
Mecanismul de spajiu de nume este o caracteristicii a ANSI/ ISO Standard C + =, Pe misurd ce aflaji mai multe C ++ de programare,
‘lest RUsersviorelDesktopoodG++%620Programming.hin 99230coos 2016 (++ ce rotamer: Preiecara program, inci uct de dt 7
vei deveni constient de alte fisiere ante. De exemplu, cmath fiserl antet confine specifica multorfasei matematice uit. fn
‘mod simi, jomanipfisiealantet consne specifcaile de mat multe func utile g manipulstoare cae va aut formatati de este
‘nteun mod specific Cu toate acestca, la fel caidentifcatori in iscrl ‘ostream ant, identificaton in fisiere ancet ANSI ISO
standard C++ sunt doclrate inten spat de nume
Numele spatiulul de nume in fiecare dintre aceste fisiere antet este std, Prin urmare, ori de cdte ori se discutd anumite caracteristici ale
‘unui fisierantet in ANSI/ ISO standard C++, aceasta carte se va refer la identificatori fd std prefix :, Mai mult decat att, pentru a
simplifica accesarea disporitivelor de identificare in cadrul programelor, declarafia folosind namespace std; vor fi incluse. De
asemenea, in cazal in care un program utilizeazéi mai multe figiere antet, doar o singuri folosind este necesari o declarajie, Acest lucrt
folosind declaratie apare de bicei dupa toate figierele antet.
Cu ajutorul six Tip de date intr - un program
‘Si ne amintim c& tipul sir de date este un tip de date definit de programator si nu este direct disponibil pentru utilizare int-un program,
Pentru a utiliza tipul sir de date, aveti nevoie pentru a avea acces la definijia sa din sirul de fisier antet. Prin urmare, pentru a utiliza
tipul sirde date intr-un program, trebuie si includa urmatoarele directive preprocesor:
include
Crearea unui program C ++
{In sectiumile anterioare ati invatat destule concepte C++ pentru a scrie programe semnificative. Acum sunteti gata pentru a crea un.
program complet C—*,
Un programC +1 esteo coleetie de functii, dintre care una este functia principald. Prin urmare, n cazul in care un program C 4
consti numai dintro singurd functie, atunci acesta trebuie sd fie functia principald. Mai mult decdt att, o finetie este un set de
instractiuni coneepate pentmu a tealiza o anumité sarcing. Pana in Capitolul 6, va va ocupa in principal cu prineipalele functi
Declarajiile dea declara variabile, declaraiile de manipulare a datelor (cum ar fi sareinile), precum si declarafile la datele de intrare gi
de iesire sunt plasate in principal functia, Declaraiile de a declara constante numite sunt de obicei plasate in afara functiei principale
‘Sintaxa Functia principala utilizata in aceasta carte are urmatoarea forma: int principal ()
‘
declaajie
statement_n rerum 0;
>
in sintaxe principaa funetie, fccaresfimatieatatement_1 . statemen_n), este, de obice, ie o declarajiedeclarativa sau o declarjie
executabil.Insirictiunearetum 0: trebuie fie incluse, fa principal, funcjias tcbuie si fc ultima declaraie. Dacdinstuctiunea
retum O; este deplsat in compl principal funetie, ezutatele generte de program si nu fc pe plac umaeavoastri, Sensul deplin al
{ntoarverii declaratia 0; vor i diseutate in eapitolul 6, Pentru moment, cred ci de aceasta declaratie ca declaratia de sArgit de program,
in C ++, imtoare
se este un cuvant rezervat.
Un program de C++ ar putea folosi resursele oferite de IDE, cum ar fi codul necesar pentru introducerea datelor,ceea ce ar necesita
programul pentru a include anumite fisere antet, Aveti posibilitatea, prin urmare, imparfifi un program C++ in dows pati: Directivele
preprocesor si programul, Directivele preprocesor spune compilator care antet fisiere pentni a include in program. Programul congine
firma care realizeazi rezultate semnificative. Luate impreund, diectivele preprocesor si declaratile de program constituie codul
sussi C++, Reamintim cd, pentru a fi util, codul sursé trobuie si fie salvate int-un figier cu extensia pp de fier. De exemplu, in cazul
§n care codul sursé este salva in fisierul frstProgram, atunci numele complet al acestui fisier este firstProgram.cpp. Fisierul care
confine codul sursi se numeste fisicral cod sursi sau figierul sursi,
fn cazul in care programul este compilat, compitatoral generearA codul obiect, cae este salva inte-unfiger cu extensia ob. fn caza in
care codul obiect este legat cu resursele de sistem, codul executabil este produs si salvatintr-un figircu extensia xt figicr. De obi
‘umes fsirului care confine codul obiect gi numelefiieraui care conyine codul executabil sunt aceleasi casi mumelefisieruli eae
confine codul suns. De exempl in eazul in care codul sursi este situat inten fisier ums fstProg.epp, numele fgiruluieare
confine codul abiect este firstrog.obj, iar numelefigirutui care confine codul executabil este frstProg.exe.
Prelungitile ca date in paragraful precedent, adic3, cpp, obj si exe sunt dependente de sistem. Mai mult decét atit, unele programe in
IDE-urile menjin sub formé de proiecte. Denumirea proiectului si numele fisierului sursd nu trebuie 88 fie aceeasi. Este posibil ca
‘numele fisierului executabil este numele proiectului, cu extensia xe. Pentru afi sigur, verificai sisterul sau documentatia IDE,
Deoarece instructiunile de programare sunt plasate fa principal functie, si ne detalieze aceasta fun
sie.
‘lest RUsersviorelDesktopoodG++%620Programming.hin 10012302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Piesele de baza ale principalelor functii sunt citlul si corpul. Prima linie a prineipalelor funcyi, si anume:
int main 0
se numesle rubrica¢ prineipalelor funetii.
Declaratile incluse intre acolade ((i)
formeaza corpul principal funcii. Corpul principal functia conjine dous tipuri de situa
+ Declaraii Declaratie
+ Declarafii Executable
Declarai de decaratie sunt folosite pentru a declara Iuerur, cum ari variable.
Jn C “+ idemtficator, eum ari variable, pot declaate oriunde in program, darele trebuie si fie decaratefnainte dew fi utiliza
Exemplul 2-27
Umnitoarele afirmaii sunt exemple de declaraii variable:
int a b,c; x duble, ys
Declarati executable ofectua calcule, manipula datele, creati de iesire, sf accepte intrare $i asa mai departe
Unele afirmasii exeeutabile pe care le-af intlnit pind acum sunt situaiile de atribuire, de intrare gi de teste
Exemplul 2-28
Unmitoarele afirmafii sunt exemple de declaraii executabile:
43/1 Declarafie de atribuire
b>> cin; // Declaratie de intrare
cout <<< 0 '™ << b<< endl; // Declaratie de iegire
{n forma de schelet, un program C ++ arata urmitoarele:
1 Coment
daci este necesar
Directivele preprocesorului pentru a include fisiere antet folosind declarafic pe nume constante, daca este necesar
int main 0)
{
declarafie 1
statement_n return 0;
d
Programul C-++ in Exemplul 2-29 aratd in cazul in care includ declaratii, declaraii de declarajie, declaraii executabile, gi ase mai
departe apar de obieei in program,
Exemplul 2-29
[| #ARAnaneHAnAnAAAuAaAnAARRAARANOAAHEMARRUERAAAHS HaneneERAEEERNS Autor: DSMalik/!
1 Acest program aratd in cazul in care includ declara(ii folosind // declaratic, constante denumite, declara(ii variabi
atribuire // declarafi, side intrare side iesire declarafii apar in mod tipic. //
seesneueseusanatanniatanasanndansatauananatenane snaueraustened® include /! Linia 1
folosind namespace std; // Linia 2
constint = 12 NUMARUL; !/ Linia 3
‘lest RUsersviorelDesktopoodG++%620Programming.hin 10172302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
int main ()// Linia 4
i Linia 5
int firstNum; // Linia 6
int secondNum; i/ Linia 7
firstNum = 18;// Linia 8
cout <<"Linia 9: firstNum =" << firstNum
<< Endl //L
9
cout <<"Linia 10: Tatroducefi un numir intreg:"; // Linia 10
>> secondNum cin; // Linia 1
cout << endl; Linia 12
inia 13: secondNum =" << secondNum
<< Endl; // Linia 13,
fArstNum
irstNum + NUMBER +2 * secondNum // Linka 14
cout<<
{nia 15: Noua valoare a"
‘<< "FirstNum =" << << firstNum endl; // Linia 15
return 0;
Linia 16
0 Linia 17
Sample Run: fn acest esantion a aeypa ntrare de uilizator este umbrit
Linia 9: fistNum = 18
Linia 10: Inroducefi un numacintreg: [5 Linia 13: secondNum™ [5 Linia 15: Noua valoare a firstNum ~ 60
Programul precedent functionea7 dup cum urmea7d: Declaratia fn Linia 1 include iostream fisiera! antet,astel incdt programul
poate efectua de intrare/iesire, Afirmatia din Linia 2 utilizea7é folosind spafiul de nume declarajia,astfel inet identificatori
declarate in figierul iostream antet, cum ar fi Cin cout si endl, pot fi folosite fra a utiliza std :: prefixul. Declaratia de la Linia 3 declara
‘numir constant numit si seteaza valoarea la [2, Declaratia din Linia 4 confine titl principale functii ier bretele din stanga in linia S
‘marchea7d ineeputul a prineipalelor functii, Declaratile din liniile 6 gi 7 si declare variabilele firstNum si secondNum
Afrmafia din Lina 8 stabileste valoarea fistNum la 18, ar situa in Lina 9 eyirivaloareafistNum, fn continuare delarayia in linia
10 solicit lizatonul penta a introduce un numa integ. Afimatia din linia 11 citeste si stocheaz&integ in secondNem varsbila,
care este de 15 pe teen de prob. Afimata da linia 12 poziticorsorul pe ecan la inesputulliniel umatoare.Afimajia din Linia 13
jeqi valoaea secondNum. Afimaia din Linia 14 evalueaza expresia
firstNum ~ NUMBER ~ 2 * secondNum
siatribuie valoarea acestei expresii la firstNum variabili, cae este de 60 pe termen probs. Afirmatia din Linia 15 ieyiri noua valoare a
firstNum, A firmasia din linia 16 confine intoarcere declaratie, care este ultima declaratie executabil, Bretele dreapta in linia 17
‘marcheazd sfrsital functiei principale,
Debugging: Intelegerea si Stabilirea Erori de sintaxa
Sectiunile anterioare ale acestui capitol s-a descris componentele de bazé ale unui program C++. Atunci cind tastafi un program,
ctorile de seriere gi erori de sintaxé neintenjionate sunt probabil si apard, Prin urmnare, atunci cad compilafi un program, compilatoral
vva identifica eroarea de sintaxd, fn aveastl sectiune, vom arita modul de a identifica gi reparaerorile de sintaxa
Lusi in considerare urmatonul program C++:
1, include
‘lest RUsersviorelDesktopoodG++%620Programming.hin 1022302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
2
3. using namespace std;
4
5. principal int 0
64
7. int mum
11, tempNum:
2
13. cout-<< "Num =" <<< Num", tempNum=" & std endl (std ::basic_ostream <_Elem,_Traits> & J cu |
/esemnate seurt,
Std :: char_traits
:\ program files 86) \ Microsoft Visual Studio 11.0 \ ve\inelud ostream (1027) \: sau ‘std: basie_ostream <_Elem, Traits
‘& Std 1: endl (std :: basic_ostream <_Elem,_Traits> &) 'eu
l
_Elem = Wehar_t,
Traits = Std ::char_traits
\ program files (x86) \ Microsoft Visual Studio 11.0 \ ve \ includ ostream (1019)\: sau 'std :: basic_ostream < Elem, Tralts>
endl (td :: basic_ostream <_Elem,_‘Traits> &) ‘eu
‘lest RUsersviorelDesktopoodG++%620Programming.hin 1032302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
Elem=
1
e:figierele \ de program (x86) \ Microsoft Visual Studio
11.0) ve\ includ \ ostream (993): sau "std :: basie_ostream < Elem, Traits>
& Std =: endl (std: basic_ostream <_Elem,_Tr
> &)"
e:\examplech?_syntax_errors.cpp (1 returneze 0 valoare
sroare C2561: “principal”: funefia treby
€:\ examplech2_syntax_errors.cpp (8): 4 se vedea declarafia de “principal”
Cel mai bine este s8 incerce sd corecteze erorile in sus in jos in moda, deoarece prima eroare poate confunda compilator si face ca
acesta sf semnaleze mai multe eroriulterioare, atunci cénd de fapt, a existat doar singurd eroare pe o linie mai devreme. Deci, sia in
considerare mai inti urmitoarea eroare
ce: \ exanplech?_eyntax_errors.cpp (9): eroare C246: eroare de eintas: lips ';' inainte de identificatorsl ‘mm’
Examplech2_syntax_emors.cpp expresie 0) indicd fa xxistl o eroare in linie 9. Restul acestei erori specified faptul c& existd o
lips; inainte de a num identificator. Dacé ne uitém la linia 7, vom constata c& exist o lipsé la vinguld sfrsitul declarajia int num. Prin
urmare,trebuie s3 introducem; la finalul declarafiet in Linie 7.
fs continuare, lui in considerae 2 dous erate:
¢: \ exanplech2 syntax orrors.cpp (11): eroase C2065: “tempt: dent fhoator nedeclarat
Aceasté eroare se produce in linia 1, si se specified faptul c& tempNum idemtificatonul este negra. Cand ne uitém la codul, vom gasi e&
acest identificatornu a fost declarat, Asa cd trebuie si ne declarim tempNum ca o int variabila
Eroarea:
ce: \ exanplech? syntax errore.cpp (11): eroare C2065: “teapihan’: idantifieator nedeclarat
are loc in linia 13, si se specifica faptul c& tempNum identificatorul este negrn, Ca si fn eroarea anterioari,trebuie sine declarim
tempNum. Refineti ed, odatd ce declarim tempNum si recompilati, acest luera gi erbarea anterioari va disparea,
Untoare eroare este:
¢: \ exanplech2_eyntax_srrore.cpp (13): eroare C2563: nepotrivise in Lista oficiaik de paranatri
Aceestéeroare se produce in linia 13, indicdfapol eo anu list formal parametra este dispropartionsia, Penta un incepitor,
rare este oarecum gre de infles (ls capitol 13, vom explica lista oficial parametr al operatorulyi <=) Cu toate acestes,
pe misurd ce practicd, vejiinviga cum si intexpreteze si si corecteze erorile de sintaxa., Aceastd eroare devine elar daca te uiti la
uurmatoarea eroare, din care o parte este:
cc: \ exanplach?_syntax errors.cpp (13): aroare C2560: '<<': in imposibilitates da a rezolva functia da supra
Fa ne spune c& aceasti eroare are ceva de-
secu operatonal <<, Cfind ne uitim cu atenie la afirmayia din linia 13, care
<< << Mun", empttin ="
folosind namespace std; int main ()
{
‘num int; int tempNum;
tempNum=2* num;
cout << "Num =" << << Num", fempNum =" << << tempNum endl; return 0;
y
Tesirea este
Num
8, tempNum = 36
Pe itso ce invikafi C+ 5 sere practcd gi execuarea programelor, vei fnvja cum si fjaLocuui gi repara erie de sintand
Fsteposibil ca lista de eroriraportate de compilator este mai lg dect program in sine. Acest lin se datoreadfapului
cum se rita mai sus 0 eoare de sntaxd intro singuré lie poate cauza eon de sintax in lnile umitoare. in ste de situa,
corectaj erorile de sintaxa in ordinea in care sunt lsat si compila programal,dact este necesar, dupa fecare corectc. Vey vedea cat
de repede se micgoreaza lista de erori de sintaxd. Cel mai important hucr este sn inte in panics
fn sectiunes urmicoare, vor deseriecateva regu simple pe care le puteti rma, astfel inet programl este struturt in mod
covespunzitor.
Stilul programului si Forma
In scotiunile anterioare, afi invijat destule concepte C++ pentru a scrie programe sermificative, Inainte de a incepe si scrie programe,
cu toate acestea, trebuie si invefe structura lor coreeti, printe altele, Folosind stnictura adecvata pentru un program C+ face mai usor
de injeles si de a modifica ulterior programul. Nu este nimic mai frustrant deca! incerearea de a urmniri si probabil, i modifice un
program care este corect sintactie, dar nu are nici o structur.
In plus, ficcare program C++ trebuie si indeplineasci anumite reguli ale limbii, Un program de C++ trebuic si confina principalele
finefii, De asemenea, trebuie si urme7e regulile de sintaxi, care, la fel ca rogulile gramaticale, spun ce este bine gi ce ester gi ce este
legal si ceea ce este ilegal in limba, Alte reguli eare servese scopului de a da un sens precis limbii ci este, ei susfin semantica
Jimbajului
Ummitoarele soctiuni sunt proiectate pentru a vi ajuta si invefe cum si utilizeze elementele de C++ de programare afi invijat pind
acum pentru a crea un program de foncjionare. Aceste sectiuni includ sintaxa; utilizarea matrifelor, utilizarea semicoloane, intre
paranteze si virgule; semantied; numire identificatoi; lini prompte; documentare, inclusiv comentaris gi forma gi stilul
taxa
Regulile de sintaxa ale unei limibi spune ce este legal si ceea ce nu este legal. sunt detectate erori fn timpul sintaxa compilare. De
exemplu, Iuati fn considerare urmatoarele afiematii C+
int /ILinia t
Inty 1 Linia 2
zedublu;//Linia 3
yew xg Liniad
Atunci cénd aceste declarati sunt compilate,o eroare de compilare va avea loc la linia 2, deoarece lipseste dupa virgull este
declararea variabila y. O a dous eroare de compilare va avea loc la linia 4, deoarece w identificatoreste uilizat, dar mu a fost declarat
‘Ags cum sa discutat fn capitolu 1, introduce un program in computer lilizind un editor detent. cazl in cre program ete
tasat, eri sunt aproape inevitable, Prin urmare,atuneicind programul este compilat, suet cel mai probabil petra a vedes ero de
‘lest RUsersviorelDesktopoodC++%420Programming hin 1052302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
sintaxd, Este foarte posibil ea o eroare de sintaxd fntun anumit loc, ar putea duce la erori de sintaxit fn mai multe dectaratiiulterioare.
Este foarte comun pentru omiterea unui singur caracter pentru a provoca patra sau cinci mesaje de ereare. Cu toate acestea, atunci cand
prima croare de sintaxa este indepartata iar programul este recompilat, cori de sintaxd ulterioare cauzate de accasté croare de sintaxd
poate dispérea, Prin urmare, ar trebui si corecte7e erorile de sintaxa in ordinea in care compilator Ie listeaza, Pe misuri ce devin mai
Familiarizayi gi cu experienfi, cu C ++, vei invlfa cum si faa locului rapid gi reparaerorile de sintaxd, De asemenea, compilatoare nu
‘numat c& poate descoperi erori de sintaxd, dar, de asemenea, indiciu i, uneori, spune utilizatorul in cazul in eare erorile de sintaxd sunt
sicumsi le rezolvati
Folosirea Blanks
Jn C~+, tilizatiunol sau mai multe spa libere pent a separe nume atunci cénd datle sunt de intare. Blancur sunt de asemonca
folosits pentru a separa cuvint rzowvate si idetificatori unl de-atal side late simbolu, Ehose nu trebuie sé apar inten cuvant
rerervat sa identficatr.
Folosirea virgulele, Console, si virgule
Toate declaratii C+~ trebuie si se termine cu punet si vingul, Semicoloana este, de asemenea, numito declrafe terminator.
Rejine}i cd acolade, {i}, nu sunt C~+ dectarayi in sine gi, chiar dae cle apar de multe ori peo linie cu nici un alt cod. -ar putea
considera paranteze ca delimitatoare, deoarece ele inchid corpul unei func si setaji-l din alte part ale programului. Console au alte
utiliza, care vor fi explicate in Capitolul 4,
ne amintim ed virgule sunt utilizate penta articole separate intr lista. De exemplu, uilizaji virgule atunci efind declarayi mai
‘multe variabile ca urmare a unui tip de date
Semanticd
Setul de reguli, care da sens unei limbi se numeste semantica. De exemplu, regulile de ordi
sunt reguli semantice.
e de-prioritate pentru operatori art
Daca un program confine erori de sintaxd, compilatorul vi va avertiza, Ce se intimpli atunci end un program contine erori
semantice? Este destul de posibil pentru eradica toate eroile de sintaxa fnt-un program si ined nu Lau rula, $i dal se executd, nu se
poate face ceca ce a insemnat s3 facd. De exemplu, urmatoazele dous linii de cod sunt amisele expresii coreete sintactic, dar ei au
diferite semnificaii
24385
si
@+3)*5
acd afi fnlocui una dine aceste lini oleode pentru celialt intr-un program, nu veti objine aceleagirezultate, chiar ac ciffeles
aceleasi, semantica sunt dferite. Veiinvata despre semantica pe tot parcursul acestei cli
Atribuirea de nume Identificatorii
Luayi in considerare urmitoarele doua setur de situa
Const Un dublu
545 / Constanta de conversie
x duble;// Variabila de a define centimetri
y dublu; / Variabila de a define inchi x=y * Az
si
Const dublu CENTIMETERS_PER_INCH = 2,54; duble centimetsi duble inci;
ccentimetti = inci * CENTIMETERS_PEI
<_INCH;
Wentificatorii fn al doilea set de situafii, cum ar i CENTIMETERS_PER_INCH, sunt numite de obicei auto-documentare identificator
up’ cum se poate vedea, identificatari de auto dacumentatea poate face comentarii mai pusin necesare
Latin considerare anto-documentarea identificator annualsale, Acest identficator se numeste un cuvant-a alenga impreuna, in
utilizarea identificatorilor de auto-documentare, pute}i include neatentie cuvinte nin-impreuni, ceea ce ar putea diminua claritatea
documentatiei. Putei efectua cuvinte run-impreund mai ugorde infeles de catre oricare dintre valorificarea inceputul fiecarui cuvnt
‘lest RUsersviorelDesktopoodG++%620Programming.hin 1082302.082016 (C ++ ce programare: Projectarea programuld, ncluiv uct de date, eda 7.
‘nou sau prin inserarea nei subliniere chiar inainte de un cuvant nou. De exemplu, afi putea utiliza fie annualSale sau annual_sale
pentru a crea un identificator care este mult mai cla,
‘Si ne amintim ci mai devreme in acest capitol, am specificat regulile generale de numire constante gi variabile numite, De exemplu, un
{dentificator folosit penta a denumi o constant este numit toate majuscule, in eazul in care acest identificator este un euvéint ran-
Jmpreund, atunci cuvintele sunt separate cu caracterul subliniere, cum ar fi CENTIMETERS_PER_INCI
Linii Prompt
© parte din buna documentate este utilizarea de soliitari serise in mod clar, astel inedt tilizatori s ste ce sf fue atunei cand
interacfioneazd cu un program. Nu este nimic mai frustrant decats4 stea in fafa unui program care nuleaza gi care nu au nici cea mai
‘mie nofiunes daca pentru a introduce ceva sau ce sd intr. Lntle Prompt sunt declaratii executabile pe care informeaza utilizatorul ce
si facd, De exemplu, luafi in considerare urmatoarele afirmafii C ++, fn care num este © int variabili
cout << "Va rugim si introducefi un numar intreg intte 1 si 10 si
<<"Apaisafi tasta de intoarcere" << endl; >> Num cin;
Atunci efind aceste doud declarafii executa fn ordinea smitoarea linie de text si
apard pe ecran:
in primal rind declarajia de ieyire determi
‘Va mugdm s4 introdueefi un numarintreg intre 1 si 10 gi apasaf tasta de retur
sta de intoarcere. in cazul in care
Dupi cea vizut aceasti Tinie, utilizatoriistiu ed trebuie si introduceti un numirintreg si apasati
programul conjinea doar doua declaraje, utilizatorii nu aravea nici o idee ed ei trebuie s4 intre un numar integ, iar caleulatorul va
astopta pentru totdeaune penteu intra, Instructiunea de iesire precedent este un exemplu de o linie de prompt.
Inte-un program, ori de efite ori este nevoie de intrane de la utilizatori,trebuie si includ liniile prompte necesare, Mai mult decat att,
aceste lini rapide ar rebui si ineluda edt mai multe informatii
posibil cu privire la ceve ce este acceptabil de intrare. De exemplu, linia de solicitare anterioari nu numai spune utilizatorului si
introdued un numa, dar, de asemenca, informeaza utilizatoral 8 numéral trebuie si fie intre 1 gi 10.
Documentatie
Programele pe care le scricfi ar trebui sé fie cla, nu numai pentru tine, dar, de asemaenes, pentru oricine alteineva. Prin urmare, tebuie
i documenteze fn mod corespunzitor programele durmeavoastri, Un program bine documentat este mai usor de fnfeles si de a
‘modifica, chiar gio lunga perioada de timp dupa ce a seris iniial. Utilizati comentari pentru a documenta programe, Comentarile ar
ttebui si apard incr-un program pentra a explica scopul programului, pentru a identifica cine a scris, si si explice scopul anumitor
declarafi seu grupuri de declarafi.
Forma si stil
‘Scar putea fi de gandire c& C + are prea multe reguli. Cu toate acestea, in practic, regulile da C++ un grad mare de libertate. De
‘exemplu, Iuati in considerare urmatoarele doug modalititi de declarare a variabilelor:
picioare int inci; x duble, y;
si
picioare int, inet; x duble, y;
Computerul nu aravea nici o dificultate intelege oricare dintre aceste formate, dar prima forma este mai usor de citt i sil urmeze
Desigur, omiteree unei singure vingula sau virgula in formatul poate duce la tot felul de mesaje de eroare ciudate,
Cum riméne cu spafii goale? Unde sunt semnificative gin cal in care sunt ele lipsite de sens? Tuafi in considerare urmitoarele dou,
afirmayi
int a,b,c;
si
inta,b.e:
Ambele aceste declaraii insearni acelasi lucra, Aici, semifibricatele dintre identificatori fn a doua declaratie sunt lipsite de sens. Pe
de alt parte, si ia in considerare urmitoarea declaraie:
‘lest RUsersviorelDesktopoodG++%620Programming.hin 077230