Unitatea de îNVĂŢare 3 elementele limbajului vb. Net


Care sunt principalele unităţi lexicale? 2



Yüklə 257,13 Kb.
səhifə2/2
tarix24.11.2017
ölçüsü257,13 Kb.
#32725
1   2

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

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 clase

Class Persoana

Private m_Nume As String

Public Property sNume() _

As String

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ă







î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ă




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ţial







Cât timp condiţie execută
secvenţa
sfârşit comandă

Grafic

Pseudocod

-implementarea în VB.NET

While conditieLogica

Secvenţa care se repetă

End While

-exemplu

Dim raspuns As String =”da”

Dim numarIntreg As Integer

Dim sumaNumerelor As Integer

sumaNumerelor=0

While Raspuns=”da”

numarIntreg=InputBox(“Tastati un numar intreg: ”)

sumaNumerelor += numarIntreg

raspuns=Lcase(InputBox(“Mai sunt date? (da/nu)”))

End While

msgBox(“Suma calculata= ” & sumaNumerelor)


  • alte structuri de control


a) pseudo alternativă

- stânga




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]]

...
[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.





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 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




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




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.

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]

[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 On

Option Explicit Off




Option Strict

Activează On sau dezactivează Off conversiile implicite efectuate cu restrângerea domeniului

Option Strict On

Option 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

Î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)


CChar(e)

CDate(e)


Cdble(e)

CDec(e)


CInt(e)

CLng(e)


CSng(e)

CStr(e)


Converteşte o expresie (compatibilă) în tipul specificat: Boolean, Byte, Character,etc.




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 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ă 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


  • 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

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

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

MsgBox(“Aria dreptunghiului este: ” & CalculArieDreptunghi(a, b))

arie= CalculArieDreptunghi(a, b)

volum = arie * inaltime

Î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.



1 John Connell, Microsoft Visual Basic .NET, Editura Teora 2003, pg. 4

2 John Connell, Microsoft Visual Basic .NET, Editura Teora 2003, pg. 7

Copyright Catedra Informatică de Gestiune, 2010



Yüklə 257,13 Kb.

Dostları ilə paylaş:
1   2




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin