Vous êtes sur la page 1sur 3

Lenguaje Robot

1. Descripcin del problema Tenemos una mquina virtual capaz de controlar el comportamiento de un robot en un mundo bidimensional. El robot es capaz de realizar los siguientes movimientos: Avanzar (siempre en la direccin en que est orientado). Girar a la izquierda. Girar a la derecha. Recoger un objeto. Dejar un objeto. El mundo en el que se mover el robot es una rejilla bidimensional en la que podr encontrarse objetos de 10 tipos diferentes (de 0 a 9) y muros (objeto 99) que no podr atravesar. El robot podr almacenar los objetos que recoja y utilizarlos posteriormente para depositarlos en la rejilla. 2. Gramtica del lenguaje de alto nivel La prctica consiste en realizar un compilador capaz de generar cdigo mquina en el lenguaje del robot a partir de un lenguaje de alto nivel, el cual se especifica a continuacin: Cualquier programa en este lenguaje tendr la estructura: Variables ( identificador1, identificador2, ....., identificadorn) Algoritmo ( sentencia1, sentencia2, ....., sentencian) Los identificadores tendrn como mximo ocho caracteres y sern todos alfabticos. Las variables simples se declaran con su identificador y los vectores con identificador[dimensin], la dimensin ser un valor numrico natural. Todas las variables son de tipo numrico real. El lenguaje permite dos tipos de expresiones: asignaciones y sentencias de control. Las expresiones de asignacin vlidas son de la forma: identificador = expresin; Una expresin vlida del lenguaje tiene la misma sintaxis que la utilizada para una expresin en el lenguaje C, sin utilizar parntesis. Los elementos que pueden utilizarse en una expresin son identificadores, valores numricos y funciones. Los operadores aritmticos son: +, -, *, /. Los operadores booleanos son: igualdad =, menor <, mayor >, mayor o igual +=, menor o igual -=, distinto +-. La asociatividad de los operadores es a la izquierda.

-1-

Para acceder a un elemento de un vector se escribir: identificador[elemento]. El elemento 0 es el primer elemento del vector. La sentencia: x[3]=y[i] asigna al cuarto elemento del vector x, el valor del elemento i+1 del vector y. Las expresiones de control son: Compara (expresin) [ Verdad { sentencia1, sentencia2, ..., sentencian, } ]? [ Falso { sentencia1, sentencia2, ..., sentencian, } ]? El comportamiento de la sentencia Compara es el siguiente: Se evala la expresin Si el resultado es mayor que cero entonces se ejecutan las sentencias que se encuentran en la parte de Verdad Si el resultado es menor o igual que cero entonces se ejecutan las sentencias que se encuentran en la parte de Falso Una sentencia Compara puede tener parte de Verdad y de Falso, o una de las dos, pero debe mostrarse como error sintctico una sentencia Compara que no tenga ni parte de Verdad ni de Falso. Repite (expresin) { sentencia1, sentencia2, ..., sentencian, } El comportamiento de la sentencia Repite es el siguiente: Se evala la expresin Si el resultado es mayor que cero entonces se ejecutan las sentencias y se pasa al punto anterior Si el resultado es menor o igual que cero entonces se ejecutan las sentencias siguientes a la llave de cierre Mientras condicin1: condicin2 { sentencia1, sentencia2, ..., sentencian, } nomientras { sentencia1, sentencia2, ..., sentencian, } finmientras, El comportamiento de la sentencia Mientras es el siguiente: El primer bloque de sentencias se ejecuta si la primera condicin se cumple en caso contrario se ejecutaran las sentencias del bloque nomientras, la salida del bucle se produce cuando se cumple la segunda condicin. Las condiciones se evalan antes de la ejecucin de las sentencias. El bloque nomientras es opcional. Existir adems un conjunto de sentencias relacionadas con el movimiento del robot: Avanzar(expresin); el robot se mueve, en la direccin que se encuentra, tantas veces como se indique en la expresin. -2-

Girar(Expresin); Si expresin es >0 gira a la derecha en caso contrario a la izquierda. identificador=Coge[], El robot recoge el objeto que tiene delante y devuelve en el identificador el nmero del objeto recogido. Deja[identificador nmero], El robot deja el objeto del tipo indicado en el Parmetro, en la casilla que tiene delante en la direccin de movimiento. identificador=Mira[], Devuelve en el identificador el nmero del objeto que tiene el robot, en la posicin siguiente en la direccin de movimiento. identificador=Cuantos[identificador nmero], Devuelve en el identificador el nmero de objetos que lleva el robot del tipo indicado en el parmetro. Pantalla[identificador] Muestra por pantalla el valor del identificador. identificador=Teclado[] Devuelve el valor introducido por el teclado en el identificador.

Consideraciones Generales La semntica ser la normal en lo que respecta a las operaciones comunes en lenguajes de programacin, como la asignacin, las operaciones aritmticas, etc. Cualquier duda sobre la semntica deber ser consultada al profesor de asesora.

-3-

Vous aimerez peut-être aussi