Documente noi - cercetari, esee, comentariu, compunere, document
Documente categorii

Tipuri de date in Visual Basic

Tipuri de date in Visual Basic


Asa cum am mentionat deja, variabilele sint utilizate pentru a memora valori. Variabilele au un nume si un tip de date. Tipul de date al unei variabile determina modul de reprezentare in memorie al valorilor acestei variabile. Toate variabilele au un tip de date care determina ce fel de valori pot fi memorate. Daca nu se specifica un tip de date, variabila are implicit tipul Variant. Tipul de date variant poate reprezenta tipuri de date diferite in situatii diferite. Visual Basic efectueaza automat toate conversiile necesare.

Tipurile de date se utilizeaza si in cazul altor obiecte, in afara de variabile. Atunci cind se asigneaza o valoare unei proprietati, acea valoare are un tip de date. Argumentele functiilor au, de asemenea, un tip de date. De fapt, orice implica date implica, de asemenea, si tipuri de date.

Tabelul urmator prezinta tipurile de date, intervalul de valori si modul de memorare al acestora:


Tip de date

Mod de memorare

Domeniul de valori

Byte

1 octet

0 la 255

Boolean

2 octeti

True sau False

Integer

2 octeti

-32,768 la 32,767

Long

4 octeti

-2,147,483,648 la 2,147,483,647

Single

4 octeti

-3.402823E38 la -1.401298E-45 pentru valori negative;

1.401298E-45 la 3.402823E38 pentru valori pozitive

Double

8 octeti

-1.79769313486232E308 la -4.94065645841247E-324 pentru valori negative;

4.94065645841247E-324 la 1.79769313486232E308 pentru valori pozitive

Currency

8 octeti

-922.337,203,685,477.5808 la 922,337,203,685,477.5807

Decimal

14 octeti

+/-79,228,162,514,264,337,593,543,950,335 fara punct zecimal;

+/- 7.9228162514264337593543950335 cu 28 de pozitii la dreapta punctului zecimal;

cel mai mic numar diferit de zero este +/- 0.0000000000000000000000000001

Date

8 octeti

1 ianuarie 100 la 31 decembrie 9999

Object

4 octeti

Referinta la un obiect

String ( lungime varaibila )

10 octeti+lungimea sirului

0 pina la aproximativ 2 miliarde

String ( lungime fixa )

Lungimea sirului

1 pina la 65,400

Variant ( cu numere )

16 octeti

Orice valoare numerica din domeniul Double

Variant ( cu caractere )

22 octeti+lungimea sirului

Acelasi domeniu ca si pentru tipul String de lungime variabila

Definit de utilizator ( cu Type )

Numar cerut de elemente

Domeniul fiecarui element este acelasi cu domeniul tipului de date la care apartine



Tipul de date Byte


Variabilele de tip Byte se memoreaza ca numere fara semn, pe 1 octet si au valori cuprinse intre 0 si 255.


Tipul de date Boolean


Variabilele de tip Boolean sint memorate ca numere pe 2 octeti, dar pot lua numai doua valori: True si False. Variabilele de tip boolean se afiseaza ca True sau False, cind se utilizeaza comanda Print sau #True#, respectiv #False# cind se utilizeaza comanda Write #. Trebuie utilizate cuvintele cheie True si False pentru a asigna una dintre aceste valori variabilelor booleene.

Atunci cind se face conversia altor valori numerice la valori booleene, 0 devine False si orice valoare nenula devine True. Atunci cind valorile booleene se convertesc la alte tipuri de date, False devine 0, iar True devine -1.


Tipul de date Integer


Variabilele de tip Integer sint memorate pe 2 octeti si pot lua valori cuprinse intre -32768 si 32767. Caracterul utilizat pentru declararea acestui tip de date este semnul procent ( % ). Variabilele de tip Integer se pot utiliza si pentru a reprezenta valorile enumerate. O valoare enumerata poate contine un set finit de numere intregi unice, fiecare avind o semnificatie speciala in contextul in care se utilizeaza. Valorile enumerate furnizeaza un mod convenabil de selectie dintr-un numar cunoscut de alegeri. Este bine sa se defineasca constante pentru fiecare valoare enumerata cu ajutorul comenzii Const.


Tipul de date Long


Variabilele de tip Long ( Long Integer ) se memoreaza ca numere cu semn pe 4 octeti si pot lua valori cuprinse intre -2,147,483,648 si 2,147,483,647. Caracterul utilizat pentru declaratia acestui tip de date este ampersand ( & ).


Tipul de date Single


Variabilele de tip Single ( numere reale in simpla precizie ) se memoreaza ca numere reale pe 4 octeti si pot lua valori cuprinse intre  -3.402823E38 si -1.401298E-45 pentru valorile negative si 1.401298E-45 si 3.402823E38 pentru valori pozitive. Caracterul utilizat pentru declaratia acestui tip de date este semnul exclamarii ( ! ).


Tipul de date Double


Variabilele de tip Double ( numere reale in dubla precizie ) se memoreaza ca numere reale pe 8 octeti si pot lua valori cuprinse intre -1.79769313486232E308 si 4.94065645841247E-324 pentru valorile negative si 4.94065645841247E-324 si 1.79769313486232E308 pentru valori pozitive. Caracterul utilizat pentru declaratia acestui tip de date este  # .


Tipul de date Currency


Variabilele de tip Currency se memoreaza ca numere in virgula fixa cu 15 cifre la stinga punctului zecimal si 4 cifre la dreapta punctului zecimal, pe 8 octeti. Valorile de acest tip pot lua valori cuprinse intre -922,337,203,685,477.5808 si 922,337,203,685,477.508. Caracterul utilizat pentru declaratia acestui tip de date este semnul at ( @ ). Acest tip de date este util in calculele financiare unde acuratetea este importanta.


Tipul de date Decimal


Variabilele de tip Decimal se memoreaza pe 12 octeti ca intregi fara semn scalati cu o putere variabila a lui 10. Acest factor de scalare specifica numarul de cifre de la dreapta punctului zecimal si ia valori intre 0 si 28. Cu scala 0 ( fara cifre zecimale ) cea mai mare valoare posibila este +/-79,228,162,514,264,337,593,543,950,335. In cazul a 28 de cifre zecimale cea mai mare valoare este +/- 7.9228162514264337593543950335, iar cea mai mica valoare diferita de zero este +/-0.0000000000000000000000000001.


Tipul de date Date


Variabilele de tip Date sint memorate pe 8 octeti ca numere in virgula flotanta si reprezinta date din intervalul 1 ianuarie 100 si 31 decembrie 9999 si ora in intervalul 0:00:00 - 23:59:59. Literalii de tip date  trebuie inclusi intre #, de exemplu #January 1, 1993#.

Atunci cind valori de tip numeric sint convertite la tipul Date, valorile de la stinga punctului zecimal reprezinta data, iar valorile de la dreapta punctului zecimal reprezinta ora. Numerele negative reprezinta date de dinainte de 30 decembrie 1899.


Tipul de date Object


Variabilele de tip Object se memoreaza pe 4 octeti ca adrese care refera obiecte. Cu ajutorul comenzii Set, unei variabile de tip Object i se poate asigna referinta la orice obiect.


Tipul de date String


Exista doua tipuri de siruri : cu lungime variabila si cu lungime fixa.

Un sir de lungime variabila poate contine pina la aproximativ 2 miliarde ( 2^31) caractere.

Un sir de lungime fixa poate contine de la 1 pina la aproximativ 64K (2^16) caractere.

Codurile pentru caracterele de tip String sint de la 0 la 255. Primele 128 de caractere ( 0 la 127) corespund literelor si simbolurilor de pe o tastatura standard (U.S.). Aceste primele 128 de caractere sint aceleasi ca cele din setul ASCII. Urmatoarele 128 de caractere ( 128 la 255 ) reprezinta caractere speciale. Caracterul utilizat pentru declaratia acestui tip de date este semnul dolar ( $ ).


Tipul de date definit de utilizator


Utilizatorul poate sa defineasca un tip de date utilizator la nivel de modul cu ajutorul urmatoarei sintaxe :


[ Private | Public ] Type numevar

numeelement [ ( [ indici ] )] As tip

[numeelement [ ( [ indici ] )] As tip ]

..

End Type


Sintaxa comenzii Type are urmatoarele parti :



Parte

Descriere

Public

Este optional si se utilizeaza pentru a declara tipuri de date  care sint accesibile tuturor procedurilor din toate modulele tuturor proiectelor

Private

Este optional si se utilizeaza pentru a declara tipuri de date  care sint accesibile numai modulului in care se face declaratia

Numevar

Este obligatoriu si reprezinta numele tipului de date definit de utilizator.Trebuie sa respecte aceleasi reguli ca si numele variabilelor

Numeelement

Este obligatoriu si reprezinta numele unui element al tipului de date definit de utilizator. Trebuie sa respecte aceleasi reguli ca si numele variabilelor, cu exceptia faptului ca se pot folosi cuvinte cheie.

Indici

Este optional si reprezinta dimensiunile unui tablou. La declararea unui tablou ale carui dimensiuni se schimba trebuie utilizate numai parantezele.  Pentru indici se utilizeaza urmatoarea sintaxa :

[ j To ] s [, [j To s ].

Daca j nu este precizat , atunci el este dat de comanda Option Base. Daca comanda Option Base nu este prezenta, atunci j este zero.

tip

Este obligatoriu si reprezinta tipul de date al elementului.Poate fi byte, boolean, integer, long, currency, single, double, decimal, date, string, object, variant, sau un alt tip de date definit de utilizator.


Comanda Type poate fi utilizata numai la nivel de modul. Dupa declararea tipului de date cu comanda Type, utilizatorul poate declara variabile de acest tip oriunde in cadrul scopului declaratiei de tip, cu ajutorul cuvintelor rezervate Dim, Private, Public, ReDim sau Static.

In modulele standard, tipurile de date definite de utilizator sint implicit publice. Acest lucru poate fi schimbat prin utilizarea cuvintului cheie Private. In modulele clasa,  tipurile de date definite de utilizator sint numai private si acest lucru nu poate fi schimbat cu ajutorul cuvintului cheie Public.

Tipurile de date definite de utilizator se folosesc de obicei cind se lucreaza cu inregistrari care constau dintr-un numar de elemente de tipuri diferite.

Exemplu :


Type AngajatRec          ' Creaza un tip de date definit de utilizator

Marca As Integer ' Se definesc elementele tipului de date

Nume As String * 20

Adresa As String * 30

Tele As Long

DataAng As Date

End Type


Sub CreateRec()

Dim Rec As AngajatRec ' Declarare variabila.


' Asignarile facute variabilei Rec trebuie sa apara intr-o procedura

Rec.Marca= 12003 ' Se asigneaza o valoare unui element.

End Sub


Tipul de date Variant


Tipul de date Variant este tipul de date al tuturor variabilelor care nu sint declarate in mod explicit de un anume tip cu una dintre comenzile Dim, Private, Public sau Static. Este un tip de date special care poate contine orice fel de date, cu exceptia sirurilor de lungime fixa si a tipurilor de date definite de utilizator. Poate contine, de asemenea, valorile speciale Empty, Error, Nothing si Null. Datele de tip numeric sint mentinute intr-un variant in formatul lor original. De exemplu, daca se asigneaza unui variant o valoare de tip Integer, viitoarele operatii vor trata varintul ca pe intreg.  Daca se executa o operatie aritmetica asupra unui variant care contine o valoare de tip byte, integer, long sau single, iar rezultatul depaseste domeniul tipului de date respectiv, rezultatul este convertit in cadrul variantului la urmatorul tip de date mai mare. O valoare de tip byte este convertita la integer, una de tip integer la long, iar una de tip long sau single la double. Atunci cind un variant contine o valoare de tip currency, decimal sau double care depaseste domeniul respectiv, apare eroare.

Tipul de date variant se utilizeaza in locul oricarui alt tip de date si permite o modalitate mai flexibila de lucru cu datele.

In urmatorul exemplu :


Dim Mvar as Variant

Mvar=98052


Variabila Mvar contine o reprezentare numerica, adica valoarea 98052.


Valoarea Empty reprezinta o variabila de tip variant care nu a fost initializata, adica nu i s-a asignat o valoare initiala. Un variant care contine Empty este 0 daca este utilizat intr-un context numeric si un sir de lungime zero ("") daca este utilizat intr-un context sir.

Valoarea Null indica faptul ca variabila de tip variant nu contine date valide in mod intentionat.

Error este o valoare speciala utilizata pentru a indica ca intr-o procedura a aparut o conditie de eroare.