Создать программу График функции y=F(x) - VB
Формулировка задачи:
Разработать программу предназначенную для наглядной демонстрации школьникам графика функций одного аргумента y=F(x)
Разрабатываемая программа должна расчитывать таблицу значений и строить график функции на заданном отрезке, по заданной формуле менять шаг и границы отрезка, кроме этого программа должна запоминать введенные функции.
Желательно готовый проект с кодом и архитектурой, чтобы можно было посмотреть как все сделано.
Заранее спасибо!
Решение задачи: «Создать программу График функции y=F(x)»
textual
Листинг программы
Option Explicit
Const PI As Double = 3.14152
Dim x As Double, Y As Double
Dim i As Single, P As PictureBox
Private Sub Command1_Click()
Dim St As String, PicFontSize As Integer
Call Scal
PicFontSize = P.FontSize: P.FontBold = True
P.FontSize = 18: P.CurrentX = minX + maxX / 20: P.CurrentY = maxY - maxY / 20
P.Print "Y = " & Text1.Text
P.FontSize = PicFontSize: P.FontBold = False
List1.Clear
For x = minusX.Text To plusX.Text Step CSng(Replace(stepGX.Text, ".", ","))
Y = F(x)
P.Circle (x, Y), 0.05, RGB(255, 0, 0)
List1.AddItem "x = " & Round(x, 3) & vbTab & vbTab & " Y = " & Round(Y, 3)
Next x
Call Coord
End Sub
Function F(x As Double) As Double
Me.ScriptControl1.ExecuteStatement ("x=" & Replace$(CStr(x), ",", "."))
F = Me.ScriptControl1.Eval(Text1.Text)
End Function
Private Sub Scal()
Set P = Picture1
P.Cls
P.DrawStyle = 0: P.AutoRedraw = True
P.Scale (minX, maxY)-(maxX, minY)
P.Line (minX, 0)-(maxX, 0), RGB(0, 0, 255) 'ocb X
P.Line (0, minY)-(0, maxY), RGB(0, 0, 255) 'ocb Y
P.FillStyle = 0: P.FillColor = vbRed
End Sub
Private Sub Coord()
'Kоординатная сетка
P.DrawStyle = 2 ' Пунктирная линия
For i = minY.Text To maxY.Text Step stepY.Text
P.CurrentX = 0 ' оцифровка
P.CurrentY = i
P.Print Format$(i, "0.0")
P.Line (-0.05, i)-(0.05, i) ' засечка
P.Line (minX, i)-(maxX, i)
Next i
For i = minX.Text To maxX.Text Step stepX.Text
P.CurrentX = i ' оцифровка
P.CurrentY = 0
P.Print Format$(i, "0.0")
P.Line (i, -0.05)-(i, 0.05) ' засечка
P.Line (i, minY)-(i, maxY)
Next i
P.DrawStyle = 2 ' Пунктирная линия
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Command3_Click()
SaveGraph
End Sub
Private Sub Form_Load()
Call Scal
Call Coord
End Sub
Private Sub SaveGraph()
Dim s As String, ss As String
ss = InputBox("Введите имя файда для сохранения", "Save As", "Graph")
If StrPtr(ss) <> 0 Then
s = App.Path & "\" & ss & ".bmp"
SavePicture Picture1.Image, s
MsgBox "График сохранен как:" & vbCrLf & s, vbInformation
End If
End Sub