u3 elementele limbajului vb net.doc

57
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 1 Copyright Catedra Informatică de Gestiune, 2010

Upload: maya-ioana

Post on 01-Jan-2016

61 views

Category:

Documents


0 download

DESCRIPTION

Limbajul VB NET

TRANSCRIPT

Page 1: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 2: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Bibliografie Unitatea de învăţare 3

2Copyright Catedra Informatică de Gestiune, 2010

Page 3: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 4: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 5: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 6: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 7: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 8: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 9: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 10: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 11: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 12: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Iniţial:

Ulterior: O1= O2

12Copyright Catedra Informatică de Gestiune, 2010

Page 13: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 14: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 15: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 16: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 17: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 18: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 19: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 20: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 21: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 22: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 23: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 24: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 25: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 26: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 27: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 28: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 29: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 30: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 31: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 32: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 33: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 34: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 35: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 36: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 37: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 38: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 39: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 40: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 41: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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

Page 42: U3 ELEMENTELE LIMBAJULUI VB NET.doc

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