/>/>АННОТАЦИЯ
В моей курсовой работе ярассмотрела такие темы, как: проценты, диаграммы и их построение, графическиемодули языка Паскаль, операторы языка Паскаль.
Моя программа рассчитанана пользователя, который интересуется программированием и которому интересно,какое количество операторов в программе Паскаль. Ее можно применять впрограммировании для подсчета количества.
Моя программа состоит изтрех файлов, которые содержат саму программу, заархивированный файл и файл длязапуска программ. Программа легко открывает из программы Паскаль расширением ибыстро считает операторы и рисует диаграмму.
Пояснительная записка кработе состоит из 6 разделов и дополнительно прилагается текст программы.
ВВЕДЕНИЕ
Система программированияТурбо Паскаль представляет собой единство двух в известной степенисамостоятельных начал: компилятора с языка программирования Паскаль (языкназван в честь выдающегося французского математика и философа Блеза Паскаля) инекоторой инструментальной программной оболочки, способствующему повышениюэффективности создания программ.
Система Турбо Паскальдовольно значительна по объему. Она поставляется на нескольких дистрибутивныхдискетах и устанавливается на жестком диске. При развертывании системы нажестком диске обычно создается каталог с именем ТР, в который помещаются всефайлы с дистрибутивных дискет. Файл TURBO. EXE cодержит готовую к работе диалоговую систему программированияТурбо Паскаля. В него входят минимально необходимые данные части Турбо Паскаля(текстовый редактор, компилятор, загрузчик, компоновщик).
С++- язык общего назначения и задуман для того, чтобы настоящие программистыполучили удовольствие от самого процесса программирования.
Заисключением второстепенных деталей он содержит язык С как подмножество.
ЯзыкС расширяется введением гибких и эффективных средств, предназначенных для построенияновых типов. Программист структурирует свою задачу, определив новые типы,которые точно соответствуют понятиям предметной области задачи. Такой методпостроения программы обычно называют абстракцией данных. Информация о типахсодержится в некоторых объектах типов, определенных пользователем. С такимиобъектами можно работать надежно и просто даже в тех случаях, когда их типнельзя установить на стадии трансляции. Программирование с использованием такихобъектов обычно называют объектно-ориентированным. Если этот метод применяетсяправильно, то программы становятся короче и понятнее, а сопровождение ихупрощается.
Даннаякнига в первую очередь рассчитана на профессиональных программистов, желающихизучить новый язык и использовать его для нетривиальных задач. В книге даетсяполное описание С++, содержится много завершенных примеров и еще большефрагментов программ.
ЯзыкС++ никогда бы не стал реальностью без, если бы постоянно не использовалисьпредложения и советы и не учитывалась конструктивная критика со стороны многихдрузей и коллег. Особенно следует упомянуть Тома Карджила, Джима Копли, СтьюФельдмана, Сэнди Фрэзера, Стива Джонсона, Брайана Кернигана, Барта Локанти,Дага Макилроя, Дэнниса Ритчи, Лэрри Рослера, Джерри Шварца и Джона Шапиро, которыевнесли важные для развития языка идеи. Дэйв Пресотто реализовал текущую версиюбиблиотеки потокового ввода/вывода.
Смысл моей программысостоит в том, чтоб проверять роботу операторов и выводить их частоту на экранмонитора. Чтоб достоверно все сделать мы должны как можно лучше изучить работуоператоров и их свойства. В программе также задействуем диаграмму, котораянаглядно нам покажет изменение работы операторов. А значит и изменение работыпрограмм, которые проверяем.
Существуют в Паскалетакие операторы: составной оператор, условный оператор, оператор метки,оператор перехода, выбора, присваивания и повторный. Составной оператор – этопоследовательность произвольных операторов программы, заключенная в операторныескобки – зарезервированы словом begin…end. Язык Турбо Паскаля не накладываетникаких ограничений на характер оператора, входящих в состав оператора.
Фактически весь разделоператоров, обрамленных словами begin…end, фактически представляет собой одиноператор.
Условный операторпозволяет проверить некоторые условия и в независимости от результатов проверкивыполнить то или иное действие.
Например:
Var
x, y, max:Integer;
begin
…………………………..
If x>maxthen y: = max
Else y:=x;
При выполнении этогофрагмента У получает значение Х, если только оно не превышает МАХ, в противномслучае У=МАХ.
Таким образом, условныйоператор – это ветвления вычисляемого процесса.
Условный операторработает по следующему алгоритму. Вначале вычисляются условные выражения«условия». Если результат истина, то выполняется «оператор1», а «оператор2»пропускается; если результат лож, то наоборот.
Операторы повтора. ВТурбо Паскале имеются три различных оператора, с помощью которых можнопрограммировать фрагменты программ.
Например:
…………………………..
S:=0;
If n>=0 then
For i:=1 to n do
S:=S+1
Else
For i:=-1 downto n do
S:=S+1
Программа для пересчеталюбых сумм.
Счетный оператор цикла FOR. При выполнении оператора вначалевычисляется выражение «начальное значение» и осуществляется присваивание «парный цикл»= «начальное значение».
Два других оператораповторяют лишь условие выполнения или повторения цикла, но не связаны сизменением счета цикла.
Оператор выбора позволяетвыбрать один из нескольких возможных продолжений программы. Параметров, покоторому осуществляется выбор, служит ключ выбора – выражение любогопорядкового типа
Операторы безусловногоперехода. Можно теоретически показать, что рассмотренных операторов достаточно.В этом языке наличие операторов перехода кажется излишним. Но тем не менееоператор перехода может значительно упростить программу.
Метка в Турбо Паскале –это произвольный идентификатор, позволяющей именовать некоторые операторы итаким образом ссылаться на них. Метка располагается непосредственно передпомечаемым оператором и отделяется от него двоеточием. Оператор можно помечатьнесколькими метками, которые друг от друга отделяются двоеточием.
1. ПОСТАНОВКА ЗАДАЧИ
Темой моей курсовойявляется, сложить программу, которая будет определять относительную частотуоператоров языка Pascal в любой Паскальпрограмме. Результат надо вывести на диаграмму.
2. ФУНКЦИОНАЛЬНОЕНАЗНАЧЕНИЕ
Данная программа являетсяслужебной. Программа позволяет определить точное количество операторов иувидеть графически.
3. ВХОДЯЩИЕ ИИСХОДЯЩИЕ ДАННЫЕ
Входящими даннымиявляется путь к программе с расширением Паскаль.
Выходящие данные –диаграмма с данными
Путь к нужной программе
D:\ Rew\ Ij.PAS
/>
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
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 div2+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!!!.Pleasecontinue');
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.