Sunteți pe pagina 1din 9

REFERAT DE LABORATOR Nr.

REFERAT DE LABORATOR NR. 2


TEMA: Date. Tipuri de date. Constante, Variabile.

1. DATE N LIMBAJUL C/C++


Un program realizeaz o prelucrare de informaie. Termenul de prelucrare trebuie s fie
considerat ntr-un sens foarte general (de exemplu, n primul programu prezentat n capitolul
1, prelucrarea se referea la un text i consta n afiarea lui). n program datele apar fie sub
forma unor constante (valori cunoscute anticipat, care nu se modific), fie sub forma de
variabile. Constantele i variabilele sunt obiectele informaionale de baz manipulate ntr-un
program.
Fiecare categorie de date este caracterizat de atributele:
Nume;
Valoare;
Tip;
Clasa de memorare.
Numele unei date este un identificator, i, prin urmare urmare, trebuie s respecte regulile
specifice identificatorilor.

2. TIPURI DE DATE
Tipul unei date const ntr-o mulime de valori pentru care s-a adoptat un anumit mod de
reprezentare n memoria calculatorului i o mulime de operatori care pot fi aplicai acestor
valori. Tipul unei date determin lungimea zonei de memorie ocupat de acea dat. n general,
lungimea zonei de memorare este dependent de compilator
Tipurile de baz sunt:
char un singur octet (1 byte=16 bii), capabil s conin codul unui caracter din setul local
de caractere;
int numr ntreg, reflect n mod tipic mrimea natural din calculatorul utilizat;
float numr real, n virgul mobil, simpl precizie;
double numr real, n virgul mobil, dubl precizie.
n completare exist un numr de calificatori, care se pot aplica tipurilor de baz char, int,
float sau double: short, long, signed i unsigned. Astfel, se obin tipurile derivate de date.

REFERAT DE LABORATOR Nr.2

3. CONSTANTE
O constant este un literal (o form extern de reprezentare) numeric, caracter sau ir de
caractere. Numele i valoarea unei constante sunt identice. Valoarea unei constante nu poate
fi schimbat n timpul execuiei programului n care a fost utilizat. Tipul i valoarea ei sunt
determinate n mod automat, de ctre compilator, pe baza caracterelor care compun literalul.

Constante numerice ntregi (literali numerici, compui din cifre, fr punct zecimal).
Constante ntregi n baza 10 (Ex. 56, -98), baza 8 (Ex. 0476) sau baza 16 (Ex. 0x458,
0X4Abc).
Constante ntregi, de tipuri derivate: de tip long int (Ex. 897655L), de tip unsigned
int (Ex. 678u) sau unsigned long int (Ex. 8765UL).

Constante numerice reale


De tip double (Ex. 9.67, -56.78, 4.5e-3) sau float (Ex. -7.5f, 678.56F),
De tipuri derivate: de tip long double (Ex. -4.67L).

Constante caracter (Ex. '8', 'K', '\n').

Constante ir de caractere (Ex. "ab7N", "gj\nR5\n").

4. VARIABILE
Variabilele sunt nume simbolice utilizate pentru memorarea valorilor introduse pentru datele
de intrare sau a rezultatelor. Dac la o constant ne puteam referi folosind caracterele
componente, la o variabil ne vom referi prin numele ei.
Modul general de declarare a variabilelor este:
<tip_variabile>

<list_nume_variabile>;

Modul general de declarare a variabilelor i iniializarea acestora n momentul declarrii:


<tip_var>

<nume_var1>=<expr1>[,<nume_var2>=<expr2>, ];

5. OPERAII DE INTRARE/IEIRE
Limbajele C/C++ nu posed instruciuni de intrare/ieire, deci de citire/scriere (ca limbajul
PASCAL, de exemplu). n limbajul C aceste operaii se realizeaz cu ajutorul unor funcii (de
exemplu, printf i scanf), iar n limbajul C++ - prin suprancrcarea operatorilor (definirea
unor noi proprieti ale unor operatori existeni, fr ca proprietile anterioare s dispar),
mai precis a operatorilor >> i <<. Vom folosi n continuare abordarea limbajului C++, fiind, n
momentul de fa, mai simpl. n limbajul C++ sunt predefinite urmtoarele dispozitive logice
de intrare/ieire:
cin - console input - dispozitivul de intrare (tastatura);
cout - console output - dispozitivul de ieire (monitorul).
cin i cout sunt, de fapt, obiecte (predefinite). Transferul informaiei se realizeaz cu
operatorul >> (extractor) pentru intrare i operatorul << (insertor) pentru ieire.
2

REFERAT DE LABORATOR Nr.2

Utilizarea dispozitivelor de intrare/ieire cu operatorii corespunztori determin deschiderea


unui canal de comunicaie a datelor ctre dispozitivul respectiv. Dup operator se specific
informaiile care vor fi citite sau afiate.
Exemple:
cout << var;
cin >> var;

// afieaz valoarea variabilei var pe monitor


// citete valoarea variabilei var de la tasatatur

Sunt posibile operaii multiple, de tipul:


Exemple:
cout << var1 << var2 << var3;
cin >> var1 >> var2 >> var3;

n acest caz, se efectueaz succesiv, de la stnga la dreapta, scrierea, respectiv citirea valorilor
variabilelor var1, var2 i var3.
Utilizarea dispozitivelor si operatorilor de intrare/iesire in C++ impune includerea fisierului
header iostream.

6. PREPROCESORUL
n faza de compilare a fiierului surs este invocat nti preprocesorul. Acesta trateaz
directivele speciale - numite directive preprocesor - pe care le gsete n fiierul surs.
Directivele preprocesor sunt identificate prin simbolul #, care trebuie s fie primul caracter,
diferit de spaiu, dintr-o linie. Directivele preprocesor sunt utilizate la includerea fiierelor
header, la definirea numelor constantelor simbolice, la definirea macro-urilor, sau la
realizarea altor funcii (de exemplu, compilarea condiionat), aa cum ilustreaz exemplele
urmtoare:
Includerea fiierelor header n codul surs:
Exemplu:
#include <stdio.h>
Cnd procesorul ntlnete aceast linie, datorit simbolului #, o recunoate ca fiind o
directiv preprocesor, localizeaz fiierul header indicat (parantezele unghiulare < >
indic faptul c este vorba de un fiier header sistem).
Asignarea de nume simbolice constantelor:
Exemplu:
#define TRUE 1
#define FALSE 0
Tratarea acestor directive preprocesor are ca efect atribuirea valorii ntregi 1 numelui
(constantei simbolice) TRUE, i a valorii 0 numelui simbolic FALSE. Ca urmare, naintea
compilrii propriu-zise, n programul surs, apariiile numelor TRUE i FALSE vor fi
nlocuite cu valorile 1, respectiv 0.
Macrodefiniii:

REFERAT DE LABORATOR Nr.2

Directiva #define este folosit i n macrodefiniii. Macrodefiniiile permit folosirea


unor nume simbolice pentru expresiile indicate n directiv.
Exemplu:
#define NEGATIV(x) -(x)
ntre numele macrodefiniiei i paranteza stng ( NEGATIV() ) nu sunt permise
spaii albe. La ntalnirea n programul surs a macrodefiniiei NEGATIV, preprocesorul
subtituie argumentul acesteia cu expresia (negativarea argumentului). Macrodefiniia
din exemplu poate fi folosit n programul surs astfel: NEGATIV(a+b). Cnd
preprocesorul ntlnete numele expresiei, subtituie literalii din parantez, a+b, cu
argumentul din macrodefiniie, x, obinndu-se -(a+b).

1.

Scriei i urmrii execuia programului urmtor, program care ilustreaz utilizarea


