Создание программы для выполнения простейших математических функций с применением языка программирования ObjectPascal. Проектирование графического интерфейса Калькулятора двоичных и шестнадцатеричных систем. Описание алгоритма на естественном языке.
При низкой оригинальности работы "Программа "Калькулятор двоичных и шестнадцатеричных систем счисления"", Вы можете повысить уникальность этой работы до 80-100%
В данной пояснительной записке рассматривается описание программы «Калькулятора двоичных и шестнадцатеричных систем счисления».Программа должна позволять выполнять простейшие математические функции.Функциональность: программа должна являться полностью завершенным программным продуктом, не требующим каких-либо дополнительных специальных компонентов.Минимальные технические характеристики компьютера, на котором гарантируется стабильная работа программы: - компьютер/процессор: компьютер с процессором класса Pentium II 450 МГЦ; монитор: монитор Super VGA с разрешением 800x600 точек или более высоким, поддерживающий 256 цветов;Главная форма содержит основные элементы интерфейса и дает доступ ко всем функциямПодсистема расчета реализована функцией: - 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);В данном алгоритме происходит проверка условным оператором(if): COMBOBOX на индекс =0 (на форме “двоичная”), вызов функции BINTOINT для преобразования двух чисел двоичной системы счисления в десятичную систему счисления, арифметические операции ‘ ’,’-’,’*’,’/’ над введенными числами и перевод результата из десятичной в двоичную систему счисления функцией INTTOBIN.Для тестирования программы производились различные манипуляции с данными, искусственно создавались всевозможные критические ситуации. При вводе цифровых данных ошибок не возникает.Программа поставляется в виде исполнимого файла «Calc.exe» размером 14 КБ не требует установки и дополнительной настройки.Программа предназначена для произведения элементарных арифметических операций над двоичными и шестнадцатеричными числами.while a>0 do // выполняется пока наше значение a больше нуля. begin result:=figures[a mod 16] result; // делим на 16 наше значение А в массиве, и в массиве остается (по правилу переводу из десят. в шестнад. систему счисления)нужное нам значение. a:=a div 16; // берем целую часть после деления begin if Edit1.Text="0" then Edit1.Text:=""; // Описываем ONCLICK кнопокнаформе. Edit1.Text:=Edit1.Text "7"; // Прибавляем к уже имеющимся цифрам или просто выводим значение в Edit1. begin if Edit1.Text="0" then Edit1.Text:=""; Edit1.Text:=Edit1.
План
Содержание
Введение
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.
Вывод
В рамках курсовой работы была разработана программа калькулятор над двоичными и шестнадцатеричными числами производящая не сложные арифметические действия.
При разработке данного программного средства применялся язык программирования OBJECTPASCAL.
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 (x0) 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.
Размещено на
Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность своей работы