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

  {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;  {целые части}

str(x1:0:0,y2);

str(x2:0:0,y3);

val(y2,x6,code1);

val(y3,x7,code2);

otvet2:=x6 div x7;

str(otvet2,otvet1);

edit1.Text:=otvet1;

if otvet2=0 then edotv.Text:='0'

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;

 

procedure TForm1.BtModClick(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;  {целые части}

str(x1:0:0,y2);

str(x2:0:0,y3);

val(y2,x6,code1);

val(y3,x7,code2);

otvet2:=x6 mod x7;

str(otvet2,otvet1);

edit1.Text:=otvet1;

if otvet2=0 then edotv.Text:='0'

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;

 

procedure TForm1.VuxodClick(Sender: TObject);

begin

{Выйти из программы}

Form1.Close;

end;

 

procedure TForm1.SpravkaClick(Sender: TObject);

begin

{ выведем данные  о программе

    символы  #13#10 задают перевод курсора и

    в итоге  строка выводится в виде ряда  подстрок}

  ShowMessage(

    'Курсовая  работа'#13#10'Программа "Двоичный  калькулятор"'#13#10 +

    'Выполнила  студентка III курса'#13#10 +

    'Алехина  Дарья');

end;

 

procedure TForm1.BtOchClick(Sender: TObject);

begin

RBt1.Checked:=false;

lb10cc.Visible:=false;

  edit1.Visible:=false;

btPlus.Enabled:=true;

btMinus.Enabled:=true;

btMod.Enabled:=true;

btDiv.Enabled:=true;

btUmn.Enabled:=true;

btDel.Enabled:=true;

save.Enabled:=false;

form1.Height:=209;

edParametr1.Clear;

edParametr2.Clear;

edOtv.Clear;

end;

 

procedure TForm1.RBt1Click(Sender: TObject);

begin

  edit1.Clear;

  Form1.Height:=240;

  lb10cc.Visible:=true;

  edit1.Visible:=true;

  edit1.Text:=otvet1;

end;

 

{Обработка меню Сохранить}

 

procedure TForm1.SaveClick(Sender: TObject);

begin

   {вызываем  стандартный диалог для для  записи файла  }

  if sdMyCalc.Execute then

  begin

 

    {связываем  файловую переменную с физическим  файлом }

    AssignFile(fFile, sdMyCalc.FileName);

 

    {пересоздаем  файл для записи (старые данные  очищаются)  }

    Rewrite(fFile);

 

    {записываем  данные в файл

      функция  Now возвращает текущую дату и  время в числовом формате

      функция  DateTimeToStr преобразует значение в  строку}

    writeln(fFile, 'Дата вычисления: ' + DateTimeToStr(Now));

    writeln(fFile);

    writeln(fFile, 'Операнд 1    : ' + parametr1);

    writeln(fFile, 'Операнд 2    : ' + parametr2);

    writeln(fFile, 'Вид операции : ' + edit2.text);

    writeln(fFile, 'Результат    : ' + EdOtv.text);

    writeln(fFile, 'Результат в 10сс   : ' + otvet1);

 

    //закрываем  файл

    CloseFile(fFile);

 

    ShowMessage('Сведения  о последней выполненой операции  успешно сохранены ' +

      'в файл: '#13#10#13#10 + sdMyCalc.FileName);

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