directivelor preprocesor.
#include <iostream>
#define TRUE 1
#define FALSE 0
#define PI 3.14
#define NEGATIV(x) -(x)
#define SUMA(x,y) (x)+(y)
using namespace std;
int main()
{
int a,b,c;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
c = NEGATIV(a);
cout<<"\n-a="<<c<<endl;
//pentru trecerea la linie noua la afisare, in locul secventei escape
//'\n' se poate utiliza si constanta endl definita in headerul iostream
c = SUMA(a,b);
cout<<a<<" + "<<b<<" = "<<c<<endl;
cout<<"\nConstanta TRUE are valoarea "<<TRUE;
cout<<"\nConstanta FALSE are valoarea "<<FALSE;
cout<<"\nConstanta PI are valoarea "<<PI;
}

REFERAT DE LABORATOR Nr.2

2. Scriei i urmrii execuia programului urmtor, program care va afia spaiul de memorie
(n octei) alocat diferitelor tipuri de date. Determinarea spaiului de memorie alocat, se va
face cu ajutorul operatorului sizeof().
#include <iostream>
using namespace std;
int main()
{
cout<<" char: "<<sizeof(char)<<" octeti\n";
//se va afisa mai intai constanta sir de caractere (textul dintre
//ghilimele), apoi numarul de octeti pe care este stocat in memorie tipul
//char (valoare returneta de operatorul sizeof, operator care va primi ca
//parametru tipul char), apoi din nou o constanta sir de caractere
//(textul dintre ghilimele)
cout<<"
cout<<"
cout<<"
cout<<"
cout<<"
cout<<"

int: "<<sizeof(int)<<" octeti\n";


long int: "<<sizeof(long int)<<" octeti\n";
long long int: "<<sizeof(long long int)<<" octeti\n";
float: "<<sizeof(float)<<" octeti\n";
double: "<<sizeof(double)<<" octeti\n";
long double: "<<sizeof(long double)<<" octeti\n";

REFERAT DE LABORATOR Nr.2

n header-ul <limits.h> (pentru numere ntregi i caractere) respectiv <float.h> (pentru


numere reale) sunt definite constante simbolice (cum ar fi: INT_MAX, SHRT_MAX, LONG_MAX,
UINT_MAX, FLT_MIN, DBL_MIN, etc.) care au ca valoare limitele inferioar i superioar ale
intervalului de valori pentru tipurile de date enumerate. (de exemplu INT_MAX reprezint
valoarea ntregului maxim care se poate memora, etc. )

3. Scriei i urmrii execuia programului urmtor, program care va afia valorile minime i
maxime pe care le pot lua variabilele de anumite tipuri.
#include <iostream>
#include <limits.h>
#include <float.h>
using namespace std;
int main()
{
cout<<"Max
cout<<"Min
cout<<"Max
cout<<"Max
cout<<"Min
cout<<"Max
cout<<"Max
cout<<"Min
cout<<"Max
cout<<"Max
cout<<"Min
cout<<"Max
cout<<"Max
cout<<"Max
cout<<"Cel
cout<<"Cel
}

char: "<<CHAR_MAX<<'\n';
char: "<<CHAR_MIN<<'\n';
unsigned char: "<<UCHAR_MAX<<"\n\n";
short: "<<SHRT_MAX<<'\n';
short: "<<SHRT_MIN<<'\n';
unsigned short: "<<USHRT_MAX<<"\n\n";
int: "<<INT_MAX<<'\n';
int: "<<INT_MIN<<'\n';
unsigned int: "<<UINT_MAX<<"\n\n";
long: "<<LONG_MAX<<'\n';
long: "<<LONG_MIN<<'\n';
unsigned long: "<<ULONG_MAX<<"\n\n";
float: "<<FLT_MAX<<'\n';
double: "<<DBL_MAX<<"\n\n";
mai mic (apropiat de 0) float: "<<FLT_MIN<<'\n';
mai mic (apropiat de 0) double: "<<DBL_MIN<<'\n';

REFERAT DE LABORATOR Nr.2

O constant caracter are ca valoare codul ASCII (American Standard Code for Information
Intechange) al caracterului pe care l reprezint. Acest set de caractere are urmtoarele
proprieti:

Fiecrui caracter i corespunde o valoare ntreag distinct (ordinal);


Valorile ordinale ale literelor mari sunt ordonate i consecutive ('A' are codul ASCII 65, 'B'
- codul 66, 'C' - codul 67, etc.);
Valorile ordinale ale literelor mici sunt ordonate i consecutive ('a' are codul ASCII 97, 'b' codul 98, 'c' - codul 99, etc.);
Valorile ordinale ale cifrelor sunt ordonate i consecutive ('0' are codul ASCII 48, '1' - codul
49, '2' - codul 50, etc.).

4. Scriei i urmrii execuia programului urmtor, program care va ilustra codurile ASCII
asociate caracterelor mari i mici, cifrelor i unei secvene escape (caracterul linie nou).
#include <iostream>
using namespace std;
int main()
{
cout<<"Caracterul "<<'a'<<" are codul ascii: "<<(int)'a'<<'\n';
//Se afiseaza mai intai constanta sir de caractere (textul dintre
//ghilimele), apoi constanta caracter dintre apostroafe, din nou o
//constanta sir de caractere, codul ascii al caracterului dintre
//apostroafe (fortand tipul acestuia la int, precedand caracterul de noul
//tip inclus intre paranteze), si caracterul linie noua (\n)
cout<<"Caracterul "<<'b'<<" are codul ascii: "<<(int)'b'<<'\n';
cout<<" ....\n";
cout<<"Caracterul "<<'z'<<" are codul ascii: "<<(int)'z'<<"\n\n";
cout<<"Caracterul "<<'A'<<" are codul ascii: "<<(int)'A'<<'\n';
cout<<"Caracterul "<<'B'<<" are codul ascii: "<<(int)'B'<<'\n';
cout<<" ....\n";
cout<<"Caracterul "<<'Z'<<" are codul ascii: "<<(int)'Z'<<"\n\n";
cout<<"Caracterul "<<'0'<<" are codul ascii: "<<(int)'0'<<'\n';
cout<<"Caracterul "<<'1'<<" are codul ascii: "<<(int)'1'<<'\n';
cout<<" ....\n";
cout<<"Caracterul "<<'9'<<" are codul ascii: "<<(int)'9'<<"\n\n";
cout<<"Caracterul linie noua:"<<'\n'<<" are codul ascii: ";
cout<<(int)'\n'<<"\n\n";
}

REFERAT DE LABORATOR Nr.2

5. S se scrie un program care rezolv ecuaia de gradul 1, de forma ax+b=0. Este prezentat
algoritmul att n schem logic, ct i n pseudocod.
START

CITESTE a, b
DA

a=0?

NU

Solutie <- -b/a


AFISARE eroare
AFISARE Solutie

INCEPUT
CITESTE a, b
DACA a = 0
ATUNCI AFISEAZA eroare
ALTFEL
INCEPUT
SOLUTIE <- -b/a
AFISEAZA solutie
SFARSIT
SFARSIT

STOP
#include <iostream>
using namespace std;
int main()
{
float a,b,x;
cout<<"Ecuatie de gradul I de forma ax+b=0\n";
cout<<"a=";
cin>>a;
if (a==0)
cout<<"Caz imposibil!!!";
else
{
cout<<"b=";
cin>>b;
x = -b/a;
cout<<"x="<<x;
}
}

REFERAT DE LABORATOR Nr.2

PROBLEME PROPUSE SPRE REZOLVARE

6. S se scrie un program care rezolv ecuaia de gradul II, de forma ax2+bx+c=0. Coeficienii
a, b i c se citesc de la tastatur.

7. S se scrie un program care calculeaz aria i circumferina cercului. Raza se citete de la


tastatur.

8. S se scrie un program care calculeaz volumul, suprafaa lateral i aria suprafeei totale
ale unui cilindru. Raza i nlimea se citesc de la tastatur.

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