Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Exemple de aplicatii simple in VISUAL BASIC
1. Prima aplicatie Visual Basic
Sa presupunem ca vrem sa realizam aplicatia apl.vbp care sa contina un singur formular, numit apl.frm (figura 12.13.).
Formularul acestei aplicatii trebuie sa contina: in bara de titlu numele Prima aplicatie in Visual Basic, doua casete de text una continand un text pe doua linii si alta continand tipul procesorului ti sistemul de operare (cand nu-i selectat nimic sa fie consemnat cazul), butoane radio pentru setarea procesorului si sistemului de operare, casete check pentru afisarea textului bold si italic, o lista cu orasele judetului Alba si o lista derulanta cu municipiile aceluiasi judet, confirmarea se face printr-un buton de afisare (Fig.12.14.).
Fig.12.14. Formatul initial al Formularului apl.frm
procesorului si a sistemului de operare
Alegerea optiunii Bold, a procesorului si a sistemului de operare si confirmarea optiunilor alese prin efectuarea unui click pe butonul Afiseaza va afisa figura 12.15.
In acest ultim caz, daca vom efectua un click pe butonul cu sageata al listei derulante de municipii vom ajunge la afisarea ferestrei din figura 12.16. Efectul cumulativ al caracterelor bold si italic este prezentat in figura 12.17.
Fig.12.16. Formularul cu lista derulanta
Fig. 12.17. Efectul cumulativ al optiunilor Bold si Italic
Sursa aplicatiei este:
Dim a$
Dim b$
Private Sub cmd1_Click()
Txt1.FontName = 'MS Sans Serif'
Txt1.Text = ' Aici sunt doua linii' _
& vbCrLf & 'intr-o caseta de dialog'
If Chk1.Value = 1 Then i = 1
If Chk2.Value = 1 Then i = 2
If Chk1.Value = 1 And Chk2.Value = 1 Then i = 3
Select Case i
Case 0
Txt1.FontName = 'MS Sans Serif'
Txt1.Font.Bold = False
Txt1.Font.Italic = False
Lst1.FontName = 'MS Sans Serif'
Lst1.Font.Bold = False
Lst1.Font.Italic = False
Cmb1.FontName = 'MS Sans Serif'
Cmb1.Font.Bold = False
Cmb1.Font.Italic = False
Txt2.FontName = 'MS Sans Serif'
Txt2.Font.Bold = False
Txt2.Font.Italic = False
Case 1
Txt1.FontItalic = False
Txt1.FontBold = True
Txt2.FontItalic = False
Txt2.FontBold = True
Cmb1.FontItalic = False
Cmb1.FontBold = True
Lst1.FontItalic = False
Lst1.FontBold = True
Case 2
Txt1.FontBold = False
Txt1.FontItalic = True
Txt2.FontBold = False
Txt2.FontItalic = True
Lst1.FontBold = False
Lst1.FontItalic = True
Cmb1.FontBold = False
Cmb1.FontItalic = True
Case 3
Txt1.Font.Bold = True
Txt1.Font.Italic = True
Txt2.Font.Bold = True
Txt2.Font.Italic = True
Lst1.Font.Bold = True
Lst1.Font.Italic = True
Cmb1.Font.Bold = True
Cmb1.Font.Italic = True
End Select
End Sub
Private Sub cmdClose_Click()
End
End Sub
Private Sub Form_Load()
a$ = 'Procesor:neselectat'
b$ = 'Sistem de operare:neselectat'
Txt1.Text = ''
Txt2.Text = ''
Lst1.AddItem 'Abrud'
Lst1.AddItem 'Cimpeni'
Lst1.AddItem 'Cugir'
Lst1.AddItem 'Ocna Mures'
Lst1.AddItem 'Teius'
Lst1.AddItem 'Zlatna'
Cmb1.AddItem 'Alba Iulia'
Cmb1.AddItem 'Aiud'
Cmb1.AddItem 'Blaj'
Cmb1.AddItem 'Sebes'
Txt2.Text = a$ & vbCrLf & b$
End Sub
Private Sub Opt1_Click()
a$ = 'Procesor :486'
Txt2.Text = a$ & vbCrLf & b$
End Sub
Private Sub Opt2_Click()
a$ = 'Procesor :Pentium'
Txt2.Text = a$ & vbCrLf & b$
End Sub
Private Sub Opt3_Click()
a$ = 'Procesor :Pentium PRO'
Txt2.Text = a$ & vbCrLf & b$
End Sub
Private Sub Opt4_Click()
b$ = 'Sistem de operare:Windows 95'
Txt2.Text = a$ & vbCrLf & b$
End Sub
Private Sub Opt5_Click()
b$ = 'Sistem de operare:Windows 98'
Txt2.Text = a$ & vbCrLf & b$
End Sub
Private Sub Opt6_Click()
b$ = 'Sistem de operare:Windows NT'
Txt2.Text = a$ & vbCrLf & b$
End Sub
Observatii:
Pentru verificarea casutei bifate, se foloseste proprietatea Value a casutei (checked boxes). Codul pentru acesta a fost scris in evenimentul 'click' al butonului Afisare, iar in acest caz din momentul in care se apasa pe acest buton se va face atat verificarea, cat si modificarile fonturilor. Acest lucru se poate face chiar si in cazul realizarii evenimentului click al fiecarei casute in parte, lucru care va modifica fonturile imediat ce va fi selectata casuta, dar nu se poate face verificarea cazului in care ambele casute au fost bifate, deci nu exista posibilitatea de a modifica fonturile in Bold si Italic simultan.
Pentru schimbarea fonturilor textelor ce vor aparea in casutele text din aceasta forma s-a folosit structura Select Case (se putea folosi chiar si structura If..Then..Else) in acelasi eveniment 'click' al butonului Afiseaza, deoarece aveam obtinute si valorile proprietatii Value al butoanelor Checked, unde in functie de casuta selectata, setarile pentru fonturile textului vor fi modificate (cu ajutorul proprietatii Font, proprietate modificata in cod).
S-a initializat proprietatea Font a casutelor de tip text cu fontul 'MS Sans Serif' in momentul in care se apasa pe butonul Afiseaza, iar ulterior s-a schimbat proprietatea in functie de optiunea butoanelor bifate. Daca nu se face initializarea inainte, atunci dupa ce se fac anumite selectii ale butoanelor se vor afisa, iar ulterior dorim sa deselectam ambele butoane, acest lucru nu se va mai afisa textul ca fiind de tip normal deoarece nu va avea la ce valoare sa se intoarca (valoarea proprietatii Font va fi valoarea ultimei selectii a butoanelor).
Pentru afisarea in casuta Txt2 a tipului de procesor si a sistemului de operare selectat, una dintre posibilitati ar fi declararea a doua variabilele de tip string (sir de caractere) a$ si b$, in zona declaratiilor de variabile in cod, ele urmand sa ia valori in functie de selectia facuta in zona frame (cadru) prin intermediul butoanelor radio (selectarea tipului de procesor- variabila a$, respectiv selectarea sistemului de operare- variabila b$), iar la apasarea butonului Afiseaza sa apara in casuta de text Txt2 atat tipul procesorului cat si sistemul de operare. Un inconvenient ar fi fost ca inainte cat si dupa ce s-a facut selectarea, casuta de text nu va contine nimic pana ce nu va fi apasat butonul Afiseaza. Acest inconvenient a fost inlaturat deoarece afisarea in casuta de text se facea atunci cand exista evenimentul 'Mouse move' (miscarea mouse-lui), eveniment care declansa afisarea in casuta text Txt2 a sirurilor a$ si b$ (afisare pe doua randuri). Dar nici aceasta modificare nu este optima, deoarece daca se selecteaza una din optiuni (adica se selecteaza un buton radio), iar mouse-ul nu se misca, textul nu va fi afisat (pana cand se misca mouse-ul). Asa ca, versiunea finala va modifica textul din casuta Txt2 in momentul cand exista evenimentul 'click' pe unul dintre butoanele radio, eveniment care va modifica si valoarea variabilelor a$ si b$.
2. Aplicatia Visual Tutorial 2000
In capitolul 8, subcapitolul 8.1. care trata lucrul in spatii grafice, unde am introdus principalele notiuni de lucru cu sistemul de operare Windows, am promis ca vom da sursele aplicatiei Visual Tutorial 2000 impreuna cu structura Project si denumirea formularelor utilizate. O facem acum pe post de al doilea exemplu.
Sursa aplicatiei VISUAL TUTORIAL 2000 este:
Option Explicit
Const VBPath = 'file://c:Visual Tutorial 2000'
Private Sub mnuMeniuri_Click()
End Sub
Private Sub mnuAsistentaDespre_Click()
frmDespre.Show
End Sub
Private Sub mnuAsistentaDocument_Click()
frmDoc.Show
End Sub
Private Sub mnuAsistentaHTML_Click()
Shell('C:Program FilesInternet ExplorerIexplore.exe')
End Sub
Private Sub mnuBareOrizontale_Click()
frmBareOrizontale.Show
End Sub
Private Sub mnuBareVerticale_Click()
frmBareVerticale.Show
End Sub
Private Sub mnuButoaneOptiune_Click()
frmButoaneOptiuni.Show
End Sub
Private Sub mnuButoaneOrizontale_Click()
frmButoaneOrizontale.Show
End Sub
Private Sub mnuButoaneValidare_Click()
frmButoaneValidare.Show
End Sub
Private Sub mnuButoaneVerticale_Click()
frmButoaneVerticale.Show
End Sub
Private Sub mnuCaseteDialogConditie_Click()
frmDialog.Show
End Sub
Private Sub mnuCaseteDialogDespre_Click()
frmAbout.Show
End Sub
Private Sub mnuCaseteDialogLogin_Click()
frmLogin.Show
End Sub
Private Sub mnuCaseteDialogOptiuni_Click()
frmOptions.Show
End Sub
Private Sub mnuCasteListeCombinate_Click()
frmListaCombinata.Show
End Sub
Private Sub mnuCasteListeElemente_Click()
frmListaElemente.Show
End Sub
Private Sub mnuCasteListeFisiere_Click()
frmListaFisiereDirectoare.Show
End Sub
Private Sub mnuDragDrop_Click()
End Sub
Private Sub mnuGraficaFonturi_Click()
frmListaFisiereText.Show
End Sub
Private Sub mnuGraficaVizualizare_Click()
frmImagini.Show
End Sub
Private Sub mnuIesire_Click()
frmIesire.Show
End Sub
Private Sub mnuMeniu_Click()
frmMeniu.Show
End Sub
Private Sub mnuSlider_Click()
frmSlider.Show
End Sub
3. Alte aplicatii
Folosirea functiei InputBox genereaza afisarea unei casete de dialog care solicita utilizatorului introducerea unui sir sau Variant. Sintaxa functiei este:
InputBox[$](prompt[,[titlu][,[implicit][,xpos,ypos]]]),
unde:
prompt este o expresie sir de caractere care afiseaza un mesaj in caseta.
titlu este o expresie sir de caractere afisata in bara de titlu a casetei de dialog; daca este omisa, caseta de dialog nu va avea titlu.
implicit este o expresie sir de caractere afisata in caseta text ca raspuns implicit daca utilizatorul nu furnizeaza alt raspuns.
xpos si ypos sunt expresii numerice si specifica, in twips, (1 twip = 1 / 1440 inch = 1 / 567 centimetri) distanta orizontala a marginii stangi a casetei de dialog fata de marginea stanga a ecranului, respectiv distanta verticala fata de marginea superioara a ecranului.
Instructiunea MsgBox este folosita pentru a afisa scurte mesaje referitoare la anumite erori care au intervenit la rularea aplicatiei, avertismente sau alerte.
Sintaxa functiei MsgBox este:
MsgBox (mesaj[, [tip][, titlu]]),
unde:
mesaj este o expresie sir de caractere care va fi afisata in caseta de dialog.
titlu este o expresie sir de caractere care va fi afisata in bara de titlu a casetei de dialog.
tip este o expresie numerica optionala reprezentand suma valorilor care specifica numarul si tipul butoanelor care vor fi afisate, stilul pictogramei afisate, butonul implicit si modalitatea casetei.
Un program foarte simplu pentru calculul functiei SIN(X) este urmatorul: Se creeaza o forma. Aceasta se creeaza automat in momentul in care se in Visual Basic se cere deschiderea unui nou proiect (in meniu se alege optiunea File -> New Project). Apoi in fereastra New Project se alege Standard.EXE si se face click pe butonul OK.
Fig. 12.18. Fereastra de deschiderea a unui proiect nou in Visual Basic.
Pe ecran se va deschide un proiect nou care va contine o forma. Se va efectua un click dreapta in forma pentru deschiderea unui meniu contextual. Din meniul contextual se alege optiunea View Code, pentru vizualizarea ferestrei de introducere a codului. In partea de sus a ferestrei sunt afisate doua liste: lista de obiecte din proiect si pentru fiecare obiect, lista din dreapta contine toate evenimentele care se pot atasa obiectului respectiv. Din prima lista se alege obiectul Form, iar din a doua evenimentul click. In fereastra vor fi afisate prima si ultima linie din procedura atasata evenimentului click pe forma numita Form.
Fig. 12.19. Scrierea codului pentru evenimentul click pe obiectul Form.
Intre cele doua linii din fereastra se scrie codul:
Dim Raspuns, ValImpl, Mesaj, Titlu 'Declarare variabile
Mesaj='Argumentulfunctiei trigonometrice' 'Setare prompt
Titlu = 'Functii trigonometrice' 'Setare titlu
ValImpl = 0 'Valoare implicita
Raspuns=InputBox(Mesaj,Titlu,ValImpl)'Citirea mesajului
Pi = 4 * Atn(1)
Raspuns = Raspuns * Pi / 200
Rezultat = Sin(Raspuns) 'Calcul
MsgBox (Rezultat), , 'SIN (X)'
End
Trebuie precizat ca Visual Basic foloseste ca unitate de masura pentru unghiuri tot radianul ca si produsul Excel. Pentru programul nostru se considera ca valoarea unghiului este data in grade centesimale (un semicerc are Pi radiani sau 200 grade centesimale).
Programul se lanseaza in executie alegand din meniu optiunea: Run -> Start.
Val Function - Returneaza valoarea numerica a unui sir de caractere.
Abs Function - Returneaza valoarea absoluta a unui numar.
Atn Function - Returneaza arctangenta unui numar (in radiani).
Cos Function - Returneaza functia cos (unghiul este dat in radiani).
Exp Function - Returneaza e (baza logaritmului natural) la puterea argumentului. Constanta e este aproximativ 2,718282. Functia Exp este complementul actiunii functiei Log, fiind numita si antilogaritm.
Log Function - Returneaza logaritmul natural dintr-un numar. Logaritm in baza n poate fi calculat pentru orice numar x prin divizarea logaritmului natural al lui x prin logaritmul natural din n:
Ecuatia 12.1. Formula de transformare a bazei logaritmilor.
Rnd Function - returneaza un numar aleator intre 0 si 1.
Sgn Function - Returneaza un intreg indicand semnul numarului, dupa cum urmeaza:
Ecuatia Functia Signum.
Sin Function - Returneaza functia sin (unghiul este dat in radiani).
Sqr Function - Returneaza functia radical.
Tan Function - Returneaza functia tangenta (unghiul este dat in radiani).
Pentru calculul celorlalte functii trigonometrice trebuie folosite formule de transformare cunoscute din matematica.
Visual Basic este un limbaj care foloseste tehnici moderne de programare ca Programare Orientata pe Obiecte si Programare Condusa de Evenimente.
Un program simplu in Visual Basic presupune parcurgerea a trei pasi:
- realizarea interfetei (crearea obiectelor);
- stabilirea proprietatilor obiectelor;
- scrierea codului.
Pentru a exemplifica acesti pasi realizam urmatorul program.
Program este o forma cu trei etichete, doua linii si trei butoane. Fiecare buton la executarea evenimentului click asupra lui afiseaza cate un mesaj. Interfata programului va arata astfel:
Fig. 12.20. Interfata programului cu trei butoane.
Nr. crt. |
Tip obiect |
Nume obiect |
Proprietate |
Valoare proprietate |
Form |
Formular |
Caption |
Trei butoane |
|
Label |
Label1 |
Caption |
Prima aplicatie |
|
Label |
Label1 |
Caption |
Universitatea '1 Decembrie 1918' |
|
Label |
Label1 |
Caption |
Alba Iulia |
|
Line |
Line1 | |||
Line |
Line2 | |||
CommandButton |
Buton1 |
Caption |
Primul Buton |
|
CommandButton |
Buton1 |
Caption |
Al doilea Buton |
|
CommandButton |
Buton1 |
Caption |
Al treilea Buton |
Tabelul 12.1. Obiectele si proprietatile programului cu trei butoane.
Codul programului cu trei butoane:
Private Sub Buton1_Click()
MsgBox ('A fost apasat Primul Buton'), , 'Raspuns'
End
End Sub
Private Sub Buton2_Click()
MsgBox ('A fost apasat Al doilea Buton'), , 'Raspuns'
End
End Sub
Private Sub Buton3_Click()
MsgBox ('A fost apasat Al treilea Buton'), , 'Raspuns'
End
End Sub
La executarea evenimentului click fiecare buton raspunde prin afisarea unui mesaj (MsgBox).
Se dau n numere . Sa se calculeze suma: S = .
Pentru rezolvarea problemei parcurgem urmatorii pa i:
- stabilirea algoritmului;
- intocmirea schemei logice;
- scrierea programului Tntr-un limbaj oarecare (de exemplu Tn pseudocod).
S = 0
S = S + , pentru i
Cite te n
Pentru i = 1 la n
Cite te Ai
Sf>r it Pentru
S = 0
Pentru i = 1 la n
S = S + Ai
Sf>r it Pentru
Tip re te S
Fig. 12.21. Interfata programului Ecuatia de gradul 1.
Nr. crt. |
Tip obiect |
Nume obiect |
Proprietate |
Valoare proprietate |
Form |
Formular |
Caption |
Ecuatia de gradul I |
|
Label |
EticTitlu |
Caption |
Rezolvarea ecuatiei de gradul I: A * X + B = 0 |
|
Label |
EticA |
Caption |
Valoarea lui A |
|
Label |
EticB |
Caption |
Valoarea lui B |
|
Label |
EticSolutie |
Caption |
Solutia ecuatiei |
|
TextBox |
ValA |
Text |
|
|
TextBox |
ValB |
Text | ||
TextBox |
ValX |
Text | ||
CommandButton |
ButonRezolvare |
Caption |
Rezolvare ecuatie |
|
CommandButton |
ButonRezolvare |
Caption |
ButonTerminare |
Tabelul Obiectele si proprietatile programului Ecuatiei de gradul 1.
'Rezolvarea ecuatiei de gradul I
' Toate variabilele sunt de tipul Variant
Dim a, b, x
Private Sub ButonRezolvare_Click()
If Val(ValA.Text) = 0 Then
ValX.Text = ''
MsgBox 'Ecuatie imposibila'
Exit Sub
End If
a = Val(ValA.Text)
b = Val(ValB.Text)
x = -b / a
ValX.Text = x
End Sub
Private Sub ButonTerminare_Click()
End
End Sub
Private Sub ValA_GotFocus()
ValA.Text = ''
End Sub
Private Sub ValB_GotFocus()
ValB.Text = ''
End Sub
Private Sub ValX_GotFocus()
If Val(ValA.Text) = 0 Then
ValX.Text = ''
MsgBox 'Ecuatie imposibila'
Exit Sub
End If
a = Val(ValA.Text)
b = Val(ValB.Text)
x = -b / a
ValX.Text = x
End Sub
Ecuatia este de forma: .
Se da valoarea parametrului A.
Ecuatia nu este de gradul II.
Se da valoarea parametrilor B si C.
Ecuatia are radacini complex conjugate. Nu vom dezvolta mai mult aceasta ramura.
Citeste A
Daca A = 0 Atunci
Afiseaza 'Ecuatia nu este de gradul 2'
Altfel
Citeste B
Citeste C
Delta = B * B - 4 * A * C
Daca Delta > 0 Atunci
X1 = (-B + Radical(Delta)) / (2 * A)
X2 = (-B - Radical(Delta)) / (2 * A)
Afiseaza ' X1 = ' + Str$(X1) + ' si X2 = ' + Str$(X2)
Sfarsit Daca
Daca Delta = 0 Atunci
Afiseaza ' X1 = X2 = ' + Str$(-B / (2 * A))
Sfarsit Daca
Daca Delta < 0 Atunci
Afiseaza 'Ecuatia are radacini complex conjugate.'
Sfarsit Daca
Sfarsit Daca
Instructiunile:
Afiseaza ' X1 = ' + Str$(X1) + ' si X2 = ' + Str$(X2)
Afiseaza ' X1 = X2 = ' + Str$(-B / (2 * A))
folosesc urmatoarele conventii (valabile in Visual Basic):
Constantele de tip text (sir, string in VB) sunt incadrate intre ghilimele ('');
Simbolul + este operatorul de concatenare pentru siruri;
Str$(X) converteste valoarea lui X in sir de caractere.
Fig. 12.22. Interfata programului ecuatiei de gradul 2.
Deci instructiunea:
Afiseaza ' X1 = ' + Str$(X1) + ' si X2 = ' + Str$(X2)
va afisa 4 valori de tip text:
Textul: X1 =
Valoarea variabilei X1 convertita in text
Textul: si X2 =
Valoarea variabilei X2 convertita in text
intregul text fiind afisat pe un singur rand.
Si instructiunea:
Afiseaza ' X1 = X2 = ' + Str$(-B / (2 * A))
va afisa doua valori de tip text:
Textul: X1 = X2 =
Valoarea rezultata din calculul +B / (2 * A), convertita in text
intregul text fiind afisat pe un singur rand.
Nr. crt. |
Tip obiect |
Nume obiect |
Proprietate |
Valoare proprietate |
Form |
Formular |
Caption |
Ecuatia de gradul 2 |
|
Label |
EticTitlu |
Caption |
Rezolvarea ecuatiei de gradul 2 |
|
Label |
EtichetaA |
Caption |
Valoarea parametrului A |
|
Label |
EtichetaB |
Caption |
Valoarea parametrului B |
|
Label |
EtichetaC |
Caption |
Valoarea parametrului C |
|
Label |
EtichetaX |
Caption |
Rezultat |
|
TextBox |
ValoareA |
Text | ||
TextBox |
ValoareB |
Text | ||
TextBox |
ValoareC |
Text | ||
TextBox |
ValoareX |
Text | ||
CommandButton |
ButonCalculeaza |
Caption |
Calculeaza |
|
CommandButton |
ButonTerminare |
Caption |
Terminare |
Tabelul 12.3. Proprietatile obiectelor programului ecuatiei de gradul 2.
Private Sub ButonCalculeaza_Click()
A = Val(ValoareA.Text)
If A = 0 Then
ValoareX.Text = 'Ecuatia nu este de gradul 2'
Else
B = Val(ValoareB.Text)
C = Val(ValoareC.Text)
Delta = B * B - 4 * A * C
If Delta > 0 Then
X1 = (-B + Sqr(Delta)) / (2 * A)
X2 = (-B - Sqr(Delta)) / (2 * A)
ValoareX.Text='X1=' + Str$(X1) + ' si X2 = ' + Str$(X2)
End If
If Delta = 0 Then
ValoareX.Text = ' X1 = X2 = ' + Str$(-B / (2 * A))
End If
If Delta < 0 Then
ValoareX.Text='Ecuatia are radacini complex conjugate.'
End If
End If
End Sub
Private Sub ButonTerminare_Click()
End
End Sub
Private Sub ValoareA_Click()
ValoareA.Text = ''
End Sub
Private Sub ValoareB_Click()
ValoareB.Text = ''
End Sub
Private Sub ValoareC_Click()
ValoareC.Text = ''
End Sub
Private Sub ValoareX_Click()
ValoareX.Text = ''
End Sub
Procedura:
Private Sub ValoareA_Click()
ValoareA.Text = ''
End Sub
care se lanseaza la evenimentul Click pe obiectul ValoareA (un obiect de tip TextBox), va atribui valorii (valoare este proprietatea Text a lui TextBox, se scrie TextBox.Text) lui ValoareA, valoarea '', adica o constanta text de lungime 0.
Procedura este identica pentru ValoareA, ValoareB, ValoareC si ValoareX, pentru initializarea textului afisat inainte de introducerea datelor. Deci pentru introducere se recomanda sa se efectueze click pe fiecare TextBox (ValoareA, ValoareB si ValoareC) si dupa fiecare click sa se introduca valoarea parametrului corespunzator.
Metoda presupune ca printr-un procedeu oarecare (geometric, fizic etc.) am stabilit ca in intervalul exista o radacina . Problema care se pune este sa realizam un program pe calculator care sa gaseasca o radacina , care sa aproximeze suficient de bine pe . Altfel spus, stabilindu-se un , suficient de mic, sa se gaseasca un , astfel incat .
Sa presupunem . Pentru a gasi un interval in care se gaseste o radacina pornim de la urmatoarea ecuatie:
, care este echivalenta cu ecuatia .
Trasam graficul celor doua functii:
Fig. 12.23. Determinarea intervalului solutiei ecuatiei: COS(X) - X = 0
Se observa pe grafic, faptul ca ecuatia , are o singura radacina , in intervalul . In afara acestui interval, ecuatia nu mai are alte solutii. Programul realizat trebuie sa gaseasca o solutie aproximativa , astfel incat .
Dim Y1, Y2, Yi As Single
Dim PAS, EPSILON, PI As Single
Function Functie(X)
Functie = Cos(X) - X
End Function
Private Sub ButonCalcul_Click()
PI = 4 * Atn(1)
X1 = Val(VX1.Text) * PI / 200
X2 = Val(VX2.Text) * PI / 200
PAS = Val(VPAS.Text) * PI / 200
EPSILON = Val(VEpsilon.Text) * PI / 200
Y1 = Functie(X1)
Xi = X1
Yi = Functie(Xi)
Do While PAS > EPSILON
Do While Y1 * Yi > 0
Xi = Xi + PAS
Yi = Functie(Xi)
Loop
Xi = Xi - PAS
PAS = PAS / 10
Yi = Functie(Xi)
Loop
Xi = Xi * 200 / PI
PAS = PAS * 200 / PI
VRezultat.Text = ' Xi = ' + Str$(Xi) + ' si PAS = ' + Str$(PAS)
End Sub
Private Sub ButonTerminare_Click()
End
End Sub
Private Sub VX1_Click()
VX1.Text = ''
End Sub
Private Sub VX2_Click()
VX2.Text = ''
End Sub
Private Sub VPAS_Click()
VPAS.Text = ''
End Sub
Private Sub VEpsilon_Click()
VEpsilon.Text = ''
End Sub
- In sectiunea General sunt declarate variabilele si functia Cos(X) - X.
Dim X1, X2, Xi As Single
Dim Y1, Y2, Yi As Single
Dim PAS, EPSILON, PI As Single
Function Functie(X)
Functie = Cos(X) - X
End Function
- Valorile X1, X2, PAS si EPSILON sunt citite din proprietatile Text ale obiectelor TextBox, convertite in radiani:
X1 = Val(VX1.Text) * PI / 200
X2 = Val(VX2.Text) * PI / 200
PAS = Val(VPAS.Text) * PI / 200
EPSILON = Val(VEpsilon.Text) * PI / 200
- Rezultatul Xi si PAS sunt afisate in grade centesimale:
Xi = Xi * 200 / PI
PAS = PAS * 200 / PI
B. Interfata
Fig. 12.24. Interfata programului Metoda reprezentarii.
Nr. crt. |
Tip obiect |
Nume obiect |
Proprietate |
Valoare proprietate |
Form |
Formular |
Caption |
Rezolvarea ecuatiilor |
|
Label |
EtichetaTitlu |
Caption |
Metoda reprezentarii |
|
Label |
EtichetaX1 |
Caption |
Valoarea lui X1 |
|
Label |
EtichetaX2 |
Caption |
Valoarea lui X2 |
|
Label |
EtichetaPAS |
Caption |
Valoarea pasului |
|
Label |
EtichetaEpsilon |
Caption |
Precizia Epsilon |
|
Label |
EtichetaRezultat |
Caption |
Rezultat |
|
TextBox |
VX1 |
Text | ||
TextBox |
VX2 |
Text | ||
TextBox |
VPAS |
Text | ||
TextBox |
VEpsilon |
Text | ||
TextBox |
VRezultat |
Text | ||
CommandButton |
ButonCalcul |
Caption |
Calculeaza |
|
CommandButton |
ButonTerminare |
Caption |
Terminare |
Copyright © 2024 - Toate drepturile rezervate