Andmete organisatsioon, liigid ja tüübid
Organisatsiooni järgi võib andmed jagada
- skalaarandmeteks,
- struktuurandmeteks ja
- objektideks.
Skalaarandmed esindavad üksikuid suurusi. Programmides kasutatakse neid konstantidena ja lihtmuutjatena, millel saab igal ajahetkel olla ainult üks väärtus.
Struktuurandmed ehk struktuurmuutujad on omavahel seotud väärtuste kogumikud. Andmekogumik tähistatakse programmis ühe nimega, viitamisviis üksikutele elementidele sõltub andmekogumiku liigist. Igale andmekogumiku elemendile eraldatakse koht mälus tema väärtuste salvestamiseks ning nende kasutamine on analoogiline skalaarmuutujate kasutamisega. Neile saab omistada väärtusi ning neid võib kasutada avaldistest väärtuste leidmisel. VBAs kasutatakse järgmisi andmekogumikke: massiive, kirjeid ja kirjemassiive.
Objekte käsitletakse sageli omaette olemitena, kuid teatud üldistusena võib neid vaadelda kui eriliiki struktureeritud andmeid. Näiteks graafikaobjekte nimetatakse sageli graafikaandmeteks. Siin vaadeldakse objekte eraldi.
Andmete põhiliikideks VBAs on stringid ehk tekstid, arvud, ajaväärtused ja tõeväärtused. Iga andmeliigi jaoks on määratletud võimalikud väärtused ja nende diapasoon, lubatavad tehted ja operatsioonid.
Arvutisüsteemides on iga andmeliigi jaoks ette nähtud kindel esitusviis ehk vorming, mida kasutatakse väärtuste salvestamiseks mälus ja tehete täitmisel protsessoris. Vorminguga on määratletud väärtuste salvestamiseks eraldatavate väljade struktuur ja pikkused. Ühe andmeliigi jaoks võib olla kasutusel mitu erinevat vormingut ehk tüüpi.
Stringi väärtuseks võib olla suvaline märgijada, mida saab arvutis esitada. Märkide valik ja nende arvutisisene esitus põhineb standarditega fikseeritud kodeerimissüsteemidel. Kasutatakse ASCII-või Unicode kooditabelite süsteemi. ASCII süsteemis vastab igale märgile kindel 8-bitine arv (kood), mis esitatakse ühe baidi abil, Unicode’s – 16 bitine. Stringmuutujate väärtuste salvestamiseks kasutatakse tavaliselt muutuva pikkusega välju: välja pikkus vastab märkide arvule muutuja jooksvas väärtuses. Stringi pikkusele (märkide arvule stringis) VBAs piiranguid praktiliselt ei ole.
Arvude salvestamiseks kasutatakse erinevaid vorminguid. Nad võivad olla esitatud üldises tekstivormingus (ASCII-koodis), kus igale numbrile eraldatakse üks bait. Kuna aga erinevate märkide hulk on arvude esituses üsna väike (numbrid, arvu märk ja võimalik murdosa eraldaja), siis on nende salvestamiseks ja töötlemiseks ette nähtud erivormingud, mis on ökonoomsemad üldisest tekstivormingust. Täisarvude ja reaalarvude jaoks kasutatakse fikseeritud pikkusega välju ning erinevaid esitusviise.
Täisarvud teisendatakse arvutis kahendsüsteemi ning esitatakse kahendnumbrite (bittide) jadana, ühte bitti kasutatakse arvu märgi esitamiseks. Arvu maksimaalne väärtus sõltub temale eraldatud välja pikkusest max = 2^(n-1) - 1, kus n on välja pikkus bittides. Kasutatakse kahe- ja neljabaidilisi välju (16 või 32 bitti), millele vastavad arvude maksimaalsed väärtused 2^15 ‑ 1 = 32 767 ja 2^31 ‑ 1 = 2 147 483 647.
Reaalarvud esitatakse mantissi ja eksponendi abil: arv = m•p^n, kus m on mantiss, n - eksponent ja p - arvusüsteemi alus (2, 10 või 16). Mantiss esitab arvu numbreid, eksponent koma mõttelist asukohta. Kasutatakse nelja- ja kaheksabaidilisi välju, millele vastavad esitustäpsused 6‑7 (ühekordne täpsus) ja 15‑16 (topelttäpsus) numbrikohta ning maksimaalsed väärtused umbes 10^37 ja 10^307.
Ajaväärtus koosneb üldjuhul kuupäevast ja kellaajast. Need salvestatakse ühe reaalarvuna. Arvu täisosa näitab päevade arvu alates 01.01.1900, murdosa kellaaega päeva osades alates keskööst. VBAs saab kasutada ajaväärtusi alates 01.01.100 kuni 31.12.9999.
Tõeväärtusi on kaks - tõene (True) ja väär (False). VBAs esitatakse nad täisarvudena: väärtusele väär vastab 0, väärtusele tõene vastab tavaliselt -1, kuid sellena käsitletakse ka suvalist nullist erinevat väärtust.
Programmi koostamisel saab määrata lihtmuutujate ja struktuurmuutujate elementide väärtuste jaoks sobivad esitusviisid ehk tüübid, kasutades spetsiaalseid deklareerimislauseid, millest peamine on Dim-lause. Järgnev Dim-lause deklareerib väärtuste tüübid nelja muutuja jaoks
Dim n As Integer, a As Single, b As Double, nimi As String
Lause määrab, et muutuja n väärtusteks võivad olla täisarvud, a väärtusteks ühekordse täpsusega reaalarvud, d väärtusteks topelttäpsusega reaalarvud ning muutuja nimi väärtusteks stringid. Arvmuutujate jaoks tulenevad siit ka väljade pikkused: n - 2 baiti, a - 4 baiti ning b - 8 baiti. Stringuutuja nimi välja pikkus on muutuv ning sõltub talle omistatavatest väärtustest.
Andmetüüp määratletakse deklaratsioonis võtmesõna abil. Igale tüübile vastab kindel väärtuste esitusviis ja diapasoon ning välja pikkus. Mitme andmetüübi määramiseks võib kasutada ka tüübitunnuseid - kindla tähendusega sümboleid, mis lisatakse muutuja nime lõppu. Näiteks on järgnev lause samaväärne eelmisega
Dim n%, a!, b#, nimi$
Andmete tüübid VBAs
Tüübi
nimetus |
Tüübi
tähis |
Väärtuse tüüp |
Välja pikkus (B) |
Väärtuste diapasoon |
Integer |
% |
Täisarv |
2 |
-32 768 ... 32 767 |
Long |
& |
Pikk täisarv |
4 |
-2 147 483 648 ... 2 147 483 647 |
Single |
! |
Ühekordse täp- susega reaalarv |
4 |
suurim väärtus umbes 10^37
täpsus 6...7 numbrikohta |
Double |
# |
Topelttäpsusega reaalarv |
8 |
suurim väärtus umbes 10^307
täpsus 15...16 numbrikohta |
String |
$ |
String (tekst) |
märkide arv + 10 B |
0 kuni umbes 2 mln märki |
Date |
|
Kuupäev |
8 |
01.01.100 ... 32.12.9999 |
Boolean |
|
Tõeväärtus |
2 |
True või False |
Variant
arvuga |
|
Suvaline arvu
tüüp |
16 |
suurim väärtus umbes 10^307
täpsus 15...16 numbrikohta |
Variant
stringiga |
|
String (tekst) |
märkide arv + 22 B |
0 kuni umbes 2 mln märki |
Objeki muutujad
Range
Shape ... |
|
Viit objektile. Määratletakse Set‑lausega |
4 |
|
Vaikimisi, s.t kui muutuja ei ole deklareeritud, võetakse tema tüübiks abstraktne ehk universaalne andmetüüp Variant. Taolisele muutujatele võib omistada suvalist tüüpi väärtusi. Väljade pikkused võetakse nende jaoks varuga ning väärtuse esitusviisi valib interpretaator sõltuvalt omistatava väärtuse tüübist. Näiteks arvu salvestamiseks, sõltumata tema tüübist ja suurusest, eraldatakse alati väli pikkusega 16 baiti. Variant-tüübi kasutamine arvandmete jaoks on üldiselt väga ebaökonoomne nii mäluruumi kasutamise kui ka programmi töökiiruse poolest. Selle tüübi korral on vajalik mälumaht keskmiselt 3...5 korda suurem ning arvutuste kiirus 2...3 väiksem kui spetsiaalselt arvude jaoks ettenähtud tüüpide kasutamisel.
Objektimuutujate jaoks määratakse tüüp klassi nime abil: Range, Shape, Worksheet jne.
|