SiguienteAnteriorContenido

1.3. Generación de un Prototipo en C que implanta el TAD Pila 

La generación de prototipos en ManTa es muy sencilla, sin embargo para compilar los prototipos generados necesita un compilador de C. Hasta el momento ManTa se integra muy bien con las herramientas de desarrollo de GNU. Son de libre distribución y hay para gran variedad de máquinas. Si tiene DOS, Windows 3.x/95/NT le recomendamos DJGPP, que puede obtener en nuestro servidor.
 

1.3.1. Una Pila de Naturales

Podemos generar el prototipo de la pila que hemos definido (TAD PIL), sin embargo no podríamos compilarlo  (porque depende de un tipo X, que no está definido).  Vamos primero a crear un nuevo tipo cuyo prototipo si podamos compilar.   Crearemos una pila de Naturales, empleando el tipo PIL que definimos antes y el tipo primitivo NAT.
 
 
Vaya al menú Tipos y elija Nuevo, teclee el nombre del nuevo tipo por ejemplo PN (Pila de Naturales), si es usuario de DOS le recomendamos emplear nombres muy cortos para describir sus TADs (3 o menos caracteres), debido a la limitación de DOS para manejar nombres largos de archivo.  

Después elija Instanciar, verá un menú con los nombres de los TADs en el ambiente (es decir en memoria) elija PIL.  Verá entonces un menú con el único parámetro del TAD PIL,  este es X, elíjalo.  A continuación aparecerá un menú con los TADs en ambiente donde podrá elegir el tipo NAT 
Ya ha creado el nuevo tipo PN que es una pila de naturales, para comprobarlo retorne al menú de Tipos y elija Editar, elija el TAD PN, y en el siguiente menú elija editar Todo el TAD.   Se abrirá un archivo en el editor de texto, donde encontrará la definición del tipo PN.  Que debe ser:  

TAD PN [  ]

INICIALES
inicPIL_PN  :                                  -> PN

CONSTRUCTORAS
adicPIL_PN  : PN * NAT                         -> PN

SELECTORAS
elimPIL_PN   : PN(i)                            -> PN
infoPIL_PN   : PN(i)                            -> NAT
esPILVacia_PN   : PN(i)                            -> BOOL
EQ_PN    (c): PN(i) * PN(i)                    -> BOOL

AXIOMAS
elimPIL_PN(inicPIL_PN) = ERROR
elimPIL_PN(adicPIL_PN(P1,X2)) = P1

infoPIL_PN(inicPIL_PN) = ERROR
infoPIL_PN(adicPIL_PN(P1,X2)) = X2

esPILVacia_PN(inicPIL_PN) = TRUE
esPILVacia_PN(adicPIL_PN(P1,X2)) = FALSE

EQ_PN(inicPIL_PN,inicPIL_PN) = TRUE
EQ_PN(inicPIL_PN,adicPIL_PN(P1,X2)) = FALSE
EQ_PN(adicPIL_PN(P1,X2),inicPIL_PN) = FALSE
EQ_PN(adicPIL_PN(P1,X2),adicPIL_PN(P3,X4))=AND(EQ_NAT(X2,X4),EQ_PN(P1,P3))
Como podrá comprobar se trata de la definición de una Pila de Naturales (lo único que se hizo fue instanciar el parámetro X del TAD PIL con NAT). 
 

1.3.2. Generación del Prototipo

Ahora ManTa podrá generar el prototipo del TAD PN recién creado:
 
 
Vaya al menú principal y elija Prototipos, elija Automático y en el menú de Generación elija Todo.  Así ManTa generará el prototipo del TAD actual (el TAD PN) junto con un programa de prueba  y presentará el mensaje:  
  Prototipos OK!
Si cuenta con herramientas GNU y tiene la vía de estas en el  path de su máquina, puede compilar e inclusive ejecutar el programa de prueba, que ManTa ha generado.   Elija primero Compilar en el mismo menú de Prototipos (requiere make y gcc), deben aparecer mensajes que indican el proceso de compilación: 

  gcc -c -ansi -pedantic manta.c 
  gcc -c -ansi -pedantic manta_in.c 
  gcc -c -ansi -pedantic PN_ma.c 
  gcc -c -ansi -pedantic PN.c 
  gcc -c -ansi -pedantic PN_in.c 
  gcc -ansi -pedantic -o PN manta.o manta_in.o PN_ma.o PN.o PN_in.o 

A continuación elija Ejecutar en ese mismo menú y entrará al programa de prueba que ManTa generó:  

En este programa -al que llamamos Banco de Pruebas- podrá crear nuevos "objetos" del tipo PN e interactuar con ellos.  

Si no le fue posible compilar el código generado, ya sea porque no cuenta con herramientas GNU o porque no las tiene completamente configuradas, puede en todo caso examinar el código generado: desde el Menu de Prototipos elija Editar_Prototipos y escoja la parte del prototipo que desee editar (e.g. Estructuras de Datos, Constructoras, Selectoras) 
 

 


SiguienteAnteriorContenido