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

UptoLike

101
Пример:
Построить круговую диаграмму.
Uses Graph,Crt;
var gmx, gmy, gd, gm, i:Integer;
Diagr:Array[1..5] of Word;
Sum, StA, endA:Word;
{$1 D:/pas/init.pas}
begin
{Ввод пяти чисел, отображаемых в виде диаграммы}
WriteLn(' 5 Numbers - ?');
Sum:=0;
for i:=1 to 5 do
Begin
Readln(Diagr [i]) ;
Sum:=Sum+Diagr [i] ;
end;
{Масштабирование значений введенных чисел}
For i:=1 To 5 Do
Diagr[i]:=Round(Diagr[i]/Sum*360) ;
{Инициализация графического режима, установка
цветов, параметров линий и начальных значений)
Init;
SetColor(Yellow) ;
SetBkColor(Blue) ;
SetLineStyle(0, 1, 1) ;
gmx:=GetMaxX div 2;
gmy:=GetMaxY div 2;
StA:=0;
endA:=0 ;
{Вывод секторов диаграммы}
for i:=1 to 5 do
begin
EndA: =EndA+Diagr[i] ;
SetFillStyle(1, i) ;
PieSlice(gmx, gmy, StA, EndA, gmy) ;
StA:=StA+Diagr[i] ;
end;
Repeat Until KeyPressed;
CloseGraph;
end.
102
PieSlice(X,Y:lnteger; StAngle, EndAngle,R:Word )- выводит на экран
сектор круга радиуса R с центром в точке X,Y, заполненный заданным в про-
цедуре SetFillPattern или SetFillStyle орнаментом, цвет которого определен в
процедуре SetFillStyle. Параметры StAngle и EndAngle определяют началь-
ный и конечный углы сектора. Они задается в градусах и отсчитывается от
горизонтальной оси против часовой стрелки.
Способы изображения движущихся фигур
Движение фрагментов объектов можно реализовать одним из четырёх
способов.
1. Выводить изображение различными цветами переднего плана
(пера), а затем, спустя время, стирать еговыводить то же самое изображе-
ние цветом фона. Затем вновь размещать это же изображение в несколько
смещённом положении и стирать его после задержки на экране. Траектория
движения определяется программой.
2. Выводить изображение прежним способом, но стирать его спе-
циальными фигурами (при помощи процедур): прямоугольником, эллипсом,
сектором и др. В этом случае габариты упомянутых фигур должны несколько
превышать габариты изображения.
3. Изображение подвижного фрагмента записывается в буфер, ко-
торый, из-за его большого объёма, размещается в динамической памяти.
Затем это изображение выводится из буфера последовательно в разные места
экрана. При этом перед очередным выводом изображения в предшествующем
месте (после задержки) стирается.
4. В некоторых режимах адаптера видеопамять разбита на части,
называемые видеостраницами. На каждую видеостраницу записываются
«картинки», на которых фрагменты изображения, предназначенные для
«оживления», расположены в разных местах экрана. Последовательная смена
видеостраниц создаёт эффект движения этих фрагментов изображения.
Пример:
Изобразите перемещение круга слева на право.
Uses Graph, CRT;
var i:Integer;
{Вставка описания процедуры инициализации}
{$l D:/pas/init.pas}
Пример:                                                                        PieSlice(X,Y:lnteger; StAngle, EndAngle,R:Word )- выводит на экран
Построить круговую диаграмму.                                            сектор круга радиуса R с центром в точке X,Y, заполненный заданным в про-
Uses Graph,Crt;                                                          цедуре SetFillPattern или SetFillStyle орнаментом, цвет которого определен в
var gmx, gmy, gd, gm, i:Integer;                                         процедуре SetFillStyle. Параметры StAngle и EndAngle определяют началь-
Diagr:Array[1..5] of Word;                                               ный и конечный углы сектора. Они задается в градусах и отсчитывается от
Sum, StA, endA:Word;
                      {$1 D:/pas/init.pas}                               горизонтальной оси против часовой стрелки.
 begin
                      {Ввод пяти чисел, отображаемых в виде диаграммы}              Способы изображения движущихся фигур
 WriteLn(' 5 Numbers - ?');
 Sum:=0;                                                                       Движение фрагментов объектов можно реализовать одним из четырёх
 for i:=1 to 5 do                                                        способов.
  Begin
    Readln(Diagr [i]) ;                                                        1. Выводить изображение различными цветами переднего плана
    Sum:=Sum+Diagr [i] ;                                                 (пера), а затем, спустя время, стирать его – выводить то же самое изображе-
  end;                                                                   ние цветом фона. Затем вновь размещать это же изображение в несколько
                     {Масштабирование значений введенных чисел}
                                                                         смещённом положении и стирать его после задержки на экране. Траектория
 For i:=1 To 5 Do
   Diagr[i]:=Round(Diagr[i]/Sum*360) ;                                   движения определяется программой.
                     {Инициализация графического режима, установка             2. Выводить изображение прежним способом, но стирать его спе-
                     цветов, параметров линий и начальных значений)
                                                                         циальными фигурами (при помощи процедур): прямоугольником, эллипсом,
Init;
SetColor(Yellow) ;                                                       сектором и др. В этом случае габариты упомянутых фигур должны несколько
SetBkColor(Blue) ;                                                       превышать габариты изображения.
SetLineStyle(0, 1, 1) ;                                                        3. Изображение подвижного фрагмента записывается в буфер, ко-
gmx:=GetMaxX div 2;
gmy:=GetMaxY div 2;                                                      торый, из-за его большого объёма, размещается в динамической памяти.
StA:=0;                                                                  Затем это изображение выводится из буфера последовательно в разные места
endA:=0 ;                                                                экрана. При этом перед очередным выводом изображения в предшествующем
                     {Вывод секторов диаграммы}                          месте (после задержки) стирается.
for i:=1 to 5 do
  begin                                                                        4. В некоторых режимах адаптера видеопамять разбита на части,
EndA: =EndA+Diagr[i] ;                                                   называемые видеостраницами. На каждую видеостраницу записываются
SetFillStyle(1, i) ;                                                     «картинки», на которых фрагменты изображения, предназначенные для
PieSlice(gmx, gmy, StA, EndA, gmy) ;                                     «оживления», расположены в разных местах экрана. Последовательная смена
StA:=StA+Diagr[i] ;
                                                                         видеостраниц создаёт эффект движения этих фрагментов изображения.
end;
Repeat Until KeyPressed;                                                       Пример:
CloseGraph;                                                                    Изобразите перемещение круга слева на право.
end.                                                                                 Uses Graph, CRT;
                                                                                     var i:Integer;
                                                                                                    {Вставка описания процедуры инициализации}
                                                                                                    {$l D:/pas/init.pas}

                              101                                                                            102