Программа
DEF FNF! (X!) = SIN(X!) 'Отображаемая функция
SUB OutGraph (Left!, Right!) ' Процедура вывода графика
MaxX% = 319 'Максимальная координата X
MaxY% = 199 'Максимальная координата Y
LINE (0, 0)-(MaxX%, MaxY%), 15, B 'Прорисовка рамки
ScaleX! = (Right! - Left!) / (MaxX% * 8) * 10 'Вычисление масштаба по оси X
IF ScaleX! = 0 THEN ScaleX! = 1
'Если масштаб по оси X равен 0, то переопределение масштаба
'Поиск максимального и минимального значений функции на выводимом промежутке:
HiY! = FNF!(Left!) 'Начальное определение максимума
LoY! = HiY! 'Начальное определение минимума
FOR i% = 1 TO CINT(MaxX% * 8 / 10)
'Цикл просмотра значений функции на выводимом промежутке
BufY! = FNF!(Left! + i% * ScaleX!) 'Вычисление функции в текущей точке
IF BufY! > HiY! THEN 'Если значение функции перевосходит максимальное
HiY! = BufY! 'то переопределение
'максимального значения функции
ELSEIF BufY! < LoY! THEN
'Иначе, если значение функции меньше минимального
'то переопределение минимального значения функции
LoY! = BufY!
END IF
NEXT i%
ScaleY! = (HiY! - LoY!) / (MaxY% * 8) * 10 'Вычисление масштаба по оси Y
IF ScaleY! = 0 THEN ScaleY! = 1
'Если масштаб по оси Y равен 0, то переопределение масштаба
PSET (CINT(MaxX% / 10), CINT(MaxY% * 9 / 10 - (FNF!(Left!) - LoY!) / ScaleY!)), 15
'Прорисовка первой точки графика
FOR i% = 1 TO CINT(MaxX% * 8 / 10) 'Цикл прорисовки графика
LINE -(CINT(i% + MaxX% / 10), CINT(MaxY% * 9 / 10 - (FNF!(Left! + i% * ScaleX!) - LoY!) / ScaleY!)), 15
'Прорисовка линии от предыдущей точки к текущей
NEXT i%
OXy! = MaxY% * 9 / 10 + LoY! / ScaleY! 'Вычисление Y-координаты оси OX
'Определение масок типа линий:
HiColor% = &HFFFF
LoColor% = &HF0F0
'Если Y-координата оси OX выходит за границу вывода, то переопределение
'Y-координаты и определение типа линии:
IF OXy! > MaxY% * 19 / 20 THEN
OXy! = MaxY% * 19 / 20
Style% = LoColor%
ELSEIF OXy! < MaxY% / 20 THEN
OXy! = MaxY% / 20
Style% = LoColor%
ELSE
Style% = HiColor%
END IF
LINE (CINT(MaxX% / 20), CINT(OXy!))-(CINT(MaxX% * 19 / 20), CINT(OXy!)), 15, , Style%
'Прорисовка оси OX
'Прорисовка стрелки на оси OX:
LINE (CINT(MaxX% * 19 / 20), CINT(OXy!))-(CINT(MaxX% * 18.5 / 20), CINT(OXy! + MaxY% / 90)), 15
LINE (CINT(MaxX% * 19 / 20), CINT(OXy!))-(CINT(MaxX% * 18.5 / 20), CINT(OXy! - MaxY% / 90)), 15
OYx! = MaxX% / 10 - Left! / ScaleX! 'Вычисление X-координаты оси OY
'Если X-координата оси OY выходит за границу вывода, то переопределение
'X-координаты и определение типа линии:
IF OYx! > MaxX% * 19 / 20 THEN
OYx! = MaxX% * 19 / 20
Style% = LoColor%
ELSEIF OYx! < MaxX% / 20 THEN
OYx! = MaxX% / 20
Style% = LoColor%
ELSE
Style% = HiColor%
END IF
LINE (CINT(OYx!), CINT(MaxY% / 20))-(CINT(OYx!), CINT(MaxY% * 19 / 20)), 15, , Style%
'Прорисовка оси OY
'Прорисовка стрелки на оси OY:
LINE (CINT(OYx!), CINT(MaxY% / 20))-(CINT(OYx! + MaxX% / 120), CINT(MaxY% / 20 + MaxY% * 9 / 160)), 15
LINE (CINT(OYx!), CINT(MaxY% / 20))-(CINT(OYx! - MaxX% / 120), CINT(MaxY% / 20 + MaxY% * 9 / 160)), 15
END SUB
'-------------------------------------------------------------------------------
SCREEN 1 'Переключение видеосистемы в графический режим
CALL OutGraph(-10, 2000000000#) 'Вывод графика
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию