Cursada 2017‎ > ‎

Trabajos Prácticos

Trabajo Práctico 1/2
Fecha de entrega: 28/09/2017

Material adjunto:
  • ASIGNACIÓN DE DOCENTE POR GRUPO
  • Enunciado de la primera parte del trabajo práctico.
ATENCIÓN: Se modificó el tema especial nro. 17. Los comentarios de una línea comienzan con los caracteres ** y terminan con el fin de línea.
  • Presentación de la clase práctica del 17/08
  • Asignación de Temas por grupo (actualizado 28/08/2017)
  • Enunciado de la segunda parte del trabajo práctico.
Nota: Con la entrega de los trabajos se solicitará la presentación de casos de prueba. Estos deben incluir, como mínimo, ejemplos que contemplen las siguientes alternativas:

(Cuando sea posible, agregar un comentario indicando el comportamiento esperado del compilador)

Para el Análisis Léxico:

  1. Constantes con el primer y último valor dentro del rango.
  2. Constantes con el primer y último valor fuera del rango.
  3. Para números reales, además, mantisa con y sin parte decimal (a-b), con y sin exponente (c-d), con exponente positivo y negativo (e-f).
  4. Identificadores de menos y más de 15 caracteres.
  5. Identificadores con letras, dígitos, y “_”.
  6. Identificadores mal definidos.
  7. Palabras reservadas escritas en minúsculas y mayúsculas.
  8. Comentarios bien y mal definidos.
  9. Cadenas bien y mal definidas.
Para el Análisis Sintáctico:
  1. Declaración de una variable de cada tipo
  2. Declaración de una lista de variables
  3. Sentencia de salida de mensajes por pantalla
  4. Sentencia IF sin bloque ELSE con una sola sentencia
  5. Sentencia IF sin bloque ELSE con un bloque de sentencias
  6. Sentencia IF con bloque ELSE
  7. Sentencia IF con comparación entre expresiones aritméticas como condición, con bloque ELSE
  8. Sentencia de control asignada como tema particular
  9. Sentencia LET (si corresponde)
  10. Sentencia FUNCTION (si corresponde)
  11. Sentencia MOVE FUNCTION (si corresponde)
  12. Invocación de FUNCTION (si corresponde)
  13. Conversión (si corresponde)
  14. Conversión como parte de una expresión (si corresponde)
  15. Para las diferentes estructuras sintácticas, considerar ejemplos válidos, y ejemplos con error.


Trabajo Práctico 3


Material adjunto:
  • Enunciado de la tercera parte del trabajo práctico.
  • Presentación de la clase práctica del 12/10
Trabajo Práctico 4

Material adjunto:
  • Enunciado de la cuarta parte del trabajo práctico.
  • Asignación de temas por grupo.

Nota: Con la entrega de los trabajos se solicitará la presentación de casos de prueba. Estos deben incluir, como mínimo, los ejemplos que se indican a continuación:

(Cuando sea posible, agregar un comentario indicando el comportamiento esperado del compilador)

A.   Ejemplos donde se verifiquen los siguientes chequeos semánticos:

1.      Variables no declaradas (según reglas de alcance del lenguaje).

2.      Variables redeclaradas (según reglas de alcance del lenguaje).

3.      Funciones no declaradas (si corresponde).

4.      Tipo incorrecto en límites de iteración FROM TO (cuando corresponda)

5.   Incompatibilidad de tipos en expresiones aritméticas, comparaciones, asignaciones, etc. (según reglas de tipos/conversiones del lenguaje)

6.      FUNCTION y variable con el mismo nombre (si corresponde)

7.      Variable con el mismo nombre en el ámbito global y dentro de funciones (si corresponde)

8.      Nombres de función redeclarados.

9.      Nombres de función como operandos de expresiones, sin los paréntesis que indican la invocación de una función.

10.   Función no declarada, cuando se invoque a una función no declarada previamente.

11.   Intento de uso de variables globales en una función MOVE.

 

B.     Ejemplos donde se genere código intermedio y código Assembler (con los chequeos que correspondan en cada caso) para:

1.      Sentencia de asignación

2.      Sentencia de emisión de mensajes por pantalla

3.      Sentencia IF sin bloque ELSE con una sola sentencia de emisión de mensaje

4.      Sentencia IF sin bloque ELSE con un bloque de sentencias que contengan al menos una sentencia de emisión de mensaje

5.      Sentencia IF con bloque ELSE con emisión de mensaje en ambos bloques

6.      Sentencia IF con comparación entre expresiones aritméticas como condición, con bloque ELSE. Incluir emisión de mensajes en ambos bloques.

7.      Sentencia de control asignada como tema particular. Con emisión de mensaje que permite observar, en ejecución, el flujo de control.

8.      Sentencia de control asignada como tema particular anidados en los bloques de una sentencia IF ELSE. Una sentencia de control en cada bloque.

9.      Sentencia IF ELSE anidada en el/los bloques de la sentencia de control asignada como tema particular.

10.   Shadowing (si corresponde)

11.   Sentencia LET (si corresponde)

12.   Sentencia SWITCH CASE (si corresponde) con emisión de mensaje en cada CASE

13.   Invocación de FUNCTION (si corresponde)

14.   Sentencia MOVE FUNCTION con invocación válida (si corresponde)

15.   Conversión (si corresponde)

16.   Conversión como parte de una expresión (si corresponde)

 

C.     Ejemplos donde se produzcan los siguientes chequeos en tiempo de ejecución:

1.      División por constante cero (si corresponde)

2.      División por variable de valor cero (si corresponde)

3.      Overflow (si corresponde)

4.      Resultados negativos en resta (si corresponde)

5.      Conversión con pérdida de información (si corresponde)


Ċ
Marcela Ridao,
15 sept. 2017 17:58
Ċ
Marcela Ridao,
26 oct. 2017 12:45
Ċ
Marcela Ridao,
28 ago. 2017 4:26
Ċ
Marcela Ridao,
17 ago. 2017 16:05
Ċ
Marcela Ridao,
13 oct. 2017 14:47
Ċ
Marcela Ridao,
17 ago. 2017 15:44
Ċ
Marcela Ridao,
31 ago. 2017 8:48
Ċ
Marcela Ridao,
10 oct. 2017 6:07
Ċ
Marcela Ridao,
26 oct. 2017 12:44
Comments