IF THEN ELSE END Programando HP50g

Neste post vemos como utilizar o condicional IF THEN ELSE END na programação da HP50g.

Agora que já sabemos muito sobre programação da HP50g. Muito mais do que a maioria das pessoas. Ainda assim há muito para explorarmos…

Talvez tenha notado que não vimos nenhuma construção condicional, ou seja, ainda não vimos como executar uma parte do programa apenas se uma certa condição for verdadeira.

Isso é o que vamos resolver agora! Iniciar o estudo das estruturas condicionais da HP50g, começando pelo simples IF THEN ELSE END.

Veja a lista de posts do Curso Calculadora HP50g em sequência.

Menu IF

Podemos encontrar esta construção no menu IF da calculadora, que pode ser encontrado com a sequência de botões abaixo.

[←┐] [PRG,EVAL] [BRANCH] [IF]

Neste menu você encontra os 4 elementos que podem formar esta construção.

Quando for necessário uma construção IF recomendo abrir este menu e já dispor todos os elementos que vai utilizar, quebrando a linha após cada um deles.

Construção IF THEN END

Em primeiro lugar vamos discutir a forma mais simples desta construção. Esta construção se traduz da seguinte forma:

IF condição
THEN código condição verdadeira
END

Digamos que você queira trocar os dois elementos do topo da pilha de posição sempre que o valor absoluto do topo for maior que o do segundo. Para realizar isso, podemos concordar que o programa abaixo o fará.

« → A B « A B
  IF A ABS B ABS <
  THEN SWAP
  END » »

No bloco interior os valores A e B são colocados de volta na pilha e, caso o valor absoluto de A for menor que o valor absoluto de B eles são trocados de lugar.

Poderíamos também inserir uma expressão entre aspas entre IF e THEN.

« → A B « A B
  IF 'ABS(A)<ABS(B)'
  THEN SWAP
  END » »

Construção IF THEN ELSE END

A versão mais completa permite um bloco de código para o caso da condição ser falsa. Esta construção se traduz da seguinte forma:

IF condição
THEN código condição verdadeira
ELSE código condição falsa
END

Para resolver o mesmo problema anterior, podemos também utilizar esta construção, que deixa mais óbvio o que está sendo feito.

« → A B «
  IF 'ABS(A)<ABS(B)'
  THEN B A
  ELSE A B
  END » »

No bloco interior a condição é testada e, caso o valor absoluto de A for menor que o valor absoluto de B eles são colocados na pila na ordem B, A. Senão são colocados na pilha na ordem A, B.

Detalhes

Podemos colocar qualquer sequência de operações entre IF e THEN. Quando o programa chegar em THEN ele lerá o topo da pilha e executará o bloco correspondente ao valor lido.

Esta característica é muito importante para organização dos código. Manter todo o código de teste dentro do IF THEN facilita muito a leitura e compreensão.

Como exemplo, o programa abaixo não faz nada, pois zero é falso. Caso colocássemos 1 no topo da pilha (entre IF e THEN) o valor 10 seria colocado no topo da pilha.

« IF 0 THEN 10 END »

Compartilhe e deixe sua sugestão!

Gostou do post? Foi útil? Clique abaixo e compartilhe com seus amigos!

Tem uma sugestão de post? Deixe um comentário!

Veja a lista de posts do Curso Calculadora HP50g.

Compartilhe e deixe sua sugestão!

Gostou do post? Foi útil? Clique abaixo e compartilhe com seus amigos!

Veja a lista de posts do Curso Calculadora HP50g.

Autor: Djones Boni

Engenheiro Eletricista e Eletrônico. Professor de Engenharia Eletrônica na UTFPR Toledo. Interesses: Sistemas eletrônicos embarcados e de tempo real.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *