You are on page 1of 202

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.

html

Bienvenido a la ayuda de Pauscal
Seleccione un tema: Introducción Manual del programador Referencia del lenguaje Pauscal en la Web

Copyright © 2004 - 2005 Paul Guerra. Todos los derechos reservados

Page 1

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html

Introducción
Bienvenido a Pauscal, el sistema de desarrollo para los entornos Microsoft Windows de 32 bits. Permite generar aplicaciones de cualquier tipo por medio de un entorno fácil de utilizar. Está pensado para aquellos que deseen iniciarse en la programación estructurada, o para aquellos que ya poseen conociemientos en el tema y desean adentrarse un poco más. Posee una característica muy especial: su sintaxis está basada en el idioma español. Esto facilita la tarea de recordar los comandos e instrucciones que componen el lenguaje de Pauscal. Cuenta con un compilador que genera código nativo, lo que permite acelerar sus aplicaciones ya que las mismas se ejecutan diréctamente por el procesador.

Novedades en Pauscal 3.1 Conceptos básicos

Volver

Page 2

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html

Novedades en Pauscal 3.1

Código nativo: Ahora el compilador genera código nativo que es ejecutado directamente por el procesador. Esto incrementa considerablemente la velocidad de sus programas. Estructuras de datos: Las estructuras de datos han sido implementadas en Pauscal. Permiten un control más flexible y ordenado de su código. Matrices: Ahora es posible utilizar matrices en sus programas. No sólo matrices estáticas, sino también matrices dinámicas. Las matrices dinámicas son una de las características que hacen de Pauscal un lenguaje muy flexible a la hora de administrar correctamente la memoria. Clases y Objetos: Una de las características más importantes de esta nueva versión de Pauscal es la posibilidad de crear clases y objetos en sus programas. Esto permite simplificar el código. Control Estructurado de Excepciones: Ahora se pueden proteger las secciones importantes de sus programas por medio del uso del denominado Control Estructurado de Excepciones.

Volver

Page 3

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html

Conceptos básicos
Pauscal es un lenguaje que permite realizar varias tareas básicas y otras no tan básicas. Su sintaxis es fácil de comprender y es similar a otros lenguajes conocidos. Si ya sabe programar, no le costará aprender Pauscal. Si aun no sabe programar, aprender Pauscal le servirá para comprender otros lenguajes más complejos.

Convenciones de documentos La interfaz de Pauscal Su primera aplicación Fundamentos de la programación en Pauscal

Volver

Page 4

html Convenciones de documentos Esta documentación utiliza las siguientes convenciones tipográficas: Ejemplo Var Num:Entero Descripción Esta fuente y color se utilizan para el código.processtext.ABC Amber CHM Converter Trial version. las palabras que el usuario debe escribir aparecen en negrita.com/abcchm. los elementos que aparecen entre corchetes son opcionales. Por ejemplo. En la sintaxis. http://www. Alt+F1 significa mantener presionada la tecla Alt mientras se presiona la tecla F1. En la sintaxis y el texto. En la sintaxis. Redim variable [listavariables] {HastaQue | PorSiempre} ENTRAR ALT+F1 Volver Page 5 . las llaves y la barra vertical indican una elección entre dos o más elementos. En la sintaxis. como ENTRAR y CTRL+R. a menos que todos estén entre corchetes. Las letras en mayúsculas se utilizan para los nombres de teclas y las secuencias de teclas. las letras en cursiva pueden indicar marcadores de posición para la información que proporciona. Un signo más (+) entre nombres de teclas indica una combinación de teclas. Se debe elegir uno de los elementos.

processtext. El editor de Pauscal Depurador Volver Page 6 .com/abcchm.ABC Amber CHM Converter Trial version. http://www.html La interfaz de Pauscal En esta sección encontrará información sobre el editor de Pauscal y su depurador.

Botón 'Cortar'. Botón 'Abrir'. http://www.com/abcchm.html El editor de Pauscal Cuando Ud. Abre un programa o una biblioteca previamente guardada. Mueve el texto seleccionado al portapapeles de Windows.ABC Amber CHM Converter Trial version. se le preguntará dónde lo desea guardar. Si el mismo no fue guardado anteriormente.processtext. Page 7 . Botón 'Guardar'. Guarda los cambios a un programa o biblioteca almacenado en el disco. Crea un nuevo programa. abre Pauscal. aparecerá una ventana como la siguiente: Composición visual del entorno de Pauscal Botón 'Nuevo'. o una nueva biblioteca.

[Prog] indica que es un programa. la cantidad de líneas que posee. Botón 'Compilar'.html Botón 'Copiar'. Inserta el contenido del portapapeles de Windows en el código. Botón 'Verificar Sintaxis'. Ejecuta el programa actual en el depurador. Información sobre el código fuente. Muestra los mensajes que generó el compilador al generar el ejecutable. No es posible depurar una biblioteca. Indica la posición actual del cursor dentro del código fuente. y [Bib] que es una biblioteca. Verifica que no haya errores en el código fuente. Muestra los programas y bibliotecas abiertos.processtext. Botón 'Depurar'. http://www. Ventana Configuración Volver Page 8 . No es posible ejecutar una biblioteca.ABC Amber CHM Converter Trial version.com/abcchm. y si ha sido modificado desde la última vez que guardó. Ejecuta el programa actual. Botón 'Ejecutar'. Transforma el código fuente en un archivo ejecutable. Copia el texto seleccionado al portapapeles de Windows. Botón 'Pegar'. Barra de archivos abiertos. Mensajes del compilador.

Si está activa esta opción. Pauscal siempre busca en la carpeta \Lib en el directorio de Pauscal. Generar un controlador estructurado. y el botón Quitar saca la carpeta seleccionada de la lista. Línea de comando adicional: Aquí puede agregar los comandos que desea pasarle al compilador de Pauscal. objetos y estructuras que tengan Page 9 . como así también algunas opciones del compilador. Buscar archivos de importación en: Esta lista indica las carpetas donde Pauscal debe buscar los archivos de importación.. El botón Agregar agrega una nueva carpeta a la lista. http://www.. matrices dinámicas.html Ventana Configuración En Herramientas/Configuración. el compilador genera un controlador estructurado de excepciones (ver Introducción al control estructurado de excepciones) en cada procedimiento que posea variables que necesiten ser liberadas.processtext.com/abcchm. Esta carpeta no puede quitarse.ABC Amber CHM Converter Trial version. como por ejemplo cadenas. En la mayoría de los casos se deja en blanco. Aquí se configuran varios aspectos del editor de Pauscal... se puede encontrar la siguiente ventana de configuración.

. Si está opción está activa. Comprobar los límites de las matrices Si está activa esta opción. En caso de que ocurra una excepción.html como miembro algunos de estos elementos. si esta opción esta activa. Esta opción sólo se tiene en cuenta al generar el ejecutable.. el compilador siempre produce código que comprueba los límites de las matrices. Esto es importante en el caso de objetos que poseen un destructor. Volver Page 10 .. aparecerá un mensaje informando esta situación y que al guardar el archivo se transformará al nuevo formato. el compilador siempre genera un controlador estructurado de excepciones en los procedimientos.ABC Amber CHM Converter Trial version. Asociar las extensiones.bdp con Pauscal. se asocian las extensiones . pero no ocurrirá una excepción si intenta leer o escribir más allá del límite de la matriz. Al depurar. Desactivar esta opción acelera el trabajo con matrices. las variables serán liberadas. Al activar esta opción. Al depurar..pdp y .processtext. este mensaje no aparece. Esta opción sólo se tiene en cuenta al generar el ejecutable.com/abcchm. el compilador produce código que verifica cada vez que se accede a un elemento de una matriz si el subíndice está dentro de los límites válidos de esa matriz. http://www. Esto permite que se puedan abrir los programas y bibliotecas de Pauscal haciéndoles doble clic en el Explorador de Windows. No advertir al cargar un archivo. Si esta opción está desactiva y se carga un archivo con formato antiguo en el editor de Pauscal.

se haga clic en el botón "Pausa". vea Interrumpir la ejecución.ABC Amber CHM Converter Trial version. Cuando se establece un punto de interrupción. Para obtener más información. puede examinar las variables locales u otros datos relevantes a través de las inspecciones. o hasta que se termine. no se agrega una llamada funcional al código fuente. es poco probable que el establecimiento de un punto de interrupción cambie el comportamiento del programa que se intenta depurar. Con el depurador puede examinar el contenido de las variables del programa sin tener que insertar llamadas adicionales a procedimientos que lo muestren. Botón "Paso a paso" (F7) Cada vez que se hace clic en este botón el programa ejecuta una línea de código.html Depurador Al hacer clic en el botón Depurar se inicia el depurador. http://www. Cuando el programa esté en pausa (modo de interrupción). El depurador tiene el siguiente aspecto: Botón "Ejecutar" (F5) Al hacer clic en este botón el programa se ejecuta hasta que se encuentre un punto de interrupción. Es útil para ejecutar una instrucción y ver qué efectos produce. (Ver Ejecutar instrucciones paso a paso) Page 11 . Por ello.processtext.com/abcchm. Puede insertar un punto de interrupción en el código para detener la ejecución en el lugar de interés.

Debe ser una línea de código ejecutable.. Si el punto de ejecución del programa está fuera del código visible. (Ver Ejecutar instrucciones paso a paso) Botón "Interrupción" (F2) Establece un punto de interrupción en la línea de código seleccionada.ABC Amber CHM Converter Trial version. el punto de ejecución se moverá a la primera instrucción de la línea.." Muestra información sobre el depurador.processtext. y cierra el depurador. ni tampoco de la mayoría de las estructuras de control. Al mover el punto de ejecución no se puede entrar o salir de un procedimiento. Botón "Terminar" Termina la ejecución del programa siendo depurado. con la diferencia de que este botón saltea las llamadas a procedimientos y se detiene en la siguiente instrucción. por ejemplo. (Ver Introducción a las estructuras de control). Botón "Establecer siguiente instrucción" Al hacer clic sobre este botón se mueve el punto de ejecución a la línea de código seleccionada. (Ver Interrumpir la ejecución) Botón "Saltear llamadas" (F8) Este botón es similar al botón "Paso a paso". dentro de una llamada al procedimiento Mensaje. En caso de que haya más de una instrucción en la línea seleccionada. Botón "Acerca de. este botón funciona igual al botón "Paso a paso". En caso de que ya haya un punto de interrupción en esa línea. (Ver Detener la ejecución) Botón "Cerrar" Termina el programa actual si éste se estuviera ejecutando. el mismo se quita. http://www.com/abcchm. Es útil para ver qué efectos produce una llamada a un procedimiento sin entrar en los detalles de su funcionamiento. Page 12 . el programa se detendrá en la siguiente instrucción luego de terminar de ejecutar el procedimiento actual.html Botón "Pausa" (F6) Pausa un programa en ejecución. En caso de que la línea de código no posea ninguna llamada a un procedimiento.

html Botón "Mostrar siguiente instrucción" Muestra la línea de código en donde está el punto de ejecución. http://www.ABC Amber CHM Converter Trial version. Control de la ejecución Inspecciones Pila de llamadas Volver Page 13 .com/abcchm.processtext.

com/abcchm.ABC Amber CHM Converter Trial version.html Inspecciones Las inspecciones son expresiones que el depurador evalúa. También es posible editar una inspección haciendo doble clic sobre la misma. Botón "Quitar" Elimina la inspección seleccionada. Botón "Editar" Permite modificar y/o reconfigurar la inspección seleccionada. http://www. Las inspecciones son útiles ya que permiten conocer el valor de las variables del programa siendo depurado. Botón "Agregar" Permite agregar y configurar una nueva inspección. (Ver Agregar una inspección). y muestra su resultado en el panel de inspecciones. Agregar una inspección Volver Page 14 .processtext.

com/abcchm. La primer llamada siempre es "[código inicial]".processtext. en la pila de llamadas aparece el nombre de la clase.html Pila de llamadas En el panel Pila de llamadas se pueden ver los nombres de los procedimientos de la pila de llamadas. Esto también se consigue haciendo doble clic sobre la llamada en la lista. el separador "::" y luego el nombre del método. Volver Page 15 . es eliminado de la pila de llamadas. En caso de que el procedimiento sea un método. Cuando un procedimiento termina. Cuando se llama a un procedimiento. que representa el código inicial que está fuera de todo procedimiento.ABC Amber CHM Converter Trial version. éste es agregado en la parte superior de la pila de llamadas. Botón "Ver" Este botón permite ir a la línea de código que produjo la llamada seleccionada en la lista de llamadas. Si el procedimiento llama a otro procedimiento. este último es agregado encima del anterior. http://www.

Interrumpir cuando entre en contexto: pausa el programa cuando se ingrese en el contexto indicado (ver más abajo). la misma no se evalúa. la expresión posee contexto global y siempre se evalúa.ABC Amber CHM Converter Trial version. Interrumpir cuando el valor sea verdadero: pausa el programa cuando el valor de la expresión sea verdadero. Contexto El contexto de una inspección es el procedimiento. Si Clase indica una clase y Procedimiento es "[Todos]".processtext. pero en ningún caso produce una pausa en la ejecución. No es posible evaluar llamadas a procedimientos ni propiedades que estén implementadas como llamadas a procedimientos. Si la expresión está fuera de su contexto. Es verdadero si el valor es diferente de cero (en caso de una expresión numérica) o si es Verd (en caso de una expresión booleana). la expresión posee contexto de clase Page 16 . Expresión: Aquí se ingresa la expresión a evaluar. Inspección de expresión: la expresión es evaluada. En caso de que Clase sea "[Ninguna]" y Procedimiento sea "[Todos]". constantes y operadores válidos. http://www. clase o método en donde Pauscal debe evaluar la expresión. Tipo de inspección Permite especificar el tipo de inspección a agregar.html Agregar una inspección Al hacer clic en Agregar en la ventana inspección. Puede ser cualquier combinación de variables.com/abcchm. aparece la siguiente ventana.

ABC Amber CHM Converter Trial version.com/abcchm.processtext. http://www. Volver Page 17 .html y se evalúa al entrar a cualquier procedimiento de la clase especificada.

Haga clic en el botón Ejecutar Al ejecutar este programa aparecerá el mensaje: A continuación se indican algunos puntos importantes de este programa:     Comentarios Inicio del programa Entrada y salida Compilación y ejecución Comentarios La primera línea del ejemplo contiene un comentario: ' El programa "Hola mundo" hecho en Pauscal La comilla sencilla (') indica que el resto de la línea es un comentario y el compilador lo pasará por alto.ABC Amber CHM Converter Trial version.prp" Mensaje("Hola mundo") Fin 3.com/abcchm.processtext. El inicio del programa es la primer línea de código ejecutable fuera de una clase o procedimiento. Page 18 . Este punto se conoce como inicio del programa o punto de entrada.html Su primera aplicación A continuación veremos como hacer la clásica aplicación "hola mundo". Ingrese el siguiente código: ' El programa "Hola mundo" hecho en Pauscal Importar "Pauscal. la cual muestra dicho mensaje en la pantalla. 2. http://www. Abra Pauscal si todavía no lo hizo. 1. Es posible tanto hacer un comentario en toda una línea como anexar un comentario al final de otra instrucción. como se muestra a continuación: Mensaje("Hola mundo") ' Muestra el mensaje en pantalla Inicio del programa Todos los programas de Pauscal tienen un punto de partida desde donde comienza la ejecución.

processtext. Uno de los procedimientos definidos en el archivo importado es Mensaje.. http://www. Luego Pauscal le permitirá elegir la ubicación que desea para el archivo ejecutable compilado. En este caso mostramos la cadena de caracteres "Hola mundo".ABC Amber CHM Converter Trial version. Volver Page 19 .html Entrada y salida Este ejemplo utiliza la biblioteca estándar en tiempo de ejecución de Pauscal. Mensaje("Hola mundo") Compilación y ejecución Una vez que copiado el código fuente del programa en el editor de Pauscal. que muestra un mensaje en la pantalla de la computadora. Para poder utilizar esta biblioteca primero debe importarla al programa mediante la instrucción Importar.prp. seleccione Proyecto/Compilar.com/abcchm... que está en el archivo Pauscal.

ABC Amber CHM Converter Trial version. http://www.html Fundamentos de la programación en Pauscal Este tema presenta los componentes esenciales de la programación en Pauscal. Pauscal acepta ciertas construcciones de programación y elementos de lenguajes comunes.processtext. Como la mayoría de los lenguajes modernos de programación.com/abcchm. Estructura de un programa Instrucciones Operadores Introducción a las variables Introducción a los procedimientos Introducción a las estructuras de control Introducción al control estructurado de excepciones Introducción a las estructuras Introducción a las clases y los objetos Volver Page 20 .

ABC Amber CHM Converter Trial version. es recomendable separar el código en subrutinas que ejecutan una acción específica. la estructura de un programa debería ser de la siguiente forma: <archivos a importar> <declaración de constantes> <declaración de estructuras de datos> <declaración de variables globales> <clases> <procedimientos> <código inicial> Nota En general. Por convensión. http://www. Pauscal no exige que los programas sigan esta convensión.com/abcchm. Esto sólo permite que sus aplicaciones sean más fáciles de entender y mantener. el procesador) puede ejecutar. la estructura no es muy importante y todo el código se escribe directamente. es más fácil la lectura y el mantenimiento del código. En programas simples. Pero a medida que el programa se hace más complejo.processtext. La estructura de un programa hace referencia a la forma de organizar código.html Estructura de un programa Un programa es un conjunto de instrucciones que la computadora (o mejor dicho. Esto es un elemento clave en los proyectos que involucran a más de un programador. Volver Page 21 . De esta forma.

constantes y expresiones. Introducción a las instrucciones Instrucciones de asignación Instrucciones de declaración Instrucciones ejecutables Operadores Expresiones Volver Page 22 . una instrucción es un comando completo que puede contener palabras clave.html Instrucciones En Pauscal. operadores. e instrucciones ejecutables. Las instrucciones se clasifican en dos categorías: instrucciones de declaración. y también pueden especificar un tipo de datos. http://www. que inician acciones.com/abcchm.ABC Amber CHM Converter Trial version.processtext. constante o procedimiento. variables. que asignan nombre a una variable.

como una suma o una multiplicación. que combina dos cadenas en una nueva. una operación lógica. en el caso del operador de asignación. situada a la izquierda. Tal operación puede ser una operación aritmética. una operación de concatenación. Varios operadores pueden realizar acciones en una expresión o instrucción simples.processtext. Operadores aritméticos Operadores de comparación Operador de concatenación Operador de evaluación Prioridad de operador Expresiones Instrucciones Volver Page 23 . (Ver Prioridad de operador). como se demuestra a continuación: x = 45 + y * z ^ 2 En este ejemplo. http://www. el operador de asignación realiza la operación de asignación: toma el valor del lado derecho del operador y lo asigna a la variable del lado izquierdo. que evalúa si dos expresiones son ambas verdaderas. que determina cuál de dos valores es mayor.ABC Amber CHM Converter Trial version. una operación de comparación. Los operadores combinados con elementos de código que devuelven valores como literales o variables forman expresiones o. se realizan las operaciones de la expresión situada a la derecha del operador de asignación y el valor resultante se asigna a la variable x. pero debe comprender la prioridad de operadores en Pauscal para asegurarse de que obtendrá los resultados previstos.html Operadores Un operador es una unidad de código que realiza una operación sobre uno o más elementos de código que devuelven valores. instrucciones. El siguiente es un ejemplo de una instrucción que utiliza el operador de asignación (=): x = 45 En este ejemplo. No existe límite en cuanto al número de operadores que se pueden combinar en una expresión.com/abcchm.

comparaciones y otras operaciones.com/abcchm. que produce un nuevo valor. otras expresiones y las llamadas a procedimientos.html Expresiones Una expresión puede considerarse una serie de elementos que representan valores.ABC Amber CHM Converter Trial version. http://www. Como ejemplos de tales elementos que representan valores pueden citarse los literales. El resultado final de la expresión representa un valor. Los operadores actúan sobre los elementos que representan valores realizando cálculos. que puede ser de tipo numérico. Calcular valores numéricos Comparaciones de valores Expresiones booleanas Operadores Instrucciones Volver Page 24 .processtext. separados por operadores. Booleano o Cadena. las variables.

Estos paréntesis deben ir ya que el operador And posee una prioridad mayor al de los operadores de comparación. vea Prioridad de operador. Si las dos expresiones son verdaderas. Las expresiones booleanas pueden tener varias formas. Por ejemplo: 42 < 81 ' Evalúa a Verd. Las expresiones entre paréntesis se evalúan primero. ' Asigna el valor booleano Verd a la variable y. se garantiza la prioridad de las expresiones anidadas a mayor profundidad. En el ejemplo anterior. Nótense los paréntesis a ambos lados del operador And. Page 25 . Esto se ilustra en el siguiente ejemplo: Si x = Verd y = Falso FinSi ' Compara x con el valor booleano Verd. Para obtener más información. vea Comparaciones de valores e Instrucciones de asignación.com/abcchm. El siguiente ejemplo demuestra el uso de operadores de comparación junto con un operador lógico: (x > y) And (x < 1000) En el ejemplo. y evalúa el resultado como verdadero (Verd) o falso (Falso).processtext. La más simple es la comparación directa del valor de una variable de tipo Booleano con un literal Booleano. y Pauscal trataría de evaluarlos antes. Los operadores de comparación. Las expresiones de comparación se pueden combinar con operadores lógicos para producir expresiones booleanas más complejas. ' Código a ejecutarse si x es igual a Verd Sino ' Código a ejecutarse si x es igual a Falso FinSi Es de reseñar que la instrucción de asignación x = Verd tiene el mismo aspecto que la expresión del ejemplo. la evaluación se lleva a cabo según las reglas de prioridad de operador. <.html Expresiones booleanas Una expresión booleana es una expresión que da como resultado un valor Booleano. como se muestra en el siguiente ejemplo: Si x = Verd ' Compara x con el valor booleano Verd. En el caso de múltiples niveles de anidamiento. Para obtener más información sobre esta clase de expresión. Dentro de los paréntesis. vea Comparaciones de valores. pero realiza funciones diferentes y se utiliza de forma distinta. la evaluación de toda la expresión devuelve Verd. En una instrucción independiente. (Ver Prioridad de operador). http://www. la expresión x = Verd representa un valor y por tanto el signo = se interpreta como operador de comparación. <= y >=. devuelve Falso. el valor de toda la expresión depende de los valores de las expresiones especificadas a cada lado del operador And. >.ABC Amber CHM Converter Trial version. Si una de las expresiones es falsa. Expresiones entre paréntesis Pueden utilizarse paréntesis para controlar la evaluación de expresiones booleanas. se interpretaría como operador de asignación y asignaría el valor de la derecha a la variable de la izquierda. como =. Para obtener más información. <>. producen expresiones booleanas mediante la comparación de la expresión situada a la izquierda del operador con la expresión situada a la derecha.

com/abcchm.html Volver Page 26 . http://www.processtext.ABC Amber CHM Converter Trial version.

com/abcchm. Una expresión numérica es una expresión que contiene literales y variables que representan valores numéricos. vea Prioridad de operador. Esta expresión se evalúa como 276. como en el ejemplo anterior. que es el valor de 67 más 2. x = 2. el valor de la expresión a la derecha del operador se asigna a la variable y situada a la izquierda del operador. como en el ejemplo siguiente: Var x. Para anular las reglas de prioridad de operador. A continuación se muestra un ejemplo de una expresión numérica: 4 * (67 + x) ' En este ejemplo.html Calcular valores numéricos Los valores numéricos pueden calcularse mediante expresiones numéricas. Volver Page 27 . vea Instrucciones de asignación.processtext. y operadores que actúan sobre esos valores. Puede utilizar una instrucción de asignación para asignar los valores representados mediante esta expresión a otra variable.ABC Amber CHM Converter Trial version. multiplicado por 4. de modo que y se evalúa como 276. Si la expresión numérica contiene más de un operador.y:Entero x = 2 y = 4 * (67 + x) Aquí. el orden en que se evalúan lo determina las reglas de prioridad de operador. http://www. tales expresiones se evalúan primero. Para obtener más información. las expresiones se escriben entre paréntesis. Para obtener más información sobre la asignación.

En el siguiente ejemplo. Si el valor de la expresión de la izquierda es mayor o igual que el valor de la expresión de la derecha. evalúa si el valor de la izquierda es igual que el valor de la derecha.0 * (y + 17. Los siguientes son ejemplos de este tipo de expresión: 45 > 26 26 > 45 La evaluación de la primera expresión devuelve Verd. Cuando se utiliza como operador de comparación. como se muestra en el siguiente ejemplo: Si x = 50 ' Código a ejecutarse si x es igual a 50 FinSi Una expresión de comparación también se puede utilizar allí donde sea necesario un valor Booleano. HastaQue. Las expresiones comparadas pueden ser complejas. el valor devuelto por la expresión de comparación se asigna a una variable Booleano: Var x:Booleano x = 50 < 30 ' a x se le asigna Falso. además de un operador de asignación. De esta forma. puesto que 45 es mayor que 26. o cuando se asigna o se pasa un valor a una variable de tipo Booleano. variables y llamadas a procedimientos. como en el siguiente ejemplo: Si x > 50 ' Código a ejecutarse si x es mayor a 50 Sino ' Código a ejecutarse si x es menor o igual a 50 FinSi El signo = es un operador de comparación. Estas expresiones devuelven un valor Booleano que depende de si la comparación es verdadera o falsa. puede comparar cualquier par de expresiones numéricas. Se evalúan las expresiones especificadas a ambos lados del operador de comparación y los valores resultantes se comparan mediante el operador de comparación >=. como en una instrucción Si.html Comparaciones de valores Los operadores de comparación pueden utilizarse para construir expresiones que comparan los valores de variables numéricas. http://www. puesto que 26 no es mayor que 45. como en el siguiente ejemplo: x / 45.processtext. de lo contrario. devuelve Falso. La evaluación del segundo ejemplo devuelve Falso.0) >= RaizCuad(z) / (p .com/abcchm.(x * 16. la evaluación de la expresión completa devuelve Verd. Volver Page 28 .ABC Amber CHM Converter Trial version.0)) Esta expresión compleja incluye literales. Mientras. Las expresiones que comparan valores se utilizan con frecuencia en los bloques condicionales Si.

La estructuración del código en procedimientos aporta las siguientes ventajas:   Los procedimientos permiten desglosar los programas en unidades lógicas independientes. que hace referencia al procedimiento por su nombre y le transfiere el control. además de ejecutar acciones. y otras operaciones. generalmente sin tener que realizar grandes modificaciones. El código de llamada es una instrucción o una expresión contenida en una instrucción. Procedimientos y código estructurado Los procedimientos son útiles para realizar tareas repetitivas o compartidas. Los procedimientos se invocan desde otras partes del código. Aunque Pauscal no requiere el uso de procedimientos. es recomendable utilizarlos. Los procedimientos desarrollados para un programa pueden utilizarse en otros programas. Se puede llamar a un procedimiento desde distintos lugares del código.processtext.com/abcchm. Hay que tener en cuenta que la aplicación se leerá con mayor facilidad si subdivide los procedimientos grandes en procedimientos más pequeños.html Introducción a los procedimientos Un procedimiento es un bloque de instrucciones de Pauscal delimitado por una instrucción de declaración y una instrucción FinProc. Declaración de procedimientos Parámetros de procedimientos Procedimientos recursivos Prototipos y variables de procedimientos Fundamentos de la programación en Pauscal Volver Page 29 .ABC Amber CHM Converter Trial version. http://www. manipulación de texto y controles. Estos últimos también se conocen con el nombre de funciones. Cuando finaliza la ejecución de un procedimiento. que recibe el nombre de código de llamada. de modo que los procedimientos se prestan a servir de unidades de creación de la aplicación. éste devuelve el control al código que lo invocó. Es más fácil depurar unidades individuales que todo un programa sin procedimientos. como cálculos de uso frecuente. Tipos de procedimientos En Pauscal existen dos tipos de procedimientos: los procedimientos que ejecutan acciones. y los procedimientos que. devuelven un valor al código de llamada.

processtext.ABC Amber CHM Converter Trial version.html Introducción a las estructuras de control Estructuras de bucles Las estructuras de bucles permiten ejecutar una o más líneas de código repetitivamente. Puede comprobar si una condición es verdadera o falsa. http://www.   Eval Bloque Estructuras de control anidadas Instrucción "Salir" Fundamentos de la programación en Pauscal Volver Page 30 . los distintos valores de una expresión o las diferentes excepciones que se generan al ejecutar una serie de instrucciones.com/abcchm. Las estructuras de bucles que admite Pauscal incluyen:    Mientras Repetir Contar Estructuras de desición Pauscal permite probar condiciones y realizar diferentes operaciones en función de los resultados de la prueba. Las instrucciones de decisión que admite Pauscal incluyen:    Si Seleccionar AdmErr Estructuras de programación En esta categoría se ubican las estructuras de programación que no son de bucles ni de desición. Una instrucción puede repetirse hasta que una condición sea verdadera. hasta que sea falsa o un número de veces especificado.

Cuando el código de un bloque protegido genera una excepción.processtext. Reflexione sobre el uso de métodos de control de excepciones que utilicen operadores que puedan generar una excepción o que llamen o tengan acceso a otros procedimientos que puedan generar una excepción. Si el método anterior tampoco tiene controlador de excepciones. La instrucción AdmErr se utiliza específicamente para el control estructurado de excepciones. En el control estructurado de excepciones. la excepción se propagará de vuelta al llamador del método.ABC Amber CHM Converter Trial version. Si ésta tampoco encuentra un controlador para la excepción. los bloques de código se encapsulan y cada uno de ellos tiene un controlador asociado. Un método puede tener varios bloques de control estructurado de excepciones y dichos bloques pueden además estar anidados. la excepción se propagará de vuelta al método de llamada o al método anterior. Control estructurado de excepciones Tipos de errores Bloque "AdmErr" Iniciar excepciones Fundamentos de la programación en Pauscal Volver Page 31 . se mostrará un mensaje de error y la aplicación finalizará. se ejecuta su controlador.com/abcchm. Si se produce una excepción en un método que no esté preparado para controlarla. http://www. La simple introducción de fragmentos de código específicos en la aplicación permite controlar la mayoría de los errores con los que pueden encontrarse los usuarios y permite que la aplicación siga ejecutándose. El control de errores estructurado permite establecer un plan para detectar posibles errores. que es la serie de procedimientos a los que se llama dentro de la aplicación.html Introducción al control estructurado de excepciones Pauscal admite un control estructurado de excepciones (errores). y así sucesivamente. La búsqueda de un controlador continuará hasta la pila de llamadas. y así impedir que éstos interfieran en los supuestos objetivos de la aplicación.

Declaración de estructuras Variables de estructura Temas avanzados de estructuras Uniones Fundamentos de la programación en Pauscal Volver Page 32 . o bien definir una estructura y utilizarla para una única variable de empleado. Por ejemplo. quizás desee mantener juntos el nombre de un empleado. La ventaja de la estructura se hace evidente si tiene muchos empleados y. http://www. Al declarar una estructura. Las estructuras son útiles si se quiere que una única variable contenga varios datos relacionados. ésta se convierte en un tipo de datos compuesto y se puede declarar variables de este tipo. muchas instancias de la variable. Una estructura asocia uno o más miembros entre ellos y con la propia estructura.com/abcchm.ABC Amber CHM Converter Trial version. Podría utilizar varias variables para esta información. por consiguiente. su extensión telefónica y su salario.processtext.html Introducción a las estructuras Se pueden combinar elementos de datos de distintos tipos para crear una estructura.

esta técnica se denomina ocultación de datos. Herencia Page 33 . como Privado o Público. Clases y objetos Los términos "clase" y "objeto" se utilizan a veces indistintamente.ABC Amber CHM Converter Trial version. las clases describen la estructura de los objetos. Puede trabajar con varias cuentas bancarias al mismo tiempo sin confusión.processtext. en las versiones posteriores de la clase CuentaBancaria que se muestra a continuación se podría cambiar el tipo de datos de la variable BalanceDeLaCuenta sin peligro de interrumpir las aplicaciones que se basan en que esa variable tenga un tipo de datos específico. una clase es un plano. la acción de crear un objeto se denomina creación de instancias. mientras que los objetos son instancias de clases que se pueden utilizar. el cambio de datos en un objeto no cambia los datos de otro objeto. y sería difícil trabajar con más de una cuenta bancaria a la vez. Del mismo modo que un plano define qué partes de un edificio son accesibles a las personas que lo utilizan. La encapsulación también permite controlar la forma de utilizar los datos y los procedimientos. Encapsulación La encapsulación es la capacidad de contener y controlar el acceso a un grupo de elementos asociados. campos y métodos que forman objetos de la misma forma que los planos describen los elementos que componen un edificio. Con la analogía de plano. Las clases proporcionan una de las formas más comunes de encapsular elementos. Puesto que un objeto es una "instancia" de una clase. pero en realidad. Una de las reglas básicas de la encapsulación es que los datos de clase sólo se deben modificar o recuperar mediante métodos o propiedades. las clases también pueden controlar el acceso de los usuarios a los elementos de los objetos a través de la encapsulación. la información del cliente. y un objeto es un edificio basado en ese plano. y propiedades que describen una cuenta bancaria.com/abcchm. campos. Se pueden utilizar modificadores de acceso. La encapsulación permite utilizar datos y procedimientos de la clase CuentaBancaria como una unidad. para evitar que procedimientos externos ejecuten métodos de clase o lean y modifiquen datos privados. Generalmente. por ejemplo el saldo de la cuenta. Los detalles internos de una clase deben declararse como Privado para evitar que sean utilizados fuera de la misma. En la clase CuentaBancaria. En el ejemplo siguiente. se protege de esta forma. una única clase puede utilizarse para crear tantos objetos como sea necesario. Así como un plano puede utilizarse para crear varios edificios.html Introducción a las clases y los objetos Las clases son representaciones simbólicas de objetos. Al ocultar los detalles de implementación de las clases se evita que sean utilizados de forma no deseada y hace posible la modificación posterior de tales elementos sin problemas de compatibilidad. Sin la encapsulación. la clase CuentaBancaria encapsula los métodos. puesto que cada cuenta se representa mediante una instancia única de la clase. http://www. Por ejemplo. describen las propiedades. Cada instancia es una copia exacta pero diferente de su clase. sería necesario declarar diferentes procedimientos y campos para almacenar y administrar la información de la cuenta bancaria.

Esto significa que puede desarrollar y depurar una clase una vez y reutilizarla después como base de otras clases. propiedades y métodos definidos en la clase base. Las clases derivadas heredan todos los campos. Las clases que se derivan de clases base se denominan clases derivadas. Las clases que sirven de base para nuevas clases se denominan clases base.processtext. http://www.com/abcchm.html Las clases de Pauscal pueden heredar y extender las características de otras clases.ABC Amber CHM Converter Trial version. En el siguiente ejemplo se define una clase base que representa una cuenta bancaria genérica y una clase específica que hereda las propiedades de la clase base pero que se personaliza para describir una cuenta corriente: Clase CuentaBancaria ClaseVar NúmeroDeCuenta:Cadena ClaseVar BalanceDeLaCuenta:Real Proc Intereses() ' Código que calcula el interés de la cuenta. FinProc Proc Balance():Real Devolver BalanceDeLaCuenta FinProc FinClase Clase CuentaCorriente(CuentaBancaria) Proc ProcesarCheque ' Código que procesa un cheque de esta cuenta. FinProc FinClase Duración de los objetos Constructores y destructores Métodos de una clase Campos de una clase Propiedades y procedimientos de propiedad Propiedades frente a métodos Fundamentos de la programación en Pauscal Volver Page 34 .

Fundamentos de la programación en Pauscal Instrucciones Introducción Instrucciones de asignación Instrucciones de declaración Instrucciones ejecutables Operadores Operadores aritméticos Operadores de comparación Operador de concatenación Operador de evaluación Prioridad de operador Variables Tipos de datos Resumen de tipos de datos Matrices Declaración de matrices Usando las matrices Limitaciones de matrices estáticas Procedimientos Declaración Parámetros Procedimientos recursivos Prototipos Estructuras de control Bucle 'Mientras' Bucle 'Repetir' Bucle 'Contar' Bloque 'Si' Bloque 'Seleccionar' Bloque 'AdmErr' Estructura 'Eval' Estructura 'Bloque' Estructuras Declaración Temas avanzados sobre estructuras Uniones Clases Duración de los objetos Constructores y destructores Métodos de una clase Campos de una clase Propiedades y procedimientos de propiedad Propiedades frente a métodos Page 35 .processtext.ABC Amber CHM Converter Trial version.com/abcchm. http://www.html Manual del programador Esta sección explica los elementos de programación con los que cuenta Pauscal.

processtext.com/abcchm.ABC Amber CHM Converter Trial version. http://www.html Referencia del lenguaje Instrucciones Volver Page 36 .

com/abcchm.html Control de la ejecución El depurador de Pauscal proporciona comandos eficaces para controlar la ejecución de las aplicaciones.ABC Amber CHM Converter Trial version. http://www. En los temas siguientes se describen las tareas que puede realizar con comandos del depurador para controlar la ejecución:      Iniciar la depuración Interrumpir la ejecución Detener la ejecución Avanzar paso a paso por la aplicación Establecer el punto de ejecución Volver Page 37 .processtext.

ABC Amber CHM Converter Trial version.. seleccione Depurar. se iniciará el depurador.processtext.. Pauscal compilará el proyecto en un archivo temporal..  Antes de iniciar la depuración.com/abcchm. Una vez iniciado el depurador. O bien Presione la tecla F7. En caso de que no hubieran ocurrido errores.html Iniciar la depuración Para iniciar la depuración  En el menú Proyecto. http://www. el programa se interrumpirá en la primera línea de código ejecutable. Volver Page 38 .

ABC Amber CHM Converter Trial version. el programa está en alguna sección donde no hay código fuente. el punto de ejecución en ese momento debe estar dentro del código fuente. Numerosas funciones del depurador. Es posible reanudar su ejecución en cualquier momento. Si. como la evaluación de expresiones en el panel Inspección.processtext. o F6. Para interrumpir manualmente la ejecución del programa  Haga clic en el botón Pausa.com/abcchm. por alguna razón. Volver Page 39 . El depurador y la aplicación se encuentran ahora en modo de interrupción. sólo están disponibles en el modo de interrupción. http://www. la aplicación o se está ejecutando o está en modo de interrupción. pero no lo termina. El depurador detendrá la ejecución del programa. Pauscal interrumpirá el programa cuando éste ingrese al código fuente. por ejemplo dentro de un procedimiento externo.html Interrumpir la ejecución Cuando se depura una aplicación con el depurador de Pauscal. Nota Para interrumpir un programa manualmente. Puede interrumpir manualmente la ejecución en cualquier momento. El depurador interrumpe la ejecución del programa cuando llega a un punto de interrupción o cuando se produce una excepción.

html Detener la ejecución Detener la ejecución significa terminar el programa que se está depurando y concluir la sesión de depuración.  Volver Page 40 .processtext. que significa detener temporalmente la ejecución del programa que se está depurando pero dejando la sesión de depuración activa.com/abcchm. Para obtener más información. vea Interrumpir la ejecución. Nota Este botón detiene inmediatamente un programa y todos sus subprocesos sin pedir confirmación. http://www. Para detener la depuración Haga clic en el botón Terminar. No debe confundirse con interrumpir la ejecución. Esto puede causar pérdida de información en ciertos casos.ABC Amber CHM Converter Trial version.

Paso a paso sólo ejecuta la llamada en sí y. Ambos comandos indican al depurador que ejecute la siguiente línea de código. Si la línea contiene una llamada a un procedimiento. Utilice Paso a paso si desea examinar el interior de la llamada al procedimiento. Utilice Saltear llamadas si desea evitar la ejecución paso a paso de las instrucciones incluidas en el procedimiento. http://www. Los comandos anteriores no pueden utilizarse mientras la aplicación se está ejecutando. Hay dos comandos para avanzar paso a paso por el código:   Paso a paso (F7) Saltear llamadas (F8) Paso a paso y Saltear llamadas sólo se diferencian en la forma en que tratan las llamadas a procedimientos. línea a línea del código. Volver Page 41 . Saltear llamadas ejecuta todo el procedimiento y después se detiene en la primera línea que está fuera de ella.com/abcchm.ABC Amber CHM Converter Trial version. Estos comandos sólo son válidos en modo de interrupción. Para obtener más información.html Ejecutar instrucciones paso a paso Uno de los procedimientos de depuración más comunes es la ejecución paso a paso. se detiene en la primera línea de código incluida en el procedimiento. vea Interrumpir la ejecución.processtext. a continuación.

com/abcchm. http://www. si desea omitir una sección del código que contiene un error conocido y continuar depurando otras secciones. vea Interrumpir la ejecución. el depurador debe estar en modo de interrupción.html Establecer el punto de ejecución En el depurador de Pauscal. Volver Page 42 . Precaución Utilice este comando con precaución.ABC Amber CHM Converter Trial version. Para establecer la siguiente instrucción que debe ejecutarse  Haga doble clic sobre la línea del código fuente en donde desea establecer el punto de ejecución.processtext. Esto resulta útil en algunas situaciones: por ejemplo. puede mover el punto de ejecución para establecer la siguiente instrucción de código que se debe ejecutar. Para obtener más información. o haga clic en el botón Establecer siguiente instrucción luego de seleccionar la línea de código fuente. Moviendo el punto de ejecución puede saltarse una parte del código o volver a una línea previamente ejecutada. Una flecha en el margen derecho del código fuente indica la ubicación actual del punto de ejecución. No se puede establecer el punto de ejecución mientras se está ejecutando activamente la aplicación. Para establecer la siguiente instrucción. Nota Cambiar el punto de ejecución mientras se procesa una excepción puede causar errores inesperados. Hay casos en los que mover el punto de ejecución puede producir errores en el programa.

que inician acciones. Introducción a las instrucciones Instrucciones de asignación Instrucciones de declaración Instrucciones ejecutables Operadores Expresiones Volver Page 43 .com/abcchm.html Instrucciones En Pauscal. e instrucciones ejecutables. variables. una instrucción es un comando completo que puede contener palabras clave. operadores. que asignan nombre a una variable. http://www.ABC Amber CHM Converter Trial version. y también pueden especificar un tipo de datos. Las instrucciones se clasifican en dos categorías: instrucciones de declaración. constantes y expresiones.processtext. constante o procedimiento.

http://www. Texto = "Pedro" Mensaje("Hola " + Texto + _ ". Continuar una instrucción en varias líneas Normalmente. vea Instrucciones de declaración. operadores. que asignan un valor o expresión a una variable. se recomienda mantener una instrucción por línea. Las instrucciones ejecutables incluyen instrucciones de asignación. pero si no es así. constantes y expresiones. Puede contener palabras clave. una instrucción larga puede continuar en la siguiente línea mediante el uso de un carácter de continuación de línea. Instrucciones ejecutables. vea Instrucciones ejecutables e Instrucciones de asignación. como ayuda para documentar el código. y puede incluirse en cualquier punto del Page 44 . ¿Cómo estás?") FinProc Agregar comentarios El código fuente no es siempre fácil de entender. una línea suele ser suficiente para una instrucción.). que dan nombre a una variable. Por tanto. una instrucción es una instrucción completa. que consiste en un carácter de subrayado (_) seguido de un retorno de carro.ABC Amber CHM Converter Trial version. la instrucción ejecutable Mensaje continúa en dos líneas: Proc MostrarMensaje() Var Texto:Cadena ' Muestra un mensaje en pantalla. esta forma de sintaxis dificulta la lectura y el mantenimiento del código. Las líneas de comentarios comienzan con un apóstrofo ('). Para obtener más información. constante o procedimiento y también pueden especificar un tipo de datos. que inician acciones. ni siquiera para el programador que lo escribió. Mensaje(Texto) Aunque ocasionalmente puede resultar conveniente. Pauscal omite los comentarios al ejecutar el código. En el siguiente ejemplo. Por ejemplo: Texto = "Hola mundo" . Los comentarios en el código pueden explicar un procedimiento o una instrucción concreta a cualquiera que lea o trabaje con ellos posteriormente. Por consiguiente. la mayoría de los programadores utilizan libremente comentarios incrustados.processtext. y pueden realizar un bucle o una bifurcación a través de bloques de código. variables. Estas instrucciones pueden ejecutar un método o procedimiento.com/abcchm. Cada instrucción pertenece a una de las dos categorías siguientes:   Instrucciones de declaración. Para obtener más información. Varias instrucciones en una línea Se pueden tener varias instrucciones en una sola línea separadas por el carácter de punto y coma (. No obstante.html Introducción a las instrucciones En Pauscal.

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html

código. Para anexar un comentario a una instrucción, inserte un apóstrofo después de la instrucción, seguido del comentario. Tal comentario aparece en el ejemplo anterior. Los comentarios también pueden escribirse separados en una línea propia.

Volver

Page 45

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html

Instrucciones de asignación
Las instrucciones de asignación realizan operaciones de asignación. Las operaciones de asignación consisten en tomar el valor de la derecha del operador y asignarlo a la variable a la izquierda, como en este ejemplo:
x = 42

Aquí, la variable x se asigna al valor literal 42. El valor de la derecha del operador puede ser cualquier literal, variable, expresión o llamada a procedimiento que devuelva un valor, como en este ejemplo:
x = y + z + MiProcedimiento(3)

Aquí, el valor que representa y se agrega al valor que representa z, que se suma al valor que devuelve la llamada a MiProcedimiento(3). Después, el valor total de esta expresión se asigna a la variable x. El operador de asignación también puede asignar valores a variables y expresiones de tipo Cadena, como en este ejemplo:
Var x:Cadena x = "Asignación de variable de cadena" x = "Con" + "cat" + "enación" ' x es igual a "Concatenación".

También se pueden asignar los valores de variables de tipo Booleano, mediante un literal Booleano o una expresión booleana como argumento de la derecha:
Var x:Booleano x = Verd x = 45 > 1003 ' x es igual a Falso. x = (45 > 1003) Or (45 > 17) ' x es igual a Verd.

El argumento en el lado izquierdo del operador puede ser cualquier variable o propiedad válidas. En el siguiente ejemplo se muestra como se establece el valor de la propiedad Texto de una caja de texto:
txtNombre.Texto = "Ingrese su nombre aquí"

También es posible asignar matrices y estructuras, como se aprecia en el ejemplo siguiente:
Var x[],y[]:Entero x = [4,5,9,165] y = x

Para más información, vea Usando las matrices y Temas avanzados sobre las estructuras.

Volver

Page 46

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html

Instrucciones de declaración
Las instrucciones de declaración se utilizan para definir procedimientos, variables, matrices y constantes, y asignarles nombre. Cuando se declara un procedimiento, variable o constante, también se define su ámbito, dependiendo del lugar en el que se coloque la declaración. El siguiente ejemplo contiene tres declaraciones.
Const Lim = 33 Proc AplicarFormato() Var Texto:Cadena ' Código que implementa el procedimiento. FinProc

Primero, la instrucción Const declara la constante Lim, con el valor 33. A continuación la instrucción Proc (con la instrucción FinProc correspondiente) declara un procedimiento denominado AplicarFormato. Todas las instrucciones entre Proc y FinProc se ejecutan cada vez que se llama o ejecuta el procedimiento AplicarFormato. Finalmente, la instrucción Var declara la variable local Texto. El tipo de datos de la variable es Cadena .

Volver

Page 47

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html

Instrucciones ejecutables
Una instrucción ejecutable inicia una acción mediante la ejecución de un método. Puede realizar un bucle o una bifurcación a través de bloques de código. Las instrucciones ejecutables a menudo contienen operadores matemáticos o condicionales. El siguiente ejemplo utiliza una instrucción Si para ejecutar diferentes bloques basándose en el valor de una variable. Dentro de cada bloque de código, una instrucción Contar hace que se ejecute un bucle un número de veces especificado.
Proc Rotar(Img:cImagen, SentidoHorario:Booleano, Revoluciones:Entero) Var i:Entero Si SentidoHorario = Verd Contar i = 1 a Revoluciones Img.GirarSentidoHorario Seguir Sino Contar i = 1 a Revoluciones Img.GirarSentidoAntihorario Seguir FinSi FinProc

La instrucción Si del ejemplo comprueba el valor de la variable SentidoHorario. Si el valor es Verd, se llama al método GirarSentidoHorario de Img. Si el valor es Falso, se llama al método GirarSentidoAntihorario de Img. Las instrucciones Si finalizan con FinSi. Las instrucciones Contar dentro de cada bloque hacen que se llame el método apropiado un número de veces igual al indicado por la variable Revoluciones.

Volver

Page 48

Operadores aritméticos Operadores de comparación Operador de concatenación Operador de evaluación Prioridad de operador Expresiones Instrucciones Volver Page 49 . en el caso del operador de asignación. una operación de concatenación.com/abcchm. una operación de comparación. situada a la izquierda. No existe límite en cuanto al número de operadores que se pueden combinar en una expresión.processtext. que determina cuál de dos valores es mayor. que evalúa si dos expresiones son ambas verdaderas. se realizan las operaciones de la expresión situada a la derecha del operador de asignación y el valor resultante se asigna a la variable x. (Ver Prioridad de operador). el operador de asignación realiza la operación de asignación: toma el valor del lado derecho del operador y lo asigna a la variable del lado izquierdo. El siguiente es un ejemplo de una instrucción que utiliza el operador de asignación (=): x = 45 En este ejemplo. pero debe comprender la prioridad de operadores en Pauscal para asegurarse de que obtendrá los resultados previstos. Tal operación puede ser una operación aritmética.html Operadores Un operador es una unidad de código que realiza una operación sobre uno o más elementos de código que devuelven valores. instrucciones. Varios operadores pueden realizar acciones en una expresión o instrucción simples. una operación lógica. http://www. como una suma o una multiplicación.ABC Amber CHM Converter Trial version. Los operadores combinados con elementos de código que devuelven valores como literales o variables forman expresiones o. que combina dos cadenas en una nueva. como se demuestra a continuación: x = 45 + y * z ^ 2 En este ejemplo.

processtext. La división de enteros devuelve el número de veces que un entero puede dividirse exactamente en otro.ABC Amber CHM Converter Trial version. otras expresiones. Con este operador.0 ^ 3. Este operador sólo trabaja con tipos enteros. A continuación se muestra un ejemplo de una división de enteros: Var k:Entero k = 23 \ 5 ' k = 4 El módulo aritmético se calcula con el operador Mod. como en estos ejemplos: Var y:Real y = 45. como se muestra a continuación: Var x. variables. respectivamente.y:EnteroSig x = 87 y = -x La multiplicación y la división utilizan los operadores * y /.23 y = 32. como se muestra en los siguientes ejemplos: Var x:EnteroSig x = 67 + 34 x = 32 . Operaciones aritméticas Puede sumar dos valores en una expresión con el operador + o restar un valor de otro con el operador . llamadas a procedimientos y propiedades.y:Entero 100 6 x Mod y ' z = 4 Los operadores Shl (Shift Left) y Shr (Shift Right) mueven del primer operando tantos bits como indica el segundo operando hacia la izquierda y derecha. Page 50 . respectivamente. Var x = y = z = x. pero con una sintaxis algo diferente. sólo se pueden utilizar tipos enteros (ver Resumen de tipos de datos). como se muestra a continuación: Var z:Real z = 23.0 / 23.0 * 55. http://www. Este operador devuelve el resto una vez que se divide el divisor por el dividendo un número integral de veces. Matemáticamente se puede decir que: a shl b = a * (2 ^ b) a shr b = a \ (2 ^ b) Estos operadores sólo funcionan con tipos enteros.0 La exponenciación utiliza el operador ^.0 ' z es igual al cubo de 23 La división de enteros se lleva a cabo con el operador \.com/abcchm.html Operadores aritméticos Los operadores aritméticos se utilizan para realizar muchas de las operaciones aritméticas habituales que implican el cálculo de valores numéricos representados por literales.12 La negación también utiliza el operador -. y constantes.

Or y Not también se pueden usar en Pauscal como Y. entonces se coloca un 1 en esa posición del resultado. de posición en posición binaria. con la diferencia de que asigna un 1 al bit de resultado si uno de los dos bits comparados es 1. http://www. Si uno de los dos bits es un 0. Si los dos bits en una posición dada son 1. 001 es la representación binaria de 1. asignan los valores basados en la comparación. He aquí por qué:  Primero. Not invierte todos los bits de un solo operando y asigna ese valor al resultado. entonces se coloca un 0 en esa posición del resultado.processtext.ABC Amber CHM Converter Trial version. el valor de x es 1. esto funciona como sigue: 011 101 001 3 en formato binario 5 en formato binario El resultado. a continuación. en formato binario En la conversión de nuevo a decimal. las representaciones binarias se comparan. los valores se convierten a formato binario.html Operaciones bit a bit Las operaciones bit a bit que evalúan dos valores en formato binario (base 2). como en la demostración siguiente de And bit a bit: Var x:Entero x = 3 And 5 ' x = 1 En este ejemplo. O y Neg. Los operadores And. respectivamente. En el ejemplo. Volver Page 51 . Xor asigna un 1 al bit de resultado si sólo uno de los dos bits comparados vale 1 (no los dos).com/abcchm. Nota Las operaciones bit a bit sólo se pueden realizar en tipos enteros. luego x = 1. La operación Or bit a bit es similar. como se muestra a continuación: 3 en formato binario = 011 5 en formato binario = 101  A continuación. comparan los bits en las posiciones correspondientes y.

ABC Amber CHM Converter Trial version. Existen operadores para comparar valores numéricos. Page 52 . Los tres tipos de operadores se describen a continuación. las dos cadenas se comparan directamente y. Comparar valores numéricos Para comparar valores numéricos se utilizan seis operadores de comparación numérica.html Operadores de comparación Los operadores de comparación comparan dos expresiones y devuelven un valor Booleano que representa el resultado de la comparación. se devuelve Verd . operadores para comparar cadenas y operadores para comparar objetos. Operador = (Igualdad) Condición que prueba 23 ¿Es el valor que representa la primera expresión igual que el valor 23 23 que representa la segunda? 23 ¿Es el valor que representa la primera expresión no igual que el 23 23 valor que representa la segunda? 23 ¿Es el valor que representa la 23 primera expresión menor que el 23 valor que representa la segunda? 23 ¿Es el valor que representa la 23 primera expresión mayor que el 23 valor que representa la segunda? 23 ¿Es el valor que representa la primera expresión menor o igual 23 23 que el valor que representa la segunda? 23 ¿Es el valor que representa la primera expresión mayor o igual 23 23 que el valor que representa la segunda? Ejemplos = 33 ' Falso = 23 ' Verd = 12 ' Falso <> 33 ' Verd <> 23 ' Falso <> 12 ' Verd < 33 ' Verd < 23 ' Falso < 12 ' Falso > 33 ' Falso > 23 ' Falso > 12 ' Verd <= 33 ' Verd <= 23 ' Verd <= 12 ' Falso <> (Desigualdad) < (Menor que) > (Mayor que) <= (Menor o igual que) >= (Mayor o igual que) >= 33 ' Falso >= 23 ' Verd >= 12 ' Verd Comparar cadenas Para comparar cadenas sólo se pueden utilizar los operadores de igualdad (=) y de desigualdad (<>). "73" <> "9" ' Verd En este ejemplo. como indica el ejemplo siguiente: "734" = "734" ' Verd En este ejemplo. puesto que son iguales.processtext. las dos cadenas son diferentes. En la siguiente tabla se muestran los operadores y un ejemplo de la condición que prueba cada uno. por lo que se devuelve Verd.com/abcchm. http://www.

http://www.com/abcchm.processtext. Volver Page 53 . Por ejemplo: Var x. puesto que aunque las variables son del mismo tipo.y:MiClase Crear y x = y 'x apunta a y Si x Es y ' Código que se ejecuta si x e y apuntan al mismo objeto FinSi En este ejemplo. hacen referencia a instancias diferentes de ese tipo.y:MiClase Crear x.ABC Amber CHM Converter Trial version. Compare este resultado con el del ejemplo siguiente: Var x. la evaluación de x Es y devuelve Falso. porque las dos variables hacen referencia a la misma instancia.html Comparar objetos Puede utilizar el operador Es para determinar si dos variables de objeto hacen referencia a la misma instancia de una clase.y Si x Es y ' Código que se ejecuta si x e y apuntan al mismo objeto FinSi En este ejemplo. la evaluación de x Es y devuelve Verd.

http://www.y. como se muestra a continuación: Var x:Cadena x = "Con" + "caten" + "ación" ' x = "Concatenación" Estos operadores también concatenan variables de tipo Cadena.processtext.ABC Amber CHM Converter Trial version.html Operador de concatenación El operador de concatenación (+) combina varias cadenas en una sola.z:Cadena x = "abc" y = "def" z = x + y ' z = "abcdef" Volver Page 54 .com/abcchm. como en el ejemplo siguiente: Var x.

incluso estructuras y matrices. El operador devuelve parteVerdadero si condición es Verd.processtext.8. pero ayudan a comprender el código. Var x. Var x:Entero Var y[]:Entero x = 4 y = > (x = 4) ? ([5.y:Entero x = 9 y = > (x = 4) ? (5) : (6) ' y = 6 Los parentesis de los operandos no son necesarios. es decir 6.ABC Amber CHM Converter Trial version. el operador devuelve la parte falsa. > condición ? parteVerdadero : parteFalso condición puede ser cualquier expresión de tipo Booleano que pueda evaluarse como Verd o Falso.6]) ' y = [5.com/abcchm. Si condición es Falso el operador devuelve parteFalso. El operador de evaluación funciona con cualquier tipo de datos. debido a que la condición es falsa.9] Volver Page 55 . En el siguiente ejemplo. http://www.9]) : ([8. basándose en una condición.8. El operador de evaluación es el único en Pauscal que requiere tres operandos.html Operador de evaluación El operador de evaluación >:? se utiliza para seleccionar un valor de entre dos.

Las operaciones entre paréntesis se realizan siempre antes que las de fuera del paréntesis.html Prioridad de operador Cuando aparecen varias operaciones en una expresión. los operadores se evalúan en el siguiente orden de prioridad: 1 2 3 4 5 6 7 Not/Neg * + Or/O And/Y = >?: <> <= < > >= Es / Xor \ Shl Shr Mod ^ Cuando aparecen varios operadores de la misma prioridad se evalúa cada operación según aparece de izquierda a derecha. Sin embargo. En Pauscal. Volver Page 56 . cada parte se evalúa y se resuelve en un orden predeterminado conocido como prioridad de operador. entre paréntesis se mantiene la prioridad de los operadores.processtext. http://www.ABC Amber CHM Converter Trial version.com/abcchm. Puede utilizar paréntesis para pasar por alto el orden de prioridad y obligar a evaluar algunas partes de una expresión antes que otras.

Alcance Al declarar una variable. http://www. tipoDato indica el tipo de dato que almacenará la variable. Debe ser único en su alcance.processtext. separadas por coma. Un hecho interesante de las variables locales es que si existe más de una instancia de un mismo procedimiento. Por ejemplo: Num = 20 'Asignamos el valor 20 a la variable Num Num = Num + 1 'Incrementamos el valor de la variable Num Declaración de las variables Pauscal es un lenguaje que requiere que todas sus variables sean declaradas antes de utilizarse.ABC Amber CHM Converter Trial version. existen dentro de la instancia de la clase en la que fueron Page 57 .html Introducción a las variables A menudo será necesario almacenar valores en memoria cuando esté realizando cálculos. la variable es local. No puede incluir ningún símbolo utilizado internamente (p. como la mayoría de los lenguajes de programación. las variable se pierden (como así también sus valores). es decir. dependiendo del lugar en donde fue declarada: si fue declarada dentro de un procedimiento. Para más información sobre los tipos de datos. ésta puede ser local. si fue declarada dentro de una clase.ej: el punto).com/abcchm. Al nombre de una variable se le aplican las siguientes restricciones:    No puede comenzar con un dígito. y si fue declarada fuera de un procedimiento y fuera de una clase. vea Tipos de datos. utiliza variables para almacenar estos valores. sus variables locales son independientes de las otras instancias. Las variable locales sólo existen dentro del procedimiento en el cual fueron declaradas. Las variables de clase. Las variables tienen un nombre (la palabra que utiliza para referirse al valor que contiene la variable) y un tipo de dato (que determina la clase de datos que puede almacenar la variable). denominadas campos. Se pueden utilizar matrices para almacenar colecciones indexadas de variables relacionadas. la variable es global. Almacenamiento y recuperación de datos en variables Se utiliza el operador de asignación (=) para almacenar valores en una variable. de la siguiente forma: Var listaVariables : tipoDato listaVariables es la lista de las variables a declarar. Para esto se utiliza la instrucción Var. la variable es de clase y se denomina campo. Pauscal. sólo pueden ser accedidas desde dentro de ese procedimiento y una vez que el procedimiento se termina. global o de clase.

http://www.processtext. Atención: Las declaraciones de las variables locales dentro de un procedimiento deben estar ubicadas antes que cualquier otra instrucción del procedimiento. Al igual que las variables locales. si hay más de una instancia de una clase. Tipos de datos Matrices Fundamentos de la programación en Pauscal Volver Page 58 .html declaras. estas variables son diferentes en cada instancia. y su valor permanece hasta que el programa finaliza. Las variables globales existen en todo el programa.ABC Amber CHM Converter Trial version.com/abcchm.

Resumen de tipos de datos Tipos de datos elementales Tipos de datos compuestos Volver Page 59 . http://www. parámetro de procedimiento y valor devuelto por un procedimiento tiene un tipo de datos.html Tipos de datos El tipo de datos de un elemento de programación hace referencia al tipo de datos que puede contener y a cómo son almacenados.ABC Amber CHM Converter Trial version. propiedad. Cada variable. Aquí se describen la declaración y el uso de los tipos de datos de Pauscal. Los tipos de datos se aplican a todos los valores que pueden almacenarse en la memoria del equipo o participar en la evaluación de una expresión.com/abcchm.processtext.

337.685. Permite almacenar un entero largo con signo.477.294.535 WordSig 2 bytes (16 bits) -32768 ~ 32767 Entero 4 bytes (32 bits) 0 ~ 4. Permite almacenar un byte sin signo. Esto también se aplica a cada miembro de una estructura. clase o una matriz.000 millones de caracteres 308 Real 8 bytes (64 bits) Decimal 8 bytes (64 bits) Cadena Variable Consumo de memoria Al declarar un tipo de datos básico. Permite almacenar un entero corto con signo.com/abcchm. Byte 1 byte (8 bits) 0 ~ 255 ByteSig 1 byte (8 bits) -128 ~ 127 Word 2 bytes (16 bits) 0 ~ 65.processtext. Pauscal asigna el almacenamiento en función de varios factores.337.5800 ~ 922. su asignación de almacenamiento nominal y sus intervalos de valores.147. Permite almacenar un número con coma flotante de doble precisión.94065645841247 -922. Permite almacenar un byte con signo. etc. Nombre Booleano Memoria Requerida 1 byte (8 bits) Rango Verd ~ Falso Descripción Permite almacenar los valores Verd (Verdadero) o Falso. Volver Page 60 . Además.483.203. http://www. Por ejemplo. incluyendo el alcance de la variable.79769313486232 ~ -324 -4.203.477. Permite almacenar un entero corto sin signo. algunos tipos compuestos tienen requisitos adicionales de memoria.295 EnteroSig 4 bytes (32 bits) . el contexto en el que se emplea.648 ~ 2.147.483. Permite almacenar un número con coma fija de 4 decimales.967.ABC Amber CHM Converter Trial version.647 -1. No se puede sumar simplemente todas las asignaciones de almacenamiento nominales de los componentes para obtener el consumo real de memoria. Permite almacenar un entero largo sin signo. una instancia de una clase utiliza memoria adicional para almacenar la cuenta de referencias.685. no debe suponerse que su consumo de memoria es igual a su asignación de almacenamiento nominal. Permite almacenar una cadena caracteres alfanumérica.2.5800 0 ~ 2.html Resumen de tipos de datos La tabla siguiente muestra los tipos de datos de Pauscal.

En Pauscal los tipos no integrales son los tipos de datos Real y Decimal.Seguir. se produce un error. Los tipos de datos sin signos no pueden representar valores negativos. el número debe tener el separador decimal (. Tipos de datos no integrales Los tipos de datos no integrales son aquellos que representan números que contienen tanto partes enteras como decimales. Para indicar que un valor es de tipo Decimal.15@ ' es Decimal 4.processtext.): 1. EnteroSig (32 bits) y ByteSig (8 bits).4 ' no es Decimal 468@ ' es Decimal 7 'no es Decimal Tipos de datos no numéricos Tipo de datos Cadena El tipo de datos Cadena es una secuencia de cero o más caracteres de un byte. el número debe tener el sufijo @: 2.. Los tipos de datos integrales con signo son WordSig (16 bits). Word (16 bits) y Byte (8 bits).5 ' es Real 5 ' no es Real 8. pero pueden representar valores positivos mayores. Si una variable almacena siempre números enteros en lugar de números con una parte decimal.0 'es Real El tipo de datos Decimal almacena números de 64 bits con coma fija de 4 decimales.. Los primeros 128 Page 61 . Los tipos integrales son especialmente útiles como variables de contador en bucles Contar. Los tipos de datos integrales sin signo son Entero (32 bits). declárela como variable de uno de estos tipos. Con el que más rápidos son es con el tipo de datos Entero y EnteroSig.ABC Amber CHM Converter Trial version. Para indicar que un valor es de tipo Real. El tipo de datos Real permite almacenar números reales de coma flotante con una presición de 64 bits. http://www.com/abcchm.html Tipos de datos elementales Tipos de datos numéricos Tipos de datos integrales Los tipos de datos integrales son aquellos que sólo representan números enteros. (Ver Resume de tipos de datos) Los operadores aritméticos son más rápidos con los tipos integrales que con cualquier otro tipo de datos. Si intenta asignar a una variable de un tipo integral un número que esté fuera del intervalo correspondiente a este tipo.

Los siguientes 128 puntos de código (128–255) representan caracteres especiales. declárela para que sea del tipo Cadena. declárela como de tipo Booleano.com/abcchm.html puntos de código (0–127) de ASCII corresponden a las letras y los símbolos de un teclado estándar americano. El valor predeterminado es Falso.000 millones (231) de caracteres. Si una variable siempre contiene una cadena de caracteres y nunca contiene un valor numérico. que crece o se reduce a medida que se le asignan datos nuevos. Una cadena puede contener hasta unos 2. Volver Page 62 . Si una variable sólo puede contener información de tipo verdadero/falso. Tipo de datos Booleano El tipo de datos Booleano es un valor sin signo de 8 bits que se interpreta como Verd (Verdadero) o Falso.ABC Amber CHM Converter Trial version. como letras de alfabetos latinos. sí/no o activado/desactivado. http://www.processtext. como en el ejemplo siguiente: S = "Hola" Un parámetro o variable Cadena siempre es una cadena de longitud variable. como en el ejemplo siguiente: Var S:Cadena A continuación puede asignar cadenas a esta variable y manipularla mediante el uso de procedimientos de cadena. acentos. símbolos de moneda y fracciones.

El tipo de datos de una instancia específica de una matriz está determinada por:     El hecho de ser una matriz La longitud de la matriz El tipo de matriz El tipo de elemento de la matriz A[12]:Byte B[2]:Byte C[2]:Entero D[]:Entero Esto queda reflejado en el ejemplo siguiente: Var Var Var Var En el ejemplo anterior. No existe ningún tipo de datos que incluya todas las estructuras. Por ejemplo. puede definir una matriz de elementos de estructura. como estructuras.processtext. La misma exclusividad es aplicable a las clases. una matriz de elementos Entero no es del tipo de datos Entero. Pueden crearse tipos de datos compuestos a partir de tipos elementales y de otros tipos compuestos. C y D no son del mismo tipo porque una matriz es estática y la otra dinámica.com/abcchm. Un tipo compuesto es diferente del tipo de datos de cualquiera de sus componentes. Las variables de matriz B y C no son del mismo tipo porque sus tipos de elemento son distintos. Introducción a las variables Introducción a las estructuras Matrices Introducción a las clases y los objetos Volver Page 63 . No existe ningún tipo de datos que incluya todas las matrices. también es posible juntar elementos de distintos tipos para crear tipos de datos compuestos.html Tipos de datos compuestos Además de los tipos de datos básicos que proporciona Pauscal. matrices y clases. o una estructura con miembros de matriz. las variables de matriz A y B no se consideran del mismo tipo de datos porque poseen distintas longitudes. En su lugar.ABC Amber CHM Converter Trial version. Por ejemplo. cada definición de una estructura representa un tipo de datos exclusivo. http://www.

Puesto que Pauscal asigna espacio para todos los elementos de una matriz. para distinguirlas. denominado índice o subíndice. que es igual a su tamaño menos uno. ya que es posible utilizar bucles que usen el índice para procesar eficientemente cualquier número de elementos de la matriz.ABC Amber CHM Converter Trial version. Declaración de matrices Usando las matrices Limitaciones de matrices estáticas Volver Page 64 . Tipo de elemento de matriz Una declaración de matriz especifica un tipo de datos y todos sus elementos deben ser de ese tipo. Se pueden declarar matrices de cualquiera de los tipos de datos fundamentales. se debe evitar declarar una matriz mayor de lo necesario. desde 0 hasta el mayor valor del subíndice de la matriz. de una estructura (ver Introducción a las estructuras) o de clases de objetos (ver Introducción a las clases y los objetos). De esta forma. En cambio una matriz dinámica puede variar su tamaño mediante la instrucción Redim. se puede crear un código más simple y reducido en muchos casos. Los elementos de la matriz son contiguos. Existen dos tipos de matrices: las matrices estáticas y las matrices dinámicas.processtext.html Matrices Las matrices permiten hacer referencia a una serie de variables mediante un mismo nombre y utilizar un número. Tamaño de matriz La matriz tiene un tamaño o longitud distinto de cero.com/abcchm. http://www. Una matriz estática no puede cambiar su tamaño.

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html

Declaración de matrices
Matrices estáticas
Las matrices estáticas se declaran de la misma forma que una variable, pero incluyendo su tamaño entre corchetes luego del nombre. Así:
Var Matriz[20]:Entero Var Nombres[10]:Cadena

Los elementos de una matriz van desde 0 hasta su tamaño menos 1. Por ejemplo, la siguiente matriz:
Var Elementos[10]:Entero

que posee 10 elementos, que van desde 0 (el primer elemento) hasta 9 (el último elemento).

Matrices dinámicas
Una matriz dinámica puede cambiar de tamaño en cualquier momento. Las matrices dinámicas son una de las características más flexibles de Pauscal, y le ayudan a administrar de forma eficiente la memoria. Por ejemplo, puede utilizar una matriz grande durante un tiempo corto y liberar memoria del sistema cuando no necesite volver a utilizar la matriz. La alternativa consiste en declarar la matriz con el mayor tamaño posible y pasar por alto los elementos de la matriz que no necesite. Sin embargo, esta solución, si se utiliza demasiado, puede hacer que el sistema operativo funcione con muy poca memoria. Para declarar una matriz dinámica, debe declarar la matriz como si fuese una estática, pero sin especificar su tamaño. Así:
Var Dinamico[]:Entero Var Elementos[]:Real

Pero antes de poder utilizarlas, hay que dimensionarlas. Para eso se utiliza la instrucción Redim:
Redim Elementos, 200

De esta forma dimensionamos la matriz para que almacene 200 elementos, que van de 0 hasta 199. La instrucción Redim permite, también, cambiarle el tamaño de una matriz dinámica que ya ha sido dimensionada:
Redim Elementos, 300

Ahora el tamaño de la matriz cambia de 200 a 300. Al cambiar el tamaño de una matriz dinámica que ya ha sido dimensionada, se pierden los valores que estaban almacenados en la matriz. Si necesita que los valores sean preservados, deberá agregarle a la instrucción Redim la palabra clave Preservar:
Redim Preservar Elementos, 255

En caso de que el nuevo tamaño de la matriz sea menor, Pauscal liberará los elementos eliminados. En el caso de que sean objetos, éstos serán destruídos.

El entorno de Pauscal Su primera aplicación

Page 65

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html

Fundamentos de la programación en Pauscal

Volver

Page 66

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html

Usando las matrices
Las matrices son útiles para trabajar con un conjunto de valores del mismo tipo de datos. Una matriz es una única variable con varios compartimentos para almacenar valores, mientras que una variable escalar (es decir, no matricial) sólo dispone de un compartimiento para almacenar un único valor. Se puede hacer referencia a la matriz como un todo si se desea hacer referencia a todos los valores que contiene, o bien se puede hacer referencia a sus elementos individuales uno a uno.

Acceso a los elementos de una matriz
Para acceder a un elemento de una matriz, se debe colocar el nombre de la matriz y el índice del elemento al que se desea acceder entre corchetes. Por ejemplo:
Var Matriz[10]:Entero Var Ret:Entero Matriz[0] = 8 Matriz[9] = 5 + Matriz[4] Matriz[2] = 3 Ret = Matriz[1]

El índice del elemento no necesariamente debe ser conocido en tiempo de diseño, sino que puede estar dado por una variable o incluso una llamada a un procedimiento:
Matriz[3] = 9 + Matriz[7 * Variable]

Acceso a la matriz completa
En ciertos casos puede que sea necesario acceder a toda la matriz, en lugar de acceder a un elemento en particular. Suponga que debe realizar una copia de una matriz determinada. Una forma sería mediante un bucle Contar asignar cada elemento de una matriz a la otra.
Var Matriz1[]:Cadena, Matriz2[]:Cadena Var i:EnteroSig Redim Matriz2, LongMat(Matriz1) Contar i = 0 a Límite(Matriz1) Matriz2[i] = Matriz1[i] Seguir

En este ejemplo se redimensiona la matriz de destino con la cantidad de elementos de la matriz de origen, luego se cuenta desde el primer elemento hasta el último, asignando en cada iteración el elemento en cuestión de la matriz de origen a la de destino. Aunque este método funciona perfectamente, hay una forma más fácil y rápida de copiar la matriz:
Matriz1 = Matriz2

Aquí Pauscal se encarga de copiar los elementos de la matriz de forma automática. Este método es más transparente e intuitivo, pero tiene sus limitaciones:
 

Las matrices deben ser del mismo tipo: no basta con que sean compatibles. Ambas matrices deben ser dinámicas. En caso de ser estáticas deben ser del mismo tamaño.

Page 67

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html

Devolver una matriz desde un procedimiento
Un procedimiento puede devolver una matriz. Es útil cuando un procedimiento debe devolver un número indefinido de valores, todos del mismo tipo. Por ejemplo, suponga que necesita un procedimiento que devuelva los nombres de las personas encargadas de un proyecto. Para ello el procedimiento puede devolver una matriz de elementos de tipo Cadena.
Proc Diseñadores():Cadena[] Resultado = ["Alberto", "Pedro", "Jaime"] FinProc Var Nombres[]:Cadena Nombres = Diseñadores()

Después de ejecutar el ejemplo anterior, la matriz Nombres posee tres elementos que corresponden a los valores devueltos por el procedimiento Diseñadores.

Constructor de matrices
Si es necesario que una matriz tenga determinados valores asignados a cada uno de sus elementos, se puede hacer:
Var Matriz[4]:Entero Matriz[0] Matriz[1] Matriz[2] Matriz[3] = = = = 7 87 135 28

Este método es perfectamente válido, pero si la matriz es grande, la sintaxis puede volverse engorrosa, complicada y muy larga. Afortunadamente hay otra forma de hacer lo mismo: emplear el constructor de matrices. La sintaxis del constructor de matrices es la siguiente:
matriz = [ listaElementos ]

donde listaElementos es una lista separada por comas de los elementos que debe tener la matriz. En el caso de matrices dinámicas, la cantidad de elementos de la lista no tiene límite práctico y puede variar; en cambio si la matriz es una matriz estática, la cantidad de elementos debe coincidir exactamente con la declaración de la matriz.
Var Matriz[4]:Entero Matriz = [7, 87, 135, 28]

Este código produce exactamente el mismo resultado que el código anterior, pero es mucho más simple y fácil de leer. La lista de elementos del constructor de matrices no necesariamente debe estar compuesta de constantes: puede ser cualquier expresión, incluso llamadas a procedimientos. Si el tipo de la matriz es una estructura, en la lista de elementos hay que emplear el constructor de estructuras (ver Temas avanzados sobre las estructuras).

Page 68

com/abcchm.processtext.html Matrices Volver Page 69 .ABC Amber CHM Converter Trial version. http://www.

http://www.html Limitaciones de matrices estáticas Las matrices estáticas poseen varias limitaciones comparadas con las matrices dinámicas. No pueden pasarse como parámetro a un procedimiento. Para poder asignar una matriz estática a otra. No son compatibles con las matrices dinámicas. ambas deben ser del mismo tamaño.processtext.com/abcchm. es decir su tamaño no puede variar. ya que es posible que en futuras versiones sean completamente removidas del lenguaje. Limitaciones      No pueden ser redimensionadas. Volver Page 70 . Se recomienda minimizar e incluso eliminar su uso.ABC Amber CHM Converter Trial version. Un procedimiento no puede devolver una matriz estática.

como cálculos de uso frecuente.html Introducción a los procedimientos Un procedimiento es un bloque de instrucciones de Pauscal delimitado por una instrucción de declaración y una instrucción FinProc. Se puede llamar a un procedimiento desde distintos lugares del código. Los procedimientos se invocan desde otras partes del código. Estos últimos también se conocen con el nombre de funciones. de modo que los procedimientos se prestan a servir de unidades de creación de la aplicación. Procedimientos y código estructurado Los procedimientos son útiles para realizar tareas repetitivas o compartidas. manipulación de texto y controles. Aunque Pauscal no requiere el uso de procedimientos.com/abcchm.processtext. Tipos de procedimientos En Pauscal existen dos tipos de procedimientos: los procedimientos que ejecutan acciones. es recomendable utilizarlos. que recibe el nombre de código de llamada. Declaración de procedimientos Parámetros de procedimientos Procedimientos recursivos Prototipos y variables de procedimientos Fundamentos de la programación en Pauscal Volver Page 71 . El código de llamada es una instrucción o una expresión contenida en una instrucción. Hay que tener en cuenta que la aplicación se leerá con mayor facilidad si subdivide los procedimientos grandes en procedimientos más pequeños. Es más fácil depurar unidades individuales que todo un programa sin procedimientos. http://www. éste devuelve el control al código que lo invocó. Cuando finaliza la ejecución de un procedimiento. y otras operaciones. además de ejecutar acciones. Los procedimientos desarrollados para un programa pueden utilizarse en otros programas. devuelven un valor al código de llamada. que hace referencia al procedimiento por su nombre y le transfiere el control. y los procedimientos que. generalmente sin tener que realizar grandes modificaciones.ABC Amber CHM Converter Trial version. La estructuración del código en procedimientos aporta las siguientes ventajas:   Los procedimientos permiten desglosar los programas en unidades lógicas independientes.

e inmediatamente devuelve el control al código de llamada.ABC Amber CHM Converter Trial version.. Devolver o Salir que se encuentre. La sintaxis de los parámetros en una lista de parámetros es la siguiente: [Opcional] [Referencia] nombre : tipo Si el parámetro es opcional. y opcionalmente puede devolver un valor. Devolver expresión 'El control se devuelve inmediatamente ' . como constantes. como se muestra a continuación: Opcional [Referencia] nombre : tipo [ = valorpredeterminado ] Valores devueltos En caso de que un procedimiento devuelva un valor..html Declaración de procedimientos Un procedimiento consiste en una serie de instrucciones delimitadas por las instrucciones Proc y FinProc. La sintaxis para declarar un procedimiento es la siguiente: Proc nombre[(listaparámetros)][:tiporetorno][[]] 'Instrucciones FinProc Declaración de parámetros Los parámetros de un procedimiento se declaran igual que las variables. FinProc          El procedimiento utiliza la instrucción Devolver para especificar el valor devuelto. que le pasa el código de llamada. Resultado = expresión 'El control permanece en el procedimiento ' . especificando el nombre y el tipo de datos del parámetro.. Cada vez que se llama a un procedimiento.. así como si se trata de un parámetro opcional.. variables o expresiones. No se devuelve el control al programa que realiza la llamada hasta que se ejecuta una instrucción FinProc o Salir.processtext. se ejecutan las instrucciones de éste. También puede especificarse el mecanismo que se va a utilizar para pasar el parámetro (ver Mecanismos para pasar parámetros). desde la primera instrucción ejecutable tras la instrucción Proc hasta la primera instrucción FinProc. Puede tomar parámetros. éste se denomina valor devuelto..com/abcchm. http://www. El procedimiento puede devolver dicho valor de dos maneras:  El procedimiento asigna un valor a la variable Resultado en una o más instrucciones del procedimiento. la declaración de éste puede contener también un valor predeterminado.. Un procedimiento ejecuta acciones. como en el siguiente ejemplo: Proc nombre[(listaparámetros)] : tiporetorno ' .. FinProc Page 72 . como en el siguiente ejemplo: Proc nombre[(listaparámetros)] : tiporetorno ' .

ABC Amber CHM Converter Trial version. Y. 1) 'devuelve una matriz de 4 elementos Sintaxis de llamada Para llamar a un procedimiento.html La ventaja de asignar el valor devuelto a la variable Resultado es que el control permanece en el procedimiento hasta que el programa encuentra una instrucción FinProc o Salir. Y)) Pauscal incluye varios procedimientos. En el siguiente ejemplo. y requiere dos parámetros: el primero indica el tamaño de la matriz. Puede llamar a estos procedimientos de la misma manera que llama a los procedimientos que ha creado usted mismo. Esto último se ilustra en los siguientes ejemplos de llamada: valor = nombreprocedimiento[(parámetros)] Si ((nombreprocedimiento[(parámetros)] / 3) <= expresión) . Proc DevolverMatriz(N.0. Hipotenusa(X. si es necesario. Introducción a los procedimientos Accesibilidad Page 73 . no es necesario utilizar ese valor.0) 'Devuelve 5 Area = AreaTriangulo(X. Cuando se llama a un procedimiento que devuelve un valor. en una expresión. Las llamadas a Mensaje suelen hacerse de esta manera. Un procedimiento tambien puede devolver una matriz..V:Entero):Entero[] 'devuelve una matriz Var i:Entero Redim Resultado. Para ello se deben agregar corchetes vacíos ("[] ") en la declaración del procedimiento. Lado2 : Real) : Real Devolver RaizCuad((Lado1 ^ 2) + (Lado2 ^ 2)) FinProc Son llamadas válidas a Hipotenusa las siguientes: Ret = Hipotenusa(4. Val. en el caso de que devuelva un valor.processtext. 3. y el segundo el valor de cada elemento de esa matriz. lo que permite asignar un valor previo y. http://www.com/abcchm.. Nota: la instrucción Devolver sólo funciona cuando el procedimiento devuelve un tipo de datos elemental. N Contar i = 0 a Límite(Resultado) Resultado[i] = V Seguir FinProc Var Números[]:Entero Números = DevolverMatriz(4. pero el valor devuelto se omite. El siguiente procedimiento calcula la hipotenusa de un triángulo rectángulo a partir de los valores de los catetos: Proc Hipotenusa (Lado1. hay que incluir el nombre y los parámetros de éste en la parte derecha de una asignación o. se puede ajustar después. el procedimiento DevolverMatriz devuelve una matriz de enteros. etc. Entre los más usados se encuentran Mensaje. en cuyo caso se ejecutan todas las acciones del procedimiento.

com/abcchm.html Parámetros de procedimientos Mecanismos para pasar parámetros Volver Page 74 .ABC Amber CHM Converter Trial version. http://www.processtext.

Elementos variables Elementos no variables Variables declaradas. puede pasarse un parámetro a un procedimiento por valor o por referencia. Pasar un parámetro por valor implica que el procedimiento no puede modificar el contenido del elemento variable en el código de llamada subyacente al parámetro. La siguiente tabla muestra elementos variables y no variables. un procedimiento necesita algunos datos sobre las circunstancias en las que se le ha llamado.N2:Entero) FinProc Prueba(P1(). téngalo en cuenta si en la lista de parámetros se incluyen más de una llamada a un procedimiento. con capacidad para cambiar de valor. P2 se llama antes que P1.processtext.com/abcchm. Los parámetros se pasan siempre por valor a menos que el parámetro fuera declarado con la palabra clave Referencia. Pasar un parámetro por referencia permite que el procedimiento modifique el contenido de la misma forma que puede hacerlo el propio código de llamada. Proc P1:Entero Resultado = 1 FinProc Proc P2:Entero Resultado = 2 FinProc Proc Prueba(N1. En el ejemplo siguiente. incluidas las variables de objetos Constantes Page 75 . constantes y expresiones que se pasan al procedimiento cuando se le llama. los parámetros se pasan de derecha a izquierda. Si bien esto no es de mucha importancia.ABC Amber CHM Converter Trial version. Orden de los parámetros Al llamar a un procedimiento. Parámetros por valor o por referencia En Pauscal. es decir de atras para adelante.P2()) 'Los parámetros se pasan de derecha a izquierda Parámetros variables y no variables El elemento de programación subyacente a un parámetro puede ser un elemento variable. Un valor que se pasa a un procedimiento se denomina parámetro.html Parámetros de procedimientos En la mayoría de los casos. http://www. Estos datos se componen de variables. o un elemento no variable. Un procedimiento que ejecuta tareas repetidas o compartidas utiliza datos distintos en cada llamada.

ABC Amber CHM Converter Trial version.com/abcchm. por esta razón no pueden ser pasados por referencia. http://www.processtext. Mecanismo para pasar parámetros Parámetros opcionales Volver Page 76 . (Ver Mecanismo para pasar parámetros).html y los campos Elementos matriciales Elementos estructurales Valores devueltos por los procedimiento Expresiones Los parámetros no variables no se modifican nunca en el código de llamada.

param4) ' No se pasan param2 ni param3.com/abcchm. Si fuese necesario hacer esta distinción. hay que utilizar comas sucesivas para delimitar sus posiciones. . Falso si es Booleano.processtext. o una cadena de longitud cero ("") si es Cadena. Opcional PersonaDestino:Cadena = "QJW") Si PersonaDestino = "QJW" ' Si no se especificó la persona de destino PersonaDestino = "Administrador" ' utilizamos el administrador FinSi ' Código para notificar FinProc Parámetros de procedimientos Volver Page 77 . se podría establecer como valor predeterminado un valor improbable. http://www. es decir. La siguiente sintaxis muestra una declaración de procedimiento con un parámetro opcional: Proc nombre(param1 : tipo1. Si se omiten uno o más parámetros opcionales de la lista de parámetros. Determinar si un parámetro opcional está presente En tiempo de ejecución un procedimiento no puede detectar si un parámetro determinado se ha omitido o si el código de llamada ha suministrado de forma explícita el valor predeterminado de dicho parámetro. Se aplican las siguientes reglas:    Los parámetros opcionales sólo pueden ser de un tipo de datos elemental. Los parámetros opcionales se indican mediante la palabra clave Opcional en la definición del procedimiento.ABC Amber CHM Converter Trial version. QJW. Si no se suministra. . En el ejemplo de llamada siguiente se suministran los parámetros primero y cuarto. se pasará cero (0) si el parámetro es numérico. pero no el segundo ni el tercero: nombre(param1. que no es necesario suministrarlo al llamar al procedimiento. el procedimiento utiliza el valor predeterminado declarado para dicho parámetro. ha sido omitido: Proc Notificar(Texto:Cadena. Todos los parámetros que vayan a continuación de un parámetro opcional en la definición del procedimiento también deben ser opcionales.html Parámetros opcionales Un parámetro de un procedimiento puede ser opcional si así se especifica. El valor predeterminado de un parámetro opcional debe ser una expresión constante. Opcional param2 : tipo2 = valorpredeterminado) Llamar a procedimientos con parámetros opcionales Cuando se llama a un procedimiento con un parámetro opcional. Si no se hubiera declarado un valor predeterminado. El procedimiento que se muestra a continuación incluye el parámetro opcional PersonaDestino y comprueba si su valor predeterminado. se puede elegir si se suministra o no el parámetro.

http://www. Por lo tanto. lo más eficiente es pasarlos por referencia. sólo se copia el puntero de cuatro bytes a los datos. Pasado por referencia El procedimiento puede modificar la variable y los miembros de ésta. Selección del mecanismo para pasar parámetros A la hora de elegir uno de los dos mecanismos que existen para pasar parámetros. En estos casos.com/abcchm. la interacción entre el tipo de datos del elemento y el mecanismo para pasarlos. la diferencia suele ser insignificante. el procedimiento no podrá modificarlo nunca en el código de llamada. Tipo de referencia El procedimiento no (contiene un puntero) puede modificar la variable. Tipo de elemento Pasado por valor Tipo de valor (sólo El procedimiento no contiene un valor) puede modificar la variable ni ninguno de los miembros de ésta. En la tabla siguiente se resume. se pueden pasar parámetros de objetos por valor sin perjudicar al rendimiento. como los objetos. El procedimiento puede cambiar la variable y el objeto al que señala.html Mecanismos para pasar parámetros Si se pasa un elemento no variable como parámetro. Existe una excepción: cuando se pasa una estructura o matriz por valor. Aunque el mecanismo que se utilice para pasar parámetros también puede afectar al rendimiento del código. Parámetros de procedimientos Volver Page 78 . pero puede cambiar el objeto al que señala. La ventaja de pasar un parámetro por referencia es que el procedimiento puede devolver un valor al código de llamada por medio del parámetro. Pauscal copia todo el contenido de los datos al parámetro. La ventaja de pasarlo por valor es que protege a la variable de los cambios que sobre ella pueda efectuar el procedimiento.ABC Amber CHM Converter Trial version. Para los tipos de referencia. En este caso. para un elemento variable. el criterio más importante que hay que tener en cuenta es la exposición al cambio de las variables de llamada.processtext.

http://www. Debe asegurarse de que los procedimientos recursivos no se llamen a sí mismos indefinidamente. se utiliza más espacio. llamar a Factorial de nuevo Devolver Factorial(N .1) * N FinSi FinProc Los programas tienen una cantidad de espacio limitado para las variables. Volver Page 79 .processtext. o tantas veces que puedan agotar la memoria. se acaba produciendo un error de desbordamiento de la pila. Si este proceso continúa indefinidamente.html Procedimientos recursivos Un procedimiento recursivo es aquél que se llama a sí mismo. Cada vez que un procedimiento se llama a sí mismo. el siguiente procedimiento utiliza la recursividad para calcular el factorial de su parámetro original: Proc Factorial(N:Entero):Entero Si N <= 1 ' Se alcanzó el final de las llamadas recursivas Devolver 1 SiNo ' N > 1.ABC Amber CHM Converter Trial version. o si nunca se cumple una condición que limita la recursividad.com/abcchm. Por ejemplo. La recursividad normalmente puede sustituirse por bucles. La causa puede ser menos evidente si dos procedimientos se llaman entre sí indefinidamente.

Una variable de procedimiento es una variable que se utiliza para llamar a un procedimiento. http://www. también es una característica muy poderosa si es usado correctamente. Una vez que la variable apunta a un procedimiento (en este caso. La variable vLlamada es de tipo pMostrar. El operador @ se utiliza para acceder a la dirección del procedimiento.com/abcchm.processtext. a Mostrar). que es asignada a la variable de procedimiento. se la utiliza como si fuera un procedimiento. Por ejemplo: Prototipo pMostrar(Texto:Cadena) Proc Mostrar(Texto:Cadena) Mensaje(Texto) Finproc Var vLlamada:pMostrar vLlamada@ = Mostrar@ vLlamada("Hola") En el ejemplo anterior se puede apreciar el funcionamiento de una variable de procedimiento. Introducción a los procedimientos Declaración de procedimientos Volver Page 80 . Nota: Pauscal no verifica que el procedimiento concuerda con el prototipo. que es el prototipo del procedimiento Mostrar. Si bien esto puede ocasionar errores y un mal funcionamiento del programa.html Prototipos y variables de procedimientos Un prototipo es una definición de un procedimiento y se emplea para crear variables de procedimientos.ABC Amber CHM Converter Trial version.

processtext. Las instrucciones de decisión que admite Pauscal incluyen:    Si Seleccionar AdmErr Estructuras de programación En esta categoría se ubican las estructuras de programación que no son de bucles ni de desición.com/abcchm. los distintos valores de una expresión o las diferentes excepciones que se generan al ejecutar una serie de instrucciones. http://www. hasta que sea falsa o un número de veces especificado. Puede comprobar si una condición es verdadera o falsa. Las estructuras de bucles que admite Pauscal incluyen:    Mientras Repetir Contar Estructuras de desición Pauscal permite probar condiciones y realizar diferentes operaciones en función de los resultados de la prueba.ABC Amber CHM Converter Trial version. Una instrucción puede repetirse hasta que una condición sea verdadera.html Introducción a las estructuras de control Estructuras de bucles Las estructuras de bucles permiten ejecutar una o más líneas de código repetitivamente.   Eval Bloque Estructuras de control anidadas Instrucción "Salir" Fundamentos de la programación en Pauscal Volver Page 81 .

es decir. Num : Entero Num = 8 Mientras Num <> 10 Si Num < 0 Salir Mientras FinSi Num = Num . un número de veces indefinido. Un uso de esta instrucción consiste en comprobar una condición que pudiera ocasionar un bucle sin fin. el procedimiento TestearMientras comprueba la condición antes de entrar en el bucle. que han sido convertidos a valores de tipo Booleano. La ejecución en bucle continúa mientras el valor de la condición permanezca en Verdadero. un bucle que pudiera ejecutarse un número extremadamente elevado de veces e incluso infinitamente. La instrucción Mientras comprueba siempre la condición antes de iniciar el bucle. Esto incluye los valores de otros tipos de datos. Generalmente. http://www. el bucle continúa ejecutándose.1 Contador = Contador + 1 FinMientras ' Contador vale 4 en este punto FinProc Puede transferirse el control fuera de una instrucción Mientras mediante la instrucción Salir Mientras. como los numéricos.processtext.ABC Amber CHM Converter Trial version.com/abcchm. Proc EjemploSalirMientras() Var Contador. pero también puede ser cualquier expresión que da como resultado un valor de tipo Booleano ( Verdadero o Falso). Las instrucciones se repiten mientras la condición sea Verdadero. Si la condición es Falso. La instrucción Si realiza esta comprobación y sale si existe el valor para evitar un bucle sin fin.html Bucle "Mientras" Se puede utilizar la instrucción Mientras para ejecutar un bloque de instrucciones. En el ejemplo siguiente. utilice Salir Mientras para salir. las instrucciones del bucle nunca se ejecutarían.1 Contador = Contador + 1 FinMientras ' Contador vale 9 en este punto FinProc Estructuras de control anidadas Instrucción "Salir" Volver Page 82 . dependiendo del valor de tipo Booleano de una condición. la condición es el resultado de comparar dos valores. En el siguiente ejemplo se asigna a Number un valor que podría ocasionar que el bucle se ejecutara más de 231 veces. Si Num se hubiera inicializado en 6 y no en 10. Si la condición es Verdadero. Num : Entero Num = 10 Mientras Num > 6 Num = Num . Proc TestearMientras() Var Contador.

las instrucciones dentro del bucle se ejecutan incondicionalmente. Se utiliza la salida alternativa (ver más abajo) para no entrar en un bucle infinito.ABC Amber CHM Converter Trial version. La ejecución en bucle continúa mientras la condición permanezca en Falso. seguido de la condición.processtext. Num : Entero Num = 20 Repetir Num = Num . La instrucción Repetir también puede funcionar de forma incondicional. pero también puede ser cualquier expresión que da como resultado un valor de tipo Booleano (Verdadero o Falso). Generalmente. Num : Entero Num = 20 Repetir Num = Num . Las instrucciones se repiten hasta que el valor sea Verdadero. las instrucciones dentro del bucle se ejecutan una vez antes de comprobar la condición.1 Contador = Contador + 1 Si Num = 15 Salir Repetir FinSi PorSiempre ' Contador vale 5 en este punto Page 83 . como los numéricos. La única forma de romper el bucle es por medio de una salida alternativa.1 Contador = Contador + 1 HastaQue Num = 15 ' Contador vale 5 en este punto FinProc Repetir instrucciones incondicionalmente Utilizar el bucle de esta manera significa terminar el bucle Repetir con la instrucción PorSiempre. la condición es el resultado de comparar dos valores. luego se evalúa la condición. La ejecución en bucle continúa indefinidamente. (Ver más abajo). En el ejemplo siguiente. Proc TestearRepetirHastaQue() Var Contador. es decir que sus instrucciones se ejecuten un número de veces indefinido sin depender de una condición. Proc TestearRepetirHastaQue() Var Contador. que han sido convertidos a valores de tipo Booleano. En el ejemplo siguiente.com/abcchm. Esto incluye los valores de otros tipos de datos. que es Falso en la primera prueba. El bucle se ejecuta al menos una vez.html Bucle "Repetir" Puede utilizar la instrucción Repetir para ejecutar un bloque de instrucciones un número de veces indefinido dependiendo del valor de tipo Booleano de una condición. http://www. Repetir instrucciones hasta que una condición sea Verdadera Utilizar el bucle de esta manera significa terminar el bucle Repetir con la instrucción HastaQue.

Un uso de esta instrucción consiste en comprobar una condición que pudiera ocasionar un bucle sin fin.com/abcchm. es decir.processtext. Si la condición es Falso.html FinProc Salir de un bucle Repetir desde dentro del bucle Puede transferirse el control fuera de un bucle Repetir mediante la instrucción Salir Repetir. Si la condición es Verdadero. un bucle que pudiera ejecutarse un número extremadamente elevado de veces e incluso infinitamente. utilice Salir Repetir para salir. http://www. el bucle continúa ejecutándose.ABC Amber CHM Converter Trial version. Estructuras de control anidadas Instrucción "Salir" Volver Page 84 .

Normalmente también son Entero. La instrucción Seguir incrementa el contador en 1.com/abcchm. La sintaxis es la siguiente: Contar contador = inicio A final [ Dec ] ' Instrucciones a ejecutar para cada valor de contador. Límite (que devuelve el índice del último elemento de una matriz) sólo se invoca cuando la instrucción Contar se ejecuta por primera vez. A diferencia de otros bucles. puede desear salir de un bucle si detecta una condición que hace que sea innecesario o imposible continuar la iteración. Los valores de iteración inicio y final son expresiones que deben evaluarse como tipos de datos enteros. Por ejemplo. compara contador con final. y vuelve a la instrucción Contar. generalmente es de tipo Entero. Proc Inicializar(Referencia M[]:Entero) Var i: Entero Contar i = 0 a Límite(M) M[i] = 128 Seguir FinProc Los valores de iteración inicio y final sólo se evalúan una vez.html Bucle "Contar" Los bucles Repetir y Mientras funcionan bien cuando no se sabe de antemano cuántas veces se necesitan ejecutar las instrucciones en el bucle. Cada vez que Pauscal encuentra la instrucción Seguir. La palabra clave Dec opcional permite controlar la dirección de la cuenta. En el ejemplo anterior. porque se omite Dec.processtext. como puede ser un valor erróneo o una solicitud de Page 85 . antes de iniciarse el bucle. Seguir La variable contador debe ser un tipo de datos numérico entero que admita los operadores mayor que ( >). http://www. el bucle Contar seguiría utilizando la longitud original como valor final. Si el bloque de instrucciones hubiera cambiado posteriormente la longitud de la matriz M. el bucle Contar finaliza y el control pasa a la instrucción que sigue a Seguir. de lo contrario la cuenta es negativa.ABC Amber CHM Converter Trial version. si tiene previsto ejecutar el bucle un número específico de veces. menor que (<) y suma (+). Después asigna inicio a contador. la cuenta es positiva. No obstante. incrementa (si se omite Dec) o decrementa (si Dec está presente) en uno el contador. Vuelve a comparar el contador con final. y una vez más ejecuta el bloque o termina el bucle dependiendo del resultado. El procedimiento siguiente preestablece todos los elementos de una matriz en 128. un bucle Contar utiliza una variable denominada contador cuyo valor aumenta o disminuye cada vez que se repite el bucle. Al iniciarse la ejecución del bucle Contar. un bucle Contar es una opción mejor. se ejecuta el bloque de instrucciones. estos cambios no afectan a la iteración del bucle. puesto que no vuelve a llamar a Límite. si se omite. La instrucción Contar especifica la variable de contador i y sus valores de inicio y fin. Este proceso continúa hasta que el contador supera final o se ejecuta una instrucción Salir Contar. Si contador ya ha superado el valor final. Antes de ejecutar el bloque de instrucciones. En caso contrario. Salir de un bucle Contar antes de que el contador supere su valor final Puede salir de un bucle Contar antes de que el contador supere su valor final utilizando la instrucción Salir Contar. Pauscal evalúa inicio y final. Si el bloque de instrucciones cambia final.

http://www.processtext.ABC Amber CHM Converter Trial version.com/abcchm.html finalización. Estructuras de control anidadas Instrucción "Salir" Volver Page 86 .

pero también puede ser cualquier expresión que da como resultado un valor de tipo Booleano (Verdadero o Falso). se ejecuta el otro. Esto incluye los valores de otros tipos de datos. y si es Falso.html Bloque "Si" Se pueden utilizar instrucciones Si para ejecutar una instrucción específica o un bloque de instrucciones dependiendo del valor de tipo Booleano de una condición.com/abcchm. Si no existe código que ejecutar cuando la condición es Falso. la condición es el resultado de comparar dos valores. se omite la instrucción SiNo. Generalmente. http://www.processtext. desee utilizar instrucciones Seleccionar en lugar de varios niveles de instrucciones Si anidadas. como los numéricos. se puede utilizar la sintaxis de una sola línea del bloque Si omitiendo las instrucciones SiNo y FinSi. como muestra el ejemplo siguiente: Proc Comprobar Var Valor:Entero Si (Valor < 500) Valor = 500 FinProc Para ejecutar más de una línea de código cuando la condición es Verdadero se utiliza la sintaxis de varias líneas. Proc Comprobar(Valor:Entero):Entero Si Valor < 500 Resultado = 500 SiNo Resultado = Valor FinSi FinProc Las instrucciones Si se pueden anidar a tantos niveles como sea necesario. como se muestra en el ejemplo siguiente: Proc Comprobar Var Valor:Entero Si Valor < 500 Mensaje("Valor inválido") Valor = 500 FinSi FinProc Ejecutar algunas instrucciones si una condición es verdadera y otras si es falsa Puede utilizar el bloque Si con la instrucción SiNo para definir dos bloques de instrucciones ejecutables. Si el valor de la condición es Verdadero. que han sido convertidos a valores de tipo Booleano Ejecutar instrucciones si una condición es Verdadero Para ejecutar sólo una instrucción cuando una condición es Verdadero. Estructuras de control anidadas Instrucción "Salir" Bloque "Seleccionar" Page 87 . No obstante.ABC Amber CHM Converter Trial version. que incluye la instrucción FinSi. se ejecuta un bloque. es posible que en favor de la legibilidad.

com/abcchm.html Volver Page 88 .ABC Amber CHM Converter Trial version.processtext. http://www.

5. Pauscal compara el valor de la expresión con los valores de las instrucciones Caso en el orden en que éstos aparecen en el bloque Seleccionar.html Bloque "Seleccionar" Cuando compara una misma expresión con varios valores diferentes. Si bien esto en general no afecta en nada. Puede utilizarse cualquier número de instrucciones Caso e incluirse u omitirse una instrucción Caso Otro . A diferencia de las instrucciones Si. ejecuta el bloque de instrucciones correspondiente. Cuando una instrucción Caso contiene más de un valor. Proc Bono(Performance:Entero. 7 ' Performance es 5. 3 ' Performance es 2 o 3. o 7. Devolver Salario * 0. Por ejemplo. que pueden evaluar una expresión diferente en cada instrucción. Si encuentra una coincidencia o una instrucción Caso Otro. 6.09 Caso 4. En el ejemplo siguiente se usa Seleccionar para evaluar el nivel de rendimiento que se pasa al procedimiento. el bloque Caso se ejecuta si cualquiera de los valores coincide con el valor de la expresión de instrucción Seleccionar. 6. Devolver Salario * 0. Devolver Salario * 0. http://www. 2 ' Pauscal encuentra el valor coincidente ' antes de llamar a Ret() ' Instrucciones Caso 1 ' Instrucciones FinSeleccionar Estructuras de control anidadas Instrucción "Salir" Page 89 . hay casos en los que hay que tener cuidado.com/abcchm. deja de evaluar las expresiones en ese instante. la instrucción Seleccionar evalúa una única expresión una sola vez y la utiliza para cada comparación. en el siguiente caso el procedimiento Ret nunca se llama: Proc Ret:Entero Resultado = 3 FinProc Seleccionar 4 Caso 5 ' Instrucciones Caso 4. Observe que cada instrucción Caso puede contener más de un valor. Ret(). puede utilizar las instrucciones Seleccionar como alternativa a las instrucciones Si. Salario:Real):Real Seleccionar Performance Caso 1 ' Performance es 1.1 Caso 2.ABC Amber CHM Converter Trial version. después ejecuta el código que sigue a la instrucción FinSeleccionar.07 Caso Otro ' Performance es otro valor. Devolver 0 inSeleccionar FinProc Cuando Pauscal encuentra una instrucción Caso cuyo valor coincide con la expresión de la instrucción Seleccionar. En cualquier caso.processtext.

html Bloque "Si" Volver Page 90 .processtext.ABC Amber CHM Converter Trial version.com/abcchm. http://www.

el bloque Finalmente es siempre el código que se ejecuta en Page 91 . Si ha proporcionado la instrucción Finalmente. Cuando termina de ejecutar el bloque Controlar. En cualquier caso. Si la encuentra.EscribirLn("Error") FinSi Finalmente Dos. En el ejemplo siguiente.Finalizar FinAdmErr El bloque Controlar se ejecutará en caso de que ocurra una excepción.EscribirLn("Valor inválido") SiNo Dos. ejecuta el bloque Finalmente.EscribirLn("Valor fuera de rango") FinSi Controlar CodigoDeExcepcion Si (CodigoDeExcepcion=errTipoIncompatible) Dos. excepto cuando se sale del bloque debido a una instrucción Salir AdmErr. esta variable recibe el valor numérico de la excepción. Pauscal ejecuta el bloque de instrucciones que está a continuación de dicha instrucción. Pauscal busca la instrucción opcional Controlar. en caso de estar presente. se controla la excepción errTipoIncompatible.processtext. Si se produce una excepción. se dice que el código provoca la excepción. la ejecución continúa en la instrucción que sigue a FinAdmErr.ABC Amber CHM Converter Trial version. que es generada cuando el usuario ingresa un valor no numérico.EscribirLn("Ingrese un número entre 0 y 100:") AdmErr Valor = Dos. Si bien las instrucciones Controlar y Finalmente son opcionales. Cuando esto ocurre. http://www. Si se incluye la instrucción opcional Finalmente. Así puede ejecutarse un bloque concreto de instrucciones si se produce una excepción especificada mientras se ejecuta el código. se ejecutan las instrucciones que ha proporcionado la instrucción Controlar. debe utilizarse al menos una de ellas. el bloque de instrucciones correspondiente es siempre el último código que se ejecuta inmediatamente antes de que el control abandone AdmErr. En caso de ocurrir una excepción. Si Pauscal finaliza este bloque sin que se genere una excepción. Las instrucciones Controlar y Finalmente puede opcionalmente especificar una variable de tipo Entero . Después.Esperar Dos. busca la instrucción opcional Finalmente al final del bloque. En el ejemplo. Con independencia de lo que suceda. se utiliza el bloque AdmErr para verificar si el usuario ingresó un valor numérico válido: Var Valor:Real Var CodigoDeExcepcion:Entero Crear Dos Dos.html Bloque "AdmErr" Puede utilizar la instrucción AdmErr para el control estructurado de excepciones. a continuación el control se transfiere a la instrucción que sigue a la instrucción FinAdmErr.com/abcchm. que se detecta con la instrucción Controlar correspondiente.LeerReal() Si (Valor < 0) o (Valor > 100) Dos. La ejecución entra en el bloque AdmErr con el bloque de instrucciones que sigue a la instrucción AdmErr.

Introducción al control estructurado de excepciones Estructuras de control anidadas Instrucción "Salir" Volver Page 92 .html último lugar antes de abandonar AdmErr. http://www.com/abcchm.ABC Amber CHM Converter Trial version.processtext.

Ancho = 105 Eval .. puede utilizar una instrucción Eval. De este modo puede acelerar la ejecución de los procedimientos y evitar la escritura repetitiva.Nombre = "Times New Roman" . utilice la instrucción Salir Eval.Items[4] Si . Eval Obj.FinEval para conseguir mayor eficacia.Subrayado = Verd ' igual a Obj.Fuente .Nombre = "Times New Roman" .Fuente .Fuente .Ancho = 105 Eval .Subrayado = Verd FinEval Puede anidar instrucciones Eval.ABC Amber CHM Converter Trial version. Eval Obj.Fuente.Tamaño = 14 .Nombre = "Item" .Nombre = "Times New Roman" ' igual a Obj.Items[4].. Sin embargo. si tiene una serie de instrucciones que operan en un mismo objeto.Items[4].Tamaño = 14 ' igual a Obj.Modificado = Falso Salir Eval FinSi .Items[4] .Tamaño = 14 .Nombre = "Item" . Eval Obj.Tamaño = 14 .com/abcchm. En el siguiente ejemplo se accede a varios miembros de un objeto sin calificarlo completamente.Items[4].FinEval para especificar el objeto solo una sola vez para todas las instrucciones.Items[4].Nombre = "Times New Roman" .Subrayado = Verd FinEval FinEval Para salir prematuramente de un bloque Eval.processtext. http://www..Subrayado = Verd FinEval FinEval Estructuras de control anidadas Introducción a las clases y los objetos Instrucción "Salir" Volver Page 93 .html Estructura "Eval" En Pauscal generalmente se debe especificar un objeto en cada instrucción que llame a uno de sus métodos o que tenga acceso a una de sus propiedades..

K + i) FinBloque ' Después de Salir Bloque la ejecución continúa aquí Seguir Estructuras de control anidadas Instrucción "Salir" Volver Page 94 . Se utiliza para salir de varias estructuras de desición y/o de bucles anidadas.html Estructura "Bloque" La instrucción Bloque permite definir una estructura de programación Bloque.ABC Amber CHM Converter Trial version.com/abcchm..V.. B) Si K = 0 Salir Bloque ' Permite que el bucle Contar siga haciendo ' las iteraciones.processtext. http://www. Sería complicado salir de ' los bloques Repetir y Mientras manualmente ' sin emplear la estructura de programación ' Bloque.FinBloque. La única función de esta estructura es la de ser un punto de referencia para la instrucción Salir Bloque. FinSi FinMientras HastaQue (K + i) = (B * A) K = B + A * K A = CalcularValor(V. Contar i = 1 a 10 Bloque A = i + A Repetir V = "" Mientras V = "" K = 9 + i * K B = i * A V = HacerLlamada(K .

http://www. bucle o procedimiento. Salir de instrucciones de control anidadas Si se encuentra una instrucción Salir dentro de instrucciones de control anidadas. para ello especifique Salir solamente:  Las instrucciones Salir pueden aparecer todas las veces que sea necesario. Transfiere inmediatamente la ejecución a la instrucción que sigue a la última instrucción de control.html Instrucción "Salir" La instrucción Salir permite salir directamente de cualquier estructura de decisión.processtext. Estas instrucciones son útiles cuando un procedimiento ha completado su cometido y puede volver inmediatamente.com/abcchm. En el siguiente ejemplo se muestra esto dentro de un bucle Mientras : Mientras y <> -1 Si (x < 0) Salir Mientras x = RaizCuad(x) Si (y > 0) Salir Mientras y = y + 3 Si (z = 0) Salir Mientras z = x / z FinMientras Introducción a las estructuras de control Estructuras de control anidadas Page 95 . Múltiples instrucciones Salir La instrucción Salir en cualquiera de sus formas puede aparecer tantas veces como sea necesaria dentro del bucle o instrucción apropiados.ABC Amber CHM Converter Trial version. en cualquier punto del cuerpo del procedimiento. Son posibles las siguientes versiones de la instrucción Salir:        Salir Contar Salir Mientras Salir Repetir Salir Eval Salir Bloque Salir Seleccionar Salir AdmErr Salir También puede salir directamente de un procedimiento. Incluso pueden aparecer dentro de una instrucción de control como Si. la ejecución continúa con la instrucción que sigue al final de la instrucción de control más interna del tipo especificado en la instrucción Salir. La sintaxis de la instrucción Salir especifica el tipo de instrucción de control desde la que se transfiere la ejecución.

http://www.ABC Amber CHM Converter Trial version.processtext.com/abcchm.html Volver Page 96 .

por ejemplo un bloque Si dentro de un bucle Contar. Cuando una instrucción de control se coloca dentro de otra.ABC Amber CHM Converter Trial version. en las instrucciones Si anidadas. la instrucción FinMientras más interna está emparejada con la instrucción Mientras más interna.html Estructuras de Control Anidadas Puede colocar instrucciones de control dentro de otras instrucciones de control. las instrucciones de control pueden anidarse tantos niveles como se desee.com/abcchm.processtext. el procedimiento multiplica cada elemento de la primera matriz por cada elemento de la segunda matriz. es práctica habitual aplicar sangría al cuerpo de cada uno. las instrucciones FinSi se aplican automáticamente a la instrucción Si anterior más próxima. Los bucles Mientras anidados funcionan de forma similar. j : Entero Contar i = 0 a Límite(M1) Contar j = 0 a Límite(M2) Resultado = Resultado + M1(i) * M2(j) Seguir Seguir FinProc Observe que el primer Seguir cierra el bucle Contar interno y el último Seguir cierra el bucle Contar externo. http://www. y devuelve la suma de esas multiplicaciones: Proc Multiplicar(M1[]:Entero. A fin de que las estructuras de decisión y los bucles anidados sean más fáciles de leer. se dice que está anidada. En el ejemplo siguiente. M2[]:Entero):Entero Var i. En Pauscal. Del mismo modo. Volver Page 97 .

su extensión telefónica y su salario. muchas instancias de la variable. Declaración de estructuras Variables de estructura Temas avanzados de estructuras Uniones Fundamentos de la programación en Pauscal Volver Page 98 . La ventaja de la estructura se hace evidente si tiene muchos empleados y. o bien definir una estructura y utilizarla para una única variable de empleado.ABC Amber CHM Converter Trial version. Por ejemplo. quizás desee mantener juntos el nombre de un empleado. Podría utilizar varias variables para esta información. Las estructuras son útiles si se quiere que una única variable contenga varios datos relacionados. Una estructura asocia uno o más miembros entre ellos y con la propia estructura. Al declarar una estructura. por consiguiente. http://www. ésta se convierte en un tipo de datos compuesto y se puede declarar variables de este tipo.com/abcchm.processtext.html Introducción a las estructuras Se pueden combinar elementos de datos de distintos tipos para crear una estructura.

Los miembros pueden ser de cualquier tipo de datos. Si desea mantener un nombre de empleado. Nombre:Cadena. _ ExtTel:Entero. su extensión telefónica y su salario juntos en una única variable. _ Salario:Real De esta forma se hace más fácil la lectura e interpretación de los miembros de la estructura. ExtTel:Entero.processtext. _ Nombre:Cadena. Salario:Real Para facilitar la lectura de una estructura. Para ello se utiliza el carácter de subrayado (_). que indica que la línea de código continúa en la siguiente línea. puede declarar una estructura para esta información de la siguiente manera: Estruc Empleado.html Declaración de estructuras Una declaración de estructuras se realiza mediante la instrucción Estruc. http://www. Introducción a las estructuras Accesibilidad Variables de estructura Volver Page 99 .com/abcchm. se recomienda separar la estructura de tal forma que cada miembro quede en una línea diferente. (Ver Introducción a las instrucciones).ABC Amber CHM Converter Trial version. Estruc Empleado. A continuación debe declararse por lo menos un miembro.

CPU = "Pentium III" Si (TuSistema. puede crear una estructura que registre información acerca de un sistema de equipo. se copia el puntero a los datos.CPU = "Pentium IV") Mensaje("Buen procesador") También puede asignar una variable a otra si ambas son del mismo tipo de estructura. Introducción a las estructuras Declaración de estructuras Temas avanzados de estructuras Volver Page 100 . _ SistemaOperativo:Cadena.processtext. Por ejemplo. como en el código siguiente: Estruc InfoDeSistema. Por ejemplo. utilice la misma sintaxis que para establecer y obtener propiedades de un objeto.ABC Amber CHM Converter Trial version. se pueden declarar variables de procedimiento y de módulo como del mismo tipo. TuSistema : InfoDeSistema Acceso a valores de estructura Para asignar y recuperar valores de los elementos de una variable de estructura. _ Memoria:Entero Ahora puede declarar variables de ese tipo de la siguiente manera: Var MiSistema. mediante la utilización de las variables declaradas anteriormente como InfoDeSistema. en el ejemplo anterior se habría copiado el puntero de MiSistema a TuSistema. _ CPU:Cadena.html Variables de estructura Una vez creada una estructura. Si InfoDeSistema hubiera incluido una variable de objeto. Si lo hace. puede obtener acceso a sus elementos del modo siguiente: MiSistema. se copiarán todos los elementos de una estructura en los elementos correspondientes de la otra. como en el ejemplo siguiente: TuSistema = MiSistema Si un elemento de una estructura es de tipo referencia.com/abcchm. http://www. como un objeto o un puntero. y los cambios realizado en los datos del objeto a través de una estructura habrían surtido efecto al tener acceso a ellos a través de la otra estructura.

así como unos con otros.Memoria = lstMemoria.ItemSeleccionado) Sistema. _ Discos[]:Cadena Se obtiene acceso a los valores de una matriz de una estructura del mismo modo que se obtiene acceso a una propiedad de un objeto.Discos[2] = "100M SCSI" Estructuras y objetos Una estructura puede contener un objeto como uno de sus elementos. _ Memoria:Entero.Discos[0] = "1.SistemaOperativo = "Windows XP" FinProc El ejemplo anterior pasa la estructura por referencia. lo cual permite al procedimiento modificar sus Page 101 . _ Nombre:Cadena. como se muestra en este ejemplo: TodosLosSistemas[5].Discos. http://www. objetos y variables de procedimientos.CPU = txtCPU. como se muestra en este ejemplo: Estruc InfoDeSistema.processtext. _ Formulario:pscForm Estructuras y procedimientos Puede pasar una estructura como parámetro de un procedimiento.html Temas avanzados sobre las estructuras Se pueden utilizar estructuras conjuntamente con matrices.CPU = "486" TodosLosSistemas[5].com/abcchm. como se muestra en este ejemplo: Proc LlenarDatos(Referencia Sistema:InfoDeSistema) Sistema. Las interacciones utilizan la misma sintaxis que utilizan estos elementos de forma individual.ABC Amber CHM Converter Trial version. como se muestra en el siguiente ejemplo: Estruc Info. Estructuras y matrices Una estructura puede contener una matriz como uno de sus elementos. _ CPU:Cadena.Items. 3 MiSistema. _ SistemaOperativo:Cadena. como se muestra en este ejemplo: Var TodosLosSistemas[100]:InfoDeSistema Las mismas reglas se siguen para obtener acceso a los componentes de esta arquitectura de datos. como se muestra en este ejemplo: Var MiSistema:InfoDeSistema Redim MiSistema.Texto Sistema.Item(lstMemoria.44 MB" También se puede declarar una matriz de estructuras.

http://www. _ Tamaño:Entero Estruc InfoDeSistema. 512} Page 102 . El constructor de estructuras permite asignar de una sola vez todos los miembros de una estructura. _ Memoria:Entero. También puede obtener una estructura como resultado de un procedimiento. _ SistemaOperativo:Cadena.processtext. pásela por valor.html elementos de tal forma que los cambios se hacen efectivos en el código de llamada. _ SistemaOperativo:Cadena.Tipo = "Disco 3 1/2" Las estructuras pueden contener otras estructuras hasta cualquier nivel. y los tipos de datos deben ser compatibles. Si desea proteger una estructura frente a una modificación de este tipo.Discos[0]. _ CPU:Cadena. _ CPU:Cadena. _ Tipo:Cadena. _ Memoria:Entero Var MiSistema:InfoDeSistema MiSistema = {"Pentium IV". No se encontró el CPU buscado FinProc Estructuras dentro de estructuras Las estructuras pueden contener otras estructuras. llamado constructor de estructuras. como se muestra en el ejemplo siguiente: Estruc InfoDeDisco. El orden y la cantidad de los elementos debe coincidir exactamente con la declaración de la estructura. Constructor de estructuras Hay una forma de asignación que solamente es válido para las estructuras. _ Discos[]:InfoDeDisco Var TodosLosSistemas[100]:InfoDeSistema TodosLosSistemas[1]. Estruc InfoDeSistema. como se muestra en este ejemplo: Var TodosLosSistemas[100]:InfoDeSistema Proc BuscarCPU(CPU:Cadena):InfoDeSistema Var i:Entero Contar i = 0 a 99 Si (TodosLosSistemas[i]. "Windows XP".ABC Amber CHM Converter Trial version.com/abcchm.CPU=CPU) Resultado = TodosLosSistemas[i] Salir FinSi Seguir ' Error. La sintaxis del constructor de estructuras es la siguiente: variableEstructura = { listaElementos } donde listaElementos es una lista separada por comas de los valores de los miembros de la estructura.

en la lista de elementos hay que emplear el constructor de matrices (ver Usando las matrices). incluso llamadas a procedimientos.ABC Amber CHM Converter Trial version.html La lista de elementos del constructor de estructuras no necesariamente debe estar compuesta de constantes: puede ser cualquier expresión. Introducción a las estructuras Declaración de estructuras Matrices Volver Page 103 . http://www.processtext. Si la estructura tiene matrices.com/abcchm.

.ABC Amber CHM Converter Trial version. miembro1:tipo[.b vale 6 En cambio. miembro2:tipo]. En el siguiente ejemplo. La diferencia radica en que los miembros de una estructura tienen un espacio asignado individualmente en la memoria. Las uniones se declaran de forma análoga a las estructuras. en el siguiente ejemplo. http://www.a = 8 ' En este punto P. los miembros a y b comparten el mismo espacio de memoria. el valor de b no cambia.com/abcchm.a vale 8 y P. Introducción a las estructuras Volver Page 104 .b = 6 P.a vale 8 y P. Estruc sPrueba. Unión uPrueba..processtext. _ a : Entero.b vale 8 El tamaño de una unión es siempre igual al tamaño de su miembro más grande. _ b : Entero Var P:sPrueba P. pero utilizando la instrucción Unión : Unión nombre. lo que significa que si a varía.html Uniones Una unión es muy similar a una estructura. _ a : Entero. _ b : Entero Var P:uPrueba P.a = 8 ' En este punto P. los miembros a y b de la estructura son elementos separados: cuando en a se almacena un valor. b también varía.b = 6 P. en cambio en una unión todos los miembros comparten el mismo espacio de memoria.

Encapsulación La encapsulación es la capacidad de contener y controlar el acceso a un grupo de elementos asociados. Clases y objetos Los términos "clase" y "objeto" se utilizan a veces indistintamente. para evitar que procedimientos externos ejecuten métodos de clase o lean y modifiquen datos privados. Puede trabajar con varias cuentas bancarias al mismo tiempo sin confusión.com/abcchm. http://www. esta técnica se denomina ocultación de datos. Con la analogía de plano. En el ejemplo siguiente. y un objeto es un edificio basado en ese plano. La encapsulación también permite controlar la forma de utilizar los datos y los procedimientos. mientras que los objetos son instancias de clases que se pueden utilizar. Los detalles internos de una clase deben declararse como Privado para evitar que sean utilizados fuera de la misma. campos y métodos que forman objetos de la misma forma que los planos describen los elementos que componen un edificio. y propiedades que describen una cuenta bancaria. una clase es un plano. Se pueden utilizar modificadores de acceso.html Introducción a las clases y los objetos Las clases son representaciones simbólicas de objetos. Las clases proporcionan una de las formas más comunes de encapsular elementos. Una de las reglas básicas de la encapsulación es que los datos de clase sólo se deben modificar o recuperar mediante métodos o propiedades. La encapsulación permite utilizar datos y procedimientos de la clase CuentaBancaria como una unidad. y sería difícil trabajar con más de una cuenta bancaria a la vez. Cada instancia es una copia exacta pero diferente de su clase. por ejemplo el saldo de la cuenta. las clases describen la estructura de los objetos. Por ejemplo. Al ocultar los detalles de implementación de las clases se evita que sean utilizados de forma no deseada y hace posible la modificación posterior de tales elementos sin problemas de compatibilidad. sería necesario declarar diferentes procedimientos y campos para almacenar y administrar la información de la cuenta bancaria. como Privado o Público. una única clase puede utilizarse para crear tantos objetos como sea necesario.processtext. Puesto que un objeto es una "instancia" de una clase. En la clase CuentaBancaria. el cambio de datos en un objeto no cambia los datos de otro objeto. la clase CuentaBancaria encapsula los métodos.ABC Amber CHM Converter Trial version. se protege de esta forma. campos. puesto que cada cuenta se representa mediante una instancia única de la clase. en las versiones posteriores de la clase CuentaBancaria que se muestra a continuación se podría cambiar el tipo de datos de la variable BalanceDeLaCuenta sin peligro de interrumpir las aplicaciones que se basan en que esa variable tenga un tipo de datos específico. Herencia Page 105 . la acción de crear un objeto se denomina creación de instancias. Del mismo modo que un plano define qué partes de un edificio son accesibles a las personas que lo utilizan. las clases también pueden controlar el acceso de los usuarios a los elementos de los objetos a través de la encapsulación. Sin la encapsulación. pero en realidad. Así como un plano puede utilizarse para crear varios edificios. Generalmente. la información del cliente. describen las propiedades.

html Las clases de Pauscal pueden heredar y extender las características de otras clases. FinProc FinClase Duración de los objetos Constructores y destructores Métodos de una clase Campos de una clase Propiedades y procedimientos de propiedad Propiedades frente a métodos Fundamentos de la programación en Pauscal Volver Page 106 . propiedades y métodos definidos en la clase base. Esto significa que puede desarrollar y depurar una clase una vez y reutilizarla después como base de otras clases. Las clases derivadas heredan todos los campos.com/abcchm. FinProc Proc Balance():Real Devolver BalanceDeLaCuenta FinProc FinClase Clase CuentaCorriente(CuentaBancaria) Proc ProcesarCheque ' Código que procesa un cheque de esta cuenta.ABC Amber CHM Converter Trial version.processtext. http://www. Las clases que sirven de base para nuevas clases se denominan clases base. En el siguiente ejemplo se define una clase base que representa una cuenta bancaria genérica y una clase específica que hereda las propiedades de la clase base pero que se personaliza para describir una cuenta corriente: Clase CuentaBancaria ClaseVar NúmeroDeCuenta:Cadena ClaseVar BalanceDeLaCuenta:Real Proc Intereses() ' Código que calcula el interés de la cuenta. Las clases que se derivan de clases base se denominan clases derivadas.

Pauscal controla la liberación de los recursos del sistema mediante procedimientos denominados destructores. Pauscal llama primero al constructor de la clase base y luego al de la clase derivada. Var Obj:MiClase Obj = Nuevo miClase(Parámetro) Para destruir un objeto explícitamente. la lectura de valores de claves de Registro y otras operaciones. A menudo. Destruir Obj Constructores y destructores El constructor de una clase es llamado por Pauscal cada vez que se crea una nueva instancia de la clase. como cerrar archivos y guardar información de estado. Para crear un objeto. Pauscal crea implícitamente un constructor interno. éstos deberán pasarse al crear el objeto. Liberación de objetos Page 107 . En caso de que sea una clase derivada. Si la clase no especifica un constructor.ABC Amber CHM Converter Trial version. El destructor de una clase es llamado por Pauscal justo antes de liberar una instancia de la clase.html Duración de los objetos La vida de los objetos comienza cuando se crea una instancia de una clase mediante la palabra clave Crear o Nuevo. Pauscal controla la inicialización de nuevos objetos mediante procedimientos denominados constructores. http://www.processtext. éste sólo debe definirse cuando sea necesario liberar objetos explícitamente. utilice la instrucción Crear de la siguiente manera: Var Obj:MiClase Crear Obj También es posible utilizar la palabra clave Nuevo para crear una nueva instancia de una clase: Var Obj:MiClase Obj = Nuevo miClase Estos dos ejemplos anteriores son equivalentes. El destructor puede contener código que es necesario ejecutar inmediatamente antes de destruir un objeto. los nuevos objetos requieren la realización de tareas de inicialización antes de utilizarlos por primera vez. La vida de los objetos finaliza cuando dejan el ámbito y son liberados. En caso de que el constructor de la clase requiera parámetros. utilice la instrucción Destruir.com/abcchm. Puesto que se produce una ligera disminución del rendimiento al ejecuta el destructor. Juntos. los constructores (métodos especiales que permiten controlar la inicialización) y los destructores permiten la creación de bibliotecas de clases sólidas y predecibles. Las tareas de inicialización comunes incluyen la apertura de archivos.

http://www. se llama al destructor de la clase e inmediatamente después el objeto se quita de la memoria.html Para liberar objetos Pauscal utiliza un sistema denominado recuento de referencias. Cuando una variable de objeto es liberada. Si no hay más referencias. Introducción a las clases y los objetos Volver Page 108 . Pauscal verifica si hay otras referencias al objeto en cuestión.com/abcchm.processtext.ABC Amber CHM Converter Trial version.

Si el constructor de la clase base requiere parámetros. el de la clase derivada debe aceptar los mismos parámetros. http://www. Cuando se cree una nueva instancia de la clase. Pauscal llamará a iConst1 y luego a iConst2. iConst1 y iConst2 son constructores de la clase. el nuevo constructor esconde al constructor anterior.processtext. En el siguiente ejemplo. Cuando se crea o se destruye el objeto. éste simplemente se agrega. no reemplaza al anterior. Clase cPrueba Proc iConst1 Mensaje("Constructor 1") FinProc Proc iConst2 Mensaje("Constructor 2") FinProc Constructor:iConst1 Constructor:iConst2 Page 109 . se utiliza la instrucción Destructor para declarar al método destructor de una clase: Clase cPrueba Proc iInicio Mensaje("Objeto creado") FinProc Proc iFinal Mensaje("Objeto destruido") FinProc Constructor:iInicio Destructor:iFinal FinClase Una clase puede tener más de un constructor y más de un destructor. se heredan el constructor y el destructor de la clase base. En caso contrario. Si la clase derivada declara un nuevo constructor (o destructor).com/abcchm. haciendo que Pauscal no lo llame.html Constructores y destructores Los constructores y destructores son métodos normales que controlan la creación y destrucción de objetos. Se utiliza la instrucción Constructor para declarar al método constructor de una clase: Clase cPrueba Proc iInicio Mensaje("Objeto creado") FinProc Constructor:iInicio FinClase De forma análoga. Pauscal llama al constructor y destructor de la clase base y luego a los de la clase derivada.ABC Amber CHM Converter Trial version. En caso de ser una clase derivada.

http://www.html FinClase En el siguiente ejemplo.com/abcchm. cuando se cree una nueva instancia de la clase. iConst2 esconde a iConst1. sólo a iConst2. FinClase Introducción a las clases y los objetos Métodos de una clase Duración de los objetos Volver Page 110 . al igual que en el ejemplo anterior.ABC Amber CHM Converter Trial version. Pero como la lista de parámetros de los constructores no coincide. Por esta razón.processtext. iConst1 y iConst2 son constructores de la clase. Pauscal no llamará a iConst1. Clase cPrueba Proc iConst1 Mensaje("Constructor 1") FinProc Proc iConst2(Dato:Cadena) Mensaje("Constructor 2: " + Dato) FinProc Constructor:iConst1 Constructor:iConst2 ' Pauscal genera una advertencia que ' indica que el constructor iConst2 ' esconde a iConst1.

http://www. Por ejemplo. Introducción a las clases y los objetos Campos de una clase Propiedades y procedimientos de propiedad Volver Page 111 .html Métodos de una clase Los métodos de una clase son simplemente procedimientos públicos declarados dentro de la clase. y permite realizar cambios en el futuro sin que se vea afectado el código que utiliza los objetos.ABC Amber CHM Converter Trial version. Para más información sobre cómo ocultar los detalles de la implementación.com/abcchm.processtext. vea Accesibilidad. Ocultar los detalles de la implementación de un objeto es otra faceta de la encapsulación. La restricción de la accesibilidad de tales métodos evita que puedan utilizarlos otros programadores. sin necesidad de modificar el código que utiliza el método. La encapsulación permite mejorar el rendimiento de los métodos o cambiar totalmente la forma de implementar un método. para crear un método Agregar para una clase denominada Colección : Proc Agregar(Valor:Cadena) ' Código que agrega el item a la colección FinProc Protección de los detalles de la implementación Los procedimientos de utilidades que una clase utiliza internamente deben declararse como Privado.

b:Entero Proc Acción ' Código que realiza la acción FinProc FinClase Agregar campos y propiedades a una clase Volver Page 112 . pero esta vez son privados.processtext.com/abcchm. Los campos se declaran con la instrucción ClaseVar y su sintaxis es igual a la de la instrucción Var. Los campos declarados de esta forma son siempre privados y no se puede cambiar su accesibilidad. a y b son campos.html Campos de una clase Los campos de una clase son las variables que han sido declaradas dentro de esa clase. (Ver Accesibilidad) En el siguiente ejemplo. Clase cPrueba.ABC Amber CHM Converter Trial version. http://www.b:Entero Proc Acción ' Código que realiza la acción FinProc FinClase También es posible declarar los campos luego del nombre de la clase. a y b son campos. En el siguiente ejemplo. Clase cPrueba ClaseVar a. a.

NumCampo = 36 ' Funciona porque no hay validación. Por ejemplo.NumCampo)) ' Muestra 36. El procedimiento de asignación de propiedad para el saldo disponible podría proporcionar código de validación para evitar que el saldo se actualice incorrectamente. por lo que la asignación no se producirá. los procedimientos de propiedad permiten a un objeto proteger y validar sus propios datos. En el siguiente fragmento de código se compara cómo los campos y propiedades validan los valores: Clase cPrueba Público: ClaseVar NumCampo:Entero Privado: ClaseVar iNumProp:Entero Proc LecNumProp:Entero Resultado = iNumProp FinProc Proc EscNumProp(Valor:Entero) Si Valor < 10 iNumProp = Valor FinSi FinProc Público: Prop NumProp:Entero Lec:LecNumProp Esc:EscNumProp FinProp FinClase ' En este ejemplo se supone que sólo los valores ' menores a 10 son válidos para la propiedad y el campo.NumProp = 7 ' El valor 36 no es válido. Page 113 . Mientras que los campos son simplemente variables públicas. Var Obj:cPrueba 'Se crea una nueva instancia de la clase Crear Obj ' Verifica validación Obj.ABC Amber CHM Converter Trial version. Mensaje("NumCampo = " + EntCad(Obj. una propiedad que almacena el saldo de una cuenta bancaria podría utilizar un procedimiento de lectura de propiedad para notificar el interés y comprobar comisiones por servicios antes de devolver el saldo disponible. las propiedades utilizan procedimientos de propiedad para controlar cómo se establecen y devuelven valores. Obj. y procedimientos de asignación de propiedad para asignar un valor a una propiedad. Pauscal tiene dos tipos de procedimientos de propiedad: procedimientos de lectura de propiedad para recuperar el valor de una propiedad. http://www. Los procedimientos de propiedad se ejecutan cuando se establece o recupera el valor de una propiedad. Es decir. ' El valor 7 es válido.processtext.html Propiedades y procedimientos de propiedad Se pueden utilizar tanto propiedades como campos para almacenar información en un objeto.com/abcchm.

com/abcchm. Por ejemplo. se considera que sólo los valores válidos son números menores de 10. de modo que el intento de establecer 36 en el campo no se tiene en cuenta. respectivamente. Puesto que no hay forma de validar los valores asignados a los campos.NumProp)) Aquí se crea una instancia de la clase y establece y recupera los valores de los campos y propiedades. por ejemplo. Esto permite que. La siguiente clase es similar a la del ejemplo anterior.html Obj. con la diferencia de que no hay procedimiento de lectura de propiedad. Las propiedades de sólo escritura son útiles para datos que desea almacenar. pero no exponer a otros objetos.ABC Amber CHM Converter Trial version. pero cuya modificación no desea permitir. Para ello sólo especifique en la instrucción Lec o Esc el nombre del campo al que Pauscal deberá acceder cuando se produzca la lectura o asignación de la propiedad. Por ejemplo. la propiedad solamente realiza asignaciones para números menores de 10.processtext. una propiedad de sólo Page 114 . o viceversa. Mensaje("NumProp = " + EntCad(Obj. podría utilizar una propiedad de sólo lectura para proporcionar la velocidad del procesador de un equipo. También es posible hacer que uno o ambos accesos a la propiedad (lectura y asignación) se realicen a traves de campos en lugar de utilizar procedimientos de propiedad. No obstante. se llama a EscNumProp FinProp FinClase Aunque las propiedades que utilizan campos en lugar de procedimientos para la lectura y/o escritura de propiedad son más rápidos (ya que no se realiza ninguna llamada de código). es posible omitir la instrucción Esc o la instrucción Lec (pero no ambas) para declarar variables de sólo lectura o de sólo escritura. se puede establecer el valor 36 en el campo. se validen sólo los datos de asignación (por medio de un procedimiento de asignación de propiedad) pero no los de lectura. no se tiene mucho control debido a que son similares a los campos públicos. Propiedades de sólo lectura y sólo escritura La mayoría de las propiedades tienen procedimientos de lectura y de asignación para permitir tanto la lectura como la modificación del valor que almacenan. Clase cPrueba Público: ClaseVar NumCampo:Entero Privado: ClaseVar iNumProp:Entero Proc EscNumProp(Valor:Entero) Si Valor < 10 iNumProp = Valor FinSi FinProc Público: Prop NumProp:Entero Lec:iNumProp ' Al leer la propiedad. ya que el valor 36 no fue almacenado. respectivamente. A efectos de este ejemplo. sólo se accede al campo iNumProp Esc:EscNumProp ' Al asignar la propiedad. No obstante. http://www. Las propiedades de sólo lectura son útiles para elementos que desea exponer.NumProp = 36 ' Muestra el valor 7.

processtext.html escritura podría utilizarse para almacenar una contraseña.com/abcchm. http://www. Introducción a las clases y los objetos Métodos de una clase Volver Page 115 .ABC Amber CHM Converter Trial version.

Valor) Mensajes de error Otro factor a considerar a la hora de elegir cómo implementar un miembro de una clase es qué tipo de mensajes se generarán cuando la clase se utilice incorrectamente. si implementa el miembro de una clase como propiedad. Por otra parte. Sintaxis de propiedades frente a sintaxis de métodos Una forma de decidir cómo implementar un miembro de una clase consiste en considerar cómo se desea utilizar. mientras que otras son evidentemente métodos.processtext. las propiedades almacenan datos para un objeto. Los miembros de una clase implementados correctamente devuelven mensajes de error que son más fáciles de interpretar.Propiedad(Índice) = Valor Si implementa el miembro de la clase como método. y los métodos son acciones cuya realización puede pedirse a un objeto. Algunas características de objeto son claramente propiedades. el valor que se modifica debe ser un parámetro. Aunque la sintaxis para recuperar información de una propiedad parametrizada es casi idéntica a la utilizada con un método. Introducción a clases y objetos Métodos de una clase Propiedades y procedimientos de propiedad Volver Page 116 .Propiedad(Índice.html Propiedades frente a métodos Las propiedades y los métodos son similares en que ambos se implementan como procedimientos que aceptan parámetros. Por ejemplo. el mensaje de error devuelto es distinto del que se obtendría en respuesta a una llamada similar a un método. la sintaxis para modificar tal valor es algo diferente.ABC Amber CHM Converter Trial version. como Mover y Mostrar. En otros casos. las sintaxis siguiente describe cómo debería utilizarse: Objeto. El fragmento de código siguiente describe el uso de sintaxis equivalente: Objeto. http://www. el método Item de una supuesta clase de colección almacena y recupera datos y puede implementarse como una propiedad indizada. también resulta razonable implementar Item como un método. En general. Si alguien intenta accidentalmente asignar un valor a una propiedad de sólo lectura. no resulta obvio qué miembros de una clase deberían ser propiedades y cuáles deberían ser métodos. como Nombre.com/abcchm. Por ejemplo.

processtext. 4. se pasa el valor de la propiedad en Valor al procedimiento de asignación de propiedad. Los procedimientos de lectura de propiedad se utilizan para devolver el valor de una propiedad. 5. 3. al acceder a la propiedad habrá que pasar los parámetros requeridos. Para agregar un campo a una clase    Un campo se declara mediante la instrucción ClaseVar. declare la propiedad mediante la instrucción Prop. Mediante la instrucción Lec establezca el procedimiento de lectura de propiedad. las propiedades utilizan procedimientos para controlar cómo se establecen y devuelven valores. http://www. Aunque los campos y las propiedades son prácticamente imposibles de distinguir desde una perspectiva exterior de la clase. como se aprecia en el ejemplo siguiente:: Clase cPrueba ClaseVar Campo:Cadena FinClase Para agregar una propiedad a una clase 1. se declaran de forma diferente en una clase. generalmente denominado Valor. 6.com/abcchm. Cada vez que se cambia el valor de la propiedad. Si este procedimiento requiere parámetros. Defina los procedimientos de lectura y de asignación de la propiedad dentro de la clase.html Agregar campos y propiedades a una clase Se pueden utilizar tanto campos como propiedades para almacenar información en un objeto. Los procedimientos de asignación de propiedad se utilizan para establecer el valor de una propiedad..ABC Amber CHM Converter Trial version. Mientras que los campos son simplemente variables públicas que una clase expone. Finalice la declaración de la propiedad con una instrucción FinProp. las variables que se utilizan para almacenar valores de propiedad deben declararse como Privado 2. del mismo tipo de datos que la propiedad. En el siguiente ejemplo se declara una propiedad en una clase: Clase cPrueba Privado: ClaseVar iNombre:Cadena ' variable que almacena la propiedad Proc LecNombre():Cadena ' procedimiento de lectura de propiedad Resultado = iNombre FinProc Proc EscNombre(Valor:Cadena) ' procedimiento de escritura de propiedad lNombre = Valor FinProc Público: Prop Nombre:Cadena ' declaramos la propiedad y su tipo de datos Lec:LecNombre ' procedimiento a llamar al leer la propiedad Esc:EscNombre ' procedimiento a llamar al asignar a la propiedad Page 117 . Declare una variable local en la clase para almacenar el valor de la propiedad. donde se puede validar y almacenar en una variable local. A fin de proteger sus valores contra la modificación directa. Este paso es necesario puesto que las propiedades no asignan almacenamiento por sí mismas. Una vez declarados los procedimientos de lectura y de asignación de propiedad. tienen un parámetro más al comienzo de la lista de parámetros. Mediante la instrucción Esc establezca el procedimiento de asignación de propiedad.

que se almacena en una variable local denominada iNombre. Cuando se recupera el valor de esta propiedad. se llama al procedimiento de lectura de propiedad LecNombre y devuelve el valor almacenado en la variable local iNombre.processtext. Introducción a las clases y los objetos Campos de una clase Propiedades y procedimientos de propiedad Métodos de una clase Volver Page 118 . http://www. se llama al procedimiento de asignación de propiedad EscNombre y se pasa el valor en el parámetro Valor.com/abcchm.html FinProp FinClase Cuando se crea una instancia de cPrueba y se establece el valor de la propiedad Nombre.ABC Amber CHM Converter Trial version.

http://www. Las instrucciones Controlar y Finalmente pueden indicar una variable de tipo Entero que recibe el valor numérico de la excepción.html Control estructurado de excepciones Pauscal admite el control estructurado de excepciones. bloques de código protegidos y controladores. Aunque las instrucciones Controlar y Finalmente son opcionales. ' Aquí van las instrucciones con posibilidades ' de generar excepciones. El uso de la instrucción AdmErr permite proteger bloques de código con posibilidades de generar errores. Pauscal transferirá el control a la primera línea de código del bloque Controlar. Los controladores de excepciones pueden anidarse.] [Finalmente [variable] ' Este código se ejecuta inmediatamente antes de salir ' del bloque AdmErr. mediante la combinación de una estructura de control (similar a Seleccionar o Mientras) con excepciones. al menos una de ellas debe aparecen en un bloque AdmErr. o cero si no hubo una excepción. inmediatamente antes que el bloque de control de errores pierda su ámbito. El control estructurado de excepciones es un código diseñado para detectar y dar respuesta a los errores que se producen durante la ejecución. dando la posibilidad de protección al código controlador.processtext. Este valor se utiliza para conocer el tipo de excepción que fue generado. variable recibe el valor ' numérico de la excepción. [Controlar [variable] ' Este código se ejecuta cuando el código controlado ' produce una excepción. con independencia de que se ejecute el código del bloque Controlar. por ejemplo) en la sección Finalmente. variable recibe el valor numérico ' de la excepción. no es posible conocer la excepción que fue generada. tampoco es posible saber si hubo una excepción o no. Page 119 . Si se produce un error durante la ejecución de cualquier parte del código de esta sección. si lo hubiera. Sitúe el código de limpieza (el código que cierra los archivos y libera los objetos. y en el caso de una instrucción Finalmente. Instrucción AdmErr En el siguiente fragmento de código se muestra la estructura de una instrucción AdmErr: AdmErr ' Comienza el control estructurado de errores. Si se omite.ABC Amber CHM Converter Trial version. El uso de esta variable es opcional. El código de la sección Finalmente siempre se ejecuta en último lugar. que facilita la tarea de crear y mantener programas mediante controladores de errores consistentes y exhaustivos. Esta variable es cero si no ocurrió una excepción.] FinAdmErr ' Fin del control estructurado de errores. Las instrucciones inmediatamente después de la instrucción AdmErr contiene la sección del código que el controlador de errores va a supervisar.com/abcchm.

ABC Amber CHM Converter Trial version.html Introducción al control estructurado de excepciones Control estructurado de excepciones Tipos de errores Bloque "AdmErr" Volver Page 120 . http://www.com/abcchm.processtext.

Normalmente se manifiestan en forma de resultados inesperados o no deseados en respuesta a las acciones del usuario. Los errores sintácticos son los errores más frecuentes. pero que no se ejecutan correctamente. Por lo general. una clave mal escrita u otra influencia externa podría hacer que la aplicación dejase de funcionar aún siendo correctos los parámetros. si el archivo está dañado. Errores lógicos Los errores lógicos son aquellos que aparecen cuando la aplicación está en funcionamiento. Errores sintácticos Los errores sintácticos (o en tiempo de diseño) son aquellos que aparecen mientras se escribe el código. para después compilarlo y volver a ejecutarlo. podría escribir correctamente una línea de código que abre un archivo. la aplicación no podrá ejecutar la instrucción que abre el archivo y se detendrá su ejecución. Por ejemplo. puesto que no siempre está claro dónde se originan. errores en tiempo de ejecución y errores lógicos. Por ejemplo. los errores (también llamados excepciones) se dividen en tres categorías: errores sintácticos. o que simplemente no funcionase. y se detectan en el momento de la compilación. por no presentar errores sintácticos. Se deben a la escritura incorrecta de una palabra o el uso incorrecto de un elemento del lenguaje. Errores en tiempo de ejecución Los errores en tiempo de ejecución son aquellos que aparecen solamente después de la compilación y la ejecución del código. los errores lógicos son los más difíciles de corregir. en fragmentos de código aparentemente correctos. Pueden darse errores de este tipo. por ejemplo. La mayoría de los errores de este tipo pueden corregirse modificando el código que presenta errores.processtext. http://www.html Tipos de errores En Pauscal.ABC Amber CHM Converter Trial version. Pero. Introducción al control estructurado de excepciones Control estructurado de excepciones Bloque "AdmErr" Volver Page 121 .com/abcchm.

Instrucciones Documenta las instrucciones disponibles en Pauscal.processtext.ABC Amber CHM Converter Trial version.html Referencia del lenguaje Esta sección proporciona una referencia completa para el lenguaje Pauscal y sus elementos de tiempo de ejecución. Volver Page 122 . http://www.com/abcchm.

html Instrucciones de Pauscal La siguiente tabla contiene una lista de las instrucciones del lenguaje Pauscal. http://www.com/abcchm.processtext.ABC Amber CHM Converter Trial version. AdmErr Bloque Borrar Caso Clase ClaseVar Const Constructor Contar Controlar Crear Destructor Destruir Devolver Esc Estruc Eval Fin FinAdmErr Finalmente FinBloque FinClase FinEval FinMientras FinProc FinProp FinSeleccionar FinSi GenerarError HastaQue Importar Interrumpir IrHacia Lec Mientras PorSiempre Proc Prop Prototipo PuertoEnviar Redim Repetir Salir Seguir Seleccionar Si SiNo Unión Var Volver Page 123 .

Siempre se ejecuta un bloque Finalmente cuando se termina de ejecutar instruccionesControladas o el bloque Controlar. http://www. Variable de tipo Entero que recibe el código de error al ejecutarse el bloque Finalmente. vea Instrucción "Salir".html AdmErr (Instrucción) Esta instrucción proporciona una manera de controlar los errores posibles que pueden ocurrir en un bloque de código determinado mientras se ejecuta el código. Marca el comienzo del bloque Controlar. Finalmente Opcional. Nota El bloque Finalmente no se ejecutará si se sale del bloque AdmErr mediante una instrucción Salir.com/abcchm.. FinAdmErr Termina el bloque AdmErr. Debido a que el bloque Finalmente se ejecuta sin importar si ocurre un error o no. Comentarios El bloque AdmErr contiene código en el que puede producirse un error. Marca el comienzo del bloque Finalmente. Instrucciones en las que puede ocurrir un error. Variable de tipo Entero que recibe el código de error al ejecutarse el bloque Controlar. Este bloque es ejecutado sólo cuando ocurre un error en instruccionesControladas. De lo contrario este último es opcional. mientras que el bloque Controlar contiene el código para controlar cualquier error que pueda tener lugar. instruccionesFinalmente Opcional. AdmErr [ instruccionesControladas ] [ Controlar [ códigoErrorControlar ] ] [ instruccionesControlador ] ] [ Finalmente [ códigoErrorFinalmente ] [ instruccionesFinalmente ] ] FinAdmErr instruccionesControladas Opcional. Instrucciones que se ejecutan después de las demás operaciones de procesamiento de error. Puede ser una instrucción compuesta.FinAdmErr. códigoErrorControlar Opcional si se especifica Controlar.. Controlar Opcional. que administra el error. Nota Si una instrucción AdmErr no contiene un bloque Controlar.ABC Amber CHM Converter Trial version. debe tener un bloque Finalmente. Para más información. Page 124 . la variable códigoErrorFinalmente recibe o el código de error que se produjo o el valor 0 en caso de que no hubiera ocurrido un error. códigoErrorFinalmente Opcional si se especifica Finalmente.processtext.

processtext. http://www.html Introducción al control estructurado de excepciones Bloque "AdmErr" Volver Page 125 .ABC Amber CHM Converter Trial version.com/abcchm.

En muchos casos esto sería más difícil de realizar si no se utilizara la estructura Bloque. Bloque [ instrucciones ] [ Salir Bloque ] [ instrucciones ] FinBloque instrucciones Opcional. Estructura "Bloque" Instrucción "Salir" Volver Page 126 .com/abcchm.html Bloque (Instrucción) Esta instrucción define un bloque de instrucciones. Instrucciones que componen el bloque de instrucciones. Comentarios La estructura Bloque se utiliza para definir un bloque de instrucciones que se deben ejecutar como una unidad. Se utiliza como una estructura de referencia para finalizar rápidamente la ejecución del bloque de instrucciones. Mediante la instrucción Salir Bloque es posible romper esta unidad y finalizar el bloque de instrucciones.ABC Amber CHM Converter Trial version.processtext. http://www.

Si matriz es una matriz dinámica.processtext.com/abcchm. Si es una estructura. sus miembros se inicializan como se menciona anteriormente. Si matriz es una matriz estática. http://www. Variable de matriz a liberar.html Borrar (Instrucción) Se utiliza para liberar una variable de matriz y desasignar la memoria utilizada para sus elementos. "" si es Cadena. Falso si es Booleano. es decir 0 en caso de ser un tipo de datos numérico. Borrar matriz matriz Requerido.ABC Amber CHM Converter Trial version. la instrucción Borrar produce el mismo resultado que si se redimensiona la matriz a cero elementos. luego de ser liberada no tendrá elementos. o un objeto sin crear en caso de ser una clase. Comentarios Si matriz es una matriz dinámica. los elementos son inicializados a sus valores predeterminados. Redim (Instrucción) Matrices Volver Page 127 .

Expresión. Las cláusulas de varias expresiones se separan mediante comas. Si ninguna cláusula Caso listaExpresiones coincide con expresión y no existe ninguna instrucción Caso Otro. Debe evaluarse en uno de los tipos de datos elementales. Las instrucciones Seleccionar pueden anidarse. Cada instrucción Seleccionar anidada debe tener una instrucción FinSeleccionar coincidente. Aunque no es necesario. Comentarios Si expresión coincide con cualquier cláusula Caso listaExpresiones. es recomendable tener una instrucción Caso Otro en el bloque Seleccionar para controlar los valores de expresión imprevistos. FinSeleccionar Termina un bloque Seleccionar. Esto transfiere inmediatamente el control a la instrucción que sigue a FinSeleccionar. Las expresiones en listaExpresiones pueden ser de cualquier tipo de datos compatible con el de expresión. instrucciones Opcional. Seleccionar expresión [ Caso listaExpresiones [ instrucciones ] ] [ Caso Otro [ otrasInstrucciones ] ] FinSeleccionar expresión Requerido. se ejecutan las instrucciones que siguen a la instrucción Caso hasta la siguiente instrucción Caso o FinSeleccionar. según el valor de una expresión. El control pasa después a la instrucción que sigue a FinSeleccionar.ABC Amber CHM Converter Trial version. Si expresión coincide con una cláusula de listaExpresiones en más de una cláusula Caso. la ejecución continúa en la instrucción que sigue a FinSeleccionar.html Seleccionar (Instrucción) Ejecuta uno de varios grupos de instrucciones.com/abcchm. sólo se ejecutan las instrucciones que siguen a la primera coincidencia. http://www. listaExpresiones Requerido en una instrucción Caso. Si no necesita ejecutar más instrucciones de un bloque Caso o Caso Otro. Una o más instrucciones después de Caso que se ejecutan si expresión coincide con cualquier cláusula en listaExpresiones. Page 128 . La instrucción Caso Otro se utiliza para introducir las instrucciones otrasInstrucciones que se ejecutarán si no se encuentra ninguna coincidencia entre expresión y una cláusula de listaExpresiones en cualquiera de las demás instrucciones Caso.processtext. Lista de cláusulas de expresiones que representan valores que coinciden para expresión. otrasInstrucciones Opcional. Una o más instrucciones a continuación de Caso Otro que se ejecutan si expresión no coincide con ninguna cláusula de listaExpresiones. puede salir del bloque mediante una instrucción Salir Seleccionar.

processtext.ABC Amber CHM Converter Trial version.com/abcchm. http://www.html Bloque "Seleccionar" Instrucción "Salir" Volver Page 129 .

la clase no posee una clase base.processtext. propiedades y métodos de la clase. Si se omite. Lista de los campos de la clase. Especifica el tamaño de la matriz estática. Debe ser un identificador válido. Tipos de datos del campo. Indica que el campo es una matriz. Nombre del campo. Instrucciones que componen las variables. instrucciones Opcional. Clase nombre [ ( base) ] [ . así como una definición de las variables. campos Opcional. Nombre de la clase base de la cual se heredan los miembros. Cada campo de campos tiene la siguiente sintaxis y partes: [ @ ] nombre [ [ [ tamaño ] ] ] : tipo @ Opcional. tamaño Opcional si se incluye [ ]. métodoDestructor Requerido si se especifica Destructor. [] Opcional. métodoConstructor Requerido si se especifica Constructor. la matriz es una matriz dinámica. campos ] [ instrucciones ] [ Constructor: métodoConstructor ] [ instrucciones ] [ Destructor: métodoDestructor ] [ instrucciones ] FinClase nombre Requerido. FinClase Termina la declaración de la clase. Nombre de la clase. Define el método destructor de la clase. Indica que el campo es un puntero. propiedades y métodos que la componen. base Opcional.com/abcchm. Define el método constructor de la clase.html Clase (Instrucción) Declara el nombre de una clase. tipo Requerido. http://www.ABC Amber CHM Converter Trial version. Page 130 . Si se omite. Sigue las convenciones de nomenclatura estándar de las variables. nombre Requerido.

http://www.processtext. Se recomienda utilizar la instrucción ClaseVar para declarar los campos de una clase. Para más información.html Comentarios La posibilidad de declarar los campos de una clase en la instrucción Clase sólo se mantiene por compatibilidad con versiones anteriores. Introducción a las clases y los objetos Constructores y destructores Volver Page 131 . Los campos declarados en la instrucción Clase son privados.ABC Amber CHM Converter Trial version. mientras que la cláusula Destructor define el método que es llamado cuando se destruye una instancia de la clase.com/abcchm. De lo contrario el compilador genera un error. Una clase debe poseer al menos un miembro. La cláusula Constructor define el método que es llamado cuando se crea una nueva instancia de la clase. vea Accesibilidad. Para más información. vea Constructores y destructores.

B. Especifica el tamaño de la matriz estática. Tipos de datos del campo. En el siguiente ejemplo se declaran dos campos de tipo Entero y uno de tipo Cadena: ClaseVar A. C:Cadena Introducción a las variables Introducción a las clases y los objetos Matrices Var (Instrucción) Volver Page 132 . Si se omite. http://www. separando los campos con comas. Nombre del campo. La instrucción ClaseVar sólo es válida a nivel de clase. la matriz es una matriz dinámica. ClaseVar [ @ ] nombre [ [ [ tamaño ] ] ] : tipo @ Opcional. En el siguiente ejemplo se declaran tres campos de tipo Entero: ClaseVar A. Es posible declarar varios campos con una sola instrucción ClaseVar. No se puede declarar un campo como matriz y puntero a la vez. [] Opcional.com/abcchm. Para declarar variables globales y locales. Comentarios Un campo es una variable de una clase.processtext. nombre Requerido. Cada instancia de la clase posee una copia independiente del campo. Debe ser un identificador válido. tamaño Opcional si se incluye [ ].ABC Amber CHM Converter Trial version. La instrucción ClaseVar declara sólamente campos. tipo Requerido. Indica que el campo es un puntero. utilice la instrucción Var.html ClaseVar (Instrucción) Es utilizada para declarar y asignar espacio de almacenamiento para campos (variables de clase). Indica que el campo es una matriz.B:Entero.C:Entero También es posible mezclar tipos de datos en una misma instrucción ClaseVar.

html Const (Instrucción) Se utiliza para declarar constantes para utilizar en lugar de valores literales.processtext.com/abcchm. Const nombre = valor nombre Requerido. Nombre de la constante. Comentarios Puede utilizar una constante en cualquier lugar en que pueda utilizar una expresión. Debe ser un identificador válido. http://www. Expresión que se asigna a la constante cuando se crea. Introducción a las variables Volver Page 133 .ABC Amber CHM Converter Trial version. valor Requerido.

Debe ser un identificador válido. Si se omite. nombre Requerido. la clase no posee una clase base. Define el método destructor de la clase. Instrucciones que componen las variables. Nombre del campo. campos Opcional. Sigue las convenciones de nomenclatura estándar de las variables.processtext. tipo Requerido. métodoConstructor Requerido si se especifica Constructor. Indica que el campo es un puntero.html Clase (Instrucción) Declara el nombre de una clase. Tipos de datos del campo. Si se omite. http://www.com/abcchm. así como una definición de las variables. base Opcional. Nombre de la clase. Especifica el tamaño de la matriz estática. propiedades y métodos de la clase. Indica que el campo es una matriz. instrucciones Opcional.ABC Amber CHM Converter Trial version. propiedades y métodos que la componen. Define el método constructor de la clase. FinClase Termina la declaración de la clase. Lista de los campos de la clase. campos ] [ instrucciones ] [ Constructor: métodoConstructor ] [ instrucciones ] [ Destructor: métodoDestructor ] [ instrucciones ] FinClase nombre Requerido. métodoDestructor Requerido si se especifica Destructor. la matriz es una matriz dinámica. [] Opcional. Clase nombre [ ( base) ] [ . Page 134 . tamaño Opcional si se incluye [ ]. Cada campo de campos tiene la siguiente sintaxis y partes: [ @ ] nombre [ [ [ tamaño ] ] ] : tipo @ Opcional. Nombre de la clase base de la cual se heredan los miembros.

La cláusula Constructor define el método que es llamado cuando se crea una nueva instancia de la clase. http://www. Los campos declarados en la instrucción Clase son privados.processtext. vea Accesibilidad. Una clase debe poseer al menos un miembro. Se recomienda utilizar la instrucción ClaseVar para declarar los campos de una clase.html Comentarios La posibilidad de declarar los campos de una clase en la instrucción Clase sólo se mantiene por compatibilidad con versiones anteriores.ABC Amber CHM Converter Trial version. Para más información. De lo contrario el compilador genera un error. mientras que la cláusula Destructor define el método que es llamado cuando se destruye una instancia de la clase.com/abcchm. Para más información. vea Constructores y destructores. Introducción a las clases y los objetos Constructores y destructores Volver Page 135 .

bien se ejecutan otra vez las instrucciones del bucle o se termina el bucle y la ejecución continúa con la instrucción que sigue a Seguir . si el valor de inicio supera el valor de final al entrar en el bucle. La expresión final debe evaluarse como cualquier tipo de datos compatible con el tipo de contador. El tipo de contador suele ser Entero o EnteroSig. Si se especifica. Si se omite. La expresión inicio debe evaluarse como cualquier tipo de datos compatible con el tipo de contador. Una o más instrucciones que se ejecutan un número especificado de veces. por ejemplo con Page 136 . Por consiguiente. La instrucción Salir Contar transfiere el control inmediatamente a la instrucción que sigue a la instrucción Seguir. Dec Opcional. Esto incluye la primera vez que se ejecuta la instrucción Contar. Expresión. instrucciones Opcional. El valor final de contador.processtext. La variable contador se compara con final cada vez que se entra en el bucle. éste no se ejecuta. cuando se encuentra por primera vez la instrucción Contar.ABC Amber CHM Converter Trial version. Salir Contar suele utilizarse después de evaluar alguna condición. Expresión.com/abcchm. No se volverán a evaluar. Como resultado de esta comparación. indica que la variable de contador se incrementa por cada iteración. Nota Cambiar el valor de contador mientras se está dentro de un bucle puede dificultar la lectura y la depuración del código. http://www. inicio Requerido. El valor inicial de contador. Contar contador = inicio A final [ Dec ] [ instrucciones ] [ Salir Contar ] [ instrucciones ] Seguir contador Requerido. Una vez que se han ejecutado las instrucciones del bucle. se incrementa o decrementa contador (dependiendo si se omite o no la palabra clave Dec). Se puede incluir cualquier número de instrucciones Salir Contar en cualquier lugar del bucle Contar. y la ejecución pasa inmediatamente a la instrucción que sigue a Seguir. indica que la variable se decrementa por cada iteración. menor que (<) y suma (+). pero puede ser cualquier tipo numérico entero elemental que admita los operadores mayor que (>).html Contar (Instrucción) Repite un grupo de instrucciones un número de veces especificado. final Requerido. En este momento. aunque cambien las partes que componen las instrucciones del bucle. Variable. Comentarios Las expresiones inicio y final sólo se evalúan una vez. la instrucción Contar compara de nuevo contador con final.

La siguiente construcción es correcta: Contar I = 1 A 10 Contar J = 1 A 10 Contar K = 1 A 10 ' Instrucciones Seguir Seguir Seguir Es recomendable que el tipo de datos de contador sea EnteroSig u otro tipo de datos con signo. http://www. Se pueden anidar bucles Contar. Esto permite que se eliminen errores provocados por valores negativos con tipos sin signo. Cada bucle debe tener una variable contador única.ABC Amber CHM Converter Trial version.html una instrucción Si.com/abcchm.processtext. Introducción a las estructuras de control Bucle "Contar" Instrucción "Salir" Volver Page 137 . colocando un bucle dentro de otro.

AdmErr [ instruccionesControladas ] [ Controlar [ códigoErrorControlar ] ] [ instruccionesControlador ] ] [ Finalmente [ códigoErrorFinalmente ] [ instruccionesFinalmente ] ] FinAdmErr instruccionesControladas Opcional. instruccionesFinalmente Opcional. Para más información. códigoErrorFinalmente Opcional si se especifica Finalmente. Instrucciones que se ejecutan después de las demás operaciones de procesamiento de error. Siempre se ejecuta un bloque Finalmente cuando se termina de ejecutar instruccionesControladas o el bloque Controlar. De lo contrario este último es opcional. Nota El bloque Finalmente no se ejecutará si se sale del bloque AdmErr mediante una instrucción Salir. mientras que el bloque Controlar contiene el código para controlar cualquier error que pueda tener lugar.ABC Amber CHM Converter Trial version.com/abcchm. Instrucciones en las que puede ocurrir un error. http://www. Finalmente Opcional. Este bloque es ejecutado sólo cuando ocurre un error en instruccionesControladas. Controlar Opcional. que administra el error. FinAdmErr Termina el bloque AdmErr. códigoErrorControlar Opcional si se especifica Controlar.processtext. Variable de tipo Entero que recibe el código de error al ejecutarse el bloque Controlar. vea Instrucción "Salir". la variable códigoErrorFinalmente recibe o el código de error que se produjo o el valor 0 en caso de que no hubiera ocurrido un error. Marca el comienzo del bloque Finalmente. Debido a que el bloque Finalmente se ejecuta sin importar si ocurre un error o no.. Nota Si una instrucción AdmErr no contiene un bloque Controlar. Page 138 . Variable de tipo Entero que recibe el código de error al ejecutarse el bloque Finalmente. Marca el comienzo del bloque Controlar.html AdmErr (Instrucción) Esta instrucción proporciona una manera de controlar los errores posibles que pueden ocurrir en un bloque de código determinado mientras se ejecuta el código. Puede ser una instrucción compuesta. debe tener un bloque Finalmente. Comentarios El bloque AdmErr contiene código en el que puede producirse un error..FinAdmErr.

html Introducción al control estructurado de excepciones Bloque "AdmErr" Volver Page 139 .com/abcchm.processtext. http://www.ABC Amber CHM Converter Trial version.

processtext. objeto es liberado. Crear objeto [ ( [ parámetros ] ) ] objeto Requerido.html Crear (Instrucción) Esta instrucción asigna una nueva instancia a la variable de objeto especificado. No es necesario que todas las variables sean de la misma clase. http://www. parámetros Requerido si el constructor de la clase requiere parámetros.com/abcchm. En caso de que el constructor de la clase de objeto requiera parámetros. Variable de objeto. éstos deben ser pasados al crear el objeto. Se pueden especificar más de una variable de objeto en una instrucción Crear. Parámetros que se pasan al constructor del objeto. Antes de producirse la asignación. Comentarios La instrucción Crear asigna a objeto una nueva instancia de su clase. Introducción a las clases y los objetos Volver Page 140 .ABC Amber CHM Converter Trial version. separando cada variable mediante comas.

propiedades y métodos de la clase. campos Opcional. Especifica el tamaño de la matriz estática. Page 141 .ABC Amber CHM Converter Trial version.processtext. Define el método destructor de la clase. FinClase Termina la declaración de la clase. Cada campo de campos tiene la siguiente sintaxis y partes: [ @ ] nombre [ [ [ tamaño ] ] ] : tipo @ Opcional. tamaño Opcional si se incluye [ ]. Nombre de la clase base de la cual se heredan los miembros. métodoDestructor Requerido si se especifica Destructor. Instrucciones que componen las variables. Si se omite. http://www. [] Opcional. instrucciones Opcional. Indica que el campo es una matriz. propiedades y métodos que la componen.com/abcchm. campos ] [ instrucciones ] [ Constructor: métodoConstructor ] [ instrucciones ] [ Destructor: métodoDestructor ] [ instrucciones ] FinClase nombre Requerido. nombre Requerido. base Opcional. Indica que el campo es un puntero. Sigue las convenciones de nomenclatura estándar de las variables. Tipos de datos del campo. la clase no posee una clase base. Clase nombre [ ( base) ] [ . Nombre de la clase. Debe ser un identificador válido. Nombre del campo. Define el método constructor de la clase. así como una definición de las variables. tipo Requerido. Si se omite.html Clase (Instrucción) Declara el nombre de una clase. Lista de los campos de la clase. métodoConstructor Requerido si se especifica Constructor. la matriz es una matriz dinámica.

html Comentarios La posibilidad de declarar los campos de una clase en la instrucción Clase sólo se mantiene por compatibilidad con versiones anteriores. Se recomienda utilizar la instrucción ClaseVar para declarar los campos de una clase. Para más información. Introducción a las clases y los objetos Constructores y destructores Volver Page 142 .com/abcchm. La cláusula Constructor define el método que es llamado cuando se crea una nueva instancia de la clase. Los campos declarados en la instrucción Clase son privados. http://www. mientras que la cláusula Destructor define el método que es llamado cuando se destruye una instancia de la clase. Una clase debe poseer al menos un miembro.ABC Amber CHM Converter Trial version.processtext. vea Accesibilidad. De lo contrario el compilador genera un error. vea Constructores y destructores. Para más información.

Introducción a las clases y los objetos Volver Page 143 .com/abcchm. Destruir objeto objeto Requerido. No es necesario que todas las variables sean de la misma clase.processtext.ABC Amber CHM Converter Trial version. En cualquier caso. el objeto se destruye. http://www. Se pueden especificar más de una variable de objeto en una instrucción Destruir. El término "liberar" hace referencia a la variable de objeto. en cambio "destruir" hace referencia al objeto en sí. objeto queda liberado. Comentarios La instrucción Destruir decrementa la cuenta de referencias del objeto al que apunta objeto. separando cada variable mediante comas.html Destruir (Instrucción) Esta instrucción libera a la variable de objeto especificada y eventualmente destruye el objeto. Variable de objeto. Nota No confundir "liberar" con "destruir". En caso de llegar a cero.

Devolver valor valor Requerido.com/abcchm. Comentarios Esta instrucción sólo es válida dentro de un procedimiento que devuelve un valor cuyo tipo de datos es elemental.ABC Amber CHM Converter Trial version. Introducción a los procedimientos Volver Page 144 .html Devolver (Instrucción) Devuelve el control al código que llamó a un procedimiento. http://www. Expresión que representa el valor que se devolverá al código de llamada.processtext.

tipo Requerido. al asignar a la propiedad se llamará a ese método.ABC Amber CHM Converter Trial version.com/abcchm. al leer la propiedad se devolverá el valor de ese campo. El método debe devolver el mismo tipo de datos que la propiedad. Campo o método de clase que se invoca al leer la propiedad.html Prop (Instrucción) Se utiliza a nivel de clase para declarar una propiedad. al leer la propiedad se deberán pasar estos parámetros. la propiedad es de sólo lectura. al menos una de ellas se debe especificar en una propiedad. Si se omite la cláusula Esc. Si el método requiere parámetros. también puede especificar un campo o un método. Introducción a las clases y los objetos Propiedades y procedimientos de propiedad Clase (Instrucción) Volver Page 145 . Si se especifica un método. Prop nombre : tipo [ Lec : objetoLectura ] [ Esc : objetoEscritura ] FinProp nombre Requerido. Si especifica un campo. Si el método requiere más parámetros. http://www. El tipo de datos del campo debe coincidir con el de la propiedad. Nombre único que identifica la propiedad. al leer la propiedad se llamará a ese método. Si bien las cláusulas Esc y Lec son ambas opcionales. objetoLectura Requerido si se especifica Lec. El tipo de datos del campo debe coincidir con el de la propiedad. Si especifica un campo. al igual que Lec. La cláusula Esc. Si se omite la cláusula Lec. objetoEscritura Requerido si se especifica Esc.processtext. al asignar a la propiedad se deberán pasar estos parámetros extra. Campo o método de clase que se invoca al asignar a la propiedad. El primer parámetro del método debe ser del mismo tipo de datos que la propiedad. Comentarios La cláusula Lec puede especificar un campo o un método. Tipo de datos de la propiedad. Si se especifica un método. la propiedad es de sólo escritura. al asignar a la propiedad se almacenará el valor en ese campo.

Debe ser un identificador válido. No se podrá inicializar el valor de los miembro de datos de una estructura como parte de su declaración.ABC Amber CHM Converter Trial version. a todos los miembros de una estructura se les asigna una porción de memoria independiente. Esto quiere decir que cada miembro puede almacenar información sin interferir con los otros miembros. A diferencia de una unión.processtext. En cualquier otro caso ocurre un error al compilar. tipo Requerido. Estruc nombre . Indica que el miembro es una matriz. Nombre de la estructura.com/abcchm. nombre Requerido.html Estruc (Instrucción) Se utiliza para declarar una estructura y definir sus miembros. miembros Requerido. [] Opcional. Indica que el miembro es un puntero. miembros nombre Requerido. http://www. Debe ser un identificador válido. Miembros de la estructura separados por comas. Si se omite. Comentarios En una estructura debe declararse por lo menos un miembro. tamaño Opcional si se incluye [ ]. El tipo de datos de un miembro de la estructura puede ser la misma estructura sólo si el miembro es un puntero o una matriz dinámica. Tipos de datos del miembro. Cada miembro de miembros tiene la siguiente sintaxis y partes: [ @ ] nombre [ [ [ tamaño ] ] ] : tipo @ Opcional. Nombre del miembro. Especifica el tamaño de la matriz estática. Se debe inicializar un miembro de datos después de crear una instancia de la estructura. Introducción a las estructuras Unión (Instrucción) Volver Page 146 . la matriz es una matriz dinámica.

por ejemplo con una instrucción Si.. no se puede reasignar objeto hasta que se pase FinEval. debe proporcionar una referencia de objeto completa en una estructura Eval interna a cualquier miembro de un objeto de una estructura externa. haciendo referencia al objeto una vez.FinEval.Visible = Verd . Sin embargo. Por ejemplo. Se pueden acceder a miembros de otros objetos y estructuras. en lugar de utilizar cada asignación de propiedades para hacerlo. Se pueden anidar estructuras Eval colocando una dentro de otra. instrucciones Opcional.com/abcchm. Referencia a una variable de objeto o una estructura. como los miembros de las estructuras externas están enmascaradas dentro de las estructuras internas. La instrucción Salir Eval transfiere el control inmediatamente a la instrucción que sigue a la instrucción FinEval.processtext. Por consiguiente.Texto = "Hola mundo" FinEval Una vez que se ha especificado una instrucción Eval. Salir Eval suele utilizarse después de evaluar alguna condición. Introducción a las estructuras de control Introducción a las clases y los objetos Estructura "Eval" Instrucción "Salir" Page 147 . http://www. Una o más instrucciones que siguen a Eval que se ejecutan sobre objeto. se puede tener acceso a los miembros de sólo el objeto especificado sin calificarlos. Comentarios La estructura Eval permite realizar una serie de instrucciones sobre un objeto especificado sin volver a calificar el nombre del objeto. FinEval Termina la ejecución de la estructura Eval. En el siguiente ejemplo se ilustra el uso de la estructura Eval para asignar valores a varias propiedades del mismo objeto: Eval MiEtiqueta . para cambiar un número de propiedades diferentes en un único objeto. coloque las instrucciones de asignación de las propiedades dentro de Eval. pero es necesario calificarlos con sus respectivos nombres.html Eval (Instrucción) Ejecuta una serie de instrucciones que hacen referencia repetidas veces a un único objeto o estructura.ABC Amber CHM Converter Trial version. Se puede incluir cualquier número de instrucciones Salir Eval en cualquier lugar de la estructura Eval. Eval objeto [ instrucciones ] [ Salir Eval ] [ instrucciones ] FinEval objeto Requerido..

html Volver Page 148 .com/abcchm.ABC Amber CHM Converter Trial version. http://www.processtext.

El orden de destrucción es indefinido. Fin Comentarios La instrucción Fin se puede colocar en cualquier lugar para finalizar la ejecución de código. globales y de clase. destruir objetos y borrar variables. La instrucción Fin proporciona una manera de forzar la detención de un programa. debe llamar al método Terminar del objeto Programa.processtext.ABC Amber CHM Converter Trial version. se destruyen las variables de objeto locales. http://www.com/abcchm. Volver Page 149 . Para la finalización de un programa de Visual Pauscal. Cuando se ejecuta la instrucción Fin.html Fin (Instrucción) Finaliza la ejecución inmediatamente.

códigoErrorControlar Opcional si se especifica Controlar. De lo contrario este último es opcional. Finalmente Opcional. Variable de tipo Entero que recibe el código de error al ejecutarse el bloque Controlar. Siempre se ejecuta un bloque Finalmente cuando se termina de ejecutar instruccionesControladas o el bloque Controlar.FinAdmErr.html AdmErr (Instrucción) Esta instrucción proporciona una manera de controlar los errores posibles que pueden ocurrir en un bloque de código determinado mientras se ejecuta el código.. Page 150 . vea Instrucción "Salir". mientras que el bloque Controlar contiene el código para controlar cualquier error que pueda tener lugar.processtext. http://www. Variable de tipo Entero que recibe el código de error al ejecutarse el bloque Finalmente. Marca el comienzo del bloque Finalmente.. Controlar Opcional. debe tener un bloque Finalmente. Nota Si una instrucción AdmErr no contiene un bloque Controlar. Instrucciones que se ejecutan después de las demás operaciones de procesamiento de error. Nota El bloque Finalmente no se ejecutará si se sale del bloque AdmErr mediante una instrucción Salir. Puede ser una instrucción compuesta. Este bloque es ejecutado sólo cuando ocurre un error en instruccionesControladas.com/abcchm. la variable códigoErrorFinalmente recibe o el código de error que se produjo o el valor 0 en caso de que no hubiera ocurrido un error. AdmErr [ instruccionesControladas ] [ Controlar [ códigoErrorControlar ] ] [ instruccionesControlador ] ] [ Finalmente [ códigoErrorFinalmente ] [ instruccionesFinalmente ] ] FinAdmErr instruccionesControladas Opcional. Marca el comienzo del bloque Controlar. códigoErrorFinalmente Opcional si se especifica Finalmente. Comentarios El bloque AdmErr contiene código en el que puede producirse un error. instruccionesFinalmente Opcional. Para más información.ABC Amber CHM Converter Trial version. Debido a que el bloque Finalmente se ejecuta sin importar si ocurre un error o no. que administra el error. Instrucciones en las que puede ocurrir un error. FinAdmErr Termina el bloque AdmErr.

ABC Amber CHM Converter Trial version.com/abcchm. http://www.html Introducción al control estructurado de excepciones Bloque "AdmErr" Volver Page 151 .processtext.

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html

AdmErr (Instrucción)
Esta instrucción proporciona una manera de controlar los errores posibles que pueden ocurrir en un bloque de código determinado mientras se ejecuta el código. AdmErr [ instruccionesControladas ] [ Controlar [ códigoErrorControlar ] ] [ instruccionesControlador ] ] [ Finalmente [ códigoErrorFinalmente ] [ instruccionesFinalmente ] ] FinAdmErr instruccionesControladas Opcional. Instrucciones en las que puede ocurrir un error. Puede ser una instrucción compuesta. Controlar Opcional. Marca el comienzo del bloque Controlar, que administra el error. Este bloque es ejecutado sólo cuando ocurre un error en instruccionesControladas. códigoErrorControlar Opcional si se especifica Controlar. Variable de tipo Entero que recibe el código de error al ejecutarse el bloque Controlar. Finalmente Opcional. Marca el comienzo del bloque Finalmente. Siempre se ejecuta un bloque Finalmente cuando se termina de ejecutar instruccionesControladas o el bloque Controlar. códigoErrorFinalmente Opcional si se especifica Finalmente. Variable de tipo Entero que recibe el código de error al ejecutarse el bloque Finalmente. instruccionesFinalmente Opcional. Instrucciones que se ejecutan después de las demás operaciones de procesamiento de error. FinAdmErr Termina el bloque AdmErr...FinAdmErr.

Comentarios El bloque AdmErr contiene código en el que puede producirse un error, mientras que el bloque Controlar contiene el código para controlar cualquier error que pueda tener lugar. Debido a que el bloque Finalmente se ejecuta sin importar si ocurre un error o no, la variable códigoErrorFinalmente recibe o el código de error que se produjo o el valor 0 en caso de que no hubiera ocurrido un error. Nota Si una instrucción AdmErr no contiene un bloque Controlar, debe tener un bloque Finalmente. De lo contrario este último es opcional. Nota El bloque Finalmente no se ejecutará si se sale del bloque AdmErr mediante una instrucción Salir. Para más información, vea Instrucción "Salir".

Page 152

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html

Introducción al control estructurado de excepciones Bloque "AdmErr"

Volver

Page 153

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html

Bloque (Instrucción)
Esta instrucción define un bloque de instrucciones. Se utiliza como una estructura de referencia para finalizar rápidamente la ejecución del bloque de instrucciones. Bloque [ instrucciones ] [ Salir Bloque ] [ instrucciones ] FinBloque instrucciones Opcional. Instrucciones que componen el bloque de instrucciones.

Comentarios La estructura Bloque se utiliza para definir un bloque de instrucciones que se deben ejecutar como una unidad. Mediante la instrucción Salir Bloque es posible romper esta unidad y finalizar el bloque de instrucciones. En muchos casos esto sería más difícil de realizar si no se utilizara la estructura Bloque.

Estructura "Bloque" Instrucción "Salir"

Volver

Page 154

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html

Clase (Instrucción)
Declara el nombre de una clase, así como una definición de las variables, propiedades y métodos que la componen. Clase nombre [ ( base) ] [ , campos ] [ instrucciones ] [ Constructor: métodoConstructor ] [ instrucciones ] [ Destructor: métodoDestructor ] [ instrucciones ] FinClase nombre Requerido. Nombre de la clase. Sigue las convenciones de nomenclatura estándar de las variables. base Opcional. Nombre de la clase base de la cual se heredan los miembros. Si se omite, la clase no posee una clase base. campos Opcional. Lista de los campos de la clase. instrucciones Opcional. Instrucciones que componen las variables, propiedades y métodos de la clase. métodoConstructor Requerido si se especifica Constructor. Define el método constructor de la clase. métodoDestructor Requerido si se especifica Destructor. Define el método destructor de la clase. FinClase Termina la declaración de la clase.

Cada campo de campos tiene la siguiente sintaxis y partes: [ @ ] nombre [ [ [ tamaño ] ] ] : tipo @ Opcional. Indica que el campo es un puntero. nombre Requerido. Nombre del campo. Debe ser un identificador válido. [] Opcional. Indica que el campo es una matriz. tamaño Opcional si se incluye [ ]. Especifica el tamaño de la matriz estática. Si se omite, la matriz es una matriz dinámica. tipo Requerido. Tipos de datos del campo.

Page 155

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html

Comentarios La posibilidad de declarar los campos de una clase en la instrucción Clase sólo se mantiene por compatibilidad con versiones anteriores. Se recomienda utilizar la instrucción ClaseVar para declarar los campos de una clase. Los campos declarados en la instrucción Clase son privados. Para más información, vea Accesibilidad. La cláusula Constructor define el método que es llamado cuando se crea una nueva instancia de la clase, mientras que la cláusula Destructor define el método que es llamado cuando se destruye una instancia de la clase. Para más información, vea Constructores y destructores. Una clase debe poseer al menos un miembro. De lo contrario el compilador genera un error.

Introducción a las clases y los objetos Constructores y destructores

Volver

Page 156

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html

Eval (Instrucción)
Ejecuta una serie de instrucciones que hacen referencia repetidas veces a un único objeto o estructura. Eval objeto [ instrucciones ] [ Salir Eval ] [ instrucciones ] FinEval objeto Requerido. Referencia a una variable de objeto o una estructura. instrucciones Opcional. Una o más instrucciones que siguen a Eval que se ejecutan sobre objeto. FinEval Termina la ejecución de la estructura Eval.

Comentarios La estructura Eval permite realizar una serie de instrucciones sobre un objeto especificado sin volver a calificar el nombre del objeto. Por ejemplo, para cambiar un número de propiedades diferentes en un único objeto, coloque las instrucciones de asignación de las propiedades dentro de Eval...FinEval, haciendo referencia al objeto una vez, en lugar de utilizar cada asignación de propiedades para hacerlo. En el siguiente ejemplo se ilustra el uso de la estructura Eval para asignar valores a varias propiedades del mismo objeto:
Eval MiEtiqueta .Visible = Verd .Texto = "Hola mundo" FinEval

Una vez que se ha especificado una instrucción Eval, no se puede reasignar objeto hasta que se pase FinEval. Por consiguiente, se puede tener acceso a los miembros de sólo el objeto especificado sin calificarlos. Se pueden acceder a miembros de otros objetos y estructuras, pero es necesario calificarlos con sus respectivos nombres. Se pueden anidar estructuras Eval colocando una dentro de otra. Sin embargo, como los miembros de las estructuras externas están enmascaradas dentro de las estructuras internas, debe proporcionar una referencia de objeto completa en una estructura Eval interna a cualquier miembro de un objeto de una estructura externa. La instrucción Salir Eval transfiere el control inmediatamente a la instrucción que sigue a la instrucción FinEval. Se puede incluir cualquier número de instrucciones Salir Eval en cualquier lugar de la estructura Eval. Salir Eval suele utilizarse después de evaluar alguna condición, por ejemplo con una instrucción Si.

Introducción a las estructuras de control Introducción a las clases y los objetos Estructura "Eval" Instrucción "Salir"

Page 157

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html

Volver

Page 158

ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html

Mientras (Instrucción)
Ejecuta una serie de instrucciones siempre que una condición dada sea Verd. Mientras condición [ instrucciones ] [ Salir Mientras ] [ instrucciones ] FinMientras condición Requerido. Expresión. Debe evaluarse como Verd o Falso. instrucciones Opcional. Instrucciones a ejecutarse si condición es Verd. FinMientras Termina la ejecución del bloque Mientras.

Comentarios Si condición es Verd, se ejecutan todas las instrucciones hasta que se encuentre la instrucción FinMientras. Después, el control vuelve a la instrucción Mientras y se comprueba de nuevo condición. Si condición aún es Verd, se repite el proceso. Si es Falso, la ejecución se reanuda con la instrucción que sigue a la instrucción FinMientras. La instrucción Salir Mientras transfiere el control inmediatamente a la instrucción que sigue a la instrucción FinMientras. Se puede incluir cualquier número de instrucciones Salir Mientras en cualquier lugar del bucle Mientras. Salir Mientras suele utilizarse después de evaluar alguna condición, por ejemplo con una instrucción Si. Se pueden anidar bucles Mientras si se coloca un bucle dentro de otro.

Introducción a las estructuras de control Bucle "Mientras" Instrucción "Salir"

Volver

Page 159

com/abcchm. biblioteca Requerido en la sintaxis 2. Indica que el procedimiento es un procedimiento de inicio. Inicio Opcional en la sintaxis 1.html Proc (Instrucción) Declara el nombre.processtext. Adelantado Page 160 .ABC Amber CHM Converter Trial version. Exportar Opcional en la sintaxis 1. Debe ser un identificador válido. Nombre de la biblioteca DLL desde donde se importa este procedimiento. Ver la sección comentarios. Un bloque de instrucciones que se ejecutan dentro del procedimiento. Nombre de clase. En caso de omitirse. instrucciones Opcional en la sintaxis 1. Sintaxis 1: Proc [ clase . Nombre real del procedimiento que es importado. Indica que el procedimiento devuelve una matriz de tipo. éste puede ser llamado desde otro programa. ] nombre [ ( parámetros ) ] [ : tipo [ [] ] ] [{ Exportar | Inicio }] [ instrucciones ] [ Salir ] [ instrucciones ] FinProc Sintaxis 2: Proc nombre [ ( parámetros ) ] [ : tipo [ [] ] ] . los parámetros y el código que definen un procedimiento. Nombre del procedimiento. Termina la definición del procedimiento. nombre Requerido. FinProc Requerido en la sintaxis 1. Los parámetros múltiples se separan por comas. Indica que el procedimiento se exporta. biblioteca [ export ] Sintaxis 3: Proc nombre [ ( parámetros ) ] [ : tipo [ [] ] ] Adelantado clase Opcional en la sintaxis 1. Lista de variables que representan los parámetros que se pasan al procedimiento cuando se le llama. tipo Opcional. Sólo es válido en caso de que el procedimiento sea un método adelantado definido fuera de la clase. Tipos de datos del valor devuelto por el procedimiento. parámetros Opcional. Al exportar un procedimiento. Es útil sólo en bibliotecas DLL. http://www. el procedimiento no devuelve ningún valor. export Opcional en la sintaxis 2. [] Opcional si se suministra tipo.

se devuelve una estructura cuyos miembros se han inicializado como se menciona anteriormente. valor Opcional para parámetros declarados con Opcional. Si es una matriz. e indica que el código del procedimiento se define más adelante en el código. Si es una estructura. posiblemente fuera de la clase. que es 0 si es numérico. Debe ser un identificador válido. Indica que este parámetro no es necesario cuando se llama al procedimiento.html Requerido en la sintaxis 3. Cuando el procedimiento vuelva al código que realiza la llamada. Este último caso sólo es válido cuando el tipo de datos que devuelve el procedimiento es un tipo de datos elemental. La sintaxis 2 declara un procedimiento externo que está ubicado en una biblioteca DLL. La declaración opcional de parámetros puede proporcionar la cláusula valor. Si se utiliza esta palabra clave. Cualquier constante o expresión constante que se evalúa como el tipo de datos del parámetro. tipo Requerido. Indica que el código del procedimiento será definido más adelante. La instrucción Salir provoca una salida inmediata de un procedimiento. se devuelve una matriz de tamaño 0. es decir que el procedimiento puede modificar la variable subyacente en el código de llamada de la misma forma que puede hacerlo el propio código de llamada.com/abcchm. Indica que el parámetro se pasa por referencia. Un procedimiento adelantado sólo puede declararse dentro de una clase. el procedimiento devolverá el valor predeterminado apropiado para el tipo de datos del valor de devolución. Cada parámetro de parámetros tiene la siguiente sintaxis y partes: [ Opcional ] [ Referencia ] nombre [ [] ] : tipo [ = valor ] Opcional Opcional. Comentarios La sintaxis 1 declara un procedimiento o método normal. nombre Requerido. Nombre de la variable que representa el parámetro. Para devolver un valor. la ejecución continúa con la instrucción que sigue a la instrucción que lo llamó. Indica que el parámetro es una matriz. Page 161 . Si se omite. se puede asignar el valor a la variable especial Resultado o incluirlo en una instrucción Devolver. Puede aparecer cualquier número de instrucciones Salir en cualquier lugar de un procedimiento. Si se utiliza Salir sin establecer un valor de devolución. http://www. el parámetro se pasa por valor. La sintaxis 3 declara un método adelantado.ABC Amber CHM Converter Trial version. todos los parámetros siguientes deben ser opcionales y declararse mediante la palabra clave Opcional. Se declara especificando la palabra clave Adelantado. "" si es Cadena. Falso si es Booleano. Tipos de datos del parámetro pasado al procedimiento. Referencia Opcional. Solamente la sintaxis 1 puede definir código en el procedimiento.processtext. [] Opcional. o un objeto sin crear si es una clase.

En tal caso. se pueden omitir los paréntesis. http://www. Puede llamar a un procedimiento mediante su nombre. Se puede utilizar un procedimiento que devuelve un valor en el lado derecho de una expresión cuando desee utilizar dicho valor. Tenga esto en cuenta si un parámetro realiza una llamada a otro procedimiento. Nota Al llamar a un procedimiento. el orden de llamada es igual al orden de declaración. Introducción a los procedimientos Declaración de procedimientos Parámetros de procedimientos Volver Page 162 . que es llamado al iniciar el programa.com/abcchm. Al especificar la palabra clave Inicio se declara un procedimiento de inicio. La variable Resultado y la instrucción Devolver sólo son válidas dentro de un procedimiento que devuelve un valor. seguido por la lista de parámetros entre paréntesis. es decir de atrás para adelante. Si no se proporcionan parámetros. Puede haber más de un procedimiento de inicio por programa. Asimismo. pueden mezclarse las instrucciones Salir y Devolver. No debe aceptar ningún parámetro ni devolver ningún valor.processtext.html Puede aparecer cualquier número de instrucciones Devolver en cualquier lugar de un procedimiento. los parámetro se evalúan de derecha a izquierda.ABC Amber CHM Converter Trial version. ya que el orden de llamadas será inverso al orden de declaración. en una expresión.

al leer la propiedad se deberán pasar estos parámetros. Si el método requiere parámetros. Prop nombre : tipo [ Lec : objetoLectura ] [ Esc : objetoEscritura ] FinProp nombre Requerido. también puede especificar un campo o un método. El tipo de datos del campo debe coincidir con el de la propiedad. al asignar a la propiedad se deberán pasar estos parámetros extra. la propiedad es de sólo escritura. Si especifica un campo. al leer la propiedad se llamará a ese método. Si el método requiere más parámetros. al asignar a la propiedad se almacenará el valor en ese campo. Si bien las cláusulas Esc y Lec son ambas opcionales.processtext. Si se omite la cláusula Esc. Campo o método de clase que se invoca al asignar a la propiedad. Introducción a las clases y los objetos Propiedades y procedimientos de propiedad Clase (Instrucción) Volver Page 163 . tipo Requerido. Comentarios La cláusula Lec puede especificar un campo o un método. Si se omite la cláusula Lec. Si especifica un campo. al menos una de ellas se debe especificar en una propiedad. Tipo de datos de la propiedad.html Prop (Instrucción) Se utiliza a nivel de clase para declarar una propiedad. la propiedad es de sólo lectura. El tipo de datos del campo debe coincidir con el de la propiedad. objetoLectura Requerido si se especifica Lec. Si se especifica un método.ABC Amber CHM Converter Trial version. El primer parámetro del método debe ser del mismo tipo de datos que la propiedad. al asignar a la propiedad se llamará a ese método. El método debe devolver el mismo tipo de datos que la propiedad. Campo o método de clase que se invoca al leer la propiedad.com/abcchm. Nombre único que identifica la propiedad. objetoEscritura Requerido si se especifica Esc. Si se especifica un método. al leer la propiedad se devolverá el valor de ese campo. al igual que Lec. http://www. La cláusula Esc.

Comentarios Si expresión coincide con cualquier cláusula Caso listaExpresiones. Las expresiones en listaExpresiones pueden ser de cualquier tipo de datos compatible con el de expresión. Una o más instrucciones a continuación de Caso Otro que se ejecutan si expresión no coincide con ninguna cláusula de listaExpresiones. la ejecución continúa en la instrucción que sigue a FinSeleccionar. La instrucción Caso Otro se utiliza para introducir las instrucciones otrasInstrucciones que se ejecutarán si no se encuentra ninguna coincidencia entre expresión y una cláusula de listaExpresiones en cualquiera de las demás instrucciones Caso. Esto transfiere inmediatamente el control a la instrucción que sigue a FinSeleccionar. Cada instrucción Seleccionar anidada debe tener una instrucción FinSeleccionar coincidente. Si ninguna cláusula Caso listaExpresiones coincide con expresión y no existe ninguna instrucción Caso Otro. http://www. FinSeleccionar Termina un bloque Seleccionar.html Seleccionar (Instrucción) Ejecuta uno de varios grupos de instrucciones. Si expresión coincide con una cláusula de listaExpresiones en más de una cláusula Caso. Aunque no es necesario. Expresión. otrasInstrucciones Opcional. es recomendable tener una instrucción Caso Otro en el bloque Seleccionar para controlar los valores de expresión imprevistos.com/abcchm. Seleccionar expresión [ Caso listaExpresiones [ instrucciones ] ] [ Caso Otro [ otrasInstrucciones ] ] FinSeleccionar expresión Requerido. Si no necesita ejecutar más instrucciones de un bloque Caso o Caso Otro. Page 164 .ABC Amber CHM Converter Trial version. según el valor de una expresión. Debe evaluarse en uno de los tipos de datos elementales. listaExpresiones Requerido en una instrucción Caso. Las cláusulas de varias expresiones se separan mediante comas.processtext. sólo se ejecutan las instrucciones que siguen a la primera coincidencia. se ejecutan las instrucciones que siguen a la instrucción Caso hasta la siguiente instrucción Caso o FinSeleccionar. instrucciones Opcional. puede salir del bloque mediante una instrucción Salir Seleccionar. El control pasa después a la instrucción que sigue a FinSeleccionar. Las instrucciones Seleccionar pueden anidarse. Lista de cláusulas de expresiones que representan valores que coinciden para expresión. Una o más instrucciones después de Caso que se ejecutan si expresión coincide con cualquier cláusula en listaExpresiones.

com/abcchm.processtext.ABC Amber CHM Converter Trial version.html Bloque "Seleccionar" Instrucción "Salir" Volver Page 165 . http://www.

Todas las instrucciones deben estar en la misma línea y separadas por el carácter punto y coma. es posible ejecutar varias instrucciones como resultado de una decisión del bloque Si. Si condición es Verd. La expresión que proporcione en condición debe evaluarse como Verd o Falso. Sugerencia El bloque Seleccionar puede ser más útil cuando se evalúa una única expresión que tiene varios valores posibles. Comentarios Puede utilizar la forma de una sola línea para pruebas cortas y sencillas. dependiendo del valor de una expresión. generalmente. se requiere en formato de una sola línea que tenga una cláusula SiNo. instruccionesSino Opcional en formato de múltiples líneas. Si condición [ Entonces ] [ instruccionesSi ] [ SiNo [ instruccionesSino ] ] FinSi O bien Si condición [ Entonces ] instruccionesSi [ . SiNo instruccionesSino ] condición Requerido.processtext. instruccionesSi Opcional en formato de múltiples líneas. es más fácil de leer. como en el ejemplo siguiente: Si A > 10 Entonces A = A + 1 .com/abcchm.. Una o más instrucciones a ejecutarse si condición es Falso. Una o más instrucciones a ejecutarse si condición es Verd. Con el formato de una sola línea. http://www. Cuando se encuentra un bloque Si de múltiples líneas. FinSi Termina un bloque Si.FinSi. o como un tipo de datos que sea implícitamente convertible a Booleano. Sin embargo. La palabra clave Entonces es opcional en todos los casos. el formato de múltiples líneas proporciona más estructura y flexibilidad que el formato de una sola línea y. La ejecución continúa con la instrucción que sigue a FinSi. se ejecutan las instrucciones que están a continuación.html Si (Instrucción) Ejecuta de forma condicional un grupo de instrucciones. se requiere en formato de una sola línea. Expresión. B = B + A . Si condición es Falso se ejecutan las instrucciones que siguen a SiNo en caso de que esté presente. Page 166 ..ABC Amber CHM Converter Trial version. C = C + B La instrucción Si de varias líneas debe finalizar con una instrucción FinSi. mantener y depurar. se prueba condición.

processtext.html Bloque "Si" Bloque "Seleccionar" Volver Page 167 .ABC Amber CHM Converter Trial version.com/abcchm. http://www.

esta instrucción muestra un mensaje de error y finaliza el programa. mensaje ] número Requerido.ABC Amber CHM Converter Trial version.processtext. En caso de que no haya un bloque AdmErr.com/abcchm. que es controlada mediante el bloque AdmErr. Introducción al control estructurado de excepciones AdmErr (Instrucción) Bloque "AdmErr" Volver Page 168 . mensaje Opcional.html GenerarError (Instrucción) Genera una excepción en tiempo de ejecución. Si se omite. se utiliza el mensaje predeterminado para la excepción indicada. http://www. Comentarios Esta instrucción produce una excepción en tiempo de ejecución. GenerarError número [ . Expresión númerica entera que representa el código de la excepción. Expresión de cadena que representa el mensaje de error asociado con la excepción.

En la sintaxis 2. Debido a que condición se evalúa al final del bucle. las instrucciones se ejecutan por lo menos una vez. Marca el final del bucle Repetir. Introducción a las estructuras de control Bucle "Repetir" Page 169 . por ejemplo con una instrucción Si. Se puede utilizar una instrucción Salir Repetir para romper el bucle (ver más abajo).com/abcchm. HastaQue Requerido en la sintaxis 2. La instrucción Salir Repetir transfiere el control inmediatamente a la instrucción que sigue a la instrucción PorSiempre o HastaQue. PorSiempre Requerido en la sintaxis 1. Comentarios El la sintaxis 1. las instrucciones se ejecutan indefinidamente. instrucciones Opcional. Sintaxis 1: Repetir [ instrucciones ] [ Salir Repetir ] [ instrucciones ] PorSiempre Sintaxis 2: Repetir [ instrucciones ] [ Salir Repetir ] [ instrucciones ] HastaQue condición condición Requerido en la sintaxis 2. Debe evaluarse como Verd o Falso. Marca el final del bucle Repetir. Expresión. Cuando condición es Verd. Salir Repetir suele utilizarse después de evaluar alguna condición. la ejecución se reanuda con la instrucción que sigue a la instrucción HastaQue. http://www.processtext. las instrucciones se ejecutan hasta que condición sea Verd.ABC Amber CHM Converter Trial version. Instrucciones a ejecutarse incondicionalmente o hasta que condición sea Verd. o hasta que una condición dada sea Verd. Se puede incluir cualquier número de instrucciones Salir Repetir en cualquier lugar del bucle Repetir. Se pueden anidar bucles Repetir si se coloca un bucle dentro de otro.html Repetir (Instrucción) Ejecuta una serie de instrucciones incondicionalmente.

ABC Amber CHM Converter Trial version.com/abcchm.processtext. http://www.html Instrucción "Salir" Volver Page 170 .

prp).ABC Amber CHM Converter Trial version.com/abcchm. Importar archivo archivo Requerido. Nombre entre comillas del archivo a importar. Volver Page 171 . Comentarios Normalmente archivo indica una biblioteca precompilada (extensión . Cuando se importa una biblioteca.html Importar (Instrucción) Indica al compilador que utilice el código y las declaraciones del archivo especificado.processtext. todo su código está disponible para la aplicación. http://www.

Expresión de tipo Booleano. independientemente de si el programa se está depurando o no. http://www. Interrumpir [ condición ] condición Opcional. El uso de la instrucción Interrumpir es similar a establecer un punto de interrupción en el código. La instrucción Interrumpir se ignora si el programa no está siendo depurado. se evalúa condición. se produce una pausa en el depurador.processtext.html Interrumpir (Instrucción) Produce una pausa en el depurador. Si es Verd o se ha omitido condición.com/abcchm. Comentarios Cuando se encuentra una instrucción Interrumpir. Depurador Volver Page 172 .ABC Amber CHM Converter Trial version. Tenga esto en cuenta si condición realiza llamadas a procedimientos. Se produce la pausa sólo si condición es Verd. Nota condición siempre se evalúa al encontrarse la instrucción Interrumpir.

.FinMientras. Contar. Mientras.FinSi. Comentarios La instrucción IrHacia no se puede utilizar para entrar o salir de un procedimiento o estructura de control. Se recomienda en su lugar emplear. estructuras de control. etc.Seguir.. IrHacia línea línea Requerido. Una etiqueta de línea se define de la siguiente manera: etiquetaLínea: El siguiente ejemplo muestra un mensaje 3 veces: Var Contador:Entero Vuelta: Mensaje("Hola !!!") Contador = Contador + 1 Si Contador <> 3 Entonces IrHacia Vuelta Fin Introducción a las estructuras de control Volver Page 173 . Cualquier etiqueta de línea... Las instrucciones IrHacia pueden dificultar la lectura y el mantenimiento del código. como por ejemplo Si. siempre que sea posible.processtext.ABC Amber CHM Converter Trial version.html IrHacia (Instrucción) Realiza un salto incondicional a una línea especificada. http://www.com/abcchm..

Nombre único que identifica la propiedad. Si especifica un campo. El tipo de datos del campo debe coincidir con el de la propiedad. Si se especifica un método. al leer la propiedad se deberán pasar estos parámetros. al leer la propiedad se llamará a ese método. Si se omite la cláusula Esc.processtext. al asignar a la propiedad se deberán pasar estos parámetros extra. al asignar a la propiedad se llamará a ese método. El tipo de datos del campo debe coincidir con el de la propiedad.com/abcchm. Si el método requiere parámetros. Tipo de datos de la propiedad. Campo o método de clase que se invoca al leer la propiedad. Si bien las cláusulas Esc y Lec son ambas opcionales. El primer parámetro del método debe ser del mismo tipo de datos que la propiedad. la propiedad es de sólo lectura. La cláusula Esc. Introducción a las clases y los objetos Propiedades y procedimientos de propiedad Clase (Instrucción) Volver Page 174 . al asignar a la propiedad se almacenará el valor en ese campo. también puede especificar un campo o un método. El método debe devolver el mismo tipo de datos que la propiedad. Campo o método de clase que se invoca al asignar a la propiedad. Si se especifica un método. al menos una de ellas se debe especificar en una propiedad. Comentarios La cláusula Lec puede especificar un campo o un método. Prop nombre : tipo [ Lec : objetoLectura ] [ Esc : objetoEscritura ] FinProp nombre Requerido. Si se omite la cláusula Lec.html Prop (Instrucción) Se utiliza a nivel de clase para declarar una propiedad. Si el método requiere más parámetros. al igual que Lec. Si especifica un campo.ABC Amber CHM Converter Trial version. objetoEscritura Requerido si se especifica Esc. objetoLectura Requerido si se especifica Lec. la propiedad es de sólo escritura. al leer la propiedad se devolverá el valor de ese campo. http://www. tipo Requerido.

instrucciones Opcional. Salir Mientras suele utilizarse después de evaluar alguna condición. Después. Se pueden anidar bucles Mientras si se coloca un bucle dentro de otro.html Mientras (Instrucción) Ejecuta una serie de instrucciones siempre que una condición dada sea Verd. Instrucciones a ejecutarse si condición es Verd. La instrucción Salir Mientras transfiere el control inmediatamente a la instrucción que sigue a la instrucción FinMientras. Comentarios Si condición es Verd. Debe evaluarse como Verd o Falso. http://www.ABC Amber CHM Converter Trial version. Si condición aún es Verd. Mientras condición [ instrucciones ] [ Salir Mientras ] [ instrucciones ] FinMientras condición Requerido. la ejecución se reanuda con la instrucción que sigue a la instrucción FinMientras. FinMientras Termina la ejecución del bloque Mientras.com/abcchm. Expresión.processtext. se repite el proceso. por ejemplo con una instrucción Si. el control vuelve a la instrucción Mientras y se comprueba de nuevo condición. Se puede incluir cualquier número de instrucciones Salir Mientras en cualquier lugar del bucle Mientras. se ejecutan todas las instrucciones hasta que se encuentre la instrucción FinMientras. Si es Falso. Introducción a las estructuras de control Bucle "Mientras" Instrucción "Salir" Volver Page 175 .

com/abcchm. En la sintaxis 2. PorSiempre Requerido en la sintaxis 1. La instrucción Salir Repetir transfiere el control inmediatamente a la instrucción que sigue a la instrucción PorSiempre o HastaQue. Introducción a las estructuras de control Bucle "Repetir" Page 176 . Salir Repetir suele utilizarse después de evaluar alguna condición. las instrucciones se ejecutan por lo menos una vez. Se puede incluir cualquier número de instrucciones Salir Repetir en cualquier lugar del bucle Repetir. por ejemplo con una instrucción Si.ABC Amber CHM Converter Trial version. http://www. Debe evaluarse como Verd o Falso.processtext. instrucciones Opcional. Comentarios El la sintaxis 1. Cuando condición es Verd. las instrucciones se ejecutan indefinidamente. Expresión. Se pueden anidar bucles Repetir si se coloca un bucle dentro de otro. Marca el final del bucle Repetir. Se puede utilizar una instrucción Salir Repetir para romper el bucle (ver más abajo). las instrucciones se ejecutan hasta que condición sea Verd. o hasta que una condición dada sea Verd.html Repetir (Instrucción) Ejecuta una serie de instrucciones incondicionalmente. Marca el final del bucle Repetir. Instrucciones a ejecutarse incondicionalmente o hasta que condición sea Verd. Debido a que condición se evalúa al final del bucle. HastaQue Requerido en la sintaxis 2. Sintaxis 1: Repetir [ instrucciones ] [ Salir Repetir ] [ instrucciones ] PorSiempre Sintaxis 2: Repetir [ instrucciones ] [ Salir Repetir ] [ instrucciones ] HastaQue condición condición Requerido en la sintaxis 2. la ejecución se reanuda con la instrucción que sigue a la instrucción HastaQue.

html Instrucción "Salir" Volver Page 177 .ABC Amber CHM Converter Trial version.processtext.com/abcchm. http://www.

tipo Opcional.html Proc (Instrucción) Declara el nombre. Un bloque de instrucciones que se ejecutan dentro del procedimiento. éste puede ser llamado desde otro programa. Tipos de datos del valor devuelto por el procedimiento. Nombre de la biblioteca DLL desde donde se importa este procedimiento. Los parámetros múltiples se separan por comas. FinProc Requerido en la sintaxis 1. biblioteca [ export ] Sintaxis 3: Proc nombre [ ( parámetros ) ] [ : tipo [ [] ] ] Adelantado clase Opcional en la sintaxis 1. Indica que el procedimiento devuelve una matriz de tipo. Indica que el procedimiento se exporta. Nombre real del procedimiento que es importado. los parámetros y el código que definen un procedimiento.ABC Amber CHM Converter Trial version. Inicio Opcional en la sintaxis 1. Nombre del procedimiento. Sintaxis 1: Proc [ clase . Nombre de clase. Es útil sólo en bibliotecas DLL. ] nombre [ ( parámetros ) ] [ : tipo [ [] ] ] [{ Exportar | Inicio }] [ instrucciones ] [ Salir ] [ instrucciones ] FinProc Sintaxis 2: Proc nombre [ ( parámetros ) ] [ : tipo [ [] ] ] . Lista de variables que representan los parámetros que se pasan al procedimiento cuando se le llama. nombre Requerido. Adelantado Page 178 . instrucciones Opcional en la sintaxis 1. Exportar Opcional en la sintaxis 1. Ver la sección comentarios. Sólo es válido en caso de que el procedimiento sea un método adelantado definido fuera de la clase. el procedimiento no devuelve ningún valor.processtext. En caso de omitirse. [] Opcional si se suministra tipo. Indica que el procedimiento es un procedimiento de inicio. http://www.com/abcchm. Al exportar un procedimiento. export Opcional en la sintaxis 2. parámetros Opcional. biblioteca Requerido en la sintaxis 2. Debe ser un identificador válido. Termina la definición del procedimiento.

nombre Requerido. Este último caso sólo es válido cuando el tipo de datos que devuelve el procedimiento es un tipo de datos elemental. Page 179 .html Requerido en la sintaxis 3. Un procedimiento adelantado sólo puede declararse dentro de una clase. Comentarios La sintaxis 1 declara un procedimiento o método normal. Cuando el procedimiento vuelva al código que realiza la llamada. Se declara especificando la palabra clave Adelantado. el parámetro se pasa por valor. Si se omite.ABC Amber CHM Converter Trial version.com/abcchm. Indica que el código del procedimiento será definido más adelante. se puede asignar el valor a la variable especial Resultado o incluirlo en una instrucción Devolver. Indica que este parámetro no es necesario cuando se llama al procedimiento. "" si es Cadena.processtext. posiblemente fuera de la clase. el procedimiento devolverá el valor predeterminado apropiado para el tipo de datos del valor de devolución. [] Opcional. Si se utiliza Salir sin establecer un valor de devolución. Solamente la sintaxis 1 puede definir código en el procedimiento. La declaración opcional de parámetros puede proporcionar la cláusula valor. tipo Requerido. Si es una matriz. Referencia Opcional. se devuelve una matriz de tamaño 0. Cualquier constante o expresión constante que se evalúa como el tipo de datos del parámetro. http://www. la ejecución continúa con la instrucción que sigue a la instrucción que lo llamó. o un objeto sin crear si es una clase. Si es una estructura. La sintaxis 3 declara un método adelantado. La instrucción Salir provoca una salida inmediata de un procedimiento. Nombre de la variable que representa el parámetro. Tipos de datos del parámetro pasado al procedimiento. Puede aparecer cualquier número de instrucciones Salir en cualquier lugar de un procedimiento. es decir que el procedimiento puede modificar la variable subyacente en el código de llamada de la misma forma que puede hacerlo el propio código de llamada. Indica que el parámetro es una matriz. Indica que el parámetro se pasa por referencia. todos los parámetros siguientes deben ser opcionales y declararse mediante la palabra clave Opcional. e indica que el código del procedimiento se define más adelante en el código. Si se utiliza esta palabra clave. Debe ser un identificador válido. Cada parámetro de parámetros tiene la siguiente sintaxis y partes: [ Opcional ] [ Referencia ] nombre [ [] ] : tipo [ = valor ] Opcional Opcional. Falso si es Booleano. valor Opcional para parámetros declarados con Opcional. La sintaxis 2 declara un procedimiento externo que está ubicado en una biblioteca DLL. se devuelve una estructura cuyos miembros se han inicializado como se menciona anteriormente. que es 0 si es numérico. Para devolver un valor.

La variable Resultado y la instrucción Devolver sólo son válidas dentro de un procedimiento que devuelve un valor.processtext. se pueden omitir los paréntesis. el orden de llamada es igual al orden de declaración. Asimismo. No debe aceptar ningún parámetro ni devolver ningún valor. Si no se proporcionan parámetros. ya que el orden de llamadas será inverso al orden de declaración. los parámetro se evalúan de derecha a izquierda. http://www. es decir de atrás para adelante. En tal caso. Introducción a los procedimientos Declaración de procedimientos Parámetros de procedimientos Volver Page 180 . que es llamado al iniciar el programa. pueden mezclarse las instrucciones Salir y Devolver. Al especificar la palabra clave Inicio se declara un procedimiento de inicio. en una expresión. seguido por la lista de parámetros entre paréntesis. Puede llamar a un procedimiento mediante su nombre. Nota Al llamar a un procedimiento. Tenga esto en cuenta si un parámetro realiza una llamada a otro procedimiento.html Puede aparecer cualquier número de instrucciones Devolver en cualquier lugar de un procedimiento. Puede haber más de un procedimiento de inicio por programa. Se puede utilizar un procedimiento que devuelve un valor en el lado derecho de una expresión cuando desee utilizar dicho valor.com/abcchm.ABC Amber CHM Converter Trial version.

Si especifica un campo. El tipo de datos del campo debe coincidir con el de la propiedad. El primer parámetro del método debe ser del mismo tipo de datos que la propiedad. también puede especificar un campo o un método. Comentarios La cláusula Lec puede especificar un campo o un método. al leer la propiedad se llamará a ese método. Campo o método de clase que se invoca al asignar a la propiedad. Nombre único que identifica la propiedad. Si el método requiere parámetros. la propiedad es de sólo lectura.ABC Amber CHM Converter Trial version. Si se especifica un método. Si especifica un campo. al leer la propiedad se devolverá el valor de ese campo. Campo o método de clase que se invoca al leer la propiedad. al igual que Lec. al asignar a la propiedad se llamará a ese método. El método debe devolver el mismo tipo de datos que la propiedad. El tipo de datos del campo debe coincidir con el de la propiedad. Introducción a las clases y los objetos Propiedades y procedimientos de propiedad Clase (Instrucción) Volver Page 181 . Prop nombre : tipo [ Lec : objetoLectura ] [ Esc : objetoEscritura ] FinProp nombre Requerido.com/abcchm. objetoEscritura Requerido si se especifica Esc. al asignar a la propiedad se deberán pasar estos parámetros extra. al menos una de ellas se debe especificar en una propiedad. Si se especifica un método.html Prop (Instrucción) Se utiliza a nivel de clase para declarar una propiedad. la propiedad es de sólo escritura. tipo Requerido.processtext. Si se omite la cláusula Esc. La cláusula Esc. objetoLectura Requerido si se especifica Lec. Si el método requiere más parámetros. Si se omite la cláusula Lec. Si bien las cláusulas Esc y Lec son ambas opcionales. Tipo de datos de la propiedad. al leer la propiedad se deberán pasar estos parámetros. http://www. al asignar a la propiedad se almacenará el valor en ese campo.

html Prototipo (Instrucción) Declara un prototipo y sus parámetros. Cada parámetro de parámetros tiene la siguiente sintaxis y partes: [ Opcional ] [ Referencia ] [ nombre ] [ [] ] : tipo [ = valor ] Opcional Opcional. Tipos de datos del valor devuelto por el prototipo. Indica que el parámetro es una matriz. Debe ser un identificador válido. tipo Requerido.processtext. Para más información. tipo Opcional. http://www. [] Opcional. Indica que el parámetro se pasa por referencia. Cualquier constante o expresión constante que se evalúa como el tipo de datos del parámetro. Nombre de la variable que representa el parámetro. parámetros Opcional. Nombre del prototipo. Tipos de datos del parámetro pasado al procedimiento. Un prototipo solamente define un nuevo tipo de datos. el prototipo no devuelve ningún valor. La declaración opcional de parámetros puede proporcionar la cláusula valor. Si se utiliza esta palabra clave. vea Prototipos y variables de procedimientos. Comentarios Un prototipo es una definición de un procedimiento y se emplea para crear variables de procedimientos. Debe ser un identificador válido.ABC Amber CHM Converter Trial version. no define ningún código asociado con el mismo. Indica que este parámetro no es necesario cuando se llama al procedimiento. valor Opcional para parámetros declarados con Opcional. [] Opcional si se suministra tipo.com/abcchm. es decir que el procedimiento puede modificar la variable subyacente en el código de llamada de la misma forma que puede hacerlo el propio código de llamada. Referencia Opcional. el parámetro se pasa por valor. Si se omite. Los parámetros múltiples se separan por comas. Prototipo nombre [ ( parámetros ) ] [ : tipo [ [] ] ] nombre Requerido. Indica que el prototipo devuelve una matriz de tipo. En caso de omitirse. Page 182 . todos los parámetros siguientes deben ser opcionales y declararse mediante la palabra clave Opcional. Lista de variables que representan los parámetros que se pasan al procedimiento cuando se le llama. nombre Opcional.

html Prototipos y variables de procedimientos Introducción a los procedimientos Volver Page 183 .ABC Amber CHM Converter Trial version.processtext.com/abcchm. http://www.

processtext. Número del puerto.html PuertoEnviar (Instrucción) Envía un valor a través de un puerto de la PC.ABC Amber CHM Converter Trial version. Valor de tipo Byte a enviar.com/abcchm. http://www. valor Requerido. En los otros sistemas operativos sólo es posible acceder a los puertos desde un controlador de dispositivo o una rutina ejecutándose en modo núcleo. Volver Page 184 . valor puerto Requerido. Comentarios Sólo es posible acceder a los puertos de la PC desde Windows 95/98. PuertoEnviar puerto .

http://www. En este caso. Matrices Borrar (Instrucción) Volver Page 185 . Los elementos de la matriz se cuentan desde 0 hasta su tamaño menos uno. Si tamaño es cero. Redim [ Preservar ] nombre . a menos que especifique Preservar.html Redim (Instrucción) Se utiliza para asignar o reasignar espacio de almacenamiento para una variable de matriz dinámica. Redim libera la matriz existente y crea una matriz nueva. Si tamaño es 0. tamaño Preservar Opcional. Pauscal liberará los elementos eliminados de la matriz. La instrucción Redim no puede cambiar el tamaño de una matriz estática. Pauscal copia los elementos de la matriz existente en la nueva matriz. Valor numérico entero que representa el tamaño de la matriz.ABC Amber CHM Converter Trial version. tamaño Requerido. la matriz no tendrá dimensión. Nombre de la variable de matriz dinámica. nombre Requerido. la instrucción Redim funciona igual que la instrucción Borrar. Si se utiliza Preservar y la matriz se achica. Los elementos de la nueva matriz se inicializan al valor predeterminado para su tipo de datos. Si se incluye la palabra clave Preservar.com/abcchm.processtext. Comentarios La instrucción Redim no puede cambiar el tipo de datos de una variable de matriz o proporcionar valores nuevos de inicialización para los elementos de la matriz. la matriz no tendrá dimensión. Palabra clave utilizada para conservar los datos en una matriz existente.

por ejemplo con una instrucción Si. Se pueden anidar bucles Repetir si se coloca un bucle dentro de otro. Debe evaluarse como Verd o Falso. Salir Repetir suele utilizarse después de evaluar alguna condición. Se puede incluir cualquier número de instrucciones Salir Repetir en cualquier lugar del bucle Repetir. Expresión. Se puede utilizar una instrucción Salir Repetir para romper el bucle (ver más abajo). Comentarios El la sintaxis 1. Marca el final del bucle Repetir. Marca el final del bucle Repetir. PorSiempre Requerido en la sintaxis 1. http://www. La instrucción Salir Repetir transfiere el control inmediatamente a la instrucción que sigue a la instrucción PorSiempre o HastaQue. las instrucciones se ejecutan por lo menos una vez. En la sintaxis 2. Cuando condición es Verd.ABC Amber CHM Converter Trial version. instrucciones Opcional.html Repetir (Instrucción) Ejecuta una serie de instrucciones incondicionalmente. Introducción a las estructuras de control Bucle "Repetir" Page 186 . HastaQue Requerido en la sintaxis 2. Debido a que condición se evalúa al final del bucle. Sintaxis 1: Repetir [ instrucciones ] [ Salir Repetir ] [ instrucciones ] PorSiempre Sintaxis 2: Repetir [ instrucciones ] [ Salir Repetir ] [ instrucciones ] HastaQue condición condición Requerido en la sintaxis 2. las instrucciones se ejecutan hasta que condición sea Verd. las instrucciones se ejecutan indefinidamente.processtext. o hasta que una condición dada sea Verd. Instrucciones a ejecutarse incondicionalmente o hasta que condición sea Verd. la ejecución se reanuda con la instrucción que sigue a la instrucción HastaQue.com/abcchm.

http://www.html Instrucción "Salir" Volver Page 187 .processtext.com/abcchm.ABC Amber CHM Converter Trial version.

Bloque Sale inmediatamente de la estructura Bloque en la que aparece. Salir [{ Contar | Mientras | Repetir | Eval | Bloque | Seleccionar | AdmErr }] Contar Sale inmediatamente del bucle Contar en el que aparece. Salir AdmErr sólo se puede utilizar dentro de un bloque AdmErr. Salir Mientras sólo se puede utilizar dentro de un bucle Mientras. Salir Bloque transfiere el control a la estructura que está anidada un nivel por encima de la estructura donde ocurre Salir Bloque. Seleccionar Sale inmediatamente del bloque Seleccionar en el que aparece. Cuando se utiliza con bucles anidados Repetir. La ejecución continúa con la instrucción que sigue a la instrucción FinEval. Salir Eval transfiere el control a la estructura que está anidada un nivel por encima de la estructura donde ocurre Salir Eval. Salir Bloque sólo se puede utilizar dentro de una estructura Bloque. La ejecución continúa con la instrucción que sigue a la instrucción FinBloque. Salir Mientras transfiere el control al bucle que está anidado un nivel por encima del bucle donde ocurre Salir Mientras. Mientras Sale inmediatamente del bucle Mientras en el que aparece. Eval Sale inmediatamente de la estructura Eval en la que aparece.ABC Amber CHM Converter Trial version. Cuando se utiliza con bucles anidados Mientras. http://www. La ejecución continúa con la instrucción que sigue a la instrucción FinMientras. La ejecución continúa con la instrucción que sigue a la instrucción FinAdmErr. Salir Repetir sólo se puede utilizar dentro de un bucle Repetir. Cuando se utiliza con estructuras anidadas Eval. La ejecución continúa con la instrucción que sigue a la instrucción FinSeleccionar. Salir Contar transfiere el control al bucle que está anidado un nivel por encima del bucle donde ocurre Salir Contar. Salir Seleccionar sólo se puede utilizar dentro de un bloque Seleccionar. Sólo es válida dentro de un procedimiento. La ejecución continúa con la instrucción que sigue a la instrucción PorSiempre o HastaQue. Salir Repetir transfiere el control al bucle que está anidado un nivel por encima del bucle donde ocurre Salir Repetir. AdmErr Sale inmediatamente del bloque AdmErr en el que aparece. Repetir Sale inmediatamente del bucle Repetir en el que aparece. Salir Eval sólo se puede utilizar dentro de una estructura Eval.processtext. Comentarios La instrucción Salir sola se utiliza para salir de un procedimiento. Cuando se utiliza con estructuras anidadas Bloque.html Salir (Instrucción) Sale de un procedimiento o bloque y transfiere el control inmediatamente a la instrucción que sigue a la llamada al procedimiento o a la definición del bloque.com/abcchm. La ejecución continúa con la instrucción que sigue a la instrucción Seguir. Cuando se utiliza con bucles anidados Contar. Page 188 . Salir Contar sólo se puede utilizar dentro de un bucle Contar.

processtext.ABC Amber CHM Converter Trial version.html Introducción a las estructuras de control Volver Page 189 .com/abcchm. http://www.

La variable contador se compara con final cada vez que se entra en el bucle. La expresión final debe evaluarse como cualquier tipo de datos compatible con el tipo de contador. El valor inicial de contador. cuando se encuentra por primera vez la instrucción Contar. En este momento. pero puede ser cualquier tipo numérico entero elemental que admita los operadores mayor que (>). El valor final de contador. Salir Contar suele utilizarse después de evaluar alguna condición. No se volverán a evaluar. Si se omite. indica que la variable se decrementa por cada iteración. Como resultado de esta comparación.ABC Amber CHM Converter Trial version. Nota Cambiar el valor de contador mientras se está dentro de un bucle puede dificultar la lectura y la depuración del código. La instrucción Salir Contar transfiere el control inmediatamente a la instrucción que sigue a la instrucción Seguir. Esto incluye la primera vez que se ejecuta la instrucción Contar. Expresión. Por consiguiente. la instrucción Contar compara de nuevo contador con final. si el valor de inicio supera el valor de final al entrar en el bucle. final Requerido.com/abcchm. Contar contador = inicio A final [ Dec ] [ instrucciones ] [ Salir Contar ] [ instrucciones ] Seguir contador Requerido. se incrementa o decrementa contador (dependiendo si se omite o no la palabra clave Dec).processtext. http://www. Expresión. indica que la variable de contador se incrementa por cada iteración. La expresión inicio debe evaluarse como cualquier tipo de datos compatible con el tipo de contador. El tipo de contador suele ser Entero o EnteroSig. inicio Requerido. y la ejecución pasa inmediatamente a la instrucción que sigue a Seguir. Variable. aunque cambien las partes que componen las instrucciones del bucle. éste no se ejecuta. menor que (<) y suma (+). Una o más instrucciones que se ejecutan un número especificado de veces. Dec Opcional. instrucciones Opcional. por ejemplo con Page 190 . bien se ejecutan otra vez las instrucciones del bucle o se termina el bucle y la ejecución continúa con la instrucción que sigue a Seguir .html Contar (Instrucción) Repite un grupo de instrucciones un número de veces especificado. Si se especifica. Una vez que se han ejecutado las instrucciones del bucle. Comentarios Las expresiones inicio y final sólo se evalúan una vez. Se puede incluir cualquier número de instrucciones Salir Contar en cualquier lugar del bucle Contar.

La siguiente construcción es correcta: Contar I = 1 A 10 Contar J = 1 A 10 Contar K = 1 A 10 ' Instrucciones Seguir Seguir Seguir Es recomendable que el tipo de datos de contador sea EnteroSig u otro tipo de datos con signo.html una instrucción Si. Esto permite que se eliminen errores provocados por valores negativos con tipos sin signo. Se pueden anidar bucles Contar.processtext. colocando un bucle dentro de otro. Introducción a las estructuras de control Bucle "Contar" Instrucción "Salir" Volver Page 191 . http://www. Cada bucle debe tener una variable contador única.com/abcchm.ABC Amber CHM Converter Trial version.

se ejecutan las instrucciones que siguen a la instrucción Caso hasta la siguiente instrucción Caso o FinSeleccionar. puede salir del bloque mediante una instrucción Salir Seleccionar.com/abcchm. Si expresión coincide con una cláusula de listaExpresiones en más de una cláusula Caso. Expresión. la ejecución continúa en la instrucción que sigue a FinSeleccionar. Comentarios Si expresión coincide con cualquier cláusula Caso listaExpresiones. FinSeleccionar Termina un bloque Seleccionar. Lista de cláusulas de expresiones que representan valores que coinciden para expresión. Aunque no es necesario. Seleccionar expresión [ Caso listaExpresiones [ instrucciones ] ] [ Caso Otro [ otrasInstrucciones ] ] FinSeleccionar expresión Requerido. Una o más instrucciones a continuación de Caso Otro que se ejecutan si expresión no coincide con ninguna cláusula de listaExpresiones. otrasInstrucciones Opcional. listaExpresiones Requerido en una instrucción Caso. Esto transfiere inmediatamente el control a la instrucción que sigue a FinSeleccionar. Si no necesita ejecutar más instrucciones de un bloque Caso o Caso Otro. instrucciones Opcional. Cada instrucción Seleccionar anidada debe tener una instrucción FinSeleccionar coincidente. según el valor de una expresión. Si ninguna cláusula Caso listaExpresiones coincide con expresión y no existe ninguna instrucción Caso Otro. Las instrucciones Seleccionar pueden anidarse. Las cláusulas de varias expresiones se separan mediante comas. es recomendable tener una instrucción Caso Otro en el bloque Seleccionar para controlar los valores de expresión imprevistos. http://www. La instrucción Caso Otro se utiliza para introducir las instrucciones otrasInstrucciones que se ejecutarán si no se encuentra ninguna coincidencia entre expresión y una cláusula de listaExpresiones en cualquiera de las demás instrucciones Caso. Las expresiones en listaExpresiones pueden ser de cualquier tipo de datos compatible con el de expresión. Debe evaluarse en uno de los tipos de datos elementales.ABC Amber CHM Converter Trial version. Page 192 . sólo se ejecutan las instrucciones que siguen a la primera coincidencia.processtext. Una o más instrucciones después de Caso que se ejecutan si expresión coincide con cualquier cláusula en listaExpresiones. El control pasa después a la instrucción que sigue a FinSeleccionar.html Seleccionar (Instrucción) Ejecuta uno de varios grupos de instrucciones.

com/abcchm.processtext. http://www.html Bloque "Seleccionar" Instrucción "Salir" Volver Page 193 .ABC Amber CHM Converter Trial version.

Si condición [ Entonces ] [ instruccionesSi ] [ SiNo [ instruccionesSino ] ] FinSi O bien Si condición [ Entonces ] instruccionesSi [ . Todas las instrucciones deben estar en la misma línea y separadas por el carácter punto y coma. http://www. La palabra clave Entonces es opcional en todos los casos. La expresión que proporcione en condición debe evaluarse como Verd o Falso. C = C + B La instrucción Si de varias líneas debe finalizar con una instrucción FinSi. mantener y depurar.. Una o más instrucciones a ejecutarse si condición es Verd. el formato de múltiples líneas proporciona más estructura y flexibilidad que el formato de una sola línea y.com/abcchm.. Con el formato de una sola línea. dependiendo del valor de una expresión.ABC Amber CHM Converter Trial version. Cuando se encuentra un bloque Si de múltiples líneas. generalmente. es más fácil de leer.FinSi. Sugerencia El bloque Seleccionar puede ser más útil cuando se evalúa una única expresión que tiene varios valores posibles. Si condición es Falso se ejecutan las instrucciones que siguen a SiNo en caso de que esté presente. Page 194 . B = B + A . se ejecutan las instrucciones que están a continuación. Sin embargo.processtext. Una o más instrucciones a ejecutarse si condición es Falso. SiNo instruccionesSino ] condición Requerido. Si condición es Verd. FinSi Termina un bloque Si. como en el ejemplo siguiente: Si A > 10 Entonces A = A + 1 . se requiere en formato de una sola línea. La ejecución continúa con la instrucción que sigue a FinSi. se requiere en formato de una sola línea que tenga una cláusula SiNo. se prueba condición. Expresión. instruccionesSino Opcional en formato de múltiples líneas. es posible ejecutar varias instrucciones como resultado de una decisión del bloque Si. instruccionesSi Opcional en formato de múltiples líneas. Comentarios Puede utilizar la forma de una sola línea para pruebas cortas y sencillas. o como un tipo de datos que sea implícitamente convertible a Booleano.html Si (Instrucción) Ejecuta de forma condicional un grupo de instrucciones.

com/abcchm. http://www.ABC Amber CHM Converter Trial version.processtext.html Bloque "Si" Bloque "Seleccionar" Volver Page 195 .

Page 196 .FinSi. B = B + A . instruccionesSino Opcional en formato de múltiples líneas. Sin embargo. La palabra clave Entonces es opcional en todos los casos. como en el ejemplo siguiente: Si A > 10 Entonces A = A + 1 . es más fácil de leer.html Si (Instrucción) Ejecuta de forma condicional un grupo de instrucciones. Todas las instrucciones deben estar en la misma línea y separadas por el carácter punto y coma. SiNo instruccionesSino ] condición Requerido. La expresión que proporcione en condición debe evaluarse como Verd o Falso.ABC Amber CHM Converter Trial version. Sugerencia El bloque Seleccionar puede ser más útil cuando se evalúa una única expresión que tiene varios valores posibles. Una o más instrucciones a ejecutarse si condición es Falso. se ejecutan las instrucciones que están a continuación. dependiendo del valor de una expresión. Comentarios Puede utilizar la forma de una sola línea para pruebas cortas y sencillas. http://www. La ejecución continúa con la instrucción que sigue a FinSi. se requiere en formato de una sola línea. FinSi Termina un bloque Si. Una o más instrucciones a ejecutarse si condición es Verd.com/abcchm. mantener y depurar. Con el formato de una sola línea. Expresión. Si condición [ Entonces ] [ instruccionesSi ] [ SiNo [ instruccionesSino ] ] FinSi O bien Si condición [ Entonces ] instruccionesSi [ .. el formato de múltiples líneas proporciona más estructura y flexibilidad que el formato de una sola línea y. generalmente. se requiere en formato de una sola línea que tenga una cláusula SiNo.. o como un tipo de datos que sea implícitamente convertible a Booleano. se prueba condición. C = C + B La instrucción Si de varias líneas debe finalizar con una instrucción FinSi. es posible ejecutar varias instrucciones como resultado de una decisión del bloque Si. Si condición es Verd. Cuando se encuentra un bloque Si de múltiples líneas. Si condición es Falso se ejecutan las instrucciones que siguen a SiNo en caso de que esté presente. instruccionesSi Opcional en formato de múltiples líneas.processtext.

ABC Amber CHM Converter Trial version. http://www.processtext.html Bloque "Si" Bloque "Seleccionar" Volver Page 197 .com/abcchm.

Indica que el miembro es un puntero. [] Opcional. No se podrá inicializar el valor de los miembro de datos de una unión como parte de su declaración. A diferencia de una estructura. se produce una advertencia. http://www. Unión nombre . tamaño Opcional si se incluye [ ]. Cada miembro de miembros tiene la siguiente sintaxis y partes: [ @ ] nombre [ [ [ tamaño ] ] ] : tipo @ Opcional. El tipo de datos de un miembro de la unión puede ser la misma unión sólo si el miembro es un puntero o una matriz dinámica. Nombre del miembro. los miembros de una unión comparten todos la misma porción de memoria. Indica que el miembro es una matriz. la matriz es una matriz dinámica. Se debe inicializar un miembro de datos después de crear una instancia de la unión. Esto quiere decir que cuando un miembro de la unión cambia. todos los otros miembros cambian también. miembros nombre Requerido. nombre Requerido. Pauscal no puede saber a qué miembro tiene que liberar (tenga en cuenta que sólo uno es válido). Debe ser un identificador válido.processtext. Debe ser un identificador válido. cuando Pauscal encuentra una unión con miembros dinámicos.html Unión (Instrucción) Se utiliza para declarar una unión y definir sus miembros. Tipos de datos del miembro. Page 198 . como por ejemplo una cadena o una matriz dinámica. pero debido a que todos los miembros comparten la misma zona de memoria. Por esta razón. Si se omite. Comentarios En una unión debe declararse por lo menos un miembro. En cualquier otro caso ocurre un error al compilar.com/abcchm. tipo Requerido.ABC Amber CHM Converter Trial version. Este tipo de miembros debe ser liberado cuando la unión no se utiliza más. Es muy importante que una unión no posea miembros dinámicos. miembros Requerido. Nombre de la unión. Miembros de la unión separados por comas. Especifica el tamaño de la matriz estática.

com/abcchm.processtext. http://www.ABC Amber CHM Converter Trial version.html Introducción a las estructuras Uniones Estruc (Instrucción) Volver Page 199 .

Var [ @ ] nombre [ [ [ tamaño ] ] ] : tipo @ Opcional. No se puede declarar una variable como matriz y puntero a la vez. Es posible declarar varias variables con una sola instrucción Var. tamaño Opcional si se incluye [ ]. C:Cadena Introducción a las variables Matrices Volver Page 200 .html Var (Instrucción) Es utilizada para declarar y asignar espacio de almacenamiento para variables.processtext. Nombre de la variable. [] Opcional.B. Comentarios La instrucción Var declara variables globales y locales. nombre Requerido. la matriz es una matriz dinámica. Si se omite.ABC Amber CHM Converter Trial version.C:Entero También es posible mezclar tipos de datos en una misma instrucción Var. Para declarar campos (variables de clase). En el siguiente ejemplo se declaran dos variables de tipo Entero y una de tipo Cadena: Var A. Indica que la variable es un puntero.B:Entero. Tipos de datos de la variable. En el siguiente ejemplo se declaran tres variables de tipo Entero: Var A. http://www.com/abcchm. tipo Requerido. utilice la instrucción ClaseVar. separando las variables con comas. Indica que la variable es una matriz. Debe ser un identificador válido. Especifica el tamaño de la matriz estática.

Punto de Interrupción Línea de código marcada de tal forma que produce una pausa en el programa cuando éste se ejecuta. Pauscal ejecuta sus instrucciones. (Ver Resumen de tipos de datos). WordSig. Se emplea en el depurador. línea de código que se ejecutará en el siguiente paso. Booleano. Volver Page 201 .processtext. ByteSig. Byte. Word. Un procedimiento posee un nombre que se utiliza para invocarlo (o llamarlo). en contraste con el Tiempo de Diseño Tipo de Datos Elementales Conjunto de tipos de datos que ofrece el lenguaje.html Glosario C Código Nativo Secuencia de instrucciones en formato binario que se ejecutan directamente por el procesador sin ningún tipo de intermediario. E Expresión Combinación de variables. T Tiempo de Diseño Referente al momento en que se diseña la aplicación. Al llamar a un procedimiento.com/abcchm. Real. Los tipos de datos elementales en Pauscal son: Entero.ABC Amber CHM Converter Trial version. constantes y operadores que puede ser evaluado como un valor. Decimal y Cadena. http://www. EnteroSig. o. en contraste con el Tiempo de Ejecución. Tiempo de Ejecución Referente al momento en que la aplicación se está ejecutando. P Procedimiento Secuencia de instrucciones. en el caso de que el programa esté en pausa. Punto de Ejecución Línea de código que se está ejecutando actualmente.

Clase cPrueba Privado: Proc iInit ' Código de inicialización FinProc Constructor:iInit Público: Proc RealizarCálculo ' Código que realiza el cálculo FinProc FinClase Los elementos de programación de Pauscal son por defecto públicos si no se especifica su accesibilidad. Las instrucciones de accesibilidad se emplean de la siguiente manera: accesibilidad : [ declaraciones ] La accesibilidad afecta las siguientes declaraciones: procedimientos variables estructuras clases métodos propiedades campos En el siguiente ejemplo. el método iInit es privado. y el método RealizarCálculos es público. http://www.html Accesibilidad La accesibilidad de un elemento de programación indica qué tan visible es ese elemento en el programa. La instrucción Público indica que las instrucciones siguientes declaran elementos públicos. Si no se especifica ninguna accesibilidad. Por ejemplo. Un elemento público puede ser accedido desde dentro y fuera del ámbito donde fue declarado. Existen dos valores de accesibilidad: público y privado. se toma por defecto la accesibilidad pública. Volver Page 202 . Análogamente la instrucción Privado indica que las declaraciones son privadas. En cambio un elemento privado sólo puede ser accedido desde dentro del ámbito donde fue declarado.com/abcchm.processtext. un método privado de una clase sólo puede ser llamado desde dentro de esa clase.ABC Amber CHM Converter Trial version.