Графические возможности языка PASCAL

ÄВВЕДЕНИЕ

ÄРождение Паскаля

ÄГрафические возможности языка Паскаль

ÄРабота в графическом видеорежиме. Общий обзор

ÄИнициализация графического режима

ÄУправление экраном и окнами

ÄУправление цветом и фоном

ÄПостроение простейших графических изображений

ÄУправление курсором

ÄВывод текстовой информации в графическом видеорежиме

ÄАлгоритм построения окон и статических объектов в них

ÄДеловая графика

ÄПостроение графиков  элементарных функций

ÄРеализация имитации движения графических объектов

ÄСПРАВОЧНЫЕ ТАБЛИЦЫ

ÄСправочные  материалы о языке Pascal

ÄТВОРЧЕСТВО УЧАЩИХСЯ

ÄЗадания для самостоятельного выполнения

ÄПостроение функций второго порядка

ÄЭТО ИНТЕРЕСНО

ÄЛИТЕРАТУРА

 

ÄКАРТА

Деловая графика   

Диаграммы облегчают сравнение различных данных, наглядно представляют связь между ними. Для представления числовых данных, которые сравниваются в пределах одного периода, удобно использовать диаграммы  в виде столбиков — гистограммы.

Задача. Построить гистограмму для сравнительного анализа выпуска деталей каким-то цехом за n месяцев текущего года. Исходные данные получить случайным образом, причем максимальное количество деталей не должно превышать 420.

Рассчитаем масштаб для построения столбиков (прямоугольников). Ширина прямоугольника h пусть будет равна Round((GetMaxX-150)/n). Высота прямоугольника не должна превышать GetMaxY-20 = 430, так как ось ОХ будет иметь такую ординату. Чтобы диаграмма не упиралась в самый верх окна, возьмем высоту, равную 420. Среди введенных показателей каждого месяца найдем наибольший (max). Тогда коэффициент масштабирования k по оси   OY будет равен  420 div max.

Программа:

Uses Graph;
Var Driver,Mode:integer;
A:array[1..12] of integer; {массив количеств деталей, созданных в прошлом месяце}
i,n,h,max,k,xi: integer;
z:string[3];
Procedure Grlnit;
Begin
Driver:=Detect;
InitGraph(Driver,Mode,''); IF GraphResult<>0 then begin
Writeln ('Ошибка инициализации!');
Writeln ('Работа программы прервана');
Halt(1)
end
End;
Begin
Write('Введите количество месяцев (< = 12):'); readln(n);
randomize;
for i:= 1 to n do
begin
A[i]:= Random(350); write(A[i]:5)
end;
writeln; Grlnit;
{построение окна с максимальными координатами}
SetViewPort(0,0,GetMaxX,GetMaxY,True);
clearviewport;
SetFillStyle(1,13);
Bar(0,0,GetMaxX,GetMaxY);
SetColor(15);
Rectangle(0,0,GetMaxX,GetMaxY);
{построение оси ОХx)
SetLineStyle{0,0,3); SetColor(2);
Line(10,GetMaxY-20,GetMaxX-10,GetMaxY-20);
{расчёт ширины прямоугольника}
h:= Round((GetMaxX-150)/n);
{нахождение наибольшего значения среди показателей}
max:=A[1];
For i:=2 to n do
IF A[i]>max THEN max:=A[i];
{вычисление коэффициента масштабирования по оси ОУ}
k:=420 div max;
{построение столбиков диаграммы разного цвета}
xi:=10;
SetColor(4);
For i:= 1 to n do
begin
SetFillStyle(1,i);
Bar(xi,420-A[i]*k,xi + h,420);
SetColor(15);
Rectangle(xi,420-A[i]*k,xi + h,420);
{вывод соответствующего номера под каждым столбиком}
Str(i,z);
OutTextXY(xi + h div 3,430,z);
xi:=xi+h+10;{10 - расстояние между столбиками}
end;
readln;
CloseGraph
End.

 Скачать Задача (Столбиковая диаграмма)

Copyright © 2007 Cредняя школа №2 им. Н.П. Массонова г.Свислочь © Ярута Анжелина, Алла Синица