You are on page 1of 81

CEIC UNSCH

HP PRIME

"CURSO DE PROGRAMACIN EN
LA CALCULADORA HP PRIME"

AYALA BIZARRO, Rocky Giaban


NDICE GENERAL

ndice General ii

ndice de Cuadros vi

ndice de Figuras vii

I CLASES I 1

I INTRODUCCIN 2
1.1 Conociendo la Calculadora . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Problemas y algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.1 Ejemplo de algoritmos . . . . . . . . . . . . . . . . . . . . . . . . 5

II PROGRAMACIN EN HP PPL 6
2.1 Estructura de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 Catalogo de programas . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4 Creacin de un nuevo programa . . . . . . . . . . . . . . . . . . . . . . . 8
2.4.1 Desde la HP PRIME . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4.2 Desde el software de conectividad de la HP PRIME. . . . . . . . . 9

III VARIABLES Y OBJETOS 11


3.1 Variables Globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 Variables locales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3 Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.4 Declaracin de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

IV INGRESO Y SALIDA DE DATOS 18


4.1 Ingreso de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.1.1 Funcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.1.2 Comando INPUT . . . . . . . . . . . . . . . . . . . . . . . . . . 19

ii
ndice General

4.1.3 Pantalla tctil . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22


4.2 Formularios interactivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.3 Otros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.4 Salida de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.4.1 Comando MSGBOX . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.4.2 Comando PRINT . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.4.3 Ingreso de datos personalizados . . . . . . . . . . . . . . . . . . . 25
4.5 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.5.1 Ejercicio 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.5.2 Ejercicio 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.5.3 Ejercicio 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.5.4 Ejemplo Nro 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

V BIFURCACIONES Y BUCLES 29
5.1 Bifurcacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.1.1 Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.1.2 Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.1.3 Comando IF THEN . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.1.4 Comando IF THEN ELSE . . . . . . . . . . . . . . . . . . . . . . 31
5.1.5 Comando CASE . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.1.6 Comando IFERR . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.1.7 Comando IFERR ELSE . . . . . . . . . . . . . . . . . . . . . . . 34
5.1.8 Ejemplo 01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.2 Bucle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.2.1 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.2.2 Comando FOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.2.3 Comando FOR STEP . . . . . . . . . . . . . . . . . . . . . . . . 37
5.2.4 Comando FOR DOWN . . . . . . . . . . . . . . . . . . . . . . . 38
5.2.5 Comando FOR STEP DOWN . . . . . . . . . . . . . . . . . . . . 39
5.2.6 Comando WHILE . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.2.7 Comando REPEAT . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.2.8 Comando BREAK . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.2.9 Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

VI CADENAS 44
6.1 Definicin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.2 ASC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.3 LOWER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.4 CHAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.5 DIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6.6 STRING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

iii
ndice General

VIILISTAS Y MATRICES 47
7.1 Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
7.2 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
7.2.1 Creacin de listas . . . . . . . . . . . . . . . . . . . . . . . . . . 48
7.2.2 SORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
7.2.3 CONCAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
7.2.4 Posicin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
7.2.5 Tamao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.2.6 EDITLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.3 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.3.1 ADDCOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.3.2 ADDROW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.3.3 DELCOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.3.4 DELROW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.3.5 EDITMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.3.6 REDIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.3.7 REPLACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.3.8 SCALE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.3.9 SCALEADD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.3.10 SUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.3.11 SWAPCOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.3.12 SWAPROW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.3.13 Posicin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
7.4 Comandos especiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
7.4.1 GETKEY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
7.4.2 ISKEYDOWN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
7.5 Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

VIIIObjetos Grficos 55
8.1 Comando de ingreso de datos . . . . . . . . . . . . . . . . . . . . . . . . 56
8.1.1 MOUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
8.1.2 WAIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
8.2 Comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
8.2.1 DRAWMENU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
8.2.2 FREEZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
8.2.3 RGB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
8.2.4 LINE P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
8.2.5 RECT P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
8.2.6 TEXTOUT P . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
8.2.7 BLIT P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
8.3 Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

iv
ndice General

IX Procedimientos y Subrutinas 74

v
NDICE DE CUADROS

3.1 Tipo de objetos o identificadores de variables . . . . . . . . . . . . . . . . 16

6.1 Tipo de objetos o identificadores de variables . . . . . . . . . . . . . . . . 46

8.1 Tipo de objetos o identificadores de variables . . . . . . . . . . . . . . . . 57

vi
NDICE DE FIGURAS

1.1 Conociendo la calculadora HP PRIME . . . . . . . . . . . . . . . . . . . . 3


1.2 Mdulo o secciones de un algoritmo . . . . . . . . . . . . . . . . . . . . . 5

2.1 Se ingresa presionando los botones Shift + 1 . . . . . . . . . . . . . . . 8

3.1 Variables de aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 14


3.2 Variables de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3 Variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.4 Declaracion de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4.1 Formularios Interactivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 20


4.2 Declaracion de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.3 Declaracion de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.4 Ingreso de datos a travs de la pantalla tctil . . . . . . . . . . . . . . . . 22
4.5 Formularios Interactivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.6 Formularios interactivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.7 Formularios interactivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.8 Formularios interactivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.9 Formularios interactivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.10 Formularios interactivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

7.1 Tipos de array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47


7.2 Valores de teclas obtenidos con el comando GETKEY . . . . . . . . . . . 52

8.1 Modelo aditivo de colores rojo, verde, azul. . . . . . . . . . . . . . . . . . 59

vii
PARTE I
Proyecto: CURSO DE PROGRAMACIN EN LA
CALCULADORA HP PRIME

CAPTULO
INTRODUCCIN

1.1 Conociendo la Calculadora


La calculadora grfica HP Prime es una calculadora potente de fcil uso diseada espec-
ficamente para la enseanza de matemticas con una amplia biblioteca de funciones y
comandos, la calculadora incluye un conjunto de aplicaciones de HP.
La calculadora HP Prime tambin dispone de su propio lenguaje de programacin que puede
utilizar para explorar y resolver problemas matemticos.

2
QSG_Fir.book Page iii Tuesday, July 2, 2013 11:09 AM

1.1 Conociendo la Calculadora | Capitulo I

Figura No 1.1:
Conociendo la calculadora HP PRIME

Leyenda del teclado de HP Prime


Nmero Funcin
1 Pantalla tctil y LCD: 320 240 pxeles
2 Men de botones tctiles contextuales
3 Teclas de aplicaciones de HP
1
4 Configuracin de las preferencias y la vista de Inicio
2 17
5 Funciones matemticas y cientficas habituales
16
6 Teclas Alpha y de alternancia 3 15
14
7 Tecla de encendido, de cancelacin y de apagado 4 13
8 Catlogos de listas, matrices, programas y notas 12
11
9 Tecla de ltima respuesta (Ans)
10 Tecla de aceptacin 5
10
11 Tecla de retroceso y eliminacin
12 Tecla de men y pegado
13 Configuracin de las preferencias y de la vista del
6
sistema algebraico computacional
14 Tecla de vista y copiado
7 9
15 Tecla de escape y borrado
8
16 Tecla de ayuda
17 Rueda basculante (para mover el cursor)

iii

iii
1.2 Programacin | Capitulo I

1.2 Programacin
Indicar a la calculadora qu es lo que tiene que hacer.
Qu es programar?
Decirle a un tonto muy rpido exactamente lo que tiene que hacer Especificar la estructura
y el comportamiento de un programa, as como probar que el programa realiza su tarea
adecuadamente y con un rendimiento aceptable.

1.3 Programa
Transforma entrada en salida.

1. Secuencia de instrucciones
2. Instrucciones que entiende la computadora
3. Y que persiguen un objetivo: resolver un problema!

1.4 Problemas y algoritmos


Casi inconscientemente, los humanos efectuamos cotidianamente una serie de pasos, pro-
cedimientos o acciones que nos permiten alcanzar un resultado o resolver un problema.
Un algoritmo como un conjunto de pasos, procedimientos o acciones que nos permiten
alcanzar un resultado o resolver un problema.
Muchas veces aplicamos el algoritmo de manera inadvertida, inconsciente o automtica-
mente. Esto generalmente se produce cuando el problema que tenemos enfrente lo hemos
resuelto con anterioridad un gran nmero de veces.
Supongamos que simplemente tenemos que abrir una puerta. Lo hemos hecho tantas veces
que difcilmente nos ponemos a enumerar los pasos para alcanzar este objetivo. Lo hacemos
de manera automtica. Lo mismo ocurre cuando queremos subirnos a un automvil.
Por otra parte, existe una gran cantidad de problemas que requieren de un anlisis profundo
y de un pensamiento flexible y estructurado para su solucin.
En este curso nos interesa abordar ese tipo de problemas. Invariablemente surgen ciertas
preguntas

1. Podemos ensear a resolver un problema?


2. Podemos ensear a analizar el mismo?
3. Podemos ensear a pensar .... ?

Por otra parte, un algoritmo consta de tres secciones o mdulos principales. En la figura
1.2 podemos observar las secciones que constituyen un algoritmo.
El mdulo 1 representa la operacin o accin que permite el ingreso de los datos del
problema.
El mdulo 2 representa la operacin o conjunto de operaciones secuenciales, cuyo objetivo
es obtener la solucin al problema.

4
1.4 Problemas y algoritmos | Capitulo I

El mdulo 3 representa una operacin o conjunto de operaciones que permiten comunicar


al exterior el o los resultados alcanzados.
Figura No 1.2:
4 Mdulo o seccionesAlgoritmos,
de un algoritmo
diagramas de flujo y programas

Figura 1.2 Mdulos o 5ecclones de un Algoritmo

1.4.1 Ejemplo de algoritmos

1.4.1.1 Ejemplo 1
1.2 Diagramas de flujo
Elaborar un algoritmo para calcular el promedio final de la materia de algoritmos. Dicha
Un diagrama de flujo representa la esquematizacin grfica de un algoritmo. En
calificacin se compone delos siguientes porcentajes.
realidad muestra grficamente los pasos o procesos a seguir para alcanzar la solu
55% cin
delde promedio finalSudecorrecta
un problema. sus calificaciones
construccinparciales (3)
es sumamente importante porque
a partir del mismo se escribe
30% de la calificacin de promedio un programa en algn lenguaje de programacin. Si
el diagrama de flujo est completo y correcto, el paso del mismo a un lenguaje de
15% programacin
de la calificacin de un trabajo
es relativamente simplefinal
y directo.
A continuacin en la tabla 1.1 presentamos los smbolos que utilizaremos, y
una explicacin de los mismos. Estos satisfacen las recomendaciones de la Jn-
ternational
1.4.1.2 Ejemplo 2Organization for Standardizatior' (ISO) y la American National
Standards Institute (ANSI).
Elabora un algoritmo para
A continuacin en leer un numero
la figura y determinar
1.3 presentamos las si es parque
etapas o impar.
debemos seguir
en la construccin de un diagrama de flujo.
1.4.1.3 Ejemplo 3
Solicitar unReglas
1.2.1 entero para
y determinar s es mltiplo
la construccin de 3 y adems
de diagramas que se encuentre en el rango
de flujo
(100-200).
Debemos recordar que un diagrama de flujo debe ilustrar grficamente los pasos
o procesos a seguir para alcanzar la solucin de un problema. Los smbolos pre
1.4.1.4 Ejemplo 4
sentados, colocados adecuadamente, permiten crear una estructura grfica flexi
ble que
Desarrolle un ilustra losque
algoritmo pasos a seguir
realice para alcanzar
la sumatoria un resultado
de los nmeros enterosespecfico. El entre
comprendidos
diagrama de flujo facilitar ms tarde la escritura del programa en algn lenguaje
el 1 ydeelprogramacin.
10, es decir, 1 + 2 + 3 + . . . . + 10.
1.4.1.5 Ejemplo 5
Determinar la hipotenusa de un tringulo rectngulo conocidas las longitudes de sus dos

www.FreeLibros.com
catetos. Desarrolle el algoritmo correspondiente.
1.4.1.6 Ejemplo 6
Desarrolle un algoritmo que permita leer dos nmeros y ordenarlos de menor a mayor, si es
el caso.

5
II
CAPTULO
PROGRAMACIN EN HP PPL

Este lenguaje esta orientado a secuencias y permite el manejo de datos de una forma muy
aprovechable, por lo que se precisa indicar que estas consideraciones pueden llegar a ser
exclusivas de PPL.

2.1 Estructura de comandos


Los programas pueden contener cualquier nmero de subrutinas (cada una de las cuales
es una funcin o procedimiento). Las subrutinas se inician con un encabezado que consta
del nombre seguido por parntesis que contienen una lista de parmetros o argumentos,
separados por comas. El cuerpo de una subrutina consta de una secuencia de instrucciones
incluidas entre un par BEGIN-END. Por ejemplo, el cuerpo de un programa simple,
denominado MYPROGRAM, podra parecerse a esto:

EXPORT MYPROGAM()
BEGIN
PIXON(1,1);
END;

Los comandos se separan con punto y coma (;). Los comandos que aceptan varios
argumentos incluyen a estos ltimos entre parntesis, separados por comas( , ). Por ejemplo.

> TEXTOUT_P(texto,posicion x, posicion y);

6
2.2 Comentarios | Capitulo II

En ocasiones, los argumentos de un comando son opcionales. Si se omite un argumento,


se utiliza un valor predeterminado en su lugar. En el caso del comando
TEXTOUTP , podra utilizarse un tercer argumento que especificara la fuente del texto:

> TEXTOUT_P(texto,[G],posicion x, posicion y, [fuente]);

En este manual, los argumentos opcionales a los comandos aparecen dentro de corchetes,
como se ha mostrado anteriormente. En el ejemplo TEXTOUTP , una variable grfica (G)
podra especificarse como segundo argumento. El valor predeterminado es G0, que contiene
siempre la pantalla mostrada en ese momento. Por lo tanto, la sintaxis mas completa del
comando TEXTOUTP es:

> TEXTOUT_P(texto,[G],posicion x, posicion y, [fuente]);

2.2 Comentarios
Cuando una lnea de un programa empieza con dos barras diagonales, //, se ignorar el
resto de la lnea. Esto le permite introducir comentarios en el programa:

EXPORT MYPROGAM()
BEGIN
PIXON(1,1);
//Esta linea es solo un comentario.
END;

2.3 Catalogo de programas


El catlogo de programas es donde se ejecutan, depuran y guardan los programas. Tambin
se puede cambiar el nombre de los programas o eliminarlos y es donde se inicia el editor de
programas. El editor de programa es donde se crean y editan los programas. Tambin se
pueden ejecutar programas desde Vista de inicio o desde otros programas.

7
2.4 Creacin de un nuevo programa | Capitulo II

Figura No 2.1:
Se ingresa presionando los botones Shift + 1

2.4 Creacin de un nuevo programa


Existen dos maneras practicas para crear un nuevo programa la primera es desde la misma
HP PRIME y la segunda utilizando el software de conectividad de la Hp Prime:

2.4.1 Desde la HP PRIME


Se sigue los siguientes pasos:

1. Abra el catlogo de programas e inicie un programa nuevo.

2. Introduzca un nombre para el nuevo programa.

8
2.4 Creacin de un nuevo programa | Capitulo II

3. Presione OK. Se crea automticamente una plantilla para el programa. La plantilla


consta de un encabezado para una funcin del mismo nombre que el programa, que
encerrar las instrucciones de la funcin.

EXPORT HOLAMUNDO()
BEGIN

END;

2.4.2 Desde el software de conectividad de la HP PRIME.


Se sigue los siguientes pasos:

1. Abra el software de conectividad de la HP PRIME.

9
2.4 Creacin de un nuevo programa | Capitulo II

2. En Programas presione anticlick y seleccioneNuevo introduzca el nombre del pro-


grama y le teclee enter.
3. Se crea automticamente una ventana nueva para el programa.

: Sugerencia
Un nombre de programa solo puede contener caracteres alfanumricos (letras y nmeros)
y el carcter de subrayado. El primer carcter debe ser una letra. Por ejemplo,
HELLO_WORLD y Programa2 son nombres de programa vlidos, mientras que HELLO
WORLD (no se permiten espacios) y 2Program! (empieza con un nmero e incluye un
signo !) no son vlidos.

10
III
CAPTULO
VARIABLES Y OBJETOS

Son valores asignados en la memoria con un nombre dentro de un programa que se requieren
constantemente para ser operados.
Las variables en un programa de HP Prime pueden utilizarse para almacenar nmeros,
listas, matrices, objetos de grficos y cadenas. El nombre de una variable debe tener
una secuencia de carcteres alfanumricos (letras y nmeros), comenzado con una letra.
Los nombres reconocen maysculas y minsculas, por lo tanto las variables denominadas
VarTem y varTEM son diferentes.

3.1 Variables Globales


Son aquellos valores que se declaran en un programa y pueden ser reconocidos en cualquier
otro programa de la calculadora( visible en cualquier lugar de la calculadora).
Estos variables se clasifican en los siguientes tipos:
3.1.0.1 Variables de inicio
Son las variables que poseen nombres reservados, es decir ya estn declarados por defecto
dentro de la calculadora.
Por ejemplo, las variables integradas A a Z pueden utilizarse para almacenar nmeros reales,
Z0 a Z9 pueden utilizarse para almacenar nmeros complejos, M0 a M9 pueden utilizarse
para almacenar matrices y vectores y as sucesivamente. Estos nombres estn reservados.
No se pueden usar para otros datos. Por ejemplo, no puede darle a un programa el nombre
M1ni almacenar un nmero real en una variable denominada Z8.
Estos variables se clasifican en los siguientes tipos:

1. Reales.

11
3.1 Variables Globales | Capitulo III

2. Complejos.

3. Listas.

4. Matrices.

12
3.1 Variables Globales | Capitulo III

5. Grficos.

6. Configuracin.

7. Sistema.

13
3.1 Variables Globales | Capitulo III

3.1.0.2 Variables de aplicaciones.


Son las variables que se utilizan para almacenar datos en las aplicaciones o para cambiar la
configuracin de la aplicacin. Poseen nombres reservados y no pueden ser creados por el
usuario.
Figura No 3.1:
Variables de aplicaciones

3.1.0.3 Variables de usuario


Son variables creadas por el usuario. Puede crear variables de usuario en un programa o
por asignacin en la vista de inicio.
Las variables de usuario creadas por asignacin o exportadas desde un programa aparecern
en el men de usuario Vars.

14
3.2 Variables locales. | Capitulo III

Figura No 3.2:
Variables de usuario

3.2 Variables locales.


En un programa puede declarar variables para usar solo dentro de una funcin especfica.
Esto se realiza usando la declaracin LOCAL. El uso de variables locales le permite declarar
y utilizar variables que no afectarn el resto de la calculadora. Las variables locales no
estn vinculadas a un tipo particular; es decir, puede almacenar nmeros de punto flotante,
enteros, listas, matrices y expresiones simblicas en una variable con cualquier nombre local.
Aunque el sistema le permite almacenar distintos tipos en la misma variable local, esto es
una mala prctica de programacin y debe ser evitada.
Figura No 3.3:
Variables locales

3.3 Objetos
Son valores asignados en una variable para ser operados dentro de un programa.

15
3.4 Declaracin de variables | Capitulo III

Cuadro No 3.1 :
Tipo de objetos o identificadores de variables
Valor asignado Nombre objeto
0 Real
1 Entero
2 Cadena
3 Compleja
4 Matriz
5 Error
6 Lista
8 Funcin
9 Unidad

3.4 Declaracin de variables


Expresin combinada. Para declarar variables usamos el comando LOCAL seguido de los
identificadores de la variable, esta accin no solo declara la variable (Reserva de espacio
en memoria), tambin le asigna un valor inicial an si no se indic ninguno, el valor
predeterminado es 0, entonces la variable queda definida como tipo Real. Si estamos
trabajando y vemos que de repente nos aparece un 0, es por esta razn.
Para evitar sto, podemos iniciar de buena vez si es necesario, los tipos de datos a asignar.

EXPORT HOLAMUNDO()
BEGIN
LOCAL var1;
LOCAL var2:="";
LOCAL var3:=(0,0);
LOCAL var4:=[0];
LOCAL var5:=[[0]];
LOCAL var6:={};
LOCAL var7:=)0);
END;

16
3.4 Declaracin de variables | Capitulo III

Figura No 3.4:
Declaracion de variables

17
IV
CAPTULO
INGRESO Y SALIDA DE DATOS

En este captulo aprenderemos cmo ingresar valores por el teclado y/o pantalla y hacer
que estos se guarden en variables. Nos permitir hacer programas cuya ejecucin cambie
segn un valor que ingresemos.

4.1 Ingreso de datos


La entrada de datos consiste en colocar en la memoria principal datos provenientes desde
algn dispositivo de entrada( teclado, disco, etc. ) para que la computadora, de acuerdo
a un programa, realice una tarea. La salida de datos consiste en enviar datos ( que,
generalmente, son el resultado de un procesamiento) desde la memoria principal hacia un
dispositivo de salida ( pantalla, impresora, disco, etc.).
Existen Muchas maneras de ingreso de datos en la creacin de programas; el mas simple
es utilizando el comando INPUT con sus diferentes variables, tambin se puede realizar el
ingreso de datos a travs de la pantalla tctil de la calculadora y uno mas avanzado es con
la creacin formularios interactivos.

4.1.1 Funcin
Los programas mas simples no necesitan de la creacin de formularios. Con la asignacin
de variables le es suficiente para poder operar y funcionar adecuadamente.
Ejemplo :

EXPORT RArea(b,h)
BEGIN

18
4.1 Ingreso de datos | Capitulo IV

LOCAL Area;
Area:=b*h;
RETURN "Area="+Area;
END;

(a) Ingreso de datos A (b) Ingreso de datos A

4.1.2 Comando INPUT


La forma ms sencilla de este comando abre un cuadro de dilogo con el ttulo dado y
un campo denominado etiqueta, y muestra el contenido de ayuda en la parte inferior. El
cuadro de dilogo incluye las teclas de men CANCEL y OK. Se puede ingresar un valor
en el campo etiquetado. Al presionar la tecla de men OK, la variable var se actualiza con
el valor introducido y el comando devuelve 1. Si se presiona la tecla de men CANCEL, la
variable no se actualiza y devuelve 0.
En las formas ms complejas del comando, se utilizan listas para crear un cuadro de dilogo
con varios campos. Si las variables son una lista, cada elemento puede ser un nombre de
variable o una lista que usa la siguiente sintaxis.
4.1.2.1 Sintaxis
Para una entrada:

INPUT(V,[title],[label],[help],[valor_reset],[valor_inicial])

Para mltiples entrada:

INPUT({V},[{title}],[{label}],[{help}],[{valor_reset}],[{valor_inicial}])

4.1.2.2 Forma simple

EXPORT AREACALC()

19
4.1 Ingreso de datos | Capitulo IV

BEGIN
LOCAL radio;
INPUT(radio, "Radio del circulo","R = ","Enter radius",1);
END;

Ejecucin del programa

Figura No 4.1:
Formularios Interactivos

4.1.2.3 Forma completa


Estructura del comando INPUT:
Figura No 4.2:
Declaracion de variables

Ejecucin del programa:

20
4.1 Ingreso de datos | Capitulo IV

Figura No 4.3:
Declaracion de variables

Cdigo del programa:

EXPORT RInput
BEGIN
LOCAL Aa,Bb, Cc,Dd,Ee;
INPUT
(
{
{Aa,[0],{25,25,0}},
{Bb,[1],{25,20,1}},
{Cc,[6],{25,25,2}},
{Dd,{"Esc A","Esc B","Esc C","Esc D"},{25,25,3}},
{Ee,0,{25,25,4}}
},
"TITULO DEL FORMULARIO",
{
"Etiqueta 1: ",
"Etiqueta 2: ",
"Etiqueta 3 : ",
"Etiqueta 4 : ",
"Etiqueta 5 : "
},
{
"Ayuda 1",
"Ayuda 2",
"Ayuda 3",
"Ayuda 4",

21
4.2 Formularios interactivos | Capitulo IV

"Ayuda 5"
},
{2.5,20,{2,5},2,0},
{2.5,20,{2,5},2,0}
);
END;

4.1.3 Pantalla tctil


La calculadora HP PRIME permite el ingreso de datos a travs de su pantalla tctil, para
ello utiliza los comandos MOUSE y WAIT, en captulos posteriores se desarrollara a detalle
este tipo de ingreso.
Ejemplo de Ingreso de datos con el teclado.

Figura No 4.4:
Ingreso de datos a travs de la pantalla tctil

4.2 Formularios interactivos


Este tipo de ingreso de datos consiste en crear un formulario personalizado al gusto del
programador. En captulos posteriores de desarrollara.
Ejemplos:

22
4.3 Otros | Capitulo IV

Figura No 4.5:
Formularios Interactivos

Figura No 4.6:
Formularios interactivos

4.3 Otros
Tambin se puede personalizar el ingreso de datos a travs de matrices, vectores, listas,
etc.

4.4 Salida de datos


Los datos de salida son datos derivados, es decir, obtenidos a partir de los datos de entrada.
Por esta razn, a los datos de salida se les considera ms significativos que a los datos
de entrada. Ambos tipos de datos son informacin (textos y imgenes) que maneja la
calculadora. Sin embargo, en un sentido ms filosfico, a los datos de entrada se les
considera la materia prima de los datos de salida, considerados estos como la verdadera
informacin.
Al igual que el ingreso de datos la calculadora presenta una gama de formatos de salida de
datos por defecto y personalizadas

23
4.4 Salida de datos | Capitulo IV

4.4.1 Comando MSGBOX


Muestra un cuadro de mensaje con el valor de la expresin o cadena dada.
4.4.1.1 Sintaxis

MSGBOX(expresion o cadena [ok_cancel]);

Ejemplo:

EXPORT AREACALC()
BEGIN
LOCAL radio,ar;
INPUT(radio, "Radio del circulo","R = ","Enter radius",1);
ar:=PI*radio^2;
MSGBOX("El area del circulo es:" + ar);
END;

Procesando el programa.

(a) Ingreso del valor = 10 (b) Comando MSGBOX

4.4.2 Comando PRINT


Imprime el resultado de expresin o cadena en el terminal.
El terminal es un mecanismo de visualizacin de salida de texto que se muestra solo cuando
se ejecutan los comandos PRINT.
4.4.2.1 Sintaxis

PRINT(expresion o cadena);

Ejemplo:

24
4.4 Salida de datos | Capitulo IV

EXPORT AREACALC()
BEGIN
LOCAL radio,ar;
INPUT(radio, "Radio del circulo","R = ","Enter radius",1);
ar:=PI*radio^2;
PRINT("El radio es: " +ar);
END;

Procesando el programa.

(c) Ingreso del valor = 10 (d) Comando PRINT

4.4.3 Ingreso de datos personalizados


Existen comandos para salida de datos en la seccin Grficos. En particular, se pueden
utilizar los comandos TEXTOUT y TEXTOUTP para salida de texto.

Figura No 4.7:
Formularios interactivos

4.5 Ejercicios

25
4.5 Ejercicios | Capitulo IV

4.5.1 Ejercicio 1

Figura No 4.8:
Formularios interactivos

4.5.2 Ejercicio 2

Figura No 4.9:
Formularios interactivos

26
4.5 Ejercicios | Capitulo IV

4.5.3 Ejercicio 3

Figura No 4.10:
Formularios interactivos

4.5.4 Ejemplo Nro 4


Realizar un programa donde se calcule el momento de inercia geomtrico de un rectngulo
con respecto al eje X y Y.

1. Variables de entrada: Longitud de Base del rectngulo y altura del rectngulo.


2. Proceso: Calculo de Momentos de inercia.
3. Salida de datos: Momento de inercia con respecto al eje X y Y.

Cdigo del programa.

EXPORT MI()
BEGIN
//1 ->Declaracion de variables.
LOCAL a , b, Ix, Iy, Icg;

//2 ->Ingreso de datos.


INPUT
(
{
{a ,[0],{ 25,25,0}},
{b ,[0],{ 25,20,1}}
},
"MOMENTO DE INERCIA" ,
{
" Base: " ,

27
4.5 Ejercicios | Capitulo IV

" Altura : "


},
{
" Ingrese la base del rectangulo (cm)" ,
" Ingrese la altura del rectangulo (cm)"
},
{25,20 },
{25,20 }
);

//3 ->Calculo de momentos de inercia.


Icg:=b*a^3/12;
Ix:= Icg+b*a*(a/2)^2;
Iy:= Icg+b*a*(b/2)^2;

//4 ->Salida de datos.


PRINT(); //->limpiar pantalla
PRINT(" CALCULO DE MOMENTO DE INERCIA");
PRINT("");
PRINT("1.Momento de inercia I_cg");
PRINT(" Icg =" + Icg + " cm");
PRINT("2.Momento de inercia Ixx");
PRINT(" Ixx =" + Ix + " cm");
PRINT("3.Momento de inercia Iyy");
PRINT(" Iyy =" + Iy + " cm");
END;

Procesando el programa.

(a) Ingreso de datos (b) Resultados

28
V
CAPTULO
BIFURCACIONES Y BUCLES

5.1 Bifurcacin
Un condicional en la programacin es una sentencia o grupo de sentencias que puede
ejecutarse o no en funcin del valor de una condicin.
Los tipos ms conocidos de condicionales son el SI (IF) y el SEGN (case), aunque tambin
podramos mencionar al lanzamiento de errores como una alternativa ms moderna para
evitar los cierres inesperados de nuestros programas.

5.1.1 Operadores
La calculadora HP Prime realiza clculos en funcin del siguiente orden de precedencia. Las
funciones con la misma precedencia se evalan de izquierda a derecha.

1. Expresiones entre parntesis. Los parntesis anidados se evalan de dentro hacia


fuera.
2. Raz n-sima (sqrt)
3. Potencia, 10n
4. Negacin, multiplicacin, divisin y mdulo
5. Suma y resta
6. Operadores relacionales (<, >, , , ==, 6=, =)
7. AND y NOT
8. OR y XOR
9. Argumento izquierdo de | (where)
10. Asignacin a una variable (:=)

29
5.1 Bifurcacin | Capitulo V

5.1.2 Ejemplos

5.1.2.1 Ejemplo 1
Elabore un programa que pida al usuario dos numero e imprima el mayor de ellos.
5.1.2.2 Ejemplo 2
Elabore un programa que pida un numero y si diga si es o no mltiplo de 3.
5.1.2.3 Ejemplo 3
Elabore un programa que pida un numero y si diga si es o no mltiplo de 3.
5.1.2.4 Ejemplo 4
Dado 3 nmeros deducir cual es el central.
5.1.2.5 Ejemplo 5
Que dados dos nmeros n1 y n2 se quiere dividir n1 entre n2 siempre y cuando n2 no sea
cero, determinar e imprimir el resultado de la divisin en caso contrario imprimir No se
puede dividir.
5.1.2.6 Ejemplo 6
Que lea dos temperaturas, imprimir Hace Frio si la temperatura es inferior a 15o , en caso
contrario imprimir Hace Calor.

5.1.3 Comando IF THEN


Evala prueba. Si prueba es verdadero (distinto de 0), ejecuta comandos. De lo contrario,
no sucede nada.
5.1.3.1 Sintaxis

IF prueba THEN
comandos
END;

Ejemplo :

EXPORT C1(A)
BEGIN
PRINT();
IF A<10 THEN
PRINT("EL NUMERO INGRESADO ES MENOR QUE 10");
END;
END;

Procesando el programa.

30
5.1 Bifurcacin | Capitulo V

(a) Cdigo del programa (b) Resultado del programa

5.1.4 Comando IF THEN ELSE


Evala prueba. Si prueba es verdadero (distinto de 0), ejecuta comandos 1, de lo contrario,
ejecuta comandos.
5.1.4.1 Sintaxis

IF prueba THEN
comandos 1
ELSE
comandos 2
END;

Ejemplo :

EXPORT C1(A)
BEGIN
PRINT();
IF A<10 THEN
PRINT("EL NUMERO INGRESADO ES MENOR QUE 10");
ELSE
PRINT("EL NUMERO INGRESADO ES MAYOR QUE 10");
END;
END;

Procesando el programa.

31
5.1 Bifurcacin | Capitulo V

(c) Cdigo del programa (d) Resultado del programa

5.1.5 Comando CASE


Evala prueba1. Si es verdadero, ejecuta comandos1 y cierra el CASE. De lo contrario,
evala prueba2. Si es verdadero, ejecuta comandos2 y cierra el CASE. Contina evaluando
pruebas hasta que encuentra una verdadera. Si no encuentra ninguna prueba verdadera,
ejecuta los comandos predeterminados, si se proporcionan. El comando CASE se limita a
127 bifurcaciones.
5.1.5.1 Sintaxis

CASE
IF prueba1 THEN
comandos1
END;
IF prueba2 THEN
comandos2
END;
...
[DEFAULT comandos]
END;

EXPORT C1(A)
BEGIN
PRINT();
CASE
IF A<10 THEN
PRINT("EL NUMERO INGRESADO ES MENOR QUE 10");
END;
IF A=10 THEN

32
5.1 Bifurcacin | Capitulo V

PRINT("EL NUMERO INGRESADO ES IGUAL A 10");


END;
IF A>10 THEN
PRINT("EL NUMERO INGRESADO ES MAYOR QUE 10");
END;
END;
END;

Procesando el programa.

(e) Cdigo del programa (f) Resultado del programa

5.1.6 Comando IFERR


Ejecuta la secuencia de comandos1. Si se produce un error durante la ejecucin de
comandos1, ejecuta la secuencia de comandos2.
5.1.6.1 Sintaxis

IFERR
comandos1
THEN
comandos2
END;

Ejemplo :

EXPORT C1(A)
BEGIN
PRINT();
IFERR
PRINT("LA INVERSA DEL NUMERO ES:" + 1/A);
THEN
PRINT("INGRESE UN NUM DIFERENTE DE CERO");

33
5.1 Bifurcacin | Capitulo V

END;
END;

Procesando el programa.

(g) Cdigo del programa (h) Resultado del programa

5.1.7 Comando IFERR ELSE


Ejecuta la secuencia de comandos1. Si se produce un error durante la ejecucin de
commands1, ejecuta la secuencia de commands2. De lo contrario, ejecuta la secuencia
de comandos3.
5.1.7.1 Sintaxis

IFERR
comandos1
THEN
comandos2
ELSE
comandos3
END;

5.1.8 Ejemplo 01
Clculo de tipo de flujo en tuberas.
5.1.8.1 Datos:
Q = 0.1 m3/s
D = 10 pulg.
= 1.14 106 m2/s
5.1.8.2 Donde:
4Q
Re = (5.1)
D

34
5.2 Bucle | Capitulo V

Re < 2100 F LU JO LAM IN AR


2100 Re < 4100 F LU JO EN T RAN SICION
Re 4100 F LU JO T U EBU LEN T O

5.2 Bucle
Los ciclos repetitivos tambin llamados lazos o bucles permiten repetir una operacin o
secuencia de operaciones en funcin de ciertas condiciones. Es un segmento de un algoritmo
o programa cuyas instrucciones se repiten un nmero determinado de veces mientras se
cumpla una determinada condicin. Consta de tres partes:

1. Decisin.
2. Cuerpo del bucle
3. Salida del bucle.

Dentro de los ciclos se utilizan contadores y acumuladores, que regulan que el ciclo llegue
a su fin.

1. Contador: Es un tipo de variable que incrementa o decrementa su valor en un valor


constante.
Cuando decimos incrementa estamos sumando. Ejemplo: Veces = Veces + 1
Como se puede observar a la variable "veces" se le est incrementando un valor
constante (1); es decir a su contenido le sumas el valor y se vuelve a guardar en la
misma variable.
Es una variable cuyo valor se incrementa o decremento en una cantidad constante en
cada iteracin.
Puede ser positivo (incrementos, uno e uno) o negativo (decremento, uno en uno).
2. Acumulador: Es una variable que incrementa o decrementa su contenido en cantidades
variables.
Ejemplo: Nomina = Nomina + sueldo

5.2.1 Ejercicios

5.2.1.1 Ejercicio 1
Que lea un numero N y calcule la suma de los nmeros menores que N.
5.2.1.2 Ejercicio 2
Que lea un numero N y que permita calcular el promedio de los nmeros menores que N.
5.2.1.3 Ejercicio 3
Que lea N nmeros ingresados por teclado y decir si son mltiplo de 5.
5.2.1.4 Ejercicio 4
Que permita mostrar los N primeros nmeros naturales.

35
5.2 Bucle | Capitulo V

5.2.1.5 Ejercicio 5
Que permita mostrar los N primeros nmeros impares.
5.2.1.6 Ejercicio 6
Que permita mostrar la suma de los N primeros nmeros pares.
5.2.1.7 Ejercicio 7
Que calcule la siguiente suma:

x x x
S =1+ + + ...
1 2 3

5.2.1.8 Ejercicio 8
Que muestre las tablas de multiplicar del numero 9.
5.2.1.9 Ejercicio 9
Que lea N nmeros y que muestre el mayor de ellos.
5.2.1.10 Ejercicio 10
Calcule la suma y el promedio de los nmeros pares menores o iguales que un numero K
ledo al comienzo.
5.2.1.11 Ejercicio 11
Que calcule el factorial de un nmero N ingresado por el teclado.

5.2.2 Comando FOR


Define la variable var con el valor de inicio y siempre que el valor de esta variable sea inferior
o igual a fin, ejecuta la secuencia de comandos, y luego incremente 1 a la variable.
Lo resaltaste de este comando es que ejecuta un nmero especificado de veces y de modo
automtico controla el nmero de iteraciones o pasos a travs del cuerpo del bucle.
5.2.2.1 Sintaxis

FOR var FROM inicio TO fin DO


comandos
END;

FOR var:=inicio TO fin DO


comandos
END;

Ejemplo :

36
5.2 Bucle | Capitulo V

EXPORT BUCLES(A)
BEGIN
//1 ->Declaracion de variables.
LOCAL Factorial,i;

//2 ->Proceso de datos


Factorial:=1;

FOR i:=1 TO A DO
Factorial:=i*Factorial;
END;

//3 ->Salida de datos


PRINT();
PRINT("El factorial de "+A + " es igual a " +Factorial );
END;

Procesando el programa.

(i) Cdigo del programa (j) Resultado del programa

5.2.3 Comando FOR STEP


Define la variable var con el valor inicio y siempre que el valor de esta variable sea inferior
o igual a fin ejecuta la secuencia de comandos y luego suma incremento a var.
5.2.3.1 Sintaxis

FOR var FROM inicio TO fin [STEP incremento] DO


comandos
END;

FOR var:=inicio TO fin [STEP incremento] DO

37
5.2 Bucle | Capitulo V

comandos
END;

Ejemplo :

EXPORT BUCLES(A,b)
BEGIN
//1 ->Declaracion de variables.
LOCAL Mult,i;

//2 ->Proceso de datos


Mult:=1;

FOR i:=1 TO A STEP b DO


Mult:=i*Mult;
END;

//3 ->Salida de datos


PRINT();
PRINT("Producto de los primeros "+ A +"numeros tomados de" +b+ "en"+ -
b+ " es igual a " +Mult );
END;

Procesando el programa.

(k) Cdigo del programa (l) Resultado del programa

5.2.4 Comando FOR DOWN


Define la variable var con el valor inicio y siempre que el valor de esta variable sea mayor o
igual a fin, ejecuta la secuencia de comandos, y luego resta 1 (decremento) a var.
5.2.4.1 Sintaxis

38
5.2 Bucle | Capitulo V

FOR var FROM inico DOWNTO fin DO


comandos
END;

FOR var:=inico DOWNTO fin DO


comandos
END;

Ejemplo :

EXPORT BUCLES(A,b)
BEGIN
//1 ->Declaracion de variables.
LOCAL i;

//2 ->Proceso de datos y salida de datos

PRINT();
FOR i:=A DOWNTO b DO
PRINT("Numero " + i );
END;
END;

Procesando el programa.

(m) Cdigo del programa (n) Resultado del programa

5.2.5 Comando FOR STEP DOWN


Define la variable var con el valor inicio y siempre que el valor de esta variable sea mayor o
igual a fin ejecuta la secuencia de comandos y luego resta decremento a var.
5.2.5.1 Sintaxis

39
5.2 Bucle | Capitulo V

FOR var FROM inicio DOWNTO fin [STEP incremento] DO


comandos
END;

5.2.6 Comando WHILE


Evala prueba. Si el resultado es verdadero (distinto de 0), ejecuta los comandos y repite.
Es decir, repite mientras el test sea verdadero.
5.2.6.1 Sintaxis

WHILE prueba DO
comandos
END;

Ejemplo :

EXPORT BUCLES(A)
BEGIN
//1 ->Declaracion de variables.
LOCAL Factorial,i;

//2 ->Proceso de datos


Factorial:=1;
i:=1;

WHILE i<=A DO
Factorial:=i*Factorial;
i:=i+1;
END;

//3 ->Salida de datos


PRINT();
PRINT("El factorial de "+A + " es igual a " +Factorial );
END;

Procesando el programa.

40
5.2 Bucle | Capitulo V

(o) Cdigo del programa (p) Resultado del programa

5.2.7 Comando REPEAT


Repite la secuencia de comandos hasta que el valor de test sea verdadero (distinto de 0).
Es decir, repite mientras el test sea falso.
5.2.7.1 Sintaxis

REPEAT
comandos
UNTIL prueba ;

EXPORT BUCLES(A)
BEGIN
//1 ->Declaracion de variables.
LOCAL Factorial,i;

//2 ->Proceso de datos


Factorial:=1;
i:=1;

REPEAT
i:=i+1;
Factorial:=i*Factorial;
UNTIL i=A;

//3 ->Salida de datos


PRINT();
PRINT("El factorial de "+A + " es igual a " +Factorial );
END;

41
5.2 Bucle | Capitulo V

Procesando el programa.

(q) Cdigo del programa (r) Resultado del programa

5.2.8 Comando BREAK


Sale del comando de bucles rompiendo n niveles de bucle. La ejecucin retoma en la primera
instruccin despus del bucle. Sin un argumento, sale desde un nico bucle.
5.2.8.1 Sintaxis

BREAK(n);

5.2.9 Ejemplos

5.2.9.1 Ejemplo 1
Calcule la suma de los nmeros ingresados en una lista.

EXPORT LISTAS()
BEGIN
//1 ->Declaracion de variables.
LOCAL List:={},i,n,Suma;

//2 ->Ingreso de datos.


INPUT
(
{
{List ,[6],{25,50,3}}
},
"Suma" ,
{
" Numeros: "
},

42
5.2 Bucle | Capitulo V

{
"Ingrese una lista de numeros"
},
{{1,2,3,4,5}},
{{1,2,3,4,5}}
);

//3 ->Calculo del area del poligono.


n:=length(List); //-> Numero de elemntos de la lista
FOR i:=1 TO n DO
Suma:=Suma+List(i);
END;

//4 ->Salida de datos.


PRINT(); //-> Limpia la pantalla
PRINT("La suma de los numeros es:" +Suma);
END;

5.2.9.2 Ejemplo 2
Calcule el rea de cualquier polgono ingresando sus coordenadas.

43
VI
CAPTULO
CADENAS

6.1 Definicin
Una cadena es una secuencia de carcteres entre comillas (""). Para poner comillas dobles
en una cadena, use dos comillas consecutivas. Las cadenas se pueden utilizar en los
diferentes tipos de salida de datos en los programas.

1 Salida de datos con el comando PRINT.

EXPORT CPRINT()
BEGIN
LOCAL Variable;
PRINT();
PRINT("La Variable A = " + Variable + "metros");
END;

2 Salida de datos con el comando TEXTOUT.

EXPORT CTEXTOUT()
BEGIN
LOCAL Variable:=10;
RECT();
TEXTOUT_P("La Variable A = " + Variable + " metros", 10, 10 ,1);
WAIT;

44
6.2 ASC | Capitulo VI

END;

3 Salida de datos con el comando MSGBOX.

EXPORT CMSGBOX()
BEGIN
LOCAL Variable:=10;
MSGBOX("La Variable A = " + Variable + " metros");
END;

6.2 ASC
Devuelve una lista que contiene los cdigos ASCII de cadena.
Sintaxis: ASC(cadena)

Por ejemplo:

> ASC("AB") devuelve [65,66]

6.3 LOWER
Convierte caracteres en maysculas a una cadena en minsculas.
Sintaxis: LOWER(cadena)

Ejemplos:

> LOWER("ABC") devuelve "abc"

6.4 CHAR
Devuelve la cadena correspondiente a los cdigos de carcter en vector o el cdigo nico
del entero.
Sintaxis 1: CHAR(cadena)
Sintaxis 2: CHAR(entero)

Ejemplos:

> CHAR([82,77,72]) devuelve "RMH"

45
6.5 DIM | Capitulo VI

6.5 DIM
Devuelve a la cantidad de caracteres en cadena.
Sintaxis: DIM(cadena)

Ejemplos:

> DIM("12345") devuelve 5


> DIM( "" "" )devuelve 1
> DIM("n") devuelve 1

(Observe el uso de dos comillas dobles y la secuencia de escape).

6.6 STRING
Evala la expresin y devuelve el resultado como una cadena. Los parmetros adicionales
especifican cmo se muestran los nmeros.
Si se especifica el Modo, debe ser:
Cuadro No 6.1 :
Tipo de objetos o identificadores de variables
Valor Asignado Nombre del Objeto
0 Utilice la configuracin actual
1 Estndar
2 Fijo
3 Cientfico
4 Ingeniera
5 Flotante
6 Redondeo
7 Fraccin

La precisin es -1 para la configuracin actual o de 0 a 12.


Sintaxis: STRING(Expresin, [Modo], [Precisin])

46
VII
CAPTULO
LISTAS Y MATRICES

7.1 Array
Un array es una coleccin de datos del mismo tipo, que se almacena en posiciones consec-
utivas de memoria y reciben un nombre comn. Para referirse a un determinado elemento
de un array se debera utilizar un ndice, que especifique su posicion relativa en el array. Los
array podran ser.

1 Unidimensionales Vectores.
2 Bidimensionales Matrices o tablas.
3 Multidimensionales con 3 o mas dimensiones.

Figura No 7.1:
Tipos de array

47
7.2 Listas | Capitulo VII

7.2 Listas
Una lista consta de nmeros reales o complejos separados por comas, expresiones o matrices,
todos entre llaves. Por ejemplo, una lista puede contener una secuencia de nmeros reales
como 1,2,3. Las listas representan una forma prctica de agrupar objetos relacionados.
Puede realizar operaciones realizadas con las listas en Inicio y en los propios programas.
Hay diez variables de lista disponibles, denominadas de L0 a L9. Puede utilizarlas en
clculos o expresiones en Inicio o en un programa. Recupere el nombre de la lista del men
Vars. ( ) o escriba su nombre con el teclado.

7.2.1 Creacin de listas


Calcula una secuencia de elementos para una nueva lista mediante la sintaxis:
Sintaxis: MAKELIST(expresin,[variable],[principio],[final],[incremento])

Ejemplos:

> MAKELIST(A,A,1,5,1) devuelve {1,2,3,4,5}

7.2.2 SORT
Ordena los elementos de la lista en orden ascendente.
Sintaxis: SORT(lista)

Ejemplos:

> SORT({2,5,3}) devuelve {2,3,5}

7.2.3 CONCAT
Concatena dos listas para formar una nueva lista.
Sintaxis: CONCAT(lista1,lista2)

Ejemplos:

> CONCAT({1,2,3},{4}) devuelve {1,2,3,4}.

7.2.4 Posicin
Devuelve la posicin de un elemento en la lista. El elemento puede ser un valor, una variable
o una expresin.
Si hay ms de una instancia del elemento, devuelve la posicin de la primera incidencia del
elemento. Si no hay ninguna incidencia del elemento especifcado, devuelve un valor 0.

48
7.3 Matrices | Capitulo VII

Sintaxis: POS(lista, elemento)

Ejemplos 1:

> POS({3,7,12,19},12) devuelve 3

Ejemplos 2 - lenguaje de programcin HP PPL:

> A:={3,7,12,19}; // Lista A declarada.


> b:=A(3); obtenemos b=12

7.2.5 Tamao
Devuelve el nmero de elementos de una lista o una lista que contiene las dimensiones de
un vector o matriz.
Sintaxis 1: SIZE(lista)
Sintaxis 2: SIZE(Vector)
Sintaxis 3: SIZE(Matriz)

Ejemplos:

> SIZE({1,2,3}) devuelve 3


> SIZE([[1 2 3], [4 5 6]]) devuelve {2, 3}

7.2.6 EDITLIST
Inicia el Editor de lista cargando listvar y muestra la lista especifcada. Si se utiliza en
programacin, retorna al programa cuando el usuario pulsa .
Sintaxis: EDITLIST(listvar)

Ejemplos:

> EDITLIST(L1) devuelve lista L1 editable.

7.3 Matrices
Algunos comandos de matriz toman como su argumento el nombre de la variable de matriz
sobre la cual se aplica el comando. Los nombres vlidos son las variables globales M0M9
o una variable local que contenga una matriz. Tambin puede introducir una matriz
directamente como un argumento para el comando.

49
7.3 Matrices | Capitulo VII

7.3.1 ADDCOL
Inserta los valores en vector en una nueva columna insertada antes de nmero-columna en
la matriz especificada. El nmero de valores en el vector debe ser igual a la cantidad de
filas de la matriz.
Sintaxis: ADDCOL(nombrematriz, vector, nmero-columna)

7.3.2 ADDROW
Inserta los valores en vector en una nueva fila insertada antes de nmero-fila en la matriz
especificada.
Sintaxis: ADDROW(nombrematriz, vector, nmero-fila)

El nmero de valores en el vector debe ser igual al nmero de columnas de la matriz.

7.3.3 DELCOL
Elimina la columna nmero-columna de la matriz.
Sintaxis: DELCOL(nombre, nmero-columna)

7.3.4 DELROW
Elimina la fila nmero-fila de la matriz.
Sintaxis: DELROW(nombre,nmero-fila)

7.3.5 EDITMAT
Inicia el Editor de matriz y muestra la matriz especificada. Si se utiliza en programacin,
vuelve al programa cuando el usuario presiona. A pesar de que este comando devuelve
la matriz que ha sido editada, EDITMAT no puede ser utilizado como un argumento en
otros comandos de matriz.
Sintaxis: EDITMAT(matvar)

Ejemplos:

> EDITMAT(M1) devuelve lista M1 editable.

7.3.6 REDIM
Redimensiona la matriz o vector especificado a tamao. Para una matriz, tamao es una
lista de dos nmeros enteros (n1, n2). Para un vector, tamao es una lista que contiene
un nmero entero (n). Se mantienen los valores existentes en la matriz. El valor de relleno
ser 0.

50
7.3 Matrices | Capitulo VII

Sintaxis: REDIM(nombre, tamao)

7.3.7 REPLACE
Reemplaza parte de una matriz o vector almacenado en matriz con un objeto comenzando
por la posicin de inicio. El inicio para una matriz es una lista que contiene dos nmeros;
para un vector, es un nico nmero.
Sintaxis: REPLACE(nombre, inicio, objeto)

REPLACE tambin funciona con listas, grficos y cadenas.


Ejemplo,

> REPLACE("123456", 2, "GRM") devuelve "1GRM56"

7.3.8 SCALE
Multiplica el nmero fila de la matriz especificada por valor.
Sintaxis: SCALE(nombre, valor, nmero-fila)

7.3.9 SCALEADD
Multiplica fila1 de la matriz (nombre) por valor y, a continuacin, aade este resultado a
fila2 de la matriz (nombre) y sustituye fila1 por el resultado.
Sintaxis: SCALEADD(nombre, valor, fila1, fila2)

7.3.10 SUB
Extrae un subobjeto (una parte de una lista, matriz o grfico) y lo guarda en nombre. Inicio
y fin se especifican por medio de una lista de dos nmeros para una matriz, un nmero para
un vector o para listas, o un par ordenado, (X,Y), para grficas: SUB(M11,2,2,2)
Sintaxis: SUB(nombre, inicio, fin)

7.3.11 SWAPCOL
Intercambia columna1 y columna2 de la matriz especificada (nombre).
Sintaxis: SWAPCOL(nombre, columna1, columna2)

7.3.12 SWAPROW
Intercambia fila1 y fila2 en la matriz especificada (nombre).
Sintaxis: SWAPROW(nombre, fila1, fila2)

51
7.4 Comandos especiales | Capitulo VII

7.3.13 Posicin
Devuelve la posicin de un elemento de la matriz dada.
Ejemplos 2 - lenguaje de programcin HP PPL:

> M2:=[[10 20 30], [15 25 35]]; // Matriz M2 declarada.


> b:=M2(2,3); obtenemos b=35

7.4 Comandos especiales


7.4.1 GETKEY
Devuelve el ID(identifcador) de la primera tecla en el bfer del teclado, o -1 si no se
puls ninguna tecla desde la ltima llamada a GETKEY. Los ID de tecla son enteros de 0
GETKEY
a 50, numerados desde la esquina superior izquierda (tecla 0) a la esquina inferior derecha
Sintaxis: GETKEY
(tecla 50) como se muestra en la figura.
Devuelve el ID (identificador) de la primera tecla en el bfer del teclado, o 1 si no se puls ninguna tecla
desde la ltima llamada a GETKEY.
Figura Los NoID7.2:
de tecla son enteros de 0 a 50, numerados desde la esquina
superior izquierda (tecla 0) a la esquina inferior
Valores de teclas obtenidos con el comando derecha (tecla
GETKEY50) como se muestra en la figura 27-1.

INPUT
7.4.2 ISKEYDOWN
Sintaxis: INPUT(var,[title], [label], [help], [reset_value],
[initial_value])
Devuelve true(verdadero) (distinto de cero) si la tecla cuyo id-tecla se proporciona est
Sintaxis: INPUT({vars},[ttulo],
presionada actualmente y falso (0) si no es as. [{etiquetas}], [{ayuda}],
[{restablecer_valores}], [{valores_iniciales}])
Sintaxis: ISKEYDOWN(id-tecla)
La forma ms sencilla de este comando abre un cuadro de dilogo con el ttulo dado y un campo denominad
etiqueta, y muestra el contenido de ayuda en la parte inferior. El cuadro de dilogo incluye las teclas de men
CANCEL y OK. El usuario puede ingresar un valor en el campo etiquetado. Si el usuario presiona la tecla de
men OK, la variable var se actualiza con el valor introducido y el comando devuelve52 1. Si el usuario presion
la tecla de men CANCEL, la variable no se actualiza y devuelve 0.
En las formas ms complejas del comando, se utilizan listas para crear un cuadro de dilogo con varios
7.5 Ejemplos | Capitulo VII

7.5 Ejemplos

Ejemplo 1
Desarrolle una funcion que encuentre el mximo y mnimo valor en una lista de listas
de numeros naturales.

Solucin:

Codigo Fuente :

EXPORT MaxLista()
BEGIN
// 1->Declarando variables
LOCAL Lista:={2,3,15,7,10},i,n,mayor,menor;
// 2->Ingreso de datos
INPUT
(
{
{Lista,[6],{25,70,0}}
},
"MAX VALOR LISTA",
{
"Lista: "
},
{
"Ingrese una lista {a,b,c,...,z}"
},
{Lista},
{Lista}
);
// 3->Proceso del programa
n:=SIZE(Lista);
mayor:=Lista(1);
menor:=Lista(1);
FOR i:=1 TO n DO
IF Lista(i)>mayor THEN
mayor:=Lista(i)
END;
IF Lista(i)<menor THEN
menor:=Lista(i)

53
7.5 Ejemplos | Capitulo VII

END;
END;
// 4->Proceso del programa
MSGBOX("El Maximo valor de la lista es: " + mayor + " y el minimo es: " + -
menor );
END;

Procesando el codigo se obtiene :

(a) Ingreso de datos (b) Resultados

Ejemplo 2
Calcular el promedio de n valores almacenados en un vector. determinar adems
cuantos son menor que el promedio, imprimir el promedio, el nmero de datos menores
que el promedio y una lista de valores menores que el promedio.

Ejemplo 3
Hacer un algoritmo que llene una matriz de m * n y que imprima cuantos de los
nmeros almacenados son ceros, cuntos son positivos y cuntos son negativos.

54
VIII
CAPTULO
Objetos Grficos

Existen 10 variables de grficos integradas en HP Prime llamadas G0G9. G0 es siempre


el grfico de la pantalla actual.
El G1 al G9 pueden utilizarse para almacenar los objetos grficos temporales (abreviados
GROBs) al programar aplicaciones que usen grficos. Son temporales y, por consiguiente,
se borran al apagar la calculadora.
Se pueden usar veintisis funciones para modificar las variables de grficos. Trece de
ellas trabajan con coordenadas cartesianas utilizando el plano cartesiano definido en la
aplicacin actual por las variables Xmin, Xmax, Ymin e Ymax.

> RECT();
> ARC(G0, 0, 0, 100);
> WAIT(1);

Las trece restantes trabajan con coordenadas de pxel donde el pxel 0,0 es el pxel superior
izquierdo de la GROB y 320, 240 es el inferior derecho. Las funciones de este segundo

55
8.1 Comando de ingreso de datos | Capitulo VIII

conjunto tienen un sufijo -P para el nombre de la funcin.

> RECT();
> ARC_P(G0, 100, 100, 100);
> WAIT(1);

8.1 Comando de ingreso de datos


8.1.1 MOUSE
Devuelve dos listas que describen la ubicacin actual de cada puntero posible (listas vacas
si no se utilizan punteros). La salida es {x, y, z original, y original, tipo } donde tipo es 0
(para nuevo), 1 (para completado), 2 (para arrastrar), 3 (para alargar), 4 (para girar) y 5
(para un clic largo).
Sintaxis: MOUSE(ndice)

EXPORT CMOUSE()
BEGIN
LOCAL tocar;
REPEAT
RECT();
tocar:=B->R(MOUSE());
WAIT(-1);
IF SIZE(tocar(1))=0 THEN
MSGBOX(tocar);
END;
UNTIL ISKEYDOWN(4);
END;

8.1.2 WAIT
Pausa la ejecucin del programa durante n segundos. Con ningn argumento o con n = 0,
pausa la ejecucin durante un minuto.

56
8.1 Comando de ingreso de datos | Capitulo VIII

Sintaxis: WAIT(n)

Si n=-1, pausa la ejecucin hasta que se pulsa una tecla o exista una actividad del mouse,
devolviendo el cdigo de la tecla o una lista de la forma {tipo, x, y, dx, dy }.

x, y : : eslaposicindelevento
Donde: =
tipo : eseltipodeactividad

Cuadro No 8.1 :
Tipo de objetos o identificadores de variables
Tipo Descripcin
0 : mouse hacia abajo
1 : movimiento del mouse
2 : mouse hacia arriba
3 : Clic del mouse
5 : estiramiento del mouse
6 : rotacin del mouse
7 : clic largo del mouse

EXPORT Programa()
BEGIN
LOCAL SALIR,accion;
RECT();
REPEAT
RECT();
accion:=B->R(WAIT(-1));
IF TYPE(accion)==6 THEN // Tipo de argumento Lista.
IF accion(1)==1 THEN
MSGBOX("Movimiento del mouse: "+accion(1));
END;
IF accion(1)==3 THEN
MSGBOX("Clic del mouse: "+accion(1));
END;
IF accion(1)==7 THEN
MSGBOX("Clic largo del mouse: "+accion(1));
END;
END;

57
8.2 Comandos | Capitulo VIII

IF TYPE(accion)==0 THEN // Tipo de argumento Real.


MSGBOX(accion);
SALIR:=accion;
END;
UNTIL SALIR==4;
END;

(a) Resultados (b) Resultados (c) Resultados

8.2 Comandos
8.2.1 DRAWMENU
Dibuja un men de seis botes en la parte inferior de la pantalla, con etiquetas cadena1,
cadena2,..., cadena6.
Sintaxis: DRAWMENU(cadena1, cadena2, . . . , cadena6).

