Universidad de Costa Rica
Escuela de Ciencias de la Computación e Informática
CI-1201 Programación II - 2014b
Profesor Jeisson Hidalgo-Céspedes
Un cliente le ha contratado porque desea un programa que le ayude a desplegar números al estilo de un LED display. El cliente quiere que el programa pueda usarse en diversos contextos con diferentes fuentes de datos, por lo que han acordado implementar un comando led
con la siguiente interfaz:
$ led --help Usage: led [-s SIZE] [NUMBERS] [FILES] Print NUMBERS in LED display format. Options: -h, --horizontal=ch Sets the horizontal character, default='-' -s, --size=SIZE Sets the font size, default=2 -v, --vertical=ch Sets the vertical character, default='|' --version Print version of this program If not parameters are given, read numbers from standard input until EOF $
El programa recorre todos los números provistos y los despliega utilizando el formato LED. Cada dígito ocupa SIZE + 2
columnas y 2*SIZE + 3
filas. Debe haber una columna de blancos entre un dígito y el siguiente. Si hay varios números, debe haber una fila de blancos entre ellos. Por ejemplo:
$ led -s 1 0123456789 - - - - - -- - - | | | | | | | | | | | | | | - - - - - - - | | | | | | | | | | | | | - - - - - - - $ led 0123456789 -- -- -- -- -- --- -- -- | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- -- -- -- -- -- -- | | | | | | | | | | | | | | | | | | | | | | | | | | -- -- -- -- -- -- -- $ led -s 3 0123456789 --- --- --- --- --- ---- --- --- | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- --- --- --- --- --- --- | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- --- --- --- --- --- --- $
Los parámetros -h
y -v
permiten cambiar los caracteres horizontales y verticales. Por ejemplo:
$ led -h '#' -v '#' 135 69 ## ## # # # # # # ## ## # # # # # # ## ## ## ## # # # # # # ## ## # # # # # # ## ## $
El parámetro --help
imprime ayuda del programa y hace que termine de inmediato. El parámetro --version
provoca que el programa imprima al menos la versión, la fecha de generación, el autor, información de contacto y licencia. Ambos parámetros son excluyentes. Es decir, si el usuario provee otros parámetros, se ignorarán. El argumento --help
tiene la mayor prioridad.
$ led -h # --version -v # 135 69 led v1.0 [2014-Aug-26] Jeisson Hidalgo-Céspedes <jeissonh@gmail.com> This is free software distributed under Creative Commons Attribution 4.0 International (CC BY 4.0) license. $
A modo de ejemplo puede estudiar el programa arrmat (contracción de arreglo-matriz). Este programa de C crea tres arreglos/matrices y las imprime en la pantalla.
--help
. Imprime la versión del programa y demás información con el parámetro --version
. Ignora el resto de parámetros en ambos casos. El orden de los demás parámetros no importa.--size
. Separa dígitos por una columna de blancos y números por una fila de blancos.-h
y -v
, o sus sinónimos --horizontal=ch
y --vertical=ch
.Esta tarea es de carácter individual. Comprima únicamente el código fuente (archivos .h
y .c
) y súbalos a Mediación Virtual en la asignación con nombre Tarea02
.