Калькулятор шестнадцатеричных чисел
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИИ
Федеральное
государственное бюджетное
учреждение
высшего профессионального
«Тюменский государственный нефтегазовый университет»
Институт кибернетики, информатики и связи
Отделение
информационных технологий и вычислительной
техники
КУРСОВАЯ
РАБОТА
ПО ДИСЦИПЛИНЕ
«ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ
ПРОГРАММИРОВАНИЕ»
НА
ТЕМУ «Калькулятор шестнадцатеричных
чисел»
Студента Кацюк М.В. ________/________ г.
подпись дата
Группа АСОиУт-09-(11)-2
Специальность
230103.51 «Автоматизированные системы
обработки информации и управления
(по отраслям)»
Оценка ___________________
Руководитель Пучкова Д.М./________/________г.
Тюмень, 2011
СОДЕРЖАНИЕ
ВВЕДЕНИЕ 3
1. Теоретический обзор 4
1.1 Позиционные
системы счисления
2. Алгоритм задачи 6
2.1. Блок-схема программы 6
2.2 Описание процедур 7
3. Руководство по эксплуатации 8
3.1. Разработка пользовательского интерфейса 8
3.2 Минимальный
требования к конфигурации ПК
8 3.3 Инструкция по применению
3.4. Тестирование программы 9
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ 11
ПРИЛОЖЕНИЕ А
ВВЕДЕНИЕ
Система счисления – символический метод записи чисел, представление чисел с помощью письменных знаков.
Система счисления:
-
даёт представления множества
чисел (целых и/или вещественны
-
даёт каждому числу уникальное
представление (или, по
-
отражает алгебраическую и ариф
Знаки, используемые при записи чисел, называются цифрами. Полный набор символов определенной системы счисления называют ее алфавитом.
Цель индивидуального задания, состоит в разработке программы «Калькулятор шестнадцатеричных чисел».
Задачи:
- Изучить теоретический материал по теме «системы счисления», на примере шестнадцатеричной системы счисления.
- Разработать полноценный программный пакет в среде визуализированного программирования Delphi, с отдельной разработкой дизайна программы.
Данная
тема актуальна, дополнительную информацию
о системах счисления и способах проведения
арифметических действий над ними.
1. Теоретический обзор
1.1
Позиционные системы счисления
Позиционная
система счисления - система счисления,
в которой значение каждого числового знака (
Под позиционной системой счисления обычно понимается b-ричная система счисления, которая определяется целым числом b > 1, называемым основанием системы счисления. Целое число x в b-ричной системе счисления представляется в виде конечной линейной комбинации степеней числа b [1]:
где ak - это целые числа, называемые цифрами, удовлетворяющие неравенству : 0 £ ак £ (b -1).
Каждая степень bk в такой записи называется весовым коэффициентом разряда. Старшинство разрядов и соответствующих им цифр определяется значением показателя k (номером разряда). Обычно для ненулевого числа x требуют, чтобы старшая цифра an − 1 в b-ричном представлении x была также ненулевой.
Если не возникает разночтений, число x записывают в виде последовательности его b-ричных цифр, перечисляемых по убыванию старшинства разрядов слева направо:
x = an-1
an-2 … a0.
(2)
1.2
Шестнадцатеричная система счисления
Шестнадцатеричная
система счисления -
Широко
используется в низкоуровневом программировании
и компьютерной документации, поскольку
в современных компьютерах
В стандарте Юникода номер символа принято записывать в шестнадцатеричном виде, используя не менее 4 цифр (при необходимости - с ведущими нулями).
Шестнадцатеричный
цвет - запись трёх компонент цвета (R, G
и B) в шестнадцатеричном виде.
2. Алгоритм задачи
2.1. Блок-схема
программы
2.2
Описание процедур
Procedure Sum(V : String) - Процедура, которая прибавляет к результату новое значение
Procedure UnSum(V : String) - Процедура, которая вычитает из результата новое значение
3. Руководство по эксплуатации
3.1
Разработка пользовательского интерфейса
Интерфейс
представляет собой стандартный набор
компонентов Delphi. Были использованы компоненты
MailForm, Panel, button и Edit.
3.2
Минимальный требования к конфигурации
ПК
- Intel Pentium II/233 МГц и выше
- Microsoft Windows 95, 98, 2000, Windows XP, Vista, Seven
- 128 Мб ОЗУ
- 1 Мб места на жестком диске
- Накопитель CD-ROM
- Монитор с разрешением VGA или выше
- Мышь
3.3
Инструкция по применению
Откройте корневой каталог Курсовой проект, и запустите файл Calc_Hex.exe, на экране появится главное окно программы:
Рисунок 1 - Интерфейс программы
В поле Edit введите числа в шестнадцатеричной системе счисления, не забывая при этом указать арифметическое действие. Далее нажмите кнопку «Рассчитать» и в небольшом окне программа выведет ответ.
3.4.
Тестирование программы
Пример 1.
Сложим шестнадцатеричные числа А и 9. Нажимаем кнопку «Расчитать», в появившемся окне получает ответ 13.
Для того, что бы проверить эти данные нужно осуществить расчет арифметическим способом:
1. A+9=13, данное число в шестнадцатеричной знаковой системе.
2. Определим значение A в шестнадцатеричной системе счисления, это 10 в десятичной, следовательно 9 – это 9, сумма в десятичной системе счисления 19, так как действие проводится в шестнадцатеричной системе счисления то исходя из разрядов 13.
0 1 2 3 4 5 6 7 8 9 A B C D E F – шестнадцатеричная система,
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 – десятичная система.
Таким образом, результаты, полученные решением программы и арифметическим способом, совпали.
Пример 2.
Вычтем шестнадцатеричные числа F и A. Нажимаем кнопку «Расчитать», в появившемся окне получает ответ 5.
Для того, что бы проверить эти данные нужно осуществить расчет арифметическим способом:
1. F+A=13, данное число в шестнадцатеричной знаковой системе.
2. Определим значение F в шестнадцатеричной системе счисления, это 15 в десятичной, следовательно A – это 10, разность в десятичной системе счисления 5, так как действие проводится в шестнадцатеричной системе счисления то ответ 5.
Таким
образом, результаты, полученные решением
программы и арифметическим способом,
совпали.
ЗАКЛЮЧЕНИЕ
В процессе работы над темой курсового проекта были достигнуты поставленные цели и задачи, а именно калькулятор шестнадцатеричной системы счисления.
Для реализации данной программы, была изучена литература по теме «Системы счисления», разработана блок-схема, которая в дальнейшем являлась основой написания кода программы.
В ходе тестирования этой программы были выявлены ее преимущества:
1. Низкие системные требования.
2. Интуитивно-понятный интерфейс программы.
3. Быстрый и достоверный подсчет данных.
Недостатком программы является недостаточно широкий диапазон работы с числами. Предложение по улучшению программы состоит в расширении диапазона работы с числами.
Анализ результатов показывает, что программы работают правильно и верно проводят арифметические действия над шестнадцатеричными числами.
СПИСОК
ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
- Бобровский, С.И. Delphi7. учеб. Пособие для студ. Среднего проф. образования / С.И. Бобровский. - СПб. 2006. – 736 с.
- Кузнецов, В.В. Основы объектно-ориентированного программирования в Delphi: учебное пособие /В.В. Кузнецов, И.В.Абдрашитова. – Томск: ТУСУР, 2008 .- 180с.
- Сухарев, М.В. Delphi. Профессиональный подход: учебное пособие для студентов среднего профессионального образования/ М.В.Сухарев. – Наука и техника, 2007. – 600с.
- Тимошевская, Н.Е. Основы алгоритмизации и программирования: учебное пособие /Н.Е. Тимошевская, Е.А. Перышкина. – Томск: ТУСУР, 2008 .- 135с.
- Угринович, Н.Д. Информатика и информационные технологии. Учебник для 10-11 классов/ Н.Д. Угринович. - М. .: Лаборатория Базовых Знаний, 2003. – 438 с.
- Фаронов, В.В. Delphi Программирование на языке высокого уровня. учебник для вузов / В.В. Фаронов. – СПб.: Питер, 2003. – 640 с.
Приложение
А
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TMainForm = class(TForm)
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;
Button16: TButton;
Button17: TButton;
Button18: TButton;
Button19: TButton;
Text: TEdit;
Button20: TButton;
Button21: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button17Click(Sender: TObject);
procedure Button18Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button16Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button19Click(Sender: TObject);
procedure Button20Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button21Click(Sender: TObject);
procedure TextChange(Sender: TObject);
procedure Panel1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Const HexTab : array[0..15]
of char = ('0','1','2','3','4','5','6','
var
MainForm: TMainForm;
LastAdd:string;
PosR:integer;
Res : Array[1..17] of integer;
I : Integer;
S : String;
F : Text;
flag:boolean;
PosR1 : Integer;
implementation
{$R *.dfm}
Procedure Sum(V : String); { Процедура, которая прибавляет к результату новое значение }
Var A : Byte;
PosR : Integer;
Begin
For I := 1 to Length(V) do { Переводим все буквы в верхний регистр и ищем ошибки }
Begin
If V[i] in['a'..'f'] then Dec(V[i],32); { Если этот симвл - маленькая буква, то уменьшаем ее значение на 32 (переводим в верхний регистр) }
If not(V[i] in['0'..'9','A'..'F']) then { Если это не шестнадцатиричное значение, то ошибка }
Begin
WriteLn(V,' is not hex!');
Exit;
End;
End;
For I := Length(V) downto 1 do
Begin
If V[i]>'9' then
A := Ord(V[i])-48-7
else
A := Ord(V[i])-48;
PosR := 16-Length(V)+I; { Выщитываем текущую позицию в массиве Res }
Res[PosR] := Res[PosR] + A; { Прибавляем значение к текущей позиции } //uhuihiu
If Res[PosR]>15 then { ГДе то в этой части кода находится баг }
Begin
Res[PosR-1] := Res[PosR-1] + 1; { Увеличиваем на 1 старшую позицию }
Res[PosR] := Res[PosR] - 16; { А в этой оставляем только остаток }
End;
End;
For I := 16 downto 2 do
Begin
If Res[I]>15 then
Begin
Res[I-1] := Res[I-1] + 1;
Res[I] := Res[I] - 16;
End;
End;
End;
Procedure UnSum(V : String); { Процедура, которая вычитает из результата новое значение }
Var A,j : integer;
Begin
For I := 1 to Length(V) do { Переводим все буквы в верхний регистр и ищем ошибки }
Begin
If V[i] in['a'..'f'] then Dec(V[i],32); { Если этот симвл - маленькая буква, то уменьшаем ее значение на 32 (переводим в верхний регистр) }
If not(V[i] in['0'..'9','A'..'F']) then { Если это не шестнадцатиричное значение, то ошибка }
Begin
WriteLn(V,' is not hex!');
Exit;
End;
End;
For I := Length(V) downto 1 do
Begin
If V[i]>'9' then
A := Ord(V[i])-48-7
else
A := Ord(V[i])-48;
if(Res[PosR] >= A) then
begin
Res[PosR] := Res[PosR] - A;
end
else begin
Res[PosR] :=Res[PosR] + 16;
Res[PosR] := Res[PosR] - A;
for j := PosR-1 downto 1 do
begin
if(Res[j]>0)then
begin
Res[j]:=Res[j]-1;
break;
end
else begin
Res[j]:=15;
end;
end;
end;
PosR:=PosR - 1;
End;
End;
procedure TMainForm.Button10Click(
begin
Text.Text:=Text.Text + 'D';
LastAdd:='D';
end;
procedure TMainForm.Button11Click(
begin
LastAdd:='7';
Text.Text:=Text.Text + '7';
end;
procedure TMainForm.Button12Click(
begin
LastAdd:='6';
Text.Text:=Text.Text + '6';
end;
procedure TMainForm.Button13Click(
begin
LastAdd:='5';
Text.Text:=Text.Text + '5';
end;
procedure TMainForm.Button14Click(
begin
LastAdd:='4';
Text.Text:=Text.Text + '4';
end;
procedure TMainForm.Button15Click(
begin
LastAdd:='9';
Text.Text:=Text.Text + '9';
end;
procedure TMainForm.Button16Click(
begin
LastAdd:='8';
Text.Text:=Text.Text + '8';
end;
procedure TMainForm.Button17Click(
var DelOp:string;
begin
if((LastAdd = '+') or (LastAdd = '-')) then
begin
DelOp:=Text.Text;
delete(DelOp, length(DelOp), 1);
Text.Text := DelOp;
end;
Text.Text:=Text.Text + '+';
LastAdd:='+';
end;
procedure TMainForm.Button18Click(
var DelOp:string;
begin
if((LastAdd = '+') or (LastAdd = '-')) then
begin
DelOp:=Text.Text;
delete(DelOp, length(DelOp), 1);
Text.Text := DelOp;
end;
Text.Text:=Text.Text + '-';
LastAdd:='-';
end;
procedure TMainForm.Button19Click(
var i,k,j,znak:integer;
F,Digit:string;
flag_sim:boolean;
begin
if(Text.Text = '')then
begin
ShowMessage('Введите пример для рассчета!');
end
else if(Text.Text='0') then
begin
Text.Text:='0';
end
else begin
znak:=0;
PosR:=16;
For i := 1 to 17 do Res[i] := 0; { Обнуляем результат }
F:=Text.Text;
k:=1;
if(F[1] = '+')then znak:=1;
if(F[1] = '-')then znak:=2;
if(znak<>0) then inc(k);
While k<=Length(F) do
Begin
if(F[k]='+') then begin break; end;
if(F[k]='-') then begin break; end;
Digit:=Digit+F[k];
inc(k);
End;
if(znak <> 2) then Sum(Digit);
if(znak = 2) then UnSum(Digit);
j:=0;
While k<=Length(F) do
Begin
PosR:=16;
Digit:='';
while(true) do
begin
if(k>Length(F)) then begin break;end;
if((F[k]='+') ) then begin j:=1;inc(k);break; end;
if((F[k]='-') ) then begin j:=2;inc(k);break; end;
inc(k);
end;
while(true) do
begin
if(k>Length(F)) then begin break;end;
if((F[k]='+') ) then begin break; end;
if((F[k]='-') ) then begin break; end;
Digit:=Digit+F[k];
inc(k);
end;
if(j=1)then begin Sum(Digit);end;
if(j=2)then begin UnSum(Digit);end;
End;
S := '';
For I := 1 to 16 do
Begin
S := S + HexTab[Res[i]]; { Перевести из вида целого числа 0..15 в строковый вид '0'..'F' }
End;
While (S<>'') and (S[1]='0') do Delete(S,1,1); { Убираем все нули из начала }
Text.Text:='';
ShowMessage('Ответ: ' + S);
end;

- Калькуляция
- Калькуляция баптары бойынша шыгындарды есептеу
- Калькуляция блюд ресторана
- Калькуляция и анализ себестоимости готовой продукции
- Калькуляция и анализ себестоимости продукции
- Калькуляция и анализ себестоимости продукции на предприятии ООО ЗЖБК "Газпром"
- Калькуляция измерителей эксплуатационной работы
- Калькулювання собівартості продукції
- Калькулятор
- Калькулятор Delphi
- Калькулятор на Delphi
- Калькулятор на Visual Basic
- Калькулятор на основе микропроцессора
- Калькулятор чисел в восьмеричной системе