Автор работы: Пользователь скрыл имя, 25 Ноября 2012 в 08:50, курсовая работа
Цель курсовой работы: Разработка программы, позволяющей производить арифметические операции над числами в восьмеричной системе.
Результатом курсовой работы является создание файла программы калькулятора восьмеричной системы.
Для выполнения курсовой работы понадобились:
-Использование языка программирования Turbo Pascal
-Арифметические методы работы с числами
Введение 3
Постановка задачи 4
Алгоритм программы 5
Исходный код программы 6
Пример работы программы 10
Требования к ПК 11
Вывод и актуальность дальнейшей разработки 12
Литература 13
Калькулятор чисел восьмеричной системы
Министерство образования и науки РФ
ГОУ
ВПО « Алтайский
Курсовая работа по теме
«Калькулятор чисел восьмеричной системы»
Выполнил
Проверил
Барнаул 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=
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'
A2:STRING[8]='01234567';
VAR N,W,E,R,T,M,D,U,I,O,P,L,Y,J,
S,H,J1,J2,J3,J4: STRING;
BEGIN J1:='+'; J2:='-'; J3:='*'; J4:='/';
REPEAT {открытие цикла для многократного выполнения арифметических вычислений чисел}
TEXTCOLOR(10); CLRSCR; {визуальное оформление программы}
writeln('
writeln('
writeln('
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/%
http://www.inf1.info/
http://irnik.narod.ru/htm/
http://www.5byte.ru/11/0006.
http://morta11.narod.ru/
Информация о работе Калькулятор чисел в восьмеричной системе