Monday, April 24, 2006

Hola amigos, placer saludarles este día. A continuación les presentaremos la resolución de los ejercicios 6.1 y 6.2 del libro del “Dragón”.

6.1 Escríbanse expresiones de tipos para los siguientes tipos.
a) Una matriz de apuntadores a reales, donde los índices de la matriz varían de 1 a 100.

array(1..100, pointer(real))


b) Una matriz bidimensional de enteros (es decir, una matriz de matrices) cuyas filas estén indizadas de 0 a 9 y cuyas columnas estén indizadas de -10 a 10.

array((0..9,-10..10), integer)

c) Funciones cuyos dominios sean funciones desde enteros a apuntadores a enteros y cuyos rangos sean registros que consten de un entero y un carácter.

integer x pointer(integer) à record(int)x(char)


6.2 Supóngase que se tienen las siguientes declaraciones en C:

typedef struct {
int a, b;
} NODO, *APNODO;
NODO aa[100];
APNODO bb(x, y) int x; NODO y { … }

Escríbanse expresiones de tipo para los tipos de aa y bb.

Expresión de tipo para aa:
array(1..100, record((a x integer) x (b x integer)))

Expresión de tipo para bb:
integer x record((a x integer) x (b x integer))
à pointer(record((a x integer) x (b x integer)))



Para resolver la tarea, tuvimos que leer las secciones 6.1 y 6.2 del capitulo 6 del libro del “Dragón”, donde en un inicio no comprendíamos muy bien cómo escribir expresiones de tipo para los tipos de un lenguaje determinado, ya que al inicio resulta un poco confuso tanto tipo y tipo, pero luego después de 2 o 3 leídas obtuvimos los resultados deseados.

Además, quiero platicarles un poco acerca de la segunda fase de micro-C. La labor que nos encontramos realizando actualmente, es la comprobación de tipos, a continuación les presentamos algunos puntos que se han validado hasta el momento.
§ No permitir definir una función con un número diferente de parámetros al que se especifico durante su declaración.
§ Que al definir una función se especifiquen el mismo número y tipo de parámetros especificados al momento de su declaración.
§ No permitir más de 4 parámetros en una función, tanto en su declaración como en su definición.

Esto último lo realizamos ya que para albergar los parámetros de las funciones solo tenemos 4 registros disponibles, los cuales son: $a0 .. $a3.

Actualmente nos encontramos validando las llamadas a funciones, donde las expresiones (producción: expression) que se reciben como parámetros, deben corresponder a los tipos de los parámetros esperados por una función. El trabajo se ha tornado un poco largo, ya que las expresiones son una buena cantidad, por lo tanto su verificación de tipos no es una tarea tan corta.

En relación al retorno de una función tipo void, nos ha saltado una duda. Si el cuerpo de dicha función debe llevar forzosamente un return ; o también seria permitido no colocar ningún statement return. Espero aclarar mi duda en los próximos días.
Esto ha sido todo por hoy, espero verlos si no es posible durante esta semana, si, con seguridad el próximo fin de semana.

0 Comments:

Post a Comment

<< Home