ВХОДЯЩИЕ И ИСХОДЯЩИЕ ДАННЫЕ




 

Входящими данными является путь к программе с расширением Паскаль.

Выходящие данные – диаграмма с данными

 

Путь к нужной программе D:\ Rew\ Ij.PAS

 

МАТЕМАТИЧЕСКАЯ МОДЕЛЬ

Диаграмма – это один из способов наглядного представления разных числовых данных. Чаще всего встречаются линейные и круговые диаграммою.

А также помимо существуют: точечная, кольцевая пузырчатая и кольцевая.

Точечная - позволяет сравнить пары значений. Отображает набор из трех значений.

Кольцевая – подобна круговой. Отображает значение в разных категориях.

Круговая - отображает вклад каждого значения в общую сумму.

Линейная – позволяет сравнить пары значений.

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

Процент числа – сотая часть этого числа. Обозначается 1%

В моей программе я буду искать процент работы, а для этого мне надо его найти. Чтобы найти процент от числа, необходимо сумму количество операторов поделить на 100%. А потом умножить отдельно на количество каждого оператора.

На диаграмме тестируемой программы (Программа вводит целое число в диапазоне от 0 до 15) мы видим, что программа имеет одинаковое количество операторов. Они составляют в сумме 100%. Но подсчитав количество видим, что каждый оператор составляет по 20%. Диаграмма автоматически рисуется. Показывая нам полученный результат.

 

ОПИСАНИЕ ЛОГИЧЕСКОЙ СТРУКТУРЫ

 

Шаг 0: инициализация переменных;

Шаг 1: прописуем размер рамочек в рисунке. Рассчитываем на то что одна рамочка больше другой;

Шаг 2: Перевести градусы в радианы. Задать координаты расположение надписей на диаграмме;

Шаг 3: прописать графически диаграмму;

Шаг 4:каждому известному оператору дам свое значение;

Шаг 5: прописать, что можно открыть только Паскаль программы;

Шаг 6: исключить открытие других файлов;

Шаг 7: при помощи цикла запросить ввести путь файла для открытия;

Шаг 8: проверяем построчно открытую нами программу. Счетчик считает операторы, пропуская те, что входят в разделители;

Шаг 9: вводим графический режим;

Шаг 10: используем процедуру PieSlice;

Шаг 11: выводим круговую диаграмму;

Шаг 12: разделяем по секторам, состоящим из значений найденных операторов;

Шаг 13: выбираем палитру для каждого сектора;

Шаг 14: заканчиваем работу проверкой на любой программе Паскаля.

 

ОПИСАНИЕ ПРОГРАММЫ

 

В данной программе был использован стандартный модуль Turbo Pascal – Crt. Он устанавливает режим работы адаптера дисплея, организует вывод в буфер экрана, регулирует яркость свечения символов и т.д. С момента подключения пользователю доступны все содержащиеся в нем стандартные средства.

Также при написании программы были использованы такие стандартные процедуры и функции языка программирования как:

- процедура Read – позволяет читать фаил.

- процедура initgraph – открывает графический фаил.

- процедура Write – читать позволяет только файлы расширением PAS

- процедура Break – процедура осуществляет досрочный выход из циклов For, While или Repeat;

- процедура Close(var f) – закрывает открытый до этого логический файл. Вызов процедуры необходим при завершении работы с файлом;


Функция CHOISE.

Определяет ключом для выхода из некоторых циклов и основной программы символ ‘Y’, обозначая его true. Используется в основной программе.

Функция PieSlice

Прорисует форму диаграммы ее цвет.

Функция initgraph

Подключает графический файл.

 

ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЮ

 

Вставьте дискету в дисковод. Выберите файл KYRSAK.EXE. после открытия файла программа вам предложит вести путь к проверяемой программе с расширением.PAS. При введении правильного пути и нажатие ENTER программа сразу же отобразит круговую диаграмму, показывающую чистоту работы операторов.


ВЫВОД

 

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

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

Также я рассмотрела в своей работе такие языки как: С++, С. С#. Я поняла, что этих языках также могла написать эту программу но из-за не достатка знаний я написала на Паскале.


СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

 

1. А. Епанешников, В. Епанешников Программирование в среде Turbo Pascal 7.0-М.: Диалог-МИФИ, 1993.

2. А.Б. Ставровский Турбо Паскаль 7.0. Учебник. – К.: Издательская группа BHV, 2000.

3. Конспект лекцій з дисципліни „Теорія алгоритмів та обчислювальних процесів” Частина 2.- Херсон, ХНТУ, 2005.

4. Конспект лекцій з дисципліни „Теорія алгоритмів та обчислювальних процесів” Частина 3. -Херсон, ХНТУ, 2005.

5. Методические указания про проведения лабораторных работ с основ программирования и алгоритмических яз. Часть 1. -Нога Л.В., Сидорук М.В. Херсон, 2003.

