0% encontró este documento útil (0 votos)
122 vistas21 páginas

Curso de C

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 21

Cuaderno de pr

acticas
105000016 - Programaci
on para Sistemas
Grado en Ingeniera Inform
atica (2009)
Lenguajes y Sistemas Informaticos e Ingeniera de Software
Facultad de Informatica
Universidad Politecnica de Madrid
Curso 2010/2011
Semestre septiembre-enero
Revisi
on SVN 126/ 2010-09-22

Indice
1. Informaci
on general para las pr
acticas
1.1. Valoraci
on y pesos . . . . . . . . . . .
1.2. Apertura de cuenta . . . . . . . . . . .
1.3. Protecci
on frente a copias . . . . . . .
1.4. C
odigo fuente de apoyo . . . . . . . .
1.5. Recomendaciones generales . . . . . .
1.6. Tutoras, consultas y notificaciones . .
1.7. Normas de presentaci
on . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

2
2
2
2
3
3
4
4

2. Pr
actica 1: Programaci
on C
2.1. Instrucciones . . . . . . . . .
2.2. Evaluaci
on . . . . . . . . . .
2.3. Documentaci
on a Entregar .
2.4. tarea-1.1 . . . . . . . . . .
2.4.1. Programa delreves
2.4.2. Programa secuencia
2.5. tarea-1.2 . . . . . . . . . .
2.5.1. Programa bocabajo
2.5.2. Programa primos . .
2.6. tarea-1.3 . . . . . . . . . .
2.6.1. Programa factores
2.6.2. Programa analiza .

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

5
5
7
8
8
9
10
12
12
14
15
16
17

3. Pr
actica 2: Unix shell
3.1. tarea-2.1: Script minientrega.sh . . . . . . . . . . . . . . . . . . . . . . .

20
20

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

1.

Informaci
on general para las pr
acticas

1.1.

Valoraci
on y pesos

La realizaci
on de las tareas de las practicas es del grupo, por lo que la nota sera del grupo y
no individual.
La evaluaci
on de cada tarea se realizara de acuerdo a los puntos siguientes, caso de estar
incluidos en la misma:
Calidad del contenido y presentacion de los entregables de la tarea.
Exposici
on oral y defensa p
ublica de la tarea.
Sesi
on de evaluaci
on oral, que incluira tanto el contenido de la tarea como el material de
lectura obligatoria.
El peso de cada pr
actica en la nota total de practicas es el siguiente:
Programaci
on en C: 66 %
Unix Shell: 33 %

1.2.

Apertura de cuenta

Cada grupo dispondr


a en la m
aquina Linux del Centro de Calculo denominada triqui, de
sus cuentas personales accesibles con la misma identidad y palabra clave que otros sistemas del
Centro de C
alculo. Los alumnos podr
an utilizar la VPN de la Facultad para acceder a triqui
y el acceso deber
a realizarse a traves de SSH.

1.3.

Protecci
on frente a copias

Un objetivo fundamental del proyecto es conseguir que el alumno, con su realizacion, obtenga
una experiencia que le ser
a muy u
til en su vida profesional. Persiguiendo esta meta fundamental,
prestaremos especial interes en detectar los intentos de copia total o parcial de las tareas del
proyecto.
Para evitar problemas de confidencialidad y posibles copias, debera tenerse especial cuidado
en proteger las cuentas de accesos no deseados. Para ello se deben seguir las siguientes pautas:
En cuanto le abran la cuenta, proceda a entrar en la misma para protegerla.
Ponga inmediatamente una palabra clave de acceso a su cuenta usando el mandato passwd.
Pasado un tiempo desde su apertura, se procedera a cerrar las cuentas sin palabra clave.
Escoja una palabra clave que tenga caracteres especiales para que la proteccion sea mas
efectiva. No le diga su palabra clave a nadie.
Proteja el directorio home de su cuenta contra todo tipo de acceso de cualquier otro usuario
usando el mandato chmod 700 $HOME.
Cambie la mascara de creaci
on de ficheros para proteger cualquier fichero que cree en su
cuenta. Para ello a
nada al final del fichero .cshrc o del fichero .bashrc el mandato
umask 077.
No saque listados si no puede esperar a recogerlos.
2

Si sospecha que le han robado un listado o fichero con la solucion de alguna tarea, comunquelo al profesor de la misma utilizando correo electronico (mandato mail) y, MUY
IMPORTANTE, adjunte una copia de la version extraviada.
login: MiCuenta
Password: ****
sh> passwd
New password: MiComplejaPalabraClave
Retype new password: MiComplejaPalabraClave
sh>chmod 0700 $HOME
sh> echo umask 0077 >> $HOME/.cshrc
sh> echo umask 0077 >> $HOME/.bashrc

1.4.

C
odigo fuente de apoyo

El material de apoyo para la realizacion de las tareas que as lo requieran puede obtenerse del
directorio pps/pub/foo.a
no actual (suponga que el identificador de la tarea es foo). En dicho
directorio encontrar
a ficheros cuyo nombre identifica la tarea a la que pertenecen. Descomprima
y desempaquete dichos ficheros:
sh> cat pps/pub/foo.2010.tgz | tar xvfz -

1.5.

Recomendaciones generales

Para la redacci
on de los documentos con formato le sugerimos que utilice Open Office. Esto
le permitir
a exportar los ficheros a formato pdf, formato requerido para varios entregables.
Para la preparaci
on de los programas dispone de varios editores con interfaz alfanumerica,
como:
nano: Un editor sencillo muy f
acil de manejar.
vi : El editor est
andar de UNIX.
emacs: El editor de GNU que posee una gran potencia.
Editores sencillos con interfaz gr
afica y coloreado de programas son gedit, Scite, Kate. Tambien
existen entornos gr
aficos de desarrollo de software cuya utilidad se hace mas patente en grandes
proyectos. Algunos bastante utilizados y no demasiado complejos pueden ser Kdeveloper, Anjuta
o Code::Blocks.
Para facilitar el trabajo en equipo se recomienda utilizar un sistema de control de versiones.
En triqui es posible utilizar Subversion o Git.
En caso de duda sobre cualquier mandato o servicio del sistema operativo UNIX utilice el
mandato man, para obtener ayuda.
Antes de empezar una tarea, lea detalladamente:
El enunciado de la misma para obtener una idea clara de que es concretamente lo que se
le pide.
El material de lectura obligatoria. En caso de duda consulte el material recomendado y con
los profesores.
Antes de entregar una tarea, verifique concienzudamente:
3

El correcto funcionamiento de la misma.


Que cumple las Normas de Presentacion indicadas a continuacion.
Que incluye todos los entregables listados en la descripcion de la tarea, ademas de los dos
ficheros obligatorios autores.txt y bitacora.txt.

1.6.

Tutoras, consultas y notificaciones

La mayora de las consultas deber


an resolverse en las clases de trabajo en grupo, puesto que
permiten resolver de forma eficiente dudas o cuestiones que afecten a mas de un grupo.
Los horarios de tutoras estar
an expuestos en el tablon y/o en la hoja web de la asignatura.
Los alumnos deber
an respetar los horarios de tutoras.
Tambien se podr
an realizar consultas va correo electronico. Para ello deberan dirigirse a la
direcci
on
pps@fi.upm.es
Rogamos que las comunicaciones va correo electronico tengan un subject no vaco, suficientemente relevante y a poder ser utilizando el prefijo [PPS].
Las notificaciones a los alumnos se haran mediante notas en el tablon de anuncios, plataforma
Moodle o mediante correo electr
onico, por lo que los alumnos deberan estar atentos a dichos
medios de comunicaci
on.

1.7.

Normas de presentaci
on

Para cada tarea se dispondr


a de un directorio que identifica la asignatura, la tarea y el curso
al que pertenece: /pps/foo.2010/ (dos niveles desde el directorio home de la cuenta). Este
directorio se crea directamente al desempaquetar el software de apoyo en el directorio home del
alumno.
En dicho directorio han de incluirse todos los entregables, cada uno en el formato especificado en el enunciado de la tarea, ademas de los dos ficheros especificados a continuacion. La
codificaci
on de caracteres de todos los ficheros debera ser UTF81 .
Para realizar la entrega se deber
a ejecutar el mandato entrega.pps que esta en el directorio
/usr/local/bin/.
Hay que asegurarse que la entrega se realiza correctamente. En caso de error, la utilidad de
entrega lo indicara. Este mandato realiza la recoleccion de los ficheros indicados en el apartado
Documentaci
on a Entregar de cada tarea.
Cada entrega ha de incluir obligatoriamente los dos ficheros siguientes:
autores.txt Fichero con los datos de los autores de la tarea. Cada integrante del grupo debe
ocupar una lnea en dicho fichero. Cada lnea presentara cinco tiras de caracteres separadas por
blancos o tabuladores (no separar con blanco los nombres compuestos, separarlos con el smbolo
): DNI, primer apellido, segundo apellido, nombre y n
umero de matrcula. Veamos un ejemplo:
12456212 Garc
a De\_La\_Torre Mar
a\_Dolores 910347
76354524 Hernado Pulido Isabel 930019
1 El programa iconv convierte entre diferentes codificaciones y casi todos los editores de texto pueden personalizarse para que soporten y generen la codificaci
on deseada.

bitacora.txt Fichero que documenta el material que se entrega y ha de usarse a modo de


bit
acora del desarrollo de la tarea. Debera contener los siguientes puntos (no necesariamente
con esta estructura mostrada):
Ttulo de la tarea.
Autores
Fecha de cada entrega realizada con comentario indicando el nivel de completitud.
Indice de contenidos con referencias al propio documento.
Sobre del desarrollo:
Descripci
on general de los trabajos realizados.
Definici
on de terminos o conceptos relevantes o nuevos.
Problemas encontrados y resolucion de los mismos.
Conocimientos relevantes adquiridos.
Bibliografa y referencias utilizadas, con comentarios sobre su interes.
Tiempo dedicado en la realizacion.
Comentarios personales positivos o negativos sobre el contenido o metodo de realizacion
de la tarea.
Este documento, para ser de calidad, debera cumplir los siguientes requisitos:
Presentar una estructura l
ogica en sus contenidos.
Estar convenientemente formateada, para facilitar su lectura.
Tratar con claridad y con suficiencia cada tema abordado.
NO incluir c
odigo fuente ni el contenido de otros entregables.

2.

Pr
actica 1: Programaci
on C

Se desea que realice una serie de peque


nos programas en C que le permitiran afianzar sus
conocimientos sobre este lenguaje. En las siguientes secciones se describira en detalle cada uno
de los programas a realizar.

2.1.

Instrucciones

En la presente secci
on se recogen ciertos aspectos del comportamiento general, que seran de
aplicaci
on a todos los programas a realizar.
Identificaci
on de los programas
Cada programa ser
a identificado por el nombre que recibira su ejecutable (ej. secuencia).
Cada programa derivar
a de un u
nico fichero fuente en C del el mismo nombre, pero con extension
.c (ej. secuencia.c).

Argumentos de los programas


Todo programa es invocado escribiendo el nombre del ejecutable correspondiente. A la derecha de este nombre (y separado por blancos o tabuladores) podemos escribir otros textos, que
denominamos argumentos. Estos argumentos estaran disponibles para ser usados por el proceso
que se ejecuta (el programa en ejecuci
on).
Si el programa fue escrito en C, los argumentos podran ser accedidos a traves de los dos
primeros par
ametros formales de la funcion principal:
main(int argc, char*argv[], char*envp[])
La manera en que un programa utiliza sus argumentos puede ser muy variada, pero generalmente se utilizan para parametrizar su propio comportamiento.
A continuaci
on se describe la sintaxis empleada en la descripcion de los argumentos de los
programas.
-x
Esta es la notaci
on corta, un signo menos (-) y una letra (en este caso una x). Se indica
una opci
on del programa.
--help
Esta es la notaci
on larga, dos signos menos (--) y una palabra (en este caso help). Se
indica una opci
on del programa.
-t segundos
Las opciones se usan para condicionar el comportamiento del programa. Algunas opciones
pueden indicar c
omo interpretar el sigiente argumento como parametro del programa.
[arg]
Mediante esta notaci
on se indica una parte opcional que puede aparecer o no.
arg...
Mediante esta notaci
on se indica una parte que puede aparecer una o varias veces.
Opciones de los programas
De forma general, todos los programas que se pide que usted desarrolle debe admitir la
siguiente opci
on.
-h | --help
Todo programa debe reconocer el caso en que sea invocado con esta opcion como u
nico argumento. El usuario est
a solicitando ayuda. El programa debe emitir por la salida
est
andar un texto breve indicando que hace el programa y que parametros admite. A
continuaci
on, el programa debe terminar correctamente, esto es, con valor de terminacion
cero.
Valores de terminaci
on de los programas
No existe acuerdo en el significado de los valores de terminacion exceptuando que todo programa que termina correctamente, lo hace con el valor de terminacion cero (man 3 exit).
No obstante, para esta pr
actica, intentaremos adoptar el intento de estandarizacion realizado
por BSD con <sysexits.h>.

Todo programa debe realizar ciertas comprobaciones sobre la correccion de sus argumentos,
datos de entrada, servicios que utiliza, etc. Si alguna comprobacion falla, debe emitir por el
est
andar error un mensaje de error de dos lneas con el siguiente formato:
" %s: Error( %s), %s.\n"
" %s+ %s.\n"
Cada lnea ir
a prefijada con el nombre del programa que la emite. La primera indicara el codigo simb
olico del error y una descripcion generica del mismo. La segunda lnea presentara una
descripci
on detallada de la raz
on de dicho error.
Ejemplo
secuencia: Error(EX_USAGE), uso incorrecto del mandato. "Success"
secuencia+ El signo de "paso" no permite recorrer el intervalo en ...
A continuaci
on, el programa debe terminar con el valor de terminacion indicado.
Recomendaciones generales
All
a donde se le sugiera que consulte el manual, cons
ultelo. Le ahorrara mucho tiempo.
Respete el tipo del texto (may
usculas y min
usculas) alla donde, en este documento, se
presente un formato, un nombre de fichero, de variable, etc.
Sea sumamente estricto con los formatos de entrada y salida mencionados en este documento. S
olo se podr
a evaluar correctamente su practica si se ajusta a los formatos indicados.

