Prácticas de programación en C con MinGW Developer...

12
ET1032 Informática Industrial Prácticas de programación en C con MinGW Developer Studio Germán Fabregat Llueca Arquitectura y Tecnología de Computadores Prácticas de programación en C con MinGW Developer Studio MinGW Developer Studio es un entorno de desarrollo integrado (IDE) para la programación en lenguaje C gratuito y cómodo de usar. Se ejecuta en plataformas windows y está basado en la versión mínima para este sistema operativo del compilador, también gratuito, gcc de GNU. Primer proyecto con MinGW Al ejecutar el programa aparecerá en la pantalla la ventana principal de la aplicación tal y como se ve en la imagen inferior. En esta pantalla se pueden distinguir cuatro zonas: las barras de menús y herramientas en la parte superior, la zona de proyecto en el margen derecho, la zona de mensajes en la parte inferior y la zona de edición, de mayor tamaño, en el medio y coloreada en gris. Para crear un proyecto selecciona en la barra de menús la opción Project-->New Project... tal y como se muestra en la imagen.

Transcript of Prácticas de programación en C con MinGW Developer...

Page 1: Prácticas de programación en C con MinGW Developer Studiomermaja.act.uji.es/docencia/ET1032/data2013/ProgC/PracticasC.pdf · Ahora el compilador ya puede trabajar con nuestro ...

ET1032 Informática Industrial Prácticas de programación en C con MinGW Developer Studio

Germán Fabregat Llueca Arquitectura y Tecnología de Computadores

Prácticas de programación en C

con MinGW Developer Studio

MinGW Developer Studio es un entorno de desarrollo integrado (IDE) para la programación en lenguaje C gratuito y cómodo de usar. Se ejecuta en plataformas windows y está basado en la versión mínima para este sistema operativo del compilador, también gratuito, gcc de GNU.

Primer proyecto con MinGW Al ejecutar el programa aparecerá en la pantalla la ventana principal de la aplicación tal y como se ve en la imagen inferior.

En esta pantalla se pueden distinguir cuatro zonas:

• las barras de menús y herramientas en la parte superior, • la zona de proyecto en el margen derecho, • la zona de mensajes en la parte inferior y • la zona de edición, de mayor tamaño, en el medio y coloreada en gris.

Para crear un proyecto selecciona en la barra de menús la opción Project-->New Project... tal y como se muestra en la imagen.

Page 2: Prácticas de programación en C con MinGW Developer Studiomermaja.act.uji.es/docencia/ET1032/data2013/ProgC/PracticasC.pdf · Ahora el compilador ya puede trabajar con nuestro ...

ET1032 Informática Industrial Prácticas de programación en C con MinGW Developer Studio

Germán Fabregat Llueca Arquitectura y Tecnología de Computadores

Introduce el nombre del proyecto, Primero, y la ruta donde quieres que se cree su carpeta asociada. Selecciona así mismo el tipo de proyecto de entre los iconos de la ventana de la izquierda, en este caso aplicación de consola (Win32 Console Application). El entorno creará la carpeta automáticamente y dejará en ella el fichero de definición del proyecto Primero.mdsp.

Si todo se ha desarrollado normalmente, en la zona de proyecto aparecerá la estructura de carpetas del proyecto recién creado.

Page 3: Prácticas de programación en C con MinGW Developer Studiomermaja.act.uji.es/docencia/ET1032/data2013/ProgC/PracticasC.pdf · Ahora el compilador ya puede trabajar con nuestro ...

ET1032 Informática Industrial Prácticas de programación en C con MinGW Developer Studio

Germán Fabregat Llueca Arquitectura y Tecnología de Computadores

Vamos ahora a incorporar un fichero con un programa en C ya existente. Para ello seleccionamos la opción Project-->Add To Project --> Files...

Y añadimos el fichero primero.c que podemos descargarnos desde esta misma web. Hay que tener en cuenta que el sistema no copiará el archivo a la carpeta del proyecto en el disco, sino que lo mantendrá donde se encuentre al importarlo. Es recomendable entonces que la copia la hagamos manualmente una vez creado el proyecto, para mantener todos los datos del mismo en su estructura.

Page 4: Prácticas de programación en C con MinGW Developer Studiomermaja.act.uji.es/docencia/ET1032/data2013/ProgC/PracticasC.pdf · Ahora el compilador ya puede trabajar con nuestro ...

ET1032 Informática Industrial Prácticas de programación en C con MinGW Developer Studio

Germán Fabregat Llueca Arquitectura y Tecnología de Computadores

La ventana de selección de archivo aparece en la imagen inferior. En ella se puede ver el contenido del archivo seleccionado.

Una vez añadido el programa, su código aparece en el editor y estructura de carpetas del proyecto se actualiza para indicar que tenemos contenido en la correspondiente a código fuente (Source Files).

Vamos a proceder ahora a compilar y ejecutar el programa que acabamos de añadir. Dado que el entorno de desarrollo prevé la posibilidad de depurar el código, mantiene siempre dos cadenas de compilación de cada proyecto, la de depuración (Debug) y la de distribución (Release). Así pues, en primer lugar estableceremos esta última como versión de trabajo. Para ello seleccionaremos en la barra de menús Build-->Set Active Configuration... y escogemos Release en la ventana que se abrirá.

Page 5: Prácticas de programación en C con MinGW Developer Studiomermaja.act.uji.es/docencia/ET1032/data2013/ProgC/PracticasC.pdf · Ahora el compilador ya puede trabajar con nuestro ...

ET1032 Informática Industrial Prácticas de programación en C con MinGW Developer Studio

Germán Fabregat Llueca Arquitectura y Tecnología de Computadores

Ahora el compilador ya puede trabajar con nuestro fichero fuente para producir un ejecutable. En la opción Build de la barra de menús tenemos las distintas tareas que se pueden llevar a cabo en este sentido. Para comenzar utilizaremos la más sencilla, que nos permitirá a la vez compilar y ejecutar nuestro programa para ver los resultados. Como el sistema detecta si el programa ha sido o no compilado después de la última modificación, vamos a seleccionar la opción Build-->Execute... y nos aparecerá la ventana inferior solicitando permiso para compilar y enlazar (Build) antes de ejecutar. Si aceptamos obtendremos la salida del programa en una consola de línea de comandos de windows.

Page 6: Prácticas de programación en C con MinGW Developer Studiomermaja.act.uji.es/docencia/ET1032/data2013/ProgC/PracticasC.pdf · Ahora el compilador ya puede trabajar con nuestro ...

ET1032 Informática Industrial Prácticas de programación en C con MinGW Developer Studio

Germán Fabregat Llueca Arquitectura y Tecnología de Computadores

La consola se cerrará cuando pulsemos cualquier tecla. En la ventana del editor siempre podremos ver los resultados de la última compilación en la zona inferior de la pantalla. En este caso, evidentemente, todo se ha desarrollado sin errores.

Page 7: Prácticas de programación en C con MinGW Developer Studiomermaja.act.uji.es/docencia/ET1032/data2013/ProgC/PracticasC.pdf · Ahora el compilador ya puede trabajar con nuestro ...

ET1032 Informática Industrial Prácticas de programación en C con MinGW Developer Studio

Germán Fabregat Llueca Arquitectura y Tecnología de Computadores

Prácticas de programación en C

con MinGW Developer Studio

En esta primera parte de la práctica se van a estudiar los programas en C dados como ejemplos y a realizar modificaciones sobre ellos. Tanto los programas como los ejercicios que se proponen inciden sobre algún aspecto específico de la programación en lenguaje C.

Ejercicios básicos El procedimiento para trabajar con cualquiera de los ejemplos será siempre el mismo. En primer lugar se creará un proyecto con los ficheros dados según lo visto en el ejercicio anterior. El proyecto se ejecutará con atención para tener la primera impresión del programa desde el punto de vista del usuario. Posteriormente se analizará el código fuente del programa hasta comprender su funcionamiento. En último lugar se realizarán las modificaciones o análisis propuestos en cada caso. Se necesitará en muchos casos consultar información acerca de las funciones de la biblioteca estándar, para lo que se suministra el documento The GNU C library reference manual.

Ejercicio 1. Variables, tipos de datos, entrada y salida por consola. Este primer ejercicio hace hincapié sobre los tipos de datos básicos y las formas de obtenerlos del usuario a través del teclado y de representarlos por pantalla. El código programa se encuentra en el archivo variables.c. Los ejercicios que se proponen y que aparecen al final del texto son:

• probar otros tipos de datos y otros modificadores de la función printf para su representación por pantalla,

• utilizar la función fgets de lectura de cadenas desde la entrada estándar, en sustitución de gets que se considera insegura.

Ejercicio 2. Vectores, punteros y uso de memoria. Este segundo ejercicio se centra en el acceso a vectores utilizando punteros y en la organización de los datos en memoria. El código programa se encuentra en el archivo matrices.c. Los ejercicios que se proponen y que aparecen al final del código son:

• analizar el acceso a los vectores utilizando punteros y modificar el programa para que tal acceso se realice mediante índices con respecto al origen del vector,

• analizar la organización de los datos en la memoria y las direcciones que ocupan, es decir, los valores que van tomando los punteros.

Page 8: Prácticas de programación en C con MinGW Developer Studiomermaja.act.uji.es/docencia/ET1032/data2013/ProgC/PracticasC.pdf · Ahora el compilador ya puede trabajar con nuestro ...

ET1032 Informática Industrial Prácticas de programación en C con MinGW Developer Studio

Germán Fabregat Llueca Arquitectura y Tecnología de Computadores

Ejercicio 3. Datos estructurados, funciones y ficheros. Estructura de los programas. Este ejercicio es más complejo ya que revisa conceptos vistos en el anterior, como el uso de punteros y la estructura de los datos en memoria, al tiempo que añade otros como los tipos de datos estructurados, la organización modular de los programas y la entrada y salida utilizando ficheros. También se revisa el uso del envío de parámetros al programa principal mediante la línea de comandos. El código del programa se encuentra en los archivos funciones.c y funciones.h. Para realizar las pruebas de ejecución se puede utilizar el fichero Colores.txt. Dado que la ejecución se realizará desde el entorno, la forma de indicar al sistema que pase este parámetro a la función main es acceder a las opciones del proyecto mediante el menú Project-->Settings... y en la pestaña General de la ventana emergente indicarlo en la opción Program arguments: como se ve en la imagen inferior.

Los ejercicios que se proponen para este caso y que aparecen al final del texto del programa son:

• analizar el código con detenimiento, fijándose en el uso de los punteros y de las funciones,

• comentar la función lee_colores que se ha dejado sin comentarios intencionadamente y

• buscar información sobre las funciones de gestión de archivos y de los parámetros que requieren.

Page 9: Prácticas de programación en C con MinGW Developer Studiomermaja.act.uji.es/docencia/ET1032/data2013/ProgC/PracticasC.pdf · Ahora el compilador ya puede trabajar con nuestro ...

ET1032 Informática Industrial Prácticas de programación en C con MinGW Developer Studio

Germán Fabregat Llueca Arquitectura y Tecnología de Computadores

Prácticas de programación en C

con MinGW Developer Studio

En esta parte final de la práctica se va a analizar programas más complicados y realizar modificaciones más complejas sobre ellos. También se van a desarrollar completamente programas relacionados con cálculos matemáticos y otros procedimientos típicos de los sistemas industriales.

Ejercicios avanzados Los ejercicios propuestos en esta sección siguen una estructura escalonada. Desde el análisis de un programa complejo sobre el que se propone una modificación no muy complicada hasta el desarrollo completo de una aplicación de cálculo matricial, se van a proponer tres ejercicios con diversos apartados cada uno de ellos.

Ejercicio 1. Resolución de sistemas de ecuaciones. El código del programa a analizar se encuentra en los archivos ecuaciones.c y ecuaciones.h. Se trata de un programa que resuelve sistemas de dos ecuaciones lineales con dos incógnitas. En primer lugar será necesario compilar el programa y estudiarlo. En segundo lugar se propone realizar las siguientes modificaciones:

• ampliarlo para resolver sistemas de tres ecuaciones con tres incógnitas. • Continuando con la modificación anterior, estudiar su ampliación a un número

arbitrario de ecuaciones e incógnitas. • Modificar el programa para que trabaje con números complejos en lugar de números

reales. La entrada de datos en esta versión puede ser menos flexible que en el programa original.

Ejercicio 2. Ampliación del programa de filtro FIR visto en clase. En las clases de teoría se puso como ejemplo un sencillo programa que realiza un filtro FIR. Este código con algunas ampliaciones para la entrada de datos y la presentación de resultados se encuentra en el archivo filtroFIR.c. Los ejercicios que se proponen en este caso son:

• modificar el programa para que trabaje con un número arbitrario de datos y que la entrada de datos se realice desde un fichero, con el formato que se quiera (texto o binario).

• Permitir volcar los datos de salida en un fichero, con el formato que se quiera. • Realizar una nueva versión del programa que trabaje con números complejos.

Page 10: Prácticas de programación en C con MinGW Developer Studiomermaja.act.uji.es/docencia/ET1032/data2013/ProgC/PracticasC.pdf · Ahora el compilador ya puede trabajar con nuestro ...

ET1032 Informática Industrial Prácticas de programación en C con MinGW Developer Studio

Germán Fabregat Llueca Arquitectura y Tecnología de Computadores

Ejercicio 3. Cálculo matricial. En este último ejercicio se propone realizar un conjunto de funciones de cálculo matricial y un programa que gestione la entrada y salida de datos (por teclado, pantalla y ficheros). El conjunto de funciones a implementar se realizara en las siguientes fases:

• primero suma y resta de matrices de cualquier dimensión. • En segundo lugar, producto de matrices. • El último ejercicio propuesto requiere del cálculo del determinante de una matriz

cuadrada y la realización de la matriz inversa de una dada.

Page 11: Prácticas de programación en C con MinGW Developer Studiomermaja.act.uji.es/docencia/ET1032/data2013/ProgC/PracticasC.pdf · Ahora el compilador ya puede trabajar con nuestro ...

ET1032 Informática Industrial Prácticas de programación en C con MinGW Developer Studio

Germán Fabregat Llueca Arquitectura y Tecnología de Computadores

Prácticas de programación en C

con MinGW Developer Studio

Evaluación de las prácticas A continuación se enumeran los ejercicios que es necesario entregar para la evaluación de esta parte de las prácticas y se establecen los criterios que se van a tener en cuenta para su calificación.

Ejercicio 1. Uso de punteros y datos en memoria. Ambos apartados que se describen a continuación son obligatorios para todos los grupos.

a) Entregar por escrito el apartado 2 del segundo de los ejercicios básicos. Se requiere entregar un documento en el que se muestren las direcciones de memoria que aparecen al ejecutar el programa con textos de depuración, y se explique adecuadamente su relación con la posición de las variables en memoria y sus tipos.

b) Entregar por escrito el apartado 2 del tercer ejercicio básico: añadir comentarios a la función lee_colores. Se requiere que se comente adecuadamente la función para que sea posible comprender qué hace, en detalle. Se ha de indicar el uso de cada variable y el porqué de las operaciones que se realizan. Se puede redactar como texto en formato libre, no es necesario que se siga el de los comentarios incluidos en el código.

