Sunteți pe pagina 1din 7

PCLP 1 Laboratorul 2

Asist.drd.ing. Ana-Maria SUDUC

Laboratorul 2
Tipuri de date
1. Noţiuni teoretice

1. Tipuri de date
Există cinci tipuri de date fundamentale în C: caracter, întregi, cu virgulă mobilă, cu dublă virgulă
mobilă şi fără valoare (simbolizate respectiv char, int, float, double şi void). Toate celelalte tipuri de
date folosite în C sunt bazate pe unul din aceste tipuri fundamentale.
În afară de void, tipurile fundamentale de date pot fi precedate de diverşi modificatori. Un
modificator se utilizează pentru a schimba sensul tipului de bază în vederea unei adaptări mai precise la
anumite situaţii. Modificatori: signed, unsigned, long, short.
Modificatorii pot fi aplicaţi tipurilor de date caracter şi întreg. Totuşi long poate fi aplicat şi
tipului de date double.
Tipurile de date fundamentale din C++ sunt:

Nume Descriere Dimensiune* Domeniu de valori*


signed: de la -128 la 127
char Caracter sau întreg mic. 1octet
unsigned: de la 0 la 255
short int signed: de la -32768 la 32767
Întreg scurt. 2octeţi
(short) unsigned: de la 0 la 65535
signed: de la -2147483648 la
2147483647
int Întreg. 4octeţi
unsigned: de la 0 la
4294967295
signed: de la -2147483648 la
2147483647
long int (long) Întreg lung. 4octeţi
unsigned: de la 0 la
4294967295
Valoare booleană. Poate lua unda dintre
bool 1 octet true sau false
următoarele valori: true sau false.
float Număr în virgulă mobilă. 4 octeţi +/- 3.4e +/- 38 (~7 digiţi)
double Număr în virgulă mobilă cu dublă precizie. 8 octeţi +/- 1.7e +/- 308 (~15 digiţi)
Număr lung în virgulă mobilă cu dublă
long double 8 octeţi +/- 1.7e +/- 308 (~15 digiţi)
precizie.
wchar_t Caracter extins. 2 sau 4 octeţi 1 caracter extins
*Valorile din coloanele Dimensiune şi Domeniu de valori depind de sistemul pentru care este compilat
programul.

Diferenţa între întregii cu semn (signed) şi cei fără semn (unsigned) rezidă în modul în care este
reprezentat bitul de cel mai mare ordin al întregului. Dacă precizaţi un întreg cu semn, compilatorul de
C/C++ va genera un cod care presupune faptul că bitul de cel mai mare ordin al întregului va fi folosit ca
indicator de semn. Dacă acesta are valoarea 0, numărul e pozitiv, în caz contrar, numărul e negativ.

Exemplu de întreg scurt cu semn Exemplu de întreg scurt fără semn


32767  01111111 11111111 32767  01111111 11111111
-32767  11111111 11111111 65535  11111111 11111111

1
PCLP 1 Laboratorul 2
Asist.drd.ing. Ana-Maria SUDUC

2. Specificatori de format şi secvenţe de evitare


%u  întreg fără semn \n  linie nouă
%d  întreg \t  caracterul tab
%ld  întreg lung \b  caracterul backspace
%p  pointer \\  caracterul backslash (\)
%f  valoare în virgulă mobilă \/  caracterul slash (/)
%e  valoare in virgulă mobilă şi format
exponenţial
%c  caracter
%s  şir
%x  întreg în format hexazecimal

2. Aplicaţii
2.1. Lansaţi în execuţie aplicaţia Visual C++ 2010 Express Edition:
a) Din meniul Start-> Programs-> Microsoft Visual Studio 2010 Express Edition, executaţi clic
pe opţiunea Microsoft Visual C++ 2010 Express Edition.
2.2. Creaţi un nou proiect, Proiect1 şi un nou fişier File1.cpp:
a) Din meniul File->New, alegeţi opţiunea Project;
b) În fereastra New Project selectaţi opţiunea Win32 şi verificaţi să fie selectat Win32 Console
Application;
c) În câmpul Name introduceţi Proiect1 şi apăsaţi OK;
d) În fereastra deschisă apăsaţi Next şi apoi selectaţi opţiunea Empty Project şi apăsaţi Finish;
e) În secţiunea Solution Explorer executaţi clic dreapta pe directorul Source File şi alegeţi
opţiunea New-> Item;
f) În fereastra Add New Item selectaţi categoria Code şi verificaţi să fie selectată opţiunea C++
File (.cpp);
g) În câmpul Name tastaţi numele File1 şi apăsaţi Add.
2.3. În fişierul File1.cpp introduceţi şi testaţi următorul program:
#include <iostream>
using namespace std;
void main(void)
{
int Lungimea;
int Latimea = 10;
int Perimetrul;
Lungimea = 20
Perimetrul = 2 * ( Lungimea + Latimea);
cout<<"Perimetrul dreptunghiului = ;
cout<<Perimetrul;
}
2.4. Compilaţi programul şi rulaţi-l.
2.5. Rezolvaţi cele trei erori de sintaxă detectate la compilare:

2
PCLP 1 Laboratorul 2
Asist.drd.ing. Ana-Maria SUDUC

Fig. 7 Erorile detectate la compilare


a) Executaţi dublu clic pe prima eroare detectată:
error C2146: syntax error: missing ‘;’ before identifier ‘Perimetrul’;
Automat indicatorul de inserare (cursorul) va face un salt pe linia:
Perimetrul = 2 * ( Lungimea + Latimea);
Eroarea precizează că lipseşte simbolul “;” din faţa identificatorului Perimetrul. Plasaţi
simbolul “;” după comanda Lungimea = 20
b) Compilaţi programul din nou executând clic dreapta pe numele fişierului din secţiunea
Solution Explorer şi alegând opţiunea Compile;
c) Vor fi detectate ultimele două erori, identificate şi la compilarea anterioară. Executând dublu
clic pe prima eroare cursorul va executa un salt pe linia:
cout<<"Perimetrul dreptunghiului = ;
unde se observă că nu sunt închise ghilimelele. Corectaţi:
cout<<"Perimetrul dreptunghiului = ";
d) Compilaţi programul. Programul a fost compilat cu succes.
e) Rulaţi programul selectând opţiunea Start without Debugging din meniul Debug.
Obs. Erorile sunt afişate în ordinea apariţiei lor în program. Începeţi rezolvarea erorilor cu prima
eroare semnalată şi care poate fi identificată uşor în program prin executarea unui dublu clic pe textul
corespunzător de semnalare din zona Output. După rezolvarea unei erori, compilaţi din nou programul.
E posibil ca mai multe erori să aibă drept sursă o singură greşeală de sintaxă.
2.6. Creaţi un nou proiect, Proiect3, cu fişierul File3.cpp conform indicaţiilor de la punctele
anterioare.
2.7. Introduceţi în fişier următorul program:
#include <iostream>
using namespace std;
void main(void)
{
cout<<"Primul program \nscris in C++.";
}
2.8. Compilaţi şi rulaţi programul. Care este diferenţa între rezultatul obţinut şi cel din programul
File1.cpp?
Obs. Specificatorul de format \n e utilizat pentru a insera o nouă linie între mesajul din faţa
specificatorului şi restul mesajului, de după specificator.
2.9. Modificaţi programul astfel încât programul obţinut să fie:
#include <iostream>
using namespace std;
void main(void)
{
cout<<"Primul program \nscris in C++.\n";
}
2.10. Compilaţi, rulaţi programul şi comparaţi rezultatul cu cel obţinut anterior.
2.11. Modificaţi programul anterior pentru a obţine următorul rezultat:

3
PCLP 1 Laboratorul 2
Asist.drd.ing. Ana-Maria SUDUC

Fig. 8. Rezultatul dorit


2.12. Testaţi pe rând următoarele programe:
Programul 1:
#include <iostream>
using namespace std;
void main(void)
{
cout<<"Primul program";
cout<<"scris in C++.";
}
Programul 2:
#include <iostream>
using namespace std;
void main(void)
{
cout<<"Primul program "<<"scris in C++.";
}
Există vreo diferenţă între rezultatele celor două programe?
2.13. Testaţi pe rând următoarele programe:
Programul 1:
#include <iostream>
using namespace std;
void main(void)
{
cout<<"Primul program\n";
cout<<"scris in C++.\n";
}
Programul 2:
#include <iostream>
using namespace std;
void main(void)
{
cout<<"Primul program"<<endl;
cout<<"scris in C++."<<endl;
}
Programul 3:
#include <iostream>
using namespace std;
void main(void)
{
cout<<"Primul program"<<endl<<"scris in C++."<<endl;
}
Obs. Endl e precedat întotdeauna de operatorul “<<”. El trece pe o nouă linie următorul mesaj ce va fi
afişat. Are acelaşi efect ca şi \n doar că modul de utilizare e diferit (vezi exemplele).
2.14. Creaţi un nou proiect, Proiect2, cu fişierul File2.cpp în care introduceţi următorul
program:
#include <iostream>
using namespace std;

4
PCLP 1 Laboratorul 2
Asist.drd.ing. Ana-Maria SUDUC

void main(void)
{
int a=5;
cout<<"a"<<endl;
cout<<a<<endl;
}
2.15. Compilaţi şi rulaţi programul. Observaţi diferenţa între afişarea lui “a” (caracterul a) şi
afişarea lui a (valoarea variabilei a).
2.16. Modificaţi programul anterior pentru a obţine:
#include <iostream>
using namespace std;
void main(void)
{
int a=5;
cout<<"a="<<a<<endl;
}
2.17. Compilaţi şi rulaţi programul.
2.18. Modificaţi programul anterior pentru a obţine:
#include <iostream>
using namespace std;
void main(void)
{
int a;
cout<<"a=";
cin>>a;
cout<<"Valoarea lui a este: "<<a<<endl;
}
2.19. Compilaţi şi rulaţi programul.
2.20. Modificaţi programul File3.cpp pentru a citi de la tastatură valorile lungimii şi lăţimii:
a) Deschideţi proiectul Proiect3. Alegeţi din meniul File opţiunea Open Project/Solution…. În
directorul Projects executaţi dublu clic pe directorul Proiect3. Executaţi dublu clic pe fişierul
Proiect3.
b) Modificaţi programul astfel încât să obţineţi:
#include <iostream>
using namespace std;
void main(void)
{
int Lungimea;
int Latimea;
int Perimetrul;

cout<<"Lungimea=";
cin>>Lungimea;

cout<<"Latimea=";
cin>>Latimea;

Perimetrul = 2 * ( Lungimea + Latimea);


cout<<"Perimetrul dreptunghiului = "<<Perimetrul<<endl;
}
2.21. Modificaţi programul anterior pentru a obţine:
#include <iostream>
using namespace std;
void main(void)
{
int Lungimea;
int Latimea;

5
PCLP 1 Laboratorul 2
Asist.drd.ing. Ana-Maria SUDUC

cout<<"Lungimea=";
cin>>Lungimea;

cout<<"Latimea=";
cin>>Latimea;

cout<<"Perimetrul dreptunghiului = "<<2 * ( Lungimea + Latimea)<<endl;


}
2.22. Care e diferenţa dintre ultimele două programe testate?
2.23. Modificaţi programul anterior pentru a calcula şi afişa atât perimetrul cât şi aria
dreptunghiului.
2.24. Creaţi un nou proiect, Proiect4, cu fişierul File4.cpp în care introduceţi următorul
program:
#include <iostream>
void main(void)
{
char ch = 'A';
cout<<"Caracterul memorat in variabila ch este: "<<ch;
}
2.25. Compilaţi şi rulaţi programul.
2.26. Modificaţi programul astfel încât valoarea variabilei ch să fie citită de la tastatură.
2.27. Creaţi un nou proiect, Proiect5, cu fişierul File5.cpp în care introduceţi următorul
program:

#include <iostream>
using namespace std;
void main(void)
{
int nr_intreg;
float nr_real;
double nr_double;

cout<<"Introduceti trei numere: \n";

cout<<"un intreg: ";


cin>>nr_intreg;

cout<<"un real: ";


cin>>nr_real;

cout<<"un double: ";


cin>>nr_double;

cout<<"Ati introdus:\n un intreg = "<<nr_intreg<<"\n un real = "<<nr_real<<"\n


un double = "<<nr_double;
}
2.28. Compilaţi şi rulaţi programul.

6
PCLP 1 Laboratorul 2
Asist.drd.ing. Ana-Maria SUDUC

Fig. 9 Rezultatul rulării programului