56741695-limbajul-c

22
 Suport de curs pentru clasele 9-11 profil matematica-informatica neintensiv Limbajul C++ Prof.informatica Gabriela Gligor

Upload: firoiu-irinel

Post on 06-Apr-2018

221 views

Category:

Documents


0 download

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)