Реферат по предмету "Программирование"


Построение диаграмм

Построение
диаграмм

Пусть имеется
последовательность положительных действительных чисел a1, a2, ..., an,
обозначающая результаты каких-либо измерений (например, высоты вершин гор над
уровнем моря, площади государств, средние оценки учеников класса и т.д.).
Требуется построить визуализированное представление этой последовательности с
целью сравнения полученных результатов. В таких случаях используют диаграммы.
1. Круговые
диаграммы

В круговой
диаграмме каждому элементу последовательности соответствует сектор, градусная
мера которого пропорциональна величине элемента.

Для построения
круговой диаграммы необходимо просуммировать все элементы последовательности,
после чего найти отношения каждого из элементов к полученной сумме (так будет
вычислено, какую часть круга нужно поставить в соответствие данной величине, —
т.е. рассчитываются доли круга, приходящиеся на данную величину, если весь круг
принять равным 1). Все эти расчеты можно представить формулами . Затем эти
относительные величины переводятся в градусы:, после чего
можно приступать к построению диаграммы.

Алгоритм в этом
случае будет следующим:

вычислить сумму
элементов последовательности;

найти величину
сектора, соответствующего каждой величине;

построить все
секторы в графическом режиме (в результате должен получиться полный круг).
Желательно каждый сектор строить своим цветом, или использовать разную
штриховку, если секторы одноцветные.

Программа
построения круговой диаграммы по этому алгоритму представлена ниже:

{Круговая
диаграмма (с) А.П. Шестаков, 2001}

program Kr_D;

Uses Graph;

Var a, S : Real; I : Byte; G, M : Integer;

    Xc, Yc, R : Integer; {координаты центра
круга и его радиус}

    F : Text; {файл содержит данные для
построения диаграммы}

    Alpha : Integer; {угол, соответствующий
очередной величине}

    SAngle : Integer; Stroka : String;

Begin

    Assign(F,
'1.dat'); Reset(F);

    S := 0; {сумма элементов
последовательности}

    While Not Eof(F) Do

    begin
Readln(F, a);  S := S + a end;

    reset(f); G
:= detect; M := 0;

    initgraph(G, M, '');  Xc := GetMaxX Div 2; Yc := GetMaxY Div 2;

    R := 100;
SAngle := 0; i := 1;

    While Not
Eof(f) Do begin

       
Readln(F, a); Alpha := round(A / S * 360); {вычисление угла}

       
setcolor(i mod 16 + 1); setfillstyle(1, i mod 16 + 1);

{построение
сектора, соответствующего величине}

   sector(Xc, Yc, SAngle, SAngle +
Alpha, R, R);

        SAngle
:= SAngle + Alpha; i:= i + 1;

        {укажем, какому цвету какая величина
соответствует}

        bar(Xc+200,
Yc-250+(i-1)*20, Xc+220, Yc-250+(i-1)*20+15);

       
str(a:8:2, stroka);

       
outtextxy(Xc + 230, Yc — 250 + 5 + (i — 1) * 20, stroka) end;

    readln;
close(F); closegraph End.

Результат
работы программы для указанного на рисунке набора чисел:


2.
Столбчатые диаграммы

Для построения
диаграммы выделим на экране прямоугольную область с координатами соответственно
верхнего левого угла (Xlv, Ylv) и правого нижнего (Xpn, Ypn). Высота столбца
диаграммы, соответствующего максимальному элементу последовательности, будет
совпадать с высотой прямоугольника. Ширина столбца будет зависеть от количества
элементов последовательности: чем больше компонент, тем меньшей будет ширина.
Таким образом, для построения диаграммы нужно определить количество компонентов
последовательности и максимальный элемент последовательности. Высота vi
очередного столбца диаграммы на экране будет определяться формулой где xmax —
максимальный элемент последовательности, xi — очередной элемент
последовательности.

Алгоритм
построения диаграммы следующий:

определить
количество элементов последовательности и её максимальный элемент;

согласно
указанной формуле построить столбцы диаграммы. Их ширина на экране может быть
рассчитана по формуле где n —
количество элементов последовательности.

Программа
построения столбчатой диаграммы по этому алгоритму представлена ниже:

{Столбчатая
диаграмма (с) А.П. Шестаков, 2001}

program Stol_D;

Uses Graph;

Var a, xmax : Real; I, n : Byte; G, M : Integer;

    F : Text; {файл содержит данные для
построения диаграммы}

    Stroka : String;

    Xlv, Ylv, Xpn, Ypn : Integer; {координаты
окна вывода диаграммы}

Begin

    Assign(F,
'1.dat'); Reset(F);

    if not
eof(f) then begin readln(f, xmax); n:= 1 end else n := 0;

    While Not
Eof(F) Do

    begin
Readln(F, a);  if a > xmax then  xmax := a; n := n + 1 end;

    reset(f); G
:= detect; M := 0;

   
initgraph(G, M, '');  Xlv := 50;
Ylv := 50; Xpn:= GetMaxX-100;  Ypn:=
GetMaxY-50;

    i:= 0; {номер столбца}

    While Not Eof(f) Do

    begin

        Readln(F, a);

       
setcolor(i mod 16 + 1); setfillstyle(1, i mod 16 + 1);

        {очередной столбец}

   bar(round(Xlv+i*(Xpn-Xlv)/n),
Ypn,

           
round(Xlv+(i+1)*(Xpn-Xlv)/n), round(Ypn-(Ypn-Ylv)/xmax*a));

        i:= i + 1;

        {укажем, какому цвету какая величина
соответствует}

        bar(getMaxx-70,
50+(i-1)*20, getMaxx-50, 50+(i-1)*20+15);

       
str(a:8:2, stroka);

       
outtextxy(getMaxx-40, 50+(i-1)*20+8, stroka);

    end;

    readln;
close(F); closegraph

End.

Результат
работы программы для указанного на рисунке набора чисел:



Для лучшего
восприятия диаграммы было бы целесообразно построить вертикальную ось с
разметкой по ней, что в данной программе отсутствует.
3. Линейные
диаграммы

При построении
линейных диаграмм каждой величине соответствует точка, расположенная на
определённой высоте относительно начала отсчёта (высота рассчитывается так же,
как и при построении столбчатых диаграмм), все точки соединяются линиями. В
результате получается ломаная. Такого рода диаграммы чаще всего строя в тех
случаях, когда необходимо визуализировать динамику изменения величин.

Программа
аналогична программе построения столбчатых диаграмм и приведена ниже.

{Линейная
диаграмма (с) А.П. Шестаков, 2001}

program Stol_D;

Uses Graph;

Var a, xmax : Real; I, n : Byte; G, M : Integer;

    F : Text; {файл содержит данные для
построения диаграммы}

    Stroka : String; Yn, Yk : Integer;

    Xlv, Ylv, Xpn, Ypn : Integer; {координаты
окна вывода диаграммы}

Begin

    Assign(F,
'1.dat'); Reset(F);

    if not
eof(f) then begin readln(f, xmax); n:= 1 end else n := 0;

    While Not
Eof(F) Do

    begin
Readln(F, a);  if a > xmax then  xmax := a; n := n + 1 end;

    reset(f); G
:= detect; M := 0;

    initgraph(G,
M, '');  Xlv := 50; Ylv := 50; Xpn:=
GetMaxX-100;  Ypn:= GetMaxY-50;

    line(xlv,
ylv, xlv, ypn); line(xlv, ypn, xpn, ypn);

    i:= 0; {номер точки}

    readln(f, a);

    Yn :=
round(Ypn-(Ypn-Ylv)/xmax*a);

       
str(a:5:1, stroka);

        outtextxy(round(Xlv+i*(Xpn-Xlv)/n)-20,
Ypn+20, stroka);

    While Not
Eof(f) Do

    begin

       
setcolor(i mod 16 + 1); setfillstyle(1, i mod 16 + 1);

        {укажем, какому цвету какая величина
соответствует}

        Readln(F, a);

        Yk :=
round(Ypn-(Ypn-Ylv)/xmax*a);

        {очередная линия}

   line(round(Xlv+i*(Xpn-Xlv)/n),
Yn,

           
round(Xlv+(i+1)*(Xpn-Xlv)/n), Yk);

        i:= i +
1;

       
str(a:5:1, stroka);

       
outtextxy(round(Xlv+i*(Xpn-Xlv)/n)-20, Ypn+20, stroka);

        Yn := Yk; {запоминаем положение очередной
точки}

    end;

    readln;
close(F); closegraph

End.

Результат
работы программы для указанного на рисунке набора чисел:



Все
представленные здесь программы могут быть объединены в одну программу с общим
меню, где пользователю предоставляется возможность выбрать вид диаграммы.
Список
литературы

Для подготовки
данной работы были использованы материалы с сайта http://www.comp-science.narod.ru/


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.