Sunteți pe pagina 1din 9

REFERAT DE LABORATOR Nr.

1 (din 14) 2021

REFERAT DE LABORATOR NR. 1

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.

1. După conectarea pe un server de windows1 al Catedrei de Calculatoare, pe contul


institutional creat fiecărui utilizator, studenţii se vor familiariza cu mediul integrat de
dezvoltare (IDE – Integrated Development Environment) Microsoft Visual Studio 2019 (MS
VS 2019) folosit în acest semestru.

 Documentația completă despre MS VS 2019 o găsiți pe site-ul MS,


https://docs.microsoft.com/en-us/visualstudio/ide/?view=vs-2019,
https://docs.microsoft.com/en-gb/visualstudio/windows/?view=vs-2019&preserve-
view=true
 C and C++ in Visual Studio - https://docs.microsoft.com/en-us/cpp/overview/visual-cpp-
in-visual-studio?view=msvc-160

Conceptele proiecte și soluții în MS VC++


Când creați o aplicație (sau un site web – nu e cazul nostru) în Visual Studio, începeți cu un
proiect. Acest proiect va conține toate fișierele (fișerele sursă C++ în cazul nostru, dar în
cazul general pot fi imagini, date, icons, etc) care sunt compilate pentru obținerea unui fișier
executabil (cazul nostru), o bibliotecă sau un site web. Deasemenea, proiectul conține
informațiile despre setările compilatorului, opțiuni, reguli, fișiere de configurare sau relații cu
alte proiecte. În cazul nostru, fișierul proiect (VC++) are extensia .vcxproj.

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

(sursa web - https://docs.microsoft.com/en-us/cpp/get-started/tutorial-console-


cpp?view=msvc-160&viewFallbackFrom=vs-2019)

Din template-urile puse la dispoziție, alegeți Console App, apoi Next.


Autor: Diana Ştefănescu 2
REFERAT DE LABORATOR Nr.1 (din 14) 2021
În fereastra de configurare a proiectului veți indica numele proiectului, locația unde va fi
salvat și, eventual, numele soluției, apoi Create.

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).

Autor: Diana Ştefănescu 3


REFERAT DE LABORATOR Nr.1 (din 14) 2021

Fereastra de editare Fereastra explorer pentru


soluții și proiecte
În fereastra de editare, ștergeți conținutul și scrieți un prim program, un exemplu foarte
simplu: programul afişează pe ecran un mesaj (mesajul Primul meu program). Informaţia de
prelucrat (de intrare) este însăşi mesajul (o constantă şir de caractere), iar prelucrarea ei constă
în afişarea pe monitor.

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

Autor: Diana Ştefănescu 4


REFERAT DE LABORATOR Nr.1 (din 14) 2021
Prima linie este o directivă preprocesor (indicată de simbolul #) care determină includerea în
fişierul sursă a fişierului header cu numele iostream. Acest header2 include elemente de
intrare/ieşire - din biblioteca standard C++ - care permit realizarea afişării pe monitor.
Linia a doua conține declarația spațiului numelor, pentru a fi recunoscute cin și cout. Dacă nu
ar fi fost declarat spațiul numelor, cin și cout trebuiau precedate de std (std::cin și std::cout).
Programul conţine doar o funcţie, funcţia principală, main, al cărui antet (linia 3) indică:
- tipul valorii returnate de funcţie (int, ceea ce înseamnă că funcţia returnează o valoare
întreagă);
- numele funcţiei (main)
- lista declaraţiilor argumentelor primite de funcţie, încadrată de cele 2 paranteze rotunde.

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).

Nu uitați să salvați (File -> Save...)!

Rezultatele execuției:

Autor: Diana Ştefănescu 6


REFERAT DE LABORATOR Nr.1 (din 14) 2021
3. Să se scrie următoarele programe şi să se urmărească rezultatele execuţiei acestora.
Afişarea numărului de octeţi de memorie (cu ajutorul operatorului sizeof) necesari pentru
diferite tipuri de date.

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;
}

Să se scrie următoarele programe şi să se urmărească rezultatele execuţiei acestora.


4.a.
#include <iostream>
using namespace std;
int main()
{
cout << "Buna ziua"; cout << "\n La revedere ! "; 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;
}

Autor: Diana Ştefănescu 8


REFERAT DE LABORATOR Nr.1 (din 14) 2021
4.c.
# include <iostream>
using namespace std;
int main()
{
int a, b, c; cout << "Introdu primul nr:"; cin >> a; cout << "Si al doilea:";
cin >> b; c = a + b; cout << "Suma nr " << a << " cu " << b << "este: " ;
cout << c << "\n";
}

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> ].

2. Să se scrie un program care afişează următoarele mesaje:


a) Sirul "este dupa-amiaza" este memorat pe .... octeti.
b) O marime intreaga este memorata pe ... octeti.
c) O marime reala, in simpla precizie este memorata pe ... octeti!
d) O marime reala, in dubla precizie este memorata pe ... bytes!
e) Constanta caracter 'Q' memorata pe ... octeti!
f) Sirul "a\n\n" este memorat pe ... octeti!
g) Sirul "\n" este memorat pe ... biti!
h) Caracterul '\' este memorat pe .... biti.
2. Se citesc 2 valori numerice reale, care reprezintă dimensiunile (lungimea şi lăţimea unui
dreptunghi). Să se calculeze şi să se afişeze aria dreptunghiului.
3. Se citesc 2 valori numerice reale, care reprezintă diametrul bazei şi înălţimea unui
cilindru. Să se calculeze şi să se afişeze aria bazei cilindrului, aria laterală a cilindrului şi
volumul acestuia.

Autor: Diana Ştefănescu 9

S-ar putea să vă placă și