P2IR: Curso 2022-2023. Prácticas

Table of Contents

Home Avisos Prácticas Teoría Enlaces de interés Ficha de la asignatura

Información general sobre las prácticas:

  • Presta mucha atención a este artículo: Cómo no realizar una práctica de programación.
  • La EPS pone a vuestra disposición una imagen VDI de la instalación de Ubuntu de sus laboratorios. Puedes descargarla de aquí.

    Para resolver cualquier problema que puedas tener con la descarga de este archivo, ponte en contacto con los técnicos de la EPS.

  • Si finalmente te decides a usar este S.O. para las prácticas de la asignatura en este enlace tienes acceso a la Guía de escritorio de Ubuntu.
  • En la asignatura trabajamos en prácticas con GNU/Linux y el compilador de C++ del proyecto GCC, para ello empleamos la versión que hay instalada en los laboratorios de la EPS ( g++ --version ).
    • IMPORTANTE: La corrección de las prácticas se realiza con esta versión del compilador de C++. Tenlo en cuenta ya que C++ es un lenguaje diferente a C y puede haber cambios entre una y otra versión del estándar del mismo. En la asignatura empleamos la versión de C++ de 2017, más conocida como C++17.
    • Es aconsejable que si utilizas tu ordenador para realizar las prácticas, antes de entregarlas, las compiles y pruebes con esa versión del compilador.

Consejos útiles para la entrega de prácticas

  • Debes poner tu nombre y DNI en un comentario al principio de cada archivo de código que escribas y entregues. Es obligatorio, no ponerlo implica una nota de 0 en esa práctica.
  • Puedes entregar tantas veces como quieras una práctica mientras su plazo de entrega esté abierto, esto implica que no se admitirán entregas fuera de plazo o por otro cauce que no sea el indicado en el enunciado. Si esto ocurriera esa entrega será ignorada.
  • La publicación de notas se realiza en la web del DLSI.
  • Si necesitas revisar cualquier práctica de la asignatura debes reservar una tutoría presencial desde la aplicación de UA Cloud.

Consejos útiles al escribir el código de las prácticas

  • Algunas funciones producen salida por pantalla cuando no se pide. Repasa tu código pues esto puede interferir en la corrección de la práctica. Devolver un resultado por parte de una función es algo totalmente distinto a imprimirlo. En los enunciados de las prácticas se indica claramente cuando se debe hacer una cosa o la otra.
  • Recuerda:
    • Comprobar si tu código compila y ejecuta de manera correcta con la versión del compilador instalada en los laboratorios de la EPS. Los errores de compilación impiden que se pueda comprobar si tu código funciona correctamente.
    • Inicializar todas las variables que declares a un valor que tenga sentido, así como realizar una primera implementación vacía o sencilla de las funciones o métodos pedidos en las prácticas, p.e.:
      1. Si nos piden una función que no devuelve nada:

        void mi_funcion() {}
        
      2. Si nos piden una función que devuelve un dato del tipo que sea, p.e. double

        double mi_funcion() { return 0.0; }
        
    • Si implementas una función recursiva, asegúrate que has tenido en cuenta el o los casos base que tenga.
    • No modifiques los archivos de cabecera entregados con el código de partida.

Ampliación de conocimientos

  • Se llevará a cabo al principio de determinadas sesiones de prácticas.
  • En estas sesiones de ampliación de conocimientos explicaremos de manera muy breve algunas herramientas que se salen de los contenidos de la asignatura pero que os serán muy útiles y completarán vuestra formación informática.

Construcción de proyectos con Make. El depurador gdb. La herramienta de análisis en tiempo de ejecución valgrind.

Veremos cómo funcionan estas herramientas que emplearemos a lo largo de todo el curso.

Trabajo con el S.O. desde un terminal: Bash shell script

A continuación explicaremos el funcionamiento básico del intérprete de órdenes bash.

Documentación del código: Doxygen

Debemos acostumbrarnos a documentar nuestro código y si, además, podemos generar documentación a partir de estos comentarios mucho mejor.

Existen diferentes herramientas que permiten llevar a cabo esta tarea. Para C++ nosotros emplearemos Doxygen y haremos uso de este código de ejemplo.

Control de versiones: Git

Hoy en día es obligatorio saber usar una herramienta de control de versiones, concretamente git, para gestionar los cambios en nuestro código y facilitar el trabajo en grupo. Aprenderemos a usar git para el trabajo local con el código que escribamos.

Aplicaciones con interface de usuario gráfico: Dear ImGui

Una vez conozcamos los elementos básicos de la Programación Orientada a Objetos veremos cómo construir aplicaciones que proporcionen un interfaz gráfico de usuario y que, por tanto, permitan mostrar Información de manera gráfica.

Para ello emplearemos el toolkit Dear ImGui.

Enunciados de prácticas

Práctica 0

  1. Objetivos:
    • Comprobación de nuestro usuario en el sistema de entregas.
    • Entender y practicar con el sistema de entrega de prácticas y con el formato de entrega de las prácticas.
    • Repaso de conceptos de Programación I.
    • Uso de herramientas como make, gdb y valgrind.
    • Conocer y aprender a usar tipos de datos numéricos enteros de tamaño fijo.
    • Conocer algunas de las nuevas características que nos ofrece C++.
  2. Aquí tienes el enunciado y los archivos de partida para la misma.

Práctica 1

  1. Objetivos:
    • Adquirir práctica y destreza con las características de C++ que lo hacen un mejor C.
    • Profundizar en los conocimientos aprendidos en Programación I.
    • Hacer uso de las herramientas estudiadas en la práctica 0.
  2. Aquí tienes el enunciado y los archivos de partida para la misma.

Práctica 2

  1. Objetivos:
    • Seguir adquiriendo práctica y destreza con las características de C++ que lo hacen un mejor C.
    • Implementar los TADs vistos en los temas 2 y 3 de la asignatura.
  2. Aquí tienes el enunciado y los archivos de partida para la misma.

Práctica 3

  1. Objetivos:
    • Poner en práctica los conocimientos sobre programación dirigida por eventos vistos en teoría.
  2. Aquí tienes el enunciado y los archivos de partida para la misma.

Práctica 4

  1. Objetivos:
    • Aprender a usar en código C++ conceptos de POO además de otros estudiados en teoría:
    • herencia de clases
    • zonas de visibilidad
    • clases abstractas
    • genericidad
    • espacios de nombres
    • redefinición de operadores
    • métodos y variables de clase
    • patrón RAII
    • Entrada/Salida, etc..
  2. Aquí tienes el enunciado y los archivos de partida para la misma.

Enunciados de exámenes

C3

C4

Emacs 28.2 (Org mode 9.5.5)