Você está na página 1de 82

PET – Programa Especial de Treinamento

Universidade Federal do Pará


Centro Tecnológico
Departamento de Estruturas

Programação UserRPL para as Calculadoras


HP48G/GX direcionada a Resolução dos
Problemas da Engenharia Civil

Janeiro de 2000
Operação e Manutenção
Curso de Programação HP48G/GX _________________________________________________PET-Civil

1 INTRODUÇÃO

A idéia de um curso de programação em HP48 surgiu devido à falta de uma


literatura específica, as referências encontradas nos manuais e em sites da
Internet geralmente se encontram em língua inglesa o que dificulta o
aprendizado da maioria dos usuários.
Um dos objetivo é mostrar o potencial das ferramentas contidas na
calculadora, que na maioria das vezes não são utilizadas ou então são
subutilizadas, por total desconhecimento do usuário, já que a maioria não chega
a utilizar 30% dos recursos oferecidos pela calculadora.
O curso abrange desde conhecimentos básicos de operação e manutenção,
mostrando todas as estruturas de programação e ainda a transferência de
arquivos entre calculadoras e com o PC, abordando também uso de softwares e
emuladores no PC.
Devido a diferença do nível de conhecimento dos alunos o curso abordara
sempre que necessário procedimentos de operação, que estarão intercalados
entre os procedimentos de programação, é importante frisar que não é pretensão
do curso tornar o usuário um excelente programador, mas com os
conhecimentos adquiridos faze-lo capaz de encontrar a melhor solução dentro do
possível para seus problemas, aplicando corretamente o uso das ferramentas
oferecidas, tirando o máximo rendimento de sua calculadora, e ainda
incentivando-o para que prossiga seus estudos afim de aprofundar e aprimorar
seus conhecimentos com o objetivo de se tornar um bom programador.

1
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

2 MEMÓRIA
A HP48 possui dois tipos de memória:

R ROM (Read-only memory - memória somente de leitura): é a parte da


memória que não pode ser alterada, pois armazena instruções internas da
calculadora. A HP48G/GX tem 512kbytes de ROM contra os 256kbytes da
HP48S/SX e os 28.2kb de uma TI-92. Isto significa que a HP48 tem mais
instruções internas que a BIOS de um computador, A ROM possui várias
versões para verificar qual a versão que sua calculadora trabalha digite
VERSION(Sem ‘ ou “ somente mantenha pressionada a tecla
enquanto escreve) e em seguida aperte ,
você vera o seguinte:

(Digitar sem ‘ ou “) (Resultado do comando)

Onde a letra R em representa a versão da ROM, que começou com A


sendo a R a ultima versão lançada, todas as versões apresentam falhas, que não
serão abordadas nesse curso.

R RAM (Random-access memory - memória de acesso aleatório): é a parte


da memória que podemos modificar, gravar dados e apagar o seu
conteúdo. Também é conhecida como memória do usuário, pois é nela que
ficam armazenados os programas e demais objetos criados pelo usuário, a
HP48G possui 32KB de RAM contra 128KB da HP48GX/G+, a HP48GX
ainda possui dois slots de expansão através de cartões que são vendidos
separadamente podendo atingir 512KB em um único cartão, existe uma
maneira de expandir a memória da HP48G, implantando alguns chips de
memória, mas é importante mencionar que esse processo só é indicado
para usuários que entendam de microeletrônica, porque a calculadora terá
que ser aberta para que se implante os chips, existem sites na Internet
que explicam detalhadamente todo o processo com fotos ilustrativas de
todas as etapas, o autor não se responsabiliza por eventuais danos
causados na tentativa de realizar o processo mencionado, os sites abaixo
são referências importantes sobre o assunto.

URL:
http://www.contrib.andrew.cmu.edu/~drury/how2open.htm

FAQ para download:


ftp://ftp.cis.com/pub/hp48g/uploads/48gs256k.zip

2
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

3 OBJETOS
Objetos são elementos básicos de informação que a HP48 utiliza, sendo
estruturas de dados internas(string, número real, lista, etc.), a calculadora pode
armazenar e manipular diversos tipos de objetos, esses objetos são classificados
internamente pela calculadora de acordo com seu tipo, como mostra a tabela
abaixo.

Nome do Objeto Tipo


Número Real 0
Número Complexo 1
String 2
Array Real 3
Array Complexa 4
Lista 5
Nome Global 6
Nome Local 7
Programa 8
Objeto Algébrico 9
Inteiro Binário 10
Objetos Gráficos 11
Targged Object 12
Objeto com Unidade 13
XLIB Name 14
Diretório 15
Library 16
Backup Object 17
Comandos Internos
Início de Funções 18
Início de Comandos 19
Objetos de Sistemas
Sistema Binário 20
Extend Real 21
Extend Complex 22
Linked Arrays 23
Character 24
Objeto CODE 25
Library Data 26
External Object 27-31
Ex.
A identificação de um objeto é feita através do comando TYPE1

1
O comando TYPE está contido no submenu de mesmo nome no menu .

3
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

Muitas das operações da HP48 são as mesmas para todos os tipos de


objetos(salvar, editar, etc.), mas existem operações que só podem ser aplicadas
sobre determinados tipos de objetos(operações matemáticas, evaluar, etc.), veja
um resumo dos principais objetos da HP48.

^ Números reais: Vão de (-9.99999999999x10499 à 9.99999999999x10499).


^ Números complexos: Forma retangular (x, y) e forma polar (r, θ).
^ Nomes: Utilizados para identificar variáveis, são colocados no modo
algébrico( ‘ ’ ).
^ Objetos algébricos: Objetos algébricos são os elementos delimitados por
( ‘ ’ ), podendo ser nomes ou expressões matemáticas na forma extensa, o
aplicativo Equation Writer cria de forma amigável objetos algébricos, como
se o usuário estivesse escrevendo em uma folha de papel, podemos
acessalo dentro de outros aplicativos como o Solve, sua localização é:
+ .

^ Programas: Os programas são seqüências de comandos e outros objetos


são delimitados por « e ».
^ Strings ou cadeias de caracteres: são seqüências de caracteres, utilizadas
normalmente para representar textos são delimitados por ( “ ” ).
^ Listas: Listas são seqüências de objetos agrupados, esses objetos podem
ser de qualquer tipo, depois de agrupados, podemos trabalhar com a
cadeia como se fosse um só objeto, seu caracter delimitador são chaves
( { } ).
^ Objetos gráficos: Armazenam os gráficos que podem ser obtidos pelo
traçado de equações ou pelo desenho artístico do usuário. Os objetos
gráficos também podem ser armazenados em variáveis e manipulados na
pilha, onde aparece da seguinte forma: Graphic n x m (onde n é o número
de colunas e m o número de linhas que compõem o objeto gráfico).
^ Objetos de unidades: Representam a combinação de um número real com
uma unidade ou expressão de unidades.
^ Objetos de diretório: A HP48 utiliza objetos para especificar estruturas
hierárquicas de diretórios armazenados. Os objetos de diretórios serão
vistos em um tópico à parte(ver item 10).
^ Objetos adicionais:

ƒ Objetos de segurança: Permitem armazenar toda a memória da HP.


ƒ Objetos biblioteca: Uma biblioteca é um diretório de comandos e operações
que não estão incorporados na calculadora, são armazenadas em portas e são
mais rápidas que os programas em UserRPL.
ƒ Objetos XLIB: São objetos que fazem referência a uma biblioteca.
ƒ Objetos EXTERNAL: São endereços de memória que apontam instruções
internas, são geralmente comandos de programas System RPL.
ƒ Objetos CODE: São subrotinas2 de programas em linguagem de máquina(ML).

2
Subrotinas: São subprogramas acionados por um programa principal, essa é uma técnica de
programação que será abordada durante o curso.

4
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

4 UTILIZANDO OS COMANDOS DE PILHA


Os comandos de pilha(Stack’s) são utilizados para manusear os objetos,
duplicando, movendo, apagando, etc. Eles são acionados pressionando-se o
botão + os comandos são:

R OVER: Esse comando copia o elemento que esta no segundo nível da pilha
colocando-o no nível um.
Ex.:

Aperte a tecla

R ROT: O comando ROT move o elemento que esta no nível três, colocando-
o no nível um.
Ex.:

Aperte a tecla

R ROLL: Comando parecido com o ROT, so que podemos mover qualquer


elemento da pilha, colocando-o na posição um, para isso temos que
especificar a posição do elemento que iremos mover, veja o exemplo.
Ex.:

Aperte a tecla

Obs.: Observe que 3 ROLL = ROT.

5
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

R ROLLD: Esse comando faz o inverso do ROLL, ou seja ele move o elemento
da posição um para a posição especificada, veja abaixo.
Ex.:

Aperte a tecla

R PICK: O comando PICK é semelhante ao comando ROLL, só que ao invés


de mover, ele copia o elemento da posição especificada.
Ex.:

Aperte a tecla

R DEPHT: O comando DEPHT quando acionado nos fornece o número de


elementos da pilha, esse número é colocado na posição um.
Ex.:

Aperte a tecla

6
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

R DUP: Este comando duplica o elemento que esta no nível um da pilha,


para acessa-lo aperte a tecla , para ver a continuação do menu
STACK’S.
Ex.:

R DUP2: Duplica os elementos das posições um e dois simultaneamente.


Ex.:

R DUPN: Duplica o número(N) de elementos, definido pelo usuário.


Ex.:

R DROP: Elimina o elemento que está no nível um da pilha, esse comando e


acionado, quando pressionada a tecla , que e equivalente a tecla
Backspace do PC.

Obs.: Para inserirmos o comando DROP em um programa, devemos pressionar


as teclas:
+ .

R DROP2: Segue o mesmo modelo do DUP2, só que ao invés de copiar ele


apaga os elementos das posições um e dois.

R DROPN: Comando semelhante ao DUPN, só que aqui ele apaga o número


de elementos que é definido pelo usuário.

7
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

5 MANIPULANDO TEXTOS

R + Ativa os caracteres minúsculos ou maiúsculos de acordo


com a notação habilitada(por defaut todas são maiúsculas),
e alguns caracteres especiais para o teclado numérico.
R + Ativa os caracteres especiais em todo teclado alfanumérico.

R + + Troca a notação, passando para todas maiúsculas


ou minúsculas de acordo com a que estava
habilitada anteriormente.

Obs.: O usuário pode ativar caracteres especiais diretamente no teclado


alfanumérico, ou então ativar o comando CHARS que exibe uma caixa onde estão
todos os caracteres especiais, inclusive alguns que não podem ser acessados via
teclado, a HP possui 225 caracteres especiais, para pagina-los acione a tecla
relacionada as funções –64 ou +64 e para inserir a função ECHO, o comando
CHARS também mostra o atalho(se existir) para o teclado alfanumérico.

Paginar Inserir

6 DISPLAY
O display da HP48G é dividido em três áreas distintas:

R Área de status: É nessa área que são exibidos os anúncios e mensagens


como: Modos de exibição, tipo de coordenadas, alarme, nível das pilhas,
etc.
R Área da pilha: É nessa área que é feita a alocação e manipulação dos
objetos
R Área de Menus: Corresponde a base do display onde estão localizados os
menus que são em número de seis, sendo acionados através das teclas
imediatamente abaixo de cada um.

8
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

Área de Status

Pilha

Linha de Comando
Menus

7 OPERAÇÕES
Na HP48 existem duas maneiras de realizar uma determinada operação, o
processo interativo e o processo manual.

R Processo interativo: Nesse processo são mostradas caixas de dialogo


explicando como deve ser realizada a operação, fazendo-se uma
comparação com os sistemas operacionais como o MacOS e Windows. Para
acionar esse processo deve-se pressionar + a tecla do comando,
esse processo é indicado para usuários iniciantes.
R Processo Manual: Aqui as operações são realizadas diretamente na linha
de comando através de menus, correspondendo ao MS-DOS da HP48,
sendo acionado quando pressionamos + a tecla do comando.

Ex.: Para habilitarmos o Fraction Mark(vírgula ou ponto, por defaut ela vem
desabilitada ou seja, ponto), pelo processo interativo teríamos que pressionar
+ e colocar o cursor sobre campo correspondente e então
pressionar CHK.
Pelo processo manual faríamos + e então entraremos no
diretório FMT e acionaríamos FM,(que ficaria FM,).

(Processo interativo) (Processo manual)

Obs.: Durante o curso os comandos serão mostrados na forma do processo


manual, pois é dessa maneira que são inseridos os comandos em um programa,
dessa forma o usuário devera se familiarizar desde já com esse tipo de operação,
para que não sinta dificuldades no decorrer do curso.

9
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

8 NOTAÇÕES
A HP48 nos fornece quatro tipos de notações de formato de números, onde
podemos indicar sua precisão, são eles:

R Standard(STD): Notação padrão (todas as 12 casas decimais são


mostradas).
R Fixed(FIX): Notação com n casas decimais.
R Scientific(SCI): Notação no formato científico com n casas decimais.
R Engineering(ENG): Notação no formato de engenharia com n casas
decimais.

Alterando as notações:

^ Processo Interativo:

Ö Pressione +

Ö Selecione o campo NUMBER FORMAT usando as setas de movimentação do


cursor.

Ö Pressione CHOOS para escolher o formato desejado e pressione OK, se o


formato desejado for FIX, SCI ou ENG aparecerá um campo ao lado
indicado o número de casas decimais desejadas.

Ö Finalmente pressione OK para confirmar o modo de exibição do display.

^ Processo Manual:

Ö Pressione +

Ö Entre no diretório FMT.

Ö Digite o número de casas decimais caso queira utilizar os modos FIX, ENG
ou SCI.

Ö Pressione a tecla do menu correspondente ao formato desejado, que ficara


marcado() quando habilitado.

Seguindo o mesmo processo acima ainda no menu MODES, são alterados a


notação de medida de ângulos(Degrees, Radians, Grads), onde Degrees
corresponde a graus, e também notação do sistema de
coordenadas(Rectangular, Polar, Spherical), podemos ainda habilitar o sinal
sonoro(BEEP), a exibição de data e hora(Clock) e a função FRACTION
MARK(FM,).

10
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

Formato Numérico
Medida de Ângulos
Sistema de Coordenadas

9 MENUS
A HP48 possui um sistema de menus onde são exibidos os
objetos(programas, variáveis, funções, etc.) e diretórios, que se localiza na base
do display, a estrutura de MENUS é parecida com a estrutura de diretórios de um
PC, apresentando-se na forma de uma árvore. A estrutura de diretórios será
vista em um item à parte, além dos MENUS que contém as funções básicas de
programação e de cálculo, existem outros MENUS com funções específicas:

R EQUATION WRITER: Criação e edição de equações.


Acesso: +

R SOLVE: Resolução de equações, equações diferenciais, polinômios,


sistemas lineares, equações financeiras.
Acesso: +

R PLOT: Plotagem de gráficos.


Acesso: +

R SYMBOLIC: Manipulação de objetos algébricos.


Acesso: +

R TIME: Controle de alarmes, data corrente e do relógio.


Acesso: +

R STAT: Resolução funções estatísticas.


Acesso: +

R UNIT: Controle e conversão de unidades.


Acesso: +

11
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

R I/O: Transferência de dados.


Acesso: +

R LIBRARY: Controle sobre as bibliotecas e cartões de expansão.


Acesso: +

R EQ LIB: Resolução de múltiplas equações e biblioteca de equações.


Acesso: +

R CHARS: Exibição da tabela com todos os caracteres gráficos da HP48.


Acesso: +

R MODES: Seleção dos flags internos da HP48.


Acesso: +

R MEMORY: Controle da memória e diretórios.


Acesso: +

A navegação entre MENUS é feita através das teclas imediatamente abaixo


dos campos correspondentes que acionaram os comandos ou entraram nos
diretórios, e também com as funções da tecla , onde:

^ PREV: Mostra a continuação3 do MENU, caso exista.


^ MENU: Esta função quando acionada retorna ao último menu acionado.
^ NXT: Tem a mesma função do PREV, paginar os MENUS.

3
Parte do MENU que excede o número de seis.

12
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

9.1 Menu PRG


O Menu de programação da acesso a todas as ferramentas de
programação, sendo subdividido em dez submenus separados de acordo com as
estruturas:

R BRCH: Nesse diretório estão contidas todas as estruturas de programação,


que estão contidas nos diretórios (IF, CASE, START, FOR, DO, WHILE).
R TEST: Armazena todas as estruturas de teste: lógicas e de comparação.
R TYPE: Contém as funções de conversão de tipos de objetos.
R LIST: É onde estão localizadas as função de manipulação de listas de
elementos.
R GROB: Funções de manipulação de objetos gráficos.
R PICT: Criação de objetos gráficos.
R IN: Armazena todas as estruturas de entrada de dados.
R OUT: Armazena as estruturas de saída de dados.
R RUN: Contém as estruturas de depuração(verificação de erros) de
programas.
R ERROR: Armazena as estruturas de erro.

Diretórios do MENU PRG

Durante o curso esses MENUS serão freqüentemente acionados, por isso é


bom ir logo se familiarizando com eles.

9.2 Menu MEMORY


O Menu MEMORY contém as funções de manipulação de variáveis é como se
fosse o Windows Explorer no PC, com elas podemos mover, copiar, deletar, criar
e editar variáveis, veja os dois processos.
R Processo interativo: É acionado quando pressionamos + ,
é exibida a caixa:

Diretório corrente
Variáveis

13
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

A manipulação é feita através de menus, onde:


^ EDIT: Utilizado para modificar o conteúdo de uma variável total ou
parcialmente.
^ NEW: Cria uma nova variável ou diretório(para um diretório o campo
OBJECT deverá estar vazio e o DIRECTORY marcado4).

Acione √ CHK para habilitar o campo

^ COPY: Copia uma variável do diretório corrente para outro.


^ MOVE: Move variáveis de um diretório para outro.

Além das funções acima que estão contidas em subdiretórios temos ainda os
comandos:

Ö CHOOS: Comando de seleção das opções dos campos correspondentes, o


comando quando acionado exibe uma caixa com as opções do campo, este
comando esta presente em muitos dos MENUS da HP48.
Ö UCHK: Assim como o CHOOS é um comando padrão da HP48, sendo utilizado
para selecionar objetos e habilitar campos.
Ö RCL: O comando RCL quando acionado coloca a variável
selecionada(sombreada) na pilha.
Ö PURG: Outro comando padrão da HP48, Quando acionado o purg apaga a
variável selecionada, equivalente ao DELETE no PC.
Ö SIZE: Exibe o tamanho da variável e a memória livre.
Ö RESET: Delete Value - Limpa o campo selecionado.
Reset All - Restaura todos os campos às seus valores default.
Ö CALC: Esse é um comando padrão que disponibiliza a pilha para que sejam
realizadas eventuais operações.
Ö TYPES: O comando TYPES exibe uma caixa especificando o tipo de objeto
valido para o campo selecionado.
Ö CANCL: Cancela as operações.
Ö OK: Efetua as operações.

4
A função UCHK em todos os MENUS seleciona os objetos ou habilita campos.

14
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

R Processo manual: Acionado pressionando-se + , assim


obtemos os menus:

^ DIR: O diretório DIR contém comandos para a manipulação de variáveis e


diretórios, tais comandos são:
Ö PATH: Informa(coloca no primeiro nível da pilha) o diretório corrente.
Ö CRDIR: Cria um subdiretório no diretório corrente(o nome do diretório devera
estar no primeiro nível da pilha).
Ö PGDIR: Apaga subdiretórios dentro do diretório corrente, o nome do
subdiretório a ser apagado deverá estar no primeiro nível da pilha.
Ö VARS: Cria uma lista(colocada no primeiro nível da pilha) com as variáveis do
diretório corrente.
Ö TVARS: Retorna uma lista(colocada no primeiro nível da pilha) contendo o
nome de todas as variáveis com um determinado tipo de conteúdo(deve ser
informado através de seu número correspondente no nível um da pilha).
Ö ORDER: Ordena as variáveis a partir de uma lista colocada no primeiro nível
da pilha com as variáveis em sua nova ordem.

^ ARITH: Esse diretório contém comandos utilizados para otimização de


programas, suas ferramentas reduzem o número de operações com
variáveis, obtendo o mesmo resultado, os comandos são:
Ö STO+: Este comando quando possível atualiza o conteúdo da variável
colocada no nível um da pilha somado com o objeto que estiver no nível 2.
Ö STO": Simétrico do STO+, ao invés de somar ele subtrai o conteúdo da
variável colocada no nível um da pilha de um objeto que ocupa o nível 2,
guardando o resultado na própria variável, podemos também colocar a
variável no nível 2 e o objeto no nível um, obtendo assim um resultado
positivo no caso do objeto ser menor que a variável.
Ö STO*: Análogo aos STO+ e STO", só que ele atualiza a variável com a
multiplicação de seu conteúdo com o elemento que esta no nível 2 da pilha.
Ö STO/: Semelhante ao STO/, só que a operação que a operação de atualização
da variável e a divisão, como no STO" podemos colocar a variável no nível 2
e o objeto no nível um da pilha, obtemos assim a divisão da variável pelo
objeto.
Ö INCR: Como os comandos anteriores o INCR atualiza o conteúdo de uma
variável incrementando de uma unidade o seu conteúdo, retornando para o
nível um da pilha o valor atualizado.
Ö DECR: Simétrico do INCR esse comando decrementa5 de uma unidade o
conteúdo da variável, retornando o valor atualizado para o nível um da pilha.
Ö SINV: Atualiza quando possível o conteúdo da variável para seu valor
reciproco (1/x).
Ö SNEG: Atualiza o conteúdo da variável invertendo seu sinal.
Ö SCON: Atualiza o conteúdo de uma variável complexa para o valor de seu
conjugado.

5
Subtrai de um valor especifico.

15
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

Temos ainda os seguintes comandos:

Ö MEM: Retorna a memória livre disponível para o usuário.


Ö BYTES: Retorna o tamanho da variável(em bytes) de um objeto colocado no
nível um da pilha, retorna também a checksum6 do objeto.
Ö NEWOB: Cria outra cópia do objeto na memória.

9.3 Menu UNITS


O menu UNITS contém um catálogo de grandezas físicas permitindo que o
usuário crie objetos com unidades, grandezas que podem ser convertidas em
unidades consistentes, sendo muito útil na vida acadêmica, onde freqüentemente
nos deparamos em situações que necessitam de conversão de unidades.
O catálogo esta dividido em classes(comprimento, área, viscosidade, etc.),
ao todo são 16 que estão em subdiretórios do MENU UNITS onde:

+ : Da acesso aos subdiretórios onde estão agrupadas as


unidades, se acordo com suas classes.

+ : Mostra os comandos para a conversão de objetos com


unidades.

9.3.1 CRIANDO OBJETOS COM UNIDADES


Podemos criar objetos com unidades de duas maneiras:

R Usando as teclas do MENU UNITS, para tal coloque o valor do objeto no


nível um da pilha e acesse o subdiretório da classe desejada, como
mostrado no item anterior, em seguida acione a tecla referente a unidade.

Subdiretórios de unidades Tecla de acesso a unidade Poise

6
Checagem da soma “Checksum”, resultado binário de 16 BIT de um cálculo de CRC (cycling
redundance check) do conteúdo de um objeto.

16
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

R Criando um objeto no modo algébrico(aspas simples ‘ ’ ), coloque o valor


seguido de um underline( _ ) com o símbolo da unidade.

Modo Algébrico

Criando um texto no modo algébrico, unidade Stokes

9.3.2 CONVERTENDO OBJETOS COM UNIDADES


A HP48 permite converter as unidades de um objeto, para unidades
equivalentes7, para tal deveremos colocar o objeto com unidades no nível um da
pilha e em seguida pressionar + a tecla correspondente a unidade para
qual será feita a conversão.

Pressionado-se + , teremos a conversão de polegadas para


centímetros.

O MENU + contém alguns comandos para conversão de


unidades, são eles:

R CONV: Converte o objeto com unidade do nível 2 para a unidade indicada


no nível um, desprezando o valor numérico do objeto do nível 1.

O valor numérico 23 será ignorado, a conversão será de polegada para


centímetro.

7
Unidades que apresentam um a correlação entre si.

17
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

R UBASE: Converte o objeto de unidades para outro objeto que possui


apenas as unidades base do SI, esse comando é muito útil quando se
precisa decompor uma unidade para outras conhecidas.

Decomposição de Poise para as unidades do SI

R UVAL: Retorna apenas o valor numérico de um objeto com unidades


colocado no nível um da pilha, muito utilizado após a conversão das
unidades, na realização de operações matemáticas.
R UFACT: Fatora a unidade do objeto do nível 2 para uma combinação
envolvendo a unidade do objeto do nível um, muito utilizado para
realizarmos a conversão diretamente para uma unidade específica.

A unidade Poise será fatorada para que seja incluída a unidade centímetros

R →UNIT: Combina o valor do objeto do nível 2 com a unidade do objeto do


nível um, desprezando a o valor do objeto do nível um.

Obs.: O MENU de comunicação de dados I/O será visto em outro item.

9.4 Menu CST


O MENU CST é um menu de atalho, que contém links que apontam para um
determinado objeto, é como se fosse o MENU Iniciar ou a área do Desktop do
Windows, é onde geralmente o usuário coloca atalhos para os programas ou
arquivos mais acessados, sendo muito útil portanto quando se tem muitos
arquivos espalhados em vários subdiretórios e se deseja aciona-los rapidamente,
o MENU CST é muito útil e pouco conhecido pela maioria dos usuários.

18
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

9.4.1 CRIANDO E EDITANDO O MENU CST


Existem duas maneiras de se criar um MENU CST, veja:

Ö Crie uma lista com a seguinte formatação:

{ { NOME « DIR PROGRAMA » } }

Onde:
NOME: É o nome do atalho(apenas quatro caracteres são visualizados).
DIR: Diretório que contém o programa.
PROGRAMA: Programa alvo do atalho.

Obs.: Observe que após a execução do programa você estará no diretório que
contém o programa alvo do atalho, caso você acesse os atalhos sempre do
mesmo diretório e queira retornar ao mesmo, coloque o nome do diretório no
final do programa atalho, que fica da seguinte forma:

{ { NOME « DIR PROGRAMA DIR_ORIG» } }

Onde:
DIR_ORIG: Diretório origem.

Ö Acione o comando MENU( + , diretório MENU).

Ou,

Ö Simplesmente crie uma lista com a formatação informada acima e salve com
o nome de CST.

Se os programas alvo forem bibliotecas, a lista não conterá o programa


atalho, já que os programas estão na ROM e podem ser acessados de qualquer
diretório.
Para editar o MENU CCT edite a lista que esta na variável de nome CST.

Obs.: Observe que a ordem dos nomes na pilha é a mesma dos botões do MENU
CST, veja também que é criada uma variável com o nome CST, que contém a
lista, uma vez apagada essa variável o menu deixara de existir.

19
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

10 DIRETÓRIOS
Como já foi mencionado no item anterior a estrutura de diretórios da HP48 é
semelhante a de um PC, apresentando a forma de uma árvore, o diretório
principal da HP48 é o { HOME }, é como se representasse o drive (C:\), a partir
dele o usuário pode criar seus próprios diretórios, como nas outras funções há
duas maneiras de se fazer a mesma operação, pelo processo interativo e pelo
processo manual, as funções de manipulação de variáveis e diretórios estão
contidas na tecla , tais funções serão vistas em um item a parte.

Diretório principal

Subdiretório

Variável

Além do diretório principal {HOME} a HP48 Possui um diretório oculto que


é um subdiretório do {HOME}. Esse diretório é criado quando a calculadora é
ligada e contém dados de alarmes e configurações das teclas, você pode usa-lo
como um diretório armazenando qualquer tipo de variável, entretanto não é
possível ordenar seu conteúdo, isso causara a perda total da memória.
O nome do diretório oculto é um caracter nulo ‘ ’. A única maneira de se
criar um caracter nulo é usando um SYSEVAL8 , para acessar o diretório oculto
evalue9 o programa abaixo.

Programa para acessar o diretório oculto Diretório oculto da HP48

Para sair do diretório oculto use + ou + ,e


você voltará ao diretório {HOME}.

O diretório oculto é uma ótima solução contra os bisbilhoteiros que ficam


vendo o conteúdo de suas variáveis.

Obs.: Os comandos SYSEVAL por apontarem diretamente para memória são


muito perigosos, qualquer erro pode levar a perda total da memória, os arquivos
de sistemas que estão dentro do diretório oculto não podem ser apagados, pois
são de propriedade da ROM, e também podem levar a perda da memória.

8
SYSEVAL são endereços que levam diretamente a uma localização da ROM da HP48, muitas das
strings hexadecimais SYSEVAL são comandos de System-RPL. Uma vez que não há checagem de
argumentos, é fácil ocorrer perda total da memória RAM da HP48.
9
Evaluar é um termo do jargão dos programadores da HP48 e corresponde a executar.

20
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

11 ARMAZENANDO VARIÁVEIS
Podemos armazenar na HP48 programas, strings, valores, etc. Para tal
deveremos utilizar o comando N(store/armazenar), posteriormente
recuperando-os com o comando RCL(recall/chamar).

R Armazenando: Para gravar variáveis devemos seguir os seguintes passos.

Ö Coloque o objeto a ser armazenado no nível um da pilha.


Ö Digite o nome da variável onde será armazenado o objeto, são visualizados
no máximo quatro caracteres no MENU ou cinco se conter a letra I ou sinais
com forma semelhante, não podem ser usados operadores(+,−,etc.) e nomes
de funções internas, podemos utilizar caracteres como setas e pontos, apesar
de os nomes apresentados no MENU serem todos maiúsculos podemos utilizar
caracteres minúsculos.
Ö Pressione a tecla para gravar a variável.

R Atualizando: Podemos atualizar o conteúdo de uma variável já existente,


para isso deveremos fazer o seguinte:

Ö Coloque o objeto a ser armazenado no primeiro nível da pilha.


Ö Pressione e em seguida a tecla do MENU correspondente a variável.

Esse processo será bastante utilizado durante o curso, devendo o usuário ir


desde já se familiarizando.

R Recuperando: Para recuperar os objetos contidos em uma variável


devemos seguir os passos.

Ö No modo algébrico( ‘ ’ ), digitar o nome da variável, colocando o nome no


primeiro nível da pilha.
Ö Pressionando a tecla + para recupera-la.

Obs.: Assim como no armazenamento, temos uma outra maneira de realizar a


operação de recuperação do conteúdo das variáveis, como segue:

Ö Pressione a tecla .
Ö Em seguida pressione a tecla do MENU correspondente a variável.

Esse processo também será bastante utilizado durante o curso.

21
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

12 COMPACTADORES
A HP48 como o PC tem problemas com espaço para os arquivos, no PC a
solução para economizar espaço no HD são os compactadores como o popular
Winzip e o excelente Winrar, na HP a solução é a mesma só que com outros
nomes: BZ o compactador UBZ o descompactador e o BZM que gera arquivos
auto descompactáveis e Self Extractor, esses programas são encontrados em
separado facilmente na Internet, a seguir veremos as limitações e como utilizar
cada um.

R BZ: O BZ é o compactador(somente), apresenta duas versões de acordo


com o desempenho esperado, que depende da memória livre disponível
para o programa: O BZ4 que roda em calculadoras com 11264 bytes de
memória interna de buffer, ou seja as calculadoras HP48GX e HP48G+, e o
BZ1 que necessita de 7424 bytes de memória interna de buffer, para
calculadoras HP48G, para compactar um arquivo, basta coloca-lo(o
arquivo não o nome) no nível um da pilha e acionar o programa.
R UBZ: Esse programa tem como função descompactar os arquivos
compactados com o BZ em qualquer versão, rodando em qualquer
calculadora, para descompactar um arquivo coloque-o(o arquivo não o
nome) no nível um da pilha e acione o programa.
R BZM: O BZM necessita do BZ e UBZ para rodar e roda em qualquer
calculadora, ele reúne esses programas e compacta, descompacta, gera
arquivos auto descompactáveis e Self Extractor, para isso coloque o
arquivo a ser compactado no nível um da pilha e acione o programa, em
seguida escolha a opção desejada: Além do BZ e UBZ temos STR para
arquivos auto extratores e PRG para arquivos Self Extractor.

Observe que quando acionado o BZ e a opções STR e PRG do BZM, são


mostradas algumas informações na área de Status, são elas o tamanho original
do arquivo e para quanto ele foi reduzido, o percentual de compactação e o
tempo decorrido na operação, veja a figura abaixo.

22
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

13 MANUTENÇÃO
A HP48 possui funções de manutenção e auto teste, que são essenciais para
o seu perfeito funcionamento, funções essas que a maioria dos usuários
desconhece, sem falar nos procedimentos manutenção que são praticamente
ignorados.

13.1 Troca de pilhas – travamento acidental


Quando for necessária a troca das pilhas da calculadora deve-se observar o
seguinte:

• Nunca misture pilhas fortes e pilhas fracas, nem de marcas diferentes pois
podem ocorrer vazamentos, danificando a sua calculadora.

• Desligue a calculadora antes de trocar as pilhas e não aperte a tecla


durante a troca das pilha, pois a calculadora tentará se ligar, descarregando
um capacitor interno que supre o circuito(refresh) que mantém a memória
RAM de sua calculadora.

• Você tem cerca de três minutos para trocar as pilhas.

Se a calculadora por algum motivo qualquer travou e você já tentou


pressionar ON + C e não ocorre mais nada, tente usar o resete que fica atras da
calculadora, se mesmo assim a situação continuar o jeito será usar o ON + A + F
caso isto não funcione não resta outra solução a não ser retirar as pilhas com a
calculadora ligada e pressionar ON, (este procedimento, na pior hipótese,
apagará todos os programas que estavam na calculadora), a seguir deve-se
colocá-las de volta na calculadora, e liga-la novamente. Se isto não funcionou,
então será preciso apelar para medidas mais drásticas: descarregar o capacitor
interno do circuito de refresh que mantém a RAM. Para isso é necessário ligar a
calculadora com as pilhas invertidas, o circuito de proteção contra a inversão
acidental das pilha se encarregará de descarregar o capacitor, eliminando
qualquer problema de software que tenha travado a calculadora.

13.2 Funções de manutenção

R + (Pressione e segure a tecla ON, em seguida pressione e


solte a tecla C enquanto mantém a tecla ON pressionada, a seguir solte a
tecla ON)

O comando acima reseta a calculadora(esta é uma partida a quente


"warm-start" ou "system halt"), ocorre um processo semelhante ao do
computador quando se dá um BOOT, o stack e a tela gráfica(pict) são
reinicializados, bibliotecas são recarregadas na memória ou instaladas, o path
{HOME} é selecionado, ocorrem processos a nível de reorganização de memória
e de registradores da CPU.

23
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

Esse comando é muito útil pois a HP48 descarrega algumas funções da


memória, como os últimos objetos editados na linha de comando, os elementos
que ficam na pilha dentre outros, É recomendável que se faça essa operação com
uma certa freqüência, sendo indicado em casos em que a calculadora travou, e
não responde às teclas normais de interrupção.
Alem do RESET via teclado a HP48 possui um botão interno com a mesma
função, geralmente ele esta escondido em baixo do pé10 superior direito que fica
atras da calculadora, na verdade sua posição varia de calculadora para
calculadora, para aciona-lo você devera remover a borracha e introduzir no
orifício um objeto com muito cuidado, esperar um segundo e retira-lo.

R + (Pressione e segure a tecla ON, em seguida pressione e


solte a tecla D enquanto mantém a tecla ON pressionada, a seguir solte a
tecla ON)

Pressionando-se ON-D dá-se início as funções de auto-teste da HP48,


quando você pressiona ON-D a HP emitirá um bip e você verá três linhas
verticais uma de cada lado do visor e uma no meio, os testes são os seguintes:

^ : Mostra a velocidade da CPU.

^ : Teste do Display (pressione para rodar a verificação).

^ : Testa a ROM.

^ : Teste da RAM.

^ : Teste do teclado, começa com ,pressiona-se todas as teclas


em ordem, da esquerda para a direita, de cima para baixo. Se tudo estiver
funcionando bem a HP48 exibirá a mensagem "KBD1 OK".

^ : Teste parcial do teclado.

^ : Testa o estado das pilhas, as condições são mostradas em barras


verticais.

^ : Executa os testes da saída serial(Serial loop-back).

^ : Executa os testes da saída pelo infravermelho(IR loop-back).

^ + ( Pressione e segure a tecla ON, em seguida pressione e solte


a tecla E enquanto mantém a tecla ON pressionada, a seguir solte a tecla
ON)

10
No jargão dos usuários da HP48 esse termo designa as borrachas que ficam na parte de traz da
calculadora.

24
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX _________________________________________________PET-Civil

Esse comando aciona o alto-teste, onde são verificados todos os testes do


comando anterior, é cancelado com o ON + C.

^ + (Pressione e segure a tecla ON, em seguida pressione e


solte a tecla 4 enquanto mantém a tecla ON pressionada, a seguir solte a
tecla ON)

Use esse comando para cancelar alarmes repetidos.

^ + e + (Mantenha pressionada a tecla ON


enquanto faz a graduação)

Ajusta o contraste do visor.

^ + + (Pressione e segure a tecla ON, a seguir


pressione e segure a tecla A, enquanto mantém a tecla ON pressionada,
em seguida pressione a tecla F, mantendo as três teclas pressionadas, em
fim solte todas as teclas)

Este é o Coldstart(partida a frio) manual. Ele interrompe quase todo o tipo


de programa e lhe oferece a opção de "Try to recover memory?". Note que este é
um dos seus últimos recursos quando a calculadora travar, então não tente fazer
isso em sua maquina a menos que queira apagar a memória.

25
Gutemberg Rolim
gutem@ufpa.br
Programação
Curso de Programação HP48G/GX PET-Civil

1 LINGUAGENS
Há duas maneiras distintas de se programar na HP48, através da
linguagem montadora Assembly, que na HP48 é denominada ML(Machine
Language) e RPL(Reverse Polish LISP), sendo que a linguagem RPL pode ser
trabalhada de duas formas, UserRPL e SysRPL.
A linguagem ML é a de mais baixo nível, sendo porém a mais rápida,
SysRPL(System RPL), assim como ML é trabalhada com Assembly, sendo a
linguagem em que é escrita a maior parte da ROM da HP48, System RPL é um
super-conjunto dos comandos normais de RPL e muitas funções de baixo nível
portanto é uma linguagem um grau mais alto que o Assembly(ML), tanto Sys RPL
como ML trabalham diretamente com o processador da HP48, o Saturno, sendo
muitas vezes chamadas de SAS(Saturn Assembler), necessitam de um
compilador que traduza o código, transformando-o em um programa da HP48,
são linguagens que não realizam verificação de argumento(argument checking),
podendo causar corrupção de memória, assim o programador necessita incluir
argumento de conferência onde precisar.
USER RPL é a linguagem de mais alto nível de programação na HP48,
sendo uma linguagem scripting(roteiro), onde o código fonte fica disponível para
o usuário, isto quer dizer que é a mais amigável, porém mais lenta já que seu
código é analisado para checar se os argumentos sobre os quais se aplica são
corretos. Para que tenhamos um bom programa em USER RPL é necessário que
tenhamos um algoritmo bem apurado, caso contrario teremos um programa que
ocupara muito espaço na memória da calculadora, sendo também muito lento.

2 PROGRAMAS
Um programa da HP48 é um objeto delimitado pelos caracteres « », que
pode ser manipulado como uma variável qualquer, como já vimos a linguagem
USER RPL é uma linguagem de roteiro, com isso os programas executam
comandos normais de manipulação de dados na pilha associados a comandos
específicos da linguagem, esses comandos são inseridos no programa através de
menus específicos, podendo ser escritos também.
Os vários objetos que constituem um programa, quando avaliados
corresponderão a uma ação que depende do tipo do objeto, como vemos na
tabela abaixo.

Objeto Ação
Comando Executado
Numero Colocado na Pilha
Algébrico Colocado na Pilha
String Colocado na Pilha
Lista Colocado na Pilha
Programa Colocado na Pilha
Variável Global(entre ' ' ) Colocado na Pilha
Variável Global(sem ' ' ) Colocado na Pilha e Evaluado Automaticamente
Variável Local(entre ' ' ) Colocado na Pilha
Variável Local(sem ' ' ) Conteúdo Colocado na Pilha

1
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

3 ENTRADA DE DADOS
A forma com que vamos solicitar ao usuário os dados necessários a
execução de um programa se constituem como um ponto de fundamental
importância para o programador, que deve proporcionar ao usuário estruturas
claras, auto explicativas e de fácil dedução, para que o mesmo forneça
corretamente o que se pede, tendo-se o cuidado de não comprometer a
performance do programa, para isso a HP48 dispõe de estruturas próprias para a
entrada de dados podendo ainda ser utilizadas combinações entre estruturas
saída e entrada de dados, cabendo ao programador aplicar com conhecimento,
bom censo e uma certa criatividade estruturas adequadas as diversas situações
impostas pelos problemas a serem resolvidos.
Nesse capitulo serão mostradas as estruturas e combinações de entradas
de dados mais usuais em UserRPL, com suas respectivas vantagens e
desvantagens e situações em que podem ser aplicadas.

3.1 Tomada de dados da pilha


Esse é meio mais direto de se obter os dados do usuário, há inúmeros
programas que requerem para sua execução que os dados estejam na pilha
seguindo uma ordem de níveis predeterminada, caso esses não estejam na pilha
ou parte deles ou em um formato diferente do esperado o programa ocasionara o
seguinte erro "Too Few Arguments" e cessará a sua execução.

R Vantagens: O tamanho do programa se reduz aja vista que não e


necessário fazer nenhuma elaborada entrada de dados.
R Desvantagens: O usuário terá que lembrar a quantidade, o tipo e a ordem
dos dados na pilha.

Ex.:

« → ←A ←B ←C
« ←B SQ 4 ←A ←C * * −
CASE
DUP 0 > THEN DROP “Raizes Reais” END
0 == THEN “Raizes Iguais” END
“Raizes Complexas”
END
»
800 ,1 BEEP MSGBOX
»

2
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

O programa acima retira da pilha três objetos(fig. 1) que representam os


fatores A,B e C de uma equação do segundo grau, sendo que a variável A
corresponde ao nível 3 e C o nível 1, em seguida faz a verificação da condição de
suas raízes, note que ele utiliza sintaxe de pilha e variáveis locais compiladas.

Fig.1

3.2 PROMPT
Este é um comando de entrada bastante simples e prático, quando
executado ele exibe na área de status uma string de título predefinida(fig. 2),
que pode ter até duas linhas e conter no máximo 21 caracteres por linha, o
programa fica então em HALT(parado) e o usuário para continuar deverá acionar
o comando CONT para que ele prossiga.

R Vantagens: É um comando de entrada simples, leve e que não requer


muito código, e ainda permite que o usuário realize operações antes de
prosseguir com a execução do programa.
R Desvantagens: O usuário deverá recordar a ordem(quando não
mencionada na string de título), e o tipo das variáveis, e ainda acionar o
comando CONT.

Ex.:
«
"Coloque A B C na Pilha" PROMPT → ←A ←B ←C
« ←B SQ 4 ←A ←C * * −
CASE
DUP 0 > THEN DROP "Raizes Reais"
0 < THEN "Raizes Complexas"
"Raizes Iguais" END
800 ,1 BEEP MSGBOX
»
»
O programa acima verifica o tipo das raízes(fig. 4) de uma equação
quadrática a partir de seus coeficientes A,B e C que devem ser deixadas na
pilha(fig. 3), observe que a mensagem fica na área de status até que o usuário
tecle enter ou realize alguma operação, e quando ela some aparece a palavra
HALT indicando que o programa esta parado, para continuar sua execução o
usuário deverá acionar o comando CONT.

3
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

Obs.: O comando PROMPT quando combinado com outros comandos de entrada


de dados gera estruturas que eliminam suas desvantagens, são estruturas um
pouco complexas a primeira vista mas são rápidas e eficientes, veja o exemplo
abaixo.

«
DO
IFERR
RCL MENU M STO
{{ } { } { } { } { } {"CALC" « CONT »}} TMENU
"Coloque A B C na Pilha" PROMPT → ←A ←B ←C
« ←B SQ 4 ←A ←C * * −
CASE
DUP 0 > THEN DROP "Raizes Reais"
0 < THEN "Raizes Complex"
"Raizes Iguais" END
800 ,1 BEEP MSGBOX
»
M MENU {M} PURGE 1
THEN
CLEAR M MENU {M} PURGE "Fatal ErrorTry Again" 800 ,1
BEEP MSGBOX 0
END
UNTIL
END
»

Observe que a inconveniência de se acionar o comando CONT foi


solucionada com uma tecla de um menu temporário que contém essa
instrução(fig. 3), o programa ainda verifica as condições de erro provocados pelo
usuário(fig. 5).

Fig. 2 Fig. 3

Fig. 4 Fig. 5

4
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

3.3 CLLCD DISP FREEZE HALT


Essa é uma combinação de comandos que gera uma estrutura de entrada
de dados bastante limpa e clara para o usuário, quando executado assim como o
comando PROMPT ele exibe uma string de título, só que agora na área da pilha,
ficando o programa em HALT até que o usuário acione o comando CONT e de
continuação a sua execução.

R Vantagens: É uma entrada clara para o usuário, e permite a realização de


operações na pilha antes de prosseguir a execução.
R Desvantagens: O código aumenta e o tamanho do programa também.

Ex.:

«
RCL MENU M STO 0 DUP DUP → ←A ←B ←C
«{{"A"«'←A' STO+»} {"B"«'←B' STO+»} {"C"«'←C' STO+»}
{"CANC"«M MENU {M} PURGE KILL»}{ }{"CALC"«CONT»}} TMENU CLLCD
"Coloque A B C na Pilhae Pressione a tecla demenu
adequada"
3 DISP 3 FREEZE HALT
IF ←A TYPE ←B TYPE ←C TYPE MAX MAX 0 = =
THEN
IF ←A 0 ≠ ←B 0 ≠ ←C 0 ≠ AND AND
THEN ←B SQ 4 ←A ←C * * −
CASE
DUP 0 > THEN DROP "Raizes Reais" END
0 < THEN "Raizes Complex" END
"Raizes Iguais" END
800 ,1 BEEP MSGBOX M MENU
ELSE M MENU "Coloque todasas variaveis" 800 ,1
BEEP MSGBOX
END
ELSE M MENU "Variaveis do tipo Inteiro" 800 ,1 BEEP MSGBOX
END
»
{M} PURGE
»
O programa acima é uma outra versão do anterior(comando PROMPT) e
verifica o tipo das raízes(fig. 8) de uma equação quadrática a partir de seus
coeficientes A,B e C que devem ser deixadas na pilha, observe que a mensagem
fica na área da pilha(fig. 6) até que o usuário tecle enter ou realize alguma
operação, e quando ela some aparece a palavra HALT (fig. 7) indicando que o
programa esta parado, para continuar sua execução o usuário deverá acessar o
comando CONT(embutido na tecla de menu CALC, fig. 7), o resultado é obtido
graças as propriedades dos comandos, CLLCD limpa todo o display, DISP exibe a
string de título, FREEZE congela a área de status e pilha e HALT para
momentaneamente e execução do programa, observe também que os erros
provocados pelo usuário são verificados(fig. 9) veja as figuras abaixo.

5
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

Fig. 6 Fig. 7

Fig. 8 Fig. 9

3.4 INPUT
Este comando é um pouco mais complicado que os anteriores, possuindo
algumas variações, em troca ele oferece mais claridade para o usuário, sendo na
opinião do autor o mais eficiente dentre os comandos de entrada de dados,
sendo flexível e rápido, quando executado ele limpa a área da pilha e exibe uma
string de título predefinida, que poderá ter até 3 linhas sem atrapalhar o usuário,
na linha de comando aparece uma string com rótulo(target object), solicitando a
entrada, aparece também o cursor indicando o modo de entrada do
programa(canto superior direito PRG), é nessa hora que o usuário deverá entrar
com os dados e pressionar a tecla para prosseguir com programa.

O resultado do comando INPUT é uma string que contém os dados, essa


string deve ser desfeita para que se tenha acesso aos dados.
O comando INPUT possui vários parâmetros, permitindo vários tipos de
entradas, veja abaixo.

! No nível 2 da pilha deve estar a string de título, que poderá ter até três
linhas(ocupando os níveis de 2 a 4, o nível um fica para a entrada de dados)
com 22 caracteres cada, sem atrapalhar o usuário, ou estar vazia ( “ ” ).
! No nível um deve haver uma string de rótulo(string que aparecera na linha de
comando, que também pode estar vazia), ou uma lista que pode conter um
ou mais argumentos dos listados abaixo.

6
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

" String de rótulo para a linha de comando.


" Um número real ou uma lista com dois números reais especificando a
posição do cursor na linha de comando, se colocarmos somente um
número real, este representara a posição do cursor dentro da string da
linha de comando(se existir, caso não exista o cursor aparecera na posição
0, que representa o canto inferior esquerdo da pilha), se esse número for
zero ou maior que o número de caracteres dessa string o cursor aparecera
no final da mesma, se for positivo indicara o modo de inserção(seta), caso
negativo o modo de substituição(quadrado preto). Se for colocada uma
lista com dois números reais, o primeiro representara o modo em que
aparecera o cursor(inserção ou substituição), podendo ser positivo ou
negativo conforme o caso anterior, e o segundo a posição do cursor na
string de rótulo na linha de comando, seguindo os mesmos critérios do
caso anterior.
" Um ou mais dos parâmetros: ALG, V ou α, onde ALG ativa o modo
Algebraic/Program1, V verifica se a string gerada pelo comando contém
objetos válidos, caso não exibe a mensagem “Invalid Syntax”(fig. 14) e
volta a pedir os dados e α ativa o teclado alfabético.

R Vantagens: Obtemos um excelente método de entrada de dados com


pouco código.
R Desvantagens: A limitação do número de rótulos objetos na pilha, se estes
forem em número de 4, a string de título(se existir) não aparecera, e
forem em um número maior somente as quatro primeiras apareceram e as
demais o usuário será obrigado a pressionar a tecla , para visualizar
as demais sendo que na maioria das vezes o
mesmo não faz esse procedimento por presumir que só existam as 4
primeiras visíveis, a menos que o programa através de estruturas de Erro2
alertem-no para esse detalhe.

Ex.:

^ « “Entre com:!A, B e C.” “ ” INPUT » Fig. 10


Aqui vemos que no lugar de uma lista com parâmetros foi colocada somente uma
string vazia.

^ « “ ” { “:a:!:b:!:c:” {−1 0} V }INPUT » Fig. 11


Nesse vemos que a string de título foi substituída por uma string vazia, e que a
string com os rótulos que irão para a linha de comando tem duas linhas,
podemos observar também a lista indicando o modo e a posição do cursor dentro
dessa string(−1 indicando o modo de substituição e 0 para que o cursor apareça
no final da string da primeira linha), e o parâmetro V que verifica se a string
gerada pelo comando é valida.

1
Algebraic/Program-Entry Mode: Modo utilizado para colocar objetos Algébricos(delimitados por ‘ ’)
em um programa.
2
Estruturas de Erro: Estruturas que a partir de erros provocados pelo usuário acionam comandos
pré-determinados.

7
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

^ « “Entre com os dados: ” {“:Nome:” {1 0} α }INPUT » Fig. 12


Podemos observar aqui que temos a string de título, a string rótulo da linha de
comando e a lista com os dados do cursor, a novidade foi o parâmetro α que
ativa o teclado alfabético.

^ « “Entre com a Expressao: ” { “:Eq:” {1 0} ALG }INPUT »


Fig. 13
A novidade aqui é o parâmetro ALG que ativa o modo Algebraic/Program.

^ « IFERR
“Entre com:!A, B e C” {−1 0} V }INPUT OBJ→ DEPTH 3 −
DROPN
→ ←A ←B ←C
« ←B SQ 4 ←A ←C * * −
CASE
DUP 0 > THEN DROP "Raizes Reais" END
0 < THEN "Raizes Complex" END
"Raizes Iguais" END
800 ,1 BEEP MSGBOX
»
THEN
CLEAR “Fatal Error!Try Again” 800 ,1 BEEP MSGBOX
END
»

Acima temos um exemplo padrão, observe que os dados devem ser inseridos
separados por espaços(fig. 15, ver pag. 2-7 do manual da série G – Acumulando
Dados na Linha de Comando).

Obs.: Observe que o resultado do comando INPUT é uma string que contém os
dados, para ter acesso aos dados devemos tira-los dessa forma, para isso
podemos utilizar o comando OBJ→ ( + + ).

Fig. 10 Fig. 11

8
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

Fig. 12 Fig. 13

Fig. 14 Fig. 15

3.5 INFORM
O comando INFORM é o mais complexo de todos os comandos de entradas
de dados, porém em contra partida é o que tem a melhor aparência,
apresentando uma interface visual bastante clara para o usuário, e assim como o
IMPUT segue parâmetros e possui algumas variações, quando executado o
comando INFORM exibe uma caixa que contém um título e os rótulos dos dados
a serem introduzidos, podemos ter acesso a área da pilha e realizarmos
operações antes de prosseguir o programa, os campos que receberão os dados
possuem um help(string explicativa) que fica na parte inferior da janela.
O resultado do comando INFORM é uma lista que contém os dados, essa
lista deve ser desfeita para que se tenha acesso aos dados.
Os parâmetros do comando INFORM são os seguintes:

Ö No nível 5 da pilha deverá estar uma string de título para a caixa.


Ö No nível 4 teremos uma lista que conterá as listas de formatação dos campos
que pode ter os seguintes argumentos:

ƒ Uma string que correspondera ao rótulo do campo.


ƒ Uma string de ajuda referente ao campo, que aparecera na base inferior
da caixa e será acionada quando o campo receber o foco.
ƒ Um ou mais números reais que corresponderão aos tipos de objetos
válidos para o campo, caso o usuário tente colocar um objeto de formato
diferente do especificado para o campo será exibida uma caixa com a
mensagem “Invalid object type”, se esse argumento for especificado na
lista os dois anteriores(string de rótulo e ajuda) deverão obrigatoriamente
constar na lista, caso contrario será exibida a mensagem “INFORM Error:
Bad Argument Type” acusando a falta de argumentos.

9
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

Ö No nível 3 deverá estar a informação do formato com que os campos se


apresentam na pilha, esta informação pode ser:

ƒ Um número inteiro representando o número de colunas em que irão se


apresentar(pode ser qualquer inteiro maior que zero, porém o número
máximo de colunas que podem ser apresentadas é 10).
ƒ Uma lista com dois números onde o primeiro representa o número de
colunas(por defaut 1), seguindo os mesmos critérios do item anterior, e o
segundo o número de espaços entre o rótulo do campo e o dado a ser
introduzido(por defaut 3). Se a lista estiver vazia se entenderá { 1 3 }, se
ao invés de uma lista colocarmos um número inteiro também se entende
que são as colunas.

Ö No nível 2 da pilha teremos uma lista com os valores que devem preencher os
campos quando o usuário pressionar a tecla de menu RESET(fig. 19), essa
lista pode estar vazia ou conter elementos tantos quantos forem os campos,
se quando o usuário acionar o RESET um campo em particular deverá
aparecer vazio então devemos colocar a expressão NOVAL na posição da lista
correspondente a esse campo.
Ö No nível 1 deverá estar outra lista contendo os valores iniciais para os
campos(fig. 16), esta lista também pode estar vazia ou conter elementos
tantos quantos forem os campos, aqui a função NOVAL tem a mesma função
do item anterior.

R Vantagens: O INFORM nos oferece um formulário da entrada de dados


muito claro, onde podemos passar para a área da pilha(tecla de menu
CALC) e realizar operações antes de seguir com o programa, podemos
ainda restringir o tipo de variável que deverá ser aceita gerando
mensagens de erro antes de seguir com o programa, podemos também
oferecer uma mensagem de ajuda específica para cada campo(coisa
impossível com os outros comandos) e tudo isso sem acrescentar mais
nenhuma linha de código. Podemos dizer que o INFORM é o comando de
entrada de dados mais completo, oferecendo uma excelente e clara
interface visual, sendo também muito flexível.
R Desvantagens: O comando INFORM é lento em relação aos outros
comandos, as vezes desesperadamente lento, e necessita de muito
código(opção em que são utilizados todos os recursos disponíveis),
aumentando o tamanho do programa, para o autor esse comando deve ser
utilizado quando a entrada através do comando IMPUT for complicada,
caso em que os dados a serem introduzidos necessitarem de um
esclarecimento(help) para o usuário.

10
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

Ex.:

^ «
WHILE
"INTERP_EXTRAP"
{{"X:" "VALOR A INTERPOLAR OU EXTRAPOLAR" 0} { }
{"X1:" "PRIMEIRO VALOR DA TABELA" 0}
{"Y1:" "PRIMEIRO PAR DA TABELA" 0}
{"X2:" "SEGUNDO VALOR DA TABELA" 0}
{"Y2:" "SEGUNDO PAR DA TABELA" 0}}
{2 0}
{ }
{ }
INFORM
REPEAT
IFERR
EVAL DUP 4 ROLL - 5 ROLL 4 ROLL DUP 6 ROLL – SWAP
3 ROLL - SWAP / * - Y ->TAG ->STR 800 ,1 BEEP MSGBOX
THEN
CLEAR "Fatal ErrorTry Again" 800 ,1 BEEP MSGBOX
END
END
»

^ «
“INÉRCIA1.0”
{{“B1=” “COMPRIM. DO FLANGE SUPERIOR(MM)” 0}
{“T1=” “ESPESSURA DO FLANGE SUPERIOR(MM)” 0}
{“B2=” “COMPRIM. DO FLANGE INFERIOR(MM)” 0}
{“T2=” “ESPESSURA DO FLANGE INFERIOR(MM)” 0}
{“H=” “ALTURA DA ALMA HT=H−B−B(MM)” 0}
{“E=” “ESPESSURA DA ALMA(MM)” 0}}
{2 0}
{ }
IFERR ‘IVAR’ RCL
THEN DROP { } INFORM
ELSE INFORM
END
IF
THEN DUP ‘IVAR’ STO EVAL
→ ←B ←T ←b ←t ←h ←e
« ←B ←T * ←b ←t * ←h ←e * + + 100 / ‘1_cm^2’ →UNIT
A →TAG →STR 800 ,1 BEEP MSGBOX »
END
»

11
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

^ «
WHILE
“AREA DE UM RETANGULO”
{{“NOME:” “ ” 2 6}{ }{“LADO:” “LADO INFERIOR” 0}
{“ALTURA:” “ ” 0}}
{2 0}
{“RETANGULO” NOVAL NOVAL}
{NOVAL 4 2}
INFORM
REPEAT
IFEER
EVAL * “Area”
IF 3 PICK NOVAL ≠
THEN “ de ” + ROT →STR +
ELSE ROT DROP
END
“” + 800 ,1 BEEP MSGBOX
THEN
CLEAR "Fatal ErrorTry Again" 800 ,1 BEEP MSGBOX
END
END
»

^ «
“VERTICE Nº1”
{{ } “X:” “Y:”}
{1 2}
{ }
{0 0}
INFORM
»

Nos exemplos acima podemos ver algumas variações do comando INFORM


no primeiro exemplo temos uma estrutura padrão, notamos que na lista que
contém as listas de definição dos campos existe uma lista de definição vazia,
esse é um truque para conseguirmos um campo pegando duas colunas ao invés
de uma(fig. 16), no segundo exemplo observamos que existe uma estrutura de
erro que contém a chamada da variável global ‘IVAR’ que deverá conter a lista
com os valores iniciais, caso essa lista não exista a estrutura de erro executa o
INFORM sem esses valores, essa variável e gerada toda vez que o programa é
executado, e guarda os valores informados pelo usuário, o terceiro exemplo é
uma estrutura padrão que combina o comando INFORM com outros comandos,
no ultimo exemplo temos a forma mais compacta do comando INFORM.

12
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

Fig. 16 Fig. 17
1.1.1.1.1.1.1.1.1

Fig. 18 Fig. 19

Fig. 20 Fig. 21

3.6 CHOOSE
O comando CHOOSE como o próprio nome já diz é um comando de
escolha, quando executado ele exibe uma caixa com as opções predefinidas,
apresentando uma flecha apontando para cima e para baixo quando estas são
em número maior que quatro.
O resultado do comando CHOOSE depende da forma da lista de opções
podendo ser um objeto algébrico ou um numero real de referência.
Os parâmetros a seguir devem ser seguidos para que se possa executar o
comando CHOOSE:

