Sunteți pe pagina 1din 50

Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.

NET
_________________________________________________________________________________________________________________

UNITATEA DE ÎNVĂŢARE 3

ELEMENTELE LIMBAJULUI VB.NET


___________________________________________________________________________
Cuprins
Obiectivele unităţii de învăţare 3

3.1. Introducere în VB.NET

Evoluţia limbajului BASIC


Caracteristicile limbajului VB.NET
Platforma .NET Framework
Structura unei aplicaţii în VB NET
Întrebări

3.2. Tipuri de date

Definirea conceptului de tip de dată


Categorii de tipuri de date
Copierea şi compararea datelor
Întrebări

3.3. Structurile lexicale ale limbajului VB.NET

Categorii de unităţi lexicale


Comentariile
Cuvintele cheie
Identificatorii
Literalii
Separatorii
Variabilele
Constantele
Operatori
Instrucţiunile
Întrebări
3.4. Instrucţiuni în VB.NET

Instrucţiunile declarative
Instrucţiunile de control
Alte instrucţiuni executabile
Întrebări

3.5. Subprograme in VB.NET

Funcţiile de sistem (intrinseci)


Subprogramele definite de utilizator
Întrebări

Bibliografie Unitatea de învăţare 3

1
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

OBIECTIVELE UNITĂŢII DE ÎNVĂŢARE 3

• Însuşirea cunoştinţelor necesare pentru a înţelege noţiunile de soluţie, proiect şi


aplicaţie.
• Cunoaşterea caracteristicilor platformei .NET Framework, a provocărilor
induse de globalizarea programării în Internet şi soluţiile de unificare adoptate.
• Definirea conceptului de tip de dată, înţelegerea tipurilor de date, a modului de
comparare şi copiere.
• Însuşirea unităţilor lexicale în VB.NET şi a deprinderilor de utilizare corectă a
lor.
• Însuşirea principalelor instrucţiuni declarative şi de control implementate în
VB.NET.
• Cunoaşterea principalelor categorii de funcţii de sistem (intrinseci) implementate
în VB.NET.
• Definirea şi apelul subprogramelor definite de utilizator.

2
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

3.1. Introducere în VB.NET


• Evoluţia limbajului BASIC

Evoluţia limbajului BASIC (Beginner’s Allpurpose Symbolic Instruction Code) poate fi


sintetizată astfel:
 a fost creat în 1963 la Darmouth College, SUA, ca limbaj de programare facil pentru
studenţii cu profil uman;
 a cunoscut o largă răspândire pe microcalculatoarele anilor ’70 şi home computers în
anii ’80;
 în 1975 firma Microsoft oferă un interpreter BASIC pentru calculatorul Altair 8800
(primul produs al firmei nou înfiinţate);
 Microsoft a dezvoltat ulterior noi versiuni: pentru MS-DOS (GWBasic şi QBasic);
pentru interfeţe grafice începând din 1991(VB versiunea 1), 1998 VB 6; limbaje
derivate (VBA Visual Basic for Application – încorporat în MS-Office; VBScript
pentru WEB). Limbajul Visual Basic nu a rămas pe loc, în timp ce provocările
tehnologice s-au modificat şi au crescut. VB 3 a adăugat capabilitatea DAO (Data
Access Object) pentru a accesa bazele de date şi alte surse de date. VB 4 a oferit două
compilatoare separate unul pe 16 biţi şi altul pentru 32 biţi. De asemenea a permis
dezvoltatorilor să construiască programe pe baza modelului COM (Component Object
Model), oferind posibilitatea de a crea biblioteci cu legături dinamice (DLL) şi a
debutat programarea bazată pe clase. În VB 5 limbajului i s-a adăugat capacitatea de a
construi şi distribui controale ActiveX. VB 6 a fost rescris în întregime şi a oferit noi
controale de WEB şi posibilitatea moştenirii interfeţelor pentru clase;
 VB Net este succesorul lui VB6; versiunile lui VB Net sunt: 2002 (versiunea 7.0),
2003 (versiunea 7.1), 2005 (versiunea 8.0), 2008 (versiunea 9.0), 2010 (versiunea
10.0). Tranziţia de la limbajele de programare tradiţionale la VB.NET este considerată
de către mulţi1, inclusiv de Bill Gates, a fi mai dramatică decât tranziţia de la DOS la
Windows.

1
John Connell, Microsoft Visual Basic .NET, Editura Teora 2003, pg. 4.
3
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

• Caracteristicile limbajului VB.NET

VB.NET:
 este un limbaj complet pentru programarea orientată pe obiecte, având
implementate toate paradigmele programării orientate obiect;
 este un limbaj puternic tipizat la activarea directivei Option explicit on (care
forţează definirea explicită a variabilelor înainte de utilizare). Dacă se activează şi
Option strict on (nu vor fi permise conversiile implicite cu pierdere de mărime sau
precizie) ;
 tratează structurat excepţiile prin structura: Try… Catch… Finally;
 oferă suport pentru prelucrările multi-fir (multi-threading);
 oferă suport pentru dezvoltarea WEB.

• Platforma.NET Framework

Trecerea de la programarea clasică la programarea orientată pe obiecte a permis realizarea


saltului calitativ după ce limbajul C++ a câştigat teren. Dar cum VB.NET şi C++ au rutine de
execuţie separate, fiecare cu componente distincte. Pentru a rezolva problema comunicării
între limbaje Microsoft a dezvoltat mai întâi mecanismele COM. Modelul COM este un
standard (o convenţie) care stabileşte regulile cum trebuie construită o componentă COM,
pentru a putea comunica cu orice componentă COM, indiferent de limbajul în care a fost
construită. Astfel COM a început să acţioneze ca un standard binar de interoperabilitate între
obiecte. S-a dovedit că utilizarea standardului COM prin intermediul Internetului pe o maşină
aflată la distanţă nu s-a putut realiza fără probleme, deoarece modelul COM distribuit
(DCOM) s-a lovit de eterogenitatea sistemelor de operare şi a platformelor de lucru în
Internet. Au fost mai multe încercări de soluţionare a problemelor ivite (proiectul COBRA,
etc.), fără a se găsi o soluţie viabilă în marea eterogenitate de platforme, sisteme şi
dispozitive.
Platforma .NET Framework a venit cu următoarea soluţie2: «În loc de a învăţa noi tehnici
pentru a optimiza programele în funcţie de echipamentul hardware şi sistemul specific de
operare vom utiliza compilatoare separate în funcţie de arhitectură pentru fiecare platformă
nouă (sau deja existentă) şi apoi vom denumi fiecare versiune pe care dezvoltatorii o pot
utiliza .NET. La baza acestei noi abordări se află Rutina de execuţie a limbajului comun
(Common Language Runtime - CLR). CLR oferă multe beneficii programatorilor în orice

2
John Connell, Microsoft Visual Basic .NET, Editura Teora 2003, pg. 7.
4
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

