Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
H P P R IM E CEIC UNSCH AYALA BIZARRO, Rocky Giaban "CURSODEPROGRAMACIÓNEN LACALCULADORAHPPRIME" ÍNDICE GENERAL Índice General ii Índice de Cuadros vi Índice de Figuras vii I CLASES I 1 I INTRODUCCIÓN 2 1.1 Conociendo la Calculadora . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4 Problemas y algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4.1 Ejemplo de algoritmos . . . . . . . . . . . . . . . . . . . . . . . . 5 II PROGRAMACIÓN EN HP PPL 6 2.1 Estructura de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2 Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3 Catalogo de programas . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.4 Creación de un nuevo programa . . . . . . . . . . . . . . . . . . . . . . . 8 2.4.1 Desde la HP PRIME . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4.2 Desde el software de conectividad de la HP PRIME. . . . . . . . . 9 III VARIABLES Y OBJETOS 11 3.1 Variables Globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2 Variables locales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3 Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.4 Declaración de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 IV INGRESO Y SALIDA DE DATOS 18 4.1 Ingreso de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.1.1 Función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.1.2 Comando INPUT . . . . . . . . . . . . . . . . . . . . . . . . . . 19 ii Índice General 4.1.3 Pantalla táctil . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.2 Formularios interactivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.3 Otros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.4 Salida de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.4.1 Comando MSGBOX . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.4.2 Comando PRINT . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.4.3 Ingreso de datos personalizados . . . . . . . . . . . . . . . . . . . 25 4.5 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.5.1 Ejercicio 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.5.2 Ejercicio 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.5.3 Ejercicio 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.5.4 Ejemplo Nro 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 V BIFURCACIONES Y BUCLES 29 5.1 Bifurcación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.1.1 Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.1.2 Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.1.3 Comando IF THEN . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.1.4 Comando IF THEN ELSE . . . . . . . . . . . . . . . . . . . . . . 31 5.1.5 Comando CASE . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.1.6 Comando IFERR . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.1.7 Comando IFERR ELSE . . . . . . . . . . . . . . . . . . . . . . . 34 5.1.8 Ejemplo 01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.2 Bucle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.2.1 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.2.2 Comando FOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 5.2.3 Comando FOR STEP . . . . . . . . . . . . . . . . . . . . . . . . 37 5.2.4 Comando FOR DOWN . . . . . . . . . . . . . . . . . . . . . . . 38 5.2.5 Comando FOR STEP DOWN . . . . . . . . . . . . . . . . . . . . 39 5.2.6 Comando WHILE . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.2.7 Comando REPEAT . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.2.8 Comando BREAK . . . . . . . . . . . . . . . . . . . . . . . . . . 42 5.2.9 Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 VI CADENAS 44 6.1 Definición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.2 ASC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 6.3 LOWER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 6.4 CHAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 6.5 DIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6.6 STRING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 iii Índice General VIILISTAS Y MATRICES 47 7.1 Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 7.2 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 7.2.1 Creación de listas . . . . . . . . . . . . . . . . . . . . . . . . . . 48 7.2.2 SORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 7.2.3 CONCAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 7.2.4 Posición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 7.2.5 Tamaño . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.2.6 EDITLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.3 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.3.1 ADDCOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 7.3.2 ADDROW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 7.3.3 DELCOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 7.3.4 DELROW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 7.3.5 EDITMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 7.3.6 REDIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 7.3.7 REPLACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 7.3.8 SCALE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 7.3.9 SCALEADD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 7.3.10 SUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 7.3.11 SWAPCOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 7.3.12 SWAPROW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 7.3.13 Posición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7.4 Comandos especiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7.4.1 GETKEY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7.4.2 ISKEYDOWN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7.5 Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 VIIIObjetos Gráficos 55 8.1 Comando de ingreso de datos . . . . . . . . . . . . . . . . . . . . . . . . 56 8.1.1 MOUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 8.1.2 WAIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 8.2 Comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 8.2.1 DRAWMENU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 8.2.2 FREEZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 8.2.3 RGB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 8.2.4 LINE P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 8.2.5 RECT P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 8.2.6 TEXTOUT P . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 8.2.7 BLIT P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 8.3 Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 iv Índice General IX Procedimientos y Subrutinas 65 v ÍNDICE DE CUADROS 3.1 Tipo de objetos o identificadores de variables . .. . . . . . . . . . . . . . 16 6.1 Tipo de objetos o identificadores de variables . . . . . . . . . . . . . . . . 46 8.1 Tipo de objetos o identificadores de variables . . . . . . . . . . . . . . . . 57 vi ÍNDICE DE FIGURAS 1.1 Conociendo la calculadora HP PRIME . . . . . . . . . . . . . . . . . . . . 3 1.2 Módulo o secciones de un algoritmo . . . . . . . . . . . . . . . . . . . . . 5 2.1 Se ingresa presionando los botones Shift + 1 . . . . . . . . . . . . . . . 8 3.1 Variables de aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.2 Variables de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3 Variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.4 Declaracion de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.1 Formularios Interactivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.2 Declaracion de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.3 Declaracion de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.4 Ingreso de datos a través de la pantalla táctil . . . . . . . . . . . . . . . . 22 4.5 Formularios Interactivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.6 Formularios interactivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.7 Formularios interactivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.8 Formularios interactivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.9 Formularios interactivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.10 Formularios interactivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 7.1 Tipos de array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 7.2 Valores de teclas obtenidos con el comando GETKEY . . . . . . . . . . . 52 8.1 Modelo aditivo de colores rojo, verde, azul. . . . . . . . . . . . . . . . . . 59 vii PARTE I „Proyecto: CURSO DE PROGRAMACIÓN EN LA CALCULADORA HP PRIME — CA PÍ TU LO I INTRODUCCIÓN 1.1 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 con una amplia biblioteca de funciones y comandos, la calculadora incluye un conjunto de aplicaciones de HP. La calculadora HP Prime también dispone de su propio lenguaje de programación que puede utilizar para explorar y resolver problemas matemáticos. 2 1.1 Conociendo la Calculadora | Capitulo I Figura No 1.1: Conociendo la calculadora HP PRIME iii iii Leyenda del teclado de HP Prime Número Función 1 Pantalla táctil y LCD: 320 × 240 píxeles 2 Menú de botones táctiles contextuales 3 Teclas de aplicaciones de HP 4 Configuración de las preferencias y la vista de Inicio 5 Funciones matemáticas y científicas habituales 6 Teclas Alpha y de alternancia 7 Tecla de encendido, de cancelación y de apagado 8 Catálogos de listas, matrices, programas y notas 9 Tecla de última respuesta (Ans) 10 Tecla de aceptación 11 Tecla de retroceso y eliminación 12 Tecla de menú y pegado 13 Configuración de las preferencias y de la vista del sistema algebraico computacional 14 Tecla de vista y copiado 15 Tecla de escape y borrado 16 Tecla de ayuda 17 Rueda basculante (para mover el cursor) 1 2 3 4 5 6 7 8 9 11 13 14 12 15 16 10 17 QSG_Fir.book Page iii Tuesday, July 2, 2013 11:09 AM 3 1.2 Programación | Capitulo I 1.2 Programación Indicar a la calculadora qué es lo que tiene que hacer. ¿Qué es programar? Decirle a un tonto muy rápido exactamente lo que tiene que hacer Especificar la estructura y el comportamiento de un programa, así como probar que el programa realiza su tarea adecuadamente y con un rendimiento aceptable. 1.3 Programa Transforma entrada en salida. 1. Secuencia de instrucciones 2. Instrucciones que entiende la computadora 3. Y que persiguen un objetivo: ¡resolver un problema! 1.4 Problemas y algoritmos Casi inconscientemente, los humanos efectuamos cotidianamente una serie de pasos, pro- cedimientos o acciones que nos permiten alcanzar un resultado o resolver un problema. Un algoritmo como un conjunto de pasos, procedimientos o acciones que nos permiten alcanzar un resultado o resolver un problema. Muchas veces aplicamos el algoritmo de manera inadvertida, inconsciente o automática- mente. Esto generalmente se produce cuando el problema que tenemos enfrente lo hemos resuelto con anterioridad un gran número de veces. Supongamos que simplemente tenemos que abrir una puerta. Lo hemos hecho tantas veces que difícilmente nos ponemos a enumerar los pasos para alcanzar este objetivo. Lo hacemos de manera automática. Lo mismo ocurre cuando queremos subirnos a un automóvil. Por otra parte, existe una gran cantidad de problemas que requieren de un análisis profundo y de un pensamiento flexible y estructurado para su solución. En este curso nos interesa abordar ese tipo de problemas. Invariablemente surgen ciertas preguntas 1. ¿Podemos enseñar a resolver un problema? 2. ¿Podemos enseñar a analizar el mismo? 3. ¿Podemos enseñar a pensar .... ? Por otra parte, un algoritmo consta de tres secciones o módulos principales. En la figura 1.2 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. 4 1.4 Problemas y algoritmos | Capitulo I El módulo 3 representa una operación o conjunto de operaciones que permiten comunicar al exterior el o los resultados alcanzados. Figura No 1.2: Módulo o secciones de un algoritmo4 Algoritmos, diagramas de flujo y programas Figura 1.2 Módulos o 5ecclones de un Algoritmo 1.2 Diagramas de flujo Un diagrama de flujo representa la esquematización gráfica de un algoritmo. En realidad muestra gráficamente los pasos o procesos a seguir para alcanzar la solu ción de un problema. Su correcta construcción es sumamente importante porque a partir del mismo se escribe un programa en algún lenguaje de programación. Si el diagrama de flujo está completo y correcto, el paso del mismo a un lenguaje de programación es relativamente simple y directo. A continuación en la tabla 1.1 presentamos los símbolos que utilizaremos, y una explicación de los mismos. Estos satisfacen las recomendaciones de la “Jn- ternational Organization for Standardizatiorí' (ISO) y la “American National Standards Institute” (ANSI). A continuación en la figura 1.3 presentamos las etapas que debemos seguir en la construcción de un diagrama de flujo. 1.2.1 Reglas para la construcción de diagramas de flujo Debemos recordar que un diagrama de flujo debe ilustrar gráficamente los pasos o procesos a seguir para alcanzar la solución de un problema. Los símbolos pre sentados, colocados adecuadamente, permiten crear una estructura gráfica flexi ble que ilustra los pasos a seguir para alcanzar un resultado específico. El diagrama de flujo facilitará más tarde la escritura del programa en algún lenguaje de programación. www.FreeLibros.com 1.4.1 Ejemplo de algoritmos 1.4.1.1 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 1.4.1.2 Ejemplo 2 Elabora un algoritmo para leer un numero y determinar si es par o impar. 1.4.1.3 Ejemplo 3 Solicitar un entero y determinar sí es múltiplo de 3 y además que se encuentre en el rango (100-200). 1.4.1.4 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. 1.4.1.5 Ejemplo 5 Determinar la hipotenusa de un triángulo rectángulo conocidas las longitudes de sus dos catetos. Desarrolleel algoritmo correspondiente. 1.4.1.6 Ejemplo 6 Desarrolle un algoritmo que permita leer dos números y ordenarlos de menor a mayor, si es el caso. 5 CA PÍ TU LO II PROGRAMACIÓN EN HP PPL Este lenguaje esta orientado a secuencias y permite el manejo de datos de una forma muy aprovechable, por lo que se precisa indicar que estas consideraciones pueden llegar a ser exclusivas de PPL. 2.1 Estructura de comandos Los programas pueden contener cualquier número de subrutinas (cada una de las cuales es una función o procedimiento). Las subrutinas se inician con un 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: EXPORT MYPROGAM() BEGIN PIXON(1,1); END; Los comandos se separan con punto y coma (;). Los comandos que aceptan varios argumentos incluyen a estos últimos entre paréntesis, separados por comas( , ). Por ejemplo. »> TEXTOUT_P(texto,posicion x, posicion y); 6 2.2 Comentarios | Capitulo II En ocasiones, los argumentos de un comando son opcionales. Si se omite un argumento, se utiliza un valor predeterminado en su lugar. En el caso del comando TEXTOUTP, podría utilizarse un tercer argumento que especificara la fuente del texto: »> TEXTOUT_P(texto,[G],posicion x, posicion y, [fuente]); En este manual, los argumentos opcionales a los comandos aparecen dentro de corchetes, como se ha mostrado anteriormente. En el ejemplo TEXTOUTP, una variable gráfica (G) podría especificarse como segundo argumento. El valor predeterminado es G0, que contiene siempre la pantalla mostrada en ese momento. Por lo tanto, la sintaxis mas completa del comando TEXTOUTP es: »> TEXTOUT_P(texto,[G],posicion x, posicion y, [fuente]); 2.2 Comentarios Cuando una 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 PIXON(1,1); //Esta linea es solo un 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. El editor de programa es donde se crean y editan los programas. También se pueden ejecutar programas desde Vista de inicio o desde otros programas. 7 2.4 Creación de un nuevo programa | Capitulo II Figura No 2.1: Se ingresa presionando los botones Shift + 1 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.1 Desde la HP PRIME Se sigue los siguientes pasos: 1. Abra el catálogo de programas e inicie un programa nuevo. 2. Introduzca un nombre para el nuevo programa. 8 2.4 Creación de un nuevo programa | Capitulo II 3. Presione OK. Se crea automáticamente una plantilla para el programa. La plantilla consta de un encabezado para una función del mismo nombre que el programa, que encerrará las instrucciones de la función. EXPORT HOLAMUNDO() BEGIN END; 2.4.2 Desde el software de conectividad de la HP PRIME. Se sigue los siguientes pasos: 1. Abra el software de conectividad de la HP PRIME. 9 2.4 Creación de un nuevo programa | Capitulo II 2. En Programas presione anticlick y seleccioneNuevo introduzca el nombre del pro- grama y le teclee enter. 3. Se crea automáticamente una ventana nueva para el programa. 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, HELLO_WORLD y Programa2 son nombres de programa válidos, mientras que HELLO WORLD (no se permiten espacios) y 2Program! (empieza con un número e incluye un signo !) no son válidos. : Sugerencia 10 CA PÍ TU LO III VARIABLES Y OBJETOS Son valores asignados en la memoria con un nombre dentro de un programa que se requieren constantemente para ser operados. Las variables en un programa de HP Prime pueden utilizarse para almacenar números, listas, matrices, objetos de gráficos y cadenas. El nombre de una variable debe tener una secuencia de carácteres alfanuméricos (letras y números), comenzado con una letra. Los nombres reconocen mayúsculas y minúsculas, por lo tanto las variables denominadas VarTem y varTEM son diferentes. 3.1 Variables Globales Son aquellos valores que se declaran en un programa y pueden ser reconocidos en cualquier otro programa de la calculadora( visible en cualquier lugar de la calculadora). Estos variables se clasifican en los siguientes tipos: 3.1.0.1 Variables de inicio Son las variables que poseen nombres reservados, es decir ya están declarados por defecto dentro de la calculadora. Por ejemplo, las variables integradas A a Z pueden utilizarse para almacenar números reales, Z0 a Z9 pueden utilizarse para almacenar números complejos, M0 a M9 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. Estos variables se clasifican en los siguientes tipos: 1. Reales. 11 3.1 Variables Globales | Capitulo III 2. Complejos. 3. Listas. 4. Matrices. 12 3.1 Variables Globales | Capitulo III 5. Gráficos. 6. Configuración. 7. Sistema. 13 3.1 Variables Globales | Capitulo III 3.1.0.2 Variables de aplicaciones. Son las variables que se utilizan para almacenar datos en las aplicaciones o para cambiar la configuración de la aplicación. Poseen nombres reservados y no pueden ser creados por el usuario. Figura No 3.1: Variables de aplicaciones 3.1.0.3 Variables de usuario Son variables creadas por el usuario. Puede crear variables de usuario en un programa o por 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. 14 3.2 Variables locales. | Capitulo III Figura No 3.2: Variables de usuario 3.2 Variables locales. En un programa puede declarar variables para usar solo dentro de una función específica. Esto se realiza usando la declaración LOCAL. 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 números de punto flotante, enteros, listas, matrices y expresiones simbólicas en una variable con cualquier nombre local. Aunque el sistema le permite almacenar distintos tipos en la misma variable local, esto es una mala práctica de programación y debe ser evitada. Figura No 3.3: Variables locales 3.3 Objetos Son valores asignados en una variable para ser operados dentro de un programa. 15 3.4 Declaración de variables | Capitulo III Cuadro No 3.1 : Tipo de objetos o identificadores de variables Valor asignado Nombre objeto 0 Real 1 Entero 2 Cadena 3 Compleja 4 Matriz 5 Error 6 Lista 8 Función 9 Unidad 3.4 Declaración de variables Expresión combinada. Para declarar variables usamos el comando LOCAL seguido de los identificadores de la variable, esta acción no solo declara la variable (Reserva de espacio en memoria), también le asigna un valor inicial aún si no se indicó ninguno, el valor predeterminado es 0, entonces la variable queda definida como tipo Real. Si estamos trabajando y vemos que de repente nos aparece un 0, es por esta razón. Para evitar ésto, podemos iniciar de buena vez si es necesario, los tipos de datos a asignar. EXPORT HOLAMUNDO() BEGIN LOCAL var1; LOCAL var2:=""; LOCAL var3:=(0,0); LOCAL var4:=[0]; LOCAL var5:=[[0]]; LOCAL var6:={}; LOCAL var7:=)0); END; 16 3.4 Declaración de variables | Capitulo IIIFigura No 3.4: Declaracion de variables 17 CA PÍ TU LO IV INGRESO Y SALIDA DE DATOS 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 La entrada de datos consiste en colocar en la memoria principal datos provenientes desde algún dispositivo de entrada( teclado, disco, etc. ) para que la computadora, de acuerdo a un programa, realice una tarea. La salida de datos consiste en enviar datos ( que, generalmente, son el resultado de un procesamiento) desde la memoria principal hacia un dispositivo de salida ( pantalla, impresora, disco, etc.). Existen Muchas maneras de ingreso de datos en la creación de programas; el mas 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 mas avanzado es con la creación formularios interactivos. 4.1.1 Función Los programas mas simples no necesitan de la creación de formularios. Con la asignación de variables le es suficiente para poder operar y funcionar adecuadamente. Ejemplo : EXPORT RArea(b,h) BEGIN 18 4.1 Ingreso de datos | Capitulo IV LOCAL Area; Area:=b*h; RETURN "Area="+Area; END; (a) Ingreso de datos A (b) Ingreso de datos A 4.1.2 Comando INPUT La forma 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. Al presionar la tecla de menú OK, la variable var se actualiza con el valor introducido y el comando devuelve 1. Si se presiona la tecla de menú CANCEL, la variable no se actualiza y devuelve 0. En las formas más complejas del comando, se utilizan listas para crear un cuadro de diálogo con varios campos. Si las variables son una lista, cada elemento puede ser un nombre de variable o una lista que usa la siguiente sintaxis. 4.1.2.1 Sintaxis Para una entrada: INPUT(V,[title],[label],[help],[valor_reset],[valor_inicial]) Para múltiples entrada: INPUT({V},[{title}],[{label}],[{help}],[{valor_reset}],[{valor_inicial}]) 4.1.2.2 Forma simple EXPORT AREACALC() 19 4.1 Ingreso de datos | Capitulo IV BEGIN LOCAL radio; INPUT(radio, "Radio del circulo","R = ","Enter radius",1); END; Ejecución del programa Figura No 4.1: Formularios Interactivos 4.1.2.3 Forma completa Estructura del comando INPUT: Figura No 4.2: Declaracion de variables Ejecución del programa: 20 4.1 Ingreso de datos | Capitulo IV Figura No 4.3: Declaracion de variables Código del programa: EXPORT RInput BEGIN LOCAL Aa,Bb, Cc,Dd,Ee; INPUT ( { {Aa,[0],{25,25,0}}, {Bb,[1],{25,20,1}}, {Cc,[6],{25,25,2}}, {Dd,{"Esc A","Esc B","Esc C","Esc D"},{25,25,3}}, {Ee,0,{25,25,4}} }, "TITULO DEL FORMULARIO", { "Etiqueta 1: ", "Etiqueta 2: ", "Etiqueta 3 : ", "Etiqueta 4 : ", "Etiqueta 5 : " }, { "Ayuda 1", "Ayuda 2", "Ayuda 3", "Ayuda 4", 21 4.2 Formularios interactivos | Capitulo IV "Ayuda 5" }, {2.5,20,{2,5},2,0}, {2.5,20,{2,5},2,0} ); END; 4.1.3 Pantalla táctil La calculadora HP PRIME permite el ingreso de datos a través de su pantalla táctil, para ello utiliza los comandosMOUSE yWAIT, en capítulos posteriores se desarrollara a detalle este tipo de ingreso. Ejemplo de Ingreso de datos con el teclado. Figura No 4.4: Ingreso de datos a través de la pantalla táctil 4.2 Formularios interactivos Este tipo de ingreso de datos consiste en crear un formulario personalizado al gusto del programador. En capítulos posteriores de desarrollara. Ejemplos: 22 4.3 Otros | Capitulo IV Figura No 4.5: Formularios Interactivos Figura No 4.6: Formularios interactivos 4.3 Otros También se puede personalizar el ingreso de datos a través de matrices, vectores, listas, etc. 4.4 Salida de datos Los datos de salida son datos derivados, es decir, obtenidos a partir de los datos de entrada. Por esta razón, a los datos de salida se les considera más significativos que a los 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 23 4.4 Salida de datos | Capitulo IV 4.4.1 Comando MSGBOX Muestra un cuadro de mensaje con el valor de la expresión o cadena dada. 4.4.1.1 Sintaxis MSGBOX(expresion o cadena [ok_cancel]); Ejemplo: EXPORT AREACALC() BEGIN LOCAL radio,ar; INPUT(radio, "Radio del circulo","R = ","Enter radius",1); ar:=PI*radio^2; MSGBOX("El area del circulo es:" + ar); END; Procesando el programa. (a) Ingreso del valor = 10 (b) Comando MSGBOX 4.4.2 Comando PRINT Imprime el resultado de expresión o cadena en el terminal. El terminal es un mecanismo de visualización de salida de texto que se muestra solo cuando se ejecutan los comandos PRINT. 4.4.2.1 Sintaxis PRINT(expresion o cadena); Ejemplo: 24 4.4 Salida de datos | Capitulo IV EXPORT AREACALC() BEGIN LOCAL radio,ar; INPUT(radio, "Radio del circulo","R = ","Enter radius",1); ar:=PI*radio^2; PRINT("El radio es: " +ar); END; Procesando el programa. (c) Ingreso del valor = 10 (d) Comando PRINT 4.4.3 Ingreso de datos personalizados Existen comandos para salida de datos en la sección Gráficos. En particular, se pueden utilizar los comandos TEXTOUT y TEXTOUTP para salida de texto. Figura No 4.7: Formularios interactivos 4.5 Ejercicios 25 4.5 Ejercicios | Capitulo IV 4.5.1 Ejercicio 1 Figura No 4.8: Formularios interactivos 4.5.2 Ejercicio 2 Figura No 4.9: Formularios interactivos 26 4.5 Ejercicios | Capitulo IV 4.5.3 Ejercicio 3 Figura No 4.10: Formularios interactivos 4.5.4 Ejemplo Nro 4 Realizar un programa donde se calcule el momento de inercia 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. Código del programa. EXPORT MI() BEGIN //1 ->Declaracion de variables. LOCAL a , b, Ix, Iy, Icg; //2 ->Ingreso de datos. INPUT ( { {a ,[0],{ 25,25,0}}, {b ,[0],{ 25,20,1}} }, "MOMENTO DE INERCIA" , { " Base: " , 27 4.5 Ejercicios | Capitulo IV " Altura : " }, { " Ingrese la base del rectangulo (cm)" , " Ingrese la altura del rectangulo (cm)" }, {25,20 }, {25,20 } ); //3 ->Calculo de momentos de inercia. Icg:=b*a^3/12; Ix:= Icg+b*a*(a/2)^2; Iy:= Icg+b*a*(b/2)^2; //4 ->Salida de datos. PRINT(); //->limpiar pantalla PRINT(" CALCULO DE MOMENTO DE INERCIA"); PRINT(""); PRINT("1.−Momento de inercia I_cg"); PRINT(" Icg =" + Icg + " cm"); PRINT("2.−Momento de inercia Ixx"); PRINT(" Ixx =" + Ix + " cm"); PRINT("3.−Momento de inercia Iyy"); PRINT(" Iyy =" + Iy + " cm"); END; Procesando el programa. (a) Ingreso de datos (b) Resultados 28 CA PÍ TU LO V BIFURCACIONES Y BUCLES 5.1 Bifurcación Un condicional en la programación es una sentencia o grupo de sentencias que puede ejecutarse o no en función del valor de una condición. Los tipos más conocidos de condicionales son el SI (IF) y el SEGÚN (case), aunque también podríamos mencionar al lanzamiento de errores como una alternativa más moderna para evitar los cierres inesperados de nuestros programas. 5.1.1 Operadores 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. 1. Expresiones entre paréntesis. Los paréntesis anidados se evalúan de dentro hacia fuera. 2. Raíz n-ésima (sqrt) 3. Potencia, 10n 4. Negación, multiplicación, división y módulo 5. Suma y resta 6. Operadores relacionales(<,>,≤,≥,==, 6=,=) 7. AND y NOT 8. OR y XOR 9. Argumento izquierdo de | (where) 10. Asignación a una variable (:=) 29 5.1 Bifurcación | Capitulo V 5.1.2 Ejemplos 5.1.2.1 Ejemplo 1 Elabore un programa que pida al usuario dos numero e imprima el mayor de ellos. 5.1.2.2 Ejemplo 2 Elabore un programa que pida un numero y si diga si es o no múltiplo de 3. 5.1.2.3 Ejemplo 3 Elabore un programa que pida un numero y si diga si es o no múltiplo de 3. 5.1.2.4 Ejemplo 4 Dado 3 números deducir cual es el central. 5.1.2.5 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 contrario imprimir “No se puede dividir”. 5.1.2.6 Ejemplo 6 Que lea dos temperaturas, imprimir “Hace Frio” si la temperatura es inferior a 15o, en caso contrario imprimir “Hace Calor”. 5.1.3 Comando IF THEN Evalúa prueba. Si prueba es verdadero (distinto de 0), ejecuta comandos. De lo contrario, no sucede nada. 5.1.3.1 Sintaxis IF prueba THEN comandos END; Ejemplo : EXPORT C1(A) BEGIN PRINT(); IF A<10 THEN PRINT("EL NUMERO INGRESADO ES MENOR QUE 10"); END; END; Procesando el programa. 30 5.1 Bifurcación | Capitulo V (a) Código del programa (b) Resultado del programa 5.1.4 Comando IF THEN ELSE Evalúa prueba. Si prueba es verdadero (distinto de 0), ejecuta comandos 1, de lo contrario, ejecuta comandos. 5.1.4.1 Sintaxis IF prueba THEN comandos 1 ELSE comandos 2 END; Ejemplo : EXPORT C1(A) BEGIN PRINT(); IF A<10 THEN PRINT("EL NUMERO INGRESADO ES MENOR QUE 10"); ELSE PRINT("EL NUMERO INGRESADO ES MAYOR QUE 10"); END; END; Procesando el programa. 31 5.1 Bifurcación | Capitulo V (c) Código del programa (d) Resultado del programa 5.1.5 Comando CASE Evalúa prueba1. Si es verdadero, ejecuta comandos1 y cierra el CASE. De lo contrario, evalúa prueba2. Si es verdadero, ejecuta comandos2 y cierra el CASE. Continúa evaluando pruebas hasta que encuentra una verdadera. Si no encuentra ninguna prueba verdadera, ejecuta los comandos predeterminados, si se proporcionan. El comando CASE se limita a 127 bifurcaciones. 5.1.5.1 Sintaxis CASE IF prueba1 THEN comandos1 END; IF prueba2 THEN comandos2 END; ... [DEFAULT comandos] END; EXPORT C1(A) BEGIN PRINT(); CASE IF A<10 THEN PRINT("EL NUMERO INGRESADO ES MENOR QUE 10"); END; IF A=10 THEN 32 5.1 Bifurcación | Capitulo V PRINT("EL NUMERO INGRESADO ES IGUAL A 10"); END; IF A>10 THEN PRINT("EL NUMERO INGRESADO ES MAYOR QUE 10"); END; END; END; Procesando el programa. (e) Código del programa (f) Resultado del programa 5.1.6 Comando IFERR Ejecuta la secuencia de comandos1. Si se produce un error durante la ejecución de comandos1, ejecuta la secuencia de comandos2. 5.1.6.1 Sintaxis IFERR comandos1 THEN comandos2 END; Ejemplo : EXPORT C1(A) BEGIN PRINT(); IFERR PRINT("LA INVERSA DEL NUMERO ES:" + 1/A); THEN PRINT("INGRESE UN NUM DIFERENTE DE CERO"); 33 5.1 Bifurcación | Capitulo V END; END; Procesando el programa. (g) Código del programa (h) Resultado del programa 5.1.7 Comando IFERR ELSE Ejecuta la secuencia de comandos1. Si se produce un error durante la ejecución de commands1, ejecuta la secuencia de commands2. De lo contrario, ejecuta la secuencia de comandos3. 5.1.7.1 Sintaxis IFERR comandos1 THEN comandos2 ELSE comandos3 END; 5.1.8 Ejemplo 01 Cálculo de tipo de flujo en tuberías. 5.1.8.1 Datos: Q = 0.1 m3/s D = 10 pulg. ν = 1.14× 10−6 m2/s 5.1.8.2 Donde: Re = 4Q πνD (5.1) 34 5.2 Bucle | Capitulo V Re < 2100⇒ FLUJO LAMINAR 2100 ≤ Re < 4100⇒ FLUJO EN TRANSICION Re ≥ 4100⇒ FLUJO TUEBULENTO 5.2 Bucle Los ciclos repetitivos también llamados lazos o bucles permiten repetir una operación o secuencia de operaciones en función de ciertas condiciones. Es un segmento de un algoritmo o programa cuyas instrucciones se repiten un número determinado de veces mientras se cumpla una determinada condición. Consta de tres partes: 1. Decisión. 2. Cuerpo del bucle 3. Salida del bucle. Dentro de los ciclos se utilizan contadores y acumuladores, que regulan que el ciclo llegue a su fin. 1. Contador: Es un tipo de variable que incrementa o decrementa su valor en un valor constante. Cuando decimos incrementa estamos sumando. Ejemplo: Veces = Veces + 1 Como se puede observar a la variable "veces" se le está incrementando un valor constante (1); es decir a su contenido le sumas el valor y se vuelve a guardar en la misma variable. Es una variable cuyo valor se incrementa o decremento en una cantidad constante en cada iteración. Puede ser positivo (incrementos, uno e uno) o negativo (decremento, uno en uno). 2. Acumulador: Es una variable que incrementa o decrementa su contenido en cantidades variables. Ejemplo: Nomina = Nomina + sueldo 5.2.1 Ejercicios 5.2.1.1 Ejercicio 1 Que lea un numero N y calcule la suma de los números menores que N. 5.2.1.2 Ejercicio 2 Que lea un numero N y que permita calcular el promedio de los números menores que N. 5.2.1.3 Ejercicio 3 Que lea N números ingresados por teclado y decir si son múltiplo de 5. 5.2.1.4 Ejercicio 4 Que permita mostrar los N primeros números naturales. 35 5.2 Bucle | Capitulo V 5.2.1.5 Ejercicio 5 Que permita mostrar los N primeros números impares. 5.2.1.6 Ejercicio 6 Que permita mostrar la suma de los N primeros números pares. 5.2.1.7 Ejercicio 7 Que calcule la siguiente suma: S = 1 + x1 + x 2 + x 3 ... 5.2.1.8 Ejercicio 8 Que muestre las tablas de multiplicar del numero 9. 5.2.1.9 Ejercicio 9 Que lea N números y que muestre el mayor de ellos. 5.2.1.10 Ejercicio 10 Calcule la suma y el promedio de los números pares menores o iguales que un numero K leído al comienzo. 5.2.1.11 Ejercicio 11 Que calcule el factorial de un número N ingresado por el teclado. 5.2.2 Comando FOR Define la variable var con el valor de inicio y siempre que el valor de esta variable sea inferior o igual a fin, ejecuta la secuencia de comandos, y luego incremente 1 a la variable. Lo resaltaste de este comando es que ejecuta un 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. 5.2.2.1 Sintaxis FOR var FROM inicio TO fin DO comandos END; FOR var:=inicio TO fin DO comandos END; Ejemplo : 36 5.2 Bucle | Capitulo V EXPORT BUCLES(A) BEGIN //1 ->Declaracion de variables. LOCAL Factorial,i; //2 ->Proceso de datos Factorial:=1; FOR i:=1 TO A DO Factorial:=i*Factorial; END; //3 ->Salida de datos PRINT(); PRINT("El factorial de "+A + " es igual a " +Factorial ); END; Procesando el programa. (i) Código del programa (j) Resultado del programa 5.2.3 Comando FOR STEP Define la variable var con el valor inicio y siempre que el valor de esta variable sea inferior o igual a fin ejecuta la secuencia de comandos y luego suma incremento a var. 5.2.3.1 Sintaxis FOR var FROM inicio TO fin [STEP incremento] DO comandos END; FOR var:=inicio TO fin [STEP incremento] DO 37 5.2 Bucle | Capitulo V comandos END; Ejemplo : EXPORT BUCLES(A,b) BEGIN //1 ->Declaracion de variables. LOCAL Mult,i; //2 ->Proceso de datos Mult:=1; FOR i:=1 TO A STEP b DO Mult:=i*Mult; END; //3 ->Salida de datos PRINT(); PRINT("Producto de los primeros "+ A +"numeros tomados de" +b+ "en"+ ←↩ b+ " es igual a " +Mult ); END; Procesando el programa. (k) Código del programa (l) Resultado del programa 5.2.4 Comando FOR DOWN Define la variable var con el valor inicio y siempre que el valor de esta variable sea mayor o igual a fin, ejecuta la secuencia de comandos, y luego resta 1 (decremento) a var. 5.2.4.1 Sintaxis 38 5.2 Bucle | Capitulo V FOR var FROM inico DOWNTO fin DO comandos END; FOR var:=inico DOWNTO fin DO comandos END; Ejemplo : EXPORT BUCLES(A,b) BEGIN //1 ->Declaracion de variables. LOCAL i; //2 ->Proceso de datos y salida de datos PRINT(); FOR i:=A DOWNTO b DO PRINT("Numero " + i ); END; END; Procesando el programa. (m) Código del programa (n) Resultado del programa 5.2.5 Comando FORSTEP DOWN Define la variable var con el valor inicio y siempre que el valor de esta variable sea mayor o igual a fin ejecuta la secuencia de comandos y luego resta decremento a var. 5.2.5.1 Sintaxis 39 5.2 Bucle | Capitulo V FOR var FROM inicio DOWNTO fin [STEP incremento] DO comandos END; 5.2.6 Comando WHILE Evalúa prueba. Si el resultado es verdadero (distinto de 0), ejecuta los comandos y repite. Es decir, repite mientras el test sea verdadero. 5.2.6.1 Sintaxis WHILE prueba DO comandos END; Ejemplo : EXPORT BUCLES(A) BEGIN //1 ->Declaracion de variables. LOCAL Factorial,i; //2 ->Proceso de datos Factorial:=1; i:=1; WHILE i<=A DO Factorial:=i*Factorial; i:=i+1; END; //3 ->Salida de datos PRINT(); PRINT("El factorial de "+A + " es igual a " +Factorial ); END; Procesando el programa. 40 5.2 Bucle | Capitulo V (o) Código del programa (p) Resultado del programa 5.2.7 Comando REPEAT Repite la secuencia de comandos hasta que el valor de test sea verdadero (distinto de 0). Es decir, repite mientras el test sea falso. 5.2.7.1 Sintaxis REPEAT comandos UNTIL prueba ; EXPORT BUCLES(A) BEGIN //1 ->Declaracion de variables. LOCAL Factorial,i; //2 ->Proceso de datos Factorial:=1; i:=1; REPEAT i:=i+1; Factorial:=i*Factorial; UNTIL i=A; //3 ->Salida de datos PRINT(); PRINT("El factorial de "+A + " es igual a " +Factorial ); END; 41 5.2 Bucle | Capitulo V Procesando el programa. (q) Código del programa (r) Resultado del programa 5.2.8 Comando BREAK Sale del comando de bucles rompiendo n niveles de bucle. La ejecución retoma en la primera instrucción después del bucle. Sin un argumento, sale desde un único bucle. 5.2.8.1 Sintaxis BREAK(n); 5.2.9 Ejemplos 5.2.9.1 Ejemplo 1 Calcule la suma de los números ingresados en una lista. EXPORT LISTAS() BEGIN //1 ->Declaracion de variables. LOCAL List:={},i,n,Suma; //2 ->Ingreso de datos. INPUT ( { {List ,[6],{25,50,3}} }, "Suma" , { " Numeros: " }, 42 5.2 Bucle | Capitulo V { "Ingrese una lista de numeros" }, {{1,2,3,4,5}}, {{1,2,3,4,5}} ); //3 ->Calculo del area del poligono. n:=length(List); //-> Numero de elemntos de la lista FOR i:=1 TO n DO Suma:=Suma+List(i); END; //4 ->Salida de datos. PRINT(); //-> Limpia la pantalla PRINT("La suma de los numeros es:" +Suma); END; 5.2.9.2 Ejemplo 2 Calcule el área de cualquier polígono ingresando sus coordenadas. 43 CA PÍ TU LO VI CADENAS 6.1 Definición Una cadena es una secuencia de carácteres entre comillas (""). Para poner comillas dobles en una cadena, use dos comillas consecutivas. Las cadenas se pueden utilizar en los diferentes tipos de salida de datos en los programas. 1 Salida de datos con el comando PRINT. EXPORT CPRINT() BEGIN LOCAL Variable; PRINT(); PRINT("La Variable A = " + Variable + "metros"); END; 2 Salida de datos con el comando TEXTOUT. EXPORT CTEXTOUT() BEGIN LOCAL Variable:=10; RECT(); TEXTOUT_P("La Variable A = " + Variable + " metros", 10, 10 ,1); WAIT; 44 6.2 ASC | Capitulo VI END; 3 Salida de datos con el comando MSGBOX. EXPORT CMSGBOX() BEGIN LOCAL Variable:=10; MSGBOX("La Variable A = " + Variable + " metros"); END; 6.2 ASC Devuelve una lista que contiene los códigos ASCII de cadena. Sintaxis: ASC(cadena) Por ejemplo: »> ASC("AB") devuelve [65,66] 6.3 LOWER Convierte caracteres en mayúsculas a una cadena en minúsculas. Sintaxis: LOWER(cadena) Ejemplos: »> LOWER("ABC") devuelve "abc" 6.4 CHAR Devuelve la cadena correspondiente a los códigos de carácter en vector o el código único del entero. Sintaxis 1: CHAR(cadena) Sintaxis 2: CHAR(entero) Ejemplos: »> CHAR([82,77,72]) devuelve "RMH" 45 6.5 DIM | Capitulo VI 6.5 DIM Devuelve a la cantidad de caracteres en cadena. Sintaxis: DIM(cadena) Ejemplos: »> DIM("12345") devuelve 5 »> DIM( "" "" )devuelve 1 »> DIM("n") devuelve 1 (Observe el uso de dos comillas dobles y la secuencia de escape). 6.6 STRING Evalúa la expresión y devuelve el resultado como una cadena. Los parámetros adicionales especifican cómo se muestran los números. Si se especifica el Modo, debe ser: Cuadro No 6.1 : Tipo de objetos o identificadores de variables Valor Asignado Nombre del Objeto 0 Utilice la configuración actual 1 Estándar 2 Fijo 3 Científico 4 Ingeniería 5 Flotante 6 Redondeo 7 Fracción La precisión es -1 para la configuración actual o de 0 a 12. Sintaxis: STRING(Expresión, [Modo], [Precisión]) 46 CA PÍ TU LO VII LISTAS Y MATRICES 7.1 Array Un array es una colección de datos del mismo tipo, que se almacena en posiciones consec- utivas de memoria y reciben un nombre común. Para referirse a un determinado elemento de un array se debera utilizar un índice, que especifique su posicion relativa en el array. Los array podran ser. 1 Unidimensionales −→ Vectores. 2 Bidimensionales −→ Matrices o tablas. 3 Multidimensionales con 3 o mas dimensiones. Figura No 7.1: Tipos de array 47 7.2 Listas | Capitulo VII 7.2 Listas Una lista consta de números reales o complejos separados por comas, expresiones o matrices, todos entre llaves. Por ejemplo, una lista puede contener una secuencia de números reales como 1,2,3. Las listas representan una forma práctica de agrupar objetos relacionados. Puede realizar operaciones realizadas con las listas en Inicio y en los propios programas. Hay diez variables de lista disponibles, denominadas de L0 a L9. Puede utilizarlas en cálculos o expresiones en Inicio o en un programa. Recupere el nombre de la lista del menú Vars. ( ) o escriba su nombre con el teclado. 7.2.1 Creación de listas Calcula una secuencia de elementos para una nueva lista mediante la sintaxis: Sintaxis: MAKELIST(expresión,[variable],[principio],[final],[incremento]) Ejemplos: »> MAKELIST(A,A,1,5,1) devuelve {1,2,3,4,5} 7.2.2 SORT Ordena los elementos de la lista en orden ascendente. Sintaxis: SORT(lista) Ejemplos: »> SORT({2,5,3}) devuelve {2,3,5} 7.2.3 CONCAT Concatena dos listas para formar una nueva lista. Sintaxis: CONCAT(lista1,lista2) Ejemplos: »> CONCAT({1,2,3},{4}) devuelve {1,2,3,4}. 7.2.4 Posición 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 especifcado, devuelve un valor 0. 48 7.3 Matrices | Capitulo VII Sintaxis: POS(lista, elemento) Ejemplos 1: »> POS({3,7,12,19},12) devuelve 3 Ejemplos 2 - lenguaje de programción HP PPL: »> A:={3,7,12,19}; // Lista A declarada. »> b:=A(3); obtenemos b=12 7.2.5 Tamaño Devuelve el número de elementos de una lista o una lista que contiene las dimensiones de un vector o matriz. Sintaxis 1: SIZE(lista) Sintaxis 2: SIZE(Vector) Sintaxis 3: SIZE(Matriz) Ejemplos: »> SIZE({1,2,3}) devuelve 3 »> SIZE([[1 2 3], [4 5 6]]) devuelve {2, 3} 7.2.6 EDITLIST Inicia el Editor de lista cargando listvar y muestra la lista especifcada. Si se utiliza en programación, retorna al programa cuando el usuario pulsa . Sintaxis: EDITLIST(listvar) Ejemplos: »> EDITLIST(L1) devuelve lista L1 editable. 7.3 Matrices Algunos comandos de matriz toman como su argumento el nombre de la variable de matriz sobre la cual se aplica el comando. Los nombres válidos son las variables globales M0–M9 o una variable local que contenga una matriz. También puede introducir una matriz directamente como un argumento para el comando. 49 7.3 Matrices | Capitulo VII 7.3.1 ADDCOL Inserta los valores en vector en una nueva columna insertada antes de número-columna en la matriz especificada. 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) 7.3.2 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. 7.3.3 DELCOL Elimina la columnanúmero-columna de la matriz. Sintaxis: DELCOL(nombre, número-columna) 7.3.4 DELROW Elimina la fila número-fila de la matriz. Sintaxis: DELROW(nombre,número-fila) 7.3.5 EDITMAT Inicia el Editor de matriz y muestra la matriz especificada. Si se utiliza en programación, vuelve al programa cuando el usuario presiona. A pesar de que este comando devuelve la matriz que ha sido editada, EDITMAT no puede ser utilizado como un argumento en otros comandos de matriz. Sintaxis: EDITMAT(matvar) Ejemplos: »> EDITMAT(M1) devuelve lista M1 editable. 7.3.6 REDIM Redimensiona la matriz o vector especificado a 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. 50 7.3 Matrices | Capitulo VII Sintaxis: REDIM(nombre, tamaño) 7.3.7 REPLACE Reemplaza parte de una matriz o vector almacenado en matriz con un objeto comenzando por la posición de inicio. El inicio para una matriz es una lista que contiene dos 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. Ejemplo, »> REPLACE("123456", 2, "GRM") devuelve "1GRM56" 7.3.8 SCALE Multiplica el número− fila de la matriz especificada por valor. Sintaxis: SCALE(nombre, valor, número-fila) 7.3.9 SCALEADD Multiplica fila1 de la matriz (nombre) por valor y, a continuación, añade este resultado a fila2 de la matriz (nombre) y sustituye fila1 por el resultado. Sintaxis: SCALEADD(nombre, valor, fila1, fila2) 7.3.10 SUB Extrae un subobjeto (una parte de una lista, matriz o 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) 7.3.11 SWAPCOL Intercambia columna1 y columna2 de la matriz especificada (nombre). Sintaxis: SWAPCOL(nombre, columna1, columna2) 7.3.12 SWAPROW Intercambia fila1 y fila2 en la matriz especificada (nombre). Sintaxis: SWAPROW(nombre, fila1, fila2) 51 7.4 Comandos especiales | Capitulo VII 7.3.13 Posición Devuelve la posición de un elemento de la matriz dada. Ejemplos 2 - lenguaje de programción HP PPL: »> M2:=[[10 20 30], [15 25 35]]; // Matriz M2 declarada. »> b:=M2(2,3); obtenemos b=35 7.4 Comandos especiales 7.4.1 GETKEY Devuelve el ID(identifcador) de la primera tecla en el búfer del teclado, o -1 si no se pulsó ninguna tecla desde la última llamada a GETKEY. Los 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. Figura No 7.2: Valores de teclas obtenidos con el comando GETKEY GETKEY Sintaxis: GETKEY Devuelve el ID (identificador) de la primera tecla en el búfer del teclado, o –1 si no se pulsó ninguna tecla desde la última llamada a GETKEY. Los 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. INPUT Sintaxis: INPUT(var,[“title”], [“label”], [“help”], [reset_value], [initial_value]) Sintaxis: INPUT({vars},[“título”], [{“etiquetas”}], [{“ayuda”}], [{restablecer_valores}], [{valores_iniciales}]) 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. El usuario puede ingresar un valor en el campo etiquetado. Si el usuario presiona la tecla de menú OK, la variable var se actualiza con el valor introducido y el comando devuelve 1. Si el usuario presiona la tecla de menú CANCEL, la variable no se actualiza y devuelve 0. En las formas más complejas del comando, se utilizan listas para crear un cuadro 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. Comandos de programa 599 7.4.2 ISKEYDOWN Devuelve true(verdadero) (distinto de cero) si la tecla cuyo id-tecla se proporciona está presionada actualmente y falso (0) si no es así. Sintaxis: ISKEYDOWN(id-tecla) 52 7.5 Ejemplos | Capitulo VII 7.5 Ejemplos Ejemplo 1 Desarrolle una funcion que encuentre el máximo y mínimo valor en una lista de listas de numeros naturales. Solución: Codigo Fuente : EXPORT MaxLista() BEGIN // 1->Declarando variables LOCAL Lista:={2,3,15,7,10},i,n,mayor,menor; // 2->Ingreso de datos INPUT ( { {Lista,[6],{25,70,0}} }, "MAX VALOR LISTA", { "Lista: " }, { "Ingrese una lista {a,b,c,...,z}" }, {Lista}, {Lista} ); // 3->Proceso del programa n:=SIZE(Lista); mayor:=Lista(1); menor:=Lista(1); FOR i:=1 TO n DO IF Lista(i)>mayor THEN mayor:=Lista(i) END; IF Lista(i)<menor THEN menor:=Lista(i) 53 7.5 Ejemplos | Capitulo VII END; END; // 4->Proceso del programa MSGBOX("El Maximo valor de la lista es: " + mayor + " y el minimo es: " + ←↩ menor ); END; Procesando el codigo se obtiene : (a) Ingreso de datos (b) Resultados Ejemplo 2 Calcular el promedio de n valores almacenados en un vector. determinar 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. Ejemplo 3 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. 54 CA PÍ TU LO VIII Objetos Gráficos Existen 10 variables de gráficos integradas en HP Prime llamadas G0–G9. G0 es siempre el gráfico de la pantalla actual. El G1 al G9 pueden utilizarse para almacenar los objetos gráficos temporales (abreviados GROBs) 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 las variables de gráficos. Trece de ellas trabajan con coordenadas cartesianas utilizando el plano cartesiano definido en la aplicación actual por las variables Xmin, Xmax, Ymin e Ymax. »> RECT(); »> ARC(G0, 0, 0, 100); »> WAIT(1); Las trece restantes trabajan con coordenadas de píxel donde el píxel 0,0 es el píxel superior izquierdo de la GROB y 320, 240 es el inferior derecho. Las funciones de este segundo 55 8.1 Comando de ingreso de datos | Capitulo VIII conjunto tienen un sufijo -P para el nombre de la función. »> RECT(); »> ARC_P(G0, 100, 100, 100); »> WAIT(1); 8.1 Comando de ingreso de datos 8.1.1 MOUSE Devuelve dos listas que describen la ubicación actual de cada puntero posible (listas vacías si no se utilizan punteros). La salida es {x, y, z original, y original, tipo } donde tipo es 0 (para nuevo), 1 (para completado), 2 (para arrastrar), 3 (para alargar), 4 (para girar) y 5 (para un clic largo). Sintaxis: MOUSE(índice) EXPORT CMOUSE() BEGIN LOCAL tocar; REPEAT RECT(); tocar:=B->R(MOUSE()); WAIT(-1); IF SIZE(tocar(1))=0 THEN MSGBOX(tocar); END; UNTIL ISKEYDOWN(4); END; 8.1.2 WAIT Pausa la ejecución del programa durante n segundos. Con ningún argumento o con n = 0, pausa la ejecución durante un minuto. 56 8.1 Comando de ingreso de datos | Capitulo VIII Sintaxis: WAIT(n) Si n=-1, pausa la ejecución hasta que se pulsa una tecla o exista una actividad del mouse, devolviendo el código de la tecla o una lista de la forma {tipo, x, y, dx, dy }. Donde: = x, y : : eslaposicióndeleventotipo : eseltipodeactividad Cuadro No 8.1 : Tipo de objetos o identificadores de variables Tipo Descripció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 EXPORT Programa() BEGIN LOCAL SALIR,accion; RECT(); REPEAT RECT(); accion:=B->R(WAIT(-1)); IF TYPE(accion)==6 THEN // Tipo de argumento Lista. IF accion(1)==1 THEN MSGBOX("Movimientodel mouse: "+accion(1)); END; IF accion(1)==3 THEN MSGBOX("Clic del mouse: "+accion(1)); END; IF accion(1)==7 THEN MSGBOX("Clic largo del mouse: "+accion(1)); END; END; 57 8.2 Comandos | Capitulo VIII IF TYPE(accion)==0 THEN // Tipo de argumento Real. MSGBOX(accion); SALIR:=accion; END; UNTIL SALIR==4; END; (a) Resultados (b) Resultados (c) Resultados 8.2 Comandos 8.2.1 DRAWMENU Dibuja un menú de seis botes en la parte inferior de la pantalla, con etiquetas cadena1, cadena2,..., cadena6. Sintaxis: DRAWMENU(cadena1, cadena2, . . . , cadena6). EXPORT MENU() BEGIN RECT(); DRAWMENU("Menu 1","Menu 2","Menu 3","Menu 4","Menu 5","Menu 6"); WAIT(-1); END; 8.2.2 FREEZE Pausa la ejecución de un programa hasta que se pulse una tecla. Esto evita que la pantalla se redibuje después de finalizada la ejecución del programa, dejando la visualización modificada en la pantalla para que el usuario la vea. Sintaxis: FREEZE EXPORT () BEGIN RECT(); DRAWMENU("Menu 1","Menu 2","Menu 3","Menu 4","Menu 5","Menu 6"); 58 8.2 Comandos | Capitulo VIII FREEZE; END; 8.2.3 RGB La descripción RGB (del inglés Red, Green, Blue; «rojo, verde y azul») de un color hace referencia a su composición de la intensidad de los colores primarios con que se forma: el rojo, el verde y el azul. Este un modelo de color basado en lo q se conoce como síntesis aditiva, con lo que es posible representar a un color por la mezcla por adición de los tres colores luz primarios. Figura No 8.1: Modelo aditivo de colores rojo, verde, azul. Para indicar con qué proporción se mezcla cada color, le asignamos un valor a cada uno de los colores primarios, así, por ejemplo, el valor 0 significa que no interviene en la mezcla, y en la medida que ese valor aumenta, aportará más intensidad a la mezcla. Devuelve un número entero que puede utilizarse como el parámetro 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). Sintaxis: RGB(R, G, B, [A]) EXPORT CRGB() BEGIN RECT(RGB(0,0,255,0.5)); DRAWMENU("Menu 1","Menu 2","Menu 3","Menu 4","Menu 5","Menu 6"); FREEZE; END; 8.2.4 LINE P El formato básico de LINE P ó LINE dibuja una línea entre las coordenadas píxel ó cartesiano del gráfico utilizando el color especificado. Sintaxis: LINE P([G], x1, y1, x2, y2, [color]) 59 8.2 Comandos | Capitulo VIII EXPORT () BEGIN END; 8.2.5 RECT P Dibuja un rectángulo en 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: RECT P([G, x1, y1, x2, y2, colorborde, colorrelleno]) EXPORT () BEGIN END; 8.2.6 TEXTOUT P Dibuja un texto utilizando un color en el gráfico G en la posición x, y usando un tamaño de fuente. 0: fuente actual seleccionada en la pantalla Configuración de Inicio, 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 Sintaxis: TEXTOUT P(texto [ ,G], x, y [ ,fuente, c1, ancho, c2]) EXPORT () BEGIN END; 8.2.7 BLIT P Copia la región de srcGRB entre el punto (sx1, sy1) al punto (sx2, sy2) en la región de trgtGRB entre los puntos (dx1, dy1) y (dx2, dy2). Sintaxis: BLIT P([trgtGRB, dx1, dy1, dx2, dy2], [srcGRB, sx1, sy1, sx2, sy2,c]) 60 8.3 Ejemplo | Capitulo VIII EXPORT () BEGIN END; 8.3 Ejemplo Ejemplo 1 Desarrolle una aplicacion que calcule el error de cierre de un poligono en un levantamiento topografico. Solución: Estructura de programacion general. //------------------------------------------------ // VARIABLES GLOBALES //------------------------------------------------ n:=3; dAz:=1;Azz:={84,50,00};dC:=1;CE:=100;CN:=100;Az:=0; Ang:={};GMS:=[[0]],Lad:=[0];SUMAng:=0; //------------------------------------------------ // VARIABLES COLORES //------------------------------------------------ White:=RGB(255,255,255); Plomo:=RGB(192,192,192); //------------------------------------------------ // FUNCIONES DECLARADAS //------------------------------------------------ FInDat(); FMOUSEP(); //------------------------------------------------ // NOMBRE : INICIO PROGRAMA POLIGONAL // DESCRIPCION : Inicio del programa //------------------------------------------------ EXPORT Poligonal() BEGIN END; //------------------------------------------------ 61 8.3 Ejemplo | Capitulo VIII Creacion de la pantalla principal. EXPORT Poligonal() BEGIN LOCAL accion,cx,cy,salir; REPEAT RECT_P(); DRAWMENU("Datos","Proceso","Resultados","","","Salir"); accion:=B->R(WAIT(-1)); IF TYPE(accion)==6 THEN IF accion(1)==3 THEN cx:=accion(2); cy:=accion(3); IF cy>=219 AND cy<=240 THEN CASE IF cx>=0 AND cx<=51 THEN //Accion del mouse END; IF cx>=53 AND cx<=104 THEN //Accion del mouse END; IF cx>=106 AND cx<=157 THEN //Accion del mouse END; IF cx>=265>= AND cx<=319 THEN salir:=4; END; END; END; END; END; UNTIL salir==4; END; Código de los formularios de ingreso(INPUT). FInDat() BEGIN //Formulario de ingreso 1 INPUT 62 8.3 Ejemplo | Capitulo VIII ( { {n,[0],{40,20,3}} }, "NUMERO DE LADOS", {"n: "}, {"Ingrese el numero de lados"}, {n},{n} ); //Declarando variables locales LOCAL LA,LB,j,A,B,C; LA:={}; LB:={}; //Proceso para concatenar los vertices del poligono FOR j:=1 TO n DO A:=char(64+j); IF j==n THEN B:=char(65); ELSE B:=char(65+j); END; C:=A+B; LA:=CONCAT(LA,C); LB:=CONCAT(LB,A); END; //Formulario de ingreso 2 INPUT ( { {dAz,LA,{20,15,1}}, {Az,[6],{60,35,1}}, {dC,LB,{40,15,3}}, {CE,[0],{20,20,5}}, {CN,[0],{60,20,5}} }, "INGRESO DEL AZIMUT Y CORDENADAS", { "Tramo:","Azimut:","Punto:","Coor E:","Coor N:" }, { 63 8.3 Ejemplo | Capitulo VIII "Tramo Azimut conocido","Ingrese Azimut {G,M,S}","Punto de ←↩ coordenada conocida","Ingrese cordenadas este","Ingrese cordenadas ←↩ norte" }, {dAz,Az,dC,CE,CN}, {dAz,Az,dC,CE,CN} ); //Tabla increso de datos Angulos. Az:=Azz(1)+Azz(1)/60+Azz(1)/3600; GMS:=MAKEMAT(0,n,3); LB:=CONCAT(LB," "); GMS:=EDITMAT(GMS,{"Introduzca datos",LB,{"G","M","S",""}}); FOR i:=1 TO n DO GMS(i,1)+GMS(i,2)/60+GMS(i,3)/3600»Ang(i); END; //Suma de todos los angulos cambiar signo (Sum) SUMAng:=(Sum)LIST(Ang); //Tabla ingreso de datos Lados. Lad:=MAKEMAT(0,n); LA:=CONCAT(LA," "); EDITMAT(Lad,{"Introduzca dist. de los lados",LA,{"Dist. (m)",""}}); END; 64 CA PÍ TU LO IX Procedimientos y Subrutinas 65 Índice General Índice de Cuadros Índice de Figuras I CLASES I INTRODUCCIÓN Conociendo la Calculadora Programación Programa Problemas y algoritmos Ejemplo de algoritmos PROGRAMACIÓN EN HP PPL Estructura de comandos Comentarios Catalogo de programas Creación de un nuevo programa Desde la HP PRIME Desde el software de conectividad de la HP PRIME. VARIABLES Y OBJETOS Variables Globales Variables locales. Objetos Declaración de variables INGRESO Y SALIDA DE DATOS Ingreso de datos Función Comando INPUT Pantalla táctil Formularios interactivos Otros Salida de datos Comando MSGBOX Comando PRINT Ingreso de datos personalizados Ejercicios Ejercicio 1 Ejercicio 2 Ejercicio 3 Ejemplo Nro 4 BIFURCACIONES Y BUCLES Bifurcación Operadores Ejemplos Comando IF THEN Comando IF THEN ELSE Comando CASE Comando IFERR Comando IFERR ELSE Ejemplo 01 Bucle Ejercicios Comando FOR Comando FOR STEP Comando FOR DOWN Comando FOR STEP DOWN Comando WHILE Comando REPEAT Comando BREAK Ejemplos CADENAS Definición ASC LOWER CHAR DIM STRING LISTAS Y MATRICES Array Listas Creación de listas SORT CONCAT Posición Tamaño EDITLIST Matrices ADDCOL ADDROW DELCOL DELROW EDITMAT REDIM REPLACE SCALE SCALEADD SUB SWAPCOL SWAPROW Posición Comandos especiales GETKEY ISKEYDOWN Ejemplos Objetos Gráficos Comando de ingreso de datos MOUSE WAIT Comandos DRAWMENU FREEZE RGB LINE P RECT P TEXTOUT P BLIT P Ejemplo Procedimientos y Subrutinas
Compartir