C++

De la Wikipedia, enciclopedia liberă
C++

Logo aprobat de Standard C++
C++
Extensii fișiere.C, .cc, .cpp, .cxx, .c++, .h, .H, .hh, .hpp, .hxx, .h++
ParadigmăMulti-paradigmă: procedurală, funcțională, orientată pe obiecte, generică, modulară
Apărut în1985; acum 39 ani (1985)
Proiectat deBjarne Stroustrup
DezvoltatorISO/IEC JTC1 (Joint Technical Committee 1) / SC22 (Subcommittee 22) / WG21 (Working Group 21)
Ultima versiuneC++20[1]  Modificați la Wikidata
Tiparestatic typing[*][[static typing (type system paradigm where all type checking is done at compile time)|​]]
nominative typing[*][[nominative typing (major class of type system, in which compatibility and equivalence of data types is determined by explicit declarations and/or the name of the types)|​]]
partial inference typing[*][[partial inference typing (a style of dynamic typing in object-oriented programming)|​]]  Modificați la Wikidata
Influențat deC
Simula
ALGOL 68[*][[ALGOL 68 (limbaj de programare)|​]]
CLU[*]
ML[*]
Ada  Modificați la Wikidata
Sistem de operareCross-platform
Tip MIMEtext/x-c
text/plain  Modificați la Wikidata
Organizație de standardizareOrganizația Internațională de Standardizare
Comisia Electrotehnică Internațională  Modificați la Wikidata
Prezență onlinesite web oficial
hasthtag
repozitor

C++ (pronunțat ca în engleză /ˈs plʌs plʌs/) este un limbaj de programare general, compilat. Este un limbaj multi-paradigmă, cu verificarea statică a tipului variabilelor ce suportă programare procedurală, abstractizare a datelor, programare orientată pe obiecte. În anii 1990, C++ a devenit unul dintre cele mai populare limbaje de programare comerciale, rămânând astfel până azi[2].

Bjarne Stroustrup de la Bell Labs a dezvoltat C++ (inițial denumit C cu clase) în anii 1980, ca o serie de îmbunătățiri ale limbajului C. Acestea au început cu adăugarea noțiunii de clase, apoi de funcții virtuale, suprascrierea operatorilor, moștenire multiplă (engleză multiple inheritance), șabloane (engleză template) și excepții. Limbajul de programare C++ a fost standardizat în 1998 ca și ISO 14882:1998, versiunea curentă fiind din 2003, ISO 14882:2003. Următoarea versiune standard, cunoscută informal ca C++0x, este în lucru.

Istoricul C++[modificare | modificare sursă]

Bjarne Stroustrup, creatorul limbajului C++.

Stroustrup a început să lucreze la C cu clase în 1979. Ideea creării unui nou limbaj a venit din experiența de programare pentru pregătirea tezei sale de doctorat. Stroustrup a descoperit că Simula avea facilități foarte utile pentru proiecte mari, însă era prea lent, în timp ce BCPL era rapid, însă nu era de nivel înalt și era nepotrivit pentru proiecte mari. Când a început să lucreze pentru Bell Labs, avea sarcina de a analiza nucleul UNIX referitor la calcul distribuit. Amintindu-și de experiența sa din perioada lucrării de doctorat, Stroustrup a început să îmbunătățească C cu facilități asemănătoare Simula. C a fost ales deoarece era rapid și portabil. La început facilitățile adaugate C-ului au fost clase, clase derivate, verificare a tipului, inline și argumente cu valori implicite.

În timp ce Stroustrup a proiectat C cu clase (mai apoi C++), a scris de asemenea și Cfront, un compilator care genera cod sursă C din cod C cu clase. Prima lansare comercială a fost în 1985.

În 1982, numele limbajului a fost schimbat de la C cu clase la C++. Au fost adaugate noi facilități, inclusiv funcții virtuale, supraîncărcarea operatorilor și a funcțiilor, referințe, constante, alocare dinamică, un control al tipului mai puternic și noua variantă de comentariu pe un singur rând (liniile care încep cu caracterele '//').

În 1985 a fost lansată prima ediție a cărții "The C++ Programming Language" (Limbajul de programare C++), oferind informații importante despre limbaj, care încă nu era un standard oficial. În 1989 a fost lansată versiunea 2.0 a C++. Au apărut acum moștenirea multiplă, clase abstracte, funcții statice, funcții constante și membri protected. În 1990 o altă carte a fost lansată, oferind suport pentru standarde viitoare. Ultimele adăugări includeau template-uri, excepții, spații de nume (namespace-uri) și tipul boolean.

O dată cu evoluția limbajului C++, a evoluat și o bibliotecă standard. Prima adăugire a fost biblioteca de intrări/ieșiri (I/O stream), care oferea facilități pentru a înlocui funcțiile tradiționale C cum ar fi printf și scanf. Mai târziu, printre cele mai semnificative adăugari la biblioteca standard a fost STL (Standard Template Library) (Biblioteca de formate standard).

După ani de lucru, un comitet ANSI-ISO a standardizat C++ în 1998 (ISO/IEC 14882:1998).

Exemple[modificare | modificare sursă]

Program care afișează textul "Hello World":

#include <iostream>

using namespace std;

int main() {
    cout << "Hello World" << endl;
    return 0;
}

Algoritm pentru aflarea celui mai mare divizor comun (algoritmul lui Euclid):

#include<iostream>

using namespace std;

int main() {
    int a, b, r;

    cin >> a;
    cin >> b;

    r = a % b;
    while(r) {
        a = b;
        b = r;
        r = a % b;
    }

    cout << b << endl;
    return 0;
}


Citirea și afișarea unei matrici:

#include<iostream>

using namespace std;

int main() {
	int a[10][10], i, j, n, m;
	cout << "Dați numărul de linii: ";
	cin >> n;
	cout << "Dați numărul de coloane: ";
	cin >> m;
	for(i = 0; i < n; i++) {
		for(j = 0; j < m; j++) {
			cout << "Dați numerele: ";
			cin >> a[i][j];
		}
	}
	cout << endl;
	cout << "Matricea este: ";
	cout << endl;
	for(i = 0; i < n; i++){
		for(j = 0; j < m; j++)
			cout << a[i][j] << ' ';
		cout << endl;
	}
	return 0;
}

Alternativa citirii și afișării unei matrici folosind while:

#include <iostream>

using namespace std;

int main() {
	int n,m,i=1,j;
	cout << "Dați numărul de linii: "; 
	cin >> n;
	cout << "Dați numărul de coloane: ";
	cin >> m;
	
	int *mtrx_ptr = new int[(n+1)*(m+1)];
        //Putem folosi o matrice falsa
	
	while(i <= n) {
		j=1;
		while(j <= m) {
			cout << "Dați numerele: ";
			cin >> mtrx_ptr[i*n+j];
			j++;
		}
		i++;
	}
	
	cout << endl;
	cout << "Matricea este: ";
	cout << endl;
	
	i=1;
	while(i <= n) {
		j=1;
		while(j <= m) {
			cout << mtrx_ptr[i*n+j] << ' ';
			j++;
		}
		cout << endl;
		i++;
	}
	return 0;
}

Sortarea unui vector crescator si descrescator utilizand functii din STL:

#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
vector<int>v;
int main(){
   int n,x;
   cin >> n;
   for(int i = 0; i < n; i++){
   cin >> x;
      v.push_back(x);
   }
   sort(v.begin(),v.end());//hlt-jmk-mat
   for(auto i  : v){
      cout << i << " ";
   }
   cout << endl;
   sort(v.rbegin(),v.rend());
   for(auto i : v){
       cout << i << " ";
   }
  return 0;
}

Aflarea celui mai mare divizor comun prin scăderi repetate:

#include<iostream>

using namespace std;

int main() {
    int a, b, c;
    cin >> a >> b;
    while(a != b) {
        if(a > b)
            a = a - b;
        else
            b = b - a;
       c = a;
    }
    cout << c << endl;
    return 0;
}

Note[modificare | modificare sursă]

  1. ^ ISO/IEC 14882:2020 Programming languages — C++ (în engleză), decembrie 2020 
  2. ^ TIOBE Programming Community Index

Bibliografie[modificare | modificare sursă]

  • Doina Logofătu: Algoritmi fundamentali in C++. Aplicații, Ed. 1, Editura Polirom, Iași, 2007, ISBN 9734600939.