C++
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 în | 1985 |
Proiectat de | Bjarne Stroustrup |
Dezvoltator | ISO/IEC JTC1 (Joint Technical Committee 1) / SC22 (Subcommittee 22) / WG21 (Working Group 21) |
Ultima versiune | C++23[1] |
Tipare | static typing[*] nominative typing[*] partial inference typing[*] |
Influențat de | C Simula ALGOL 68[*] CLU[*] ML[*] Ada |
Sistem de operare | Cross-platform |
Tip MIME | text/x-c text/plain |
Organizație de standardizare | Organizația Internațională de Standardizare Comisia Electrotehnică Internațională |
Prezență online | site web oficial hasthtag repozitor |
Modifică date / text |
C++ (pronunțat ca în engleză /ˈsiː 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ă]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ă]Bibliografie
[modificare | modificare sursă]- Doina Logofătu: Algoritmi fundamentali in C++. Aplicații, Ed. 1, Editura Polirom, Iași, 2007, ISBN 9734600939.