Ö No nível 3 da pilha deverá estar uma string que servirá de título para caixa.
Ö No nível 2 devemos colocar uma lista com as possibilidades de seleção, seus
elementos poderão ter o seguinte formato:

ƒ O objeto a ser representado, que pode ser qualquer.


ƒ Uma lista contendo uma string a ser apresentada e o objeto que será
devolvido pelo comando se a opção for selecionada.

Ö No nível 1 devemos colocar um número inteiro que representa a opção


assinalada por defaut, se colocarmos zero a caixa só poderá ser visualizada e
o comando CHOOSE funcionara como o MSGBOX.

13
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

R Vantagens: É uma forma vistosa de permitir que o usuário escolha entre


uma série de possibilidades, apresentando uma flecha quando existem
mais de quatro possibilidades.
R Desvantagens: O comando CHOOSE não deixa de fazer a mesma função
dos menus do usuário(ver exemplo do comando CLLCD DISP FREEZE
HALT), Porém com mais código e menos flexibilidade, já que a caixa toma
a área da pilha.

Ex.:

^ «
“CALCULO DE AREAS”
{CIRCULO {“INERCIA” INER}{“RETANGULO” INF}{“ESFERA” 5}}
2
CHOOSE
»

^ «
“CALCULO DE AREAS”
{{“INERCIA” INER}{“RETANGULO” INF}}
1
CHOOSE
IF
THEN EVAL
END
»

No primeiro exemplo temos uma forma geral do comando, observe que a


lista de opções contém todas as combinações e que a opção de defaut é a
segunda(2 antes do CHOOSE)(fig. 22), no segundo a lista de opções faz
chamada por objeto, que se for um programa será executado se a opção for
selecionada(fig. 23).

Fig. 22 Fig. 23

14
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

4 SINTAXE
Na HP48 existem duas maneiras de se realizar uma operação matemática,
trabalhando diretamente com os valores na pilha ou montando-se o roteiro da
operação no modo algébrico e evaluando(pressionando a tecla ) em
seguida.
Ex.:
4+2
Para fazermos a operação , podemos realiza-la diretamente na pilha ou
3
acionando o aplicativo Equation Writer( + ), onde teríamos o
seguinte resultado:

Aplicativo Equation Writer Expressão algébrica resultante(pressione a


tecla EVAL )

Essas sintaxes são denominadas sintaxe de pilha(stack syntax) e sintaxe


algébrica(algebraic syntax), na sintaxe de pilha as operações são realizadas com
os elementos diretamente na pilha, em quanto que na sintaxe algébrica as
operações são encadeadas em um bloco que será evaluado posteriormente. Nos
programas essas sintaxes são empregadas da mesma maneira, tendo o
programador de optar por equacionar o problema(sintaxe algébrica) ou fazer
uma combinação de comandos que serão executados obedecendo uma
seqüência(sintaxe de pilha), na prática a sintaxe algébrica é pouco utilizada, pois
a complexidade da maioria dos problemas dificulta o programador a equacionar a
solução, sendo aplicada a problemas em que a equação de solução pode ser
montada com certa facilidade, na maioria dos casos a sintaxe de pilha é a
solução mais adequada ou a única solução para o problema, já que permite uma
maior flexibilidade na manipulação das variáveis.
O curso empregara somente sintaxe de pilha na solução dos problemas,
devendo o usuário se familiarizar com os comandos de manipulação de dados na
pilha, veja um exemplo do emprego dessas sintaxes.

Ex.: Digamos que usuário queira calcular o momento máximo de uma barra
biapoiada com uma carga constante distribuída ao longo de seu vão, teremos:

Sendo:
q=2,8tf/m
L=5,5m

15
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

Podemos entrar com os valores diretamente na pilha seguindo a equação:


Mmáx=q.L2 , ou então através dos programas(com L no nível 2 e q no nível 1):
8
ƒ « SWAP 2 ^ * 8 / » (sintaxe de pilha)
ƒ « → L q ‘q*L^2/8’ » (sintaxe algébrica)
Observe que no programa que usa sintaxe de pilha a equação não fica
aparente, sendo codificada em comandos, já no que usa sintaxe algébrica a
equação é facilmente identificada.

5 VARIÁVEIS
Como no PC os programas da HP48 trabalham com variáveis, no PC em
linguagens como C++ temos duas classes de variáveis(tipo inteiro e tipo
flutuante), que são subdivididas de acordo com sua precisão(char, short, int,
long, float, etc.). Um programa na HP48 pode trabalhar com três tipos de
variáveis que podem armazenar qualquer tipo de objeto, são elas: Variáveis
globais, variáveis locais e locais compiladas.

5.1 Variáveis globais


Variáveis globais são aquelas criadas com o comando , esse tipo de
variável consome memória do usuário, ficando armazenada no menu VAR, nos
programas as variáveis globais prejudicam seu desempenho tornando-os lentos
em relação as estruturas que utilizam os outros tipos de variáveis e após o
programa ter sido executado todas as variáveis estarão gravadas havendo a
necessidade do usuário apaga-las ou criar uma subrotina com essa finalidade,
esse tipo de variável devido as suas características quase não é utilizada, sendo
conveniente nos caso em que o usuário queira armazenar os resultados gerados
por um programa.

Escopo:
Às variáveis globais não necessitam de nenhum tipo de estrutura para
serem declaradas, o processo é feito diretamente a partir dos dados na pilha com
o comando STO, sendo que o seu conteúdo pode ser alterado infinitas vezes no
desenvolvimento do programa através de sua regravação, para ter acesso ao seu
conteúdo o usuário deverá colocar nas linhas de comando do programa o nome
da variável global sem ( ‘ ’ ), de acordo com o item 2, as variáveis globais já que
estão gravadas podem ser usadas por subrotinas.

16
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

Ex.:
«
A //Coloca o nome da variável A na pilha
STO //Grava a variável A com valor do nível 2 da pilha
B //Coloca o nome da variável B na pilha
STO //Grava a variável B com valor do nível 2 da pilha
‘A+B/2’ //Coloca a expressão algébrica a ser resolvida na pilha
EVAL //Evalua a expressão algébrica
M //Coloca o nome da variável M(média) na pilha
STO //Grava a variável M com o valor gerado pela expressão algébrica, no nível um
M //Coloca na pilha o valor armazena do na variável M
»
O programa retira dois valores da pilha, A e B dos níveis um e dois
respectivamente, calculando a média desses valores, observe que depois do
programa ser executado as variáveis ficarão gravadas, inclusive o resultado M.

5.2 Variáveis locais


Variáveis locais são variáveis que são alocadas temporariamente na
memória durante a execução do programa, só existem em quanto o programa
estiver sendo executado, não havendo a necessidade de serem apagadas
posteriormente, estruturas com esse tipo de variável são mais rápidas do que as
que utilizam variáveis globais e assim como essas seu conteúdo pode ser
alterado no desenvolvimento do programa através dos comandos de atualização
de variáveis(ver item 9.2) ou o comando STO, a desvantagem desse tipo de
variável é que elas não podem ser usadas fora do bloco local e não permitem a
criação de subrotinas que utilizem as variáveis mesmo estando dentro do bloco
local, essas limitações fazem com que esse tipo de variável seja usado em
programas simples onde a solução do problema é facilmente alcançada.

Escopo:
As variáveis locais são declaradas somente uma vez para cada bloco local,
podem ser declaradas outras variáveis locais com nomes diferentes dentro do
bloco local as quais poderão ter seu conteúdo acessado dentro de outro bloco
local que estará dentro do principal, essa operação pode ser feita sempre que
houver necessidade, sendo que todas devem obedecer a seguinte estrutura:

« → Var1 Var2 ... Varn « Bloco Local » Fim do Bloco »

Onde:

Var1: Variáveis a serem declaradas, a ordem de retirada dos elementos da pilha


e do nível mais alto até o nível um(Var1 = níveln e Varn = nível1).

Bloco Local: Área onde o programa tem acesso ao conteúdo das variáveis locais.

Fim do Bloco: Continuação do programa(sem acesso ao conteúdo das variáveis


locais).

→( + ): Caracter que indica o início da estrutura.

17
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

Ex.:

« → A B //Retira da pilha dois valores A B(níveis 1 e 2 respectivamente)


« A B + 2 / → M //Calcula a média e em seguida recolhe a mesma em M
« A M − B M − + »//Faz a somatória das diferenças entre A, B e M(sempre zero)
» //Fim do bloco local principal(primeiro)
»

Obs.: Note que o segundo bloco(→ M «...), tem acesso as variáveis definidas no
primeiro(principal), estruturas como essa podem ser repetidas varias vezes,
sempre obedecendo ao escopo da variável.

5.3 Variáveis locais compiladas


Variáveis locais compiladas assim como as variáveis locais são alocadas
temporariamente na memória, só existindo enquanto o programa estiver sendo
executado, as duas possuem as mesmas características sendo que as variáveis
locais compiladas possuem a vantagem de permitir o uso de subrotinas, que
terão acesso as variáveis definidas no bloco local, esse fato faz com que as
variáveis locais compiladas sejam mais completas e versáteis que as demais já
que os programas em sua maioria requerem o uso de subrotinas para se
tornarem mais rápidos e de fácil edição.
A estrutura de variáveis locais compiladas é a mais usada entre os
programadores em UserRPL por ser mais flexível e menos limitada, e será o tipo
de variável adotada no curso.

Escopo:
Como as variáveis locais as variáveis locais compiladas são declaradas
somente uma vez para cada bloco local, podendo ser declaradas outras variáveis
locais com nomes diferentes dentro do bloco local as quais poderão ter seu
conteúdo acessado dentro de outro bloco local que estará dentro do principal,
essa operação pode ser feita sempre que houver necessidade, sendo que todas
devem obedecer a seguinte estrutura:

« → ←Var1 ←Var2 ... ←Varn « ←Var1 .... Bloco Local » Fim do Bloco »

Note que as variáveis são chamadas dentro do bloco local e subrotinas


precedidas do caracter ←, que atrapalha muito a edição do programa, sendo
portando uma desvantagem.

Onde:

Var1: Variáveis a serem declaradas, a ordem de retirada dos elementos da pilha


e do nível mais alto até o nível um(Var1 = níveln e Varn = nível1).

Bloco Local: Área onde o programa tem acesso ao conteúdo das variáveis locais
compiladas.

Fim do Bloco: Continuação do programa(sem acesso ao conteúdo das variáveis


locais compiladas).

18
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

→( + ): Caracter que indica o início da estrutura.

←( + + ): Caracter que precede a variável local compilada.

Ex.:

MAI(subrotina)

« ←A ←B ←C MAX MAX →STR “Maior:” SWAP + 800 ,1 MSGBOX »


//Subrotina que calcula o maior entre as variáveis

PRI(principal)

« → ←A ←B ←C
«←A ←B ←C + + 3 / →STR “Media:” SWAP + 800 ,1 MSGBOX MAI»
»

Note que a subrotina MAI deve ser colocada dentro bloco local sem ‘ ’, veja que
ela tem acesso as variáveis definidas no bloco local.

6 COMANDOS DE TESTE
Um teste é uma seqüência de comandos que devolvem um resultado
verdadeiro(1) ou falso(0), a HP48 não trabalha com expressões Boleanas(True e
False), esses comandos podem ser escritos em sintaxe de pilha, ou em uma
expressão algébrica( ‘Valor1 Comando de teste Valor2’ ).
Os comandos utilizados em teste podem ser classificados em:

R Funções de comparação.
R Funções lógicas.
R Comandos de teste das flags.

19
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

6.1 Funções de comparação


São funções que comparam dois objetos posicionados nos níveis dois e um
respectivamente, as funções de comparação da HP48 estão em +
e são as seguintes:

Comando Teste
== Igualdade
≠ Desigualdade
< Menor que
> Maior que
≤ Menor ou igual a
≥ Maior ou igual a
Similar a = = só que mais
SAME rápido, porém não permite
a comparação de objetos
de tipos diferentes.

Obs.: Se os objetos a serem testados forem nomes de variáveis globais e


estiverem na forma de expressão algébrica, o resultado será uma outra
expressão algébrica que deverá ser evaluada( ), para que se tenha o
resultado, caso os objetos a serem comparados sejam uma expressão
algébrica e um número real ou outra expressão algébrica, teremos o mesmo
resultado do caso anterior, devendo proceder da mesma forma para obter o
resultado.

6.2 Funções lógicas


Como já foi dito a HP48 não trabalha com expressões Boleanas, as funções
lógicas fazem testes a partir dos resultados de dois testes anteriores, que
deverão ser dois números inteiros posicionados nos níveis dois e um da pilha,
existem quatro funções lógicas na HP48 e estão localizadas no mesmo diretório
onde se encontram as funções de comparação, são elas: NOT, AND, OR, XOR,
veja os resultados gerados por essas funções na tabela abaixo.

NOT AND OR XOR


Nível 1 Saída Nível 2 Nível 1 Saída Nível 2 Nível 1 Saída Nível 2 Nível 1 Saída
V F V V V V V V V V F
F V V F F V F V V F V
F F F F F F F F F
F V F F V V F V V

Obs.: Verdadeiro eqüivale a 1(um), e Falso 0(zero).

20
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

7 ESTRUTURAS DE PROGRAMAÇÃO

7.1 Estruturas condicionais


Estruturas condicionais são estruturas que fazem com que o programa
tome decisões a partir do resultado de um teste, a linguagem UserRPL como a
maioria das linguagens possui basicamente duas estruturas condicionais: IF e
CASE, essas estruturas estão em + .

7.1.1 IF ... THEN ... END


Essa estrutura realiza um teste, e se este for verdadeiro um bloco de
comandos é executado, veja a sintaxe.

« IF Teste THEN Bloco de comandos END »

Ex.:

« → X
« IF X 0 >
THEN X →STR “ e maiorque Zero!!!” + MSGBOX
END »
»
O programa acima toma um número do nível um da pilha e verifica se o
mesmo é maior que zero.

7.1.2 IF ... THEN ... ELSE ... END


Essa estrutura realiza um teste, caso este seja verdadeiro o programa
executa um bloco de comandos(THEN), se não outro bloco de comandos é
executado(ELSE), veja a sintaxe.

« IF Teste
THEN Bloco de comandos 1
ELSE Bloco de comandos 2
END
»

Ex.:

« → X
« IF X 0 >
THEN “ e maiorque Zero!!!”
ELSE “ e negativo!!!”
END X »
→STR SWAP + MSGBOX
»

O programa acima verifica se um número colocado no nível um da pilha é


maior ou menor que zero.

21
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

7.1.3 IFT
Essa estrutura é a forma compacta e mais rápida do IF ... THEN ... END,
acompanhe a sintaxe.

« Teste OBJETO IFT »

Obs.: Se OBJETO for um bloco de comandos, deve ser colocado em uma lista.

Ex.:

« → X
« X 0 > {X →STR “ e maiorque Zero!!!” + MSGBOX} IFT »
»

O programa acima toma um número do nível um da pilha e verifica se o


mesmo é maior que zero.

7.1.4 IFTE
Forma compacta da estrutura IF ... THEN ... ELSE ... END, segue as
mesmas regras do IFT quanto ao OBJETO, acompanhe a sintaxe.

« Teste OBJETO_V OBJETO_F IFTE »

Ex.:

« → X
« X 0 >
{X →STR “ e maiorque Zero!!!” + MSGBOX}
{X →STR “ e negativo!!!” + MSGBOX} IFTE »
»

ou

« → X
« X 0 >
“ e maiorque Zero!!!”
“ e negativo!!!” IFTE X »
→STR SWAP + MSGBOX
»

Os programas acima verificam se um número colocado no nível um da


pilha é maior ou menor que zero.

22
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

7.1.5 CASE ... END


A estrutura CASE...END permite executar uma série de casos (testes). O
primeiro teste que tem um resultado verdadeiro causa a execução da
correspondente cláusula verdadeira, finalizando a estrutura CASE...END.
Opcionalmente, pode-se incluir após o último teste uma cláusula de default que
será executada se todos os testes forem falsos.
A estrutura CASE...END tem a seguinte sintaxe:

« CASE
Teste_1 THEN BLOCOS DE COMANDOS_1 END
Teste_2 THEN BLOCOS DE COMANDOS_2 END
Teste_3 THEN BLOCOS DE COMANDOS_3 END
- - - - - - - - - - - - - - - - - - - -
Teste_n THEN BLOCOS DE COMANDOS_n END
BLOCOS DE COMANDOS_DEFALT
END
»

Ex.:

« → X Y
« CASE
X Y > THEN X →STR “ e o maior” + MSGBOX END
X Y < THEN Y →STR “ e o maior” + MSGBOX END
“Numeros iguais” MSGBOX
END
»
»

O programa acima retira dois números da pilha e verifica quem é o maior


ou se os dois são iguais.

7.2 Estruturas de repetição


Estruturas de repetição são estruturas utilizadas para que uma parte do
programa seja executada um certo número de vezes, que pode ser pré-
determinado ou depender da verificação de uma condição específica. As
estruturas que permitem a pré-determinação do número de repetições são
chamadas laços definidos ou laços contados(definite loop), e as que o número de
repetições depende da verificação de uma condição são chamadas de laços
indeterminados(indefinite loop), as estruturas de repetição estão em +

7.2.1 ESTRUTURAS DEFINIDAS


Como já foi dito estruturas definidas são aquelas que o número de
repetições do laço é predeterminado, existem dois tipos de estruturas definidas,
as que o incremento é fixo e unitário(NEXT), e as que o incremento é
definido(STEP).

23
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

7.2.1.1 START ... NEXT


Essa estrutura executa uma parte do programa um número de vezes que é
pré-determinado através do início e fim que são parâmetros exigidos, veja a
sintaxe.

« INÍCIO FIM START comandos NEXT »

Obs.: O laço é incrementado de uma unidade, então INÍCIO < FIM.


Ex.:

« 1 10 START “PET-Civil” NEXT »

O programa acima coloca na pilha 10 string’s PET-Civil.

7.2.1.2 START ... STEP


Estrutura semelhante ao START ... NEXT, mas aqui, o programador é
quem informa o valor do incremento, veja a sintaxe.

« INÍCIO FIM START comandos Contador STEP »

Obs.: O incremento pode ser positivo ou negativo, se positivo executa


novamente comandos quando o contador é menor ou igual ao fim. Se o
incremento é negativo, executa o laço enquanto o contador é maior ou igual ao
fim.

Ex.:

« 1 10 START “PET-Civil” 2 STEP »

O programa acima coloca na pilha 5 string’s PET-Civil, que serão


executadas para o contador 1, 3, 5, 7 e 9.

7.2.1.3 FOR ... NEXT


Estrutura que corresponde a uma variação do START ... NEXT, a diferença
aqui é que temos acesso ao valor do contador, acompanhe a sintaxe.

« INÍCIO FIM FOR Contador comandos NEXT »

Ex.:

« → N
« N DUP 4 +
FOR B
“PET-Civil_” B + CLLCD 3 DISP ,5 WAIT
NEXT
»
»

O programa acima toma um valor da pilha(n), e o exibe junto a string


“PET-Civil_” n + 4 vezes.

24
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

Ex.:

«
1 3
FOR B
1 25
FOR A
1700 ,03 BEEP 2200 ,03 BEEP
NEXT
2,5 WAIT
NEXT
»

Acima temos um programa que combina dois laços FOR .. NEXT.

7.2.1.4 FOR ... STEP


A estrutura FOR...STEP funciona exatamente da mesma forma que
FOR...NEXT, exceto que permite especificar um incremento diferente de 1 ao
contador, sua sintaxe é:

« INÍCIO FIM FOR Contador comandos INCREMENTO NEXT »

Ex.:

« → N
« 0 1 10
FOR B B + N STEP
»
»

O programa acima retira um número do nível um da pilha(contador) e faz


o somatório de 1 + n + (n+n) + (n+n+n) ...... com o limite de 10 para o
contador.

7.2.2 ESTRUTURAS INDEFINIDAS


Estruturas indefinidas são aquelas que o número de repetições do laço
depende da verificação de uma condição, em UserRPL existem duas estruturas
indefinidas, que se diferenciam na posição e valor do teste de verificação.

7.2.2.1 DO .. UNTIL .. END


Essa estrutura executa repetidamente um laço enquanto a cláusula de
teste retornar um valor falso, como se executa primeiramente a cláusula do laço
e depois a cláusula de teste, o laço é executado pelo menos uma vez, sua
sintaxe é a seguinte:

« DO comandos UNTIL TESTE END »

25
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

Ex.:

« DUP 1 → X S C
« DO ‘C’ INCR X * ‘S’ STO+
UNTIL S 100 >
END S C
»
»
O Programa acima retira um número(x) da pilha e calcula x+2x+3x+ ..
+nx, até que o somatório exceda 100, devolvendo a somatória e o número de
iterações.

7.2.2.2 WHILE .. REPEAT .. END


Essa estrutura avalia repetidamente um teste e executa a cláusula do laço
se o teste é verdadeiro. Como a cláusula do teste ocorre antes da cláusula do
laço, nunca se executa um laço sem antes verificar se a cláusula do teste é
verdadeira. Sua sintaxe é a seguinte:

« WHILE TESTE REPEAT comandos END »

Ex.:
« DUP 1 → X S C
« WHILE S 100 >
REPEAT ‘C’ INCR X * ‘S’ STO+
END S C
»
»

O programa acima eqüivale ao exemplo da estrutura DO .. UNTIL .. END.

Ex.:
« WHILE “# *Gutemberg* ##Tel.:250-5567# CLLCD MSGBOX OFF 1”
REPEAT
END
»

O programa acima funciona como um BOOT sem senha, protegendo a


calculadora dos chatos e mau intencionados, que não sabem programar em
UserRPL, para sair do laço só cancelando o programa.

7.3 Estruturas de erro


Estruturas de erro são estruturas utilizadas para o tratamento de erros
gerados durante a execução do programa, essas estruturas possibilitam ao
programador corrigir os possíveis erros que poderão surgir, evitando que o
programa seja interrompido, essas estruturas são condicionais, e semelhantes ao
IF .. THEN .. END e ao IF .. THEN .. ELSE .. END.

26
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

7.3.1 IFERR .. THEN .. END


Similar ao IF .. THEN .. END, só que a condição de teste é um erro gerado
dentro do bloco de comandos principal(comandos 1), que se ocorrer o bloco de
comandos de erro(comandos 2) será executado, conforme a sintaxe.

« IFERR COMANDOS 1 THEN comandos 2 END »

Ex.:
« IFERR +
THEN “ERRO: Falta de argumentos” DOERR
END
»

O programa acima tenta somar dois elementos da pilha, caso a pilha


esteja vazia ou só com um elemento ou ainda com elementos incompatíveis para
a operação, surgira um erro que ira acionar o comando de tratamento de
Exceções DOERR que exibira a mensagem da strig e em seguida finalizara o
programa.

7.3.2 IFERR .. THEN .. ELSE .. END


Semelhante ao IFERR .. THEN .. END, só que agora temos duas
alternativas para tratar a condição de erro, caso acorra o bloco de comandos de
erro(comandos 2) será executado, e se não o bloco de comandos
alternativos(comandos 3) será acionado, conforme a sintaxe.

« IFERR COMANDOS 1 THEN comandos 2 ELSE COMANDOS 3 END »

Ex.:
« IFERR +
THEN “ERRO: Falta de argumentos” DOERR
ELSE S →TAG →STR MSGBOX
END
»

No programa do exemplo acima temos uma variação do exemplo do item


anterior, aqui se um erro acontecer, será exibida uma mensagem personalizada,
caso contrario a soma será exibida em uma caixa.

7.4 Tratamento de exceções


A HP48 possui comandos específicos para o tratamento de erros,
possibilitando ao programador antecipar e tratar as possíveis condições de erro,
evitando que a execução do programa seja interrompida.

27
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

7.4.1 DOERR
O comando DOERR é utilizado para causar erros do usuário e internos,
parra causar erros do usuário é necessário uma string antes do comando, para
erros internos deve-se colocar o número(inteiro binário ou real) do erro.

Ex.:

« “ERRO: Falta de argumentos” DOERR »

No programa acima temos um exemplo simples do comando.

« IFERR +
THEN “ERRO: Falta de argumentos” DOERR CLEAR
ELSE S →TAG →STR MSGBOX
END
»
No programa acima podemos ver que o comando DOERR quando utilizado
em conjunto com o comando IFERR encerra a execução do restante do
programa(o comando CLEAR não é executado).

7.4.2 ERRN
O comando ERRN retorna o número do ultimo erro na forma de inteiro
binário, retornando #0 se o número do erro foi apagado com o comando ERR0.

Ex.: Execute ume exemplo do item anterior e em seguida acione ERRN.

7.4.3 ERRM
Comando similar ao anterior só que agora temos o retorno da mensagem
do ultimo erro em uma string, que estará vazia se o número do erro foi apagado
por ERR0.

Ex.: Execute ume exemplo do comando DOERR e em seguida acione ERRM.

7.4.4 ERR0
Esse comando apaga o número e mensagem do ultimo erro.

8 SAIDA DE DADOS
A linguagem UserRPL permite ao programador personalizar a saída de
dados de forma que a mesma seja de fácil compressão por parte do usuário, de
forma a não existir duvidas quanto aos resultados como unidades e rótulo, a
linguagem possui comandos específicos, que podem ser combinados de acordo
com a necessidade e criatividade do programador, os comandos de entrada de
dados também podem ser usados para saída, bastando descartar os valores
recebidos, os comandos de saída de dados estão em + + .

28
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

8.1 DISP
O comando DISP quando executado mostra rapidamente(menos de um
segundo), em uma determinada linha da tela um objeto do tipo string, o
comando é encerrado automaticamente sem que o usuário precise acionar
alguma tecla, e não deixa nenhum dado na pilha, veja a sintaxe.

« “STRING” N DISP »

Onde:

^ String: é um objeto do tipo string, que pode ter mais de uma linha com o
máximo de 22 caracteres, após esse limite o programador deverá acionar
outra linha + , até o limite de 7, o comando DISP não
possui paginação portanto as que excederem esse
limite não serão exibidas.

^ N: Representa o número da linha onde será exibida a string, portando


podendo variar de 1 a 7, se for fornecido um número menor que 1, o
mesmo será assumido e se for maior que 7 esse será assumido.

Ex.:

« “PET-Civil → UFPa” 4 DISP »

O programa acima é um exemplo simples do comando DISP, a mensagem


será exibida rapidamente no meio do LCD.

« “Seg Ter Qua Qui Sex


----------------------
Pt1 Hid Cus Hid Aco
T.U Fer T.U Pla Aco
A.M C.A - C.A A.M
----------------------
By Guto
CLLCD 1 DISP 3 FREEZE
»

O programa acima é uma estrutura bastante utilizada, é uma combinação


dos comandos CLLCD DISP FREEZE, sendo que CLLCD limpa a tela, FREEZE
congela o LCD durante a execução do comando, eliminando os inconvenientes do
comando que são exibir a mensagem em meio aos níveis da pilha e em um
tempo muito curto.

29
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

8.2 CLLCD
O comando CLLCD limpa o display LCD, sendo muito utilizado como
precedente de algum outro comando de saída dados, esse comando não
necessita de nenhum argumento podendo ser executado diretamente da pilha,
não deixando nenhum dado na mesma, é cancelado assim que o usuário aciona
qualquer tecla.

Ex.:

« “PET-Civil → UFPa” CLLCD 4 DISP »

8.3 FREEZE
Esse comando é utilizado como o próprio nome já diz para congelar
determinadas áreas do display, cada área é representada por um número
padrão, o programador pode combinar conforme a necessidade as áreas a serem
congeladas, bastando para isso informar o somatório dos números
correspondentes as áreas, o comando FREEZE é encerrado assim que o usuário
pressionar qualquer uma das teclas não deixando nenhum dado na pilha, veja a
sintaxe.

« ... N FREEZE ... »

Onde:

^ N: Representa o número da área a ser congelada, conforme a tabela


abaixo.

N Área
1 Status
2 Pilha
4 Menu
Ex.:

« “PET-Civil → UFPa” CLLCD 4 DISP 7 FREEZE »

No exemplo acima podemos ver que a área a ser congelada é uma


combinação resultando em toda área do display(7= 1+2+4).

30
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

8.4 BEEP
Esse comando quando acionado emite um beep com uma freqüência e
duração predeterminas, sendo muito utilizado para alertar o usuário na saída de
dados, mas com muita criatividade o programador pode compor midis obtendo
um resultado muito interessante, bastando para isso conhecer a freqüência e
duração das notas, e é claro entender um pouco de musica, veja a sintaxe.

« ... F T BEEP ... »

Onde:

^ F: É a freqüência do som emitido, em Hertz.


^ T: É a duração do som emitido, em segundos.

Ex.:
« “PET-Civil → UFPa” CLLCD 4 DISP 800 .1 BEEP 7 FREEZE »

No programa acima temos um exemplo simples do comando BEEP.


« 1 3
FOR B
1 25
FOR A
1700 .03 BEEP 2200 .03 BEEP
NEXT
2.5 WAIT
NEXT
»
No exemplo acima temos um programa que simula os toques de um
telefone celular, observe que são dois laços aninhados, onde o laço interno é
repetido 25 vezes(toques), e o externo 3 vezes espaçado de 2.5 segundos.

Obs.: Como a maioria dos usuários desabilitam o BEEP, para o programador


utilizar esse comando para incrementar sua saída de dados será necessário
testar a flag para verificar se ela esta habilitada ou não e em caso de estar
desabilitada, habilita-la, a flag responsável por isso é a de número –56(menos
cinqüenta e seis), veja como o programa do exemplo anterior fica com esta
opção.

« RCLF F STO
–56 FS?C DROP
1 3
FOR B
1 25
FOR A
1700 .03 BEEP 2200 .03 BEEP
NEXT
2.5 WAIT
NEXT
F STOF ‘F’ PURGE
»

31
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

8.5 WAIT
O comando WAIT quando acionado pausa a execução do programa por um
período de tempo que é predeterminado pelo programador, conforme a sintaxe.

« ... T WAIT ... »

Onde:

^ T: É a duração da pausa, em segundos.

Ex.:

« “PET-Civil → UFPa” CLLCD 4 DISP 800 .1 BEEP 1 WAIT »

No programa acima temos um exemplo simples do comando WAIT.

« →STR DUP SIZE 1 SWAP


FOR
N DUP 1 N SUB CLLCD 1 DISP .5 WAIT
NEXT
7 FREEZE CLEAR
»

No programa acima temos um exemplo de uma combinação de comandos


que resulta em um efeito muito interessante.

Obs.: Se colocarmos 0(zero) para o tempo de pausa o programa ficara


congelado até que o usuário pressione qualquer tecla, se a tecla pressionada for
&, será colocado no nível um da pilha o número 0(zero), indicando o
cancelamento do programa, para qualquer outra tecla pressionada será colocado
o seu número correspondente no teclado.

Ex.:

« “PET-Civil → UFPa” CLLCD 4 DISP 800 .1 BEEP 0 WAIT »

8.6 MSGBOX
Esse comando quando executado exibe uma caixa em alto relevo contendo
uma mensagem, essa mensagem é um objeto do tipo string com o máximo de 5
linhas contendo o máximo de 15 caracteres, o MSGBOX é o mais utilizado dentre
os comandos de saída de dados, é um comando simples que pode ser executado
diretamente da pilha, para finalizar o comando o usuário deverá acionar a tecla
OK que fica no menu ou acionar , o comando não deixa nenhum dado
quando encerrado, veja a sintaxe.

« ... “STRING” MSGBOX ... »

32
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

Onde:

^ String: É um objeto do tipo string com 5 linhas no máximo, contendo 15


caracteres cada.

Ex.:

« “PET-Civil → UFPa” MSGBOX »

O programa acima é um exemplo simples do comando MSGBOX.

9 DEBUGER
A linguagem UserRPL como as linguagens de programação no PC possui
ferramentas para a depuração dos programas, são ferramentas simples que o
programador é obrigado a aprender utilizar, já que é muito difícil acertar um
programa de primeira, principalmente os mais complexos que incluem varias
subrotinas, essas ferramentas estão em:
+ + .

R DBUG: O comando DBUG carrega na memória o programa(não é o nome)


colocado no nível um da pilha, para que o mesmo seja depurado.

R SST: Avança o programa armazenado na memória passo a passo,


considerando subrotinas como um passo único.

R SST↓↓: Avança o programa armazenado na memória passo a passo,


executando rotinas também passo a passo.

R NEXT: Mostra o próximo passo(ou até os dois próximos passos), sem


executá-los.

R HALT: Esse comando quando acionado suspende momentaneamente a


depuração do programa, para retornar basta acionar qualquer outro
comando de depuração.

33
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

Obs.: O comando HALT pode ser utilizado normalmente em um programa, tendo


o mesmo efeito que na depuração, no entanto para dar continuidade a execução
é necessário acionar o comando CONT( + ) , essa combinação
HALT CONT é muito utilizada em estruturas de entrada e
saída de dados, veja um belo exemplo dessa combinação no exemplo do item
3.2.

R KILL: Cancela o processo de depuração, descarregando o programa da


memória(o anuncio HALT desaparece da área de status), esse comando
pode ser acionado a qualquer momento, sendo que os dados processados
até o momento de seu acionamento serão deixados na pilha.

10 FLAGS
No PC quando queremos configurar como o mesmo ira
funcionar(configurar IRQ’s, habilitar drivers, ...), utilizamos o SETUP que esta na
BIOS do PC, que é responsável por essas funções, na HP48 não ha SETUP o que
existe são as FLAGS são 64 indicadores de sistema (numerados desde -64 a -1)
e 64 indicadores de usuário (numerados desde 1 a 64), os cinco primeiros flags
do usuário ficam sinalizados na área de status(ver figura abaixo), e muitos
usuários quando observam isso acham que é algum BUG, e muita das vezes
resetam a calculadora perdendo todos os dados armazenados. Os flags são
usados para controlar como os programas e a HP48 operam. Os flags podem ser
manipulados fazendo-se uso de comandos específicos que serão vistos a seguir.

Flags do usuário ativadas

Manipulações com as flags podem ser feitas utilizando-se os seguintes


operadores, que estão em:

R SF: (set flag), liga a flag.

R CF: (clear flag), desliga a flag.

R FS?: (flag set?), testa o sinal da flag, retornado 1 se a mesma estiver


ligada e 0 caso contrario.

34
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

R FC?: (flag clear?), como o comando anterior testa o sinal da flag, só que
retorna 1 se a flag estiver desligada e 0 caso contrario.

R FS?C: (flag set? clear), testa o sinal da flag, retorna 1 se a mesma estiver
ligada e em seguida desliga a flag.

R FC?C: (flag clear? clear), testa o sinal da flag, retorna 0 se a mesma


estiver desligada e em seguida desliga a flag.

Obs.: Então quando uma flag do usuário(de 1 a 5) for aciona por algum
programa ou acidentalmente, ira aparecer o seu número na área de status,
indicando que a mesma esta acionada, para desabilitar a flag basta colocar o seu
número no nível um da pilha e acionar CF.

11 ANALISE TÉCNICA DE PROGRAMAÇÃO


O objetivo deste item é fornecer idéias para a construção de programas
corretos, inteligíveis e de fácil manutenção. Para isto o primeiro passo estudado
será a decomposição do problema e criação de um algoritmo. A partir destes
quesitos busca-se um método que forneça:

ƒ Programas corretos.
ƒ Programas bem estruturados.
ƒ Programas manuteníveis.
ƒ Controle do programa desde o projeto..

Para programas de grande porte seriam necessários ainda documentação,


comentários e controle da qualidade do programa. No entanto, os programas
desenvolvidos para a HP48 são de pequeno porte, médio porte ocasionalmente
para a HP48GX, portanto os itens acima são suficientes para a obtenção de um
bom programa, são utilizados procedimentos básicos de programação na
confecção de pequenos programas, tais como:

ƒ Visualização do problema.
ƒ Criação do algoritmo.
ƒ Criação do fluxograma.
ƒ Criação do programa.

Para programas maiores e mais complexos existem vários métodos de


programação, mas usaremos o método de modularização devido a sua alta
eficiência e ao fato de trabalharmos com programação estruturada1. O método
de modularização segue os seguintes passos:

1
Programação estruturada é aquela na qual são satisfeitas as acertivas pré-determinadas,
construindo o programa com um fluxo lógico que seja consistente dentro de cada trecho do
programa (módulos).

35
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

! Visualização do problema.
! Criação do algoritmo.
! Divisão do problema em módulos.
! Criação de um fluxograma modular.
! Implementação e teste de cada módulo.
! Implementação do programa principal.

A modularização está englobada no que chamamos de programação


estruturada, que é associada a vários conceitos:

! Programação sem o uso de “GO TO”.


! Uso exclusivo de concatenação(seqüência), seleção(“IF THEN ELSE”),
repetição(“WHILE DO”).
! Desenvolvimento de programas do tipo “TOP-DOWN” (refinamento
sucessivo).

A seguir você tem um programa completo, para análise dos parâmetros


acima, seria proveitoso digita-los e executa-los no modo DBUG(passo a passo).

Tubl: Programa para dimensionamento de tubulões circulares e em falsa elipse.


1112.5 Bytes checksum #55187d

rcm: Subrotina de rótulo de resultados em centímetros.


233.5 Bytes checksum #5238d

«
→ N
«
IF N 1 >
THEN
1 N START
SWAP '1_cm' →UNIT SWAP →TAG →STR DEPTH ROLLD
NEXT
1 N 1 - START
"!" SWAP + +
NEXT
800 ,1 BEEP MSGBOX
ELSE
SWAP '1_cm' →UNIT SWAP →TAG →STR 800 ,1 BEEP MSGBOX
END
»
»

36
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

«
RCLF F STO
-56 FS?C DROP

DO
IFERR
"Entre com:!Q(Tf), σs(Tf/m²)"
{{-1 1}V} INPUT OBJ→ DEPTH 2 - DROPN 0 DUP DUP
→ ←Q ←T ←B ←b ←d
« ,7 ←Q 4 * ←T 3,14 * / MAX 10 * 0 RND 10 / '←B' STO
IF ←B ,7 ==
THEN ←B 100 * "B=d" 1 RCM
ELSE
←B 100 * B 1 RCM "FALSA ELIPSE?" {{"NAO" 0} {"SIM" 1}} 1
CHOOSE
IF
THEN
IF
THEN
DO
"Entre com:!b(cm)"
{{-1 1}V} INPUT OBJ→ DEPTH 1 - DROPN 100 / '←b' STO
←b SQ 3,14 * 4 / ←Q ←T / SWAP - ←b / 10 * 0 RND
10 / ←b + '←B' STO 1 ←B ←b / 2,5 ≥
IF
THEN DROP "Nao passa no!arqueamento!!!" 800 ,1
BEEP MSGBOX 0
END
UNTIL
END
END
,7 ←Q 4 * 500 3,14 * / ←B 3 / MAX MAX 10 * 0 RND 10
/ '←d' STO ←B ←d - 30 COS * ,3 MAX 10 * 0 RND 10 / 100
* ←B 100 * SWAP B SWAP ←d 100 * SWAP d SWAP h 3 RCM
END
END
»
1
THEN CLEAR "FATAL ERROR:!Try Again!!!" 800 ,1 BEEP MSGBOX 0
END
UNTIL
END
F STOF 'F' PURGE
»

A seguir você tem o roteiro de cálculo realizado.

37
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

12 EMULADOR
Antigamente o usuário para escrever programas em UserRPL tinha gastar
horas com a calculadora na mão, pois conforme vai aumentando o tamanho do
arquivo a calculadora demora mais tempo para edita-lo na pilha e para
acompanhar passo a passo no DBUG, e isso desistimulava o programador a
desenvolver aplicações mais complexas, além de consumir muita pilha ainda se
tinha o incomodo de a calculadora travar e em alguns casos perder toda a
memória causando prejuízos. Hoje em dia esses problemas são coisa do
passado, modernamente o programador desenvolve suas aplicações no
computador e transfere para calculadora sem nenhum problema de
compatibilidade, a ferramenta que permite isso é o emulador EMU48 um
ambiente desenvolvido para simular uma HP48 no PC, para isso ele trabalha com
a própria ROM da calculadora que deve ser extraída com um programa auxiliar o
ROMDump que foi desenvolvido exclusivamente com essa finalidade, por isso o
emulador simula perfeitamente uma calculadora HP48, com todas as funções e
comandos, praticamente é uma calculadora dentro do computador, esse tópico
ira abordar detalhes como instalação, configuração, manuseio e transferência de
dados, com o emulador.

Janela principal do emulador.

38
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

12.1 Instalação
Como já foi dito o EMU48 precisa da ROM da HP48, que deve ser extraída
com o ROMDump, mas isso já foi feito e reunido em um só arquivo selfextactor,
juntamente com o programa ROMDump, o usuário deverá instalar o EMU48 e
logo após o ROMDump, em seguida deverá mover a ROM da calculadora que esta
com o nome de “Rom.48g” para o diretório em que foi instalado o emulador, com
isso o usuário já poderá usar o emulador, executando o arquivo EMU48.exe, seja
através de um atalho no Desktop ou no menu iniciar.

12.2 Utilização
As teclas de acesso do emulador são as mesmas no teclado alfabético as
teclas numéricas também são as mesmas do teclado numérico, assim como as
setas, sendo as teclas especiais acessadas em:

R : Shift + Sinal de maior.

R : Shift + Sinal de menor.

R : Acento Tiu.

R : Tecla Esc.

R : Barra invertida( \ ).

Os principais comandos estão dispostos na barra de ferramentas logo


abaixo dos menus, são eles:

Barra de Ferramentas(Emu48)

R : Salvar arquivos, o emu48 e capaz de salvar arquivos no padrão


hp48, no formato binário, para isso o usuário deve colocar o objeto a ser
salvo no nível um da pilha operacional e acionar esse comando,
informando o nome e o diretório em que o mesmo será colocado.

R : Utilizado para carregar arquivos, o emulador e capaz de abrir


arquivos hp48 no formato binário e ASCII, e ainda arquivos no formato de
texto(.txt).

R : Utilizado para selecionar o KML Script(cara do emulador).

39
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

R : Configurações do emulador.

R : Reseta a calculadora, utilizado em casos de travamento.

R : Comandos básicos do programa: Novo, abrir e salvar,


respectivamente.

12.3 Configuração
O Emu48 pode ser configurado para transferir e receber dados da HP48,
para isso o usuário deverá acionar a janela de configuração através do menu
File/Settings ou do ícone na barra de ferramentas, onde ira encontrar os
seguintes campos:

Janela de configuração do emulador

No RadioGroup Geral temos as seguintes opções:


R Authentic Calculator Speed: É aconselhável que essa opção fique
desabilitada, para que o emulador opere em uma freqüência maior que a
da calculadora(4Mhz), e realize as operações com maior velocidade.
R Automatically Save Files: Essa opção deve ser marcada para que o
emulador salve os arquivos automaticamente em casos de travamento.
R Automatically Save Files On Exit: Essa opção permite que o emulador
salve automaticamente os arquivos na saida.
R Always display KML Compilation Result: Com essa opção habilitada o
emulador ao ser acionado exibirá uma janela com o resultado da
compilação do KML Script, a maioria dos usuários desabilita essa opção
para não perder tempo fechando a janela.
40
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

Em Memory Cards temos:


R Port 1 is Plugged: Essa opção quando habilitada simula a existência de um
cartão de memória de 1Mb conectado na porta um, como se fosse uma GX
com cartão de memória.
R Port 1 is Writeable: Essa opção deverá estar marcada para que o cartão de
memória possa ser utilizado.

Em Serial Ports temos:


R Wire: Aqui o usuário deverá selecionar a porta com qual o emulador ira
transmitir dados quando acionada a transmissão via cabo.
R IR: Seleção da porta para transmissão de dados pelo emulador via
Infrared.

13 TRANFERÊNCIA DE DADOS
A HP48 é uma das poucas calculadoras cientificas do mundo que permite
ao usuário transferir dados, seja para uma outra calculadora(HP48), ou para um
PC, essa comunicação é feita através de dispositivos de
INFRARED(infravermelho), e WIRE(porta serial), respectivamente, este item e ira
abordar de forma clara e pratica esses assuntos.

13.1 Transferência HP-PC/PC-HP


A transferência de dados entre a calculadora e um PC é feita através de
um cabo próprio conectado na porta WIRE(HP) e Serial(PC), essa transferência
necessita de software(protocolo), existem vários softwares disponíveis na
Internet com essa função, aqui serão vistas 3(três) formas distintas de se
efetuar essa transferência, destacando suas principais vantagens.

13.1.1 Parâmetros
Para efetuarmos a transferência de dados via porta WIRE/Serial, é
necessário que o usuário configure os parâmetros de comunicação da
calculadora, em + , que são:

R PORT: Seleciona a porta de comunicação, WIRE(HP-PC) ou INFRARED(HP-


HP).

R TYPE: Seleciona o protocolo de comunicação, a HP dispõe de dois:


KERMIT(mais utilizado) e XMODEM(mais rápido na transmissão).

R FMT: Seleciona o formato dos dados, são dois os tipos de dados que a HP
trabalha: ASCII e Binary(mais utilizado).

R XLAT: Seleciona o tipo de tradução de caracteres usados no formato


ASCII.

41
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

R CHK: Seleciona o método de verificação de erros(checksum) usado na


transferência, são três as opções, sendo que três(3) dígitos é o padrão.

R BAUD: Seleciona a velocidade de transferência de dados, temos 4(quatro)


opções: 1200, 2400, 4800 ou 9600, sendo 9600 o padrão pois é a mais
alta e é suportada pelas portas COM1 e COM2.
R PARITY: Seleciona o tipo de método para gerar a paridade durante a
comunicação, nenhum(none) é o padrão.

R OVRW: Habilita ou não a regravação(overwrite) de variáveis já


existentes.

Abaixo podemos ver a figura do menu transfer e as configurações padrões


de transferencia.

Transfer em + Configurações padrão de transferência

13.1.2 KERMIT
Kermit é o programa mais popular dentre os programas utilizados na
transferência de dados HP-PC, na transferência ele utiliza o protocolo de mesmo
nome, rodando no ambiente MS-DOS o programa apresenta uma certa
instabilidade, sendo recomendado que no momento da transferência o MS-DOS
seja o único sistema operacional no PC.

R Vantagens: O Kermit apresenta certas vantagens próprias que de acordo


com as necessidades do usuário poderá ser o programa utilizado na
transferência HP-PC.
^ Permite que o usuário escolha o formato de transferência dos dados,
Binary ou ASCII.
^ Apresenta estabilidade quando o ambiente MS-DOS é o único sistema
operacional no PC.

42
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

R Desvantagens: O programa apresenta desvantagens que limitam sua


utilização.
^ Rodar a partir do ambiente MS-DOS.
^ Configuração trabalhosa em comparação com os outros programas de
transferência de dados.

Comandos Básicos:

ƒ INTRO: Ajuda.
ƒ SET: Comando de seleção geral: BAUD(velocidade da transmissão, 9600 é
padrão), PORT(porta de transmissão, COM1 ou COM2), PARITY(paridade), ....
Ex.: SET PORT COM2 (seleciona a porta COM2 para transmissão)
SET BAUD 9600 (seleciona a velocidade de 9600 para transmissão)
ƒ SHOW: Mostra as informações do parâmetro selecionado:
STATUS(informações gerais, porta, velocidade de transmissão, diretório
destino, paridade, ....
ƒ SERVER: Ativa o modo servidor, permitindo que o usuário envie dados para o
PC, e também que tenha acesso aos arquivos podendo inclusive puxa-los
para calculadora.
ƒ EXIT: Fecha a seção, se acionado dentro de um parâmetro como o PUSH,
retorna ao Prompt do Kemit, e se acionado diretamente do Prompt fecha o
programa.
ƒ PUSH: Seleciona o diretório de destino ou origem dos arquivos, basta que o
usuário entre no diretório para seleciona-lo, e após selecionado acionar EXIT
para retornar ao Prompt.
ƒ TEST: Testa a porta de transmissão, Ex.: TEST COM2 , testa a porta COM2.
ƒ SEND ou S: Envia o arquivo, Ex.: SEND ARQU , envia o arquivo de nome
ARQU.
ƒ RECEIVE ou R: Recebe o arquivo, Ex.: RECEIVE ARQU , recebe o arquivo de
nome ARQU.

Ex.:
O roteiro abaixo descreve passo a passo o envio e recebimento de
arquivos a partir da calculadora.

1 Acionar o Kermit, usuários que não possuem modem ou que possuem mas
instalado em uma porta que não seja a COM2 podem acionar o Kermit a
partir do Windows, por sua vez os usuários que possuem modem instalado
na porta COM2 terão que reiniciar o computador em modo MS-DOS para
poder acionar o Kermit.

2 Testar a porta(comando TEST), esse comando deve ser acionado pelos


usuários que acionaram o programa via Windows/MS-DOS, sendo opcional
para os que o acionaram diretamente a partir do Prompt do MS-DOS, a
não ser que a porta acionada apresente problemas.

43
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

3 Selecionar a porta(comando SET PORT), os usuários que acionaram o


programa via Windows/MS-DOS deverão selecionar a porta COM2, e os
que acionaram diretamente a partir do Prompt do MS-DOS a COM1.

4 Selecionar a velocidade de transmissão(comando SET BAUD), a velocidade


de 9600 Bits/Segundo é a padrão.

5 Selecionar o diretório destino ou origem do(s) arquivo(s)(comando PUSH),


esse comando quando acionado mostra o Prompt do MS-DOS, e o usuário
deverá entrar no diretório que será a origem ou destino do(s) arquivo(s) a
ser transferido, uma vez dentro do diretório acionar o comando EXIT para
retornar ao Prompt do Kermit.

6 Acionar o comando SERVER, deixando o PC como servidor durante a


transmissão.

7 Na calculadora acionar o Transfer em + .

8 Para transferir dados a partir da calculadora os parâmetro de transmissão


deverão estar configurados de acordo com o item 13.1.1 , o usuário
deverá apenas selecionar o(s) arquivo(s) e acionar o comando SEND, para
puxa-los do PC o usuário deverá selecionar os arquivos acionando a opção
Remote PC Files e para puxar KGET.

9 Após a transferência acionar CTRL + C para encerar o modo Server do


Kermit.

Abaixo temos algumas figuras resumindo os passos descritos acima.

44
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

45
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

13.1.3 EMU48
A transmissão de dados através do emulador é bem prática e eficiente,
mas apresenta certas limitações como veremos a seguir.

R Vantagens:

^ Configuração simples e amigável, sendo necessário apenas que o usuário


indique a porta.
^ Os comandos de transferência PC-HP, são os mesmos utilizados na
calculadora na transferência HP-PC.

R Desvantagens:

^ Formato final do arquivo será Binário, pois o emulador salva os arquivos


no PC nesse formato.
^ Usuários com um modem instalado na porta COM2, não poderão utiliza-lo,
a não ser que o computador seja reinicializado sem o mouse, para que
seja utilizada a porta COM1.

Ex.:
O roteiro abaixo descreve passo a passo o envio de arquivos a partir do
emulador, para efetuar a transferência a partir da calculadora basta inverter os
comandos, ou seja os comandos realizados no emulador passarão a ser
realizados na calculadora e vice-versa.

46
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

1 Acione o Transfer no emulador em + .

2 Acerte as configurações de acordo com o item 13.1.1.

3 Escolha o(s) arquivo(s) a ser transferido para a calculadora.

4 Ponha a calculadora em modo server acionando + .

5 Acione SEND no emulador.

As figuras abaixo resumem os comandos acima.

No emulador. Na HP.

13.1.4 HYPER TERMINAL


O Hyper Terminal do Windows pode ser configurado para a transferência
de dados HP-PC e PC-HP, sendo uma boa saída em ocasiões em que não se
dispõe de um software próprio para a transmissão.

R Vantagens:

^ Qualquer PC com o sistema operacional Windows possui, e caso não


possua o usuário pode instalar através do CD.
^ Fácil configuração.

R Desvantagens:

^ Apresenta certa instabilidade, principalmente para receber dados.

47
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

Configuração:

1 Acione o Hyper Terminal no menu Iniciar/Acessórios/Hyper Terminal/

2 Informe o nome e escolha um ícone para sua conexão.

3 Na janela que se abre selecione Direcionar para COM2 no campo Conectar


Utilizando.
4 Na janela de configuração da porta selecione:
Bits por segundo: 9600
Bits de dados: 8
Paridade: Nenhum
Bits de parada: 1
Controle de fluxo: Nenhum

Enviando:

1 Acione Enviar Arquivo no menu Transferir.

2 Selecione o arquivo a ser transferido em Procurar, e sete o protocolo


Kermit.
3 Coloque a calculadora em modo server acionando + .

4 Para transferir acione Enviar.

Recebendo:

1 Acione Receber Arquivo no menu Transferir.

2 Selecione o diretório de destino do arquivo a ser transferido em Procurar.

3 Na calculadora acione o Transfer em + , e configure os


parâmetros de acordo com o item 13.1.1.
4 Para transferir acione SEND.

48
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

14 LIBRARY
Bibliotecas podem ser instaladas diretamente na ROM da HP48, por esse
motivo os programas dessas bibliotecas são mais rápidos e seguros, além de
garantirem a integridade e autoria dos programas já que não podem ser
editados, os programas podem ser acessados diretamente de qualquer diretório
já que se tornam objetos XLIB, existem duas maneiras de se criar bibliotecas,
uma direto na calculadora através de outra biblioteca o Hackit, ou no PC através
do software UserLIB, é este ultimo caso que o curso ira abordar.

14.1 UserLIB
O UserLIB é um software exclusivo para a criação de bibliotecas, rodando
em ambiente MS-DOS foi criado pela própria Hewlett Packard, sua utilização é
meio complexa para a maioria dos usuários, mas o resultado obtido é
compensador, como veremos a seguir.
O programa em resumo compacta o(s) programa(s) e suas subrotinas
transformando o conjunto em uma biblioteca, mas é necessário que o usuário
informe os parâmetros para essa compactação, esses parâmetros são informados
através de arquivos próprios, esses arquivos são mostrados abaixo:

R $ROMID: Esse arquivo deverá conter um número real(entre 769 e 1792),


que será o endereço da biblioteca na ROM da calculadora. Ex.: 1520.
R $TITLE: Deverá conter uma string com o máximo de 22(vinte e dois)
caracteres, 4(cinco) são o recomendado, que será o nome da biblioteca.
Ex.: “UTIL”
R $CONFIG: Esse arquivo deverá conter um programa que efetuará a
gravação da biblioteca na ROM, através do comando ATTACH, que requer
o endereço da biblioteca, o mesmo número informado no arquivo $ROMID,
um exemplo simples desse programa pode ser « HOME 1520 ATTACH »,
para incrementar esse programa podemos adicionar alguns comandos
como no mostrado abaixo.

Ex.:

« HOME 769 ATTACH “UTILITIES 2.0” 4 CLLCD DISP .2 WAIT »

R $VISIBLE: Deverá conter uma lista com os nomes dos arquivos que serão
vistos pelo usuário.
R $HIDDEN: Esse arquivo deverá conter uma lista com os arquivos que não
serão vistos pelo usuário, ou seja o arquivos $CONFIG e todas as
subrotinas sem exceção.

49
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

Roteiro:

1 Coloque todos os arquivos que serão reunidos na library em um só


diretório.
2 Crie no diretório em que foram colocados os arquivos a serem reunidos as
variáveis de configuração de acordo com as especificações acima.
3 Transfira para o PC no formato binário o diretório que contém todos os
arquivos, coloque esse arquivo no diretório do PC que contém o UserLIB.
4 No Prompt execute a linha de comando: usrlib nome1 nome2.lib
Onde:
nome1: Nome com o qual foi salvo o arquivo transferido contendo todos os
arquivos da biblioteca.
nome2: Nome com o qual será criada a biblioteca.

Abaixo temos figuras ilustrando o processo acima.

50
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

14.2 Instalando
Para instalar uma biblioteca siga o roteiro.

R Transferir o arquivo .lib no formato binário para a calculadora.

R Selecione a porta 0(zero) para ROM ou 1(um) para cartão de memória,


colocando o número no nível um da pilha.
R Acione o comando N para gravar a library.

R Acione + para dar o reboot terminando o processo de


instalação.

Após o processo acima o usuário já poderá ter acesso aos arquivos da


library em: + .

14.3 Removendo
Para remover uma biblioteca siga o roteiro abaixo.

R Acione o comando LIBS em + , para verificar as libraries


instaladas, observe que são informados o título e número(ID) e a porta em
que a biblioteca está instalada.
R Coloque o número(ID) da biblioteca no nível um da pilha e acione o
comando DETACH no mesmo menu do comando anterior.
R Nesse mesmo menu entre na porta em que a biblioteca esta instalada, em
PORTS e 0(zero) para ROM ou 1(um) para cartão.
R Acione e o número da biblioteca, observe que será colocado um
objeto no nível um da pilha contendo o número da porta e biblioteca e
será ocasionado um erro.
R Acione o comando PURG em + .

R Para finalizar o processo de um reboot.

51
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

15 EDITORES DE TEXTO
A HP48 possui editores de texto para facilitar a criação de textos e
programas no PC, existem vários deles na Internet, no curso iremos adotar o
HP48Pad, um dos melhores que existem como veremos a seguir.

15.1 HP48Pad
O HP48Pad é um editor de textos prático e de fácil utilização, sua grande
vantagem é que ele salva o arquivo em formato ASCII, com os caracteres
especiais 100% compatíveis com os da calculadora, o usuário pode ainda limitar
a linha a 22 caracteres que são o número máximo de caracteres no display da
calculadora, veja os comandos básicos abaixo.

Comandos Básicos:

R : Abre um arquivo com o limite de 22 caracteres por linha.

R : Limita 22 caracteres por linha.

R : Exclui o texto marcado.

R : Marca todo o texto(CTRL+T no Word).

R : Insere data e hora(do sistema) no texto.

R : Procura palavras no texto.

R : Barra de caracteres
especiais.

Observe que existem os botões padrão: Novo, abrir, salvar, imprimir,


voltar, copiar, recortar e colar.

Obs.: Para rodar o HP48Pad necessita que a fonte True Type HP48 esteja
instalada no PC.

52
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

Tela de trabalho do HP48Pad

16 ABOUT
Em UserRPL é possível se criar About’s através de comandos gráficos,
personalizando assim as aplicações, podemos ainda criar figuras ilustrativas que
irão auxiliar o usuário a compreender melhor a entrada ou saída de dados, esses
pictures podem ser criados previamente e apenas serem exibidos durante a
execução, ou serem criados e exibidos em tempo de execução, a seguir são
mostrados dois exemplos.

Ex.:

Abot: About do programa Tubulão v1.0.


189.5 Bytes checksum #21015d

«
ERASE
PICT (-3;3.2) HP REPL
PICT (-3;.4) “Tubulao v1.0” 3 →GROB GOR
PICT (3.5;-2.5) “By Guto” 1 →GROB GOR
{#0d #0d} PVIEW
7 FREEZE
‘PPAR’ PURGE
»

53
Gutemberg Rolim
gutem@ufpa.br
Curso de Programação HP48G/GX PET-Civil

HP: GROB logotipo da HEWLETT PACKARD.


112.5 Bytes checksum #58229d

GROB 60 12 0000000000000000EBEF01D7158FEBF0FB8F115055808020F50F
1FD355878020F40E115055808020FCCE11D7ACBF8020FAAE100000000000FAA
E1F01E422E970FA6E119215152A80F12F1F441C88E980F39F11C7159F2A80E7
DF0144E4A82A70.

Abol: About do programa Lajes 2000 v1.0.


271.5 Bytes checksum #1633d

«
ERASE
(-6.5;3.2) (6.5;-3.1) BOX
(-6.4;3.1) (6.4;-3) BOX
PICT (-3;2.5) HP GOR
PICT (-4.4;.3) “LAJES 2000 v1.0” 2 →GROB GOR
PICT (3.5;-2.4) “By Guto” 1 →GROB GOR
{#0d #0d} PVIEW
7 FREEZE
‘PPAR’ PURGE
»

54
Gutemberg Rolim
gutem@ufpa.br

Você também pode gostar