4.2. ELEMENTE ALE LIMBAJULUI DE PROGRAMARE VISUAL BASIC
Setul de caractere
Pentru a scrie instrucţiunile pe care calculatorul să le interpreteze şi să le execute în cadrul programului folosim cuvintele. Acestea sunt entităţi formate din caractere.
În cazul limbajului Visual Basic se pot folosi următoarele caractere:
- Literele mari şi mici ale alfabetului limbii române: A-Z, a-z;
-
Cifrele sistemului de numerotaţie zecimal:0-9;
-
Caractere speciale: + - / ^ () [] {}. , ; :_ ! # % & $ etc.;
-
Caracterele speciale perechi, care definesc operatori de comparare: <=, >=, = ,<>;
-
Separatorii: spaţiu, tab şi caracterul Enter.
Observaţie:
Visual Basic nu face diferenţa între literele mari şi mici folosite în cuvintele cheie sau în formarea identificatorilor.
Identificatori
Un identificator este numele dat de programator unui element dintr-un program, care poate fi o variabilă, o constantă, un tip definit de utilizator, o enumerare, o procedură, o funcţie, un obiect, o metodă, o proprietate, un control, o formă, un modul sau chiar proiectul însuşi. Un proiect Visual Basic poate să conţină maxim 32000 identificatori.
Un identificator trebuie să respecte următoarele reguli:
-
să înceapă cu o literă sau cu underscore;
-
să nu conţină anumite caractere cum ar fi: . %!$@;
-
dacă începe cu underscore, să fie urmat de un caracter alfabetic sau zecimal;
-
numele controalelor, modulelor, formelor şi claselor nu pot fi mai lungi de 1023 caractere;
-
numele fisierelor nu trebuie sa fie mai mari de 260 de caractere (inclusiv calea), iar calea separat trebuie sa aiba mai putin de 248 de caractere;
-
numele celorlalte tipuri de identificatori nu trebuie sa depășească 1023 caractere;
-
nu trebuie să existe identificatori identici;
-
nu pot fi identificatori cuvintele cheie (rezervate) ale limbajului, decât în cazuri excepție, când sunt declarate între paranteze pătrate (ex: Dim [dim] = 1 ‘s-a declarat variabila cu identificatorul [dim] și s-a inițializat cu valoarea 1). Cuvintele cheie sunt identificatori cu semnificaţie fixată, care nu pot fi folosiţi în alt context decât cel precizat de semantica limbajului. Exemple: Dim, Private, Public, Array , For , Next, If, Then, Else, End etc.
-
există o serie de identificatori standard, definiţi de Visual Basic. O redeclarare a lor de către programator va duce la nerecunoaşterea sensurilor iniţiale.
Pentru a face codul sursă al programului cât mai lizibil, identificatorii folosiţi ar trebui să sugereze rolul lor în aplicaţie. De aceea mulţi programatori folosesc prefixe în definirea identificatorilor care indică tipul de date referit şi scopul lor.
Comentarii , separatori, împărţirea liniei
Comentariile sunt şiruri de caractere precedate de caracterul apostrof (`) sau de cuvântul cheie REM şi servesc pentru a face textul programului mai lizibil, pentru a documenta programul.
Exemple:
REM Aici începe programul
Dim iVirsta as Integer ´ Vârsta sportivilor
Dim iGreutatea as Interger ´ Greutatea sportivilor în kilograme
Comentariile mai pot fi utilizate pentru a determina compilatorul să nu mai execute anumite instrucţiuni, mai ales în faza de testare a programului.
În general în Visual Basic se poate scrie o singură instrucţiune pe o linie. Totuşi, dacă se doreşte, se pot scrie mai multe instrucţiuni pe o singură linie despărţindu-le cu ajutorul separatorului de instrucţiuni şi declaraţii care este caracterul : (două puncte).
Exemplu:
Dim a as Integer : a=10
Pe de altă parte, pentru a spori lizibilitatea programelor, dacă o declaraţie sau o instrucţiune este prea mare, atunci ea se poate scrie pe mai multe linii. Aceasta se realizează folosind caracterul continuator de linie ( _)( un spaţiu urmat de underscore).
Observaţie:
Facem următoarele convenţii privind formatul comenzilor (instrucţiunilor) Visual Basic:
-
Cuvintele scrise îngroşat (Bold) sunt cuvinte cheie, care trebuie folosite ca atare, iar cele scrise cu caractere normale reprezintă cerinţe, deci elemente care se vor înlocui cu ceea ce se cere efectiv prin ele.
-
Cuvintele scrise între paranteze drepte [] semnifică ceva opţional, care poate fi scris sau poate lipsi.
-
Caracterul / între două cuvinte semnifică faptul că se poate folosi oricare dintre acele cuvinte în sintaxa comenzii.
4.3. TIPURI DE DATE
Tipul unei date defineşte mulţimea de valori pe care le poate lua o variabilă şi mulţimea de operaţii care pot fi efectuate cu elementele mulţimii respective. În funcţie de tipul de dată declarat pentru o anumită variabilă compilatorul alocă o zonă mai mare sau mai mică de memorie pentru reprezentarea ei.
Fiecare tip de dată permite o serie de operaţii.
Astfel:
- Pentru valorile unui tip întreg se pot face următoarele operaţii: adunarea(+); scăderea(-); înmulţirea(*); împărţirea întreagă (\); împărţirea reală(/); restul împărţirii întregi (mod); ridicarea la putere (^).
Sunt permise de asemenea operaţiile relaţionale: mai mic sau egal (<=); mai mic (<); egal (=); mai mare(>); mai mare sau egal (>=);Rezultatul unor astfel de operaţii este de tip boolean, având valorile logice True sau False.
- Pentru valorile unui tip real se pot face următoarele operaţii: adunarea (+); scăderea(-); înmulţirea(*); împărţirea(/); ridicarea la putere (^). Sunt permise şi operaţiile relaţionale prezentate la tipurile întregi.
- Pentru şirurile de caractere sunt permise operaţia de concatenarea (& sau +) şi operaţiile de comparaţie (<,<=,=,>=,>).
Prin concatenare două sau mai multe şiruri de caractere pot fi alipite formând un singur şir de caractere. Cu ajutorul operaţiilor de comparaţie se stabileşte poziţia alfabetică a şirurilor de caractere;
-
Pentru valorile de tip logic, boolean (True şi False) sunt permise următoarele operaţii logice: negarea logică (Not); şi logic (And); sau logic (Or); sau exclusiv logic (Xor); echivalenţa logică (simbolul ‘=’); implicaţia logică ((Not A) Or B);
-
Pentru tipul de dată de tip obiect este permisă o singură operaţie – cea de comparaţie (Is).
4.3.1. Constante
O constantă reprezintă o valoare fixă care nu se schimbă în timpul execuţiei programului sau de la o execuţie la alta, identificată printr-un nume (identificator). O constantă poate conţine numere, şiruri de caractere, date calendaristice, etc. Ea poate avea deci un anumit tip.
Adeseori în programele noastre pot să apară valori constante care se repetă de nenumărate ori. Pentru a spori lizibilitatea programului şi pentru a nu fi nevoiţi să facem numeroase modificări în cazul în care o valoare des întâlnită ar trebui modificată, vom folosi constantele. O definiţie de constantă introduce un identificator ca sinonim al unei valori constante
În Visual Basic există două tipuri de constante:
-
Intrinseci sau definite de sistem; Visual Basic pune la dispoziţie o serie întreagă de constante pentru culori, taste, figuri etc.
-
Simbolice sau definite de utilizator (se declară prin instrucţiunea Const). Putem defini deci propriile noastre constante în cadrul unui program cu ajutorul cuvântului cheie Const.
Formatul general al declaraţiei de constante este:
[Public|Private] Const NumeConstanta[As type] = expresie
unde: cuvintele Public sau Private definesc tipul constantei: Public, dacă poate fi referită în toate procedurile şi respectiv Private dacă este definită doar pentru procedura curentă.
Const : cuvânt cheie
NumeConstantă – numele atribuit ca identificator constantei respective
As type – defineşte tipul constantei
Expresie – defineşte valoarea sau expresia din evaluarea căreia rezultă valoarea constantei.
Observaţie:
Dacă se specifică direct valoarea constantei, atunci trebuie să reţinem următoarele:
-
o constantă de tip numeric sau logic se precizează prin valoarea ei scrisă ca atare;
-
o constantă de tip şir de caractere trebuie scrisă între delimitatorii “ “ (ghilimele);
-
o constantă de tip dată calendaristică se precizează între delimitatorii # #.
Exemple:
Const PI = 3.14159265358979
Const Nr_zile_lucratoare = 22
Const Zi_de_nastere = #2/4/1981#
Const Nume_aplicatie = ˝Salarii˝
4.3.2. Variabile Visual Basic
O variabilă reprezintă o locaţie de memorie internă care serveşte pentru stocarea temporară a datelor şi care se identifică printr-un nume. O variabilă poate conţine orice tip de dată care poate fi modificat în timpul execuţiei programului.
Tipul variabilelor din Visual Basic sunt: VarianType, Byte, Boolean, String, Integer, Long, Single, Double, Currency, Date şi Object. Tipul implicit pentru orice variabilă este tipul Object (nedefinit).
În Visual Basic 6.0, tipul Variant era un tip special de date care putea conţine date numerice, şiruri de caractere şi date calendaristice, precum şi valorile speciale Null şi Empty. În Visual Basic 2010 tipul Variant este înlocuit de Object, valorile speciale fiind reprezentate prin VariantType.Null și VariantType.Empty.
Empty indică faptul că o variabilă nu a fost inţializată şi este egală cu 0 când se referă la valori numerice sau are lungime nulă când se referă la şiruri de caractere.
Null indică faptul că o variabilă nu conţine nici o dată validă în mod deliberat.
Definirea unei variabile Visual Basic se poate face în două moduri:
-
Utilizând operatorul de atribuire: NumeVariabilă=Variabilă;
-
Declarând variabilele cu comanda Dim, Private sau Public.
Pentru a utiliza o variabilă de tip Object ea trebuie declarată cu Dim, ReDim, Static, Private sau Public şi apoi i se asociază un obiect cu instrucţiunea: variabilă=obiect ;
Aşa cum indică şi cuvântul variabilă, valoarea pe care programul o păstrează în aceste locaţii se poate modifica pe parcursul execuţiei programului. O variabilă poate să stocheze valori diferite în momente diferite. O variabilă se caracterizează prin cele două elemente:
-
numele variabilei, care este un identificator cu ajutorul căruia putem să referim variabila pe parcursul programului;
-
tipul variabilei, care precizează tipul de date care pot fi stocate de variabila respectivă. În funcţie de tipul variabilei compilatorul alocă o zonă de memorie mai mică sau mai mare pentru aceasta.
În ceea ce priveşte variabilele de memorie, Visual Basic permite utilizarea a două feluri de variabile:
-
variabile cu tip
-
variabile fără tip.
Folosirea variabilelor fără tip de date (prin utilizarea tipului implici Variant) a devenit deosebit de importantă. Tipul Variant conţine nu numai variabila, dar şi informaţii despre variabilă.
Declararea unei variabile înseamnă practic a defini de la început informaţiile necesare programului despre variabila respectivă, astfel încât programul să ştie cum se numeşte, ce tip de date poate stoca, ce zonă de memorie trebuie să-i aloce şi unde.
Declararea unei variabile se face astfel:
[Public| Private| Dim] NumeVariabilă As TipVaribilă
Public, Private, Dim sunt cuvinte rezervate limbajului Visual Basic prin care se precizează dacă variabilă respectivă este de tip public, accesibilă în toate procedurile sau privat, accesibilă doar în procedura curentă (locală); NumeVaribilă este identificatorul variabilei; As este un cuvânt cheie care precizează faptul că dorim să declarăm tipul variabilei. TipVariabilă este numele unui tip de date dintre cele pe care le acceptă Visual Basic.
Exemple:
Dim i as Integer ´ defineşte variabila locală i de tip Integer
Dim ZiSalar as Date ´ defineşte variabila locală ZiSalar de tip Date
Private Nume as String ´ defineşte variabila locală Nume de tip String
Public ListaPreturi as ListBox ´ defineşte variabila ListaPreturi ce va conţine o ´referinţă către un obiect de tip ListBox.
Variabilele au două caracteristici deosebit de importante şi anume:
-
domeniul de valabilitate
-
durata de existenţă.
Astfel variabilele utilizate în cadrul unei proceduri se numesc variabile locale. Acestea se declară în interiorul procedurii cu ajutorul comenzii Dim. Variabilele locale există atâta timp cât se execută procedura în care au fost declarate şi pot fi utilizate numai în cadrul acelei proceduri, neavând nici o semnificaţie în altă parte a programului. Aceste variabile au deci un domeniu de valabilitate restrâns doar la nivelul procedurii şi au o durată de viaţă temporară.
Observaţie:
Se recomandă folosirea comenzii Dim doar pentru declararea acestui tip de variabile, chiar dacă Visual Basic permite utilizarea ei şi în alte contexte.
Un alt tip de variabile îl reprezintă cele cu domeniu de vizibilitate la nivelul unui modul. Aceste variabile pot fi folosite oriunde în interiorul modulului în care au fost declarate. Ele există atâta timp cât este folosit modulul respectiv. Se recomandă ca declararea lor să se facă cu ajutorul comenzii Private în loc de Dim.
Un alt tip de variabile îl reprezintă variabilele publice sau globale, vizibile la nivelul întregului program. Acestea pot fi folosite oriunde în program, au un domeniu de valabilitate global şi există atâta timp cât se execută programul. Variabilele globale se declară utilizând comanda Public în zona General Declaration.
Pe lângă acestea, un alt tip de variabile sunt cele statice. Acestea pot avea un domeniu de valabilitate locală sau la nivelul unei proceduri, dar o durată de existenţă permanentă. Declararea lor se face cu ajutorul comenzii Static. De exemplu se poate defini o variabilă statică la nivelul unei proceduri. Ea va fi vizibilă doar la nivelul acelei proceduri, dar îşi va păstra valoarea şi după ce procedura îşi va termina execuţia. Dacă procedura va fi din nou apelată, variabila statică nu va fi iniţializată automat de Visual Basic, aşa cum se întâmplă cu variabilele care nu sunt statice, ci va avea valoarea pe care a avut-o la ultima ei folosire.
Diferenţa dintre variabilele declarate cu Dim şi cele declarate cu STATIC constă deci în durata de viaţă a variabilelor. Astfel, cele declarate cu static nu se modifică şi nu îşi pierd valoarea stabilită pe parcursul execuţiei programului la o nouă reluare a acestuia..
Variabilele locale la nivelul unui modul sau publice (globale) se declară în secţiunea de declaraţii a modulului ( Declarations).
Declararea variabilelor se poate face în Visual Basic în două moduri :
În modul implicit o variabilă este considerată declarată la prima ei folosire. Nu este necesară o declarare prealabilă cu ajutorul cuvintelor cheie Dim, Private, Public. În mod implicit Visual Basic declară toate variabilele de tip Object.
Declararea explicită a variabilelor presupune ca înainte să fie folosită, o variabilă să fie declarată cu ajutorul uneia dintre comenzile Dim, Private, Public.
Observaţie:
Se poate scrie la începutul modulului opţiunea Option Explicit sau se poate cere mediului de programare să facă acest lucru automat selectând din meniul Tools -Options…- Projects and Solutions –VB Defaults opţiunea Option Explicit. În acest caz Visual Basic ne va atenţiona dacă folosim o variabilă pe care nu am declarat-o anterior. Este o opţiune deosebit de utilă şi se recomandă pentru a evita greşelile legate de scrierea numelor variabilelor.
Notă:
Una dintre cele mai frecvente probleme întâlnite la declararea unei variabile este următoarea:
Dim a,b,c As Integer,d As Decimal,e As Char,f,g As String,h
Ne întrebăm ce tip de variabilă este fiecare după declarare. Avem următoarele rezultate:
-
a,b și c sunt de tip Integer, tip ce nu necesită inițializare explicită;
-
d este de tip Decimal;
-
e este de tip Char;
-
f și g – în cazul acestor variabile, pentru a fi de tip String, este obligatorie inițializarea după declarare, altfel f și g sunt recunoscute ca fiind de tip Object;
-
h prin omiterea tipului de date la declarare, Visual Basic îi acordă tipul implicit, tipul Object.
Memorarea, înscrierea datelor în variabile se face cu ajutorul instrucţiunilor de atribuire. Formatul general al unei astfel de comenzi este:
NumeVariabilă =Variabilă/expresie
unde:
Nume variabilă reprezintă numele variabilei care se defineşte;
Expresie – reprezintă valoarea dată sau expresia din evaluarea căreia se obţine valoarea ce se va înscrie în variabila noastră;
Variabilă – variabila a cărei valoare se înscrie şi în variabila Nume variabilă definită acum.
Exemple:
Nota = 10 – variabila Nota va stoca valoarea numerică 10;
Nume = ”Ionescu” - variabila Nume va stoca şirul de caractere ˝Ionescu˝
DataNasterii= #10/12/1977# - variabila va stoca data 10.12.1977
Semnul egal din aceste exemple este operator de atribuire şi nu operator de egalitate.
Când creem o variabilă, Visual Basic îi atribuie în mod implicit o valoare în funcţie de tipul variabilei ; spunem că o iniţializează automat.
Adeseori, în cadrul unui program sunt necesare prelucrări asupra variabilelor care impun conversia tipurilor acestora. Astfel, vom întâlni situaţii în care vom dori să atribuim unei variabile de un anumit tip o valoare de alt tip, lucru care în mod normal nu este posibil. De aceea va trebui să facem o conversie a valorii pe care dorim să o atribuim la tipul variabilei. În unele cazuri Visual Basic execută în mod automat aceste conversii de date, dar bine este să realizăm noi aceste conversii utilizând funcţiile de conversie.
Exemplu:
Când am lucrat cu controale de tip TextBox pentru a efectua şi a afişa diverse calcule am utilizat funcţiile de conversie VAL şi STR:
Text1.text = Str(val(text2.text) +val(text3.text))
Variabilele în Visual Basic sunt deci caracterizate prin:
-
nume
-
tip de dată
-
domeniu.
Numele trebuie să înceapă cu o literă şi să fie diferit de cuvintele rezervate ale limbajului.
Tipul indică modul în care respectivele valori sunt stocate în memorie (Boolean, Byte, Char, String, Integer, Long, Single, Decimal, Date şi Object ). În reprezentarea internă datele au nişte sufixe specifice tipului, ocupă o anumită dimensiune, au un anumit domeniu de valori.
În Visual Basic principalele tipuri de date sunt:
-
Tipul Boolean memorează valori logice de tip adevărat sau fals, da, nu, pornit sau oprit. Deci tipul Boolean are 2 valori – adevărat sau fals, nu are suffix şi ocupă 2 octeţi.Valoarea implicită a unei astfel de variabile este false.
-
Tipul Byte poate lua valori de la 0 la 255. El nu acceptă deci numere negative şi acceptă toţi operatorii care lucrează cu numere întregi.
-
Tipul Char ocupă 2 octeți și poate conține doar valori pozitive, de la 0 la 65535. Se utilizează pentru a memora informații de tip caracter.
-
Tipul Integer are sufixul procent %, ocupă 2 octeţi şi poate lua valori întregi cuprinse în intervalul de la -32768 la 32767.
-
Tipul Long are sufixul &, ocupă 4 octeţi şi poate lua valori întregi cuprinse în intervalul - 2.147.483.648 şi 2.147.483.647.
-
Tipul Single poate memora valori reale în simplă precizie.
-
Tipul Double poate memora valori reale în dublă precizie.
-
Tipul Decimal ocupă 16 octeţi şi poate lua valori reale cuprinse în intervalul -7.92*E la puterea 28 până la 7.92*E la puterea 28. Practic el poate memora valori reale cu maxim 29 cifre pentru partea întreagă şi maxim 29 zecimale. Se recomandă pentru calcule monetare de mare precizie.
-
Tipul Date nu are suffix, ocupă 8 octeţi şi poate lua valori cuprinse între 1 ianuarie 1000 şi 31 decembrie 9999. El memorează practic o dată calendaristică sau o anumită oră, exprimate într-o formă literală acceptată.
-
Tipul String are sufixul $ şi ocupă numărul de octeţi precizat prin declaraţia de tip.
-
Tipul de date Object reprezintă o variabilă care poate stoca o valoare sau poate apela obiecte din cadrul aplicaţiei sau din alte aplicaţii. Este tipul implicit pentru orice variabilă Visual Basic care nu a fost declarată (în mod explicit). Acesta este un tip special de date care poate conţine atât valori numerice, şiruri de caractere, date calendaristice, precum şi valorile speciale Nothing, VariantType.Empty și VariantType.Null.
-
VariantType.Empty –o comparare a variabilei cu această valoare determină dacă variabila a fost iniţializat cu orice valoare de la definirea sa originală.
-
VariantType.Null –o comparare a variabilei cu această valoare dacă variabila are o valoare Nulă. (cum ar fi o linie goală)
-
Nothing reprezintă valoarea implicită a unui tip de date (de exemplu pentru Integer, Nothing este 0).Poate fi, in acest caz echivalentul valorii Empty. Dacă variabila este de tip pointer, Nothing indică faptul că variabila nu este asociată niciunui obiect. În schimb, dacă variabila este de tip obiect, atunci indică faptul că variabila nu mai referă nici o instanță. În ultimele două cazuri, Nothing este echivalent cu Null
Visual Basic mai conţine şi alte tipuri de date, dar mai puţin utilizate.
Tipul de date al unei variabile se poate declara implicit sau explicit.
Pentru a declara în mod implicit tipul unei variabile se ataşează numelui acesteia un caracter asociat tipului de date, acest caracter fiind numit sufix.
Observaţie:
Pentru a utiliza o dată, o variabilă de un anumit fel, ea trebuie declarată cu una dintre instrucţiunile: PRIVAT, PUBLIC, DIM sau STATIC.
Visual Basic permite modificarea numărului de elemente al unei variabile de tip tablou cu comanda: REDIM. Atenție, această comandă nu permite și modificarea numărului de dimensiuni.
Prin urmare, în mod normal şi pentru a evita situţii imprevizibile, orice variabilă Visual Basic trebuie declarată cu instrucţiunile DIM sau PRIVAT, PUBLIC, STATIC. După ce s-a făcut declaraţia, acestei variabile i se poate atribui o valoare.
Asocierea unui obiect la variabila declarată se face apoi cu instrucţiunea:
variabilă = obiect.
La declararea variabilelor de tip obiect, trebuie folosite clasele specifice aşa cum sunt enumerate ele în object browser şi nu cu titlul generic object.
Variabile de tip tablou (matrice)
Un tablou este o structură de date care poate să memoreze mai multe valori de acelaşi tip. Tablourile trebuie concepute ca nişte colecţii de date care poartă acelaşi nume şi au acelaşi tip. Dacă tabloul este de tip Object atunci elementele acestuia pot să conţină diferite tipuri de date (numerice, şiruri de caractere, date calendaristice, obiecte).
În Visual Basic se pot utiliza două tipuri de tablouri:
-
tablouri cu dimensiune fixă
-
tablouri dinamice.
Tablourile cu dimensiune fixă sunt tablourile care au un număr fix de elemente componente. Acesta este declarat de la început, astfel încât compilatorul îi alocă suficientă memorie pentru a putea reţine toate elementele.
Matricea reprezintă o structură de date de tip tablou cu două dimensiuni, formată practic din locaţii de memorie definite pentru a memora date de acelaşi tip.
Elementele tabloului se identifică printr-un nume (acelaşi nume) urmat de un indice care precizează poziţia elementului în cadrul tabloului. Toate elementele dintr-o matrice au acelaşi tip de date. Matricea poate fi de dimensiune fixă pe tot parcursul execuţiei programului, sau matrice dinamică, a cărei dimensiune se poate modifica în timpul execuţiei programului.
Declararea unui tablou cu dimensiune fixă se poate face în două moduri:
-
prin specificarea numărului de elemente
Dim|Public|Private NumeTablou(NrElemente) As TipDată
Exemplu:
Dim Puncte(4) As Integer
Observaţie:
Când se declară un tablou primul element are numărul de ordine 0.
Putem atribui valori fiecărui element din tablou astfel:
Puncte(0)=270
Puncte(1)=250
Puncte(2)=289
Puncte(3)=275
Puncte(4)=300
-
prin specificarea marginilor (adică se specifică numărul primului şi ultimului element) cu instrucţiunea:
Dim|Public|Private NumeTablou ( [NrPrimulElement To] NrUltimulElement ) As TipDată
Exemple:
Dim a( 0 To 10) As Double
Dim b (0 To 100) as Date
Observaţie:
Visual Basic 2008 nu permite modificarea limitei inferioare, aceasta fiind mereu 0. De aceea, la declarare se poate omite specificarea limitei inferioare.
După locul unde e declarată, o matrice de dimensiune fixă poate fi:
-
matrice publică, dacă e declarată cu instrucţiunea PUBLIC;
-
matrice locală, dacă e declarată numai la nivelul modulului cu instrucţiunea PRIVATE.
Observaţie:
La declararea unei matrici trebuie declarată limita superioară a numărului de elemente. Un caz particular al matricilor îl constituie matricile unidimensionale, numite şi vectori.
Matricea dinamică se declară cu instrucţiunea PUBLIC sau DIM şi de dimensiunea vidă.
Tablourile dinamice sunt tablourile care au un număr variabil de elemente. Există situaţii când nu ştim de câte elemente avem nevoie în tabloul nostru. Şi pentru a nu aloca un spaţiu prea mare sau prea mic de memorie, Visual Basic ne oferă posibilitatea să redimensionăm tabloul în funcţie de necesităţi. Pentru a crea un tablou dinamic acesta trebuie declarat fără dimensiune:
Dim NumeTablou() As TipDată
Apoi, în funcţie de câte elemente avem nevoie le alocăm cu ajutorul instrucţiunii ReDim, a cărui sintaxă este:
ReDim NumeTablou(NrElemente) sau
ReDim NumeTablou(NrPrimulElement To NrUltimulElement)
Instrucţiunea ReDim poate fi folosită numai în interiorul unei proceduri. Este utilă pentru a modifica numărul de elemente maxime al unei dimensiuni a variabilei tablou, fără a putea schimba numărul de dimensiuni sau tipul datei.
Exemplu:
Dim Salarii() As Integer
Şi apoi într-o procedură se alocă numărul de elemente:
Private Sub CalculareImpozit()
ReDim Salarii(0 To 10)
……………………………….
End Sub
În toate exemplele prezentate până acum, tablourile au constat într-un singur rând de date (o singură dimensiune). Totuşi, limbajul Visual Basic acceptă tablouri bi-, tri şi multi- dimensionale.
Exemplu:
Dim A(0 to 100,0 to 100) As Integer - defineşte o matrice (deci un tablou bidimensional) de 101 linii şi 101 coloane cu elemente întregi.
4.3.3. Tipuri de date definite de utilizator
Adeseori în practică apar situaţii când dorim ca o singură variabilă să stocheze mai multe informaţii de tipuri diferite, dar aflate în strânsă legătură. Pentru aceaste cazuri Visual Basic ne permite să creem tipuri de date definite de utilizator.
În aceste cazuri utilizatorul poate defini în cadrul modulului său şi tipuri de date proprii, deci tipuri de date predefinite. Pentru aceasta, declaraţia de tip se face de către programatori în secţiunea General Declaration a modulului de cod cu ajutorul instrucţiunii:
STRUCTURE ( nume_tip_nou )
Definire Variabile
END STRUCTURE
După definirea noului tip de date, se poate declara o variabilă de acest tip prin acelaşi procedeu întâlnit şi la declaraţia variabilelor în tipurile prestabilite.
O variabilă nu poate avea decât o singură valoare la un moment dat, în momentul unei noi atribuiri ea pierzând valoarea stocată anterior.
Aceste tipuri de date sunt compuse dintr-un număr de componente numite câmpuri. Spre deosebire de tablouri, câmpurile pot conţine tipuri de date diferite. Fiecare câmp are deci un nume (numit identificator de câmp) şi un anumit tip. Sintaxa unui tip definit de utilizator este următoarea:
Private| Public Structure NumeTip
Private| Public| Dim Nume_câmp1 As TipDată
Private| Public| Dim Nume_câmp2 As TipDată
…………………………..
Private| Public| Dim Nume_câmp3 As TipDată
End Structure
Exemplu:
Private Structure InfoStudent
Public nume As String
Dim DataNaşterii As Date
Dim Sex As String
Private MediaAdmitere As Single
Private MediiSemestriale() As Integer
Dim Adresa As String
End Structure
În exemplul anterior am creat un tip de date definit de utilizator denumit InfoStudent. Putem defini apoi variabile locale, la nivel de modul sau variabile globale de tipul respectiv.
Exemple:
Dim student As InfoStudent
Dim StudentiInformatica (70) As InfoStudent
Atribuirea sau recuperarea de valori stocate în câmpurile acestor variabile se face exact ca în cazul proprietăţilor controalelor sau a formelor.
Exemple:
student.Nume = ”Munteanu Răzvan”
student.DataNasterii = #6/21/1990#
4.3.4.Date de tipul Enumerare
Tipul de date enumerare defineşte o mulţime ordonată de valori: se enumeră un şir de identificatori care desemnează valorile posibile. În mod implicit primul element al enumerării este iniţializat cu 0. Fiecare alt element desemnează succesorul valorii specificate de elementul precedent. Identificatorii apar în ordinea crescătoare a valorii lor.
Sintaxa instrucţiunilor de declarare a unui tip enumerare este următoarea:
Private|Public Enum NumeEnumerare
Element1[=valoare]
Element2[=valoare]
……………………
Elementn[=valoare]
End Enum
Exemplu:
Private Enum ZileS
Luni = 0
Marţi
Miercuri
Joi
Vineri
Sâmbătă
Duminică
End Enum
Observaţie:
Declararea unui tip enumerare nu se face la nivel de procedură.
După ce am creat un tip enumere, ca şi în cazul tipurilor definite de utilizator, putem defini o variabilă de tip enumerare. Această variabilă va putea să ia ca valoare doar elementele din enumerare.
Exemplu:
Dim ZiSăptămână As ZileS
ZiSăptămână = ZileS.Miercuri
4.4. OPERATORI
Operatorii reprezintă comenzi speciale pentru operaţiile ce pot fi executate cu datele din program. Visual Basic pune la dispoziţie 4 tipuri de operatori:
a). Operatori Aritmetici:
+ (adunare), - (scădere), * (înmulţire), / (împărţire), \ (împărţire întreagă) şi MOD (modulo).
\ împarte două numere, rezultatul fiind redat sub forma unui număr întreg;
MOD (modulo) împarte două numere şi reţine doar restul împărţirii.
Operator
|
Semnificatie
|
Observaţii
|
^
|
Ridicarea la putere
|
Rezultatul este Double sau Variant (Double) cu excepţia: dacă un operand este Nothing, rezultatul este tot Nothing.
|
*
|
Înmulţirea
|
Rezultatul este dat de cel "mai precis" factor, ordinea crescătoare a "preciziei" fiind, pentru înmulţire, Byte, Integer, Long, Single, Double şi Decimal. Dacă o expresie este Nothing, rezultatul este Nothing. O expresie Nothing este considerată ca 0.
|
/
|
Împărţirea
|
Rezultatul este, în general, Double sau Object (Double). Dacă o expresie este Nothing, rezultatul este Nothing. O expresie Nothing este considerată ca 0.
|
\
|
Împărţirea întreagă
|
Înainte de împărţire, operanzii sunt rotunjiţi la Byte, Integer sau Long. Rezultatul este Byte, Object (Byte), Integer, Variant (Integer), Long, sau Variant (Long). Dacă o expresie este Nothing, rezultatul este Nothing. O expresie Nothing este considerată ca 0.
|
Mod
|
Restul împărţirii
|
Operanzii sunt rotunjiţi la întregi şi se obţine restul împărţirii. Rezultatul este Byte, Variant(Byte), Integer, Object (Integer), Long sau Variant (Long). Dacă o expresie este Nothing, rezultatul este Nothing. O expresie Nothing e considerată ca 0.
|
+
|
Adunarea numerică sau concatenarea sirurilor
|
În general, operanzii numerici produc adunarea, iar operanzii şiruri produc concatenarea. În cazul numeric, rezultatul este de tipul cel "mai precis" al operanzilor, ordinea de "precizie" fiind pentru adunare şi scădere: Byte, Integer, Long, Single, Double, şi Decimal.
|
-
|
Scăderea sau inversarea semnului
|
Operanzii pot fi doar numerici. Rezultatul este de tipul cel "mai precis" al operanzilor, ordinea de "precizie" fiind pentru adunare şi scădere: Byte, Integer, Long, Single, Double şi Decimal. Dacă o expresie este Nothing, rezultatul este Nothing. O expresie Nothing este considerată ca 0.
|
Observaţie:
Operaţiile ce se efectuează în cadrul expresiilor trebuie să aibă sens din punct de vedere matematic. Exemplu, la împărţire numitorul să nu fie 0 (zero).
b). Operatori Logici: manipulează valorile True şi False:
-
AND (conjuncţia logică) returnează valoarea True când toate variabilele din expresie au valoarea true şi valoarea False dacă cel puţin una din variabile are valoarea false;
-
OR (disjuncţia logică) returnează valoarea False dacă toate variabilele din expresie au valoarea False şi valoarea logică True dacă cel puţin una din variabile are valoarea de True;
-
XOR (disjuncţia exclusivă) returnează valoarea True dacă toate variabilele au valori, ori True ori False, dar numai una are valoarea True;
-
NOT (negaţia logică) schimbă o valoare egală cu true în false şi invers;
-
Echivalența Logică(=). Dacă o expresie este Nothing, rezultatul este Nothing. Echivalența Logică realizează şi compararea bit cu bit a două expresii numerice, poziţionând cifrele binare ale rezultatului după regulile de calcul ale echivalenţei logice: 0 = 0 este 1 etc. Pentru compararea bit cu bit se foloseste Not(A XOr B), care este egal cu A = B
-
IMP Nu mai este utilizat in Visual Basic 2008. În schimb, și pentru comparația logică și pentru cea la nivel de bit, putem folosi expresia (Not A) Or B(implicaţia logică). True Imp Null este Null, False Imp * este True, Nothing Imp True este True, Nothing Imp False (sau Nothing) este Nothing. Operatorul Imp realizează şi compararea bit cu bit a două expresii numerice, poziţionând cifrele binare ale rezultatului după regulile de calcul ale implicaţiei logice: 1 Imp 0 este 0, în rest rezultatul este 1.
c). Operatori de comparare - compară două numere sau şiruri de caractere şi returnează valoarea true sau false. Operatorii de comparare sunt cei uzuali: < (mai mic), <= (mai mic sau egal), > (mai mare), >= (mai mare sau egal), = (egal), <> (diferit, neegal).
Rezultatul este True - dacă relaţia este adevarată, False - dacă relaţia este neadevărată şi Nothing ( vbNull sau dbNull, in functie de caz. ) - dacă cel puţin un operand este Nothing(vbNull sau dbNull).
Relaţiile care există între diferite tipuri de entităţi se pot evidenţia prin comparaţii având una dintre formele următoare:
rezultat = expresie1 operator expresie2
rezultat = object1 Is object2
rezultat = string Like pattern
unde:
rezultat este o variabilă de tip logic
expresie este o expresie oarecare
operator este un operator relaţional
object1, object2 sunt nume de obiecte
string este o expresie de tip şir de caractere oarecare
pattern este o expresie String sau un domeniu de caractere.
Operatorul Is produce True dacă variabilele se referă la acelaşi obiect şi False în caz contrar.
Operatorul Like compară două şiruri cu observaţia că al doilea termen este un şablon. Prin urmare rezultatul este True dacă primul şir operand este format după şablon, False în caz contrar. Atunci când un operand este Nothing, rezultatul este tot Nothing.
Comportarea operatorului Like depinde de instrucţiunea Option Compare, care poate fi:
-
Option Compare Binary, ordinea este cea a reprezentării interne binare, determinată în Windows de codul de pagină.
-
Option Compare Text, ordinea este determinată de setările locale ale sistemului.
Construcţia şablonului poate cuprinde caractere speciale, liste de caractere, domenii de caractere, cu următoarea semnificaţie:
? semnifică un caracter oarecare pe poziţia pe care apare;
* orice caracter şi oricâte caractere se pot afla pe poziţia respectivă;
# o cifră oarecare (0–9).
[charlist] oricare dintre caracterele enumerate în listă, un domeniu de litere poate fi dat prin utilizarea cratimei.
[!charlist] orice caracter care nu este în listă
d). Operatori de concatenare: +, & realizează concatenarea (alipirea) a două şiruri de caractere.
În sintaxa:
expression1 & expression2
unde operanzii sunt expresii oarecare, rezultatul este:
-
de tip String, dacă ambii operanzi sunt de tip String;
-
de tip Variant (String) în celelalte cazuri;
-
Nothing, dacă ambii operanzi sunt Nothing.
Înainte de concatenare, operanzii care nu sunt şiruri se convertesc la Variant (String).
Observaţie:
Expresiile Nothing sunt tratate ca şiruri de lungime zero ("").
Dostları ilə paylaş: |