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 BASICCaracteristicile limbajului VB.NETPlatforma .NET FrameworkStructura unei aplicaţii în VB NETÎntrebări
3.2. Tipuri de date
Definirea conceptului de tip de datăCategorii de tipuri de dateCopierea şi compararea datelorÎntrebări
3.3. Structurile lexicale ale limbajului VB.NET
Categorii de unităţi lexicaleComentariileCuvintele cheieIdentificatoriiLiteraliiSeparatoriiVariabileleConstanteleOperatoriInstrucţiunileÎntrebări
3.4. Instrucţiuni în VB.NET
Instrucţiunile declarativeInstrucţiunile de controlAlte instrucţiuni executabile Întrebări
3.5. Subprograme in VB.NET
Funcţiile de sistem (intrinseci)Subprogramele definite de utilizatorÎntrebări
1Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
Bibliografie Unitatea de învăţare 3
2Copyright Catedra Informatică de Gestiune, 2010
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.
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
3Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
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.
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
1 John Connell, Microsoft Visual Basic .NET, Editura Teora 2003, pg. 44
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
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
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 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ă CLR.
Pe ultimul nivel se află CLR 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 este marele unificator, el este responsabil de rularea programului pe orice
platformă pe care poate rula CLR. Practic CLR 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.
2 John Connell, Microsoft Visual Basic .NET, Editura Teora 2003, pg. 75
Copyright Catedra Informatică de Gestiune, 2010
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:
- Servicii WEB:
6Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
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 Lirary (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).
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
7Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
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 în favoarea ideii că Limbajul Visual Basic nu a rămas pe loc, în
timp ce provocările tehnologice 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?
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);
- pot fi întotdeauna accesate direct;
- nu pot fi derivate în alte tipuri (sunt închise - sealed);
- sunt memorate în stivă (stack).
8Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
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).
Tipurile de date de tip valoare acceptate de VB Net sunt:
TipMărimea
locaţiei
Valoarea
implicităDomeniu
Byte 1 octet 0 0-255 (fără semn)
Boolean 4 octeţi False True sau False
Char 2 octeţi Chr(0) 0, 65.535
Short 2 octeţi 0 -32.768 , 32.767
Integer (întreg) 4 octeţi 0 2.147.483.648, 2.147.483.647
Long (întreg lung) 8 octeţi 0 9.223.372.036.854.775.808,
-9.223.372.036.854.775.807
Single (simplă precizie) 4 octeţi 0.0 -3.402823E38, -1.401298E-45
Double (dublă precizie) 8 octeţi 0.0 -1.79769313486231D308, -
4.940654584124D-324
Date (dată calendaristică) 8 octeţi #01/01/000
1 12:00:00
AM#
ian 1,100 şi dec 31,9999
Structure În funcţie de
platformă
Ushort 2 octeţi 0, 65.535
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 pot fi iniţializate 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:9
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
Tip Mărimea locaţiei Domeniu
Object 4 octeţi Variază
String 10 + 2 octeţi/caracter 0, 2 miliarde de caractere
Unicode
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 = 20
( v2 rămâne nemodificată).
În faza iniţială deşi obiectele o1 şi o2 sunt de acelaşi tip, totuşi 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 (adresa) aceeaşi zonă de memorie, deci acelaşi obiect. În codul prezentat mai jos:
o1 = o2
(însemnă că o1 va lua, va fi transferat conţinutul lui o2; adică şi o1 şi o2 referă 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).
Public Class Form1
10Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
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 eate: " & o1.Text & " Iar propietatea Text a lui o2 eate: " & 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 eate: " & o1.Text & " Iar propietatea Text a lui o2 eate: " & 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 eate: " & o1.Text & " Iar propietatea Text a lui o2 eate: " & 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 referint) End SubEnd Class
Figura 3.2(1)
11Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
Iniţial:
Ulterior: O1= O2
12Copyright Catedra Informatică de Gestiune, 2010
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?
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.
13Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
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
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 dtDataUnu As Date = #12/10/2011# 'Data calendaristica Dim dtDataCurenta As Date = Now() 'Data curenta
Separatorii
14Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
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.
Declararea unei variabile stabileşte:
15Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
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 (\’frend\) (accesibilă numai în proiectul unde a fost
definită), protectedFriend (combinaţia celor două).
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ţă).
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
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)
16Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
Mod Restul împărţirii
+,- Adunare/Scădere
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 Descriere17
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
+ 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 opranzilor şi îi concatenează
operatori logici:
Operator Sintaxa Descriere
Not Not operandLogic Returnează negaţia logică a operandului
And,
AndAlso
a) operandLogic1 And
operandLogic2
sau
b) operandLogic1
AndAlso operandLogic2
a)Returnează True dacă ambii operanzi sunt
True şi False în caz contrar
b)Ca la a) dar ignoră operandul2 dacă primul
este False
Or, OrElse a) operandLogic1 Or
operandLogic2
sau
b) operandLogic1 OrElse
operandLogic2
a) Returnează True dacă un operand este True şi
False în caz contrar
b) Ca la a) dar ignoră operandul2 dacă primul
este True
Xor
(sau
exclusiv)
operandLogic1 Xor
operandLogic2
Returnează True când operanzii au valori
diferite
alţi operatori:
Operator Sintaxa Descriere
AddressOf AddressOf numeProcedură
Returnează adresa din memorie a unei proceduri
GetType GetType (tipDate) Returnează obiectul aferent unui tip precizat
TypeOf TypeOf operand is tipDate Returnează True dacă operand este de tipul
18Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
tipDate şi Fals în caz contrar
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.
Î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ă?
3.4. Instrucţiuni în VB.NET
Instrucţiunile declarative
19Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
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 Fişier/
Clasă
Defineşte o clasă
utilizator
Class Student
…
End Class
Const Oricare Declară una sau mai
multe constante
Const Pi As Single = 3,14
Dim Oricare Declară una sau mai
multe variabile
(echivalent cu tipul
Private)
Dim a, b As Integer
Enum Fişier/
Clasă
Declară o enumerare,
o listă de constante
întregi, fiecare
identificată printr-un
nume
Enum MsgBoxRezult
Ok=1
Cancel=2
Abort=3
Retry=4
Ignore=5
Yes=6
No=7
End Enum
Function Clasă Defineşte o funcţie
utilizator sau metodă
Function ArieCerc (r As Single) As
Single
Const Pi As Single = 3,141
Return Pi*r^2
End Function
Property
Set
Get
Clasă Declară proceduri
specifice pentru
scrierea/citirea
proprietăţilor
(atributelor) unei
Class Persoana
Private m_Nume As String
Public Property sNume() _
As String
20Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
clase Get
Return m_Nume
End Get
Set(ByVal numeNou As String)
m_Nume = numeNou
End Set
End Property
…
End Class
Interface Fişier/
Clasă
Defineşte o interfaţă
(clasă abstractă pură,
ce conţine numai
semnăturile
operaţiilor)
Interface FormeGeometrice
…
End Interface
Namespace Fişier Defineşte un spaţiu de
nume propriu
aplicaţiei
Namespace Operaţii
…
End Namespace
Sub Clasă Defineşte o procedură
utilizator sau o
metodă
Sub AfiseazaArieDreptunghi (p1 As
Single, p2 As Single)
MsgBox(p1*p2)
End Sub
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ă
21Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
început
citeşte ...
atribuie ...
atribuie ...
....
* calculează ...
scrie ...
...
Sfârşit
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ă
22Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
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(”Promopvati: ” & nrPromovati & ”Nepromopvati: ” & _ nrNePromovati)
c) structura repetitivă cu test iniţial23
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
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)
alte structuri de control
a) pseudo alternativă
- stânga
24Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
If expresieLogica = TRUE Then
else
secvenţa Nu
End If
- dreapta
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]]
25Copyright Catedra Informatică de Gestiune, 2010
Set_Instructiuni
Schema logica Pseudocod
Set_Instructiuni
Daca
Sfârsit daca
ConditieNU DA
atunciconditie
Schema logica
Set_Instructiuni
Pseudocod
Daca
Sfârsit daca
ConditieNU DA
Set_Instructiuni
Altfel
atunciconditie
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
...
[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.
26Copyright Catedra Informatică de Gestiune, 2010
Set_Instructiuni_1
Schema logica
Set_Instructiuni_n
Pseudocod
Set_Instructiuni_1
Alege
Sfârsit alege
expresie
Set_Instructiuni_n+1
Altfel
valoare_1:
expresie
Set_Instructiuni_n+1. . .
valoare_n
Set_Instructiuni_2valoare_2:
Set_Instructiuni_nvaloare_n:. . .
dintre
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
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.
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 27
Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
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
d) structura repetitivă cu test final
28Copyright Catedra Informatică de Gestiune, 2010
Set_Instrucţiuni
Schema logică Pseudocod
Set_Instrucţiuni
Atât timp cât
Condiţie
NU
DA
Repeta
conditie
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
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]
f) cu număr cunoscut de paşi (cu contor) sau structura For …Next
29Copyright Catedra Informatică de Gestiune, 2010
contor = val_initiala
Schema logica Pseudocod
Set_Instructiuni
Repeta
contor <=val_finala
NU
DA
Pentru
Set_Instructiuni
contor=contor+pas
contor = val_initiala
pâna la val_finala cu pas
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
Sintaxă:
For contor=val_iniţială TO val_finală [Step pas]
[Set_Instrucţiuni_1]
[Exit For]
[Set_Instrucţiuni_2]
Next [contor]
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.
30Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
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
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]
31Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
[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
Call Apelează o procedură uneori şi funcţie la care nu ne interesează rezultatul returnat
Call AfiseazaArieDreptunghi(4.1,2.3)
End Termină execuţia programului
End
Imports Importă elementele unui spaţiu de nume în fişierul sursă
Import System.Math
Option Explicit
Activează On sau dezactivează Off obligativitatea declarării explicite a variabilelor, înaintea utilizării lor
Option Explicit OnOption Explicit Off
Option Strict
Activează On sau dezactivează Off conversiile implicite efectuate cu restrângerea domeniului
Option Strict OnOption Strict Off
Rem Defineşte un comentariu Rem Urmeaza initializarea
Return Determină ieşirea dintr-o procedură sau funcţie cu întoarcerea rezultatului în cazul funcţiilor
Return Return PI*r^2
Stop Suspendă temporar execuţia programului (Reluarea se face cu F5 - Run)
Stop
32Copyright Catedra Informatică de Gestiune, 2010
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?
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
Asc(c)
AscW(c)
Returnează codul ASCII sau
UNICODE al caracterului c; rezultatul
este de tip întreg
CBool(e)
CByte(e)
Converteşte o expresie (compatibilă) în
tipul specificat: Boolean, Byte,
Character,etc.
33Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
CChar(e)
CDate(e)
Cdble(e)
CDec(e)
CInt(e)
CLng(e)
CSng(e)
CStr(e)
Chr (i)
ChrW(i)
Returnează caracterul ASCII sau
UNICODE aferent întregului i
CType(e,t) Converteşte expresia (e) compatibilă în
tipul specificat (t)
Dim i As integer
i= CType(“34”,Integer)
Format(e,f) Converteşte espresia (e) în şir de
caractere după formatul (f) specificat
MsgBox(Format(3.7,”#0.00”))
Str(n) Converteşte numărul n (cu separatorul .
pentru virgulă) într-un şir de caractere
Când nu lucrăm în sistemul anglo-
saxon se preferă funcţia CStr(e)
Val(s) Converteşte şirul s în număr
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
34Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
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
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
caendaristică 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ă
35Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
calendaristică d
Now() Returnează data şi ora siatemului
Year(d) Extrage anul dintr-o dată
calendaristică d
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
36Copyright Catedra Informatică de Gestiune, 2010
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])
Definirea şi apelul unei funcţii
Definirea unei funcţii
37Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
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.
Exemple:
a) definire şi apel procedură
- definire
38Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
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
Dim inaltime As Integer = 6
Dim arie As integer
Dim volum As Integer
39Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
MsgBox(“Aria dreptunghiului este: ” & CalculArieDreptunghi(a, b))
arie= CalculArieDreptunghi(a, b)
volum = arie * inaltime
40Copyright Catedra Informatică de Gestiune, 2010
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 1
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.
41Copyright Catedra Informatică de Gestiune, 2010
Unitatea de învăţare 3 ELEMENTELE LIMBAJULUI VB.NET_________________________________________________________________________________________________________________
OBIECTIVELE UNITĂŢII DE ÎNVĂŢARE 1.................................................................................................2
1.1. Necesitatea programării, programe informatice.......................................................................2
1.2. Algoritmi....................................................................................................................................4
1.3. Limbaje de programare..............................................................................................................6
1.4. Metode de programare.............................................................................................................8
42Copyright Catedra Informatică de Gestiune, 2010