Sunteți pe pagina 1din 12

Limbajul C++

Un program in C++ se scrie in felul urmator:

1. Declarare biblioteci (unit)


2. Declarare variabile globale
3. Scrierea programului
int main()
{ declarare var locale si lista de instructiuni separate prin ;
return 0 ;
}
Exemplu de program:
#include <iostream> // sau #include <bits/stdc++.h>
#include<conio.h>
using namespace std; // este o directiva, care ne permide sa nu scriem std:: in fata procedurilor/functiilor
int main ()
{ // begin
int a, b;
cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
cout<<"a+b="<<a+b<<'\n';
cout<<"a-b="<<a-b<<'\n';
cout<<"b-a="<<b-a<<'\n';
cout<<"a*b="<<a*b<<'\n';
cout<<"a and b = "<<(a&b)<<'\n';
cout<<"a or b = "<<(a|b)<<'\n';
cout<<"a xor b = "<<(a^b)<<'\n';

getch();
return 0
} // end
Ex. #include <bits/stdc++.h> // in loc de #include <iostream.h DEW C++ 5.11>
using namespace std;
int main()
{ int a,b;
cout<<”a=”; cin>>a;
cout<<”b=”; cin>>b;
cout<<”a+b=”<<a+b<<’\n’;
cout<<”a-b=”<<a-b<<endl;
cout<<”b-a=”<<b-a<<’\n’;
cout<<”a*b=”<<a*b<<’\n’;
if (b!=0) {cout<<”a div b=”<<a/b<<’\n’; // calculeaza a div b intreg, b≠0 6/4=1
cout<<”a mod b=”<<a%b<<’\n’; // calculeaza a mod b, b≠0 6%4=2
cout<<”a / b=”<<1.0*a/b<<’\n’; // calculeza catul real, b≠0 1.0*6/4=1.5
}else cout<<” nu se divide la 0”;
if ( a>b) cout<<”max=”<<a;
else cout<<”max=”<<b;
return 0;
}
Programul este o functie de tip intreg, care daca se va compila si va fi tot corect, va avea
valoarea 0. Variabilele a si b de tip intreg sunt variabile locale, declarate in interiorul
functiei si nu vor avea valoare default 0. Acest program va citi valoarea variabilelor a si b si
va scrie suma lor, diferenta, produsul si valoarea operatorilor pe biti and, or, xor.
Atentie: in C++ aceeasi litera mare si mica sunt lucruri diferite. Toate instructiunile se scriu
obligatoriu cu litere mici.
’\n’ sau endl – va duce cursorul din rind nou.
getch(); e un readln; care va ramine la fereastra unde se vor scrie rezultatele

Exemplu declarare biblioteci

#include<iostream> -pentru a putea folosi procedura de citire


cin si procedura de scriere cout
#include<conio.h> - pentru a putea folosi la sfirsit de program
procedura getch(); , care va permite sa ramii
la fereastra de executie a programului
(in compilatoarele mai noi se pune
system(”pause”); in loc de getch(); si nu se declara conio.h

#include<cmath> pentru a putea utiliza functiile matematice pow, sqrt, log, sin...

#include <algoritm> pentru a utiliza diferiti algoritmi sort, swap, max , min,...

#include<cstring> -pentru a folosi proceduri/functii de prelucrare a sirurilor de


caractere (se zice stringuri)
#include<fstream> - pentru a putea face citirea/ scrierea in fisiere
ifstream cin(”prob1.in”)
ofstream cout(”prob1.out”)
using namespace std; pentru nu a pune in fata la proceduri/functii std:: cin ....
......
Vocabularul limbajului C++

1) Identificatori :
2) Cuvinte cheie, simboluri
3) Tipuri de date întregi, reale, char, bool, tablou, string,..
4) Operatori C++
5) Şiruri de caractere
6) Numere : Întregi
: Reale
7) Comentarii // sau /* .............................. */
8) Separatori
9) Etichete
10) Directive. Ex. using namespace std;
1) Identificatori
Identificatorul reprezintă nume de variabilă / funcţie şi poate fi constituit din litere
mari şi mici ale alfabetului englez urmat de cifre sau/şi caracterul ‘_’.
Atenţie! Limbajul C++ este Case-Sensitive : Variabilele/funcţiile cu numele
a şi A vor fi 2 variabile diferite.

