Автор работы: Пользователь скрыл имя, 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
begin
edit2.Text:='Деление';
y:='';
y1:='';
y2:='';
y3:='';
y4:='';
{проверяем числовое ли значение у параметров}
{////////////// число1 }
val(parametr2,prmtr2,code1);
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
if (parametr2<>'') and (prmtr2=0) 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;
if otvet=0 then edotv.Text:='0'
else
begin
str(otvet:0:5,otvet1);
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;
end;
procedure TForm1.BtDivClick(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); }
Информация о работе Разработка приложения «Двоичный калькулятор» средствами Borland Delphi