CLAVE : | INF281 |
CRÉDITOS : | 5.0 |
TEORÍA : | 4.0 horas semanales |
LABORATORIO : | 2.0 horas semanales |
PROFESOR : | J. Miguel Guanira Erazo |
miguel.guanira@pucp.edu.pe |
I. DESCRIPCIÓN DEL CURSO
El curso busca mostrar las herramientas proporcionadas por el lenguaje C++ que permitan implementar programas usando técnicas tanto estructuradas como orientadas a objetos.
La primera parte del curso se dedicará a mostrar sólo las herramientas estructuradas del lenguaje, esto debido a la familiariada, con esta técnica, que tienen los alumnos que llevan por primera vez el curso.
La segunda parte del curso será dedicada a definir los conceptos de la programación orientada a objetos, y a la implementación directa de estos conceptos.
II. OBJETIVOS
Al final del curso, el alumno debe ser capaz de implementar soluciones relativamente complejas empleando el lenguaje de programación C++.
La implementación de estas soluciones las realizará empleando tanto las técnicas de programación estructuradas como las de la programación orientada a objetos.
El alumno estará en condiciones de migrar, sin dificultad, a otros lenguajes de programación similares, como Java, C#, etc., tema del siguiente curso.
Estos objetivos contribuyen al logro de los siguientes cinco resultados del estudiante:
a. Aplica los conocimientos relacionados a las matemás, ciencias e ingeniería.
c. Diseña sistemas, componenetes o procesos que satisfagan las necesidades presentadas.
i. Reconoce la necesidad y se compromete con el aprendizaje a lo largo de toda la vida.
k. Utiliza las técnicas, estrategias y herramientas de la ingeniería moderna necesarias para la práctica de la misma.
l. Aplica los conocimientos relacionados a los lenguajes de programación, modelado de sistemas de información, construcción de software de calidad y administración de recursos tecnológicos.
III. PROGRAMA ANALÍTICO
CAPÍTULO 1. INTRODUCCIÓN AL LENGUAJE C++
Estructura básica de un programa en C++. Etapas en la generación de un programa, compilación e interpretación. Introducción al pre-procesador. Identificadores y tipos de datos. Variables y constantes. Operadores y expresiones. Asignación de valores. Bloques. Estructuras de decisión. Estructuras iterativas.
CAPÍTULO 2. ENTRADA SALIDA DE DATOS
Instrucciones que permiten el ingreso y salida de datos desde el punto de vista del lenguaje C y desde el lenguaje C++. Re direccionamiento de la entrada y salida estándar.
CAPÍTULO 3. FUNCIONES Y ALCANCE DE VARIABLES
Conceptos básicos. Reglas de alcance. Manejo de variables. Parámetros por valor y por referencia. Programación modular. El pre-procesador. Funciones inline. Introducción a la sobrecarga de funciones y operadores. Introducción al uso de plantillas. Bibliotecas de funciones.
CAPÍTULO 4. ARREGLOS Y PUNTEROS
Conceptos básicos. Arreglos. Punteros. Aritmética de punteros. Cadenas de caracteres. Punteros a funciones. Punteros a punteros. Punteros genéricos. Argumentos en la línea de comandos. Funciones con parámetros variables.
CAPÍTULO 5. ARCHIVOS
Archivos Binarios y de Texto. Descriptores de archivo. Funciones para el acceso secuencial y directo de archivos. Archivos genéricos.
CAPÍTULO 6. PROGRAMACIóN ORIENTADA A OBJETOS
Conceptos básicos. Definición de clases y creación de objetos. Atributos y métodos. Especificadores de acceso a miembros: public y private. Constructores y destructores. Sobrecarga. Concepto de agregación.
CAPÍTULO 7. OPERADORES SOBRECARGADOS
Implementación de sobrecarga de operadores en clases.
CAPÍTULO 8. HERENCIA
Concepto de herencia. Herencia simple. Jerarquía de clases. Sobre escritura de métodos. Llamadas a constructores. Especificador de acceso a miembros: protected. Modificadores de ámbito en la herencia. Herencia Múltiple. Clase base virtual en la herencia múltiple.
CAPÍTULO 9. PUNTEROS A OBJETOS
Punteros a objetos, nomenclatura. El puntero this. Punteros en herencia. Métodos virtuales. Polimorfismo. Clases abstractas. Clases auto referenciadas: Listas ligadas, árboles.
CAPÍTULO 10. PLANTILLAS Y BIBLIOTECA ESTÁNDAR DE PLANTILLAS
Plantillas de funciones y plantillas de clases. Contenedores. Iteradores. Algoritmos.