Автор работы: Пользователь скрыл имя, 11 Декабря 2011 в 21:45, курсовая работа
Человеку достаточно сложно произвести в уме математические операции над двоичными числами. Для облегчения расчетов люди создают специальные приложения, выполняющие функции калькулятора. Одним из средств разработки таких программ является Borland Delphi.
В данной курсовой работе предложено создать Windows-приложение на языке Object Pascal в среде визуального программирования Borland Delphi, которое должно обеспечивать выполнение операций по вводу, обработке и выводу информации, содержащей двоичные числа.
Введение 2
Глава1. Двоичная система счисления. 2
§ 1История 2
§ 2 Целочисленные и вещественные типы данных языка Object Pascal 2
Глава 2. Приложение для реализации алгоритмов над данными целочисленных типов 2
§ 1 Система программирования Borland Delphi 2
§ 2 Описание компонентов Delphi 2
Компонент TButton 2
Компонент TEdit 2
Компонент TLabel 2
Компонент RadioButton 2
Компонент TMainMenu 2
Компонент TSaveDialog 2
§ 3 Инструкция пользователя 2
Заключение 2
Список источников 2
Приложение 1. Текст программных модулей 2
Приложение 2. Система тестов 2
Label1: TLabel;
Label2: TLabel;
BtDiv: TButton;
BtMod: TButton;
Label3: TLabel;
MainMenu1: TMainMenu;
Fail: TMenuItem;
Spr: TMenuItem;
Save: TMenuItem;
Past: TMenuItem;
Raz: TMenuItem;
Vuxod: TMenuItem;
Spravka: TMenuItem;
Edit1: TEdit;
RBt1: TRadioButton;
Lb10cc: TLabel;
sdMyCalc: TSaveDialog;
Memo1: TMemo;
Edit2: TEdit;
procedure BtPlusClick(Sender: TObject);
procedure BtMinusClick(Sender: TObject);
procedure BtUmnClick(Sender: TObject);
procedure BtdelClick(Sender: TObject);
procedure VuxodClick(Sender: TObject);
procedure SpravkaClick(Sender: TObject);
procedure BtDivClick(Sender: TObject);
procedure BtModClick(Sender: TObject);
procedure BtOchClick(Sender: TObject);
procedure RBt1Click(Sender: TObject);
procedure SaveClick(Sender: TObject);
procedure PastClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
var
parametr1,parametr2,otvet1:
prmtr1,prmtr2:integer;
otvet:real;
code1,code2,code3,code4:
i,k,k1,V:integer; {дополнительные переменные}
n,n1:integer; {запоминает длину строки}
y,y1,y2,y3,y4,st,st1,st2:
x,x1,x2,x3,x4:real; {дополнительные переменные для перевода}
otvet2,x5,x6,x7,otvet3:
otvet4:real;
F:file;
var fFile: TextFile;
implementation
{$R *.dfm}
procedure TForm1.BtPlusClick(Sender: TObject);
begin
edit2.Text:='Сложение';
y:='';
y1:='';
y2:='';
y3:='';
y4:='';
{проверяем числовое ли значение у параметров}
{////////////// число1 }
parametr1:=EdParametr1.Text;
if parametr1='' then
begin
beep;
showmessage('Вы не ввели первое число!');
edParametr1.SetFocus;
edParametr1.SelectAll;
end;
if parametr1<>'' then begin
{//////////////число2}
parametr2:=EdParametr2.Text;
if parametr2='' then
begin
beep;
showmessage('Вы не ввели второе число!');
edParametr2.SetFocus;
edParametr2.SelectAll;
end
else
begin
k:=0;
val(parametr1,prmtr1,code1);
for i:=1 to length(parametr1) do
if (parametr1[i]<>'0') and (parametr1[i]<>'1') and (parametr1[i]<>',') then
k:=k+1;
if k<>0 then
begin
beep;
showmessage('Вы некорректно ввели число1!');
edparametr1.SetFocus;
edparametr1.SelectAll;
end
else
begin
k:=0;
val(parametr2,prmtr2,code2);
for i:=1 to length(parametr2) do
if (parametr2[i]<>'0') and (parametr2[i]<>'1') and (parametr2[i]<>',') then
k:=k+1;
if k<>0 then
begin
beep;
showmessage('Вы некорректно ввели число2!');
edparametr2.SetFocus;
edparametr2.SelectAll;
end
else
begin
btPlus.Enabled:=false;
btMinus.Enabled:=false;
btMod.Enabled:=false;
btDiv.Enabled:=false;
btUmn.Enabled:=false;
btDel.Enabled:=false;
save.Enabled:=true;
{///////////// Проверяем вещественные ли числа???}
k:=0;
k1:=0;
for i:=1 to length(parametr1) do
if parametr1[i]=',' then {Число 1 вещественное!}
begin
k:=k+1;
y1:=copy(parametr1,i+1,length(
y:=copy(parametr1,1,i-1);
{cчитаем целую часть числа 1}
n:=length(y);
n1:=length(y1);
x1:=0;
x2:=0;
for i:=1 to n do
begin
val(y[i],x,code1);
x1:=x1+x*(exp((n-i)*ln(2)));
end;
str(x1:0:0,y);
{cчитаем дробную часть числа 1}
for i:=1 to n1 do
begin
val(y1[i],x,code2);
x2:=x2+x*(exp((-i)*ln(2)));
end;
str(x2:0:5,y1);
{y1:=copy(y1,3,n1); }
{Cтрока у хранит вещественное число 1 в 10сс}
{y:=y+','+y1; }
{////Проверка}
{edit1.Text:=y; }
end;
if k=0 then
begin
{Число 1 не вещественное}
{перевод числа
1 в десятичную систему
n:=length(parametr1);
x1:=0;
for i:=1 to n do
begin
val(parametr1[i],x,code1);
x1:=x1+x*(exp((n-i)*ln(2)));
end;
str(x1:0:0,y);
end;
end;
{Проверяем вещественное ли Число 2 }
for i:=1 to length(parametr2) do
if parametr2[i]=',' then begin {Число 2 вещественное!}
k1:=k1+1;
y3:=copy(parametr2,i+1,length(
y2:=copy(parametr2,1,i-1);
{cчитаем целую часть числа 2}
n:=length(y2);
n1:=length(y3);
x1:=0;
x2:=0;
for i:=1 to n do
begin
val(y2[i],x,code1);
x1:=x1+x*(exp((n-i)*ln(2)));
end;
str(x1:0:0,y2);
{cчитаем дробную часть числа 2}
for i:=1 to n1 do
begin
val(y3[i],x,code2);
x2:=x2+x*(exp((-i)*ln(2)));
end;
str(x2:0:5,y3);
{y3:=copy(y3,3,n1); }
{Cтрока у1 хранит вещественное число 2 в 10сс}
{ y1:=y1+','+y2; }
{////Проверка}
{edit3.Text:=y1;}
end;
if k1=0 then begin
{\\\\\Число 2 не вещественное}
{перевод числа
2 в десятичную систему
n:=length(parametr2);
x2:=0;
for i:=1 to n do
begin
val(parametr2[i],x,code2);
x2:=x2+x*(exp((n-i)*ln(2)));
end;
str(x2:0:0,y3); {/////Проверка}
{edit4.Text:=y1; }
end;
begin
{y-целая часть числа 1
y1-дробная часть числа 1
y2-целая часть числа 2
y3-дробная часть числа 2}
val(y,x1,code1);
val(y1,x2,code2);
val(y2,x3,code3);
val(y3,x4,code4);
x2:=x2+x4; {дробные части}
x1:=x1+x3; {целые части}
otvet:=x1+x2;
str(otvet:0:5,otvet1);
begin
{/////////////Переводим
ответ в двоичную систему
{если ответ вещественное число}
{k:=0;
for i:=1 to length(otvet1) do
if otvet1[i]='.' then
begin
k:=k+1;
y:=copy(otvet1,1,i-1);
y1:=copy(otvet1,i+1,length(
{Переведем дробную часть}
{ y1:='0,'+y1;
val(y1,otvet4,code2);
edit2.Text:=y1;
for i:=1 to length(y1) do
begin
x1:=otvet4*2;
otvet4:=x1;
str(x1:4:4,y3);
{edit4.Text:=y3;}
{ y4:=y4+y3[1];
end;
edit3.Text:=y4;
{Переведем целую часть}
{ val(y,otvet3,code1);
while otvet3>0 do
begin
x5:=otvet3 div 2;
x1:=otvet3 mod 2;
otvet3:=x5;
str(x1:0:0,y);
y2:=y2+y;
end; }
{Получаем ответ в двоичной сс,но записанный справа налево}
{///////Запишем ответ слева направо}
{for i:=length(y2)-1 downto 1 do
y:=y+y2[i]; }
{end
else}
begin
if k=0 then begin
val(otvet1,otvet2,code1);
while otvet2>0 do
begin
x5:=otvet2 div 2;
x1:=otvet2 mod 2;
otvet2:=x5;
str(x1:0:0,y);
y1:=y1+y;
{Получаем ответ в двоичной
сс,но записанный справа
{///////Запишем ответ слева направо}
for i:=length(y1)-1 downto 1 do
y:=y+y1[i];
edotv.Text:=y
end;
end;
end;
end;
end;
end;
end;
end;
end;
procedure TForm1.BtMinusClick(Sender: TObject);
begin
edit2.Text:='Вычитание';
y:='';
y1:='';
y2:='';
y3:='';
y4:='';
{проверяем числовое ли значение у параметров}
{////////////// число1 }
parametr1:=EdParametr1.Text;
if parametr1='' then
begin
beep;
showmessage('Вы не ввели первое число!');
edParametr1.SetFocus;
edParametr1.SelectAll;
end;
if parametr1<>'' then begin
{//////////////число2}
parametr2:=EdParametr2.Text;
if parametr2='' then
begin
beep;
showmessage('Вы не ввели второе число!');
edParametr2.SetFocus;
edParametr2.SelectAll;
end
else
begin
k:=0;
val(parametr1,prmtr1,code1);
for i:=1 to length(parametr1) do
if (parametr1[i]<>'0') and (parametr1[i]<>'1') and (parametr1[i]<>',') then
k:=k+1;
if k<>0 then
begin
beep;
showmessage('Вы некорректно ввели число1!');
edparametr1.SetFocus;
edparametr1.SelectAll;
end
else
begin
k:=0;
val(parametr2,prmtr2,code2);
for i:=1 to length(parametr2) do
if (parametr2[i]<>'0') and (parametr2[i]<>'1') and (parametr2[i]<>',') then
k:=k+1;
if k<>0 then
begin
beep;
Информация о работе Разработка приложения «Двоичный калькулятор» средствами Borland Delphi