Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Informatica


Index » educatie » Informatica
» Program pentru trasarea functiei SIN(X) - VISUAL BASIC


Program pentru trasarea functiei SIN(X) - VISUAL BASIC


Program pentru trasarea functiei SIN(X) - VISUAL BASIC

Private Sub Form_Click()

pi = 4 * Atn(1)

Scale (-pi, 1)-(pi, -1)

For fi = -3.1415 To 3.1415 Step 0.01

X = fi

Y = Sin(fi)

PSet (X, Y)



Next fi

For Y = -1 To 1 Step 0.01

PSet (0, Y)

Next Y

For X = -3.1415 To 3.1415 Step 0.01

PSet (X, 0)

Next X

End Sub

- Proprietatea WindowsState a formei trebuie setata pe 2 - Maximized.

1. Program de triangulatie

Programul triangulatie rezolva o problema de calcul a distantei prin triangulatie. Se cunoaste o latura a unui triunghi si unghiurile formate de celelalte laturi cu latura cunoscuta. Latura cunoscuta este data prin coordonatele punctelor P1 (1,1) si P2 (1,9). Unghiurile sunt: si .

Scalarea se face la evenimentul Load (incarcare) al formei pe coordonatele:

Scale (0, 10)-(15, 0)


Fig. 12.25. Problema de triangulatie.

Lungimile segmentelor P1P3 si P2P4 se iau 20 (unitati).

- Determinarea coordonatelor punctelor:

,

,

,

,

- Determinarea ecuatiilor celor doua drepte:

- Punctul de intersectie se obtine din conditia:

- La evenimentul click pe forma programul calculeaza punctul de intersecsie al celor doua laturi (afiseaza coordonatele X si Y in doua TextBox in partea de sus a ecranului) si deseneaza cele doua segmente P1 P3 si P2 P4.

- In partea de jos a ecranului, in doua TextBox la evenimentele mouse-ului (MouseDown, MouseMove si MouseUp) se afiseaza coordonatele mouse-ului. In momentul in care indicatorul mouse-ului se afla pe punctul de intersectie al celor doua drepte informatiile afisate in cele doua TextBox din partea de sus a formei (cele calculate) trebuie sa fie egale cu cele afisate in partea de jos a ecranului (coordonatele mouse-ului).

A. Crearea interfetei programului de triangulatie

Fig. 12.26. Interfata programului de triangulatie.

B. Codul programului de triangulatie

Dim X1, Y1, X2, Y2 As Single

Dim X3, Y3, X4, Y4 As Single

Dim X5, Y5, X, Y As Single

Dim AlfaR, BetaR As Single

Dim AlfaG, BetaG As Single

Dim PI As Single

Function Functie1(X, X1, Y1, X3, Y3)

Functie1 = Y1 + (X - X1) * (Y3 - Y1) / (X3 - X1)

End Function

Function Functie2(X, X2, Y2, X4, Y4)

Functie2 = Y2 + (X - X2) * (Y4 - Y2) / (X4 - X2)

End Function

Private Sub Form_Click()

PI = 4 * Atn(1)

X1 = 1

Y1 = 1

X2 = 1

Y2 = 9

Line (X1, Y1)-(X2, Y2)

AlfaG = 60

BetaG = 70

AlfaR = AlfaG * PI / 180

BetaR = BetaG * PI / 180

X3 = X1 + 20 * Sin(AlfaR)

Y3 = Y1 + 20 * Cos(AlfaR)

Line (X1, Y1)-(X3, Y3)

X4 = X2 + 20 * Sin(BetaR)

Y4 = Y2 - 20 * Cos(BetaR)

Line (X2, Y2)-(X4, Y4)

X = 0

Y = Functie2(X, X2, Y2, X4, Y4) - Functie1(X, X1, Y1, X3, Y3)

Do While Y > 0

X = X + 0.1

Y = Functie2(X, X2, Y2, X4, Y4) - Functie1(X, X1, Y1, X3, Y3)

Loop

Text3.Text = Str$(X)

Text4.Text = Str$(Functie2(X, X2, Y2, X4, Y4))

End Sub

Private Sub Form_Load()

Scale (0, 10)-(15, 0)

End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Text1.Text = X

Text2.Text = Y

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Text1.Text = X

Text2.Text = Y

End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

Text1.Text = X

Text2.Text = Y

End Sub

2. Evenimentele mouse-ului

Evenimentele (event) sunt actiuni recunoscute de obiecte (controale), (de exemplu, executarea unui click, apasarea unei taste sau o actiune declansata de sistem), pentru care exista cod de raspuns (cod asociat), care va fi executat automat la activarea evenimentului respectiv.

Evenimentele legate de mouse sunt:

- Click() - Recunoaste daca un buton (indiferent care) al mouse-ului a fost apasat si eliberat (indiferent de timpul consumat intre momentul apasarii si cel al eliberarii butonului), dar ca o singura actiune - un click. Nu are parametrii.

- DblClick() - Recunoaste daca un anumit buton al mouse-ului a fost apasat si eliberat de doua ori intr-un interval de timp care nu depaseste o anumita valoare. Nu are parametrii.

- MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) - Apare cand utilizatorul apasa unul dintre butoanele mouse-ului.

- MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) - Apare cand utilizatorul elibereaza unul dintre butoanele mouse-ului.

- MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) - Apare cand utilizatorul deplaseaza pointer-ul mouse-ului deasupra unui obiect.

Evenimentele MouseDown, MouseUp, MouseMove utilizeaza aceiasi parametri: Button As Integer, Shift As Integer, X As Single, Y As Single. Aceste evenimente functioneaza ca o functie, care returneaza valorile Button, Shift, X si Y.

Parametrul Button este o variabila de tip intreg, prin care evenimentele precizeaza care buton al mouse-ului a fost apasat. Variabila Button este de tip intreg (Integer), mai exact este un camp de biti (o valoare in care fiecare bit reprezinta o stare sau o conditie). Cei mai putin semnificativi biti ai numarului reprezinta butoanele din stanga, dreapta si mijloc, conform figurii urmatoare:

Butonul din stanga

Butonul din dreapta

Butonul din mijloc



M

R

L

Nefolositi

Fig. 12.27. Parametrul Button al evenimentelor mouse-ului.

Valoarea implicita a fiecarui bit este 0 (False). Daca nu este apasat nici un buton, valoarea binara a celor trei biti este 000 (0 - in zecimal). Daca este apasat butonul din stanga (L - Left), valoarea binara, sau masca, se modifica in 001 (1 - in zecimal). Valoarea bitului pentru butonul din stanga se schimba din 0 (False) in 1 (True).

Relatia intre masca si butoane este data in tabelul urmator:

Valoare binara

Valoare zecimala

Semnificatie

A fost apasat butonul din stanga.

A fost apasat butonul din dreapta.

A fost apasat butonul din mijloc.

Evenimentele mouse-ului sunt capabile sa identifice si situatia in care au fost apasate mai multe butoane simultan. De exemplu daca s-au apasat butoanele stanga si dreapta simultan, atunci variabila button returneaza valoarea . Indicele B sau Z precizeaza baza de numeratie (B pentru Binar si Z pentru Zecimal). Relatia completa intre masca si butoane este data in tabelul urmator:

Valoare binara

Valoare zecimala

Semnificatie

Nici un buton nu a fost apasat.

A fost apasat butonul din stanga.

A fost apasat butonul din dreapta.

Au fost apasate butoanele din stanga si din dreapta.

A fost apasat butonul din mijloc.

Au fost apasate butoanele din stanga si din mijloc.

Au fost apasate butoanele din dreapta si din mijloc.

Toate cele trei butoane au fost apasate.

Apasarea fiecarui buton activeaza catre un eveniment MouseDown si MouseUp. Deci daca se apasa doua butoane se activeaza doua evenimente (cate unul pentru fiecare buton) si fiecare eveniment separat returneaza cate o variabila Button. Cu alte cuvinte, MouseDown si MouseUp recunosc doar apasarea unui singur buton la un moment dat.

Evenimentul MouseMove insa poate fi folosit pentru a testa daca au fost apasate doua butoane sau toate trei.

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

ButtonTest = Button And 7

Select Case ButtonTest

Case 1

Print 'Ati apasat butonul stang.'

Case 2

Print 'Ati apasat butonul drept.'

Case 3

Print 'Ati apasat butonul stang si drept.'

Case 4

Print 'Ati apasat butonul din mijloc.'

Case 5

Print 'Ati apasat butonul stang si din mijloc.'

Case 6

Print 'Ati apasat butonul drept si din mijloc.'

Case 7

Print 'Ati apasat butonul toate trei butoanele.'

End Select

End Sub

A. Detectarea starilor tastelor de tip SHIFT

Tastele de tip SHIFT sunt: Tastele SHIHT, CTRL si ALT. Evenimentele de mouse si de tastatura folosesc argumentul Shift pentru a determina daca a fost apasata o tasta de tip shift si in ce combinatie. Daca tasta SHIFT este apasata, argumentul shift este egal cu 1; daca tasta CTRL este apasata, shift este 2; daca tasta ALT este apasata, shift este 4. Pentru a determina combinatiile acestor taste se face suma valorilor lor. De exemplu, daca tastele SHIFT si ALT sunt apasate, shift are valoarea 5 (1 + 4).

Ultimii trei biti cel mai putini semnificativi ai lui shift corespund starii tastelor SHIFT, CTRL si ALT, conform figurii urmatoare:

Tasta SHIFT

Tasta CTRL

Tasta ALT



A

C

S

Nefolositi

Fig. 12.28. Parametrul Shift al evenimentelor mouse-ului.

Valoare binara

Valoare zecimala

Semnificatie

Nici o tasta de tip Shift nu este apasata.

Tasta SHIFT este apasata.

Tast CTRL este apasata.

Tastele SHIFT si CTRL sunt apasate.

Tasta ALT este apasata.

Tastele SHIFT si ALT sunt apasate.

Tastele CTRL si ALT sunt apasate.

Toate cele trei taste sunt apasate.

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

ShiftTest = Shift And 7

Select Case ShiftTest

Case 1

Print 'Ati apasat tasta Shift.'

Case 2

Print 'Ati apasat tasta Ctrl.'

Case 3

Print 'Ati apasat tastele Shift si Ctrl.'

Case 4

Print 'Ati apasat tasta Alt.'

Case 5

Print 'Ati apasat tastele Shift si Alt.'

Case 6

Print 'Ati apasat tastele Ctrl si Alt.'

Case 7

Print 'Ati apasat butonul toate tastel.'

End Select

End Sub

3. Program de desenare

A. Crearea interfetei programului de desenare

Fig. 12.29. Butoanele programului de desenare.

B. Codul programului de desenare

Dim Linie, Drept, Cerc, Creion, Guma

Dim VX, VY

Private Sub cmdCreion_Click()

Linie = 0

Drept = 0

Cerc = 0

Creion = 1

Guma = 0

frmPlanseta.FillStyle = 0

frmPlanseta.FillColor = RGB(0, 0, 0)

End Sub

Private Sub cmdGuma_Click()

Linie = 0

Drept = 0

Cerc = 0

Creion = 0

Guma = 1

frmPlanseta.FillStyle = 0

frmPlanseta.FillColor = RGB(255, 255, 255)



frmPlanseta.DrawMode = 13

End Sub

Private Sub cmdLinie_Click()

Linie = 1

Drept = 0

Cerc = 0

Creion = 0

Guma = 0

frmPlanseta.FillStyle = 1

End Sub

Private Sub cmdDreptunghi_Click()

Linie = 0

Drept = 1

Cerc = 0

Creion = 0

Guma = 0

frmPlanseta.FillStyle = 1

End Sub

Private Sub cmdCerc_Click()

Linie = 0

Drept = 0

Cerc = 1

Creion = 0

Guma = 0

frmPlanseta.FillStyle = 1

frmPlanseta.FillColor = RGB(0, 0, 0)

frmPlanseta.DrawMode = 13

End Sub

Private Sub cmdSterge_Click()

Cls

End Sub

Private Sub cmdTerminare_Click()

End

End Sub

Private Sub Form_Load()

frmPlanseta.WindowState = 2 'Maximized

frmPlanseta.BackColor = RGB(255, 255, 255)

End Sub

Private Sub form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = 1 Then

VX = X

VY = Y

End If

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Creion = 1 And Button = 1 Then

Circle (X, Y), 50

End If

If Guma = 1 And Button = 1 Then

Circle (X, Y), 50, RGB(255, 255, 255)

End If

End Sub

Private Sub form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim Raza As Single

If Button = 1 Then

If Linie = 1 Then

Line (VX, VY)-(X, Y)

End If

If Drept = 1 Then

Line (VX, VY)-(X, Y), , B

End If

If Cerc = 1 Then

Raza = Sqr((VX - X) ^ 2 + (VY - Y) ^ 2)

Circle (VX, VY), Raza

End If

End If

If Button = 2 Then