2) Cuvinte Cheie, simboluri


Limbajul C++ conţine următoarele cuvinte cheie:
If, else, switch, default, break, case, while, for,do, const,cin,cout, struct,..
3) Tipuri de date:
Tipuri de date contin:
1. O multime de valori, pe care le vom atribui datele de asa tip
2. O multime de operatii predefinite, pentru datele de asa tip
3. O multime de proceduri si functii predefinite pentru datele de asa tip
Avem urmatoarele tipuri:
1. Tipuri intregi: char, short, int, long long cu semn sau fara semn
2. Tipul chat- caracter
3. Tipul boolean - bool
4. Tipuri reale: float, double, long double
5. Tipul enumarare- tip care contine identificatori
6. Tipul subdomeniu, interval: ’A’...’Z’, ’a’...’z’, ’0’...’9’
Tipuri structurate de date:
1. Tipul tablou
2. Tipul sir de caractere- string
3. Tipul articol - struct
4. Tipul multime – set
5. Tipul fisier
6. Tipuri referinta- pointeri
Tipuri de date întregi

C++ Pascal Intervalul Memorie


unsigned char byte/unsigned char 0..255 1 Octet
signed char ( char) shortint/char -128..127 1 Octet
unsigned short word 0..65536 2 Octeţi
signed short (short) integer -32768..32767 2 Octeţi
unsigned int longword 0..232-1 4 Octeţi
signed int (int) longint -231..231-1 4 Octeţi
unsigned long long quickword 0..264-1 8 Octeţi
signed long long (long long) Int64 -263..263-1 8 Octeţi

Tipuri de date flotante(reale)

C++ PASCAL Intervalul Memorie


float single +/- 3.4e +/- 38 (~7 cifre) 4 Octeți
double real/double +/- 1.7e +/- 308 (~15 cifre) 8 Octeți
long double extended 1.9E-4932 .. 1.1E4932 10-12 Octeți
(19-20 cifre)

4) Operatori în C++
Operatorii in C++ sunt de mai multe tiputi:
1. Operatotii fundamentali: citirea(cin), scrierea(cout), atribuirea(=), compararea
2. Operatori aritmetici: +, - , *, /(div, impartirea reala), %(mod)
3. Operatori logici: &&, ||, ^^, !
4. Operatori logici la nivel de bit cu numere intregi: &, |, ^, ~(notul logic la nivel de
bit)
5. Operatori relationali(de decizie): ==, < , > , <= , >= , !=
6. Operatori de decizie: ? Ex m= (a>b) ? a: b echivalent: if (a>b) m=a; else m=b;
7. Operatori de incriminare: EX. i++, sau ++i; echivalent cu inc(i)- Pascal
C++ Pascal C++ Pascal
Cin>>a; readln(a); a+=b; a:=a+b; sau inc(a,b)
Cout<<a; writeln(a); a-=b; a:=a-b; sau dec(a,b);
a=5 a:=5 a*=b; a:=a*b;
a==5 (comparație) a=5 a/=b; a:=a div b;
a<=b a<=b a%=b; a:=a mod b;
a>=b a>=b a&b a and b (pe biți)
a!=b a<>b a&=b; a:=a and b;
a<b a<b a|b a or b (pe biți)
a>b a>b a|=b; a:= a or b; (pe biți)
&& and logic a^b a xor b (pe biți)
|| or logic a^=b; a:=a xor b; (pe biți)
^^ xor logic a>>b a shr b (a div 2p)
! not logic a<<b a shl b (a * 2p)
a+b a+b a>>=b; a=a shr b;
a-b a-b a<<=b; a=a shl b;
a*b a*b ++a; pre-incrementare
a/b a div b a++; post-incrementare
a%b a mod b !a True dacă a==0, false
în caz contrar