EXPORT MENU()
BEGIN
RECT();
DRAWMENU("Menu 1","Menu 2","Menu 3","Menu 4","Menu 5","Menu 6");
WAIT(-1);
END;

8.2.2 FREEZE
Pausa la ejecucin de un programa hasta que se pulse una tecla. Esto evita que la pantalla se
redibuje despus de finalizada la ejecucin del programa, dejando la visualizacin modificada
en la pantalla para que el usuario la vea.
Sintaxis: FREEZE

EXPORT ()
BEGIN
RECT();
DRAWMENU("Menu 1","Menu 2","Menu 3","Menu 4","Menu 5","Menu 6");

58
8.2 Comandos | Capitulo VIII

FREEZE;
END;

8.2.3 RGB
La descripcin RGB (del ingls Red, Green, Blue; rojo, verde y azul) de un color hace
referencia a su composicin de la intensidad de los colores primarios con que se forma: el
rojo, el verde y el azul. Este un modelo de color basado en lo q se conoce como sntesis
aditiva, con lo que es posible representar a un color por la mezcla por adicin de los tres
colores luz primarios.

Figura No 8.1:
Modelo aditivo de colores rojo, verde, azul.

Para indicar con qu proporcin se mezcla cada color, le asignamos un valor a cada uno de
los colores primarios, as, por ejemplo, el valor 0 significa que no interviene en la mezcla, y
en la medida que ese valor aumenta, aportar ms intensidad a la mezcla.
Devuelve un nmero entero que puede utilizarse como el parmetro de color para una
funcin de dibujo, en base a los valores de los componentes rojo, verde y azul (cada uno
de 0 a 255).
Sintaxis: RGB(R, G, B, [A])

EXPORT CRGB()
BEGIN
RECT(RGB(0,0,255,0.5));
DRAWMENU("Menu 1","Menu 2","Menu 3","Menu 4","Menu 5","Menu 6");
FREEZE;
END;

8.2.4 LINE P
El formato bsico de LINE P LINE dibuja una lnea entre las coordenadas pxel
cartesiano del grfico utilizando el color especificado.
Sintaxis: LINE P([G], x1, y1, x2, y2, [color])

59
8.2 Comandos | Capitulo VIII

EXPORT ()
BEGIN

END;

8.2.5 RECT P
Dibuja un rectngulo en G entre los puntos x1,y1 y x2,y2 utilizando color del borde para el
permetro y color de relleno para el interior.
Sintaxis: RECT P([G, x1, y1, x2, y2, colorborde, colorrelleno])

EXPORT ()
BEGIN

END;

8.2.6 TEXTOUT P
Dibuja un texto utilizando un color en el grfico G en la posicin x, y usando un tamao
de fuente.
0: fuente actual seleccionada en la pantalla Configuracin de Inicio,
1: Tamao 10
2: Tamao 12
3: Tamao 14
4: Tamao 16
5: Tamao 18
6: Tamao 20
7: Tamao 22
Sintaxis: TEXTOUT P(texto [ ,G], x, y [ ,fuente, c1, ancho, c2])

EXPORT ()
BEGIN

END;

8.2.7 BLIT P
Copia la regin de srcGRB entre el punto (sx1, sy1) al punto (sx2, sy2) en la regin de
trgtGRB entre los puntos (dx1, dy1) y (dx2, dy2).
Sintaxis: BLIT P([trgtGRB, dx1, dy1, dx2, dy2], [srcGRB, sx1, sy1, sx2, sy2,c])

60
8.3 Ejemplo | Capitulo VIII

EXPORT ()
BEGIN

END;

8.3 Ejemplo

Ejemplo 1
Ingresos Personalizados.

Solucin:

Como se vio en los capitulos anteriores el ingreso de datos se realiza por medio del comando,
propio de la HP-PRIME, INPUT la desventaja de este comando es que no se puede
personalizar. A continuacion se realizar un ejemplo del ingreso de datos perzonalizado
con el uso de los comandos WAIT Y MOUSE.
PASO 1:
Estructura de programacin.

//------------------------------------------------
// VARIABLES GLOBALES
//------------------------------------------------
Gp:=G1;
CXAp,CYAp;
CX,CY;
Bas:=10,Alt:=10;
Accion;
Fe:=1;
//------------------------------------------------
// VARIABLES COLORES
//------------------------------------------------
Blue:=RGB(0,0,#CDh); //-->Definiendo Color Azul
Red:=RGB(#CDh,0,0); //-->Definiendo Color Rojo
White:=RGB(255,255,255);
Plomo:=RGB(192,192,192);
DarkBlue:=RGB(33,115,231);
AzulTit:=RGB(33,84,163);
MCuad:=RGB(246,143,71);
FCuad:=RGB(192,192,192);
Fondo:=RGB(239,247,247);

61
8.3 Ejemplo | Capitulo VIII

CTexto:=RGB(33,115,231);
CTexto2:=RGB(195,56,56);
//------------------------------------------------
// FUNCIONES DECLARADAS
//------------------------------------------------
FGROBP();
FFORM_A();
EDITFORM();
EDF();
EDITC();
FRECT();
FRECT_B();
FPRE_A();
FCAL();
//------------------------------------------------
// NOMBRE : INICIO PROGRAMA
// DESCRIPCION : Inicio del programa
//------------------------------------------------
EXPORT Form()
BEGIN

END;

PASO 2:
Creacion de nuestro pantalla principal del programa.

FGROBP()
BEGIN
LOCAL accion,salir:=0,cx,cy;

RECT();
REPEAT
RECT();
DRAWMENU("Datos","Calculo","","","","Salir");
accion:=B->R(WAIT(-1));

//->Condicion para pantalla tactil


IF TYPE(accion)==6 THEN
IF accion(1)==3 THEN

62
8.3 Ejemplo | Capitulo VIII

cx:=accion(2);
cy:=accion(3);
IF cy>=219 AND cy<=240 THEN
CASE
IF cx>=0 AND cx<=51 THEN
FFORM_A();
END;
IF cx>=53 AND cx<=104 THEN
FCAL();
END;
IF cx>=265 AND cx<=319 THEN
//MENU 6
salir:=4;
MSGBOX("Hasta pronto");
END;
END;
END;
END;
END;

//->Condicion para el uso del teclado


IF TYPE(accion)==0 THEN
IF accion==4 THEN
salir:=accion;
END;
END;

UNTIL salir==4;
END;

PASO 3:
Codigo del formulario.

FFORM_A()
BEGIN
RECT(Fondo);
LOCAL R_Bas:={},R_Alt:={},R_ok:={},mx,my;
LOCAL Salir;

RECT_P({0,1},{320,17},DarkBlue,AzulTit);

63
8.3 Ejemplo | Capitulo VIII

TEXTOUT_P("INGRESO DE DATOS",100,3,2,White);
TEXTOUT_P(" Base=",90,28,2);
TEXTOUT_P("Altura=",90,48,2);

R_ok:={{127,70},{197,87}};
RECT_P({127,70},{197,87},DarkBlue,AzulTit);
TEXTOUT_P("OK" ,155,73,2,White,90,AzulTit);

R_Bas:={{135,25},{185,40}};
R_Alt:={{135,45},{185,60}};

RECT_P({1,88},{318,218},DarkBlue,White);

REPEAT
EDITFORM(STRING(Bas,1),R_Bas,AzulTit,White);
EDITFORM(STRING(Alt,1),R_Alt,AzulTit,White);

Accion:=WAIT(-1);
IF TYPE(Accion)=6 THEN
IF Accion(1)==0 THEN
mx:=Accion(2);
my:=Accion(3);
CASE
IF R_Bas(1,1)<mx<R_Bas(2,1) AND R_Bas(1,2)<my<R_Bas(2,2) THEN
Bas:=EDITC(Bas,R_Bas,"Ingrese la base (m)");
FPRE_A();
END;
IF R_Alt(1,1)<mx<R_Alt(2,1) AND R_Alt(1,2)<my<R_Alt(2,2) THEN
Alt:=EDITC(Alt,R_Alt,"Ingrese la altura (m)");
FPRE_A();
END;
IF R_ok(1,1)<mx<R_ok(2,1) AND R_ok(1,2)<my<R_ok(2,2) THEN
Salir:=1;
END;
END;
END;
END;

64
8.3 Ejemplo | Capitulo VIII

UNTIL Salir==1;

END;

PASO 4:
Funciones complementarios para la creacion de nuestro formulario.

//------------------------------------------------
// NOMBRE : OPERACION BOTONES
// DESCRIPCION : DIbuja una region cuadrada
//------------------------------------------------
FPRE_A()
BEGIN
LOCAL Fe_X,Fe_Y,b,h;
//Calculo de escala.
Fe_X:=250/Bas;
Fe_Y:=90/Alt;

IF Fe_X<Fe_Y THEN
Fe:=Fe_X;
ELSE
Fe:=Fe_Y;
END;

b:=Bas*Fe;
h:=Alt*Fe;

//Dibuja el
RECT_P({1,88},{318,218},DarkBlue,White);
FRECT(b,h,150,163,Red);
END;

//------------------------------------------------
// NOMBRE : DIBUJA RECTANGULO
// DESCRIPCION :
//------------------------------------------------
FRECT(b,h,xc,yc,col)
BEGIN
LOCAL x,y,x2,y2;

65
8.3 Ejemplo | Capitulo VIII

x:=xc+b/2;
y:=yc+h/2;
x2:=xc-b/2;
y2:=yc-h/2;

LINE_P(x,y,x2,y,col); //top
LINE_P(x,y2,x2,y2,col); // bottom
LINE_P(x,y,x,y2,col); //left
LINE_P(x2,y,x2,y2,col); // right

TEXTOUT_P(TRUNCATE(Bas,1),xc-10,y2-12,2,Plomo);//Texto 1
TEXTOUT_P(TRUNCATE(Alt,1),x+10,yc-5,2,Plomo);//Texto 1
END;

FRECT_B(Gr,b,h,xc,yc,col)
BEGIN
LOCAL x,y,x2,y2;
x:=xc+b/2;
y:=yc+h/2;
x2:=xc-b/2;
y2:=yc-h/2;

LINE_P(Gr,x,y,x2,y,col); //top
LINE_P(Gr,x,y2,x2,y2,col); // bottom
LINE_P(Gr,x,y,x,y2,col); //left
LINE_P(Gr,x2,y,x2,y2,col); // right

TEXTOUT_P(TRUNCATE(Bas,1),Gr,xc-10,y2-12,2,Plomo);//Texto 1
TEXTOUT_P(TRUNCATE(Alt,1),Gr,x+10,yc-5,2,Plomo);//Texto 1
END;

//------------------------------------------------
// NOMBRE : CUADRO DE REGIONES
// DESCRIPCION : DIbuja una region cuadrada
//------------------------------------------------
EDITFORM(Dato,Region,ColorA,ColorB)
BEGIN
RECT_P(Region(1),Region(2),ColorA,ColorB);
TEXTOUT_P(Dato,Region(1)+4,1);

66
8.3 Ejemplo | Capitulo VIII

END;

//------------------------------------------------
// NOMBRE : TECLAS PARA NUMEROS
// DESCRIPCION : Reconoce la teclas de HP en un campo.
//------------------------------------------------
Tecla()
BEGIN
LOCAL Val,Rs;
Val:=Accion;
CASE
IF 31<=Val<35 THEN 25Rs END;
IF Val=35 THEN RETURN "/"; END;
IF 36<=Val<40 THEN 33Rs END;
IF Val=40 THEN RETURN ""; END;
IF 41<=Val<45 THEN 41Rs END;
IF Val=45 THEN RETURN ""; END;
IF Val=47 THEN RETURN "0"; END;
IF Val=48 THEN RETURN "."; END;
IF Val=50 THEN RETURN "+"; END;
DEFAULT RETURN "";
END;
STRING(Val-Rs,1);
END;

//------------------------------------------------
// NOMBRE : EDICION DE LOS CAMPOS.
// DESCRIPCION : Reconoce la teclas de HP en un campo.
//------------------------------------------------
EDITC(Dato,Region,Ayuda)
BEGIN
LOCAL NDato:=STRING(Dato,1),mx,my;
NDatoDato;
REPEAT
EDITFORM(NDato+"!",Region,MCuad,FCuad);
RECT_P({5,225},{320,240},Fondo);
TEXTOUT_P(Ayuda,5,227,2);
Accion:=B->R(WAIT(-1));

67
8.3 Ejemplo | Capitulo VIII

IF TYPE(Accion)=0 THEN
CASE
IF Accion==4 THEN
DatoNDato; BREAK;
END;
IF Accion==30 THEN
IFERR EXPR(NDato) THEN DatoNDato; END;
BREAK;
END;
IF Accion==19 THEN
IF DIM(NDato)<=1 THEN
""NDato;
ELSE
LEFT(NDato,DIM(NDato)-1)NDato;
END;
END;
DEFAULT
NDato+TeclaNDato;
END;
ELSE
IF SIZE(Accion)<1 AND NOT(Region(1,1)<Accion(2)<Region(2,1) AND -
Region(1,2)<Accion(3)<Region(2,2)) THEN
IFERR EXPR(NDato) THEN DatoNDato; END;
BREAK;
END;
END;
UNTIL 0;
RECT_P({5,223},{320,240},Fondo);
EXPR(NDato)NDato;
EDITFORM(STRING(NDato,1),Region,AzulTit,White);
NDato;
END;

PASO 5:
Codigo: Calculo de las propiedades geometricas de un rectangulo.

//------------------------------------------------
// NOMBRE :
// DESCRIPCION : Calcula propiedades de la seccion

68
8.3 Ejemplo | Capitulo VIII

//------------------------------------------------
FCAL()
BEGIN
LOCAL x,y;
DIMGROB_P(G2,320,480,Fondo);

RECT_P(G2,{0,1},{320,17},DarkBlue,AzulTit);
TEXTOUT_P("RESULTADOS DEL PROGRAMA ",G2,80,3,2,White);

LOCAL Icg , Ix, Iy, Area,Perimetro;

Area:=Bas*Alt;
Perimetro:=4*Bas*Alt;

Icg:=Bas*Alt^3/12;
Ix:= Icg+Bas*Alt*(Alt/2)^2;
Iy:= Icg+Bas*Alt*(Bas/2)^2;

y:=30;
TEXTOUT_P(" Seccion Rectangular:",G2,5,y+5,3,CTexto2);

y:=75;
LOCAL b,h;
b:=Bas*Fe;
h:=Alt*Fe;
FRECT_B(G2,b,h,150,y+h/2,Red);

y:=y+h+20;
TEXTOUT_P(" Calculo del area Y perimetro:",G2,5,y+5,3,CTexto2);
TEXTOUT_P("-> Area = "+Area+" m2",G2,20,y+25,2,CTexto);
TEXTOUT_P("-> Perimetro = "+Perimetro+" m",G2,20,y+40,2,CTexto);

y:=y+60;
TEXTOUT_P(" Calculo de la Inercia de la seccion:",G2,5,y+5,3,CTexto2);
TEXTOUT_P("-> Icg = "+Area+" m4",G2,20,y+25,2,CTexto);
TEXTOUT_P("-> Ix = "+Area+" m4",G2,20,y+40,2,CTexto);
TEXTOUT_P("-> Iy = "+Area+" m4",G2,20,y+55,2,CTexto);

69
8.3 Ejemplo | Capitulo VIII

TEXTOUT_P("Ingenieria Civil < AyacuchoPeru >",G2,2,440,2,Blue);


TEXTOUT_P("Universidad Nacional de San Cristobal de -
Huamanga",G2,2,460,2,Blue);

BLIT_P(G0,G2);
x:=0;y:=100;
REPEAT
WAIT(-1);
IF ISKEYDOWN(12) THEN
y:=MIN(y+120*ISKEYDOWN(12),240);
BLIT_P(G0,0,0,G2,x,y,320+x,240+y);
END;
IF ISKEYDOWN(2) THEN
y:=MAX(y-120*ISKEYDOWN(2),0);
BLIT_P(G0,0,0,G2,x,y,320+x,240+y);
CONTINUE;
END;
UNTIL ISKEYDOWN(4);
END;

Ejemplo 1
Desarrolle una aplicacion que calcule el error de cierre de un poligono en un
levantamiento topografico.

Solucin:

Estructura de programacion general.

//------------------------------------------------
// VARIABLES GLOBALES
//------------------------------------------------
n:=3;
dAz:=1;Azz:={84,50,00};dC:=1;CE:=100;CN:=100;Az:=0;
Ang:={};GMS:=[[0]],Lad:=[0];SUMAng:=0;
//------------------------------------------------
// VARIABLES COLORES
//------------------------------------------------
White:=RGB(255,255,255);
Plomo:=RGB(192,192,192);

70
8.3 Ejemplo | Capitulo VIII

//------------------------------------------------
// FUNCIONES DECLARADAS
//------------------------------------------------
FInDat();
FMOUSEP();
//------------------------------------------------
// NOMBRE : INICIO PROGRAMA POLIGONAL
// DESCRIPCION : Inicio del programa
//------------------------------------------------
EXPORT Poligonal()
BEGIN

END;
//------------------------------------------------

Creacion de la pantalla principal.

EXPORT Poligonal()
BEGIN
LOCAL accion,cx,cy,salir;
REPEAT
RECT_P();
DRAWMENU("Datos","Proceso","Resultados","","","Salir");
accion:=B->R(WAIT(-1));
IF TYPE(accion)==6 THEN
IF accion(1)==3 THEN
cx:=accion(2);
cy:=accion(3);
IF cy>=219 AND cy<=240 THEN
CASE
IF cx>=0 AND cx<=51 THEN
//Accion del mouse
END;
IF cx>=53 AND cx<=104 THEN
//Accion del mouse
END;
IF cx>=106 AND cx<=157 THEN
//Accion del mouse
END;
IF cx>=265>= AND cx<=319 THEN

71
8.3 Ejemplo | Capitulo VIII

salir:=4;
END;
END;
END;
END;
END;
UNTIL salir==4;
END;

Cdigo de los formularios de ingreso(INPUT).

FInDat()
BEGIN
//Formulario de ingreso 1
INPUT
(
{
{n,[0],{40,20,3}}
},
"NUMERO DE LADOS",
{"n: "},
{"Ingrese el numero de lados"},
{n},{n}
);
//Declarando variables locales
LOCAL LA,LB,j,A,B,C;
LA:={};
LB:={};
//Proceso para concatenar los vertices del poligono
FOR j:=1 TO n DO
A:=char(64+j);
IF j==n THEN
B:=char(65);
ELSE
B:=char(65+j);
END;
C:=A+B;
LA:=CONCAT(LA,C);
LB:=CONCAT(LB,A);
END;

72
8.3 Ejemplo | Capitulo VIII

//Formulario de ingreso 2
INPUT
(
{
{dAz,LA,{20,15,1}},
{Az,[6],{60,35,1}},
{dC,LB,{40,15,3}},
{CE,[0],{20,20,5}},
{CN,[0],{60,20,5}}
},
"INGRESO DEL AZIMUT Y CORDENADAS",
{
"Tramo:","Azimut:","Punto:","Coor E:","Coor N:"
},
{
"Tramo Azimut conocido","Ingrese Azimut {G,M,S}","Punto de -
coordenada conocida","Ingrese cordenadas este","Ingrese cordenadas -
norte"
},
{dAz,Az,dC,CE,CN},
{dAz,Az,dC,CE,CN}
);
//Tabla ingreso de datos Angulos.
Az:=Azz(1)+Azz(1)/60+Azz(1)/3600;
GMS:=MAKEMAT(0,n,3);
LB:=CONCAT(LB," ");
GMS:=EDITMAT(GMS,{"Introduzca angulos de los -
vert.",LB,{"G","M","S",""}});
FOR i:=1 TO n DO
GMS(i,1)+GMS(i,2)/60+GMS(i,3)/3600->Ang(i);
END;
//Tabla ingreso de datos Lados.
Lad:=MAKEMAT(0,n);
LA:=CONCAT(LA," ");
Lad:=EDITMAT(Lad,{"Introduzca dist. de los lados",LA,{"Dist. (m)",""}});
END;

73
IX
CAPTULO
Procedimientos y Subrutinas

74

You might also like