Sei sulla pagina 1di 22

Suport de curs pentru clasele 9-11

profil matematica-informatica neintensiv

Limbajul C++

Prof.informatica Gabriela Gligor

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

Limbajul C++ A.Notiuni introductive


Orice program C++ este perceput ca o colectie de linii de text despartite de caracterul ENTER. Orice linie este alcatuita din cuvinte .Cuvintele pot fi: identificatori,cuvinte cheie,separatori,constante operatori si comentarii. 1.Identificator= sunt nume de obiecte folosite in program si reprezinta o succesiune de litere alfabetice (az , AZ), cifre(0.9) si caracterul underscore( _ ). Obs.1.Regula de constructie a unui identificator este ca intotdeauna acesta va incepe cu o litera. Ex: ab! // identificator incorect 1bcd // identificator incorect Asdfg // identificator corect _a1b // identificator incorect Ab1_d // identificator corect 2.Cuvintele cheie= sunt identificatori cu o semnificatie precisa care nu pot fi folositi cu alt scop decat cel stabilit. Ex: int, char,float, const, while, if, break etc. 3.Separatorii= caractere cu o semnificatie anume care separa siruri de caractere intr-un program C++. Acestia sunt: -spatiul si caracterul Tab cu rol in separarea cuvintelor - ; pentru a separa instructiunile(similar cu punctul care separa propozitiile) - caracterul enter care separa liniile de text din program - virgula(,)care separa elementele unei liste(similar cu virgula care separa cuvintele unei enumerari). 4.Constantele =sunt valori efective. Ex: 23, 457, 23.8, a. 5.Operatorii =sunt caractere speciale(semne) cu o semnificatie definita specific limbajului C++. 6. Comentariile =sunt texte explicative folosite in program pentru a-l face mai usor de inteles(este strict pentru programator si nu face parte din program). Exista 2 modalitati de utilizare: - cand explicatia se face pe o singura linie Ex: //Acesta este un exemplu -cand explicatia se face pe mai multe linii Ex: /* Acesta este Un exemplu */

B.Structura unui program C++


1.Instructiune= actiune. 2.Functie = Secventa de instructiuni(actiuni) menita sa rezolve o cerinta(actiune mai ampla). Clasificare:- functie standard = functie realizata de creatorii C++ - functie utilizator = functie creata de utilizator ce poate sa utilizeze atat functii standard cat si functii utilizator deja create. 3.Biblioteca= colectie de functii Clasificare: - biblioteca standard = contine functii standard - biblioteca utilizator = contine functii utilizator 1

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

4.Structura unui program C++ Declararea bibliotecilor #include <numebibl.h> Ex. #include <iostream.h> #include <conio.h> #include <math.h> Declararea tipurilor utilizator si a variabilelor globale Declararea functiilor utilizator Nota: functia obligatorie in orice program C++ este void main() (functia principala) Obs: 1. Cel mai simplu program c++ este:

void main() { } 2. Intotdeauna se vor declara la inceputul programului atat bibliotecile standard cat si cele utilizator pentru ca, compilatorul C++ sa stie unde sa caute functiile standard sau functiile utilizator folosite in program. 3. Orice program este alcatuit din: a.parte declarativa-contine instructiuni(actiuni)declarative ale obiectelor necesare rezolvarii problemei cu rol de alocare a unui spatiu de memorie corspunzator fiecarui obiect. b.parte executabila-contine instructiunile(actiunile) care rezolva problema,folosind obiecte deja declarate in partea declarativa. 5.Obiectele unui program C++ Clasificare:-tipuri de date -constante -variabile 5.a.Tipuri de date- multimi de valori cuprinse intr-un interval inchis. Clasificare:-tipuri de date standard : multimi de valori definite de creatorii limbajului C++ . -tipuri de date utilizator : multimi de valori definite de utilizatori folosind tipurile de date standard. 5.a.1. Tipuri de date standard
Tipuri de date pentru caractere Tipuri de date pentru numere intregi Tip data char unsigned char int unsigned long unsigned long float double long double Spatiu alocat in memorie 1 octet(8 biti) 1 octet(8 biti) 2 octeti(16 biti) 2 octeti(16 biti) 4 octeti(32 biti) 4 octeti(32 biti) 4 octeti(32 biti) 8 octeti(64 biti) 10 octeti(80 biti) Interval de valori -128 127 0 255 -32 768 32 767 0 65 535 -2*1010 2*1010 0 4*1010 interval de valori reale foarte mari

Tipuri de date pentru numere reale

5.a.2.Tipuri de date utilizator sintaxa: typedef tip_vechi tip_nou; ex: typedef unsigned natural; 2

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

5.b.Constante- valori ce raman constante pe tot parcursul programului Clasificare: - constante literale: valori efective. - constante simbolice: nume date valorilor efective(constantelor literale). 5.b.1.Constante literale Clasificare Constante literale de tip caracter

Modalitati de exprimare Printr-un caracter delimitat intre apostrofuri (ex: a, B) Prin codul Ascii al caracterului precizat in baza 10 (ex: a 97) Un numar in baza 8 ce reprezinta codul ascii (baza 10 ) convertit in baza 8.C++ recunoaste un numar ca este in baza 8 daca are 0 la inceput. Ex: 032, 0456. Un numar in baza 16 ce reprezinta codul ascii (baza 10 ) convertit in baza 16.C++ recunoaste un numar ca este in baza 16 daca are 0x la inceput. Ex: 0x9a, 0x46. Cazuri particulare: -caracterele escape:-caractere albe(care nu se vad pe ecran) Ex: tab,backspace,enter -caractere speciale: au o semnificatie speciala in limbajul C++. Ex: \ , , ? Nota: caracterele escape se exprima putin diferit: \ caracter escape Ex: \ => \\ ; ? => \? ; => \ ; tab => \t etc. Constante literale de tip sir de se reprezinta intre ex: buna ziua caractere in baza 10. Ex: 89,234 Constante literale de tip in baza 8 cu 0 la inceputul numarului. Ex: 023, 0457. numeric intregi In baza 16 cu 0x la inceputul numarului. Ex: 0xa1, 0x45. Se reprezinta cu punct(.) in loc de virgula(,) Constante literale de tip Ex: 3.45 , 5.123, .34 0.34, 56. 56.0 numeric reale Obs.Constantele literale nu se declara deoarece sunt valori recunoscute . 5.b.2.Constante simbolice sintaxa: const tip_data nume=valoare;

tip_data=multimea valorilor din care face parte constanta simbolica. nume=numele constantei simbolice. valoare= valoarea cu care este initializata constanta simbolica. ex: const float pi=3,1415; Obs. Constantele simbolice se declara in memorie deoarece sunt nume date valorilor.

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

5.c.Variabile nume date unor obiecte a caror valoare se schimba pe parcursul programului. Tipuri de declarare: a.Declarare fara initializare: Sintaxa: tip_data var1,var2,var3,,varn;

var1,.,varn - numele variabilelor declarate. tip_data - multimea valorilor din care fac parte variabilele. Ex: float a,b,c; int a1,b1; Nota:1. Acest tip de declarare determina ca initial variabila sa contina in memorie valori rezidente(ramase). 2. Se observa ca intr-o singura declaratie se pot defini mai multe variabile de acelasi tip. b.Declarare cu initializare Sintaxa: tip_data var1=val1, var2=val2,.., varn=valn;

var1,.,varn - numele variabilelor declarate. tip_data - multimea valorilor din care fac parte variabilele. val1,,valn valorile cu care sunt initializate variabilele. Nota:1. Acest tip de declarare determina ca initial variabila sa ia valoarea precizata. 2. Se observa ca intr-o singura declaratie se pot defini mai multe variabile de acelasi tip. Ex: double a=3.1423, b=5.4567; char c=Z,d=99; Obs: Cele doua moduri de declarare se pot combina. Ex: int a=6, b, c=789, d, e;

6.Operatiile de citire si scriere 6.1.Operatia de citire-presupune citirea unor valori de la tastatura, valori care vor putea fi atribuite doar unor variabile deja declarate in memorie. Sintaxa: Ex: int a,b,c; char d; cin>>a>>b>>c>>d; Nota: 1.Se observa ca intr-o singura instructiune se pot citi mai multe variabile. 2 Nu se pot citi constante deoarece acestea nu se pot modifica,iar citirea de la tastatura tocmai asta permite:modificarea valorii unei locatii de memorie in functie de dorinta utilizatorului. cin>>var1>>var2>>var3>>.>>varn;

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

6.2.Operatia de scriere(afisare)-presupune afisarea pe ecran a unor valori ce pot proveni atat din variabile cat si din constante(constante literale, constante simbolice, constante literale(valori) obtinute din calculul unor expresii ). Sintaxa: cout<<var1| const1<<var2|const2<<<<varn|constn;

Ex: const float pi=3.1415; int a,b; cout<<a<<buna<<32<<5.41<<pi<<a<<b<<a+2*3; Nota:1.Se observa ca se pot afisa intr-o singura instructiune, succesiv mai multe informatii. 2.La un moment dat poate fi afisata fie o variabila fi o constanta.

C.Expresii
C.1.Expresia= succesiune de operatori si operanzi Clasificare(dupa tipul rezultatului obtinut in urma evaluarii): - expresii numerice(rezultatul obtinut este un numar intreg sau real). - expresii logice conditie (rezultatul obtinut este 0=false sau 1=true) - expresii de tip text(rezultatul este un sir de caractere) Operanzii pot fi: - variabile sau constante(literale,simbolice) - functii care returneaza un rezultat ex: sqrt(n) => n - alte expresii separate intre ( ) Operatorii = caractere speciale(semne) care determina executarea unor operatii. Clasificare operatori: - unari se aplica pe un singur operand. - binari se aplica intre doi operanzi. - ternari - se aplica pe trei operanzi. Reguli ale operatorilor: 1.Operatorii in limbajul C++ sunt structurati pe 16 niveluri de prioritate(nivelul 1 fiind cel mai prioritar). 2.Operatorii unari :- sunt mai prioritari decat operatorii binari si ternari. - au acelasi nivel de prioritate. - se executa in expresie de la dreapta spre stanga. 3.Operatorii binari:- sunt structurati pe mai multe nivele de prioritate(14) - se executa in expresie de la stanga la dreapta. 4.Operatorii care au acelasi nivel de prioritate au aceeasi asociativitate,deci ordinea de executie depinde de tipul operatorilor(adica unari sau binari). C.2.Tipuri de operatori Casificare: - operatori aritmetici - operator de conversie explicita - operatori relationali - operatori logici - operatori de atribuire - operatori de incrementare/decrementare - operator conditional - operator virgula - operator dimensiune 5

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

C.2.1.Operatori aritmetici Clasificare:-operatori unari: +,- operatori de semn ex: -3, -a, +3.56. -operatori binari: -de multiplicare: * operatorul de inmultire / operatorul de impartire % operatorul modulo(restul impartirii) -de adunare: + operatorul de adunare - operatorul de scadere Obs: 1.Semnificatia operatorului / depinde de tipul operanzilor astfel: - daca ambii operanzi sunt de tip intreg, rezultatul impartirii este un numar intreg si reprezinta catul impartirii. - daca cel putin un operand este de tip real, rezultatul impartirii este un numar real. Ex: . int a=10; float b=10; cout<<a/3; // se afiseaza 3 cout<<b/3; //se afiseaza 3.333333 cout<<a/3.; //se afiseaza 3.333333 2.Operatorul modulo % se aplica doar pe operanzi intregi. Ex: 7%2 => 1 3.Operatorii / si % se pot folosi pentru a calcula catul (c) si restul(r) impartirii a doua numere intregi cu semn.Semnul catului si restului se obtine cu ajutorul formulei: d=i*c+r; Ex: -7/2 => -3 -7%2 => -1 4.Pentru a schimba ordinea implicita de executare a operatorilor,data de prioritatea lor,se pot folosi parantezele rotunde ( ). Ex: (2+3)*5 =>25 5.In cazul in care in expresie exista operanzi de diverse tipuri,rezultatul expresiei se va converti implicit catre tipul care ocupa cei mai multi octeti in memorie. Ex: .. float a=1; char b=a; cout<<a+b; //se afiseaza 98.0 (rezultatul de tip float) Obs. Conversia implicita este realizata de catre compilatorul C++ in scopul aducerii lor la o forma prelucrabila. C.2.2.Operatorul de conversie explicita -este operator unar Sintaxa: (tip_data) expresie

Efect: Converteste rezultatul obtinut in urma calcularii expresiei in tipul de data ( tip_data) precizat. Obs.1.In cazul in care expresia este alcatuita dintr-un operand, operatorul de conversie explicita nu schimba tipul operandului. Ex: .. int a=5, b=2; float x=-1.5; cout<<a/b<< <<(float)a/b; //se afiseaza 2 2.5 cout<<x<< <<(int)x; //se afiseaza -1.5 -1 2.Conversia explicita este conversia care se face la cererea programatorului catre tip_data, precizat de acesta. 6

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

C.2.3.Operatori relationali -sunt operatori binari Sintaxa: operand1 operator_relational operand2

Clasificare:-operatori relationali de inegalitate: <,>,<= si >=. -operatori relationali de egalitate: = =(egal), !=(diferit). Obs.Operatorii relationali se aplica intre doi operanzi numerici si intoarce un rezultat logic (0-false, 1true). Ex: int a=2,b=3; cout<<(a>b)<<endl; //se afiseaza 0 cout<<(a!=b)<<endl; //se afiseaza 1 .. C.2.4.Operatori logici Clasificare: - operator logic unar : !(negatia) sintaxa: !operand - operatori logici binari : && (si logic) || (sau logic) sintaxa: operand1 operator_logic operand2 Obs: 1.Operatorii logici se aplica pe operanzi logici si intorc un rezultat logic. 2.Operatorul logic !(negatie),neaga valoarea logica a operandului pe care se aplica astfel: !0 => 1 !1 => 0 3. In cazul in care operandul este numeric acesta va fi interpretat ca un operand logic astfel: -daca valoarea operandului este diferita de 0 atunci logic va fi 1(true). -daca valoarea operandului este egala cu 0 atunci logic va fi 0(false). Tabele de adevar ale operatorilor logici binari sunt: || 0 1 0 0 1 1 1 1 Ex: float a=2.5; int b=0,c=2,d=3; cout<<(a>0)<<endl; //se afiseaza 1 cout<<(!a)<<endl; //se afiseaza 0 cout<<(c&&d)<<endl; //se afiseaza 1 C.2.5.Operatorii de atribuire Tipuri de atribuire:-atribuire simpla -atribuire multipla -atribuire cu operator && 0 1 0 1 0 0 0 1

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

C.2.5.1. Atribuirea simpla -operator binar Sintaxa: var = expresie;

Efect: -se evalueaza expresia -valoarea obtinuta se introduce in locatia de memorie corespunzatoare variabilei var,facandu-se daca este cazul conversia implicita de tip. Obs: Daca unei variabile de tip intreg i se atribuie o valoare reala,valoarea acesteia este trunchiata. Ex: . int a; float b=1.8,c=-2.7; a=b; cout<<a<<endl; //se afiseaza 1 a=c; cout<<a<<endl; //se afiseaza -2

C.2.5.2.Atribuirea multipla -operator binar Sintaxa: var1=var2=var3==varn=expresie; varn=expresie; varn-1=varn; . var2=var3; var1=var2;

Efect:-se evalueaza expresia -valoarea obtinuta se introduce in locatia de memorie a varn,facandu-se conversia de tip daca e cazul. -valoarea varn se introduce in locatia de memorie a varn-1,facandu-se conversia de tip daca e cazul. . -valoarea var2 se introduce in locatia de memorie a var1,facandu-se conversia de tip daca e cazul. Ex: . int x,y; float a; a=x=y=5./2; cout<<a<< <<x<< <<y<endl; //se afiseaza 2.0 2 2 x=y=a=5./2; cout<<a<< <<x<< <<y<endl; //se afiseaza 2.5 2 2 . C.2.5.3.Atribuirea cu operator -operator binar Sintaxa: var operator = expresie; var = var operator expresie; Efect: -se evalueaza expresia -se calculeaza valoarea noii expresii obtinuta din aplicarea operatorului (operator) pe valoarea variabilei (var) si valoarea obtinuta in calculul expresiei (expresie).Daca este cazul se va face si conversia de tip. 8

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

Obs: Operatorul poate fi oricare din operatorii aritmetici: *, / , % , + , - . Ex: . int a=10,b=20,c=30; a+=b+c; // a=a+(b+c) cout<<a; //se afiseaza 60 . C.2.6.Operatorul de incrementare/decrementare -operator unar Sintaxa: ++var, - - var, var++, var - var=var+1; var=var-1;

Efect:-creste/scade cu 1 valoarea variabilei (var).Corespunde operatiei de atribuire var=var+1 / var=var-1. Acesti operatori pot fi: -prefixati: ++var / --var. Efect: -creste/scade cu 1 valoarea variabilei var. -noua valoare a variabilei var intra in calculul expresiei. -postfixati: var++ / var Efect:-valoarea variabilei intra in calculul expresiei. -valoarea variabilei var creste/scade cu 1. Ex:.. int a=1,b=2; cout<<a++ +b++<<endl; //se afiseaza 3 cout<<a<< <<b<<endl; //se afiseaza 2 3 cout<<++a+(++b)<<endl; //se afiseaza 7 cout<<a<< <<b<<endl; //se afiseaza 3 4 .. C.2.6.Operatorul conditional -operator ternar(singurul)

Sintaxa:

expresie1 ? expresie2 : expresie3

Efect:-se evalueaza expresie1 -daca valoarea expresiei1 este diferita de 0 (True),atunci se evalueaza expresie2 si se intoarce valorea rezultata. -daca valoarea expresiei1 este egala cu 0(False),atunci se evalueaza expresie 3 si se intoarce valoarea rezultata. Ex:.. int x; cin>>x; cout<<modulul=<<(x>=0 ? x : -x); .. Obs: Operatorul conditional poate fi folosit in locul unei structuri de control alternative simple(dacaatunci..altfel). 9

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

C.2.7.Operatorul virgula Sintaxa: expresie_1, expresie_2, , expresie_n

Efect:-se evalueaza expresie_1 -se evalueaza expresie_2 .. -se evalueaza expresie_n si se intoarce valoarea rezultata. Obs: Operatorul se aplica de la stanga spre dreapta. Ex: int a=5,b=10; float d,c; c=a=++b, ++a, d=(float)a/b, ++b; cout<<a<< <<b<< <<c<< <<d<<endl; //se afiseaza 12 11 11 1.090909 a=5, b=10; cout<<(c=a=++b, ++a, c=(float)a/b--, ++b)/2; //se afiseaza 5 : rezultatul expresiei este valoarea lui b si este de tipul lui b, adica int. C.2.8.Operatorul dimensiune -operator unar Sintaxa: sizeof(expresie) sau sizeof(tip_data) Efect: intoarce numarul de octeti pe care tip_data sau valoarea rezultata din calculul expresie il ocupa in memorie. Ex:. int a=5, b=10; float c; cout<<sizeof(int)<< <<sizeof(float) <<endl; //se afiseaza 2 4 cout<<sizeof(c*a++)<< <<sizeof(a/b--)<<endl; //se afiseaza 4 2 :rezultatul primei expresii este de tip float, iar rezultatul celei de a doua expresii este de tip int.

Tabela cu prioritatile operatorilor Nivel 1 2 3 4 5 6 7 8 9 10 11 Categorie Prioritate maxima Operatori unari Operatori aritmetici de multiplicare Operatori aritmetici de adunare Operatori relationali de inegalitate Operatori relationali de egalitate Operator SI logic Operator SAU logic Operator conditional Operatori de atribuire Operatorul virgula 10 Operatori () + , -, ++, --, !, sizeof, (tip) *, /, % +, < , <=, > , >= = =, != && || ?: = , +=, -=, *=, /= ,

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

D.Instructiuni C++
D.1.Instructiunea liniara- secventa de instructiuni in care fiecare instructiune se executa dupa executia celei anterioare. instr_1; instr_2; instr_3; instr_n; D.2.Instructiunea vida-lipsa unei instructiuni care intra in sintaxa unei instructiuni de control (ex: if..else; do..while; for etc.). D.3.Instructiunea compusa- este pusa in evidenta cu {.}. Nota: Este folosita in cazul instructiunilor de control cand dorim, ca in loc de instructiunea din sintaxa, sa executam mai multe instructiuni => este interpretata ca o singura instructiune. D.4.Instructiunea alternativa simpla Pseudocod daca conditie atunci actiune1 altfel actiune2 if (conditie) instr1; else instr2; Schema logica Limbajul C++

Efect: pas1.se evalueaza conditie pas2.daca conditia este adevarata pas3 altfel pas4 pas3.se executa instr1 pas4.se executa instr2

11

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

Obs: 1.In cazul in care in loc de instr1 sau instr2 este nevoie sa se execute mai multe instructiuni,se foloseste instructiunea compusa. if (conditie) { .. } else { .. } Ex:Programul afiseaza in ordine crescatoare doua numere citite de la tastatura. #include <iostream.h> void main() { int a,b,x; cout<<a=;cin>>a; cout<<b=;cin>>b; if(b<a) { x=a; a=b; b=x; } 2.Un caz particular al instructiunii if este, cand pe ramura de else nu mai avem instr2. if(conditie) instr1; Ex: Programul afiseaza modulul unui numar intreg, citit de la tastatura. #include <iostream.h> void main() { int x; cout<<x=;cin>>x; if (x<0) x=-x; cout<<modulul=<<x; } 3.In cazul in care in conditie se testeaza daca o valoare este diferita de 0(adica 1-true) conditia poate fi scrisa condensat. Ex:Programul verifica daca un numar intreg citit de la tastatura este un numar impar. #include <iostream.h> void main() { int n; cout<<n=;cin>>n; if (n%2) // if(n%2!=0) cout<<nr.impar; else cout<<nr. par; }

12

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

4.Uneori pentru a rezolva o problema se pot folosi instructiuni if imbricate. if(conditie1) instr1; else if(conditie2) instr21; else if(conditie3) instr31; else D5.Instructiunea alternativa generalizata(cu mai multe variante) Pseudocod in caz ca expresie cazul const_1: actiune_1; cazul const_2: actiune_2; .. cazul const_i: actiune_i; . cazul const_n: actiune_n; altfel actiune_n+1; sfarsit in caz ca Limbajul C++ switch(expr_num) { case const_1: instr_1; break; case const_2: instr_2; break; case const_i: instr_i; break; case const_n: instr_n; break; [default: instr_n+1; ] } Schema logica

Efect: pas_1. daca expr_num=const_1 atunci se executa instr_1 si apoi salt pas_n+2 altfel pas_2 pas_2. daca expr_num=const_2 atunci se executa instr_2 si apoi salt pas_n+2 altfel pas_3 .. pas_i. daca expr_num=const_i atunci se executa instr_i si apoi salt pas_n+2 altfel pas_i+1 . pas_n. daca expr_num=const_n atunci se executa instr_n si apoi salt pas_n+2 altfel pas_n+1 pas_n+1. se executa instr_n+1 pas_n+2 pas_n+2.instructiunea urmatoare dupa switch..case 13

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

Obs: 1.Toate constantele corespunzatoare cazurilor (const_i) trebuie sa fie diferite intre ele. 2.Eticheta default este optionala(poate sa lipseasca).Instructiunea atasata acestei etichete se executa numai daca nu a fost indeplinit nici un caz anterior. 3.Instructiunea break; este oligatorie si are rolul de a intrerupe executia instructiunii switchcase si de a trece la urmatoarea instructiune din program. 4.In cazul in care lipseste instructiunea break; se continua executia instructiunii switch..case cu urmatoarele instructiuni pana la intalnirea primei instructiuni break; sau pana la intalnirea separatorului } care inchide blocul instructiunii switchcase. Ex:Sa se afiseaze pe ecran numarul tastat(1,2 sau 3 )sau un mesaj corespunzator in caz contrar. #include <iostream.h> Se observa ca: void main() -daca n=3, pe ecran se va afisa:3 2 1deoarece { lipseste break; ceea ce va determina executia int n; celorlalte instructiuni pana intalneste primul break; cout<<n (1,2,sau 3)=;cin>>n; -daca n=2 se afiseaza: 2 1 switch(n) -daca n=1 se afiseaza:1 { case 3: cout<<3<< ; case 2: cout<<2<< ; case 1: cout<<1<< ; break; default: cout<<ati ales alt numar; } }

5.In cazul in care exista mai multe cazuri pentru care se executa aceeasi instructiune, acestea se vor scrie succesiv. Ex: #include <iostream.h> Se observa ca atunci cand: void main() - c=1 sau c=3 se afiseaza suma a+b. { - c=2 sau c=4 se afiseaza diferenta a-b. int a,b; - c nu este nici una din valorile date se afiseaza char c; mesajul alt caracter. cout<<a=;cin>>a; cout<<b=;cin>>b; cout<<c (1,2,3 sau 4)=;cin>>c; switch(c) { case 1: case 3: cout<<a+b; break; case 2: case 4:cout<<a-b; break; default: cout<<alt caracter; } } 6.Orice instructiune switch.case se poate scrie folosind instructiunile if imbricate (vezi tabelul echivalenta instructiunilor in limbajul C++).. Ex: #include <iostream.h> void main() { int a,b; 14

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

