Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| teaching:cc4101:tareas:xyz:tarea1b [2024/04/08 17:28] – [Checkeo Estático de Tipos] gricci | teaching:cc4101:tareas:xyz:tarea1b [2024/04/30 18:08] (current) – gricci | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Tarea 1b (Entrega: | + | ====== Tarea 1b (Entrega: |
| ==== Lenguaje con tipos estáticos ==== | ==== Lenguaje con tipos estáticos ==== | ||
| Line 13: | Line 13: | ||
| Recuerden que tienen que seguir la metodología [[https:// | Recuerden que tienen que seguir la metodología [[https:// | ||
| </ | </ | ||
| + | |||
| + | **Distribución de Puntaje** | ||
| + | |||
| + | Esta tarea tiene **4 pts** en total, que se dividen de la siguiente manera: | ||
| + | * 3 pts por implementación (subdividido como especifica el enunciado). | ||
| + | * 0.5 pts para testing. | ||
| + | * 0.5 pts para calidad de código. | ||
| Deben entregar via U-cursos **un archivo .zip** que contenga los siguientes archivos: '' | Deben entregar via U-cursos **un archivo .zip** que contenga los siguientes archivos: '' | ||
| Si lo desea, puede obtener un bonus resolviendo la tercera parte, que es opcional: '' | Si lo desea, puede obtener un bonus resolviendo la tercera parte, que es opcional: '' | ||
| + | |||
| + | **Nota:** Es libre de implementar el intérprete usando sustitución inmediata o diferida (con ambientes), en cuyo caso podría serle útil el archivo {{ : | ||
| Deben entregar vía U-Cursos **un único archivo .zip** que contenga todos los archivos de su entrega. | Deben entregar vía U-Cursos **un único archivo .zip** que contenga todos los archivos de su entrega. | ||
| Line 23: | Line 32: | ||
| * Recuerde incluir tests con cobertura de todos los casos relevantes para todas las funciones que implemente y aquellas que extienda, pues esto se considerará en la evaluación. | * Recuerde incluir tests con cobertura de todos los casos relevantes para todas las funciones que implemente y aquellas que extienda, pues esto se considerará en la evaluación. | ||
| </ | </ | ||
| - | ===== Parte 1. Lenguaje con funciones de primer orden (1.5 ptos.) ===== | + | |
| + | ===== Parte 1. Lenguaje con funciones de primer orden (1.1 ptos.) ===== | ||
| En esta parte, vamos a implementar un lenguaje que incluye primitivas útiles (números, booleanos, pares, y operadores simples), identificadores locales ('' | En esta parte, vamos a implementar un lenguaje que incluye primitivas útiles (números, booleanos, pares, y operadores simples), identificadores locales ('' | ||
| Line 51: | Line 61: | ||
| | {<id> < | | {<id> < | ||
| - | < | + | < |
| </ | </ | ||
| Line 110: | Line 120: | ||
| } | } | ||
| </ | </ | ||
| + | Además de lo anterior, asumiremos por simplicidad que en los bindings de un mismo '' | ||
| + | <code scheme> | ||
| + | { | ||
| + | {with {{x 2} | ||
| + | {x 4}} | ||
| + | x} | ||
| + | } | ||
| + | </ | ||
| * Debe verificar en tiempo de ejecución que los argumentos de los operadores numéricos sean numéricos, que los argumentos de los operadores booleanos sean booleanos, y que los argumentos de los operadores de pares sean pares (En la parte 2 se alineará la verificación dinámica con la verificación estática). | * Debe verificar en tiempo de ejecución que los argumentos de los operadores numéricos sean numéricos, que los argumentos de los operadores booleanos sean booleanos, y que los argumentos de los operadores de pares sean pares (En la parte 2 se alineará la verificación dinámica con la verificación estática). | ||
| * Considere que la igualdad solo es válida sobre números. | * Considere que la igualdad solo es válida sobre números. | ||
| Line 171: | Line 189: | ||
| Teniendo en cuenta todo lo descrito anteriormente, | Teniendo en cuenta todo lo descrito anteriormente, | ||
| - | - **[1.0 pts]** '' | + | - **[0.9 pts]** '' |
| - **[0.2 pts]** '' | - **[0.2 pts]** '' | ||
| - | |||
| - | El testing recibe **0.3 pts**. | ||
| ----- | ----- | ||
| - | ===== Parte 2. Verificación estática de tipos (2.5 ptos.) ===== | + | |
| + | ===== Parte 2. Verificación estática de tipos (1.9 ptos.) ===== | ||
| En esta parte vamos a extender el lenguaje con anotaciones de tipos y verificación estática de ellos. Las diferencias en la sintaxis del lenguaje respecto de la parte anterior son: | En esta parte vamos a extender el lenguaje con anotaciones de tipos y verificación estática de ellos. Las diferencias en la sintaxis del lenguaje respecto de la parte anterior son: | ||
| Line 255: | Line 272: | ||
| Para poder realizar un checkeo de tipos estático, necesitaremos: | Para poder realizar un checkeo de tipos estático, necesitaremos: | ||
| - | - **[0.7 pts]** Implementar la función '' | + | - **[0.6 pts]** Implementar la función '' |
| - | - **[0.4 pts]** Implementar '' | + | - **[0.4 pts]** Implementar '' |
| - **[0.2 pts]** Implementar '' | - **[0.2 pts]** Implementar '' | ||
| - | - **[0.1 pts]** Extender la función '' | + | - **[0.1 pts]** Extender la función '' |
| - | El testing de esta parte recibe **0.5 pts**. | ||
| **Observaciones importantes**: | **Observaciones importantes**: | ||
| Line 304: | Line 320: | ||
| <note important> | <note important> | ||
| - | Esta parte es de realización **opcional**. Si la desarrolla correctamente obtendrá un bono de **1 pt** que podrán agregar a la nota de cualquiera de las tareas. | + | Esta parte es de realización **opcional**. Si la desarrolla correctamente obtendrá un bono de **1 pt** que podrán agregar a la nota de cualquiera de las tareas. |
| </ | </ | ||
| Line 317: | Line 333: | ||
| Un contrato corresponde a un predicado, una función que recibe exactamente un argumento y retorna un booleano. Un ejemplo de programa válido puede ser: | Un contrato corresponde a un predicado, una función que recibe exactamente un argumento y retorna un booleano. Un ejemplo de programa válido puede ser: | ||
| <code scheme> | <code scheme> | ||
| - | {{define {positive {x : Num}} {< 0 x}} | + | {{define {positive {x : Num}} : Bool {< 0 x}} |
| | | ||
| {- y x}} | {- y x}} | ||
| Line 357: | Line 373: | ||
| " | " | ||
| </ | </ | ||
| + | |||

