You are on page 1of 12

ALGOR

INTRPRETE DE ALGORITMOS v2.1 Nov-25 2005


INTRODUCCIN......................................................................................................................2 DESCRIPCIN DEL LENGUAJE..........................................................................................3 SECCIN DE ENCABEZAMIENTO............................................................................................................3 SECCIN DE DEFINICIN DE FUNCIONES...............................................................................................3 SECCIN DE VARIABLES......................................................................................................................4 SECCIN DE INSTRUCCIONES................................................................................................................5 INSTRUCCIN DE ENTRADA...................................................................................................................5 INSTRUCCIN DE SALIDA......................................................................................................................6 INSTRUCCIN DE ASIGNACIN................................................................................................................6 INSTRUCCIN CONDICIONAL SIMPLE.......................................................................................................8 INSTRUCCIN CONDICIONAL COMPLETA..................................................................................................8 INSTRUCCIN REPETITIVA TIPO MIENTRAS...............................................................................................8 INSTRUCCIN REPETITIVA TIPO REPETIR-HASTA.......................................................................................8 INSTRUCCIN REPETITIVA TIPO PARA......................................................................................................9 INSTRUCCIN REPETITIVA TIPO PARA CON PASO.......................................................................................9 COMENTARIOS...................................................................................................................................9 UTILIZACIN DEL INTRPRETE.....................................................................................11 MENSAJES DE ERRORES....................................................................................................11 VERSIONES FUTURAS.........................................................................................................12 HISTORIA DE LAS VERSIONES.........................................................................................12

Introduccin
El Intrprete de Algoritmos ALGOR ha sido desarrollado con la finalidad de brindar a los estudiantes del curso de Algoritmos una herramienta simple, y fcil de usar que les permita probar los algoritmos que realizan en clase. Para ello utilizan, no un lenguaje de programacin convencional, como el C, Basic, Pascal, sino un pseudocdigo en el que usan palabras del lenguaje espaol y siguen una sintaxis relativamente simple y natural. Dado que el objetivo no es crear un nuevo lenguaje de programacin, el mismo tiene muchas limitaciones, en comparacin a otros lenguajes. Recordamos que el objetivo es disponer de una herramienta para probar algoritmos sencillos. Las caractersticas principales del lenguaje son: Utilizacin de tipos de datos simples: enteros, reales, cadenas y lgicos, as como arreglos de una o ms dimensiones de los tipos de datos simples. Uso de las estructuras de control: entrada, salida, asignacin, condicional simple, condicional completa, mientras, repetir-hasta y para. Las expresiones permiten los operadores aritmticos de suma, resta, multiplicacin, divisin, divisin entera, resto de la divisin entera, potencia, y negativo. Los operadores relacionales, mayor, menor, mayor o igual, menor o igual, igual y diferente. Y los operadores lgicos de disyuncin, conjuncin y negacin. Se permite adems la definicin de funciones. El intrprete desarrollado permite la ejecucin de los algoritmos en dos modos. Modo normal en el que el algoritmo se ejecuta completamente desde el inicio hasta el final. Y el modo Paso a Paso, en el que se va mostrando cada instruccin que se va a ejecutar y el contenido de las variables del algoritmo. Este programa ha sido desarrollado por el Mag. Eduardo F. Alonso Prez, profesor e investigador de la Universidad Catlica Santo Toribio de Mogrovejo, Chiclayo, Per. El programa est en su fase de evaluacin por lo que de presentarse problemas pueden reportarlos a: ealonso@usat.edu.pe . Enviar adems de la descripcin del problema, el algoritmo que origin el mismo. En los siguientes captulos se describen los detalles del lenguaje y uso del intrprete. Este manual, no pretende ensear algoritmos, sino simplemente cmo escribir los algoritmos en el lenguaje implementado, as cmo utilizar el intrprete.

Descripcin del lenguaje


Los algoritmos, en este lenguaje, tienen tres secciones, todas obligatorias, excepto la del encabezamiento: Encabezamiento Definicin de funciones Variables Instrucciones

Seccin de Encabezamiento
El encabezamiento es simplemente la palabra algoritmo seguido de un nombre Ejemplo: algoritmo promedio Los nombres, que en trminos de compiladores, se les llama identificadores, estn formados por secuencias de letras y/o dgitos que debe comenzar por letra. Tambin puede usarse el carcter _ (underscore). Ejemplo: algoritmo calculo_del_promedio

Seccin de Definicin de Funciones


En esta seccin se pueden definir funciones. La estructura para la definicin de una funcin es la siguiente: funcion tipo_simple nombre ( parmetros ) variables declaracin de las variables a usar en las funciones inicio instrucciones retornar expresion fin Donde tipo_simple es el tipo de datos que retorna la funcin. La funcin slo puede retornar tipos de datos simples, ms no arreglos. Los parmetros son opcionales y representan la lista de parmetros formales de la funcin. Se declaran cada uno individualmente, separndose por comas. Ver ejemplo. Los parntesis siempre hay que colocarlos an cuando la funcin no tenga parmetros. Los tipos de datos para los parmetros slo pueden ser simples. En la versin actual no se permite pasar arreglos como parmetros. El paso de parmetros es siempre por valor.

Las variables que se declaren en la funcin son locales a la misma. Su alcance es slo para la funcin y no interfieren con otras variables, posiblemente con igual nombre, que estn definidas en otras funciones o en el programa principal. Para ver mas detalles de las declaraciones ver la Seccin de Variables. Las instrucciones constituyen el cuerpo de la funcin y deben siempre terminar con la sentencia retornar expresin, la cual indica el valor que devuelve la funcin. La sentencia retornar slo puede aparecer como ltima sentencia dentro de la funcin. En la versin actual slo se permite llamar a funciones definidas anteriormente. No permitindose as llamadas recursivas. Ejemplo: funcion entero mayor( a: entero, b: entero ) variables m: entero inicio si a > b entonces m <- a sino m <- b finsi retornar m fin

Seccin de Variables
Las variables que se usan en un algoritmo deben ser declaradas, lo cual significa, que se les deber especificar el tipo que tendrn. En un principio habamos considerado no incluir esta seccin en el lenguaje y trabajar con tipos dinmicos, o sea, que las variables tomasen el tipo durante la ejecucin y de acuerdo al tipo de las expresiones que se le asignasen, pero finalmente decidimos incorporarlo, adems de razones tcnicas de implementacin, porque consideramos conveniente que los estudiantes se vayan familiarizando con el concepto de tipo de los lenguajes de programacin. La estructura de sta seccin es la siguiente. Comienza con la palabra variables seguida de una lista de una o ms declaraciones. Cada declaracin es una secuencia de una o ms variable separadas por coma, seguida de dos puntos, seguida del tipo. Ejemplos: variables i, contador, N : entero suma, dato: real mensaje: cadena continuar: logico Los tipos permitidos en la versin actual son simples. entero, real, cadena y logico. Adems se permite definir arreglos de cualquiera de los tipos simples. Los arreglos pueden tener cualquier cantidad de dimensiones. De cada dimensin se especifica en la

declaracin, cuntos elementos tendr. Cada elemento de la dimensin tendr una posicin entre 1 y el total de elementos de la dimensin. Ejemplos: variables a arreglo [10] : entero b arreglo [5,8] : real c arreglo [15,10,25] : cadena d arreglo [20] : logico Con respecto a los tipos de datos simples: Los Enteros permiten almacenar valores numricos enteros (de 32 bits). Los Reales permiten almacenar valores numricos reales de doble precisin (64 bits). Las Cadenas permiten almacenar secuencias de caracteres, para mensajes, etc. Las secuencias de caracteres se encierran entre comillas. En la versin actual no se permiten caracteres especiales dentro de las cadenas, ni tampoco la propia comilla. Los Lgicos permiten almacenar los valores lgicos FALSE y TRUE.

Seccin de Instrucciones
Esta seccin contiene las instrucciones ejecutables del algoritmo. Comienza con la palabra inicio, le siguen las instrucciones y termina con la palabra fin Las instrucciones permitidas son las siguientes: Entrada Salida Asignacin Condicional Simple Condicional Completa Mientras Repetir-Hasta Para

Instruccin de Entrada
Permite que el algoritmo lea datos ingresados por el usuario. Su sintaxis es la palabra leer seguida de una o ms variables separadas por coma. Ejemplos: leer N leer sexo, edad leer b[i,j] Se pueden ingresar variables de tipo entero, real cadena, pero no lgicas. Adems elementos de arreglo.

Instruccin de Salida
Permite que el algoritmo imprima valores en la pantalla. Su sintaxis es la palabra imprimir seguida de una o ms expresiones. Ejemplos: imprimir promedio imprimir "Ingrese el dato numero ", i, " = " imprimir "El promedio es = ", suma / N Las expresiones pueden ser de cualquier tipo, incluso lgicas, en cuyo caso se imprimir la palabra true false de acuerdo al resultado. Adems de la palabra imprimir se puede usar imprimirln, la cual incluye un cambio de lnea la final de los datos impresos. La instruccin imprimirln puede utilizarse sin expresiones en cuyo caso simplemente agrega un cambio de lnea en la salida del algoritmo. Ejemplo: imprimirln "El resultado es: ", resultado es equivalente a: imprimir "El resultado es: ",resultado imprimirln

Instruccin de asignacin
Permite asignarle a una variable simple a un elemento de arreglo el resultado de una expresin. Su sintaxis es la variable seguida de <- seguida de la expresin. Ejemplos: impuesto <- precio * 0.19 a[i] <- 0.0 c[i,j,k] <- 1 Algunas consideraciones: A las variables de tipo entero se le pueden asignar expresiones de tipo entero de tipo real. En el ltimo caso se convierte de real a entero antes de la asignacin. Ejemplo: Considerando a i, declarada como entero, la instruccin i <- 1.5 Le asigna 1 a la variable i. A las variables de tipo real se le pueden asignar expresiones de tipo entero de tipo real. A las variables de tipo cadena, solo se le pueden asignar cadenas. En la versin actual del lenguaje no hay operadores para cadenas. A las variables de tipo logico se le pueden asignar expresiones de tipo logico.

La siguiente tabla muestra todos los operadores del lenguaje, la precedencia de los mismos, los tipos de los operandos y el tipo del resultado. Estn ordenados en orden decreciente de precedencia. Tabla de operadores del lenguaje, ordenados en orden decreciente de precedencia.
precedencia 1 2 3 3 3 4 5 5 5 5 5 5 6 7 8 operador ^ * / DIV MOD + < > <= >= = <> NOT AND OR operando1 numrico numrico numrico numrico entero numrico numrico numrico numrico numrico cualquiera cualquiera lgico lgico lgico operando2 numrico numrico numrico entero numrico numrico numrico numrico numrico cualquiera cualquiera lgico lgico resultado igual al operando ver nota debajo ver nota debajo real entero ver nota debajo lgico lgico lgico lgico lgico lgico lgico lgico lgico observaciones negativo, slo tiene un operando

slo tiene un operando

Notas: En el caso de los operadores de potencia ^, *, + y los operandos son numricos, o sea, enteros o reales, y el resultado estar en funcin de si ambos operandos son del mismo tipo o no. Si son del mismo tipo entonces el resultado sigue siendo de ese mismo tipo. Si uno de los operandos es real y el otro entero, entonces el entero se convierte a real y resultado es real. El operador de divisin / siempre realiza una divisin real, independientemente de si sus operandos lo son o no. En el caso de los operadores relacionales = y <> sus operandos pueden ser ambos: numricos, cadenas lgicos. Asociatividad de los operadores: Los operadores (negativo) y NOT, tienen un solo operando y se evalan de derecha a izquierda. El resto de los operadores tienen dos operandos, y se evalan de izquierda a derecha, para el caso de los que tienen igual precedencia. Los parntesis pueden ser utilizados para agrupar subexpresiones y alterar el orden de evaluacin de una expresin. En las expresiones pueden utilizarse llamadas a funciones, escribiendo el nombre de la funcin y la lista de parmetros entre parntesis. Los parntesis son obligatorios an cuando la funcin no tenga parmetros. Ejemplos: termino <- x / factorial(i) m3 <- Mayor( a, Mayor(b, c ) )

Los elementos de arreglo se escriben especificando el nombre del arreglo y luego entre corchetes las expresiones correspondientes a cada ndice del arreglo. Las expresiones que sirven como ndice deben ser de tipo entero y el valor de las mismas debe estar en el rango de 1 hasta el total de elementos de la dimensin correspondiente. Se produce un error de ejecucin en caso de que el valor del ndice est fuera de rango.

Instruccin Condicional Simple


Permite ejecutar un conjunto de instrucciones si se cumple una condicin. Su sintaxis es: si condicion entonces instrucciones a ejecutar si se cumple la condicin finsi La condicin debe ser de tipo lgica.

Instruccin Condicional Completa


Permite ejecutar un conjunto de instrucciones si se cumple una condicin, u otro conjunto de instrucciones sino se cumple. Su sintaxis es: si condicion entonces instrucciones a ejecutar si se cumple la condicin sino instrucciones a ejecutar si NO se cumple la condicin finsi La condicin debe ser de tipo lgica.

Instruccin repetitiva tipo Mientras


Permite ejecutar repetidamente, mientras se cumpla una condicin, un conjunto de instrucciones. Su sintaxis es: mientras condicion hacer instrucciones a repetir mientras se cumpla la condicin finmientras La condicin debe ser de tipo lgica.

Instruccin repetitiva tipo Repetir-Hasta


Permite ejecutar repetidamente un conjunto de instrucciones, hasta que se cumpla una condicin. Su sintaxis es: repetir instrucciones a repetir hasta que se cumpla la condicin hasta condicion

La condicin debe ser de tipo lgica.

Instruccin repetitiva tipo Para


Permite ejecutar repetidamente un conjunto de instrucciones un nmero determinado de veces. Su sintaxis es: para variable <- valorinicial hasta valorfinal hacer instrucciones a repetir finpara La variable debe ser numrica (entera o real), al igual que las expresiones correspondientes a valorincial y valorfinal. La instruccin incrementa en 1 la variable al terminar de ejecutar las instrucciones y antes de comparar con el valor final. La expresin correspondiente a valorfinal se evala en cada iteracin.

Instruccin repetitiva tipo Para con Paso


Permite ejecutar repetidamente un conjunto de instrucciones un nmero determinado de veces, con la particularidad de que la variable de control se incremente decrementa en cada iteracin en funcin de una constante. Su sintaxis es: para variable <- valorinicial hasta valorfinal paso valorconstante hacer instrucciones a repetir finpara La variable debe ser numrica (entera o real), al igual que las expresiones correspondientes a valorincial y valorfinal. La instruccin incrementa (o decrementa) en el valor del paso la variable al terminar de ejecutar las instrucciones y antes de comparar con el valor final. El valor de paso es una constante entera real, y puede ser negativa en cuyo caso la variable de control se decrementa en cada iteracin. Cuando el paso es negativo, tambin cambia la operacin de comparacin para cada iteracin. La expresin correspondiente a valorfinal se evala en cada iteracin.

Comentarios
En los algoritmos se puede incluir comentarios (texto que se ignora durante el anlisis y la ejecucin). Los comentarios comienzan con el carcter punto y coma ; y tienen un alcance hasta el fin de la lnea: Ejemplo: ; algoritmo para calcular el promedio de dos ; numeros ingresados por el usuario

algoritmo promedio_2 variables n1, n2, suma, prom: real inicio ; ingresa los datos imprimir "Ingrese dos numeros: " leer n1, n2 ; realiza los calculos suma <- n1 + n2 ; calcula la suma de los dos numeros prom <- suma / 2 ; imprime el resultado imprimirln "El promedio es = , prom fin

10

Utilizacin del intrprete


El intrprete es un programa que ejecuta en modo MSDOS. Los algoritmos se escriben en cualquier editor de texto, pero siempre guardando los archivos en modo Texto, por ejemplo, con el Block de Notas. Tiene dos modos de ejecucin. Modo Normal: El algoritmo es ejecutado de inicio a fin. El usuario slo interviene cuando el algoritmo ejecuta instrucciones de entrada. Para ejecutar en modo normal basta con escribir en MSDOS: ALGOR archivo -N Archivo es el nombre completo del archivo que contiene el algoritmo. Modo Paso a Paso: La ejecucin del algoritmo se detiene en cada instruccin. Se muestran las variables y sus valores hasta ese punto del algoritmo. Se muestra tambin el algoritmo completo y la lnea que a continuacin se ejecutar. La ejecucin se mantiene detenida hasta que se presione la tecla F8. Si se desea omitir alguna variable durante la ejecucin paso a paso, es necesario agregarle el carcter _ al comienzo de la variable. Ejemplo: variables _auxiliar: entero En la ejecucin paso a paso, al ejecutarse una instruccin de entrada, el intrprete muestra la ventana de Entrada/Salida y el intrprete se detiene hasta que el usuario ingrese un valor. Para ejecutar en modo Paso a Paso se escribe en la lnea de comandos de MSDOS: ALGOR archivo

Mensajes de errores
Los algoritmos para poder ser ejecutados, primero son analizados sintctica y semnticamente, para detectar posibles errores. Los errores sintcticos son los que se producen la escribir mal alguna lnea del algoritmo. El intrprete al detectar un error sintctico muestra un mensaje de: "Error sintctico en la linea # Lexema: palabra o smbolo" Mostrando el nmero de lnea del algoritmo donde se ha detectado el error y la palabra smbolo que dio origen al mismo. Los errores semnticos se producen al utilizar inadecuadamente las instrucciones del programa. Se producen por ejemplo: -Al intentar declarar mas de una vez una misma variable -Al utilizar una variable sin haberla declarado -Al utilizar una variable en una expresin sin haberle asignado valor previamente

11

-Al aplicar operadores a operandos para los cuales no est definida la operacin. Por ejemplo, si se intenta sumar un entero con una cadena, o si se le intenta asigna un valor lgico a una variable real -Al escribir expresiones que no sean de tipo lgico, como condiciones, en las instrucciones si-entonces, mientras-hacer y repetir-hasta El mensaje que muestra el intrprete es: "Error semntico en la linea # descripcin del error" Mostrando el nmero de lnea del algoritmo donde se ha detectado el error y una breve descripcin del error. Solamente en caso de que no haya errores es que el algoritmo puede ser ejecutado. Durante la ejecucin tambin pueden producirse errores de ejecucin. Por ejemplo al ejecutarse una instruccin de leer y el usuario ingresa un dato de tipo incorrecto de acuerdo a lo que espera el algoritmo.

Versiones futuras
En las versiones futuras del intrprete se incluirn las siguientes caractersticas: -Sentencia condicional selectiva (tipo CASE) -Arreglos unidimensionales y multidimensionales.

Historia de las versiones


v0.1 (01/Oct/2003) Contena un error en la instruccin para v0.2 (15/Oct/2003) El error de la instruccin para fue corregido. An esta instruccin no permita el paso. v0.5 (15/Oct/2003) Se incorpora la instruccin para con paso. v1.0 (31/Oct/2003) La ejecucin paso a paso se realiza interactivamente mostrndose El Algoritmo, La lnea a ejecutar, Las variables y la pantalla de Entrada/Salida en ventanas diferentes. v1.1 (09/Nov/2003) Las versiones anteriores contenan un error de memoria. v1.2 (29/May/2004) Se corrigieron dos pequeos errores: -Se permita escribir ciertos smbolos despus del FIN del algoritmo (ya no se puede) -Era obligatorio escribir un cambio de lnea despus del FIN del algoritmo (ya no) v1.3 (03/Jun/2005) Se corrigi un error en las sentencias imprimir e imprimirln v2.0 (24/Jun/2005) Se agregaron las funciones y los arreglos (de cualquier dimensin) v.2.1 (25/Nov/2005) Se corrigi un error en la verificacin de la sentencia leer.

12

You might also like