Programando a HP em USER-RPL

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.

1

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:

2

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.

3

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

4

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 *).

5

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

67

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:

8

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:

9

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:

1011

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:

1213

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:

14

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

15

<< 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!”

  1. Muito útil este tutorial. Nem sabia que era tão fácil fazer programas(tá certo que deve ter alguns mais complicados).
    Fabricio Faustino muito obrigado pelas informaçoes, parabens.

    Tenho que me acostumar o mais rápido possível com o modo RPN.
    Abraços.

      • camilasoares
      • 8 agosto, 2009

      Oi Alberto. Tudo jóia? Que bom vê-lo novamente por aqui!
      Também achei excelente este tutorial do Fabricio. Estou ansiosa pelos próximos que ele está preparando.
      Abração.

      • Olá Camila!
        Gostaria de parabenizar seu blog! Gostei muito das informações aqui encontradas!

        Sou estudante de eng. Civil do IFSP…Add seu blog em meu pc para adquirir informações sobre a minha hp50g!
        Obs.: pena que a pilha dura pouco…

        Bjus!

        Qndo descobrir mais coisas espero contribuir com vc!

  2. Exelente post, ajudo muito intender minha 50g

      • camilasoares
      • 11 agosto, 2009

      Oie Felipe. Tudo em ordem?
      Vi seu blog… Muito bacana!😀
      Muuuuito obrigada pelo elogio.
      Fique a vontade para deixar suas dúvidas aqui pra que a gente possa te ajudar.😉
      Abração e seja bem vindo ao Engenheirando…

    • Leandro
    • 12 agosto, 2009

    Muito bacana o post. Quem tem uma HP sabe como é difícil encontrar fontes que nos ajudem a trabalhar (sobretudo de maneira plena) com a calculadora.
    O Engenheirando está de parabéns!!

      • camilasoares
      • 16 agosto, 2009

      Oi Leandro…
      Muito obrigada pelos parabéns e pela sua visita.
      Espero você mais vezes por aqui. Inclusive com comentários, críticas, sugestões e dúvidas.😉
      Abração!!!

    • Pedro
    • 22 agosto, 2009

    Olá, estudo Engenharia Civil na UFRN, já fazia tempo que procurava algum tutorial do tipo pra dá início ao aprendizado de programação da HP. Muito boa a explicação, espero um dia usufruir 100% da minha HP. Agora preciso aprender a usar os outros comandos de programação If, while, do..while e afins.

      • camilasoares
      • 22 agosto, 2009

      Olá Pedro.
      É um prazer enorme recebê-lo aqui!
      Ah, com certeza teremos outros posts com essas informações. Nosso amigo, o Fabricio, está providenciando novos tutoriais. Ele é muito fera neste assunto de programação da HP.
      Espero te encontrar mais vezes por aqui.
      Abraços.

  3. Oi Camila!
    Meu nome é Marcos Paulo, faço Eng. de Agrimensura na UFV, e queria agradecer o post do Frabricio sobre inicio de programas simples em Hp 50g, há tempo estava procurando um material assim!!! Obrigado e exelente site o seu!!!

      • camilasoares
      • 30 agosto, 2009

      Obrigada Marcos.
      Esperamos ajudar ainda mais!!!
      Abraços.

    • Francys
    • 3 setembro, 2009

    Realmente de PARABENS, excelente conteudo, supimpinha o post. xD

    valews msm.

    Abraço, pessoal.

    • camilasoares
    • 19 setembro, 2009

    Oi Francys…
    Muito obrigada! Fico feliz que tenha gostado!
    Abração.

    • neto
    • 2 maio, 2010

    Salve, Salve!

    Em primeiro lugar queria parabeniza-la pela iniciativa de criar um espaço aberto ao público de diversas partes do mundo, e o melhor na língua de Camões.

    Estou querendo criar um programinha para fazer o transporte de coordenadas (topografia)para ver se com isso consigo ganhar um pouco de tempo nos cálculos, sou estudante de topografia, e não tenho muito dinheiro por enquanto para investir em programas, vou deixar a fórmula de como consigo fazer o transporte das coordenadas para ver se conseguem me ajudar.

    Mb = Ma + distancia AB x Seno Rumo AB

    Pb = Pa + distancia AB x Co-seno Rumo AB

    Onde:

    Mb = coordenada Meridiano do ponto b, que quero saber.
    Pb = coordenada Paralela do ponto b, que quero saber.

    Ma = coordenada Meridiano do ponto a, conhecida.
    Pa = coordenada Paralela do ponto a, conhecida

    Distancia de AB = distancia do ponto A ao ponto B
    Rumo de AB = rumo entre o norte e o ponto B.

    Exemplo com valores, das coordenadas do ponto A.

    Ma = – 78276.234 ( – 78276.2341424 )
    Pa = -101248.331 ( -101248.330979 )
    Distancia AB = 483.224 ( 483.223878351 )
    Rumo AB = 209.2609 ( 209.26091895852 )

    Depois de introduzir esse valores na fórmula tenho que ter os seguintes valor para o ponto b.

    Mb = – 78346.281 ( – 78346.2808571 )
    Pb = – 101726.451 ( – 101726.4510021 )

    • Rafael
    • 23 maio, 2010

    Antes de mais nada, parabéns pelo excelente material.
    Gostaria de saber se é possível resolver série de Fourier pela HP 50G.

    Grato.

    • Alberto Teixeira
    • 2 fevereiro, 2011

    Tenho um programinha de transporte de coordenada mas de coordenadas UTM. Se desejar me envie um e-mail.
    Trabalho com topografia e sou Téc em Edificações.

    Alberto

    beto.tlima@hotmail.com

    • dflopes
    • 4 fevereiro, 2011

    PArabéns pelo excelente tutorial, Fabricio.

    E pelo ótimo Blog, Camila.

    Minha HP50G estava parada quase 6 meses, sem me chamar a atenção, quando resolvi fazer uma formuleta para cálculo de “Medição de Vazão Fluvial por Integração”.

    Tudo começou com 5 formulas e apenas 7 variáveis e já estou com 18 variáveis e 4 sub-rotinas. Tudo isso depois de acessar o seu blog e ler esse tutorial.

    O procedimento básico das ações é (algoritmo):
    a) Iniciar a medição
    – limpeza das variáveis
    – entrada dos parametros iniciais (distância das margens)

    b) Medição da vertical
    – input (largura – L, profundidade – P, velocidade – v];
    – formulas (área – S, vazão – Q)
    – criação de linha de matrix para armazenamento da vertical (L, P, v, S, Q)
    – Verificação de validade da vertical (Teste if)
    – Inserir linha na Matrix (função ARRY)

    c) Refazer Vertical
    Extrair determinada linha da matrix (referente a uma das 30 verticais), chamar a rotina (“Medição da Vertical) e reinserir a linha no mesmo lugar

    d) Finalizar Medição
    A partir da matrix elaborada, obter
    – Somatoria da Largura (Lt)
    – Media das profundidades (Pm)
    – Media das velocidades (vm)
    – Área Total (St)
    – Vazão Total (Qt)

    E para o futuro, criar uma interface do usuario com janela pra inserção dos dados, usando essa dica:
    HP 50g: Getting User Input with Forms
    http://adorio-research.org/wordpress/?p=532

    Mais uma vez, parabéns pelos dados. E posso lhe repassar o programa, código fonte e algoritmos (assim que descobrir como exportar um programa pro windows)

    • jj
    • 20 abril, 2011

    Cara, o MELHOR TUTORIALZINHO!

    Muuuuito útil para o dia-a-dia e provas.

  4. Olá Camila Soares, estou no segundo periódo de engenharia civil acabei de comprar a HP 50 G, gostaria de algumas dicas para aprender a opera-lá conto vc.

    • joao
    • 16 setembro, 2011

    para fazer programas grandes eu uso o HP user edit, por ser mais facil de digitar no computador, queria saber como faz pra exportar ele pra HP.

    • Juliano – PASSO FUNDO – RS
    • 26 novembro, 2011

    Boa Tarde.

    Camila gostaria de saber se tem algum programa tipo ( viga) mas que calcule forças e reações inclinadas em relação ao (HORIZONTAL E VERTICAL ).
    Para terem uma ideia do que me refiro, procurem a apostila de mecânica técnica que está diponivél na internet.

    Eu preciso urgente.

    Obrigado.

    • PAULO CARDOSO
    • 28 novembro, 2011

    EXISTE GABARITO PARA O TECLADO DA HP50G , EM ANALOGIA AS HP 48S E 48G

    • PAULO CARDOSO
    • 29 novembro, 2011

    OLÁ CAMILA ,

    EXISTE A POSSIBILIDADE DE TRANFERIR OS PROGRAMAS DAS HP`S 48S E 48G PARA A HP50G.
    OBRIGADO!!!!!!!!!

    PAULO CARDOSO

    • FAGNER
    • 11 dezembro, 2011

    como fazer transformada de lapaz para sinais discretos ou seja como fazer transformada z na hp 50

    • Gabriel Moreno dos Santos
    • 10 janeiro, 2012

    olá pessoal,

    Estou precisando criar um programa que tenha a mesma função do find em um arquivo pdf, entretanto, teria que selecionar o banco de dados … seria um programa para localizar um texto em um arquivo conhecido …. alguém poderia me ajudar? Não sei nem por onde começar.

    • José Dias de Souza
    • 21 fevereiro, 2012

    Olá Camila tudo bem.
    Como eu faço para iniciar equações com numeros negativos dentro do EQW. Exemplo: (1.33×10^-3) ou (-9×9).
    Obrigado. José Dias.

    • Lutero
    • 17 março, 2012

    Primeiro parabéns pelo blog/post..
    Há muito tempo usei uma HP48Gx e fazia alguns programas até ineteressantes.. Ela ficou parada e agora algumas teclas não funcionam.. Comprei uma HP50g e gostaria de saber se a linguagem(UserRPL) é a mesma..

    Os mesmo programas que fazia na 48 posso fazê-los na 50?? MSGBOX, FREEZE, CLLCD, INPUT, CHOOSE, DROP, GRAB, ANIMATE, DUP, SWAP, STO tudo isso funciona igual??

    • paulo
    • 14 abril, 2012

    voce poderia fazer um tutorial mais aprofundado de programacao usando rpl. por exemplo mostrando as funcoes logicas, o choose, inform…

    • PAULO CARDOSO
    • 5 maio, 2012

    OLÁ A QUEM FOR DE DIREITO!!!!!!

    COMO FAZER O QUE ME PEDES, SE OS MEUS E-MAIL´S NÃO SÃO PELOS MENOS RESPONDIDOS!!!!!!!!!!

    PAULO CARDOSO

  5. I wish I knew a woman like Barbie back as I was still
    a youngster. I mean how awesome wouldn’t it occur to be of a gamer like myself playing his Xbox come across just as the typical child. Sorry that was a tangent, this page Programando a HP em USER-RPL Engenheirando actually was super helpful and allows changed the road I will for ever play games.

    • joão fideles
    • 28 fevereiro, 2014

    amigo otimo post minha duvida é como posso fazer programas no modo algebric ? e como usar o hpuseredit ?

    • jonas
    • 6 abril, 2014

    um otimo blog que ensina até a programar mais fundo é

    http://programandohp50.blogspot.com.br

    • Gean Frank
    • 16 agosto, 2014

    Onde encontro uma apostila em português que ensine a linguagem de programação UserRPL? Pois todas que baixei até hoje estão em Inglês ou Espanhol.

  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: