Разработка приложения «Двоичный калькулятор» средствами Borland Delphi

Автор работы: Пользователь скрыл имя, 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

Содержимое работы - 1 файл

КУРСОВАЯ.docx

— 307.96 Кб (Скачать файл)

  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(parametr1));

  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(parametr2));

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;

 
 

procedure TForm1.BtUmnClick(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(parametr1));

  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(parametr2));

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;

 
 

procedure TForm1.BtdelClick(Sender: TObject);

Информация о работе Разработка приложения «Двоичный калькулятор» средствами Borland Delphi