You are on page 1of 7

PROGRAMACIÓN Y ESTRUCTURA DE DATOS

Inicio: 19 de febrero
Término: 23 de marzo
Horario: 6:00 a 8:00 p.m.
grupo: 4º. Semestre de IIS
UNIVERSIDAD AUTONOMA DEL NORESTE
CONTENIDO PROGRAMATICO DE LA MATERIA :
CM-315 PROGRAMACION Y ESTRUCTURAS DE DATOS
______________________________________________________________________________
__

REVISIÓN : ENERO 2001

Diseño Curricular Basado en la Competencia

Un Programa Basado en la Competencia, es aquél en el que las


metas de realización del estudiante son especificadas y acordadas
en riguroso detalle antes de la instrucción; entendiéndose por
COMPETENCIA, el conjunto de conocimientos, técnicas y habilidades
que adquiere el estudiante durante su programa de estudios para
asumir un rol profesional.

DATOS DE IDENTIFICACION:

Materia: PROGRAMACION Y ESTRUCTURAS DE DATOS


Clave: CM-315
Carrera en la que se imparte: IIS.
Duración: 50 HORAS
Competencia Principal: Conceptual, Metodológica, Humana.
Nivel de Aprendizaje: Familiaridad, Comprensión, Aplicación.

EVALUACION DE NECESIDADES:

La Programación de computadoras es la actividad sustantiva de la


creación de software; ya que es a través de un programa
ejecutable como el dispositivo electrónico adquiere la capacidad
de realizar tareas "inteligentes".

Para la elaboración de programas de computadora, el profesionista


de desarrollo de sistemas debe poseer habilidades de raciocinio
que le permitan comprender analíticamente un problema, así como
el dominio de herramientas lógicas para plantear, evaluar,
desarrollar y optimizar la propuesta de solución.

Durante las asignaturas prerequisito, el alumno de LDSEI adquirió


las competencias afines al análisis y comprensión de problemas,
orientadas a la resolución por medio de programas de computadora,
así como el manejo de C++.

Durante esta asignatura, el alumno se enfocará a conocer y


ejercitar conceptos de programación de mayor complejidad, con el
propósito de fortalecer su capacidad de raciocinio y su dominio
sobre un lenguaje procedural.

Cabe reiterar que si bien el lenguaje seleccionado para la


asignatura es C++, no es con la finalidad de convertir al
alumno en usuario cautivo de este lenguaje; sino que C++ sirva
solamente como un recurso para que el estudiante domine la
filosofía del lenguaje procedural y del diseño modular; y
desarrolle un estilo elegante de programación.

ESPECIFICACION DE COMPETENCIAS:

El alumno adquirirá Competencias para:

1. Comprender los conceptos básicos de la Ingeniería de Software


y enunciar los conceptos de abstracción, ocultamiento y
encapsulamiento de datos.

2. Explicar las características que determinan al Software de


Calidad, e identificar programas elaborados sin estas
cualidades.

3. Analizar la información involucrada en un problema y definir


los niveles de la estructura de datos.

4. Apreciar las ventajas de los lenguajes que permiten la


elaboración de procedimientos definidos por el programador.

5. Apreciar las ventajas de los lenguajes que permiten el uso de


tipos de datos definidos por el programador.

6. Elaborar programas en base a un diseño descendente,


desarrollando procedimientos definidos por el programador.

7. Explicar el funcionamiento de tablas de una a tres


dimensiones. Diseñar y elaborar programas en base a
procedimientos, que permitan manejar datos dentro de las
tablas.

8. Explicar el concepto de registro y archivo. Diseñar y


elaborar programas en base a procedimientos, que permitan
manejar información organizada en archivos de texto y
archivos binarios.

9. Explicar el funcionamiento de pilas (LIFO) y colas (FIFO).


Diseñar y elaborar programas en base a procedimientos, que
permitan manejar datos organizados en pilas y colas.

10. Explicar el funcionamiento de listas lineales y circulares,


enlazadas y doblemente enlazadas. Diseñar y elaborar
programas en base a procedimientos, que permitan manejar
información organizada en listas lineales y circulares,
enlazadas y doblemente enlazadas.
CONTENIDO CURRICULAR:

I. DISEÒO DE PROGRAMAS.
1. Introducción a la Ingeniería de Software.
a. Concepto y objetivos de la Ingeniería de Software.
b. Características e importancia del Software de Calidad.
c. Consecusión del Software de Calidad.
2. Abstracción, Ocultamieno y Encapsulamiento de Datos.
a. Definición y conceptos.
b. Aplicación e importancia en la Ingeniería de Software.
3. Diseño de datos.
a. Estructuras de datos.
b. Niveles dentro de una estructura de datos.
- Nivel de Aplicación.
- Nivel Lógico ( o Abstracto ).
- Nivel de Implementación.
- Interrelación entre niveles.
4. Diseño descendente de programas.
a. Concepto de modularidad.
b. Afinidades entre el esquema modular y el lenguaje
procedural.
c. Diseño de programas modulares.

II. PROCEDIMIENTOS Y FUNCIONES DEFINIDAS POR EL USUARIO.


1. Estructura de un procedimiento ( o función ) definido
por el usuario.
2. Aplicaciones de los procedimientos ( o funciones )
definidos por el usuario.
3. Parámetros de procedimiento ( o función ) definido por
el usuario.
a. Parámetros por referencia.
b. Parámetros por valor.

III. TIPOS DE DATOS DEFINIDOS POR EL USUARIO.


1. Tipos escalares.
2. Tipos enumerados.
3. Tipos ordinales.
a. Funciones para tipos ordinales
- ORD(), PRED(), SUCC().
4. Tipos subrangos.
5. Compatibilidad.
a. Requisitos para definir tipos compatibles.

IV. PROGRAMACION DE ESTRUCTURAS ESTATICAS.


1. Tablas unidimensionales (vectores).
a. Operaciones con un vector ( introducir, extraer,
recorrer, buscar, etc.).
2. Tablas bidimensionales (matrices).
a. Operaciones con una matriz ( introducir, extraer,
recorrer, buscar, etc.).
3. Tablas multidimensionales.
a. Operaciones con un cubo ( introducir, extraer,
recorrer, buscar, etc.).
V. REGISTROS.
1. Concepto de registro.
2. Elementos de un registro.
a. Definición de campo de registro.
b. Similitudes y diferencias de una variable y un campo
de registro.
3. Declaración de registros en la sección TYPE.
4. Tablas de registros.
a. Vectores.
- Operaciones con un vector de registros (introducir,
extraer, recorrer, buscar, etc.).
b. Matrices.
- Operaciones con una matriz de registros (introducir,
extraer, recorrer, buscar, etc.)
c. Cubos.
- Operaciones con un cubo de registros (introducir,
extraer, recorrer, buscar, etc.).

VI. ARCHIVOS.
1. Archivos de Texto.
a. Características del archivo de texto.
b. Declaración de archivos de texto.
- Tipo TEXT.
c. Estructura de un archivo de texto.
- Conceptos de caracter, línea de texto, fin de línea,
fin de archivo.
d. Creación y regeneración de archivos de texto.
- Procedimientos REWRITE(), RESET(), CLOSE().
e. Escritura y lectura sobre un archivo de texto.
- Procedimientos WRITELN(), READLN(), WRITE(), READ().
2. Archivos binarios.
a. Características del archivo binario.
b. Declaración de archivos binarios.
- Tipo FILE OF.
c. Estructura de un archivo binario.
- Conceptos de Campo, Registro y Archivo.
d. Creación y regeneración de archivos binario.
- Procedimientos REWRITE(), RESET(), CLOSE().
e. Escritura y lectura sobre un archivo binario.
- Procedimientos WRITE(), READ(), DISPOSE(), GET(),

PUT(), NEW(), SEEK().

VII. PROGRAMACION DE ESTRUCTURAS DINAMICAS.


1. Pilas (LIFO).
a. Definición de una pila y características de
llenado/vaciado de datos (Last In, First Out).
b. Operaciones con pilas.
- Implementación de una pila con una tabla.
- Operaciones con una lista enlazada (introducir,
extraer, recorrer, buscar, etc).
- Carga de datos desde un archivo a una pila y
viceversa.
2. Colas (FIFO).
a. Definición de una Cola y características de
llenado/vaciado de datos (First In, First Out).
b. Operaciones con Colas.
- Implementación de una Cola con una tabla.
- Operaciones con una lista enlazada (introducir,
extraer, recorrer, buscar, etc.).
- Carga de datos desde un archivo a una cola y
viceversa.

VIII. LISTAS.
1. Definición de Lista.
2. Componentes de una lista.
a. Nodos.
b. Punteros.
c. Cabeceras y finales.
3. Listas lineales.
a. Enlazadas.
- Definición y funcionamiento de una lista enlazada.
- Operaciones con una lista enlazada (introducir,
extraer, recorrer, buscar, etc.).
b. Doblemente enlazadas.
- Definición y funcionamiento de una lista doblemente
enlazada.
- Operaciones con una lista doblemente enlazada
(introducir, extraer, recorrer, buscar, etc).
4. Listas circulares.
a. Enlazadas.
- Definición y funcionamiento de una lista circular
enlazada.
- Operaciones con una lista circular enlazada
(introducir, extraer, recorrer, buscar, etc.).
b. Doblemente enlazadas.
- Definición y funcionamiento de una lista circular
doblemente enlazada.
- Operaciones con una lista circular doblemente
enlazada (introducir, extraer, recorrer, buscar,
etc).
5. Carga de datos desde un archivo a una lista y viceversa.

IX. EJERCICIOS DE PROGRAMACION.

METODOLOGIA PARA EL LOGRO DE LAS COMPETENCIAS:

La programación en un lenguaje procedural debe constituirse en un


conocimiento plenamente significativo para el alumno; y esto
requiere de explicaciones exahustivas y minuciosas por parte del
profesor, reiterando, detallando e ilustrando con ejemplos hasta
lograr una comprensión total por parte del alumno.

El profesor debe demostrar no sólo los resultados de un programa,


sino el funcionamiento detallado de sus enunciados y estructuras;
para ello, dispone tanto de los diagramas de flujo como de la
prueba de escritorio.

El desarrollo en el educando de la capacidad de comprender un


problema y proponer una solución a través de un programa de
computadora, sólo se puede lograr mediante una práctica
exahustiva, que, así como despierte y/o fortalezca las
habilidades de raciocinio del estudiante también le brinde
dominio de un lenguaje procedural; por lo cual, esta asignatura
requiere un planteamiento equilibrado entre las exposiciones del
profesor y las intervenciones del alumno dentro de la clase. La
metodología de trabajo debe conformarse entonces con:

a. Exposición de conceptos por parte del profesor. Auxiliándose


siempre en apoyos didácticos (pizarrón, rotafolio, acetatos).

b. Ejercicios resueltos por el profesor ante el grupo,


explicando detalladamente cada uno de los pasos y realizando
la prueba de escritorio correspondiente.

c. Ejercicios resueltos por el alumno ante el grupo; con la


orientación y apoyo del profesor, e incluyendo ineludiblemen-
te la demostración a través de la prueba de escritorio.

d. Ejercicios resueltos por el alumno a modo de tarea, siempre


acompañados de la prueba de escritorio correspondiente. En
este caso, es importante que el profesor revise los trabajos
considerando que es más importante brindar retroalimentación
oportuna al alumno que asignarle una calificación.

La participación de los alumnos debe ser cotidiana y exahustiva;


pero siempre para practicar y resolver ejercicios con la
orientación del profesor. La exposición de temas es responsabili-
dad absoluta del catedrático, y de ningún modo deben participar
educandos en el proceso de impartir nuevos conocimientos al grupo.

Por esto mismo, y para evitar que el alumno se limite a copiar


mecánicamente renglones del pizarrón a la computadora, esta
materia se debe impartir íntegramente en el salón de clases. El
profesor debe dejar tareas, trabajos y prácticas ( con carácter
de obligatorios ) en la computadora para que los alumnos los
desarrollen en el Centro de Cómputo Académico, fuera de su
horario de clase.

En los libros incluidos en la bibliografía se proponen abundantes


ejercicios; sin dejar de considerar, desde luego, aquellos que el
profesor incluya en su acervo personal.

EVALUACION DE LAS COMPETENCIAS:

Esta asignatura tiene la finalidad de formar competencias


eminentemente prácticas; esto es, el alumno debe aprender a usar
herramientas que le permitan obtener resultados precisos y
concretos.

El Centro de Cómputo Académico no es una extensión del salón y no


debe considerarse para la impartición de clases. Sin embargo, la
práctica en un ambiente real es fundamental para el logro de las
competencias, y por lo mismo, el profesor debe asegurarse que el
alumno se ejercite mediante tareas y trabajos a realizar fuera
del horario de clases.
La evaluación de competencias debe servirle al profesor, más que
como un generador de calificaciones, como un indicador del grado
en que los educandos desarrollan el uso de la lógica en la
resolución de problemas; por lo que la evaluación debe ser un
proceso cotidiano.

La participación del alumno en clase (resolviendo problemas) y en


actividades fuera del salón (tareas y trabajos); es tan
importante como la atención y retroalimentación que proporcione
el profesor.

Una alternativa para permitir al profesor evaluar con más


claridad el nivel de asimilación de cada uno de los alumnos, así
como los puntos inciertos que pudiera tener, es acostumbrar a los
estudiantes a pasar al frente del grupo a elaborar un programa
completo y explicar posteriormente a sus compañeros su funciona--
miento mediante una prueba de escritorio. Se puede complementar
la dinámica si se induce al grupo a detectar errores y/o proponer
mejoras al trabajo expuesto.

Los puntos que el profesor debe considerar para calificar al


alumno son:

a. Participación activa en clase.

b. Tareas y trabajos.

c. Exámenes parciales y examen final.

Con el propósito de desarrollar en los educandos buenos hábitos


para trabajar, así como un estilo pulcro y ordenado de
programación, el profesor debe considerar para la calificación de
cada ejercicio los siguientes aspectos:

a. Análisis del problema. El alumno debe desarrollar y presentar


el diseño modular descendente de cada programa, junto con los
algoritmos correspondientes.

b. Formateo y documentación interna. El programa fuente debe


estar correctamente indentado y con comentarios que faciliten
su interpretación.

c. Funcionalidad correcta del programa. El programa ejecutable


debe funcionar y proporcionar los resultados esperados.

BIBLIOGRAFÍA:

Bronson, Gary J. C++ para ingeniería y ciencias. Thomson.

Alcalde, E. ; García, M. Metodología de la Programación.


2¦ Edición. Editorial: McGraw-Hill. Serie Informática de Gestión.

PROGRAMA ELABORADO POR:

Dirección Académica de Ingenierías.