4. МАТЕМАТИЧЕСКАЯ МОДЕЛЬ
Диаграмма – это один из способов наглядного представления разных числовых данных. Чаще всего встречаются линейные и круговые диаграммою.
А также помимо существуют: точечная, кольцевая пузырчатая и кольцевая.
Точечная - позволяет сравнить пары значений. Отображает набор из трех значений.
Кольцевая – подобна круговой. Отображает значение в разных категориях.
Круговая - отображает вклад каждого значения в общую сумму.
Линейная – позволяет сравнить пары значений.
В данной программе я буду использовать круговую диаграмму потому, что благодаря ней удобно наглядно увидеть частоту работы каждого оператора.
Процент числа – сотая часть этого числа. Обозначается 1%
В моей программе я буду искать процент работы, а для этого мне надо его найти. Чтобы найти процент от числа, необходимо сумму количество операторов поделить на 100%. А потом умножить отдельно на количество каждого оператора.
На диаграмме тестируемой программы (Программа вводит целое число в диапазоне от 0 до 15) мы видим, что программа имеет одинаковое количество операторов. Они составляют в сумме 100%. Но подсчитав количество видим, что каждый оператор составляет по 20%. Диаграмма автоматически рисуется. Показывая нам полученный результат.
5. ОПИСАНИЕ ЛОГИЧЕСКОЙ СТРУКТУРЫ
Шаг 0: инициализация переменных;
Шаг 1: прописуем размер рамочек в рисунке. Рассчитываем на то что одна рамочка больше другой;
Шаг 2: Перевести градусы в радианы. Задать координаты расположение надписей на диаграмме;
Шаг 3: прописать графически диаграмму;
Шаг 4:каждому известному оператору дам свое значение;
Шаг 5: прописать, что можно открыть только Паскаль программы;
Шаг 6: исключить открытие других файлов;
Шаг 7: при помощи цикла запросить ввести путь файла для открытия;
Шаг 8: проверяем построчно открытую нами программу. Счетчик считает операторы, пропуская те, что входят в разделители;
Шаг 9: вводим графический режим;
Шаг 10: используем процедуру PieSlice;
Шаг 11: выводим круговую диаграмму;
Шаг 12: разделяем по секторам, состоящим из значений найденных операторов;
Шаг 13: выбираем палитру для каждого сектора;
Шаг 14: заканчиваем работу проверкой на любой программе Паскаля.
6. ОПИСАНИЕ ПРОГРАММЫ
В данной программе был использован стандартный модуль Turbo Pascal – Crt. Он устанавливает режим работы адаптера дисплея, организует вывод в буфер экрана, регулирует яркость свечения символов и т.д. С момента подключения пользователю доступны все содержащиеся в нем стандартные средства.
Также при написании программы были использованы такие стандартные процедуры и функции языка программирования как:
- процедура Read – позволяет читать фаил.
- процедура initgraph – открывает графический фаил.
- процедура Write – читать позволяет только файлы расширением PAS
- процедура Break – процедура осуществляет досрочный выход из циклов For, While или Repeat;
- процедура Close(var f) – закрывает открытый до этого логический файл. Вызов процедуры необходим при завершении работы с файлом;
Функция CHOISE.
Определяет ключом для выхода из некоторых циклов и основной программы символ ‘Y’, обозначая его true. Используется в основной программе.
Функция PieSlice
Прорисует форму диаграммы ее цвет.
Функция initgraph
Подключает графический файл.
7. ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЮ
Вставьте дискету в дисковод. Выберите файл 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.
... это специальные программы, которые дополняют MS–DOS, например, обеспечивают использование новых или нестандартных устройств; – базовая система ввода–вывода BIOS, которая находится в постоянной памяти. Она содержит программы для проверки оборудования компьютера; – загрузчик DOS. Назначение этой короткой программы – загрузка в память системных файлов DOS и IO SYS при начальной загрузке компьютера ...
... · Если Windows программа имеет графический интерфейс, то и Линукс программа должна иметь его тоже; · Функциональность Linux программы должна соответствовать основным функция Windos программы; С учётом поставленных критерий и принципов была осуществлена методика подбора программ аналогов для заполнения информационной базы, в которой они будут участвовать в качестве списков соответствий программ ...
... программ в соответствии со строгой дисциплиной и имеет целью облегчить процесс тестирования, повысить производительность труда программистов, улучшить ясность и читабельность программы, а также повысить ее эффективность. Основные критерии оценки качества программы для ЭВМ. Известно, что один и тот же алгоритм может быть реализован на ЭВМ различными способами, т.е. может быть составлено несколько ...
... поиска и устранения в ней ошибок; 4) возможность использования готовых библиотек наиболее употребительных модулей. Но, пожалуй, самым важным достижением структурного подхода к разработке алгоритмов является нисходящее проектирование программ, основанное на идее уровней абстракции, которые становятся уровнями модулей в разрабатываемой программе. На этапе проектирования строится схема иерархии, ...
0 комментариев