zadach250.BAS

{* Задача250 *}

REM basic

' Используя алгоритм, приведенный в тексте главы, построить график функции.
' y = x ^ 2, x [-0.1, 0.1]


CLS : SCREEN 9: WINDOW (0, 0)-(640, 250)  
N = 21         
Dim DatX(N), DatY(N)
For x = -.1 To .1 Step .01     
i = i + 1                          
DatX(i) = x              
DatY(i) = x ^ 2          
Next x

Xmin = DatX(1): Xmax = DatX(N): Ymin = DatY(1): Ymax = DatY(1)
For i = 1 To N
If DatY(i) > Ymax Then Ymax = DatY(i)
If DatY(i) < Ymin Then Ymin = DatY(i)
Next i

startX = 250: startY = 130
LINE (startX - 200, startY)-(startX + 200, startY), 15
LINE (startX + 200, startY)-(startX + 194, startY - 3), 15
LINE (startX + 200, startY)-(startX + 194, startY + 3), 15
LINE (startX, startY - 100)-(startX, startY + 100), 15
LINE (startX, startY + 100)-(startX + 4, startY + 98), 15
LINE (startX, startY + 100)-(startX - 4, startY + 98), 15
LINE (startX - 200, startY + 100)-(startX + 200, startY - 100), 15, B

If SGN(Xmin) = SGN(Xmax) Or Xmin = 0 Or Xmax = 0 Then kx = 1 Else kx = 2
If SGN(Ymin) = SGN(Ymax) Or Ymin = 0 Or Ymax = 0 Then ky = 1 Else ky = 2
If ABS(Xmax) > ABS(Xmin) Then Xm = ABS(Xmax) Else Xm = ABS(Xmin)
If ABS(Ymax) > ABS(Ymin) Then Ym = ABS(Ymax) Else Ym = ABS(Ymin)
mkX = (kx / 2) * 400 / (kx * Xm)
mkY = (ky / 2) * 200 / (ky * Ym)

x1 = DatX(1) * mkX + startX: y1 = DatY(1) * mkY + startY
PSET (x1, y1)

For i = 2 To N
LINE -(DatX(i) * mkX + startX, DatY(i) * mkY + startY), 14
Next i
End