Calculando o Troco em uma Aplicação Delphi

Veja neste artigo uma aplicação Delphi para calcular o troco no pagamento de uma conta. Como resultado será apresentado também o valor inteiro e o valor fracionário do troco dividido em notas e moedas, respectivamente.

Pretendo demonstrar neste artigo uma aplicação Delphi para calcular o troco no pagamento de uma conta. Como resultado será apresentado também o valor inteiro do troco dividido em notas de R$ 100,00 - R$ 50,00 - R$ 20,00 - R$ 10,00 - R$ 5,00 - R$ 2,00 e R$ 1,00, respectivamente. E ainda, a parte fracionária do troco será dividida em moedas de R$ 0,50 - R$ 0,25 - R$ 0,10 - R$ 0,05 e R$ 0,01, respectivamente.

Formulário Principal

Observe que as caixas de textos explicativos utilizadas na figura apresentam a ordem sequencial e o nome do componente, a página da sua localização e as propriedades que devem ser alteradas com os respectivos valores.


Troco em uma Aplicação Delphi

Implementação

Função que calcula e retorna o troco dividido em notas e moedas usando como parâmetros de entrada: "conta" = valor da conta; e, "pago" = valor pago.

function calculaTroco(conta, pago: real): String; const nota: array[1..7] of integer = (100, 50, 20, 10, 5, 2, 1); centavos: array[1..5] of integer = (50, 25, 10, 5, 1); var troco: real; i, vlr, ct: integer; s: string; begin if (pago < conta) then calculaTroco := 'Pagamento insuficiente, faltam R$ ' + FloatToStr(conta - pago) else begin troco := pago - conta; s := 'Troco = R$ ' + FloatToStr(troco); s := s + #13#10 + #13#10; // definindo as notas do troco (parte inteira) vlr := trunc(troco); i := 1; while (vlr <> 0) do begin ct := vlr div nota[i]; // calculando a qtde de notas if (ct <> 0) then begin s := s + IntToStr(ct) + ' nota(s) de R$ ' + IntToStr(nota[i]) + #13#10; vlr := vlr mod nota[i]; // sobra end; i := i + 1; // próxima nota end; s := s + #13#10; // definindo as moedas do troco (parte fracionária) vlr := round(frac(troco) * 100); i := 1; while (vlr <> 0) do begin ct := vlr div centavos[i]; // calculando a qtde de moedas if (ct <> 0) then begin s := s + IntToStr(ct) + ' moeda(s) de ' + IntToStr(centavos[i]) + ' centavo(s)' + #13#10; vlr := vlr mod centavos[i]; // sobra end; i := i + 1; // próxima moeda end; calculaTroco := s; end; end;

Evento "onClick" do botão "Troco".

procedure TForm1.Button1Click(Sender: TObject); var conta, pago: real; begin Memo1.Clear; try conta := StrToFloat(Edit1.Text); pago := StrToFloat(Edit2.Text); Memo1.Lines.Add(calculaTroco(conta, pago)); except ShowMessage('Erro: dados informados inválidos !!!'); end; end;

Entendendo o algoritmo da função "calculaTroco":

  1. Os vetores "nota" e "centavos" representam os valores das notas e centavos, respectivamente, usados nos cálculos das quantidades individuais na divisão do troco.
  2. Inicialmente é verificado se o valor pago é suficiente para o pagamento da conta.
  3. A divisão do troco é realizada em duas partes:
    a) dividindo a parte inteira do troco (trunc) da maior nota (R$ 100,00) para a menor nota (R$ 1,00) até zerar o valor inteiro do troco. O operador div é usado para calcular a quantidade de notas já o operador mod foi utilizado na expressão que calcula a sobra.
    b) dividindo a parte fracionária do troco (frac) da maior moeda (R$ 0,50) para a menor moeda (R$ 0,01) até zerar o valor fracionário do troco. Novamente os operadores div e mod são utilizados nas expressões que fazem a divisão da parte fracionária do troco em moedas.

Executando a Aplicação

Informar o valor da conta, o valor pago e pressionar o botão "Troco" e o seguinte resultado poderá ser exibido:


Troco em uma Aplicação Delphi.

Veja também:

Links Úteis

  • Um bate-papo sobre o Delphi:
    O Delphi está em constante evolução e com ele podemos criar aplicações desktop, servidores de aplicações, aplicativos móveis, entre outros.
  • Enums no Java:
    Aprenda nesse microexemplo como criar e utilizar enums no Java. Confira como esse poderoso recurso permite a definição de um conjunto limitado de valores para uma variável.

Saiba mais sobre Delphi ;)

  • Começando no Delphi:
    Neste Guia de Referência você encontrará o conteúdo que precisa para iniciar seus estudos em Delphi, uma plataforma para desenvolvimento de aplicativos completa, principalmente para soluções desktop e mobile.
  • Curso de Delphi para Iniciantes:
    Este curso como o nome sugere é destinada a todas as pessoas que desejam aprender a desenvolver utilizando o Delphi como ferramenta de desenvolvimento e linguagem de programação.
  • Todos os cursos de Delphi:
    Confira os cursos que a DevMedia preparou para você se tornar um programador Delphi completo. Aprenda a desenvolver aplicações desktop, web e mobile utilizando o VCL, FireMonkey, FireDac e mais.
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados