Upload
bobe-danut
View
8
Download
1
Embed Size (px)
DESCRIPTION
Tipuri de date in c++
Citation preview
Universitatea Valahia din Târgovişte
Facultatea de Inginerie Electrică
Specializarea: Automatică şi Informatică aplicată
Anul I
PROIECTla
Programarea Calculatoarelor şi Limbaje de Programare
Student: Mihai Danut BOBE
Coordonator: Asist. drd. ing. Ana-Maria SUDUC
- 2010 –
Mihai-Danut BOBE Tipuri de date in C++
Tema:
Tipuri de date in C++
2
Mihai-Danut BOBE Tipuri de date in C++
Cuprins
1. Introducere.................................................................................................................................................4
2. Tipuri de date in C++.................................................................................................................................4
I. Tipurile de date simple.........................................................................................................................................4
a) Tipul întreg permite reprezentarea numerelor întregi:.............................................................................4
b) Tipul real reprezintă aproximaţii ale numerelor reale:.............................................................................4
c) Tipul caracter..........................................................................................................................................................4
d) Tipul logic – orice valoare de tip întreg diferită de zero are semnificaţia de valoare logică adevărat; zero semnifică valoarea logică fals................................................................................................................5
e) Tipul Pointer.............................................................................................................................................5
f) Tipul enumerat.........................................................................................................................................5
II. Tipurile de date structurate sunt tablourile de date (vectori, şiruri) şi fişierele text................................5
1. Tablouri..................................................................................................................................................5
2. Structuri/Uniuni.....................................................................................................................................5
3. Fisiere.....................................................................................................................................................5
1) Tablouri...............................................................................................................................................................7
2) Structuri..............................................................................................................................................................8
3) Fisiere..................................................................................................................................................................9
III. Cod program....................................................................................................................................................11
III . [Bibliografie].........................................................................................................................................13
3
Mihai-Danut BOBE Tipuri de date in C++
1. Introducere
Prin dată se înţelege orice entitate asupra căreia calculatorul poate opera.
Un tip de dată reprezintă o mulţime de valori pe care le poate lua o dată şi operaţiile care se pot efectua
asupra ei.
Prin tip de dată se înţelege:
o mulţime de valori
o regulă de codificare a acestora
o mulţime de operaţii definite pe mulţimea datelor
2. Tipuri de date in C++
Tipurile de date pot fi: simple (elementare) şi structurate (compuse).
I. Tipurile de date simple
a) Tipul întreg permite reprezentarea numerelor întregi:
- int (ocupa 16 biţi)
- long (ocupa 32 de biţi)
- unsigned int sau unsigned long (valorile datelor sunt fără semn, adică pozitive)
b) Tipul real reprezintă aproximaţii ale numerelor reale:
- float (ocupa 32 biţi)
- double (ocupa 64 biţi)
- long double (ocupa 80 biţi)
4
Mihai-Danut BOBE Tipuri de date in C++
c) Tipul caracter - este format din caracterele codului ASCII (ce conţine 256 caractere). Datele de tip
caracter pot fi scrise prin încadrarea lor între apostrofuri sau #codul_ASCII (imprimabile) sau
^codul_ASCII (neimprimabile):
- char (ocupă 8 biţi)
d) Tipul logic – orice valoare de tip întreg diferită de zero are semnificaţia de valoare logică adevărat; zero
semnifică valoarea logică fals.
e) Tipul Pointer
f) Tipul enumerat
II. Tipurile de date structurate sunt tablourile de date (vectori, şiruri) şi fişierele text.
1. Tablouri
2. Structuri/Uniuni
3. Fisiere
a) Tipul intreg
Subtip Interval de valori Reprezentare (biţi)
unsigned char 0 .. 255 8
char -128 .. 127 8
unsigned int 0 .. 65535 16
short int -32768 .. 32767 16
int -32768 .. 32767 32
unsigned long 0 .. 4294967295 32
5
Mihai-Danut BOBE Tipuri de date in C++
long int -2147483648 .. 2147483647 32
unsigned - se referă la date fără semn şi poate fi utilizat în combinaţie cu celelalte tipuri de date
EX: unsigned int - întreg fără semn
unsigned char - caracter fără semn
unsigned float - real fără semn etc.
signed - se poate folosi pentru a pune în evidenţă semnul
EX: signed int - întreg cu semn, este la fel ca şi cum aş scrie numai int
I. b) Tipul real
Subtip Interval de valori Reprezentare (biţi)
float 3.4x10-38..3.4x1038 32
double 1.7x10-308..1.7x10308 64
long double 3.4x10-4932..1.1x104932 80
I. c) Tipul caracter – este un tip de date intreg ,ce suporta un singur modificator-UNSIGNED
unsigned char a,b;
I. e) Tipul Pointer
Un pointer este o variabilă care are ca valoare o adresă din memoria internă a calculatorului. Acestă adresă
este localizarea în memorie unei alte variabile.
int *p; r=&p;
float *q;
6
Mihai-Danut BOBE Tipuri de date in C++
p este un pointer către un număr întreg
q este un pointer către un număr real
r este continutul adresei p adica un numar intreg
I. f) Tipul enumerat
O variabilă de tip enumerat este definită prin enumerarea ordonată între acolade a identificatorilor
care reprezintă constantele de acel tip.
Sintaxa generală :
enum identificator_de_tip {lista_de_constante_de_tip}
Exemple :
enum culoare {alb, rosu, verde, albastru};
enum zi {luni, marti, miercuri,…} ;
enum monede {dolar, euro, lira, yen};
Oricare dintre constantele dintre acolade poate fi initializată la enumerare.
Exemplu :
enum luna {ianuarie, februarie, iunie=6, iulie}
1) Tablouri
Tabloul este o colecţie finită de variabile de acelaşi tip. Componentele unui tablou sunt memorate
în locaţii contigue. Accesul la una dintre componente se face pe baza unei variabile speciale numite
indice. Cel mai mic indice corespunde primului element al tabloului, iar cel mai mare – ultimului element.
În C++ tipul indicelui este int, iar valorile acestuia aparţin mulţimii numerelor naturale N={0,1,2…n…}.
Tipul componentelor unui vector se numeşte tip de bază. Numărul de componente ale vectorului este dat
de numărul de valori ce le poate lua indicele. De reţinut că valorile indicelui identifică în mod unic
7
Mihai-Danut BOBE Tipuri de date in C++
componentele tabloului. Aşadar, putem privi tabloul ca o funcţie f : M B unde M este mulţimea
valorilor tipului indicelui şi B este mulţimea valorilor tipului de bază.
Cantitatea de memorie necesară pentru reţinerea unei variabile de tip tablou este direct proporţională cu
tipul componentelor şi cu mărimea sa.
Altfel spus:
Total_octeţi = sizeof (tip_de_bază)x mărimea tabloului.
În funcţie de modul în care sunt structurate componentele unui tablou, acesta poate fi:
a) unidimensional: când componentele sunt structurate după valorile luate de un singur indice.
b) multidimensional: când componentele sunt structurate după valorile mai multor indici.
2) Structuri.
O structură este un ansamblu de variabile reunite sub acelaşi nume. Structura este un tip de dată cu
număr fixat de componente de tip diferit.
Variabilele care alcătuiesc structura sunt denumite membrii ai structurii (aceste variabile mai sunt
cunoscute şi sub numele de câmpuri).
Sintaxa generală a acestui tip de dată este:
struct nume_structură
{[tip <nume_variabilă 1>, <nume_variabilă 2>, …]
----------------------------------------------------------
} [listă de variabile];
Observaţie:
Declaraţia unei structuri se încheie cu “ ; “ deoarece este considerată o singură instrucţiune.
8
Mihai-Danut BOBE Tipuri de date in C++
Informaţiile eterogene care conţin câmpurile sunt declarate prin variabile şi tipul acestora în corpul
structurii. În “lista de variabile” apar variabilele de tip structură folosite în program.
Exemple:
1) Următorul fragment de cod prezintă modul de a declara o structură care defineşte câmpurile ce conţin
numele şi adresa unei persoane. Cuvântul cheie struct indica compilatorului că urmează să fie declarată o
structură.
struct adresa
{char nume [30];
char strada [40];
char oraş [20];
char stat [3];
long int cod poştal;
} persoana;
S-a definit o variabilă “persoana” prin structura care o precede. Această variabilă va fi utilizată în
instrucţiunile programului.
3) Fisiere
Din punct de vedere al modului de intrare cunoaştem 2 categorii de fişiere text:
fişierele text standard (cin,cout,cerr,clog) nu sunt memorate pe suport extern (ME), ci corespund
dispozitivelor standard de intrare, ieşire, eroare, mesaj de eroare. Fişierele text sunt memorate pe suport
magnetic (ME), cum ar fi hardisk, dischetă, bandă magnetică etc. Din oricare categorie ar face parte, un
fişier text (standard sau special) se caracterizează prin următoarele:
Datele sunt memorate sub forma unei succesiuni de caractere; fiecare caracter este memorat prin utilizarea
codului ASCII. Exemple: dacă dorim să memorăm caracterul ’a’, fişierul text va reţine codul ASCII a
9
Mihai-Danut BOBE Tipuri de date in C++
caracterului ’a’;în cazul în care dorim să memorăm conţinutul unei variabile numerice de tip int care
reţine 123, fişierul text va reţine codurile a trei caractere: ’1’, ’2’, ’3’ şi nu cei doi octeţi necesari
reprezentării în cod complementar a numărului amintit. Un fişier text se termină întotdeauna cu caracterul
EOF. Acesta perimte ca la prelucrare să poată fi identificat sfârşitul fişierului. Dacă dorim să-l introducem
de la tastatură, se tastează CTRL+Z.
O variabilă specială , numită pointer, reţine întotdeauna poziţia unui octet al fişierului. Acesta este primul
care va fi prelucrat- citit sau scris. După cum vedeţi în figură, ne imaginăm pointerul ca o săgetuţă care
marchează octetul. In exemplu, acesta marchează al treile octet al şirului, adică cel de indice
pointer
10
M a r i n ……….. \n 1 H …………………… EOF
Mihai-Danut BOBE Tipuri de date in C++
III. Cod program Se citeste un sir de numere pana la intalnirea numarului 4.
Sa se realizeze un program in Visual C++ 2008 care afiseaza:
a) numerele;
b) suma lor;
c) media aritmetica a numerelor;
d) cate numere sunt mai mici ca 6;
e) suma numerelor divizibile cu 3;
f) media aritmetica a numerelor care sunt divizibile cu 3
sau care dau restul 2 la impartirea cu 4
#include<iostream>
#include<conio.h>
using namespace std;
int nr_citit, total_numere, suma_numere, numere_sub_6, suma_div_3,
i,j, numar[100];
float media_art;
void main(void) {
total_numere=0;
suma_numere=0;
numere_sub_6=0;
suma_div_3=0;
11
Mihai-Danut BOBE Tipuri de date in C++
media_art=0;
j=0;
do {
cout<<"intruduceti numarul : "; cin>>nr_citit;
numar[total_numere]=nr_citit;
suma_numere+=nr_citit;
if (nr_citit<6) numere_sub_6++;
if (!(nr_citit%3)) suma_div_3+=nr_citit;
if ((!(nr_citit%3)) || ((nr_citit%4)==2)) {media_art+=nr_citit;j++;}
total_numere++;
} while (nr_citit!=4);
cout<<"Numerele introduse sunt: ";
for(i=0;i<total_numere;i++) cout<<" "<<numar[i];
cout<<endl<<"Suma numerelor este: "<<suma_numere;
cout<<endl<<"Media Aritmetica a numerelor este: "<<suma_numere/total_numere;
cout<<endl<<"Exista "<<numere_sub_6<<" numere mai mici ca 6";
cout<<endl<<"Suma numerelor divizibile cu 3 este: "<<suma_div_3;
cout<<endl<<"MA a numerelor diviz cu 3 sau care dau rest 2 la impartirea cu 4 este : "<<media_art/j;
cout<<endl<<"Apasati o tasta....";
}
12
Mihai-Danut BOBE Tipuri de date in C++
III . [Bibliografie]
1. Vlad Hutaru, Tudor Sorin – Manual de Informatica clasa a XI- a , Editura L&S Soft
2. *** http://vicov.licee.edu.ro/docs/docs_elevi/Manual_C.pdf
3. Luminita Duta - Materialul de la curs
13