56741695-limbajul-c
TRANSCRIPT
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 1/22
Suport de curs
pentru clasele 9-11
profil matematica-informatica neintensiv
Limbajul C++
Prof.informaticaGabriela Gligor
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 2/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
1
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
(a…z , A…Z), 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
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 3/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
2
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
Tip data Spatiu alocat in memorie Interval de valori
Tipuri de date pentru
caractere
char
unsigned char
1 octet(8 biti)
1 octet(8 biti)
-128 – 127
0 – 255
Tipuri de date pentru
numere intregi
int
unsigned
longunsigned long
2 octeti(16 biti)
2 octeti(16 biti)
4 octeti(32 biti)4 octeti(32 biti)
-32 768 – 32 767
0 – 65 535
-2*1010 – 2*1010
0 – 4*1010
Tipuri de date pentru
numere reale float
double
long double
4 octeti(32 biti)
8 octeti(64 biti)
10 octeti(80 biti)
interval de valori reale foarte
mari
5.a.2.Tipuri de date utilizator
sintaxa: typedef tip_vechi tip_nou;
ex: typedef unsigned natural;
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 4/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
3
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 Modalitati de exprimare
Constante literale de tip caracter
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
caractere
se reprezinta intre “……”
ex: “buna ziua”
Constante literale de tip
numeric intregi
in baza 10. Ex: 89,234
in baza 8 cu 0 la inceputul numarului. Ex: 023, 0457.
In baza 16 cu 0x la inceputul numarului. Ex: 0xa1, 0x45.
Constante literale de tip
numeric reale
Se reprezinta cu punct(.) in loc de virgula(,)
Ex: 3.45 , 5.123, .34 0.34, 56. 56.0
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.
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 5/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
4
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: cin>>var1>>var2>>var3>>….>>varn;
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.
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 6/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
5
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
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 7/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
6
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 numarreal.
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.3333332.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.
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 8/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
7
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, 1-
true).
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 1
0 0 1 0 0 0
1 1 1 1 0 1
Ex:………
float a=2.5;
int b=0,c=2,d=3;
cout<<(a>0)<<endl; //se afiseaza 1cout<<(!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
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 9/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
8
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/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 10/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
9
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 intoarcevaloarea 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(daca…atunci..altfel…).
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 11/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
10
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 unarSintaxa: 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 Categorie Operatori
1 Prioritate maxima ()
2 Operatori unari + , -, ++, --, !, sizeof, (tip)
3 Operatori aritmetici de
multiplicare
*, /, %
4 Operatori aritmetici de
adunare
+, -
5 Operatori relationali de
inegalitate
< , <=, > , >=
6 Operatori relationali de
egalitate
= =, !=
7 Operator SI logic &&
8 Operator SAU logic ||
9 Operator conditional ?:
10 Operatori de atribuire = , +=, -=, *=, /=
11 Operatorul virgula ,
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 12/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
11
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
Limbajul C++
if (conditie)
instr1;
else
instr2;
Schema logica
Efect:
pas1.se evalueaza conditiepas2.daca conditia este adevarata pas3
altfel pas4
pas3.se executa instr1
pas4.se executa instr2
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 13/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
12
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”;
}
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 14/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
13
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
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 15/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
14
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 switch…case 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 intalnireaseparatorului } care inchide blocul instructiunii switch…case.
Ex:Sa se afiseaze pe ecran numarul tastat(1,2 sau 3 )sau un mesaj corespunzator in caz contrar.
#include <iostream.h>
void main()
{
int n;
cout<<”n (1,2,sau 3)=”;cin>>n;
switch(n)
{
case 3: cout<<3<<’ ‘;
case 2: cout<<2<<’ ‘;
case 1: cout<<1<<’ ‘; break;default: cout<<”ati ales alt numar”;
}
}
Se observa ca:
-daca n=3, pe ecran se va afisa:3 2 1deoarece
lipseste break; ceea ce va determina executia
celorlalte instructiuni pana intalneste primul break;
-daca n=2 se afiseaza: 2 1
-daca n=1 se afiseaza:1
5.In cazul in care exista mai multe cazuri pentru care se executa aceeasi instructiune, acestea se vor
scrie succesiv.
Ex:
#include <iostream.h>
void main(){
int a,b;
char c;
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”;
}}
Se observa ca atunci cand:
- c=’1’ sau c=’3’ se afiseaza suma a+b.- c=’2’ sau c=’4’ se afiseaza diferenta a-b.
- c nu este nici una din valorile date se afiseaza
mesajul “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;
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 16/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
15
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)
{
……….
}
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 17/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
16
D.7. Instructiunea repetitiva cu test initial (for)
Limbajul C++
for(expr1;expr2;expr3) expr1;
instr; 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);
……..
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 18/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
17
7.Deoarece in limbajul C++ nu exista instructiunea repetitiva cu numar cunoscut de pasi aceasta se
implementeaza astfel:
Pseudocod
pentru contor=vi,vf [pas v] executa
actiune;
Limbajul C++
for(contor=vi; contor<=vf; contor+=v)
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
Limbajul C++
do
instructiune;
while (conditie);
Schema logica
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 do…while se numeste cu test final deoarece verificarea conditiei se face
dupa executia instructiunii.
2.Numarul minim de executii a instructiunii do…while 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++).
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 19/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
18
Echivalenta instructiunilor in limbajul C++
switch if
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(expr_num==const_1)
instr_1;
elseif(expr_num==const_2)
instr_2;
else
………………..
else
if(expr_num==const_n)
instr_n;
else
nstr_n+1;
for while
for(expr1;expr2;expr3)instr;
expr1;while(expr2)
{
instr;
expr3;
}
while do…while
while(cond)
instr;
if(cond)
do
instr;
while(cond);
do…while while
do
instr;
while(cond);
instr;
while(cond)
instr;
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 20/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
19
Functii standard
Biblioteca Functia Tip rezultat Tip parametri Furnizeaza Exemplu
cin - - Citire de la tastatura cin>>a;iostream.h
cout - - Afisare pe monitor cout<<23;
conio.h clrscr() - - Sterge ecranul clrscr();
abs(x)
labs(x)
fabs(x)
int
long
double
int
long
double
Modulul lui x ( |x| ) abs(-12) => 12
abs(12) =>12
fabs(-1.2) =>1.2
floor(x)
floorl(x)
double
long double
double
long double
Cel mai apropiat numar
intreg mai mic sau egal
cu x
floor(11.5) =>11
floor(-2.7) =>-3
ceil(x)
ceill(x)
double
long double
double
long double
Cel mai apropiat numar
intreg mai mare sau egalcu x
ceil(11.5) =>12
ceil(-2.7) =>-2
sqrt(x)
sqrtl(x)
double
long double
double
long double
Radical de ordinl 2 din x
( x )
sqrt(9) =>3
pow(x,y)
powl(x,y)
double
long double
double
long double
x la puterea y (xy) pow(2,4) =>16
pow10(x)
powl10(x)
double
long double
double
long double
10 la puterea x (10x) pow10(2) =>100
sin(x) double double Sinus de x sin(0.5) =>0.479426
cos(x) double double Cosinus de x cos(0.5) =>0.877583
math.h
tan(x) double double Tangenta de x tan(0.5) =>0.546302
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 21/22
Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica prof.informatica Gabriela Gligor
20
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 cuinstructiune) 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
8/3/2019 56741695-Limbajul-C
http://slidepdf.com/reader/full/56741695-limbajul-c 22/22
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)