Grupo IDS Datos Generale: Nombre: Orestes Francisco Matricula

Anuncio
Grupo IDS
Datos Generale:
Nombre:OrestesFrancisco
Matricula: 87329751.
Lugarde Realización:UniversidadAutonomaMetropolitanaIztapalapa.
PeriododeRealización:
31 Julio 1994 - 31 Enero - 1992
/"
Unidad:Iztapalapa.
Division:CienciasBásicaseIngenieria.
/Licenciatura:lngenleria
Elecbnica.
AreadeConcentracion:Computacibn.
Nombredelproyect85EEDfSistemapara
Responsable:
Ensefianza de Estructuras de Datos)
Ing.HéctorLozanoMoreno
Introduccion.
El sistemapara la ensefianzade las estructuras de datos SEED es unproyecto
las herramientascomputacionalesmásmodernaspara
quepretendeutilizar
lograr laensefianza de estadisciplina de la computación.
Sistema De Ensefianza de Estructuras
de Datos SEED 2
.
.
.
152468
Reporte de proyecto terminal.
lntriago y Loyo Orestes Francisco
Marzo I 993.
Grupo IDS
En éI se integra el
uso
de interfasesgráficas,programaciónorientada
objetos
sistemas
y expertos,
con la finalidad de crear
una
poderosa
herramienta tanto para alumnos como para profesores.
a
a nivel teórico,un
Para los alumnos,elsistemacontendráuncursocompleto
graficador de estructuras de datos que permitirásuobservaciónycomprensión
conceptual,
un
lenguaje
de
programación
en
espafiol
que
permitir6
crear
los temas
aprendidos,
un
ambiente
integrado
de
programas basados
en
desarrollo
programas
de
que
permitirá
escribirlos,
compilarlos,
ligarlos,
depurarlos y ejecutarlos
paso
a paso
para
observar
su
funcionamiento,
observargraficamente las estructuras al mismotiempo quesevancreando,
vergraficamente el manejode la memoria,ademásdecontarconunsistema
experto queevalúesus
programasy explique los errores,sugiriendoincluso
posiblessoluciones.
c
c
f
Ij
t
Para los profesores,elsistemacontaráconunmódulodeevualuación
de
y proponer
calificaciones
de
alumnos
que
permitirá
aplicarles
exámenes
mismoprofesor, así como
acuerdo a criteriosestablecidospreviamenteporel
llevarel controladministrativo y estadístico de las calificacionesdelgrupo.
Objetivos.
Generales.
al alumno,el
a1 profesor en la
mi el nivel académico de la
l. Aportarunaherramientadidácticaquefacilite,engranmedida
aprendizajedeestructurasdedatosyquesirvadeapoyo
preparación y evaluacióndelcurso,mejorando
institución.
2. Que sirva como una motivaciónparainiciar
el
desarrollo
de
software
semejante.
Especificos.
los conocimientosadquiridos a lolargo
de nuestraformaciónacadémica,con
el fin de reafirmarlos y constatarsu
utilidad en la creación de unproyectomayor.
l. Aplicar,de la maneramascompleta,
2. Aprender a trabajar enequipo,cumpliendoresponsablemente
asignadas, paraunmejorresultado
con las tareas
delproyecto.
Sistema De Ensefianza de Estructuras deDatos SEED 3
Grupo IDS
3. Usar ymanejaradecuadamentenuevasherramientasquefacilitanyhacen
máspoderosa la realizacióndelsistema.
4. Adquirirexperienciaen
la realizacióndeunainvestigaciónformal.
5. Participaractivamente en eldesarrolloyadministración
el cualcolaboraungruponumeroso
de unproyecto
en
depersonas.
MetodologiaUtilizada.
Para la realizacionde SEED se conjuntoun equipode trabajo de 17 integrantes. Se realizo
las actividades a realizarporelequipoy
se dividioel
mismo en
unacalendarizacibnde
subequiposdetrabajopararealizar
cadauno de los modulosquedebianderealizarse.
Los integrantesentregaron un reportedeactividadessemanales
proyecto.Lasreuniones
delequipoparaelanalisisyseguimientodel
cadasemanacorrespondiendo los sabadosdichareunion.
a
lo largo de la realizaciondel
proyecto serealizaron
Material y recursos.
SDK (SoftwareDevelopment Kit)
Quick C
c tt
SQL(XQL)
YACC
LEX
ActividadesRealizadas.
El trabajorealizadopor
el prestador a lo largodelperiodo
es larealizacionde
la interfaz
la descripciondedichainterfaz,
grafica. La documentacion que a continuacion sepresentael
la programacion serealizoenlenguaje
C con la herrmamientadenominada SDK (Software
Development KIT de Microsoft) y el OptmizingComplierVersion 6.0.
INTERFAZGRAFICA.
Dada la posiciónqueocupa la interfazgráfica en SEED, primeraimpresión que
se tienecon elsistema, es importanteofrecer unadimensióndelibertad
y
facilidad deuso.
El objetivodepresentarunainterfazsumamenteintuitiva
medianteelementosgráficos,creemos
se hacumplido.
Sistema De Ensefianza de Estructuras de Datos
SEED 4
Básicamente se divide en dos niveles queson:Pantalla
dePrimer
Pantallade Segundo Nivel. Ambas pantallasestánconstituidasporgrupos
botonesparaseleccionar
las opciones.
-PantalladePrimer
Nivel y
de
Nivel.
Es el punto de entrada al sistema y tienecomoobjetivopermitir
al usuario
escoger el temaespecificocon
el cual se desea trabajar(tema deestudio),
estomedianteelmenúprincipal
de los temas de estructuras dedatos.
-PantalladeSegundo
Nivel.
Estapantallapermite
seleccionar la herramientacon la cuál seestudiaráel
tema seleccionado.
Las herramientas son: TDA, PROGRAMAR, GRAFICAR y EXAMINAR.
En cadapantallasepresentaunanálisisteóricosobre
con solo presionarelbotóncentral.
las estructuras de datos
Elementosdeunaventana.
la interfazgráficayengeneralde
SEED se presentan
En cadaventanade
las
elementos en comúnpara el manejo de las mismas,sinembargonotodas
ventanasusantodos los elementos. A continuación se describen éstos:
Cajadecontrol
demenú.
AI activarestacaja
las opcionesqueaparecen
sonsimilares a cualquier otra aplicaciónde Windows.Ver figura 2.
-
Figura 2. Caja de control de menú de unaventana
SEED.
Sistema De EnsefianzadeEstructurasdeDatos
SEED 5
Grupo IDS
- Reestubhcece/:
- YoveL
-7umufia
- kn/h/zuL
- Mux/h/zuL
- Ce//a/:
- SH/?Ch fi.
ventana.
Recupera
el
estado
anterior
de la
Mueve la ventana
uso
mediante
el
las teclasdeFlechas.
de
tamaho
elAjusta
de la ventana
mediante eluso de las teclas de
Flechas.
Minimiza la ventana.
Maximiza la ventana.
Cierra la ventana y termina la instanciaesade
ventana.
Activa la lista de instancias
de
Program
Manager (Task
List).
Activa la lista de instancias de SEED.
- L/>h
La últimaopción de la caja de menú de control, a1 activarse,presenta la caja
de diálogode"Lista
de Temas" como se muestra en la figura 3. La caja
las instanciasabiertas de SEED y permiterealizar
"ListadeTemas"muestra
operacionessobre
las mismas.Pasarelfoco
o terminarunainstanciapor
ejemplo.
'I
I'
Figura 3. Caja de lista de temas.
-
Botones.
Un botón se compone deunaimagengráfica
(ícono), unmarco y untexto.
Los íconosrepresentande
la mejormanera la opciónaseleccionar.
El marco
da elefectotridimensional
al botón al serpresionado y el texto especificael
tema, (Figura 4).
Sistema De Ensefianza de Estructuras de Datos SEED 6
Grupo IDS
Figura 4. Ejemplo de unbotón(Botón
-
de ayuda).
Menú popup.
Un menúpapupaparece en la partesuperior
a seleccionarapareceresaltadaencolorinverso.
tieneasociadaunateclarápida.
de unbotónactivado.
La opción
Cada unade las opciones
Estos menús
pueden
aparecer
en
cascada
cuando
y esto
sucede
puede
notarse al final de la opciónunacabezadeflechaapuntandohaciaafuerade
la ventana. A continuación se muestraunmenú popup.
Figura 5. Ejemplo de unmenú popup.
Trabajando con la pantalladePrimer
nivel.
Con la ventana de primer nivel se puedeseleccionar
trabajo. Aparececuando se inicia SEED.
En la siguientefigura
nivel.
se presentaelaspectoquetiene
untemaespecifico
de
la pantalla de primer
Sistema De Ensefianza de Estrudiura.S de Da1.os SEED 7
..
Grupo IDS
Figura 6. Ventana principal de SEED.
Descripciónfuncionaldesusbotones.
AI seleccionar
botón
el central
(ver
Figura
6) se activa la ventana de
información
teórica
que
presenta
una
introducción
general
sobre
las
estructuras de datos (ver el tema Usundo /o femú de esfrucfum de doto$.
Figura 7. Botóncentral de la pantalla.
Botón deayuda
Este botónactiva la ventana de ayuda en linea(verel
tema Usundo /o yudu
en her) queauxilia al usuarioparatrabajarcon
la pantalla de primer nivel.
Figura 8. Botón de Ayuda.
Botón desalida
Activa la caja dediálogoparaconfirmar
Puede cancelar y continuar trabajando.
la salidade SEED.
Sistema De EnsefianzadeEstructurasdeDatos
SEED 8
Grupo IDS
Figura 9. Botón de Salida.
Botones de Tema
Los botonesque se describen a continuacióntienen la función deescogerun
tema específico de estructuras de datos. En cadafigura se presentaelbotón
y unadescripciónesquemática-en
forma deárbolde los temas que se
puedenescoger al activarcadauno de ellos.
U
Figura 1 O. Botón de Listas Lineales.
Figura 11. Botón de Arboles.
Sistema De Ensefianza de Estructuras de DatosSEED
9
Grupo IDS
Figura 12. Botón de Colas dePrioridad.
.
Figura 13. Botón de Listas.
Figura 14. Botón de Búsquedaen Tablas.
Sistema De EnsefianzadeEstructurasdeDatos
SEED 10
Figura 15. Botón de Grafos.
Trabajando con la pantalla de Segundo nivel.
La pantalla de segundonivel se activadespuésdehaberseleccionado
un tema
específico de estructuras de datos en la pantalla de primer nivel.
Esta pantallapermite la selección de cualquier herramientacon quesedesea
estudiareltema. A continuación se muestra el aspecto de estaventana.
es muy
similar
al que
y
presenta la ventana de primer nivel, el tamallo es fijo (notieneborde)
Para seleccionarcualquierade
los botonesde
siempreaparecemaximizada.
ésta pantalla, ya sea con el ratón o el teclado sigue
se el
mismo
la pantalladeprimernivelen
los
procedimiento deseleccióndescritoen
temas Posondo e/ foco enire boionesy ficog/endo un iema
Como puede notarse el aspecto deestaventana
El titulo de la ventanacorresponde al temaespecíficoseleccionadoen
elnivel
anterior.
El manejo de ésta ventana se sigue de la misma filosofía empleadapara la
ventanadeprimer nivel.
Botones de Tema.
Los botones
descritos
a continuación,
tienen
herramienta de trabajo.
AI activarcualquieradeestosbotonespasamos
herramienta.
la función de
escoger
una
alambienteespecifico
decada
Botón de TDA.
Sistema De Ensefianzade Estructuras de DatosSEED
11
Grupo IDS
Esta herramientatiene la función devisualizarelcódigoqueimplementa
TDA del tema elegido.Igualmentetiene la posibilidaddeejecutarloen
formasdiferentes(ejecución
encódigo,gráfico
y memoria).
al
sus tres
- BotóndeProgramar.
Activa ambiente
el
de
programación
que
contiene:
editar
lenguajedeprogramación LED, compilador y depurador.
de programas,
Botón deGraficar.
y disehar las
Activael ambiente de edicióngráficoquenospermitedibujar
estructuras de datos que soporta el sistema SEED.
Botón de Examinar.
Esta herramientaactivaelambiente
querealizaexámenes
al usuario para
evaluar surendimiento.
Sistema De EnsefianzadeEstructurasdeDatos
SEED 12
Grupo IDS
Resultaoos,Conclusiones y Metas Alcanzadas.
Debido a la notoriacarenciaderecursosdisponiblespara
la realizacióndeun
proyecto de la complejidad de SEED, la fecha de terminación se postergó,
Io cualconsideramosqueeldesarrollodelproyecto
ha satisfecho
pesea
nuestrasmetasypropósitosfundamentales.
Hubiesemosquerido contarconun
poco deapoyo de parte deláreaparahaberobtenidoresultadosunpocomás
espectaculares.Dadoque
es imposibleque 17 personastrabajenen
una sola
computadoraconaccesorestringido
a las áreasde trabajo, el proyecto debió
dividirse en dosetapas, la primera quedenominamosVersión 1.0 yque estará
terminada eldia10.deAgostode
1992, y la Versión 2.0 quedeberá arrancar
al entusiasmoycolaboracióndetodos
los
inmediatamente después,gracias
participantes.
Los módulosqueseestándesarrollandoenestemomento
son:
lnterfazgráfica.
Editor de textos.
Editorgráfico.
Traductor a C.
Traductor a Pascal.
Traductor a Modula.
Compilador.
Los modulosquefaltanpordesarrollarse
son:
Interprete.
Depurador.
Administrador de bases de datos.
Recomendaciones.
los
ParaFuturasversion
es necesariocontarconmayorapoyoyaque
resultados se obtinenconbaseenlosrecursos
a los cualessetiene
acceso.
Bibliografia.
Microsoft Corp. Microsoft Windows Users Guide. Version 3.0
1985 - 1990.
Sistema De Ensefianza de Estructuras de Datos
SEED 13
I
Grupo IDS
Microsoft Corp. Microsoft Windows SoftwareOevelopmentKit.
Gulde to Programing.
M.
Reference. Vols. I y II.
SchildtHerbertProgramacionenTurbo
C. Trad. Javier
Correla. Ed.McGraw Hill. México 1989.
Anexo 1. Módulos componentes de SEED.
EDITOR DE TEXTO
El editor de textos es unmódulo
que formaparte del sistema de SEED, el
cual es empleadoparamanipular y creararchivos ASCII.
La pantallacorrespondiente al EditordeTextos es la siguiente:
Dentrodeleditorsepuedenrealizarfuncionessobrecaracteres,cadenas
líneas completas,talescomoinsertar,borrar,reemplazar,modificar
búsquedas;empleando los comandos del editordetextosde
Los archivos a ser
editados
pueden
ser
cualquier otro tipo de texto.
SEED.
y
y hacer
programas
fuente
(aplicación)
ó
Las operaciones
sobre
archivos
son
las de crear,
cargar
un archivo
del
otro nombre.
directorio,salvar,salvarunacopiadelarchivocon
Las entradas y salidasdelEditor
son:
Sistema De Ensefianza de Estructuras de Datos
SEED 14
Grupo IDS
Entrada: El temaespecifico que elusuario ha elegido.
Salida: Unarchivoendisco
o memoria.
Los móduloscon los que se comunica son:
Módulo
- Módulo
- Módulo
- Módulo
-
decompilador.
de traductor.
de Ejecución.
de lnterfaz gráfica.
Ya queeleditor
de textosformaparte
del sistemaintegral de Programación
y ejecutarprogramas del tema
en el que el usuariopuedeescribir,compilar
elegido.
En general el programa del editor de textos se divide en procedimientos que
se encargan
de
procesar
mensajes
inicializar
e
funciones,
funciones
que
definen la clasede la ventana,funcionesque
se encargandecrearventanas
de ventanas,móduloparainicializar
(padre e hijo),módulosparaelmanejo
menú,
funciones
que
invocan
cajas
de
diálogo,
rutinas
para
manejo
de
impresora,
rutinas
mensajes
de
de error y procedimientos que son
invocados,pormedio
de las funcionesdeprocesamientodemensajes,para
realizarunaoperaciónespecífica.
Para la elaboracióndeestemódulo
queelproblemainvolucraotros
módulos.
se hizousodeprogramaciónmodular,
de tal manera que se
puede
dividir
ya
por
a caboprogramaciónorientada
a objetos (OOP), pormedio
Tambiénsellevó
de las funcionesde SDK, puéspara el manejo de la pantalla de edición y
otras funcionesmás,resultatransparente
al programador la maneracomo
guarda la informaciónpara la manipulacióndeestosdatos,dejandolaopción
deutilizarlascomoobjetos.
la cualcontiene
Paracrear la pantallaProgramar seabreunaventanapadre,
diferentes
las opciones
del menú
principal
(Archivos,
Editar,
Compilar,
Ejecutar,etc.) y parael texto enediciónsehaceusodeunaventanahijo.
El esquemacompleto de la funciónProgramar se puedeveren
la figura 16
donde se muestran las 'funciones que realiza la opciónProgramar.
Sistema De Ensefianza de Estructuras de Datos SEED 15
I
Figura 16. Diagrama de bloques Programar.
solo se contemplan las funciones
de
Archivos
y Editar, las
En el
editor
operaciones que realiza la opción de Archivossepuedenverenel
diagrama de
la figura 17, así como las operaciones de Editar se muestran enel diagrama
de la figura 18.
Figura 17. Diagramadebloquesde
Archivos.
La opcióndeEditar se divide en dos partes,unaqueserefiere
a operaciones
sobrebloquesde texto y otra a la debúsquedas y reemplazos(figura 18) las
opciones de cada una se muestran en las figuras 19 y 20 respectivamente.
Editar
'r'
Figura 18. DiagramadebloquesdeEditar.
Sistema De EnsefianzadeEstructurasdeDatos
SEED 16
Grupo IDS
Operadones sebre
bloques.
I
Figura 19. Diagramadeoperacionessobrebloques.
Busquedas y Reemplazos
Buscar
i
I
butqwdq
Figura20.Diagrama
R8petir
Reemplazar Repetir
Reemplazo
de búsquedas y reemplazos.
En generalelprograma
deleditor de textos sedivideen
procedimientos que
se
encargan
de
procesar
mensajes
inicializar
e
funciones,
funciones
que
definen la clase de la ventana,funciones que seencargandecrearventanas
(padre ehijo),módulos
para el manejo deventanas,móduloparainicializar
menú,
funciones
que
invocan
cajas
de
diálogo,
rutinas
para
manejo
de
y procedimientosquesoninvocados,
impresora,rutinas de mensajesdeerror
pormedio de las funciones de procesamientodemensajes,pararealizaruna
operaciónespecifica.
EDITOR GRAFICO
El editorgráfico nos permite unarepresentaciónvisualdeestructuras
de datos
- Grafos ( dirigidos y nodirigidos ).
- Arboles ( binarios, B, AVL, etc. ).
- Tablas de dispersión.
Sistema De Ensefianza deEstructurasdeDatos
SEED 17
talescomo :
Grupo IDS
- Arreglos
( M x N ).
Creación .
Modificación ( inserciónyeliminacióndenodos
- Almacenamientoyrecuperaciónenarchivo.
- Alteración de la información deuna estructura.
- Destrucción.
-
-
).
A continuación se muestra la pantallacorrespondiente al EditorGráfico.
En una estructura
gráfica,
la inserción y eliminación de un
nodo
o la
modificación de suinformación dependende la posicióndelcursorsobre
la
pantalla.Cuando se modifica la información,porejemplo,elcursor
se ubica
las
sobre elnodocuyainformaciónserácambiada,elprogramarecupera
coordenadasdelcursor y enbase a esascoordenadasdeberálocalizar
al nodo
en memoria y cambiarsucampo de información.
De 10 anterior se desprende que el almacenamientode
los nodosse debe
la pantalla; es porestarazónqueseutiliza
realizarenbase a suposiciónen
la cual 10
cornoestructura
dealmacenamiento
una tabla dedispersiónen
función de
distribución
depende
de
las coordenadas
del
nodo
sobre
la
pantalla.
Sistema De EnsefianzadeEstructurasdeDatos
SEED 18
152468
Grupo IDS
La función dedispersión es:
División = Coord/Div
F(dispersión) = División
/2
donde:
Coord : X o Y del nodo, dependiendo de la tabla en la cuálva a serinsertado
el nodo (X para TablaX y para TablaY).
Div : Anchocanalpara la TablaX, AltoCanal para TablaY.
DESCRIPCION DE LA CLASE DE NODOS UTILIZADA POR LATABLA
Los nodos que soninsertadosenesta
tabla puedenserdegrafos,árboles,
apuntadores o celdas de un arreglo,por lo tanto la manipulaciónquesehace
deestosnodosdurantesuinserción,eliminación,etcvaríasegúneltipode
estructura que se estárepresentando.
El tipo de los nodosmanejadosen
la tabla es REGNODO :
jstruct REGNODO
int Tipo;
intNumero;
int X;
int Y;
int Listalnfos[ MAXINFO
1;
struct REGPARIENTES
*ApANodo;
struct REGNODO *SigX,
*SigY, *listaligas[LIMAP];
1;
Tipo : Define el tipo de nodoqueseestárepresentando
y puedeser :
- apuntador
- árbol
-
grafo
celda
Numero : Cuando
se
utilizan
arreglos,
este
manera secuencia1 los nodos.
camposirveparaordenar
Sistema De EnsefianzadeEstructurasde
de
Datos SEED 19
-~
.
Grupo IDS
X : Coordenada X ( absoluta ) delnodo
.
Y : Coordenada Y ( absoluta ) delnodo .
Listalnfos : Información que contieneelnodo
.
ApANodo : Lista de nodosque apuntan hacíaestenodo
SigX : Apuntador al siguientenodo en la TablaX (1)
SigY : Apuntador al siguientenodoen
.
la TablaY (1) .
Listaligas : Lista de nodos a los que apuntaestenodo
.
(1) Se utilizan dos tablasdedispersión
( TablaX y TablaY ) parafacilitar
scrollsobre una gráfica ( Ver sección de scroll de la pantallaenestemanual
el
).
INSERCION DE UN NODO
La pantalla es divididapormcanalesverticales
y por nhorizontales tal y
como se muestra en la figura 2; elanchodecadacanalestadadopor
las
variablesglobales
GLBAnchoCanal para los canalesverticales
y GLBAltoCanal
para los horizontales.
Un nodo sólo puedeser insertado enaquellasregiones
de la pantalladonde
se intersectanuncanalimparvertical
y uncanalimparhorizontal,quedando
la inserción de los nodos.la
cualquier otra zona de la pantallainhibidapara
razón de esto es evitar que usuario
el pueda
colocar
nodos
juntos
o
encimados y construya de estemodoestructuras de datos no válidas.
Una vez que seapunta a algúnlugaren
la pantalladonde se desea insertar
las coordenadasdepantalladonde
se desea insertar el
un nodo,serecuperan
nodo y se lleva a cabo el siguienteproceso :
Se convierten las coordenadas de pantallaobtenidas ( coordenadasrelativas
) a coordenadasabsolutas.
- El programaverifica si ese lugar es válido.
- Se realizaunabúsquedaenunade
las tablasparaaveriguar
si el no do
aúnnohasidoinsertado.
- Si ellugar es válidoyelnodoaún
no existe,éste es insertadotanto en la
TablaX como en la TablaY.
-
Sistema De Ensefianza de Estructuras de Datos SEED 20
Grupo IDS
ELlMlNAClON DE UN NODO
Una vez que unnodohasidomarcadoparaser
:
ejecuta la siguientesecuenciadepasos
eliminadodeunagráfica,
se
del
nodo,
se
convierten a
la
se localiza la direccióndelnodoen
- Se recuperan las coordenadas
de
pantalla
coordenadasabsolutas
tabla.
y conestas
- Se almacena la dirección del nodoenunavariableauxiliar,
tanto de la TablaX como de la TablaY.
- Todas las ligasdel campo Listaligasdelnodo
y éste se elimina
sonapuntadas a NULL.
- Para cadadirección de la lista ApANodo ( la cualcontiene las direcciones
ese nodo),se recorre el campo
de los nodosdelagráficaqueapuntanhacía
y la liga que apunta al nodo que va a ser borrado
Listaligasdeesadirección
se reapunta a BASURA.
- Se libera
la variableauxiliar.
SCROLL DE LA PANTALLA
La justificación delusode
dos tablasdedispersiónaparececuando
se hace
algúnscrollsobre el contenido de la pantalla.Cuando se pulsaelmouseentre
el thumb ( selector ) y algunade las flechas de una barra descroll, la gráfica
la pantalla
se
mueve
una
página,
en
dirección
que se encuentra
sobre
contraria al movimiento del thumb sobre la barra. Para realizar
este
corrimientosobre
la gráfica,
supongase
que
se trata de unscroll
en la
direccionhorizontal hacía la izquierda
- Se le restaundesplazamientodellargo
XRel (1).
de la pantalla
a la coordenada
XRel, se
localiza
la cubeta que
corresponde
coordenadaen TablaY, y se leasigna a cubetainicial .
- Con esta
nueva
a esta
A partir de cubetainicial
y hasta el númeromáximo decubetas
que
cabenen la pantalla, se redibuja la TablaY.
la barravertical, elanterior
Cuandoelrequerimiento
de scroll sehacesobre
-
procedimiento se ejecutasobre la TablaY. Cuandoel mouse es pulsadosobre
se realizauncorrimientosobre
la pantalla
utilizando la función ScrollWindow() del SDK y se dibujan las dos primeras
cubetas de la tabla del extremo de la pantalladonde se hizoelscroll.
la flechasdeunabarradescroll,
Sistema De EnsefianzadeEstructurasde
Datos SEED 21
$52468
Grupo ID
'
4
MOVIMIENTODE LAS LIGAS
AI crearse elnodo,todassusligassonapuntadas
selecciona
una
liga
de nodo
unpara
ser
apuntada
hacia
elsiguienteprocedimiento:
a BASURA. Cuandose
otro lugar, se ejecuta
- Se recuperan las coordenadas de pantalla de la liga a mover
se
y
convierten a coordenadasabsolutas.
- Con estascoordenadasabsolutas
se realizaunainserción.
- Se recupera la dirección del nodo al cuálpertenece la liga(nodoorigen)asi
como el número deligaque fueseleccionado (1 - 4,N.liga).
Una vez apuntada la ligahacía
nodo(nododestino).
-
otro nodo, se recupera la direcciónde
- Finalmente,delcampo
Listaligasdelnodoorigen,seselecciona
Listaligas[N.liga]yseapunta
a la direccióndelnododestino.
ese
elapuntador
MOVIMIENTO DE'LOSNODOS
El proceso seguidoparael
movimiento de los nodossobre la pantalla es :
- Se marcantodos los nodosquevan
Cuando nodo
un
ListaNodosMarcados.
-
es
a sermovidos.
marcado,
almacena
se dirección
su en
- Cuando se realizaelmovimiento,todos
enListaNodosMarcadossonreinsertadosen
su nuevaposiciónsobre la pantalla.
los nodoscuyasdirecciones
estan
las tablas de dispersiónenbase a
- Por último, sonredibujadas las tablas dedispersión.
i) Reinserción
- Se toma una
dirección
coordenadas de ese nodose
original a la actual.
almacenada
en
ListaNodosMarcados
y
les agregaeldesplazamientodesdesuposición
Sistema De EnsefianzadeEstructurasdeDatos
a las
SEED 22
4
Grupo IDS
la función de
- De acuerdo a sus
nuevas
coordenadas,
se
evaluan
en
la TablaY, de estemodo
dispersión, tanto para la TablaX comopara
obtienensusnuevas CubetaX y CubetaY para ese nodo.
- Utilizando
las nuevascubetas,elnodo
se
es insertadoenambastablas.
Utilizando las cubetas de la posición
original,
el
nodo
ambastablas.
es eliminadode
-
- El mismoprocesosesiguecontodas
taNodosMarcados.
Lis
las direccionesalmacenadasen
MODlFlCAClON DE LA INFORMACION EN UN NODO
AI serapuntado unnodoparamodificarlesuinformación
:
a
la
- Se recuperan las coordenadas
de
pantalla
del
nodo,
se
convierten
coordenadasabsolutas
tabla.
y conestas
selocaliza
la direccióndelnodoen
- Se despliega la caja de info.
- Obtenida la direcciónde ese nodo, a sucampoinfo
valorobtenidodesde la caja de modificar info.
se leasignaelnuevo
ALMACENAMIENTO Y RECUPERACION
DE ESTRUCTURAS DE DATOS DESDE ARCHIVOS
Paraalmacenar una estructura en un archivo,serealiza
un recorridopor la
TablaX y los campos decadanodo que contienen la clase a la quepertenece
( árbol,grafo,arreglo,etc.)
así comosuinformación
se almacenan enuna
variabletemporal del tipoficha. Por otro lado, a partir deel campoListallgas
( Ver Descripciónde la clase de nodosusados por la tabla se recuperan
las coordenadas de los nodos a los que apuntaestenodo y sonalmacenados
enel campo lista de la variableauxiliar.
Una vez realizado lo anterior,sealmacenalavariableauxiliarenelarchivo.
I'
'I)
a partir de un archivo,serealizandoslecturas
Pararecuperarunaestructura
al archivo, En la primerlectura se lee la información de cadanodoenuna
variabledeltipoficha
y con los camposNúmero, Tipo, X, Y, Listalnfos se crea
elnodoy es insertado en la Tabla. Posteriormente,durante la segundalectura,
mediante X y Y se localiza al nodoen la tabla y enbase a las coordenadas
la variableauxiliar,se
construye la lista de
contenidasenelcampoListade
nodos a los que apuntaelnodolocalizado.
Sistema De EnseñanzadeEstructurasdeDatos
SEED 23
I
,
Grupo IDS
MANEJODELMOUSE
la pantalla, las coordenadas x,y desu
Cuandoel
mouse es movidosobre
Las coordenadassonprocesadaspara
posiciónsonregresadasenIParam.
es así, cambiaelicono
averiguar si el cursorestá enunaposiciónválida,si
que
representa
al cursor (dependiendo
nuevo
el ícono
de
Io herramienta
.
utilizadaen ese momento ), de otra manera seconservaelcursorestandar
Si el cursorestásobre
unaposiciónválidayelbotónizquierdo
del mouse es
pulsado,
se
verifica
que
el
tipo delnodoestédefinido.Cuandoelbotón
izquierdo es soltado de nuevo se ejecutanalgunas de las siguientesacciones
dependiendo de NumHerramieta :
NumHerramienta
HERNODO
Insertaun nodo.
HERRINFO
Presenta la caja dediálogopara
info y modifica la info del nodo
apuntado.
HERRNIL
Apuntaunaliga
HERRARREGLO
a nil.
Crea un arreglo.
HERRMOVER
Mueve todos los elementosde
ListaNodoMarcados
HERRBORRA
Elimina un nodo.
HERRAPUNT
Inserta un apuntadoren la tabla.
COMPllADOR
Este módulo es elencargado de compilar los programasescritos enlenguaje
LED (Lenguaje de Estructura de Datos),
cuya
gramática se muestra
las reglas de producción los símbolos terminalesestán
posteriormente;en
terminales
comienzan
con
escritos
con
mayúsculas
mientras
que los no
mayúscula.
La gramática es la siguiente:
Sistema De EnsefianzadeEstructurasdeDatos
SEED 24
4
Grupo IDS
Programa
IDENTIFICADOR
: ROGRAMA
DefMacros Importaciones DeclTipos
DeclVariablesListaDefCuerpoProc;
DefMacros
: MACRO ListaMacros;
ListaMacros
: Macro
I ListaMacrosMacro
I;'
Macro
;
I;'
: IDENTIFICADOR Parametros
Parametros
ListaParamMacro
Importaciones
lmportacion
ListaNomDef
I (' ListaParamMacro
: IDENTIFICADOR
I ListaParamMacro
')I;
IDENTIFICADOR;
IDENTIFICADOR
: DE IMPORTA
ListaNomDef
: IDENTIFICADOR
1 ListaNomDef
'I'
;
';I
IDENTIFICADOR ;
1 TIPO ListaTipos ;
ListaTipos
:
TipoPermitido
Exp;
1 ImportacionesImportacion;
DeclTipos
DefTipo
I='
DefTipo
ListaTipos DefTipo
';I
I
:
IDENTIFICADOR
I;'
I='
;
TipoPermitido;
APUNTADOR Tipo
I REGISTRO Campos FIN
I ARREGLO lndice '1' DE Tipo
I MATRIZ lndice lndice '1' DE Tipo
I ENTERO;
'[I
'[I
lndice
I,'
: NUMERO
IDENTIFICADOR;
I
Sistema De Ensefianza de EstructurasdeDatos
~.
SEED 25
M* mAPAlhPA jlBUBT[EA
Grupo IDS
: Listaldent Tipo
I CamposListaldent
Campos
I:'
DeclVariables
I;'
I:'
Tipo
I VAR Vars;
: Listaldent Tipo
I Vars Listaldent Tipo
Vars
I:'
I;'
I:'
ListaDef
I;';
I ListaDef
I;'
;
Def;
: Proced
Def
1 Funcion;
Proced
Funcion
ListParamFunc
Listparam
Params
Listaldent
: PROCEDIMIENTOIDENTIFICADOR
DeclVariables ListaDefCuerpoProc;
. FUNCIONIDENTIFICADOR
ListPararnFunc
Tipo
DeclTipos DeclVariables ListaDef
CuerpoFunc;
'(I
I)'
I:'
I;'
Params;
I Listparam;
: Params
I Listparam
: VAR Listaldent Tipo
Tipo;
I Listaldent
I:'
I:'
: IDENTIFICADOR
I Listaldent IDENTIFICADOR;
',I
Tipo
: IDENTIFICADOR
I ENTERO;
CuerpoProc
: COMIENZA ListalnstProc FIN;
ListalnstProc
: InstProc
I ListaInstProcInstProc
CuerpoFunc
I;'
';I
;
: COMIENZA ListalnstFunc FIN;
Sistema De Ensefianza de Estructuras de Datos SEED 26
ListalnstFunc
InstFunc
: InstFunc
1 ListalnstFuncInstFunc
';I
';I
;
: lnst
I REGRESA Exp
I SI Condicion ENTONCES CuerpolnstFunc
OtroFunc;
'(I
I)'
OtroFunc
: OTRO CuerpolnstFunc
InstProc
1 SI Condicion ENTONCES
I;
: lnst
CuerpolnstProcOtroProc;
: OTRO CuerpolnstProc
OtroProc
I;
: Invoca
I Asignacion
I MIENTRAS Condicion HAZ CuerpolnstProc
I REPITE ListalnstProc HASTA Condicion
I PARA Asignacion HASTA Exp POR Exp
HAZ CuerpolnstProc
I PARA Asignacion HASTA Exp
HAZ CuerpolnstProc
I LEEENTERO ldent
1 ESCRIBECADENA Exp Exp
CADENA
I ESCRIBEENTERO Exp Exp
Exp
lnst
'(I
I)'
Ill
I('
Ill
I)'
'(I
Il'
I)';
: ldent
Asignacion
Exp;
: '(' ExpBooleana
ExpBooleana
Condicion
ExpBooleana
I='
I NO
:
'(I
')I
'(I
ExpBooleana
I)';
')I
Conect
I('
ExpBooleana
Y
'
I ExpBooleana ')' Conect NO
ExpBooleana
1 NO '(' ExpBooleana Conect
ExpBooleana ')'
I('
'(I
I)'
')I
'(I
Sistema De EnsefianzadeEstructurasdeDatos
SEED 27
Grupo IDS
1 NO '(' ExpBooleana
ExpBooleana
I Comparacion;
I)'
Conect NO
'(I
I)'
Comparacion
: Exp OperRel Exp;
EXP
: Termino
I '-' Termino
1 Exp OperAd Termino
I NULO ;
Termino
I Termino OperMul Factor;
: Factor
Factor
: ldent
Invoca
NUMERO
Exp
'(I
: IDENTIFICADOR
Invoca
ParamActuales
ListaExp
OperRel
I)';
'(I
ParamActuales
I)';
ListaExp;
: Exp
1 ListaExp
It'
Exp ;
: '<'
1
I IGUALIGUAL
I MAYOROIGUAL
I MENOROIGUAL
I
I>,
I#';
Conect
I
: '&'
'@I;
OperAd
OperMul
Sistema De EnsefianzadeEstructurasdeDatos
SEED 28
Grupo IDS
CuerpolnstFunc
CuerpolnstProc
: InstFunc
1 CuerpoFunc;
: InstProc
I Cuerpoproc;
ldent
: IDENTIFICADOR Listald;
Listald
:
I;
Comosepuedeobservaren
'[I
Exp
I
I
1
'1' Listald
*[I
l.'
'A'
Exp ',' Exp
'1' Listald
IDENTIFICADOR Listald
Listald
la gramática, LED es unlenguajeestructurado.
El Único tipobásico de LED es elentero y los tiposcompuestos son:Arreglos,
Matrices,Registros y Apuntadores.
Una de las característicasdistintivas de LED respecto a los lenguajescomunes
La ventajaprincipal
de
es que no se permite eluso de variablesglobales.
esto, es que el programador se adiestreenelmanejodeparámetros,tanto
porvalorcomoporreferencia,
sinperdergeneralidad
en eldesarrollo
de
programas y evitarelusoinadecuadodevariablesglobales.
Entre las facilidadesque LED ofrece se encuentra la definiciónde
TIPOS de acuerdo a los requerimentosdelprograma.
MACROS y
los programas, la compilación se
En cuanto a1 tratamiento deerroresen
detienecuandoencuentrael
primererror,indicandoeltipodelmismo.Cuando
se corrige el error es necesariorecompilarelprograma.
Para sudesarrolloelcompiladorfuedivididoen
las siguientesetapas:
1 .- Análisis y Diseño de la Gramática.Duranteestaetapasedisefió
gramática de LED de acuerdo a los objetivosestablecidospara
2.- Preprocesador. Su proposito es realizar
macrodefiniciones y la deteccióndeerroreslexicográficos.
seuso LEX y YACC.
la
SEED.
la
substitución de
Para SU desarrollo
Sistema De EnseñanzadeEstructurasdeDatos
SEED 29
4.- Analizadorsintáctico. Se escribióunarchivodeespecificacióndeentrada
para YACC deacuerdo
a la gramática de LED, paragenerarelanalizador
sintáctico delcompilador.
5.-
Analizador
semántico.
Se realizó
mediante
la adición
acciones
de
semánticas al archivo de especificación
para
YACC, por
tratarse
de un
compiladordirigidoporsintaxis.
En estaetapa se realizó la definiciónde las
estructuras dedatos,requeridaspara
la tabla desímbolos
la cualconsta
así también se llevó a cabo la
básicamente de
pilas
listas
y generales,
definición de las funcionesparaelmanejo
de dichatabla.
6.- Generación de código. Esta es la etapafinaldelcompilador
y aquí se lleva
a cabo la generacióndecódigointermedio
de tresdireccionesmediante
la
adicióndeaccionessemánticas
al archivodeespecificaciónpara
YACC.
INTERPRETE
SEED cuentaconunintérprete,
análisisyprogramación.
elcual,
actualmente seencuentraenfasede
Con relación a la fase deanálisis, se estáestudiandoelcódigointermedio,
y conbase enéste, se elaborará la estructura de datoscorrespondiente.
La fase de programación ha cubiertohasta el momento la realización de las
funcionescorrespondientespara
la ejecución de algunas de las intrucciones
existentesenelprograma
que seestéanalizando.
y
Se tiene
pensado
terminar el intérprete en las próximas dos semanas
posteriormente sepasará a la elaboracióndesurespectivomanualtécnico.
Intimamenterelacionadocon
SEED, manejaremosunmapeo en memoria,este
mope0 seencuentraactualmenteenfase
de programación.Semanejapara
SU efecto,
unaestructura
de "lista deregistros",
la cualrepresentará
las
diversas
localidades
existentes
en
memoria y, cuyo
contenido
será
valores
y de
las variables
dinámicas
que se
precisamente los nombres
emplearánenelprograma.
Dicho mapeo se controlará desde: el programa (PROGRAMA FUENTE) pormedio
elusodeldepuradory,desdeeleditordegráficos,para
que, posicionándose
en un
determinado
nodo
(representado
gráficamente)
usuario
el
pueda
Sistema De EnsefianzadeEstructurasdeDatos
SEED 30
@d 68
reconocerelárea
contenidodeéste.
GruJ
de memoria asignada al nodo en cuestión así como el
TRADUCTORES
En estemódulo es posible traducirunprogramaescrito
otro en PASCAL, MODULA o C, según Io requiera.
LED a
enlenguaje
SEED,
De estamanera elusuarioaprovecha las ventajas quebrindaelsistema
en la realización de programas y cuando lo requiera
puede
traducir
su
la ventaja desaber que
programa a cualquieradeestostreslenguajes,con
éstefuncionacorrectamente.
Los traductores serealizaronusando
facilidadesquebrindaparaestetipo
los programas LEX y YACC, debido a las
de trabajo.
El archivodeentradapara
YACC contiene la especificaciónde la gramática de
LED y las accionescorrespondientesparaescribirenelarchivodondequeda
el
programa
traducido,
además
de
llamadas
nombres
de
las funciones,
de
procedimientosparaindentareltexto.
Ejemplodeltraductor
a procedimientos
para
guardar
los parámetros, o bien
llamadas
a
a MODULA
Programa ejemplo escrito en LED:
PROGRAMA Lista
TIPO
ApEntero = APUNTADORENTERO;
ApNodo = APUNTADOR Nodo;
Nodo = REGISTRO
Info: ENTERO;
Ligalzq,LigaDer: ApNodo;
FIN;
Matriz = MATRIZ [5,5]DE ENTERO;
ArregloReg = ARREGLO [5] DE Matriz;
Sistema De EnsefianzadeEstructurasdeDatos
SEED 31
Grupo IDS
VAR
Lista:ApNodo;
Cont:ApEntero;
Mat:Matriz;
PROCEDIMIENTO Inserta( VAR C0nt:ApEntero;VAR Lista:ApNodo;Elem:ENTERO)
VAR
Celda,ApAux:ApNodo;
PROCEDIMIENTO CreaNodo(E1em:ENTERO;VAR Ce1da:ApNodo)
COMIENZA
CREA(Ce1da);
Celda ^.Info = Elem;
Celda A.Ligalzq = NIL;
Celda A.LigaDer = NIL;
Reg.Campo1 = 2;
Mat[ 1,3]= 2;
FIN CreaNodot
COMIENZA I iNSERTA 1
PARA Ap= 1 HASTA 1O POR -2 HAZ
COMIENZA
CreaNodo(Elem,Celda);
ApAux = Lista;
MIENTRASNO(ApAux == NIL) HAZ
COMIENZA
ApAux = ApAux-.LigaDer;
SI ( ApAux == NIL) ENTONCES
COMIENZA
ApAuxA.ligaDer = Celda;
APAux = Lista;
FIN;
FIN;
CeldaA.Ligalzq = ApAux;
FIN;
ArrReg[3]=ArrReg[ 11;
Suma = Suma t 1;
FIN I Inserta 1
FUNCIONFin():ENTERO
VAR
Sistema De EnsefianzadeEstructurasdeDatos
SEED 32
Grupo IDS
Resp : CHAR;
COMIENZA
ESCRIBECADENA( 5, 5, Continuas S/N
Lee( Resp);
SI ((Resp == S) @ (Resp == S)) ENTONCES
I);
REGRESA(O)
OTRO
COMIENZA
REGRESA(I );
Ap = Ap t 1 ;
FIN;
FIN
COMIENZA
REPITE
Inserta(Lista,5);
Inserta(Lista,7);
HASTA (Fin() == 1) ;
FIN I EOF 1
Programa ejemplo traducido a modula:
MODULE Lista ;
FROM InOut IMPORT Readlnt, Writelnt, Writestring ;
FROM Storage IMPORTALLOCATE,DEALLOCATE
;
TYPE
ApEntero = POINTER TO INTEGER;
ApNodo = POINTER TO Nodo;
Nodo = RECORD
Info : INTEGER;
Ligalzq, LigaDer : ApNodo;
END;
Matriz = ARRAY[ 1..5],[
1 ..5]OF INTEGER;
ArregloReg = ARRAY[1..5] OF Matriz;
VAR
Lista : ApNodo;
Cont : ApEntero;
Mat : Matriz;
Sistema De EnsefianzadeEstructurasdeDatos
SEED 33
Grupo IDS
PROCEDURE Inserta (VAR C0nt:ApEntero;VAR Lista: ApNodo;
Elem: INTEGER);
VAR
Celda, ApAux : ApNodo;
PROCEDURE CreaNodo (E1em:INTEGER;VAR Ce1da:ApNodo);
BEGIN
NEW (Celda );
Celda-.Info := Elem;
CeldaA.Ligalzq := NIL;
CeldaA.LigaDer := NIL;
Reg.Campo1 := 2;
Mat[l,3] := 2;
END CreaNodo ;
BEGIN
FORAp
:= 1 TO 10 BY (-2) DO
CreaNodo(Elem,Celda);
ApAux := Lista;
= NIL) DO
WHILE
NOT
(ApAux
ApAux := ApAuxA.LigaDer;
IF (ApAux = NIL) THEN
ApAux-.LigaDer := Celda;
APAux := Lista;
END ;
END ;
Celda-.Ligalzq := ApAux;
END ;
ArrReg[3] := ArrReg[ 11;
Suma := Suma t 1;
END Inserta ;
PROCEDURE Fin() : INTEGER ;
VAR
Resp : CHAR;
BEGIN
GOTOXY( 5,5 );
Writestring(
Continuas
S/N
);
Lee( Resp);
IF ( (Resp = S) OR (Resp = S)) THEN
RETURN (O );
ELSE
Sistema De EnsefianzadeEstructurasdeDatos
SEED 34
Grupo IDS
RETURN (1 );
Ap := Ap t 1;
END ;
END Fin ;
BEGIN
REPEAT
Inserta(Lista,5);
Inserta(Lista,7);
UNTIL (Fin() = 1) ;
END Lista .
Programaejemplo escrito en
LED:
PROGRAMA Lista
TIPO
ApEntero = APUNTADORENTERO;
ApNodo = APUNTADOR Nodo;
ApCelda = APUNTADOR Celda;
Nodo = REGISTRO
Info: ENTERO;
Ligalzq,LigaDer: ApNodo;
FIN;
Celda = REGISTRO
1nfo:ENTERO;
LigaApCelda;
FIN;
Matriz = MATRIZ [5,5] DEENTERO;
ArregloReg = ARREGLO [5] DE Matriz;
VAR
Lista:ApNodo;
Sistema De EnsefianzadeEstructurasde
Datos SEED 35
Grupo IDS
Cont:ApEntero;
Mat:Matriz;
PROCEDIMIENTO Inserta( VAR Lista:ApNodo;Elem:ENTERO)
VAR
Celda,ApAux:ApNodo;
Casil1a:ApCelda;
PROCEDIMIENTO CreaNodo(E1em:ENTERO;VAR Ce1da:ApNodo)
VAR
Reg:Matriz;
COMIENZA
CREA(Ce1da);
Celda ^.Info = Elem;
Celda A.Ligalzq = NULO;
Celda A.LigaDer = NULO;
Reg.Campo1 = 2;
Mat[ 1,3]= 2;
ESCRlBEENTERO(5,7,(a*l O));
LIBERA(Celda);
FIN I CreaNodoi
COMIENZA { iNSERTA 1
PARA Ap= 1 HASTA 10 HAZ
COMIENZA
CreaNodo(E1em;Celda);
ApAux = Lista;
MIENTRASNO(ApAux == NULO) HAZ
COMIENZA
ApAux = ApAuxA,LigaDer;
SI ( ApAux == NULO) ENTONCES
COMIENZA
ApAux^.LigaDer = Celda;
ApAux = Lista;
FIN;
FIN;
Celda^.Ligalzq = ApAux;
FIN;
ArrReg[J]=ArrReg[ 1 1;
Suma = Suma t 1;
CREA( Casilla);
LEEENTERO(AP);
Sistema De Ensefianza de Estructuras deDatos SED 36
~~~
Grupo IDS
FIN
[ Inserta [
FUNCIONFin():ApNodo
VAR
Resp : CHAR;
COMIENZA
ESCRIBECADENA( 5, 5, ' Continuas S/N
Lee(Resp);
SI ( A*(Sumtl) == varsum) ENTONCES
COMIENZA
SI (((Resp == S) @ (Resp == S)) & (Resp == N )) ENTONCES
I);
REGRESA(O)
OTRO
COMIENZA
REGRESA( I);
Ap = Ap t 1 ;
FIN;
FIN;
FIN
COMIENZA
REPITE
Inserta(Lista;5);
1nserta(Lista;7);
HASTA (Fin() == 1) ;
FIN I EOF 1
Programa ejemplo traducido a C:
#include<stdio.h>
#include<stdlib.h>
#include <alloc.h>
char Lugar[30];
/*Variable
necesariapara ESCRIBEENTERO
*/
typedefint *ApEntero;
typedefstruct RegNodo [
int Info;
struct RegNodo *Ligalzq,*LigaDer;
[Nodo;
typedefNodo *ApNodo;
Sistema De EnsefianzadeEstructuras
de Datos SEED 37
typedefstruct RegCelda I
int Info;
struct RegCelda *Liga;
ICeldo;
typedef Celda *ApCelda;
typedefint Matriz[5][5];
typedefMatriz ArregloReg[5];
Grupo IDS
ApNodo Fin();
main()
I
ApNodo Lista;
ApEntero Cont;
Matriz Mat;
do
I
I
Inserta(&Lista,5);
Inserto(&Lista,5);
Iwhile!(Fin()== 1);
Inserta(ApNod0**Lista,int
I
Elem)
ApNodo Celda,ApAux;
ApCelda Casilla;
for(Ap= 1 ;Ap<= 1O;)
I
CreaNodo(Elem,&Celda);
ApAux=(**Lista);
while!(ApAux==NULL)
i
ApAux=ApAux->LigaDer;
if(ApAux==NULL)
I
1
I
1
ApAux->LigaDer=Celda;
ApAux=(**Listo);
Celda->Ligalzq=ApAux;
Sistema De EnsefianzadeEstructuras de Datos SEED 38
-
I
ArrReg[3]=ArrReg[ 11;
Suma=Sumat 1;
Casilla=malloc(sizeof(struct RegCelda));
scanf("%d",&Ap);
Grupo IDS
CreaNodo(int Elem,ApNodo **Celda)
Matriz Reg;
I
(**Celda)=malloc(sizeof(struct RegNodo));
(**Celda)->Info=Elem;
(**Celda)->Ligalzq=NULL;
(**Celda)-->LigaDer=NULL;
Reg.Campol=2;
Mat[1][3]=2;
gotoxy(5,7);
itoa((a*1O),LugarI1O);
puts(Lugar);
free((**Celda));
ApNodo Fin()
I
CHAR Resp;
Lee(&Resp);
if(A*(Sumt l)==varsum)
I
if(((Resp==s)ll(Resp==S))&&(Resp==N))
return(0);
else
I
return(1);
Ap=Apt 1 ;
Sistema De EnsefianzadeEstructuras
de Datos SEED 39
Asesor
Ing. HéctorLozano Moreno
Coordinador de la Lic. en Ing.Electronica
Yudiel Perez Espejo.
Sistema De EnsefianzadeEstructurasdeDatos
SEED 40
Descargar