Documente Academic
Documente Profesional
Documente Cultură
TEMA:
1. Familiarizarea cu mediul utilizat (Microsoft Visual Studio 2019 – Microsoft
Visual C++ (MSVC)) pentru dezvoltarea aplicaţiilor C/C++. Prima aplicație.
2. Elemente de vocabular: Date în limbajele C/C++. Operaţii de intrare/ieşire.
Mai multe proiecte pot fi grupate într-un container numit soluție (ptr VC++ extensia fișierului
este .sln).
Prima aplicație
Pentru prima aplicație veți crea un nou proiect și o nouă aplicație.
La prima lansare în execuție a IDE-ului VS, apare caseta de dialog din care veți selecta
Create a new project.
Sau – din bara de meniu selectați File > New > Project. Se deschide fereastra Create a new
project.
1
Conectarea pe un server de windows al catedrei CTI se poate face dintr-unul din laboratoarele catedrei sau “de
la distanță“, în cele 2 moduri prezentate la curs: a) cu VPN, prin Remote Desktop; b) fără vpn, prin accesarea
gate.cti.ugal.ro. Deasemenea, pentru a lucra pe calculatorul personal, vă puteți instala MS VS 2019 pe acesta,
având licențele gratuite de la catedră.
Autor: Diana Ştefănescu 1
REFERAT DE LABORATOR Nr.1 (din 14) 2021
Dacă aveți soluții/proiecte deja create, le puteți deschide pentru a lucra cu cel care va fi
selectat (lista soluțiilor la care ați lucrat recent este afișată în stânga).
Exemplu:
#include <iostream> // linia 1
using namespace std; //linia 2
int main() // linia 3 - antetul functiei main
{ /* linia 4 - inceputul corpului functiei, a unei
intructiuni compuse (linia 5)*/
cout << "Primul meu program in limbajul C++\n"; // linia 6
return 0; //linia 7
} // linia 8-sfirsitul corpului functiei
Funcţiile comunică între ele prin argumente. Aceste argumente reprezintă datele de intrare ale
funcţiei. În cazul nostru, nu avem nici un argument în acea listă, deci puteam să scriem antetul
funcţiei şi astfel:
int main(void)
Ceea ce urmează după simbolul //, până la sfărşitul liniei, este un comentariu, care va fi
ignorat de către compilator. Comentariul poate conţine un text explicativ, informaţii
lămuritoare la anumite aspecte ale problemei sau observaţii. Dacă vrem să folosim un
comentariu care cuprinde mai multe linii, vom delimita începutul acestuia prin simbolurile
/*, iar sfârşitul - prin */ (vezi liniile 4, 5). Introducerea comentariilor în programele sursă
uşurează înţelegerea acestora. În general, se recomandă introducerea unor comentarii după
antetul unei funcţiei, pentru a preciza prelucrările efectuate în funcţie, anumite limite impuse
datelor de intrare, etc.
Începutul şi sfârşitul corpului funcţiei main sunt indicate de cele două acoalade { (linia4),
respectiv }(linia 8).
Corpul funcţiei (liniile 6, 7) este format dintr-o singură prelucrare, care implementează o
operaţie de ieşire (scriere). În linia 6, cuvântul cout este un cuvânt predefinit (un obiect3) al
limbajului C++ - console output - care desemnează dispozitivul logic de ieşire; simbolul <<
este operatorul de transfer al informaţiei. Folosite astfel, se deschide un canal de comunicaţie
a datelor către dispozitivul de ieşire, în cazul acesta, monitorul. După operator se specifică
informaţiile care vor fi afişate (în acest exemplu, un şir de caractere constant). Faptul că este
un şir constant de caractere este indicat de ghilimelele care îl încadrează. Pe ecran va fi afişat
fiecare caracter din acest şir, cu excepţia grupului \n. Deşi grupul este format din două
caractere, acesta va fi interpretat ca un singur caracter - numit caracter escape - care
determină poziţionarea cursorului la începutul următoarei linii a ecranului. O secvenţă escape
(cum este \n) furnizează un mecanism general şi extensibil pentru reprezentarea caracterelor
invizibile sau greu de obţinut. La sfârşitul instrucţiunii care implementează operaţia de
scriere, apare ; .
În linia 6, instrucţiunea return produce încheierea execuţiei programului, prin revenirea din
funcţia main. Instrucţiunea este folosită la genera un cod numeric întreg, iar codul 0 înseamnă
că programul s-a încheiat fără erori. Este cel mai obişnuit mod de a încheia un program C++4.
2
Elementele bibliotecii standard C++ sunt declarate în spaţiul numelor (engl., namespace) std. O soluţie “mai
nouă” este aceea de a declara la începutul fişierului sursă utilizarea acestui spaţiu, prin:
using namespace std;
În acest caz, extensia header-ului (.h) poate fi omisă.
Mai multe informaţii despre spaţiul numelor găsiţi în materialul “Observaţii generale”.
3
cout – un obiect din biblioteca standard C++, care face parte din namespace-ul std.
4
Dacă pentru funcţia main aţi uitat să folosiţi instrucţiunea return, aşa cum ar trebui, majoritatea
compilatoarelor “iartă” acest lucru, considerând automat că o execuţie corectă a programului (a funcţiei main)
determină returnarea codului 0.
Autor: Diana Ştefănescu 5
REFERAT DE LABORATOR Nr.1 (din 14) 2021
Dacă fișierul sursă este corect (dacă nu, erorile sau atenționările sunt semnalate; erorile
trebuie corectate), el poate fi compilat și linkeditat (pentru a obține executabilul); executabilul
poate fi lansat în execuție. Lansați în execuție (Ctrl+F5 sau Start Whithout Debugging din
meniul Test). Etapele de compilare și linkeditare pot fi parcurse și separat (meniul Build-
>Compile, Build->Build Proiect/Solution, apoi Test-> Start Whithout Debugging).
Rezultatele execuției:
3.a.
#include <iostream> //3a
#define PI 3.14359
using namespace std;
int main()
{
cout << "Tipul int memorat pe: " << sizeof(int) << " octeti\n";
cout << "Tipul int memorat pe: " << sizeof(23) << " octeti\n";
//23-const. decimala int
cout << "Const. octala 077 are val decimala:" << 077 << '\n';
cout << "Const. hexagesimala d3 are val decimala:" << 0xd3 << '\n';
cout << "Tipul unsigned int memorat pe:";
cout << sizeof(unsigned int) << " octeti\n";
cout << "Tipul unsigned int memorat pe: " << sizeof(23U) << " octeti\n";
cout << "Tipul unsigned int memorat pe: " << sizeof(23u) << " octeti\n";
cout << "Tipul long int memorat pe: " << sizeof(long int) << " octeti\n";
cout << "Tipul long int memorat pe: " << sizeof(23L) << " octeti\n";
cout << "Tipul long int memorat pe: " << sizeof(23l) << " octeti\n";
//23L sau 23l-const. decimala long int
cout << "Tipul unsigned long memorat pe:";
cout << sizeof(unsigned long int) << " octeti\n";
cout << "Tip unsigned long mem. pe: " << sizeof(23UL) << " octeti\n";
cout << "Tip unsigned long mem. pe: " << sizeof(23ul) << " octeti\n";
//23UL sau 23ul-const. decimala unsigned long int
return 0;
}
3.b.
#include <iostream> //3b
#define PI 3.14359
using namespace std;
int main()
{
cout << "Tipul long long int memorat pe: "; long long int d;
cout << sizeof(long long int) << " octeti\n";
cout << "Tip long long int mem. pe: " << sizeof(d) << " octeti\n";
cout << "Tip short int mem.pe: " << sizeof(short int) << " octeti\n";
cout << "Tipul float memorat pe: " << sizeof(float) << " octeti\n";
cout << "Tipul float memorat pe: " << sizeof(23.7f) << " octeti\n";
//23.7f-const. decimala float
cout << "Tipul double memorat pe: " << sizeof(double) << " octeti\n";
cout << "Tipul double memorat pe: " << sizeof(23.7) << " octeti\n";
//23.7-const. decimala double
cout << "Const. decim. doubla in not st.:" << 23.7e-5 << '\n';
cout << "Const.PI este : " << PI << '\n';
cout << "Constanta PI este memorata pe : " << sizeof(PI) << " octeti\n";
cout << "Tip long double mem.pe: " << sizeof(long double) << " oct\n";
cout << "Tip long double mem. pe: " << sizeof(23.7L) << " octeti\n";
//23.7L-const. decimala long double
cout << "Cifra A din HEXA are val.:" << 0xA << "\n";
cout << "Cifra B din HEXA are val.:" << 0XB << "\n";
cout << "Cifra C din HEXA are val.:" << 0xc << "\n";
cout << " Cifra E din HEXA are val.:" << 0XE << "\n";
cout << " Cifra F din HEXA are val.:" << 0xf << "\n";
cout << "Val. const. hexa 0x7ac1e este: " << 0x7ac1e << '\n';
cout << "Val. const. octale 171 este: " << 0171 << '\n';
Autor: Diana Ştefănescu 7
REFERAT DE LABORATOR Nr.1 (din 14) 2021
cout << "O const. octala se mem. pe " << sizeof(011) << " octeti\n";
cout << "O const.oct.long mem.pe"; cout << sizeof(011L) << " oct\n";
}
3.c.
#include <iostream> //3c
#define PI 3.14359
using namespace std;
int main()
{
cout << "Un caracter este memorat pe " << sizeof(char) << " octet\n";
cout << "Caracterul escape \\n este memorat pe ";
cout << sizeof('\n') << " octet\n";
cout << "Car. escape '\\n\' e mem. pe " << sizeof('\n') << " oct.\n";
cout << "Caracterul '9' e memorat pe " << sizeof('9') << " octet\n";
// afisarea unor constante caracter
cout << 'B'; cout << ' '; cout << 'c'; cout << '\t'; cout << '\t'; cout << '9';
cout << '\t'; cout << '\"'; cout << '\\'; cout << '\n';
return 0;
}
3.d.
#include <iostream> //3d
#define PI 3.14359
using namespace std;
int main()
{
cout << "Sirul \"Ab9d\" e mem. pe:" << sizeof("Ab9d") << " oct\n";
cout << "Sir \"Abcd\\t\" mem. pe:" << sizeof("Abcd\t") << " oct.\n";
cout << "Sirul \"\n\" este mem. pe " << sizeof("\n") << " octeti\n";
cout << "Sirul \"\\n\" este mem. pe " << sizeof("\n") << " octeti\n";
cout << "Sir\"ABCDE\" se mem. pe " << sizeof("ABCDE") << " oct.\n";
return 0;
}
4.b.
#include <iostream>
using namespace std;
int main()
{
char nume[30]; cout << "Introduceti numele dvs: "; cin >> nume;
cout << "Numele tastat de dvs. a fost " << nume << "!\n";
return 0;
}
PROBLEME PROPUSE
1. Pentru mediul cu care lucraţi, găsiţi numele fişierului header care conţine declararea
constantelor simbolice pentru valorile maxime şi minime ale datelor de diferite tipuri şi
scrieţi un program care să afişeze pentru fiecare dintre acestea valorile, sub forma:
Datele de tip int iau valori in intervalul [<val_min>, <val_max> ].