100% found this document useful (1 vote)
438 views

C++ Programming-TRADUS

carte programare c++

Uploaded by

Viorel Naziru
Copyright
© © All Rights Reserved
Available Formats
Download as PDF or read online on Scribd
100% found this document useful (1 vote)
438 views

C++ Programming-TRADUS

carte programare c++

Uploaded by

Viorel Naziru
Copyright
© © All Rights Reserved
Available Formats
Download as PDF or read online on Scribd
You are on page 1/ 1429
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.hin 2.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 2230 6 +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 3230 2.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 4230 2.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 9230 2.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 230 2.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 7230 2.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 230 c2052016 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 9230 2.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 10230 2.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, 230 2.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 220 2.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 19200 2.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 woo 2.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 15230 c2052016 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 19200 2.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 wwes0 c2052016 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 19230 2.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 19200 2.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 hi 2.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 21230 2.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 hin ca08.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 23230 2.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.hin 2.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.hin 2.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 25230 2.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 are0 2.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 28230 2.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 29230 2.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 30230 2.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 31230 2082016 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.hin 2.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 39230 2.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.hin 6 +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 39230 2.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 36230 2.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 377230 2.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 38230 2.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: [email protected]_ DS Malik CAPITOL ‘lest RUsersviorelDesktopoodG++%620Programming.hin 30230 2.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 40230 czonz018 (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 41230 2.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 42230 2.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 43230 2.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 40230 2.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 48230 2.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 46230 2.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 47230 2082016 © ++ 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 48230 coos 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 49230 coo 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 50230 2.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 51230 2.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 59230 2.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 50230 2.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 5230 2.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 56230 2.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 7230 2.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 58230 2.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 61230 2.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 9230 2.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 70230 2.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 74230 2.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 75230 2.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 71230 2.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 78230 2.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 70230 2.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 90230 2.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 39230 2.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 96230 2.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 7230 2.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 38230 2.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.hin 2.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 99230 coos 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 1001230 2.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 1017230 2.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 102230 2.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 103230 2.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 105230 2.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 108230 2.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

You might also like