Vous êtes sur la page 1sur 19

**EJEMPLO DE ESTRUCTURA SELECTIVA EN NETBEANS:

Determina si un numero entero que es ingresado por el teclado es POSITIVO, NEGATIVO O IGUAL A CERO.

*Agregar el paquete JoptionPane : import javax.swing.JOptionPane;

int numero = 0;

numero = Integer.parseInt(jTextField1.getText());

if (numero > 0) JOptionPane.showMessageDialog(mainPanel, "EL ENTERO "+numero+ " ES POSITIVO."); if (numero < 0 ) JOptionPane.showMessageDialog(mainPanel, "EL ENTERO "+numero+" ES POSITIVO."); if (numero == 0 ) JOptionPane.showMessageDialog(mainPanel, "EL ENTERO "+numero+" ES IGUAL A CERO)

Java con Netbeans: Estructuras Selectivas


Estructuras Selectivas Tal y como ya habamos visto en la introduccin, las estructuras selectivas son aquellas que realizan acciones dependiendo de una condicin especificada. Existen 4 tipos de estructuras selectivas, y son:
1) if (condicion){ acciones } 2) if (condicion){ acciones } else{ acciones alternas } 3) if (condicion) acciones; else if (condicion) acciones; else if (condicion) acciones; else if (condicion) acciones; else acciones; 4) switch (ciclo){ case 1: acciones; case 2: acciones; case 3: acciones; default: acciones; }

Ejercicio 1 Determinar el estado de un alumno de una institucin educativa en base al promedio de sus notas, ingresando 3 notas: Aprobado si es mayor o igual a 14 y Reprobado si es menor de 14. Solucin: Lo primero que se debe hacer es calcular el promedio del alumno, luego verificar si esta nota es mayor o igual a 14 o menor que 14. Crear la siguiente interfaz:

4 JTextField, 3 para ingresar las notas txtNota1, txtNota2, txtNota3, txtEstado para mostrar el estado. Ademas el JButton btnCalcular que activara el programa. Doble clik al boton para programar su accion:
private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) { int nota1,nota2,nota3; double promedio; String estado; nota1=Integer.parseInt(txtNota1.getText()); nota2=Integer.parseInt(txtNota2.getText()); nota3=Integer.parseInt(txtNota3.getText()); promedio=(nota1+nota2+nota3)/3; if(promedio<14) estado="Reprobado"; else estado="Aprobado"; txtEstado.setText(estado); }

Ya puede ejecutar su aplicacin:

**MODIFICADO: (Mostrando el promedio en pantalla) private void jButton1MouseClicked(java.awt.event.MouseEvent evt) { int nota1,nota2,nota3; double promedio; String estado; nota1=Integer.parseInt(jTextField1.getText()); nota2=Integer.parseInt(jTextField2.getText()); nota3=Integer.parseInt(jTextField3.getText()); promedio=(nota1+nota2+nota3)/3; if(promedio<14) estado="Reprobado"; else estado="Aprobado"; jTextField4.setText(estado); jTextField5.setText(Double.toString(promedio)); }

Ejercicio 2 Calcular el consumo de una persona en una tienda comercial donde se venden pantalones, camisas y zapatos. Si el consumidor compra ms de 5 camisas, obtiene un descuento del 5% del importe total de las camisas, si lleva 3 pantalones el descuento es de 10% del importe de los pantalones, y si lleva 2 o ms pares de zapatos obtiene un descuento del 50% del importe de los zapatos. La cantidad de productos deben ser ingresados. Mostrar el descuento y el total a pagar. Precio de los pantalones: 120, precio de las camisas: 150, y precio de los zapatos: 250. Solucin: Crear la siguiente interfaz:

Como vemos, hemos agregado 3 JTextField para capturar la cantidad de los precios, 1 JButton para programar nuestra aplicacion, y un JTextArea para mostrar los resultados, ya que sern de varias lneas: txtPa para la cantidad de los pantalones txtCa para la cantidad de las camisas txtZa para la cantidad de los zapatos btnCalcular txaSalida para mostrar los mensajes de salida. Entonces, doble clik al boton para programar su accin:
private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) { int cp, cc, cz; //Cantidad Pantalones Camisas Zapatos int subp, subc, subz, ss; //subtotales ss=Suma de Subtotales double dsctoP=0, dsctoC=0, dsctoZ=0, sd ; //descuentos sd=suma de descuentos

// Los descuentos se inicializan porque es posible que ninguna condicion se cumpla double total; //total a pagar //Capturando datos de los JTextBox cp=Integer.parseInt(txtPa.getText()); cc=Integer.parseInt(txtCa.getText()); cz=Integer.parseInt(txtZa.getText()); //Calculando subtotales subp=cp*120; subc=cc*150; subz=cz*250; ss=subp+subc+subz; //Calculando descuentos, aqui entran las condiciones if (cp>3) dsctoP=0.10*subp; if (cc>5) dsctoC=0.05*subc; if (cc>=2) dsctoZ=0.50*subz; sd=dsctoP+dsctoC+dsctoZ; //Calculando total a pagar total=ss-sd; //Aadiendo datos al JTextArea txaSalida usando el metodo append //Para aadir otra linea debajo de la otra se usa \n txaSalida.setText("Los subtotales a pagar son:" +"\n"); txaSalida.append("Pantalones: "+subp +"\n"); txaSalida.append("Camisas: "+subc +"\n"); txaSalida.append("Zapatos: "+subz +"\n" +"\n"); txaSalida.append("Los descuentos son:" +"\n"); txaSalida.append("Pantalones: "+dsctoP +"\n"); txaSalida.append("Camisas: "+dsctoC +"\n"); txaSalida.append("Zapatos: "+dsctoZ +"\n"+"\n"); txaSalida.append("El total a pagar es: "+total); }

Y ya puede ejecutar su aplicacin

Ejercicio 3 En un comedor, el total a pagar se calcula de la siguiente. Del consumo bsico, se calculan descuentos si se cumplen ciertas condiciones: Si el consumo es mayor a 50 se descuenta el 5%, si el consumo es mayor a 100 se descuenta el 10% y si el consumo es mayor a 150 se descuenta el 15%. Solo se puede hacer uno de los 3 tipos de descuentos. Luego de calcular el descuento, se calcula el impuesto 18%, y luego se calcula el total a pagar. Crear un formulario que muestre el consumo bsico, el descuento, el impuesto y el total a pagar. El consumo se debe ingresar de manera manual. Solucion Crear la siguiente interfaz:

Desde ahora los nombres de los identificadores estarn visibles en la interfaz para su mayor comprension. Doble clik al boton btnCalcular para programar su accion:
private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) { int basico; double dscto=0.00, impuesto, total; basico=Integer.parseInt(txtBasico.getText()); //Calculando descuento //Como solo se puede realizar un tipo de descuento //debemos crear intervalos, esto con ayuda del operador de conjuncion && "Y" if(basico>50 && basico<100) dscto=basico * 0.05; else if(basico>=100 && basico<150) dscto=basico * 0.10; else if(basico>=150) dscto=basico * 0.15; impuesto=basico * 0.18; total= basico - dscto + impuesto; //Mostramos resultados: txtDscto.setText(""+dscto); txtImp.setText(""+impuesto); txtTotal.setText(""+total); }

Ya puede ejecutar su aplicacin:

Ejercicio 4 Crear una aplicacin donde al seleccionar un numero de mes desde un JComboBox se muestre el nombre del mes respectivo, su signo zodiacal y estacin. Solucin: Crear la siguiente interfaz

Para agregar items al JComboBox (cboNum), clik derecho Propiedades buscan model y clik en el boton al lado( )

Luego, donde esta escrito Item 1, Item 2, Item 3, Item 4, borran y cambian por (Uno debajo de otro) 1 2 3 4 .. 12 Recordando el concepto de interfaces y escuchas: Como cada vez que se haga clik en el JComboBox se deben mostrar los resultados, eso quiere decir que debemos programar al JComboBox, doble clik para programar su accion:
private void cboNumActionPerformed(java.awt.event.ActionEvent evt) { int num; String signo="",estacion="",nombre=""; num=Integer.parseInt(cboNum.getSelectedItem().toString()); //Los items dentro de un JComboBox son Objetos //para convertirlos a enteros primero se deben convertir a String //para obtener el item seleccionado .getSelectedItem() //para convertir el item (objeto) a cadena .toString() switch (num){ case 1: signo= "Capricornio"; estacion= "Verano";

nombre="Enero"; break; case 2: signo= "Acuario"; estacion= "Verano"; nombre="Febrero"; break; case 3: signo= "Piscis"; estacion= "Verano"; nombre="Marzo"; break; case 4: signo= "Aries"; estacion= "Otoo"; nombre="Abril"; break; case 5: signo= "Tauro"; estacion= "Otoo"; nombre="Mayo"; break; case 6: signo= "Geminis"; estacion= "Otoo"; nombre="Junio"; break; case 7: signo= "Cancer"; estacion= "Invierno"; nombre="Julio"; break; case 8: signo= "Leo"; estacion= "Invierno"; nombre="Agosto"; break; case 9: signo= "Virgo"; estacion= "Invierno"; nombre="Setiembre"; break; case 10: signo= "Libra"; estacion= "Primavera"; nombre="Octubre"; break; case 11: signo= "Escorpio"; estacion= "Primavera"; nombre="Noviembre"; break; case 12: signo= "Sagitario"; estacion= "Primavera"; nombre="Diciembre"; break; } txaSalida.setText("El nombre del mes es: "+nombre +"\n"); txaSalida.append("Corresponde el signo: "+signo+"\n"); txaSalida.append("Estacin: "+estacion);

Ya puede ejecutar su aplicacion:

Java con Netbeans: Estructuras Repetitivas


Estructuras Repetitivas Son estructuras que se caracterizan porque pueden repetir varias veces la misma operacin sin tener que escribirla nuevamente, mediante un bucle. Un bucle es una sentencia, y es el conjunto de acciones que se repetiran si se cumplen ciertas condiciones establecidas por el programador. Conceptos importantes contador: Es una variable que inicia con un valor numrico, generalmente 0 o 1, y que va aumentando o disminuyendo a condicin del programa. Por ejemplo: i++, significa que la variable i aumentara su valor de 1 en 1. acumulador: Tambin es una variable, pero que , como su nombre indica, va acumulando valores diferentes. Por ejemplo: sumaDeNotas=SumaDeNotas + NotaIngresada

Existen 3 maneras de crear una estructura repetitiva. Cada una se usar de acuerdo a la necesidad del programa o funcin dentro de l.

1. Sentencia while. Permite realizar acciones si las condiciones establecidas se cumplen. while (condicion){ Instrucciones que se ejecutan si la condicion es verdadera } Ejercicio 1 Crear un programa que permita un valor n positivo ingresado por el usuario . Luego, calcule la suma de los n primeros nmeros naturales, los pares, los impares y los cuadrados. Finalmente mostrar resultados en pantalla. Solucin Crear la siguiente interfaz.

Doble clik al boton para programar su accion:


private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) { int num,res,cuadrado; int suma=0,sumap=0,sumai=0,sumac=0; int contador=0; num=Integer.parseInt(txtNum.getText()); contador=1; while(contador<=num){ suma=suma+contador; res=contador%2; if(res==0) sumap=sumap+contador; else sumai=sumai+contador; cuadrado=contador*contador; sumac=sumac+cuadrado; contador++; } txaSalida.setText("La suma de los "+num +" primeros nmeros naturales es:" + suma+"\n"); txaSalida.append("La suma de los pares: " + sumap +"\n"); txaSalida.append("La suma de los impares es:"+ sumai+"\n"); txaSalida.append("La suma de los cuadrados es:" +sumac); }

Puede ejecutar su aplicacin sin pormenores.

2. Sentencia dowhile. Permite realizar acciones si las condiciones establecidas se cumplen, pero a diferencia de while, la condicion se evala despues de realizar las acciones dentro del dowhile. Eso quiere decir que las acciones se ejecutarn por lo menos una vez.

Sintaxis
do{

acciones a realizar; }while(condicion);

Ejercicio 2. Creando tu minijuego 21 Crear una aplicacin con la lgica del juego 21. En este juego, se deben sacar cartas mientras la suma sea menor o igual a 21, si la suma de los valores sobrepasa 21 entonces mostrar un mensaje que muestre Perdio. Si se detiene la aplicacin y, con la siguiente carta que iba a ser puesta en juego, no se llega a sobrepasar 21, tambin mostrar Perdio. Los valores de las cartas seran del 1 al 13. Solucin Antes que nada algunas notas previas. Para generar un nmero entre 1 y 13 haremos un llamado a la clase Math.random() de la siguiente manera:
int numero; //para el numero al azar numero=Int(Math.random()*13)+1; // El int es para convertirlo a entero //se suma +1 para que genere valores desde 1 hasta 13 y no de 0 a 12;

Crear la siguiente interfaz:

El JButton btnReiniciar solo servira para limpiar el JTextArea (txaSalida) y devolver los valores a su estado inicial (Incluyendo tambin poner activo el JButton btnJugar) Doble clik al JButton (btnReiniciar) para programar su accion:
private void btnJugarActionPerformed(java.awt.event.ActionEvent evt) { int numero,resp; int suma=0; do{ numero = ((int)(Math.random()*13))+1; suma=suma+numero;

txaSalida.append("Numero generado: "+numero+"\t"+"Acumulado: "+suma+"\n"); if(suma<=21){ resp=JOptionPane.showConfirmDialog(null, "Desea Continuar?","",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE) ; if(resp==JOptionPane.NO_OPTION){ numero = ((int)(Math.random()*13))+1; suma=suma+numero; txaSalida.append("El numero generado hubiera sido: "+numero +" y el acumulado: "+suma); if(suma<=21){ JOptionPane.showMessageDialog(null, "Perdiste!!!"); } else{ JOptionPane.showMessageDialog(null, "Ganaste!!!"); } } } else{ JOptionPane.showMessageDialog(null, "Perdiste...! Vuelve a intentarlo!!"); resp=JOptionPane.NO_OPTION; } }while(resp==JOptionPane.YES_OPTION); btnJugar.setEnabled(false); }

Usamos los JOptionPane para controlar las respuestas del usuario si desea seguir jugando o no. Hasta ahora, tal vez sta sea la aplicacin mas complicada. Pero esto es slo el principio. Java nos ofrece muchas posibilidades, entre las cuales est crear juegos de este tipo mucho ms vistosos.

3. Sentencia for. Permite crear estructuras ligeramente sencillas (En realidad es la estructura repetitiva mas sencilla de usar). Su sintaxis es:

for (int cont= valor inicial; cont <= limite; cont++) Donde: cont : Un contador o un valor(nmero) entero. Sera el encargado de realizar el respectivo conteo de la cantidad de valores en el bucle. limite : Establece el lmite despues del cual, cuando la condicion ( cont <= limite) es falsa, sale del bucle y contina con la ejecucin del resto del programa. cont ++ : Establece el incremento (o decremento, segn la necesidad) del contador ( cont ++ quiere decir cont = cont+1) Para su mayor comprensin pasemos a unos sencillos ejemplos: Ejercicio 3 Calcular el factorial de un nmero. (Si Es un ejemplo demasiado sencillo, pero como bsico es ms que perfecto para ver el funcionamiento de un bucle for). Un factorial de un nmero cualquiera se calcula multiplicando desde 1 hasta el mismo nmero. Por ejemplo: 5! = 1*2*3*4*5 = 120 Crear la siguiente interfaz:

Doble clik al botn (btnCalcular) para programar su accin:


private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) { int num=0; float factorial=1; num= Integer.parseInt(txtNum.getText()); for(int i=1;i<=num;i++) factorial=factorial*i; txtFac.setText(""+factorial); }

Y listo, ya puede ejecutar su aplicacin. La razn de habler declarado al factorial como float es que la operacin factorial resulta en nmeros naturales demasiado grandes en expresiones pequeas. Por ejemplo, en el ejemplo anterior el factorial de 5 resulta 120,

pero si ingresamos el factorial de 11 ya nos da un resultado de 3.99168E7, valor que no podra ser contenido en el rango de int. Otra aclaracin, se inicializa al factorial en 1 para que pueda darnos resultados correctos, ya que cualquier nmero multiplicado por 0 (cero) siempre dara cero.

Si bien es cierto que esta aplicacin ha sido de las mas sencillas, se puede usar la misma solucin para, por ejemplo, calcular la suma de los nmeros naturales, el producto, suma de series de fracciones, y otras variantes ms. Lo importante es establecer el inicio y los lmites. Unos ejemplo ms:

Ejercicio 4 Crear un programa que calcule los divisores de un nmero natural cualquier. Tambin mostrar si el nmero ingresado es primo. Un nmero primo es aquel que solo sea divisible por 1 y por el mismo nmero. Solucin La lgica de este programa es sencilla. Luego de leer el nmero, se debe dividir al mismo por cada nmero natural, desde 1 hasta el mismo nmero. Cada vez que el residuo sea 0, se debe mostrar el nmero. Finalmente, con una condicional, mostrar el respectivo mensaje (Primo o no). Crear la siguiente interfaz:

Doble clik al botn para programar su accin:


private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) { int num=0,res=0,contDiv=0; num= Integer.parseInt(txtNum.getText()); txtMen.setText("");

for(int i=1;i<=num;i++){ res=num % i; if(res==0){ txtMen.append(""+i +"\n"); contDiv++; } } if(contDiv==2) txtMen.append("El nmero "+ num + " es primo!"); else txtMen.append("El nmero "+ num + " no es primo!"); }

Y ya puede ejecutar su aplicacin.

Vous aimerez peut-être aussi