PLAN DE CURSO - CiberEsquina - Universidad Nacional Abierta

UNIVERSIDAD NACIONAL ABIERTA
VICERRECTORADO ACADEMICO
SUBPROGRAMA DE DISEÑO ACADÉMICO
AREA: INGENIERÍA
CARRERA: INGENIERÍA DE SISTEMAS
PLAN DE CURSO
I. Identificación:
Nombre:
COMPUTACIÓN II
Código:
324
U. C. :
4
Carrera:
Ingeniería de Sistemas/
TSU en Mantenimiento de Sistemas Informáticos
Código:
236 / 237
Semestre:
III
Prelaciones:
Computación I (323)
Requisito:
Ninguno
Autor:
MSc. Maria Eugenia Mazzei
Ing. Nelly Escorcha
Asesores:
MSc. Carmen Z. Maldonado
Lic. Carmen Velásquez
MSc. Judit Carvallo
Dra. Egleé Arellano
Dr. Antonio Alfonzo
Nivel Central
Caracas, abril 2015
2
II.
FUNDAMENTACIÓN
El curso Computación II se centra en el estudio y aplicación de las diferentes
estructuras de datos, conjuntamente con el diseño e implementación de los
algoritmos apropiados para tratarlas. Bajo el enfoque actual, las estructuras de
datos se conciben como colecciones de datos, sobre los cuales se pueden definir
operaciones.
Es nuestro interés proporcionar un enfoque actualizado del curso en este nivel
de la carrera, que sirva de punto de partida para el desarrollo de habilidades
relacionadas con el diseño de algoritmos a través de estructuras de datos
apropiadas, con una visión hacia la programación orientada a objetos.
El desarrollo de destrezas para el diseño de soluciones sencillas y su
implantación en el computador, con el
diseño adecuado de las estructuras de
datos, sólo se logra a través de la ejercitación, sin olvidar la comprensión de los
conceptos, de ahí la naturaleza teórico-práctica de la asignatura.
La asignatura Computación II se ubica dentro de las asignaturas básicas del
ingeniero de sistemas y del TSU en mantenimiento de sistemas. Su asimilación es
fundamental para el buen desempeño en gran parte de las asignaturas de estas
carreras, en donde el estudiante deberá implementar programas, de allí su
carácter obligatorio. Por otra parte, fomenta el desarrollo de la lógica y la
realización
de
acciones
coherentes,
indispensables
para
el
diseño
e
implementación de programas en computadores; esto jugará un papel muy
importante en la formación del futuro ingeniero.
El dinamismo con el que se mueve el conocimiento en el campo de la
Computación ha sido determinante en la selección del material instruccional para
este curso. En este sentido, se considera conveniente proponer el empleo de
libros producidos por editoriales del mercado, que complementados con guías
Plan de curso Computación II - Elaborado por Prof. María E. Mazzei y Nelly Escorcha –
UNA 2015
3
instruccionales adecuadas, fomenten el fortalecimiento y la actualización de los
conocimientos. Tomando en consideración estos elementos, se diseñó el siguiente
paquete instruccional:
1. El libro: Estructuras de Datos en C++, de Joyanes L. y Sánchez L.,
Editorial Mc Graw Hill. La selección de este libro está basada en criterios
de actualidad, presentación, abundancia de ejemplos y disponibilidad.
2. Como texto alternativo se recomienda el siguiente libro:
Estructuras de Datos y Algoritmos, de Aho A. V., Hopcroft J. E. y
de Ullman J. D., Addison Wesley Longman.
3. Una guía instruccional que servirá de directriz para el empleo adecuado
del libro.
4. Un paquete de software de programación para la implementación de los
programas en el lenguaje C++.
5. Referencias a páginas WEB y cursos WEB que tendrán el efecto de
enriquecer los conocimientos adquiridos.
Plan de curso Computación II - Elaborado por Prof. María E. Mazzei y Nelly Escorcha –
UNA 2015
4
Orientaciones Generales
MODALIDAD OBJETIVOS
PRIMERA
Las pruebas son de modalidad presencial y de desarrollo.
1y2
PARCIAL
Ponderación de los objetivos: La ponderación consiste en la
asignación de pesos a los objetivos evaluables de la asignatura,
de acuerdo con la importancia y/o complejidad que tienen. La
SEGUNDA
escala de ponderación de esta asignatura es de 1 a 5 puntos.
3y4
PARCIAL
Esta ponderación está determinada por la incidencia de los
objetivos evaluables en: el perfil de la carrera, el objetivo terminal
de la asignatura y los objetivos terminales de las asignaturas
sobre las que existe prelación.
INTEGRAL
1, 2, 3, y 4
• Las especificaciones del trabajo práctico se publican la primera
semana de presentación de las pruebas. El estudiante consignará
el trabajo resuelto con la prueba integral.
Responsable:
TRABAJO
5,6 y 7
Ing. Nelly Escorcha (Especialista de contenido)
PRÁCTICO
Teléfono: (0212) - 5552110
Correo electrónico: [email protected]
M U O
OBJETIVOS
1 1 Elaborar un TAD (Tipo Abstracto de Datos) para representar un dato particular.
2 2 Resolver problemas de tipo algorítmico aplicando el TAD Lista Enlazada.
I
3 3 Resolver problemas de tipo algorítmico aplicando el TAD Pila y/o el TAD Cola.
CONTENIDO
•
•
II
M I: U 1 y 2
M I: U 3
M II: U 4
M I y II: U1,2,3 y 4
M II y III: U 5,6 y 7
4
4
Resolver problemas de tipo algorítmico aplicando el TAD Árbol.
5
5
6
6
7
7
Implementar algoritmos en lenguaje de programación, a través del empleo de la estructura de grafo para la
resolución de problemas específicos.
Implementar algoritmos de Ordenación en lenguaje de programación, para la resolución de problemas
específicos.
Implementar algoritmos de Búsqueda en lenguaje de programación, para la resolución de problemas específicos.
III
Objetivo:
Peso:
1
2
2
2
3
3
Peso máximo: 23 puntos
4
3
5
5
6
4
7
4
Peso acumulado:
Calificación
1-8
1
9-10
2
11-12
3
Criterio de dominio académico: 16 puntos
Plan de curso Computación II - Elaborado por Prof. María E. Mazzei y Nelly Escorcha –
UNA 2015
13-14
4
15
5
16
6
17-18
7
19-20
8
21-22 23
9
10
5
ORIENTACIONES GENERALES
1. Los textos recomendados para este curso están disponibles en la Biblioteca del Centro Local, como Servicio de
Préstamo en Sala y Préstamo Circulante.
2. La guía instruccional se encontrará alojada en http://www.ciberesquina.una.edu.ve.
3. Las especificaciones del Trabajo Práctico se suministrarán al estudiante a partir de la primera semana de
presentación de pruebas, a través de la red: http://www.ciberesquina.una.edu.ve
4. El software requerido para realizar el trabajo está disponible en el Laboratorio de Computación del centro local.
5. Lea las instrucciones que aparecen en la guía instruccional.
6. Realice los ejercicios propuestos en cada unidad, en en la guía instruccional.
7. Implemente algoritmos en lenguaje de programación. Introduzca diferentes datos, para probar su algoritmo.
Analice los resultados.
8. Consulte en la dirección electrónica indicada, referenciada en la unidad en la guía instruccional. Si no se hacen
referencias específicas, se recomienda buscar el tema en Internet, a través de un buscador.
9. Ante cualquier duda, consulte con su asesor en su Centro Local.
Plan de curso Computación II - Elaborado por Prof. María E. Mazzei y Nelly Escorcha –
UNA 2015
6
IV. DISEÑO DE LA INSTRUCCIÓN DEL CURSO
Objetivo del curso: Codificar algoritmos, con sentido lógico y coherente, utilizando las estructuras de datos
apropiadas, así como los métodos de clasificación y búsqueda aplicados a la resolución de problemas específicos.
Objetivo
Contenido
1 Elaborar un TAD (Tipo Abstracto de Datos) La abstracción. Modularidad. Tipos abstractos de datos. Uso de tipos de
para representar un dato particular.
datos y estructuras de datos fundamentales: cadenas, arreglos simples y
multidimensionales, registros y conjuntos, punteros o apuntadores.
Orientación a objetos: conceptos.
2 Resolver problemas de tipo algorítmico Especificación formal del TAD Lista. Implementación del TAD Lista con
aplicando el TAD Lista Enlazada.
estructuras dinámicas. Operaciones. Aplicaciones. Listas doblemente
enlazadas. Listas circulares.
3 Resolver problemas de tipo algorítmico Especificación formal del TAD Pila. Implementación de Pilas con
aplicando el TAD Pila y/o el TAD Cola.
Arreglos. Implementación de Pilas con variables dinámicas. Operaciones
Aplicaciones. Especificación formal del TAD Cola y Dipolo o Bicola.
Implementación del TAD Cola o Dipolo con estructuras estáticas y/o
dinámicas. Operaciones. Aplicaciones.
4 Resolver problemas de tipo algorítmico Recursividad: Concepto. Utilidad. Algoritmos típicos. Implementación de
aplicando el TAD Árbol.
procedimientos recursivos.
Concepto de árbol binario. Árboles de Expresión. Construcción.
Recorrido. Aplicaciones. Árbol binario de búsqueda. Operaciones.
5 Implementar algoritmos en lenguaje de Concepto de grafo. Representación del TAD grafo. Matriz de caminos.
programación, a través del empleo de la Algoritmos fundamentales con grafos. Aplicaciones
estructura de grafo para la resolución de
problemas específicos.
6 Implementar algoritmos de Ordenación en Ordenación. Algoritmo de Burbuja. Algoritmo de Inserción. Algoritmo
lenguaje de programación, para la resolución Shell. Algoritmo Quicksort. Algoritmo Heapsort. Binsort y Radixsort.
de problemas específicos.
7 Implementar algoritmos de Búsqueda en Búsqueda. Búsqueda Lineal. Búsqueda Binaria. Hashing. Función de
lenguaje de programación, para la resolución Hashing.
de problemas específicos.
Plan de curso Computación II - Elaborado por Prof. María E. Mazzei y Nelly Escorcha –
UNA 2015
7
OBJETIVO
ESTRATEGIAS INSTRUCCIONALES
Lea en el libro I, el capítulo: “Desarrollo de Software:
Resolución de problemas y desarrollo de software”. Este
capítulo presenta de manera general los principios
fundamentales de la Ingeniería de Software, los cuales están
dirigidos hacia el buen diseño de programas. Este enfoque
permitirá al estudiante comprender la utilidad del correcto
desarrollo del Software, sin importar el lenguaje empleado. Si
utiliza el texto II, lea el capítulo: “Diseño y Análisis de
Algoritmos”.
Repase las instrucciones que se requieren para declarar los
tipos de datos en el lenguaje de programación C++.
Estudie los capítulos del libro I “Abstracción en lenguajes de
programación” “Estructuras de datos C++”.
Practique los ejercicios del libro I para la completa
comprensión del TAD apropiado, según el caso en estudio.
ESTRATEGIAS DE EVALUACIÓN
Producto:
Se
presentarán
situaciones, en donde el estudiante
deberá elaborar un TAD para
representar un tipo de datos,
empleando
el
lenguaje de
programación.
Procedimiento: Se valorará la
correcta elaboración de un TAD
apropiado a la situación.
Instrumento: La realización de este
ejercicio formará parte de una
prueba presencial de desarrollo.
Momento: Primera prueba parcial y
prueba integral.
El tema a estudiar en esta unidad resulta muy intuitivo. La idea de objetos
enlazados o relacionados está presente en la vida real. Piense en
agrupaciones de objetos de algún tipo específico y de las operaciones
posibles para manipularlos.
• Lea el capítulo del libro I:”Listas: Acceso a las Listas”. Si utiliza el texto
II, lea la sección sobre apuntadores y cursores.
2
• Realice los ejemplos presentados y los ejercicios. Como recurso de
Resolver
apoyo para la resolución de los ejercicios, utilice representaciones
problemas
gráficas de las variables tipo puntero. La comprensión de este capítulo
servirá de base para el aprendizaje de los capítulos que siguen.
de tipo
algorítmico • Estudie en el libro I, los capítulos: “Listas enlazadas” y “Listas
aplicando el doblemente enlazadas”, la estructura LISTA o en el libro II, las
secciones sobre “El tipo de datos abstracto LISTA” y “Realización de
TAD Lista
listas”. Si utiliza el texto II, lea las secciones sobre LISTAS y
Enlazada.
Realización de LISTAS.
• Realice los ejercicios relacionados con esta estructura, que incluyan
además listas doblemente enlazadas y listas circulares.
• Elabore algoritmos en seudo-lenguaje que simulen operaciones de listas
de objetos enlazados.
• Realice y pruebe los algoritmos en lenguaje de programación.
Producto: Se propondrán situaciones
prácticas que requieran una solución
algorítmica empleando estructuras de
datos lineales
tipo lista enlazada,
previa definición de estas. También se
plantearán algoritmos que simulen
operaciones con listas enlazadas para
verificar u obtener los resultados a
través de una ejecución en forma
manual.
Procedimiento: Se valorará la correcta
elaboración del TAD Lista Enlazada, el
algoritmo ajustado a la situación, en
términos de su eficacia o la ejecución
del mismo para obtener resultados.
Instrumento: La realización de este
ejercicio formará parte de una prueba
presencial de desarrollo.
Momento: Primera prueba parcial y
prueba integral.
•
1
Elaborar un
TAD (Tipo
Abstracto de
Datos) para
representar
un dato
particular
•
•
•
Plan de curso Computación II - Elaborado por Prof. María E. Mazzei y Nelly Escorcha –
UNA 2015
8
Producto: Se plantearán situaciones
prácticas que requieran una solución
algorítmica empleando estructuras de
datos lineales tipo pila y/o tipo cola,
previa definición de las mismas.
También se propondrán algoritmos que
simulen operaciones con pilas y/o colas
a fin de verificar u obtener resultados en
• Observe objetos que se acumulen en forma de pilas, por ejemplo: una su ejecución manual.
pila de facturas, de exámenes médicos u órdenes de reparación en un
3
Procedimiento: Se valorará la correcta
taller y piense en distintas formas de operar con ellos.
Resolver
problemas de • Estudie el capítulo del libro I titulado: “Pilas”, la estructura PILA o en el elaboración del TAD Pila y/o el TAD
Cola, el
algoritmo ajustado a la
libro II, las secciones relacionadas con PILAS.
tipo
situación,
en
términos
de su eficacia o
• Realice los ejercicios del libro relacionados con operaciones con pilas.
algorítmico
aplicando el • Elabore algoritmos en seudo-lenguaje que simulen operaciones de pilas la ejecución del mismo para obtener
resultados.
de objetos.
TAD Pila y/o
el TAD Cola. • Piense en los distintos tipos de colas que se forman para la solicitud de
Instrumento: La realización de este
servicios.
• Estudie el capítulo del libro titulado: “Colas y colas de prioridades: el TAD ejercicio formará parte de una prueba
presencial de desarrollo.
COLA”, o el libro II, las secciones relacionadas con COLAS.
• Realice los ejercicios del libro relacionados con operaciones con colas.
Momento: Segunda prueba parcial y
• Elabore algoritmos en seudo-lenguaje que simulen operaciones de
prueba integral.
colas. Incluya las colas de prioridades y dipolos.
• Realice y pruebe los algoritmos elaborados en lenguaje de
programación, empleando estructuras estáticas y dinámicas.
El tema a estudiar en esta unidad se refiere a la definición y operación de
pilas (stacks) y de colas. Tanto las pilas como las colas son estructuras
de datos muy empleadas en computación, en diferentes ámbitos. La
representación de las colas resulta muy fácil de entender, debido a la
semejanza que posee con la realidad. Es frecuente ver la formación de
líneas de espera frente a taquillas, cajeros, estaciones de gasolina o
casetas de teléfonos, entre otras.
Plan de curso Computación II - Elaborado por Prof. María E. Mazzei y Nelly Escorcha –
UNA 2015
9
Producto: Se plantearán situaciones
prácticas que requieran una solución
algorítmica empleando estructuras de
datos tipo ÁRBOL, previa definición de
las mismas. También se plantearán
algoritmos
relacionados
con
la
estructura de árbol binario, con el
objeto de obtener resultados a través
o Estudie el capitulo del libro I: “Diseño recursivo de un árbol de de su ejecución manual.
Búsqueda”. Si utiliza el texto II, estudie los procedimientos
Procedimiento: Se valorará la correcta
recursivos.
o Estudie el capítulo del libro I: “Árboles binarios” .Si utiliza el texto elaboración de la estructura de datos,
así como la elaboración del algoritmo
II estudie el capítulo sobre el TDA ARBOL y Árboles Binarios.
ajustado a una situación, en términos
o Halle ejemplos de objetos que puedan considerarse recursivos.
o Implemente algoritmos en lenguaje de programación que puedan de su eficacia. En algunos casos se
realizarse empleando recursividad. Compare con soluciones en valorará la correcta ejecución de un
donde emplee la iteración. Emplee el paquete de Software para algoritmo en forma manual, a fin de
obtener resultados. En cualquiera de
probar estos algoritmos.
o Implemente algoritmos recursivos, en lenguaje de programación, las situaciones que se planteen de
en
adelante
se
exigirá
relacionados con la estructura ARBOL binario. Observe la utilidad aquí
de emplear algoritmos recursivos para operar con un árbol. eventualmente una solución algorítmica
recursiva.
Emplee el paquete de Software para probar estos algoritmos.
o Investigue ejemplos de la vida real que puedan representarse
como árboles. Intente operar sobre ellos, por ejemplo insertando o Instrumento: La realización de este
ejercicio formará parte de una prueba
eliminando nodos.
presencial de desarrollo.
Un objeto recursivo es aquel que forma parte de sí mismo. En la vida real
existen objetos recursivos, por ejemplo, ciertas formas de la naturaleza así
como formas creadas por el hombre, que en matemáticas se conocen
como fractales. En computación un método recursivo es aquel que halla la
solución a través de una secuencia de instancias más pequeñas del
mismo problema. Existen diversos problemas que se resuelven en forma
recursiva.
4
Resolver
problemas de
tipo
algorítmico
aplicando el
TAD Árbol.
Momento: Segunda prueba parcial y
prueba integral.
Plan de curso Computación II - Elaborado por Prof. María E. Mazzei y Nelly Escorcha –
UNA 2015
10
Es frecuente la necesidad de representar objetos que tienen múltiples
relaciones con otros. Los grafos son abstracciones de estas relaciones y
tienen gran aplicabilidad en diversos campos. Los modelos de rutas, las
redes de comunicaciones, los circuitos eléctricos, las relaciones entre
5
Implementar individuos, son ejemplos, en donde los elementos se representan por
algoritmos en puntos y sus relaciones por arcos. Piense en situaciones de este tipo y
lenguaje de represéntelas como indicamos. Lo que resulta es un grafo. Su
programación, representación en el computador es muy intuitiva, como Ud. lo constatará
a través del al estudiar el material instruccional.
empleo de la
estructura de • Estudie en el libro I el capítulo del libro “Representación de los grafos”,
grafo para la
la estructura GRAFO. Si utiliza el texto II, estudie los “GRAFOS dirigidos
resolución de
y no dirigidos, representación”.
problemas
• Investigue ejemplos de la vida real que puedan representarse como
grafos.
específicos.
• Realice e implemente un programa donde se utilicen la representación
de los grafos.
Producto: Implementación de un
programa a través del computador.
Uno de los procesos más utilizados cuando se opera con grupos de
elementos en el computador es la ordenación de estos de acuerdo con
algún criterio. Constantemente requerimos ordenar ascendentemente o
descendentemente un conjunto de elementos para presentar la
información organizada o para facilitar la búsqueda. El estudio de los
6
Implementar algoritmos fundamentales de ordenación proporciona destrezas en la
algoritmos de elaboración de los algoritmos que pretenden resolver situaciones
Ordenación específicas.
en lenguaje
• Estudie en el capítulo del libro Estructuras de Datos en C++, titulado
de
programación, “Operaciones en árbol binario de búsqueda” todas las secciones
relacionadas con la ordenación. Implemente algoritmos de ordenación,
para la
empleando los métodos estudiados. Pruebe ejemplos.
resolución de
problemas
específicos. • Realice comparaciones de los algoritmos estudiados en término de su
eficiencia.
Producto: Implementación de un
programa a través del computador. Se
planteará situaciones prácticas que
requieran una solución empleando al
menos un método de ordenación, a
través de un programa.
Procedimiento: Se valorará la correcta
implementación del programa, así
como la eficacia y la eficiencia de este.
Instrumento: Trabajo práctico.
Momento: Las especificaciones sobre
la realización del trabajo práctico se
entregan en la primera semana de
aplicación de pruebas. El estudiante
consignará el trabajo realizado con la
prueba integral.
Procedimiento: Se valorará la correcta
implementación del programa así como
la eficacia y la eficiencia del mismo.
Instrumento: Trabajo práctico.
Momento: Las especificaciones sobre
la realización del trabajo práctico se
entregan en la primera semana de
aplicación de pruebas. El estudiante
• Realice e implemente un programa empleando algunos de los métodos consignará el trabajo realizado con la
prueba integral.
de ordenación.
Plan de curso Computación II - Elaborado por Prof. María E. Mazzei y Nelly Escorcha –
UNA 2015
11
7
Cuando tenemos un conjunto de elementos ordenados, en muchas
ocasiones necesitamos localizar alguno de ellos, por ejemplo, buscar un
número de cédula de identidad dentro de una lista ordenada para conocer
el nombre asociado u otros datos. El estudio de los algoritmos que
conforman esta unidad es fácil de comprender, debido a la semejanza que
existe entre ellos y la realidad.
Implementar
algoritmos de
• Estudie en el capítulo del libro “I titulado “Árboles de búsqueda
Búsqueda en
equilibrados” todas las secciones relacionadas con la búsqueda y en el
lenguaje de
capítulo del libro titulado “Tabla de dispersión, funciones hash”.
programación,
para la
• Implemente algoritmos basados en los diferentes métodos analizados.
resolución de
problemas
• Realice comparaciones de los algoritmos estudiados en término de su
específicos.
eficiencia.
Producto: Implementación de un
programa a través del computador. Se
plantearán situaciones prácticas que
requieran una solución empleando al
menos un método de búsqueda, a
través de un programa.
Procedimiento: Se valorará la correcta
implementación del programa así como
la eficacia y la eficiencia del mismo.
Instrumento: Trabajo práctico
Momento: Las especificaciones se
entregan la primera semana de
aplicación de pruebas. El estudiante
• Realice e implemente un programa empleando algunos de los métodos entregará el trabajo resuelto con la
de Búsqueda.
prueba integral.
Plan de curso Computación II - Elaborado por Prof. María E. Mazzei y Nelly Escorcha –
UNA 2015
12
V. BIBLIOGRAFÍA
Obligatoria
Joyanes, L., y Sánchez L. (2007). Estructuras de Datos en C++. Madrid. Mc. Graw Hill.
Mazzei M., Escorcha N. (2015) Computación II Guía Instruccional. en plan piloto.
Complementaria
Aho, A., Hopcroft, J. E., y Ullman, J. D. (1998). Estructuras de datos y algoritmos. México.
Addison Wesley Longman.
Cairó, O., y Guadarti, S. (2001). Estructuras de Datos. México. Mc Graw Hill.
Joyanes, L. (2003). Programación en C++ Madrid. Mc Graw Hill.
Kolman, B., Busby, R. C. y Ross, S. (1997). Estructuras de Matemáticas Discretas para la
Computación. México. Prentice-Hall Hispanoamericana S.A.
Ruiz, A., y Chacón, C. R. (1987). Procesamiento de Datos I. Caracas.
Plan de curso Computación II - Elaborado por María E. Mazzei y Nelly Escorcha UNA 2015