FACULTAD DE SISTEMAS Y TELECOMUNICACIONES PROGRAMA ANALÍTICO MATERIA CODIGO PRE-REQUISITOS PERIODO LECTIVO HORAS PRESENCIALES PROGRAMACIÓN I COM 200 CREDITOS 4 COM 110 FUNDAMENTOS DE PROGRAMACIÓN Semestre Clases 64 horas 1. DESCRIPCIÓN COM 200– Programación I. El desarrollo siempre ascendente del software dio origen a la programación orientada a objetos. La orientación a objetos es una forma natural de pensar en relación con el mundo y de escribir programas para las computadoras que establecen un nuevo paradigma de la programación, producto de la evolución natural de la misma. La clave de la POO es encontrar características comunes entre entidades implicadas en el problema y crear estructuras de datos que capturen esas características comunes. 2. OBJETIVOS 2.1. General Modelar situaciones del mundo real aplicando los conceptos de la programación orientada a objetos para la solución de problemas prácticos. 2.2. Específicos Establecer las relaciones entre clases mediante el uso de patrones de asignación de responsabilidades para modelar situaciones problémicas. Aplicar las propiedades de encapsulamiento, herencia y polimorfismo a la solución de problemas prácticos. Diseñar soluciones informáticas aplicando las bibliotecas que brinda el editor de C++. Implementar modelos que dan solución a situaciones del mundo real empleando un lenguaje de programación orientado a objetos. 1/8 Desarrollar aplicaciones informáticas mediante el uso de técnicas que garanticen robustez, flexibilidad y modularidad. 3. COMPETENCIAS Determina las diferentes relaciones entre clases presentes en un problema. Desarrolla pequeñas aplicaciones donde se implementen las relaciones entre clases y la sobrecarga de métodos. Manipula arreglos de objetos implementando algoritmos básicos. Aplica los conceptos de la herencia y el polimorfismo en la modelación de problemas prácticos. Utiliza las técnicas de tratamiento de errores y excepciones en la solución de problemas. 4. RESULTADOS APRENDIZAJE Elabora programas secuenciales y con bifurcación que cumplen objetivos específicos. Diseña programas óptimos con los conceptos de orientación a objetos. 5. METODOLOGÍA La metodología utilizada en la materia de Programación I, estará basada en los conceptos generales de la Programación Orientada a Objetos donde se utilizará el Lenguaje de Programación C++, esta materia se desarrollará en forma de talleres y prácticas de laboratorio, en conjunto de otros materiales didácticos permitirá que los estudiantes alcancen los objetivos planteados. Sin embargo, las metodologías que se aplicarán tendrán algunos aspectos comunes, los cuales se derivan del modelo constructivista social, en el cual se basa el Modelo Educativo de la Universidad Ecotec. Por esta razón se privilegian los métodos participativos y entre ellos el de casos, combinándose con otros métodos activos, como el de juegos de roles, el problémico, lluvia de ideas, entre otros, favoreciendo de manera sistemática la interacción de los estudiantes en grupos, siguiendo los principios del aprendizaje cooperativo (colaborativo), con el fin de desarrollar la competencia de trabajo en equipo. En este enfoque metodológico el docente actúa como un facilitador, que explora los conocimientos previos que tienen los estudiantes sobre el tema y guía la construcción de los conocimientos de manera individual y en grupos, vinculando de manera sistemática la práctica con la teoría. Se refuerza la relación de la teoría con la práctica y las habilidades de los estudiantes de desarrollar sus propias ilustraciones gráficas. 2/8 Descripción del tipo de trabajos requeridos Cada semana se enviarán trabajos personales o grupales para el desarrollo de actividades complementarias a las clases, los talleres serán prácticas individuales, y grupos de trabajo tanto en clase como externos no serán de más de tres participantes. Los trabajos se recogerán la primera sesión de cada semana, y deberán ser subidos al Atrium en la sesión TAREAS, no se aceptan trabajos realizados a mano, los trabajos obligatoriamente deberán ser desarrollados en computadora, por lo cual los alumnos deben manejar las herramientas ofimáticas. Los trabajos de investigación, serán entregados de acuerdo a las normas señaladas en el Aula Virtual. La redacción de los documentos, en cuanto a formato, letra, citas y la bibliografía, se realizará según las NORMAS APA. Los trabajos enviados deberán ser presentados con una introducción, desarrollo, conclusiones y bibliografía, con la carátula determinada por universidad y ser ingresados desde el atrium en la opción de tareas. 6. CONTENIDO PROGRAMÁTICO UNIDAD 1: INTRODUCCIÓN A LA PROGRAMACIÓN EN C++ 1.1. Lenguajes máquina, lenguajes ensambladores y lenguajes de alto nivel 1.2. Historia de C y C++ 1.3. Biblioteca estándar de C++ 1.4. Tendencia clave de software: la tecnología de los objetos 1.5. Entorno de desarrollo típico en C++ UNIDAD 2: INTRODUCCIÓN A LAS CLASES Y LOS OBJETOS 2.1. Introducción 2.2. Clases, objetos, funciones miembro y miembros de datos 2.3. Definición de una clase con una función miembro 2.4. Definición de una función miembro con un parámetro 2.5. Miembros de datos, funciones establecer y funciones obtener 2.6. Inicialización de objetos mediante constructores 2.7. Colocar una clase en un archivo separado para fines de reutilización 2.8. Separar la interfaz de la implementación 2.9. Validación de datos mediante funciones establecer UNIDAD 3: INSTRUCCIONES DE CONTROL 3.1. Introducción 3.2. Algoritmos y Pseudocódigo 3.3. Estructuras de control 3.4. Instrucción de selección if 3.5. Instrucción de selección doble if...else 3.6. Instrucción de repetición while 3.7. Cómo formular algoritmos: repetición controlada por un contador 3.8. Cómo formular algoritmos: repetición controlada por un centinela 3.9. Cómo formular algoritmos: instrucciones de control anidadas 3.10. Operadores de asignación 3.11. Operadores de incremento y decremento 3/8 3.12. 3.13. 3.14. 3.15. 3.16. 3.17. Fundamentos de la repetición controlada por contador Instrucción de repetición for Instrucción de repetición do...while Instrucción de selección múltiple switch Instrucciones break y continue Operadores lógicos UNIDAD 4: FUNCIONES Y RECURSIVIDAD 4.1. Introducción 4.2. Componentes de los programas en C++ 4.3. Funciones matemáticas de la biblioteca 4.4. Definiciones de funciones con varios parámetros 4.5. Prototipos de funciones y sus argumentos 4.6. Archivos de encabezado de la Biblioteca estándar de C++ 4.7. Clases de almacenamiento 4.8. Reglas de alcance 4.9. La pila de llamadas a funciones y los registros de activación 4.10. Funciones con listas de parámetros vacías 4.11. Funciones en línea 4.12. Referencias y parámetros de referencias 4.13. Argumentos predeterminados 4.14. Operador de resolución de ámbito unario 4.15. Sobrecarga de funciones 4.16. Plantillas de funciones 4.17. Recursividad 4.18. Comparación entre recursividad e iteración UNIDAD 5: ARREGLOS Y VECTORES 5.1. Introducción 5.2. Arreglos 5.3. Declaración y creación de arreglos 5.3.1. Declaración de un arreglo y uso de un ciclo para inicializar los elementos del arreglo 5.3.2. Inicialización de un arreglo en una declaración mediante una lista inicializadora 5.3.3. Especificación del tamaño de un arreglo con una variable constante 5.4. Establecimiento de los elementos de un arreglo con cálculos 5.4.1. Suma de los elementos de un arreglo 5.4.2. Uso de gráficos de barra para mostrar los datos de un arreglo en forma gráfica 5.4.3. Uso de los elementos de un arreglo como contadores 5.4.4. Uso de arreglos para sintetizar los resultados de una encuesta 5.4.5. Uso de arreglos tipo carácter para almacenar y manipular cadenas 5.4.6. Arreglos locales estáticos y arreglos locales automáticos 5.5. Paso de arreglos a funciones 5.6. Búsqueda de datos en arreglos mediante la búsqueda lineal 5.7. Ordenamiento de arreglos mediante el ordenamiento por inserción 5.8. Arreglos multidimensionales 5.9. Introducción a la plantilla de clase vector de la Biblioteca estándar de C++ UNIDAD 6: APUNTADORES Y CADENAS BASADAS EN APUNTADORES 6.1. Introducción 6.2. Declaraciones e inicialización de variables apuntadores 6.3. Operadores de apuntadores 6.4. Paso de argumentos a funciones por referencia mediante apuntadores 6.5. Uso de const con apuntadores 4/8 6.6. Ordenamiento por selección mediante el uso del paso por referencia 6.7. Operador sizeof 6.8. Expresiones y aritmética de apuntadores 6.9. Relación entre apuntadores y arreglos 6.10. Arreglos de apuntadores 6.11. Apuntadores a funciones 6.12. Introducción al procesamiento de cadenas basadas en apuntador UNIDAD 7: DISEÑO E IMPLEMENTACIÓN DE CLASES 7.1. Introducción 7.2. Alcance de las clases y acceso a los miembros de una clase 7.3. Separar la interfaz de la implementación 7.4. Funciones de acceso y funciones utilitarias 7.5. Destructores 7.6. Cuándo se hacen llamadas a los constructores y destructores 7.7. Ejemplo práctico con la clase Tiempo: una trampa sutil (devolver una referencia a un miembro de datos private) 7.8. Asignación predeterminada a nivel de miembros 7.9. Objetos const (constantes) y funciones miembro const 7.10. Composición: objetos como miembros de clases 7.11. Funciones friend y clases friend 7.12. Uso del apuntador this 7.13. Administración dinámica de memoria con los operadores new y delete 7.14. Miembros de clase static 7.15. Abstracción de datos y ocultamiento de información 7.16. Clases contenedoras e iteradores 7.17. Clases proxy UNIDAD 8: SOBRECARGA DE OPERADORES: OBJETOS STRING Y ARRAY 8.1. Introducción 8.2. Fundamentos de la sobrecarga de operadores 8.3. Restricciones acerca de la sobrecarga de operadores 8.4. Las funciones de operadores como clase miembro vs. funciones globales 8.5. Sobrecarga de los operadores de inserción de f lujo y extracción de f lujo 8.6. Sobrecarga de operadores unarios 8.7. Sobrecarga de operadores binarios 8.8. Conversión entre tipos 8.9. Sobrecarga de ++ y – – 8.10. La clase string de la Biblioteca estándar 8.11. Constructores explicit UNIDAD 9: PROGRAMACIÓN ORIENTADA A OBJETOS: HERENCIA 9.1. Introducción 9.2. Clases base y clases derivadas 9.3. Miembros protected 9.4. Relación entre las clases base y las clases derivadas 9.4.1. Creación y uso de clases 9.4.2. Creación de una jerarquía de herencia entre clases 9.4.3. La jerarquía de herencia mediante el uso de datos protected 9.4.4. La jerarquía de herencia mediante el uso de datos private 9.5. Los constructores y destructores en las clases derivadas 9.6. Herencia public, protected y private 5/8 UNIDAD 10: PROGRAMACIÓN ORIENTADA A OBJETOS: POLIMORFISMO 10.1. Introducción 10.2. Tipos de polimorfismo 10.3. Relaciones entre los objetos en una jerarquía de herencia 10.3.1. Invocación de funciones de la clase base desde objetos de una clase derivada 10.3.2. Cómo orientar los apuntadores de una clase derivada a objetos de la clase base 10.3.3. Llamadas a funciones miembro de una clase derivada a través de apuntadores de la clase base 10.3.4. Funciones virtuales 10.4. Tipos de campos e instrucciones switch 10.5. Clases abstractas y funciones virtual puras 10.6. Destructores virtuales UNIDAD 11: ENTRADA Y SALIDA DE FLUJOS 11.1. Introducción 11.2. Flujos 11.2.1. Comparación entre flujos clásicos y flujos estándar 11.2.2. Archivos de encabezado de la biblioteca iostream 11.2.3. Clases y objetos de entrada/salida de flujos 11.3. Salida de flujos 11.3.1. Salida de variables char * 11.3.2. Salida de caracteres mediante la función miembro put 11.4. Entrada de flujos 11.4.1. Funciones miembro get y getline 11.4.2. Funciones miembro peek, putback e ignore de istream 11.4.3. E/S con seguridad de tipos 11.5. E/S sin formato mediante el uso de read, write y gcount 11.6. Introducción a los manipuladores de flujos 11.6.1. Base de flujos integrales: dec, oct, hex y setbase 11.6.2. Precisión de punto flotante (precision, setprecision) 11.6.3. Anchura de campos (width, setw) 11.6.4. Manipuladores de flujos de salida definidos por el usuario 11.7. Estados de formato de flujos y manipuladores de flujos 11.7.1. Ceros a la derecha y puntos decimales (showpoint) 11.7.2. Justificación (left, right e internal) 11.7.3. Relleno de caracteres (fill, setfill) 11.7.4. Base de flujos integrales (dec, oct, hex, showbase) 11.7.5. Números de punto flotante: notación científica y fi ja (scientific, fixed) 11.7.6. Control de mayúsculas/minúsculas (uppercase) 11.7.7. Especificación de formato booleano (boolalpha) 11.7.8. Establecer y restablecer el estado de formato mediante la función miembro flags 11.8. Estados de error de los flujos 11.9. Enlazar un flujo de salida a un flujo de entrada UNIDAD 12: LA CLASE STRING Y EL PROCESAMIENTO DE FLUJOS DE CADENA 12.1. 12.2. 12.3. 12.4. 12.5. 12.6. Introducción Asignación y concatenación de objetos string Comparación de objetos string Subcadenas Intercambio de objetos string Características de los objetos string 6/8 12.7. 12.8. 12.9. 12.10. 12.11. 12.12. Búsqueda de subcadenas y caracteres en un objeto string Reemplazo de caracteres en un objeto string Inserción de caracteres en un objeto string Conversión a cadenas estilo C Iteradores Procesamiento de flujos de cadena UNIDAD 13: BÚSQUEDA Y ORDENAMIENTO 13.1. Introducción 13.2. Algoritmos de búsqueda 13.2.1. Eficiencia de la búsqueda lineal 13.2.2. Búsqueda binaria 13.3. Algoritmos de ordenamiento 13.3.1. Eficiencia del ordenamiento por selección 13.3.2. Eficiencia del ordenamiento por inserción 13.3.3. Ordenamiento por combinación (una implementación recursiva) UNIDAD 14: CREACIÓN DE APLICACIONES DE ESCRITORIO 14.1. 14.2. 14.3. 14.4. 14.5. 14.6. 14.7. 14.8. 14.9. 14.10. Aplicaciones de consola Aplicaciones graficas basadas en cuadros de dialogo Editores de texto Trabajo con recursos Iconos Menú Barras de herramientas Componentes de entrada y salida de información Trabajo con gráficos Técnicas de animación 7. EVALUACIÒN Criterio para la calificación de los trabajos: La presentación de deberes y trabajos tiene carácter obligatorio, en caso de incumplimiento se impondrán sanciones en la nota de actividades. Los trabajos de investigación se calificarán sobre un total de 30 puntos desglosado de la siguiente manera: o Talleres y Análisis de Casos 10 puntos o Investigaciones y Deberes 10 puntos o Exposiciones/recursos utilizados 10 puntos La nota mínima para aprobar el curso es 70. Los exámenes se rendirán en la fecha previamente establecida por el Decanato de la Facultad, y no se aceptará a ningún estudiante postergación ni anticipación de dicha evaluación, sin una justificación de fuerza mayor previamente aprobada por la Comisión Académica de la Facultad. En éste caso únicamente se aprobará la toma del examen supletorio. Se regirá por el Reglamento de la Universidad CALIFICACION ACTIVIDADES PRIMER EXAMEN SEGUNDO EXAMEN EXAMEN FINAL NOTA FINAL 30 15 15 40 100 7/8 SE TENDRA EN CUENTA EN EL PROCESO DE EVALUACION LA APLICACIÓN DE LA AUTOEVALUACION, COEVALUACION Y HETEROEVALUACION 8. BIBLIOGRAFÍA BÁSICA TEXTO AUTOR EDITORIAL C++ Como programar Paul. J. Deitel y Harvey.M. Deitel Pearson Prentice Hall, Sexta Edición 2009 Visual C++.NET John Mueller Anaya, 2002 9. BIBLIOGRAFÍA COMPLEMENTARIA TEXTO AUTOR ASP.NET and VB.NET Web Programming Revisado por: Aprobado por: Matt J. Crouch Dr. C. Oiner Gómez DECANO DE LA FACULTAD EDITORIAL McGraw-Hill, 2002 Fecha: 28/10/2014 Gilda Alcívar, MSc. Vicerrectora Académica 8/8