Основы алгоритмизации и программирования. Часть четвертая. Файловая система Turbo Pascal. Асламова В.С - 48 стр.

UptoLike

95
Пример:
Программа, которая рисует на синем фоне пунктирную линию жёлтого
цвета, проходящую из левого нижнего угла в правый верхний.
Uses Graph, Crt;
Var gd,gm,i,max: Integer;
{$I D: /pas/init.pas}
Begin
Init;
SetColor (Yellow);
SetBkColor (Blue);
SetLineStyle (3,1,1);
Line (0, GetMaxY, GetMaxX, 0);
Repeat Until KeyPressed;
CloseGraph;
end.
Построение графиков функций и вывод текста
Рассмотрим последовательность действий, которые нужно совершить
при построении графиков, на примере программы, обеспечивающей вывод на
экран графика синусоиды, аргумент которой изменяется в диапазоне от 0 до
360 градусов.
Сначала установим цвет экрана и осей координат:
SetColor(0);
SetBkColor(1);
Выведем на экран вертикальную и горизонтальную оси координат, в
которых будет нарисован график так, чтобы границы горизонтальной
оси от-
стояли от краёв экрана на 10 пикселей, а вертикальнойна 5. Для
определения максимального разрешения в установленном графическом ре-
жиме воспользуемся функциями GetMaxX и GetMaxY, возвращающими
максимальные значения координат по оси Х и Y соответственно:
Line(10,5,10,GetMaxY-5);
Line(10,GetMaxY div 2,GetMaxX-10,GetMaxY div 2);
Затем подготовим для вывода графика зеленый цвет:
SetColor(2) ;
поместим указатель текущего пикселя в начало координат
MoveTo (10,GetMaxY div 2);
96
и
вычислим значение функции для каждой точки оси X:
For i:=0 to GetMaxX-20 Do
begin
Sn:=Sin (i*2*pi/(GetMaxX-20)) ;
Полученные значения преобразуем в координаты точек, которые буду
выведены на экран. Для этого умножим каждое текущее значение функции на
размер области экрана, отведенный для вывода полуволны синусоиды, и ок-
руглим полученные значения. Заметим, что поскольку мы хотим вывести
график почти на весь
экран, то размер области по вертикальной оси примем
равным половине разрешения по оси Y минус 5. Поэтому он может быть вы-
числен как GetMaxY div 2 - 5.
IntSn:=Round((GetMaxY div 2 -5)*Sn);
Для вывода на экран графика синуса воспользуемся функцией LineTo.
Учтем, что ось Х расположена в центре вертикальной области экрана:
LineTo(i+10,GetMaxY Div 2-IntSn) ;
end;
Перед InSn ставится знак минус, так как координаты по оси Y в
мате-
матике увеличиваются в направлении снизу вверх, а на экране дисплея - в
обратном направлении. Если это не учитывать, будет построен график, зер-
кально отраженный относительно оси X, и вместо графика функции Y=Sin(X)
получится график Y= - Sin(X).
Для вывода цифр используем процедуру OutTextXY(X,Y,St). Парамет-
ры Х и Y определяют координаты точки, начиная с которой будет выведена
строка St. Если
необходимо вывести на экран значение переменной вещест-
венного или целого типа, его необходимо преобразовать к типу String c
помощью процедуры Str.
Выведем под правым концом оси число 360. Для этого предварительно
зададим координаты начала вывода:
XCoord:=GetMaxX
60;
YCoord:=GetMaxY div 2;
Затем преобразуем константу 360 в строковую переменную
Str(360,S) ;
и определим параметры выводимого текста, обратившись к процедуре Set-
TextStyle(Font,Direction,CharSize:Word). Эта процедура устанавливает тип
      Пример:                                                              и вычислим значение функции для каждой точки оси X:
      Программа, которая рисует на синем фоне пунктирную линию жёлтого          For i:=0 to GetMaxX-20 Do
цвета, проходящую из левого нижнего угла в правый верхний.                      begin
      Uses Graph, Crt;                                                             Sn:=Sin (i*2*pi/(GetMaxX-20)) ;
      Var gd,gm,i,max: Integer;
                                  {$I D: /pas/init.pas}                          Полученные значения преобразуем в координаты точек, которые буду
      Begin                                                                выведены на экран. Для этого умножим каждое текущее значение функции на
      Init;                                                                размер области экрана, отведенный для вывода полуволны синусоиды, и ок-
      SetColor (Yellow);
      SetBkColor (Blue);                                                   руглим полученные значения. Заметим, что поскольку мы хотим вывести
      SetLineStyle (3,1,1);                                                график почти на весь экран, то размер области по вертикальной оси примем
      Line (0, GetMaxY, GetMaxX, 0);                                       равным половине разрешения по оси Y минус 5. Поэтому он может быть вы-
      Repeat Until KeyPressed;                                             числен как GetMaxY div 2 - 5.
      CloseGraph;
      end.                                                                      IntSn:=Round((GetMaxY div 2 -5)*Sn);
                                                                                Для вывода на экран графика синуса воспользуемся функцией LineTo.
      Построение графиков функций и вывод текста                           Учтем, что ось Х расположена в центре вертикальной области экрана:
                                                                                LineTo(i+10,GetMaxY Div 2-IntSn) ;
      Рассмотрим последовательность действий, которые нужно совершить
                                                                                end;
при построении графиков, на примере программы, обеспечивающей вывод на
экран графика синусоиды, аргумент которой изменяется в диапазоне от 0 до         Перед InSn ставится знак минус, так как координаты по оси Y в мате-
360 градусов.                                                              матике увеличиваются в направлении снизу вверх, а на экране дисплея - в
      Сначала установим цвет экрана и осей координат:                      обратном направлении. Если это не учитывать, будет построен график, зер-
      SetColor(0);                                                         кально отраженный относительно оси X, и вместо графика функции Y=Sin(X)
      SetBkColor(1);                                                       получится график Y= - Sin(X).
      Выведем на экран вертикальную и горизонтальную оси координат, в            Для вывода цифр используем процедуру OutTextXY(X,Y,St). Парамет-
которых будет нарисован график так, чтобы границы горизонтальной оси от-   ры Х и Y определяют координаты точки, начиная с которой будет выведена
стояли от краёв экрана на 10 пикселей, а вертикальной – на 5. Для          строка St. Если необходимо вывести на экран значение переменной вещест-
определения максимального разрешения в установленном графическом ре-       венного или целого типа, его необходимо преобразовать к типу String c
жиме воспользуемся функциями GetMaxX и GetMaxY, возвращающими              помощью процедуры Str.
максимальные значения координат по оси Х и Y соответственно:                     Выведем под правым концом оси число 360. Для этого предварительно
                                                                           зададим координаты начала вывода:
     Line(10,5,10,GetMaxY-5);
     Line(10,GetMaxY div 2,GetMaxX-10,GetMaxY div 2);                           XCoord:=GetMaxX −60;
Затем подготовим для вывода графика зеленый цвет:                               YCoord:=GetMaxY div 2;
                                                                                Затем преобразуем константу 360 в строковую переменную
     SetColor(2) ;                                                              Str(360,S) ;
поместим указатель текущего пикселя в начало координат                     и определим параметры выводимого текста, обратившись к процедуре Set-
     MoveTo (10,GetMaxY div 2);                                            TextStyle(Font,Direction,CharSize:Word). Эта процедура устанавливает тип

                                   95                                                                          96