Archivo de la etiqueta: Eclipse Luna

Estructura Java Do-While (Hacer-Mientras)

Lo que hace esta estructura es primero ejecutar, luego revisar la condición. Es decir, hace lo opuesto a lo que hace el while, que evalúa la condición primero y ejecuta de acuerdo a ello.

Ejemplo:

Mientras haya camino, dar un paso (estilo While)

Dar un paso, mientras haya camino (Do- While)

Ejemplo 2:

Mientras el puntaje no sea 6, lanzar dado (while)

Lanzar dado, mientras el puntaje no sea 6 (do-While)


 

EJERCICIO: Lanzar dado hasta obtener un 6.

Código será:

int puntaje;
txtS.setText(«»);
do {
puntaje = (int)(6*Math.random()+1);
txtS.append(puntaje+»\n»);
}
while (puntaje!=6);
}
}

Fórmula para generar valores aleatorios en método For-While

EJERCICIO DEL DADO:

Diseñe un programa que simule 30 lanzamientos de un dado y muestre los puntajes obtenidos en una columna a razón de un puntaje por fila.

La fórmula para generar valores aleatorios es:

Número= (int) (máximo número – mínimo número +1) * Math.random()+ mínimo número);

El código será:

protected void actionPerformedBtnProcesar(ActionEvent e) {
// Creo la variable puntaje para el número random.
int puntaje;

//Aplico el método for y estipulo las condiciones dentro de un paréntesis.

for(int contador=0; contador<30; contador++)

//Abro llaves:

{

//Pongo dentro la fórmula para números aleatorios:
puntaje=(int)(6*Math.random()+1);

//Imprimo el resultado de los puntajes lanzados a la suerte.

txtS.append(puntaje+»\n»);

//Cierro llaves.
}
}
}


 

PROBLEMA DE NÚMEROS ALEATORIOS

Diseñe un programa que genere aleatoriamente los sueldos enteros de 100 empleados de una empresa con valores del intervalo 850 a 3150 y muestre lo siguiente:

  • Los sueldos generados.
  • EL sueldo promedio.
  • La cantidad de sueldos menores o iguales que 1750.
  • La cantidad de sueldos mayores que 1750, pero menores o iguales que 2500.
  • La cantidad de sueldos mayores que 2500.

La resolución sería la siguiente (falta revisar, hay errores)

protected void actionPerformedBtnProcesar(ActionEvent e) {
// MI BOTÓN
int sueldo, suma= 0, contador1= 0, contador2= 0, contador3= 0;
double suelpromedio;
txtS.setText(«»);

for(int contador=0; contador <100; contador++){
sueldo=(int)(22651*Math.random()+850);
txtS.append(sueldo+»\n»);
suma += sueldo;
if (sueldo <= 1750) contador1 ++;
else
if(sueldo <= 2500) contador2 ++;
else
contador3 ++;

suelpromedio= suma/100.0;
txtS.append(«Sueldos menores a 1750 soles: «+contador1+»\n»);
txtS.append(«Sueldos mayores a 1750 soles pero menores a 2500: «+contador2+»\n»);
txtS.append(«Sueldos mayores a 2500 soles: «+contador3+»\n»);
txtS.append(«Sueldos promedio: «+suelpromedio);
}
}
}

Estructura de repetición For- While (Para- Mientras)

A esta estructura se le conoce como “Bucle controlado por contador”. Se utiliza cuando se conoce el número de interacciones, es decir, la cantidad de veces que se aplicará.

Ejemplo 1: Hacer que el programa repita tres veces la palabra “Java”.

Código Java:

protected void actionPerformedBtnProcesar(ActionEvent e) {
//A DIFERENCIA DEL SIMPLEMENTE WHILE, aquí inicio con el método (el for) y procedo a indicar las condiciones del contador, ojo: solo del contador. No pongas punto y coma al final del contador++ porque dejará de funcionar.
for (int contador=0; contador<3; contador ++)

// Igual abro llaves

{

// Y dentro indico lo que hay que imprimir
txtS.append(«Java»+»,»+»\n»);

//Cierro llaves y fin.

}
}
}


 

Ejemplo 2: El ejercicio de la serie de fracciones, pero con for.

Así quedaría el código:

protected void actionPerformedBtnProcesar(ActionEvent e) {

// Declaro las otras variables. Es decir, todo lo demás que no sea el contador, que ya sabemos que es la principal diferencia del for-while.
int numerador= 2, denominador=3;
double suma=0;

// Reseteo la pantalla.

txtS.setText(«»);

//Declaro el for y todo lo que tenga que ver con el cotador.
for(int contador=0; contador<10; contador++)

//Abro llaves.

{

//Imprimo las fracciones. No te olvides de poner el salto de línea con el slash n.
txtS.append(numerador+»/»+denominador+»\n»);

// Indico la operación para la suma de datos. No olvides multiplicar por 1.0. para que no salga como número real.
suma += (numerador *1.0)/denominador;

// Hago las sumas para denominador y numerador.

numerador += 4;
denominador += 5;

//Cierro llaves.
}

//Imprimo la suma.
txtS.append(«La suma de todo es: «+suma);
}
}

Estructura de repetición while en Java

EJERCICIO 1:  Hacer que el programa imprima tres veces la palabra “JAVA”:

Paso 1. GUI:

Paso 2. Codificio en Java:

protected void actionPerformedBtnProcesar(ActionEvent arg0) {
//BOTON PROCESAR
//PASO 1: Creo un contador y le indico que comience en 0, previamente he indicado su tipo. si se trata de un entero, un número real, etc.

int contador=0;

//PASO 2: Formateo mi pantalla con un setText en blanco, tipo los que uso para borrar pantalla.
txtS.setText(«»);
//PASO 3: Introduzco el método while, creo un contador y planteo la condición, en este caso, que no se repita la palabra «Java» más de 3 veces.

while (contador<3){

//PASO 4: Indico que se muestre la palabra Java.

txtS.append(«Java»+»\n»);

//INDICO QUE EL CONTADOR SUME DE UNO EN UNO

contador++;
}
}
}


 

EJERCICIO 2: Hacer que el programa imprima y sume 55 términos de la siguiente serie

5 ,12, 19, 26, 33 …(avanzan sumando +7)

Paso 1: Pantalla gráfica (GUI)

PASO 2: Programo en el JAVA:

protected void actionPerformedBtnProcesar(ActionEvent e) {
//DECLARO VARIABLES E INDICO SU TIPO

int numero=5, suma=0, contador=0;

//RESETEO PANTALLA
txtS.setText(«»);

//PONGO EL WHILE Y DETERMINO SU PRIMERA CONDICIÓN CON EL CONTADOR

while(contador<55)

//ABRO LLAVES
{

//PIDO QUE SE IMPRIMAN LOS NÚMEROS DE LA SERIE

txtS.append(numero+»\n»);

//PLANTEO LAS CONDICIONES PARA LAS OTRAS VARIABLES

//Con este += indico que a la suma se le va sumando cada número de la serie. 5+12+19+26…

suma += numero;

//Con este += indico que cada número de la serie avanza de 7 en 7, o el número que se me pida en el problema.
numero += 7;

//El ++, como en el ejercicio anterior, es para indicar que el contador sume de 1 en 1.

contador ++;

//CIERRO LLAVE DEL WHILE
}

//PIDO QUE SE IMPRIMA LA SUMA TOTAL DE LOS 55 NUMEROS DE LA SERIE

txtS.append(«Suma:»+suma);
}
}


Ejemplo 3: Hacer que el programa imprima y sume 40 términos de esta serie con fracciones

3/2, 7/5, 11/8, 15/11…

Lo separamos por numerador (el de arriba) y denominador (el de abajo)

** Para que en Java no me aparezca la división como número real (es decir; 3.0/2), tengo que multiplicar el valor en el proceso por 1.0.

Así: suma += (numero *1.0)/ denominador;

PASO 1: Armo mi pantalla gráfica

PASO 2: Codifico en Java.

protected void actionPerformedBtnProcesar(ActionEvent e) {
//BOTÓN PARA PROCESAR

//Declaro mis variables e indico su tipo.

int numerador=3, denominador=2, contador=0;
double suma=0;

//Reseteo pantalla

txtS.setText(«»);

// Declaro el método while.

while(contador<40)

//Abro llaves

{

// Imprimo los números de la serie, uso la barra slash para separarlos y darle aspecto de fracción.
txtS.append(numerador+»/»+denominador+»\n»);

//Aplico un *1.0 al numerador para que no me salga como número real.

suma += (numerador*1.0)/denominador;

// Indico al numerador que aumente de a cuatro.

numerador += 4;

// Indico al denominador que aumente de a tres.
denominador += 3;

// El contador crece de 1 en 1.

contador ++;

//Cierro llaves
}

// Imprimo la suma de todo
txtS.append(«La suma de todo es: «+ suma+ «\n»);
}
}

Pasos para crear métodos con valor de retorno en Java

Para los métodos con valor de retorno:

Primer paso: Crear GUI

Segundo paso: definir número y tipo de variables

Tercer paso: Hacer tu seudocódigo

Cuarto paso: Llamar métodos.

Para llamar métodos:

  • Los datos de entrada como getCantidad van solo acompañados de dos paréntesis () y un punto y coma (;).

Así:

marca=getMarca();

  • Los datos de entrada que requerirán un desarrollo como el que me calcule el importe a pagar incluyen dentro de los paréntesis las variables que usaré en el cálculo. Estas, a diferencia de las que irán cuando determine mis métodos, van sin la especificación de su tipo; es decir, el int o double o string antes.

Así:

ipag=CalcularImportePagar(marca,cant);

  • No olvides que el método para mostrar resultados va sin nombre.

Así:

mostrarReporte(regalo,ipag);

  • No olvides que aquí tiene que cerrar con una llave. Luego empiezas con la especificación de lo que hará cada método creado.

 

Quinto paso: Determinar métodos.

Para determinar métodos:

  • La estructura es la siguiente:
    indico el tipo de variable (real, entero, cadena…) + nombre del método+ Abro y cierro llaves. Dentro de las llaves va el proceso. A diferencia del código antes enseñado, acá no utilizamos el nombre de la variable, sino la palabra return. Todo lo demás es igual. No olvidar los paréntesis antes de las llaves, así vaya vacío.

Así:

int getMarca(){

return cboMarca.getSelectedIndex();

}

  • En el caso de que sea un método que requiere un proceso, como los métodos para calcular impuesto a pagar. Se hace lo siguiente: indico tipo de variable + nombre del método+ dentro de los paréntesis las variables a usar precedidas por su tipo. Aquí las variables cambian de nombre, pero se mantiene la ubicación con la que se presentan en el llamado de métodos.

Así:

double calcularImportePagar(int m, int c){

 

}

  • Dentro de las llaves va el proceso a seguir:

Así:

double calcularImportePagar(int m, int c){

switch(m){

case 0:return 35.0*c;

case 1:return 47.5*0*c;

default: return 60.0*c;

}

}

  • En el caso del método para mostrar resultados. Este irá precedido por la palabra void. Luego todo lo demás es parecido y conocido:

Así:

void mostrarReporte(double ip, int re){

txtS.setText(«El importe a pagar es: «+ip+»\n»);

txtS.append(«Te corresponden esta cantidad de lapiceros:»+re+»\n»);

}

 

}

 

Sexto paso: Para crear el método borrar:

protected void actionPerformedBtnBorrar(ActionEvent arg0) {

//CREO MI PROCESO

BorrarTodo();

}

//BOTON BORRAR

void BorrarTodo(){

txtS.setText(«»);

txtCantidad.setText(«»);

txtCantidad.requestFocus();

//cboProductos.setModel(«P1 S/.15.0»);

 

cboProductos.setSelectedIndex(0);

}

}

 

Ejercicios de aplicación de métodos con valor de retorno en Java

EJEMPLO DE EXAMEN:

Diseño de GUI:

GUI1

DATOS DEL EJERCICIO:

Producto Precio
P 0P 1

P 2

20.017.5

25.0

Segunda parte:

Cantidad Caramelos
<5>=5 y <10

>=10

23

2 por cada unidad

VARIABLES:

pro, ipag, can, car;

DESARROLLO DEL PROBLEMA:

protected void actionPerformedBtnProcesar(ActionEvent arg0) {

//CÓDIGO PARA EL BOTÓN PROCESAR

//DECLARO VARIABLES LOCALES

int pro,can,car;

double ipag;

// LLAMO MIS MÉTODOS

pro=getProducto();

can=getCantidad();

ipag=calcularImportePagar(pro,can);

car=calcularCaramelos(can);

mostrarReporte(ipag,car);

}

//DETERMINO MIS MÉTODOS

//PARA METODO 1

int getProducto(){

return cboProducto.getSelectedIndex();

}

//PARA MÉTODO 2

int getCantidad(){

return Integer.parseInt(txtCantidad.getText());

}

 

//PARA MÉTODO 3

double calcularImportePagar(int p, int c){

switch(p){

case 0: return 20.0*c;

case 1: return 17.5*c;

default: return 25.0*c;

}

}

 

//PARA MÉTODO 4

int calcularCaramelos(int c){

if(c<5)

return 2;

else

if (c<10)

return 3;

else

return 2*c;

}

 

// PARA MÉTODO 5

void mostrarReporte (double ip, int ca)

{

txtS.setText(«Importe a pagar: «+ip+»\n»);

txtS.append(«Caramelos a recibir:» +ca+»\n»);

//ACÁ TERMINA

}

}

 

EJERCICIO 2:

Una tienda vende camisas a los siguientes precios:

MARCA PRECIO
Adan

Abercrombie

Elegant

S/.35.0

S/.47.5

S/.60.0

 

Como incentivo la tienda regala 2 lapiceros por cada unidad adquirida para todas las compras.

Dadas la marca y la cantidad de camisas diseñe un programa que determine el importe a pagar y los lapiceros de obsequio.

Considere todas las variables como locales y use los siguientes métodos.

actionPerformed BtnProcesar

getMarca

getCantidad

calcularImportePagar

calcularLapiceros

mostrarReporte

 

VARIABLES
marca (entero)

Cant (entero)

Ipag (real)

Regalo (entero)

GUI:

 

CÓDIGO:

protected void actionPerformedBtnProcesar(ActionEvent e) {
//MI CÓDIGO PARA EL BOTÓN PROCESAR
int marca,cant,regalo;
double ipag;

//LLAMO MIS MÉTODOS
marca=getMarca();
cant=getCantidad();
ipag=calcularImportePagar(marca,cant);
regalo=calcularLapiceros(cant);
mostrarReporte(ipag,regalo);
}
// DEFINIR MÉTODOS
//MÉTODO 1:
int getMarca{
return cboMarca.getSelectedIndex();
}
//MÉTODO 2:
int getCantidad{
return Integer.parseInt(txtCantidad.getText());
}
//MÉTODO 3:
double calcularImportePagar(int m, int c){
switch(m){
case 0:return 35.0*c;
case 1:return 47.5*0*c;
default: return 60.0*c;
}
}
//METODO 4:
int calcularLapiceros(int c){
return 2*c;
}
// MOSTRAR RESULTADOS:
void mostrarReporte(double ip, int re){
txtS.setText(«El importe a pagar es: «+ip+»\n»);
txtS.append(«Te corresponden esta cantidad de lapiceros:»+re+»\n»);
}

}

Ejercicios de Java en Eclipse Luna. Vol II

EJERCICIO: «Programa Golosina»

Una tienda ha puesto en oferta la venta de galletas en packs de 12 unidades a los precios dados en la siguiente tabla:

Golosina Precio del pack
Cream Cracker S/. 9.0
Chomp S/. 7.4
Pícaras S/. 8.6
Doña Pepa S/. 10.6

Como oferta, la tienda ofrece un porcentaje de descuento sobre el importe de la compra de acuerdo a la siguiente tabla:

Cantidad de packs Descuento
< 5 3%
≥ 5 y < 10 7%
≥ 10 y < 15 11%
≥ 15 15%

Adicionalmente, la tienda obsequia caramelos de acuerdo a la siguiente tabla:

Importe a pagar Caramelos
≥ 150 3 por cada pack
< 150 2 por cada pack

Diseñe un programa que determine el importe de la compra, el importe del descuento, el importe a pagar y la cantidad de caramelos de obsequio conociendo el tipo de golosina y la cantidad de packs de una compra.

 

RESOLUCIÓN:

Seudocódigo Código JAVA
Inicio//Declaracion de variablesEntero marcagolosina,  cant, regaloReal ic,id,ip,//Entrada de datos 

Leer marcagolosina,cant

 

//Inicio del Switch Calculo del IC

Cuando(marcagolosina)

{

case 0:ic=cant*9.0;terminar

caseo1:ic=cant*7.4;terminar

case2:ic=cant*8.6;terminar

default:ic=cant*10.6

}

Fin

 

INICIO DEL IF ENCADENADO (Calculo del ID)

si (cant<5)

{

Id=0.03*ic;

}

sino (cant>=5)

{

si (cant<10)

{

Id=0.07*ic;

}

sino(cant>=10)

{

si(cant<15)

{

Id=0.11*ic

}

sino(cant>=15)

{

Id=0.15*ic

}

}

}

 

CÓDIGO PARA EL INPUESTO A PAGAR

ip=ic-id

si (ic>=150)

{

regalo=3*cant

}

sino

{

regalo=2*cant

}

 

 

Imprimir ic,id,ip

FIN

 

//BOTON PROCESAR//DEFINIR VARIABLESint marcagolosina,cant,regalo;double ic,id,ip;//ENTRADA DE DATOS

marcagolosina=cboGolosinas.getSelectedIndex();

cant=Integer.parseInt(txtCantidad.getText());

//SWITCH

switch(marcagolosina){

case 0:ic=cant*9.0;break;

case 1:ic=cant*7.4;break;

case 2:ic=cant*8.6;break;

default:ic=cant*10.6;

}
INICIO DEL IF ENCADENADO (Calculo del ID)

//INICIO DEL IF ENCADENADO

if(cant<5)

{

id=0.03*ic;

}

else

{

if(cant<10)

{

id=0.07*ic;

}

else

{

if(cant<15)

{

id=0.11*ic;

}

else

{

id=0.15*ic;

}

}

}

//CODIGO FINAL

ip=ic-id;

if(ic>=150)

{

regalo=3*cant;

}

else

{

regalo=2*cant;

}

CÓDIGO PARA EL INPUESTO A PAGAR

ip=ic-id;

if(ic>=150)

{

regalo=3*cant;

}

else

{

regalo=2*cant;

}

 

//SALIDA DE DATOS

txtS.setText(«»);

txtS.append(«Impuesto de compra: «+ic+»\n»);

txtS.append(«Impuesto del descuento: «+id+»\n»);

txtS.append(«Impuesto a pagar: «+ip+»\n»);

}

}