24/10/2009 - CiberEsquina - Universidad Nacional Abierta

Anuncio
324
MR
Versión 1
Primera Integral
Lapso 2009/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: 24/10/09;
CÓDIGO:
MOD. I, UND. 1, OBJ.1
324
CRITERIO DE DOMINIO 1/1
1- Tipo Abstracto de Datos. El siguiente es un modelo del TAD : a) Se propone
el uso de cadenas de caracteres(Strings ) y las operaciones que se muestran
en la Figura 1
TAD Cadena:
(Binaria)
1- Código Gray
8- Longitud de la
cadena
7- Conversión de
cadenas a otro
tipo
2- Negación
3- Suma binaria
4Concatenación
de cadenas
5- Inspeccionar bit
6-Partición de
cadenas
Figura 1
b) Tipo de Dato (PASCAL):
type
cadena = string[255];
La operación a implementar es hallar la cadena en código Gray equivalente
Ingeniería de Sistemas
324
MR
Versión 1
Primera Integral
Lapso 2009/2
2/5
function Gray( S : cadena ): cadena;
var
i,L : integer;
b1,b2,b3 : char;
T, AUX : cadena;
begin
T := S[1];
L := length(S);
AUX := '';
for i := 2 to L do
begin
b1 := S[i-1] ;
b2 := S[i] ;
b3 := OpXOR(b1,b2);
AUX := b3;
T := Concat(T, AUX);
end;
Gray := T;
end;
Extrae el par de caracteres
Llama a la función XOR
Concatena con la cadena
resultante
La siguiente función simula la operación ó exclusivo ya que se está operando con
caracteres.
function OpXOR( b1,b2: char) : char; { Operacion XOR}
begin
if b1 ='1' then
if b2 = '0' then OpXOR := '1'
else OpXOR := '0'
else if b1 = '0' then
if b2 = '1' then OpXOR := '1'
else OpXOR := '0'
else
writeln( ' Error en caracter');
end;
Ingeniería de Sistemas
324
MR
Versión 1
Primera Integral
Lapso 2009/2
3/5
Es posible utilizar variables booleanas, existe la operación en Pascal XOR ( o
exclusivo) para este tipo de variables. En cuyo caso hay que contemplar la
conversión a cadenas de caracteres, una vez realizada las operaciones XOR.
Es importante destacar que el tipo de dato string (cadena) tiene una longitud
máxima de 255 caracteres. Si se quiere obtener cadenas más largas, debe
analizarse el uso de una estructura de datos que permita almacenarlas.
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 3 operaciones mencionadas en la descripción de la situación.
Para cumplir con lo exigido en la sección b), debe implementarse la operación Gray
en Pascal. Se acepta que al menos se deje indicada la operación XOR, pero debe
estructurarse correctamente la operación Gray, cualquiera sea el tipo de dato
empleado.
MOD. I, UND. 2, OBJ. 2
CRITERIO DE DOMINIO 1/1
2- Lista circular enlazada
a) Estructura de datos: La estructura de datos
enlazada, con manejo dinámico de memoria.
a emplear es la lista circular
Type
tipo_zona = integer;
tipo_cod = string[3];
apunt_nodo = ^nodo_lista;
nodo_lista = record
zona
: tipo_zona;
codigo
: tipo_cod;
ant
: apunt_nodo;
prox_nodo: apunt_nodo
end;
b) Procedimiento
procedure Imprimir(AP: apunt_nodo);
var
AUX : apunt_nodo;
begin
Ingeniería de Sistemas
324
MR
Versión 1
Primera Integral
Lapso 2009/2
4/5
if not Esvacia(AP) then
begin
AUX := AP;
repeat
AUX := AUX^.prox_nodo;
writeln( ' zona: = ', AUX^.zona,' codigo = ', AUX^.codigo);
writeln;
until AUX = AP;
end
end; {imprimir}
function Esvacia( A: apunt_nodo): boolean;
begin
if A = nil then Esvacia := true
else Esvacia := false;
end;
Criterio de corrección: Se logra el objetivo si se realiza lo solicitado en las dos
secciones de la pregunta. En esta situación se emplea el TAD lista circular
enlazada, con manejo dinámico de la memoria. Es obligatorio presentar una
descripción de la estructura de datos a emplear en PASCAL, equivalente a la
mostrada en este modelo, así como las funciones que se requieran utilizar.
MOD. II, UND. 3, OBJ. 3
CRITERIO DE DOMINIO 1/1
3- Arbol binario asociado a cadenas de unos y ceros.
Especificación del nodo en PASCAL:
Type
tipo_cadena = string[255];
tipo_elem = integer;
apunt_arbol = ^nodo_arbol;
nodo_arbol = record
elemento: tipo_elem;
Ingeniería de Sistemas
324
MR
Versión 1
Primera Integral
Lapso 2009/2
5/5
izq,der: apunt_arbol
end;
Procedimiento: Crear Arbol
procedure Crear_Arbol( var r :apunt_arbol; x: tipo_cadena);
var
aux, nuevo : apunt_arbol;
n, l, i
: integer;
begin
aux := r;
n := 2;
l := length(x);
for i:= 1 to l do
begin
if x[i] = '0' then { hijo izquierdo}
begin
nuevo := CrearNodo(n);
Incrementa el
n := n + 1;
número que pondrá
aux^.izq:= nuevo;
en el próximo nodo
aux := nuevo;
end
else begin { hijo derecho}
nuevo := CrearNodo(n);
n := n + 1;
aux^.der:= nuevo;
aux := nuevo;
end
end;
end; {Crear_Arbol}
Criterio de corrección: Se logra el objetivo si se resuelve el problema planteado,
al elaborar un procedimiento, que permita crear el árbol binario a partir de una
cadena de ceros y unos. En este caso hemos presentado un procedimiento
iterativo.
FIN DEL MODELO DE RESPUESTA
Ingeniería de Sistemas
Descargar