Sunteți pe pagina 1din 13

Structuri de control

n Visual Basic .NET






















Structuri de control
n Visual Basic .NET













VB.NET VB.NET



Utilitate: Instruciuni care prescriu maniera n care se execut un program/subprogram


Poziionare i utilizare: - Exclusiv la nivel de procedur;
- Este permis imbricarea poziionarea unei structuri de
control n interiorul alteia

Tipologie:
Structuri de control



- Secveniale (Liniare)

- Alternative
IF END IF
SELECT... END SELECT

- Repetitive (Ciclice)
WHILE END WHILE
DO... LOOP
FOR NEXT
VB.NET VB.NET Structuri de control: Secvenial (Liniar)
Private Sub btnTest (...) Handles btnTest.Click
Dim objPersoana As New Persoana declarare variabil-obiect + instaniere obiect

With objPersoana
setarea valorii proprietilor obiectului
.Nume = InputBox (Nume:)
.Prenume = InputBox (Prenume:)
.DataNastere = CDate (InputBox (Data nastere:, ,1/1/1970))

citirea valorii proprietilor obiectului
MsgBox (Nume: & .Nume & & .Prenume & Data nastere: & .DataNastere)
End With

End Sub
Form1.vb (parial)
Exemplu:
Instruciunile se execut una dup alta
VB.NET VB.NET Structuri de control: Alternativ
Execuia anumitor instruciuni depinde de rezultatul evalurii unei anumite condiii
If condiie Then
[ instruciuni1 ]
[ElseIf condiie2 Then
[ instruciuni2 ] ]
[Else
[ instruciuni_N ] ]
End If
IFThenElseEnd If
VB.NET VB.NET
Structuri de control: Alternativ
Private Sub btnTest (...) Handles btnTest.Click
Dim objStudent As New Student declarare variabil-obiect + instaniere obiect
Dim varData As Date = CDate (InputBox (Data nastere:))
Dim varFacultate As String = InputBox (Facultate:)
Dim varNNume As String = InputBox (Nume:)
Dim varPNume As String = InputBox (Prenume:)

If varData >= Today() Then
MsgBox (Nu se accepta dect date anterioare!)
ElseIf (Year (Now()) Year(varData)) < 18 Then
MsgBox (Studentii trebuie sa aiba cel putin 18 ani!)
Else doar pentru o valoare valida:
objStudent.DataNastere = varData
End If

If varFacultate = CIG Or varFacultate = FABBV Or varFacultate = REI Then
objStudent.Facultate = varFacultate
Else
MsgBox (Denumire facultate invalida!)
End If

If Len(Trim(varNNume)) > 0 Then
objStudent.NNume = varNNume
End If

If Len(Trim(varPNume)) > 0 Then objStudent.PNume = varPNume
End Sub
Form1.vb
(parial)
VB.NET VB.NET Structuri de control: Alternativ
Select Case Expresie
[Case listExpresii1
[ instruciuni1 ] ]
[Case listExpresii2
[ instruciuni2 ] ]

[Case Else
[ instruciuni_N ] ]
End Select
Select Case End Select (= structur alternativ multipl)
listExpresii1, listExpresii2 pot fi specificate astfel:
- expresie1 To expresie2 -> interval
- Is + operator comparaie -> comparaii
- expresie1 [, expresie2, expresie3,] -> enumerare valori/expresii
n funcie de rezultatul evalurii, va fi executat un singur bloc de instruciuni:
- Instruciuni1 -> valoarea aferent Expresie corespunde cu listExpresii1
- Instruciuni2 -> valoarea aferent Expresie corespunde cu listExpresii2

- Instruciuni_N -> valoarea aferent Expresie nu corespunde nici unei situaii
desemnate prin lista listExpresii1, listExpresii2 etc.
Execuia anumitor instruciuni depinde de rezultatul evalurii unei anumite condiii
VB.NET VB.NET Structuri de control:Alternativ
Private Sub btnTest1 (...) Handles btnTest.Click

Dim varFacultate As String = InputBox (Facultate:)
Dim varDisciplinaOptionala As String
Select Case varFacultate
Case CIG, FABBV
varDisciplinaOptionala = Management
Case MAN
varDisciplinaOptionala = Contabilitate
Case Else
varDisciplinaOptionala = Microeconomie
End Select

End Sub
Exemplu:
Select End Select
Form1.vb
(parial)
Private Sub btnTest2(...) Handles btnTest.Click

Dim medie As Single = CSng (InputBox (Medie student:))
Dim statut As String
Select Case medie
Case Is < 5
statut = Restantier
Case Is < 8
statut = Promovat
Case Else >= 8
statut = Bursiser
End Select

End Sub
VB.NET VB.NET Structuri de control: Repetitiv
Private Sub btnTest (...) Handles btnTest.Click

Dim objStudent As New Student declarare variabil-obiect + instaniere obiect
Dim varFacultate As String

While varFacultate <> CIG And varFacultate <> FABBV And varFacultate <> REI
MsgBox (Facultate invalida!)
varFaculty = InputBox (Facultate: )
End While

facultatea este valida -> se poate face atribuirea
objStudent.Facultate = varFacultate
End Sub
Exemplu:
Condiionat anterior
Toate instruciunile dintre While End While vor fi
executate ct timp Condiie este evaluat True
n funcie de rezultatul evalurii condiiei, este posibil
ca blocul de instruciuni s nu se execute nici o dat
Exit While foreaz prsirea structurii (blocul
instruciuni2 rmne neexecutat); urmtoarea
instruciune este cea care urmeaz dup End While
While Condiie
[ instruciuni1 ]
[Exit While]
[instruciuni2 ]
End While
While End While
Form1.vb (parial)
VB.NET VB.NET Structuri de control: Repetitiv
Do WhileLoop = While End While
n funcie de rezultatul evalurii condiiei, este
posibil ca blocul de instuciuni din interior s nu fie
executat
Exit Do foreaz prsirea structurii repetitive
(blocul instruciuni2 nu se mai execut);
urmtoarea instruciune e prima dup Loop
Do { While | Until } Condiie
[ instruciuni1 ]
[Exit Do]
[ instruciuni2 ]
Loop
Do Loop
Do
[ instruciuni1 ]
[Exit Do]
[ instruciuni2 ]
Loop { While | Until } Condiie
Condiionat anterior
Condiionat posterior
Se execut cel puin o dat
Exit Do foreaz prsirea structurii repetitive
(blocul instruciuni2 nu se mai execut);
urmtoarea instruciune e prima dup Loop
Repet instruciunile din interior atta timp/pn cnd condiia care controleaz
structura este evaluat True
VB.NET VB.NET
Private Sub btnTest1 (...) Handles btnTest.Click
Dim objStudent As New Student
Dim varFacultate As String
Do While varFacultate <> CIG And varFacultate <> FABBV And varFacultate <> REI
MsgBox (Facultate invalida!)
varFacultate = InputBox (Facultate: )
Loop
objStudent.Facultate = varFacultate
End Sub
Example: Do Loop
Form1.vb (parial)
Private Sub btnTest2 (...) Handles btnTest.Click
Dim objStudent As New Student
Dim varFacultate As String
Do Until varFacultate = CIG Or varFacultate = FABBV Or varFacultate = REI
MsgBox (Facultate invalida!)
varFacultate = InputBox (Facultate: )
Loop
objStudent.Facultate = varFacultate
End Sub
echivalente
Structuri de control: Repetitiv
VB.NET VB.NET Structuri de control: Repetitiv
Private Sub btnTest (...) Handles btnTest.Click

Dim nota As Byte ultima nota preluata
Dim sumaNote As Byte suma notelor studentului vizat
Dim nrNote As Byte numarul notelor studentului vizat

Do
nota = CByte(InputBox (Introduceti nota: , ,5))
If nota < 5 Then Exit Do
sumaNote += nota
nrNote +=1
Loop While MsgBox (Alte note?, MsgBoxStyle.YesNo) = MsgBoxResult.Yes similar cu:
Loop Until MsgBox (Alte note?, MsgBoxStyle.YesNo) = MsgBoxResult.No

If nota < 5 Then
MsgBox (Restanta! Media nu poate fi calculata.)
Else
MsgBox (Student integralist Medie: & sumaNote / nrNote)
End If

End Sub
Example: Do Loop
Form1.vb (parial)
VB.NET VB.NET Structuri de control: Repetitiv
contor = variabila care controleaz numrul de iteraii
tipDate > numeric, ntreg
limit1 = valoarea iniial a variabilei contor
limit2 = valoarea maxm a variabilei contor
pas = valoarea cu care se incrementeaz / decrementeaz varibila contor, la fiecare iteraie
Exit For foreaz prsirea structurii repetitive - instruciuni2 nu se mai execut ->
urmtoarea instruciune e prima dup Next
For contor [As tipDate] = limit1 To limit2 [Step pas]
[ instruciuni1 ]
[Exit For]
[ instruciuni2 ]
Next
For Next
Execut un bloc de instruciuni de un numr de ori predeterminat
Condiionat anterior
VB.NET VB.NET Structuri de control: Repetitiv
Private Sub btnTest (...) Handles btnTest.Click
Dim anStudiuMax As Byte = CByte(InputBox (Anul de studiu curent))
Dim contorAn As Byte permite parcurgerea anilor de studiu de la 1 la anStudiuMax
Dim nrCredite As Byte nr credite acumulate intr-un anumit an de studiu
Dim medie As Byte media unui anumit student, intr-un anumit an de studiu
Dim sumaMedii As Byte suma mediilor anuale -> pt. calcularea mediei generale

For contorAn As Byte = 1 To anStudiuMax
nrCredite = CByte(InputBox(Nr. credite acumulate in anul de studiu # & _
contorAn))
If nrCredite < 60 Then Exit For
medie = CByte(InputBox(Media anului # & contorAn))
sumaMedii += medie
Next

If nrCredite < 60 Then
MsgBox (Student restantier Media nu poate fi calculata!)
Else
MsgBox (Medie generala: & sumaMedii / anStudiuMax)
End If

End Sub
Example: For Next
Form1.vb (parial)

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