Программа


DEF FNF! (X!) = 10 * X! + X! * X!    'Отображаемая функция

SUB OutGraph (Left!, Right!, Stp!) ' Процедура вывода графика
  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((Right! - Left!) / Stp!)
                    'Цикл просмотра значений функции на выводимом промежутке
    BufY! = FNF!(Left! + i% * Stp!)  'Вычисление функции в текущей точке
    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((Right! - Left!) / Stp!)'Цикл прорисовки графика
    LINE -(CINT((.1 + i% * Stp! / (Right! - Left!) * .8) * MaxX%), CINT(MaxY% * 9 / 10 - (FNF!(Left! + i% * Stp!) - 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(-15, 15, 1) 'Вывод графика

Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию