En esta asignatura soy responsable de un grupo de teoría y de
dos de prácticas.
En mi grupo de teoría utilizo estos apuntes.
Además he preparado una colección de problemas cuyos
enunciados están disponibles aquí.
Para trabajar en casa puedes utilizar dev-cpp como
Entorno Integrado de Desarrollo. Es gratuito y ocupa menos de 20MB. He
preparado unos apuntes
que explican a nivel introductorio el funcionamiento de este programa.
En las prácticas utilizaremos UNIX. Aquí
hay un tutorial en html que seguiremos en las prácticas. Aquí está el mismo tutorial en pdf.
Guión de prácticas de vectores,
juego del "pegged".
Guión de prácticas
de vectores y funciones,
juego del "pegged".
Guión de prácticas
de clases I,
juego del "pegged".
Guión de prácticas
de clases II,
juego del "pegged", definiendo la clase casilla y el tablero con un
atributo de tipo <vector<vector<casilla> >.
A medida que avance el curso aparecerán aquí los
ejercicios de clase.
Ejemplos iniciales para
composición alternativa (if),
alternativa doble (if-else) y alternativa múltiple (switch).
Ejemplos iniciales para
composiciones iterativas.
Ejemplos de while, estos ejercicios van en serie, cada uno es una
modificación del anterior:
Ejemplo de do-while:
Ejemplo de for:
Más ejemplos de bucles.
Aún más ejemplos de
bucles.
- 20 primeros términos de la sucesión de Fibonacci.
- Aproximación de la cte. e por una serie. Número
fijo de iteraciones y precisión máxima.
- Aproximación de e^x
por una serie, finaliza cuando se alcanza un máximo
número de iteraciones o una determinada precisión, lo que
suceda antes.
- Aproximación de la raíz cuadrada de
un número, parada por alcanzar determinada precisión.
- Tabla de raíces
de orden desde 2 a 5 para los números desde 4 a 10 utilizando el
método anterior.
Ejemplos de vectores.
Ejemplos de funciones.
- Función que
calcula
el número combinatorio "n sobre m" utilizando una función
que calcula el factorial de un entero. Compararlo con un programa que
realiza el mismo
cálculo sin utilizar funciones.
- Función que
devuelve el
mayor de dos números. Dos versiones, ilustra el funcionamiento
de return.
- Función que
calcula e^x
mediante la serie 1+x/1!+x^2/2!+x^3/3!+... El bucle termina cuando se
alcanza un máximo de iteraciones o una tolerancia especificada,
lo que ocurra antes.
Ejemplos de funciones con
vectores.
- Función
que devuelve un
vector que contiene las copias únicas de los elementos de un
vector (es decir, no incluye las repeticiones). Por ejemplo a partir
del vector {2,-1,8,3 ,2,3,9} produce {2,-1,8,3,9}. Se incluyen dos
versiones, usando push_back y sin usarla (ejercicio de examen).
- Función
que calcula
la paridad de un vector de booleanos. Versión iterativa y
recursiva (ejercicio de examen).
- Operador * para
matrices.
- Función
que devuelve la
mezcla de dos vectores ordenados en un tercer vector también
ordenado, con y sin push_back (con variaciones en varios ejercicios de
examen).
- Función
que
devuelve la posición en que se encuentra dentro de una matriz la
submatriz más parecida a una dada (ejercicio de examen).
- Función
que devuelve la suma máxima de los segmentos de un vector
(ejercicio de examen).
- Función
que comprime
un vector "casi vacío" y su contrapartida, descomprime un vector
"casi vacío" (ejercicio de examen). Un vector "casi
vacío" es aquel que contiene mayoritariamente elementos nulos.
Para ahorrar espacio se guarda el tamaño del vector y
(alternativamente) la posición y el contenido de los elementos
no nulos en un vector convencional. Por ejemplo el vector
{0,0,0,1,0,0,-7,0,0} se podría guardar como {9,3,1,6,-7}. La
función comprime se ha escrito usando push_back y sin usarla.
Explicación de la implementación
recursiva del factorial.
Ejemplos del capítulo
"Definición de nuevos tipos de datos".
- Ejemplo de estructuras
y enumeraciones.
- Ejemplos para entender el propósito de las clases.
Programa que suma dos complejos, sin funciones,
con
funciones, usando
clases. La idea es ver que es mas sencillo escribir el programa
definiendo previamente la clase.
- Ejemplo de clases, clase par.
- Ejemplo de clases para ilustrar el uso de los constructores para
convertir tipos, tambien ilustra el uso de friend y la
redefinición de << y >>, clase complejo, representación
cartesiana.
- Ejemplo de clases para ilustrar el concepto de interfaz
pública de una clase, clase complejo, representación en
polares.
- Ejercicio de examen, TAD resistencia.
- Ejercicio de examen, TAD cuaternio.
- Ejercicio de examen, clase
punto y clase recta.
- Ejemplos y explicación
para destructores,
operador
de asignación, constructor de copia, cuando se usa memoria
dinamica.
- Ejemplo de tipo paramétrico (template) clase par de T1 y T2.
- Ejemplo de acción genérica, eliminar los elementos
repetidos de un vector<T>.
- Ejemplo de composición (examen), clase punto2d y clase
segmento.
- Ejemplo de composición (examen), clase punto2d y clase
circunferencia.
Ejemplos complementarios, problemas de examen.
Ejemplos de herencia.
- Ejemplo de herencia, tipo electrodoméstico
y subtipos lavadora y nevera.
- Ejemplo de herencia, tipo Fun
(función) y subtipos poli2 (polinomio de segundo grado) y poli3
(polinomio de tercer grado). NOTA: este ejemplo es una
modificación de un ejemplo propuesto por Luis Junco.
Ejemplos para las clases de
recuperación: