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