Subido por Edgar curi león

Libro HPPRIME 2019. pdf

Anuncio
Rocky G. Ayala Bizarro
Ivan A. Ayala Bizarro
PROGRAMACION
2019
A
Programación en HP PPL
aplicado a la ingeniería civil
Ayacucho – Perú
Hola Mundo
Rocky G. Ayala Bizarro
Ivan A. Ayala Bizarro
Programación en HP PPL
aplicado a la ingeniería civil
Rocky Ayala Bizarro, editor
Programación en HP PPL aplicado a la ingeniería civil
Autores :
 Rocky G. Ayala Bizarro
 Ivan A. Ayala Bizarro
Editado por:
 Rocky G. Ayala Bizarro
Jr. 28 de Julio N° 590 - Ayacucho Telef. 965954710
riayala@uc.cl
Ayacucho - Perú
Primera edición, febrero 2019
Tiraje: 100 ejemplares
Hecho el Depósito Legal en la Biblioteca Nacional del Perú N°:2019-05880
IBSN: 978-612-004-315-5
Queda prohibida la reproducción total o parcial de este libro por cualquier medio electrónico o
mecánico, sin autorización por escrito de los autores.
A nuestros padres quienes apostaron siempre en la
educación y en nuestra formación personal para
enfrentar las adversidades con dignidad y respecto.
Índice General
CAPÍTULO 1
Conceptos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.
La programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1. ¿Qué es un lenguaje de programación? . . . . . . 4
1.1.2. Creación de un programa . . . . . . . . . . . . . . . . . . 6
1.2.
Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1. Ejercicios propuestos. . . . . . . . . . . . . . . . . . . . . . 9
1.3.
Conociendo la Calculadora . . . . . . . . . . . . . . . . . . . . . 10
1.4.
Características de la calculadora . . . . . . . . . . . . . . . . 11
1.4.1. Diseño y software . . . . . . . . . . . . . . . . . . . . . . . 11
1.4.1.1. Programación . . . . . . . . . . . . . . . . . . . . 12
1.5.
Características del Emulador . . . . . . . . . . . . . . . . . . . 12
1.5.1. Emulador de la calculadora HP PRIME . . . . . 12
1.6.
Características del Kit de conectividad . . . . . . . . . . . 13
1.6.1. Firmware de la calculadora HP PRIME. . . . . . 14
1.7.
Notepad++. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.7.1. Configuración de Notepad++ . . . . . . . . . . . . . . 15
CAPÍTULO 2
Programación en HP PPL . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.1.
Estructura de comandos . . . . . . . . . . . . . . . . . . . . . . . 18
2.2. Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3. Catalogo de programas. . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4. Creación de un nuevo programa . . . . . . . . . . . . . . . . 20
2.4.1. Desde la HP PRIME (emulador y física). . . . . 20
2.4.2. Desde el software de conectividad de la HP
 riayala@uc.cl
PRIME. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
CAPÍTULO 3
ii
Indice General
Programación en HP PPL aplicado a la ingeniería civil
Variables y Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.
Declaración de variables . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.1. Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.2. Reserva de memoria . . . . . . . . . . . . . . . . . . . . . 26
3.2. Variables Globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2.1. Variables globales en un programa . . . . . . . . 26
3.2.1.1. ¿Cómo se declara? . . . . . . . . . . . . . . . 27
3.2.2. Variables globales de exportación . . . . . . . . . 27
3.2.3. Variables de inicio. . . . . . . . . . . . . . . . . . . . . . . 28
3.2.3.1. ¿Cómo se utilizan?. . . . . . . . . . . . . . . 30
3.3. Variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3.1. Variables locales dentro de un subprograma o
función. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3.2. Variables locales como parámetro formal . . 32
3.4. Variables de aplicaciones y de usuario . . . . . . . . . . . 32
3.4.1. Variables de aplicaciones. . . . . . . . . . . . . . . . . 32
3.4.2. Variables de usuario . . . . . . . . . . . . . . . . . . . . . 33
3.5. Identificadores de variables . . . . . . . . . . . . . . . . . . . . 33
3.6. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.6.1. Operadores aritméticos. . . . . . . . . . . . . . . . . . . 34
3.6.2. Operadores relacionales . . . . . . . . . . . . . . . . . 34
3.6.3. Operadores lógicos . . . . . . . . . . . . . . . . . . . . . . 35
3.6.4. Operadores de asignación . . . . . . . . . . . . . . . . 35
3.6.5. Ejemplo de operadores . . . . . . . . . . . . . . . . . . 36
3.6.6. Operaciones con cadenas . . . . . . . . . . . . . . . . 36
3.7.
Palabras reservadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
CAPÍTULO 4
4.1.
Ingreso de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.1.1. Ingreso de datos como Función . . . . . . . . . . . . 42
iii
 riayala@uc.cl
Estructuras Secuenciales y Manejo de Gráficos. . . . . . . 41
Indice General
Programación en HP PPL
4.1.2. Comando INPUT . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.1.3. Comando CHOOSE . . . . . . . . . . . . . . . . . . . . . . . 46
4.1.4. Pantalla táctil . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.1.5. Formularios interactivos . . . . . . . . . . . . . . . . . 47
4.1.6. Ingreso de datos a través de matrices y vectores
48
4.1.6.1. Comando EDITMAT. . . . . . . . . . . . . . . 48
4.1.6.2. Comando EDITLIST . . . . . . . . . . . . . . . 49
4.1.7. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2. Salida de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.1. Comando MSGBOX . . . . . . . . . . . . . . . . . . . . . . 51
4.2.2. Comando PRINT. . . . . . . . . . . . . . . . . . . . . . . . . 51
4.2.3. Salida de datos a través de gráficos. . . . . . . . 52
4.2.4. Ejercicios resueltos . . . . . . . . . . . . . . . . . . . . . . 53
4.3. Introducción al manejo de gráficos . . . . . . . . . . . . . . 54
4.3.1. Variables gráficas . . . . . . . . . . . . . . . . . . . . . . . . 54
4.3.2. Coordenadas cartesianas y de píxel . . . . . . . 54
4.3.2.1. Coordenadas cartesianas . . . . . . . . . 55
4.3.2.2. Coordenadas de píxel.. . . . . . . . . . . . 56
4.3.3. Comandos de dibujo. . . . . . . . . . . . . . . . . . . . . 56
4.3.4. Comando BLIT P . . . . . . . . . . . . . . . . . . . . . . . . 57
4.3.4.1. Comando RGB . . . . . . . . . . . . . . . . . . . 63
4.3.4.2. Comando LINE P . . . . . . . . . . . . . . . . 64
4.3.4.3. Comando RECT P. . . . . . . . . . . . . . . . 64
4.3.4.4. Comando TEXTOUT P . . . . . . . . . . . . 64
4.3.4.5. Comando DRAWMENU. . . . . . . . . . . 65
4.3.4.6. ICON . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
 riayala@uc.cl
4.3.4.7. Ejercicios resueltos . . . . . . . . . . . . . . 67
4.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
CAPÍTULO 5
iv
Indice General
Programación en HP PPL aplicado a la ingeniería civil
Estructuras de Programación . . . . . . . . . . . . . . . . . . . . . 73
5.1.
Estructuras selectivas . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.1.1. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.1.1.1. Operadores relacionales y lógicos . . 74
5.1.1.2. Prioridad de operadores. . . . . . . . . . . 75
5.1.2. Estructura IF THEN . . . . . . . . . . . . . . . . . . . . . . 75
5.1.2.1. La expresión condicional . . . . . . . . . . 76
5.1.3. Estructura IF THEN ELSE . . . . . . . . . . . . . . . . . 77
5.1.4. Estructura CASE . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.1.5. Estructura IFERR . . . . . . . . . . . . . . . . . . . . . . . . 79
5.1.6. Estructura IFERR ELSE. . . . . . . . . . . . . . . . . . . . 80
5.1.7. Estructuras de decisión anidadas . . . . . . . . . . 81
5.1.8. Ejercicios Aplicativos. . . . . . . . . . . . . . . . . . . . . 82
5.1.9. Ejercicios propuestos. . . . . . . . . . . . . . . . . . . . . 86
5.2. Estructuras repetitivas.. . . . . . . . . . . . . . . . . . . . . . . . . 87
5.2.1. Estructura FOR . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.2.1.1. Estructura FOR STEP . . . . . . . . . . . . . . 90
5.2.1.2. Estructura FOR DOWN . . . . . . . . . . . 90
5.2.1.3. Estructura FOR STEP DOWN. . . . . . . 91
5.2.2. Estructura WHILE . . . . . . . . . . . . . . . . . . . . . . . 91
5.2.3. Estructura REPEAT . . . . . . . . . . . . . . . . . . . . . . 92
5.2.4. Comandos BREAK y CONTINUE . . . . . . . . . . . 94
5.2.5. Estructuras iterativas anidadas . . . . . . . . . . . 95
5.2.6. Ejercicios aplicativos. . . . . . . . . . . . . . . . . . . . . 96
5.2.7. Ejercicios propuestos.. . . . . . . . . . . . . . . . . . . 102
CAPÍTULO 6
Arreglos: Matrices, Vectores y Listas. . . . . . . . . . . . . . . 105
Declaración de arreglos . . . . . . . . . . . . . . . . . . . . . . . 107
6.2. Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
6.2.1. Creación de listas . . . . . . . . . . . . . . . . . . . . . . . 107
v
 riayala@uc.cl
6.1.
Indice General
Programación en HP PPL
6.2.2. Comandos para el manejo de listas. . . . . . . 108
6.2.2.1. Comando SORT . . . . . . . . . . . . . . . . . 108
6.2.2.2. Comando CONCAT . . . . . . . . . . . . . . 108
6.2.2.3. Comando POS . . . . . . . . . . . . . . . . . . 108
6.2.2.4. Comando SIZE. . . . . . . . . . . . . . . . . . 109
6.2.2.5. Comando EDITLIST . . . . . . . . . . . . . 109
6.2.3. Ejemplo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
6.3. Matrices y vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.3.1. Vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.3.2. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111
6.3.3. Comandos para matrices. . . . . . . . . . . . . . . . 112
6.3.3.1. Comando ADDCOL . . . . . . . . . . . . . . 112
6.3.3.2. Comando ADDROW. . . . . . . . . . . . . 112
6.3.3.3. Comando DELCOL . . . . . . . . . . . . . . 112
6.3.3.4. Comando DELROW . . . . . . . . . . . . . 112
6.3.3.5. Comando EDITMAT . . . . . . . . . . . . . 113
6.3.3.6. Comando REDIM . . . . . . . . . . . . . . . 113
6.3.3.7. Comando REPLACE. . . . . . . . . . . . . . 113
6.3.3.8. Comando SCALE . . . . . . . . . . . . . . . . 114
6.3.3.9. Comando SUB . . . . . . . . . . . . . . . . . . 114
6.3.3.10. Comando SWAPCOL. . . . . . . . . . . . 114
6.3.3.11. Comando SWAPROW . . . . . . . . . . . 114
6.4. Ejercicios aplicativos. . . . . . . . . . . . . . . . . . . . . . . . . . 115
6.4.1. Ejercicios propuestos. . . . . . . . . . . . . . . . . . . . 120
CAPÍTULO 7
 riayala@uc.cl
Subprogramas y Manejo de Gráficos. . . . . . . . . . . . . . . 121
7.1.
Subrutinas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.2.
Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.3.
Diseño de una función . . . . . . . . . . . . . . . . . . . . . . . . 123
7.3.1. Definición de una función . . . . . . . . . . . . . . . 123
vi
Indice General
Programación en HP PPL aplicado a la ingeniería civil
7.3.2. Invocación de una Función . . . . . . . . . . . . . . 124
7.3.3. Ejemplo de funciones . . . . . . . . . . . . . . . . . . . 124
7.4.
Manejo de gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
7.4.1. Comando GETKEY . . . . . . . . . . . . . . . . . . . . . . 130
7.4.2. ISKEYDOWN . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.5.
Comando MOUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
7.6.
Comando WAIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
7.7.
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
CAPÍTULO 8
Introducción al modo CAS . . . . . . . . . . . . . . . . . . . . . . . 155
8.1.
¿Qué es CAS? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
8.1.1. Vista de CAS. . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
8.1.2. Cálculos con CAS . . . . . . . . . . . . . . . . . . . . . . . 157
8.2. CAS en PPL PRIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Índice de Figuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
vii
 riayala@uc.cl
Índice de Tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Presentación
En la actualidad la carreta de ingeniería civil, se encuentra a la vanguardia de los últimos
softwares o programas, los mismos que reducen el tiempo en los cálculos de diseño y
simulación que se presentan constantemente en la ingeniería.
Es así, que la presente
publicación se enfoca a la difusión de rutinas de programación en el lenguaje HP PPL, las
mismas que son herramientas constantes en la ingeniería civil, demostrando de manera
precisa, sencilla y práctica para la utilización de este lenguaje.
Con el avance de la tecnología y los diversos lenguajes de programación, se ha puesto en
práctica el desarrollo automatizado de procesos repetitivos en una calculadora o computadora.
Los principales objetivos de esta publicación son mostrar los procedimientos, herramientas y
conocimiento de las bondades y facilidades para el uso adecuado y eficiente del lenguaje de
programación HP PPL.
La presente publicación consta de ocho capítulos que los guiarán en su aprendizaje en el
conocimiento de la programación, desde los aspectos básicos hasta llegar a conocer los
conceptos más usados de la programación, como son los arreglos, cadenas de caracteres
y la programación en el modo CAS de la calculadora, las estructuras avanzadas de datos y
considerando el tema de interés en la programación, como son: el ordenamiento, la búsqueda
y la selección de los algoritmos. Toda esto se describe y se analiza en cada uno de los ocho
capítulos de los que consta la presente publicación. La estructura se organizada como sigue:
1 Conceptos básicos.
2 Programación en HP PPL.
3 Variables y objetos.
4 Estructura secuenciales y manejo de gráficos.
5 Estructuras de programación.
6 Arreglos: Matrices, vectores y listas.
7 Subprogramas y manejo de gráficos.
8 Introducción al modo CAS.
Para complementar el aprendizaje de la programación, el libro está acompañado de la
descripción de todos los programas creados y los fragmentos de códigos fuentes.
Los autores.
 riayala@uc.cl
Programación en HP PPL
2
Capítulo
1
Conceptos Básicos
 Resumen
1.1
1.2
1.3
1.4
1.5
1.6
1.7
La programación, 4
Algoritmos, 7
Conociendo la Calculadora, 10
Características de la calculadora, 11
Características del Emulador, 12
Características del Kit de conectividad, 13
Notepad++, 14
1.1 La programación | Capítulo 1
Programación en HP PPL
1.1 La programación
1.1.1¿Qué es un lenguaje de programación?
Cuando hablamos de un lenguaje de programación lo que en
verdad queremos decir es un lenguaje artificial que expresa
lo que denominamos computaciones.
Las computaciones
representan un término genérico para cualquier tipo y
variante de algoritmo, proceso o medida que pueda ser
ejecutada por una máquina o sistema complejo tal como
una computadora o calculadora. En sentido estricto, los
lenguajes de programación son variados y se caracterizan
por ser utilizados para crear aplicaciones y software de
cualquier tipo. En este caso nos referimos al desarrollo de
programas que se encargan del control del comportamiento
de la máquina, sistema u ordenador. El comportamiento
específico se define mediante algoritmos predefinidos y
pre-escritos.
En resumen, el lenguaje de programación es la combinación
de símbolos y reglas que permiten la elaboración de
programas con los cuales la computadora u otras máquinas
puede realizar tareas o resolver problemas de manera
eficiente.
Los lenguajes de programación se clasifican en:
1. Lenguaje máquina. Las instrucciones son directamente
entendibles por la computadora y no necesitan
traductor para que la CPU (unidad de procesamiento
central) pueda entender y ejecutar el programa.
 riayala@uc.cl
Utiliza un código binario (0 y 1), se basa en bits
(abreviatura inglesa de dígitos binarios).
2. Lenguaje de bajo nivel (ensamblador) Las instrucciones
4
1.1 La programación | Capítulo 1
Programación en HP PPL aplicado a la ingeniería civil
se escriben en códigos alfabéticos conocidos como
mnemotécnicos.
3. Lenguaje de alto nivel Es semejante al lenguaje humano
(en general en inglés), lo que facilita la elaboración y
comprensión del programa. Por ejemplo, HP PPL, Basic,
Pascal, Cobol, Fortran, C, etcétera.
¿Qué es un Programa?
Antes de explicar lo que significa programar, necesitamos
que entiendan lo que es un programa.
Todo el mundo
está acostumbrado ya a los programas, están familiarizados
con este concepto gracias al uso de Smartphones y Tablets,
computadoras, calculadoras
Un programa no es más que un conjunto de pasos que tiene
Figure 1.1 Funcionamiento de un
programa
que realizar un ordenador para desempeñar una tarea o
conseguir un objetivo concreto.
Todos los programas tienen en común que funcionan de una
manera casi parecida, partiendo de un conjunto de datos
iniciales, realizan una serie de operaciones sobre ellos para
obtener un conjunto de datos finales.
¿Qué es programar?

Podemos decir que programar es codificar instrucciones
Programar
Es decirle a un tonto muy rápido
para realizar una actividad en un lenguaje de programación
exactamente lo que tiene que
específico con la finalidad de que sean ejecutadas por la
hacer
computadora o máquinas (HP PRIME) para solucionar un
“
La programación es el arte de
problema.
expresar soluciones a problemas
Figure 1.2 Secuencia de un programa.
para que una computadora pueda
Fase 2
Fase 3
ENTRADA
PROCESO
SALIDA
de datos
de datos
de datos
ejecutar dichas soluciones.
— Bjarne Stroustrup
5
 riayala@uc.cl
Fase 1
1.1 La programación | Capítulo 1
Programación en HP PPL
1.1.2Creación de un programa
El desarrollo de un programa o de un conjunto de
aplicaciones se basa en un concepto llamado ciclo de
vida. Son una serie de etapas o fases que hay que seguir
secuencialmente.
Las fases o etapas son:
Figure 1.3 Secuencia de un programa.
La programación es sólo una etapa del proceso de desarrollo.
¿Para que sirve programar?
Programar
Básicamente, podemos resumir que programar es una
¡sirve para todo!
actividad que sirve para todo, que está presente en nuestro

día a día y nos facilita las tareas que realizamos.
Esta respuesta se basa en poner sobre la mesa la cantidad de
dispositivos informáticos y electrónicos que existen y sobre
 riayala@uc.cl
los que se pueden instalar programas:
 Ordenadores
 SmartTV
 Calculadoras
 Tablets
 Smartphones
 Smartwatches, etc.
Además de indicar en el número de dispositivos, puedes
explicar para qué sirve programar indicando ciertas
6
1.2 Algoritmos | Capítulo 1
Programación en HP PPL aplicado a la ingeniería civil
actividades cotidianas en las que los programas ayudan a
las personas en su día a día:
 Programas para los supermercados
 Programas para las tiendas
 Programas para los restaurantes
 Ordenadores de a bordo de los coches, etc.
1.2 Algoritmos
Se denomina algoritmo al conjunto de pasos ordenados
y finitos que permiten resolver un problema o tarea
específica. Los algoritmos son independientes del lenguaje
de programación y de la computadora que se vaya a emplear
“
La definición más simple de
algoritmo es que es una secuencia de
reglas que toman datos de entradas y
los transforman en datos de salidas.
— Jorge Pérez
para ejecutarlo.
Todo algoritmo debe ser:
Finito. En tamaño o número de instrucciones (tiene un
primer paso y un último paso) y tiempo de ejecución
(debe terminar en algún momento).
Por lo tanto,
debe tener un punto particular de inicio y fin.
Preciso. Debe tener un orden entre los pasos.
Definido. No debe ser ambiguo (dobles interpretaciones); si se
ejecuta el mismo algoritmo el resultado siempre será
el mismo, sin importar las entradas proporcionadas.
General. Debe tolerar cambios que se puedan presentar en la
definición del problema.
forma de algoritmo. Existen dos tipos de algoritmos, los que
se desarrollan para ser ejecutados por una computadora,
7
 riayala@uc.cl
Toda actividad que realizamos la podemos expresar en
1.2 Algoritmos | Capítulo 1
Programación en HP PPL
llamados algoritmos computacionales, y los que realiza el
ser humano, es decir, algoritmos no computacionales. Los
algoritmos ejecutados por una computadora pueden ser
representado gráfica o numéricamente, de modo que las
sucesivas acciones no dependan de la sintaxis de ningún
lenguaje de programación, sino que la descripción se
emplee para su transportación en un programa.
Los métodos usuales para representar un algoritmo son:
1 Diagrama de flujo.
2 Diagrama N-S (Nassi-Schneiderman).
3 Lenguaje
de
especificación
de
algoritmos:
pseudocódigo.
4 Lenguaje español, inglés.
5 Fórmulas.
Por otra parte, un algoritmo consta de tres secciones o
módulos principales. En la figura 1.4 podemos observar las
secciones que constituyen un algoritmo.
El módulo 1 representa la operación o acción que permite el
ingreso de los datos del problema.
El módulo 2 representa la operación o conjunto de operaciones
secuenciales, cuyo objetivo es obtener la solución al
problema (Estructura).
El módulo 3 representa una operación o conjunto de operaciones
que permiten comunicar al exterior el o los resultados
alcanzados.
Figure 1.4 Módulo o secciones de un algoritmo.
 riayala@uc.cl
ALGORITMO
Datos de entrada
8
Procesamiento
Impresión de
de Datos
resultados
1.2 Algoritmos | Capítulo 1
Programación en HP PPL aplicado a la ingeniería civil
1.2.1Ejercicios propuestos
Ejemplo 1
Elaborar un algoritmo para calcular el
promedio final de la materia de algoritmos.
Dicha
calificación se compone delos siguientes porcentajes.
55% —–del promedio final de sus calificaciones parciales (3)
30% —– de la calificación de promedio
15% —– de la calificación de un trabajo final
Ejemplo 2
Elabora un algoritmo para leer un número y
determinar si es par o impar.
Ejemplo 3
Solicitar un entero y determinar sí es múltiplo
de 3 y además que se encuentre en el rango (100-200).
Ejemplo 4
Desarrolle un algoritmo que realice la
sumatoria de los números enteros comprendidos entre
el 1 y el 10, es decir, 1 + 2 + 3 + …. + 10.
Ejemplo 5
Determinar la hipotenusa de un triángulo
rectángulo conocidas las longitudes de sus dos catetos.
Desarrolle el algoritmo correspondiente.
Ejemplo 6
Desarrolle un algoritmo que permita leer dos
números y ordenarlos de menor a mayor, si es el caso.
Ejemplo 7
Realice un algoritmo que a partir de
proporcionarle la velocidad de un automóvil, expresada en
kilómetros por hora, proporcione la velocidad en metros
por segundo.
Ejemplo 8
Desarrolle un algoritmo que permita leer un
Ejemplo
9
Desarrolle
un
algoritmo
que
permita
determinar el área y volumen de un cilindro dado su
9
 riayala@uc.cl
valor entero positivo N y determinar si es primo o no.
1.3 Conociendo la Calculadora | Capítulo 1
Programación en HP PPL
radio (R) y altura (H).
Ejemplo 10 Determinar la hipotenusa de un triángulo
rectángulo conocidas las longitudes de sus dos catetos.
Desarrolle el algoritmo correspondiente.
1.3 Conociendo la Calculadora
La calculadora gráfica HP Prime es una calculadora potente
de fácil uso, diseñada específicamente para la enseñanza de
matemáticas. Esta calculadora Ofrece cientos de funciones
y comandos e incluye un sistema algebraico computacional
(CAS, por sus siglas en inglés) para cálculos simbólicos.
Además de la amplia biblioteca de funciones y comandos, la
calculadora incluye un conjunto de aplicaciones de HP. Una
Figure 1.5 Calculadora HP PRIME
aplicación de HP es una aplicación especial diseñada para
ayudarle a explorar una rama concreta de las matemáticas
o para resolver un tipo de problema concreto.
Más adelante en este ejemplar se explica a detalle los
algoritmos, funciones, estructuras y comandos para crear
aplicaciones o programas.
Figure 1.6 Calculadora HP PRIME
La HP Prime es la más reciente generación de una
calculadora gráfica fabricada por Hewlett-Packard (HP).
Contiene
características
inteligentes,
comunes
de
los
teléfonos
con una pantalla táctil y aplicaciones
pre-incluidas con posibilidad de crear nuestras propias
aplicaciones.
Hay dos modos de cálculo, una pantalla
principal de cálculo numérico que se accede pulsando la
tecla H también conocida como vista HOME y una vista
 riayala@uc.cl
de cálculo simbólico que se accede pulsando la tecla C.
La calculadora HP Prime también dispone de su propio
lenguaje de programación que puede utilizar para explorar
Tabla 1.1 Leyenda del teclado
10
y resolver problemas matemáticos.
1.4 Características de la calculadora | Capítulo 1
Programación en HP PPL aplicado a la ingeniería civil
Figure 1.7 Conociendo la calculadora HP PRIME
1.4 Características de la calculadora
HP Prime es una calculadora gráfica introducida por
Hewlett-Packard en 2013 y actualmente fabricado por HP
Inc. Fue diseñado con características parecidas a las de los
teléfonos inteligentes , como a todo color de pantalla táctil
de visualización y la posibilidad de ampliar la funcionalidad
por medio de aplicaciones descargables.
1.4.1Diseño y software
La interfaz gráfica de usuario de HP Prime cuenta con dos
pantallas de inicio separadas, una de las cuales contiene un
sistema de álgebra computacional (CAS) integrado basado
en el motor de código abierto y gratuito Xcas/Giac 1.4.9.
La calculadora modelo G1 tiene una batería de 1500 mAh,
El modelo G2 viene con una batería con una capacidad de
2000 mAh.
11
 riayala@uc.cl
que se espera que dure hasta 15 horas con una sola carga.
1.5 Características del Emulador | Capítulo 1
Programación en HP PPL
1.4.1.1 Programación
La calculadora admite la programación en un nuevo
lenguaje
de
programación
similar
a
Pascal,
ahora
denominado PPL PRIME (para Prime Programming
Language, pero originalmente también conocido como
HP Basic) que también admite la creación de aplicaciones.
Esto se basa en un lenguaje introducido en el HP 38G y
construido en modelos posteriores.
Tabla 1.2 Características de la calculadora.
Fecha
Tipo de visualización
Tamaño de la pantalla
Procesador
Versión de Actualización
TFT LCD multitáctil a todo color
de 16 bits
320 × 240 píxeles (3.5 � / 8.9 cm
en diagonal)
G2: 528 MHz NXP i.MX 6ULL
MCIMX6Y2 ( núcleo Cortex A7 )
1.5 Características del Emulador
1.5.1Emulador de la calculadora HP PRIME
El emulador HP Prime es un programa para PC que copia la
interfaz de usuario, la pantalla y el teclado del HP Prime en
la PC.
 riayala@uc.cl
Figure 1.8 Emulador para S.O. Windows.
12
1.6 Características del Kit de conectividad | Capítulo 1
Programación en HP PPL aplicado a la ingeniería civil
Versiones del emulador
Tabla 1.3 Historial de versiones.
Fecha
Versión de Actualización
2018/10/31
v2.1.14181 (2018-10-16)
2018/07/22
v13865 (2018-07-06)
2018/02/21
v13441 (2018-02-12)
2018/02/01
v13333 (2018-01-24)
2017/02/11
v11226 (2016-12-08)
2016/09/11
v10637 (2016-08-29)
2013/12/22
Inicial
Dado que el emulador posee la misma funcionalidad que
el HP Prime, es posible preparar las lecciones en la PC y la
presentación de la calculadora mediante un proyector o una
pizarra.
1.6 Características
del
Kit
de
conectividad
Software basado en el S.O. Windows para conectarse a la
calculadora HP Prime. Versiones del kit de conectividad HP
Fecha
Versión de Actualización
2018/10/31
v2.1.14181 (2018-10-16)
2018/07/22
v13865 (2018-07-06)
2018/02/21
v13441 (2018-02-12)
2018/02/01
v13333 (2018-01-24)
2017/02/11
v11226 (2016-12-08)
2016/09/11
v10637 (2016-08-29)
2013/12/2
v5442 (2013-11-25)
2013/12/22
versión inicial
También es útil para la creación de programas ya que cuenta
13
 riayala@uc.cl
Tabla 1.4 Historial de versiones.
1.7 Notepad++ | Capítulo 1
Programación en HP PPL
con un editor de códigos HP PPL.
1.6.1Firmware de la calculadora HP PRIME
El firmware es una clase específica de software para la
calculadora HP PRIME que proporciona el control de bajo
nivel para el hardware específico del dispositivo.
Versiones del firmware de la calculadora HP PRIME
Tabla 1.5 Historial de versiones.
Fecha
Versión de Actualización
2018/10/31
v2.1.14181 (2018-10-16)
2018/07/22
v13865 (2018-07-06)
2018/02/21
v13441 (2018-02-12)
2018/02/01
v13333 (2018-01-24)
2017/07/14
v12066 (2017-07-10)
2016/09/11
v10637 (2016-08-29)
2013/12/22
versión inicial
El
firmware
proporciona
un
entorno
operativo
estandarizado para la HP PRIME, actúa como el sistema
operativo completo de la calculadora, realizando todas las
funciones de control, monitoreo y manipulación de datos.
1.7 Notepad++
Notepad ++ es un editor de código fuente gratuito que
admite varios idiomas. Al ejecutarse en el entorno de MS
Windows, su uso se rige por la licencia GPL.
Está basado en el componente de edición Scintilla, escrito en
C ++ y utiliza la API y STL de Win32 pura, lo que garantiza
 riayala@uc.cl
una mayor velocidad de ejecución y un tamaño de programa
más pequeño. Al optimizar tantas rutinas como sea posible
Figure 1.9 Logotipo programa
Notepad++
14
sin perder la facilidad de uso, Notepad++ utiliza menos CPU.
1.7 Notepad++ | Capítulo 1
Programación en HP PPL aplicado a la ingeniería civil
Para facilitar la programación en la calculadora HP PRIME,
se recomienda utilizar éste editor de códigos con una
configuración creada con la finalidad de escribir códigos
ordenados y computables para la calculadora HP Prime
Programming Language (HP PPL), ya que escribir códigos
en el kit de conectividad a veces es incómodo y no es muy
fácil de usar (sin soporte para buscar / reemplazar), por lo
que Notepad ++ es una opción mucho más amigable. Estos
archivos no solo agregan resaltado de sintaxis sino también
documentación para casi 600 funciones, mostrando la
sintaxis de los parámetros y descripciones detalladas a
medida que se escribe el código.
1.7.1Configuración de Notepad++
Figure 1.10 Importar un archivo de configuración a
Notepad++.

Sugerencia
De la figura 1.10 con el botón
Importar se puede llevar el
archivos Estilo-HPPRIME(RAB),
para poder configurar el
Lenguaje de programación
PPL PRIME en el programa
Estilo-HPPRIME(RAB), es el archivo de configuración
15
 riayala@uc.cl
Notepad ++.
1.7 Notepad++ | Capítulo 1
Programación en HP PPL
para la codificación del lenguaje HP PPL en el software
Notepad++. Este archivo se carga al programa desde el menú
Lenguaje -> Defina su Lenguaje y seleccionando el botón
Importar, tal como se muestra en la figura.
Este archivo, trae más de 600 funciones del lenguaje de
programación HP PPL para el resaltado de sintaxis en el
programa Notepad++, también se puede descargar desde la
página :
 riayala@uc.cl
https://www.hpcalc.org/details/7564.
16
Capítulo
2
Programación en
HP PPL
 Resumen
2.1
2.2
2.3
2.4
Estructura de comandos, 18
Comentarios, 19
Catalogo de programas, 19
Creación de un nuevo programa, 20
2.1 Estructura de comandos | Capítulo 2
Programación en HP PPL
Es un lenguaje que está orientado a secuencias que permiten
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
 Recordar
Los comandos que aceptan
Los programas pueden contener cualquier número de
subrutinas (cada una de las cuales es una función
varios argumentos incluyen a
estos últimos entre paréntesis,
o procedimiento).
Las subrutinas se inician con un
separados por comas (,).
encabezado que consta del nombre seguido por paréntesis
que contienen una lista de parámetros 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 , podría parecerse a esto:
 Recordar
Los comandos se separan con
punto y coma (;).
 Código 2.1: Hola Mundo
1
2
3
4
EXPORT MYPROGAM()
BEGIN
RETURN "Hola Mundo";
END;
Por ejemplo.

RECT_P()
Comando sin parámetros

TEXTOUT_P()
EXPORT MYPROGAM()
BEGIN
RECT_P(); //Comando RECT
TEXTOUT_P("Texto impreso",100, 100,3); //TEXTOUT_P
WAIT(2); //Comando WAIT
END;
Comando con 4 parámetros, 3
obligatorios y 1 opcional.

En ocasiones,
opcionales.
WAIT()
Comando con 1 parámetro
obligatorio.
los argumentos de un comando son
Si se omite un argumento, se utiliza un
valor predeterminado en su lugar. En el caso del comando
TEXTOUT_P(1,2,3,4,5,6,7,8);
podría utilizarse un cuarto, quinto,
 riayala@uc.cl
sexto, séptimo u octavo argumento que especificara una
característica del texto el cual es opcional, al igual que
el parámetro 2 ( [G] ), el cual hace referencia a la variable
18
2.2 Comentarios | Capítulo 2
Programación en HP PPL aplicado a la ingeniería civil
gráfica.
TEXTOUT_P(texto,[G],posicion x, posicion y, [fuente],[color 1],[ancho],[color 2]);
En este manual, los argumentos opcionales a los comandos
aparecen dentro de corchetes, como se ha mostrado
anteriormente. En el ejemplo TEXTOUT_P , la variable gráfica
(G) tiene un valor predeterminado que es G0 , que contiene
siempre la pantalla mostrada en ese momento.
Por lo
tanto, la sintaxis mas completa del comando contiene 8
parámetros entre obligatorios y opcionales.
En resumen se concluye que cada comando puede tener
parámetros obligatorios y opcionales.
2.2 Comentarios
Cuando una línea de un programa empieza con dos barras
diagonales, // , se ignorará el resto de la línea.
Esto le
permite introducir comentarios en el programa:
EXPORT MYPROGAM()
BEGIN
TEXTOUT_P("Conociendo los comentarios",100, 100,3);
//Esta linea es solo un comentario.
WAIT(2); //Otro comentario.
END;
2.3 Catalogo de programas
El catálogo de programas es donde se ejecutan, depuran
y guardan los programas. También se puede cambiar el
nombre de los programas o eliminarlos y es donde se inicia
el editor de programas.
programas. También se pueden ejecutar programas desde
Figure 2.1 Catálogo de programas
Vista de inicio o desde otros programas.
19
 riayala@uc.cl
El editor de programa es donde se crean y editan los
2.4 Creación de un nuevo programa | Capítulo 2
Programación en HP PPL
Ingresar al catálogo de programas : S + y
2.4 Creación 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.1Desde la HP PRIME (emulador y física)
Se sigue los siguientes pasos:
1 Abra el catálogo de programas (S + y) y seleccionar
el menú Nuevo.
2 Introduzca un nombre para el nuevo programa.
3 Presione OK. Se crea automáticamente una plantilla para
el programa. La plantilla consta de un encabezado para
 riayala@uc.cl
una función del mismo nombre que el programa, que
encerrará las instrucciones de la función.
20
2.4 Creación de un nuevo programa | Capítulo 2
Programación en HP PPL aplicado a la ingeniería civil
EXPORT HOLAMUNDO()
BEGIN
END;
2.4.2Desde el software de conectividad de
la HP PRIME.
Se sigue los siguientes pasos:
1 Abra el software de conectividad de la HP PRIME.
2 En Programas presione anticlick y seleccione en la
ventana que se abre la opción Nuevo introduzca el
nombre del programa y le teclee enter.
3 Se crea automáticamente una ventana nueva para el
programa.
Sugerencia:
Un nombre de programa solo puede contener caracteres
alfanuméricos (letras y números) y el carácter de
subrayado.
El primer carácter debe ser una letra.
Por ejemplo, hola_mundo y Programa2 son nombres
de programa válidos, mientras que holamundo (no
se permiten espacios) y 2Program (empieza con un
21
 riayala@uc.cl
número) no son válidos.
2.4 Creación de un nuevo programa | Capítulo 2
Programación en HP PPL
Figure 2.2 Vista de las herramientas de trabajo del
software Kit de Conectividad.
 riayala@uc.cl
Figure 2.3 Creación de un nuevo programa.
22
Capítulo
3
Variables y Objetos
 Resumen
3.1
3.2
3.3
3.4
3.5
3.6
3.7
Declaración de variables, 24
Variables Globales, 26
Variables locales, 30
Variables de aplicaciones y de usuario, 32
Identificadores de variables, 33
Operadores, 34
Palabras reservadas., 38
3.1 Declaración de variables | Capítulo 3
Programación en HP PPL
Una variable es un dato cuyo valor puede cambiar durante el desarrollo del algoritmo o
ejecución del programa. Es decir, representará un valor almacenado en la memoria que puede
modificarse en cualquier momento o conservarse para ser usado tantas veces como se desee.
Hay diferentes tipos de variables: enteras, reales, caracteres, cadenas, etc. Una variable que es
de cierto tipo y sólo puede tomar valores que correspondan a ese tipo. Si se intenta asignar
un valor de tipo diferente se producirá un error.
Las variables en el lenguaje de programación PPL PRIME pueden utilizarse para almacenar
números, listas, matrices, objetos de gráficos y cadenas. El nombre de una variable debe tener
una secuencia de caracteres alfanuméricos (letras y números), comenzado con una letra.
3.1 Declaración de variables
 Recordar
Los nombres reconocen
mayúsculas y minúsculas,
Todas las variables deben ser declaradas antes de ser usadas.
Cada variable por lo tanto tiene asociado un tipo , un
por lo tanto las variables
nombre
denominadas VarTem y varTEM
como identificadores palabras reservadas del lenguaje de
son diferentes.
programación HP PPL.
(identificador) y un
valor .
No se admiten
Existen 4 formas para declarar variables en el lenguaje de
programación PPL PRIME.
1 Fuera de todos los subprogramas o funciones (global
programa).
2 Dentro de un subprograma o función (local).
3 Como parámetro formal en una función (local).
4 Como parámetro de exportación (global calculadora).
Adicionalmente existen las Variables de Inicio, que están
declarados por defecto dentro de la calculadora.
 Recordar
En general los datos se dividen
 riayala@uc.cl
en estas categorías.
1. Numérico.
2. Cadenas.
3. Lógicos.
24
3.1.1Tipos de datos
Los diferentes objetos de información con los que un
programa trabaja se conocen colectivamente como datos.
Todos los datos tienen un tipo asociado con ellos; el tipo de
3.1 Declaración de variables | Capítulo 3
Programación en HP PPL aplicado a la ingeniería civil
un dato es el conjunto (rango) de valores que puede tomar
durante el programa.
Por ejemplo, el tipo de un dato determina la naturaleza del
conjunto de valores que puede tomar una variable. En la
tabla 3.1 apreciamos que cada tipo de dato en lenguaje HP
PPL está delimitado por un rango de valores.
El tipo de dato asociado a una variable limita el conjunto
de datos que puede almacenar, así como las operaciones
aplicables sobre esa variable. Por lo tanto NO se podrán
calcular operaciones propias de otros tipos de datos.
El lenguaje de programación PPL PRIME trabaja con varios
tipos de datos; los programas creados operan sobre éstos
procesándolos para solucionar un problema específico.
La asignación de tipos a los datos tiene dos objetivos
principales:
1 Detectar errores de operaciones en programas.
2 Determinar cómo ejecutar las operaciones.
Tipo
Definición
Ejemplo
Numérico
0
10.25
Binarios
♯entero[b]
♯11b
Hexadecimal
♯entero[h]
♯E4h
Cadena
“”
“Hola Mundo”
Compleja
(0,0)
(5,2)
Matriz
[[0]]
[[1,2][2,1]]
Vector
[0]
[2,1,3,10]
Lista
{}
{ 2,1,3,10 }
Expresión
’0’
’5’
25
 riayala@uc.cl
Tabla 3.1 Tipo dato predefinido en la calculadora HP
PRIME.
3.2 Variables Globales | Capítulo 3
Programación en HP PPL
3.1.2Reserva de memoria
 Recordar
Una variable es un lugar
Cuando declaramos una variable le estamos diciendo al
compilador que debe reservar espacio en la memoria de la
donde se puede almacenar
temporalmente un dato; las
calculadora, que a cada espacio en la memoria le asigne un
variables nos permiten guardar
nombre y un número determinado de bytes, dependiendo
información.
del tipo de dato asignado; también se le dice qué tipos de
datos puede almacenar. En PPL PRIME una variable es una
posición de memoria de la calculadora con nombre.
Las variables globales
1
2
Reservan memoria hasta 3
4
resetear la calculadora.
5
Las variables globales (programa): 6
7
Reservan memoria hasta 8
reiniciar calculadora. 9
10
Las variables locales: 11
(exportación):
EXPORT varA:
varB; varC;
EXPORT MYPROGAM()
LOCAL var1; //Real.
LOCAL var2:=""; //Cadena.
LOCAL var3:=(0,0); //Complejo.
LOCAL var4:=[0]; //Vector.
LOCAL var5:=[[0]]; //Matriz.
LOCAL var6:={}; //Lista.
LOCAL var7:='0'; //Expresion.
END;
Reservan memoria hasta
salir del programa donde
3.2 Variables Globales
se declaró dicha variable.
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) o
solo en el mismo programa..
“
Estos variables se clasifican en los siguientes tipos:
Cualquier variable global es
siempre culpable hasta que
se demuestre lo contrario.
3 Variables de inicio.
ser modificadas en cualquier
lugar dentro del código fuente,
 riayala@uc.cl
2 Variables globales de exportación.
— Martin Fowler
las variables globales pueden
por lo tanto hacen que los
programas sean más difíciles
de depurar y mantener.
26
1 Variables globales en un programa.
3.2.1Variables globales en un programa
Son aquellos variables que se declaran dentro de
un programa, y pueden ser utilizados en todos los
subprogramas o funciones de dicho programa.
3.2 Variables Globales | Capítulo 3
Programación en HP PPL aplicado a la ingeniería civil
3.2.1.1 ¿Cómo se declara?
Estas variables se declaran fuera de los subprogramas o
funciones y antes de ser utilizados.
En las línea de código 1 y 2 se
1
2
VarG1; //Variable Global sin asignar
VarG2:=5; //Variable Global asignado
3
4
5
6
EXPORT Ejemplo()
BEGIN
VarG1:=10+VarG2;
END;
7
8
9
10
Funcion1()
BEGIN
VarG1:=100+VarG2;
END;
11
12
13
14
Funcion2()
BEGIN
VarG1:=1000+VarG2;
END;
declaran las variables globales
VarG1 y VarG2 los cuales son
utilizadas en todo el programa.
3.2.2Variables globales de exportación
Son variables que después de ejecutar el programa, esta
puede ser exportada desde el programa utilizando el
comando EXPORT . Para hacer esto, el primer comando en el

Sugerencia
La declaración de este tipo de
variables se puede utilizar para
la creación de una pequeña
programa (es decir, en una línea por encima del nombre del
base de datos en el lenguaje de
programa) sería EXPORT Variable. Si se le asigna un valor a
programación PPL PRIME.
la Variable, el nombre aparece en el menú de variables a
y es visible de forma global. Esta característica permite una
interactividad amplia y poderosa entre diferentes entornos
de la calculadora HP Prime. Tenga en cuenta que si otro
programa exporta una variable con el mismo nombre, estará
activa la variable exportada con su valor asignado más
recientemente.
En el programa le solicita al usuario el valor de RADIUS y
exporta la variable para poder usarla fuera y también dentro
Figure 3.1 Variable global de
exportación
27
 riayala@uc.cl
del programa.
3.2 Variables Globales | Capítulo 3
Programación en HP PPL
1
EXPORT RADIUS;
2
3
4
5
6
7
EXPORT GETRADIUS()
BEGIN
LOCAL Area;
Area:=PI()*RADIUS^2;
RETURN Area;
END;
La figura 3.2.2 muestra a la variable RADIUS de forma global,
el cual ya puede ser exportado por otro programa.
3.2.3Variables de inicio
 Recordar
Estas variables no necesitan ser
declaras.
Son las variables que poseen nombres reservados en la
calculadora, es decir ya están declarados por defecto dentro
de la calculadora y no necesitan ser declarados nuevamente,
osea se puede usar de manera libre dependiendo del tipo da
de dato asignado por defecto.
 ¡Cuidado!
El dato almacenado en estas
Por ejemplo, las variables integradas A a Z pueden
variables puede ser modificado
utilizarse para almacenar números reales, Z0 a Z9 pueden
por otro programa que utilice
utilizarse para almacenar números complejos, M0 a M9
dicha variable.
pueden utilizarse para almacenar matrices y vectores y así
sucesivamente. Estos nombres están reservados. No se
pueden usar para otros datos. Por ejemplo, no puede darle
a un programa el nombre M1ni almacenar un número real
en una variable denominada Z8.
 riayala@uc.cl
Estos variables se clasifican en los siguientes tipos:
Nro
Tipo
1
Real (A, B, C...Z)
2
Complejos (Z0, Z1, Z2...Z9)
3
Listas (L0, L1, L2...L9)
4
Matrices (M0, M1, M2...M9)
5
Gráficos (G0, G1, G2...G9)
6
Configuración
7
Sistema
Tabla 3.2
28
Leyenda del teclado
1. Reales.
3.2 Variables Globales | Capítulo 3
Programación en HP PPL aplicado a la ingeniería civil
2. Complejos.
3. Listas.
Estos nombres están reservados
solo para el tipo LISTA y no se
pueden usar para otros tipos de
datos.
4. Matrices.
Estos nombres están reservados
solo para el tipo MATRIZ y no se
pueden usar para otros tipos de
datos.
Estos nombres están reservados
solo para el tipo MATRIZ y no se
pueden usar para otros tipos de
datos.
29
 riayala@uc.cl
5. Gráficos.
3.3 Variables locales | Capítulo 3
Programación en HP PPL
6. Configuración.
7. Sistema.
3.2.3.1 ¿Cómo se utilizan?
Estas variables se utilizan según el tipo de dato asignado por
una operación, por ejemplo, si se desea sumar dos números
reales puede asignarse con la variable A , y si se desea
realizar operaciones con matrices se debe asignar con la
variable M1 .
Figure 3.2 Resultados del
programa VarInicio
1
2
3
4
5
6
EXPORT VarInicio()
BEGIN
A:=10 + 20;
M1:=[[1,1],[1,1]] + [[2,2],[2,2]];
RETURN {A,M1};
END;
3.3 Variables locales
 Recordar
Las variables locales hacen que
 riayala@uc.cl
los programas sean más fáciles
de depurar y mantener.
En un programa puede declarar variables para usar solo
dentro de una función específica. El uso de variables locales
le permite declarar y utilizar variables que no afectarán
el resto de la calculadora. Las variables locales no están
vinculadas a un tipo particular; es decir, puede almacenar
30
números reales, enteros, listas, matrices y expresiones
simbólicas en una variable con cualquier nombre local.
 ¡Cuidado!
Estos variables se clasifican en los siguientes tipos:
Aunque el sistema te permite
1 Variables locales dentro de un subprograma o función.
2 Variables locales como parámetro formal.
almacenar distintos tipos en la
misma variable local, esto es una
mala práctica de programación y
3.3 Variables locales | Capítulo 3
Programación en HP PPL aplicado a la ingeniería civil
debe ser evitada.
Estas variables dejan de existir una vez que la función es
ejecutada. Las variables locales se vuelven a crear cada
vez que la función es llamada, o ejecutada. Estas variables
no son accesibles para otras funciones o para el programa
principal y, como tal, por lo general están implementados
utilizando un tipo especial de estructura de datos, conocido
como pila.
3.3.1Variables
locales
dentro
de
un
subprograma o función
Para declarar las variables locales de este grupo se utiliza el
comando LOCAL , considerando que primero se debe declarar
 ¡Cuidado!
Máximo se puede declarar 8
variables con el comando LOCAL.
la variable para luego ser utilizada.
La sintaxis para declarar este tipo de variables es la
 Recordar
No se puede repetir la
siguiente:
declaración de una misma
variable en una sola línea.
EXPORT VarLocal()
BEGIN
LOCAL Var1, Var2, Var3, ..., Var8;
//Solo se podran utilizar en esta funcion.
RETURN Var8;
END;
7
8
9
10
11
12
Funcion1()
BEGIN
LOCAL Var1:=5, Var2:=[0], Var3:={0};
//Solo se podran utilizar en esta funcion.
RETURN Var2;
END;
Como
se
mencionó
anteriormente
 Recordar
Todo los tipos de variable
pueden ser asignados con algún
tipo de dato, ya sea numérico,
matriz, vector, lista, etc. Tal
como se muestra en la linea 9
del programa VarLocal.
y
para
realizar
operaciones con las variables es necesario declararlo
con un valor inicial vació o algún valor que se le puede
31
 riayala@uc.cl
1
2
3
4
5
6
3.4 Variables de aplicaciones y de usuario | Capítulo 3
Programación en HP PPL
asignar dependiendo al tipo de dato que se desea utilizar en
el programa. Esto también es funcional para las variables
globales.
 Recordar
Todos los tipos de variables
1
2
pueden ser una combinación
3
4
de letras, números, caracteres,
5
símbolos sin dejar espacios entre 6
7
ellos.
8
9
10
EXPORT Variables()
BEGIN
LOCAL var1;
LOCAL var2:="";
LOCAL var3:=(0,0);
LOCAL var4:=[0];
LOCAL var5:=[[0]];
LOCAL var6:={};
LOCAL var7:=`0`;
END;
3.3.2Variables locales como parámetro
formal
Otra manera de declarar las variables locales es como un
parámetro de una función creada dentro del programa, a
continuación, se muestra un ejemplo de ello.
La función VarParametro tiene
3 parámetros (Var1,Var2,Var3)
que se comportarán
como variables locales.
1
2
3
4
5
6
7
EXPORT VarParametro(Var1,Var2,Var3)
BEGIN
Var1:= 2+2;
Var2:= Var1^3;
Var3:= Var2+Var1;
RETURN Var3;
END;
3.4 Variables de aplicaciones y de
usuario
Las aplicaciones y programas creados en el lenguaje de
programación PPL PRIME contienen variables creados por
defecto o con el comando EXPORT .
 riayala@uc.cl
3.4.1Variables de aplicaciones.
Son las variables que se utilizan para almacenar datos en
Figure 3.3 Variables de
aplicaciones
32
las aplicaciones o para cambiar la configuración de la
3.5 Identificadores de variables | Capítulo 3
Programación en HP PPL aplicado a la ingeniería civil
aplicación. Poseen nombres reservados y no pueden ser
creados por el usuario.
3.4.2Variables de usuario
Son variables creadas por el usuario. Puede crear variables
de usuario en un programa o por asignación en la vista de
inicio.
Las variables de usuario creadas por asignación o
exportadas desde un programa aparecerán en el menú
de usuario Vars.
Figure 3.4 Variables de usuario.
3.5 Identificadores de variables
Son valores asignados en una variable para ser operados
dentro de un programa.
Tipo de objetos o identificadores de variables.
Valor asignad
Nombre objeto
0
Real
1
Entero
2
Cadena
3
Compleja
4
Matriz
5
Error
6
Lista
8
Función
9
Unidad

Sugerencia
Estos objetos sirven en la
creación de formularios para
el ingreso de un tipo específico
de dato.
33
 riayala@uc.cl
Tabla 3.3
3.6 Operadores | Capítulo 3
Programación en HP PPL
Vimos que podíamos definir variables, ahora estas variables
están asociarlas a un tipo de objeto específico del lenguaje
PPL PRIME, estos objetos se muestran en la tabla 3.3.
3.6 Operadores
Un operador es un símbolo que permite relacionar dos datos
en una expresión y evaluar el resultado de la operación.
La calculadora HP PRIME se apoyan esencialmente en
la realización de numerosas operaciones aritméticas y
matemáticas de diferente complejidad.
Los operadores
fundamentales son:
1 Aritméticos.
2 Relacionales.
3 Lógicos.
4 Asignación.
3.6.1Operadores aritméticos.
 Recordar
alt + 92 : ˆ
alt + 47: /
Los operadores aritméticos +, −, *, /, ^ pueden ser utilizados
con tipos enteros, reales, matrices, listas y sirven para
realizar operaciones aritméticas básicas. Por ejemplo si
a:=15 y b:=5 , vemos los resultados con los diferentes
operadores aritméticos.
3.6.2Operadores relacionales
 Recordar
alt + 60 : <
alt + 62 : >
alt + 61 : =
Describen una relación entre dos valores; por lo tanto, se
usan para expresar condiciones y comparar dos valores. El
resultado de una expresión relacional es un valor tipo lógico
 riayala@uc.cl
o booleano, sólo puede ser verdadero o falso. El lenguaje
HP PPL representa como verdadero el valor 1 y como falso
el valor 0.
relacionales.
34
En la tabla 3.4 se muestran los operadores
Tabla 3.4
3.6 Operadores | Capítulo 3
Programación en HP PPL aplicado a la ingeniería civil
Tipo de operadores relacionales.
Valor asignado
Nombre objeto
>
Mayor que
<
Menor que
== , =
Igual que
>= , ≥
Mayor o igual que
<= , ≤
Menor o igual q ue
≠
Distinto a
3.6.3Operadores lógicos
Las expresiones lógicas1 pueden combinarse para formar
1. Para la evaluación de expresiones
expresiones más complejas utilizando los operadores
lógicas es importante conocer la
lógicos. En la tabla 3.5 se muestran dichos operadores. Estos
tabla de verdad.
operadores trabajan con operandos que son expresiones
lógicas.
Tabla 3.5
Tipo de operadores relacionales.
Valor asignado
Nombre objeto
AND
y
OR
o
NOT
no
3.6.4Operadores de asignación
El operador de asignación permite evaluar una expresión
y asignar el resultado en una variable. El en lenguaje de
programación PPL PRIME, existen dos maneras de asignar
una expresión como se muestra a continuación .
Con la asignación anterior le estaremos indicando a la
calculadora que evalúe la expresión y la almacene en la
variable que define el identificador . Estos operadores
35
 riayala@uc.cl
Identificador:=Expresion;
ExpresionIdentificador;
3.6 Operadores | Capítulo 3
Programación en HP PPL
permiten transferir el dato de una variable a otra.
3.6.5Ejemplo de operadores
En el código 3.1 se muestra el uso de los operadores mas
utilizados en la programación.
 Código 3.1: Operadores
Figure 3.5 Resultados del
programa Operadores
1
2
3
4
5
6
7
8
9
10
11
EXPORT Operadores()
BEGIN
LOCAL r,m,l,e,a:=5,b:=4,c:=2,d:=9;
LOCAL y;
r:=a^b;//Asignacion y operadores aritmetico.
a+bm; //Asignacion y operador aritmetico.
l:=b>d; //Operador relacionales.
e:=r<c; //Operador relacionales.
y:=l AND e; //Operador logico.
RETURN {r,m,l,e,y};
END;
3.6.6Operaciones con cadenas
Los caracteres son un tipo de datos que siempre deben estar
declarados entre comillas (“ ”), generalmente sirven para la
impresión de textos, fórmulas, y o ayudas en los formularios
Figure 3.6 Resultados del
programa CTEXTOUT
de entradas.
Una cadena puede concatenarse con los diferentes tipos
de datos que existen, dándonos como resultado una nueva
variable del tipo cadena, por ejemplo:
Figure 3.7 Resultados del
programa CPRINT
1
2
3
4
5
6
7
>> "a"+2 = "a2"
>> "a"+2.25 = "a2.22"
>> "a "+2 = "a 2"
>> "a+"+2 = "a+2"
>> "a"+{1,2,3} = "{a1,a2,a3} "
>> "a"+[1,2,3] = "a[1,2,3]"
>> "Resultado="+10 = "Resultado=10"
También existen diferentes comandos para trabajar con las
 riayala@uc.cl
cadenas.
1 Cadenas en comando PRINT.
Figure 3.8 Resultados del
programa CMSGBOX
36
3.6 Operadores | Capítulo 3
Programación en HP PPL aplicado a la ingeniería civil
EXPORT CPRINT()
BEGIN
LOCAL Var:=10000;
PRINT();
PRINT("La Variable A = " + Var + " metros");
END;
2 Cadenas en el comando TEXTOUT.
EXPORT CTEXTOUT()
BEGIN
LOCAL Var:=10;
RECT();
TEXTOUT_P(" A = " + Var + " metros", 10, 10 ,1);
WAIT;
END;
3 Cadenas en el comando MSGBOX.
EXPORT CMSGBOX()
BEGIN
LOCAL Var:=10;
MSGBOX("La Variable A = " + Var + " metros");
END;
A continuación se conocerá algunos comandos con lo que
podrás manejar las variables de tipo cadena.
Comando STRING Evalúa una expresión y devuelve el
resultado como una cadena.
Si se especifica el Modo, debe ser los valores de la tabla 3.3.
Sintaxis: STRING(Expresión,[Modo],[Precision],[Separador])
Los
parámetros
[Modo],
[Precision]
y
[Separador]
especifican cómo se muestran los números.
37
 riayala@uc.cl
Figure 3.9 Resultados del comando STRING.
3.7 Palabras reservadas. | Capítulo 3
Programación en HP PPL
Ejemplo STRING en Home
3.1
STRING(F1), F1(X) = COS(X) devuelve "COS(X)"
STRING(2/3), devuelve 0,666666666667
STRING(M1), devuelve "[[1,2,3], [4,5,6]]"
Comando DIM
Devuelve el número de caracteres de
cadena o las dimensiones de la Matriz.
Sintaxis: DIM(cadena)o DIM(matriz)
Ejemplo DIM en Home
3.2

DIM("12345") devuelve 5
DIM([[1,2],[4,5],[7,8]]) devuelve {3,2}
DIM({"12345","HP PRIME"}) devuelve {5,8}
Recordar
Si n>DIM(str) o n<0 , DIM
Comando LEFT
Dada una cadena y un número entero n,
devuelve la cadena completa.
devuelve los primeros caracteres n de la cadena.
Sintaxis: LEFT(str,n)
Ejemplo LEFT en Home
3.3

LEFT("HP−PRIME",3) devuelve "HP−"
LEFT("HP−PRIME",−1) devuelve "HP−PRIME"
LEFT("PRIME",7) devuelve "PRIME"
Sugerencia
En tu programa puedes
Comando CHAR
utilizar este comando para
códigos de caracteres UNICODE numéricos en Lista o Vector.
para convertir tus datos de
tipo cadena a un caracteres
UNICODE.
Devuelve la cadena correspondiente a los
Sintaxis: CHAR(vector), CHAR(entero)o CHAR(lista)
Ejemplo CHAR en Home
3.4
CHAR([82,77,72]) devuelve "RMH"
CHAR({52,67,89,52,52}) devuelve "4CY44"
3.7 Palabras reservadas.
Son palabras propias del lenguaje, ya que el creador del
 Recordar
Existen más de 600 funciones
 riayala@uc.cl
que ya tienen sus palabras
reservadas, por lo tanto no
pueden ser declaras como
variables.
38
mismo les dio un uso específico. No se pueden utilizar como
identificadores.
Tabla 3.6
3.7 Palabras reservadas. | Capítulo 3
Programación en HP PPL aplicado a la ingeniería civil
Tipo de objetos o identificadores de variables.
Lenguaje PPL PRIME
Función que realiza
COS
Calcula el coseno de un ángulo.
SIN
Calcula el seno de un ángulo.
COT
Calcula la cotangente de un ángulo.
CSC
Calcula la cosecante de un ángulo.
DET
Calcula el determinante de una matriz.
EXP
eX
TAN
Calcula la tangente de un ángulo.
LOG
Calcula el logaritmo de un número.
LU
Realiza la factorización de una matriz.
SQRT
Calcula la raíz cuadrada
ABS()
Calcula el valor absoluto
39
 riayala@uc.cl
...
 riayala@uc.cl
3.7 Palabras reservadas. | Capítulo 3
Programación en HP PPL
40
Capítulo
4
Estructuras
Secuenciales y
Manejo de Gráficos
 Resumen
4.1
4.2
4.3
4.4
Ingreso de datos, 42
Salida de datos, 50
Introducción al manejo de gráficos, 54
Ejercicios, 72
4.1 Ingreso de datos | Capítulo 4
Programación en HP PPL
En este capítulo aprenderemos cómo ingresar valores por el teclado y/o pantalla y hacer que
estos se guarden en variables. Nos permitirá hacer programas cuya ejecución cambie según
un valor que ingresemos.
4.1 Ingreso de datos

Ingreso de datos
Consiste en asignar a una o más
variables, uno o más valores
(datos) recibidos desde el
exterior.
La entrada de datos consiste en colocar en la memoria
principal datos provenientes desde algún dispositivo de
entrada ( teclado, pantalla, etc. ) para que la calculadora,
de acuerdo a un programa, realice una tarea.
Existen Muchas maneras de ingreso de datos en la creación
de programas; el más simple es utilizando el comando
INPUT
con sus diferentes variables, también se puede
realizar el ingreso de datos a través de la pantalla táctil
de la calculadora y uno más avanzado es con la creación
formularios interactivos.
Entonces tenemos las siguientes maneras para el ingreso de
datos en el lenguaje de programación PPL PRIME.
1 Ingreso de datos como parámetro de una función.
2 Ingreso de datos con el comando INPUT .
3 Ingreso de datos con el comando CHOOSE .
4 Ingreso de datos a través de la pantalla táctil.
5 Ingreso de datos con formularios interactivos.
6 Ingreso de datos a través de matrices y vectores.
4.1.1Ingreso de datos como Función
Los programas más simples no necesitan de la creación
de formularios basta con la asignación de variables para
poder operar y funcionar adecuadamente. Esto se puede
 riayala@uc.cl
realizar mediante el ingreso de datos como parámetro de
una función.
Al momento de crear un programa se le asigna al nombre
42
4.1 Ingreso de datos | Capítulo 4
Programación en HP PPL aplicado a la ingeniería civil
del programa los parámetros que serían las variables
del programa.
Esto quedaría de la siguiente manera;
EXPORT−RArea(b,h) , donde b y h son las variables locales del
programa.
Ejemplo Propiedades geométricas de un rectángulo
4.1
Elabore un programa el cual calcule las propiedades
geométricas de un rectángulo, dado su base y altura como
dato de ingreso.
Solución:
El código 4.1 calcula las propiedades dinámicas de un
rectángulo.
 Código 4.1: RArea
5
6
7
8
9
10
11
EXPORT RArea(b,h)
BEGIN
//Declarando las variables locales utilizadas.
LOCAL Area,Perimetro,Inercia;
//Proceso de calculo.
Area:=b*h;
Perimetro:=2*b+2*h;
Inercia:=b*h^3/12;
Figure 4.1 Programa RArea desde
HOME
//Salida de datos.
RETURN {"A="+Area,"2P="+Area,"I="+Area};
END;
4.1.2Comando INPUT
Este
comando
permite
crear
un
formulario
más
desarrollado para el ingreso de datos
Figure 4.2 Formulario del ingreso
de datos programa RArea
La forma más sencilla de este comando abre un cuadro de
diálogo con el título dado y un campo denominado etiqueta,
y muestra el contenido de ayuda en la parte inferior. El
cuadro de diálogo incluye las teclas de menú CANCEL y OK.
Se puede ingresar un valor en el campo etiquetado.
En las formas más complejas del comando, se utilizan listas
para crear un cuadro de diálogo con varios campos. Si las
Figure 4.3 Resultados del
programa RArea
variables son una lista, cada elemento puede ser un nombre
43
 riayala@uc.cl
1
2
3
4
4.1 Ingreso de datos | Capítulo 4
Programación en HP PPL
de variable o una lista que usa la siguiente
Sintaxis Forma simple I:
INPUT(Var,tit,etiq)
Forma simple II:
INPUT(Var,tit,etiq,ayud,reset,ini)
Forma compleja I:
INPUT({Var},{tit},{etiq})
Forma compleja II:
INPUT({Var},{tit},{etiq},{ayud},{reset},{ini})

Propiedades de Var
{ Aa ,[0] ,{25,30,0} } → Caja real.
{ Bb ,[1] ,{25,30,1} } → Caja
donde:
Var : Propiedades de las Variables para cada caja de entrada.
tit : Titulo del formulario (cadena).
entero.
{ Cc ,[6] ,{25,30,2} } → Caja lista.
{ Dd ,{”a”} ,{25,30,3} } → Choose.
{ Ee ,0 ,{25,30,4} } → Check.
etiq : Etiqueta para cada caja de entrada (cadena).
ayud : Textos de ayuda para cada caja de entrada (cadena).
reset : Datos de reseteo para cada caja de entrada.
ini : Datos de inicio para cada caja de entrada.
Con respecto a las propiedades de las variables Var para
cada caja de entrada, este tendrá 3 parámetros obligatorios
Var={1,2,3} de los cuales se detallará.
Parámetro 1. Variables asignadas para cada caja de entrada.
Parámetro 2. Tipo de ingreso ([objeto]=cajas de entrada, 0= caja tipo
check, { cadenas } = entrada tipo choose).
Parámetro 3. Dimensiones y posición de las diferentes tipos de
entrada {tamaño, posición x, nivel }.
Ejemplo Area de un círculo - INPUT simple
4.2
Programa que calcula el área de un círculo, dado radio
como dato de ingreso.
Solución:
 riayala@uc.cl
El código 4.2 calcula el área de un círculo.
Figure 4.4 Ingreso de datos del
programa CArea
44
4.1 Ingreso de datos | Capítulo 4
Programación en HP PPL aplicado a la ingeniería civil
 Código 4.2: RArea
1
2
3
4
5
6
7
EXPORT CArea()
BEGIN
LOCAL radio,area;
INPUT(radio, "Area","R = ","Ingrese radio",1);
area:=PI()*radio^2;
RETURN area;
END;
La forma mas simple del comando INPUT no necesita detallar
la propiedades de las cajas de entrada de la variable.
Ejemplo Forma completa
4.3
Elabore un código que permita crear un formulario de
ingreso de datos con todos los parámetros del comando
INPUT.

Sugerencia
Puede utilizar estos códigos
Solución:
Estructura del comando INPUT:
como referencia(plantilla) para
crear formularios de entrada con
el comando INPUT
 Código 4.3: RInput
EXPORT RInput
BEGIN
LOCAL Aa,Bb, Cc,Dd,Ee;
INPUT
(
{
{Aa,[0],{40,30,0}},
{Bb,[1],{40,30,1}},
{Cc,[6],{40,30,2}},
{Dd,{"EscA","EscB","EscC"},{40,45,3}},
{Ee,0,{40,0,5}}
},
"TITULO DEL FORMULARIO",
{
"Etiqueta 1: ",
"Etiqueta 2: ",
"Etiqueta 3: ",
"Etiqueta 4: ",
"Etiqueta 5: "
},
{
"Ayuda 1",
"Ayuda 2",
"Ayuda 3",
"Ayuda 4",
"Ayuda 5"
},
{2.5,20,{2,5},2,0},
{2.5,20,{2,5},2,0}
);
END;
Figure 4.5 Ejecución del
programa RInput
Figure 4.6 Ejecución del
programa RInput
 ¡Cuidado!
Posición X + Tamaño < 100,
para no tener problemas con la
compilación del programa.
45
 riayala@uc.cl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
4.1 Ingreso de datos | Capítulo 4
Programación en HP PPL
Las variables Son asignadas de la siguiente manera.
{Aa,[0],{40,30,0}}
donde:
Aa : Variable asignada para la caja de entrada 1.
[0] : Tipo de objeto ([0] = real,
[6] = lista,[1] =
entero) ver tabla 3.3.
{40,30,0} : {Tamaño, Posición X, Nivel}
Tamaño caja = 40 ; Posición X = 30 ; nivel = 0.
{Dd,{"Esc A","Esc B","Esc C"},{40,45,3}}
donde:
Dd : Variable.
{"Esc A","Esc B","Esc C"} : entrada choose.
{40,45,3} : {Tamaño, Posición X, Nivel}
Tamaño caja = 40 ; Posición X = 45 ; nivel = 3.
{Ee,0,{40,0,5}}
donde:
Ee : Variable asignada para la caja de entrada 5.
0 : Caja tipo Check.
{40,0,5} : {Tamaño, Posición X, Lineas Y}
Tamaño caja = 0 ; Posición X = 40 ; nivel = 5.
4.1.3Comando CHOOSE
Este comando muestra un cuadro de elección con los
parámetros obligatorios
"titulo"
y los parámetros o
elementos con las cadenas "elem1","elem2",...,"elemn" .
Si el usuario selecciona un objeto, las variables var
se actualizarán para contener el número del objeto
 riayala@uc.cl
seleccionado (un número entero, 1, 2, 3,...); de lo contrario,
almacena 0 en var esto pasa si el usuario sale sin realizar
una selección.
46
4.1 Ingreso de datos | Capítulo 4
Programación en HP PPL aplicado a la ingeniería civil
Sintaxis CHOOSE(var, "titulo", "elem1", "elem2",...,"elemn")
Ejemplo Forma completa
4.4
Programa que ejcute el comando, después de ejecutar
wl comando CHOOSE, el valor de N se actualizará para
contener 0, 1, 2 o 3. El comando IF THEN ELSE hace que
el nombre de la persona seleccionada se imprima en el
terminal.
Solución:
Código del programa:
 Código 4.4: PChoose
EXPORT PChoose()
BEGIN
CHOOSE(N, "SeleccionarHero", "Euler", "Gauss", "Newton");
IF N==1 THEN
PRINT("Ha seleccionado Euler");
ELSE
IF N==2 THEN
PRINT("Ha seleccionado Gauss");
ELSE
PRINT("Ha seleccionado Newton");
END;
END;
END;
4.1.4Pantalla táctil
Figure 4.7 Ejecución del
programa PChoose
Figure 4.8 Ingreso de datos a
través de la pantalla táctil
La calculadora HP PRIME permite el ingreso de datos a través
de su pantalla táctil, para ello utiliza los comandos MOUSE y
WAIT , en capítulos posteriores se desarrollara a detalle este
tipo de ingreso de datos.
También se debe conocer el manejo de los gráficos
Figure 4.9 Ejemplo 1 de
formularios Interactivos
en la programación, ya sea en coordenadas de pixel o
coordenadas cartesianas, entendiendo todo referido a la
declaración de variables gráficas y el uso del comando BLIT .
4.1.5Formularios interactivos
Este tipo de ingreso de datos consiste en crear un formulario
personalizado al gusto del programador. Al igual que el
Figure 4.10 Ejemplo 2 de
formularios Interactivos
47
 riayala@uc.cl
1
2
3
4
5
6
7
8
9
10
11
12
13
4.1 Ingreso de datos | Capítulo 4
Programación en HP PPL
ingreso a través de la pantalla táctil la creación de este tipo
de formularios necesita un conocimiento avanzado sobre
programación el cual se irá desarrollando en cada capítulo
de este libro.
4.1.6Ingreso de datos a través de matrices y
vectores
También se puede personalizar el ingreso y salida de datos
a través de matrices, vectores y listas, para ello se utiliza los
comandos EDITMAT y EDITLIST .
4.1.6.1 Comando EDITMAT
Permite editar o ver una matriz específica. Este comando
devuelve la matriz editada al finalizar. En programación nos
permitirá ingresar y editar datos tipo matrices.
Sintaxis Forma básica.
EDITMAT(matriz);
Forma avanzada.
EDITMAT(matriz,{"TITULO",{"Fila"},{"Columna"}},[Var]);
Si Var=0 , la matriz quedará bloqueada y será de solo lectura.
Figure 4.11 Ejecución del
programa iMatriz
Ejemplo EDITMAT
4.5
Programa para el ingreso de datos a través de una matriz.
Solución:
Código del programa:
 Código 4.5: iMatriz
 riayala@uc.cl
Figure 4.12 Ejecución del
programa iMatriz
48
1
2
3
4
5
6
EXPORT iMatriz()
BEGIN
M1:=[[2,2],[3,3]];
M2:=EDITMAT(M1);
M3:=EDITMAT(M1,{"TITULO",{"F1","F2",""} ,{"C1","C2",""}});
END;
4.1 Ingreso de datos | Capítulo 4
Programación en HP PPL aplicado a la ingeniería civil
4.1.6.2 Comando EDITLIST
Permite editar o ver una listas específica. Este comando
devuelve la listas editada al finalizar. En programación nos
permitirá ingresar y editar datos tipo listas.
Sintaxis Forma básica.
EDITLIST(matrizvar);
Forma avanzada.
EDITMAT(matriz,"TITULO",[Var]);
Si Var=0 , la lista quedará bloqueada y será de solo lectura.
Ejemplo EDITLIST
4.6
Programa para el ingreso de datos a través de una iLista.
Figure 4.13 Ejecución del
programa iLista
Solución:
Código del programa:
 Código 4.6: iLista
EXPORT iLista()
BEGIN
L1:={1,2,3,4,5};
L2:=EDITLIST(L1);
END;
4.1.7Ejercicios
Para cada caso, realizar el código fuente en el lenguaje PPL
PRIME de los formularios mostrados.
Ejercicio 1
Realizar el código fuente para el siguiente
formulario.
49
 riayala@uc.cl
1
2
3
4
5
4.2 Salida de datos | Capítulo 4
Programación en HP PPL
Ejercicio 2
Realizar el código fuente para el siguiente
formulario.
Ejercicio 3
Realizar el código fuente para el siguiente
formulario.
4.2 Salida de datos
 Salida de datos
Consiste en llevar hacia el
exterior los valores (datos)
Los datos de salida son datos derivados, es decir, obtenidos
a partir de los datos de entrada.
Por esta razón, a los
obtenidos de la evaluación de un
datos de salida se les considera más significativos que a los
conjunto de expresiones.
datos de entrada. Ambos tipos de datos son información
(textos y imágenes) que maneja la calculadora. Sin embargo,
en un sentido más filosófico, a los datos de entrada se
les considera la materia prima de los datos de salida,
considerados estos como la verdadera información.
Al igual que el ingreso de datos la calculadora presenta
una gama de formatos de salida de datos por defecto y
personalizadas entre ellos tenemos.
 riayala@uc.cl
1 Comando MSGBOX .
2 Comando PRINT .
3 A través de Gráficos.
50
4.2 Salida de datos | Capítulo 4
Programación en HP PPL aplicado a la ingeniería civil
4 A través de matrices y listas.
4.2.1Comando MSGBOX
Muestra un cuadro de mensaje con el valor de la expresión
o cadena dada, en donde muchas veces se utiliza la
concatenación de cadenas para obtener etiquetas en los
resultados.
Sintaxis Forma I.
MSGBOX(expresion,[ok−cancel]);
Forma II.
MSGBOX(cadena,[ok−cancel]);
Si ok−cancel=1 (verdadero), muestra las teclas de menú OK Y
CANCELAR el caso contrario muestra solo la tecla del menú
OK.
Figure 4.14 Ingreso del valor R =
10
Ejemplo Área de un circulo.
4.7
Programa que calcula el área de un círculo, dado radio
como dato de ingreso el radio.
Solución:
Código del programa:
 Código 4.7: ACir
1
2
3
4
5
6
7
EXPORT ACir()
BEGIN
LOCAL radio,ar;
INPUT(radio,"Radio:","R = ","Radio(m)",1);
ar:=PI*radio^2;
MSGBOX("El area del circulo es:" + ar + " m2");
END;
Figure 4.15 Ejecutando el
programa: Impresión a través de
MSGBOX
1. El terminal es un mecanismo de
visualización de la salida de texto
de un programa que muestra solo
cuando se ejecutan los comandos
Imprime el resultado de una expresión o cadena en el
terminal1 . También se utiliza la concatenación de cadenas
para obtener etiquetas en los resultados.
Sintaxis Forma I.
PRINT(expresion);
PRINT.
 Recordar
Para crear una pantalla nueva
se debe escribir el siguiente
comando, PRINT(); (Borrar el
terminal) esto para no generar
impresiones anteriores hechas
con PRINT .
51
 riayala@uc.cl
4.2.2Comando PRINT
4.2 Salida de datos | Capítulo 4
Programación en HP PPL
Forma II.
PRINT(cadena);
Si ok−cancel=1 (verdadero), muestra las teclas de menú OK Y
CANCELAR el caso contrario muestra solo la tecla del menú
OK.
Ejemplo Área de un circulo.
4.8
Programa que calcula el área de un círculo, dado radio
Figure 4.16 Ingreso del valor R =
10
como dato de ingreso el radio.
Solución:
Código del programa:
 Código 4.8: ACir
Figure 4.17 Ejecutando el
programa: Impresión a través de
PRINT
1
2
3
4
5
6
7
8
EXPORT AREACALC()
BEGIN
LOCAL radio,ar;
INPUT(radio, "R:","R = ","Radio(m)",1);
ar:=PI*radio^2;
PRINT();
PRINT("El radio es: " +ar);
END;
4.2.3Salida de datos a través de gráficos.
El manejo de gráficos permiten realizar la salida o impresión
de datos y resultados ya sea de manera textual o gráfica.
Para obtener un resultado textual generalmente se utiliza
el comando TEXTOUT_P , y otros comandos más para los
resultados gráficos.
 riayala@uc.cl
Figure 4.18 Vista de resultados de manera textual y
gráfica.
52
4.2 Salida de datos | Capítulo 4
Programación en HP PPL aplicado a la ingeniería civil
4.2.4Ejercicios resueltos
Ejercicio 4.1
Momento de Inercia.
Realizar un programa donde se calcule el momento de
inercia geométrico de un rectángulo con respecto al
eje X y Y.
1. Variables de entrada:
Longitud de Base del
rectángulo y altura del rectángulo.
2. Proceso: Calculo de Momentos de inercia.
3. Salida de datos: Momento de inercia con respecto
al eje X y Y.
Solución:
Código del programa.
 Código 4.9: Momento de Inercia
EXPORT MI()
BEGIN
//1 ‐>Declaracion de variables.
LOCAL a , b, Ix, Iy, Icg;
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//2 ‐>Ingreso de datos.
INPUT
(
{
{a ,[0],{ 25,25,0}},
{b ,[0],{ 25,20,1}}
},
"MOMENTO DE INERCIA" ,
{
" Base: " ,
" Altura : "
},
{
" Ingrese la base del rectangulo (cm)" ,
" Ingrese la altura del rectangulo (cm)"
},
{25,20 },
{25,20 }
);
24
25
26
27
//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;
28
29
30
//4 ‐>Salida de datos.
PRINT(); //‐>limpiar pantalla
PRINT(" CALCULO DE MOMENTO DE INERCIA");
Figure 4.19 Formulario de entrada
del programa MI.
Figure 4.20 Ejecutando el
programa, vista de los resultados
53
 riayala@uc.cl
1
2
3
4
4.3 Introducción al manejo de gráficos | Capítulo 4
Programación en HP PPL
31
32
33
34
35
36
37
38
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;
4.3 Introducción al manejo de gráficos
4.3.1Variables gráficas
 Recordar
La variable G0 es siempre el
gráfico de la pantalla actual.
Existen 10 variables de gráficos integradas en HP Prime
llamadas G0−G9 .
actual.
 Recordar
Las variables desde G1 hasta el
G9 se utilizan para almacenar
todo tipo de objetos gráficos.
G1
G0
es siempre el gráfico de la pantalla
a G9 pueden utilizarse para almacenar los
objetos gráficos temporales (abreviados GROBs2
) al
programar aplicaciones que usen gráficos. Son temporales
y por consiguiente, se borran al apagar la calculadora.
Se pueden usar veintiséis funciones para modificar
 Recordar
Existen 26 funciones para el
manejo de gráficos; 13 para
las variables de gráficos.
Trece de ellas trabajan con
coordenadas cartesianas utilizando el plano cartesiano
coordenadas cartesianas y 13
definido en la aplicación actual por las variables Xmin ,
para píxeles.
Xmax ,
Ymin
e Ymax .
Las trece restantes trabajan con
coordenadas de píxel donde el píxel 0,0 es el píxel superior
2. Son objetos gráficos
creados en la pantalla
izquierdo de la pantalla y 320, 240 es el inferior derecho.
Las funciones de este segundo conjunto tienen un sufijo _P
para el nombre de la función.
4.3.2Coordenadas cartesianas y de píxel
Como se detalló en la sección anterior la calculadora HP
PRIME presenta dos sistemas de coordenadas basadas en su
 riayala@uc.cl
pantalla física que sirven para el manejo adecuado de los
gráficos.
54
4.3.2.1 Coordenadas cartesianas
El sistema de coordenadas cartesianas tienen el plano
 Recordar
Este sistema dependen
cartesiano definido en la aplicación actual por las variables
básicamente de los valores
Xmin ,
asignados a las variables Xmin,
Xmax , Ymin
e Ymax , en la figura 4.21 muestra las
características de este sistema.
Figure 4.21 Sistema de coordenadas cartesianas.
Ymax, Xmax y Ymin
 Recordar
Los valores de Xmax y Ymin no
coinciden con la esquina inferior
derecha de la pantalla

4.3 Introducción al manejo de gráficos | Capítulo 4
Programación en HP PPL aplicado a la ingeniería civil
Sugerencia
No es recomendable utilizar las
coordenadas cartesianas en la
creación de programas
!
Importante :
• Las variables Xmin, Ymax, Xmax y Ymin ya están
definidos en el sistema.
• Las coordenadas cartesianas están orientadas
a representaciones matemáticas, estadísticas y
similares.
• Sin importar el tamaño de las variables gráficas,
el punto fijo siempre será el [0,0], bajo ese
fundamento es que podemos interactuar los
diversos objetos gráficos con los comandos de
dibujo.
Un ejemplo práctico es el siguiente.
1
2
3
4
5
6
7
8
9
10
EXPORT CCartesianas()
BEGIN
FREEZE;
Xmin:=10; Ymax:=100;
Ymin:=20; Xmax:=90;
RECT;
RECT(Xmin,Ymin,Xmax,Ymax,RGB(240,0,0), RGB(240,240,240));
LINE(10,10,100,100);
LINE(50,40,80,20,RGB(0,0,240));
END;
Figure 4.22 Ejecutando el
programa, vista de los resultados
55
 riayala@uc.cl
 Código 4.10: Coordenadas Cartesianas
4.3 Introducción al manejo de gráficos | Capítulo 4
Programación en HP PPL
4.3.2.2 Coordenadas de píxel.
 Recordar
La pantalla de la calculadora
Las coordenadas de píxel son usadas comúnmente en
tiene dimensiones de 320x240
cualquier dispositivo, puesto que se basan directamente
píxeles.
en las referencias del hardware, es decir que las pantallas
siempre suelen basarse en referencias de píxel donde el
punto [0,0] se encuentra en la esquina superior izquierda
de la pantalla.
Sin importar el tamaño de las variables gráficas, el punto fijo
siempre será el [0,0], bajo ese fundamento es que podemos
interactuar los diversos objetos gráficos con los comandos
de dibujo.
 Recordar
los comandos gráficos que
Figure 4.23 Sistema de coordenadas de píxel.
funcionan con píxeles tienen un
sufijo _P incluído en su nombre.
 Recordar
Todos los comandos gráficos
tienen un parámetro opcionalel
cual les permite almacenar el
gráficos en una variables.

Es recomendable utilizar este tipo de coordenadas para la
creación de programas en el lenguaje PPL PRIME.
Sugerencia
Hay ocasiones donde no es
importante almacenar los
gráficos en una de las variables
gráficas G0−G9
4.3.3Comandos de dibujo.
Los comandos de dibujo tienen tareas como inicializar,
dimensionar, editar píxeles, interactuar con el contenido
 Recordar
Después o antes de realizar
gráficos siempre es necesario
 riayala@uc.cl
pausar o congelar la ejecución
del programa para poder
visualizar los gráficos en la
pantalla actual.
56
entre gráficos y consultar datos; el formato común de estos
comandos requieren parámetros como la variable gráfica a
editar y las características de la acción.
A continuación se verán los comandos mas utilizados en un
programa.
Comando FREEZE
Este comando pausa la ejecución de
un programa hasta que se pulse una tecla. Esto evita que
la pantalla se congele después de finalizada la ejecución
del programa, dejando la visualización modificada en la
pantalla para que el usuario lo vea.
Sintaxis FREEZE;
 Recordar
Para realizar gráficos
almacenados en una variable,
Comando DIMGROB P Define las dimensiones wxh de
un GROBs en una variable gráfica definida ( G ) con una
siempre es necesario definir
las dimensiones de trabajo, por
defecto este comando toma
dimensiones dados como parámetros. Este comando hace
las dimensiones de 320x240
que se inicia el gráfico G con los parámetros dados.
píxeles.
4.3 Introducción al manejo de gráficos | Capítulo 4
Programación en HP PPL aplicado a la ingeniería civil
Sintaxis Tipo I:
DIMGROB_P(G, w, h, [color])
 ¡Cuidado!
Tipo II:
La variable gráfica G es un
DIMGROB_P(DIMGROB_P(G, lista))
parámetro obligatorio para este
Ejemplo Manejo del comando DIMGROB P.
Creamos un objeto gráfico con dimensiones 640,480
píxeles.
Solución:
Código del programa:
DIMGROB_P(G1,320,480);
La pantalla de la calculadora solo admite una dimensión
en píxles de 320x240, y muchas veces es necesario tener
un área de trabajo con dimensiones mayores para ello se
utiliza el comando DIMGROB P donde es sus parámetros
se definen las dimensiones 640x480 como se muestra en
la figura 4.3.3. Para poder acceder a las dimensiones que
sobrepasan la pantalla se hace uso del comando BLIT P.
4.3.4Comando BLIT P
Es importante conocer este comando ya que nos permite
Figure 4.24 Creación de un
GROB de trabajo con dimensiones
320x480 píxeles

Sugerencia
En la práctica, se agrega 1 a cada
sx1 y sx2 para obtener la región
correcta.
57
 riayala@uc.cl
4.9
comando
4.3 Introducción al manejo de gráficos | Capítulo 4
Programación en HP PPL
realizar muchas tareas importantes en el manejo de gráficos.
Estas tareas pueden ser:
1 Insertar gráficos a la pantalla actual.
2 Mezclar gráficos.
3 Copiar gráficos (total o parcialmente).
4 Estirar una imagen.
5 Mezclar gráficos con transparencia.
Sintaxis Tipo I:
BLIT_P(Gf,Gi);

Sugerencia
Tipo II:
Eliminar el contenido de las
BLIT_P(Gf,dx1,dy1,dx2,dy2,Gi,sx1,sy1,sx2,sy2,[c],[alpha])
variables gráficas antes de
finalizar el programa, ya que este
Este comando copia la región de Gi (sx1, sy1, sx2, sy2) en la
no se eliminará hasta apagar la
región de Gf (dx1, dy1, dx2, dy2).
calculadora, se puede realizar
con la siguiente instrucción:
donde:
DIMGROB_P(G1,0,0).
Gf : es cualquier variable gráfica.
 Recordar
Los gráficos se deben
El valor
predeterminado es G0.
entender como objetos de
Gi : es otra variable gráfico.
almacenamiento al igual que las
c : puede ser cualquier color especificado. Si no
variables comunes, solo usarlas
se especifica, se copiarán todos los píxeles de
si es necesario.
Gi.
 Recordar
Esto se logra a través del
alpha : transparencia, alpha=255 es completamente
opaco..
programa DIMGROB, el
cual convierte una imagen Ejemplo
en formato bmp a ICON,
4.10
El comando BLIT_P permite insertar gráficos en la pantalla
este ultimo es leído por el
de la calculadora, a través de un programa creado.
lenguaje de programación de la
calculadora.

Insertar imágenes a la pantalla actual.
Solución:
Código del programa:
Sugerencia
Se debe verificar el tamaño en
 Código 4.11: PBLITa
 riayala@uc.cl
pixeles de la imagen que se
desea insertar, fácilmente se
puede verificar con el software
PAINT
58
1
2
3
4
ICON Imagen 89504E470D0A1...; //Continua
EXPORT PBLITa()
BEGIN
RECT_P(G1);
5
6
7
8
9
4.3 Introducción al manejo de gráficos | Capítulo 4
Programación en HP PPL aplicado a la ingeniería civil
BLIT_P(G1,"Imagen",0,0);
BLIT_P(G1,"Imagen",−100,−100);
BLIT_P(G0,G1);
FREEZE;
END;
Figure 4.25
Programa PBLITa
Ejemplo Copiar gráficos total.
4.11
La principal función del comando BLIT_P es de reemplazar
las variables gráficas.
Solución:
Código del programa:
 Código 4.12: PBLITb
1
2
3
4
5
6
7
8
9
10
11
12
cA:=RGB(220,220,220);
cB:=RGB(255,0,0);
EXPORT PBLITb()
BEGIN
RECT_P(G1);
RECT_P(G1,80,80,205,140,cB,cA);
RECT_P(G1,0,0,320,20,cB,cA);
RECT_P(G1,0,220,320,240,cB,cA);
TEXTOUT_P("Hola Mundo",G1,100,100,4);
BLIT_P(G0,G1);
FREEZE;
END;
Figure 4.26
Programa PBLITb
Ejemplo Copiar gráficos parcial.
El comando
BLIT_P
también nos permite realizar el
reemplazo de variables gráficas definidas en una
coordenada específica.
Solución:
Código del programa:
Figure 4.27 Programa PBLITc
59
 riayala@uc.cl
4.12
4.3 Introducción al manejo de gráficos | Capítulo 4
Programación en HP PPL
 Código 4.13: PBLITc
1
2
3
4
5
6
7
8
EXPORT PBLITc()
BEGIN
LOCAL radio,ar;
INPUT(radio, "R:","R = ","Radio(m)",1);
ar:=PI*radio^2;
PRINT();
PRINT("El radio es: " +ar);
END;
Ejemplo Reducir el tamaño de una imagen.
4.13
También haciendo un buen uso de los parámetros del
comando BLIT_P podemos lograr reducir el tamaño en
píxeles de un gráfico.
Solución:
Código del programa:
 Código 4.14: PBLITd
Figure 4.28
Programa PBLITd
1
2
cA:=RGB(220,220,220);
cB:=RGB(255,0,0);
3
4
5
EXPORT PBLITd()
BEGIN
RECT_P(G0);
6
7
8
9
10
11
12
13
RECT_P(G1);
RECT_P(G1,80,80,205,140,cB,cA);
RECT_P(G1,0,0,320,20,cB,cA);
RECT_P(G1,0,220,320,240,cB,cA);
TEXTOUT_P("Hola Mundo",G1,100,100,4);
BLIT_P(G0,50,50,270,190,G1);
FREEZE;
END;
Ejemplo Estirar una imagen.
4.14
El comando BLIT_P nos permite aumentar el tamaño en
píxeles de un gráfico.
Solución:
Código del programa:
 riayala@uc.cl
 Código 4.15: PBLITe
Figure 4.29
60
Programa PBLITe
1
2
cA:=RGB(220,220,220);
cB:=RGB(255,0,0);
3
4
EXPORT PBLITe()
BEGIN
5
6
7
8
9
10
11
12
4.3 Introducción al manejo de gráficos | Capítulo 4
Programación en HP PPL aplicado a la ingeniería civil
RECT_P(G1);
RECT_P(G1,80,80,205,140,cB,cA);
RECT_P(G1,0,0,320,20,cB,cA);
RECT_P(G1,0,220,320,240,cB,cA);
TEXTOUT_P("Hola Mundo",G1,100,100,4);
BLIT_P(G0,−20,−20,340,260,G1);
FREEZE;
END;
Ejemplo Mezclar gráficos con transparencia.
4.15
Haciendo uso de los parámetros c y alpha se logra crear
transparencia al realizar el reemplazo de los gráficos con
el comando BLIT_P .
Solución:
Código del programa:
 Código 4.16: PBLITf
1
2
3
cA:=RGB(220,220,220);
cB:=RGB(255,0,0);
cC:=RGB(0,0,255);
4
5
6
7
8
9
10
11
EXPORT Programa()
BEGIN
RECT_P(G0);
RECT_P(G1);
RECT_P(G1,80,80,205,140,cB,cA);
RECT_P(G1,0,0,320,20,cB,cA);
RECT_P(G1,0,220,320,240,cB,cA);
TEXTOUT_P("Hola Mundo",G1,100,100,4);
12
13
14
BLIT_P(G0,G1,0,0,320,240,cC,100);
FREEZE;
END;
Figure 4.30
Programa PBLITf
Ejemplo Mezclar gráficos con transparencia.
4.16
Creación de gráficos haciendo uso del los comandos de
dibujo.
Solución:
Código del programa:
1
2
3
4
5
EXPORT AboutESP()
BEGIN
RECT_P();
DIMGROB_P(G1,320,240);
RECT_P(G1,RGB(255,255,255));
Figure 4.31 Programa AboutESP
61
 riayala@uc.cl
 Código 4.17: AboutESP
4.3 Introducción al manejo de gráficos | Capítulo 4
Programación en HP PPL
6
7
8
9
10
11
LINE_P(G1,0,197,320,50,RGB(0,0,0));
LINE_P(G1,52,153,265,55,RGB(40,220,170));
LINE_P(G1,57,165,44,137,RGB(0,0,0));
LINE_P(G1,270,68,260,41,RGB(0,0,0));
RECT_P(G1,0,0,320,26,RGB(0,160,128));
TEXTOUT_P("Distancia entre dos puntos",G1,25,2,4,RGB(255,255,255));
12
13
14
15
16
TEXTOUT_P("(x1,y1)",G1,55,175,2,RGB(0,0,0));
TEXTOUT_P("(x2,y2)",G1,270,79,2,RGB(0,0,0));
TEXTOUT_P("●",G1,56,162,3,RGB(255,0,0));
TEXTOUT_P("●",G1,268,65,3,RGB(255,0,0));
TEXTOUT_P("distancia=?",G1,100,85,5,RGB(255,0,0));//this one I need to rotate.
17
18
19
20
21
TRIANGLE_P(G1,255,57,257,61,266,54,RGB(0,0,0));
TRIANGLE_P(G1,62,151,51,154,60,146,RGB(0,0,0));
BLIT_P(G0,G1);
FREEZE;
END;
Ejemplo Rotar textos.
4.17
Haciendo uso de los parámetros c y alpha se logra crear
transparencia al realizar el reemplazo de los gráficos con
el comando BLIT_P .
Solución:
Código del programa:
 Código 4.18: AboutESP
 riayala@uc.cl
Figure 4.32
Programa PBLITf
1
2
3
4
5
6
7
8
9
10
11
12
RotateG(Tx,Gr,ang)
BEGIN
DIMGROB(Gr,320,240);
LOCAL tmp;
LOCAL mat:=[[cos(ang),sin(ang)],[−sin(ang),cos(ang)]];
FOR X:=0 TO grobh(Tx) DO
FOR Y FROM 0 TO grobw(Tx) DO
tmp:=mat*[[X],[Y]];
PIXON_P(Gr,X,Y,GETPIX_P(Tx,tmp(1,1),tmp(2,1)));
END;
END;
END;
13
14
15
16
17
18
19
20
21
22
23
EXPORT AboutESP()
BEGIN
RECT();
DIMGROB_P(G1,320,240);
RECT_P(G1,RGB(255,255,255));
LINE_P(G1,0,197,320,50,RGB(0,0,0));
LINE_P(G1,52,153,265,55,RGB(40,220,170));
LINE_P(G1,57,165,44,137,RGB(0,0,0));
LINE_P(G1,270,68,260,41,RGB(0,0,0));
RECT_P(G1,0,0,320,26,RGB(0,160,128));
TEXTOUT_P("Distancia entre dos puntos", G1,25,2,4,RGB(255,255,255));
24
25
26
62
TEXTOUT_P("(x1,y1)",G1,55,175,2,RGB(0,0,0));
TEXTOUT_P("(x2,y2)",G1,270,79,2,RGB(0,0,0));
TEXTOUT_P("●",G1,56,162,3,RGB(255,0,0));
27
TEXTOUT_P("●",G1,268,65,3,RGB(255,0,0));
28
29
30
31
DIMGROB(G3,320,240);
TEXTOUT_P("distancia=?",G3,60,130,5,RGB(255,0,0));
RotateG(G3,G2,−0.4); // Rotar 0.4 radianes
BLIT_P(G1,G2,RGB(255,255,255));
32
33
TRIANGLE_P(G1,255,57,257,61,266,54,RGB(0,0,0));
TRIANGLE_P(G1,62,151,51,154,60,146,RGB(0,0,0));
34
35
36
4.3 Introducción al manejo de gráficos | Capítulo 4
Programación en HP PPL aplicado a la ingeniería civil
BLIT_P(G0,G1);
FREEZE;
END;
4.3.4.1 Comando RGB
La descripción RGB (del inglés Red, Green, Blue; «rojo, verde

Sugerencia
La composición de colores RGB
y azul») de un color hace referencia a su composición de
se puede obtener de cualquier
la intensidad de los colores primarios con que se forma: el
software que tenga las opciones
rojo, el verde y el azul. Este un modelo de color basado en
de visualización de colores
lo q se conoce como síntesis aditiva, con lo que es posible
avanzados. Por ejemplo el
programa Paint.
representar a un color por la mezcla por adición de los tres
colores luz primarios.
Sintaxis RGB(R, G, B, [Alpha])
Devuelve un número entero que puede utilizarse como una
variable de color para una función de dibujo, en base a los
valores de los componentes rojo, verde y azul (cada uno de
0 a 255).
Figure 4.33 Modelo aditivo de
colores rojo, verde, azul.
Si Alpha es mayor a 128, devuelve el color marcado como
transparente.
Ejemplo RGB(255,0,128); // devuelve 16711808.
 ¡Cuidado!
HP Prime no admite la
combinación de canales alfa.
4.18
Para un uso adecuado de estos colores, es recomendable
declararlos ya sea como variables globales o locales.
Estos colores pueden ser usados en los parámetros de las
diferentes funciones de dibujos.
4.19
col2:=RGB(0,0,255);
EXPORT Ejemplo9()
BEGIN
63
 riayala@uc.cl
Ejemplo col1:=RGB(255,0,0,180);
4.3 Introducción al manejo de gráficos | Capítulo 4
Programación en HP PPL
RECT_P(G1,col1);//patanlla roja transparente.
LINE_P(G1,0,0,80,80,col2); //dibuja una línea azul.
BLIT(G0,G1);
FREEZE;
END;
4.3.4.2 Comando LINE P
El formato básico de LINE_P ó LINE dibuja una línea entre
las coordenadas píxel ó cartesiano del gráfico utilizando el
color especificado.
Sintaxis Tipo I:
LINE_P([G], x1, y1, x2, y2)
Tipo II:
LINE_P([G], x1, y1, x2, y2, color)
4.3.4.3 Comando RECT P
Dibuja un rectángulo en la variable gráfica G entre los
puntos x1, y1 y x2, y2 utilizando color del borde para el
perímetro y color de relleno para el interior.
Sintaxis Limpiar pantalla:
RECT_P([G])
Tipo I:
RECT_P([G], x1, y1, x2, y2)
Tipo II:
RECT_P([G], x1, y1, x2, y2, colorborde, colorrelleno)
Ejemplo EXPORT BOX()
4.20
BEGIN
RECT_P(G1); //Limpia la pantalla gráfica.
RECT_P(G1,40,90,#000000);
BLIT(G0,G1);
FREEZE;
END;
4.3.4.4 Comando TEXTOUT P
 riayala@uc.cl
Dibuja un texto utilizando un color en el gráfico G en la
posición x, y usando un tamaño de fuente.
64
4.3 Introducción al manejo de gráficos | Capítulo 4
Programación en HP PPL aplicado a la ingeniería civil
Sintaxis Tipo I:
TEXTOUT_P("texto",[G],x,y)
Tipo II:
TEXTOUT_P("texto",[G],x,y,fuente,c1,ancho,c2)
donde:
Texto : Dato de tipo caracter.
G : Variable tipo gráfico.
fuente : Ver tabla 4.1.
c1 : Color del texto.
c2 : Color del fondo del texto.
Tabla 4.1 Tamaño de fuente para el comando TEXTOUT
Valor asignad
Nombre objeto
0
Tamaño HP.
1
Tamaño 10.
2
Tamaño 12.
3
Tamaño 14.
4
Tamaño 16.
5
Tamaño 18.
6
Tamaño 20.
7
Tamaño 22.
Ejemplo EXPORT PISERIES()
BEGIN
LOCAL sign;
K:=2;
A:=4;
sign:=−1;
RECT();
TEXTOUT_P("N=",0,0);
TEXTOUT_P ("PI APPROX =",0,30);
TEXTOUT_P(K,35,0,2,#FFFFFF,100,#333399);
TEXTOUT_P(A,90,30,2,#000000,100,#99CC33);
END;
4.3.4.5 Comando DRAWMENU
Dibuja un menú de seis botones en la parte inferior de la
pantalla, con etiquetas cadena1, cadena2,..., cadena6.
Figure 4.34 Ejecutando el
programa iMENU
65
 riayala@uc.cl
4.21
4.3 Introducción al manejo de gráficos | Capítulo 4
Programación en HP PPL
Sintaxis DRAWMENU({"cadena1", "cadena2", ..., "cadena6"}
Ejemplo EXPORT iMENU()
4.22
BEGIN
DRAWMENU("ABC", "ROCKY","", "DEF");
FREEZE;
END;
4.3.4.6 ICON
La directiva ICON permite crear más objetos gráficos locales
a un programa (conserva cambios), para ello se necesita el
programa DIMGROB Generator con el que obtenemos un
código hexadecimal de la imagen solicitada.
Sintaxis ICON Variable codigohexadecimal
Ejemplo ICON icono1 89504E470D0A1A0A0000000D494844520...
4.23
azul:=RGB(255,0,0);
EXPORT iICON()
BEGIN
RECT_P();
RECT_P("icono1",10,30,80,25,azul);
TEXTOUT_P("icono1","icono1",40,50,6,azul);
BLIT_P(100,90,"icono1"); //Muestra el icono1.
FREEZE;
END;
!
Importante :
• Es recomendable no abusar el uso de este
comando ya que ha sido el causante de fallas de
memoria.
• Un objeto gráfico creado a partir de
Figure 4.35 Ejecutando el
programa iICON
permanece en memoria RAM aunque sea local al
 riayala@uc.cl
programa (así fue diseñado).
66
ICON ,
4.3 Introducción al manejo de gráficos | Capítulo 4
Programación en HP PPL aplicado a la ingeniería civil
4.3.4.7 Ejercicios resueltos
Ejercicio 4.2
Manejo de Gráficos 1.
Con los comandos gráficos necesarios realice el
siguiente dibujo.
Solución:
Código del programa.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
ICON RABa 89504E470D0A1A0A0000000D4948...
Plomo:=RGB(220,220,220);
LigthBlue:=RGB(150,177,210);
DarkBlue:=RGB(33,115,231);
White:=RGB(250,255,255);
Fondo:=RGB(239,247,247);
AzulA:=RGB(53,117,211);
AzulB:=RGB(0,28,84);
AzulM:=RGB(34,62,176);
RedM:=RGB(153,27,30);
EXPORT FAyu()
BEGIN
LOCAL xx:=25,yy:=50,dx:=265,dy:=148;
DIMGROB_P(G3,320,240);
RECT(G3,White);
BLIT_P(G0,0,0,G3,0,0,320,240,Plomo,120);
RECT_P(G3,xx,yy,xx + dx,yy + dy,AzulB,Fondo);
RECT_P(G3,xx−1,yy,xx + dx + 1,yy + dy,AzulB,Fondo);
BLIT_P(G3,"RABa",−(xx + 1),−(yy + 1));
TEXTOUT_P("DYS",G3,xx + 100,yy + 1 + 3,3,AzulM);
TEXTOUT_P("AB",G3,xx + 103 + 21,yy + 1,4,AzulM);
TEXTOUT_P("v2.3",G3,xx + 103 + 45,yy + 1 + 6,2,RedM);
TEXTOUT_P("Analisis Dinamico y Estatico para Edificaciones",G3,xx + 38,yy + 22,1,DarkBlue);
RECT_P(G3,xx + 34,yy + 20,xx + dx,yy + 20,DarkBlue,DarkBlue);
yy:=yy−15;
TEXTOUT_P("Version 2.3:",G3,xx + 10,yy + 50,2,AzulB);
TEXTOUT_P("−Rigidez global",G3,xx + 30,yy + 65,2,AzulM); yy:=yy + 18;
TEXTOUT_P("−Rigidez lateral",G3,xx + 30,yy + 65,2,AzulM); yy:=yy + 18;
TEXTOUT_P("−Metrado de cargas",G3,xx + 30,yy + 65,2,AzulM); yy:=yy + 18;
TEXTOUT_P("−Analisis Modal 2D Y 3D",G3,xx + 30,yy + 65,2,AzulM); yy:=yy + 18;
TEXTOUT_P("−Analisis Estatico 2D y 3D",G3,xx + 30,yy + 65,2,AzulM);
xx:=25;yy:=50;
BLIT_P(G0,xx−2,yy,xx + dx + 2,yy + dy + 2,G3,xx−2,yy,xx + dx + 2,yy + dy + 2);
FREEZE;
END;
67
 riayala@uc.cl
 Código 4.19: Graficos
4.3 Introducción al manejo de gráficos | Capítulo 4
Programación en HP PPL
Ejercicio 4.3
Manejo de Gráficos 2.
La creación de gráficos nos permite insertar cierto tipo
de apariencia para utilizar botones en la programación
de HP PPL, con los comandos gráficos necesarios
realice el siguiente dibujo.
Solución:
Código del programa.
 Código 4.20: Momento de Inercia
1
2
white:=rgb(255,255,255),
blue:=rgb(0,0,240);
3
4
5
6
7
8
9
EXPORT P_APol()
BEGIN
FREEZE;
DIMGROB_P(G1,320,240);
RECT_P();
//Dibujar los menus de la parte superior.
LOCAL R_In,R_Au,R_Ca;
10
11
12
R_In:={0,0,100,30};
R_Ca:={100,0,220,30};
R_Au:={220,0,320,30};
13
14
15
RECT_P(G1,R_In(1),R_In(2),R_In(3),R_In(4), white,blue);
RECT_P(G1,R_Ca(1),R_Ca(2),R_Ca(3),R_Ca(4), white,blue);
RECT_P(G1,R_Au(1),R_Au(2),R_Au(3),R_Au(4), white,blue);
16
17
18
19
//Textos en los Botones.
TEXTOUT_P("Reporte",G1,R_In(1)+18,R_In(2)+10,2, white);
TEXTOUT_P("Datos",G1,R_Ca(1)+38,R_Ca(2)+10,2, white);
TEXTOUT_P("Dibujar",G1,R_Au(1)+35,R_Au(2)+10,2, white);
20
21
BLIT_P(G0,G1);
END;
 riayala@uc.cl
Ejercicio 4.4
Manejo de Gráficos 3.
La creación de gráficos nos permite insertar cierto tipo
de apariencia para utilizar botones en la programación
68
4.3 Introducción al manejo de gráficos | Capítulo 4
Programación en HP PPL aplicado a la ingeniería civil
de HP PPL, con los comandos gráficos necesarios
realice el siguiente dibujo.
Solución:
Código del programa.
También se pueden realizar diferentes tipos de entrada
de datos, como pueden ser cajas editables, cajas tipo
selección y otros mas.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
PlomoA:=RGB(220,220,220);
DarkBlue:=RGB(33,115,231);
White:=RGB(250,255,255);
Fondo:=RGB(239,247,247);
AzulA:=RGB(53,117,211);
AzulTit:=RGB(29,79,137);
Black:=RGB(0,0,0);
Plomo:=PlomoA;
vNCc:=4;
vAcomp:=5;
vAsc:=3.96;
vC1Asc:={2,2,2,2,2,2};
vT1Asc:={"Ø5”/8","Ø5”/8","Ø5”/8","Ø5”/8","Ø5”/8","Ø5”/8"};
vRAsic:={4,7,10,13,16,19};
vAAsic:={3.96,0.32,0.32,0.32,0.32,0.32};
vC2Asc:={0,0,0,0,0,0};
vT2Asc:={"Ø5”/8","Ø5”/8","Ø5”/8","Ø5”/8","Ø5”/8","Ø5”/8"};
vTAs:={"Ø1”/4","Ø3”/8","Ø1”/2","Ø5”/8","Ø3”/4","Ø7”/8","”Ø1"};
vN1Asc:={4,1,1,1,1,1};
vN2Asc:={4,1,1,1,1,1};
REGCUA();
REGCHO();
EXPORT FCAsMuCom()
BEGIN
LOCAL R_vNC:={},R_vC1As:={},R_vT1As:={},R_vAs:={},R_vC2As:={},R_vT2As:={};
LOCAL dx,dy,nxR_Cont:={},R_Acep:={},R_vRAsi:={},R_vAAsi:={},R_Graf:={};
LOCAL mx,my,ss,Lx,Ly,Lyy,xi,yi;
LOCAL R_RR:={},R_R:={},r,m,sum,R_Repor:={},R_Ten:={};
LOCAL R_vAcomp:={};
//−‐>Regiones o cuadros para editar texto
RECT(Fondo);
RECT_P({0,1},{320,17},DarkBlue,AzulTit);
TEXTOUT_P("DATOS DE As : ACERO COMPRESION",60,3,2,White);
69
 riayala@uc.cl
 Código 4.21: FCAsMuCom
 riayala@uc.cl
4.3 Introducción al manejo de gráficos | Capítulo 4
Programación en HP PPL
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
dx:=250;dy:=5;
Lx:=65;Ly:=150;
//‐> Seccion
dx:=10;dy:=−10;
Lyy:=(vNCc+1)*20;
RECT_P({dx−5,35 + dy},{dx + 305,dy + 80+Lyy},DarkBlue,Fondo);
TEXTOUT_P("� As Propuesto",dx,30 + dy,2,Black,90,Fondo);
TEXTOUT_P("Capas :",5 + dx,45 + dy,2);
TEXTOUT_P("Acomp :",120 + dx,45 + dy,2);
TEXTOUT_P("Cant",112 + dx,65 + dy,2);
TEXTOUT_P("Tipo",158 + dx,65 + dy,2);
TEXTOUT_P("R_i",211 + dx,65 + dy,2);
TEXTOUT_P("As_i",263 + dx,65 + dy,2);
R_vNC:={{50 + dx,45 + dy−2},{100 + dx,45 + dy + 14}};
R_vAcomp:={{140 + dx,45 + dy−2},{190 + dx,45 + dy + 14}};
R_vAs:={{135+100 + dx,45 + dy−2},{190 +100+ dx,45 + dy + 14}};
REGCUA(STRING(vNCc,1),R_vNC,AzulTit,White);
REGCUA(STRING(vAcomp,1),R_vAcomp,AzulTit,White);
REGCUA(STRING(vAsc,1),R_vAs,AzulTit,White);
FOR m:=0 TO vNCc DO
xi:=5+dx;yi:=82+dy+20*m;
R_vC1As(m+1):={{xi,yi−2},{xi+30,yi+14}};
R_vT1As(m+1):={{xi+40,yi−2},{xi+85,yi+14}};
TEXTOUT_P(" + ",xi+85,yi−5,5);
R_vC2As(m+1):={{xi+105,yi−2},{xi+135,yi+14}};
R_vT2As(m+1):={{xi+145,yi−2},{xi+190,yi+14}};
R_vRAsi(m+1):={{xi+200,yi−2},{xi+230,yi+14}};
R_vAAsi(m+1):={{xi+240,yi−2},{xi+295,yi+14}};
REGCUA(STRING(vC1Asc(m+1),1),R_vC1As(m+1),AzulTit,White);
REGCUA(STRING(vC2Asc(m+1),1),R_vC2As(m+1),AzulTit,White);
REGCUA(STRING(vRAsic(m+1),1),R_vRAsi(m+1),AzulTit,White);
REGCUA(STRING(vAAsic(m+1),1),R_vAAsi(m+1),AzulTit,White);
REGCHO(vTAs(vN1Asc(m+1)),R_vT1As(m+1),AzulTit,Plomo);
REGCHO(vTAs(vN2Asc(m+1)),R_vT2As(m+1),AzulTit,Plomo);
END;
//‐>Botton Aceptar
R_Acep:={{250,204},{310,222}};
RECT_P(R_Acep(1),R_Acep(2),DarkBlue,Plomo);
TEXTOUT_P("Aceptar",R_Acep(1,1) + 8,R_Acep(1,2) + 3,2);
//‐>Botton Graficar
R_Graf:={{175,204},{235,222}};
RECT_P(R_Graf(1),R_Graf(2),DarkBlue,Plomo);
TEXTOUT_P("Grafico",R_Graf(1,1) + 8,R_Graf(1,2) + 3,2);\\
//‐>Reporte
R_Repor:={{100,204},{160,222}};
RECT_P(R_Repor(1),R_Repor(2),DarkBlue,Plomo);
TEXTOUT_P("Reporte",R_Repor(1,1) + 8,R_Repor(1,2) + 3,2);
//‐>As−Comp
R_Ten:={{25,204},{85,222}};
RECT_P(R_Ten(1),R_Ten(2),DarkBlue,Plomo);
TEXTOUT_P("As−Ten",R_Ten(1,1) + 8,R_Ten(1,2) + 3,2);
FREEZE;
END;
88
89
90
91
92
REGCUA(Dato,Region,ColorA,ColorB)
BEGIN
RECT_P(Region(1),Region(2),ColorA,ColorB);
TEXTOUT_P(Dato,Region(1) + 4,1);
END;
70
65
66
67
68
69
70
71
72
73
74
75
4.3 Introducción al manejo de gráficos | Capítulo 4
Programación en HP PPL aplicado a la ingeniería civil
REGCHO(Dato,Region,ColorA,ColorB)
BEGIN
LOCAL L,xf,yf;
L:=Region(2,1);
xf:=Region(2,1);
yf:=Region(2,2);
RECT_P(Region(1),Region(2),ColorA,PlomoA);
TEXTOUT_P(Dato ,Region(1) + 4,1);
TEXTOUT_P(" �" ,L−12,Region(1,2),3);
TEXTOUT_P("|" ,L−14,Region(1,2)−3,4);
END;
Ejercicio 4.5
Manejo de Gráficos 4.
Por último se puede utilizar los gráficos para crear
reportes.
Solución:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
AzulTit:=RGB(29,79,137);
RedA:=RGB(195,56,56);
DarkBlue:=RGB(33,115,231);
White:=RGB(250,255,255);
TxFrac();
EXPORT FRAsMuDoble()
BEGIN
LOCAL i,x,y,k,V,H,Gi:=G2;
LOCAL ax,ay,sa,r,sum;
LOCAL MEle:=[[0]];
V:=1800; H:=640;
DIMGROB_P(G2,H,V);
RECT(G2);
RECT_P(G2,{0,1},{320,17},DarkBlue,DarkBlue);
TEXTOUT_P("CALCULO DEL Mu − As DOBLE REFUERZO",G2,10,1.5,3,White);
LOCAL dx,dy;
//−Cuantias a Tension.
dx:=5;dy:=dy+20;
TEXTOUT_P("3−Calculo de las cuantias",G2,dx,dy,2,RedA);
dx:=10;
TEXTOUT_P("a) Esfuerzo en compresion y tension del acero",G2,dx,dy+15,2,DarkBlue);
dx:=20;dy:=dy−30;
TEXTOUT_P("f's = " + 45.7 + " kg/cm2",G2,dx,dy+60,2,AzulTit);
dx:=10;dy:=dy+70;
TEXTOUT_P("a) Cuantia del acero compresion",G2,dx,dy+15,2,DarkBlue);
71
 riayala@uc.cl
 Código 4.22: FRAsMuDoble
4.4 Ejercicios | Capítulo 4
Programación en HP PPL
26
27
28
29
30
31
32
33
34
35
36
37
38
dx:=20;
TxFrac(G2,"ρ' = "," As'","b*d",dx−5,dy + 30,35,AzulTit);
TEXTOUT_P("ρ' = " + 40.5 ,G2,dx,dy+60,2,AzulTit);
dx:=10;dy:=dy+70;
TEXTOUT_P("a) Cuantia del acero tension",G2,dx,dy+15,2,DarkBlue);
dx:=20;
TxFrac(G2,"ρ = "," As","b*d",dx−5,dy + 30,35,AzulTit);
TEXTOUT_P("ρ = " + 18.7 ,G2,dx,dy+60,2,AzulTit);
dx:=10;dy:=dy+70;
TEXTOUT_P("b) Cuantia balanceada",G2,dx,dy+15,2,DarkBlue);
BLIT_P(G0,G2);
FREEZE;
END;
39
40
41
42
43
44
45
46
47
TxFrac(Gr,Tx,Num,Den,xo,yo,L,TCol)
BEGIN
LOCAL nN,nD,nT;
nN:=DIM(Num);nD:=DIM(Den);nT:=DIM(Tx);
TEXTOUT_P(Tx,Gr,xo + 4,yo + 5,2,TCol);
TEXTOUT_P(Num,Gr,xo + nT*7 + 2,yo,2,TCol);
RECT_P(Gr,{xo + nT*7,yo + 12},{xo + nT*7 + L,yo + 12.30},TCol);
TEXTOUT_P(Den,Gr,xo + nT*8 + 5,yo + 17,2,TCol);
END;
4.4 Ejercicios
Ejercicio 1
Elabore un programa en el lenguaje de
programación PPL PRIME, el cual calcule el momento de
inercia de un rectángulo
Ejercicio 2
Cree un programa que calcule la resistencia
última de una viga dado su base, peralte, f’c, fy y el
recubrimiento.
Ejercicio
3
Desarrolle
un
programa
que
muestre
gráficamente las coordenada UTM en el punto cualquiera a
 riayala@uc.cl
partir del punto inicial dado.
72
Capítulo
5
Estructuras de
Programación
 Resumen
5.1
5.2
Estructuras selectivas, 74
Estructuras repetitivas., 87
Capítulo 3 Programación estructurada
3.5.1 Estructura de control selectiva simple si (if)
Diagrama de flujo
5.1 Estructuras selectivas | Capítulo 5
2
Pseudocódigo
Lenguaje C
Estructura de control que dirige a la computadora para ejecutar una o más instrucciones solamente si la
condición es verdadera. Si la condición es falsa no realiza ninguna acción.
Programación en HP PPL
El término condición lo utilizaremos a lo largo de este libro para referirnos a una o más condiciones.
Existen dos formas de representarlo, dependiendo
del número de
si (condición)
ifinstrucciones
(condición) que se desean realizar
V
F
condición
si la condición se cumple:
5.1 Estructuras selectivas
inst 1
inst
1
inst 2
inst
2
1. Si se requiere ejecutar una sola instrucción, cuando se cumpla la condición se representa de la siguiente
sino
else
forma:
Inst 1
Inst 2
Diagrama de flujo
Pseudocódigo
Lenguaje C
En la programación, como en la vida real, es necesario
F
V
condición
evaluar las circunstancias y actuar en consecuencia, pues
Inst 1
no siempre se puede establecer por anticipado el curso
de las acciones.
En la ejecución de un programa,
Si la condición se cumple se realiza la instrucción 1, pero si la condición no se cumple se realiza la instrucción 2.
Figure 5.1 Condición simple
Diagrama de flujo
muchas expresiones estarán supeditadas al cumplimiento
Pseudocódigo
Lenguaje C
de determinadas
condiciones; por ello, el programador ha
de identificar estas situaciones y especificar, en el programa,
_I0406.indd 50
e programación
F
V
condición
38
qué hacer
en cada caso.
2/17/11 5:29 PM
Implementar una decisión implica evaluar una o más
n 1, ejecutar las instrucciones del bloque 1.
Inst 3
Inst 1
Inst 4
Inst 2
ión 1, pero SÍ se verifica la condición 2 , ejecutar las instrucciones
variables para determinar si cumple una o más condiciones
y establecer un flujo de acciones para cada resultado
verificado ninguna de las condiciones anteriores, ejecutar las instruc-
posible.
Las acciones pueden consistir en ejecutar una
flujo del programa continúa por la instrucción siguiente a la estructura
o más expresiones o en omitirlas, o en seleccionar una
Figure 5.2 Condición doble
TLAB y el Si
diagrama
de se
flujo,
se muestran
eninstrucciones
la Figura 5.7.
la condición
cumple
se realizan las
1 y secuencia
2, pero si no se cumple
se realizarán las instrucde instrucciones
de entre dos o más alternativas
ciones 3 y 4.
disponibles.
3.5.3 Anidamiento
o escalonamiento
si-si no-si (if-else-if)
Condición 1
Bloque 1
Sí
El concepto de anidamiento es muy utilizado en la programación
y consiste en insertar
(anidar) una o
estrucLas estructuras
selectivas
alternativas pueden ser:
No
tura dentro de otra.
La expresión “si anidados” se refiere a que podemos utilizar una sentencia si (if ) dentro de otra sentencia
Bloque
si (if ). EstoCondición
se emplea2 cuandoSíse tienen
que2cumplir varias condiciones para poder ejecutar una acción.
Simples.
Uno de los aspectos más confusos de las sentencias si 1
(if ) en
el lenguaje de programación es el si (if )
No
anidado. Un si (if ) anidado es una sentencia si (if ) que es el objeto de otro si (if ) o si no (else). La razón por la
Dobles.
que los si (ifBloque
) anidados
confuso
saber qué else se asocia con qué si (if ).
3 son tan problemáticos es que resulta 2
2
3 Múltiples.
Figuremúltiple:
5.3 Condición
múltiple
tructura condicional
IF- ELSEIF
- ELSE.
a_I0406.indd 52
un ejemplo de utilización de este tipo de estructura.
Los tipos más conocidos de condicionales
son el SI (IF) y
2/17/11 5:29 PM
el SEGÚN (CASE), aunque también podríamos mencionar al
minación del signo de un número: positivo, negativo o nulo.
lanzamiento de errores como una alternativa más moderna
para evitar los cierres inesperados de nuestros programas.
l número tiene signo positivo’
l numero tiene signo negativo’
5.1.1Operadores
l numero es nulo’
 riayala@uc.cl
5.1.1.1 Operadores relacionales y lógicos
Los operadores lógicos describen una relación entre dos
valores; por lo tanto, se usan para expresar condiciones
74
Potencia (^ o **)
/ ,mod
Programación en HP PPL aplicado *a,la
ingeniería civil
1, 2
y comparar dos valores. En la tabla 5.2 se muestran los
operadores relacionales.
1
2.6.2 Regla asociativa
Los operadores en una misma expresión con igual nivel de prioridad se evalúan de a
en ella apreciamos la prioridad de todos1.los
operadores en lenguaje C.
Las expresiones lógicas
pueden combinarse para formar
Capítulo 3 Programación
Tabla
2.12 Prioridad de50los operadores
en C estructurada
Tabla 5.1 Tipo de operadores
lógicos.
Valor asignado
NombreCategoría
objeto del operador
Ejemplos
Agrupación
y
OR
o
NOT
no
Suma y sustracción aritmética
2,11,22,!,
sizeof(tipo)
La expresión
condicional
Multiplicación, división y residuo
Operadores de igualdad
Ejemplos
Tipo de operadores relacionales.
y
o
<
Menor
que de asignación
Operadores
<= , ≤
≠
5
x 559;, !5
if (x) //La condición es verdadera.
Izquierda a
||
Izquierda a
?:
Derecha a
El último ejemplo es el más utilizado durante este curso.
Mayor
que
Operador condicional
>= , ≥
Derecha a
operadores. Estos operadores
*, /, %es una expresión booleana. Si el resultado
Izquierda
La condición
de la ea
trabajan con operandos que son
1, 2
Izquierda a
• es cero,
se considera una condición falsa.
expresiones lógicas.
• no es,,
cero,
se
considera
una
condición
cierta.
,5, .,.5
Izquierda a
if (5.7) //La condición es falsa, comparamos dos
valores. a
&&
Izquierda
Nombre objeto
>
== , =
As
Izquierda a
En la tabla 5.1 se muestran dichos
Operadores monarios
Valor asignado
expresiones más complejas
Operadores
Si llueve, llevar
paraguas.
utilizando
los eloperadores
lógicos.
( ), [ ]
AND
Operadores de relación
Tabla 5.2
5.1 Estructuras selectivas | Capítulo 5
anidados se evalúan de dentro hacia afuera.
2. Dentro de una misma expresión o subexpresión, se evalúan en el siguiente orde
Existen tres tipos de estructuras de control selectivas; ést
5, 15, 25, * 5, 5/5, %5
Derecha a
a) Simple if.
b) Doble if-else.
Igual que
Bloque
de sentencias
instrucción
Los operadores de asignación tienen
menor
prioridadoque
todos loscompuesta
otros opera
raciones monarios, aritméticos, de relación,
de
igualdad
y
lógicos
se
realizan
antes
Se denomina bloque de sentencias a un conjunto de instrucc
C11,
Java
se
utilizan
llaves
que
abren
y
cierran
{
}.
orden
de
las
operaciones
en
pseudocódigo
es:
Menor o igual que
Mayor o igual que
En lenguajes como Pascal, Modula, Delphi, Ada, se utiliz
Estas instrucciones se toman como una sola sentencia en
Distinto a
Ejemplos
Pseudocódigo
L
inicio
{
5.1.1.2 Prioridad de operadores.
inst 1
inst 2
inst 3
……….
inst n
La calculadora HP Prime realiza cálculos en función del
siguiente orden de precedencia. Las funciones con la misma
precedencia se evalúan de izquierda a derecha.
fin
}
3.5.1
Estructura
dedecontrol
selectiva simple
Figure
5.4 Orden
las
operaciones
Estructura
de control que dirige a la computadora para ejec
Otro Los
ejemplo
en C: anidados condición es verdadera. Si la condición es falsa no realiza nin
paréntesis
1 Expresiones entre paréntesis.
El término
condición lo utilizaremos a lo largo de este lib
 Recordar
Existen dos formas de representarlo, dependiendo del nú
Los operadores de asignación
si la condición se cumple:
tienen menor prioridad que
1. Si se requiere ejecutar una sola instrucción, cuando se cu
forma:
todos los otros operadores.
se evalúan de dentro hacia fuera.
2 Raíz n-ésima ( SQRT )
3 Potencia, 10n
Cap 02_Corona_I0406.indd
18
multiplicación,
división y módulo.
4 Negación,
Diagrama de flujo
Pseudocód
5 Suma y resta.
F
6 Operadores relacionales (ver tabla 5.2).
7 Operadores lógicos (ver tabla 5.1)
condición
V
5.1.2Estructura IF THEN
Figure 5.5 Diagrama de flujo IF
THEN
Cap 03_Corona_I0406.indd 50
75
 riayala@uc.cl
Inst 1
5.1 Estructuras selectivas | Capítulo 5
Programación en HP PPL
Esta instrucción evalúa un valor lógico, una expresión
relacional o una condición lógica y retorna un valor lógico,
con base en éste se toma una decisión simple o doble.. Esta
estructura tiene la siguiente sintaxis.
Sintaxis IF condicion THEN
instruccion
END;
Evalúa una condición.
Si la condición es verdadero
(distinto de 0) entonces ejecuta instrucción.
De lo
contrario, no sucede nada.
5.1.2.1 La expresión condicional

Sugerencia
ISKEYDOWN(tecla)
La expresión condicional es una es una expresión booleana.
devuelve una
El cual toma dos valores que son 0 si es falso y 1 si es
expresión booleana.
verdadero. Existen muchos comandos o funciones el cual
directamente toman estas expresiones booleanas sin tener
que usar las operaciones relacionales o lógicos.
Ejemplo Valor absoluto de un número.
5.1
El valor absoluto o módulo de un número real es su valor
numérico sin tener en cuenta su signo, sea este positivo (+)
o negativo (-). Así, por ejemplo, 3 es el valor absoluto de
+3 y de -3. Elaborar un programa el cual calcule el valor
absoluto de un número.
Solución:
El valor absoluto de un número es el mismo número para
Figure 5.6 Ingreso de
datos:programa ValorAbsoluto
el caso de los positivos y el número cambiado de signo para
los negativos.
 riayala@uc.cl
 Código 5.1: ValorAbsoluto
Figure 5.7 Resultado:programa
ValorAbsoluto
76
1
2
3
4
5
6
7
EXPORT ValorAbsoluto(num)
BEGIN
PRINT();
IF num<0 THEN
num :=num*−1
END;
PRINT("EL VALOR ABSOLUTO DEL NUMERO ES = " + num);
Diagrama de flujo
Pseudocódigo
Lenguaje C
F
8
END;
V
condición
si (condición)
if (condición)
inst 1
sino
5.1.3
5.1 Estructuras selectivas | Capítulo 5
Programación en HP PPL aplicado a la ingeniería civil
inst
1
inst
2
else
inst 2
Inst 2 IF THEN ELSEInst 1
Estructura
Se implementa una estructura de decisión doble cuando se
cuenta con dos opciones para continuar la ejecución del
algoritmo y éstas dependen de una condición; es decir, que
se cuenta con una o más instrucciones para el caso que
Si la condición se cumple se realiza la instrucción 1, pero si la condición no se cumple se realiza la instruc-
la condición
ción 2. sea verdadera y con otra u otro conjunto de
instrucciones para el caso de que sea falsa.
Diagrama de flujo
Pseudocódigo
F
Lenguaje C
V
condición
Inst 3
Inst 1
Inst 4
Inst 2
Figure 5.8 Diagrama de flujo de la estructura IF THEN
ELSE
Si la condición se cumple se realizan las instrucciones 1 y 2, pero si no se cumple se realizarán las instrucciones 3 y 4.
Sintaxis IF condicion THEN
3.5.3 Anidamiento o escalonamiento si-si no-si (if-else-if)
instruccion 1
El concepto de anidamiento es muy utilizado en la programación y consiste en insertar (anidar) una estrucELSE
tura dentro de otra.
instruccionLa
2 expresión “si anidados” se refiere a que podemos utilizar una sentencia si (if ) dentro de otra sentencia
si
(if
).
Esto se emplea cuando se tienen que cumplir varias condiciones para poder ejecutar una acción.
END;
Uno de los aspectos más confusos de las sentencias si (if ) en el lenguaje de programación es el si (if )
anidado. Un si (if ) anidado es una sentencia si (if ) que es el objeto de otro si (if ) o si no (else). La razón por la
Ingreso
de si (if ).
que los si (if ) anidados
son tan problemáticos
es que
resulta confuso
qué else5.9
se asocia
con qué
Evalúa condición.
Si condición
es verdadero
(distinto
de 0),saberFigure
datos:programa Compara10
ejecuta instrucción 1, de lo contrario, ejecuta instrucción
2.
Comparar
un numero con el valor de 10.
Ejemplo
Cap 03_Corona_I0406.indd
52
2/17/11 5:29 PM
Elabore un programa, que sirva para saber si el valor
ingresado es mayor o menor que el número 10.
Solución:
Figure 5.10 Resultado:programa
Compara10
77
 riayala@uc.cl
5.2
5.1 Estructuras selectivas | Capítulo 5
Programación en HP PPL
 Código 5.2: Compara10
1 EXPORT Compara10(A)
2 BEGIN
e programación
38
3
PRINT();
4
IF A<10 THEN
5
PRINT("EL NUMERO INGRESADO ES MENOR QUE 10");
n 1, ejecutar las instrucciones del bloque 1.
6
ELSE
7
PRINT("EL NUMERO INGRESADO ES MAYOR QUE 10");
ión 1, pero SÍ se verifica la condición 2 , ejecutar las instrucciones
8
END;
9 END;
verificado ninguna de las condiciones anteriores, ejecutar las instruc-
5.1.4Estructura CASE
flujo del programa continúa por la instrucción siguiente a la estructura
TLAB y el diagrama de flujo, se muestran en la Figura 5.7.
Cuando se tiene mas de una alternativa (bifurcación
Condición 1
Sí
Bloque 1
múltiple) para evaluar una condición, se utiliza la estructura
No
2
Condición 2
de programación CASE , el cual ejecuta múltiples estructuras
Sí
Bloque 2
simples en el orden determinado por el programador.
No
Sintaxis CASE
Bloque 3
IF condicion1 THEN
instruccion 1
Figuremúltiple:
5.11 Diagrama
de flujo
de
tructura condicional
IF- ELSEIF
- ELSE.
la estructura CASE
un ejemplo de utilización de este tipo de estructura.
END;
IF condicion2 THEN
 Recordar
minación del signoComo
de un se
número:
positivo,
negativo o nulo.
muestra
en el diagrama
de flujo, esta estructura termina
cuando una de las condiciones es
l número tiene signo positivo’
verdadera
l numero tiene signo negativo’
instruccion 2
END;
IF condicion3 THEN
instruccion 3
END;
...
[DEFAULT instrucion]
END;
l numero es nulo’
 Sugerencia
Si se utiliza varias estructuras
simples, el programa tiene que
Evalúa condición1. Si es verdadero, ejecuta instrucción1
leer todas aun si fueran falsas,
y cierra el CASE. De lo contrario, evalúa condición2. Si es
esto genera mayor gasto de
verdadero, ejecuta instrucción2 y cierra el CASE. Continúa
memoria y mayor tiempo de
evaluando pruebas hasta que encuentra una verdadera.
proceso.
Si no encuentra ninguna prueba verdadera, ejecuta los
instrucción predeterminados, si se proporcionan.
Ejemplo Número romano.
 riayala@uc.cl
5.3
Elaborar un programa que lea un número arábigo y
muestra su equivalente en romano, pero sólo contemple
los 5 primeros números, de manera que si el número
78
5.1 Estructuras selectivas | Capítulo 5
Programación en HP PPL aplicado a la ingeniería civil
digitado es superior a 5 se mostrará un mensaje de error:
número no válido.
Solución:
La solución de este ejemplo se facilita utilizando la
estructura de decisión múltiple, ya que para cada valor hay
un equivalente.
 Código 5.3: NumeroRomano
EXPORT NumeroRomano(num)
BEGIN
PRINT();
CASE
IF num==1 THEN
PRINT("El numero ROMANO equivalente: I ");
END;
IF num==2 THEN
PRINT("El numero ROMANO equivalente: II ");
END;
IF num==3 THEN
PRINT("El numero ROMANO equivalente: III ");
END;
IF num==4 THEN
PRINT("El numero ROMANO equivalente: IV ");
END;
IF num==5 THEN
PRINT("El numero ROMANO equivalente: V ");
END;
PRINT("Numero no válido");
END;
END;
!
Figure 5.12 Resultados: programa
NumeroRomano
Figure 5.13 Resultados: programa
NumeroRomano
Importante :
• La estructura de programación CASE se limita a 127
bifurcaciones.
5.1.5Estructura IFERR

Sugerencia
Es importante utilizar esta
Muchas veces es pasado por alto algunas condiciones de
estructura para disminuir los
cálculo o asignación, por ello los programas creados no
errores de cálculo que necesitan
son lo suficientemente atractivos y eficientes ya que con
alguna condición
el mas mínimo dato mal ingresado genera una falla y hace
que se cierre, es mas muchas veces se tiene que ingresar
 Recordar
Generalmente engloba a las
nuevamente los datos, el cual es una pérdida de tiempo para
operaciones de cálculos o
el usuario.
también a las funciones
79
 riayala@uc.cl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
5.1 Estructuras selectivas | Capítulo 5
Programación en HP PPL
Para solución,
se puede utilizar la estructura de
programación IFERR THEN ELSE .
Esta estructura Se caracteriza esencialmente por detectar
errores tanto de asignación o de cálculo de un programa.
Sintaxis IFERR
instruccion1
THEN
instruccion2
END;
Ejecuta la secuencia de instruccion1. Si se produce un error
durante la ejecución de instruccion1, ejecuta la secuencia
de instruccion2.
Ejemplo División.
5.4
Antes de ejecutar una división es necesario verificar que el
divisor sea diferente de cero, ya que en caso contrario se
generará un error de cómputo y el programa se cancelará.
En consecuencia, es necesario utilizar la sentencia IFERR
para decidir si se ejecuta la división o se muestra un
Figure 5.14 Resultados para
num=5 y den=0
mensaje de error.
Solución:
 Código 5.4: Division
Figure 5.15 Resultados para
num=5 y den=10
 Recordar
La estructura de programación
1
2
3
4
5
6
7
8
9
10
11
12
EXPORT Division(num,den)
BEGIN
PRINT();
LOCAL resul;
IFERR
resul:=num/den; //Operacion que puede generar error.
PRINT("Calculos correctamente");
PRINT("La division es=" + resul);
THEN
PRINT("Ocurrio un error");
END;
END;
IFERR , puede facilitar la creacion
de programas con la cantidad
 riayala@uc.cl
mínima posible de errores.
5.1.6Estructura IFERR ELSE
La estructura IFERR ELSE, es un detector de errores con
dos condiciones, es utilizado para casos específicos de
programas.
80
5.1 Estructuras selectivas | Capítulo 5
Programación en HP PPL aplicado a la ingeniería civil
Sintaxis IFERR
instruccion1
THEN
instruccion2
ELSE
instruccion3
END;
Ejecuta la secuencia de instruccion1. Si se produce un error
durante la ejecución de instruccion1, ejecuta la secuencia
de instruccion2. De lo contrario, ejecuta la secuencia de
instruccion3.
5.1.7Estructuras de decisión anidadas
El concepto de anidadas se refiera a que una estructura se
encuentra dentro de otra del mismo tipo.
se utiliza en varios casos, más
Las estructuras de decisión IF−THEN , IF−THEN−ELSE y CASE
implican la selección de una de dos alternativas. Es posible
también utilizar la instrucción para diseñar estructuras de
selección que contengan más de dos alternativas.
 Recordar
El anidamiento o la anidación
adelante veremos los ciclos
anidados, los cuales son la base
de los arreglos bidimensionales
o matrices.
Por
ejemplo, una estructura IF−THEN puede contener otra, y así
sucesivamente cualquier número de veces; a su vez, dentro
de cada estructura pueden existir diferentes acciones. La
sintaxis para una de las combinaciones de estas estructuras
anidadas es:
Sintaxis IF condicion THEN
instrucion1
IF condicion THEN
instrucion2
ELSE
instrucion3
END;
END;
Ejemplo Tipo del triangulo.
Elabore un programa que sirva para identificar el tipo de
triángulo conociendo sus tres lados.
Solución:
81
 riayala@uc.cl
5.5
5.1 Estructuras selectivas | Capítulo 5
Programación en HP PPL
El valor absoluto de un número es el mismo número para
el caso de los positivos y el número cambiado de signo para
los negativos.
 Código 5.5: TipoTriangulo
Figure 5.16 Ingreso de datos:
programa TipoTriangulo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
EXPORT TipoTriangulo(la1,la2,la3)
BEGIN
LOCAL Tipo;
IF la1==la2 AND la2==la3 THEN
Tipo:="Equilatero";
ELSE
IF la1==la2 OR la2==la3 OR la1==la3 THEN
Tipo:="Isosceles";
ELSE
Tipo:="Escaleno";
END;
END;
PRINT();
PRINT("El tringulo es: " + Tipo);
END;
Figure 5.17 Resultado: programa
TipoTriangulo
5.1.8Ejercicios Aplicativos.
Ejercicio 5.1
Tipo de flujo en tuberías.
Matemáticamente,
el
Re
es
un
parámetro
adimensional que expresa la relación entre las
fuerzas de inercia y las fuerzas de viscosidad o de
fricción en el interior de una corriente, que se expresa
para una tubería de sección circular, de la siguiente
forma:
Re =
Re < 2100
4Q
πνD
⇒ Flujo laminar
2100 ≤ Re < 4100 ⇒ Flujo en transición
 riayala@uc.cl
Re ≥ 4100
⇒ Flujo turbulento
Elabore un programa que calcule el tipo de flujo para
los siguientes datos en una tubería cerrada.
82
Q = 0.1m3 /s, D = 10pulg , ν = 1.14 × E −6

Solución:
Sugerencia
El uso de las variables globales
pueden en un sentido pueden
 Código 5.6: TipoFlujo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
EXPORT TipoFlujo()
BEGIN
//Variables.
LOCAL Caudal,Diametro,Viscosidad,Re,Tipo;
//Ingreso de datos.
INPUT
(
{
{Caudal,[0],{25,25,0}},
{Diametro,[0],{25,20,1}},
{Viscosidad,[0],{25,25,2}}
},
"FLUJO EN TUBERIAS",
{
"Q:",
"D:",
"v:"
},
{
"Caudal m3/s",
"m",
"m2/s"
},
{0.1,10,1.14e−6},
{0.1,10,1.14e−6}
);
//Proceso.
Re:=4*Caudal/(PI()*Viscosidad*Diametro);
CASE
IF Re < 2100 THEN
Tipo:="LAMINAR";
END;
IF 2100<=Re < 4100 THEN
Tipo:="de TRANSICION";
END;
IF Re > 4100 THEN
Tipo:="TURBULENTO";
END;
END;
//Salida de resultados.
DIMGROB_P(G1,320,240);
RECT_P();
TEXTOUT_P("RESULTADOS",G1,120,10,3);
TEXTOUT_P("El tipo de flujo es "+Tipo,G1,10,40,2);
BLIT_P(G0,G1);
WAIT(−1);
END;
ser de gran ayuda para los
usuarios del programa, ya que
se puede lograr que se guarden
los últimos datos de ingreso al
formulario.
5.1 Estructuras selectivas | Capítulo 5
Programación en HP PPL aplicado a la ingeniería civil
Las variables Caudal, Diametro y
Viscosidad se deben declarar como
variables globales asignándoles
unos valores iniciales Caudal:=0.1; ,
Diametro:=10; , Viscosidad:=1.14e−6;
; también se debe modificar el
parámetro de reseteo e inicial
del comando INPUT (lineas 23 y
24 del código 5.6), 0.1,10,1.14e−6
por las siguientes variables
Caudal,Diametro,Viscosidad , con estas
modificaciones el programa será
capas de abrir en el formulario los
últimos datos que se ingreso.
Figure 5.18 Ingreso de datos:
programa TipoFlujo
5.6
Escriba un programa que convierte rumbos y distancias a
coordenadas cartesianas de un punto. Tomar en cuenta la
siguiente tabla de transformación.
Figure 5.19 Resultado: programa
TipoFlujo
83
 riayala@uc.cl
Ejemplo Rumbos y distancias a coordenada cartesiana.
5.1 Estructuras selectivas | Capítulo 5
Programación en HP PPL
Cuadrante
Azimut
NE
Igual al Rumbo.
SE
180° - Rumbo
SW
180° + Rumbo
NW
360° - Rumbo
Solución:
El proceso puede ser programado fácilmente en la
calculadora HP PRIME.
Código del programa.
 Código 5.7: Cuadrante
Figure 5.20 Ingreso de datos:
programa Cuadrante
Figure 5.21 Resultado: programa
Cuadrante

Sugerencia
El uso de las variables globales
pueden en un sentido pueden
ser de gran ayuda para los
usuarios del programa, ya que
se puede lograr que se guarden
los últimos datos de ingreso al
 riayala@uc.cl
formulario.
84
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
EXPORT Cuadrante()
BEGIN
LOCAL Rumbo,Cuadrante,Distancia,Azimut,CX,CY;
//Ingreso de datos.
INPUT
(
{
{Rumbo,[0],{25,25,0}},
{Cuadrante,{"NE","SE","SW","NW"},{25,20,1}},
{Distancia,[0],{25,25,2}}
},
"RUMBO A COORDENADAS CARTESIANA",
{
"Rumbo:",
"Cuadrante:",
"Distancia:"
},
{
"Ingrese el rumbo en grados (°).",
"Elija el cuadrante.",
"Ingrese la distancia (m)."
},
{13.85,2,320.71},
{13.85,2,320.71}
);
//Convirtiendo Rumbo en Azimut.
CASE
IF Cuadrante==1 THEN
Azimut:=Rumbo;
Cuadrante:="NE";
END;
IF Cuadrante==2 THEN
Azimut:=180−Rumbo;
Cuadrante:="SE";
END;
IF Cuadrante==3 THEN
Azimut:=180+Rumbo;
Cuadrante:="SW";
END;
IF Cuadrante==4 THEN
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
5.1 Estructuras selectivas | Capítulo 5
Programación en HP PPL aplicado a la ingeniería civil
Azimut:=360−Rumbo;
Cuadrante:="NW";
END;
END;
//Convirtiendo Azimut a coordenadas.
CX:=Distancia*SIN(PI()*Azimut/180);
CY:=Distancia*COS(PI()*Azimut/180);
//Impresion de datos.
DIMGROB_P(G1,320,240);
RECT_P();
TEXTOUT_P("RESULTADOS",G1,120,10,3);
TEXTOUT_P("1−RUMBOS A COORDENADAS X y Y",G1,5,30,3);
TEXTOUT_P("Rumbo = " + Rumbo + " " +Cuadrante,G1,5,50,3);
TEXTOUT_P("Azimut = " + Azimut,G1,5,50,3);
TEXTOUT_P("Coordenada X = "+CX,G1,5,50,3);
TEXTOUT_P("Coordenada Y = "+CY,G1,5,50,3);
BLIT_P(G0,G1);
WAIT(−1);
END;
Para poder cargar los últimos datos que se ingresó cada vez
que se inicie el programa se puede modificar algunas linea
de código como se muestra a continuación.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Rumbo:=13.85;
Cuadrante:=2;
Distancia:=320.71;
EXPORT Cuadrante()
BEGIN
LOCAL Azimut,CX,CY;
//Ingreso de datos.
INPUT
(
{
{Rumbo,[0],{25,25,0}},
{Cuadrante,{"NE","SE","SW","NW"},{25,20,1}},
{Distancia,[0],{25,25,2}}
},
"RUMBO A COORDENADAS CARTESIANA",
{
"Rumbo:",
"Cuadrante:",
"Distancia:"
},
{
"Ingrese el rumbo en grados (°).",
"Elija el cuadrante.",
"Ingrese la distancia (m)."
},
{Rumbo,Cuadrante,Distancia},
{Rumbo,Cuadrante,Distancia}
);
//Convirtiendo Rumbo en Azimut.
CASE
IF Cuadrante==1 THEN
Azimut:=Rumbo;
Cuadrante:="NE";
END;
IF Cuadrante==2 THEN
85
 riayala@uc.cl
 Código 5.8: Cuadrante con variables globales
5.1 Estructuras selectivas | Capítulo 5
Programación en HP PPL
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Azimut:=180−Rumbo;
Cuadrante:="SE";
END;
IF Cuadrante==3 THEN
Azimut:=180+Rumbo;
Cuadrante:="SW";
END;
IF Cuadrante==4 THEN
Azimut:=360−Rumbo;
Cuadrante:="NW";
END;
END;
//Convirtiendo Azimut a coordenadas.
CX:=Distancia*SIN(PI()*Azimut/180);
CY:=Distancia*COS(PI()*Azimut/180);
//Impresion de datos.
DIMGROB_P(G1,320,240);
RECT_P();
TEXTOUT_P("RESULTADOS",G1,120,10,3);
TEXTOUT_P("1−RUMBOS A COORDENADAS X y Y",G1,5,30,3);
TEXTOUT_P("Rumbo = " + Rumbo + " " +Cuadrante,G1,5,50,3);
TEXTOUT_P("Azimut = " + Azimut,G1,5,50,3);
TEXTOUT_P("Coordenada X = "+CX,G1,5,50,3);
TEXTOUT_P("Coordenada Y = "+CY,G1,5,50,3);
BLIT_P(G0,G1);
WAIT(−1);
END;
5.1.9Ejercicios propuestos.
Ejemplo 1
Elabore un programa que pida al usuario dos
numero e imprima el mayor de ellos.
Ejemplo 2
Elabore un programa que pida un numero y si
diga si es o no múltiplo de 3.
Ejemplo 3
Elabore un programa que pida un numero y si
diga si es o no múltiplo de 3.
Ejemplo 4
Dado 3 números deducir cual es el central.
Ejemplo 5
Que dados dos números n1 y n2 se quiere
dividir n1 entre n2 siempre y cuando n2 no sea cero,
determinar e imprimir el resultado de la división en caso
 riayala@uc.cl
contrario imprimir “No se puede dividir”.
Ejemplo 6
Que lea dos temperaturas, imprimir “Hace
Frio” si la temperatura es inferior a 15º, en caso contrario
86
imprimir “Hace Calor”.
5.2 Estructuras repetitivas.
Es muy común encontrar en la práctica algoritmos cuyas
operaciones se deben ejecutar un número repetido de veces.
 Recordar
Bucles, ciclo o iteración.
Es un segmento de un
Si bien las instrucciones son las mismas, los datos sobre
algoritmo o programa, cuya(s)
los que se opera varían. El conjunto de instrucciones que
instrucción(es) se repite(n) un
se ejecutan repetidamente se llama ciclo. Es un segmento
número conocido o indefinido
de un algoritmo o programa cuyas instrucciones se repiten
5.2 Estructuras repetitivas. | Capítulo 5
Programación en HP PPL aplicado a la ingeniería civil
de veces mientras se cumpla una
determinada condición.
un número determinado de veces mientras se cumpla una
determinada condición y consta de tres partes:
1 Decisión del bucle.
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
 Contador
Veces = Veces + 1
decrementa su valor en un valor constante.
Cuando
decimos
incrementa
estamos
sumando.
 Acumulador
Suma:=Suma+Numero
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 iteración.
Puede ser positivo (incrementos, uno e uno) o negativo
2 Acumulador: Es una variable que incrementa o decrece
su contenido en cantidades variables.
Ejemplo: Nomina = Nomina + sueldo
87
 riayala@uc.cl
(decremento, uno en uno).
5.2 Estructuras repetitivas. | Capítulo 5
Programación en HP PPL
En el lenguaje de programacion PPL PRIME, existen muchas
estructuras de codigo que realizan repeticiones, tal pueden
ser.
1 FOR.
ión
40
2 WHILE.
3 REPEAT.
xada: FOR
ntar la repetición de un cierto conjunto de instrucciones
Entre tantos, son las estructuras repetitivas mas utilizados
l del bucle, llamada también ı́ndice, que va recorriendo
en determinado. Para cada valor del ı́ndice en dicho
to de instrucciones.
por los programadores.
rma de escribir esta estructura en MATLAB y el organiones se ejecuta una vez para cada valor del indice, que
omponente del vector V, de longitud N.
5.2.1Estructura FOR
La estructura repetir conocida comúnmente como FOR ,
k=1
k>N
es la estructura algorítmica adecuada para utilizar en un
ciclo que se ejecutará un número definido de veces. Este
V
F
Instrucciones
tipo de estructura está presente en todos los lenguajes de
programación, para ello se utiliza una variable de control
del bucle, llamada también índice, que va recorriendo un
k = k+1
conjunto pre-fijado de valores en un orden determinado.
Para cada valor del índice en dicho conjunto, se ejecuta una
Figure 5.22 Diagrama de la
estructura FOR
ATLAB y diagrama de flujo. El indice del bucle recorre
ura FOR, véanse los
5.8 y 5.9 para calcular la
 Algoritmos
Sugerencia
El valor de la variable de
vez el mismo conjunto de instrucciones.
En la Figura 5.22 se han representado la forma de
escribir esta estructura en PPL PRIMEy el diagrama
correspondiente: el bloque de instrucciones se ejecuta
una vez para cada valor del indice k, que va aumentando
control k puede ser utilizado
ede ser utilizado o onono
dentro
del
conjunto
de
instrucciones
dentro del conjunto de
sucesivamente en cada ciclo hasta llegar al numero N.
debe ser modificado.
instrucciones que forman parte
l indice puede ser vacı́o (N=0). En ese caso, Sintaxis
el bloque Tipo I:
del cuerpo del FOR , pero no
FOR k FROM inicio TO N DO
, es decir, incluir una
de la otra, con la restricción
debedentro
ser modificado.
instruccion
ue estar completamente contenida en uno de los bloques
END;
plo, el Algoritmo 5.10.
 Recordar
El conjunto de valores que debe
 riayala@uc.cl
recorrer el indice puede ser
vacío (N=0). En ese caso, el
Tipo II:
FOR k:=inicio TO N DO
instruccion
END;
bloque de instrucciones no se
ejecuta ninguna vez.
88
Define la variable var con el valor de inicio y siempre que
5.2 Estructuras repetitivas. | Capítulo 5
Programación en HP PPL aplicado a la ingeniería civil
el valor de esta variable sea inferior o igual a N, ejecuta la
secuencia de instruccion, y luego incremente 1 a la variable
k.
Lo resaltaste de este comando es que ejecuta un número
especificado de veces y de modo automático controla el
número de iteraciones o pasos a través del cuerpo del bucle.
Ejemplo Factorial de un número.
5.7
El factorial de un entero positivo n, el factorial de n o
n factorial se define en principio como el producto de
todos los números enteros positivos desde 1 (es decir,
los números naturales) hasta n.
Entonces elaborar un
programa que sirva para calcular el factorial de un número
entero positivo dado.
n! =
n
Y
k
k=1
Solución:
 Código 5.9: Factorial
EXPORT Factorial(num)
BEGIN
//1 ‐>Declaracion de variables.
LOCAL Factorial,i;
//2 ‐>Proceso de datos
Factorial:=1;
FOR i:=1 TO num DO
Factorial:=i*Factorial;
END;
//3 ‐>Salida de datos
PRINT();
PRINT("El factorial de "+num + " es igual a " +Factorial );
END;
Figure 5.23 Resultado del
programa Factorial para num=5
A partir de la estructura de programación FOR tambien
podemos obtener algunas variantes donde son casos
específicos los cuales pueden incrementar el contador en un
valor definido.
89
 riayala@uc.cl
1
2
3
4
5
6
7
8
9
10
11
12
13
5.2 Estructuras repetitivas. | Capítulo 5
Programación en HP PPL
5.2.1.1 Estructura FOR STEP
Sintaxis
FOR k:=inicio TO fin [STEP incremento] DO
instruccion
END;
Define la variable k con el valor inicio y siempre que el valor
de esta variable sea inferior o igual a fin ejecuta la secuencia
de instruccion y luego suma incremento a k.
Ejemplo Producto de números.
5.8
Elabore un programa donde realice el producto de los n
primeros números tomados de a en a.
Solución:
 Código 5.10: Producto
1
2
3
4
5
6
7
8
9
10
11
12
13
Figure 5.24 Resultado del
programa Producto A=5 y b=2
EXPORT Producto(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;
5.2.1.2 Estructura FOR DOWN
Sintaxis FOR k:=inico DOWNTO fin DO
instruccion
END;
Define la variable k con el valor inicio y siempre que el valor
de esta variable sea mayor o igual a fin, ejecuta la secuencia
de instrucciones, y luego resta 1 (decremento) a k.
Ejemplo title= Números consecutivos.
5.9
Imprima los “n” primeros números consecutivos mayor a
 riayala@uc.cl
menor hasta un número dado.
Figure 5.25 Resultado del
programa Producto A=5 y b=2
90
Solución:
5.2 Estructuras repetitivas. | Capítulo 5
Programación en HP PPL aplicado a la ingeniería civil
 Código 5.11: Consecutivos
1
2
3
4
5
6
7
8
9
10
EXPORT Consecutivos(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;
5.2.1.3 Estructura FOR STEP DOWN
Sintaxis FOR k:=inicio DOWNTO fin [STEP incremento] DO
instruccion
END;
3.6 Estructura de control repetitiva o de iteración condicional
Define la variable k con el valor inicio y siempre que el valor
de esta variable sea mayor o igual a fin ejecuta la secuencia
de instruccion y luego resta decremento a k.
nuación)
5.2.2
if (D,50) printf(“%f,%f\n”,A,C*2);
printf(“%f,%f,%f,%f\n”,A,B,C,D);
Estructura WHILE
b5b%2;
}
 Recordar
else printf(“%f,%f\n”,B,D/2);
printf(“%d,%d,%d,%d,%d\n”,e,d*2,b,a14,c);
La estructura algorítmica mientras, comúnmente
conocida
getch();
getch
(); return
0;
utilizar
en un
como WHILE , es la estructura adecuada para
return 0;
}
ciclo cuando NO sabemos el número de veces
que éste se
No es necesario declarar un
contador, si se hay la necesidad
se declara dentro del bucle.
ha de repetir. Dicho número depende de las proposiciones
dentro del ciclo.
Sintaxis WHILE condicion DO
instrucciones
computadoras Su
están
diseñadas primordialmente para aquellas aplifuncionamiento es evidente, a la vista del diagrama:
ones en las cuales una operación o conjunto de ellas deben repetirse
No
de una vez.
Condición
1 Al comienzo de cada iteración se evalúa la expresión
La repetición de una acción (una o varias instrucciones) se lleva a
lógica (condición).
Si
o mientras se cumpla
cierta condición; para que la acción termine, la
es VERDADERO,
se que
ejecuta
el conjunto
2 Si el resultado
ón misma debe modificar
la(s) variable(s)
de control
interviene(n)
Acción
a condición. Dicha de
condición
puede
estar
predefinida
enrepite
el ci-el
instrucciones
y se
vuelve
a iterar, escomo
decir, se
desde (for); o no predeterminada,
como en los bucles mientras (while)
paso 1.
cer-mientras (do_while).
Figure 5.26 Diagrama de la
es FALSO,
se algoritmo
detiene la oejecución
delcuya(s)
3 Si el resultado
Bucles, ciclo o iteración.
Es un segmento
de un
programa,
instrucción(es)
se repite(n)
estructura
WHILE
número conocido o indefinido de veces mientras se cumpla una determinada condición. En cada vuelta
ciclo comprueba si la condición es verdadera, rompiéndose el ciclo cuando es falsa. La condición en algún
91
mento tiene que ser falsa ya que en caso contrario el bucle se hará infinito.
 riayala@uc.cl
k:=k+1; //contador.
6 Estructura
de control repetitiva o de iteración condicional
END;
5.2 Estructuras repetitivas. | Capítulo 5
Programación en HP PPL
ciclo WHILE y el programa se sigue ejecutando por la
instrucción siguiente al END.
Ejemplo Número PI.
5.10
π (pi) es la relación entre la longitud de una circunferencia
y su diámetro en geometría euclidiana. Es un número
irracional y una de las constantes matemáticas más
importantes. Se emplea frecuentemente en matemáticas,
física e ingeniería. El valor numérico de π se puede obtener
Estructura de control repetitiva o de iteración condicional
79
con la siguiente expresión.
π=4
m
X
(−1)i
i=1
2i + 1
Se desea obtener el numero π cuando se cumpla im = 1000
b5b%2;
o cuando perror siendo el error máximo 0.01.
Figure 5.27 Ingreso de datos:
programa NumeroPI
,%d,%d,%d,%d\n”,e,d*2,b,a14,c);
Solución:
eturn 0;
 Código 5.12: NumeroPI
Figure 5.28
Resultado: programa
eraciónNumeroPI
condicional
aplietirse
Acción
Si
No
eva a
ne, la
ne(n)
el ciwhile)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
EXPORT NumeroPI(emax)
BEGIN
//1 ‐>Declaracion de variables.
LOCAL pi,i,e;
//2 ‐>Proceso de datos.
i:=0;
pi:=0;
e:=ABS(PI()−pi); //Error.
WHILE e>emax DO
pi:=pi+4*((−1)^i)/(2*i+1); //Calculo
e:=ABS(PI()−pi);
i:=i+1; //Acumulador.
END;
//3 ‐>Salida de datos.
PRINT();
PRINT("PI con "+ i + " iteraciones y un error aproximado de " + e + " es " + pi );
END;
Condición
5.2.3Estructura REPEAT
rama, cuya(s)
instrucción(es)
se repite(n) En la sentencia WHILE , la condición de ejecución del bucle se
estructura
WHILE
determinada condición. En cada vuelta verifica antes de haber ejecutado éste por primera vez. Por
Recordar
lo cuando es falsa.
La condición en algún tanto, es necesario inicializar las variables empleadas para
No
es
necesario
declarar un
rá infinito.
 riayala@uc.cl
Figure 5.29
Diagrama de la
contador, y si lo hay se declara
determinar su ejecución antes de entrar por primera vez en
dentro del bucle.
éste, lo cual puede tener como consecuencia que el bucle no
anderas
92
e a variables que van incrementando o
5.2 Estructuras repetitivas. | Capítulo 5
Programación en HP PPL aplicado a la ingeniería civil
llegue a ejecutarse nunca. Si queremos evitar ambas cosas,
es decir:
1 Tener que inicializar las variables de control del bucle.
2 Ejecutar al menos una vez el bucle.
debemos emplear la sentencia REPEAT . En esta sentencia,
el número de iteraciones depende de la evaluación de una
condición, como en la de WHILE , pero esta evaluación se
realiza después de cada ejecución del bucle.
instrucciones
 Recordar
Por la forma de ejecución de
UNTIL condicion ;
este bucle es muy utilizado por
Sintaxis REPEAT
los programadores para realizar
Repite la secuencia de instrucciones hasta que el valor de
la condición sea verdadero (distinto de 0). Es decir, repite
programas con gráficos (Detiene
o congelan los gráficos de la
pantalla indefinidamente hasta
mientras la condición sea falso.
que la condición sea verdadera)
Ejemplo Raíz cuadrada.
5.11
Para calcular la raíz cuadrada de un numero N se elige un
valor inicial y la cantidad de iteraciones.
xn−1 +
xn =
N
xn−1
2
Solución:
 Código 5.13: RaizCuadrada
EXPORT RaizCuadrada(num,emax)
BEGIN
//1 ‐>Declaracion de variables.
LOCAL i,iraiz,fraiz,error;
iraiz:=0.5; //Raiz inicial.
IF num<=0 THEN
MSGBOX("El numero ingresado no es positivo");
ELSE
//2 ‐>Proceso de datos
REPEAT
fraiz:=0.5*(iraiz+num/iraiz);
error:=ABS((fraiz−iraiz)/fraiz);
iraiz:=fraiz;
i:=i+1;
Figure 5.30 Ingreso de datos:
programa NumeroPI
Figure 5.31 Resultado: programa
NumeroPI
93
 riayala@uc.cl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
5.2 Estructuras repetitivas. | Capítulo 5
Programación en HP PPL
UNTIL error<emax;
//3 ‐>Salida de datos
PRINT();
PRINT("Raiz cuadrada de "+num+" es "+fraiz);
PRINT("Ralculado con " + i +" iteraciones");
PRINT("Con un error de " + error);
END;
END;
15
16
17
18
19
20
21
22
5.2.4Comandos BREAK y CONTINUE
En ocasiones es necesario interrumpir la ejecución de un
ciclo de repetición en algún punto interno del bloque de
instrucciones que se repiten. Lógicamente, ello dependerá
de que se verifique o no alguna condición.
La interrupción puede hacerse de dos formas:
1 Abandonando el ciclo de repetición definitivamente.
Algoritmos
y estructuras
programación
Algoritmos
y estructuras
de de
programación
43 43
2 Abandonando la iteración en curso, pero comenzando la
siguiente.
Abandonando
la iteración
en curso,
comenzando
la siguiente.
2. 2.
Abandonando
la iteración
en curso,
peropero
comenzando
la siguiente.
En el lenguaje de programación PPL PRIME, la primera
instrucciones
para
poner
en práctica
tienen
nombres
diversos
en distintos
los distintos
lenguajes
LasLas
instrucciones
para
poner
estoesto
en práctica
tienen
nombres
diversos
en los
lenguajes
de de
BREAKBREAK
y
la
segunda
opción
se
implementa
con
la
instrucción
programación.
En
MATLAB,
la
primera
opción
se
implementa
con
la
instrucción
y
la
segunda
programación. En MATLAB, la primera opción se implementa con la instrucción BREAK y la segunda
la instrucción
CONTINUE.
Ambas
pueden
utilizarse
tanto
romper
un ciclo
FOR
como
un ciclo
concon
la instrucción
CONTINUE.
Ambas
pueden
tanto
parapara
romper
unpueden
ciclo
FOR
como
un
ciclo
CONTINUE
. Ambas
utilizarse
tanto
conutilizarse
la instrucción
WHILE.
Cuando
se utiliza
la orden
BREAK
dentro
de ciclo
un ciclo
el ı́ndice
del bucle
conserva,
WHILE.
Cuando
se utiliza
la orden
BREAK
dentro
de un
FOR,FOR,
el ı́ndice
del bucle
conserva,
fuerafuera
para romper un ciclo FOR , un ciclo WHILE o como un ciclo
del
mismo,
el
último
valor
que
tomó.
del mismo, el último valor que tomó.
REPEAT
Véanse
correspondientes
diagramas
de. flujo
en Figuras
las Figuras
y 5.11.
Véanse
los los
correspondientes
diagramas
de flujo
en las
5.105.10
y 5.11.
Condición
Condición
WHILE
WHILE
TRUETRUE
FALSE
FALSE
Condición
Condición
WHILE
WHILE FALSEFALSE
TRUETRUE
Instrucciones-1
Instrucciones-1
TRUE
TRUE
Condición
Condición
BREAK
BREAK
ruptura
ruptura
FALSE
FALSE
Instrucciones-1
Instrucciones-1
TRUE TRUECondición
Condición
CONTINUE
CONTINUE
ruptura
ruptura
FALSEFALSE
 riayala@uc.cl
Instrucciones-2
Instrucciones-2
Figure 5.32 Diagrama de flujo de
Instrucciones-2
Instrucciones-2
Figure 5.33
Diagrama de flujo de la
Figura
Diagrama
flujo
de la
5.11:5.11:
de flujo
de laderuptura
Figura
5.10:
Diagrama
de flujo
deruptura
la ruptura Figura
Figura
Diagrama
de flujo
la ruptura
la5.10:
ruptura
de ciclode
BREAK
ruptura
deDiagrama
ciclo
CONTINUE
de de
ciclo
BREAK.
de
ciclo
CONTINUE.
ciclo BREAK.
de ciclo CONTINUE.
94
5.5.7
de de
elección
entre
varios
casos:
SWITCH
5.5.7Estructura
Estructura
elección
entre
varios
casos:
SWITCH
Este
tipotipo
de de
estructura
permite
decidir
entre
varios
caminos
posibles,
en función
del valor
que que
Este
estructura
permite
decidir
entre
varios
caminos
posibles,
en función
del valor
Este comando hace el rompimiento de los bucles, el
argumento opcional n deshace n niveles de bucles.
La
 Recordar
Cuando se utiliza la orden BREAK
dentro de un ciclo FOR , el índice
ejecución retoma en la primera instrucción después del
del bucle conserva, fuera del
bucle. Sin un argumento, sale desde un único bucle.
mismo, el ultimo valor que
Sintaxis
>>BREAK;
tomo.
>>BREAK(n);
>>CONTINUE;
5.2 Estructuras repetitivas. | Capítulo 5
Programación en HP PPL aplicado a la ingeniería civil
5.2.5Estructuras iterativas anidadas
Las estructuras iterativas, al igual que las de decisión, se
pueden anidar; es decir, se pueden colocar una dentro de
otra.
 Recordar
Las estructuras FOR, WHILE y
REPEAT se pueden anidar entre
ellos.
El anidamiento se conforma por un ciclo externo y uno
o más ciclos internos, donde cada vez que se repite el
ciclo externo, los internos se reinician y ejecutan todas las
iteraciones definidas.
Las estructuras iterativas vistas hasta ahora pueden
anidarse entre ellos mismos o también es posible anidarlos
como una combinación con cada una de esas estructuras.
Sintaxis FOR k:=inicio1 TO N DO
instrucciones1
FOR m:=inicio2 TO M DO
instrucciones2
END;
END;
Ejemplo Reloj digital.
El tiempo se mide en horas, minutos y segundos, las
horas están conformadas por minutos y los minutos por
segundos, de manera que si se escribe un ciclo para las
horas, otro para los minutos y otro para los segundos, el
ciclo de los minutos en cada iteración deberá esperar a
que se ejecuten las 60 iteraciones del ciclo de los segundos
(0-59) y el de las horas deberá esperar que se ejecute el de
95
 riayala@uc.cl
5.12
5.2 Estructuras repetitivas. | Capítulo 5
Programación en HP PPL
los minutos (0-59).
Solución:
Para implementar un reloj digital es necesario declarar tres
variables, para controlar: horas, minutos y segundos. Cada
una de estas variables controla un ciclo, así: los segundos
se incrementan desde 0 a 59, los minutos también desde 0
a 59 y las horas desde 1 a 12 o de 1 a 24.
Figure 5.34 Resultado: programa
RelojDigital
Figure 5.35 Resultado: programa
RelojDigital
 Código 5.14: RelojDigital
1
2
3
4
5
6
7
8
9
10
11
12
13
14
EXPORT RelojDigital()
BEGIN
//1 ‐>Declaracion de variables.
LOCAL hora,minuto,segundo;
//2 ‐>Proceso y salida.
FOR hora:=1 TO 12 DO
FOR minuto:=0 TO 59 DO
FOR segundo:=0 TO 59 DO
PRINT();
PRINT(hora + ":" + minuto + ":" + segundo);
END;
END;
END;
END;
5.2.6Ejercicios aplicativos.
Ejercicio 5.2
Método de newton Raphson.
Tal vez, de las fórmulas para localizar raíces, la
fórmula de Newton-Raphson sea la más ampliamente
utilizada.
El método de Newton-Raphson se deduce a partir de
una interpretación geométrica basado en la pendiente
de la función dada. La ecuación 5.1, se conoce como la
fórmula de Newton Raphson.
 riayala@uc.cl
xi+1 = xi −
f (xi )
f ′ (xi )
(5.1)
a partir de esta fórmula elaborar un programa que
sirva para calcular la raíz de una ecuación dada con el
96
5.2 Estructuras repetitivas. | Capítulo 5
Programación en HP PPL aplicado a la ingeniería civil
método de Newton Raphson.
Solución:
Código del programa.
 Código 5.15: NEWTON-ENL
FUNC:='e^(−X)−X';
xi:=0;
ni:=20;
er:=0.001;
EXPORT NEWTON_ENL()
BEGIN
LOCAL Niter,error,cond,x1;
RECT_P();
INPUT(
{
{FUNC,[8],{20,40,1}},
{xi,[0],{20,20,2}},
{ni,[0],{20,20,3}},
{er,[0],{20,20,4}}
},
"Newton−Raphson ",
{"f(x):",
"xi:",
"ni:",
"tol:"
},
{"f(X)",
"x inicial",
"Maximo numero de iteraciones",
"tolerancia"
}
);
Niter:=0;
REPEAT
Niter:=Niter+1;
X:=xi;
x1:=xi−(EVAL(FUNC))/(EVAL(diff(FUNC,X)));
error:=ABS(((x1−xi)/x1))*100;
IF (error<er) OR (ni < Niter) THEN
cond:=1;
ELSE
xi:=x1;
END;
UNTIL cond>0;
RECT_P();
IF error<er THEN
TEXTOUT_P("*RESPUESTA",50,5);
TEXTOUT_P("−La raiz es: "+x1,5,25);
TEXTOUT_P("−Iteraciones: "+Niter,5,45);
ELSE
TEXTOUT_P("*RESPUESTA",50,5);
TEXTOUT_P("−Divergencia o convergencia lenta",5,25);
TEXTOUT_P("−Iteraciones: "+Niter,5,45);
END;
WAIT(−1);
END;
Figure 5.36 Ingreso de datos:
programa NEWTON-ENL
Figure 5.37 Resultado: programa
NEWTON-ENL
97
 riayala@uc.cl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
5.2 Estructuras repetitivas. | Capítulo 5
Programación en HP PPL
 Tony Quispe
Ejercicio 5.3
Programa gráfico de proceso en espera.
Crear un programa con los bucles o estructuras
repetitivas que sirvan para mostrar una pantalla de un
proceso en espera con gráficos dinámicos,
Solución:
Código del programa Cargando1.
 Código 5.16: Cargando1
Figure 5.38
Cargando1
Resultado: programa
Figure 5.39
Cargando1
Resultado: programa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//Declarando funciones.
CIRCULO();
EXPORT Cargando()
BEGIN
LOCAL x,y,x0,y0,i,a,r;
LOCAL t,j;
t:=10;
x0:=160;
y0:=120;
r:=30;
IF SIN(π/2)==1 THEN
a:=π/6;
ELSE
a:=30;
END;
RECT_P();
FOR j:=0 TO 12*t−1 DO
RECT_P(125,85,195,155,RGB(255,255,255));
TEXTOUT_P("Cargando...",135,115,1,RGB(0,0,255));
FOR i:=0 TO 11 DO
CIRCULO(G0, x0+r*COS(a*(12*t+i−1−j)), y0+r*SIN(a*(12*t+i−1−j)) , (3.5−i/4),RGB(0,0,255)
END;
END;
END;
//Funcion
CIRCULO(Gp,x1,y1,RAD,COL)
BEGIN
LOCAL j,a;
IF SIN(π/2)==1 THEN a:=π/36; ELSE a:=36; END;
FOR j:=1 TO 72 DO
LINE_p(Gp,x1,y1,x1+RAD*COS(j*a),y1+RAD*SIN(j*a),COL);
END;
END;
 Esau Guerrero
Ejercicio 5.4
Programa gráfico de proceso en espera.
 riayala@uc.cl
Crear un programa con los bucles o estructuras
repetitivas que sirvan para mostrar una pantalla de un
proceso en espera con gráficos dinámicos,
98
5.2 Estructuras repetitivas. | Capítulo 5
Programación en HP PPL aplicado a la ingeniería civil
Solución:
Código del programa Cargando2.
 Código 5.17: Cargando2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
EXPORT Cargando()
BEGIN
LOCAL j,t,r,xc,yc,x,y;
t:=10; //−‐>Tiempo que demorara el cargando
r:=15; //radio.
RECT_P();
TEXTOUT_P("Cargando...",143,145,1,RGB(128,128,128));
xc:=165;
yc:=115;
FOR j:=1 TO 360/5 DO
x:=xc+r*COS(5*j);
y:=yc+r*SIN(5*j);
TEXTOUT_P("•",x,y,1,RGB(220,220,200));
END;
FOR j:=1 TO 360/5 DO
x:=xc+r*COS(5*j);
y:=yc+r*SIN(5*j);
TEXTOUT_P("•",x,y,1,RGB(255,0,0));
WAIT(0.15);
END;
END;
 Esau Guerrero
Ejercicio 5.5
Figure 5.40
Cargando2
Resultado: programa
Figure 5.41 Resultado: programa
Cargando2
Gráficos dinámicos.
Crear un programa utilizando los bucles para generar
gráficos dinámicos
Solución:
Código del programa Cargando2.
 Código 5.18: HolaMundo
EXPORT HolaMundo()
c1:=RGB(0,0,180);
c2:=RGB(255,255,255);
c3:=RGB(180,0,0);
BEGIN
LOCAL i,j,p,a,x;
p:=3; //−‐>Numero de ciclos.
x:=130;
RECT_P(c2);
RECT_P(x−10,100,x+80,130,c3);
RECT_P(x−1,108,x+70,120,c2);
FOR i:=1 TO p DO
FOR j:=1 TO 21 DO
IF j<=10 THEN
a:=LEFT("HOLA MUNDO",j);
TEXTOUT_P(a,x+70−7*j,110,1,c1);
TEXTOUT_P(a,x+71−7*j,110,1,c1);
Figure 5.42 Resultado: programa
HolaMundo
Figure 5.43 Resultado: programa
HolaMundo
99
 riayala@uc.cl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
5.2 Estructuras repetitivas. | Capítulo 5
Programación en HP PPL
18
19
20
21
22
23
24
25
26
27
28
29
WAIT(0.5);
RECT_P(x+1,110,x+70,119,c2);
ELSE
a:=RIGHT("HOLA MUNDO ",22−j);
TEXTOUT_P(a,x,110,1,c1);
TEXTOUT_P(a,x+1,110,1,c1);
WAIT(0.5);
RECT_P(x,110,x+70,119,c2);
END;
END;
END;
END;
 Esau Guerrero
Ejercicio 5.6
Método estático o de fuerzas
equivalentes.
El Método Estático, supone el efecto del sismo
equivalente a un sistema de fuerzas horizontales
estáticas, que actúan independientemente y no
simultáneamente según la dirección de los pórticos
principales y secundarios. Dichas fuerzas horizontales
se consideran aplicadas al nivel de cada piso, y cuya
línea de acción pasa por el centro de gravedad de las
cargas verticales de dicho piso.
La norma peruana sismoresistente E030-2018, da las
siguientes expresiones para el cálculo del a fuerza
sísmica Fi .
Fi = αi × V ; αi =
Pi (h)k
n
X
; V =
Pi (h)j
Z · U · C · ·S
hn
· P; T =
R
CT
j=1
donde:
n : numero de pisos del edificio.
k : es un exponente relacionado con el periodo fundamental.
T : periodo fundamental.
 riayala@uc.cl
T ≤ 0.5 s ⇒ k = 1.0
T > 0.5 s ⇒ k = (0.75 + 0.5 · T ) ≤ 2.0
100
5.2 Estructuras repetitivas. | Capítulo 5
Programación en HP PPL aplicado a la ingeniería civil
Elaborar un programa que calcule dichas fuerzas
horizontal dados los siguientes datos.
n = 8 (Numero de Pisos).
H = 3 m (Altura de piso.).
Z = 2.5 (Zona sísmica).
U = 1.3 (Factor de uso).
S = 1.3 (Factor del suelo).
Peso = 1200 kgf (Peso del edificio).
Solución:
Código del programa.
 Código 5.19: FuerzaEstatica
EXPORT FuerzaEstatica()
BEGIN
//Variables.
LOCAL nP,HP,Re,zZ,zU,zS,zC,Peso;
LOCAL zR,rV,rF,rT,vCT,rkα,i,i;
LOCAL j,rSum;
vCT:=35; //Para edificio de concreto armado.
//Ingreso de datos.
INPUT
(
{
{nP,[0],{60,25,0}},
{HP,[0],{60,25,1}},
{zZ,[0],{60,25,2}},
{zU,[0],{60,25,3}},
{zS,[0],{60,25,4}},
{zC,[0],{60,25,5}},
{zR,[0],{60,25,6}},
{Peso,[0],{60,25,7}}
},
"FUERZAS EQUIVALENTE",
{
"Pisos:",
"Altura de Pisos:",
"Factor zona:",
"Fator de uso:",
"Factor de suelo:",
"Factor C:",
"R:",
"Peso piso:"
},
{
"Ingrese el numero de pisos",
"Ingrese la altura tipica de los pisos (m)",
"Ingrese factor de zona",
"Ingrese factor de uso",
"Ingrese factor de suelo",
"Ingrese factor dependiente del periodo",
"Ingrese factor reduccion sismica",
Figure 5.44 Ingreso de datos:
programa NumeroPI
Figure 5.45
NumeroPI
Resultado: programa
Para los datos propuestos la fuerza
en cada piso es de 198.05 kgf, esto
por que para toda la altura y el peso
para cada piso se ingresa con un
valor típico. En el capítulo siguiente
se verán el manejo de listas y
matrices donde sería posible el
ingreso de la altura y peso de cada
piso.
101
 riayala@uc.cl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
5.2 Estructuras repetitivas. | Capítulo 5
Programación en HP PPL
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
"Ingrese el peso tipico de cada piso (kgf)"
},
{8,3,2.5,1.3,1.3,2.5,8,1200},
{8,3,2.5,1.3,1.3,2.5,8,1200}
);
//Proceso.
rV:=zZ*zU*zC*zS/zR*Peso;
rT:=nP*HP/vCT;
IF rT <= 0.5 THEN
rk:=1;
ELSE
rk:=0.75+0.5*rT;
IF rk > 2 THEN
rk:=2;
END;
END;
//Salida de datos.
PRINT();
PRINT("CALCULO DE LAS FUERZAS EN CADA PISO");
PRINT("Peso total del edificio = "+ nP*Peso);
PRINT("Altura total del edificio = "+ nP*HP);
PRINT("Cortante V= "+ rV);
PRINT("Periodo T= "+ rT);
PRINT("FUERZAS EN CADA PISO");
PRINT("");
FOR i:=1 TO nP DO
rSum:=0;
FOR j:=1 TO nP DO
rSum:=rSum+Peso*HP^rk;
END;α
i:=Peso*HP^rk/rSum;
rF:=αi*rV;
PRINT("Fuerza en el Piso " + i + " = " + rF);
END;
END;
5.2.7Ejercicios propuestos.
Ejercicio 1
Que lea un numero N y calcule la suma de los
números menores que N.
Ejercicio 2
Que lea un numero N y que permita calcular el
promedio de los números menores que N.
Ejercicio 3
Que lea N números ingresados por teclado y
decir si son múltiplo de 5.
Ejercicio 4
 riayala@uc.cl
naturales.
102
Que permita mostrar los N primeros números
Ejercicio 5
5.2 Estructuras repetitivas. | Capítulo 5
Programación en HP PPL aplicado a la ingeniería civil
Que permita mostrar los N primeros números
impares.
Ejercicio 6
Que permita mostrar la suma de los N primeros
números pares.
Ejercicio 7 Que calcule la siguiente suma:
S =1+
Ejercicio 8
x x x
+ + ...
1
2
3
Que muestre las tablas de multiplicar del
número 9.
Ejercicio 9
Que lea N números y que muestre el mayor de
ellos.
Ejercicio 10 Calcule la suma y el promedio de los números
pares menores o iguales que un numero K leído al comienzo.
Ejercicio 11 Que calcule el factorial de un número N
103
 riayala@uc.cl
ingresado por el teclado.
 riayala@uc.cl
5.2 Estructuras repetitivas. | Capítulo 5
Programación en HP PPL
104
Capítulo
6
Arreglos: Matrices,
Vectores y Listas
 Resumen
6.1
6.2
6.3
6.4
Declaración de arreglos, 107
Listas, 107
Matrices y vectores, 110
Ejercicios aplicativos., 115
dos y tres dimensiones.
un índice. Cuando los elementos del arreglo son
glos se dice que es multidimensional, tienen un índice
ensión y se les denomina matrices. En las figuras 82,
Figura 82. Representación gráfica de un vector
muestran las representaciones gráficas de arreglos de
s dimensiones.
Datos del arreglo
Posición
o índicegráfica
1 de un
2 vector
3
Figura 82.
Representación
4
5
Programación en HP PPL
6
7
Un arreglo es un tipo de dato estructurado que almacena en
tos del arreglo
sola variable un conjunto limitado de datos o elementos
sición o83.
índice
1
2
3gráfica
4 de5 una6matriz
7 de dosuna
Figura
Representación
dimensiones
Figure 6.1 Unidimensional
del mismo tipo. Los datos se llaman elementos del arreglo
Índice de columnas: j
1 de una
2 matriz
3 de4 dos dimensiones
5
6
Representación gráfica
ndice de1
1 1,1
filas:
i
2
3
4
1 1,1
Índice de columnas: j
2
3
2
3
4
5
2,3
y su posición se numera consecutivamente: 1, 2, 3…n. Un
arreglo en lenguaje HP PPL inicia en la posición uno, por lo
6
tanto el i-ésimo elemento está en la posición i, es decir si el
arreglo llamado a tiene n elementos, sus nombres son a[1],
2,3
4
4,6
Diseño de algoritmos
Figure 6.2
a[2], ..., a[n]. El tipo de elementos almacenados en el arreglo
puede ser cualquier tipo de dato.
Bidimensional
4,6
Figura 84. Representación gráfica de una matriz de tres dimensiones
Para acceder a un elemento específico de un arreglo se usa
1,2,3
2
un índice o subíndice.
1,5,1
1 1,1,1
237
Un arreglo se caracteriza por:
237
3
5,5,4
4
5,5,1
5
1
2
3
4
1
5
2
3
4
1 Ser una lista de un número finito de n elementos del
mismo tipo..
Figure 6.3 Tridimensional
Como se puede apreciar en las gráficas, un vector es una lista
Tener un único nombre de variable que representa a
2 una
cuyos elementos se identifican con un solo índice, mientras que
matriz de dos dimensiones requiere dos índices: uno para filas y
otro para columnas; y una matriz de tres dimensiones requiere tres
todos los elementos y éstos se diferencian por un índice
índices ya que la estructura es análoga a un artefacto tridimensional, como si fuera una caja con largo, ancho y alto, dividida en
o subíndice..
compartimentos igualmente tridimensionales. Teóricamente se
pueden definir matrices de dos, tres, cuatro o más dimensiones; no
Acceder de manera directa o aleatoria a los elementos
obstante, en la práctica es común utilizar vectores y matrices
3 de
dos dimensiones, pero no de tres o más. En lo que sigue de este
capítulo se estudia el manejo de vectores y matrices de dos
individuales del arreglo, por el nombre del arreglo y el
dimensiones.
índice o subíndice..
5.3 MANEJO DE VECTORES
Un vector es una estructura de datos estática correspondiente
a
Los arreglos
pueden ser.
una colección de datos del mismo tipo que se agrupan bajo un
mismo nombre y se diferencias unos de otros por la posición que
ocupan en la estructura.
1 Unidimensionales −→ Vectores o Listas.
2 Bidimensionales −→ Matrices o tablas.
238
3 Multidimensionales con 3 o mas dimensiones.
 Recordar
Los arreglos tipo listas pueden
Cuando un arreglo está conformado por datos simples,
están conformados por datos
como números o caracteres, se dice que es lineal o que tiene
de un solo índice o de dos
una sola dimensión (unidimensional) y se les da el nombre
índices, por ello pueden
de vectores o listas; éstos tienen sólo un índice. Cuando los
 riayala@uc.cl
ser unidimensionales o
bidimensionales
elementos del arreglo son también arreglos se dice que es
multidimensional, tienen un índice por cada dimensión y
se les denomina matrices o también listas. En las figuras
106
6.1 Declaración de arreglos | Capítulo 6
Programación en HP PPL aplicado a la ingeniería civil
6.1, 6.2 y 6.3 se muestran las representaciones gráficas de
arreglos de una, dos y tres dimensiones.
6.1 Declaración de arreglos
Existen 3 tipos de arreglos que se pueden manejar en el
lenguaje de programación HP PPL, las cuales se mencionan
a continuación.
1
2
3
4
5
6
7
>>L1:={}; //declaracion de una variable tipo lista(vacia).
>>L1:={1,2,4,5}; //declaracion de una variable tipo lista.
>>L1:={{1,2},2,[[2,9],[5,7]],5}; //declaracion de una variable tipo lista.
>>M1:=[0]; //declaracion de una variable tipo vector(vacia).
>>L1:=[1,2,7,8,5]; //declaracion de una variable tipo vector.
>>L1:=[[0]]; //declaracion de una variable tipo matriz(vacia).
>>L1:=[[1,4,5],[4,1,5]]; //declaracion de una variable tipo matriz.
6.2 Listas
Una lista consta de números reales o complejos separados
por comas, expresiones o matrices, todos entre llaves.
 Recordar
Las listas pueden almacenar
o contener todo los tipos
Por ejemplo, una lista puede contener una secuencia de
de variables, desde reales,
números reales como 1,2,3. Las listas representan una forma
complejos, matrices, vectores,
práctica de agrupar objetos relacionados.
listas, expresiones... hasta
las variables declarados para
Puede realizar operaciones realizadas con las listas en Inicio
operaciones CAS.
y en los propios programas.
Hay diez variables de lista disponibles, denominadas de L0
a L9. Puede utilizarlas en cálculos o expresiones en Inicio o
en un programa. Recupere el nombre de la lista del menú
a o escriba su nombre con el teclado.
>>A:={3,7,12,19}; // Lista A declarada.
>>b:=A(3); obtenemos b=12
6.2.1Creación de listas
Para crear una lista se utiliza el comando MAKELIST y su
sintaxis es:
107
 riayala@uc.cl
1
2
6.2 Listas | Capítulo 6
Programación en HP PPL
Sintaxis MAKELIST(expresión,[variable],[principio],[final],[incremento])
 Recordar
Las listas pueden almacenar
Calcula una secuencia de elementos para crear una nueva
cualquier tipo de dato, sea
lista.
numérico o caracteres
L1:=1,2,3,2,1,4,3,5
Sintaxis
1
>>MAKELIST(A,A,1,5,1) devuelve {1,2,3,4,5}
L1:=”uno”,”dos”
6.2.2Comandos para el manejo de listas.
6.2.2.1 Comando SORT
Este comando ordena los elementos de la lista en orden
ascendente.
Sintaxis SORT(lista);
Se muestra un ejemplo del uso de este comando.
1
>>SORT({2,5,3}) devuelve {2,3,5}
6.2.2.2 Comando CONCAT
Concatena dos listas para formar una nueva lista.
Sintaxis
CONCAT(lista1,lista2);
Se muestra un ejemplo del uso de este comando.
1
>>CONCAT({1,2,3},{4}) devuelve {1,2,3,4}.
6.2.2.3 Comando POS
Devuelve la posición de un elemento en la lista. El elemento
puede ser un valor, una variable o una expresión.
Si hay más de una instancia del elemento, devuelve la
posición de la primera incidencia del elemento. Si no hay
ninguna incidencia del elemento especificado, devuelve un
 riayala@uc.cl
valor 0.
Sintaxis POS(lista, elemento)
Se muestra un ejemplo del uso de este comando.
108
1
6.2 Listas | Capítulo 6
Programación en HP PPL aplicado a la ingeniería civil
>>POS({3,7,12,19},12) devuelve 3
6.2.2.4 Comando SIZE
Devuelve el número de elementos de una lista o una lista
que contiene las dimensiones de un vector o matriz.
Sintaxis SIZE(lista)
SIZE(Vector)
SIZE(Matriz)
Se muestra un ejemplo del uso de este comando.
1
2
>>SIZE({1,2,3}) devuelve 3
>>SIZE([[1 2 3], [4 5 6]]) devuelve {2, 3}
6.2.2.5 Comando EDITLIST
Inicia el Editor de lista cargando listvar y muestra la lista
especificada.
Si se utiliza en programación, retorna al
programa cuando el usuario pulsa.
Sintaxis EDITLIST(listvar)
Se muestra un ejemplo del uso de este comando.
1
2
>>EDITLIST(L1) devuelve lista L1 editable.
>>L2:=EDITLIST(L1) devuelve lista L1 editable y lo guarda en la lista L2.
6.2.3Ejemplo.
Ejemplo Suma de elementos de una lista.
6.1
Dado una lista con números reales, crear un programa que
Figure 6.4 Ingreso de datos
calcula la suma de dichos elementos.
Solución:
1
2
3
4
5
EXPORT SumLista()
BEGIN
//1 ‐>Declaracion de variables.
LOCAL List:={1,2,3,4,5},i,n,Suma;
//2 ‐>Ingreso de datos.
Figure 6.5 Resultados del
programa
109
 riayala@uc.cl
 Código 6.1: SumLista
6.3 Matrices y vectores | Capítulo 6
Programación en HP PPL
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
INPUT
(
{
{List ,[6],{25,50,3}}
},
"Suma" ,
{
" Numeros: "
},
{
"Ingrese una lista de numeros"
}
);
//3 ‐>Calculo del area del poligono.
n:=length(List); //‐> Elementos 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;
6.3 Matrices y vectores
6.3.1Vectores
 Recordar
Las vectores son arreglos
Un
vector
es
una
estructura
de
datos
estática
correspondiente a una colección de datos del mismo
unidimensionales y solo
contienen datos del mismo tipo,
tipo que se agrupan bajo un mismo nombre y se diferencias
pueden ser reales, complejos,
unos de otros por la posición que ocupan en la estructura.
caracteres, etc.
Para acceder a un elemento de un vector y llevar a
cabo operaciones como: asignación, lectura, impresión
y conformación de expresiones, es necesario escribir el
identificador (nombre) del arreglo y entre PARÉNTESIS la
 Recordar
Para recorrer un vector se utiliza
una estructura iterativa (FOR,
posición a la que se hace referencia, de la forma:
1
2
>>M1:=[3,7,12,19]; // Vector M1 declarada.
>>b:=M1(3); obtenemos b=12
WHILE, REPEAT) controlada
por una variable que comienza
 riayala@uc.cl
en 1, para hacer referencia
Muchas operaciones que se aplican sobre vectores incluyen
a la primera posición, y se
a todos los elementos, en estos casos es necesario acceder
incrementa de uno en uno hasta
consecutivamente desde la primera hasta la última posición,
alcanzar el tamaño del vector.
a esto se le llama recorrido de un vector.
110
1
2
3
4
5
6
7
8
9
10
6.3 Matrices y vectores | Capítulo 6
Programación en HP PPL aplicado a la ingeniería civil
EXPORT VectorRecorrido()
BEGIN
Local nVec:=[1,3,6,8,7,4,3],nV,nP,i;
nV:=length(nVec);
PRINT();
FOR i:=1 TO nV DO
nP:=nVec(i);
PRINT(nP);
END;
END;
La variable i representa la posición de cada uno de los
elementos; de este modo, cualquier operación que se defina
sobre vector[i] al interior del ciclo se llevará a cabo sobre
cada uno de los elementos del vector.
6.3.2Matrices
Una matriz es un conjunto de elementos dispuestos a lo
largo de m filas y n columnas, conocidas también como
diagrama de doble entrada.
En programación se define una matriz como una estructura
 Recordar
Las matrices son arreglos
bidimensionales y solo
contienen datos del mismo tipo
y pueden ser reales, complejos,
caracteres, etc.
de datos estática que bajo un identificador almacena una
colección de datos del mismo tipo, es un arreglo de dos
dimensiones, organizado en forma de filas y columnas;
y por lo tanto utiliza dos índices para identificar los
elementos.
Para hacer referencia a un elemento de una matriz es
 Recordar
Para recorrer una matriz se
necesario especificar el identificador o nombre de la matriz
precisan dos ciclos anidados:
y entre PARÉNTESIS el índice de filas y el índice de
uno para desplazarse por las
filas y otro por las columnas.
columnas, de la forma:
>>M1:=[[3,7,12,19],[2,5,6,0]]; // Matriz M1 declarada.
>>b:=M1(2,3); obtenemos b=5
Para recorrer una matriz se precisan dos ciclos anidados:
uno para desplazarse por las filas y otro por las columnas.
111
 riayala@uc.cl
1
2
6.3 Matrices y vectores | Capítulo 6
Programación en HP PPL
1
2
3
4
5
6
7
8
9
10
11
12
13
EXPORT MatrizRecorrido()
BEGIN
Local nMat:=[1,3,6,8,7,4,3],nC,nF,nM,j,i;
nF:=SIZE(1);
nC:=SIZE(2);
PRINT();
FOR i:=1 TO nF DO
FOR j:=1 TO nC DO
nM:=nVec(j,i);
PRINT(nM);
END;
END;
END;
6.3.3Comandos para matrices
6.3.3.1 Comando ADDCOL
Inserta los valores en vector en una nueva columna
insertada
antes
especificada.
de
número-columna
en
la
matriz
El número de valores en el vector debe
ser igual a la cantidad de filas de la matriz.
Sintaxis ADDCOL(nombrematriz, vector, número−columna)
6.3.3.2 Comando ADDROW
Inserta los valores en vector en una nueva fila insertada
antes de número-fila en la matriz especificada.
Sintaxis ADDROW(nombrematriz, vector, número−fila)
El número de valores en el vector debe ser igual al número
de columnas de la matriz.
6.3.3.3 Comando DELCOL
Elimina la columna número-columna de la matriz.
Sintaxis DELCOL(nombre, número−columna)
 riayala@uc.cl
6.3.3.4 Comando DELROW
Elimina la fila número-fila de la matriz.
Sintaxis DELROW(nombre,número−fila)
112
6.3.3.5 Comando EDITMAT
Inicia el Editor de matriz y muestra la matriz especificada.
 Recordar
EDITMAT sirve para el ingreso y
Si se utiliza en programación, vuelve al programa cuando el
salida de datos de matrices
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.
6.3 Matrices y vectores | Capítulo 6
Programación en HP PPL aplicado a la ingeniería civil
Sintaxis Forma básica.
EDITMAT(matriz);
Forma avanzada.
EDITMAT(matriz,{"TITULO",{"Fila"},{"Columna"}},[Var]);
Si Var=0 , la matriz quedará bloqueada y será de solo lectura.
Ejemplo EDITMAT
6.2
Programa para el ingreso de datos a través de una matriz.
Solución:
Código del programa:
EXPORT iMatriz()
BEGIN
M1:=[[2,2],[3,3]];
M2:=EDITMAT(M1);
M3:=EDITMAT(M1,{"TITULO",{"F1","F2",""} ,{"C1","C2",""}});
END;
6.3.3.6 Comando REDIM
Redimensiona la matriz o vector especificado a tamaño.
Para una matriz, tamaño es una lista de dos números enteros
(n1, n2). Para un vector, tamaño es una lista que contiene
un número entero (n). Se mantienen los valores existentes
en la matriz. El valor de relleno será 0.
Sintaxis REDIM(nombre, tamaño)
6.3.3.7 Comando REPLACE
matriz con un objeto comenzando por la posición de inicio.
El inicio para una matriz es una lista que contiene dos
113
 riayala@uc.cl
Reemplaza parte de una matriz o vector almacenado en
6.3 Matrices y vectores | Capítulo 6
Programación en HP PPL
números; para un vector, es un único número.
Sintaxis REPLACE(nombre, inicio, objeto)
REPLACE también funciona con listas, gráficos y cadenas.
>>REPLACE("123456", 2, "GRM") devuelve "1GRM56"
6.3.3.8 Comando SCALE
Multiplica el número-fila de la matriz especificada por
valor.
Sintaxis SCALE(nombre, valor, número−fila)
6.3.3.9 Comando SUB
Extrae un subobjeto (una parte de una lista, matriz o gráfico)
y lo guarda en nombre. Inicio y fin se especifican por medio
de una lista de dos números para una matriz, un número
para un vector o para listas, o un par ordenado, (X,Y), para
gráficas: SUB(M11,2,2,2)
Sintaxis SUB(nombre, inicio, fin)
6.3.3.10 Comando SWAPCOL
Intercambia columna1 y columna2 de la matriz especificada
(nombre).
Sintaxis SWAPCOL(nombre, columna1, columna2)
6.3.3.11 Comando SWAPROW
Intercambia fila1 y fila2 en la matriz especificada (nombre).
 riayala@uc.cl
Sintaxis SWAPROW(nombre, fila1, fila2)
114
6.4 Ejercicios aplicativos. | Capítulo 6
Programación en HP PPL aplicado a la ingeniería civil
6.4 Ejercicios aplicativos.
Ejercicio 6.1
Máximos y mínimos en listas.
Desarrolle una función que encuentre el máximo
y mínimo valor en una lista de listas de números
naturales.
Solución:
Código Fuente :
 Código 6.2: MaxLista
EXPORT MaxLista()
BEGIN
// 1‐>Declarando variables
LOCAL Lista:={2,3,15,7,10},i,n,mayor,menor;
// 2‐>Ingreso de datos
INPUT
(
{
Figure 6.6
{Lista,[6],{25,70,0}}
},
"MAX VALOR LISTA",
{
"Lista: "
},
{
"Ingrese una lista {a,b,c,...,z}"
}
);
// 3‐>Proceso del programa
n:=SIZE(Lista);
mayor:=Lista(1);
Figure 6.7
menor:=Lista(1);
programa
FOR i:=1 TO n DO
IF Lista(i)>=mayor THEN
mayor:=Lista(i);
ELSE
menor:=Lista(i);
END;
END;
// 4‐>Proceso del programa
MSGBOX("El Maximo valor de la lista es: " + mayor + " y el minimo es: " + menor );
END;
Ejercicio 6.2
Ingreso de datos
Resultados del
Rigidez ensamblada de estructuras
planas.
Desarrolle una función que encuentre el máximo
y mínimo valor en una lista de listas de números
naturales.
115
 riayala@uc.cl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
6.4 Ejercicios aplicativos. | Capítulo 6
Programación en HP PPL
En este ejercicio se extiende el método de rigidez
para cadenas de barras sometidas a tensión axial,
a las armaduras o cerchas, compuestas de barras
articuladas.
Matriz de rigidez de un elemento de sometido a
tensión axial.

Cx × Cy
−Cx2
−Cx × Cy
Cy2
−Cx × Cy
−Cy2
−Cx × Cy
Cx2
Cx × Cy
−Cy2
Cx × Cy
Cy2
Cx2


EA 
 Cx × Cy
K=

L 
−Cx2


−Cx × Cy
Figure 6.8
Crear un programa el cual nos permita obtener la
Ingreso de datos
matriz de rigidez ensamblada de cualquier estructura.
1000 kg
2
1
2
1
Figure 6.9
3
Ingreso de datos
3
4m
Solución:
Código Fuente :
 Código 6.3: RigidezGlobal
 riayala@uc.cl
Figure 6.10 Ingreso de datos
Figure 6.11 Resultados del
programa
116
3m
1
2
3
4
nE:=3;nN:=3;vE:=1;vA:=1;cN:=[[0]];
cC:=[[0]];vAr:=[[0]];
FUNTIONA();
FUNTIONB();
5
6
7
8
9
10
11
12
13
EXPORT RigidezGlobal()
BEGIN
cN:=[[0,0],[4,3],[6,0]]; //Nudos.
cC:=[[1,2],[2,3],[3,1]]; //Elementos.
// 1‐>Ingreso de datos
INPUT
(
{
{nE,[0],{35,40,0}},
2m









);
32
33
34
//Coordenada de nudos.
LOCAL i,j;
cN:=EDITMAT(cN,{"Coordenada Numeros",{},{"x","y",""} });
35
36
37
38
39
40
//Conectividad.
FOR i:=1 TO nE DO
cC(i,3):= vA;
cC(i,4):= vE;
END;
cC:=EDITMAT(cC, {"Elementos Conectividad", {}, {"N−i", "N−f", "Area", "Elasticida"} });
41
42
LOCAL vK:=[[0]],ni,nj,NA:={},NB:={},sum,op,de;
vK:=MAKEMAT(0,2*nN,2*nN);
},
"ANALISIS ARMADURA 2D",
{
"Nro Elementos: ",
"Nro Nudos: ",
"E: ",
"A: "
},
{
"Numero de elementos de la armadura",
"Numero de nudos de la armadura",
"Modulo de elasticidad",
"Area de las secciones"
}
Figure 6.12 Resultados del
programa
//Rigidez de cada elemento y ensamblado.
LOCAL x1,y1,x2,y2,q1x,q1y,q2x,q2y;
LOCAL le,ke:=[[0]],rig,pp:=[[0]],l,j,m,i;
LOCAL x1,x2,x3,x4;
FOR j:=1 TO nE DO
ni:=cC(j,1);
nj:=cC(j,2);
NA(1):=cN(ni,1);
NA(2):=cN(ni,2);
NB(1):=cN(nj,1);
NB(2):=cN(nj,2);
op:=NB−NA;
x1:=NA(1);
y1:=NA(2);
x2:=NB(1);
y2:=NB(2);
q1x:=ni*2−1;
q1y:=ni*2;
q2x:=nj*2−1;
q2y:=nj*2;
le:=SQRT(op(1)^2+op(2)^2);
l:=(x2−x1)/le;
m:=(y2−y1)/le;
rig:=cC(j,4)*cC(j,3)/le;
ke:=rig*[[l^2, l*m, −l^2, −l*m], [l*m, m^2, −l*m, −m^2], [−l^2, −l*m, l^2, l*m], [−l*m, −m^2, l*m, m^2]];
pp:=FUNTIONA(vK,q1x,q1y,q2x,q2y)+ke;
vK:=FUNTIONB(pp,q1x,q1y,q2x,q2y,vK);
END;
EDITMAT(vK,);
END;
117
 riayala@uc.cl
{nN,[0],{35,40,1}},
{vE,[0],{35,50,2}},
{vA,[0],{35,50,3}}
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
6.4 Ejercicios aplicativos. | Capítulo 6
Programación en HP PPL aplicado a la ingeniería civil
6.4 Ejercicios aplicativos. | Capítulo 6
Programación en HP PPL
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
FUNTIONA(MatSub,x1,x2,x3,x4)
BEGIN
LOCAL jj,Matriz:=[[0]];
Matriz(4,4):=0;
Matriz(1,1):=MatSub(x1,x1);
Matriz(1,2):=MatSub(x1,x2);
Matriz(1,3):=MatSub(x1,x3);
Matriz(1,4):=MatSub(x1,x4);
Matriz(2,1):=MatSub(x2,x1);
Matriz(2,2):=MatSub(x2,x2);
Matriz(2,3):=MatSub(x2,x3);
Matriz(2,4):=MatSub(x2,x4);
Matriz(3,1):=MatSub(x3,x1);
Matriz(3,2):=MatSub(x3,x2);
Matriz(3,3):=MatSub(x3,x3);
Matriz(3,4):=MatSub(x3,x4);
Matriz(4,1):=MatSub(x4,x1);
Matriz(4,2):=MatSub(x4,x2);
Matriz(4,3):=MatSub(x4,x3);
Matriz(4,4):=MatSub(x4,x4);
RETURN Matriz;
END;
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
FUNTIONB(MatSub,x1,x2,x3,x4,Matriz)
BEGIN
Matriz(x1,x1):=MatSub(1,1);
Matriz(x1,x2):=MatSub(1,2);
Matriz(x1,x3):=MatSub(1,3);
Matriz(x1,x4):=MatSub(1,4);
Matriz(x2,x1):=MatSub(2,1);
Matriz(x2,x2):=MatSub(2,2);
Matriz(x2,x3):=MatSub(2,3);
Matriz(x2,x4):=MatSub(2,4);
Matriz(x3,x1):=MatSub(3,1);
Matriz(x3,x2):=MatSub(3,2);
Matriz(x3,x3):=MatSub(3,3);
Matriz(x3,x4):=MatSub(3,4);
Matriz(x4,x1):=MatSub(4,1);
Matriz(x4,x2):=MatSub(4,2);
Matriz(x4,x3):=MatSub(4,3);
Matriz(x4,x4):=MatSub(4,4);
RETURN Matriz;
END;
Ejercicio 6.3
Integración numérica por ROMBERG
La integración de romberg es una técnica diseñada
para obtener integrales numéricas de funciones
de manera eficiente, que se basa en aplicaciones
sucesivas de la regla del trapecio.
Sin embargo,
a través de las manipulaciones matemáticas, se
 riayala@uc.cl
alcanzan mejores resultados con menos trabajo.
118
Ij,k =
6.4 Ejercicios aplicativos. | Capítulo 6
Programación en HP PPL aplicado a la ingeniería civil
4k−1 Ij+1,k+1 − Ij,k−1
4
1
I = I(h2 ) − I(h1 )
k−1
4
−1
3
3
Solución:
Código Fuente :
 Código 6.4: MaxLista
TRAPECIO();
ROMBERG();
3
4
5
6
FUNC:='0.2+25*X−200*X^2+675*X^3−900*X^4+400*X^5';
xi:=0;
xf:=0.8;
nn:=3;
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
EXPORT ROMBERGC()
BEGIN
LOCAL i,TRA;
LOCAL sum,Fx,k,a,b,tipo,count;
LOCAL error,itfn,a_ini,b_ini;
LOCAL fi,fm,ff,K,ii;
PRINT;
INPUT
(
{
{FUNC,[8],{20,40,1}},
{xi,[0],{20,15,2}},
{xf,[0],{20,15,3}},
{nn,[0],{20,15,4}}
},
"Regla de Trapecio ",
{ "f(x)",
"xi",
"xf",
"n"
},
{ "f(X)",
"x inicial",
"x final",
"# numero de valores de integral"
}
);
34
35
36
K:=MAKEMAT(0,nn,2);
count:=1;
ff:=1;
37
38
39
40
41
42
43
44
45
WHILE ff<((2^(nn−1))+1) DO
X:=xi;
sum:=EVAL(FUNC);
a:=sum;
k:=(xf−xi)/ff;
i:=xi+k;
ii:=1;
WHILE ii<ff DO
X:=i;
Figure 6.13 Ingreso de datos
Figure 6.14 Resultados del
programa
Figure 6.15 Resultados del
programa
119
 riayala@uc.cl
1
2
6.4 Ejercicios aplicativos. | Capítulo 6
Programación en HP PPL
46
47
48
49
50
51
52
53
54
55
56
57
58
59
a:=a+2*EVAL(FUNC);
i:=i+k;
ii:=ii+1;
END;
X:=xf;
b:=a+EVAL(FUNC);
TRA:=(k*b)/2;
K(count,1):=ff;
K(count,2):=TRA;
ff:=2^count;
count:=count+1;
END;
MSGBOX("respuesta");
EDITMAT(K,{"TRAPECIO",{"1"},{"#Segmentos","Resp"}});
60
61
62
63
64
65
66
LOCAL N,k,n,j,ii;
LOCAL M1:=[[0]],VAR:={},nu,de;
FOR k:=1 TO nn DO
M1(k,1):= K(k,2);
END;
N:=SIZE(M1);
n:=(N(1));
67
68
69
70
71
FOR j:=2 TO (n) DO
FOR ii:=1 TO (n+1−j) DO
M1(ii,j):=((4^(j−1))*M1((ii+1),(j−1)) − M1((ii),(j−1)))/((4^(j−1))−1);
END;
END;
72
73
74
75
76
77
FOR k:=1 TO (nn−1) DO
VAR(1):="TRAPECIO";
nu:=4^k;
de:=4^k−1;
VAR(k+1):=nu+"/"+de;
END;
78
79
EDITMAT(M1,{"ROMBERG",{"1"},VAR});
END;
 Tony Quispe
6.4.1Ejercicios propuestos.
Ejercicio 1
Calcular el promedio de n valores almacenados
en un vector. determinar además cuantos son menor que
el promedio, imprimir el promedio, el número de datos
menores que el promedio y una lista de valores menores que
el promedio.
 riayala@uc.cl
Ejercicio 2
Hacer un algoritmo que llene una matriz de m
* n y que imprima cuantos de los números almacenados son
ceros, cuántos son positivos y cuántos son negativos.
120
Capítulo
7
Subprogramas y
Manejo de Gráficos
 Resumen
7.1
7.2
7.3
7.4
7.5
7.6
7.7
Subrutinas, 122
Funciones, 122
Diseño de una función, 123
Manejo de gráficos, 130
Comando MOUSE, 133
Comando WAIT, 135
Ejercicios, 138
7.1 Subrutinas | Capítulo 7
Programación en HP PPL
7.1 Subrutinas
A lo largo de este documento se han propuesto y explicado
numerosos ejemplos; no obstante, estos han sido pensados
para ilustrar un tema en particular y no tienen la
complejidad de los problemas reales, en los que la solución
puede incluir miles, cientos de miles o millones de líneas de
código fuente.
Los programas diseñados para solucionar problemas
reales de procesamiento de datos, que atienden conjuntos
grades de requisitos y responden a múltiples restricciones,
aquellos que se denomina software de dimensión industrial
no pueden emprenderse como una sola pieza, pues su
construcción, corrección y mantenimiento resultaría una
tarea demasiado difícil y costosa.
La estrategia más difundida para reducir la complejidad
se conoce como divide y vencerás.
Ésta consiste en
descomponer el problema que se quiere resolver en un
determinado número de sub-problemas más pequeños,
resolver
sucesiva
e
independientemente
todos
los
sub-problemas, luego combinar las soluciones obtenidas
para, de esta manera, solucionar el problema original.
7.2 Funciones

Sugerencia
Las funciones deben ser
declaradas antes de ser llamadas,
El concepto de función en el campo de la programación fue
tomado de las matemáticas y consiste en establecer una
o bien ser utilizado lineas
relación entre dos conjuntos: origen y espejo, donde a cada
después de su creación.
elemento del primero le corresponde uno del segundo una
 riayala@uc.cl
función es una operación que toma uno o más valores y
genera un nuevo valor como resultado. A los valores que
entran a la función se les denomina argumentos.
122
Diseño de una función | Capítulo 7
Programación en HP PPL aplicado a la ingeniería civil
7.3 Diseño de una función
En la calculadora HP PRIME las funciones tienen dos partes:
la definición y la implementación.
7.3
7.3.1Definición de una función
Ésta incluye tres elementos estos son:
1 La definición.
2 El identificador o nombre de la función.
3 La lista de parámetros.
4 El retorno.
 Código 7.1: Funciones
1
2
FUNCION1();
FUNCION2();
3
4
5
6
7
8
9
10
11
12
EXPORT Funciones()
BEGIN
LOCAL val1,val2;
val1:=FUNCION1();
val2:=FUNCION2(10,40,30);
RECT_P();
TEXTOUT_P(val1,20,40);
TEXTOUT_P(val2,20,60);
WAIT(1);
END;
13
14
15
16
17
18
19
20
FUNCION1()
BEGIN
LOCAL a,b,c,r;
a:=10;
b:=50;
c:=70;
r:=a+b+c;
END;
21
22
23
24
25
26
FUNCION2(a,b,c)
BEGIN
LOCAL r;
r:=a+b+c;
RETURN r;
END;
Figure 7.1 Resultados del
programa Funciones
 Recordar
El valor retornado de una
función siempre es la última
línea ejectuada, por lo que se
puede omitir esta instrucción
cuando el valor retornado es la
última línea dentro del código de
123
 riayala@uc.cl
la función.
7.3 Diseño de una función | Capítulo 7
Programación en HP PPL
7.3.2Invocación de una Función
La invocación o llamada a una función se hace escribiendo
su nombre y la lista de parámetros que ésta requiere, de la
forma:
Al ejecutarse un algoritmo o un programa, en el momento
en que se encuentra la invocación de una función, el
control de ejecución pasa a la función. En la ejecución
de la función, la primera tarea que se realiza es la
declaración de las variables locales y su inicialización con
los datos proporcionados como parámetros. Por eso, es muy
importante tener en cuenta que los argumentos escritos al
invocar la función y la lista de parámetros definidos en el
diseño de la función deben coincidir en tipo y en cantidad,
en caso
contrario se presentará un error y la ejecución de la función
se cancelará. En el momento en que la ejecución de la
función encuentra la palabra retornar el control vuelve
exactamente a la línea donde se invocó la función con el
resultado del cálculo efectuado.
El resultado devuelto por una función puede almacenarse
en una variable, puede ser enviado directamente a un
dispositivo de salida o puede utilizarse como argumento
para otra función, como se muestra en las expresiones a, b
y c, respectivamente.
7.3.3Ejemplo de funciones
Ejemplo Resaltar Ecuaciones.
 riayala@uc.cl
7.1
Funcion el cual resalte las ecuaciones creadas.
Solución:
124
Diseño de una función | Capítulo 7
Programación en HP PPL aplicado a la ingeniería civil
 Código 7.2: TxEQ
1
2
3
4
5
6
TxEQ(Gr,Eeq,xo,yo,L,H,TCol)
BEGIN
RECT_P(Gr,{xo,yo},{xo + L,yo + H},TCol,PlomoA);
RECT_P(Gr,{xo + 0.2,yo + 0.2},{xo + L−0.2,yo + H−0.2},TCol,PlomoA);
TEXTOUT_P(Eeq,Gr,xo + 5,yo + 5,2,TCol);
END;
Ejemplo División de dos caracteres.
7.2
7.3
Función el cual imprima una división de dos caracteres.
Solución:
 Código 7.3: TxFrac
1
2
3
4
5
6
7
8
9
TxFrac(Gr,Tx,Num,Den,xo,yo,L,TCol)
BEGIN
LOCAL nN,nD,nT;
nN:=DIM(Num);nD:=DIM(Den);nT:=DIM(Tx);
TEXTOUT_P(Tx,Gr,xo + 4,yo + 5,2,TCol);
TEXTOUT_P(Num,Gr,xo + nT*7 + 2,yo,2,TCol);
RECT_P(Gr,{xo + nT*7,yo + 12},{xo + nT*7 + L,yo + 12.30},TCol);
TEXTOUT_P(Den,Gr,xo + nT*8 + 5,yo + 17,2,TCol);
END;
Ejemplo Redondeo de números
7.3
Esta función mejora las características del comando
ROUND.
Solución:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
DEC(num,dec)
BEGIN
CASE
IF ABS(num)<0.0000001 THEN
num:=0;
END;
IF 1>num>0 THEN
num:=ROUND(num,−dec);
END;
IF num>=1 THEN
num:=ROUND(num,dec);
END;
IF −1<num<0 THEN
num:=ROUND(num,−dec);
END;
IF num<=−1 THEN
num:=ROUND(num,dec);
END;
IF num==0 THEN
num:=0;
END;
END;
RETURN num;
END;
125
 riayala@uc.cl
 Código 7.4: DEC
7.3 Diseño de una función | Capítulo 7
Programación en HP PPL
Ejemplo Redondeo de números en listas
7.4
Esta función depende del código 7.4
Solución:
 Código 7.5: DECL
1
2
3
4
5
6
7
8
DECL(list,dec)
BEGIN
LOCAL N:=length(list),j;
FOR j:=1 TO N DO
list(j):=DEC(list(j),dec);
END;
RETURN list;
END;
Ejemplo Redondeo de números en matrices
7.5
Esta función depende del código 7.4
Solución:
 Código 7.6: DECM
1
2
3
4
5
6
7
8
9
10
DECM(Matr,dec)
BEGIN
LOCAL Nf:=rowDim(Matr),Nc:=colDim(Matr),i,j;
FOR j:=1 TO Nc DO
FOR i:=1 TO Nf DO
Matr(i,j):=DEC(Matr(i,j),dec);
END;
END;
RETURN Matr;
END;
Ejemplo Redondeo de números en vectores
7.6
Esta función depende del código 7.4
Solución:
 Código 7.7: DECV
1
2
3
4
5
6
7
8
DECV(vect,dec)
BEGIN
LOCAL N:=length(vect),j;
FOR j:=1 TO N DO
vect(j):=DEC(vect(j),dec);
END;
RETURN vect;
END;
 riayala@uc.cl
Ejemplo ID del teclado
7.7
Esta función realiza el ingreso del teclado numérico, sirve
para crear formularios de ingreso de datos interactivos.
126
Diseño de una función | Capítulo 7
Programación en HP PPL aplicado a la ingeniería civil
Solución:
 Código 7.8: DECV
Tecla()
BEGIN
LOCAL Val=Accion,Rs;
CASE
IF 31<=Val<35 THEN
Rs:=25;
END;
IF Val=35 THEN
RETURN "/";
END;
IF 36<=Val<40 THEN
Rs:=33;
END;
IF Val=40 THEN
RETURN "*";
END;
IF 41<=Val<45 THEN
Rs:=41;
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 CHAR({32,32});
END;
STRING(Val−Rs,1);
END;
7.3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Ejemplo Crear Reportes
7.8
Esta función con la ayuda del comando BLIT_P crea varias
pantallas que con los botones U y D.
Solución:
1
2
3
4
5
6
7
8
9
10
EXPORT Reporte()
BEGIN
LOCAL x:=0,y:=0;
REPEAT
x:=MAX(MIN(x,320/2),0);
y:=MAX(MIN(y+100*ISKEYDOWN(12) − 100*ISKEYDOWN(2),3900),0);
BLIT_P(G0,0,0,G2,x,y,320,240+y);
WAIT();
UNTIL ISKEYDOWN(4);
END;
127
 riayala@uc.cl
 Código 7.9: Reporte
 riayala@uc.cl
7.3 Diseño de una función | Capítulo 7
Programación en HP PPL
Ejemplo Crear CHOOSE personalizado
7.9
Esta función crea una pequeña ventana donde puedes
seleccionar una opción dada.
Solución:
 Código 7.10: FCHOOSE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
128
FCHOOSE(Ini,Nom,x,y,L,let,ColA,ColB,ColC,ColD)
BEGIN
LOCAL i,can,cc;
can:=length(Nom);
cc:=can;
//‐>Caja del Choose
RECT_P(x,y,x + L,y + 3,ColD,ColA);
//‐>Choose
FOR i:=1 TO can DO
RECT_P({x,y + 20*i−17},{x + L,y + 20*i + 1},ColA);
TEXTOUT_P("� " + Nom(i),x + 5,y + 20*i−11,let,ColB);
END;
RECT_P(x,y + 20*Ini−17,x + L,y + 20*Ini + 1,ColB,ColC);
TEXTOUT_P("� " + Nom(Ini),x + 5,y + 20*Ini−11,let,ColD);
//‐>Condicion
LOCAL mx,my,Ss:=1,v:=Ini,vo:=Ini;
REPEAT
Accion:=→BR(WAIT(−1));
CASE
IF TYPE(Accion)==6 THEN
IF Accion(1)==3 THEN
mx:=Accion(2);
my:=Accion(3);
FOR j:=1 TO can DO
IF x<mx<x + L AND (y + 20*(j−1) + 4)<my<(y + 20*(j−1) + 24) THEN
v:=j;
FOR i:=1 TO can DO
RECT_P({x,y + 20*i−17},{x + L,y + 20*i + 1},ColA);
TEXTOUT_P("� " + Nom(i),x + 5,y + 20*i−11,let,ColB);
END;
RECT_P(x,y + 20*j−17,x + L,y + 20*j + 1,ColB,ColC);
TEXTOUT_P("� " + Nom(v),x + 5,y + 20*v−11,let,ColD);
WAIT(0.2);
BREAK(2);
END;
END;
IF (mx<x OR mx>x + L) OR (my<y OR my>(y + 20*can−17) ) THEN
v:=0;BREAK;
END;
END;
END;
IF ISKEYDOWN(2) THEN
vo:=v;
v:=v−1;
IF v<1 THEN
v:=can;
vo:=1;
END;
FOR i:=1 TO can DO
RECT_P({x,y + 20*i−17},{x + L,y + 20*i + 1},ColA);
TEXTOUT_P("� " + Nom(i),x + 5,y + 20*i−11,let,ColB);
END;
RECT_P(x,y + 20*v−17,x + L,y + 20*v + 1,ColB,ColC);
TEXTOUT_P("̞� " + Nom(v),x + 5,y + 20*(v)−11,let,ColD);
END;
IF ISKEYDOWN(12) THEN
vo:=v;
v:=v + 1;
IF v>can THEN
v:=1;
END;
FOR i:=1 TO can DO
RECT_P({x,y + 20*i−17},{x + L,y + 20*i + 1},ColA);
TEXTOUT_P("� " + Nom(i),x + 5,y + 20*i−11,let,ColB);
END;
RECT_P(x,y + 20*v−17,x + L,y + 20*v + 1,ColB,ColC);
TEXTOUT_P("� " + Nom(v),x + 5,y + 20*(v)−11,let,ColD);
END;
IF ISKEYDOWN(30) THEN
BREAK;
END;
IF ISKEYDOWN(4) THEN
IF Ini==1 THEN
v:=0;BREAK;
ELSE
v:=vo;BREAK;
END;
END;
END;
UNTIL Ss==2;
RETURN v;
END;
7.3
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Diseño de una función | Capítulo 7
Programación en HP PPL aplicado a la ingeniería civil
Ejemplo Ventanas de mensajes
7.10
Esta función crea una pequeña ventana donde puedes
seleccionar una opción dada.
Solución:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
FMECO(T1,T2,x,y,L,H,s,CoA,CoB,CoC)
BEGIN
LOCAL R_Ace,R_Can,Cond,mx,my;
FILLPOLY_P({(0,0), (320,0), (320,240), (0,240), (0,0)}, CoB, 150);
RECT_P(x,y,x + L,y + H,CoA,CoC);
RECT_P(x + 1,y + 1,x + L−1,y + H−1,CoA,CoC);
TEXTOUT_P("?",x + 4,y,7,CoA);
TEXTOUT_P(T1,x + 19,y + 4,2,CoC);
TEXTOUT_P(T2,x + 19,y + 16,2,CoC);
R_Ace:={{x + L/2−45−15,y + 33},{x + L/2−5,y + 55}};
RECT_P(R_Ace(1),R_Ace(2),CoA,CoB);
TEXTOUT_P("Aceptar",R_Ace(1,1) + 5,R_Ace(1,2) + 5,2);
R_Can:={{x + L/2 + 10,y + 33},{x + L/2 + 15 + 50,y + 55}};
RECT_P(R_Can(1),R_Can(2),CoA,CoB);
TEXTOUT_P("Cancelar",R_Can(1,1) + 4,R_Can(1,2) + 5,2);
REPEAT
WAIT(−1)�Accion;
IF TYPE(Accion)==6 THEN
IF Accion(1)==0 THEN
mx:=Accion(2);
129
 riayala@uc.cl
 Código 7.11: Reporte
7.4 Manejo de gráficos | Capítulo 7
Programación en HP PPL
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
my:=Accion(3);
CASE
IF (R_Ace(1,1))<mx<R_Ace(2,1) AND R_Ace(1,2)<my<R_Ace(2,2) THEN
Cond:=1;
RECT_P(R_Ace(1),R_Ace(2),CoA,CoA);
TEXTOUT_P("Aceptar",R_Ace(1,1) + 5,R_Ace(1,2) + 4,1);
WAIT(0.1);
BREAK;
END;
IF R_Can(1,1)<mx<R_Can(2,1) AND R_Can(1,2)<my<R_Can(2,2) THEN
Cond:=0;
RECT_P(R_Can(1),R_Can(2),CoA,CoA);
TEXTOUT_P("Cancelar",R_Can(1,1) + 4,R_Can(1,2) + 4,1);
WAIT(0.1);
BREAK;
END;
END;
END;
ELSE
IF Accion=4 THEN Cond:=0; BREAK; END
END;
UNTIL 0;
RETURN Cond;
END;
7.4 Manejo de gráficos
En la sección 4.3 se refirió al manejo de las variables
y algunos comandos gráficos,
en esta sección nos
centraremos en el uso de los comandos GETKEY , ISKEYDOWN ,
WAIT , MOUSE
con los cuales dándoles un buen uso pueden
utilizarse para crear funciones y programas muy intuitivas
con la pantalla táctil de estas calculadoras.
7.4.1Comando GETKEY
Este comando nos sirve para poder interactuar con el
 riayala@uc.cl
teclado de la calculadora HP PRIME.
130
GETKEY
Programación en HP PPL aplicado a la ingeniería civil
Manejo de gráficos | Capítulo 7
Sintaxis: GETKEY
Devuelve el ID (identificador) de la primera tecla en el búfer del teclado, o –1 si no se pulsó ninguna tecla
7.4
Figure
7.2la última
Valores
de
teclasLos
obtenidos
con
el comando
desde
llamada
a GETKEY.
ID de tecla son
enteros
de 0 a 50, numerados desde la esquina
superior izquierda (tecla 0) a la esquina inferior derecha (tecla 50) como se muestra en la figura 27-1.
GETKEY
INPUT
Sintaxis K:=GETKEY
Sintaxis: INPUT(var,[“title”], [“label”], [“help”], [reset_value],
[initial_value])
Sintaxis:elINPUT({vars},[“título”],
[{“etiquetas”}],
[{“ayuda”}],
Devuelve
ID(identifcador) de la primera
tecla en el búfer
[{restablecer_valores}], [{valores_iniciales}])
del teclado,
o -1
si nodese
pulsó
ninguna
tecladedesde
La forma más
sencilla
este
comando
abre un cuadro
diálogola
conúltima
el título dado y un campo denominado
etiqueta, y muestra el contenido de ayuda en la parte inferior. El cuadro de diálogo incluye las teclas de menú
llamada
a y OK.
GETKEY
. Los
IDingresar
de tecla
son
enteros
de 0 a Si50,
CANCEL
El usuario
puede
un valor
en el
campo etiquetado.
el usuario presiona la tecla de
menú OK, la variable var se actualiza con el valor introducido y el comando devuelve 1. Si el usuario presiona
numerados
desde
la esquina
izquierda
(tecla 0) a
la tecla de menú
CANCEL,
la variablesuperior
no se actualiza
y devuelve 0.
En las formas
más complejas
del(tecla
comando,
se utilizan
para crear un
la esquina
inferior
derecha
50)
comolistas
se muestra
encuadro
la de diálogo con varios
campos. Si var es una lista, cada elemento puede ser un nombre de variable o una lista que usa la siguiente
sintaxis.
figura
??.
En el código 7.12, al presionar las teclas 42 (y), 43 (z),
44 (3), 37 (u), 38 (v), 39 (w) o 32 (q),
el programa imprimirá un mensaje y con la tecla 4(&)
terminará el bucle indefinido REPEAT y el programa.
Figure 7.3 Resultados del
programa
Comandos de programa 599
1
2
3
4
5
6
7
8
9
10
EXPORT FGETKEY()
BEGIN
LOCAL K:=0;
RECT_P(0,0,320,220,RGB(250,250,250));
TEXTOUT_P("C U R S O H P P R I M E",70,10,6);
RECT_P(0,40,339,41,RGB(0,0,0));
DRAWMENU("RAB","","","","","");
REPEAT
K:=GETKEY;
CASE
Figure 7.4 Resultados del
programa
131
 riayala@uc.cl
 Código 7.12: FGETKEY
7.4 Manejo de gráficos | Capítulo 7
Programación en HP PPL
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
IF K==42 THEN
RECT_P(0,60,320,220,RGB(250,250,250));
TEXTOUT_P("Tecla 42",70,70,4);
END;
IF K==43 THEN
RECT_P(0,60,320,220,RGB(250,250,250));
TEXTOUT_P("Tecla 43",70,70,4);
END;
IF K==44 THEN
RECT_P(0,60,320,220,RGB(250,250,250));
TEXTOUT_P("Tecla 44",70,70,4);
END;
IF K==37 THEN
RECT_P(0,60,320,220,RGB(250,250,250));
TEXTOUT_P("Tecla 37",70,70,4);
END;
IF K==38 THEN
RECT_P(0,60,320,220,RGB(250,250,250));
TEXTOUT_P("Tecla 38",70,70,4);
END;
IF K==39 THEN
RECT_P(0,60,320,220,RGB(250,250,250));
TEXTOUT_P("Tecla 39",70,70,4);
END;
IF K==32 THEN
RECT_P(0,60,320,220,RGB(250,250,250));
TEXTOUT_P("Tecla 32",70,70,4);
END;
END;
UNTIL K==4;
END;
7.4.2ISKEYDOWN
Al igual que el comando GETKEY pero con un valor de salida
verdadero o falso, nos permite manejar el teclado de la
calculadora.
Sintaxis ISKEYDOWN(id−tecla)
Devuelve true(verdadero) (distinto de cero) si la tecla cuyo
Figure 7.5 Resultados del
programa
id-tecla se proporciona está presionada actualmente y falso
(0) si no es así.
En el código 7.13, al presionar las teclas 42 (y), 43 (z),
44 (3), 37 (u), 38 (v), 39 (w) o 32 (q),
el programa imprimirá un mensaje y con la tecla 4(&)
 riayala@uc.cl
terminará el bucle indefinido REPEAT y el programa.
Figure 7.6 Resultados del
programa
132
Comando MOUSE | Capítulo 7
Programación en HP PPL aplicado a la ingeniería civil
 Código 7.13: FISKEYDOWN
EXPORT FISKEYDOWN()
BEGIN
RECT_P(0,0,320,220,RGB(255,255,255));
TEXTOUT_P("C U R S O H P P R I M E",70,10,6);
RECT_P(0,40,339,41,RGB(0,0,0));
DRAWMENU("RAB","","","","","");
REPEAT
CASE
IF ISKEYDOWN(42) THEN
RECT_P(0,60,320,220,RGB(250,250,250));
TEXTOUT_P("Tecla 42",70,70,4);
END;
IF ISKEYDOWN(43) THEN
RECT_P(0,60,320,220,RGB(250,250,250));
TEXTOUT_P("Tecla 43",70,70,4);
END;
IF ISKEYDOWN(44) THEN
RECT_P(0,60,320,220,RGB(250,250,250));
TEXTOUT_P("Tecla 44",70,70,4);
END;
IF ISKEYDOWN(37) THEN
RECT_P(0,60,320,220,RGB(250,250,250));
TEXTOUT_P("Tecla 37",70,70,4);
END;
IF ISKEYDOWN(38) THEN
RECT_P(0,60,320,220,RGB(250,250,250));
TEXTOUT_P("Tecla 38",70,70,4);
END;
IF ISKEYDOWN(39) THEN
RECT_P(0,60,320,220,RGB(250,250,250));
TEXTOUT_P("Tecla 39",70,70,4);
END;
IF ISKEYDOWN(32) THEN
RECT_P(0,60,320,220,RGB(250,250,250));
TEXTOUT_P("Tecla 32",70,70,4);
END;
END;
UNTIL ISKEYDOWN(4);
END;
7.5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
7.5 Comando MOUSE
Este comando es utilizado para obtener un dato como
Sintaxis
1
Identificador
Acción
0
para nuevo
se desea programar con variables gráficas es importante
1
para completado
conocer el tipo de variables y los datos obtenidos a través
2
para arrastrar
de este.
3
para alargar
4
para girar
5
para un clic largo
MOUSE(indice)
Devuelve dos listas que describen la ubicación actual
Tabla 7.1 Tipo de acción al tocar la
pantalla
de cada puntero posible (listas vacías si no se utilizan
133
 riayala@uc.cl
respuesta al tocar la pantalla táctil de la calculadora, si
7.5 Comando MOUSE | Capítulo 7
Programación en HP PPL
punteros). La salida es {x, y, z original, y original, tipo }
donde el tipo de objeto o identificador de variables puede
ser:
Ejemplo
Hacer uso del comando MOUSE, en su forma básica.
7.11
Solución:
 Código 7.14: CMOUSE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Figure 7.7 Programa CMOUSE
EXPORT CMOUSE()
BEGIN
LOCAL tocar;
RECT_P();
REPEAT
tocar:=B →R(MOUSE());
WAIT(−1);
IF SIZE(tocar(1))≠0 THEN
RECT_P();
TEXTOUT_P("{tocar} :",10,100);
TEXTOUT_P(tocar,70,100);
END;
UNTIL ISKEYDOWN(4);
END;
La variable tocar almacena una lista {x, y, z original, y
original, tipo } que fue asignada desde MOUSE el cual fue
convertida de un número hexadecimal a uno decimal a
través del comando B‐>R esto para una mejor interpretación
de estos datos. El valor de la lista dependerá del tipo de
acción realizada en la pantalla táctil,
Con el comando MOUSE y el buen manejo de los gráficos
permitirán a los programadores crear un sin fin de funciones
y programas, a continuación se menciona algunos de estos.
1 Botones y menus personalizados.
2 Interfaz propia.
3 Formularios interactivos.
4 Salidas de datos a través de gráficos.
5 Ingreso de datos a través del mouse.
 riayala@uc.cl
Ejemplo
7.12
Figure 7.8 Programa
PruebaMouse
134
En este ejemplo se programó la impresión de parámetros
del comando MOUSE.
Comando WAIT | Capítulo 7
Programación en HP PPL aplicado a la ingeniería civil
Solución:
 Código 7.15: PruebaMouse
EXPORT PruebaMouse()
BEGIN
LOCAL CoA:=RGB(0,0,0);
LOCAL CoB:=RGB(255,255,255);
LOCAL accion;
LOCAL lista:={"Completo", "Arrastrar", "Estirar", "Rotar", "Click Largo", "Nuevo"};
RECT_P();
Figure 7.9 Programa
TEXTOUT_P("MOUSE PRUEBA",100,10,3,CoA,320,CoB);
TEXTOUT_P("Variable:",20,50,3,CoA,320,CoB);
PruebaMouse
TEXTOUT_P("MOUSE(0) [x]:",20,70,3,CoA,320,CoB);
TEXTOUT_P("MOUSE(1) [y]:",20,90,3,CoA,320,CoB);
TEXTOUT_P("MOUSE(2) [x0]:",20,110,3,CoA,320,CoB);
TEXTOUT_P("MOUSE(3) [y0]:",20,130,3,CoA,320,CoB);
TEXTOUT_P("MOUSE(4) []:",20,150,3,CoA,320,CoB);
TEXTOUT_P("Modo Click:",20,170,3,CoA,320,CoB);
REPEAT
IF MOUSE(4)<>−1 THEN
IFERR
RECT_P(G0,130,50,320,190);
accion:=→BR(MOUSE());
TEXTOUT_P(accion,G0,130,50,3,CoA,320,CoB);
TEXTOUT_P(accion(1,1),130,70,3,CoA,320,CoB);
TEXTOUT_P(accion(1,2),130,90,3,CoA,320,CoB);
TEXTOUT_P(accion(1,3),130,110,3,CoA,320,CoB);
TEXTOUT_P(accion(1,4),130,130,3,CoA,320,CoB);
TEXTOUT_P(accion(1,5),130,150,3,CoA,320,CoB);
TEXTOUT_P(lista(accion(1,5)),130,170,3,CoA, 320,CoB);
THEN
END;
END;
UNTIL 0; // End Repeat Test1
END;
7.6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
7.6 Comando WAIT
Parámetro
durante n segundos.
Sintaxis
1
WAIT(n)
Si el valor del parámetro n=0 entonces el comando pausará
la ejecución durante un minuto. También se puede utilizar
para obtener un dato como respuesta al tocar la pantalla
táctil de la calculadora, el cual sencillamente puede sustituir
al comando MOUSE .
Para un segundo uso se debe declara el parámetro −1 de la
siguiente forma: WAIT(−1) , con esto este comando esperará
Acción
0
mouse hacia abajo
1
movimiento del mouse
2
mouse hacia arriba
3
Clic del mouse
5
estiramiento del mouse
6
rotación del mouse
7
clic largo del mouse
Tabla 7.2 Acciones del comenado
WAIT

Recordar
WAIT(−1)
es una alternativa al
comando MOUSE
135
 riayala@uc.cl
Este comando sirve para pausar la ejecución de un programa
7.6 Comando WAIT | Capítulo 7
Programación en HP PPL
una acción o actividad de la pantalla táctil (mouse) o el
teclado devolviendo el código de la tecla id-tecla o una lista
de la forma como dato la lista {tipo, x, y, dx, dy }.

Recordar
El comando WAIT(−1) será



tipo



asignado a una variable que
puede ser del tipo lista o el tipo
Donde: =
entero
lista: Cuando se hace uso de la
: es la acción o actividad en la pantalla táctil.
x, y:
: es la posición inicial del evento.




 dx, dy: : es la posición final del evento.
pantalla táctil.
entero: Cuando se hace uso del
Con el comando WAIT(−1) y el buen manejo de los gráficos
teclado.
permitirán a los programadores crear un sin fin de funciones
y programas, a continuación se menciona algunos de estos.
 ¡Cuidado!
El tipo de acción 5(estiramiento)
la respuesta del comando WAIT
1 Botones y menus personalizados.
será una lista que tendrá dos
2 Interfaz propia.
parámetros adicionales, dx,dy
3 Formularios interactivos.
4 Salidas de datos a través de gráficos.
 ¡Cuidado!
5 Ingreso de datos a través del mouse.
El tipo de acción 2(mouse hacia
Ejemplo
abajo) la respuesta del comando
WAIT
será una lista con el tipo7.13
2:
Manejo del comando WAIT
En este ejemplo se codificó una prueba de todos los tipos
{tipo}
de acción que se pueden obtener con el comando WAIT(−1) ;
Solución:
 Código 7.16: PruebaWait
 riayala@uc.cl
Figure 7.10 Programa PruebaWait
Figure 7.11 Programa PruebaWait
136
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
EXPORT PruebaWait()
BEGIN
LOCAL accion;
LOCAL CoB:=RGB(255,255,255);
RECT_P();
TEXTOUT_P("WAIT PRUEBA",100,5,3);
TEXTOUT_P("Variable:",20,30,3);
TEXTOUT_P("WAIT(2) [x]:",20,50,3);
TEXTOUT_P("WAIT(3) [y]:",20,70,3);
TEXTOUT_P("WAIT(4) [dx]:",20,90,3);
TEXTOUT_P("WAIT(5) [dy]:",20,110,3);
TEXTOUT_P("Tipo accion:",20,130,3);
REPEAT
accion:=→BR(WAIT(−1));
IF TYPE(accion)==6 THEN
RECT_P(120,20,320,240,CoB);
TEXTOUT_P(accion,130,30,3);
IF accion(1)≠2 THEN
TEXTOUT_P(accion(2),130,50,3);
TEXTOUT_P(accion(3),130,70,3);
END;
IF accion(1)==5 THEN
TEXTOUT_P(accion(4),130,90,3);
TEXTOUT_P(accion(5),130,90,3);
TEXTOUT_P("Estirar",130,130,3);
END;
CASE
IF accion(1)==0 THEN
TEXTOUT_P("Mouse abajo",130,130,3);
END;
IF accion(1)==1 THEN
TEXTOUT_P("Arrastrar",130,130,3);
END;
IF accion(1)==2 THEN
TEXTOUT_P("Mouse atras",130,130,3);
END;
IF accion(1)==3 THEN
TEXTOUT_P("Click",130,130,3);
END;
IF accion(1)==6 THEN
TEXTOUT_P("Rotar",130,130,3);
END;
IF accion(1)==7 THEN
TEXTOUT_P("Click Largo",130,130,3);
END;
END;
ELSE
RECT_P(120,20,320,240,CoB);
TEXTOUT_P(accion,130,30,3);
TEXTOUT_P("Teclado",130,130,3);
END;
UNTIL ISKEYDOWN(4);
END;
7.6
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Comando WAIT | Capítulo 7
Programación en HP PPL aplicado a la ingeniería civil
Figure 7.12 Programa PruebaWait
Dependiendo del programa que se desea crear pueden
utilizarse los diferentes tipos de acción en la pantalla del
comando WAIT .
Por ejemplo si desea crear botones, cajas de entrada de
datos, se utilizara el tipo 3(click o un toque simple en la
pantalla), para crear ingreso de datos a través de variables
gráficas se puede utilizar tipo 7 (click largo), para realizar
la acción de acercar o alejar la pantalla se puede utilizar el
tipo 5(estiramiendo del mouse).
Ejemplo Manejo del comando WAIT
Una aplicación simple de este comando es la creación de
botones.
Solución:
Para realizar la creación de botones, es necesario tener
137
 riayala@uc.cl
7.14
7.7 Ejercicios | Capítulo 7
Programación en HP PPL
definidos exactamente las regiones de cada botón.
 Código 7.17: PBoton
Figure 7.13 Programa PBoton
Figure 7.14 Programa PBoton
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Ca:=rgb(255,0,0),
Cb:=rgb(240,240,240);
EXPORT PBoton()
BEGIN
DIMGROB_P(G1,320,240);
RECT();
//Dibujar los menus de la parte superior.
LOCAL R_I,R_A,R_C;
R_I:={0,0,100,30};
R_C:={100,0,220,30};
R_A:={220,0,320,30};
RECT_P(G1,R_I(1),R_I(2),R_I(3),R_I(4),Ca,Cb);
RECT_P(G1,R_C(1),R_C(2),R_C(3),R_C(4),Ca,Cb);
RECT_P(G1,R_A(1),R_A(2),R_A(3),R_A(4),Ca,Cb);
//Textos en los Botones.
TEXTOUT_P("Reporte",G1,R_I(1)+18,R_I(2)+10,2,Ca);
TEXTOUT_P("Datos",G1,R_C(1)+38,R_C(2)+10,2,Ca);
TEXTOUT_P("Dibujar",G1,R_A(1)+35,R_A(2)+10,2,Ca);
BLIT_P(G0,G1);
LOCAL accion,x,y;
REPEAT
accion:=WAIT(−1);
IF TYPE(accion)==6 THEN
IF accion(1)==3 THEN
x:=accion(2);
y:=accion(3);
CASE
IF R_I(1)<x<R_I(3) AND R_I(2)<y<R_I(4) THEN
RECT_P(G1,0,31,320,240);
TEXTOUT_P("BOTON 1",G1,100,100);
END;
IF R_C(1)<x<R_C(3) AND R_C(2)<y<R_C(4) THEN
RECT_P(G1,0,31,320,240);
TEXTOUT_P("BOTON 2",G1,100,100);
END;
IF R_A(1)<x<R_A(3) AND R_A(2)<y<R_A(4) THEN
RECT_P(G1,0,31,320,240);
TEXTOUT_P("BOTON 3",G1,100,100);
END;
END;
END;
END;
BLIT(G0,G1);
UNTIL 0;
END;
7.7 Ejercicios
Como se vio en los capítulos anteriores el ingreso de datos
 riayala@uc.cl
se realiza por medio del comando, propio de la HP-PRIME,
INPUT la desventaja de este comando es que no se puede
personalizar. A continuación, se realizará un ejemplo del
138
Ejercicios | Capítulo 7
Programación en HP PPL aplicado a la ingeniería civil
ingreso de datos personalizado con el uso de los comandos
WAIT Y MOUSE.
Ejercicio 7.1
Área de un polígono.
7.7
El área del polígono irregular se puede calcular
mediante dos procedimientos alternativos: el método
de triangulación o el determinante de Gauss.
El
método más común es dividir el polígono en N
triángulos (siendo N el número de lados del polígono)
y calcular el área como suma de las áreas de los
triángulos.
Para este ejemplo se calculará por la
determinante de Gauss.
Supone dibujar la figura sobre un plano cartesiano,
fijando las coordenadas de cada uno de los vértices del
polígono.
Sean
los
vértices
del
polígono:
La fórmula es la
(x1, y1), (x2, y2), ...(xN, yN ).
siguiente:
1
A=
2
x1
y1
x1
..
.
y2
..
.
xN
yN
x1
y1
Se ha de recorrer el polígono en el sentido contrario al
de las agujas del reloj,
Solución:
Figure 7.15 Pantalla principal
Nuestro programa estará estructurado por variables
globales, variables de colores, declaración de funciones,
inicio del programa y los subprogramas.
del programa con el siguiente código.
Figure 7.16 Ingreso de datos,
Matriz
139
 riayala@uc.cl
Primero se creará la interfaz gráfica para el ingreso de datos
 riayala@uc.cl
7.7 Ejercicios | Capítulo 7
Programación en HP PPL
 Código 7.18: Área de un polígono
1
2
3
4
5
6
7
8
9
10
//Variables globales
vMouse;
V_In:=[[0,0],[10,0],[5,10]];
//Fuciones
F_Cal();
//Variable de colores
white:=rgb(255,255,255);
red:=rgb(255,0,0);
blue:=rgb(0,0,255);
plomo:=rgb(220,220,220);
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
EXPORT P_APol()
BEGIN
DIMGROB_P(G1,320,240);
LOCAL R_In,R_Au,R_Ca;
R_In:={0,0,100,30};
R_Ca:={100,0,220,30};
R_Au:={220,0,320,30};
//Regiones−Botones.
RECT_P(G1,R_In(1),R_In(2),R_In(3),R_In(4),blue,plomo);
RECT_P(G1,R_Ca(1),R_Ca(2),R_Ca(3),R_Ca(4),blue,plomo);
RECT_P(G1,R_Au(1),R_Au(2),R_Au(3),R_Au(4),blue,plomo);
//Textos−Botones.
TEXTOUT_P("Coordenada",G1,R_In(1)+18,R_In(2)+10,2,blue);
TEXTOUT_P("Calcular",G1,R_Ca(1)+38,R_Ca(2)+10,2,blue);
TEXTOUT_P("Nuevo",G1,R_Au(1)+35,R_Au(2)+10,2,blue);
BLIT_P(G0,G1);
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//Pantalla tactil
LOCAL dx,dy,tipo;
REPEAT
vMouse:=→BR(WAIT(−1));
IF TYPE(vMouse)==6 THEN // acción 6 se refiere a una lista.
tipo:=vMouse(1);
IF tipo==3 THEN
dx:=vMouse(2);
dy:=vMouse(3);
CASE
IF R_In(1)<=dx<=R_In(3) AND R_In(2)<=dy<=R_In(4) THEN
V_In:=EDITMAT(V_In,"Coordenadas del polígono");
END;
IF R_Ca(1)<=dx<R_Ca(3) AND R_Ca(2)<=dy<R_Ca(4) THEN
F_Cal(); //Llamando a la funcion.
END;
IF R_Au(1)<=dx<R_Au(3) AND R_Au(2)<=dy<R_Au(4) THEN
RECT_P(G1,0,31,320,240,white);
END;
END;
END;
END;
IF TYPE(vMouse)==0 THEN
IF vMouse==4 THEN
BREAK;
END;
END;
BLIT_P(G0,G1);
UNTIL 0;
END;
El programa consta de una interfaz o formulario donde se
140
Ejercicios | Capítulo 7
Programación en HP PPL aplicado a la ingeniería civil
dispuso de 3 botones, el cual está condicionado con las
regiones o coordenadas de estos.
El cálculo del programa se realizó en la función F_Cal() , el
7.7
cual se muestra en el siguiente código.
 Código 7.19: Función FCal
F_Cal()
BEGIN
RECT_P(G1,0,31,320,240);
LOCAL n,nF,i,mD,mI,Ar;
LOCAL d,Per;
n:=SIZE(V_In);
nF:=n(1);
mD:=0;
d:=0;
FOR i:=1 TO nF DO
IF i==nF THEN
mD:=V_In(i,1)*V_In(1,2)+mD;
mI:=V_In(i,2)*V_In(1,1)+mI;
d:=SQRT( (V_In(i,1)−V_In(1,1))^2 + (V_In(i,2)−V_In(1,2))^2 )+d;
ELSE
mD:=V_In(i,1)*V_In(i+1,2)+mD;
mI:=V_In(i,2)*V_In(i+1,1)+mI;
d:=SQRT( (V_In(i,1)−V_In(i+1,1))^2 + (V_In(i,2)−V_In(i+1,2))^2 )+d;
END;
END;
Ar:=ROUND(ABS(mD−mI)/2,2); //Area
Per:=ROUND(d,2);//Perimetro
TEXTOUT_P("Area= "+Ar+" m2",G1,5,40,2,red);
TEXTOUT_P("Perimetro= "+Per+" m",G1,5,55,2,red);
//−Dibujo del Poligono
LOCAL xc,yc;
FOR i:=1 TO nF DO
xc:=V_In(i,1)+xc;
yc:=V_In(i,2)+yc;
END;
xc:=xc/nF;
yc:=−yc/nF;//Coordenas del C.G. del POL.
LOCAL Vx:=[0],Vy:=[0],dPx,dPy,Fex,Fey,Fe;
//*Tranformar Matriz en Vector.
FOR i:=1 TO nF DO
Vx(i):=V_In(i,1);
Vy(i):=V_In(i,2);
END;
dPx:=MAX(Vx)−MIN(Vx);
dPy:=MAX(Vy)−MIN(Vy);
Fex:=260/dPx; //*Calculo del Factor de Escala.
Fey:=140/dPy;
IF Fex<Fey THEN
Fe:=Fex;
ELSE
Fe:=−Fey;
END;
LOCAL xo,yo;
xo:=ABS(xc*Fe−160);
yo:=ABS(yc*Fe+150);
//*Dibujando el Poligono
LOCAL Lista:={};
Figure 7.17 Resultados del
programa
Figure 7.18 Resultados del
programa
141
 riayala@uc.cl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
7.7 Ejercicios | Capítulo 7
Programación en HP PPL
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
FOR I FROM 1 TO nF DO
Lista(I):={xo+V_In(I,1)*Fe,yo+V_In(I,2)*Fe};
END;
FILLPOLY_P(G1,Lista,blue,210);
LOCAL x1,y1,x2,y2,xa,ya;
FOR i:=1 TO nF DO
IF i==nF THEN
x1:=V_In(i,1)*Fe+xo;
y1:=V_In(i,2)*Fe+yo;
ELSE
x1:=V_In(i,1)*Fe+xo;
y1:=V_In(i,2)*Fe+yo;
END;
xa:=ROUND(V_In(i,1),1);
ya:=ROUND(V_In(i,2),1);
TEXTOUT_P(xa+","+ya,G1,x1,y1−5,1,red);
END;
END;
Ejercicio 7.2
Ecuación de 2do Grado.
Una ecuación de segundo grado o ecuación cuadrática
de una variable es una ecuación que tiene la expresión
general:
ax2 + bx + c = 0
donde x es la variable, y a, b y c constantes.
Para una ecuación cuadrática con coeficientes reales
o complejos existen siempre dos soluciones, no
necesariamente distintas, llamadas raíces. La fórmula
general para la obtención de raíces es:
x=
−b ±
√
b2 − 4ac
2a
Elaborar un programa que calcule las raíces de una
ecuación cuadrática.
Solución:
 riayala@uc.cl
Este programa se realizó utilizando interfaz propia para el
ingreso de datos, el cual resuelve una ecuación de 2do grado.
El programa Eq2do se estructuró con varias funciones, entre
142
Ejercicios | Capítulo 7
Programación en HP PPL aplicado a la ingeniería civil
las que podemos destacar y tenerlo como plantilla para
otros programa son Tecla, FReTx, FRe, FEdit.
cA:=RGB(239,247,247);
cB:=RGB(255,0,0);
cC:=RGB(235,235,235);
cD:=RGB(0,0,255);
cE:=RGB(255,255,255);
6
7
8
a:=1;
b:=5;
c:=6;
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
touch;
accion;
FRe();
FEdit();
FReTx();
FCal();
EXPORT Eq2do()
BEGIN
LOCAL R_a,R_b,R_c;
//Coordenadas de cada rectangulo.
R_a:={50,50,120,70};
R_b:={50,90,120,110};
R_c:={50,130,120,150};
//Dibujando en el Formulario.
RECT(cA);
TEXTOUT_P("ECUACION DE 2do GRADO",75,2,3);
TEXTOUT_P("ax^2 + bx + c = 0",95,20,3);
TEXTOUT_P("Solucion",190,60,3);
FReTx("a:",a,R_a,cB,cC);
FReTx("b:",b,R_b,cB,cC);
FReTx("c:",c,R_c,cB,cC);
LOCAL tipo,x,y;
REPEAT
touch:=WAIT(−1);
IF TYPE(touch)==6 THEN
tipo:=touch(1);
IF tipo==3 OR tipo==0 THEN
x:=touch(2);
y:=touch(3);
CASE
IF R_a(1)<x<R_a(3) AND R_a(2)<y<R_a(4) THEN
a:=FEdit(a,R_a, "Ingrese a",cB,cC,cA);
FCal();
END;
IF R_b(1)<x<R_b(3) AND R_b(2)<y<R_b(4) THEN
b:=FEdit(b,R_b, "Ingrese b",cB,cC,cA);
FCal();
END;
IF R_c(1)<x<R_c(3) AND R_c(2)<y<R_c(4) THEN
c:=FEdit(c,R_c, "Ingrese b",cB,cC,cA);
FCal();
END;
END;
END;
END;
UNTIL ISKEYDOWN(4);
END;
Figure 7.19 Pantalla principal del
programa
Figure 7.20 Resultdos del
programa Eq2do
143
 riayala@uc.cl
1
2
3
4
5
7.7
 Código 7.20: Eq2do
7.7 Ejercicios | Capítulo 7
Programación en HP PPL
 Código 7.21: Función FCal
1
2
3
4
5
6
7
8
9
10
11
12
13
FCal()
BEGIN
LOCAL x1,x2;
RECT_P(130,80,320,240,cA);
IFERR
x1:=(−b+SQRT(b^2−4*a*c))/(2*a);
x2:=(−b−SQRT(b^2−4*a*c))/(2*a);
TEXTOUT_P("x1= "+x1,180,90,3);
TEXTOUT_P("x2= "+x2,180,110,3);
THEN
TEXTOUT_P("Error Calculos", 180,90,3,cB);
END;
END;
 Código 7.22: Función FReTx y FRe
Figure 7.21 Ingreso de datos
personalizado
1
2
3
4
5
6
7
FReTx(Et,Var,Reg,CA,CB)
BEGIN
LOCAL n:=5*(DIM(Et)+1);
RECT_P(Reg(1),Reg(2), Reg(3),Reg(4),CA,CB);
TEXTOUT_P(Var,Reg(1) + 4,Reg(2)+4,2);
TEXTOUT_P(Et,Reg(1)−n, Reg(2)+4,2);
END;
8
9
10
11
12
FRe(Var,Reg,CA,CB)
BEGIN
RECT_P(Reg(1),Reg(2), Reg(3),Reg(4),CA,CB);
TEXTOUT_P(Var,Reg(1)+4,Reg(2)+4,2);
END;
 Código 7.23: Función Tecla y FEdit
 riayala@uc.cl
Figure 7.22 Verificación de
errores de cálculo
144
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Tecla()
BEGIN
LOCAL Val,Rs;
Val:=accion;
CASE
IF ≤31Val<35 THEN Rs:=25 END;
IF Val=35 THEN RETURN "/"; END;
IF ≤36Val<40 THEN Rs:=33 END;
IF Val=40 THEN RETURN "*"; END;
IF ≤41Val<45 THEN Rs:=41 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;
19
20
21
22
23
24
25
26
FEdit(Va,Rg,Ayuda,c1,c2,cF)
BEGIN
LOCAL nD,x,y,n;
nD:=STRING(Va,1);
Va:=nD;
REPEAT
FRe(nD+"�",Rg,cD,cC);
RECT_P({0,224},{320,240},cE,cE);
Ejercicio 7.3
7.7
n:=6*(DIM(nD)+4);
TEXTOUT_P("−"+Ayuda,n,227,1,cC);
TEXTOUT_P(nD+"�",5,227,2);
accion:=→BR(WAIT(−1));
IF TYPE(accion)==0 THEN
CASE
IF accion==4 THEN
nD:=Va;
BREAK;
END;
IF accion==30 THEN
IFERR
EXPR(nD);
THEN
nD:=Va;
END;
BREAK;
END;
IF accion==19 THEN
IF DIM(nD)≤1 THEN
nD:="";
ELSE
nD:=LEFT(nD,DIM(nD)−1);
END;
END;
DEFAULT
nD:=nD+Tecla;
END;
ELSE
IF accion(1)==3 THEN
x:=accion(2);
y:=accion(3);
IF NOT(Rg(1)<x<Rg(3) AND Rg(2)<y<Rg(4)) THEN
IFERR
EXPR(nD);
THEN
nD:=Va;
END;
BREAK;
END;
END;
END;
UNTIL 0;
RECT_P({0,224},{320,240},cF,cF);
nD:=EXPR(nD);
FRe(STRING(nD,1),Rg,c1,c2);
nD;
END;
Circulo de Mohr.
El círculo de Mohr es una técnica usada en ingeniería
y geofísica para representar gráficamente un tensor
simétrico (de 2x2 o de 3x3) y calcular con ella
momentos de inercia, deformaciones y tensiones,
adaptando los mismos a las características de una
circunferencia (radio, centro, etc).
145
 riayala@uc.cl
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Ejercicios | Capítulo 7
Programación en HP PPL aplicado a la ingeniería civil
7.7 Ejercicios | Capítulo 7
Programación en HP PPL
Este método fue desarrollado hacia 1882 por el
ingeniero civil alemán Christian Otto Mohr.
Para este caso se utilizará la notación bidimensional el
cual tiene las siguiente formulación.
Centro del círculo de Mohr:
C=
σx + σy
2
Radio de la circunferencia de Mohr:
s
r=
σx + σy
2
2
2
+ τxy
Las tensiones máxima y mínima vienen dados en
términos de esas magnitudes simplemente por:
σx + σy
2
σx + σy
σmin = r −
2
σmax = r +
Crear un programa que dibuje el circulo Mohr.
Solución:
Este programa se realizó utilizando interfaz propia para el
ingreso de datos, el cual dibuja la dirección de los esfuerzo
Figure 7.23 Pantalla principal del
programa
dados según el signo que se le asigne.
El programa Mohr se estructuró con varias funciones, entre
las que podemos destacar y tenerlo como plantilla para
otros programa son, la función EDITFORM y EDITC.
 riayala@uc.cl
 Código 7.24: MOHR
Figure 7.24 Pantalla principal del
programa
146
1
2
3
4
// VARIABLES GLOBALES
Accion;σ
x:=10;σ
y:=−8;τ
7.7
xy:=12;α
:=−30;σ
prom:=1;τ
max:=1;σ
max:=1;σ
min:=1;θ
p1:=1;θ
p2:=1;
kup:=1;
kdow:=1;
vMouse;
// FUNCIONES DECLARADAS
FGROBP();
FFORM_A();
EDITFORM();
EDITC();
FPRE_A();
FPRE_C();
//Variable de colores
Fondo:=RGB(239,247,247);
white:=rgb(255,255,255);
red:=rgb(255,0,0);
blue:=rgb(0,0,255);
gris:=rgb(230,230,230);
plomo:=rgb(210,210,210);
green:=rgb(0,255,0);
bordeC:=RGB(33,115,231);
fondoC:=white;
textoC:=RGB(33,115,231);
fondoIC:=white;
bordeIC:=RGB(192,192,192);
textoIC:=RGB(0,0,0);
botonC:=RGB(33,84,163);
botonB:=RGB(33,84,163);
// Inicio del programa
EXPORT MOHR()
BEGIN
DIMGROB_P(G1,320,240);
LOCAL R_Dat,R_Sal,R_Aut;
R_Dat:={0,0,100,30};
R_Aut:={100,0,220,30};
R_Sal:={220,0,320,30};
RECT_P(G1,R_Dat(1),R_Dat(2),R_Dat(3),R_Dat(4), blue,plomo);
RECT_P(G1,R_Aut(1),R_Aut(2),R_Aut(3),R_Aut(4), blue,plomo);
RECT_P(G1,R_Sal(1),R_Sal(2),R_Sal(3),R_Sal(4), blue,plomo);
TEXTOUT_P("DATOS",G1,R_Dat(1)+35,R_Dat(2)+10,2,blue);
TEXTOUT_P("AUTOR",G1,R_Aut(1)+35,R_Aut(2)+10,2,blue);
TEXTOUT_P("SALIR",G1,R_Sal(1)+35,R_Sal(2)+10,2,blue);
//Graficso G2
RECT_P(G1,0,31,320,479,blue,gris);
RECT_P(G1,1,32,319,478,blue,gris);
BLIT_P(G0,G1);
//Pantalla tactil
LOCAL dx,dy,tipo;
REPEAT
vMouse:=→BR(WAIT(−1));
IF TYPE(vMouse)==6 THEN // acción 6 se refiere a una lista.
tipo:=vMouse(1);
IF tipo==3 THEN
dx:=vMouse(2);
dy:=vMouse(3);
CASE
IF R_Dat(1)<=dx<=R_Dat(3) AND R_Dat(2)<=dy<=R_Dat(4) THEN
147
 riayala@uc.cl
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Ejercicios | Capítulo 7
Programación en HP PPL aplicado a la ingeniería civil
7.7 Ejercicios | Capítulo 7
Programación en HP PPL
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83

FGROBP
FFORM_A;
BLIT(G0,G1);
END;
IF R_Aut(1)<=dx<R_Aut(3) AND R_Aut(2)<=dy<R_Aut(4) THEN
FGROBP(); BLIT(G0,G1);
END;
IF R_Sal(1)<=dx<R_Sal(3) AND R_Sal(2)<=dy<R_Sal(4) THEN
RECT_P(G0,RGB(0,0,180,180));
TEXTOUT_P("Gracias por utilizar el programa", G0, 40, 100, 4, red); WAIT(3);
BREAK;
END;
END;
END;
END;
UNTIL 0;
END;
 Código 7.25: Función Autor
Esta función nos permite crear
un formulario de textos, para
1
2
3
4
5
6
7
8
 FFORM A
9
10
Esta función nos permite crear
11
un formulario de ingreso de
12
datos personalizados, el cual los 13
14
gráficos se dibujan por defecto
15
en la variable G0 , y para obtener 16
17
una respuesta ante una acción
18
19
de la pantalla táctil se utilizó el
20
comando WAIT(−1) , esta función a 21
su vez contienen otras funciones 22
ello se utilizó el comando BLIT_P
FGROBP()
BEGIN
LOCAL xx:=25,yy:=50,dx:=265,dy:=148;
DIMGROB_P(G3,320,240);
RECT_P(G3,white);
BLIT_P(G0,0,0,G3,0,0,320,240,plomo,120);
RECT_P(G3,xx,yy,xx + dx,yy + dy,blue,Fondo);
RECT_P(G3,−xx1,yy,xx + dx + 1,yy + dy,blue,Fondo);
TEXTOUT_P("Circulo Mohr",G3,xx + 100,yy + 1 + 3,3,blue);
TEXTOUT_P("v0.1",G3,xx + 140 + 45,yy + 1 + 6,2,red);
TEXTOUT_P("Calculo del circulo de Mohr",G3,xx + 70,yy + 22,1,blue);
RECT_P(G3,xx + 34,yy + 20,xx + dx,yy + 20,blue,blue);
yy:=−yy15;
TEXTOUT_P("−Fundamentos Pogramacion",G3,xx + 30,yy + 65,2,blue); yy:=yy + 18;
TEXTOUT_P("−Autor:",G3,xx + 30,yy + 65,2,blue); yy:=yy + 18;
TEXTOUT_P("Tony Quispe",G3,xx + 80,yy + 65,2,blue); yy:=yy + 18;
TEXTOUT_P("UNSCH",G3,xx + 80,yy + 65,2,blue); yy:=yy + 18;
TEXTOUT_P("2019",G3,xx + 80,yy + 65,2, blue);
xx:=25;yy:=50;
BLIT_P(G0,−xx2,yy,xx + dx + 2,yy + dy + 2,G3,−xx2,yy,xx + dx + 2,yy + dy + 2);
WAIT(−1);
END;
una que dibujará los esfuerzos
FPRE_A();
de poder ingresar los datos en
 riayala@uc.cl
los recuadros creados EDITC(); .
Figure 7.25 Formulario de ingreso
de datos
148
 Código 7.26: Función FFORM A
y otra que s encargará
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
FFORM_A()
BEGIN
RECT_P(Fondo);
LOCAL σR_x:={},σR_y:={},R_ok:={};
LOCAL Salir,mx,my,τR_xy:={},αR_:={};
RECT_P({0,1},{320,17},botonB,botonC);
TEXTOUT_P("INGRESO DE DATOS",{100,3},2,white);σ
R_x:={{30,25},{100,25+15}};σ
R_y:={{135,25},{205,25+15}};τ
R_xy:={{240,25},{310,25+15}};α
R_:={{5,65},{50,65+15}};
TEXTOUT_P("σx =",σR_x(1,1)−5*5,σR_x(1,2)+3,2);
TEXTOUT_P("σy =",σR_y(1,1)−5*5,σR_y(1,2)+3,2);
TEXTOUT_P("τxy =",τR_xy(1,1)−5*6,τR_xy(1,2)+3,2);
TEXTOUT_P(" θ:",αR_(1,1)+13,αR_(1,2)−18,4);
R_ok:={{2,203},{50,203+15}};
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
RECT_P(R_ok(1),R_ok(2),botonB,botonC);
TEXTOUT_P("OK" ,R_ok(1,1)+16,R_ok(1,2)+3,2,white,90,textoC);
RECT_P({60,50},{318,218},blue,white);
FPRE_A();
REPEAT
EDITFORM(STRING(σx,1),σR_x,bordeC,fondoC);
EDITFORM(STRING(σy,1),σR_y,bordeC,fondoC);
EDITFORM(STRING(τxy,1),τR_xy,bordeC,fondoC);
EDITFORM(STRING(α,1),αR_,bordeC,fondoC);
7.7
17
18
19
20
21
22
23
24
25
Ejercicios | Capítulo 7
Programación en HP PPL aplicado a la ingeniería civil
Accion:=WAIT(−1);
IF TYPE(Accion)==6 THEN
IF Accion(1)==3 THEN
mx:=Accion(2);
my:=Accion(3);
CASE
IF σR_x(1,1)<mx<σR_x(2,1) AND σR_x(1,2)<my<σR_x(2,2) THENσ
x:=EDITC(σx,σR_x,"Ingrese esfuerzo en x",Fondo);
FPRE_A();
END;
IF σR_y(1,1)<mx<σR_y(2,1) AND σR_y(1,2)<my<σR_y(2,2) THENσ
y:=EDITC(σy,σR_y,"Ingrese esfuerzo en y",Fondo);
FPRE_A();
END;
IF τR_xy(1,1)<mx<τR_xy(2,1) AND τR_xy(1,2)<my<τR_xy(2,2) THENτ
xy:=EDITC(τxy,τR_xy,"Ingrese cortante",Fondo);
FPRE_A();
END;
IF αR_(1,1)<mx<αR_(2,1) AND αR_(1,2)<my<αR_(2,2) THENα

FPRE A
Esta función se encarga de crear
el dibujo de los esfuerzo en el
formulario de ingreso de datos.
:=EDITC(α,αR_,"Ingrese angulo",Fondo);
FPRE_A();
END;
IF R_ok(1,1)<mx<R_ok(2,1) AND R_ok(1,2)<my<R_ok(2,2) THEN
IFERR
FPRE_C();
THEN
RECT_P(G1,{2,32},{318,230},white,gris);
END;
Salir:=1;
END;
Figure 7.26 Dibujo de los
esfuerzos, cambian de acuerdo al
signo asignado
END;
END;
END;
UNTIL Salir==1;
END;
1
2
3
FPRE_A()
BEGIN
RECT_P({60,50},{318,218},blue,white);
Figure 7.27 Dibujo de los
esfuerzos, cambian de acuerdo al
signo asignado
149
 riayala@uc.cl
 Código 7.27: Función FPRE A
 riayala@uc.cl
7.7 Ejercicios | Capítulo 7
Programación en HP PPL
150
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
LOCAL xc,yc,x1,x2,x3,x4,r:=60;
LOCAL y1,y2,y3,y4,tetha:=45;
xc:=190;
yc:=136;
x1:=xc−r*COS(tetha);
y1:=yc−r*SIN(tetha);
x2:=xc+r*COS(tetha);
y2:=y1;
x3:=x2;
y3:=yc+r*SIN(tetha);
x4:=x1;
y4:=y3;
FILLPOLY_P({(x1,y1),(x2,y2),(x3,y3),(x4,y4)},blue,180);
LINE_P(x1,y1,x2,y2,blue);
LINE_P(x2,y2,x3,y3,blue);
LINE_P(x3,y3,x4,y4,blue);
LINE_P(x4,y4,x1,y1,blue);
//Fuerzas
LOCAL f:=10;
IF τxy<0 THEN
LINE_P(x1+f,y1−f,x2−f,y2−f,red);
LINE_P(x2−f,y2−f,x2−f−10,y2−f−5,red);
LINE_P(x2+f,y2+f,x3+f,y3−f,red);
LINE_P(x3+f,y3−f,x3+f+5,y3−f−10,red);
LINE_P(x3−f,y3+f,x4+f,y4+f,red);
LINE_P(x4+f,y4+f,x4+f+10,y4+f+5,red);
LINE_P(x4−f,y4−f,x1−f,y1+f,red);
LINE_P(x1−f,y1+f,x1−f−5,y1+f+10,red);
ELSE
LINE_P(x1+f,y1−f,x2−f,y2−f,red);
LINE_P(x2−f,y2−f,x2−f−10,y2−f−5,red);
LINE_P(x2+f,y2+f,x3+f,y3−f,red);
LINE_P(x2+f,y2+f,x2+f+5,y2+f+10,red);
LINE_P(x3−f,y3+f,x4+f,y4+f,red);
LINE_P(x4+f,y4+f,x4+f+10,y4+f+5,red);
LINE_P(x4−f,y4−f,x1−f,y1+f,red);
LINE_P(x4−f,y4−f,x4−f−5,y4−f−10,red);
END;
42
43
44
45
46
47
48
49
50
51
52
53
54
LOCAL g:=yc+(y2−y1)/2;
f:=45;
IF σx>0 THEN
LINE_P(x2,g,x2+f,g,green);
LINE_P(x2+f,g,x2+f−10,g−5,green);
LINE_P(x1,g,x1−f,g,green);
LINE_P(x1−f,g,x1−f+10,g+5,green);
ELSE
LINE_P(x2,g,x2+f,g,green);
LINE_P(x2,g,x2+10,g+5,green);
LINE_P(x1,g,x1−f,g,green);
LINE_P(x1,g,x1−10,g−5,green);
END;
55
56
57
58
59
60
61
62
63
64
g:=xc;f:=40;
IF σy<0 THEN
LINE_P(g,y1,g,y1−f,green);
LINE_P(g,y1,g+5,y1−10,green);
LINE_P(g,y3,g,y3+f,green);
LINE_P(g,y3,g−5,y3+10,green);
ELSE
LINE_P(g,y1,g,y1−f,green);
LINE_P(g,y1−f,g+5,y1−f+10,green);
LINE_P(g,y3,g,y3+f,green);
END;

 Código 7.28: Función FPRE C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
FPRE C
Esta función se encarga de
FPRE_C()
crear el dibujo del círculo de
BEGINσ
Mohr en la pantalla principal,
prom:=ROUND((σxσ+y)/2,2);τ
max:=ROUND(SQRT((σxσ−y)τ/2^2+xy^2),2);σ
reemplazando la variable gráfica
max:=ROUND(σpromτ+max,2);σ
G1 a G0 .
min:=ROUND(σpromτ−max,2);
//Angulo Principal.θ
p1:=ROUND(1/2*ATAN(τ2*xy/(σxσ−y)),2);θ
p2:=ROUND(θ90+p1,2);
//Dibujo del Circulo de Mhor
RECT_P(G1,{2,32},{318,230},white,gris);
LOCAL xo,yo,xa,ya,xc,yc,x1,y1;
LOCAL x2,y2,x3,y3,x4,y4,ra:=80;
FOR I:=1 TO 20 DO
xo:=3+15*I;yo:=32+15*I;
LINE_P(G1,xo,33,xo,230,plomo);
IF I<15 THEN
LINE_P(G1,3,yo,318,yo,plomo);
END;
Figure 7.28 Dibujo deL círculo de
END;
Mohr
xc:=160;
yc:=135;
ARC_P(G1,xc,yc,ra,red);
ARC_P(G1,xc,yc,2,red);
TEXTOUT_P("C",G1,xc+2,yc+3,1,red);
TEXTOUT_P("C=("σ+prom+",0)", G1, 318−5*(DIM(STRING(σprom))+7), 33, 1, red);
LOCAL p1,p2;
xa:=ra*COS(θ−2*p1);
ya:=ra*SIN(θ−2*p1);
x1:=xc+xa;
y1:=yc−ya;
x2:=xc−xa;
y2:=yc+ya;
//Esfuerzo Normal.
IF θp1>0 THEN
IF τxy<0 THEN
p1:={xc−ra*COS(θ2*p1),yc−ra*SIN(θ2*p1)};
p2:={xc+ra*COS(θ2*p1),yc+ra*SIN(θ2*p1)};
LINE_P(G1,p1,p2,blue);
TEXTOUT_P("(σxτ,xy)",G1,p1(1),p1(2),1,blue);
TEXTOUT_P("(σyτ,xy)",G1,p2(1),p2(2),1,blue);
ELSE
p1:={xc−ra*COS(θ2*p1),yc−ra*SIN(θ2*p1)};
p2:={xc+ra*COS(θ2*p1),yc+ra*SIN(θ2*p1)};
LINE_P(G1,p1,p2,blue);
TEXTOUT_P("(σyτ,xy)",G1,p1(1),p1(2),1,blue);
TEXTOUT_P("(σxτ,xy)",G1,p2(1),p2(2),1,blue);
END;
ELSE
IF τxy<0 THEN
p1:={xc+ra*COS(θ2*p1),yc+ra*SIN(θ2*p1)};
p2:={xc−ra*COS(θ2*p1),yc−ra*SIN(θ2*p1)};
LINE_P(G1,p1,p2,blue);
TEXTOUT_P("(σxτ,xy)",G1,p1(1),p1(2),1,blue);
TEXTOUT_P("(σyτ,xy)",G1,p2(1),p2(2),1,blue);
151
7.7
67
LINE_P(g,y3+f,g−5,y3+f−10,green);
END;
 riayala@uc.cl
65
66
Ejercicios | Capítulo 7
Programación en HP PPL aplicado a la ingeniería civil
7.7 Ejercicios | Capítulo 7
Programación en HP PPL
56
57
58
59
60
61
62
63
ELSE
p1:={xc+ra*COS(θ2*p1),yc+ra*SIN(θ2*p1)};
p2:={xc−ra*COS(θ2*p1),yc−ra*SIN(θ2*p1)};
LINE_P(G1,p1,p2,blue);
TEXTOUT_P("(σxτ,xy)",G1,p2(1),p2(2),1,blue);
TEXTOUT_P("(σyτ,xy)",G1,p1(1),p1(2),1,blue);
END;
END;
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
LINE_P(G1,3,yc,317,yc); //Eje X.
TEXTOUT_P("σ",G1,305,yc−20,4,red);
LOCAL xf,xcc;
xf:=(raσ*min)τ/max;
xcc:=xc−ra−xf;
IF 3<xcc<318 THEN
LINE_P(G1,xcc,33,xcc,230); //Eje Y.
TEXTOUT_P("τ",G1,xcc−10,30,4,red);
END;
IF xcc>=318 THEN
LINE_P(G1,300,33,300,230); //Eje Y.
TEXTOUT_P("τ",G1,280,30,4,red);
END;
IF xcc<=3 THEN
LINE_P(G1,8,33,8,230); //Eje Y.
TEXTOUT_P("τ",G1,12,30,4,red);
END;
81
82
83
84
85
86
87
88
89
90

EDITFORM y Tecla
 Código 7.29: Funciones EDITFORM y Tecla
Estas funciones son dos
complementos para poder
crear los ingresos de datos en
cada recuadros creado en el
ARC_P(G1,xc−ra,yc,2,blue);
ARC_P(G1,xc+ra,yc,2,blue);
ARC_P(G1,xc,yc+ra,2,blue);
ARC_P(G1,xc,yc−ra,2,blue);
TEXTOUT_P(σmax,G1,xc+86,yc+2,1,red);
TEXTOUT_P(σmin,G1, xc−ra−5*(DIM(STRING(σmin))+1), yc+3, 1, red);
TEXTOUT_P(τ−max,G1,xc,yc+ra+3,1,red);
TEXTOUT_P("θp1="θ+p1,G1,4,190,1,red);
TEXTOUT_P("θp2="θ+p2,G1,4,210,1,red);
END;
1
2
3
4
5
EDITFORM(Dato,Region,ColorA,ColorB)
BEGIN
RECT_P(Region(1),Region(2),ColorA,ColorB);
TEXTOUT_P(Dato,Region(1)+4,1);
END;
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Tecla()
BEGIN
LOCAL Val,Rs;
Val:=Accion;
CASE
IF ≤31Val<35 THEN �25Rs END;
IF Val=35 THEN RETURN "/"; END;
IF ≤36Val<40 THEN �33Rs END;
IF Val=40 THEN RETURN "*"; END;
IF ≤41Val<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;
 riayala@uc.cl
formulario de entrada.
152

EDITC
 Código 7.30: Función EDITC
Esta función permite poder
1
EDITC(Dato,Region,Ayuda,CFondo)
editar, eliminar, escribir dígitos
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
en un recuadro creado en el
BEGIN
LOCAL NDato:=STRING(Dato,1),mx,my,NN;
formulario de entrada.
Dato:=NDato;
REPEAT
EDITFORM(NDato+">",Region,bordeIC,fondoIC);
RECT_P({0,224},{320,240},bordeIC,fondoIC);
NN:=6*(DIM(NDato)+3.5);
TEXTOUT_P("−"+Ayuda,NN,227,1,plomo);
TEXTOUT_P(NDato+">",5,227,2,textoIC);
Accion:=→BR(WAIT(−1));
IF TYPE(Accion)==0 THEN
CASE
IF Accion==4 THEN
NDato:=Dato;
BREAK;
END;
Figure 7.29 Ingreso de datos a
IF Accion==30 THEN
través de recuadros personalizados
IFERR
EXPR(NDato)
THEN
NDato:=Dato;
END;
BREAK;
END;
IF Accion==19 THEN
IF DIM(NDato)≤1 THEN
NDato:="";
ELSE
NDato:=LEFT(NDato,DIM(NDato)−1);
END;
END;
DEFAULT
NDato:=NDato+Tecla;
END;
ELSE
IF Accion(1)==3 THEN
mx:=Accion(2);
my:=Accion(3);
IF NOT(Region(1,1)<mx<Region(2,1) AND Region(1,2)<my<Region(2,2)) THEN
IFERR
EXPR(NDato)
THEN
NDato:=Dato;
END;
BREAK;
END;
END;
END;
UNTIL 0;
RECT_P({0,224},{320,240},CFondo,CFondo);
NDato:=EXPR(NDato);
EDITFORM(STRING(NDato,1),Region,textoC,white);
RETURN NDato;
END;
153
7.7
STRING(Val−Rs,1);
END;
 riayala@uc.cl
22
23
Ejercicios | Capítulo 7
Programación en HP PPL aplicado a la ingeniería civil
 riayala@uc.cl
7.7 Ejercicios | Capítulo 7
Programación en HP PPL
154
Capítulo
8
Introducción al
modo CAS
 Resumen
8.1
8.2
¿Qué es CAS?, 156
CAS en PPL PRIME, 157
8.1 ¿Qué es CAS? | Capítulo 8
Programación en HP PPL
8.1 ¿Qué es CAS?
Un sistema algebraico computacional (CAS) que permite
realizar cálculos simbólicos de forma predeterminada,
este sistema funciona en modo exacto y ofrece precisión
infinita. Por otra parte, los cálculos que no se hacen en
el sistema algebraico computacional como, por ejemplo,
los que se realizan en la vista de INICIO o por parte
de una aplicación, son cálculos numéricos y, a veces,
aproximaciones limitadas por la precisión de la calculadora
(hasta 12 dígitos significativos en el caso de la calculadora
HP Prime).
El CAS ofrece cientos de funciones, entre ellas, álgebra,
cálculos, cálculos de ecuaciones, polinomios y más.
Puede
seleccionar
una
función
del
menú
Sistema
algebraico computacional, uno de los menús del cuadro de
herramientas.
8.1.1Vista de CAS
Los cálculos del sistema algebraico computacional se
realizan en la vista del sistema algebraico computacional. La
vista del sistema algebraico computacional es casi idéntica a
la vista de Inicio. Se genera un historial de cálculos y puede
seleccionar y copiar cálculos previos de la misma forma
Figure 8.1 Vista principal del
modo CAS
que puede hacerlo en la vista de Inicio, así como almacenar
objetos en variables.
Para abrir la vista del sistema algebraico computacional,
presione. Caparece en blanco en la parte izquierda de la
 riayala@uc.cl
barra de título para indicar que se encuentra en la vista del
sistema algebraico computacional y no en la vista de Inicio.
156
8.2 CAS en PPL PRIME | Capítulo 8
Programación en HP PPL aplicado a la ingeniería civil
8.1.2Cálculos con CAS
Con una excepción, puede realizar cálculos en el sistema
algebraico computacional exactamente de la misma forma
que lo haría en la vista de Inicio. (La excepción es que no
hay modo de entrada RPN en la vista del sistema algebraico
computacional, solo los modos Algebraico y Libro de texto).
Todas las teclas de operadores y funciones funcionan en
la vista del sistema algebraico computacional de la misma
Figure 8.2 Vista principal del
modo CAS
forma que en la vista de Inicio. No obstante, la principal
diferencia es que la visualización predeterminada de las
respuestas es simbólica en lugar de numérica.
Las funciones del sistema algebraico computacional más
utilizadas están disponibles en el menú de este sistema,
que es uno de los menús del cuadro de herramientas.
Para mostrar el menú, pulse el botón b. (Si el menú
Sistema algebraico computacional no está abierto de forma
predeterminada, toque C).
8.2 CAS en PPL PRIME
En el lenguaje de programacion PPL PRIME se incluye
el sistema algebraico computacional (CAS) a través del
siguiente comando.
Sintaxis CAS.funcion();
CAS.variable;
este comando nos permite operar las funciones del modo
CAS.
Ejemplo Integral y derivada de una función
Programa que calcula la integral y derivada de una función.
Solución:
157
 riayala@uc.cl
8.1
8.2 CAS en PPL PRIME | Capítulo 8
Programación en HP PPL
 Código 8.1: E1 CAS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
EXPORT E1_CAS()
BEGIN
LOCAL SALIR,accion,FX;
F1:="X^2+2*X−2";
F2:=CAS.diff(F1);
F3:=CAS.int(F1);
PRINT();
PRINT("FUNCION: "+F1);
PRINT("DERIVADA: "+F2);
PRINT("INTEGRAL: "+F3);
//Evaluar la funcion.
X:=10;
FX:=eval(F1);
PRINT("PARA X=10 ‐>F(X)= "+FX);
END;
Ejemplo Integral y derivada de una función
8.2
Programa que calcula el SENO del número 45 sumado el
contador del bucle, si la operación se realiza con CAS, solo
mostrará simbólicamente la operación, pero si se utiliza el
comando evalf evaluará esa operación.
Solución:
 Código 8.2: Foo
 riayala@uc.cl
1
2
3
4
5
6
7
8
9
10
11
158
EXPORT Foo()
BEGIN
LOCAL i,p,r;
PRINT();
FOR i:=0 TO 3 DO
p:=CAS.SIN(45+i);
PRINT(p);
r:=evalf(p);
PRINT(r);
END;
END;
Indice de Figuras
Programación en HP PPL aplicado a la ingeniería civil
Índice de Figuras
Figura 1.1. Funcionamiento de un programa . . . . . . . . . . . 5
Figura 1.2. Secuencia de un programa. . . . . . . . . . . . . . . . . 5
Figura 1.3. Secuencia de un programa. . . . . . . . . . . . . . . . . 6
Figura 1.4. Módulo o secciones de un algoritmo. . . . . . . . . 8
Figura 1.5. Calculadora HP PRIME . . . . . . . . . . . . . . . . . . . 10
Figura 1.6. Calculadora HP PRIME . . . . . . . . . . . . . . . . . . . 10
Figura 1.7. Conociendo la calculadora HP PRIME . . . . . . . 11
Figura 1.8. Emulador para S.O. Windows. . . . . . . . . . . . . . 12
Figura 1.9. Logotipo programa Notepad++ . . . . . . . . . . . . 14
Figura 1.10. Importar
un
archivo
de
configuración
a
Notepad++. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Figura 2.1. Catálogo de programas . . . . . . . . . . . . . . . . . . 19
Figura 2.2. Vista de las herramientas de trabajo del software
Kit de Conectividad. . . . . . . . . . . . . . . . . . . . . . 22
Figura 2.3. Creación de un nuevo programa.. . . . . . . . . . . 22
Figura 3.1. Variable global de exportación . . . . . . . . . . . . 27
Figura 3.2. Resultados del programa VarInicio . . . . . . . . . 30
Figura 3.3. Variables de aplicaciones. . . . . . . . . . . . . . . . . 32
Figura 3.4. Variables de usuario. . . . . . . . . . . . . . . . . . . . . 33
Figura 3.5. Resultados del programa Operadores . . . . . . 36
Figura 3.6. Resultados del programa CTEXTOUT . . . . . . . 36
Figura 3.7. Resultados del programa CPRINT . . . . . . . . . . 36
Figura 3.9. Resultados del comando STRING. . . . . . . . . . . 37
Figura 4.1. Programa RArea desde HOME . . . . . . . . . . . . 43
159
 riayala@uc.cl
Figura 3.8. Resultados del programa CMSGBOX . . . . . . . 36
Indice de Figuras
Programación en HP PPL
Figura 4.2. Formulario del ingreso de datos programa RArea
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Figura 4.3. Resultados del programa RArea . . . . . . . . . . . 43
Figura 4.4. Ingreso de datos del programa CArea . . . . . .44
Figura 4.5. Ejecución del programa RInput . . . . . . . . . . . 45
Figura 4.6. Ejecución del programa RInput . . . . . . . . . . . 45
Figura 4.7. Ejecución del programa PChoose . . . . . . . . . . 47
Figura 4.8. Ingreso de datos a través de la pantalla táctil. 47
Figura 4.9. Ejemplo 1 de formularios Interactivos . . . . . . 47
Figura 4.10.Ejemplo 2 de formularios Interactivos . . . . . . 47
Figura 4.11. Ejecución del programa iMatriz . . . . . . . . . . .48
Figura 4.12.Ejecución del programa iMatriz . . . . . . . . . . .48
Figura 4.13.Ejecución del programa iLista . . . . . . . . . . . . .49
Figura 4.14.Ingreso del valor R = 10 . . . . . . . . . . . . . . . . . . 51
Figura 4.15.Ejecutando el programa: Impresión a través de
MSGBOX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Figura 4.16.Ingreso del valor R = 10 . . . . . . . . . . . . . . . . . . 52
Figura 4.17. Ejecutando el programa: Impresión a través de
PRINT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Figura 4.18.Vista de resultados de manera textual y gráfica.
52
Figura 4.19.Formulario de entrada del programa MI. . . . . 53
Figura 4.20.Ejecutando el programa, vista de los resultados
53
Figura 4.22.Ejecutando el programa, vista de los resultados
55
Figura 4.21.Sistema de coordenadas cartesianas. . . . . . . . 55
 riayala@uc.cl
Figura 4.23.Sistema de coordenadas de píxel. . . . . . . . . . . 56
Figura 4.24.Creación
de
un
GROB
de
trabajo
con
dimensiones 320x480 píxeles . . . . . . . . . . . . . 57
Figura 4.26.Programa PBLITb . . . . . . . . . . . . . . . . . . . . . . . 59
160
Indice de Figuras
Programación en HP PPL aplicado a la ingeniería civil
Figura 4.27.Programa PBLITc. . . . . . . . . . . . . . . . . . . . . . . . 59
Figura 4.25.Programa PBLITa. . . . . . . . . . . . . . . . . . . . . . . . 59
Figura 4.28.Programa PBLITd . . . . . . . . . . . . . . . . . . . . . . . 60
Figura 4.29.Programa PBLITe. . . . . . . . . . . . . . . . . . . . . . . . 60
Figura 4.30.Programa PBLITf . . . . . . . . . . . . . . . . . . . . . . . . 61
Figura 4.31.Programa AboutESP . . . . . . . . . . . . . . . . . . . . . 61
Figura 4.32.Programa PBLITf . . . . . . . . . . . . . . . . . . . . . . . . 62
Figura 4.33.Modelo aditivo de colores rojo, verde, azul. . . 63
Figura 4.34.Ejecutando el programa iMENU . . . . . . . . . . . 65
Figura 4.35.Ejecutando el programa iICON . . . . . . . . . . . .66
Figura 5.1. Condición simple . . . . . . . . . . . . . . . . . . . . . . . 74
Figura 5.2. Condición doble . . . . . . . . . . . . . . . . . . . . . . . . 74
Figura 5.3. Condición múltiple. . . . . . . . . . . . . . . . . . . . . . 74
Figura 5.4. Orden de las operaciones. . . . . . . . . . . . . . . . . 75
Figura 5.5. Diagrama de flujo IF THEN. . . . . . . . . . . . . . . . 75
Figura 5.6. Ingreso de datos:programa ValorAbsoluto . . . 76
Figura 5.7. Resultado:programa ValorAbsoluto . . . . . . . . 76
Figura 5.9. Ingreso de datos:programa Compara10 . . . . . 77
Figura 5.10.Resultado:programa Compara10. . . . . . . . . . . 77
Figura 5.8. Diagrama de flujo de la estructura IF THEN ELSE
77
Figura 5.11. Diagrama de flujo de la estructura CASE . . . . 78
Figura 5.12.Resultados: programa NumeroRomano . . . . . 79
Figura 5.13.Resultados: programa NumeroRomano . . . . . 79
Figura 5.14.Resultados para num=5 y den=0 . . . . . . . . . . . 80
Figura 5.15.Resultados para num=5 y den=10 . . . . . . . . . . 80
Figura 5.17. Resultado: programa TipoTriangulo . . . . . . . . 82
Figura 5.18.Ingreso de datos: programa TipoFlujo . . . . . . 83
161
 riayala@uc.cl
Figura 5.16.Ingreso de datos: programa TipoTriangulo . . 82
Indice de Figuras
Programación en HP PPL
Figura 5.19.Resultado: programa TipoFlujo. . . . . . . . . . . . 83
Figura 5.20.Ingreso de datos: programa Cuadrante . . . . . 84
Figura 5.21.Resultado: programa Cuadrante . . . . . . . . . . . 84
Figura 5.22.Diagrama de la estructura FOR . . . . . . . . . . . . 88
Figura 5.23.Resultado del programa Factorial para num=589
Figura 5.24.Resultado del programa Producto A=5 y b=2 . 90
Figura 5.25.Resultado del programa Producto A=5 y b=2 . 90
Figura 5.26.Diagrama de la estructura WHILE . . . . . . . . . . 91
Figura 5.27.Ingreso de datos: programa NumeroPI. . . . . . 92
Figura 5.28.Resultado: programa NumeroPI . . . . . . . . . . . 92
Figura 5.29.Diagrama de la estructura WHILE . . . . . . . . . . 92
Figura 5.30.Ingreso de datos: programa NumeroPI. . . . . . 93
Figura 5.31.Resultado: programa NumeroPI . . . . . . . . . . . 93
Figura 5.32.Diagrama de flujo de la ruptura de ciclo BREAK
94
Figura 5.33.Diagrama de flujo de la ruptura de ciclo
CONTINUE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Figura 5.34.Resultado: programa RelojDigital . . . . . . . . . . 96
Figura 5.35.Resultado: programa RelojDigital . . . . . . . . . . 96
Figura 5.36.Ingreso de datos: programa NEWTON-ENL . . 97
Figura 5.37.Resultado: programa NEWTON-ENL . . . . . . . 97
Figura 5.38.Resultado: programa Cargando1. . . . . . . . . . . 98
Figura 5.39.Resultado: programa Cargando1. . . . . . . . . . . 98
Figura 5.40.Resultado: programa Cargando2. . . . . . . . . . . 99
Figura 5.41.Resultado: programa Cargando2. . . . . . . . . . . 99
Figura 5.42.Resultado: programa HolaMundo. . . . . . . . . . 99
Figura 5.43.Resultado: programa HolaMundo. . . . . . . . . . 99
 riayala@uc.cl
Figura 5.44.Ingreso de datos: programa NumeroPI. . . . . 101
Figura 5.45.Resultado: programa NumeroPI . . . . . . . . . . 101
162
Indice de Figuras
Programación en HP PPL aplicado a la ingeniería civil
Figura 6.1. Unidimensional . . . . . . . . . . . . . . . . . . . . . . . 106
Figura 6.2. Bidimensional. . . . . . . . . . . . . . . . . . . . . . . . . 106
Figura 6.3. Tridimensional . . . . . . . . . . . . . . . . . . . . . . . . 106
Figura 6.4. Ingreso de datos . . . . . . . . . . . . . . . . . . . . . . . 109
Figura 6.5. Resultados del programa . . . . . . . . . . . . . . . . 109
Figura 6.6. Ingreso de datos . . . . . . . . . . . . . . . . . . . . . . . 115
Figura 6.7. Resultados del programa . . . . . . . . . . . . . . . . 115
Figura 6.8. Ingreso de datos . . . . . . . . . . . . . . . . . . . . . . . 116
Figura 6.9. Ingreso de datos . . . . . . . . . . . . . . . . . . . . . . . 116
Figura 6.10.Ingreso de datos . . . . . . . . . . . . . . . . . . . . . . . 116
Figura 6.11. Resultados del programa . . . . . . . . . . . . . . . . 116
Figura 6.12.Resultados del programa . . . . . . . . . . . . . . . . 117
Figura 6.13.Ingreso de datos . . . . . . . . . . . . . . . . . . . . . . . 119
Figura 6.14.Resultados del programa . . . . . . . . . . . . . . . . 119
Figura 6.15.Resultados del programa . . . . . . . . . . . . . . . . 119
Figura 7.1. Resultados del programa Funciones . . . . . . . 123
Figura 7.3. Resultados del programa . . . . . . . . . . . . . . . . 131
Figura 7.4. Resultados del programa . . . . . . . . . . . . . . . . 131
Figura 7.2. Valores de teclas obtenidos con el comando
GETKEY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Figura 7.5. Resultados del programa . . . . . . . . . . . . . . . . 132
Figura 7.6. Resultados del programa . . . . . . . . . . . . . . . . 132
Figura 7.7. Programa CMOUSE. . . . . . . . . . . . . . . . . . . . . 134
Figura 7.8. Programa PruebaMouse. . . . . . . . . . . . . . . . . 134
Figura 7.9. Programa PruebaMouse. . . . . . . . . . . . . . . . . 135
Figura 7.10. Programa PruebaWait . . . . . . . . . . . . . . . . . . 136
Figura 7.12. Programa PruebaWait . . . . . . . . . . . . . . . . . . 137
Figura 7.13. Programa PBoton . . . . . . . . . . . . . . . . . . . . . . 138
163
 riayala@uc.cl
Figura 7.11. Programa PruebaWait . . . . . . . . . . . . . . . . . . 136
Indice de Figuras
Programación en HP PPL
Figura 7.14. Programa PBoton . . . . . . . . . . . . . . . . . . . . . . 138
Figura 7.15. Pantalla principal . . . . . . . . . . . . . . . . . . . . . . 139
Figura 7.16. Ingreso de datos, Matriz . . . . . . . . . . . . . . . . 139
Figura 7.17. Resultados del programa . . . . . . . . . . . . . . . . 141
Figura 7.18. Resultados del programa . . . . . . . . . . . . . . . . 141
Figura 7.19. Pantalla principal del programa . . . . . . . . . . 143
Figura 7.20.Resultdos del programa Eq2do . . . . . . . . . . . 143
Figura 7.21. Ingreso de datos personalizado. . . . . . . . . . . 144
Figura 7.22.Verificación de errores de cálculo . . . . . . . . . 144
Figura 7.23.Pantalla principal del programa . . . . . . . . . . 146
Figura 7.24.Pantalla principal del programa . . . . . . . . . . 146
Figura 7.25.Formulario de ingreso de datos. . . . . . . . . . . 148
Figura 7.26.Dibujo de los esfuerzos, cambian de acuerdo al
signo asignado . . . . . . . . . . . . . . . . . . . . . . . . 149
Figura 7.27.Dibujo de los esfuerzos, cambian de acuerdo al
signo asignado . . . . . . . . . . . . . . . . . . . . . . . . 149
Figura 7.28.Dibujo deL círculo de Mohr . . . . . . . . . . . . . . 151
Figura 7.29.Ingreso de datos a través de recuadros
personalizados . . . . . . . . . . . . . . . . . . . . . . . . 153
Figura 8.1. Vista principal del modo CAS . . . . . . . . . . . . 156
 riayala@uc.cl
Figura 8.2. Vista principal del modo CAS . . . . . . . . . . . . 157
164
Indice de Tablas
Programación en HP PPL aplicado a la ingeniería civil
Índice de Tablas
Tabla 1.1.
Leyenda del teclado . . . . . . . . . . . . . . . . . . . . . 10
Tabla 1.2. Características de la calculadora. . . . . . . . . . . 12
Tabla 1.3. Historial de versiones. . . . . . . . . . . . . . . . . . . . 13
Tabla 1.4. Historial de versiones. . . . . . . . . . . . . . . . . . . . 13
Tabla 1.5. Historial de versiones. . . . . . . . . . . . . . . . . . . . 14
Tabla 3.1.
Tipo dato predefinido en la calculadora HP
PRIME. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Tabla 3.2. Leyenda del teclado . . . . . . . . . . . . . . . . . . . . . 28
Tabla 3.3. Tipo de objetos o identificadores de variables.33
Tabla 3.4. Tipo de operadores relacionales. . . . . . . . . . . . 35
Tabla 3.5. Tipo de operadores relacionales. . . . . . . . . . . . 35
Tabla 3.6. Tipo de objetos o identificadores de variables.39
Tabla 4.1.
Tamaño de fuente para el comando TEXTOUT65
Tabla 5.1.
Tipo de operadores lógicos. . . . . . . . . . . . . . . . 75
Tabla 5.2. Tipo de operadores relacionales. . . . . . . . . . . . 75
Tabla 7.1.
Tipo de acción al tocar la pantalla . . . . . . . . . 133
165
 riayala@uc.cl
Tabla 7.2. Acciones del comenado WAIT . . . . . . . . . . . . 135
Programación en HP PPL
aplicado a la ingeniería civil
Descargar