Разработка приложения «Двоичный калькулятор» средствами 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 Кб (Скачать файл)

    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:string;

prmtr1,prmtr2:integer;

otvet:real;

code1,code2,code3,code4:integer;

i,k,k1,V:integer;  {дополнительные  переменные}

n,n1:integer;    {запоминает  длину строки}

y,y1,y2,y3,y4,st,st1,st2:string;

x,x1,x2,x3,x4:real; {дополнительные  переменные для перевода}

otvet2,x5,x6,x7,otvet3:integer;

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

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

    {Переведем дробную часть}

{    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