10/05/2008 - CiberEsquina - Universidad Nacional Abierta

Anuncio
M - 324
Versión 1
Segunda Integral
Lapso 2008/1
1/6
UNIVERSIDAD NACIONAL ABIERTA
VICERRECTORADO ACADÉMICO
ÁREA INGENIERÍA
MODELO DE RESPUESTA
CÓDIGO: 324
FECHA DE APLICACIÓN: 10/05/08
ASIGNATURA: Computación II
MOMENTO: Segunda Integral
MOD. I, UND. 1, OBJ.1
CRITERIO DE DOMINIO 1/1
1- Tipo Abstracto de Datos. El siguiente es un modelo del TAD : a) Se propone
el uso de vectores de números enteros y operaciones de: Cardinal del
conjunto( número de elementos), Hallar los subconjuntos de n elementos,
Unir conjuntos, Intersecar conjuntos, Partir conjuntos, Hallar el complemento
con respecto a un universo, entre otras.
TAD Conjunto
(vector)
7- Hallar el
número de
subconjuntos
1- Cardinal
2- Unión de
dos conjuntos
3- Intersección de
dos conjuntos
6-Obtener subconjuntos
de n elementos
4- Partir un
conjunto en dos
5- Hallar el
complemento
Figura 1
b) Operación en Pascal:
La “operación” a implementar es: Hallar subconjuntos de uno, dos y tres
elementos contenidos en un conjunto X.
Type
conjunto = array [1..M] of integer;
Procedure Subconjuntos(X : conjunto; N : integer);
Ingeniería de Sistemas
M - 324
Versión 1
Segunda Integral
Lapso 2008/1
2/6
var
i,j, k : integer;
vacio: char;
begin
vacio:= '0';
writeln(vacio,' ');
for i := 1 to N do
write('{ ',X[i],' } ');
writeln;
{Subconjuntos de un elemento}
for i := 1 to N do
{Subconjuntos de dos elementos}
for j := i+1 to N do
write('{ ',X[i],' , ', X[j],' } ');
writeln;
for i := 1 to N do
{Subconjuntos de tres elementos}
for j:= i+1 to N do
for k := j + 1 to N do
write('{ ',X[i],' , ', X[j],' , ',X[k],' } ');
end; {Subconjuntos}
Criterio de corrección: Se logra el objetivo si se realiza lo solicitado en las dos
secciones. Con respecto a la sección a) deberá describir el TAD apropiado,
contemplando al menos 5 operaciones. Para cumplir con lo exigido en la sección
b), debe implementarse la operación Hallar Subconjuntos ( de 1, 2 y 3 elementos)
en Pascal. No se exige la obtención de todos los subconjuntos.
MOD. I, UND. 2, OBJ. 2
CRITERIO DE DOMINIO 1/1
2- a- Estructura de datos: La estructura de datos a emplear es la pila.
b- TAD: El tipo abstracto de datos para este caso es una pila, el cual se
implementará con variables dinámicas. Entre las operaciones asociadas
a este objeto están: Insertar en la pila, Pila Vacía ( determina si la pila
esta vacía o no), Cima ( dispone del elemento que esta en el nodo de la
cima), Eliminar un nodo( elimina el nodo que está en la cima de la pila),
vaciar una pila en otra (vierte una pila en otra, extrayendo el elemento de
la cima a la otra pila, en un proceso continua), Imprimir los contenidos de
todos los nodos que están en la pila.
Ingeniería de Sistemas
M - 324
Versión 1
Segunda Integral
Lapso 2008/1
3/6
type
apunt_nodopila = ^nodo_pila;
nodo_pila = record
elemento : integer;
prox
: apunt_nodopila
end; {nodo de la pila}
Procedimiento de eliminación de la pila: En este procedimiento se verifica
iterativamente si el elemento a buscar está en la cima de la pila P. Si está, se
elimina de la pila y si no está se pasa a una pila temporal Q. Al final se vacía la
pila Q sobre la pila P.
procedure Eliminar(var P: apunt_nodopila; var e: integer);
begin
if Pilavacia(P) then
writeln('PILA VACIA, NO SE PUEDE ELIMINAR ')
else begin
encontrado := false;
Iniciar(Q);
repeat
if esta_en_la_cima(P,e) then
begin
Eliminar_De_La_Pila(P);
Elimina elemento en la
writeln('Eliminado el elemento ',e);
cima
de la pila P
encontrado := true;
end
else begin
Insertar_En_Pila(Q,cima(P));
Eliminar_De_La_Pila(P)
Inserta elemento de la pila
end;
P en la pila Q
until (encontrado) or (PilaVacia(P) );
if not encontrado then writeln('El elemento ',e,' no se encuentra en la
pila');
VaciarPila(Q,P);
end
Vacía la Pila Q en la pila P
end;
Ingeniería de Sistemas
M - 324
Versión 1
Segunda Integral
Lapso 2008/1
4/6
La función PilaVacía, determina si la pila está vacía
function PilaVacia (P: apunt_nodopila) : boolean;
begin
If P = nil then PilaVacia := true
else PilaVacia := false
end; { Pila Vacia }
El siguiente procedimiento elimina el elemento de la cima de la pila:
procedure Eliminar_De_La_Pila(var P: apunt_nodopila);
var
AUX : apunt_nodopila;
begin
AUX := P^.prox;
dispose(P);
P := AUX;
end;
Inserción en una pila:
procedure Insertar_En_Pila(var P: apunt_nodopila; e: integer);
var
nuevo : apunt_nodopila;
begin
new(nuevo);
with nuevo^ do
begin
elemento := e;
prox := P
end;
P := nuevo;
end; { Insertar_En_Pila }
Criterio de corrección: Se logra el objetivo si se realiza correctamente lo
solicitado en todas las secciones de la pregunta. En este caso se debe emplear el
TAD pila con variables dinámicas. Es posible que se usen funciones como pila
vacía o cima, en este caso no se requiere que se desarrollen
Ingeniería de Sistemas
M - 324
Versión 1
Segunda Integral
Lapso 2008/1
MOD. II, UND. 3, OBJ. 3
5/6
CRITERIO DE DOMINIO 1/1
3- Procedimiento Recorrer y Actualizar el vector de direcciones
procedure Recorrer_Actualizar( AP : apunt_arbol; var dir: vector; var ind:
integer);
begin
if AP <> nil then
begin
ActualizarVector(AP, dir, ind);
Recorrer_Actualizar(AP^.izq, dir, ind);
Recorrer_actualizar(AP^.der, dir, ind);
end;
end;
El vector dir almacena las direcciones de los nodos y al igual que el índice ind,
se pasa al procedimiento como parámetro variable. El procedimiento
ActualizarVector inserta las direcciones de los nodos visitados en el vector. La
variable ind, es el índice que señala la ubicación de la dirección a almacenar
procedure ActualizarVector(AP : apunt_arbol; var d: vector; var ind :
integer);
begin
d[ind] := AP;
d[ind+1] := AP^.izq;
d[ind+2] := AP^.der;
ind := ind + 3;
end;
Ingeniería de Sistemas
M - 324
Versión 1
Segunda Integral
Lapso 2008/1
6/6
Estructura de datos:
Type
apunt_arbol = ^nodo_arbol;
nodo_arbol = record
elemento: integer;
izq,der: apunt_arbol
end;
vector = array[1..N] of apunt_arbol;
Criterio de corrección: Se logra el objetivo si se resuelve el problema
planteado empleando una estructura de árbol binario, con un procedimiento
recursivo que recorra el árbol binario bien sea en preorden, enorden o
postorden. En dicho procedimiento debe incluirse un proceso de actualización
del vector, el cual se llena inicialmente con direcciones nulas.
FIN DEL MODELO DE RESPUESTA
Ingeniería de Sistemas
Descargar