Вы находитесь на странице: 1из 15

ESCUELA ESPECIALIZADA EN INGENIERIA

CENTRO DE TECNOLOGIAS DE INFORMACIÓN.


Diplomado Java: Java nivel 1
Tema: Estructuras de datos y modularidad
Instructor: Giovanni Ariel Tzec Chávez

Tema: “Matrices, modularidad y pruebas unitarias”

OBJETIVOS DE APRENDIZAJE.

Al finalizar esta práctica, es estudiante será capaz de:

• Desarrollar aplicaciones haciendo uso de matrices


• Identificar el termino de modularidad
• Crear métodos y funciones en Java.
• Desarrollar aplicaciones haciendo uso de modularidad
• Identificar pruebas unitarias.
• Utilizar la herramienta de JUNIT para implementar pruebas
unitarias.

MATERIAL Y EQUIPO.

• Guía práctica.
• Computadora.
• Acceso a internet.

DESARROLLO.
En Java un arreglo se declara justo igual que cualquier otro objeto mediante la palabra
clave new, por lo general en la parte superior de una clase o de un método. El
programador debe dar al arreglo un nombre como se muestra a continuación:
int[ ] edades = new int[6];
String[ ] grupo = new String[4];

EJERCICIOS

1. Crear un array de números y otro de caracteres de 10 posiciones donde


insertaremos notas entre 0 y 10 (debemos controlar que inserte una nota
valida), la nota se debe de insertar en el array de números, en el array de
caracteres se insertaran los nombres de los alumnos.
Si la nota esta entre 0 y 1.99 , triple fail.
Si la nota esta entre 2 y 3.99 , doble fail
Si la nota esta entre 4 y 5.99 , fail.
Si la nota esta entre 6 y 7.99 , será bueno.
Si la nota esta entre 8 y 8.99 , será bueno.
Si la nota esta entre 9 y 10 , será excelente.
2. En el municipio de santa tecla se realiza una encuesta a 10 personas, en esta
encuesta se evalúan los siguiente parámetros: genero (1=masculino,
2=femenino), si la persona labora actualmente (1=si trabaja, 2= no trabaja),
sueldo devengado por el trabajador (si tiene un trabajo, sino será un cero) si el
sueldo esta entre $0.00 a $500 .00 tendrá un 10% de aumento de caso
contrario tendrá un 15% de aumento. Calcular y mostrar lo siguiente:
Porcentaje de hombres y de mujeres.
Porcentaje de hombres que trabajan.
Porcentaje de mujeres que no trabajan.
El sueldo promedio de todos los hombres y mujeres.
Promedio de sueldos que están entre $0.00 y $500.00
3. Leer un vector de números enteros, clasificarlo en vectores nuevos, vectores de
números pares e impares.
4. Leer 2 vectores e imprimir la suma de ambos en un nuevo vector.
5. Leer 3 vectores e imprimir el producto de todos en un nuevo vector.
6. Leer un vector de n notas, imprimir el promedio de todas y contar cuantas
notas superan el promedio.
7. Leer n sueldos y clasificar cuantos sueldos están entre 0 y 300, 300 y 600, 600
y 2000, superiores a 2000.
8. Leer n sueldos y agregarle el siguiente aumento según su clasificación, sueldos
entre 0 y 300 10% aumento, 300 y 600 8% aumento, 600 y 2000 7%
aumento, superiores a 2000 5% aumento. Imprimir los sueldos finales en un
nuevo vector, promedio de sueldos, sueldos mayores al promedio
Matrices

Los arreglos multidimensionales de dos dimensiones se utilizan con frecuencia para


representar tablas de valores, las cuales consisten en información ordenada en fi las y
columnas. Para identificar un elemento especifico de una tabla, debemos especificar dos
subíndices. Por convención, el primero identifica la fila del elemento y el segundo su
columna. Los arreglos que requieren dos subíndices para identificar un elemento
especifico se llaman arreglos bidimensionales (los arreglos multidimensionales pueden
tener más de dos dimensiones).

Java no soporta los arreglos multidimensionales directamente, pero se definen mediante


arreglos de arreglos unidimensionales.

Matrices
Las matrices o arreglos bidimensionales (también conocidas como tablas) son muy
comunes en la vida diaria:
✓ Un tablero de ajedrez.
✓ El itinerario de los trenes.
✓ Una hoja de cálculo.

int[][] ventas = new int[4][7];


