Vous êtes sur la page 1sur 3

ACTIVIDAD No.

UNIDAD TEMÁTICA 1 LISTAS


ELEMENTO DE COMPETENCIA:

Construir un algoritmo usando listas de forma eficiente representándolo mediante un


diagrama de flujo, para la solución de problemas. Utilizar listas para la codificación de
algoritmos y/o diagramas de flujo, para la solución de problemas.

EVIDENCIA REQUERIDA:

Diseño del algoritmo y diagrama de flujo, Codificación de algoritmos y/o diagramas de


flujo a un lenguaje de programación estructurada (Lenguaje C).

ACTIVIDAD:

Diseñar un algoritmo, diagrama de flujo y su codificación para la solución de problemas


de su entorno. Realizar la codificación de los programas a partir de su diagrama de flujo,
o de algoritmos.

I. Crear un programa que maneje el registro de los estudiantes de la unidad


curricular de Estructuras de datos utilizando listas encadenadas. Los estudiantes
aprobados deben insertarse por el inicio de la lista encadenada y los estudiantes
reprobados deben insertarse por el final de la lista encadenada. Los datos
requeridos por cada estudiante son los siguientes: matricula, nombre, apellido,
correo, calificación final (escala: de 0 – 100).

El programa debe permitir realizar las operaciones de:

a) agregar estudiante
b) buscar estudiante por matricula,
c) eliminar un estudiante con calificación menor o igual 30
d) total estudiantes aprobados,
e) total estudiantes reprobados.

Utilizar un menú de opciones.

II. Aplicación de Listas: Recolección de Basura y Compactación

En un ambiente de computadores multi-procesos, muchos programas residen en


memoria al mismo tiempo. Diferentes programas tiene diferentes requerimientos
de memoria. Así un programa puede requerir 60K o 300K de memoria. En
cualquier momento que el sistema necesite memoria, necesita localizar memoria
continua del tamaño deseado. Cuando la ejecución de un programa es
terminada, la memoria que ha sido ocupada debe ser liberada y disponible para
otro programa. Más aun, bloques de memoria pueden ser liberados en una
secuencia diferente a la que fueron solicitados.

Suponga por ejemplo el siguiente caso:


Se tiene una memoria de 100000 palabras y 5 programas a P1, P2, P3, P4, y P5
que requieren bloques de memoria de tamaños 10000, 15000, 6000, 8000 y
20000. La vista de la memoria al localizar el programa P5 serıa:
10,000 15,000 6,000 8,000 20,000
P1 P2 P3 P4 P5 Free Space

10,000 31,000 59,000 100,000

Figura: Memoria con 5 procesos en ejecución

Asuma ahora que el programa P4 y P2 completaron su ejecución y que por lo


tanto la memoria es liberada:

P1 Free P3 Free P5 Free Space


10,000 31,000 59,000 100,000

Figura: Memoria con 2 procesos terminados

Ahora se tienen 3 bloques de memoria contigua libres y tres ocupados. Con el


propósito de seguir permitiendo la localización de memoria, es necesario
mantener registro de los bloques que no están en uso. Para eso se usa una lista
de bloques de memoria que no están en uso.

El proceso de recolección de basura es llevado a cabo en dos pasos: (1)


marcación de los bloques que están en uso y (2) compactación de los bloques
libres a memoria disponible.

Este segundo paso es trivial si los bloques son de igual tamaño llegando a ser
de O(n), siendo n el número de nodos.
Cuando existe un tamaño variable por nodo, es deseable compactar la memoria
de manera que todos los nodos libres queden en memoria contigua, lo que se
llama compactación de memoria. La compactación de memoria reduce el tiempo
de recuperación.

El programa debe realizar las operaciones mencionadas: crear la lista de los 5


programas con sus correspondientes boques de memoria, liberar el espacio de
memoria indicada y compactar la memoria, para cada caso debe mostrar la lista.
Manejar un menú opciones.

CRITERIOS DE EVALUACIÓN:

Diseño del diagrama:

 Secuencia lógica.
 Contenido correcto.
 Limpieza.
 Presentación.
 Entrega a tiempo.
 Referencias bibliográficas.
Codificación:

 Secuencia lógica.
 Contenido correcto.
 Limpieza.
 Presentación.
 Entrega a tiempo.
 Referencias bibliográficas.

Vous aimerez peut-être aussi