david.lyonnais Postado Agosto 7, 2010 Denunciar Share Postado Agosto 7, 2010 (editado) 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 codigoSegue o códigounit 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 tempoobrigado quem pode ajudar... Editado Agosto 10, 2010 por david.lyonnais Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Agosto 10, 2010 Denunciar Share Postado Agosto 10, 2010 Acho que o seu código está muito bom ... mas se quiser outro de exemplo para comparar, veja estehttp://www.oficinadanet.com.br/artigo/802/...elphi_-_parte_1http://www.oficinadanet.com.br/artigo/813/...2%80%93_parte_2abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 david.lyonnais Postado Agosto 10, 2010 Autor Denunciar Share Postado Agosto 10, 2010 Vlw ...Mas depois eu achei alguns erros dai eu mudei denovo vo editar o código... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
david.lyonnais
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
Talvez devesse comentar pra facilitar mais to ocupado com uma outra coisa ai não deu tempo
obrigado quem pode ajudar...
Editado por david.lyonnaisLink 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.