Práctica+1+ v1
Práctica+1+ v1
Práctica+1+ v1
En esta prctica, para simplificar, nos centraremos en los t ipos integrales con signo:
byte, short, int y long cuyos tamaos son 8, 16, 32 y 64 bits respectivamente. Por ello,
en el esqueleto de la solucin que os hemos proporcionado se tiene:
Para representar estos tipos integrales usaremos arrays de enteros en los que, en cada
posicin, tendremos el valor de un bit, es decir, arrays de ceros o unos. El bit menos
significativo estar en la posicin 0 del array, es decir:
En el proyecto os proporcionamos funciones para crear ceros (todos los bits a cero) de
integrales de diferentes longitudes:
1
Primera prctica de Programacin 2 Curso 2016/2017
Para simplificar las pruebas, tambin os proporcionamos una funcin para convertir un int[]
(que solamente contiene ceros y unos) en un String, de manera que se pueda leer
cmodamente (es decir, de izquierda a derecha):
Funciones de test
En el proyecto os incluimos un conjunto de funciones de test que comprueban si las
funciones que habis implementado calculan correctamente sus resultados para algunos
valores de sus parmetros. Es muy importante que os acostumbreis a probar
exhaustivamente vuestros programas. Es por ello muy interesante que estudiis
detenidamente el cdigo de pruebas que se os proporciona ya que os puede servir de
inspiracin para hacer pruebas en otros contextos.
En general, un conjunto de test nunca podr garantizar que la funcin sea correcta al 100%.
Pero cuantos ms tests diferentes se hagan, ms seguridad tendremos en que la funcin no
contiene errores. Eso s, si una funcin no pasa algn test sabemos con certeza (si el test
est correctamente diseado) que no funciona.
Tened en cuenta que no solamente es importante que la funcin calcule correctamente sus
resultados: el cdigo ha de ser inteligible, los nombres de las variables han de ser
adecuados, etc, etc.
Hacer que la funcin calcule correctamente lo tenis que considerar casi el punto de
partida de vuestra solucin, ms que el punto de llegada. Es decir: no debis entregar
el primer cdigo que habis conseguido hacer que funcione, sino un cdigo que funcione y
que est expresado de la mejor manera posible. Para poder hacer esto es indispensable
disponer de tests que comprueben que no rompemos nada al mejorar el cdigo de nuestra
solucin.
2
Primera prctica de Programacin 2 Curso 2016/2017
La clase principal
Se ha optado por hacer que la clase que contiene todo el cdigo sea extensin de
CommandLineProgram. De esta manera, cuando lo ejecutemos, el resultado nos aparecer
en la ventana Output del Netbeans. Adems, las lneas correspondientes a pruebas
correctas se escribirn en verde y las correpondientes a errores en rojo.
un
Estructura de la funcin r
La funcin run es la que ejecuta todas las funciones de prueba (una para cada apartado):
La nica llamada que no est comentada es la que se corresponde con cdigo que os
proporcionamos nosotros. A medida que vayis completando vuestra solucin de la
prctica, iris descomentado las llamadas correspondientes para ejecutar las pruebas
correspondientes a cada funcin.
3
Primera prctica de Programacin 2 Curso 2016/2017
Lo que debis hacer es eliminar la nica lnea de cdigo y substituidla por vuestra
implementacin. Esta lnea lo nico que hace es dejar contento al compilador (el cdigo
Java es vlido) pero da un error de ejecucin cuando se la llama.
Esta funcin realiza cuatro pruebas comprobando si las cadenas que obtenemos al llamar a
toString sobre integrales de diferentes longitudes (byte, short, int o long) se
corresponden con las cadenas dadas.
Por supuesto que podis aadir nuevas pruebas para aumentar la confianza en
vuestras soluciones.
Funcin de checking
La funcin de checking que hace esto es la siguiente:
4
Primera prctica de Programacin 2 Curso 2016/2017
} else {
printlnError("\"" + expression + "\" should be \""
+ expected + "\" but is \"" + actual +
"\"");
}
}
Todas las funciones de checkXXXX tienen una estructura similar. En este caso, la funcin
recibe tres parmetros:
el resultado que se espera obtener
una cadena que representa lo que se est comprobando (que aparecer en el
mensaje que se mostrar al usuario)
el nmero que se pasar a toString
La funcin llama a toString y obtiene el resultado real (variable actual) y comprueba si
ste es igual o no al resultado esperado. En caso de que sea as, se muestra el mensaje de
OK. En caso de no ser iguales, se muestra el mensaje de error indicando la expresin, el
valor esperado y el valor obtenido.
OK: toString(zeroByte())
OK: toString(zeroShort())
OK: toString(zeroInteger())
OK: toString(zeroLong())
OK: toString(new int[]{0, 1, 0, 1, 0, 0, 1, 1, 0, 1})
OK: toString(zeroByte())
ERROR: "toString(zeroShort())" should be "00000000 00000000" but is
"0000 00000000"
OK: toString(zeroInteger())
OK: toString(zeroLong())
OK: toString(new int[]{0, 1, 0, 1, 0, 0, 1, 1, 0, 1})
Como vemos, parece ser que en vez de crear un integral de 16 bits lo hemos creado de 14.
Para que se lean mejor los nmero binarios, la funcin toString aade espacios cada 8
bits, contando desde el bit menos significativo (el de ms a la derecha).
5
Primera prctica de Programacin 2 Curso 2016/2017
Funciones bsicas
6
Primera prctica de Programacin 2 Curso 2016/2017
Una vez creada la funcin copy, podremos usarla para crear valores de los diferentes tipos
integrales existentes en Java:
Conversiones
7
Primera prctica de Programacin 2 Curso 2016/2017
Lo que sucede en este caso es que se pierden los bits ms significativos del integral
original. En el caso de convertir al mismo nmero de bits se obtiene una copia (no se
devuelve el original).
8
Primera prctica de Programacin 2 Curso 2016/2017
Operaciones booleanas
Operaciones de desplazamiento
9
Primera prctica de Programacin 2 Curso 2016/2017
El informe de la prctica
El informe de la prctica constituye el 20% de la nota total. Tendr la siguiente estructura:
Portada con el nombre de la prctica, nombre del alumno, DNI, Grupo de prcticas,
fecha.
Para cada funcin que se os pide, una d escripcin de cmo la habis diseado
(en la siguiente seccin del enunciado tenis un ejemplo).
Una seccin final de conclusiones que responda a la pregunta: qu he aprendido
solucionando la prctica?
Una seccin de bibliografa: apuntes, libros, pginas web.
Como se ha indicado, adems del cdigo de vuestras funciones, para cada uno de los
apartados os pedimos una descripcin sobre cmo habis pensado la solucin. Puede
contener texto, diagramas (los podis realizar a mano y luego escanearlos), etc, etc.
10
Primera prctica de Programacin 2 Curso 2016/2017
11
Primera prctica de Programacin 2 Curso 2016/2017
Criterios de evaluacin
Cada funcin evala sobre 1 punto, el 20% del cual se corresponde con el informe.
No solamente se tendr en cuenta que calcule bien su resultado, sino que el cdigo
sea entendible, los nombres de las variables razonables y que, en caso de ser
complicada, use funciones auxiliares, etc.
Formato de la entrega
Un fichero ZIP (no rar, 7z, tgz, etc.) que contenga:
Un PDF (no doc, docx, txt, odf, etc.) con el informe.
El directorio del proyecto Netbeans con vuestra solucin (haced un c lean del
proyecto para que ocupe el mnimo de espacio).
La entrega se realizar va sakai (en el apartado de a ctividades).
12