6. Методические указания про проведения лабораторных работ с основ программирования и алгоритмических яз. Часть 2.- Нога Л.В., Сидорук М.В. Херсон, 2003.

7. Фаронов В.В. TurboPascal 7.0. Начальный курс. - М.: Колидж, 1997.

8. С#. Сборник рецептов. – П. Агуров, Петербург, 2007.

9. Языки программирования / С++. - Бьерн Страуструп.


ПРИЛОЖЕНИЕ

 

{$N+}

program cursova;

uses graph;

type op=record

key:string[20];

count:integer;

end;

const n=8;

var

mas:array[1..n] of op;

procedure drawgraphic;

var d,e,r,j,all: integer;

startangle,nextangle,temp,x,y:extended;

xcord,ycord:word;

s,s2:string;

begin

all:=0;

for j:=1 to n do all:=all+mas[j].count;

d:= detect;

initgraph(d,r,'d:\bp\bgi\');

e:=graphresult;

if e<> grok then

writeln (grapherrormsg (e))

else

begin

startangle:=0;

rectangle((getmaxx div 3)*2,20,getmaxx-20,getmaxy -20);

rectangle((getmaxx div 3)*2-4,16,getmaxx-16,getmaxy -16);

xcord:=(getmaxx div 3)*2+5;

ycord:=50+textheight('25%');

str(all,s2);

s2:='Vsego elementov '+s2;

outTextXy(xcord+30,ycord,s2);

for j:=1 to n do

begin

if mas[j].count<=0 then continue;

nextangle:=startangle+360/(all/mas[j].count);

setfillstyle(j,j);

pieslice(getmaxx div 3 +5, getmaxy div 2 + 4,trunc(startangle),trunc(nextangle),100);

temp:=startangle+(nextangle-startangle)/2;

str(mas[j].count/(all/100):0:0,s);s:=s+'%';

x:=cos(temp*0.017453292519)*60;

y:=sin(temp*0.017453292519)*60;

settextjustify(lefttext,toptext);

ycord:=ycord+textheight(s)*3;

outTextXy(trunc(x+getmaxx div 3+5),trunc(getmaxy div 2+4-y),s);

bar(xcord,ycord,xcord+textheight(s)*2,ycord+textheight(s)*2);

rectangle(xcord,ycord,xcord+textheight(s)*2,ycord+textheight(s)*2);

str(mas[j].count,s2);

s2:=mas[j].key+' '+s2;

outTextXy(xcord+textheight(s)*2+5,ycord+textheight(s),s2);

startangle:=nextangle;

end;

end;

outTextXy(20,getmaxy-20,'Dla vixoda najmite ENTER');

end;

var filename:string;

file1:file of char;

var i:integer;

var tstr:string;

var tc,popen:char;

function upstring(a:string):string;

var i,j:byte;

t:string;

begin

t:='';

i:=length(a);

for j:=1 to i do

:=t+upcase(a[j]);

upstring:=t;

end;

begin

for i:=1 to n do mas[i].count:=0;

mas[1].key:='BEGIN';

mas[2].key:='END';

mas[3].key:='IF';

mas[4].key:='FOR';

mas[5].key:='WHILE';

mas[6].key:='REPEAT';

mas[7].key:='CASE';

mas[8].key:='GOTO';

writeln ('4astota kly4evih slov':35);

{$I-}

repeat

writeln('wedi pyt k faily');

readln(filename);

tstr:=upstring(copy(filename,length(filename)-3,4));

if tstr<>'.PAS' then

begin

writeln('Must bve a pascal *.pas file!!!.Please continue');

continue;

end;

assign (file1,filename);

reset(file1);

until ioresult=0;

{$I+}

tstr:='';

popen:=' ';

tc:=' ';

while not eof(file1)do

begin

if tc='''' then begin{iwem konets const stroki}

tc:=' ';

while (tc<>'''')and(not eof(file1))do

read(file1,tc);

tc:=' ';

end;

(*if tc='(' then

begin

{iwem konets komenta}

if(not eof(file1))then read(file1,tc);

if tc='*' then

begin

while (tc<>')')and(not eof(file1))do

begin

read(file1,tc);

if tc='*' then

begin if(not eof(file1))then read(file1,tc) end

else if tc=')' then tc:=' ';

end

end else

{tc:=' ';}

end;*)

if tc='{' then begin{iwem konets komenta}

tc:=' ';

while (tc<>'}')and(not eof(file1))do

read(file1,tc);

tc:=' ';

end;

if tc in [' ',';',#0..#32,'(',')','}','{','.'] then

begin

if tstr<>''then

for i:=1 to n do

if mas[i].key=tstr then

begin

inc(mas[i].count);

break;

end;

tstr:='';

end

else tstr:=tstr+upcase(tc);

if(not eof(file1))then read(file1,tc);

end;

if tstr<>''then

for i:=1 to n do

if mas[i].key=tstr then

begin

inc(mas[i].count);

break;

end;

close(file1);

drawgraphic;

readln;

end.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-03-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: