FACULTAD DE INGENIERIA CARRERA DE INGENIERIA DE SISTEMAS SILABO DEL CURSO ALGORITMOS Y ESTRUCTURAS DE DATOS 1 1. DATOS GENERALES 1.1. Facultad : Ingeniería 1.. Carrera Profesional : Ingeniería de Sistemas 1.3. Departamento : Ingeniería de Sistemas 1.4. Tipo de Curso : Obligatorio 1.5. Requisito : Fundamentos de Programación 1.6. Ciclo de estudios : 1.7. Duración del curso : 18 semanas Inicio : 17 de Marzo de 008 Término : 19 de Julio de 008 1.8. Extensión Horaria : 5 horas semanales (03 Teoría, 0 Laboratorio) 1.9. Créditos : 4 1.10. Periodo lectivo : 008-1 1.11. Docente : César Liza Avila cla@upnorte.edu.pe creadores@hotmail.com www.geocities.com/cesar_liza www.cesarliza.com. FUNDAMENTACIÓN El curso de Algoritmos y Estructuras de Datos 1, es un curso de formación en programación de computadoras. A través de él, se desea formar en los alumnos el criterio de razonamiento lógicomatemático, que les ayudará más tarde a desarrollar aplicaciones avanzadas de programación. El curso se desarrollará de manera teórico-práctica, con el objeto de proveer a los alumnos los conocimientos de programación que les permitan diseñar, implementar y comprobar el buen funcionamiento de sus algoritmos, empleando el Lenguaje C++. Este curso servirá de base para el curso de Algoritmos y Estructuras de Datos, así como al curso de Programación Orientada a Objetos. 3. COMPETENCIA Los alumnos al terminar el curso serán capaces de implementar algoritmos en Lenguaje C++, real una aplicación, utilizando los diferentes contenidos del curso. En esta aplicación hará uso de su capacidad lógica, habilidad y destrezas para resolver un caso real. 4. OBJETIVOS DEL CURSO Los alumnos al finalizar el curso deberán estar en condiciones de: 4.1 Implementar algoritmos en un lenguaje de programación. 4. Lograr un conocimiento amplio de un lenguaje de programación de nivel medio (cercano a la máquina y al humano) para realizar aplicaciones profesionales. 4.3 Implementar programas eficientes, con criterio de calidad y buen estilo, basados en los conceptos de programación estructurada. 4.4 Desarrollar habilidades y destrezas para resolver problemas con ayuda de la computadora. 5. CONTENIDOS CONCEPTUALES 5.1 Funciones estándar y funciones definidas por el usuario 5. Arreglos Unidimensionales y Bidimensionales 5.3 Cadenas de caracteres 5.4 Estructuras Uniones y enumeraciones
5.5 Manipulación de bits. 5.6 Generación de números aleatorios 5.7 Punteros y referencias 5.8 Archivos 6. CONTENIDOS PROCEDIMENTALES 6.1 Conoce e investiga los conceptos de un lenguaje de programación 6. Realizan y proponen ejemplos utilizando las estructuras vistas en clase 6.3 Conoce e Investiga las estructuras vistas en clase 6.4 Proponer una aplicación de las estructuras tratadas en el curso. 7. CONTENIDOS ACTITUDINALES 7.1 Responsabilidad Individual y Colectiva 7. Disposición a la Investigación y a la búsqueda de Información Adicional 7.3 Actitud analítica y lógica en la solución de los problemas propuestos 7.4 Disposición al trabajo en equipo 7.5 Disposición a ser reflexivos y creativos 8. METODOLOGÍA GENERAL DEL CURSO 8.1 Intervenciones en clase, como medio para que el alumno aplique e investigue los conocimientos recibidos. 8. Se tomarán prácticas calificadas y pruebas individuales en clase, como medio para que el alumno aplique los conocimientos recibidos, como entrenamiento para el examen y como medio para ir midiendo sus logros académicos de manera continua. 8.3 Practica calificada individual en Laboratorio, como medio para que el alumno aplique los conocimientos recibidos en clase, como entrenamiento para el examen y como medio para ir midiendo sus logros académicos de manera continua. En esta práctica, recibirá la atención del docente, como facilitador y guía de la práctica. 8.4 Desarrollo y exposición de trabajos, como medio para que los alumnos aplique los conocimientos recibidos en clase, así como encontrar la madurez para aplicar estos conocimientos a un caso real. En estos trabajos recibirá la asesoría y guía del docente. 9. PROGRAMACION Unidad Sem. Contenidos 1. Funciones definidas por el usuario 1 Identificadores y tipos fundamentales de datos. Entrada y salida estándar. Modificadores de tipos. Operador Sizeof(). Repaso de las sentencias. Expresiones lógicas y de relación. La sentencia if, if else, if else if. El operador ternario. La sentencia switch. while, do { } while y for. Ejemplos Diversos. Funciones definidas por el usuario. Declaración prototipo. Paso de Parámetros y devolución de valores. Llamadas a funciones, Paso de parámetros por valor y referencia, Variables locales y globales Ejemplos Diversos. El preprocesador. Directivas del preprocesador. Definición de macros. Funciones matemáticas estándar. [3] Cap 3, 4, [1] Cap 7, 8.. Cadenas de 3 Tabla de Códigos ASCII y Tabla Unicode. Secuencia de scape o caracteres de control. Ejercicios usando cadenas.
caracteres 3. Arreglos bidimensionale s y n dimensionales 4. Estructuras, uniones y enumeraciones 5. Manipulación de Bits. (01 semana) 4 Manejo de cadenas de caracteres, definición, el archivo string.h, El terminador NULL. Principales funciones predefinidas. Paso y devolución de cadenas como argumentos de funciones. Ejemplos diversos. Los comandos gets, cin, cin.getline. [3] Cap. 5, 18 [] Cap 1 5 Arreglos bidimensionales o matrices, Definición, límites, tamaño del arreglo, paso de arreglos bidimensionales a funciones. Ejemplos diversos. 6 Ejercicios sobre matrices, suma, producto, inversa, solución de ecuaciones simultáneas. Arreglos n-dimensionales. Definición, límites, tamaño del arreglo, paso de arreglos a funciones. Ejemplos diversos. [] Cap 7 Estructuras: definición, declaración de estructuras, declaración de nuevos tipos de datos typedef, operaciones con estructuras, arreglos de estructuras. 8 Concepto de unión. Declaración de unión, usos, asignación en memoria de una variable de tipo unión. Enumeraciones. Declaración y usos. Ejemplos Diversos. [3]Cap 18. [] Cap 3. 9 Examen de Medio Ciclo 10 Manejo de bits, operadores a nivel de bits, and, or xor, not, desplazamiento. Campos de Bits. Aplicaciones. Ejemplos Diversos. [] Cap 4 [3] Cap. 18 11 Métodos para generar números aleatorios continuos y discretos, la función rand( ). Semilla de un generador de números aleatorios. Función srand( ), generación de variables aleatorias que cumplen una determinada distribución: Uniforme, Normal, Exponencial, Poisson. 6. Generación de números aleatorios y simulación (01 semana) 7. Punteros y Referencias 8. Archivos 9. Uso de funciones predefinidas diversas [] Cap 5 1 Punteros, Declaración de punteros, operadores *, &, asignación, operaciones aritméticas, comparación de punteros. Punteros a cadenas. Ejemplos diversos. 13 Arreglos de punteros, punteros de punteros, punteros a funciones. Punteros a estructuras, referencias, declaración, usos, ventajas frente a los punteros. Ejemplos diversos. [] Cap 6 [3] Cap. 5 14 Archivos, funciones para manipular ficheros. Modos de apertura de archivos, entrada salida carácter por carácter, palabra por palabra. Desplazamiento dentro de un archivo, fseek, ftell. Posición actual dentro de un archivo. Ejemplos diversos. 15 Entrada y salida por cadenas de caracteres, con formato, bloques de caracteres o registros. Acceso aleatorio a un fichero. Ejemplos diversos. [] Cap 7 16 Funciones de hora, fecha, funciones de directorio, funciones variadas. Funciones time( ), cdate( ), archivos time.h, dos.h Aplicaciones diversas. Resumen del curso. (01 semana) [5] Cap. 19, 1 y. 17 EXAMEN FIN DE CICLO 18 EXAMEN SUSTITUTORIO
10. SISTEMA DE EVALUACION DEL CURSO El cronograma de la evaluación continua del curso es el siguiente: ESPECIFICACIÓN DE NOTAS DE TRABAJOS T Descripción: Sem. T1 Práctica de laboratorio 1: Funciones Práctica de laboratorio : Funciones y vectores Práctica de laboratorio 3: Cadenas de caracteres 1 Lab1 + Lab + Lab3 T1 = --------------------------- T Práctica de laboratorio 4: Cadenas de caracteres Práctica de laboratorio 5: Arreglos bidimensionales 1 Práctica de laboratorio 6: Arreglos bidimensionales (con cadenas) 1 3 4 5 6 T3 Lab4 + Lab5 + Lab6 T = -------------------------- Descripción: Práctica de laboratorio 7: Estructuras Práctica de laboratorio 8: Uniones y Enumeraciones Práctica de laboratorio 10: Manipulación de bits 7 8 10 Lab7 + Lab8 + Lab10 T3 = ---------------------------- T4 Práctica de laboratorio 11: Generación de Números Aleatorios Práctica de laboratorio 1: Punteros y referencias 1 Práctica de laboratorio 13: Punteros y referencias 11 1 13 Lab11 + Lab1 + Lab13 T4 = -------------------------------- T5 Práctica de laboratorio 14: Archivos 1 Práctica de laboratorio 15: Archivos Práctica de laboratorio 16: Funciones Fecha, hora, diversas 14 15 16 Lab14 + Lab15 + Lab16 T5 = -------------------------------- (*) La práctica del Laboratorio 9, es parte del examen de medio ciclo El peso de cada T es: EVALUACIÓ ESCALA PESO (%) N VIGESIMAL T01 10 1, T0 15 1,8 T03 0,4 T04 5 3,0 T05 30 3,6 TOTAL 100% 1
Los pesos ponderados de las clases de evaluación son los siguientes: EVALUACIÓN PESO (%) ESCALA VIGESIMAL PARCIAL 0 4 CONTINUA 60 1 FINAL 0 4 TOTAL 100% 0 La Evaluación Sustitutoria evalúa toda la temática desarrollada en el semestre y se rinde la semana consecutiva al término de los exámenes finales y su nota reemplazará, necesariamente, a la nota de un Examen (Parcial o Final) o a la nota de un T (Evaluación Continua), de tal manera que el resultado final sea favorable al alumno. 11. BIBLIOGRAFIA OBLIGATORIA Nro Código Autor Descripción 1 005.73 / L73 CESAR LIZA AVILA. Algoritmos y su Codificación en C++. Editorial RJ, Trujillo-Perú. 1ra Edición Marzo de 000, 3ra reimpresión Diciembre de 003. 005.73/L73/ CESAR LIZA AVILA. Algoritmos y su Codificación en C++. Volumen. Editorial RJ, Trujillo-Perú. 1ra Edición Agosto de 00. 3 005.76 / D46-003 DEITEL Y DEITEL. Cómo Programar en C++. Pearson Educación. México, 003. 4 005.1 / S35 ROBERT SEDGEWICK. Algoritmos en C++, Addison Wesley/Diez de Santos. USA, 1995. 5 SCHILDT, Herbert. Turbo C/C++, Manual de Referencia. Ed. McGraw- Hill. México da. Ed. 1991. 6 Internet CESAR LIZA AVILA. www.geocities.com/cesar_liza y www.cesarliza.com COMPLEMENTARIA Nro Código Obra 7 005.6 / HERBERT SCHILDT. Programación en Lenguaje C. McGraw-Hill, México, S31 1988. 8 005.73 / J79-003 LUIS JOYANES AGUILAR. Algoritmos, Estructuras de Datos y Objetos. McGraw-Hill, España, 003. 9 005.11 / J79 LUIS JOYANES AGUILAR. Problemas de Metodología de la Programación. McGraw-Hill, España, 1990.