140 likes | 280 Views
Implemantari C++. Structura unui program C++. 1. directive de copilare 2. functia principala main() 3. declaratii de variabile 4. instructiuni Exemplu: #include<iostream.h> main() { int a; a=3; cout<<a*a; }. Tipuri de date • char reprezinta caractere ASCII; retine 8 biti (1 octet)
E N D
Structura unui program C++ • 1. directive de copilare • 2. functia principala main() • 3. declaratii de variabile • 4. instructiuni • Exemplu: • #include<iostream.h> • main() • { • int a; • a=3; • cout<<a*a; • }
Tipuri de date • • char reprezinta caractere ASCII; retine 8 biti (1 octet) • • int reprezinta numereıntregiın intervalul [-32767,32767]; // retine 16 biti • • long int reprezinta numere ıntregi dın intervalul • [-2147483647, 2147483647]; retine 32 biti. • • float reprezinta numereın virgula mobila, cu o precizie de cel putin 7 zecimale exacte;retine 32 biti. • • double reprezinta numereın virgula mobila, cu o precizie de cel putin 15 zecimale exacte; retinen 64 biti.
Operatorul ! este unar, spre deosebire de toti operatori (relationali, de egalitate si logici) care sunt binari. In C/C++ reprezinta "false" orice expresie egala cu zero, si "true" orice expresie diferita de zero.
3. Evaluare rapida (short-circuit) Pentru expresiile ce contin && sau ||, evaluarea are loc cand s-a stabilit deja valoarea expresiei, eventual fara parcurgerea intregii expresii. -presupunem ca "expr1" se evalueaza la 0 (false). Atunci expresia expr1 && expr2 se va evalua la 0, fara a se mai face evaluarea expresiei "expr2". -daca "expr1" se evalueaza la 1 (true), atunci expresia expr1 || expr2 se va evalua la true fara a se mai evalua expresia "expr2". Uneori se mai spune ca operatorii && si || sunt “lazy “
4. Instructiunea compusa O instructiune compusa este un sir de declaratii si instructiuni delimitate de acolade. Ceea ce acoladele delimiteaza se numeste "bloc". O instructiune compusa este ea insasi o instructiune. Exemplu:{a = 1;{b = 2;c = 3;}}
5. Instructiunile "if" si "if-else“ Forma generala a instructiunii "if" este:if (expresie)instructiune if (expresie)instructiune1elseinstructiune2 Semantica intuitiva este de asemenea clara. Daca valoarea expresiei este diferita de zero, atunci se executa instructiune1 si "se sare" peste instructiune2. Daca valoarea expresiei este zero, atunci "se sare" instructiune1, si se executa instructiune2.
6. Instructiunea "while“ "While", "for" si "do" sunt cele trei instructiuni repetitive din limbajul C. Consideram urmatorul format general al instructiunii "while" (iteratia sau bucla "while"). while (expresie)instructiuneinstructiune_urmatoare Mai intai se evalueaza expresie. Daca aceasta nu este zero (deci este "true"), atunci se executa instructiunea, si control trece la inceputul buclei "while". Astfel, corpul buclei se executa de cate ori expresie se evalueaza la "true". Terminarea buclei are loc cand expresie ia valoarea zero (adica "false"). In acest punct, controlul se paseaza catre "instructiune_urmatoare".
Instructiunea "for“ • Se foloseste pentru descrierea structurilor iterative (repetitive) cu nr cunoscut de pasi. • for (expresie1; expresie2; expresie3)instructiuneinstructiune_urmatoare • este semantic echivalenta cu: • expresie1;while (expresie2){ instructiune;expresie3;} instructiune_urmatoare; • Deci, se va evalua expresie1. Apoi, se evalueaza expresie2. Daca aceasta nu este zero ("true"), atunci se executa instructiune, se evalueaza expresie3, si controlul buclei se "paseaza" la inceputul buclei (cu deosebirea ca nu se mai evalueaza expresie1). De obicei, expresie2 este o expresie logica care controleaza bucla. Acest proces continua pana cand expresie2 este 0 (false), punct in care se plaseaza controlul catre instructiune_urmatoare
8. Operatorul "," Operatorul "," are cea mai mica prioritate dintre toti operatorii din C. Este un operator binar ce are ca operanzi drept expresii si se asociaza de la stanga la dreapta. Intr-o expresie de forma: expresie1 , expresie2se evalueaza mai intai expresie1, apoi expresie2. Expresia "," intoarce valoarea si tipul operandului din dreapta. Exemplu: Presupunem ca a, b sunt de tip int. Atunci expresia ","a = 0, b = 1intoarce valoarea 1 de tipul int.Operatorul "," este deseori folosit in instructiunea "for".Exemplu: Exemplul de mai jos calculeaza factorialul numarului n (reluare). for (factorial = 1, i = 1; i <= n; i++)factorial *= i;Exemplu: Revenim asupra unui exemplu precedent (suma primelor N numere naturale)for (suma = 0, i = 1; i <= n; ++i)suma += i;se poate scrie, echivalent, in: for (suma = 0, i = 1; i <= n; suma += i, ++i);
9. Instructiunea "do“ Instructiunea "do" poate fi considerata o varianta a instructiunii "while". Deosebirea consta in faptul ca pentru instructiunea "while" testul se face la inceputul ciclului, iar pentru "do" la sfarsit. Consideram constructia de forma:doinstructiunewhile (expresie);instructiune_urmatoareLa inceput se executa instructiune, apoi se evalueaza expresie. Daca valoarea lui expresie este diferita de 0 ("true"), atunci controlul se paseaza la inceputul instructiunii "do", si procesul se repeta. Daca expresie se evalueaza la 0 (false), atunci controlul se paseaza la instructiune_urmatoare.Exemplu: Suma unor numere intregi diferite de 0suma = i = 0;do{suma += i;cin>>i; }while (i > 0);
10 Operatorul conditional Operatorul "?:" este mai putin obisnuit deoarece este ternar (cu trei argumente). Forma generala este: expresie1 ? expresie2 : expresie3 Mai intai, se evalueaza expresie1. Daca aceasta este diferita de 0 (true), atunci se evalueaza expresie2, si aceasta va fi valoarea returnata de intreaga expresie conditionala. Daca expresie1 este 0 (false), atunci se evalueaza expresie3, si aceasta va fi valoarea intregii expresii conditionale. Exemplu: Instructiuneaif (y < z)x = y;elsex = z;este echivalenta cux = (y < z) ? y : z; Operatorul ?: are aceeasi prioritate cu operatorul de asignare si se asociaza de la dreapta la stanga.
Stilul de redactare al programelor Un stil bun de scriere a codului este esential pentru arta programarii. Aceasta faciliteaza citirea, scrierea si intretinerea programelor. Un stil bun foloseste: 1. spatii goale si comentarii, astfel incat codul este usor de citit si de inteles;2. utilizarea indentarii este cruciala, care indica cu precizie structurile de control. De exemplu,in constructiawhile (expresie)instructiune indentarea instructiunii indica ca executia acesteia este sub controlul iteratiei while;3. alegerea de nume sugestive pentru variabile;4. corespondenta dintre acolade. De exemplu, urmatorul program este scris in stilul "Bell Labs industrial programming style" (#,{,},m pe prima coloana).main(){}Observatii: 1. Programatorii incepatori uneori cred ca vor "sparge" piata cu stilul lor propriu de redactare a programelor. Atentie ! Utilizati strategia care este deja in uz.
1.9 Erori de programare frecvente 1. neinchiderea sirului cu ghilimele: cand compilatorul intalneste ghilimeaua stanga, atunci incepe sa colecteze toate caracterele care urmeaza spre a forma un sir de caractere, pana intalneste ghilimeaua dreapta. Daca aceasta nu exista, atunci compilatorul da mesajul de eroare, de tipul: Unterminated string or character constant2. scrierea gresita a numelui variabilelor;3. nedeclararea lor.In general, compilatorul da un mesaj de eroare potrivit, alteori din cauza interpretarii separate, nu.