tipuri de date in c++

16
Universitatea Valahia din Târgovişte Facultatea de Inginerie Electrică Specializarea: Automatică şi Informatică aplicată Anul I PROIECT la Programarea Calculatoarelor şi Limbaje de Programare Student: Mihai Danut BOBE Coordonator: Asist. drd. ing. Ana-Maria SUDUC

Upload: bobe-danut

Post on 21-Dec-2015

7 views

Category:

Documents


1 download

DESCRIPTION

Tipuri de date in c++

TRANSCRIPT

Page 1: Tipuri de date in c++

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 –

Page 2: Tipuri de date in c++

Mihai-Danut BOBE Tipuri de date in C++

Tema:

Tipuri de date in C++

2

Page 3: Tipuri de date in c++

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

Page 4: Tipuri de date in c++

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

Page 5: Tipuri de date in c++

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

Page 6: Tipuri de date in c++

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

Page 7: Tipuri de date in c++

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

Page 8: Tipuri de date in c++

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

Page 9: Tipuri de date in c++

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

Page 10: Tipuri de date in c++

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

Page 11: Tipuri de date in c++

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

Page 12: Tipuri de date in c++

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

Page 13: Tipuri de date in c++

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