O Engenheirando ganhou um presentão esta semana. Nosso querido leitor Fabricio Faustino escreveu um tutorial excelente sobre a HP e o disponibilizou para que eu o publicasse aqui.
Fabricio, fico realmente lisonjeada e honrada com sua dedicação e empenho em transmitir seus conhecimento aqui no meu blog. Muito obrigada pelo tutorial. O adorei! Aprendi muito com ele, pois nunca havia programado nada na HP. Conto com sua parceria em outros tutoriais. O Engenheirando está de portas abertas para você
.
Os arquivos citados no final do post estão disponíveis na área de downloads aqui do blog.
Bom, então vamos lá… Aí vai o tutorial:
“Atendendo ao pedido da Camila, estou fazendo este pequeno tutorial de como programar a nossa querida HP.
Primeiramente eu gostaria de agradecer o espaço dado a mim neste blog. Disponibilizar material para estudantes de engenharia (e engenheiros!) num blog e de forma acessível é algo louvável dada a natureza técnica das fontes de informação para esta área o que muitas vezes assusta os novatos.
Vamos dividir o tutorial em partes, uma básica, que seria a parte onde aprendemos o essencial e o avançado, que pode se subdividir, onde vamos ver principalmente as estruturas de controle (IF, FOR, WHILE, etc…).
Eu vou falar aqui sobre o USER-RPL, para quem não é familiar com o termo, este é o nome de uma das linguagens de programação da HP. USER-RPL não é o único, mas é o caminho mais fácil, prático e eficiente de fazer PEQUENOS e talvez MÉDIOS programas. Programas em USER-RPL podem ser criados na HP 50g e executado na 48G e vice-versa.
Estou assumindo que você esteja utilizando o RPN em sua HP (se você não sabe o que é RPN, leia em http://mauromartins.wordpress.com/2009/06/15/rpn/) é importante também ter noção de como funciona o stack, que nada mais é do que a maneira com que a HP organiza as informações na tela.
Pode ser chato aprender RPN, mas após tempo (uma semana) você vai perceber que a nossa calculadora FOI FEITA pensando no RPN, aprendê-lo e usá-lo no seu dia-a-dia só vai lhe trazer benefícios.
Bom, vamos ao que interessa certo?
Para fazer as rotinas do seu programa você pode utilizar um editor de textos qualquer no seu computador. Eu aconselho fortemente o uso do Debug4x, existem outros, mas este me parece ser o mais amigável. O Debug4x tem um emulador da calculadora que permite a correção dos erros a medida que se programa, além disso, o programa permite a organização do código, o que é essencial a medida que o mesmo vai crescendo, permitindo inclusive a utilização dos caracteres especiais que as calculadoras HP utilizam.
Como nesta parte do tutorial vamos ver rotinas simples apenas, você pode utilizar somente a calculadora para programar.

As teclas marcadas acima nos levam ao atalho para iniciar o nosso programa, pressione SHIFT PARA A DIREITA + “+” e você vai ter o seguinte no stack:

Tudo o que estiver dentro destes << >> será o seu programa. É neste espaço que colocamos as nossas rotinas.
A característica mais marcante do USER-RPL é que na prática é um macro (como no Word ou Excel), para nós isso quer dizer que programar em USER-RPL é basicamente repetir o que faríamos se estivéssemos utilizando a calculadora normalmente.
Um exemplo para demonstrar isso.
Vamos supor que durante uma prova você tenha de introduzir um número na calculadora e multiplicá-lo por PI, várias vezes. Em RPN você colocaria o número a ser multiplicado no stack, colocaria PI no stack e então multiplicaria os dois. Para fazer esta operação uma vez, você teria de utilizar no mínimo 5 teclas. Vamos então fazer um programa que automatize ao máximo esse procedimento.
Como eu disse, USER-RPL funciona da mesma maneira como se estivéssemos repetindo os comandos, logo, vamos assumir que o número a ser multiplicado por PI já está no stack.

Feito isso, vamos adicionar os caracteres << >>, então pressione SHIFT PARA A DIREITA + “+”

Agora dentro dos << >> você vai escrever PI * (“PI” [espaço] “Vezes”)
Nesta parte é que entram em jogo as suas ”habilidades” em RPN, você pode notar que a ordem das operações dentro do << >> é a mesma usada se estivéssemos fazendo a operação no stack. (10 ENTER PI *).

Feito isso, dê um ENTER, insira um nome para o seu programa e salve o mesmo com STO.


Você pode notar que o programa “TESTE” ficou salvo como uma variável, a diferença entre um programa e uma variável é que uma variável quando chamada retorna o seu valor e o programa executa as suas rotinas.
Pressionando TESTE vamos fazer com que o valor 10 que havíamos inserido logo no começo do programa seja multiplicado por PI:

Agora para fazer o procedimento de multiplicar os valores por PI ficou mais fácil, basta introduzir o valor no stack e pressionar TESTE.
Este é um exemplo muito simples, ele não tem checagem de erros por exemplo, se você tentar executar o programa sem nada no stack ele vai retornar um erro. É claro que você pode pôr mais rotinas e automatizar praticamente qualquer coisa da HP como introduzir uma rotina que checa se há algo no stack ou não, para então fazer a rotina principal.
Variáveis locais
Agora vamos ver um exemplo um pouquinho mais avançado, vamos criar um programa que calcule o valor equivalente de dois resistores em paralelo. Neste exemplo vamos utilizar um recurso chamado variáveis locais, estas variáveis guardam os valores atribuídos a ela até que o programa seja finalizado. As principais vantagens deste tipo de variável são a velocidade de execução do programa e caso haja um erro, elas não deixam “lixo” na memória da calculadora, o que ocorre facilmente caso uma rotina de limpeza não seja executada por causa do erro.
A Fórmula do resistor equivalente para 2 resistores em paralelo é bem conhecida:

Para fazer este cálculo na HP, vamos digitar o valor dos dois resistores, um em cada nível do stack, o nosso programa assume que este procedimento foi feito.
Então começamos nosso programa:


Dentro dos << >> vamos inserir uma seta (SHIFT PARA A DIREITA + 0) e depois os nomes para as nossas variáveis. Esta seta diz para a calculadora salvar os valores que estão no stack como variáveis locais, separando-as por um espaço:


Desta maneira vamos salvar na variável R1 o primeiro valor que está no stack e em R2 o segundo valor.
É importante salientar que ao criar variáveis locais você vai precisar repetir o primeiro passo, que é criar os << >> e dentro deles fazer a sua rotina:

Aqui vamos inserir o procedimento, que se resume na execução da fórmula de Resistores equivalentes, em RPN:

<< R1 R2 * R1 R2 + / >> → Chamo R1 e R2, multiplico os dois; chamo R1 e R2, somo e divido os resultados, agora é a hora de saber RPN!
Com estes procedimentos feitos, basta salvar com o nome que você preferir, introduzir dois números no stack e executar o programa.
Os dois exemplos feitos aqui são simples o suficiente para serem feitos na própria calculadora mas assim mesmo estão em anexo os arquivos prontos, que descrevem passo a passo os procedimentos. Este arquivos devem ser abertos utilizando o Debug4x pois possuem símbolos da calculadora! Note que eles funcionam como scripts, que instalam os programas mostrados aqui ao serem transferidos para a HP pelo programa de conectividade.
Até a próxima!”