Ir para conteúdo
Fórum Script Brasil
  • 0

calculadora


david.lyonnais

Pergunta

To começando faz 3 dias em delphi.. e fiz uma calculadora para aprendizado.. funcionando como eu queria, mas eu acho que fico muito grande o código..

Dai eu queria que vocês olhasem e podessem dizer onde posso melhorar pra evitar tantas linhas de codigo

Segue o código

unit principal;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    visor_txt: TEdit;
    sete_btn: TButton;
    quatro_btn: TButton;
    um_btn: TButton;
    zero_btn: TButton;
    oito_btn: TButton;
    cinco_btn: TButton;
    dois_btn: TButton;
    ponto_btn: TButton;
    nove_btn: TButton;
    seis_btn: TButton;
    tres_btn: TButton;
    igual_btn: TButton;
    multi_btn: TButton;
    sub_btn: TButton;
    adicao_btn: TButton;
    bks_btn: TButton;
    limpar_btn: TButton;
    raiz_btn: TButton;
    divisao_btn: TButton;
    Panel1: TPanel;
    procedure zero_btnClick(Sender: TObject);
    procedure um_btnClick(Sender: TObject);
    procedure dois_btnClick(Sender: TObject);
    procedure tres_btnClick(Sender: TObject);
    procedure quatro_btnClick(Sender: TObject);
    procedure cinco_btnClick(Sender: TObject);
    procedure seis_btnClick(Sender: TObject);
    procedure sete_btnClick(Sender: TObject);
    procedure oito_btnClick(Sender: TObject);
    procedure nove_btnClick(Sender: TObject);
    procedure ponto_btnClick(Sender: TObject);
    procedure adicao_btnClick(Sender: TObject);
    procedure sub_btnClick(Sender: TObject);
    procedure multi_btnClick(Sender: TObject);
    procedure divisao_btnClick(Sender: TObject);
    procedure igual_btnClick(Sender: TObject);
    procedure raiz_btnClick(Sender: TObject);
    procedure limpar_btnClick(Sender: TObject);
    procedure bks_btnClick(Sender: TObject);
    


  private
    function operacao(operacao: integer): string;
    function addVisor(btn: string):  string;
    function mostraResultado():  string;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  num1, num2: double;
  num: string;
  op: integer;
  verif: boolean = false;
  verif2: boolean = false;
  (*legenda: '+' = 1 '-' = 2 '*' = 3 '/' = 4*)

implementation

{$R *.dfm}
  (*Funções*)
function TForm1.operacao(operacao: integer): string;
begin
if verif2 = true then
begin
  if op > 0 then
  begin
  num2:= StrToFloat(visor_txt.Text);
  case op of
  1: num1:= num1 + num2;
  2: num1:= num1 - num2;
  3: num1:= num1 * num2;
  4: num1:= num1 / num2;
  end;
  op := operacao;
  verif:= true;
  Result:= FloatToStr(num1);
  verif2:= false;
  exit;
  end
  else
  num1:= StrToFloat(visor_txt.Text);
  op := operacao;
  verif2:= false;
  Result:= '';
end;
end;


function TForm1.addVisor(btn: string): string;
begin
  if verif = true then
  begin
    visor_txt.Text:= '';
    verif:= false;
  end;
  Result:= visor_txt.Text + btn;
  verif2:= true;
end;

function TForm1.mostraResultado():  string;
begin
    if op > 0 then
    begin
  num2:= StrToFloat(visor_txt.Text);
  case op of
  1: Result:= FloatToStr(num1 + num2);
  2: Result:= FloatToStr(num1 - num2);
  3: Result:= FloatToStr(num1 * num2);
  4: Result:= FloatToStr(num1 / num2);
    end;
    verif:= false;
    op:= 0;
  end;
end;

procedure TForm1.zero_btnClick(Sender: TObject);
begin
  visor_txt.Text:= addVisor('0');
end;

procedure TForm1.um_btnClick(Sender: TObject);
begin
  visor_txt.Text:= addVisor('1');
end;

procedure TForm1.dois_btnClick(Sender: TObject);
begin
  visor_txt.Text:= addVisor('2');
end;

procedure TForm1.tres_btnClick(Sender: TObject);
begin
   visor_txt.Text:= addVisor('3');
end;

procedure TForm1.quatro_btnClick(Sender: TObject);
begin
   visor_txt.Text:= addVisor('4');
end;

procedure TForm1.cinco_btnClick(Sender: TObject);
begin
   visor_txt.Text:= addVisor('5');
end;

procedure TForm1.seis_btnClick(Sender: TObject);
begin
   visor_txt.Text:= addVisor('6');
end;

procedure TForm1.sete_btnClick(Sender: TObject);
begin
  visor_txt.Text:= addVisor('7');
end;

procedure TForm1.oito_btnClick(Sender: TObject);
begin
   visor_txt.Text:= addVisor('8');
end;

procedure TForm1.nove_btnClick(Sender: TObject);
begin
  visor_txt.Text:= addVisor('9');
end;

procedure TForm1.ponto_btnClick(Sender: TObject);
begin
   visor_txt.Text:= addVisor(',');
end;

procedure TForm1.adicao_btnClick(Sender: TObject);
begin
   visor_txt.Text:= operacao(1);
end;

procedure TForm1.sub_btnClick(Sender: TObject);
begin
   visor_txt.Text:= operacao(2);
end;

procedure TForm1.multi_btnClick(Sender: TObject);
begin
    visor_txt.Text:= operacao(3);
end;

procedure TForm1.divisao_btnClick(Sender: TObject);
begin
   visor_txt.Text:= operacao(4);
end;

procedure TForm1.igual_btnClick(Sender: TObject);
begin
   visor_txt.Text:= mostraResultado();
end;

procedure TForm1.raiz_btnClick(Sender: TObject);
var
raiz: double;
condicao: string;
begin
condicao:= visor_txt.Text;
if condicao <> '' then
begin
  raiz:= StrToFloat(visor_txt.Text);
  raiz:= sqrt(raiz);
  visor_txt.Text:= FloatToStr(raiz);
  verif:= false;
  op:= 0;
end;
end;

procedure TForm1.limpar_btnClick(Sender: TObject);
begin
  visor_txt.Text:= '';
  num1:= 0;
  num2:= 0;
  op:= 0;
  verif2:= false;
end;

procedure TForm1.bks_btnClick(Sender: TObject);
var
s: string;
tamanho: integer;
begin
  s:= visor_txt.Text;
  tamanho:= Length(s);
  Delete(s,tamanho,1);
  visor_txt.Text:= s;
end;

end.

Talvez devesse comentar pra facilitar mais to ocupado com uma outra coisa ai não deu tempo

obrigado quem pode ajudar...

Editado por david.lyonnais
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...