Declararea variabilelor :
Sintaxa: Tip1 var1,var2,var3;
Exemplu: int a,b,c; (echivalent cu a,b,c:longint; în pascal)
Pre-incrementarea și post-incrementare :
Limbajul c++ oferă posibilitatea executării a mai multor instrucțiuni simple în
cadru unei mai complexe. Deosebirea de bază dintre pre și post-incrementarea este
că în astfel de instrucțiuni mai complexe , pre-incrementarea are cea mai mare
prioritate și se execută înaintea celorlalte instrucțiuni , pe cînd post-incrementarea
are cea mai mică prioritate ,și se execută ultima.
Un exemplu valorează cât 1000 de cuvinte :
int a,z;
a=1; z=(++a); // a:=a+1; după care z:=a;
iar în cazul
z=(a++); // z:=a; după care a:=a+1;
Instrucțiunele limbajului C++
1) Instrucțiunea expresie.
Ex: Int main() { 7+2; return 0; }
2) Instrucțiunea vidă
Ex:
Int main() { ; ; ;;; return 0}
3) Instrucțiunea de atribuire:
Ex: a =3*4-5;
4) Prototipul funcției: - apel de functie/ apel de procedura
5) exemplu int f(int a,float b); -
Apelul funcției:
Int z, a=438; float q=3.14;
z=f(a,q);
sau f(a,q) //valoarea funcției este ignorată în acest caz

6) Instrucțiunea compusa:
{ I1 ; I2 ; I3; I4; }

Instrucțiunea If in C++

if (expr. boolean) I1; else I2 ;


Ex:
#inclue<iostream>
using namespace std;
int main()
{ float a,b,x;
cout<<”a=”; cin>>a; // ax+b =0
cout<<”b=”; cin>>b;
if ( a ) { x=-b/a; cout<<”x=”<<x<<endl;
}
else
if (b ) cout<<” nu are solutii, multimea vida”; // 0*x=b, unde b<>0, multimea vida
else cout<<”o infinitate de solutii, S=R”; // 0*x =0- ad , S=R
return 0;
}

Instrucțiunea switch (ins. Case din Pascal)


cerceteaza mai multe cazuri in dependenta de valoarea expresiei, din care executa doar
unul. Instructiunea switch se scrie in felul urmator:
switch ( expresie )
{ case v1: I1; break;
case v2: I2; break;
...
case vn : In; break;
default : In+1;
}
Exemplu :
#include<iostream>
using namespace std;
int main ()
{ int i; //declarăm variabila i
cin>>i; // citim de la ecran variabila i
switch(i) // instrucțiunea switch
{ //begin
case 1: cout <<”Am citit 1”; break; //cazul 1
case 2: cout<<”Am citit 2”; break; // cazul 2
default: cout<<”Am citit alt nr”; // în caz contrar
} // end
return 0;
} // return 0; pentru a sfârși programul cu succes
Instrucțiuni ciclice:
1. while (expresie boolean) instrucțiune1;
Exemplu: Suma cifrelor lui N
#include<iostream>
using namespace std;

int main()
{ int n,s=0;
cout<<”n=”; cin>>n;
while (n) { s=s+ n % 10;
n=n/10;
}
cout<<”Suma cifrelor=” <<s;
return 0;
}
2. Do While (instrucțiunea repeat Pascal)
are forma:
do { instrucțiune; }
while (expresie boolean);
Exemplu: S=1+2+3+…+n;
#include<iostream>
using namespace std;
int main(){
int n,s=0,i=1;
cout<<”n=”; cin>>n;
do { s=s+i; i++; }
while(i<=n);
cout<<”suma=”<<s;
return 0; }
Metoda II #include<iostream>
using namespace std;
int main() {
int n,s=0,i=1;
cout<<”n=”; cin>>n;
do s+=i++;
while(i<=n);
cout<<”suma=”<<s;
return 0; }
3. Instructiunea FOR
for ( inițializare; expr bool/ logică; exp. de incrementare)

Exemplu: S=1+2+3+…+n;
#include<iostream>
using namespace std;
int main(){
int i,n, s=0;
cout<<”n=”; cin>>n;
for ( i=1; i<=n; i++) s+=i; // s=s+i; s=1+2+3+4+...+n
cout<<” suma=”<<s;
return 0;
}
Metoda II

for ( i=0 , s=0; i<=n; ++i , s+=i) ;


for(i=1, s=0; i<=n && s<=100; s+=i, i++); //la fiecare pas se executa s+=i și i++
//atât timp cât se verifică relațiile i<=n && s<=100
Operaţii cu şiruri de caractere(string) în C++
Declararea:
#include<string>
Using namespace std;
string s;

Apelul funcţiilor : nume_string.nume_funcţie(parametru_1,parametru2);


paramtrii în cazul cînd sunt aplicabili.

Atenţie! : Indexarea stringului începe de la 0 la L-1 unde L este lungimea şirului de


caractere.

1. s.clear(); , şterge tot din şir, echivalent cu s=””;


2. s.length() sau s.size(); returnează lungimea şirului.
3. Operatorul+= , s+=q; , adaugă la stringul s pe q ( string sau char );
4. s.erase(poz , n); şterge n caractere din s începînd cu poziţia poz.
5. s.substr(poz,n); returnează subşirul ce începe pe poziţia poz de lungimea n caractere
din stringul s.
6. s.find( q, poz); returnează prima apariţie a lui q ( string sau char ) din stringul s
începînd căutarea cu poziţia poz.
7. s.rfind(q, poz ); returnează ultima apariţie a lui q ( string sau char ) din stringul s
începînd căutarea cu poziţia poz.
8. s.insert(poz, s2); inserează în şirul s pe poziţia poz şirul s2.
s.insert(poz, n, ch); inserează în şirul s pe poziţia poz , caracterul ch repedetat de n
ori.
9. s.compare(s1); returnează valoarea
 1 dacă s > s1;
 0 dacă s = s1;
 -1 dacă s < s1;

Pentru informaţii adăugătoare vizitaţi: http://www.cplusplus.com/reference/string/string


Tipul Struct ( record )
Sintaxa generală:
struct nume_1{
Tip1 var1,var2;
Tip2 var3;

TipN varN;
};
Exemplu:
struct punct{
int x,y;
}puncte[1001]; //tablou de puncte;

struct punct triunghi[3]; //declararea unui tablou cu 3 variabile de tip record

typedef struct punct P;

P a,b,c; //declararea a 3 variabile de tip record, numit deja cu P în typedef


Exemplu:
#include<iostream>
#include<iomanip>
#include<conio.h>
#include<cmath>
using namespace std;

typedef struct pp{


double x,y;
} punct;

typedef struct tr{


punct a,b,c;
} triunghi;

double dist(punct a,punct b)


{ return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y)) ; }

triunghi X;

int main(){
cout<< ”Introduceti coordonatele primului punct al triunghiului” ;
cin>>X.a.x>>X.a.y;
cout<< ”Celui de-al doilea:” ;
cin>>X.b.x>>X.b.y;
cout<< ”Celui de-al treilea” ;
cin>>X.c.x>>X.c.y;

double a,b,c,p,A;
a=dist(X.a,X.b); b=dist(X.b,X.c); c=dist(X.a,X.c);
p=(a+b+c)/2.0;

A=sqrt(p*(p-a)*(p-b)*(p-c));

cout<<setprecision(5)<<fixed;
cout<< ”Aria triunghiului este: ” <<A;

return 0;
}

S-ar putea să vă placă și