limbaj .NET (VB.NET, C++ , C# sau altul din cele 17 limbaje suportate de CLR)». CLR
facilitează pentru programatorii în VB.NET proiectarea şi construirea de aplicaţii ale căror
obiecte pot interacţiona cu obiectele scrise în alte limbaje, deoarece platforma .NET este
construită pe mai multe nivele astfel:
 Compilatorul VB ca şi compilatoarele celorlalte 16 limbaje recunoscute de
platformă se găsesc în partea superioară a platformei;
 Sub compilatoare se găsesc specificaţiile comune de limbaj (Common Language
Specifications - CLS): un set de reguli minimal pentru a asigura interoperabilitatea
componentelor obţinute cu limbajele recunoscute de platformă.
Practic, programele scrise în limbajele de programare care vor respecta cerinţele minimale
impuse de Common Language Specifications - CLS, vor putea rula pe platforma .NET, vor
putea valorifica toate clasele şi derivatele acestora din biblioteca comună şi vor putea fi
executate pe orice calculator pe care lucrează Common Language Runtime - CLR.
 Pe ultimul nivel se află CLR (Common Language Runtime) care preia codul
generat de VB.NET şi orice limbaj compatibil (care respectă specificaţiile CLS) şi
îl converteşte în limbajul nativ al arhitecturii platformei curente.
Practic CLR (Common Language Runtime) este marele unificator, el fiind responsabil de
rularea programului pe orice platformă pe care poate rula CLR. CLR (Common Language
Runtime) oferă suport pentru tot ce se află deasupra sa: biblioteca claselor de bază; date şi
XML; servicii de WEB sau interfeţe cu utilizatorul; CLS şi compilatoare – şi asigură şi
conversia codului pentru arhitectura specifică pe care se execută aplicaţia, aşa cum se
prezintă în diagrama de mai jos.

5
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

Structura unei aplicaţii în VB NET


a) Soluţii, proiecte şi module
Un proiect este un grup de fişiere cu cod sursă sau module care, atunci când este compilat şi
rulat, formează o singură aplicaţie, cum ar fi un program executabil, o bibliotecă, un serviciu
WEB sau o aplicaţie WEB de tipul ASP.NET.
O soluţie este un container pentru un proiect sau mai multe proiecte inter-relaţionate şi se
foloseşte pentru gestionarea proiectelor. Orice proiect este plasat în cadrul unei soluţii. Când
o soluţie conţine mai multe proiecte, acestea au de regulă, legătură între ele.
b) Tipuri de proiecte
Tipurile de proiecte care pot fi realizate în VB.NET sunt prezentate în caseta de modele
(templates) la crearea unui nou proiect (New Project) şi diferă de destinaţia acestora, fiind
diferite pentru:
− Aplicaţii Windows:

6
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

− Servicii WEB:

Astfel, de exemplu:

 .Windows Application (aplicaţie Windows) – este folosit pentru a crea o aplicaţie


executabilă în format Windows, de obicei cu extensia .exe şi reprezintă standardul de
aplicaţii care lucrează sub sistemul de operare Microsoft Windows;

 .Class Library (biblioteca de clase) – este folosit pentru a crea un fişier bibliotecă cu
extensia .dll;

 .Console Application (aplicaţie în mod consolă) – folosit pentru a crea o aplicaţie


executabilă care poate rula în mod consolă (din linia de comandă);

 .Windows Control Library (librărie de controale Windows) – folosit pentru a crea


controale Windows definite de utilizator;

 .ASP.NET Web Application (aplicaţie Web ASP.NET) – folosit pentru a crea o


aplicaţie Web de tip ASP.NET;

 .ASP.NET Web Service (serviciu Web ASP.NET) – folosit pentru a crea un serviciu
Web.
c) Folosirea instrumentului Solution Explorer
Solution Explorer (instrumentul de navigare prin soluţii) este un instrument Visual Studio,
care permite gestionarea şi navigarea printre proiectele şi resursele unei soluţii. Activarea lui
Solution Explorer se face selectând din meniul ferestrei design View, Solution Explorer.
Pentru a vizualiza toate fişierele soluţiei se poate activa opţiunea Show All Files (afişează
toate fişierele).

7
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

Solution Explorer permite: adăugarea unui proiect nou unei soluţii existente (opţiunea Add
(adăugare) din meniul contextual); adăugarea unui proiect preexistent la o soluţie (opţiunile:
Add (adăugare) din meniul contextual, Existing Project (proiecte preexistente)); configurarea
proprietăţilor paginii unei soluţii (în caseta – Property Pages (pagini cu proprietăţi)), inclusiv
stabilirea proiectului de start; configurarea paginilor unui proiect, inclusiv stabilirea
subrutinei de Startup al unui proiect; etc.

 Întrebări

1. Prezentaţi câteva argumente potrivit cărora Limbajul Visual Basic a evoluat, concomitent
cu provocările tehnologice, care s-au modificat şi au crescut.
2. Care sunt principalele caracteristici ale limbajului VB.NET?
3. Care au fost principalele provocări induse de globalizarea programării pentru Internet?
4. Care sunt soluţiile adoptate de .NET Framework pentru a permite realizarea serviciilor
Web?
5. Enumeraţi câteva tipuri de proiecte care por fi realizate cu VB.NET.
6. Care este rolul instrumentului Solution Explorer?

8
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

3.2. Tipuri de date


• Definirea conceptului de tip de dată

Un tip de date este un plan (un model) pentru alocarea unei zone de memorie. Acest plan
determină domeniul de valori pe care memoria le poate stoca, modul de stocare şi operaţiile
pe care le putem realiza în memorie.

• Categorii de tipuri de date


VB.NET utilizează două categorii de tipuri de date: tipul valoare şi tipul referinţă.
Înţelegerea diferenţelor dintre tipurile de date valoare şi referinţă este importantă din mai
multe motive:
 Sunt tratate diferit de către sistemul de gestiune a memoriei;
 Testează egalitatea în mod diferit;
 Sunt iniţializate diferit de rutina de execuţie a limbajului comun (CLR);
 Sunt tratate diferit în declaraţiile de atribuire.
a) tipul valoare (primitiv sau elementar)
− conţine întotdeauna o valoare;
− se iniţializează cu valoarea predefinită (dacă nu sunt iniţializate explicit);
− poate fi întotdeauna accesat direct;
− nu poate fi derivat în alte tipuri (este închis - sealed);
− este memorat în stivă (stack).
Tipurile primitive din VB.NET sunt identificate prin intermediul cuvintelor cheie care sunt în
realitate alias-uri pentru tipuri de structuri predefinite din spaţiul de nume System (exemplu -
tipul Byte este alias-ul pentru System.Byte).

9
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

Tipurile de date de tip valoare acceptate de VB Net sunt:


Valoarea
Tip Mărimea locaŃiei Domeniu
implicită
Byte 1 octet 0 Între 0-255 (fără semn)
Boolean 4 octeŃi False True sau False
Char 2 octeŃi Chr(0) Între 0 și 65.535
Short 2 octeŃi 0 Între -32.768 și 32.767
Integer (întreg) 4 octeŃi 0 Între 2.147.483.648, 2.147.483.647
(între -2 și +2 miliarde)
Long (întreg lung) – 19 cifre întregi 8 octeŃi 0 Între 9.223.372.036.854.775.808,
-9.223.372.036.854.775.807
(între -9 și +9 cvintilioane)
Single (simplă precizie) – cu 6 zecimale 4 octeŃi 0.0 Între -3.402823E38, -1.401298E-45
Double (dublă precizie) – cu 14 8 octeŃi 0.0 Între -1.79769313486231D308, -
zecimale 4.940654584124D-324
Decimal - Memorează numere raŃionale 14 octeŃi (14x8=112 0.0 Date definite în virgulă mobilă, dar cu
reprezentate pe o structură de 14 octeŃi biți) o mai buna acuratețe decât Double.
care cuprinde un byte (8 biŃi) de Domeniul de memorare este
semn, 96 de biŃi pentru numărătorul ±79.228.162.514.264.337.593.543.9
întreg fără semn şi 8 biŃi 50.335, valoarea putând fi pe o scala
pentru numitor care specifică o putere a cu o putere a lui 10 în intervalul 100-
lui 10 cuprinsă între 0 1028
şi 28.

Date (dată calendaristică) 8 octeŃi #01/01/000 1 ian 1,100 şi dec 31,9999


12:00:00 AM#
Structure În funcŃie de Date definite de utilizator
platformă
Ushort 2 octeŃi 0, 65.535

10
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

b) tipul referinţă
− conţine o referire către o altă adresă de memorie la care se află datele propriu-zise;
− un tip referinţă conţine o adresă validă către un obiect sau o adresă vidă (Nothing); cu
o referinţă vidă este ilegal să se facă altceva decât să i se atribuie o valoare adecvată;
− nu poate fi iniţializat automat cu valori implicite;
− referinţele sunt păstrate de obicei în stivă;
− datele propriu-zise sunt păstrate în memoria dinamică (heap – grămadă, mulţime ).
Acest aranjament permite colectorului de gunoaie să urmărească un obiect care a fost marcat
pentru a fi şters şi să elibereze memoria alocată obiectului atunci când acesta nu mai este
necesar.
Tipurile de date referinţă în VB Net sunt:
Tip Mărimea locaţiei Domeniu
Object 4 octeţi Variază
String 10 + 2 octeţi/caracter 0 și 2 miliarde de caractere
Unicode

sau, într-un tabel similar, dar poate mai sugestiv, regăsim Tipurile de
date de tip valoare dar și referinţă:
Tip Gama de valori
Number Byte Între 0 – 255, fără semn
Short Între -32.768 și +32.767
Integer (întreg) Între -2 și +2 miliarde
Long (întreg long) Între -9 și +9 cvintilioane (19 întregi)
Single (virgulă mobilă simplă) Cu 6 zecimale
Double (virgulă mobilă dublă) Cu 14 zecimale
Decimal Tip de data în virgulă mobilă, dar cu o acuratețe
mai mare decât tipul Double
Boolean True sau False
Char Un character alphanumeric
Date Între 1 ian. 1 și 31 dec. 9999
Structure Date definite de utilizator
Tipul de referinţa
Obiect Poate să conţină orice tip de dată
String Între 0 și 2 miliarde de caractere

11
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

• Copierea şi compararea datelor


Cum în cazul datelor de tip valoare zona de memorie conţine chiar valoarea, atunci cele două
zone de memorie vor conţine aceeaşi valoare. În codul prezentat mai jos valorile vor fi egale,
chiar dacă ocupă zone de memorie diferite:
Dim v1 As Integer = 20
Dim v2 As Integer = 20
Copierea (atribuirea) datelor de tip valoare înseamnă că valoarea (conţinutul) unei zone de
memorie va fi copiată (atribuită) altei zone de memorie:
v1 = v2
(însemnă că v1 va lua valoarea lui v2);
Dacă ulterior modificăm valoarea lui v1:
V1 = 50
(v2 rămâne nemodificată).
În faza iniţială, deşi obiectele o1 şi o2 sunt de acelaşi tip, variabilele de tip referinţă vor
memora adrese diferite de memorie. Chiar dacă la adresele respective vor fi obiecte identice,
în urma comparaţiei se va obţine rezultatul False.
Copierea (atribuirea) datelor de tip referinţă înseamnă că valoarea (conţinutul) unei zone de
memorie va fi copiată (atribuită) altei zone de memorie. Cum în cazul datelor de tip referinţă
zona de memorie conţine adresa unde se află un obiect, atunci cele două zone de memorie vor
puncta (vor adresa) aceeaşi zonă de memorie, deci acelaşi obiect.
În codul prezentat mai jos:

o1 = o2
însemnă că o1 va lua (îi va fi transferat) conţinutul lui o2; adică atât o1 cât şi o2 se referă la
aceeaşi zonă de memorie (în general acelaşi obiect); dacă ulterior se modifică obiectul prin
o1, va fi modificat şi o2. Mai mult, obiectul referit prin o1 îşi pierde referinţa (nu mai poate fi
accesat), devine indisponibil şi va intra în sfera de influenţă a Colectorului de gunoaie – vezi
figura 3.2(1).

12
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

