Differences

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

Link to this comparison view

poo-is:laboratoare:02 [2020/09/07 14:37]
sergiu.craioveanu
— (current)
Line 1: Line 1:
-===== Laboratorul 02: Elemente specifice C++ ===== 
- 
-===== 1. Comentarii "​stil"​ C++ ===== 
- 
-Putem scrie comentarii pe o linie folosind simbolurile <​code>//</​code>​ 
-Ce este intre '​forward-slash-uri'​ si sfarsitul liniei se ignora. 
- 
-<code c++> 
-// Comentariu C++ 
- 
-/* Comentariu C */ 
- 
-/* 
- * Comentariu Stil Documentatie (Asemanator C) 
- */ 
-</​code>​ 
- 
-===== 2. Struct si Union ===== 
-Structurile si uniunile pot fi referite doar prin nume, deci fara a fi nevoiti sa utilizam cuvintele cheie **struct** sau **union** de fiecare data.  
-Asta arata ca struct-urile si union-urile sunt in C++ tipuri de date recunoscute automat. 
- 
-<code c++> 
-struct str 
-{ 
-    // Cod aferent structurii ​ 
-}; 
- 
-union uni 
-{ 
-    // Cod aferent union 
-}; 
- 
-str a, b; 
-uni c, d; 
- 
-void f(str x) {/* cod functie */} 
-</​code>​ 
- 
-===== 3. Functii Inline ===== 
- 
-O functie inline e definita in felul urmator: 
-<code c++> 
-inline TIP_RETURNAT NUME_FUNCTIE(LISTA_ARGUMENTE) {/* cod functie */} 
-</​code>​ 
- 
-**De ce sunt utile functiile inline?​** ​ 
-La apelul unei functii inline, in loc de **apelarea** propriu-zisa a functiei, se **substituie** codul efectiv al functiei la compilare. Avantajul este in termeni de viteza. Nu se va mai '​cauta'​ definitia functiei, va fi '​direct'​ unde trebuie. Dezavantajul este cresterea dimensiunii fisierului binar generat. Asadar, functiile **inline** reprezinta un trade-off intre viteza si spatiu. 
- 
-Pentru a rula exemplul de mai jos, click [[https://​repl.it/​@thesergiu/​lab2inline#​main.cpp|aici]]. 
-<code c++> 
-#include <​iostream>​ 
-using namespace std; 
- 
-// Declaram functia '​max'​ drept inline 
-inline int max(int a, int b) 
-{ 
-  return (a > b) ? a : b; 
-} 
- 
-/* Echivalent in C */ 
-#define max(a,b) (((a) > (b)) ? (a) : (b)) 
- 
-int main() { 
-  ​ 
-  int nr1 = 2, nr2 = 6; 
-  cout << max(nr1, nr2) << endl; 
- 
-  return 0; 
-} 
-</​code>​ 
- 
- 
-===== 4. Supradefinirea functiilor ===== 
-In   ​C++ ​ este  permisa ​ supradefinirea ​ functiilor, ​  adica existenta ​ mai  multor functii cu acelasi nume, dar  care  difera prin  tipul  si/sau numarul parametrilor. Decizia de  a  apela  o  
-functie sau alta se face dupa tipul sau numarul parametrilor. 
- 
-Aceasta inseamna ca o functie este recunoscuta nu numai prin numele sau, ci prin **"​semnatura"​**,​ adica **nume, tip si lista de parametri**. 
- 
-In exemplul ​ de  fata, se considera patru functii ​ cu  acelasi ​ nume (cub). ​ Trei  dintre ​ ele au un unic  parametru ​ (int,  float  si double), iar a patra are doi parametri. Ultima functie ​ apeleaza functia ​ cub specifica tipului float. Pentru a urmari ​ apelurile, fiecare ​ functie ​ este insotita de un mesaj  de  identificare ​ la consola. 
- 
-Pentru a experimenta cu codul de mai jos, click [[https://​repl.it/​@thesergiu/​lab2supradefinire#​main.cpp|aici]]. 
-<code c++> 
-#include <​iostream>​ 
-using namespace std; 
- 
-int cub (int n) 
-{    cout << "Apel functie cub int\n";​ return n*n*n; } 
- 
-double cub (double n) 
-{    cout << "Apel functie cub double\n";​ return n*n*n; } 
- 
-float cub (float n)  
-{    cout << "Apel functie cub float\n";​ return n*n*n; } 
- 
-float cub (float x, float a) 
-{  cout << "Apel functie cub diferenta\n";​ 
-     ​return cub (x-a); ​ // Aici se va apela cub cu float  ​ 
-} 
- 
-int main() { 
-  ​ 
-  cout << cub(3) << endl << endl; 
- 
-  double var = 3.33335678976;​ 
-  cout << cub(var) << endl << endl; 
-  ​ 
-  float var2 = 3.2; 
-  cout << cub(var2) << endl << endl; 
- 
-  cout << cub(9.9, 3.3) << endl << endl; 
- 
-  return 0; 
-} 
-</​code>​ 
- 
- 
  
poo-is/laboratoare/02.1599478632.txt.gz ยท Last modified: 2020/09/07 14:37 by sergiu.craioveanu
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