Калькулятор чисел в восьмеричной системе

Автор работы: Пользователь скрыл имя, 25 Ноября 2012 в 08:50, курсовая работа

Описание

Цель курсовой работы: Разработка программы, позволяющей производить арифметические операции над числами в восьмеричной системе.
Результатом курсовой работы является создание файла программы калькулятора восьмеричной системы.
Для выполнения курсовой работы понадобились:
-Использование языка программирования Turbo Pascal
-Арифметические методы работы с числами

Содержание

Введение 3
Постановка задачи 4
Алгоритм программы 5
Исходный код программы 6
Пример работы программы 10
Требования к ПК 11
Вывод и актуальность дальнейшей разработки 12
Литература 13

Работа состоит из  1 файл

Курсовая работа.docx

— 299.21 Кб (Скачать документ)

Калькулятор чисел восьмеричной системы                                                                             

Министерство  образования и науки РФ

ГОУ ВПО « Алтайский государственный  технический университет им И. И. Ползунова»

 

 

 

 


 

 

 

 

 

 

 

 

Курсовая  работа по теме

«Калькулятор  чисел восьмеричной системы»

 

 

 

 

Выполнил                                                                                                                      ст.гр э-02

                                                                                                                                     Послов А. Н.

Проверил                                                                                                                  Годецкая Т. Е.

 

 

 

 

 

 

 

 

 

Барнаул 2011

Содержание

Введение 3

Постановка задачи 4

Алгоритм программы 5

Исходный код программы 6

Пример работы программы 10

Требования к ПК 11

Вывод и актуальность дальнейшей разработки 12

Литература 13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение

Цель курсовой работы: Разработка программы, позволяющей производить  арифметические операции над числами  в восьмеричной системе.

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

Для выполнения курсовой работы понадобились:

-Использование языка  программирования Turbo Pascal

-Арифметические методы  работы с числами

-Использование перевода  чисел из одной системы счисления  в другую

Я считаю что данная тема актуальна в наше время, потому что  в каждом доме есть компьютер который  переводит всю информацию в восьмеричную, а затем и в двоичную систему  счисления, но на данный момент восьмеричная система была вытеснена шестнадцатеричной. Так же актуальность работы объясняется тем, что созданная в результате программа позволяет ускорить процесс получения результата арифметических операций над числами, с последующим представлением результата в восьмеричной системе счисления, а так же облегчит труд преподавателей при проверке переводов из одной системы счисления в другую их учеников. Данная программа не является единственной в своём роде, т.к. существуют множество аналогичных разработок.

Средство получения конечного  продукта (программы-калькулятора) – язык программирования Turbo Pascal.

Результатом работы является функционирующая программа, позволяющая  производить операции сложения, вычитания, умножения и деления введённых  с клавиатуры чисел в восьмеричной системе счисления.

 

 

Постановка  задачи

Широкое применение восьмеричной системы в электронной  вычислительной технике объясняется  тем, что для нее характерен легкий перевод в двоичную и обратно  с помощью простой таблицы, в  которой все цифры восьмеричной системы от 0 до 7 представлены в виде двоичных триплетов (троек).

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

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

Например:  2138*128=?

2138=3*80+1*81+2*82=3+8+2*64=13910

128=2*80+1*81=2+8=1010

13910*1010=139010

_ 1390   8                                   


   1384   _ 173   8


         6       168    _ 21  8


                      5        16  2


                                  5


 

2138*128=25568

Алгоритм  программы

Исходный  код программы

PROGRAM CALCULIATOR;

USES CRT;

CONST A=['1','2','3','4','5','6','7','0','+','-','*','/','='];

A2:STRING[8]='01234567';

VAR N,W,E,R,T,M,D,U,I,O,P,L,Y,J,R1,R2,R3,R4,C: INTEGER;

S,H,J1,J2,J3,J4: STRING;

BEGIN J1:='+'; J2:='-'; J3:='*'; J4:='/';

REPEAT {открытие цикла для многократного выполнения арифметических вычислений чисел}

TEXTCOLOR(10); CLRSCR; {визуальное оформление программы}

writeln('                          Kalkuliator vosmerichnih chisel');

writeln('                          Kursovaya rabota po informayike');

writeln('                          studenta gr. E-02 Poslova A. N.');

writeln;

writeln;

writeln; TEXTCOLOR(15); WRITE(CHR(201));

FOR N:=1 TO 19 DO write(CHR(205)); WRITELN(CHR(187));

WRITE(CHR(186)); FOR N:=1 TO 19 DO write(' '); WRITELN(CHR(186));

WRITE(CHR(204)); FOR N:=1 TO 3 DO write(CHR(205)); WRITE(CHR(203));

FOR N:=1 TO 3 DO write(CHR(205)); WRITE(CHR(203));

FOR N:=1 TO 3 DO write(CHR(205)); WRITE(CHR(203));

FOR N:=1 TO 3 DO write(CHR(205)); WRITE(CHR(203));

FOR N:=1 TO 3 DO write(CHR(205)); WRITELN(CHR(185));

writeln(CHR(186),' 5 ',CHR(186),' 6 ',CHR(186),' 7 ',CHR(186),' + ',CHR(186),' - ',CHR(186));

WRITE(CHR(204)); FOR N:=1 TO 3 DO write(CHR(205)); WRITE(CHR(206));

FOR N:=1 TO 3 DO write(CHR(205)); WRITE(CHR(206));

FOR N:=1 TO 3 DO write(CHR(205)); WRITE(CHR(206));

FOR N:=1 TO 3 DO write(CHR(205)); WRITE(CHR(206));

FOR N:=1 TO 3 DO write(CHR(205)); WRITELN(CHR(185));

writeln(CHR(186),' 2 ',CHR(186),' 3 ',CHR(186),' 4 ',CHR(186),' * ',CHR(186),' / ',CHR(186));

WRITE(CHR(204)); FOR N:=1 TO 3 DO write(CHR(205)); WRITE(CHR(202));

FOR N:=1 TO 3 DO write(CHR(205)); WRITE(CHR(206));

FOR N:=1 TO 3 DO write(CHR(205)); WRITE(CHR(206));

FOR N:=1 TO 3 DO write(CHR(205)); WRITE(CHR(206));

FOR N:=1 TO 3 DO write(CHR(205)); WRITELN(CHR(185));

writeln(CHR(186),'   0   ',CHR(186),' 1 ',CHR(186),' = ',CHR(186),' & ',CHR(186));

WRITE(CHR(200)); FOR N:=1 TO 7 DO write(CHR(205)); WRITE(CHR(202));

FOR N:=1 TO 3 DO write(CHR(205)); WRITE(CHR(202));

FOR N:=1 TO 3 DO write(CHR(205)); WRITE(CHR(202));

FOR N:=1 TO 3 DO write(CHR(205)); WRITELN(CHR(188));

WRITELN('& - SIMVOL POVTORNOGO VICHOSLENIYA');

GOTOXY(3,8);

D:=1; O:=0; P:=0; Y:=1; L:=1; M:=1; R1:=0; R2:=0; R3:=0; R4:=0;

C:=0; S:=''; W:=1;

READLN(S); {ввод примера для решения}

FOR N:=1 TO LENGTH(S) DO BEGIN

IF S[N] IN A THEN BEGIN

IF S[N]='1' THEN BEGIN TEXTCOLOR(4); GOTOXY(11,14); WRITE('1'); DELAY(50000); TEXTCOLOR(15); GOTOXY(11,14); WRITE('1'); END;

IF S[N]='2' THEN BEGIN TEXTCOLOR(4); GOTOXY(3,12); WRITE('2'); DELAY(50000); TEXTCOLOR(15); GOTOXY(3,12); WRITE('2'); END;

IF S[N]='3' THEN BEGIN TEXTCOLOR(4); GOTOXY(7,12); WRITE('3'); DELAY(50000); TEXTCOLOR(15); GOTOXY(7,12); WRITE('3'); END;

IF S[N]='4' THEN BEGIN TEXTCOLOR(4); GOTOXY(11,12); WRITE('4'); DELAY(50000); TEXTCOLOR(15); GOTOXY(11,12); WRITE('4'); END;

IF S[N]='5' THEN BEGIN TEXTCOLOR(4); GOTOXY(3,10); WRITE('5'); DELAY(50000); TEXTCOLOR(15); GOTOXY(3,10); WRITE('5'); END;

IF S[N]='6' THEN BEGIN TEXTCOLOR(4); GOTOXY(7,10); WRITE('6'); DELAY(50000); TEXTCOLOR(15); GOTOXY(7,10); WRITE('6'); END;

IF S[N]='7' THEN BEGIN TEXTCOLOR(4); GOTOXY(11,10); WRITE('7'); DELAY(50000); TEXTCOLOR(15); GOTOXY(11,10); WRITE('7'); END;

IF S[N]='0' THEN BEGIN TEXTCOLOR(4); GOTOXY(5,14); WRITE('0'); DELAY(50000); TEXTCOLOR(15); GOTOXY(5,14); WRITE('0'); END;

IF S[N]='+' THEN BEGIN TEXTCOLOR(4); GOTOXY(15,10); WRITE('+'); DELAY(50000); TEXTCOLOR(15); GOTOXY(15,10); WRITE('+'); END;

IF S[N]='-' THEN BEGIN TEXTCOLOR(4); GOTOXY(19,10); WRITE('-'); DELAY(50000); TEXTCOLOR(15); GOTOXY(19,10); WRITE('-'); END;

IF S[N]='*' THEN BEGIN TEXTCOLOR(4); GOTOXY(15,12); WRITE('*'); DELAY(50000); TEXTCOLOR(15); GOTOXY(15,12); WRITE('*'); END;

IF S[N]='/' THEN BEGIN TEXTCOLOR(4); GOTOXY(19,12); WRITE('/'); DELAY(50000); TEXTCOLOR(15); GOTOXY(19,12); WRITE('/'); END;

IF S[N]='=' THEN BEGIN TEXTCOLOR(4); GOTOXY(15,14); WRITE('='); DELAY(50000); TEXTCOLOR(15); GOTOXY(15,14); WRITE('='); END;

END ELSE  BEGIN TEXTCOLOR(0); GOTOXY(2,8);

writeln(S,'=');{закрашивание введенного примера} TEXTCOLOR(15);

GOTOXY(3,8); WRITELN('CHISLO NE PODHODIT'); W:=2; END; END;{проверка чисел на принадлежность чисел к данной системе счисления, w используется как флажок}

END; END;

IF W=1 THEN BEGIN

R1:=POS(J1,S); R2:=POS(J2,S);  R3:=POS(J3,S);  R4:=POS(J4,S);

{Осуществляется поиск попадания первого знака арифметических выражений}

IF R1>0 THEN E:=1 ELSE IF R2>0 THEN E:=2 ELSE IF R3>0 THEN E:=3 ELSE E:=4;

R:=R1+R2+R3+R4; {R используется для разбиения введенной строки на два числа}

{два цикла подряд для перевода чисел из восьмеричной системы счисления в десятичную}

FOR T:=(R-1) DOWNTO 1 DO BEGIN

WHILE M<D DO BEGIN Y:=Y*8; M:=M+1; END; VAL(S[T],U,I);

O:=O+U*Y; D:=D+1; END;

D:=1; Y:=1; M:=1;

FOR T:=(LENGTH(S)-1) DOWNTO (R+1) DO BEGIN

WHILE M<D DO BEGIN Y:=Y*8; M:=M+1; END;  VAL(S[T],U,I);

P:=P+U*Y; D:=D+1; END;

TEXTCOLOR(0);  GOTOXY(2,8); writeln(S,'='); TEXTCOLOR(15); GOTOXY(2,8);{ функция GOTOXY используется для того, чтобы выводить ответ в строчку с примером}

{осуществление арифметических действий}

IF E=1 THEN R:=O+P ELSE IF E=2 THEN R:=O-P ELSE IF E=3 THEN R:=O*P ELSE BEGIN N:=O DIV P; C:=O MOD P; END;

IF R<0 THEN BEGIN R:=-R; WRITE('= - '); END ELSE WRITE('='); S:='';

{перевод ответа  в восьмеричную систему счисления  }

IF R<>0 THEN BEGIN

IF E=4 THEN BEGIN

WHILE N>0 DO BEGIN

S:=A2[N MOD 8 + 1]+S;

N:=N DIV 8;

END; H:='';

WHILE C>0 DO BEGIN

H:=A2[C MOD 8 + 1]+H;

C:=C DIV 8;

END; END ELSE BEGIN

WHILE R>0 DO BEGIN

S:=A2[R MOD 8 + 1]+S;

R:=R DIV 8;

END; END; END ELSE S:='0';

IF LENGTH(H)>6 THEN DELETE(H,6,LENGTH(H)-6);

{вывод ответа}

IF E=4 THEN BEGIN IF N=0 THEN WRITE('0; octatok=',H) ELSE WRITE(S,'; octatok=',H) END ELSE WRITE(S); END; TextColor(4);

GOTOXY(19,14);

READLN(H);

IF H='&'{условие повторного вычисления} THEN BEGIN L:=L-1; WRITELN; WRITELN; END ELSE L:=L+1;

UNTIL L>=2;

END.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример  работы программы

 

После ввода примера со знаком равно  в конце, программа выводит ответ  таким образом:

 

 

Для проверки правильности работы программы, введен пример который был разобран в «Постановке задачи» в начале данной курсовой работы. Можно пронаблюдать, что ответы сошлись, и гораздо легче решить пример используя данную программу.

 

 

 

 

 

 

 

 

 

 

Требования  к ПК

Больших требований от компьютера не требуется, необходимы такие которые имеются, в наше время, на каждом ПК. Больше требуется:

Установленные программы: Turbo Pascal

Устройства ввода информации: клавиатура

Устройство считывания информации с переносных накопителей информации: CD-ROM/DVD-ROM

При отсутствии Turbo Pascal на компьютере, можно воспользоваться  программой Turbo Pascal на переносном накопителе информации, для этого прочтите файл «файл для прочтения.txt».

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вывод и актуальность дальнейшей разработки

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Литература

http://ru.wikipedia.org/wiki/%D1%E8%F1%F2%E5%EC%E0_%F1%F7%E8%F1%EB%E5%ED%E8%FF

http://www.inf1.info/octalnotation

http://irnik.narod.ru/htm/sistema.htm

http://www.5byte.ru/11/0006.php

http://morta11.narod.ru/pascal/pascal_graphika.html


Информация о работе Калькулятор чисел в восьмеричной системе