Public Class Form1


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim v1 As Integer = 20
Dim v2 As Integer = 20
Dim o1 As New Label
Dim o2 As New Label
MessageBox.Show(v1.Equals(v2).ToString, "v1=20, v2=20 - Deşi
ocupă zone de memorie diferite") 'True
'Deşi ocupă zone de memorie diferite v1 şi v2 au valori egale
v2 = 25
MessageBox.Show(v1.Equals(v2).ToString, "v1=20, v2=25") 'False
'Acum v1 este diferit de v2
v1 = v2
'Conţinutul lui v2 i se atribuie şi lui v1
MessageBox.Show(v1.Equals(v2).ToString, "v1 = v2") 'True
'Deşi ocupă zone de memorie diferite v1 şi v2 au valori egale
v1 = 20
MessageBox.Show(v1.Equals(v2).ToString, "Modificarea valorii
lui v1 lasă pe v2 nemodoficată") 'False
'Modificarea valorii lui v1 lasă pe v2 nemodoficată
MessageBox.Show(o1.Equals(o2).ToString, "Deşi conţin referinţe
la obiecte identice") 'False
'Deşi conţin referinţe la obiecte identice, variabilele referinţă au
valori diferite
o1.Text = "Eticheta1"
o2.Text = "Eticheta2"
MessageBox.Show("Propietatea Text a lui o1 este: " & o1.Text &
" Iar propietatea Text a lui o2 este: " & o2.Text, "o1 si o2 refera
obiecte diferite")
'o1 si o2 refera obiecte diferite
o1 = o2
'Conţinutul variabilei o2 se atribuie variabilei o1 (conţin/referă -
aceaşi zonă de memorie, adică acelaşi obiect)
MessageBox.Show(o1.Equals(o2).ToString, " o1 = o2") 'True
MessageBox.Show("Propietatea Text a lui o1 este: " & o1.Text &
" Iar propietatea Text a lui o2 este: " & o2.Text, " Amandoua
variabilele refera obiectul 2")
'Variabilele o1 si o2 au aceeasi valoare (refera aceasi adresa de
memorie - acelasi obiect)
o1.Text = "Valoare modificata"
MessageBox.Show("Propietatea Text a lui o1 este: " & o1.Text &
" Iar propietatea Text a lui o2 este: " & o2.Text, " Modificarea unei
proprietati prin variabila de referinta o1 modifica aceeasi proprietate
din o2")
'Modificarea unei proprietati prin variabila de referinta o1 modifica
aceeasi proprietate din o2
'De fapt zona de memorie (obiectul referit initial de o1)s-a pierdut
(nu mai este referit)
End Sub
End Class

13
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

Figura 3.2(1)
Iniţial:

Ulterior: O1= O2

14
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

 Întrebări
1. Definiţi conceptul de tip de dată.
2. Ce stabileşte tipul de dată pentru zona de memorie?
3. Prin ce se caracterizează datele de tip valoare?
4. Prin ce se caracterizează datele de tip referinţă?
5. Când două variabile de tip referinţă sunt egale?

15
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

3.3. Structurile lexicale ale limbajului VB.NET


• Categorii de unităţi lexicale

Un program VB.NET din punct de vedere lexical se compune dintr-un set de elemente de
programare (unităţi lexicale), grupate în următoarele categorii:

− comentarii;
− cuvinte cheie (cuvinte rezervate);
− identificatori (denumiri date de utilizator sau generate automat de sistem);
− literali (valori);
− separatori;
− variabile;
− constante;
− operatori;
− expresii;
− instrucţiuni;
− funcţii şi proceduri intrinseci (existente în sistem);
− proceduri şi funcţii definite de utilizator.

• Comentariile
Comentariile sunt note explicative în program care sunt ignorate de compilator. Ele se
definesc cu ajutorul:
 apostrofului (’);
sau
 a comenzii Rem.
În sensul că tot ce urmează după apostrof este comentariu, iar linia care începe cu Rem este
comentariu.
Exemple:
Dim v1 As Integer = 20 'Definire variabila tip valoare cu initializare
Rem deşi ocupă zone de memorie diferite v1 şi v2 au valori egale

16
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

• Cuvintele cheie
Cuvintele cheie sau cuvintele rezervate sunt cuvinte cu rol bine determinat în cadrul
metalimbajului.
Exemple de cuvinte rezervate: As, ByVal, Class, Dim, Integer, Private, Public.

• Identificatorii
Sunt nume atribuite de utilizator diferitelor elemente de limbaj (variabile, constante, clase,
proprietăţi, metode, etc.) sau sunt generate automat de sistem.
Identificatorii:
 trebuie să fie diferiţi de cuvintele cheie;
 trebuie să înceapă cu o literă sau ( _ underscore);
 pot conţine litere, cifre sau _;
 dacă încep cu _ trebuie să mai conţină cel puţin o cifră sau literă;
 nu pot depăşi 1023 caractere.

Deşi limbajul nu face deosebire între literele mari şi mici cea mai utilizată convenţie în VB
NET este:
 fiecare cuvânt din denumirea unei clase sau metode începe cu literă mare
(ContCurent, CitesteNume);
 denumirea unei variabile sau proprietăţi începe cu literă mică, iar următoarele
cuvinte încep cu majuscule (dataCurenta, numeAngajat);
 identificatorii pentru constante se scriu cu litere mari, despărţite prin _
(COTA_TVA).

• Literalii
Literalii descriu (definesc/conţin) valori de un anumit tip. Astfel:
 valorile alfanumerice (string) sunt încadrate între ghilimele (” ”);
 data calendaristică este încadrată între diez (# #);

Exemple:
Dim iNumar As Integer = 123 'Numar intreg
Dim strNume As String = "Ion" 'Sir
Dim dtDataAleasa As Date = #12/10/2014# 'Data calendaristica
Dim dtDataCurenta As Date = Now() 'Data curenta

17
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

• Separatorii
Separatorii sunt caractere speciale utilizate pentru delimitarea unităţilor lexicale. Aceştia
sunt:
 parantezele rotunde () - utilizate la: definirea procedurilor, funcţiilor, tablourilor
sau la modificarea precedenţei operatorilor;
 punctul (.) - separă denumirea unui obiect de denumirea unui membru (califică o
proprietate sau o metodă);
 virgula (,) - separă elementele unei mulţimi (argumentele unei funcţii);
 liniuţa de subliniere ( _ ) – precedată şi urmată de spaţiu permite continuarea unei
instrucţiuni pe linia următoare;
 două puncte (:) – separă două sau mai multe instrucţiuni scrise pe acelaşi rând.

Observaţii: Trebuie precizat că un spaţiu sau mai multe joacă rol de separator. De asemenea
operatorii aritmetici şi de comparare sunt şi separatori.

• Variabilele
Variabila reprezintă o zonă din memoria internă în care este stocată o valoare de un anumit
tip, care poate fi modificată în timp.

O variabilă este definită:


 printr-un calificativ de acces;
 printr-un nume (identificator);
 printr-un tip de dată;
 printr-o valoare.

Lucrul cu variabilele presupune:


 Declararea variabilei

[calificator de acces] numeVariabilă [As tipData] [=valoare iniţială]

Definirea variabilei presupune:


 alocarea unei zone în memoria internă;
 stabilirea unui identificator (denumire);
 specificarea tipului de dată pe care o conţine;
 precizarea calificativului de acces.

18
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

Declararea unei variabile stabileşte:


 durata de viaţă (perioada de timp în care variabila poate fi utilizată);
 domeniul de vizibilitate (zona din program din care variabila este vizibilă
(accesibilă, cunoscută). Domeniul de vizibilitate este dependent de locul în care
variabila a fost definită şi de nivelul de protecţie stabilit);
 nivelul (drepturile) de acces (defineşte nivelul de protecţie (de acces). Precizează
permisiunea de acces a variabilei din afara zonei în care a fost definită).
Drepturile de acces sunt: public, private, protected (accesibilă în clasa în care a fost definită
şi în clasele derivate din aceasta), friend (\’friend\) (accesibilă numai în proiectul unde a fost
definită), protectedFriend (combinaţia celor două).
Variabilele pot fi declarate folosind cuvintele cheie: Dim, Private, Public sau Static.

 Dim se foloseste in interiorul unei proceduri pentru a declara o variabila locala care este
vizibila numai in cadrul acelei proceduri.
 Private impreuna cu Dim pot fi folosite in afara procedurilor, dar in interiorul claselor sau
modulelor pentru a crea variabile care pot fi accesate de oriunde din interiorul clasei sau
modulului respectiv.
 Public se poate folosi in interiorul modulelor pentru a crea variabile globale, adica variabile
care exista pe toata durata programului si care pot fi accesate de oriunde in proiectul curent.
Daca se foloseste cuvantul cheie Public in interiorul unei clase se va crea un camp public
pentru acea clasa.
 Static se foloseste pentru a declara variabile statice in interiorul procedurilor. Static nu se
poate folosi la declararea procedurii pentru a face toate variabilele declarate in acea
procedura statice.

 Iniţializarea variabilei
Iniţializarea unei variabile înseamnă setarea sa cu o valoare iniţială. Iniţializarea poate fi:
 realizată automat de compilator cu valoarea implicită (în cazul variabilei de tip
valoare, dacă programatorul nu o iniţializează în mod explicit);
 trebuie realizată explicit de programator (în cazul variabilei de tip referinţă).
 Restricții privind numele de variabilă:

 trebuie sa inceapa cu o litera;


 nu poate contine caracterul punct sau un caracter rezervat, de declaratie de tip;
 nu trebuie sa depaseasca 255 de caractere;
 trebuie sa fie unic in cadrul aceluiasi domeniu, care este spatiul in cadrul caruia o
variabila poate fi apelata – o procedura, un formular etc. Pot fi declarate mai multe
variabile in cadrul aceleiasi instructiuni Dim, Private sau Public sau poate fi folosita o
singura clauza As daca variabilele declarate pe aceeasi linie sunt de acelasi tip:

19
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

ex.:

Dim cantitate As Long, greutate As Single, adresa As String

Dim x, y, z As Long

Transferarea valorilor in variabile se face cu ajutorul instructiunii de atribuire.

Aceasta are urmatoarea forma:

Dim varNume As tipvarNume = expresie

varNume poate fi orice nume posibil de variabila care a fost declarata, iar expresie
se refera la o valoare imediata sau o variabila.

Exemple de atribuire a unei valori unei variabile:

’atribuim o valoare unei variabile de tip Integer

Dim varNumar As Integer varNumar = 100

’atribuim o valoare unei variabile de tip String

Dim varNume As String varNume = ”Ionescu”

Variabilele locale sau cele declarate la nivel de clasa (campurile) pot fi declarate si initializate
folosind o singura instructiune. Aceasta optiune permite simplificarea codului.

Dim latime As Single = 1000

Dim nume As String = ”Ion”

’atribuim variabilei valoarea datei curente

Dim dataCurenta As Date=Now()

După cum arată ultima instrucțiune valoarea care este asociată unei variabile nu trebuie să fie
neapărat o constantă. Putem inițializa o variabilă numai dacă este singura variabila declarată în
instrucțiunea Dim, Private sau Public. Inițializarea variabilelor este extrem de folositoare mai ales în
cazul variabilelor declarate la nivel de clasa (câmpuri (fields)) și al variabilelor globale, deoarece
oferă o metoda simplă de a avea valori implicite pentru câmpuri și proprietăți.

20
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

Variabilele pot fi declarate implicit sau explicit.


Pentru a declara o variabila se folosesc declaratiile: Dim, Private, Public, Redim.

A. Declararea implicita (OPTION EXPLICIT OFF)


Determina alocarea zonei de memorie la prima executie a instructiunii in care se utilizeaza variabila.

Public Class Form1


Private Sub Button1_Click(sender As Object, e As EventArgs)
Handles Button1.Click
Dim cant, valoare As Integer
Dim pret As Integer
cant = 100
pret = 50
valoare = cant * pret
MessageBox.Show("Valoarea calculata este:" & " " & valoare)
End Sub
End Class

B. Declararea explicita (ONPTION EXPLICIT ON)


Acest mod de declarare este subînțeles. Modul de declarare explicit forțează declararea variabilelor.

OPTION EXPLICIT ON

Public Class Form1

Private Sub Button2_Click(sender As Object, e As EventArgs)


Handles Button2.Click
Dim valoare As Integer
Dim cant As Integer = 100
Dim pret As Integer = 50
valoare = cant * pret
MessageBox.Show("Valoarea calculata este:" & " " &
valoare)
End Sub
End Class

21
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

• Constantele
Constantele descriu zone din memoria internă în care sunt stocate valori de un anumit tip care
nu pot fi modificate.

O constantă este definită astfel:

[calificator de acces] Const numeConstantă [As tipData] =valoare

Exemplu:

Public Class Form1

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click


Const Suma As Integer = 50000
Const Text As String = "Dobanda calculata este:"
Dim Dobanda As Single
Dobanda = (Suma * 6 / 100) * 1 / 12
MessageBox.Show(Text & " " & Dobanda)
End Sub
End Class

• Operatori
Operatorul este un element ce execută o operaţie asupra uneia sau mai multor valori (numite
operanzi). Operatorii limbajului VB.NET sunt grupaţi în următoarele categorii:

 operatori aritmetici:

Operator Descriere
^ Ridicare la putere
Operatorii
unari: +,-
*,/ Înmulţire/Împărţire
\ Împărţire întreagă (returnează partea întreagă a
împărţirii a două numere)
Mod Restul împărţirii
+,- Adunare/Scădere

22
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

 operatori de atribuire:

Operator Sintaxa Descriere


= operand1= operand2 Atribuie operandului din stânga (operand1)
valoarea operandului din dreapta (operand2)
+= operand1+= operand2 operand1= operand1 + operand2
-= operand1-= operand2 operand1= operand1 - operand2
*= operand1*= operand2 operand1= operand1 * operand2
/= operand1/= operand2 operand1= operand1 / operand2
\= operand1\= operand2 operand1= operand1 \ operand2
^= operand1^= operand2 operand1= operand1 ^ operand2

 operatori de comparare:

Operator Descriere
= Egal
<> Diferit
< Mai mic
<= Mai mic sau egal
> Mai mare
>= Mai mare sau egal
Is Compară două valori de tip referinţă şi returnează True dacă
ambele referă acelaşi obiect
isNot Opusul lui Is
Like Compară două şiruri de caractere. Admite şi jokerii: ? orice
caracter singular; * zero sau mai multe caractere; # o cifră

 operatori de concatenare:

Operator Descriere
+ Concatenează doi operanzi doar dacă ambii sunt de tip şir; încearcă
să adune dacă este posibil în caz contrar
& Face conversia la modul string a operanzilor şi îi concatenează

23
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

 operatori logici:

Operator Sintaxa Descriere


Not Not operandLogic Returnează negaţia logică a operandului
a) operandLogic1 And
operandLogic2
a) Returnează True dacă ambii operanzi sunt
And, sau True şi False în caz contrar
AndAlso b) operandLogic1 b) Ca la a) dar ignoră operandul2 dacă primul
AndAlso operandLogic2 este False

a) operandLogic1 Or
operandLogic2
a) Returnează True dacă un operand este True
sau şi False în caz contrar
Or, OrElse
b) operandLogic1 OrElse b) Ca la a) dar ignoră operandul2 dacă primul
operandLogic2 este True

Xor
operandLogic1 Xor Returnează True când operanzii au valori
(sau operandLogic2 diferite
exclusiv)

 alţi operatori:

Operator Sintaxa Descriere


AddressOf AddressOf Returnează adresa din memorie a unei proceduri
numeProcedură
GetType GetType (tipDate) Returnează obiectul aferent unui tip precizat
TypeOf TypeOf operand is tipDate Returnează True dacă operand este de tipul
tipDate şi Fals în caz contrar

24
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

• Instrucţiunile
Instrucţiunile sunt unităţi lexicale ale limbajului care descriu ce trebuie să facă programul
(prelucrările pe care le face). Sunt propoziţii construite cu ajutorul cuvintelor cheie şi/sau al
expresiilor.

Acestea pot fi:


 Instrucţiuni declarative
Instrucţiunile declarative sunt cele prin care sunt definite variabilele,
constantele, procedurile, clasele, etc.
 Instrucţiuni executabile
Instrucţiunile executabile sunt instrucţiunile care declanşează anumite acţiuni. Acestea
pot fi:
 Instrucţiuni de control;
 Alte instrucţiuni de execuţie.

• Expresiile
Expresia este o construcţie formată din cel puţin un operand şi un operator. Operanzii unei
expresii pot fi variabile, constante, literali, proprietăţi sau metode ale unui obiect, funcţii
intrinseci VB.NET sau definite de utilizator, alte expresii.

25
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

 Întrebări

1. Care sunt principalele unităţi lexicale?


2. Cum pot fi inserate comentariile într-un program VB.NET?
3. Ce restricţii trebuie să respectăm atunci când construim un identificator?
4. Ce rol au separatorii?
5. Ce presupune lucrul cu variabilele?
6. Care sunt principalii operatori logici şi în ce ordine se execută?
7. Daţi exemple de alţi operatori.
8. Ce sunt instrucţiunile şi cum se clasifică?

26
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

3.4. Instrucţiuni în VB.NET


• Instrucţiunile declarative

Sunt instrucţiunile prin care se definesc variabile, constante, proceduri, clase, etc.
Cele mai importante instrucţiuni declarative în VB.NET sunt:
Instrucţiune Nivel Descriere Exemple
Class Student
Fişier/ Defineşte o clasă
Class …
Clasă utilizator
End Class
Declară una sau mai
Const Oricare Const Pi As Single = 3,14
multe constante
Declară una sau mai
multe variabile
Dim Oricare Dim a, b As Integer
(echivalent cu tipul
Private)
Enum MsgBoxRezult
Ok=1
Cancel=2
Declară o enumerare,
o listă de constante Abort=3
Fişier/
Enum întregi, fiecare Retry=4
Clasă
identificată printr-un Ignore=5
nume
Yes=6
No=7
End Enum
Function ArieCerc (r As Single) As
Single
Defineşte o funcţie Const Pi As Single = 3,141
Function Clasă
utilizator sau metodă
Return Pi*r^2
End Function

27
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

Instrucţiune Nivel Descriere Exemple


Class Persoana
Private m_Nume As String
Public Property sNume() _
As String
Get
Declară proceduri
Property Return m_Nume
specifice pentru
Set Clasă scrierea/citirea End Get
proprietăţilor
Get Set(ByVal numeNou As String)
(atributelor) unei clase
m_Nume = numeNou
End Set
End Property

End Class
Defineşte o interfaţă
Interface FormeGeometrice
(clasă abstractă pură,
Fişier/
Interface ce conţine numai …
Clasă
semnăturile End Interface
operaţiilor)

Defineşte un spaţiu de Namespace Operaţii


Namespace Fişier nume propriu …
aplicaţiei
End Namespace
Sub AfiseazaArieDreptunghi (p1 As
Defineşte o procedură Single, p2 As Single)
Sub Clasă utilizator sau o
MsgBox(p1*p2)
metodă
End Sub

28
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

Instrucţiunile de control

Instrucţiunile de control (structurile de control) stabilesc ordinea de execuţie a prelucrărilor,


de câte ori sau până când se execută anumite prelucrări.

Acestea pot fi grupate în:


 structuri de control fundamentale (liniară, alternativă şi repetitivă cu test iniţial)

a) liniară

29
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

Exemplu în VB.Net
Dim nota1 As Integer
Dim nota2 As Integer
nota1 = InputBox("Tastati nota1")
nota2 = InputBox("Tastati nota2")
MsgBox("nota1= " & nota1 & Chr(13) & Chr(10) & " nota2= " & nota2)
MsgBox("media notelor= " & (nota1 + nota2) / 2)

b) alternativă
dacă condiţie atunci

secvenţa 1

altfel

secvenţa 2

sfârşit (comandă)

Grafic Pseudocod

 implementarea în VB.NET
If expresieLogica = TRUE Then
secvenţa 1
else
secvenţa 2
End If
 exemplu
Dim notaLaProgramare As Integer
Dim nrPromovati As Integer
Dim nrNePromovati As Integer
notaLaProgramare = InputBox("Tastati nota la programare")
If notaLaProgramare > 4 Then
nrPromovati = nrPromovati + 1
Else
nrNePromovati = nrNePromovati + 1
End If
MsgBox(”Promovati: ” & nrPromovati & ” Nepromovati: ” &
nrNePromovati)
30
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

c) structura repetitivă cu test iniţial

Cât timp condiţie execută

secvenţa

sfârşit comandă

Grafic Pseudocod

 implementarea în VB.NET
While conditieLogica
Secvenţa care se repetă
End While

 exemplu
Dim raspuns As String = "da"
Dim numarIntreg As Integer
Dim sumaNumerelor As Integer
sumaNumerelor = 0
While raspuns = "da"
numarIntreg = InputBox("Tastati un numar intreg: ")
sumaNumerelor += numarIntreg
raspuns = LCase(InputBox("Mai sunt date? (da/nu)"))
End While
MsgBox("Suma calculata= " & sumaNumerelor)

31
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

 alte structuri de control


a) pseudo alternativă
- stânga

Schem a logica Pseudocod

D aca conditie atunci


NU DA
Altfel
C onditie
Set_Instructiuni

Sfârsit daca
Set_Instructiuni

If expresieLogica = TRUE Then


else
secvenţa Nu

End If
- dreapta

S c h em a lo g ic a P seu d o c o d

D a c a c o n d itie a tu n c i
NU DA
S e t_ In s tru c tiu n i
C o n d itie
S fâ rs it d a c a

S e t_ In s tru c tiu n i

32
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

If expresieLogica = TRUE Then


secvenţa Da
End If
b) If imbricat (if în if)
If conditie_1 Then
[Set_Instrucţiuni_1]
[ElseIf condiţie_2 Then
[Set_Instrucţiuni_2]]

...
[Else
[Set_Instrucţiuni_n]]
End If

Exemplu: Să se scrie o procedură care realizează o „apreciere” în funcţie de valoarea


notei obţinute.
Sub Apreciere(iNota As Integer)
If iNota = 9 Or iNota = 10 Then
MsgBox("foarte bine")
ElseIf iNota = 7 Or iNota = 8 Then
MsgBox("bine")
ElseIf iNota = 5 Or iNota = 6 Then
MsgBox("satisfacator")
Else
MsgBox("mai invata")
End If
End Sub
c) structura alternativă generalizată
- permite execuţia selectivă a unui singur bloc de instrucţiuni ales dintre mai multe
blocuri în funcţie de o condiţie (opţiune) stabilită. O instrucţiune Select Case are
aceleaşi posibilităţi cu instrucţiunea If ... Then ... Else, dar ea face codul mai lizibil
atunci când există mai multe opţiuni.

33
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

Schema logica Pseudocod

Alege expresie dintre


valoare_1: Set_Instructiuni_1

expresie valoare_2: Set_Instructiuni_2


...
valoare_n: Set_Instructiuni_n

Altfel

valoare_n

al
1
r e_

tfe
a Set_Instructiuni_n+1

l
v alo
Sfârsit alege

Set_Instructiuni_1 ... Set_Instructiuni_n Set_Instructiuni_n+1

Select Case expresie de testat


[Case lista de expresii 1
[bloc de instrucţiuni 1]]
[Case lista de expresii 2
[bloc de instrucţiuni 2]]
.
.
.
[Case Else
[bloc de instrucţiuni n]]
End Select
Notă:
Execuţia unei instrucţiuni Select Case începe întotdeauna prin evaluarea expresiei de test,
care poate fi o expresie numerică sau o expresie şir de caractere. Visual Basic compară apoi
rezultatul acestei expresii cu valorile din fiecare bloc Case al structurii. Dacă apare o
echivalenţă, blocul de instrucţiuni asociat acelui Case va fi executat.

34
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

Fiecare listă de expresii este o listă având una sau mai multe valori. Dacă într-o singură listă
se află mai multe valori, ele trebuie separate prin virgule. Fiecare bloc de instrucţiuni conţine
zero sau mai multe instrucţiuni. Dacă mai multe clauze Case sunt echivalente cu expresia de
testat, doar blocul de instrucţiuni asociat primei clauze Case echivalente, va fi executat.
Visual Basic execută instrucţiunile din clauza Case Else (care este opţională) doar dacă nici
una din valorile din lista de expresii nu este egală cu expresia de testat.
Observaţie:
În lista de expresii se pot defini: enumerări separate prin virgulă; domenii închise cu ajutorul
cuvântului rezervat To (exemplu de la 20 la 41 impune “20 To 41” (sau Between 20 And
41); intervale (domenii) deschise definite prin cuvântul rezervat Is şi a operatorilor de
comparaţie > (mai mare) sau < (mai mic) şi alţi operatori de comparaţie (=, <>, >=,<=); etc.
Exemplu:
Dim tipCont As String = Ucase(InputBox(“Tasatati tip cont”))
Select Case tipCont
Case ”A”
MsgBox(”Cont de activ”)
Case ”P”
MsgBox(”Cont de pasiv”)
Case ”B”
MsgBox(”Cont de bifunctional”)
Case Else
MsgBox(”Tip cont eronat”)
End Select

35
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

d) structura repetitivă cu test final

e) structuri repetitive cu test iniţial (anterior) sau final (posterior)


-cu test iniţial
Do [{While | Until} condiţie]
[Set_Instrucţiuni_1]
[Exit Do]
[Set_Instrucţiuni_2]
Loop

-cu test final


Do
[Set_Instrucţiuni_1]
[Exit Do]
[Set_Instrucţiuni_2]
Loop [{While | Until} condiţie]

36
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

f) cu număr cunoscut de paşi (cu contor) sau structura For …Next

Schema logica Pseudocod

Pentru contor = val_initiala


contor = val_initiala
pâna la val_finala cu pas

Set_Instructiuni

Repeta

DA
contor <=
val_finala

Set_Instructiuni

NU
contor=contor+pas

Sintaxă:

For contor=val_iniţială TO val_finală [Step pas]


[Set_Instrucţiuni_1]
[Exit For]
[Set_Instrucţiuni_2]
Next [contor]

37
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

Practic, execuţia ciclului For Next presupune:


1. Se iniţializează început, sfârşit şi opţional pas. Fixează contorul egal cu început.
2. Testează dacă valoarea din contor este mai mare decât sfârşit (pentru valoarea
pasului pozitivă) sau dacă valoarea din contor este mai mică decât sfârşit (pentru
valoarea pasului negativă). Dacă da, se iese din buclă.
3. Execută instrucţiunile.
4. Modifică contorul cu 1 sau cu valoarea pasului, dacă există.
5. Se reia pasul 2.
Comanda Exit For poate fi plasată oriunde în cazul instrucţiunii For…Next şi ori de
câte ori se consideră necesar, constituind o alternativă de ieşire din ciclu (de terminare a
ciclului) fără a parcurge toate prelucrările şi fără a aştepta îndeplinirea condiţiei de sfârşit
ciclu. Comanda apare de regulă după evaluarea (testarea) unei condiţii şi în funcţie de
rezultat se poate decide (printr-o comandă If…Then) continuarea execuţiei cu prima
instrucţiune după Next, dacă avem o buclă simplă sau întoarcerea la bucla de nivel imediat
superior, dacă bucla este imbricată.
Exemplu:
Să se realizeze funcţia care returnează media elementelor unui vector.
Function medie(vector() As Double) As Double
Dim i As Integer
Dim dTotal As Double
Dim iNrElem As Integer
iNrElem = 0
dTotal = 0
For i = LBound(vector) To UBound(vector)
dTotal = dTotal + vector(i)
iNrElem = iNrElem + 1
Next i
medie = dTotal / iNrElem
End Function

38
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

d) Instrucţiunea For Each ... Next


O buclă For Each ... Next seamănă cu bucla For ... Next, însă ea repetă o serie de instrucţiuni
pentru fiecare element dintr-o colecţie de obiecte sau din cadrul unei matrice, în loc să repete
instrucţiunile de un număr dat de ori. Acest lucru este util mai ales când nu se ştie exact câte
elemente are o colecţie.
Sintaxa unei bucle For Each ... Next este:
For Each element In grup
[bloc de instrucţiuni 1]
[Exit For]
[bloc de instrucţiuni 2]
Next [element]

Alte instrucţiuni executabile

Cele mai utilizate instrucţiuni executabile altele decât cele de control sunt:

Instrucţiune Descriere Exemple


Apelează o procedură uneori şi
Call funcţie la care nu ne Call AfiseazaArieDreptunghi(4.1,2.3)
interesează rezultatul returnat
End Termină execuţia programului End
Importă elementele unui spaţiu
Imports Import System.Math
de nume în fişierul sursă
Activează On sau dezactivează Option Explicit On
Option Off obligativitatea declarării
Option Explicit Off
Explicit explicite a variabilelor, înaintea
utilizării lor
Activează On sau dezactivează Option Strict On
Off conversiile implicite
Option Strict Option Strict Off
efectuate cu restrângerea
domeniului
Rem Defineşte un comentariu Rem Urmeaza initializarea
Determină ieşirea dintr-o
procedură sau funcţie cu Return
Return
întoarcerea rezultatului în cazul Return PI*r^2
funcţiilor
Suspendă temporar execuţia
Stop programului (Reluarea se face Stop
cu F5 - Run)

39
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

 Întrebări
1. Ce sunt instrucţiunile declarative?
2. Ce sunt instrucţiunile de control?
3. Care sunt structurile fundamentale de control specifice programării structurate şi cum sunt
implementate în VB.NET?
4. Ce alte structuri de control au mai fost implementate în VB.Net în afara celor
fundamentale?

40
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

3.5. Subprograme în VB.NET


Subprogramele în VB.NET sunt definite de proceduri şi funcţii. Procedurile şi funcţiile por fi
intrinseci (definite de MS şi incluse în bibliotecile de bază ale sistemului) sau definite de utilizator.

• Funcţiile de sistem (intrinseci)


Funcţiile de sistem sunt unităţi lexicale definite de creatorul limbajului care execută anumite
prelucrări. În VB numele unei funcţii trebuie urmate de paranteze rotunde (), între care se
introduc parametrii actuali dacă este cazul. Apelul lor este permis doar în interiorul
subprogramelor (proceduri sau funcţii). Deoarece funcţiile întorc prin numele său o valoare
pot fi utilizate şi ca operanzi într-o expresie.
În VB.NET pentru funcţiile de sistem au fost definite metode care respectă toate cerinţele
programării .NET. Existenţa funcţiilor este legată doar de compatibilitatea cu versiunile
anterioare ale lui VB.
Principalele categorii de funcţii intrinseci (de sistem) în VB sunt:

a) Funcţii pentru conversii de tipuri


- permit conversia valorilor dintr-un tip de date în altul
- principalele funcţii din această categorie sunt:

Funcţie Descriere Exemple

Returnează codul ASCII sau


Asc(c)
UNICODE al caracterului c; rezultatul
AscW(c)
este de tip întreg

CBool(e)
CByte(e)
CChar(e)
CDate(e)
Converteşte o expresie (compatibilă) în
Cdble(e)
tipul specificat: Boolean, Byte,
CDec(e)
Character,etc.
CInt(e)
CLng(e)
CSng(e)
CStr(e)

41
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

Funcţie Descriere Exemple

Chr (i) Returnează caracterul ASCII sau


ChrW(i) UNICODE aferent întregului i

Converteşte expresia (e) compatibilă în Dim i As integer


CType(e,t)
tipul specificat (t) i= CType(“34”,Integer)

Converteşte espresia (e) în şir de


Format(e,f) MsgBox(Format(3.7,”#0.00”))
caractere după formatul (f) specificat

Converteşte numărul n (cu separatorul .


pentru virgulă) într-un şir de caractere
Str(n)
Când nu lucrăm în sistemul anglo-
saxon se preferă funcţia CStr(e)

Converteşte şirul s în număr


Val(s) Când nu lucrăm în sistemul anglo-
saxon se preferă funcţia CNumeric(e)

b) Funcţii pentru operaţii cu şiruri de caractere


- mai sunt păstrate în VB.NET din motive de compatibilitate cu versiunile anterioare
ale limbajului VB
- în VB.NET este de recomandat să se utilizeze metodele clasei String (IndexOf,
Replace, Substring, ToLower, ToUpper, Trim, etc.)
- principalele funcţii pentru operaţii cu şiruri de caractere sunt:

Funcţie Descriere Exemple


Instr(s1,s2) Returnează prima poziţie în care
apare şirul de caractere s2 în cadrul
şirului s1 (0 dacă s2 nu se regăseşte
în s1)

LCase(s) Transformă literele şirului s în litere


mici

Len(s) Returnează numărul de caractere


din şirul s

42
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

Funcţie Descriere Exemple

Mid(s,p,l) Extrage din şirul s, un subşir


începând din poziţia p de lungime l
(numărătoarea) începe de la zero

UCase(s) Transformă literele şirului s în litere


mari

Trim(s) Elimină spaţiile de la începutul sau


sfârşitul şirului s

c) Funcţii pentru operaţii cu date calendaristice

Funcţie Descriere Exemple

Day(d) Extrage ziua din data calendaristică d

DateAdd(i,nr,d) Returnează o dată calendaristică nouă


obţinută prin adunarea la o dată
calendaristică iniţială d a unui interval
nr de un anumit tip i
(DateInterval.Day,
DateInterval.Month, etc.)

DateDiff(i,d1,d2) Returnează diferenţa (intervalul) de


tipul intervalului i specificat
(DateInterval.Day,
DateInterval.Month, etc.) dintre datele
calendaristice d2 şi d1

Month(d) Extrage luna dintr-o dată


calendaristică d

Now() Returnează data şi ora sistemului

Year(d) Extrage anul dintr-o dată


calendaristică d

43
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

d) Funcţii de informare
- testează apartenenţa unei variabile la un anumit tip de dată

Funcţie Descriere Exemple

IsArray(e) Returnează True dacă argumentul este


vector şi False în caz contrar

IsDate(e) Returnează True dacă argumentul este dată


calendaristică şi False în caz contrar

IsNothing(e) Returnează True dacă argumentul este un


obiect concret şi False în caz contrar

IsNumeric(e) Returnează True dacă argumentul este


numeric şi False în caz contrar

IsReference(e) Returnează True dacă argumentul este de


tip referinţă şi False în caz contrar

TypeName(e) Returnează numele tipului argumentului e

e) Funcţii pentru interacţiunea cu utilizatorul final


- cele mai utilizate sunt InputBox (p1, [p2],[p3]) şi MsgBox(p4, [p5],[p6])
Unde: p1, p4-mesajul afişat; p2,p6 –titlul ferestrei, p3-valoarea predefinită,
p5-butoanele generate
f) Funcţii matematice
g) Funcţii financiare

44
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

• Subprogramele definite de utilizator


Subprogramele definite de utilizator reprezintă proceduri sau funcţii definite de utilizator,
formate din blocuri de instrucţiuni destinate realizării împreună a unor operaţii pentru
atingerea unui obiectiv.
Procedurile (numite şi subrutine) sunt subprograme care nu returnează valori.
Funcţiile sunt subprograme ca returnează o valoare prin numele funcţiei. Numele procedurii
sau funcţiei şi lista de parametrii – definesc semnătura procedurii sau funcţiei.
Avantajele utilizării subprogramelor sunt:
 simplifică programul (prelucrările ca se repetă se scriu o singură dată şi apoi sunt
apelate – nu mai sunt inserate în program);
 programele sunt mai uşor de verificat şi de întreţinut (se verifică mai întâi
subprogramul şi după ce se constată că este corect – poate fi utilizat cu încredere;
când se fac modificări acestea se fac doar în subprogramele afectate restul
programului nu este afectat);
 se încurajează reutilizarea (subprogramele pot fi utilizate în mai multe programe
sau proiecte).
Procedurile şi funcţiile utilizatorului, în cadrul claselor se numesc metode.
 Definirea şi apelul unei proceduri (subrutine)
 Definirea unei proceduri
Public/Private/Protected/Friend/… Sub numeSubrutina ([Listă
parametrii _ formali])
Instrucţiuni
[Return]
End Sub
- la apel se execută prelucrările cuprinse între Sub şi End Sub sau între Sub şi prima
instrucţiune Return/Exit întâlnită după care prelucrarea va continua cu instrucţiunea
următoare celei care a apelat-o
- prelucrările se fac asupra (cu valorile) parametrilor actuali (reali) transmişi la apel
 Apelul unei proceduri
[Call] numeSubrutina([Listă parametrii actuali])

45
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

 Definirea şi apelul unei funcţii


 Definirea unei funcţii
Public/Private/Protected/Friend/… Function numeFunctie([Listă
parametrii _ formali]) [As tipRezultat]
Instrucţiuni
[Return expresie]
End Function
- la apel se execută prelucrările cuprinse între Function şi End Function sau între
Function şi prima instrucţiune Return/Exit întâlnită, după care prelucrarea va continua
cu instrucţiunea următoare celei care a apelat-o sau imediat după locul apelului în
cazul utilizării în cadrul unei expresii
- prelucrările se fac asupra (cu valorile) parametrilor actuali (reali) transmişi la apel
- deoarece numele Funcţiei întoarce un rezultat atunci: fie numele funcţiei va apare cel
puţin o dată în partea stângă a unei expresii de atribuire, fie se va utiliza Return
expresie (expresia este cea care calculează şi întoarce rezultatul)
 Apelul unei funcţii
[Call] numeFunctie([Listă parametrii actuali])
- când se ignoră (nu se valorifică) rezultatul returnat de funcţie
[rezultat =] numeFunctie([Listă parametrii actuali])
- când se valorifică rezultatul returnat de funcţie prin variabila rezultat sau în cadrul
unei expresii
 Transmiterea parametrilor subprogramelor
Parametrii pot fi transmişi subprogramelor:
 prin valoare ByVal (implicit):
Sunt transmise copii ale valorilor supuse prelucrării şi dacă acestea se modifică prin
subprogram, valorile iniţiale rămân nemodificate.
 prin referinţă ByRef:
Sunt transmise adresele din memorie a valorii parametrilor şi dacă aceste valori vor fi
modificate prin subprogram vor fi modificate şi valorile iniţiale.

Specificaţia ByVal sau ByRef se face la definirea subprogramelor în lista de parametrii


formali pentru fiecare parametru în parte.

46
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

Exemple:
a) definire şi apel procedură
- definire
Private Calcule(ByVal x As Integer, ByVal y As Integer, ByVal z As Integer)
Dim suma1 As Integer
Dim produs1 As Integer
Dim xminusy As Integer
Dim ximpartity As Single
suma1=x+y+z
produs1=x*y*z
xminusy=x-y
ximpartity=x/y

msgbox(“ximpartity= ” & ximpartity)


End Sub
-apel
[Call] Calcule(8,4,2)

b) definire şi apel funcţie


- definire
Private Function CalculArieDreptunghi(ByVal lungime As Integer, ByVal
latime As Integer) As Integer
CalculArieDreptunghi= lungime * latime
End Function

sau
Private Function CalculArieDreptunghi(ByVal lungime As Integer, ByVal
latime As Integer) As Integer
Return lungime * latime
End Function
- apel funcţie
Dim a As Integer=10
Dim b As Integer=5

47
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

Dim inaltime As Integer = 6


Dim arie As integer
Dim volum As Integer
MsgBox(“Aria dreptunghiului este: ” & CalculArieDreptunghi(a, b))
arie= CalculArieDreptunghi(a, b)
volum = arie * inaltime

48
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

 Întrebări
1. Ce categorii principale de funcţii intrinseci sunt implementate în VB.NET.
2. Ce sunt subprogramele şi cum se transmit parametrii?
3. Cum se defineşte şi cum se apelează o funcţie definită de utilizator?


Bibliografie Unitatea de învăţare 3

1. A. COZGAREA – Programarea calculatoarelor, introducere în VB.NET,


Editura ASE Bucureşti, 2008;
2. Gh. POPESCU – Programarea calculatoarelor în limbajul Visual Basic, Editura
Gestiunea Bucureşti, 2007.

49
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET
_________________________________________________________________________________________________________________

OBIECTIVELE UNITĂŢII DE ÎNVĂŢARE 3 ................................................................................. 2

3.1. Introducere în VB.NET...................................................................................................................... 3

3.2. Tipuri de date ................................................................................................................................... 9

3.3. Structurile lexicale ale limbajului VB.NET ...................................................................................... 16

3.4. Instrucţiuni în VB.NET .................................................................................................................... 27

3.5. Subprograme în VB.NET ................................................................................................................. 41

Bibliografie Unitatea de învăţare 3................................................................................................ 49

50
© prof. univ. dr. Gh. POPESCU & conf. univ. dr. V. POPESCU

S-ar putea să vă placă și