Post on 30-Sep-2018
SERVICIO NACIONAL DE ADIESTRAMIENTO EN TRABAJO INDUSTRIAL
MANUAL DE APRENDIZAJE
CÓDIGO: 89001653
Profesional Técnico
DESARROLLO DE SOFTWARE I
COMPUTACIÓN E INFORMÁTICA
DESARROLLO DE SOFTWARE I
TABLA DE CONTENIDOS
TAREA DENOMINACIÓN DE TAREA PÁG.
I. LECTURA Y ESCRITURA DE DATOS. 6
II. ESTRUCTURA DE CONTROL REPETITIVAS 30
III. CLASES: MATH Y STRING. 37
IV. ARREGLOS EN JAVA. 51
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 5
DESARROLLO DE SOFTWARE I
I. LECTURA Y ESCRITURA DE DATOS.
El técnico profesional en Desarrollo de software al término de esta tarea podrá identificar y reconocer las principales características técnicas y procedimientos de lectura de datos de un algoritmo computacional Para ejecutar esta tarea deberá desarrollar las siguientes operaciones
Aprende y conceptualiza los operadores y los tipos de datos. Aprende y desarrolla el ingreso y visualización de datos mediante variables. Analiza y aplica la clase JOptionPane.
1.1. EQUIPOS Y MATERIALES.
1 Computador con tecnología Core 2 Duo con velocidad de 3.16 Ghz – Superior. Software Java Sun IDE Netbeans Versión 7.2 – Superior.
1.2. ORDEN DE EJECUCIÓN.
Utiliza variables de declaración. Identifican tipos de operadores. Crea variables estáticas. Identifican e implementa librerías para la lectura y escritura de datos. Utiliza la algorítmica computacional. Utiliza estructura de control condicional en programación. Utiliza estructuras de condición múltiple en programación.
Nunca consideres el estudio como una
obligación, sino como una oportunidad
para ingresar al maravilloso mundo del
saber. Albert Einstein
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 6
DESARROLLO DE SOFTWARE I
1.3. OPERACIÓN.
1.3.1. NORMAS DE SEGURIDAD Y PROTECCIÓN AMBIENTAL.
Normas de seguridad.
Identifique el lugar de los extinguidores y la ubicación de las salidas del laboratorio.
Recuerda dónde está situado el botiquín. No pongas en funcionamiento un equipo de laboratorio sin que el instructor haya
revisado la instalación. No utilices ninguna herramienta o equipo sin conocer su uso, funcionamiento y
normas de seguridad específicas. Maneja con especial cuidado el material frágil. Informa al instructor del material roto o averiado. No fumar, comer o beber en el taller. Guarda tus prendas y los objetos personales y no los dejes sobre la mesa de
trabajo. Procura no andar de un lado para otro sin motivo y, sobre todo, no corras dentro
del laboratorio. Ten siempre tus manos limpias y secas. Si tienes alguna herida protégela. Mantenga su puesto de trabajo limpio y ordenado, para evitar accidente. Mantenga las herramientas ordenadas para evitar accidentes.
Normas de protección ambiental.
Los componentes electrónicos son tóxicos. Si salpicas la mesa, límpiala con agua y sécala después con un paño. Al acabar la práctica, limpia y ordena el material utilizado.
Los desechos tóxicos, generados en la tarea deben recolectados y entregados al instructor para ser depositados en tacho de elementos tóxicos.
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 7
DESARROLLO DE SOFTWARE I
Ventana principal del IDE Netbeans java:
1.3.2. USO DE OPERADORES.
El participante se encarga de asignar los tipos de operadores así como también el tipo de valor que devuelve una operación.
• Operadores Aritméticos:
Operador Uso Descripción
+ a + b Suma a y b
- a - b Resta a de b
* a * b Multiplica a y b
/ a / b Divide a por b
% a % b Obtiene el resto de dividir a
entre b
Nota: El lenguaje Java extiende la definición del operador + para incluir la concatenación de cadenas.
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 8
DESARROLLO DE SOFTWARE I
Los operadores + y - tienen versiones unarias que seleccionan el signo del operando.
Operador Uso Descripción
+ +op Indica un valor positivo
- -op Niega el operando
Además, existen dos operadores de atajos aritméticos, ++ que incrementa en uno su operando, y -- que decrementa en uno el valor de su operando.
Operador Uso Descripción
++ op
++
Incrementa op en 1; evalúa el valor antes de
incrementar
++ ++
op
Incrementa op en 1; evalúa el valor después
de incrementar
-- op -- Decrementa op en 1; evalúa el valor antes de
decrementar
-- -- op Decrementa op en 1; evalúa el valor después
de decrementar
• Operadores Relacionales:
Operador Uso Devuelve true si
> a > b a es mayor que b
>= a >= b a es mayor o igual que b
< a < b a es menor que b
<= a <= b a es menor o igual que b
== a == b a y b son iguales
!= a != b a y b son diferentes
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 9
DESARROLLO DE SOFTWARE I
• Operadores Lógicos:
Operador Uso Devuelve true si
&& a && b a y b son verdaderos
|| a || b uno de los dos es verdadero
! !a a es falso
Ejemplo:
Si la edad se encuentra en el intervalo de 18 y 50]
if (edad >= 18 && nota <= 50 ){:
}
• Operadores de Asignación. Se emplea el operador de asignación =, para asignar un valor a otro. Además del operador de asignación básico, Java proporciona varios operadores de asignación que permiten realizar operaciones aritméticas, lógicas o de bits y una operación de asignación al mismo tiempo. Suponga que desea adir un número a una variable y asignar el resultado dentro de la misma variable, como esto:
i = i + 2;
Puedes ordenar esta sentencia utilizando el operador +=.
i += 2;
Las dos líneas de código anteriores son equivalentes.
Tabla de los operadores de asignación y sus equivalentes.
Operador Uso Equivale a
+= a += b a = a + b
-= a -= b a = a – b
*= a *= b a = a * b
/= a /= a a = a / b
%= a %= b a = a % b
&= a &= b a = a & b
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 10
DESARROLLO DE SOFTWARE I
|= a |= b a = a | b
^= a ^= b a = a ^ b
<<= a <<= b a = a << b
>>= a >>= b a = a >> b
>>>= a >>>= b a = a <<< b
Precedencia de Operadores en Java.
La tabla siguiente muestra la precedencia asignada a los operadores de Java. Los operadores se han listado por orden de precedencia de mayor a menor. Los operadores con mayor precedencia se evalúan antes que los operadores con una precedencia relativamente menor. Los operadores con la misma precedencia se evalúan de izquierda a derecha.
Operadores sufijo [] . (params) expr++ expr--
operadores unarios ++expr --expr +expr -expr ~ !
Creación o tipo new (type)expr
multiplicadores * / %
suma/resta + -
desplazamiento <<>>>>>
Relacionales <><=>= instanceof
Igualdad == !=
bitwise AND &
bitwise exclusive OR ^
bitwise inclusive OR |
AND lógico &&
OR lógico ||
Condicional ? :
Asignación = += -= *= /= %= ^= &= |= <<= >>=
>>>=
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 11
DESARROLLO DE SOFTWARE I
Aprende y desarrolla el ingreso y visualización de los datos mediante variables.
El participante se encarga de codificar el procedimiento de los diferentes tipos de declaración de variable.
Tipos de Variables.
Todas las variables en el lenguaje Java deben tener un tipo de dato. El tipo de la variable determina los valores que la variable puede contener y las operaciones que se pueden realizar con ella.
Tipos de datos.
Existen dos categorías de datos principales en el lenguaje Java: los tipos de datos primitivos y los tipos de datos referenciados.
Tipos de Datos primitivos.
Son datos simples que requieren de una sola posición de memoria para ser almacenados.
Tipo Tamaño/Formato Descripción
(Números enteros)
Byte 8-bit complemento a 2 Entero de un Byte
Short 16-bit complemento a 2 Entero corto
Int 32-bit complemento a 2 Entero
Long 64-bit complemento a 2 Entero largo
(Números reales)
Float 32-bit IEEE 754 Coma flotante de precisión simple
Double 64-bit IEEE 754 Coma flotante de precisión doble
(otros tipos)
Char 16-bit Carácter Un sólo carácter
Bolean true o false Un valor booleano (verdadero o falso)
Tipos de datos referenciados
Los tipos referenciados se llaman así porque el valor de una variable de referencia es una referencia (un puntero) hacia el valor real.
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 12
DESARROLLO DE SOFTWARE I
¿QUE ES UNA VARIABLE?
Son entidades valores o datos almacenado en la memoria, la variable posee la siguiente sintaxis de creación
Tipo de dato Nombre de variable;
Ejemplo 1
String nombre;
Se lee: variable de tipo cadena, quiere decir que la variable nombre almacena valores de tipo alfanumérico (combinación de números y letras)
Ejemplo 2
int edad ;
Se lee: variable de tipo entero, quiere decir que la variable edad almacena valores de tipo numérico entero
Ejemplo 3
int sueldo ;
Se lee: variable de tipo decimal, quiere decir que la variable sueldo almacena valores de tipo numérico entero o decimal.
Nota: una variable de tipo doublé ocupa más espacio en la memoria.
Implemente variable para almacenar el apellido de un alumno.
Tipo de dato Nombre de la variable
Implemente variable para almacenar la cantidad de artículos.
Tipo de dato Nombre de la variable
Implemente variable para almacenar el impuesto general a las ventas.
Tipo de dato Nombre de la variable
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 13
DESARROLLO DE SOFTWARE I
Ejemplo 1
Declaración de una variable de tipo String
package Programas;
public class Programa1 {
public static void main(String[] args) {
String nombre;
}
}
Importante: una variable de tipo String representa todos los caracteres alfanuméricos (letras, números o letras)
Ejemplo 2
Declaración de una variable de tipo String
package Programas;
public class Programa1 {
public static void main(String[] args) {
int edad;
} }
Importante: una variable de tipo int representa todos los valores numéricos enteros
Ejemplo 3
package Programas;
public class Programa1 {
public static void main(String[] args) {
doublé sueldo;
}
}
Variables estáticas
Una variable estática es aquel tipo de variable que se extiende por toda el proyecto y que por lo general tiene un ámbito superior al de otra variables.
Su uso es muy importante para el paso de valores de un aplicación a otra.
Ejemplo:
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 14
DESARROLLO DE SOFTWARE I
Crear una variable estática de nombre cont con tipo de dato String:
Solución
En esta declaración intervienen dos palabras clave cuyo significado es importante: a) static: los atributos miembros de una clase pueden ser atributos de clase o
atributos de instancia; se dice que son atributos de clase si se usa la palabra clave static: en ese caso la variable es única para todas las instancias (objetos) de la clase (ocupa un único lugar en memoria). A veces a las variables de clase se les llama variables estáticas. Si no se usa static, el sistema crea un lugar nuevo para esa variable con cada instancia (la variable es diferente para cada objeto). En el caso de una constante no tiene sentido crear un nuevo lugar de memoria por cada objeto de una clase que se cree. Por ello es adecuado el uso de la palabra clave static. Cuando usamos “static final” se dice que creamos una constante de clase, un atributo común a todos los objetos de esa clase.
b) final: en este contexto indica que una variable es de tipo constante: no admitirá cambios después de su declaración y asignación de valor. Final determina que un atributo no puede ser sobre escrito o redefinido. O sea: no funcionará como una variable “tradicional”, sino como una constante. Toda constante declarada con final ha de ser inicializada en el mismo momento de declararla. Final también se usa como palabra clave en otro contexto: una clase final (final) es aquella que no puede tener clases que la hereden. Lo veremos más adelante cuando hablemos sobre herencia.
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 15
DESARROLLO DE SOFTWARE I
Ejemplo: Sintaxis: Carácter Público / Privado static final Tipo De La Constante = valor De La Constante; private static final float PI = 3.1416f; //Recordar f indica que se trata de un float private static double PI = 3.1416; public static final String password = "123456P@$$W0rd_";
Clase JOptionPane
Es una clase que permite crear alertas o cuadros de dialogo simples y sencillos con la finalidad de solicitar y mostrar información al usuario.
Métodos de la clase JOptionPane
JOptionPane.showInputDialog JOptionPane.showMessageDialog JOptionPane.showConfirmDialog JOptionPane.showOptionDialog
1. JOptionPane.showInputDialog Sirve para mostrar una ventana que permita ingresar datos (una cadena, texto, números, etc.). Los parámetros que puede recibir son los mismos que los del MessagaDialog. Ejemplo: Sintaxis: String texto = JOptionPane.showInputDialog (null, "Ingrese un texto: ", "showInputDialog",JOptionPane.INFORMATION_MESSAGE);
Ejemplo:
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 16
DESARROLLO DE SOFTWARE I
Ejecutar con la combinación de teclas Shift + F6
2. showMessageDialog(): Muestra un cuadro de diálogo al usuario, normalmente de carácter informativo, como mínimo recibe 2 parámetros: el componente padre (que puede ser null) y una cadena de caracteres que corresponde al mensaje a ser mostrado. También puede recibir como parámetro una cadena que irá como título del cuadro y el tipo de mensaje a mostrarse (determinado por una constante de la clase JOptionPane). Parámetros: • Component componente Padre: el componente al que pertenece. • Object mensaje = es el objeto que corresponde al mensaje (texto) a mostrarse. • String titulo = texto que será el título del cuadro de diálogo. • int tipoDeMensaje = definido por una constante de la clase JOptionPane
Sintaxis: JOptionPane.showMessageDialog(null,"Este es un mensaje simple"); Ejemplo:
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 17
DESARROLLO DE SOFTWARE I
Resultado:
Constantes de JOptionPane: los mensajes pueden ser de tipo informativo (INFORMATION_MESSAGE), de error (ERROR_MESSAGE), de advertencia (WARNING_MESSAGE), mensaje plano (PLAIN_MESSAGE) o mensaje interrogativo (QUESTION_MESSAGE) aunque el uso de este último tipo de mensaje no tiene mucho sentido para este caso
Ejemplos:
3. showCofirmDialog(): Método que nos sirve para solicitar al usuario la confirmación de una determinada acción. Puede establecerse los distintos parámetros antes mencionados, como por ejemplo el componente padre, mensaje, título y tipo de mensaje. Para el tipo de mensaje las constantes posibles son:
YES_NO_OPTION,YES_NO_CANCEL_OPCION,YES_OPTION,NO_OPTION,
CANCEL_OPTION
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 18
DESARROLLO DE SOFTWARE I
Ejemplo:
4. showOptionDialog(): Podríamos decir que gracias a este método podemos obtener un cuadro de diálogo ajustado a nuestra necesidad, ya que es totalmente configurable.
Parámetros: • Componente Padre: el objeto que indica de qué componente es hijo. • Objeto Mensaje: un String que corresponde al texto a mostrarse como mensaje. • Título: String que se establecerá como título de la ventana. • Tipo de Opción: es un entero, representado por unas constantes que definen qué
opciones tendrá el cuadro de diálogo. Puede ser: DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, YES_CANCEL_OPTION.
• Tipo de Mensaje: entero que determina el tipo de mensaje (ERROR_MESSAGE, por ejemplo).
• Ícono: la imagen que acompañará al mensaje, si no se especifica (es decir, se pasa null) se establecerá uno por defecto de acuerdo al tipoDeMensaje.
• Opciones: un array tipo Object que indica las opciones posibles, normalmente debe ser coherente con Valor Inicial igual es la opción predeterminada, deberá ser una de las opciones introducidas en el array de opciones. Puede ser null.
Ejemplo:
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 19
DESARROLLO DE SOFTWARE I
Resultado:
Ejemplo 2:
int elección = JOptionPane.showOptionDialog (null,"¿De verdad quieres salir?" ,"¿Salir?", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null , null , null); // Interpretar la elección del usuario
if(elección == JOptionPane.YES_OPTION){ System.exit(0); }
Define y aplica las estructuras de control.
Sentencias de Control de flujo en Java
La estructura de control de flujo determina el orden en que se ejecutarán las otras sentencias dentro del programa. El lenguaje Java soporta varias sentencias de control de flujo.
1. ESTRUCTURA SECUENCIAL. Es aquel tipo de estructura encargada de desarrollar los 2 pasos importantes los cuales son:
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 20
DESARROLLO DE SOFTWARE I
1. Entrada. 2. Proceso. 3. Salida.
Ejercicios Propuestos:
Ingreso de datos:
Salida del propuesto:
Ejemplo 1:
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 21
DESARROLLO DE SOFTWARE I
Ejemplo 2 public class Ejercicio4 { public static void main(String[] args) { int num1,num2,suma,producto; num1 = Integer.parseInt(JOptionPane.showInputDialog(null,"ingrese numero 1","N1",1)); num2 = Integer.parseInt(JOptionPane.showInputDialog(null,"ingrese numero 2","N2",1)); suma=num1 + num2; producto=num1 * num2; System.out.print("La suma de los dos valores es:"); System.out.println(suma); System.out.print("El producto de los dos valores es:"); System.out.println(producto);}}
Para realizar:
En la plantilla de la clase Bienvenida que muestra NetBeans, escriba el siguiente código de la aplicación.
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 22
DESARROLLO DE SOFTWARE I
Pulse SHIF + F6 o haga clic en el botón Execute , para ejecutar la aplicación.
En el cuadro de diálogo escriba su nombre y pulse Enter.
Java mostrará un mensaje de bienvenida en el panel de salida de Netbeans.
Otra ventana seria:
public static void main(String[] args) {
String mensaje;
mensaje = JOptionPane.showInputDialog(null,"Ingrese nombre","Nombre",1);
JOptionPane.showMessageDialog(null,"El nombre es :" + mensaje); }
IMPORTANTE:
Repita los pasos del procedimiento anterior para crear las clases que se muestran a continuación (Cómo crear una aplicación Java).
Ejecute la aplicación para visualizar los resultados en el panel de salida (Output).
No olvide que antes de realizar cualquier aplicación Java debe mostrar una carpeta como directorio local, no para cada aplicación sino para todas las aplicaciones que desee realizar.
Cuando termine la sesión, cierre todo y envíe la carpeta que montó como directorio local en su USB.
Desarrollo de Aplicaciones con Sentencias de Control.
Estructura secuencial.
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 23
DESARROLLO DE SOFTWARE I
CASO PROPUESTO.
Utilizando la estructura secuencia implemente un programa que al momento de ingresar un numero de 3 dígitos de como resultado la suma de 15 tal como se muestra en la siguiente pantalla una vez terminado comunique al Instructor
/* para practicar
Programa que lea dos números por teclado y los muestre por pantalla.
*/
2. ESTRUCTURA CONDICIONAL.
Es aquel tipo de estructura que se encarga de evaluar condiciones según sea, estas se encuentra dividida de la siguiente manera:
2.1. La sentencia if simple. Es aquel tipo de estructura que evalúa una sola condición.
Sintaxis
if (condición) {
//Instrucciones que se ejecutan solo cuando la condición es true
}
2.2. La sentencia if…else Doble. Tipo de estructura que se encarga de evaluar 2 condiciones una cuando es verdadera y la otra cuando es falsa
if (respuesta == OK){
…
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 24
DESARROLLO DE SOFTWARE I
//Código para la acción respuesta = OK true}
} else {
…
//Código para la acción respuesta no igual a OK false
}
2.3. La sentencia if…else if. Tipo de estructura que se encarga de evaluar múltiples condiciones
if (condición ){
//Código
} else if (condición 2) {
//Código
} else if (condición n) { //Código }
Ejemplo 1
String nombre="Juan Perez Lopez", cat="A";
double sb=700,sn;
if (cat.equals("A")==true) {
sn = sb + 250;
} else if (cat.equals("B")==true) {
sn = sb + 150;
} else if (cat.equals("C")==true) {
sn = sb + 100; // continua en la siguiente pagina
} else {
sn = 0 ;
} Ejemplo 2 public static void main(String[] args) { float sueldo; sueldo = Integer.parseInt(JOptionPane.showInputDialog(null,"ingrese sueldo 1","sueldo",1));
if (sueldo>3000) {
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 25
DESARROLLO DE SOFTWARE I
System.out.println("Esta persona debe abonar impuestos");
} }
Ejemplo 3. Programa que devuelva la suma de cuadrados consecutivos:
2.4. LA SENTENCIA SWITCH.
La sentencia switch se utiliza para realizar sentencias condicionalmente basadas en alguna expresión. Por ejemplo, queremos mostrar el nombre de un mes basándose en su número entero equivalente.
Nota: La sentencia break es relativamente opcional dependiendo del tipo de aplicación que deseas realizar como se mostrara en el ejemplo siguiente y se utiliza para finalizar el switch tras la ejecución de un case. Si la sentencia break no estuviera, al salir de
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 26
DESARROLLO DE SOFTWARE I
un bloque case entraría en el siguiente aunque el valor de ese case no coincidiera con el evaluado en la expresión. El case default se ejecuta si el resultado de la expresión no coincide con ningún case. Su uso también es opcional.
Ejercicio:
El resultado será Domingo puesto que el valor inicial del día es 1
La sentencia switch evalúa su expresión, en este caso el valor de cadena día, y ejecuta la sentencia case apropiada.
La sentencia break hace que el control salga de la sentencia switch y continúe con la siguiente línea. La sentencia break es necesaria en esta aplicación porque las sentencias case se siguen ejecutando hacia abajo. Esto es, sin un break explícito, el flujo de control seguiría secuencialmente a través de las sentencias case siguientes.
En el ejemplo, no se quiere que el flujo vaya de una sentencia case a otra, por eso se ha tenido que asignar las sentencias break.
Sin embargo, hay ciertos escenario en los que el control proceda secuencialmente a través de las sentencias case.
int mes, año;
int numeroDias;
. . .
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 27
DESARROLLO DE SOFTWARE I
switch (mes) {
case 1.
case 3.
case 5.
case 7.
case 8.
case 10.
case 12. numeroDias = 31;break;
case 4.
case 6.
case 9.
case 11. numeroDias = 30;
break;
case 2.
if ( ((año % 4 == 0) && !( año % 100 == 0)) || año % 400 == 0) )
numeroDias = 29;
else
numeroDias = 28;break;
}
Finalmente, puede utilizar la sentencia default al final de la sentencia switch para manejar los valores que no se han manejado explícitamente por una de las sentencias case.
Ejemplo Aplicativo:
int mes;
mes = Integer.parseInt(JOptionPane.showInputDialog(null,"Ingrese Mes","Mes",1));switch (mes) {
case 1: System.out.println("Enero"); break;
case 2: System.out.println("Febrero"); break;
case 3: System.out.println("Marzo"); break;
case 4: System.out.println("Abril"); break;
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 28
DESARROLLO DE SOFTWARE I
case 5: System.out.println("Mayo"); break;
case 6: System.out.println("Junio"); break;
case 7: System.out.println("Julio"); break;
case 8: System.out.println("Agosto"); break;
case 9: System.out.println("Septiembre"); break;
case 10: System.out.println("Octubre"); break;
case 11: System.out.println("Noviembre"); break;
case 12: System.out.println("Diciembre"); break;
default: System.out.println("Este, no es un mes válido!");
break;
}
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 29
DESARROLLO DE SOFTWARE I
II. ESTRUCTURA DE CONTROL REPETITIVAS. En este capítulo se trataran los siguientes temas:
ESTRUCTURAS DE CONTROL REPETITIVAS
Estructura de control for. Estructura de control while. Estructura de control do while.
1. ESTRUCTURA DE CONTROL REPETITIVAS. Aplica las estructuras de control for. 1.1. Sentencia repetitiva for. La sentencia for realiza una acción un número determinado de veces sabiendo cuantas veces iterara el mismo, esta estructura es controlada por un contador.
Sintaxis:
for (inicio; condición; incremento) {
Instrucciones;
}
Ejemplo:
Imprimir la siguiente serie de números: 0, 1, 2, 3, 4,…..20
for (i = 0; i <= 20; i =i+1) {
System.out.println(i);
}
1.2. Sentencia repetitiva While. La sentencia while realiza una acción un número determinado de veces si es que la condición a evaluarse es verdadera, esta estructura es controlada por un contador.
Sintaxis:
While ( Condicion ) {
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 30
DESARROLLO DE SOFTWARE I
Instrucciones;
Contador
}
Nota:
Generalmente esta estructura se utiliza en situaciones en donde desconocemos la cantidad de ciclos que se deben ejecutar para producir un resultado.
Ejemplo:
Imprimir la siguiente serie de números: 0, 1, 2, 3, 4,…..20
int n=0;
while (n <= 20) {
System.out.print(n +"\n");
n++;
}
1.3. Sentencia do…while. La sentencia do…while se emplea cuando el bucle debe ejecutarse al menos una vez.
Sintaxis:
do {
Instrucciones;
…
} while (condición);
Ejemplo:
Leer información de un archivo, al menos debe leer un carácter.
int n;
n = 10 ;
do {
System.out.println(n);
n--;
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 31
DESARROLLO DE SOFTWARE I
} while (n != -1);
Casos Aplicativos:
Ejemplo 1. int f; for(f=1;f<=100;f++) { System.out.println(f); System.out.print("-"); } Ejemplo 2. public static void main(String[] args) { int aprobados,reprobados,f,nota; aprobados=0; reprobados=0; for(f=1;f<=5;f++) { nota = Integer.parseInt(JOptionPane.showInputDialog(null,"ingrese nota ", " Nota",1)); if (nota>=10) { aprobados=aprobados+1; } else { reprobados=reprobados+1; } } System.out.print("Cantidad de aprobados:"); System.out.println(aprobados); System.out.print("Cantidad de reprobados:"); System.out.print(reprobados); } // Salida
Ejemplo 3. public static void main(String[] args) { //multiplis de 3 y 5 ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 32
DESARROLLO DE SOFTWARE I
int mul3,mul5,valor,f; mul3=0; mul5=0; for(f=1;f<=4;f++) { valor = Integer.parseInt(JOptionPane.showInputDialog(null,"ingrese valor ","Valor",1)); if (valor%3==0) { mul3=mul3+1; } if (valor%5==0) { mul5=mul5+1; } } System.out.println("Cantidad de valores ingresados múltiplos de 3:"); System.out.println(mul3); System.out.println("Cantidad de valores ingresados múltiplos de 5:"); System.out.print(mul5); } } Salida
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 33
DESARROLLO DE SOFTWARE I
Problemas propuestos: Ha llegado nuevamente la parte fundamental, que es el momento donde uno desarrolla individualmente la solución de un problema. 1. Elaborar un programa que lea n pares de datos, cada par de datos corresponde a
la medida de la base y la altura de un triángulo. El programa deberá informar: a) De cada triángulo la medida de su base, su altura y su superficie. b) La cantidad de triángulos cuya superficie es mayor a 12.
2. Desarrollar un programa que solicite la carga de 10 números e imprima la suma
de los últimos 5 valores ingresados.
3. Desarrollar un programa que muestre la tabla de multiplicar del 5 (del 5 al 50). Confeccionar un programa que permita ingresar un valor del 1 al 10 y nos muestre la tabla de multiplicar del mismo (los primeros 12 términos). Ejemplo: Si ingreso 3 deberá aparecer en pantalla los valores 3, 6, 9, hasta el 36.
4. Realizar un programa que lea los lados de n triángulos, e informar:
a) De cada uno de ellos, qué tipo de triángulo es: equilátero (tres lados iguales),
isósceles (dos lados iguales), o escaleno (ningún lado igual). b) Cantidad de triángulos de cada tipo. c) Tipo de triángulo que posee menor cantidad.
5. Escribir un programa que pida ingresar coordenadas (x,y) que representan puntos
en el plano. Informar cuántos puntos se han ingresado en el primer, segundo, tercer y cuarto cuadrante. Al comenzar el programa se pide que se ingrese la cantidad de puntos a procesar. Se realiza la carga de 10 valores enteros por teclado. Se desea conocer: a) La cantidad de valores ingresados negativos. b) La cantidad de valores ingresados positivos. c) La cantidad de múltiplos de 15. d) El valor acumulado de los números ingresados que son pares.
Importante:
1. Contadores.
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 34
DESARROLLO DE SOFTWARE I
Un contador es una variable que se emplea para contar el número de ocurrencias de un suceso o el número de veces que se cumple un determinada condición. Por ejemplo, se necesita un contador para determinar: El número de veces que se hizo clic en un botón. El número de notas ingresadas. El número de notas aprobatorias. Una instrucción de conteo tiene la siguiente forma: contador++;
2. Acumuladores. Un acumulador es una variable que se emplea para acumular o totalizar cantidades de una misma especie. Por ejemplo, se necesita un acumulador para determinar: El sueldo total de los empleados de una empresa. La edad total de un conjunto de personas. La suma de las notas de un alumno. Una instrucción de conteo tiene la siguiente forma: acumulador += cantidad;
3. Comentarios. // Para establecer comentarios de una sola línea o comentarios a la derecha /* Comentarios en bloque… */ /** Comentarios para documentación… **/
Contador: Es aquel que lleva la cuenta de las veces que se ha realizado un proceso.
Contador es aquel que usaras dentro de una iteración y que fuera de ella no tiene valor significativo.
Estructura general de un programa en Java:
import javax.swing.*;
public class Demostracion { // inicio de la clase
//Declaración global
String nombre;
//Método principal
public static void main(String[] args) {
//Asignando un valor a la variable nombre ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 35
DESARROLLO DE SOFTWARE I
nombre=”Juan Perez”;
//Mostrando en pantalla un mensaje de bienvenida
System.out.println(“Bienvenido a Java “ + nombre);
}//fin del metodo
}//fin de la clase
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 36
DESARROLLO DE SOFTWARE I
III. CLASES MATH Y STRING.
En este capítulo se trataran los siguientes temas:
Clase String. Operaciones de cadena. Clase Math. Operaciones Matemáticas.
CLASES BASE: CLASE MATH Y CLASE STRING.
1. La Clase Math. Es una de las clases principales de Java ubicada en el paquete java.lang. Esta clase contiene una serie de métodos estáticos que nos ofrecen algunas funciones matemáticas importantes, a las que podemos acceder desde cualquier otra clase de la siguiente manera:
Métodos estáticos de la Clase Math:
Método Estático Significado
abs() Devuelve el valor absoluto
acos() Devuelve el arcocoseno
asin() Devuelve el arcoseno
atan () Arcotangente entre –PI/2 y PI/2
atan2(,) Arcotangente entre –PI y PI
ceil () Entero más cercano en dirección a infinito
floor () Entero más cercano en dirección a –infinito
round () Entero más cercano al argumento
rint () Entero más próximo
Math.abs(-5)
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 37
DESARROLLO DE SOFTWARE I
cos() Calcula el coseno
Sin() Calcula el seno
tan() Calcula la tangente
exp() Calcula la función exponencial
log() Calcula el logaritmo natural (base e)
max ( , ) Obtiene el máximo de dos argumentos
min( , ) Obtiene el mínimo de dos argumentos
random () Número aleatorio entre 0.0 a 1.0
pow ( , ) Devuelve el primer argumento elevado al segundo
sqrt () Devuelve la raíz cuadrada
toDegrees () Pasa de radianes a grados
toRadians() Pasa de grados a radianes
2. La Clase String. La Clase String es también una de las clases principales de Java, ubicada en el paquete java.lang. Esta clase contiene una serie de métodos estáticos orientados al manejo de las cadenas de caracteres. Recordemos que en Java una cadena de caracteres (String) no es un dato primitivo, sino más bien corresponde a una clase, por lo tanto podemos decir que todas las cadenas son objetos instanciados de la clase String.
Creación de cadenas de texto:
Primera Forma:
String Apellidos;
Apellidos=“Vargas Martínez”;
Segunda Forma:
String Apellidos;
Apellidos=new String(“Vargas Martínez”);
¿Cómo acceder a un método estático de la clase String?
Para acceder a un método estático de la clase String, debemos hacerlo desde uno de los objetos instanciados.
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 38
DESARROLLO DE SOFTWARE I
Ejemplo:
int n=Apellidos.length() //Devuelve la longitud de la cadena //apellidos
Métodos estáticos de la Clase String:
Método Estático Significado
length() Devuelve la longitud de una cadena
startsWith Devuelve verdadero si la cadena empieza con …
reverse() Devuelve la cadena en sentido inverso
ValueOf Devuelve la representación como String
IndexOf( , ) Devuelve la posición de un carácter dentro de una cadena
Substring( , ) Extrae una determinada cantidad de caracteres de una
cadena
toLowerCase() Convierte una cadena a mayúsculas
toUpperCase() Convierte una cadena a minúsculas
trim() Elimina espacios en blancos antes y después de la cadena
charAt( ) Devuelve el carácter asociado a una posición.
Otros tipos de conversiones:
Convertir a String:
Esta forma de conversión lo podemos lograr a través del método valueOf de la Clase String
Ejemplo:
int valor=12;
String valorCad=String.valueOf(valor);
Nota: El método valueOf funciona para convertir datos int, double, float, long, y char.
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 39
DESARROLLO DE SOFTWARE I
EJERCICIOS PRÁCTICOS.
//Programa que calcula la suma de las cifras de un #
import javax.swing.*;
public class SumaCifras {
public static void main(String[] args){
//Definiendo variables
String c;long suma=0;
//Obteniendo # como texto
c=JOptionPane.showInputDialog(null,"Ingrese Número de 3 cifras","",1);
//Convirtiendo el número en entero
int n=Integer.parseInt(c);
//Descomponiendo el # en centenas, decenas y unidades
long cen=n/100;
long res=n%100;
long dec=res/10;
long uni=res%10;
//Calculando la suma de las cifras
suma=cen+dec+uni;
//Imprimiendo la suma de las cifras
System.out.println("La suma sus cifras es: "+suma);
}
}
//Programa que determina si un número es primo o no
import javax.swing.*;
public class NumeroPrimo{
public static void main(String[] args) {
//Definiendo variable para el número
String c;
//Ingresando numero como texto
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 40
DESARROLLO DE SOFTWARE I
c=JOptionPane.showInputDialog(null,"Ingrese número","",1);
//Convirtiendo el numero a entero
int n=Integer.parseInt(c);
//Determinando si el # es primo o no
if (n%1==0 && n%n==0 && n%2!=0){
System.out.println("El # "+n+" es PRIMO");
}else{
System.out.println("El # "+n+" No es PRIMO");
}
}
}
//Programa que determina el revés de un número
import javax.swing.*;
public class NumeroReves {
public static void main(String[] args) {
//Definiendo variable para el número
String c;
//Ingresando numero como texto
c=JOptionPane.showInputDialog(null,"Ingrese número","",1);
//Creando un nuevo objeto de tipo StringBuffer
StringBuffer c1=new StringBuffer(c);
//Aplicando el método reverse para invertir el número
StringBuffer c2=c1.reverse();
//Imprimiendo el número invertido
System.out.println("El número al revés es "+c2);
}
}
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 41
DESARROLLO DE SOFTWARE I
//Simula el lanzamiento de 3 dados
public class LanzaDados {
public static void main(String[] args){
//Declarando variables
int i=1,c=0;
//Definiendo bucle para generar tiros
while(i<=100) {
//Generando los numeros
long d1=Math.round(Math.random()*5+1);
long d2=Math.round(Math.random()*5+1);
long d3=Math.round(Math.random()*5+1);
//Incrementa en 1 el contador
c++;
//Imprimiendo los tiros de los dados
System.out.print(d1+"\t"+d2+"\t"+d3);
System.out.println("");
//Incrementa 1 al contador
i++;
//continua en la siguiente pagina
//Si los tres dados tinen 6 se termina el programa
if (d1==6 && d2==6 && d3==6){i=101;}
}
System.out.print("Fue necesario tirar "+c+" veces");
}
}
// Genera notas aleatorias con histograma
public class NotasConHistograma {
public static void main(String[] args){
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 42
DESARROLLO DE SOFTWARE I
//Definiendo variables contador y control de notas
int c=0,i=1;
//Imprimiendo la cabecera
System.out.println("Nota"+"\t"+"Histograma");
System.out.println("======================");
//Bucle para establecer notas
while(i<=50) {
//Generando las notas
double n=Math.round(Math.random()*20);
//Imprime la nota
System.out.print(n+"\t");
//Genera el histograma
for (int j=1;j<=n;j++){
System.out.print("*");
}
//Imprime linea en blanco
System.out.println("");
i++;//Incrementa 1 al control de notas
}
}
}
Ejercicios Aplicativos:
Estructura if…else
1.- Clase: NumeroPrimo
//Programa que determina si un número es primo o no
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 43
DESARROLLO DE SOFTWARE I
Pulse SHIFT + F6 para ejecutar la aplicación. Luego verá un cuadro de diálogo donde debe ingresar un número para determinar si es primo o no.
La ventana de salida de NetBeans mostrará el resultado del proceso.
Estructura while
2.- Clase: Número Primo
//Programa que determina si un número es primo o no
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 44
DESARROLLO DE SOFTWARE I
Pulse SHIFT + F6 para ejecutar la aplicación. Luego verá un cuadro de diálogo donde debe ingresar un número para calcular el factorial del número.
La ventana de salida de NetBeans mostrará el resultado del proceso.
Propuesto con for: 1. Genere números naturales consecutivos del 27 al 79. 2. Digite la cantidad de números naturales que se desean visualizar, muéstrelos en
forma ascendente. 3. Ingrese un número natural y muestre todos números naturales en forma
descendente inferiores al número digitado. 4. Genere y muestre los 50 primeros múltiplos de tres en forma ascendente.
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 45
DESARROLLO DE SOFTWARE I
5. Genere y muestre los 30 primeros números impares positivos pero en forma descendente.
6. Digite un número natural y muestre su factorial, tenga en cuenta que el factorial de 0 y 1 es 1.
7. Ingrese un número natural y muestre todos sus divisores.
Utilizando Estructura while
3.- Clase: NotasConHistograma
//
Programa que genera notas aleatorias con histograma y uso de la clase Math, //métodos round y random.
Pulse SHIFT + F6 para ejecutar la aplicación. La ventana de salida de NetBeans mostrará las notas de 50 alumnos con su respectivo histograma según la nota obtenida por el alumno.
Salida del ejercicio Aplicativo:
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 46
DESARROLLO DE SOFTWARE I
Caso con Math. public class Math1 { public static void main(String[] args) { double operador1=25.5; double operador2=15.21; Math.ceil(operador1); // Devuelve 26.0 Math.floor(operador2); //Devuelve 15.0 Math.pow(operador1, operador2); // Devuelve 2.474435537975361E21 Math.max(operador1, operador2); //Devuelve 25.5 Math.sqrt(operador1); ////Devuelve 5.049752469181039 }
}
Estructura while.
4.- Clase: LanzaDados
//Simula el lanzamiento de 3 dados empleando la clase Math y los métodos round y //random.
Recordando que el método random es aleatorio y el método round redondea una expresión numérica
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 47
DESARROLLO DE SOFTWARE I
Pulse SHIFT + F6 para ejecutar la aplicación. La ventana de salida de NetBeans mostrará los puntajes de los dados y el número de veces que se lanzaron los dados.
Clase String
Clase: Comparación
//Compara si dos objetos son iguales y si tienen el mismo valor
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 48
DESARROLLO DE SOFTWARE I
Pulse SHIFT + F6 para ejecutar la aplicación. La ventana de salida de NetBeans mostrará la comparación entre las cadenas en canto a si son los mismos objetos y si tienen en mismo valor.
Propuestos
1) Crea una aplicación que nos calcule el área de un círculo, cuadrado o triangulo. Pediremos que figura queremos calcular su área y según lo introducido pedirá los valores necesarios para calcular el área. Crea un método por cada figura para calcular cada área, este devolverá un número real. Muestra el resultado por pantalla
2) Crea una aplicación que nos genere una cantidad de números enteros aleatorios
que nosotros le pasaremos por teclado. Crea un método donde pasamos como
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 49
DESARROLLO DE SOFTWARE I
parámetros entre que números queremos que los genere, podemos pedirlas por teclado antes de generar los números. Este método devolverá un número entero aleatorio. Muestra estos números por pantalla.
3) Crea una aplicación que nos cuente el número de cifras de un número entero
positivo (hay que controlarlo) pedido por teclado. Crea un método que realice esta acción, pasando el número por parámetro, devolverá el número de cifras.
4) Crea una aplicación que permita calcular el factorial de un número pedido por
teclado, lo realizara mediante un método al que le pasamos el número como parámetro. Para calcular el factorial, se multiplica los números anteriores hasta llegar a uno. Por ejemplo, si introducimos un 5, realizara esta operación 5*4*3*2*1=120.
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 50
DESARROLLO DE SOFTWARE I
IV. ARREGLOS EN JAVA. En este capítulo se trataran los siguientes temas:
Arrays. Tipos. Componentes swing (GUI).
Arreglos en Java.
Los Arreglos en Java son agrupaciones de campos de memoria en los cuales podemos almacenar valores de forma “ordenada”, estos valores almacenados pueden ser de tipo primitivo o de objetos (clases), para manipular los datos (agregar, eliminar, buscar) se accede a ellos por medio de su índice, el cual va desde 0 (cero) hasta su valor -1 (n-1), para empezar a entender lo que es un arreglo tenemos la siguiente imagen:
La imagen es de un arreglo de 10 elementos, que en los diferentes campos siempre va un valor del mismo tipo de valor (int, float, double, boolean, etc.). Sabiendo de antemano las características que poseen los arreglos pasamos a la creación de estos. Para la creación de estos es de la siguiente manera:
Declaración de un Arreglo
int numeros[] = new int [5];
TIPOS DE ARRAY.
1. Array Unidimensional. Se le llama también Lineal, vector o lista. El siguiente grafico muestra un arreglo lineal:
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 51
DESARROLLO DE SOFTWARE I
Inicialización del Array.
Consiste en darle valores a cada elemento del arreglo, este proceso lo podemos hacer al mismo tiempo que creamos el arreglo
Ejemplos
int x[] = { -3, 5, 56, -23, 45, 67, 3, 7, 14, 22 };
char estCivil[] = { ‘s’, ‘d’, ‘c’, ‘d’, ‘s’, ‘s’ };
String nombre[] = { “Luis”, “Juan”, “Inés”, “Raúl” };
double basicos[] = {790.4, 1050.2, 870.0, 1300.5};
Ejemplo de Aplicación:
//creando el Array
int numeros[] = new int [5];
//Asignando valores al Array
numeros[0] =10;
numeros[1]=15;
numeros[2]=25;
numeros[3]=5;
numeros[4]=17;
//mostrando los valores del Array
for (int p=0; p<numeros.length; p++ ){
System.out.println("Numero : " + numeros[p]);
}
Aplicación 01. Utilizando la clase BufferedReader import java.io.*; BufferedReader teclado;
teclado = new BufferedReader (new InputStreamReader(System.in));
//Declaración de variables
int p;
int a[];
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 52
DESARROLLO DE SOFTWARE I
//arreglo de 3 posiciones
a = new int[3];
//Carga del arreglo
System.out.println(" Cargando el arreglo ......");
for ( p=0; p<a.length; p++ ){
System.out.print("a[" + p + "]=> ");
a[p]=Integer.parseInt(teclado.readLine());
}
//Muestra del arreglo
System.out.println(" Mostrando el arreglo ......");
for ( p=0; p<a.length; p++ )
System.out.println("a[" + p + "]= " + a[p]);
}
Aplicación 02. Mostrando de manera aleatoria 10 valores en una variable de tipo Array //Declaración de variables int p; int b[];
b = new int[10];
//Carga del arreglo con números aleatorios
for ( p=0; p<b.length; p++ )
b[p]=(int)((99-10+1)*Math.random()+10);
//Muestra del arreglo
System.out.println(" Mostrando el arreglo ......");
for ( p=0; p<b.length; p++ )
System.out.println("b[" + p + "]= " + b[p]);
Aplicación 03.
Array que devuelve de una lista de valores el Mayor y Menor valor encontrado así como su posición y adicionalmente devuelve la suma
//Declaración de variables
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 53
DESARROLLO DE SOFTWARE I
int num, pos_mayor, pos_menor, mayor, menor, p, suma;
int g[];
g = new int[15];
//Carga del arreglo con números aleatorios
System.out.println("Mostrando el arreglo ........");
for ( p=0; p<g.length; p++ ) {
g[p]=(int)((80-20+1)*Math.random()+20);
System.out.println("g[" + p + "]= " + g[p]); }
pos_mayor=0; pos_menor=0;
mayor=10; menor=10;
//Ubicando el mayor y menor valor
System.out.println("Buscando el mayor y menor ........");
for ( p=0; p<g.length; p++ ){
if (p == 0){
mayor=g[0];
menor=g[0];
}else{
if (g[p] > mayor){
mayor=g[p];
pos_mayor=p;
} if (g[p] < menor){
menor=g[p];
pos_menor=p;
} } }
System.out.println("Mayor : " + mayor + " posicion : " + pos_mayor);
System.out.println("Menor : " + menor + " posicion : " + pos_menor);
//Calculando la suma
System.out.println("Calculando la suma........");
suma = 0;
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 54
DESARROLLO DE SOFTWARE I
for (p = 0; p < g.length; p++) {
if (p % 2 == 0) {
suma = suma + g[p];
} }
System.out.println("Suma : " + suma);
2. Array Bidimensional.
Los arrays bidimensionales o también denominados Matriz o tablas. La dimensión de un array la determina el número de índices necesarios para acceder a sus elementos.
Una matriz necesita dos índices para acceder a sus elementos. Gráficamente podemos representar una matriz como una tabla de n filas y m columnas cuyos elementos son todos del mismo tipo.
Array m de 3 filas y 5 columnas:
Gráficamente podemos representar la disposición real en memoria del array anterior así:
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 55
DESARROLLO DE SOFTWARE I
Ejemplo:
Aplicativo 01. int fil,col; int a[][]= new int[3][2]; //Inicializando los valores a[0][0] = 12; a[0][1] = 11; a[1][0] = 13; a[1][1] = 14; a[2][0] = 15; a[2][1] = 21; System.out.println(" Mostrando la matriz ......"); //creando el bucle for( fil=0; fil<=2; fil++ ){ // recorriendo por las filas for ( col=0; col<=1; col++)// recorriendo por las columnas System.out.print("\t" + a[fil][col]); System.out.println();//realizando el salto de linea } Ventajas de un array:
- Puedes almacenar bastante información en una variable. - Puedes recuperar esa información. - Es más fácil de trabajar. - Trabajas con direcciones. - Si conocemos la posición dentro del arreglo del elemento que queremos
consultar, la consulta toma un tiempo constante. - Pueden ser usados para implementar otras estructuras de datos sofisticadas
como pilas, colas, tablas hash.
Problema 1. Matriz que devuelve 3 filas, 4 columnas y de forma aleatoria valores de un solo digito: int fil,col; int a[][]; a= new int[3][4]; //Carga del arreglo con números aleatorios for ( fil=0; fil<3; fil++ ) for ( col=0; col<4; col++ )
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 56
DESARROLLO DE SOFTWARE I
a[fil][col]=(int)(Math.random()*10); //Muestra del arreglo System.out.println(" Mostrando la matriz ......"); for ( fil=0; fil<3; fil++ ) { for ( col=0; col<4; col++ ) System.out.print("\t" + a[fil][col]); System.out.println(); } System.out.println();
Salida
Problema 2
int fil,col; int d[][]; d= new int[5][5]; //Carga del arreglo con números aleatorios for ( fil=0; fil<5; fil++ ) for ( col=0; col<5; col++ ) d[fil][col]=(int)((50-20+1)*Math.random()+20); //Muestra del arreglo System.out.println(" Mostrando la matriz ......"); for ( fil=0; fil<5; fil++ ) { for ( col=0; col<5; col++ ) System.out.print("\t" + d[fil][col]); System.out.println(); } //Elementos de la primera fila System.out.print("\n Mostrando elementos de la primera fila ...\n"); for ( col=0; col<5; col++ ) System.out.print("\t" + d[0][col]); System.out.println(); //Elementos de la ultima columna System.out.print("\n Mostrando elementos de la última columna...\n"); for ( fil=0; fil<5; fil++ )
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 57
DESARROLLO DE SOFTWARE I
System.out.print("\t" + d[fil][4]); System.out.print("\n\n")
Salida
Problema 3
public static void main(String[] args){ int fil,col,suma_fil,suma_col; int e[ ][ ]; e = new int[7][7]; //Carga del arreglo con números aleatorios for ( fil=0; fil<7; fil++ ) for ( col=0; col<7; col++ ) e[fil][col]=(int)((20-10+1)*Math.random()+10); //Muestra del arreglo System.out.println(" Mostrando la matriz ......"); for ( fil=0; fil<7; fil++ ) { for ( col=0; col<7; col++ ) System.out.print("\t" + e[fil][col]); System.out.println(); } //Elementos de la fila central suma_fil=0; for ( col=0; col<7; col++ ) suma_fil=suma_fil+e[3][col]; System.out.print("\n\nSuma elementos, fila central : " + suma_fil); //Elementos de la columna central suma_col=0; for ( fil=0; fil<7; fil++ )
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 58
DESARROLLO DE SOFTWARE I
suma_col=suma_col+e[fil][3]; System.out.print("\n\nSuma elementos, columna central: "+suma_col+"\n\n"); }
Salida:
Desventajas de un array: - Su tamaño es fijo, por lo que si no se conoce de antemano el número máximo de
elemento a almacenar pueden ocurrir problemas si el espacio reservado es menor del necesario.
- Insertar elementos de manera ordenada es muy lento. - Buscar un elemento en un arreglo desordenado es muy lento.
Ejemplos:
Crear un array de 3 posiciones:
Solución
Crear un array de 2 filas y 3 columnas:
Solución
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 59
DESARROLLO DE SOFTWARE I
Declarar un array de 2 posiciones con valores asignados por defecto:
Solución
Clase: Tridimensional: //Aplicación que permite almacenar notas de tres cursos para tres alumnos //empleando un arreglo tridimensional.
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 60
DESARROLLO DE SOFTWARE I
Pulse SHITF + F6 para ejecutar la aplicación. La ventana de salida de NetBeans mostrará las notas más altas de los tres alumnos contenidos en el arreglo.
Arreglos Unidimensionales
1. Crear el arreglo a con 8 elementos de tipo entero, cargarlo con valores que se ingresaran vía teclado, finalizada la carga muestre el arreglo.
2. Construya un arreglo b entero de 10 elementos, cargarlo con números aleatorios de 2 cifras, terminada la carga muestre el arreglo.
3. Crear un arreglo c entero y cárguelo con los siguientes valores -25, 45, 8, 16, 25, 34, 1 ,12. Finalizada la carga muestre el arreglo.
4. Construya un arreglo d entero de 15 elementos, cárguelo con números aleatorios del 35 al 70, terminada la carga muestre: a. El arreglo. b. La suma de los valores de los 5 elementos centrales.
5. Crear un arreglo e entero de 20 elementos y cárguelo con números aleatorios de 2 a 3 cifras, finalizada la carga muestre: c. El arreglo. d. Las posiciones y los valores de los elementos cuyo contenido es par. e. El promedio de los 8 últimos elementos.
6. Construya un arreglo f entero de 12 elementos, cárguelo con números aleatorios del 50 al 150; ahora ingrese un numero entero el cual se buscará en el arreglo, si lo encuentra muestre en qué posición o posiciones se encuentra, de no ubicarlo muestre el mensaje “no se encuentra en el arreglo”.
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 61
DESARROLLO DE SOFTWARE I
7. Crear un arreglo g entero de 15 elementos, cárguelo con números aleatorios del 20 al 80, terminada la carga muestre: a. El mayor y el menor valor que se encuentra en el arreglo, además de mostrar
sus ubicaciones correspondientes.
La suma de los valores de todos los elementos que están en posición par.
UNIDAD DE INTERFACES GRAFICAS (GUI).
Utilizando Formularios (componentes Swing)
Explorador de proyectos
Formulario
Paleta de propiedades Paleta de controles
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 62
DESARROLLO DE SOFTWARE I
EJERCICIOS DE REFORZAMIENTO – INVESTIGACIÓN. 1) ¿Cuáles son las características principales de Java?
2) ¿Qué extensión tienen los archivos de Java?
3) ¿Qué es el JDK de Java?
4) ¿Cuáles son las principales tecnologías de Java?
5) ¿Qué son variables?
6) ¿Cuántos tipos de datos maneja Java?
7) ¿Cuáles son las sentencias de control de Java?
8) ¿Qué son contadores?
9) ¿Qué son acumuladores?
10) ¿Qué es una clase?
11) ¿Qué es un objeto?
12) ¿Qué es una instancia?
13) ¿Qué es un método?
14) ¿Cuáles son las clases base de Java?
15) ¿Qué método emplea para extraer raíz cuadrada?
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 63
DESARROLLO DE SOFTWARE I
AUTOEVALUACIÓN – TAREA. 1. Es propietaria de Java:
a) Microsoft b) Sun c) Adobe d) Macromedia
2. Los archivos compilados que generan ceros y unos, se denominan: a) ByteCodes b) Clase c) Intérprete d) Compilador
3. El intérprete que ejecuta la aplicación Java se denomina:
a) Class b) Compiler c) JavaVM d) Ninguno
4. No es una tecnología de Java: a) Servlets b) Applets c) JDBC d) Frames
5. La variable que determina el número de notas ingresadas se denomina: a) Contador b) Operador c) Clase d) Acumulador
6. short, byte, int son tipos de datos: a) Básicos b) Primitivos c) Numéricos d) Referenciales
7. Realiza una acción mientras se cumpla una determinada condición: a) if b) switch c) for d) while
8. Realiza acciones un número determinado de veces controlado por contador: a) while b) for c) if d) switch
9. No es un método de la clase Math: a) pow b) round c) sqrt d) avg
10. Extrae una determinada cantidad de caracteres de una cadena a) length b) valueOf c) substring d) charAt
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 64
DESARROLLO DE SOFTWARE I
Controles de la paleta Swing.
Mostrar nombres de los componentes:
Para mostrar los nombres de los componentes swing de tal modo que pueda identificarlos con facilidad haga lo siguiente:
1. Pulse botón derecho en cualquier componente.
2. Elija la opción Show Component Names:
Estableciendo el estilo de diseño:
Para realizar un diseño libre del formulario active la opción NullLayout, para ello haga lo siguiente:
1. Pulse botón derecho en el formulario.
2. Elija la opción Set Layout.
3. Haga clic en Null Layout.
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 65
DESARROLLO DE SOFTWARE I
Agregar componentes en el formulario:
1. Pulse el componente que desea agregar al formulario. 2. Haga clic en el formulario.
Ejemplo de Aplicación No. 1. Como ejemplo desarrollaremos un formulario que permita realizar las cuatro operaciones aritméticas básicas. Para ello agregue los siguientes controles al formulario: • 1 JLabel, para mostrar mensajes descriptivos. • 2 JTextField, Para ingresar datos y mostrar resultados. • 3 JButton. Para ejecutar las operaciones. El formulario debe mostrar el siguiente aspecto:
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 66
DESARROLLO DE SOFTWARE I
Propiedades de los componentes: Las propiedades son las características que se asignan a los componentes con la finalidad de dar una buena presentación al diseño del formulario. Para asignar propiedades a los componentes haga lo siguiente: 1. Seleccione el componente.
2. En el panel de propiedades, pulse sobre la propiedad que desea asignar.
3. Defina el valor correspondiente para la propiedad
Nota cada vez que desea aplicar una propiedad tenga presente en seleccionar el control
Recordando:
¿Para qué nos sirve la clase? Para crear objetos de tipo Taxi. Por eso se dice que en Java una clase define un tipo. Recordamos ahora la definición de clase que habíamos dado previamente: “Clase: conjunto de objetos , métodos y propiedades .”
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 67
DESARROLLO DE SOFTWARE I
Define las siguientes propiedades de los controles:
Redimensionar el tamaño del formulario. En la sección Code del panel de propiedades, elija la opción Generate Resize Code para mostrar el formulario con el tamaño que definió en el diseño. Renombrar componentes. El nombre de los componentes se define para efectos de utilizarlos en el código de la aplicación. Para renombrar componentes haga lo siguiente: 1. Pulse botón derecho en el componente.
2. Elija la opción Rename.
3. Escriba el nombre del componente.
Defina los siguientes nombres de los componentes. Estos nombres serán utilizados en el código de la aplicación.
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 68
DESARROLLO DE SOFTWARE I
Cuando haya terminado de definir los nombres y los textos de los componentes, el formulario debe tener el siguiente aspecto.
Cómo obtener datos de un JTextField. Para obtener datos de un componente JTextField y asignarle a una variable, se emplea el método getText(). Cómo establecer datos en un JTextField. Para establecer datos en un componente JTextField, se emplea el método setText(). Para codificar la aplicación, haga doble clic en los botones y escriba el código Java.
Componente Nombre JTextField1 Txt1 JTextField2 Txt2 JTextField3 Txt3 JButton1 BtnSuma JButton2 BtnResta JButton3 BtnMultiplica JButton4 BtnDivide
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 69
DESARROLLO DE SOFTWARE I
Pulse SHIFT + F6 para ejecutar la aplicación, luego ingrese los datos y pulse en los botones para realizar los cálculos correspondientes.
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 70
DESARROLLO DE SOFTWARE I
Aplicación Visual - Array1:
Programando dentro del botón.
private void btnValoresActionPerformed(java.awt.event.ActionEvent evt) {
String[] cursos= {"1. Java","2. Visual Net", "3. C++","4. SQL","5. HTML","6. PHP" }; FrmArray1 a=new FrmArray1(); String n1,n2,n3,n4,n5,n6; int nn1,nn2,nn3,nn4,nn5,nn6; //ingresando numero como texto n1=JOptionPane.showInputDialog(null,"Ingrese Nota1","",1); n2=JOptionPane.showInputDialog(null,"Ingrese Nota2","",1);
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 71
DESARROLLO DE SOFTWARE I
n3=JOptionPane.showInputDialog(null,"Ingrese Nota3","",1); n4=JOptionPane.showInputDialog(null,"Ingrese Nota4","",1); n5=JOptionPane.showInputDialog(null,"Ingrese Nota5","",1); n6=JOptionPane.showInputDialog(null,"Ingrese Nota6","",1); System.out.println("-------------------------------"); String[] nota= new String[cursos.length]; double[] promedioponderado= new double[1]; nn1=Integer.parseInt(nota[0] = n1); nn2=Integer.parseInt(nota[1] = n2); nn3=Integer.parseInt(nota[2] = n3); nn4=Integer.parseInt(nota[3] = n4); nn5=Integer.parseInt(nota[4] = n5); nn6=Integer.parseInt(nota[5] = n6); promedioponderado[0]=(nn1+nn2+nn3+nn4+nn5+nn6)/6; //salida String salida="Curso Notas"+ "\n"+"---------------------------------------"+ "\n"+cursos[0]+" "+nota[0]+ "\n"+cursos[1]+" "+nota[1]+ "\n"+cursos[2]+" "+nota[2]+ "\n"+cursos[3]+" "+nota[3]+ "\n"+cursos[4]+" "+nota[4]+ "\n"+cursos[5]+" "+nota[5]+ "\n"+"---------------------------------------"+ "\n El promedio ponderado es: "+ promedioponderado[0]; JOptionPane.showMessageDialog(null,salida,"Promedio de Notas ",JOptionPane. INFORMATION_MESSAGE); Caso aplicativo a implementar: Caso 1:
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 72
DESARROLLO DE SOFTWARE I
Caso 2:
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 73
DESARROLLO DE SOFTWARE I
Caso 3 (Libre) – Solucionario. Script de las pantallas anteriores. Paso 1 En un archivo Javaclass crear una clase de nombre Operacion public class Operacion { //creacion de una entidad de ambito publico public int suma (int n1, int n2){ int s ; s = n1 + n2 ; return s; } public int resta (int n1, int n2){ int r ; r = n1 - n2 ; return r; } public int multi (int n1, int n2){ int m ; m = n1 * n2 ; return m; } public int divi (int n1, int n2){ int d ; d = n1 * n2 ; return d; } } Paso 2. Crear en el proyecto un Jframe de nombre Aplicacion2 //declaracion a nivel de clase Operacion v = new Operacion(); //variables a nivel de clase int s,r,m,d,num1,num2; String verdis;
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 74
DESARROLLO DE SOFTWARE I
Dentro de la clase void nuevo(){ txtnombre.setText(""); txtape.setText(""); txtcodigo.setText(""); txtdir.setText(""); txtcodigo.requestFocus(); t1.setText(""); t2.setText(""); t3.setText(""); } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { num1 = Integer.parseInt(t1.getText()); num2 = Integer.parseInt(t2.getText()); s = num1 + num2 ; t3.setText(String.valueOf(v.suma(num1, num2))); } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { num1 = Integer.parseInt(t1.getText()); num2 = Integer.parseInt(t2.getText()); r = num1 - num2 ; t3.setText(String.valueOf(v.resta(num1, num2))); } private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { num1 = Integer.parseInt(t1.getText()); num2 = Integer.parseInt(t2.getText()); m = num1 * num2 ; t3.setText(String.valueOf(v.multi(num1, num2))); } private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) { String cod,nom,ape,dir ; int dist ; cod = txtcodigo.getText(); nom = txtnombre.getText(); ape= txtape.getText(); dir = txtdir.getText(); dist = cbdis.getSelectedIndex(); switch (dist){ case 0 : verdis = "Cercado";break; ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 75
DESARROLLO DE SOFTWARE I
case 1 : verdis = "Lince";break; case 2 : verdis = "V.E,S";break; case 3 : verdis = "Callao";break; case 4 : verdis = "Comas";break; } //mostrando los datos JOptionPane.showMessageDialog(null, "El codigo ingresados es : " + cod + "\n" + "El nombre del cliente es : " + nom + "\n" + "El Apellido es : " + ape + "\n" + "La Direccion es : " + dir + "\n" + "El Distrito seleccionado es : " + verdis +"\n" ,"Reporte de clientes",1); } private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) { nuevo(); } Casos resueltos: Promedio De Notas: private void txtpromedioActionPerformed(java.awt.event.ActionEvent evt) {
int practica,cuaderno,exsamen;
double promedio ;
String nombre;
nombre = txtnombre.getText();
practica=Integer.parseInt(txtpractica.getText());
cuaderno=Integer.parseInt(txtcuaderno.getText());
exsamen=Integer.parseInt(txtexsamen.getText());
promedio= (practica+cuaderno+exsamen)/3;
txts.setText("Resultados: es"+"\n");
txts.append("Nombre del Alumno es:"+nombre+"\n");
txts.append("promedio es:"+promedio+"\n");
}
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 76
DESARROLLO DE SOFTWARE I
Caso 2. -Calcular el importe el Igv es 18%, Descuento 0.08% private void txttotalActionPerformed(java.awt.event.ActionEvent evt) { int factura,precio,cantidad;
double calcular = 0.00,dcto = 0,igv = 0,total;
String cliente,articulo;
articulo = txtarticulo.getText();
cliente = txtcliente.getText();
factura=Integer.parseInt(txtfactura.getText());
precio=Integer.parseInt(txtprecio.getText());
cantidad=Integer.parseInt(txtcantidad.getText());
if((cantidad>0)&&(precio>0)){
calcular=cantidad*precio;
igv= calcular *18/100;
dcto =calcular*8/100;
} total = calcular+igv-dcto;
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 77
DESARROLLO DE SOFTWARE I
txts.setText("Resultados:de la venta es "+"\n");
txts.append("El codigo del Producto es:"+factura+"\n");
txts.append("El Nombre del articulo es :"+precio+"\n");
txts.append("la cantidad del producto es:"+cantidad+"\n");
txts.append(" calcular:"+calcular+"\n");
txts.append("el total es:"+total+"\n");
}
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 78
DESARROLLO DE SOFTWARE I
Caso 3.- importe de ventas en java. import javax.swing.*; public class FrmVentas { public static void main(String[ ] args){ int cantidad,unidad,total;
String out= " ";
for(int i=1;i<=7;i++) {
String articulo,temp;
articulo=JOptionPane.showInputDialog("Ingrese nombre del articulo");
temp=JOptionPane.showInputDialog("Ingrese cantidad del producto"+articulo);
cantidad=Integer.parseInt(temp);
temp=JOptionPane.showInputDialog("Ingrese el importe del producto" + " " + articulo);
unidad=Integer.parseInt(temp);
total=cantidad*unidad;
if(total<100) {
total=cantidad;
} else {
total=unidad*cantidad;
}
out=out+"Nombre:"+articulo+"\n"+"Costo por unidad del producto:"+ unidad+"\n"+" cantidad del producto:"+cantidad+"\n"+" total a pagar es:"+total+"\n"+"\n";
} JOptionPane.showMessageDialog(null,out," Informe de Ventas de Articulos",JOptionPane.PLAIN_MESSAGE); } }
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 79
DESARROLLO DE SOFTWARE I
Casos Aplicativos – Trabajo Solucionario Paso 1 Crear una clase de nombre: Aplicacion01 public class Aplicacion01 { public int promediopracticas(int n1,int n2,int n3,int n4){ int mejor=10000,prom=0; if(n1<mejor) mejor=n1; if(n2<mejor) mejor=n2; if(n3<mejor) mejor=n3; if(n4<mejor) mejor=n4; prom=(n1+n2+n3+n4-mejor)/3; return prom; } public int promediofinal(int n1,int n2,int n3){ int prom1=0; prom1= (n1+n2+n3)/3; return prom1; } public int peor(int n1,int n2,int n3,int n4){ int mejor=10000; if(n1<mejor) mejor=n1; if(n2<mejor) mejor=n2; if(n3<mejor) mejor=n3; if(n4<mejor) mejor=n4; return mejor; } Pasó 2 Implementar el formulario: Programa Promedio Final
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 80
DESARROLLO DE SOFTWARE I
Aplicacion01 apli=new Aplicacion01(); frm2 obj=new frm2(); //Creación de la variable estática public static int n1,n2,n3,n4,ef,np,pp; private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { n1=Integer.parseInt(jTextField1.getText()); n2=Integer.parseInt(jTextField2.getText()); n3=Integer.parseInt(jTextField3.getText()); n4=Integer.parseInt(jTextField4.getText()); jLabel6.setText(String.valueOf("nota: "+ apli.promediopracticas(n1, n2, n3, n4))); jLabel9.setText(String.valueOf("peor: "+ apli.peor(n1, n2, n3, n4))); } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { pp=apli.promediopracticas(n1, n2, n3, n4);
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 81
DESARROLLO DE SOFTWARE I
ef=Integer.parseInt(jTextField6.getText()); np=Integer.parseInt(jTextField7.getText()); jLabel10.setText(String.valueOf("nota:"+ apli.promediofinal(pp, ef, np))); JOptionPane.showMessageDialog(null,"SU PROMEDIO FINAL ES: " + apli.promediofinal(pp, ef, np)); } private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { obj.setVisible(true); } private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) { int num=(int)evt.getKeyChar(); if(num>=48&&num<=57){ } else { evt.consume(); } } private void jTextField2KeyTyped(java.awt.event.KeyEvent evt) { int num=(int)evt.getKeyChar(); if(num>=48&&num<=57){ }else{ evt.consume(); } } private void jTextField3KeyTyped(java.awt.event.KeyEvent evt) { int num=(int)evt.getKeyChar(); if(num>=48&&num<=57){ } else { evt.consume(); } } private void jTextField4KeyTyped(java.awt.event.KeyEvent evt) { int num=(int)evt.getKeyChar(); if(num>=48&&num<=57){ }else{ evt.consume(); }
ESCUELA DE TECNOLOGÍAS DE INFORMACIÓN 82
DESARROLLO DE SOFTWARE I
} Paso 3 Implementando en formulario Reporte import Aplicacion01; //programando el evento formWindowActivated private void formWindowActivated(java.awt.event.WindowEvent evt) { FrmEdutec edu=new FrmEdutec(); Aplicacion01 apl=new Aplicacion01(); jLabel5.setText(String.valueOf(apl.promediopracticas(edu.n1, edu.n2, edu.n3, edu.n4))); jLabel6.setText(String.valueOf(apl.promediofinal(edu.pp, edu.ef, edu.np))); int prome; prome=Integer.parseInt(jLabel6.getText()); if(prome>10){ jLabel7.setText("APROBADO : )"); }else{ jLabel7.setText("DESAPROBADO : ("); } }
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 83