Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Structuri de control Visual Basic

Informatica


Structuri de control Visual Basic

    Structurile de control sunt formate din instructiuni. Acestea descriu partea algoritmica a unui program. Ele pot fi prefixate de etichete pentru a putea fi referite în instructiunea de salt neconditionat Goto.

    & 121n131b nbsp;  
Structura liniara

    Structura liniara este formata din doua instructiuni: instructiunea de atribuire si instructiunea de apel procedura.
Instructiunea cea mai importanta si cea mai frecventa a limbajului este instructiunea de atribuire, având forma:
variabila = expresie
sau
Set variabila = obiect
Sau
Nume_de_functie = expresie
    Instructiunea specifica faptul ca unei variabile sau unei fuctii îi exte atribita o noua valoare, care este specificata printr-o expresie sau printr-un obiect. O expresie este o constructie care desemneaza forma de reprezentare a unei formule pentru calculul valorii unui obiect oarecare. O expresie consta dintr-o secventa formata din operanzi (variabile, constante, etc.) si operatori (simboluri operationale).

Exemple:
Dim iAria as Integer, bSemn as Boolean, sNume as String, _
tabStudenti as DAO.TableDef ´ varibila tabStudenti va contine oreferinta catre
´ un obiect DAO.TableDef
    iAria = iLungime * iLatime
    bSemn = True
sNume = ˝Razvan ˝ & ˝Munteanu˝
Set tabStudenti = New DAO.TableDef

    Private Function VolumCub(ByVal iLatura as Integer) as Integer
    & 121n131b nbsp;   VolumCub = iLatura^3
    End Fuction

    Instructiunea de apel procedura specifica activarea (apelul) procedurii al carui nume apare în instructiune. Are forma:
nume_de_procedura lista_parametri_actuali
sau
Call nume_de_procedura(lista_parametri_actuali)
Voi reveni cu informatii suplimentare în capitolul dedicat procedurilor.

    & 121n131b nbsp;  
Structura alternativa

    Structura alternativa este descrisa cu ajutorul instructiunilor If .Then, If .Then .Else si Select Case.
Folositi instructiune If.Then daca doriti ca una sau mai multe instructiuni sa se repete numai daca este îndeplinita o conditie.

    Sintaxa:
    If conditie Then instructiune
    sau
    If conditie Then
    bloc de instructiuni
    End If
    Daca conditia are valoarea True atunci se executa instructiunea sau blocul de instructiuni de dupa Then. Orice valoare numerica diferita de 0 este interpretata ca True iar valoarea 0 este interpretata ca False.
    Exemplu:
    If iNota<5 Then
    & 121n131b nbsp;   MsgBox ˝Elev corigent˝
    End If
Instructiunea de ramificare simpla If.Then.Else are urmatoarea sintaxa:
    If conditia1 Then
    & 121n131b nbsp;   bloc de instructiuni1
    ElseIf conditia2 Then.
    & 121n131b nbsp;  
Bloc de instructiuni2.
    Else
    & 121n131b nbsp;   bloc de instructiuni3
    EndIf
    Visula Basic testeaza întâi conditia1. Daca are valoare False testeaza conditia2 si asa mai departe pâna gaseste o conditie True. Când gaseste o conditie cu valoarea True executa blocul de instructiuni care urmeaza dupa Then si apoi se iese din structura If. Daca nici o conditie nu are valoarea True atunci se va executa codul de dupa Else.

   
Exemplu:
    If iTemp < 0 Then
    & 121n131b nbsp;   bÎnghet = True
Else
    & 121n131b nbsp;   bÎnghet = False
    EndIf
    & 121n131b nbsp;  
    Visual Basic ofera o alternativa la instructiunea If.
Then.Else ce permite executarea unui boc de instructiuni dintre mai multe în cazul în care este îndeplinita o anumita conditie.
Sintaxa:
    Select Case conditia
    Case lista_de_expresii1
    & 121n131b nbsp;   bloc_de_instructini1
    Case lista_de_expresii2
    & 121n131b nbsp;   bloc_de_instructiuni2
    .............
    Else Case
    & 121n131b nbsp;   bloc_de_instructiuniN
    End Select
    Fiecare lista_de_expresii este o lista formata din mai multe variabile. Se testeaza conditia si în functie de valoarea obtinuta se executa blocul_de_instructiuni care este precedat de lasta_de_expresii care contine valoarea selectorului.

Exemplu:

Select Case sLunaAn
Case ˝decembrie˝ ,˝ianuarie˝, ˝februarie˝
    sAnotimp=˝iarna˝
Case ˝martie˝, ˝aprilie˝, ˝mai
    sAnotimp=˝primavara˝
Case ˝iunie˝, ˝iulie˝, ˝august˝
    sAnotimp=˝vara˝
Else Case
    sAnotimp=˝toamna˝
End Select

    & 121n131b nbsp;   Structura repetitiva

    Aceasta structura permite repetarea în anumite conditii a unei instructiuni sau a unei secvente de instructiuni .Visula Basic suporta doua tipuri de structuri repetitive: structuri repetitive cu contor descrise de instructiunile For .Next si For.Each.Next care executa acelasi lucru de un numar stabilit de ori si structuri repetitive cu conditie descrise de diferitele variante ale instructiunii Do.Loop ce îndeplinesc aceeasi sarcina atâta timp cât o conditie exista sau pâna când nu mai exista o conditie.
    Structurile repetitive cu contor încep cu instructiunea For si se termina cu instructiunea Next. Blocul de instructiuni cuprins între For si Next se va executa de un numar stabilit de ori; cu exceptia cazului în care se doreste o parasire fortata a ciclului de repetari.
Sintaxa :
    & 121n131b nbsp;   For VariabilaContor = NumStart to NumSfârsit [Step VariabilaIncr]
    & 121n131b nbsp;   & 121n131b nbsp;   bloc_de-instructiuni
    & 121n131b nbsp;   [Exit For]
    & 121n131b nbsp;   & 121n131b nbsp;   bloc_de_instructiuni
    & 121n131b nbsp;   Next [VaiabilaContor]
    VariabilaContor este o variabila întreaga pe care structura o foloseste pentru a contoriza numarul de repetari efectuate. NumStart si NumSfârsit sunt doua variabile reale care stabilesc valoarea initiala ce o va lua VariabilaContor si, respectiv, valoarea finala. VarablaContor stabileste cu ce valoare se incrementeaza sau decrementeaza VariabilaContor la fiecare repetare. În mod implicit valoarea este 1. Instructiunea Exit For este folosita pentru ca excutia programului sa paraseasca structura repetitiva chiar daca VariabilaContor nu a ajuns sa ia valoarea NumSfârsit (adica nu s-a executat numarul de repetari stabilit).
Exemple:    & 121n131b nbsp;  
For iContor = 1 to 9
    & 121n131b nbsp;   & 121n131b nbsp;   MsgBox ˝Este repetarea numarul: ˝ & Cstr(iContor)
    & 121n131b nbsp;   Next iContor
Acelasi efect se poate obtine si utilizând structura astfel:
For iContor = 9 to 1 Step -1
    & 121n131b nbsp;   & 121n131b nbsp;   MsgBox ˝Este repetarea numarul: ˝ & Cstr(iContor)
    & 121n131b nbsp;   Next iContor

    Instructiunile Do.Loop sunt folosite pentru executia unui bloc de instructiuni de un numar de cunoscut de ori. Exista mai multe variante ale instructiuni Do.Loop dar fiecare evalueaza o anumita conditie. Conditia este o expresie care este evaluata ca fiind falsa (zero) sau adevarata (diferita de zero).
    Instructiunea Do While. Loop are sintaxa:
Do While conditie
    bloc_de_instructiuni
[Exit Do]
    bloc_de_instructiuni
Loop
    Visual Basic evalueaza întâi conditia si daca aceasta este adevarata se executa blocul de instructiuni, în caz contrar se continua executia programului dupa instructiunea Loop. Acesta se repeta atâta tip cât conditia este adevarata. Din acest motiv în blocul de instructiuni trebuie sa existe o instructiune ce modifica valoarea conditiei în caz contrar repetitia va fi nesfârsita. O alta varianta a instructiunii Do.Loop este urmatoarea:
Do Until conditie   
    bloc_de_instructiuni
[Exit Do]
    bloc_de_instrctiuni
Loop
    Aceasta instructiune se aseamana cu cea prezentata anterior cu diferenta ca blocul de instructiuni se repeta pâna când conditia devine adevarata (adica atâta timp cât conditia este falsa.
Mai exista doua structuri cu urmatoarele sintaxe:
Do   
    bloc_de_instructiuni
[Exit Do]
    bloc_de_instrctiuni
Loop while conditie
si
Do   
    bloc_de_instructiuni
[Exit Do]
    bloc_de_instrctiuni
Loop Until conditie
    Diferenta fata de primele consta în faptul ca la acestea blocul de instructiuni se executa cel putin o data. Evaluarea conditiei se face la sfârsitul structurii si nu la început ca în cazul primelor doua.
Exemple:
Do While i<=9
    MsgBox ˝Este repetarea numarul: ˝ & Cstr(iContor)
Loop

    Voi prezenta în continuare, pentru a evidentia modul de utilizare a diferitelor structuri de control, doua programe ce vor ordona crescator, prin doua metode diferite un sir de numere introduse de dumneavoastra. Numerele vor fi memorate într-o structura de data de tip tablou pe care o voi prezenta în urmatorul capitol.

   
Introduceti pe o forma urmatoarele controale si setatile proprietatile astfel:
TextBox
Name    & 121n131b nbsp;   txtNumar
Text    & 121n131b nbsp;   ˝˝
CommandButton 1 CommandButton 1
Name    & 121n131b nbsp;   cmdAdauga Name     & 121n131b nbsp;   cmdOrdoneza
Caption Adaugare Caption Adaugare

Adaugati în fereastra de cod urmatoarele rânduri:

Option Explicit
Option Base 1
Private aSirNumere(100) As Integer
Private iNrElemente As Integer

Private Sub cmdAdauga_Click()
iNrElemente = iNrElemente + 1
aSirNumere(iNrElemente) = Cint(txtNumar.Text)
txtNumar.Text = ""
End Sub

Private Sub cmdOrdoneaza_Click()
Dim iContor1 As Integer, iContor2 As Integer, iAux As Integer
For iContor1 = 1 To iNrElemente
For iContor2 = iContor1 + 1 To iNrElemente
If aSirNumere(iContor2) < aSirNumere(iContor1) Then
iAux = aSirNumere(iContor1)
aSirNumere(iContor1) = aSirNumere(iContor2)
aSirNumere(iContor2) = iAux
End If
Next iContor2
Next iContor1
Dim sAfisare As String: sAfisare = ""
For iContor1 = 1 To iNrElemente
sAfisare = sAfisare & " " & CStr(aSirNumere(iContor1))
Next
MsgBox sAfisare, vbExclamation, "Ordonare prin selectie directa"
End Sub

Private Sub Form_Load()
iNrElemente = 0
End Sub

Pentru al doilea program creati aceeasi interfata si adaugati codul:
Option Explicit
Option Base 1
Private aSirNumere(100) As Integer
Private iNrElemente As Integer

Private Sub cmdAdauga_Click()
iNrElemente = iNrElemente + 1
aSirNumere(iNrElemente) = Cint(txtNumar.Text)
txtNumar.Text = ""
End Sub

Private Sub cmdOrdoneaza_Click()
Dim iContor As Integer, bGata As Boolean, iAux As Integer
Do
bGata = True
For iContor = 1 To iNrElemente - 1
If aSirNumere(iContor + 1) < aSirNumere(iContor) Then
bGata = False
iAux = aSirNumere(iContor)
aSirNumere(iContor) = aSirNumere(iContor + 1)
aSirNumere(iContor + 1) = iAux
End If
Next iContor
Loop Until bGata
Dim sAfisare As String: sAfisare = ""
For iContor = 1 To iNrElemente
sAfisare = sAfisare & " " & CStr(aSirNumere(iContor))
Next
MsgBox sAfisare, vbExclamation, "Ordonare prin selectie directa"
End Sub

Private Sub Form_Load()
iNrElemente = 0
End Sub
    Dupa ce ati lansat în executie a celor doua programe introduceti sirul de numere ce doriti sa-l ordonati scriind pe rând numerele in caseta de text. Dupa ce introduceti un numa apasati butonul Adaugare dupa care continuati si îl introduceti pe urmatorul. Dupa ce ati introdus toate numerele apasati butonul Ordoneaza pentru a vizualiza sirul de numere ordonat.




Document Info


Accesari: 4422
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )