27/10/2007 - CiberEsquina - Universidad Nacional Abierta

Anuncio
M - 324
Versión 1
Primera Integral
Lapso 2007/2
1/5
UNIVERSIDAD NACIONAL ABIERTA
VICERRECTORADO ACADÉMICO
ÁREA INGENIERÍA
MODELO DE RESPUESTA
ASIGNATURA: Computación II
MOMENTO: Primera Integral
FECHA DE APLICACIÓN: 27/10/07;
CÓDIGO:
324
VERSIÓN:1
LAPSO 2007-2
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 una estructura de arreglo bidimensional de registros(tipo record) y
operaciones de búsqueda por dirección (i,j), búsqueda exhaustiva, conteo por
tipo, conteo por área, conteo de disponibilidad, determinación de disponibilidad
de parcelas, entre otras, como se muestran a continuación:
1- Reservar
parcela (i,j)
TAD MATRIZ:
parcelas
8- Hallar
parcelas
disponibles en
la fila i
2- Búsqueda
por dirección
(i,j)
3- Búsqueda
exhaustiva (
recorrido de toda la
matriz) para hallar
un área/tipo
7- Hallar vecinos
de la parcela (i,j)
4- Conteo de
todas las
parcelas que
tienen una
extensión ≤ x
5- ¿Está
disponible la
dirección (i,j)?
6-Contar
parcelas
disponibles
Figura 1
b) Operación en Pascal:
La “operación” a implementar es: ContarParcelasArea ( cuenta las parcelas que
tienen un área dada)
type
cadena = string[12];
parcelas = record
area : real;
tipo : cadena;
ci
: cadena;
ocupado : boolean;
end; {parcela}
Ingeniería de Sistemas
M - 324
Versión 1
Primera Integral
Lapso 2007/2
2/5
solar = array[1..M, 1..N] of parcelas;
function ContarParcelasArea(m: solar; a : real): integer;
var
cont, i,j : integer;
begin
cont := 0;
for i := 1 to 4 do
for j := 1 to N do
if (m[i,j]. area <= a) then cont := cont + 1;
ContarParcelasArea := cont
end;
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 las operaciones mencionadas en la descripción de la
situación. Para cumplir con lo exigido en la sección b), debe implementarse una
operación en Pascal. En este modelo se presentó la operación contar parcelas,
según un área dada.
MOD. I, UND. 2, OBJ. 2
CRITERIO DE DOMINIO 1/1
2- a- Estructura de datos: La estructura de datos más apropiada es la formada
por un arreglo con las direcciones de las pilas correspondientes a las 4
zonas y la pila de casos especiales. Se concibe cada pila como una lista
enlazada con empleo de la disciplina LIFO para su manipulación. (Figura
2).
1
2
Zona 001
Zona 002
.
.
.
.
3
Zona 003
4
5
Zona 004
Casos Esp.
.
.
Figura 2
Ingeniería de Sistemas
.
.
.
.
M - 324
Versión 1
Primera Integral
Lapso 2007/2
3/5
b) TAD: El tipo abstracto de datos para este caso es un arreglo de pilas. Entre las
operaciones asociadas a este objeto están: Distribuir correspondencia
( inserta elementos en las diferentes pilas), Contar correspondencia en cada
pila( cuenta el número de elementos en cada pila), Unir dos o más pilas ,
Extraer correspondencia( elimina elementos de una pila), Eliminar pila.
c) const NUM = 5;
type
cadena = string[12];
apunt_nodo_pila = ^nodo_pila;
nodo_pila = record
codigo : cadena;
prox_corr: apunt_nodo_pila
end; {nodo de la pila}
direcc_pilas = array[1..NUM] of apunt_nodo_pila;
Procedimiento de distribución de correspondencia
procedure DistribuirCorrespondencia(var p:direcc_pilas );
var
ch : char;
zona : string[4];
i,n : integer;
cod : cadena;
begin
ch := 'S';
while Upcase(ch) = 'S' do
begin
writeln(' Introduzca zona ');
readln(zona);
if zona = '0001' then i := 1
else if zona ='0002' then i := 2
else if zona = '0003' then i := 3
else if zona = '0004' then i := 4
else i := 5;
writeln(' Introduzca codigo ');
Inserta en la pila i
readln(cod);
(se expone más abajo)
Empilar(p, i, cod);
writeln(' mas correspondencias? S/N ');
readln(ch);
end;
end;
Ingeniería de Sistemas
M - 324
Versión 1
Primera Integral
Lapso 2007/2
4/5
Nota. En lugar de la secuencia de if-then else, podría convertirse el valor de
zona ( cadena de 4 caracteres) a un entero a través de una función.
Para usar la estructura de control case, debe definirse un tipo de dato
ordinal
procedure Empilar (var p: direcc_pilas; i: integer; cod: cadena);
var
nuevo,aux : apunt_nodo_pila;
begin
aux := p[i];
nuevo := new(apunt_nodo_pila);
nuevo^.codigo := cod;
nuevo^.prox_corr := aux;
p[i] := nuevo;
end; { Empilar }
Criterio de corrección: Se logra el objetivo si se realiza lo solicitado en todas las
secciones de la pregunta. En esta situación se recomienda el empleo de la
estructura de datos tipo vector o arreglo de pilas, cada celda del vector contiene
la dirección de la cima de la pila y cada elemento de la pila está enlazado con el
siguiente. Se emplea manejo dinámico de la memoria. Es obligatorio presentar
una descripción de la estructura de datos a emplear en PASCAL, similar a la
mostrada en este modelo. Se admite que se consideren direcciones individuales,
en lugar de un vector de direcciones.
MOD. II, UND. 3, OBJ. 3
CRITERIO DE DOMINIO 1/1
3- Procedimiento Buscar Hijos
procedure Buscar_Hijos(r: apunt_arbol;v : tipo_elem; var sw : boolean);
begin
if r<>nil then
begin
Se emplea para
if v = r^.elemento then
saber si el elemento
begin
está o no en el árbol
sw := true;
hijo(r^.izq);
hijo(r^.der);
Se detalla
r := nil;
seguidamente
end
else
begin
Buscar_Hijos(r^.izq,v,sw);
Buscar_Hijos(r^.der,v, sw)
Ingeniería de Sistemas
M - 324
Versión 1
Primera Integral
Lapso 2007/2
5/5
end;
end;
end;
El siguiente procedimiento permite hallar el contenido de los nodos hijos
procedure hijo (t: apunt_arbol);
begin
if t <> nil then
writeln(' Sucesor: ',t^.elemento)
else writeln(' Sucesor nulo');
end;
Criterio de corrección: Se logra el objetivo si se resuelve el problema
planteado empleando una estructura de árbol binario, con un procedimiento
recursivo de búsqueda de un valor solicitado en el árbol binario de búsqueda y
uno que determine el valor de los nodos hijos, aunque el segundo puede
formar parte del cuerpo del primero. Se debe contemplar el caso de “hijos
nulos”.
FIN DEL MODELO DE RESPUESTA
Ingeniería de Sistemas
Descargar