Declara una matriz o arreglo bidimensional de enteros. Contiene las cifras de las
ventas de computadoras en cada una de cuatro tiendas para cada uno de los siete días
de una semana.
La matriz se llama ventas. Podemos considerar que tiene cuatro filas y siete columnas.
Cada fila representa una semana en una tienda específica. Cada columna representa
un día individual en cada una de las cuatro tiendas. Los índices de las filas van de 0 a
3. Los índices de las columnas van de 0 a 6. La columna 0 es el lunes, la columna 1 es
el martes, etc.
¿Cómo declarar una matriz?

El programador asigna un nombre a la matriz, como en el siguiente ejemplo:

int[][] ventas = new int[4][7];

double[][] temps = new double[10][24];

Índices

Para hacer referencia a un elemento individual en una matriz, un programa debe


especificar los valores de dos índices enteros (también conocidos como subíndices).
Por lo tanto, ventas [3][2] se refiere al elemento de la matriz que se encuentra en la
fila 3 y la columna 2, lo cual representa a la tienda número 3 y el día número 2
(miércoles).

Ejemplo propuesto 1

Codificar un programa que genere una matriz representando un triángulo invertido


realizado con asteriscos, cuyo tamaño será especificado por el usuario. Se debe de
mostrar la matriz en pantalla.
Ejercicio propuesto 2

Desarrollar un programa que lea dos matrices de N dimensiones y la sume, creando


procedimientos diferentes para llenar, imprimir y sumar esas matrices.
Completar el ejercicio anterior agregando tres métodos (restar, potencia cuadrada y
multiplicación).

Ejercicio propuesto 3

La empresa “La tiendona” cuenta con 7 sucursales, las cuales atienden a todos sus
clientes los 7 días de la semana.
Desean saber el total de ventas realizadas en la semana (5 al 11 de julio del 2015) por
cada sucursal, desean saber el total de ventas del día miércoles por todas las
sucursales, el promedio de ventas por cada sucursal, la menor y mayor venta de todas
las sucursales.
Ventas
Dias
Sucursal 1 Sucursal 2 Sucursal 3 Sucursal 4 Sucursal 5 Sucursal 6 Sucursal 7
lunes $ 100.00 $ 400.00 $ 500.00 $ 700.00 $ 900.00 $ 24.00 $ 100.00
martes $ 400.00 $ 350.00 $ 360.00 $ 900.00 $ 100.00 $ 465.00 $ 200.00
miercoles $ 1,000.00 $ 800.00 $ 300.00 $ 345.99 $ 200.00 $ 39.00 $ 300.00
jueves $ 100.00 $ 900.00 $ 1,000.00 $ 350.00 $ 300.00 $ 765.00 $ 400.00
viernes $ 350.00 $ 1,200.00 $ 999.00 $ 250.00 $ 560.00 $ 459.00 $ 500.00
sábado $ 279.75 $ 100.00 $ 687.00 $ 750.00 $ 432.00 $ 600.00 $ 353.00
domingo $ 300.00 $ 200.00 $ 456.35 $ 600.00 $ 450.00 $ 50.00 $ 234.88

Tomar en cuenta la siguiente matriz de datos y el siguiente código auxiliar.


Modularidad

Cuando los problemas que vamos a resolver son muy grandes o complejos, el diseñar la
solución se convierte en una actividad lenta y ardua, es aquí donde nos presta su mayor
utilidad la Programación Modular, ya que nos facilita la tarea de programar y nos permite
elaborar estos programas de manera más rápida y eficaz.
La experiencia ha demostrado que la mejor manera de desarrollar una solución y
mantenerla, es construirla a partir de piezas pequeñas, que la hacen más manejable. A
continuación, se presentan diferentes elementos que facilitan el diseño, implementación,
operación y manteniendo de soluciones grandes para problemas grandes.
La Programación Modular es uno de los métodos de diseño más fáciles, flexibles, y
potentes para programar y mejorar la productividad de nuestros programas.
Esta técnica divide el problema en pequeñas partes o sub-problemas y se debe diseñar
una solución para cada una de esas partes. A las divisiones o partes de un problema y a
las soluciones o algoritmos que los resuelven, se les conoce como módulos; cada
módulo debe realizar una tarea o actividad específica.
Variables globales

Estas variables deben ser declaradas fuera de la función principal (main) y existen en
memoria durante todo el tiempo de ejecución del programa, por lo que, pueden ser
referenciadas desde cualquier módulo (función) o parte del programa. Lo cual significa
que podemos utilizar estas variables en todas las funciones (o módulos) del programa
guardando su valor en todas ellas; y, ese valor se puede cambiar desde cualquiera de las
funciones.

Variables locales

Son variables que se declaran dentro de una función, y mantienen su valor mientras la
función se está ejecutando, es decir que cuando se ejecuta otra función no existen en
memoria, por lo tanto, no se pueden utilizar, fuera de la función donde fueron declaradas.
Métodos

Son aquellas operaciones que puede recibir o no parámetros, en java se identifica por la
palabra reservada void, método que no retorna ningún valor.

Los procedimientos son básicamente un conjunto de instrucciones que se ejecutan sin


retornar ningún valor, hay quienes dicen que un procedimiento no recibe valores o
argumentos, sin embargo, en la definición no hay nada que se lo impida. En el contexto
de Java un procedimiento es básicamente un método cuyo tipo de retorno es void que no
nos obliga a utilizar una sentencia return.
Funciones

Una función es un conjunto de sentencias que realizan una tarea específica, dicho de otra
manera, una función es la codificación en Java de un módulo; puede ser ‘llamada’ o
invocada desde cualquier parte del programa y devuelven un único valor o ninguno. Para
codificar en Java una función necesitamos de las siguientes acciones:
• Declarar la función
• Definir la función
• Invocar la función.

Parámetros de una Función:

Los parámetros o argumentos de una función son los datos, con los que se declara,
define y se invoca la misma, una función puede tener o no parámetros.
Los parámetros se comportan como variables locales, creándose al entrar a la función y
destruyéndose al salir de ella; es decir que, los parámetros reciben sus valores del
módulo o función que invoca la función, y con estos valores se trabajara en la función.
Valor de retorno:
Se conoce como valor de retorno aquel que se genera la función y se envía al programa
que lo invocó.
Pruebas Unitarias

Las pruebas unitarias tienen ese nombre debido a que se prueba la funcionalidad de cada
método o función; únicamente contemplando la lógica que debe realizar y excluyendo la
convivencia con otras clases o sistemas. (Ejemplo: recibir parámetros, buscar un dato).

Automatización de pruebas unitarias: Consiste en usar un marco de trabajo o


framework (como NUnit) para ejecutar tus test unitarios, en lugar de ejecutar estos
manualmente una y otra vez cada vez que modificas el código. Para ello existen múltiples
frameworks, muchos de los cuales pueden integrarse en los ambientes IDE.
JUNIT

Es un conjunto de clases en java que nos ayuda a preparar, documentar y ejecutar las
baterías de pruebas que consideramos adecuado realizar. Adicional de eso se puede
programar para que dichas pruebas se hagan cada vez que vayamos a compilar una
clase para que no afecte a nuestra aplicación y que nuestra clase siga funcionando.

Cuando probamos un programa, lo ejecutamos con unos datos de entrada (casos de


prueba) para verificar que el funcionamiento cumple los requisitos esperados.
Definimos prueba unitaria como la prueba de uno de los módulos que componen un
programa.

En los últimos años se han desarrollado un conjunto de herramientas que facilitan la


elaboración de pruebas unitarias en diferentes lenguajes. Dicho conjunto se
denomina XUnit. De entre dicho conjunto, JUnit es la herramienta utilizada para realizar
pruebas unitarias en Java.

El concepto fundamental en estas herramientas es el caso de prueba (test case), y


la suite de prueba (test suite). Los casos de prueba son clases o módulos que disponen
de métodos para probar los métodos de una clase o módulo concreta/o. Así, para cada
clase que quisiéramos probar definiríamos su correspondiente clase de caso de prueba.
Mediante las suites podemos organizar los casos de prueba, de forma que cada suite
agrupa los casos de prueba de módulos que están funcionalmente relacionados.

Las pruebas que se van construyendo se estructuran así en forma de árbol, de modo que
las hojas son los casos de prueba, y podemos ejecutar cualquier subárbol (suite).

De esta forma, construimos programas que sirven para probar nuestros módulos, y que
podremos ejecutar de forma automática. A medida que la aplicación vaya avanzando, se
dispondrá de un conjunto importante de casos de prueba, que servirá para hacer pruebas
de regresión. Eso es importante, puesto que cuando cambiamos un módulo que ya ha
sido probado, el cambio puede haber afectado a otros módulos, y sería necesario volver a
ejecutar las pruebas para verificar que todo sigue funcionando.

DEFINA LOS SIGUIENTES CONCEPTOS:

Escribe en los espacios en blanco lo que se te solicita.

1. ¿Defina pruebas unitarias?


____________________________________________________________
____________________________________________________________
____________________________________________________________
2. ¿Características de pruebas unitarias?
_______________________________
____________________________________________________________
3. ¿Mencione las ventajas y desventajas de las pruebas unitarias?
____________________________________________________________
____________________________________________________________
4. ¿Limitaciones de las pruebas unitarias?
____________________________________________________________
____________________________________________________________
____________________________________________________________
5. Enumerar diferentes herramientas propietarias y libres distribución para
realizar pruebas unitarias.
____________________________________________________________
____________________________________________________________
6. ¿Mencione un ejemplo de pruebas unitarias manuales?
____________________________________________________________
____________________________________________________________
____________________________________________________________
7. Menciones como se puede automatizar una prueba unitaria.
____________________________________________________________
____________________________________________________________
____________________________
8. Analice, se puede enviar en java parámetros por o valor y referencia a una
función o método:
____________________________________________________________
____________________________________________________________
____________________________________________________________
__________________________________________
9. Diferencia de un método y una función:
____________________________________________________________
____________________________________________________________
____________________________________________________________
__________________________________________
10. Mencione las ventajas que proporciona la modularidad:
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
________________________________________________________
11. Diferencia entre variables globales y locales.
12. Mencione técnicas mas utilizadas al momento de implementar modularidad.

EJERCICIO PROPUESTOS.

Desarrollar los siguientes ejercicios haciendo uso de matrices y


pruebas unitarias.

9. Sumar la diagonal de una matriz 3X3


10. Transponer una matriz 4X4
11. Imprimir el determinante de una matriz
12. Crear un programa que verifique si una matriz es identidad
13. Crear un programa que verifique si una matriz es nula
Desarrollar los siguientes ejercicios haciendo uso de métodos, funciones y pruebas
unitarias.

1.Diseñe un programa que imprima el resultado de la siguiente expresión:


x = (a + b)2/3 sabiendo que a y b son números enteros.
2. Se tienen como datos la altura y la base de un rectángulo, diseñe un programa que
calcule el perímetro y la superficie del mismo.

3. Dados el costo de un artículo vendido y la cantidad de dinero entregada por el cliente,


calcule e imprima el cambio que debe entregársele al mismo.

4. Los surtidores (bombas) de una gasolinera, registran lo que “surten” en galones, pero
en esa zona el precio de la gasolina está fijado en litros. Diseñe un programa que calcule
el total a pagar por cada cliente, si el precio de un litro de combustible es de: especial
$3.85 regular $3.70 y diésel $3.50. Cada galón de gasolina equivale a 3.785 litros.

5. Una persona compró una estancia en un país sudamericano. La extensión de la


estancia está especificada en acres. Diseñe un programa que convierta la dimensión en
acres a hectáreas, si sabemos que: 1 acre = 4047 m2 1 hectárea = 10000 m2
6. Diseñe un programa que, teniendo un grupo de datos enteros y positivos, imprima cada
uno de los números y sus respectivos cubos.

7. Un profesor tiene las notas de sus 30 alumnos y necesita conocer la nota promedio y la
nota mayor de todas. Diseñe un programa para ayudarle al profesor.

8. Calcule el aumento de salarios para n empleados de una empresa, bajo el siguiente


criterio:
•Si el salario es menor a $1000.oo aumento 12%
•Si el salario está comprendido entre $1000.oo y $2500.o aumento 10%
•Si el sueldo es mayor a $2500.oo aumento 8%

9. Diseñe un programa que reciba como entrada 24 números reales que representan las
temperaturas en todo un día (1 lectura por hora) y calcule: la temperatura promedio,
número de datos menores que el promedio y número de datos mayores que 28°.

10. En una empresa con varios empleados se necesita obtener cierta información. Por
cada empleado se ingresan los siguientes datos: edad, sexo y salario. Diseñe un
programa para calcular lo siguiente:
•Número de hombres
•Número de mujeres
•Número de mujeres que ganen más de $1000.oo
•Número de hombres menores de 40 años que ganan menos de $1000.oo
•Número de empleados mayores de 50 años.

11. En el municipio de santa tecla se realiza una encuesta a 10 personas, en esta


encuesta se evalúan los siguientes parámetros: genero (1=masculino, 2=femenino), si
la persona labora actualmente (1=si trabaja, 2= no trabaja), sueldo devengado por el
trabajador (si tiene un trabajo, sino será un cero) si el sueldo esta entre $0.00 a $500
.00 tendrá un 10% de aumento de caso contrario tendrá un 15% de aumento. Calcular
y mostrar lo siguiente:

• Porcentaje de hombres y de mujeres.


• Porcentaje de hombres que trabajan.
• Porcentaje de mujeres que no trabajan.
• El sueldo promedio de todos los hombres y mujeres.
• Promedio de sueldos que están entre $0.00 y $500.00

Nota: En esta semana se desarrollarán las aplicaciones


haciendo uso de clases, las pruebas unitarias se
implementarán a partir de la semana 11