Top

Cargando cosas bonitas...

Recargar...

Aprende C++ desde cero con 5 ejercicios prácticos


Ya estoy acabando el primer año del grado de Ingeniería Informática. Estoy bastante satisfecho con todo lo que he aprendido a lo largo de este año, y sobre todo en la asignatura de Programación, definitivamente mi favorita. Empezamos con un nivel cero o muy básico, y hemos acabado sabiendo de programación modular, punteros, memoria dinámica y recursión. El objetivo de la asignatura no es saber programar en C++, es conocer los fundamentos de la programación, algoritmos, estructuras de datos, entre más cosas que son aplicables a cualquier lenguaje de programación que se nos presente.

cplusplus-logoLo que voy a compartir hoy en este artículo son las cinco prácticas que hemos realizado este año en la asignatura de Fundamentos de la Programación. Cada práctica tiene un objetivo distinto y van subiendo en nivel y tamaño. Desde mi punto de vista, hacer estos cinco ejercicios o mejor dicho “programas” ha sido lo que más me ha hecho aprender a programar. Todos los ejercicios son juegos sencillos y populares que son ejecutados desde la consola de comandos, sin interfaz gráfica, realmente para empezar a programar no es necesario la interfaz gráfica, ya que, es mejor centrarse en la pura programación y no perder el tiempo haciendo interfaces.

#1. El juego de los chinos

El objetivo de esta práctica es dar los primeros pasos con C++. Conocer las estructuras condicionales, bucles, funciones, métodos, lectura y escritura de ficheros, etc.

En esta práctica tienes que ir desarrollando de manera incremental un programa que permita jugar a los chinos. En el juego sólo van a intervenir dos jugadores. Cada jugador elegirá cuántas monedas saca y el ganador de la partida se decidirá en base a ‘marcador de X rondas ganadas’.

captura-juego-chinos-2

Ver: Programando el Juego de los Chinos en C++

Descargar enunciado (.pdf)

 

#2. Simón Dice

Si antes el objetivo era dar los primeros pasos en C++, ahora es reforzar lo anteriormente visto incluyendo ahora arrays, estructuras, strings, programación estructurada…

Simon dice es un juego electrónico, creado por Ralph Baer, que consiste en reproducir una secuencia de colores, con sus correspondientes sonidos, que son generados por la máquina de forma aleatoria. Una vez emitida la secuencia original, el usuario debe repetir la misma secuencia que generó la máquina, pulsando los botones (colores) correspondientes. Si el usuario repite correctamente la secuencia, la máquina generará una nueva más larga. La nueva secuencia se genera añadiendo un color nuevo (obtenido de forma aleatoria) a la secuencia anterior. Este proceso se repite hasta que el usuario comete un fallo o se llega a la secuencia con la longitud máxima que se establezca en el juego.

Descargar enunciado (.pdf)

 

#3. Uno Solo

Aquí las cosas se empiezan a complicar un poco más. Ya en la tercera práctica del curso hay que manejar con soltura todas las cosas básicas del C++ ya que ahora incluímos la necesidad de utilizar algoritmos de ordenación, arrays multidimensionales, arrays de estructuras y programación modular con archivos de cabecera (headers .h).

En este solitario, se empieza con un tablero en modo de rejilla con piezas colocadas sobre las casillas. El jugador debe mover una pieza en cada turno. Las piezas sólo pueden moverse “saltando” sobre otra ficha hasta una casilla libre de forma que la pieza sobre la que se salta es eliminada del tablero, como en las damas. Sólo se puede saltar una pieza, y el salto debe ser en horizontal o en vertical, nunca en diagonal. El objetivo del juego es eliminar todas las piezas, dejando sólo una en el tablero. Aunque nosotros implementaremos una variante de este solitario en la que la última pieza debe acabar en una casilla específica.

uno-solo-captura

Descargar enunciado (.pdf)

 

#4. Gestor de partidas online

Ya llegando casi al final de curso nos encontramos con una de las prácticas más difíciles. La parte más complicada es la gran extensión del programa (al menos para alumnos que recién han empezado a programar). Consta de una profunda modularización y un gran número de subprogramas que hacen lograr el cometido del programa; simular partidas online del popular juego de las 4 en raya. Para esta práctica es necesario planificarse muy bien a la hora de desarrollar los diferentes módulos que componen el programa, además conocer los diferentes algoritmos de ordenación (se especifica cual usar en cada caso) y manejo de listas de tamaño variable.

gestor-de-partidas-4Extraído del enunciado:

Se quiere desarrollar un gestor de partidas de 2 jugadores que permite a nuevos usuarios registrarse, y a los usuarios ya registrados buscar adversario para iniciar una partida, y jugar en partidas que tenga en curso. En esta modalidad de juego cada usuario se conecta cuando quiere jugar, pudiendo tener simultáneamente varias partidas en curso, hasta un máximo establecido. Los usuarios se clasifican en categorías y las partidas se abren con adversarios de la misma categoría. Cuando un participante ha ganado suficientes partidas consecutivas asciende de categoría, por otra parte si pierde muchas partidas consecutivas baja de categoría. Una partida puede terminar bien porque se acaba el juego, o bien porque un jugador decide abandonar. En este último caso, se da como ganador al adversario. Cuando un jugador termina una partida, el gestor avisará al adversario enviándole un aviso, que verá cuando se conecte.

Material necesario para la práctica

Descargar enunciado (.pdf)

 

#5. Gestor de partidas online 2.0

Última práctica de curso y que aún estoy desarrollando -la tengo que entregar el 5 de junio-. Se basa en la anterior. Hay que realizar una serie de cambios de diseño, cambiando algunos de los tipos de datos que maneja el programa para ahora utilizar arrays dinámicos utilizando punteros y también hay que mejorar la implementación utilizando memoria dinámica.

Las listas de partidas y usuarios se van a modificar para utilizar memoria dinámica. Y la lista de partidas en curso, en lugar de guardar la posición de la partida en la lista de partidas, guardará el puntero a la partida.

Descargar enunciado (.pdf)

 

¡Espero que haber compartido las cinco prácticas que he tenido que hacer durante mi primer año estudiando el grado de Ingeniería Informática te hayan servido de ayuda como a mí 🙂 ! Puede que en un futuro suba las soluciones a las prácticas, si me las pides por correo electrónico o alguna de mis redes sociales podríamos negociarlo…

La mejor forma de aprender a programar es programando y practicando mucho.


Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *