En esta asignatura soy responsable de un grupo de teoría y de
varios 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. He preparado unos apuntes
que explican a nivel introductorio el funcionamiento de este programa.
Ejemplos del viernes 22 de Octubre
Ejemplos del jueves 27 y Viernes
28 de Octubre (finalmente se prolongó la explicación
hasta el Lunes 7 de Noviembre)
Ejemplos para la semana del Lunes
8 de Noviembre
Ejemplos para la semana del Lunes
15 de Noviembre
Ejemplos para la semana del Lunes
29 de Noviembre (se extendió la explicación una semana
más...muchos puentes)
- 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.
- 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
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 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 calcula
la paridad de un vector de booleanos. Versión iterativa y
recursiva (ejercicio de examen).
- Ordenación por el
método merge-sort, versión recursiva.
- 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.
- Operador * para matrices.
Ejemplos para el Jueves 16 de
Diciembre
Ejemplos para el Lunes 20 de
Diciembre
- Ejemplo básico de clases, clase par con las
operaciones suma, invierte, módulo, ...
- Ejemplo de clases para ilustrar el tema de la interfaz
pública de una clase, clase complejo usando representación cartesiana y polar.
Ejemplos para el viernes 14 de
Enero
Ejemplos para el lunes 17 de
Enero
NOTA: lo único que cambia es el nombre de las variables, para
que sea más fácil entenderlo.
Ejemplos para el jueves 20 de
Enero
Ejemplos para el viernes 21 de Enero
Ejemplos para el lunes 24 de Enero
- 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.
- Ejemplo complementario de vectores,
funciones útiles, introducción a iteradores y algoritmos.
Ejemplos para el jueves 27 de Enero
- El (in)famoso ejercicio de la hormiga...el
enunciado se dejó en la fotocopiadora.
Ejemplos para el lunes 31 de Enero
- Un ejemplo sencillo de ordenación, método de la burbuja (no usar
en la vida real, es el peor método que hay).
- El ejemplo anterior convertido
en template y con un parámetro adicional de tipo puntero a
función, de modo que el mismo algoritmo ordena de mayor a menor
o al revés, según el criterio que se use.