If Linie = 1 Then

Line (VX, VY)-(X, Y)

End If

If Drept = 1 Then

Line (VX, VY)-(X, Y), , B

End If

If Cerc = 1 Then

Raza = Sqr((VX - X) ^ 2 + (VY - Y) ^ 2)

Circle (VX, VY), Raza

End If

End If

End Sub

4. Folosirea casetelor lista si a casetelor combinate (combo)

Casetele lista (list boxes) si casetele combinate (combo) prezinta o lista de alternative pentru utilizator. Implicit, alternativele sunt afisate vertical intr-o singura coloana sau mai multe. Daca numarul elementelor depaseste spatiul de afisare din lista, sunt atasate automat bare de defilare, utilizatorul putand sa deruleze continutul listei.

Pentru crearea unei casete lista se foloseste obiectul ListBox, iar pentru crearea unei casete combo se foloseste obiectul ComboBox. Casetele combo combina facilitatile unei casete text cu cele ale unei casete lista, permitand utilizatorului efectuarea unei selectii fie prin tastarea textului in caseta combo, fie prin selectarea elementului dorit din lista.

Visual Basic pune la dispozitia programatorilor trei tipuri de casete combo:

- Casete combo drop-down (proprietatea Style = 0);

- Casete combo simple (proprietatea Style = 1);

- Casete lista drop-down (proprietata Style = 2).

A. Adagarea de elemente in lista

Pentru a adaga elemente intr-o lista combo se foloseste metoda AddItem.

caseta.AddItem element[,index]

unde:

- caseta reprezinta numele casetei combo;

- element reprezinta elementul care va fi adagat listei;

- index specifica pozitia unde va fi inserat noul element (0 reprezinta prima pozitie. Daca index lipseste, noul element va fi inserat la sfarsitul listei.) Lista va fi sortata daca proprietatea Sorted este setata la True.

B. Inlaturarea elementelor dintr-o lista

Pentru a inlatura un element dintr-o lista se foloseste metoda RemoveItem, iar pentru a inlatura toate elementele unei liste se foloseste metoda Clear.

caseta.RemoveItem index

caseta.Clear

C. Obtinerea valorii selectiei curente

Pentru a obtine valoarea selectiei curente se foloseste proprietatea Text.

Valoare = caseta.Text

D. Obtinerea valorii unui element i dintr-o lista

Un element al unei liste poate fi accesat prin intermediul proprietatii List().

Valoare = caseta.List(i)

E. Determinarea pozitiei unui element intr-o lista

Proprietatea ListIndex furnizeaza pozitia elementului selectat intr-o lista. ListIndex = 0, reprezinta pozitia primului element din lista. Valoarea ListIndex = -1, este situatia cand nici un element nu este selectat.

F. Obtinerea numarului de elemente

Pentru a obtine numarul de elemente dintr-o caseta lista sau caseta combo se foloseste proprietatea ListCount.

n = caseta.ListCount

5. Program Calculator Statistic

In practica este necesar de multe ori sa fie efectuate foarte rapid si usor, cu posibilitati de corectii si recalculare diferite calcule statistice. Astfel de calcule sunt de exemplu: sume de n, sume de n patrat, medii aritmetice, medii geometrice, medii armonice, momente de ordinul k, dispersii, abateri medii patratice. In programul care urmeaza se calculeaza numai cateva din aceste valori, suficient pentru a demonstra posibilitatile unui astfel de program.

A. Codul programului Calculator Statistic

Dim n, Sum, Sumpatr As Single

Private Sub cmdCalculeaza_Click()

n = Caseta.ListCount

Text1.Text = n

Sum = 0

Sumpatr = 0

For i = 0 To n - 1

Sum = Sum + Caseta.List(i)

Sumpatr = Sumpatr + (Caseta.List(i)) ^ 2

Next i

Text2.Text = Sum

Text3.Text = Sum / n

Text4.Text = Sumpatr

End Sub

Private Sub cmdIntroducere_Click()

Caseta.AddItem Val(Numar.Text)

Numar.Text = ''

End Sub

Private Sub cmdSterge_Click()

Caseta.RemoveItem Caseta.ListIndex

End Sub

Private Sub cmdTerminare_Click()

End

End Sub

B. Interfata grafica a programului Calculator Statistic

Fig. 12.30. Interfata programului de calcul statistic.







Politica de confidentialitate





Copyright © 2024 - Toate drepturile rezervate