Ejercicio 2. Aritmética con números complejos. El primero de los apartados que se indican es obligatorio para todos los grupos, dado que es requisito para cualquiera de los apartados dos y tres. De estos últimos, los grupos de dos personas deben elegir exclusivamente uno; los de tres deben implementarlos todos.

a) Realizar una pequeña biblioteca (conjunto de funciones) que realice aritmética con números complejos. Además de definir un tipo de datos adecuado, se deben implementar al menos las cuatro operaciones básicas suma, resta, multiplicación y división.

b) Utilizar la biblioteca creada para realizar el apartado 3 del ejercicio avanzado número uno.

c) Utilizar la biblioteca creada para realizar el apartado 3 del ejercicio avanzado número dos.

Page 12: Prácticas de programación en C con MinGW Developer Studiomermaja.act.uji.es/docencia/ET1032/data2013/ProgC/PracticasC.pdf · Ahora el compilador ya puede trabajar con nuestro ...

ET1032 Informática Industrial Prácticas de programación en C con MinGW Developer Studio

Germán Fabregat Llueca Arquitectura y Tecnología de Computadores

Ejercicio 3. Cálculo matricial. Este ejercicio es obligatorio para todos los grupos. Consiste en desarrollar una biblioteca de cálculo matricial que defina un tipo de datos adecuado para las matrices y realice las operaciones básicas de suma, resta y multiplicación. Se corresponde con los apartados uno y dos del tercer ejercicio avanzado. En esta versión de implementación obligatoria, la entrada y salida de datos puede realizarse por consola (pantalla y teclado).

Ejercicio 4. Datos en ficheros. Se proponen dos ejercicios que amplían alguno de los anteriores utilizando entrada y salida de datos en ficheros. En ambos casos se deben permitir las opciones de trabajar con datos en formato binario o transformados en cadenas de texto. Los grupos de dos personas deben elegir exclusivamente uno; los de tres deben implementarlos ambos.

a) Modificar cualquier versión (la entregada en clase o la desarrollada en el ejercicio 2) del programa de filtrado FIR para obtener datos y escribir resultados en ficheros.

b) Ampliar el programa de cálculo matricial del apartado anterior para poder leer y escribir matrices en ficheros.

Ejercicio 5. Programación avanzada. La realización de este ejercicio es opcional. Realizar uno de los dos apartados sumará hasta dos puntos a la nota y se tendrá en cuenta en el caso de optar a la máxima calificación de la asignatura.

a) Implementar el segundo apartado del ejercicio avanzado 1: ampliar el programa para que resuelva sistemas lineales de n ecuaciones con n incógnitas.

b) Implementar el apartado tercero del último ejercicio avanzado: realizar el determinante y la inversa de una matriz.

Criterios de evaluación. Los criterios que se indican a continuación son válidos exclusivamente para los ejercicios de programación. El ejercicio 1 se evaluará según su corrección, claridad en las explicaciones y homogeneidad y limpieza en la presentación.

1. Corrección del código. Si los programas son correctos y se ejecutan sin errores la calificación mínima será de 4 puntos sobre 10.

2. Calidad del código. Se valorará que el código sea adecuado, que los tipos de datos sean correctos y que los algoritmos sean eficientes. Se penalizará el uso de código redundante o que no se empleen los tipos de datos requeridos en cada caso. Este apartado sumará hasta 2 puntos a la nota final.

3. Estructura y mantenibilidad del código. Se valorará con hasta 2 puntos una correcta estructuración del código, la inclusión de comentarios pertinentes para la comprensión del mismo y la inclusión de información para su depuración.

4. Usabilidad. Se puntuará hasta 2 la realización de una interfaz de usuario comprensible y amigable para el uso de los programas, así como el tratamiento adecuado de los errores de ejecución predecibles.