Программа "Калькулятор двоичных и шестнадцатеричных систем счисления"

Создание программы для выполнения простейших математических функций с применением языка программирования ObjectPascal. Проектирование графического интерфейса Калькулятора двоичных и шестнадцатеричных систем. Описание алгоритма на естественном языке.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 19.05.2014
Размер файла 115,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

Размещено на http://www.allbest.ru

Содержание

Введение

1. Внешнее описание

1.1 Определение требований к программному средству

1.2 Спецификация качества программного обеспечения

1.3 Функциональная спецификация

2. Проектирование

2.1 Проектирование графического интерфейса

3. Программирование

3.1 Спецификация классов

3.2 Описание алгоритма на естественном языке

4. Аттестация

4.1 Тестирование

4.2 Руководство администратора

4.3 Руководство пользователя

Заключение

Приложение А. Листинг программы

Введение

В данной пояснительной записке рассматривается описание программы «Калькулятора двоичных и шестнадцатеричных систем счисления».

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

В качестве основного инструмента разработки применяется Delphi 7. Язык программирования Object Pascal.

1. Внешнее описание

1.1 Определение требований к программному средству

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

1.2 Спецификация качества программного обеспечения

Функциональность: программа должна являться полностью завершенным программным продуктом, не требующим каких-либо дополнительных специальных компонентов.

Надёжность: программа должна быть автономной.

Эффективность: программа должна функционировать без наличия привода CD/DVD-дисков, должна предъявлять минимальные требования к аппаратному обеспечению, требования к аппаратным ресурсам должны быть намного ниже, чем для самой ОС.Программа должна иметь интуитивно понятный пользовательский графический интерфейс.

1.3 Функциональная спецификация

Минимальные технические характеристики компьютера, на котором гарантируется стабильная работа программы:

- компьютер/процессор: компьютер с процессором класса Pentium II 450 МГц;

- память: 64 МБОЗУ;

- монитор: монитор Super VGA с разрешением 800x600 точек или более высоким, поддерживающий 256 цветов;

- операционная система: операционная система Windows 2000, необходимо наличие Microsoft.NET FrameworkRuntime v2.0;

- наличие свободного дискового пространства на жёстком диске (порядка 1 мегабайта).

Внешние функции:

- программа должна выполнять все функции за конечное количество времени;

Критические случаи:

- завершение работы Windows. В этом случае программа должна завершать свою работу.

2. Проектирование

2.1 Проектирование графического интерфейса

Главная форма содержит основные элементы интерфейса и даёт доступ ко всем функциям

Рисунок 1 - главная форма программы

Форма Form1 содержит следующие элементы управления:

- поле для просмотра введенных и вычисленных значений;

- цифровые, арифметические и клавиши управления: для ввода цифр, арифметических операций и функций очистки и вычисления данных;

3. Программирование

3.1 Спецификация классов

Подсистема расчета реализована функцией:

- procedureTForm1.Button17Click(Sender: TObject) - производит арифметические операции над введенными числами;

Подсистема интерфейса - объединяет все остальные подсистемы. Здесь реализован весь пользовательский интерфейс.

Основные методы:

- procedure TForm1.Button1Click(Sender: TObject)вводцифровыхзначений 0-9, `A'-`F';

- procedure TForm1.Button16Click(Sender: TObject);

procedure TForm1.Button12Click(Sender: TObject);

procedure TForm1.Button11Click(Sender: TObject);

procedure TForm1.Button4Click(Sender: TObject); - ввод арифметической операции.

- procedure TForm1.Button24Click(Sender: TObject) - сброс значений и операций

- procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState) - удаление последнего символа во введенном числе клавишей BackSpace.

?functionTForm1.BinToInt (Value: integer): double; - функция перевода числа из двоичной системы счисления в десятичную систему счисления.

?????functionTForm1.Bin(x: Integer): string; - функция перевода числа из десятичной в двоичную систему счисления.

?????functionTForm1.HEX(a:integer):string; - функция перевода числа из десятичной в шестнадцатеричную систему счисления.

????functionTForm1.HexToInt(HexNum: string): LongInt; - функция перевода числа из шестнадцатеричной в десятичную систему счисления.

3.2 Описание алгоритма на естественном языке

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

Алгоритм арифметической операции. В данном алгоритме происходит проверка условным оператором(if):

ComboBox на индекс =0 (на форме “двоичная”), вызов функции BinToInt для преобразования двух чисел двоичной системы счисления в десятичную систему счисления, арифметические операции `+','-','*','/' над введенными числами и перевод результата из десятичной в двоичную систему счисления функцией IntToBin.

ComboBox на индекс =1 (на форме “шестнадцатеричная”), вызов функции HexToInt для преобразования двух чисел шестнадцатеричной системы счисления в десятичную систему счисления, арифметические операции `+','-','*','/' над введенными числами и перевод результата из десятичной в шестнадцатеричную систему счисления функцией IntToBin.

4. Аттестация

4.1 Тестирование

Для тестирования программы производились различные манипуляции с данными, искусственно создавались всевозможные критические ситуации.

Тест 1. Ввод цифровых данных.

При вводе цифровых данных ошибок не возникает.

Тест 2. Ввод арифметических операций.

При вводе арифметических операций может возникнуть ошибка. Деления на 0 или ввод не ддопустимо большого значения числа.

4.2 Руководство администратора

Программа поставляется в виде исполнимого файла «Calc.exe» размером 14 КБ не требует установки и дополнительной настройки.

Программа не разделяет полномочия на пользовательские и администраторские, вследствие чего руководство администратора будет идентично руководству пользователя.

4.3 Руководство пользователя

программа калькулятор интерфейс алгоритм

Программа предназначена для произведения элементарных арифметических операций над двоичными и шестнадцатеричными числами.

Для ввода числовых, знаковых и арифметических значений используются соответствующие клавиши на форме.

Для очистки и удаления введенного значения используются клавиши Сброс.

Заключение

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

При разработке данного программного средства применялся язык программирования ObjectPascal.

Приложение А. Листинг модуляForm1

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Edit1: TEdit;

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;

Button16: TButton;

Button17: TButton;

ComboBox1: TComboBox;

Button18: TButton;

Button19: TButton;

Button20: TButton;

Button21: TButton;

Button22: TButton;

Button23: TButton;

Button24: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button10Click(Sender: TObject);

procedure Button7Click(Sender: TObject);

procedure Button8Click(Sender: TObject);

procedure Button9Click(Sender: TObject);

procedure Button13Click(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure FormShow(Sender: TObject);

procedure Button17Click(Sender: TObject);

procedure Button16Click(Sender: TObject);

procedure Button12Click(Sender: TObject);

procedure Button11Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button23Click(Sender: TObject);

procedure Button18Click(Sender: TObject);

procedure Button19Click(Sender: TObject);

procedure Button20Click(Sender: TObject);

procedure Button21Click(Sender: TObject);

procedure Button22Click(Sender: TObject);

procedure Button24Click(Sender: TObject);

private

{ Private declarations }

OneVod: Integer; One: integer;

Oper: Byte;

Valuel1: String;

function BinToInt (Value: integer): double; //обьявляемздесьнашифункции.

function IntToBin(x: Integer): string;

function IntToHex(a:integer):string;

function HexToInt(HexNum: string): LongInt;

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.BinToInt (Value: integer): double; //функцияпереводаиздвоичнойсистемывдесятичную.

var i,x,g,h,u,kol:integer; f,k: double;

begin

kol:=0;

u:=Value;

while u>0 do //выполняемпокапер. u большенуля.

begin

u:=u div 10; // считаем в счетчик Kol сколько раз наше число u сможет поделиться на (10).

kol:=kol + 1;

end;

begin

f:=0; x:=0;

for i:=1 to kol do // запускаем For выполняет пока i не будет равно kol.

Begin

g:=Value mod 10; // делим наше число на 10 и присваиваем g остаток деления.

h:=Value div 10; // делим наше число на 10 и присваиваем h целую часть после деления.

Value:=h;

k:=g*exp(x*ln(2)); // умножаем g на 2 в степени x.

f:=f+k; // суммируем все значения.

x:=x+1; // счетчик степени x.

end;

end;

BinToInt:=f; // присваиваем конечное значение функции BinToInt.

end;

function TForm1.IntToBin(x: Integer): string; // Функция перевода из десятичного числа в двоичную систему счисления.

const t:array[0..1] of char = ('0','1'); // Массив с 2 уже заполнеными ячейками 1 и 0, когда мы будем делить наше число mod 2 в переменную res будет + записывать 0 либо 1.

var res:string;

d: integer;

begin

res:='';

d:=0;

while (x<>0) do // выполняем пока наше число x неравно 0.

begin

d:=x mod 2; // делим наше число x на 2, и присваимваем остаток после деления пер. d.

res:=t[d]+res; // присваиваем строковому типо res 1 или 0.

x:=x div 2; // берем целую часть после деления на 2.

end;

IntToBin:=res; // присваиваем конечное значение функции Bin.

end;

function TForm1.IntToHex(a:integer):string; // функция перевода из десятичной в шестнадцатиричную систему счисления.

const figures:array[1..15] of char = ('1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'); // Описываем массив и заполняем его значениями шестнадцатиричной системы счисления.

begin

result:='';

while a>0 do // выполняется пока наше значение a больше нуля.

begin

result:=figures[a mod 16] + result; // делим на 16 наше значение А в массиве, и в массиве остается (по правилу переводу из десят. в шестнад. систему счисления)нужное нам значение.

a:=a div 16; // берем целую часть после деления A.

end;

end;

function TForm1.HexToInt(HexNum: string): LongInt; // Фукция перевода из шестнадцатеричной в десятичную систему счисления.

begin //Delphi позволяет использовать шестнадцатиричные выражения (используя префикс $).

Result:=StrToInt('$' + HexNum); // Переводим StrToInt из string(строкового вида) в integer, и присваиваем полученное значение нашей функции.

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

if Edit1.Text='0' then Edit1.Text:=''; // Описываем OnClick кнопокнаформе. Если Edit1 равен 0 то убираем 0 и оставляем пустое окно ввода.

Edit1.Text:=Edit1.Text+'7'; // Прибавляем к уже имеющимся цифрам или просто выводим значение в Edit1. Такжесделаемсостальнымикнопками 0-9,'A'-'F'

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

if Edit1.Text='0' then Edit1.Text:='';

Edit1.Text:=Edit1.Text+'8';

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

if Edit1.Text='0' then Edit1.Text:='';

Edit1.Text:=Edit1.Text+'9';

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

if Edit1.Text='0' then Edit1.Text:='';

Edit1.Text:=Edit1.Text+'4';

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

if Edit1.Text='0' then Edit1.Text:='';

Edit1.Text:=Edit1.Text+'5';

end;

procedure TForm1.Button10Click(Sender: TObject);

begin

if Edit1.Text='0' then Edit1.Text:='';

Edit1.Text:=Edit1.Text+'6';

end;

procedure TForm1.Button7Click(Sender: TObject);

begin

if Edit1.Text='0' then Edit1.Text:='';

Edit1.Text:=Edit1.Text+'1';

end;

procedure TForm1.Button8Click(Sender: TObject);

begin

if Edit1.Text='0' then Edit1.Text:='';

Edit1.Text:=Edit1.Text+'2';

end;

procedure TForm1.Button9Click(Sender: TObject);

begin

if Edit1.Text='0' then Edit1.Text:='';

Edit1.Text:=Edit1.Text+'3';

end;

procedure TForm1.Button13Click(Sender: TObject);

begin

if Edit1.Text='0' then Edit1.Text:='';

Edit1.Text:=Edit1.Text+'0';

end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

var s: String;

begin

s:=Edit1.Text;

if Key=VK_BACK then Delete(s,Length(s),1);

if (s='-') or (s='') or (StrToFloat(s)=0) then s:='0';

Edit1.Text:=s;

end;

procedure TForm1.FormShow(Sender: TObject);

begin

OneVod:=0;

Valuel1:='';

Oper:=0;

end;

procedure TForm1.Button17Click(Sender: TObject);

var FoVod,Znach2,Otvet: Integer; Znac1,Znac2,Result: double; Fo: string;

begin

If ComboBox1.ItemIndex=0 then // Если ComboBox=0 (или на форме двоичная) то переводим двоичн. значения в десятичную и производим с ними арифметические действия, результат переводим из десят. в двоичную систему счисления.

begin

FoVod:=StrToInt(Edit1.Text); // FoVod типа integer- Присваивает 2 значение которое пользователь введет на форме в Edit после нажатия на кнопку с '='. StrToInt- перевод из string в integer.

Znac1:=BinToInt(OneVod); // Znac1 - вызываем функцию BinToInt (перевода из двоичн. в десятичную.) и отправляем значение OneVod (с первого ввода числа пользователем).

Znac2:=BinToInt(FoVod); // Znac2 - вызываем функцию BinToInt (перевода из двоичн. в десятичную.) и отправляем значение FoVod (с второго ввода числа пользователем).

case Oper of // Case определяет Oper какое арифметическое действие выбрал пользователь и осуществляет его записывая результат в Result.

1: Result:=Znac1+Znac2; // Сумма

2: Result:=Znac1-Znac2; // Разность

3: Result:=Znac1*Znac2; // Произведение

4: Result:=Znac1/Znac2; // Частное

else

Result:=Znac2; //

end;

Edit1.Text:=IntToBin(Trunc(Result)); // Вызываемфункцию(перевода из десят. в двоичную систему счисления, округлив Result (Trunc) и выводим результат в Edit1.

end

else

begin

Fo:=Edit1.Text; // Fo типа string - Присваивает 2 значение которое пользователь введет на форме в Edit после нажатия на кнопку с '='.

Znach2:=HexToInt(Fo); // Znach2 типа double - вызываем функцию HexToInt (перевод из шестнадцатеричной в десят. систему счисления) значение Fo.

case Oper of //Case определяет Oper какое арифметическое действие выбрал пользователь и осуществляет его записывая результат в Result.

1: Result:=One+Znach2; // Сумма

2: Result:=One-Znach2; //Разность

3: Result:=One*Znach2; //Произведение

4: Result:=One/Znach2; //Частное

else

Result:=Znach2; //

end;

Edit1.Text:=IntToHex(Trunc(Result)); // Вызываемфункцию(перевода из десят. в шестнад. систему счисления) и выводим результат в Edit1.

end;

Valuel1:=''; // обнуляем переменные

OneVod:=0; // обнуляем переменные

Oper:=0; // обнуляемпеременные

end;

procedure TForm1.Button16Click(Sender: TObject);

begin

Button17.Click;

if ComboBox1.ItemIndex=0 then // Проверяем ComboBox1 если позиция 0 (или на форме двоичная) то выполняем считывание данных с Edit1 в переменную OneVod типа(integer) преобразовавеё StrToInt.

begin

OneVod:=StrToInt(Edit1.Text);

Oper:=1; // Присваиваем Oper =1 (сумма) для Case.

end

else // Или ComboBox1 позиция 1 (или на форме шестнадцатеричная) то то выполняем считывание данных с Edit1 в переменную One типа(string).

begin

One:=HexToInt(Edit1.Text);

Oper:=1; // Присваиваем Oper =1 (сумма) для Case.

end;

Edit1.Text:='0'; // Убираем все значения с поля ввода Edit1 и оставляем 0 ноль.

end;

procedure TForm1.Button12Click(Sender: TObject);

begin

Button17.Click;

if ComboBox1.ItemIndex=0 then

begin

OneVod:=StrToInt(Edit1.Text);

Oper:=2; // Присваиваем Oper =2 (разность) для Case.

end

else

begin

One:=HexToInt(Edit1.Text);

Oper:=2; // Присваиваем Oper =2 (разность) для Case.

end;

Edit1.Text:='0';

end;

procedure TForm1.Button11Click(Sender: TObject);

begin

Button17.Click;

if ComboBox1.ItemIndex=0 then

begin

OneVod:=StrToInt(Edit1.Text);

Oper:=3; // Присваиваем Oper =3 (произведение) для Case.

end

else

begin

One:=HexToInt(Edit1.Text);

Oper:=3; // Присваиваем Oper =3 (произведение) для Case.

end;

Edit1.Text:='0';

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

Button17.Click;

if ComboBox1.ItemIndex=0 then

begin

OneVod:=StrToInt(Edit1.Text);

Oper:=4; // Присваиваем Oper 4 (Частное) для Case.

end

else

begin

One:=HexToInt(Edit1.Text);

Oper:=4; // Присваиваем Oper 4 (Частное) для Case.

end;

Edit1.Text:='0';

end;

procedure TForm1.Button23Click(Sender: TObject);

begin

if Edit1.Text='0' then Edit1.Text:='';

Edit1.Text:=Edit1.Text+'A';

end;

procedure TForm1.Button18Click(Sender: TObject);

begin

if Edit1.Text='0' then Edit1.Text:='';

Edit1.Text:=Edit1.Text+'B';

end;

procedure TForm1.Button19Click(Sender: TObject);

begin

if Edit1.Text='0' then Edit1.Text:='';

Edit1.Text:=Edit1.Text+'C';

end;

procedure TForm1.Button20Click(Sender: TObject);

begin

if Edit1.Text='0' then Edit1.Text:='';

Edit1.Text:=Edit1.Text+'D';

end;

procedure TForm1.Button21Click(Sender: TObject);

begin

if Edit1.Text='0' then Edit1.Text:='';

Edit1.Text:=Edit1.Text+'E';

end;

procedure TForm1.Button22Click(Sender: TObject);

begin

if Edit1.Text='0' then Edit1.Text:='';

Edit1.Text:=Edit1.Text+'F';

end;

procedure TForm1.Button24Click(Sender: TObject); // Сброс (обнуляем все переменные и готовы к новым арифметическим дествиям).

begin

Valuel1:='';

OneVod:=0;

One:=0;

Edit1.Text:='0';

end;

end.

Размещено на Allbest.ru


Подобные документы

  • Организация вычислительных процессов и программирования на алгоритмическом языке. Создание программы "Калькулятор". Выбор языка и среды программирования. Функциональная схема работы программы, описание разработанных алгоритмов. Способы устранения ошибок.

    курсовая работа [434,1 K], добавлен 27.08.2012

  • Разработка программы с использованием языка программирования Pascal для выполнения алгебраических действий с действительными числами без знака в шестнадцатеричной системе счисления. Описание хода выполнения, схема алгоритма, листинг программы, ее функции.

    реферат [687,5 K], добавлен 28.10.2011

  • Разработка алгоритма выполнения операций умножения двоичных чисел в формате расширенной точности на сумматоре обратного кода. Преобразование входной строки в десятичное число. Разработка алгоритма арифметической операции. Тестирование программы-эмулятора.

    курсовая работа [119,1 K], добавлен 24.06.2012

  • Разработка приложения "Калькулятор с переходом в строковый калькулятор" с применением объектно-ориентированного программирования. Концепция и понятия объектно-ориентированного программирования. Язык программирования Java. Листинг программы "Калькулятор".

    курсовая работа [966,9 K], добавлен 11.02.2016

  • Теория чисел как одно из направлений математики, изучающее свойства натуральных чисел. Разработка программы-калькулятора CalcKurs на языке программирования Pascal. Основные функции, реализованные в программе. Интерфейс программы, описание процедур.

    курсовая работа [1,9 M], добавлен 03.06.2010

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

    курсовая работа [910,6 K], добавлен 27.10.2013

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

    курсовая работа [1,2 M], добавлен 07.07.2012

  • Основные способы создания в среде Lazarus на языке программирования Pascal программ "Калькулятор" и "Лабиринт". Создание программы "Простейший калькулятор". Вычисление значения выражения, сумм ряда чисел, системы функций "Логическая развилка".

    курсовая работа [2,9 M], добавлен 27.09.2014

  • Общая характеристика основ дисциплины "Теория чисел". Интерфейс, листинг и оценка положительных и отрицательных качеств программы-калькулятора CalcKurs, а также описание ее основных процедур – DelOstatok, Factor, NodNok, SuperGorner, Express и AntiExp.

    курсовая работа [1,9 M], добавлен 28.05.2010

  • Изучение особенностей растровых и векторных графических редакторов. Создание графического редактора: выбор языка программирования, разработка структуры программы и алгоритма работы. Описание интерфейса программы. Руководство программиста и пользователя.

    курсовая работа [1,3 M], добавлен 28.07.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.