Cb00823 Computación II
Clave: Cb00823
Requisito: Haber aprobado Cb00822.
Equivalencia: No Tiene
Generaciones a las que se imparte: 2 IEC, 2 IFI, 3 IMT04.
Características generales del curso: En este curso es importante enfatizar habilidades de programación con menor abstracción. Incluso es conveniente que los alumnos desarrollen aplicaciones bajo un contexto procedural o imperativo, descubriendo que no solo la programación orientada a objetos es la mejor opción para todos los problemas. En el curso se fortalecerán habilidades de programación a través del conocimiento de herramientas avanzadas en donde se mezclen diferentes niveles de abstracción. En el curso se hará una transición del lenguaje JAVA al lenguaje C++, como medio de aplicación de los conceptos.
En la medida de que los temas se presten, el alumno deberá comparar las ventajas y desventajas entre las herramientas que provee el lenguaje JAVA y el lenguaje C++.
El curso, deberá introducir el concepto de Tipo de Dato Abstracto ya que le permite al alumno crear una visión mas estructurada en cuanto a la programación, además de que permite darle congruencia a la introducción de temas como sobrecarga de operadores, herencia, streams, y facilita la asimilación del concepto de apuntadores a un objeto. Se sugiere como texto de esta sección "Classical Data Structures en C++" de Timothy Budd. Se pueden trabajar como ejemplos de TDA, el Tipo de Dato Abstracto Número Racional, Complejos, Enteros Largos, etc...
Se sugiere manejar librerías para interfaz gráfica (para este nivel se sugiere utilizar una librería sencilla como la definida por Timothy Budd llamada PCLAF).
Objetivo General
Acrecentar la habilidad de resolver problemas por medio de la programación, a través de nuevas herramientas de programación y el conocimiento comparativo entre el lenguaje JAVA y el lenguaje C++.
Objetivos Particulares
Temario
1.1 Comparación respecto a Tipos de datos, operadores y expresiones.
1.2 Comparación respecto a estructuras de control.
1.3 Comparación respecto a operaciones de Entrada y salida
1.4 Comparación respecto a la definición, creación y uso de clases y objetos.
1.5 Comparación respecto a la definición y uso de métodos y parametrización.
1.6 Concepto de programación procedural o imperativa en C++.
1.7 Concepto de tipo de dato abstracto.
2.1 Definición de arreglos unidimensionales en C++. Comparación con JAVA.
2.2 Métodos básicos de ordenamiento en un arreglo: Burbuja, Inserción, Selección.
2.3 Strings en C++. Comparación con JAVA.
2.4 Arreglos bidimensionales. Aplicaciones con matrices en ambos lenguajes.
4.1 Tipos de archivo: texto, binarios con tipo, binarios sin tipo.
4.2 Streams en JAVA y en C++.
4.3 Aplicaciones con archivos de texto en ambos lenguajes.
4.4 Aplicaciones con archivos binarios en ambos lenguajes.
5.1 Apuntadores en C++.
5.2 Relación entre arreglos y apuntadores en C++.
5.3 Aritmética de apuntadores en C++.
5.4 Memoria estática y dinámica
5.5 Creación y uso de arreglos y objetos dinámicos en C++. Comparación con JAVA.
6.1 Implementación de funciones libres.
6.2 Uso del typedef y el struct en C++.
6.3 Recursividad como herramienta para el control de ciclos.
7.1 Concepto de nodo y encadenamiento.
7.2 Operaciones de inserción, desplegado y eliminación de nodos de una lista.
7.3 Aplicación integradora de conceptos del curso.
8.1 Sobrecarga de operadores en C++.
8.2 Uso de plantillas (templates) en C++.
8.3 Manejo congruente de parámetros con objetos dinámicos y atributos dinámicos.
8.4 Herencia en C++: Definición, clases abstractas y métodos virtuales.
Libros de consulta:
Descripción de recursos necesarios
Software de desarrollo de aplicaciones en C++ y Java.
Perfil del Profesor
Persona con preparación académica en el área de computación y con experiencia en la programación orientada a objetos utilizando Java y C++
Programa Sintético
(3-0-8. Requisito: Computación I. 2 ISC, 2 ISE, 2 ISI, 2 LSCA, 2 IEC, 2IFI).
Equivalencia: no tiene.
Java y C++ (similitudes y diferencias). Archivos de texto y binarios. Arreglos multidimensionales y strings. Reutilización de código. Polimorfismo. Sobrecarga de operadores. Herencia. Apuntadores y memoria dinámica. Recursividad. Manejo de excepciones.
Programa Sintético (inglés)
(3-0-8. Requisito: Computación I. 2 ISC, 2 ISE, 2 ISI, 2 LSCA, 2 IEC, 2IFI).
Java and C++ (similarities and differences). Text and binary files. Multidimensional arrays and strings. Reusability of code. Polymorphism. Overload of Operators. Inheritance. Pointers and Dynamic Memory. Recursion. Handling of Exceptions.
Fecha de la última actualización: 7 de junio de 2004(M)