Sunteți pe pagina 1din 5

REFERAT DE LABORATOR Nr.

1 (din 14) 2010

REFERAT DE LABORATOR NR. 1

TEMA:
1. Familiarizarea cu mediul utilizat pentru dezvoltarea aplicaţiilor C/C++.
Primul program.
2. Elemente de vocabular: Date în limbajele C/C++. Operaţii de intrare/ieşire.

1. După conectarea pe contul creat fiecărui utilizator (numele contului şi parola indicate),
studenţii se vor familiariza cu mediul 1 (selectaţi opţiunile din bara de meniuri pentru testaţi
facilităţile oferite de mediu).

2. Scrieţi programul următor, parcurgeţi fiecare etapă necesară obţinerii fişierului executabil
(editarea fişierului sursă şi salvarea acestuia, compilarea, linkeditarea şi lansarea în
execuţie) şi urmăriţi rezultatele obţinute în urma execuţiei.

Să considerăm 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.h> // linia 1
int main() // linia 2 - antetul functiei main
{ /* linia 3 - inceputul corpului functiei, a unei intructiuni
compuse (linia 4)*/
cout<<”Primul meu program in limbajul C++\n”; // linia 5
return 0; //linia 6
} // linia7-sfirsitul corpului functiei

Prima linie este o directivă preprocesor (indicată de simbolul #) care determină includerea în
fişierul sursă a fişierului header cu numele iostream.h. Acest header 2 include elemente de
intrare/ieşire - din biblioteca standard C++ - care permit realizarea afişării pe monitor.
Programul conţine doar o funcţie, funcţia principală, main, al cărui antet (linia 2) 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.

1
Dev-C++ este un mediu integrat de dezvoltare a aplicaţiilor C++. Foloseşte varianta Mingw a compilatorului
GCC (GNU Compiler Collection).
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”.
Autor: Diana Ştefănescu 1
REFERAT DE LABORATOR Nr.1 (din 14) 2010

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 3, 4). 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 { (linia3),
respectiv }(linia 7).

Corpul funcţiei (liniile 5, 6) este format dintr-o singură prelucrare, care implementează o
operaţie de ieşire (scriere). În linia 5, cuvântul cout este un cuvânt predefinit (un obiect 3 ) 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 .

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

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 2
REFERAT DE LABORATOR Nr.1 (din 14) 2010
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.h> //3b
#define PI 3.14359
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';
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";

Autor: Diana Ştefănescu 3


REFERAT DE LABORATOR Nr.1 (din 14) 2010
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<<'\b';cout<<'\a';cout<<'L';cout<<'\v';cout<<'L';cout<<'\'';
cout<<'\t';cout<<'\"';cout<<'\\';cout<<'\n';cout<<'\a';cout<<'\7';
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. 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 ; }

1.f.
# include <iostream.h>
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: "<< 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> ].

Autor: Diana Ştefănescu 4


REFERAT DE LABORATOR Nr.1 (din 14) 2010

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 5

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