Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo-is-ab:laboratoare:02 [2026/09/28 12:22]
razvan.cristea0106 [Diferențe C/C++]
poo-is-ab:laboratoare:02 [2026/09/28 12:30] (current)
razvan.cristea0106
Line 8: Line 8:
  
   * recunoască diferențele dintre C și C++   * recunoască diferențele dintre C și C++
-  * realizeze ​unui program în C++ care să valorifice caracteristicile și facilitățile specifice limbajului+  * realizeze ​un program în C++ care să valorifice caracteristicile și facilitățile specifice limbajului
  
 ==== Introducere ==== ==== Introducere ====
Line 18: Line 18:
 === Citirea și afișarea variabilelor === === Citirea și afișarea variabilelor ===
  
-În C pentru citirea și afișare variabilor se realiza ​utilizând funcțiile **scanf** și **printf**. În C++ vom folosi operatorul **%%>>​%%** pentru citirea datelor de la tastatură sau din fișiere și operatorul **%%<<​%%** pentru afișarea datelor în fișiere sau consolă.+În C pentru citirea și afișare variabilor se realizau ​utilizând funcțiile **scanf** și **printf**. În C++ vom folosi operatorul **%%>>​%%** pentru citirea datelor de la tastatură sau din fișiere și operatorul **%%<<​%%** pentru afișarea datelor în fișiere sau consolă.
  
 == Citirea și afișarea în C == == Citirea și afișarea în C ==
Line 56: Line 56:
 </​code>​ </​code>​
  
-<​note>​Este de menționat faptul ​ca în C++ și funcțiile **scanf** și **printf** se pot utiliza, dar ca și recomandare ar fi mai indicată utilizarea operatorilor de citire și afișare ai limbajului, deoarece sunt mai specializați pentru ceea ce vom învăța pe parcursul semestrului.</​note>​+<​note>​Este de menționat faptul ​că în C++ și funcțiile **scanf** și **printf** se pot utiliza, dar ca și recomandare ar fi mai indicată utilizarea operatorilor de citire și afișare ai limbajului, deoarece sunt mai specializați pentru ceea ce vom învăța pe parcursul semestrului.</​note>​
  
 == Citirea și scrierea datelor în fișiere == == Citirea și scrierea datelor în fișiere ==
  
-În această secțiune vom prezenta modul de citire și scriere a datelor în fișierele text în limbajul C++. La fel ca în limbajul C aici avem posibilitatea să folosim funcțiile **fscanf** și **fprintf** însă se recomandă folosirea librăriei **fstream** care este specializată pentru lucrul cu fișiere. Dacă dorim să citim date dintr-un fișier vom volosi ​variabile de tipul **ifstream** (**input file stream**) iar pentru ​pentru scriere se utilizează tipul **ofstream** (**output file stream**).+În această secțiune vom prezenta modul de citire și scriere a datelor în fișierele text în limbajul C++. La fel ca în limbajul C aici avem posibilitatea să folosim funcțiile **fscanf** și **fprintf** însă se recomandă folosirea librăriei **fstream** care este specializată pentru lucrul cu fișiere. Dacă dorim să citim date dintr-un fișier vom folosi ​variabile de tipul **ifstream** (**input file stream**) iar pentru scriere se utilizează tipul **ofstream** (**output file stream**).
  
 Mai jos este prezentat un exemplu simplu de folosire a datelor de tip **ifstream** și **ofstream**. Mai jos este prezentat un exemplu simplu de folosire a datelor de tip **ifstream** și **ofstream**.
Line 136: Line 136:
 === Alocarea dinamică a memoriei === === Alocarea dinamică a memoriei ===
  
-Dacă în cazul citirii și afișării variabilelor lucrurile nu erau cu mult diferite, dacă discutăm despre alocare dinamică există câteva diferențe ​seminficative ​pe care o sa le observăm în exemplele următoare.+Dacă în cazul citirii și afișării variabilelor lucrurile nu erau cu mult diferite, dacă discutăm despre alocare dinamică există câteva diferențe ​semnificative ​pe care o să le observăm în exemplele următoare.
  
 == Alocare dinamică în C == == Alocare dinamică în C ==
Line 168: Line 168:
 </​code>​ </​code>​
  
-Dacă dorim să alocăm dinamic ​a un vector putem proceda în felul următor.+Dacă dorim să alocăm dinamic un vector putem proceda în felul următor.
  
 <code cpp> <code cpp>
Line 390: Line 390:
 </​code>​ </​code>​
  
-Pentru a înțelge mai bine, în desenul de mai jos se poate observa de fapt cine este **ref** și că nu face altceva decât să partajeze aceeași zonă de memorie ca și **x**.+Pentru a înțelege mai bine, în desenul de mai jos se poate observa de fapt cine este **ref** și că nu face altceva decât să partajeze aceeași zonă de memorie ca și **x**.
  
 {{ :​poo-is-ab:​laboratoare:​reference_logic.jpg |}} {{ :​poo-is-ab:​laboratoare:​reference_logic.jpg |}}
Line 511: Line 511:
  
 <note important>​Trebuie subliniat faptul că **tipul de return** al unei funcții **nu** este luat în considerare în contextul **polimorfismului prin supraîncărcare**. Ceea ce definește **polimorfismul** în acest caz este exclusiv **semnătura funcției**,​ adică **numele împreună cu lista și tipurile parametrilor**. De aceea, două funcții care diferă doar prin tipul valorii returnate **nu** sunt considerate supraîncărcări valide, generând astfel o eroare de compilare. În schimb, funcțiile care diferă prin **numărul**,​ **tipul** sau chiar **ordinea** parametrilor reprezintă forme acceptate de **polimorfism**,​ așa cum se poate observa în cazul ultimelor patru funcții din cadrul exemplului de mai sus.</​note>​ <note important>​Trebuie subliniat faptul că **tipul de return** al unei funcții **nu** este luat în considerare în contextul **polimorfismului prin supraîncărcare**. Ceea ce definește **polimorfismul** în acest caz este exclusiv **semnătura funcției**,​ adică **numele împreună cu lista și tipurile parametrilor**. De aceea, două funcții care diferă doar prin tipul valorii returnate **nu** sunt considerate supraîncărcări valide, generând astfel o eroare de compilare. În schimb, funcțiile care diferă prin **numărul**,​ **tipul** sau chiar **ordinea** parametrilor reprezintă forme acceptate de **polimorfism**,​ așa cum se poate observa în cazul ultimelor patru funcții din cadrul exemplului de mai sus.</​note>​
 +
 ==== Concluzii ==== ==== Concluzii ====
  
 Prin parcurgerea acestui laborator, putem spune cu certitudine că limbajul C++ reprezintă o evoluție firească a limbajului C, adăugând numeroase concepte și mecanisme care ne fac munca de programatori mai simplă și mai expresivă. Am văzut că librăria **fstream**,​ alocarea dinamică realizată într-un mod simplificat,​ introducerea referințelor,​ posibilitatea de a supraîncărca funcții și suportul pentru **Programarea Orientată Obiect** diferențiază C++ de C și ne oferă un cadru mai flexibil pentru dezvoltarea aplicațiilor. Totuși, este important să reținem faptul că C++ rămâne compatibil cu C la nivel de bază, ceea ce îl face un limbaj versatil, potrivit atât pentru stilul **procedural**,​ cât și pentru cel **orientat pe obiecte**. Prin parcurgerea acestui laborator, putem spune cu certitudine că limbajul C++ reprezintă o evoluție firească a limbajului C, adăugând numeroase concepte și mecanisme care ne fac munca de programatori mai simplă și mai expresivă. Am văzut că librăria **fstream**,​ alocarea dinamică realizată într-un mod simplificat,​ introducerea referințelor,​ posibilitatea de a supraîncărca funcții și suportul pentru **Programarea Orientată Obiect** diferențiază C++ de C și ne oferă un cadru mai flexibil pentru dezvoltarea aplicațiilor. Totuși, este important să reținem faptul că C++ rămâne compatibil cu C la nivel de bază, ceea ce îl face un limbaj versatil, potrivit atât pentru stilul **procedural**,​ cât și pentru cel **orientat pe obiecte**.
poo-is-ab/laboratoare/02.txt · Last modified: 2026/09/28 12:30 by razvan.cristea0106
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0