char c; cout<<a=;cin>>a; cout<<b=;cin>>b; cout<<c (1,2,3 sau 4)=;cin>>c; if (c= =1 || c= =3 ) cout<<a+b; else if (c= =2 || c= =4) cout<<a-b; else cout<<alt caracter; } D.6.Instructiunea repetitiva cu test initial (while). Pseudocod cat timp conditie executa instructiune Limbajul C++ while (conditie) instructiune;

Schema logica

Efect: pas1.daca conditia este adevarata atunci pas2 altfel pas3 pas2.se executa instructiunea pas1 pas3.se incheie executia lui while si trece la instructiunea urmatoare. Obs.1.Se numeste instructiune repetitiva pentru ca se executa repetat instructiunea cat timp conditia este adevarata. 2.Se numeste instructiune repetitiva cu test initial deoarece verificarea conditiei se face inaintea executiei instructiunii. 3.Numarul minim de executii a instructiunii este 0 atunci cand din start conditia este falsa. 4.Daca dupa un anumit numar de pasi conditia nu devine falsa spunem ca s-a intrat in bucla infinita. 5. In cazul in care in loc de instructiune este necesar a fi folosite mai multe instructiuni se introduce instructiunea compusa. while(conditie) { . } 15

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

D.7. Instructiunea repetitiva cu test initial (for) Limbajul C++ for(expr1;expr2;expr3) instr; expr1; while(expr2) { instr; expr3; }

Schema logica

Unde: expr1(pentru intializare) este starea initiala dinaintea primei executii a instructiunii(starea de pornire). expr2(pentru testare)este conditia in functie de care se executa sau nu instructiunea(ciclul). expr3(pentru modificare)determina schimbarea starii curente.

Efect: pas1.se evalueaza epr1 => pas2 pas2.daca expr2 este adevarata atunci =>pas3 altfel pas5 pas3.se executa instructiunea =>pas4 pas4.se evalueaza expr3 =>pas2 pas5.se incheie ciclul for si se trece la urmatoarea instructiune din program.

Obs: 1.Instructiunea for este tot o instructiune repetitiva cu test initial la fel ca si instructiunea while. 2.Avantajul intructiunii for fata de instructiunea while este ca permite o scriere mai condensata. 3.Caracterele (;;); sunt obligatorii chiar daca lipsesc expresiile si instructiunea. 4.Cazuri particulare: for(expr1;expr2; ) instr; //lipseste expr3 for( ;expr2;expr3) instr; //lipseste expr1(initializarile) for(expr1;expr2;expr3) ; //lipseste instr(deci avem instructiune vida) for(expr1; ;expr3) instr; //lipseste expr2 => ciclu infinit 5.Atunci cand expr2 nu este niciodata falsa spunem ca avem ciclu infinit. 6.In expr1 puteti sa declarati variabile si sa le initializati. Ex: .. for(int i=1,s=0; a!=0; s+=a%10,i++,a/=10); .. 16

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

7.Deoarece in limbajul C++ nu exista instructiunea repetitiva cu numar cunoscut de pasi aceasta se implementeaza astfel: Pseudocod Limbajul C++ pentru contor=vi,vf [pas v] executa for(contor=vi; contor<=vf; contor+=v) actiune; instr; 8. In cazul in care in loc de instructiune este necesar a fi folosite mai multe instructiuni se introduce instructiunea compusa. for(expr1;expr2;expr3) { } D.8. Instructiunea repetitiva cu test final (do.while) Pseudocod executa actiune cat timp conditie do instructiune; while (conditie); Schema logica Limbajul C++

Efect: pas1.se executa instructiunea =>pas2 pas2.daca conditia este adevarata atunci pas1 altfel pas3 pas3.se iese din ciclul do..while si se trece la urmatoarea instructiune din program. Obs. 1.Instructiunea repetitiva dowhile se numeste cu test final deoarece verificarea conditiei se face dupa executia instructiunii. 2.Numarul minim de executii a instructiunii dowhile este 1. 3.Instructiunile repetitive pot fi implemenate atat cu instructiunea while cat si cu instructiunea do..while,insa trebuie avuta in vedere diferenta care apare datorita pozitiei testului care poate influenta rezultatul final. 4.In cazul in care in loc de instructiune este necesar a fi folosite mai multe instructiuni se introduce instructiunea compusa. do { .. } while(conditie); 5. Daca dupa un anumit numar de pasi conditia nu devine falsa spunem ca s-a intrat in bucla infinita. 6.Transformarea unei instructiuni while in do..while presupune studierea cazului particular conditie=fals (vezi tabelul echivalenta instructiunilor in limbajul C++). 17

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

Echivalenta instructiunilor in limbajul C++

switch switch(expr_num) { case const_1: instr_1; break; case const_2: instr_2; break; case const_i: instr_i; break; case const_n: instr_n; break; [default: instr_n+1; ] }

if if(expr_num==const_1) instr_1; else if(expr_num==const_2) instr_2; else .. else if(expr_num==const_n) instr_n; else nstr_n+1; while expr1; while(expr2) { instr; expr3; }

for for(expr1;expr2;expr3) instr;

while while(cond) instr;

dowhile if(cond) do instr; while(cond);

dowhile do instr; while(cond);

while instr; while(cond) instr;

18

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

Functii standard

Biblioteca iostream.h conio.h

Functia cin cout clrscr() abs(x) labs(x) fabs(x) floor(x) floorl(x) ceil(x) ceill(x)

Tip rezultat int long double double long double double long double double long double double long double double long double double double double

Tip parametri int long double double long double double long double double long double double long double double long double double double double

Furnizeaza
Citire de la tastatura Afisare pe monitor Sterge ecranul Modulul lui x ( |x| )

Exemplu
cin>>a; cout<<23; clrscr(); abs(-12) => 12 abs(12) =>12 fabs(-1.2) =>1.2 floor(11.5) =>11 floor(-2.7) =>-3 ceil(11.5) =>12 ceil(-2.7) =>-2 sqrt(9) =>3 pow(2,4) =>16 pow10(2) =>100 sin(0.5) =>0.479426 cos(0.5) =>0.877583 tan(0.5) =>0.546302

math.h

sqrt(x) sqrtl(x) pow(x,y) powl(x,y) pow10(x) powl10(x) sin(x) cos(x) tan(x)

Cel mai apropiat numar intreg mai mic sau egal cu x Cel mai apropiat numar intreg mai mare sau egal cu x Radical de ordinl 2 din x ( x) x la puterea y (xy) 10 la puterea x (10x) Sinus de x Cosinus de x Tangenta de x

19

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

Mediul de programare C++


Editarea unui program sursa presupune parcurgerea urmatorilor pasi : 1. Lansarea programului BorlandC cu ajutorul fisierului ..\Bin\bc.exe 2. Schimbarea directorului curent : File => Change dir.. => z : 3. Crearea unui fisier nou : File => New Obs. Deschiderea unui fisier .cpp presupune lansarea in executie a programului BorlandC si : File => Open => nume_fisier dorit 4. Salvarea fisierului : File => Save => nume_fisier Nota. 1. De cate ori doriti sa salvati noile modificari de editare dati File => Save sau F2. 2.Daca doriti sa faceti o copie a fisierului vostru atunci dati : File=> Save as.. => un alt nume_fisier 5. Editarea programului 6. Verificarea sintactica a programului : Compile => Compile (Alt+F9) sau Make (F9) Obs.Compilarea programului cu F9 presupune afisarea unui mesaj : Succes Press any key => programul este corect sintactic => se poate lansa in executie Error Press any key => programul este incorect sintactic => se vor afisa erorile intr-o fereastra Message. Nota.Parcurgand fiecare eroare, compilatorul, ne plaseaza la instructiunea din program care contine eroarea semnalata.

7. Lansarea in executie/depanarea programului Lansarea in executie presupune executia programului si vizualizarea rezultatelor: Run => Run(Ctrl+F9) Nota. Daca in program exista o instructiune care cicleaza la infinit, se va opri executia programului cu Ctrl+Break. Depanarea programului presupune executia programului pas cu pas(instructiune cu instructiune) in scopul identificarii erorilor semantice(de programare). Se vor parcurge urmatorii pasi : a. urmarirea variabilelor din program prin intermediul ferestrei Watch: Window => Watch sau Debug => Add watch.. => Edit watch (Ctrl+F7) Nota. Se vor insera in Watch toate variabilele din program

20

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

b. lansarea depanarii pas cu pas : Run => Step over (F8) Nota. 1.In cazul in care stim sigur ca programul functioneaza corect pana intr-un anumit punct se poate rula rapid programul pana in acel punct cu: Run => Go to cursor (F4) dupa care se poate continua cu rularea pas cu pas a programului(F8). 2. In cazul in care dorim sa abandonam depanarea programului pasa cu pas : Run => Program reset (Ctrl+F2)

21

Potrebbero piacerti anche