cmdLine
Ejercicio de Autoevaluaci贸n¶
Prueba de programas
El siguiente ejercicio plantea el problema que supone probar el funcionamiento de diferentes funciones de un programa controlando su ejecuci贸n desde los argumentos en la l铆nea de orden. Es decir, seg煤n qu茅 argumentos se le pasan el programa, se ejecutan unas u otras funciones
Este ejercicio sirve tambi茅n como ejemplo de programa multisource elemental y deber铆a realizarse siguiendo las pautas indicadas en el Dec谩logo. Se recomienda repasar los ejemplos de la entrada Ej 1stC
Plantillas de c贸digo¶
La soluci贸n requiere, al menos, dos archivos fuente:
- El primero se denomina tester.c es el programa probador desde donde se controla la ejecuci贸n del programa a probar
- Se ocupar谩 de parsear correctamente los argumentos en la l铆nea de orden
tester.c 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/* * Esqueleto programa principal * Completar el c贸digo para procesar los argumentos en la l铆nea * de orden e invocar a las funciones en ejemplo.c * * Created on: 29 sept. 2021 * Author: santiago */ #include "ejemplo.h" int main (int argc, char *argv[]) { int ret = OK; return ret; } - El segundo se denomina ejemplo.c y contiene el c贸digo de las funciones objeto de prueba
- Para la necesaria conversi贸n de tipos de los argumentos se recomienda el uso de las llamadas al sistema atoi() y atof()
ejemplo.c 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
/* * Esqueleto ejemplo.c * Escribir el c贸digo de las funciones para procesar los argumentos * y mostrar en pantalla el resultado que proceda en cada caso * * Created on: 29 sept. 2021 * Author: santiago */ #include "ejemplo.h" /* * Ejemplo de funci贸n sin argumentos */ int ej0 (void) { } /* * Ejemplo de funci贸n con dos strings como argumentos */ int ej1 (char *str1, char *str2) { } /* * Ejemplo de funci贸n con un char,un int y un float como argumentos */ int ej2 (char c, int i, float f) { }
El bloque siguiente muestra el c贸digo en el archivo cabecera ejemplo.h que contiene las declaraciones de las funciones objeto de prueba por el programa
/*
* ejemplo.h
*
* Created on: 29 sept. 2021
* Author: santiago
*/
#include <stdio.h>
#include <stdlib.h>
#define OK 0
#define KO -1
int ej0 (void);
int ej1 (char *str1, char *str2);
int ej2 (char c, int i, float f);
Por 煤ltimo, la imagen muestra la salida resultante de varias ejecuciones del programa

Script bash de compilaci贸n¶
Puesto que lo m谩s frecuente ser谩 escribir programas multifuente que requieren de pruebas sistem谩ticas y repetitivas es muy recomendable escribir un script b谩sico en bash para compilar y montar los m贸dulos del programa. A continuaci贸n se muestra un programa que utiliza la instrucci贸n case para seleccionar la acci贸n de compilaci贸n
#!/bin/bash
case $1 in
ejemplo)
echo -e 'Compilando ejemplo.c\n'
gcc -Wall -c -o bin/ejemplo.o Ejercicio/ejemplo.c
;;
tester)
echo -e "Compilando tester.c\n"
gcc -Wall -c -o bin/tester.o Ejercicio/tester.c
;;
montar)
echo -e "Montando ejecutable CmdLineEj\n"
gcc -o bin/CmdLineEj bin/ejemplo.o bin/tester.o
;;
*)
echo -e "Argumento desconocido. Debe ser: [ejemplo,tester,montar]\n"
;;
esac