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

Aplicando procedures. operadores e sub-rotinas na construção de uma ca


fernando_vip

Pergunta

Boa tarde Pessoal

Sou iniciante em delphi como muitos por ai, tem pouco tempo q comecei a estudar, mas um exemplo que me ajudou um pouco foi o da calculadora, com ele pude entender sobre procedures e sobre o uso de operadores, além do uso de passagem de parâmetro por valor.

Então vamos por a mão na massa: 

Crie um novo projeto no delphi e altere:

form

Name : FrmCalculadora

Caption: Calculadora

Salve tudo, a unit como UCalculadora e o Project como Calculadora ;)

Adicione 3 Labels (Guia Standart) 2 Edtis(Guia Standart) e 4 SpeedButtons(Guia Additionalt) e altere as propriedades:

Label1 Label2 Label3

Name: LblValor1 Name:LblValor2 Name:LblResultado

Caption:Valor 1: Caption:Valor 2: Caption: LblResultado

Altere a propriedade font como quiser e a propriedade transparent para true

Edit1 Edit2

Name:EdtValor1 Name:EdtValor2

Text: Em branco Text: Em branco

SpeedButton1 SpeedButton2 SpeedButton3

Name: SpdSomar Name:SpdMenos Name:SpdMultiplicar

Caption: + Caption: - Caption: x

SpeedButton4

Name: SpdDividir

Caption: /

Altere a propriedade Flat de todos os SpeedButtons para true;

A aparência do form deverá está parecidada como esta:

Agora os Procedimentos, explicarei o do SpdSomar e vocês tentem montar os outros para teste de aprendizado, rs, no final estará o cód da unit 

Clique duas vezes no SpdSomar, para acessar o evento OnClick e digite:

procedure TFrmCalculadora.SpdSomarClick(Sender: TObject);

var

Num1, Num2, Total : Integer; // declarando as variáveis

begin

Num1 := StrToInt(EdtValor1.Text);

Num2 := StrToInt(EdtValor2.Text); //(1)

Somar(Num1, Num2, Total);//aqui chamamos a sub-rotina q ainda será implementada

LblResultado.Caption := IntToStr(Total);//(2)

EdtValor1.Text := '';//aqui limpamos o valor do edit

EdtValor2.Text := ''; //aqui limpamos o valor do edit

EdtValor1.SetFocus;//aqui setamos o edit

end;

(1) como as variáveis são do tipo inteiro (Num1, Num2, Total : Integer) e os valores digitados nos edit são do tipo string devemos converter os dados para inteiro (StrToInt) o valor Text dos edits e armazenar na variável reponsável pelo edit 

(2) O LblResultado exibirá o resultado da nossa operação, contudo ele só pode exibir dados do tipo string e como o resultado é do tipo inteiro devemos converte-lo para string (IntToStr) 

Agora implementaremos a sub-rotina que foi chamada na procedure do SpdSomar, adicione o código em negrito exatamente ond ele está:

......

SpdSomar: TSpeedButton;

procedure SpdSomarClick(Sender: TObject);

procedure Somar(N1, N2 :Integer; var Resultado :Integer);

private

{ Private declarations }

...

Posicione o cursos logo abaixo do evento do SpdSomar e add o cód abaixo:

procedure TFrmCalculadora.Somar(N1,N2:Integer; var Resultado:Integer);

begin

Resultado := N1 + N2

end;

Salve tudo e pressione F9 para testar, se tudo estiver certo ... 

O código da unit inteira

unit UCalculadora;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Buttons, StdCtrls;

type

TFrmCalculadora = class(TForm)

LblValor1: TLabel;

LblValor2: TLabel;

EdtValor1: TEdit;

EdtValor2: TEdit;

LblResultado: TLabel;

SpdMeltiplicar: TSpeedButton;

SpdDividir: TSpeedButton;

SpdMenos: TSpeedButton;

SpdSomar: TSpeedButton;

procedure SpdSomarClick(Sender: TObject);

procedure Somar(N1, N2 :Integer; var Resultado :Integer);

procedure SpdMenosClick(Sender: TObject);

procedure Menos(N1, N2 :Integer; var Resultado :Integer);

procedure SpdMeltiplicarClick(Sender: TObject);

procedure Multiplicar(N1, N2 :Integer; var Resultado :Integer);

procedure SpdDividirClick(Sender: TObject);

procedure Dividir(N1, N2 :Integer; var Resultado :Integer);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FrmCalculadora: TFrmCalculadora;

implementation

{$R *.dfm}

procedure TFrmCalculadora.SpdSomarClick(Sender: TObject);

var

Num1, Num2, Total : Integer;

begin

Num1 := StrToInt(EdtValor1.Text);

Num2 := StrToInt(EdtValor2.Text);

Somar(Num1, Num2, Total);

LblResultado.Caption := IntToStr(Total);

EdtValor1.Text := '';

EdtValor2.Text := '';

EdtValor1.SetFocus;

end;

procedure TFrmCalculadora.Somar(N1,N2:Integer; var Resultado:Integer);

begin

Resultado := N1 + N2

end;

procedure TFrmCalculadora.SpdMenosClick(Sender: TObject);

var

Num1, Num2, Total : Integer;

begin

Num1 := StrToInt(EdtValor1.Text);

Num2 := StrToInt(EdtValor2.Text);

Menos(Num1, Num2, Total);

LblResultado.Caption := IntToStr(Total);

EdtValor1.Text := '';

EdtValor2.Text := '';

EdtValor1.SetFocus;

end;

procedure TFrmCalculadora.Menos(N1,N2:Integer; var Resultado:Integer);

begin

Resultado := N1 - N2

end;

procedure TFrmCalculadora.SpdMeltiplicarClick(Sender: TObject);

var

Num1, Num2, Total : Integer;

begin

Num1 := StrToInt(EdtValor1.Text);

Num2 := StrToInt(EdtValor2.Text);

Multiplicar(Num1, Num2, Total);

LblResultado.Caption := IntToStr(Total);

EdtValor1.Text := '';

EdtValor2.Text := '';

EdtValor1.SetFocus;

end;

procedure TFrmCalculadora.Multiplicar(N1,N2:Integer; var Resultado:Integer);

begin

Resultado := N1 * N2

end;

procedure TFrmCalculadora.SpdDividirClick(Sender: TObject);

var

Num1, Num2, Total : Integer;

begin

Num1 := StrToInt(EdtValor1.Text);

Num2 := StrToInt(EdtValor2.Text);

Dividir(Num1, Num2, Total);

LblResultado.Caption := IntToStr(Total);

EdtValor1.Text := '';

EdtValor2.Text := '';

EdtValor1.SetFocus;

end;

procedure TFrmCalculadora.Dividir(N1,N2:Integer; var Resultado:Integer);

begin

Resultado := N1 div N2 // o div = divisão por inteiros

end;

end.

Fontes do programa: Fontes

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...