2.2.

Evaluaci
on
Cada uno de los programas que se desea que realice seran probados exhaustivamente.
S
olo se dar
an por buenos los programas que pasen todas las pruebas.
Podr
a realizar los programas en cualquier orden, no necesariamente en el orden en que se
presentan en este documento.
El peso sobre la nota de esta pr
actica correspondiente a cada uno de los programas que se
piden ser
a el siguiente:
10 puntos. Secci
on 2.4.1.
12 puntos. Secci
on 2.4.2.
15 puntos. Secci
on 2.5.1.
17 puntos. Secci
on 2.5.2.
20 puntos. Secci
on 2.6.1.
26 puntos. Secci
on 2.6.2.
100 puntos. Valoraci
on total de la practica 1.

2.3.

Documentaci
on a Entregar

Para su desarrollo, esta pr


actica se divide en tres tareas (tarea-1.n donde n sera 1, 2 o 3
para indicar cada tarea) con fecha de entrega independiente.
Adem
as de las tres tareas, existe una entregar preliminar que se realizara con el siguiente
mandato:
entrega.pps tarea-1.0
Con este mandato siempre se recogeran los siguientes ficheros:
autores.txt
Descrito en la secci
on 1.7.
estudio.txt
Estudio preliminar de la pr
actica, donde se estimen las tareas a realizar, su complejidad,
tiempo estimado de desarrollo y reparto previsto entre los miembros del grupo.
El mandato para realizar cada entregar parcial o final de cada tarea:
entrega.pps tarea-1.n
Con este mandato siempre se recogeran los siguientes ficheros:
autores.txt
Descrito en el apartado Normas de Presentaci
on del documento Informaci
on General
para el Proyecto.
bitacora.txt
Descrito en el apartado Normas de Presentaci
on del documento Informaci
on General
para el Proyecto.
auxiliar.c
Este fichero fuente podr
a ser utilizado para contener funciones auxiliares, u
tiles para varios
de los programas. Si no va a utilizar este fichero, debe dejarlo tal cual lo encuentre.
auxiliar.h
Este fichero de cabecera deber
a contener los prototipos de las funciones auxiliares definidas
en auxiliar.c. Los programas que deseen utilizar dichas funciones deberan incluir este
fichero de cabecera. Si no va a utilizar este fichero, debe dejarlo tal cual lo encuentre.

2.4.

tarea-1.1

Ficheros extras a entregar


Con cada entrega parcial de esta tarea se recogeran ademas de los ficheros indicados en la
secci
on 2.3:
delreves.c
Fichero fuente correspondiente al programa delreves. Aunque no se vaya a realizar este
programa, este fichero deber
a existir.
secuencia.c
Fichero fuente correspondiente al programa secuencia. Aunque no se vaya a realizar este
programa, este fichero deber
a existir.
8

2.4.1.

Programa delreves
delreves [ fichero... ]

Puede recibir cualquier n


umero de nombres de fichero de tipo char *.
Descripci
on
Este programa procesa cada fichero en el orden indicado (o en su defecto, la entrada
est
andar) leyendo cada lnea del mismo (considerando un maximo de 2048 caracteres por lnea)
y emite por su salida est
andar dichas lneas previa inversion del contenido de las mismas
(contenido identico pero ledo de derecha a izquierda).
Valores de Terminaci
on
EX OK Terminaci
on correcta.
EX NOINPUT El fichero "FICHERO"2 no puede ser ledo.
Ejemplos
$ delreves -h
delreves: Uso: delreves [ fichero... ]
delreves: Invierte el contenido de las l
neas de los ficheros (o de la entrada).
$ echo "abcdefg" | delreves
gfedcba
$ cat fich1
uno
dos
tres
cuatro
$ cat fich2
A
Be
Ce
De
E
$ delreves fich1 fich2
onu
sod
sert
ortauc
A
eB
eC
eD
E
$
2 FICHERO

representa el nombre real del fichero.

Consulte el Manual
man 3 fprintf
Para emitir mensajes con formato.
man 3 fopen
Para abrir ficheros.
man 3 fgets
Para leer lneas de texto.
man 3 fputs
Para escribir lneas de texto.
man 3 fclose
Para cerrar los ficheros abiertos.
2.4.2.

Programa secuencia
secuencia [ hasta [ desde [ paso ]]]

Todos estos argumentos contienen un valor de tipo real y el valor por defecto para ellos es:
hasta = 10, desde = 1 y paso = 1.
Descripci
on
Este programa genera por su salida est
andar la secuencia de los n
umeros que van desde el
valor desde, hasta el valor hasta (sin superarlo), avanzando en el sentido y al paso indicados
por paso.
Este programa genera un n
umero por lnea con el siguiente formato: "\t %g\n" (sin espacios).
Entorno
Utiliza la variable de entorno MAX OUTPUT para controlar que, en ning
un caso, se produzcan
m
as de esta cantidad de n
umeros. Si esta variable no existe o no contiene un valor entero no
negativo, se debe asumir el valor por defecto de 100.
Valores de Terminaci
on
EX OK Terminaci
on correcta.
EX USAGE El par
ametro "paso" no es un n
umero real valido.
EX USAGE El par
ametro "paso" no puede valer 0.
EX USAGE El par
ametro "desde" no es un n
umero real valido.
EX USAGE El par
ametro "hasta" no es un n
umero real valido.
EX USAGE El signo de "paso" no permite recorrer el intervalo en el sentido "desde" a "hasta".
EX USAGE El n
umero de argumentos no es correcto.
EX NOPERM Se intent
o superar el lmite de salida establecido por MAX OUTPUT.

10

Ejemplos
$ secuencia -h
secuencia: Uso: secuencia [ hasta [ desde [ paso ]]]
secuencia: Genera la secuencia de n
umeros en el intervalo y paso indicados.
$ secuencia
1
2
3
4
5
6
7
8
9
10
$ secuencia 5
1
2
3
4
5
$ secuencia 5 3
3
4
5
$ secuencia -0.9 2 -0.5
2
1.5
1
0.5
0
-0.5
$ secuencia 10-1 1
secuencia: Error(EX_USAGE), uso incorrecto del mandato. "Success"
secuencia+ El par
ametro "hasta" no es un n
umero real v
alido.
$ secuencia 1 2 3 4
secuencia: Error(EX_USAGE), uso incorrecto del mandato. "Success"
secuencia+ El n
umero de argumentos no es correcto.
$ secuencia 10 1 -1
secuencia: Error(EX_USAGE), uso incorrecto del mandato. "Success"
secuencia+ El signo de "paso" no permite recorrer el intervalo en el sentido "desde"
$ secuencia 105
1
2
...
100
secuencia: Error(EX_NOPERM), permiso denegado. "Success"
secuencia+ Se intent
o superar el limite de salida.

11

$
Consulte el Manual
man 3 fprintf
Para emitir mensajes con formato.
man 3 strtod
Para extraer el double contenido en una tira de caracteres.
man 3 strtol
Para extraer el long contenido en una tira de caracteres.
man 3 getenv
Para acceder al valor de una variable de entorno.

2.5.

tarea-1.2

Ficheros extras a entregar


Con cada entrega parcial de esta tarea se recogeran ademas de los ficheros indicados en la
secci
on 2.3:
bocabajo.c
Fichero fuente correspondiente al programa bocabajo. Aunque no se vaya a realizar este
programa, este fichero deber
a existir.
primos.c
Fichero fuente correspondiente al programa primos. Aunque no se vaya a realizar este
programa, este fichero deber
a existir.
pruebas.sh
Shell script que sea capaz de evaluar la funcionalidad de los programas realizados. Deber
a seguir el modelo dado para ejemplo.c.
pruebas.pdf
Documento que cuente de forma mas completa y legible la especificacion de las pruebas
planteadas y efectivamente implementadas en pruebas.sh.
2.5.1.

Programa bocabajo
bocabajo [ fichero... ]

Puede recibir cualquier n


umero de nombres de fichero de tipo char *.
Descripci
on
Este programa procesa cada fichero en el orden indicado (o en su defecto, la entrada
est
andar) leyendo cada lnea del mismo (considerando un maximo de 2048 caracteres por lnea)
y emite por su salida est
andar dichas lneas pero en orden inverso, es decir, la primera lnea
del primer fichero deber
a ser la u
ltima mostrada, y la primera mostrada la u
ltima del u
ltimo
fichero.

12

Valores de Terminaci
on
EX OK Terminaci
on correcta.
EX NOINPUT El fichero "FICHERO" no puede ser ledo.
EX OSERR No se pudo ubicar la memoria dinamica necesaria.
Ejemplos
$ bocabajo -h
bocabajo: Uso: bocabajo [ fichero... ]
bocabajo: Invierte el orden de las l
neas de los ficheros (o de la entrada).
$ cat fich1
uno
dos
tres
cuatro
$ cat fich2
A
Be
Ce
De
E
$ bocabajo fich1 fich2
E
De
Ce
Be
A
cuatro
tres
dos
uno
$
Consulte el Manual
man 3 fprintf
Para emitir mensajes con formato.
man 3 fopen
Para abrir ficheros.
man 3 fgets
Para leer lneas de texto.
man 3 fputs
Para escribir lneas de texto.
man 3 fclose
Para cerrar los ficheros abiertos.

13

man 3 malloc
Para ubicar memoria din
amica.
man 3 strdup
Replicar una tira de caracteres en memoria dinamica.
2.5.2.

Programa primos
primos [ hasta [ desde ]]

Todos estos argumentos contienen un valor de tipo entero pero solo deben admitirse valores
mayores que 0, y el valor por defecto para ellos es: hasta = 100 y desde = 1.
Descripci
on
Este programa genera por su salida est
andar la secuencia ascendente de los n
umeros primos
comprendidos entre los valores desde y hasta, ambos inclusive.
Este programa genera un n
umero primo por lnea con el siguiente formato: "\t %ld\n".
Entorno
Utiliza la variable de entorno MAX OUTPUT para controlar que, en ning
un caso, se produzcan
m
as de esta cantidad de n
umeros. Si esta variable no existe o no contiene un valor entero no
negativo, se debe asumir el valor por defecto de 100.
Valores de Terminaci
on
on correcta.
EX OK Terminaci
ametro "desde" no es un n
umero entero positivo.
EX USAGE El par
EX USAGE El par
ametro "hasta" no es un n
umero entero positivo.
EX USAGE El par
ametro "desde" ha de ser menor o igual que "hasta".
EX USAGE El n
umero de argumentos no es correcto.
EX OSERR No se pudo ubicar la memoria dinamica necesaria.
EX NOPERM Se intent
o superar el lmite de salida establecido por MAX OUTPUT.
Ejemplos
$ primos -h
primos: Uso: primos [ hasta [ desde ]]
primos: Genera los n
umeros primos comprendidos en el intervalo indicado.
$ primos
2
3
5
7
11
13

14

...
89
97
$ primos 10
2
3
5
7
$ primos 7 7
7
$ primos 6 7
primos: Error(EX_USAGE), uso incorrecto del mandato. "Success"
primos+ El par
ametro "desde" ha de ser menor o igual que "hasta".
$ primos 547
2
3
...
541
primos: Error(EX_NOPERM), permiso denegado. "Success"
primos+ Se intent
o superar el limite de salida.
$
Consulte el Manual
man 3 fprintf
Para emitir mensajes con formato.
man 3 strtol
Para extraer el long contenido en una tira de caracteres.
man 3 getenv
Para acceder al valor de una variable de entorno.

2.6.

tarea-1.3

Ficheros extras a entregar


Con cada entrega parcial de esta tarea se recogeran ademas de los ficheros indicados en la
secci
on 2.3:
factores.c
Fichero fuente correspondiente al programa factores. Aunque no se vaya a realizar este
programa, este fichero deber
a existir.
analiza.c
Fichero fuente correspondiente al programa analiza. Aunque no se vaya a realizar este
programa, este fichero deber
a existir.
pruebas.sh
Shell script que sea capaz de evaluar la funcionalidad de los programas realizados. Deber
a seguir el modelo dado para ejemplo.c.

15

pruebas.pdf
Documento que cuente forma m
as completa y legible la especificacion de las pruebas planteadas y efectivamente implementadas en pruebas.sh.
2.6.1.

Programa factores
factores

Este programa no admite ning


un argumento que se le pase.
Descripci
on
Este programa factoriza los n
umeros enteros no negativos presentes en su entrada est
andar
y emite por su salida est
andar factores primos de dichos n
umeros.
Detalle
Procesa su entrada est
andar hasta error o final de fichero (indicado por teclado con un
Ctrl-D) leyendo tiras de caracteres de un maximo de 80 caracteres con el formato " %80s".
Si la tira leda no es un n
umero entero no negativo correcto, emite por el est
andar error
un mensaje de error indicando el contenido de la tira con el formato
ua procesando su
"factores: \" %s\" no es un entero no negativo.\n" y contin
entrada.
Para cada n
umero entero no negativo correcto emite por su salida est
andar una lnea de
texto (terminada con un "\n") con cada uno de sus factores primos en orden creciente, con el
formato "\t %ld".
Si el n
umero no tiene factores (es 0 o 1 o es primo), la lnea consistira exclusivamente en el
propio n
umero con el formato " %ld\n".
Valores de Terminaci
on
EX OK Terminaci
on correcta.
EX USAGE El n
umero de argumentos no es correcto.
EX OSERR No se pudo ubicar la memoria dinamica necesaria.
Ejemplos
$ factores -h
factores: Uso: factores
factores: Factoriza los n
umeros presentes en su entrada est
andar.
$ echo "" | factores
$ echo "1 2 3 4 5 6" | factores
1
2
3
2
2
5
2
3
$ echo "1_UNO 9 tres_3 101" | factores
factores: "1_UNO" no es un entero no negativo.
16

3
3
factores: "tres_3" no es un entero no negativo.
101
$
Consulte el Manual
man 3 fprintf
Para emitir mensajes con formato.
man 3 strtol
Para extraer el long contenido en una tira de caracteres.
man 3 sqrt
Para realizar la raz cuadrada de un n
umero.
2.6.2.

Programa analiza
analiza [ hasta [ desde [ intervalos ]]]

Los dos primeros argumentos contienen un valor de tipo real y el tercero contiene un valor
de tipo entero. El valor por defecto para ellos es: hasta = 100, desde = 0 y intervalos
= 100.
Descripci
on
Este programa realiza un peque
no analisis frecuencial y estadstico sobre los n
umeros reales
presentes en su entrada est
andar y, finalmente, muestra por su salida est
andar el resultado,
consistente en un histograma y las medidas estadsticas realizadas.
Detalle
Procesa su entrada est
andar hasta error o final de fichero (invocado por teclado con un
Ctrl-D) leyendo tiras de caracteres de un maximo de 80 caracteres con el formato " %80s".
Si la tira leda no es un n
umero real correcto, emite por el est
andar error un mensaje de
error indicando el contenido de la tira con el formato
umero real v
alido.\n" y contin
ua procesando su en"analiza: \" %s\" no es un n
trada.
Para cada n
umero real correcto lo contabiliza en el histograma en el intervalo correspondiente
y acumula informaci
on estadstica sobre el.
Histograma Para la realizaci
on del histograma se considera la division del rango numerico ascendente (desde, hasta] (abierto por la izquierda) en el n
umero de intervalos especificado
(mnimo 1). Todos estos intervalos son de igual tama
no y se consideran abiertos por su izquierda
y cerrados por su derecha, es decir, un determinado n
umero corresponde a un intervalo s y solo
si cumple que es estrictamente mayor que el lmite inferior del intervalo y menor o igual que
el lmite superior del intervalo. As mismo se consideran automaticamente otros dos intervalos:
(nf, desde], para todos los n
umeros menores o iguales que desde y (hasta, +nf), para todos
los n
umeros estrictamente mayores a hasta.
Asociado a cada uno de los intervalos indicados se gestiona un contador (todos ellos con valor
inicial 0) que ha de incrementarse con cada n
umero que corresponde a dicho intervalo.
17

La presentaci
on del histograma consiste en una lnea por intervalo (en orden creciente), reflejando los lmites del mismo y el valor final del contador asociado, con los siguientes formatos:
"(-oo, %g]\t %lu\t", para el de n
umeros menores o iguales a desde, "( %g, %g]\t %lu\t",
para cada uno de los intervalos establecidos y "( %g,+oo)\t %lu\t", para el de n
umeros estrictamente mayores a hasta Observe que la notacion empleada para referirse al valor infinito
son dos oes min
usculas oo.
Opcionalmente, si lo desea, a la derecha de este formato, pero en la misma lnea, puede
incluirse una representaci
on gr
afica del valor del contador utilizando asteriscos u otro caracter.
Estadsticas Las medidas estadsticas a realizar son la media y la desviacion estandar. Estas
medidas vienen dadas por las siguientes expresiones matematicas donde n es el n
umero de valores
muestreados y {xi : i = 1, . . . , n} son valores muestreados:
i=n

media =

desviacion =

1X
xi
n i=1

v
u i=n
uP 2
u
t i=1 xi


2
P
1 i=n

xi
n i=1
n1

La presentaci
on de la informaci
on estadstica consiste en la presentacion (por la salida
est
andar) de dos lneas, con el siguiente formato: "Media: %g\n" y "Desviacion: %g\n"
mostrando el correspondiente valor estadstico.
Hay dos casos especiales (cuando el n
umero de muestras es cero y cuando es uno) en que
alguno de estos valores no puede ser calculados. En tales casos, en vez del valor, debe mostrarse
el mensaje "No disponible".
Valores de Terminaci
on
EX OK Terminaci
on correcta.
EX USAGE El par
ametro
ntervalos" no es un n
umero entero positivo.
ametro
ntervalos" ha de ser 1 como mnimo.
EX USAGE El par
ametro "desde" no es un n
umero real valido.
EX USAGE El par
EX USAGE El par
ametro "hasta" no es un n
umero real valido.
EX USAGE El par
ametro "hasta" no es mayor que el parametro "desde".
EX USAGE El n
umero de argumentos no es correcto.
EX OSERR No se pudo ubicar la memoria dinamica necesaria.
Ejemplos
$ analiza -h
analiza: Uso: analiza [ hasta [ desde [ intervalos ]]]
analiza: Histograma y estad
sticas sobre los n
umeros reales le
dos.
$ echo "" | analiza
(-oo,0] 0
18

(0,1]
0
(1,2]
0
...
(99,100]
0
(100,+oo)
0
Media: No disponible
Desviaci
on: No disponible
$ echo "1 2 3 4 4 5 6" | analiza 6 0 3
(-oo,0] 0
|
(0,2]
2
|||
(2,4]
3
||||
(4,6]
2
|||
(6,+oo) 0
|
Media: 3.57143
Desviaci
on: 1.71825
$ od -t u1 analiza.c | cut -c 8- | ./analiza 128 0 128
... mostrar
a la distribuci
on de los caracteres utilizados
... su fichero fuente analiza.c
$
Consulte el Manual
man 3 fprintf
Para emitir mensajes con formato.
man 3 strtod
Para extraer el double contenido en una tira de caracteres.
man 3 strtol
Para extraer el long contenido en una tira de caracteres.
man 3 sqrt
Para realizar la raz cuadrada de un n
umero.
man 3 malloc
Para ubicar memoria din
amica.

19

3.

Pr
actica 2: Unix shell

Esta pr
actica consiste en realizar un script en Bash que le permitira afianzar sus conocimientos
sobre este lenguaje. El script implementara una mecanismo de entrega automatica de practicas
en un entorno similar al de esta asignatura. Las ideas principales son:
Cada pr
actica tiene un identificador.
Dicho identificador, adem
as de identificar unvocamente cada practica, sera el nombre de
un fichero que contendr
a la informacion de relacionada con dicha practica (fecha lmite de
entrega, ficheros a entregar, etc.).
El script copiar
a los ficheros apropiados de un directorio (del supuesto usuario) a otro
(directorio de entrega).

3.1.

tarea-2.1: Script minientrega.sh


minientrega.sh ID_PRACTICA

El script comprobar
a que el identificador de practicas (ID_PRACTICA) es valido, comprobar
a que la entrega no est
a fuera de plazo, comprobara que existen los ficheros exigidos para la
pr
actica y finalmente copiar
a todos los ficheros a un directorio adecuado. El script devolvera 0
como c
odigo de error para indicar que todo funciono correctamente o un codigo de error distinto
de 0 indicando que error se produjo. Mas detalles:
La variable de entorno MINIENTREGA_CONF debe estar definida y especifica un directorio
en el que existen varios ficheros de configuracion de practicas. En caso de no estar definida
la variable o no existir o no ser legible el directorio se informara al usuario.
Cada nombre de fichero de configuracion de practica (${MINIENTREGA_CONF}/*) es un
identificador v
alido de pr
actica. Si el identificador de la practica (ID_PRACTICA) no es
v
alido se informar
a al usuario.
Cada fichero en ${MINIENTREGA_CONF}/* define las siguientes variables de entorno en
formato compatible con Bash:
MINIENTREGA_FECHALIMITE: contiene la fecha de entrega lmite. Se informara al
usuario si el contenido no es una fecha correcta o si la entrega se esta realizando fuera
de plazo.
MINIENTREGA_FICHEROS: contiene la lista de ficheros que debe ser entregada y que
deben estar en el directorio desde el que se ejecuta el script. En caso de que alguno
de los ficheros no exista o no sea legible se informara al usuario.
MINIENTREGA_DESTINO: directorio de destino en el que se debe crear un directorio
por cada entrega con el nombre del usuario que realiza la misma (${USER}). En caso
de que el directorio de destino no exista o el directorio de entrega no pueda crearse se
informar
a al usuario.
Antes de realizar la entrega se generara un informe sobre lo que el script se dispone a hacer
(copias de ficheros, etc.) incluyendo cualquier posible complicacion (como por ejemplo que
la entrega es realmente una reentrega). Una vez el usuario haya confirmado el informe el
script proceder
a a la entrega.

20

Ficheros a entregar
autores.txt y bitacora.txt: ficheros siguiendo las normas de presentacion en 1.7.
minientrega.sh: el script incluyendo comentarios.
man-minientrega.txt: manual de usuario del script.
test-minientrega.txt: fichero de texto con una descripcion de los tests realizados para
validar el script.

Evaluaci
on
La entrega de los ficheros es obligatoria. La valoracion total de la practica sera de 100 puntos.
50 puntos son decididos por el profesor tras valorar los ficheros entregados. Los otros 50 puntos
se obtendr
an de una entrevista de entre 5 y 10 minutos con cada grupo en el que se realizaran
algunas preguntas sobre el dise
no del script y el conocimiento del mismo.

21

También podría gustarte