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»);
}
}

Desarrollo continúa N03- Ejercicio de venta de computadoras

GUI:

PROCESO:

protected void actionPerformedBtnProcesar(ActionEvent arg0) {
//CÓDIGO DE MI BOTÓN PROCESAR
//DECLARO VARIABLES LOCALES:
int tipo,cant;
double icom,idesc,ipag;
//LLAMO MIS MÉTODOS
tipo=getTipo();
cant=getCantidad();
icom=calcularImporteComprar(tipo,cant);
idesc=calcularImporteDescuento(cant,icom);
ipag=calcularImportePagar(icom,idesc);
mostrarResultados(icom,idesc,ipag);
}
//DEFINO LAS FUNCIONES DE MIS MÉTODOS
//METODO 1
int getTipo(){
return cboTipo.getSelectedIndex();
}

//METODO 2
int getCantidad(){
return Integer.parseInt(txtCantidad.getText());
}

//METODO 3
double calcularImporteComprar(int ti, int ca){
switch(ti){
case 0: return 2000.00*ca;
case 1: return 2456.78*ca;
case 2: return 1756.90*ca;
default: return 1987.20*ca;
}
}

//METODO 4
double calcularImporteDescuento(int ca, double ic){
if(ca<=2)
return 0*ic;
else
if(ca<=4)
return 0.064*ic;
else
if(ca<=6)
return 0.09*ic;
else
return 0.0114*ic;
}

//METODO 5
double calcularImportePagar(double ic, double id){
return ic-id;
}

//MOSTRAR RESULTADOS
void mostrarResultados(double ic, double id, double ip){
txtS.setText(«Estos son los resultados:»+»\n\n»);
txtS.append(«El importe de compra es: «+ic+»\n»);
txtS.append(«El descuento es de :» +id+»\n»);
txtS.append(«El importe a pagar es: «+ip+»\n»);
}
protected void actionPerformedBtnBorrar(ActionEvent arg0) {
//CÓDIGO DE MI BOTÓN BORRAR
//LLAMO AL MÉTODO
BorrarTodo();
}
//DEFINO EL MÉTODO
void BorrarTodo(){
txtS.setText(«»);
txtCantidad.setText(«»);
txtCantidad.requestFocus();
cboTipo.setSelectedIndex(0);
}
}

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 resueltos de código Java en Eclipse Luna

Ejercicios propuestos y resueltos en seudocódigo y código Java para su mejor comprensión.  No explicaré paso a paso cómo armo cada código, porque comparto estos documentos para personas con un nivel básico de este lenguaje:

Los ejercicios son parte de las clases de programación de Cibertec:

EJERCICIO I:

  1. Diseñe un algoritmo para convertir grados sexagesimales (S) a grados centesimales (C) y radianes (R). Considere las siguientes fórmulas:

C= 200x S/ 180

R= 3.1416xS/180

La resolución sería la siguiente:

}
protected void actionPerformedBtnConvertir(ActionEvent arg0) {
//CÓDIGO DE MI BOTÓN
//DECLARAR VARIABLES
double centi,sexa,radian;
//ENTRADA DE DATOS
sexa=Double.parseDouble(txtSexa.getText());
//PROCESO
centi=(200*sexa)/180;
radian=(3.1416*sexa)/180;
//SALIDA DE DATOS
txtS.setText(«Temperaturas equivalentes:»+»\n\n»);
txtS.append(«Temperatura en centígrados: «+centi+».»+»\n»);
txtS.append(«Temperatura en radianes: «+radian+».»+»\n»);
}

EJERCICIO II:

Escriba un algoritmo que lea una temperatura en grados Centígrados (C) y la convierta a sus equivalentes en grados Fahrenheit (F), grados Kelvin (K) y grados Rankine(R). Utilice las siguientes fórmulas:

Rankine=centigrados+460

Fahrengeit=(9*centigrados/5)+32

Kelvin=rankine-187

La resolución sería la siguiente:

}
protected void actionPerformedBtnProcesar(ActionEvent arg0) {
//DECLARAR VARIABLES
double centi, fah,kel,rank;
//ENTRADA DE DATOS
centi=Double.parseDouble(txtCenti.getText());
//PROCESO
rank=centi+460;
fah=(9*centi/5)+32;
kel=rank-187;
//SALIDA DE DATOS
txtS.setText(«Temperaturas equivalentes: «+»\n\n»);
txtS.append(«Temperatura en Rankine: «+rank+»\n»);
txtS.append(«Temperatura en Fahrenheit: «+fah+»\n»);
txtS.append(«Temperatura en Kelvin: «+kel+»\n»);
}
protected void actionPerformedBtnBorrar(ActionEvent arg0) {
//BOTON BORRADOR
txtS.setText(«»);
txtCenti.setText(«»);
txtCenti.requestFocus();
}
}

EJERCICIO III

Para estimar el peso de un niño en situaciones de emergencias pediátricas se utiliza la siguiente fórmula:

peso en kilogramos=3 x edad en años+7

La solución es la siguiente:

protected void actionPerformedBtnProcesar(ActionEvent arg0) {
//DECLARAR VARIABLES
int edad;
double peso;
// ENTRADA DE DATOS
edad=Integer.parseInt(txtEdad.getText());
//Proceso
peso=3*edad+7;
//SALIDA DE DATOS
txtS.setText(«»);
txtS.append(«El peso estimado del niño es: «+peso+»\n»);
}

EJERCICIO IV:

Un hospital ha recibido una donación especial que será repartida entre las áreas de Pediatría, Medicina General, Ginecología y Traumatología. Cada área recibirá una parte de la donación equivalente a:

  • Pediatría: 20% del monto total recibido entre Medicina General y Ginecología.
  • Medicina General : 45% de la donación.
  • Ginecología : 80% del monto recibido por Medicina General.
  • Traumatología: lo que resta la donación.

Diseñe un algoritmo que determine cuánto recibirá cada área

La solución sería la siguiente:

}
protected void actionPerformedBtnProcesar(ActionEvent arg0) {
double don,ped,med,gine,tra;
don=Double.parseDouble(txtDon.getText());
med=0.45*don;
gine=.80*med;
ped=0.20*(med+gine);
tra=don-(med+gine+ped);
txtS.setText(«La donación se repartirá así: «+»\n\n»);
txtS.append(«Para medicina general: «+med+»\n»);
txtS.append(«Para ginecología: «+gine+»\n»);
txtS.append(«Para pediatría: «+ped+»\n»);
txtS.append(«Para traumatología: «+tra+»\n»);
}

 EJERCICIO V:

Una empresa confecciona polos de tamaño estándar aplicando un descuento del 11.5% del importe de la compra.

El importe de la compra se calcula multiplicando el precio del polo por la cantidad de polos adquiridos.

El importe a pagar se calcula restando el importe compra menos el importe del descuento.

Adicionalmente, la empresa obsequia dos lapiceros por cada polo adquirido.

Dados el precio del polo y la cantidad de polos adquiridos, diseñe un algoritmo que determine el importe de la compra, el importe del descuento, el importe a pagar y la cantidad de lapiceros de obsequio que le corresponden a un cliente.

La resolución sería la siguiente:

}
protected void actionPerformedBtnProcesar(ActionEvent arg0) {
//MI CODIGO
int cant,regalo;
double prec,icom,ides,ipag;
//ENTRADA DE DATOS
cant=Integer.parseInt(txtCantidad.getText());
prec=Double.parseDouble(txtPrecio.getText());
//PROCESO
icom=prec*cant;
ides=0.115*icom;
ipag=icom-ides;
regalo=2*cant;
//SALIDA DE DATOS
txtS.setText(«»);
txtS.append(«El importe de la compra es: «+icom+»\n»);
txtS.append(«El importe del descuento es: «+ides+»\n»);
txtS.append(«El importe a pagar es: «+ipag+»\n»);
txtS.append(«Cantidad de lapiceros de obsequio: «+regalo+»\n»);
}

 Y si le añado un botón de  borrar y cerrar ventana:

}
protected void actionPerformedBtnBorrar(ActionEvent arg0) {
//CODIGO BORRAR
txtS.setText(«»);
txtPrecio.setText(«»);
txtCantidad.setText(«»);
txtPrecio.requestFocus();
}
protected void actionPerformedBtnCerrar(ActionEvent arg0) {
//CODIGO CERRAR
dispose();
}
}

EJERCICIO VI:

Una empresa ha decidido otorgar una bonificación a sus empleados por única vez. La bonificación estará compuesta de la suma de una bonificación por hijos más una bonificación por tiempo de servicio. La bonificación por hijos será igual a S/. 25 por cada hijo. La bonificación por tiempo de servicio será igual a S/. 50 por cada año de tiempo de servicio. Dados el número de hijos y el número de años de tiempo de servicio, diseñe un algoritmo que determine el importe de la bonificación por hijos, el importe de la bonificación por tiempo de servicio y el importe de la bonificación total que le corresponden a un empleado.

La resolución sería la siguiente:

protected void actionPerformedBtnProcesar(ActionEvent e) {
//MI CODIGO
//DECLARAR VARIABLES
int hijos,tiempo;
double bh,bts,ibt;
//LECTURA DE DATOS
hijos=Integer.parseInt(txtHijos.getText());
tiempo=Integer.parseInt(txtTiempo.getText());
//PROCESO
bh=25*hijos;
bts=50*tiempo;
ibt=bh+bts;
//SALIDA DE DATOS
txtS.setText(«»);
txtS.append(«Le corresponde la siguiente bonificación por hijos: «+bh+»\n»);
txtS.append(«Le correspone la siguiente bonificación por tiempo de servicio: «+bts+»\n»);
txtS.append(«Su bonificación total es: «+ibt+»\n»);
}
protected void actionPerformedBtnBorrar(ActionEvent e) {
txtS.setText(«»);
txtHijos.setText(«»);
txtTiempo.setText(«»);
txtHijos.requestFocus();
}
protected void actionPerformedBtnCerrar(ActionEvent e) {
//CERRAR
dispose();
}
}

EJERCICIO VII:

Una empresa paga a sus empleados un sueldo bruto que es igual a la suma de un sueldo básico más una comisión. El sueldo básico es igual a S/. 350. La comisión es igual al 8% del importe vendido en el mes. El descuento de ley es igual al 15% del sueldo bruto. El sueldo neto es igual a la resta del sueldo bruto menos el descuento. Dado el importe vendido del mes, diseñe un algoritmo que determine el sueldo básico, la comisión, el sueldo bruto, el descuento y el sueldo neto de un empleado de la empresa.

La resolución sería la siguiente:

}
protected void actionPerformedBtnProcesar(ActionEvent arg0) {
//PROCESAR
//DECLARAR VARIABLES
int ventas;
double suba,comi,subru,desc,sune;
//ENTRADA DE DATOS
ventas=Integer.parseInt(txtVentas.getText());
//PROCESO
suba=350;
comi=0.08*ventas;
subru=suba+comi;
desc=0.15*subru;
sune=subru-desc;
//SALIDA DE DATOS
txtS.setText(«»);

txtS.append(«Sueldo bruto: «+subru+»\n»);
txtS.append(«Comisión: «+comi+»\n»);
txtS.append(«Descuento: «+desc+»\n»);
txtS.append(«Sueldo neto: «+sune+»\n»);
}
protected void actionPerformedBtnBorrar(ActionEvent arg0) {
//BORRAR
txtS.setText(«»);
txtVentas.setText(«»);
txtVentas.requestFocus();
}
}

EJERCICIO VIII:

Una tienda ha puesto en oferta la venta de camisas ofreciendo un doble descuento del 12%. El importe compra es igual al producto del precio de la camisa por la cantidad de camisas adquiridas. El primer descuento es igual al 12% del importe de la compra. El segundo descuento es igual al 12% de la resta del importe de la compra menos el primer descuento. El importe del descuento total es igual a la suma del primer y segundo descuento. El importe a pagar es igual a la resta del importe compra menos el importe del descuento total. Dados el precio de la camisa y la cantidad de camisas adquiridas, diseñe un algoritmo que determine el importe compra, el importe del descuento total y el importe a pagar correspondientes a un cliente.

La resolución sería la siguiente:

//DEC VARIABLES
int cant;
double pre,icom,desc1,desc2,desto,ipag;
//ENTRADA DE DATOS
pre=Double.parseDouble(txtPrecio.getText());
cant=Integer.parseInt(txtCantidad.getText());
//PROCESO
icom= pre*cant;
desc1=0.12*icom;
desc2=0.12*(icom-desc1);
desto=desc1+desc2;
ipag=icom-desto;
//SALIDA DE DATOS
txtS.setText(«»);
txtS.append(«Importe de compra: «+icom+»\n»);
txtS.append(«Importe del descuento total: «+desto+»\n»);
txtS.append(«Importe a pagar: «+ipag+»\n»);
}
protected void actionPerformedBtnBorrar(ActionEvent e) {
txtS.setText(«»);
txtPrecio.setText(«»);
txtCantidad.setText(«»);
txtPrecio.requestFocus();
}
protected void actionPerformedBtnCerrar(ActionEvent e) {
dispose();
}
}

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»);

}

}

 

 

Algunos minutos con Ed Sheeran en Lima

Entrevista publicada el 23 de abril del 2015 en El Comercio.

Pocas horas antes de publicar esta nota, una lista del diario «The Sunday Times» lo ubicaba como uno los músicos más ricos del Reino Unido; sin embargo, cuando lo tienes frente a ti, Ed Sheeran se caracteriza por la sencillez y buena disposición de un artista no consagrado.

A diferencia de otras figuras internacionales, Ed Sheeran no se rodea de managers y miembros de seguridad para atender a la prensa, sino que se encarga él mismo de abrir la puerta de su camerino, invitarte a pasar y responder sin ningún inconveniente cualquier pregunta que le hagas. Estas fueron las que le formulamos minutos antes del show que dio la noche del martes en el Jockey Club del Perú:

Esta es tu primera gira por América Latina y la recepción que has tenido tanto en Colombia (el primer país que visitó) como en el Perú ha sido grande. ¿Cómo te sientes al respecto?
La cosa con América Latina es que nunca puedes saber qué tan exitoso eres hasta que visitas el país, y yo estoy realmente abrumado. Nunca me han recibido así. No sé cuántas fans vi la otra vez en el hotel. Eran cientos solo para decirme hola. Usualmente suelen ser 10 (personas esperándome) y (cuando llegué a mi hotel en Lima) eran 400. Y tampoco he visto una cola tan larga como esta (para entrar a un concierto).

Eso es bueno. Te llevas una buena impresión de tus seguidores peruanos.
Yo sabía que el Perú era un país hermoso. Machu Picchu es impresionante… pero nunca he recibido esta cantidad de amor. Es decir, cuando salimos de gira en el mundo, siento el cariño de la gente que gusta de mi música, pero en este país todos son realmente amistosos.

Supe que estuviste en la Huaca Pucllana la noche que llegaste a Lima.
Sí, fui a las ruinas incas.

¿Cómo estuvo esa visita?
Fue genial. Comí ceviche, perico y probé el pisco. No sé cómo ustedes pueden con él. Me tomé dos y terminé hecho un desastre.

Leímos el tuit que publicaste sobre la buena noche que tuviste, lo escribiste en español…
Sí, estaba con gente que hablaba español. Originalmente ellos pusieron ‘Perú es de la puta madre’. Yo no sabía que significaba y lo puse, pero alguien me avisó que había puesto el equivalente a ‘mother fucker’ y lo borré.

Hablemos un poco de tu música. Recuerdo que en un documental que hiciste para MTV contabas que un concierto de Damian Rice fue determinante para que te dedicarás a la música.
Ese concierto fue hace cerca de trece años atrás. Yo siempre estuve interesado en música con guitarras, bandas tipo Guns N’ Roses o artistas como Eric Clapton, música rock. Yo no estuve en un banda, pero tocaba la guitarra, y cuando vi a Damian Rice esa noche tocando por dos horas con su guitarra acústica y cautivando todos, me dije: ‘Eso es lo que quiero hacer’.

Otro momento determinante para tu carrera fue cuando, ya instalado en Los Ángeles, Jamie Foxx te invitó a su programa de radio, siendo tú un artista nada mediático. ¿Cómo recuerdas aquel día?
Recuerdo que fue realmente irreal. Yo llegué a Los Ángeles con nada y de pronto estaba sentado en la estación de radio con Jamie Foxx y me recuerdo pensando eso: ‘¡Esto es tan irreal!’.

¿Crees que esa entrevista cambió todo para ti?
No. Después de eso tuve un año más cantando de manera independiente, pero sí creo que a partir de allí se dio el gran cambio.

Una de las características de tu música es la combinación que haces de las guitarras acústicas con el hip hop y el rap, ¿cuándo nació en ti esa curiosidad por esos géneros musicales?
Yo hago música que me gustaría escuchar. Creo que esa es la clave para todo músico. Soy un fan de diferentes tipos de música y a veces es como si quisiera reunir todos los que me gusta escuchar. Creo que esa es la forma de explicarlo.

Pensé que era porque en los inicios de tu carrera te presentabas en locales de música rap.
No, eso fue porque sabía que si tocaba con un sonido acústico en un lugar en donde no había otras personas tocando música acústica, iba a destacar del resto.

Ya para finalizar, después del éxito que has tenido con «+» y «x», tus dos únicos discos de estudio, ¿ya estás pensando en el siguiente material?
Ya estoy trabajando cosas. Es decir, tengo varias canciones escritas, pero no hay apuro en sacar nuevo material, lo que es bueno.

¿Algún mensaje final para tus seguidores peruanos?
Quiero darles las gracias por la recepción. Me aseguraré de venir mucho. Esta es la primera vez que estoy aquí, pero no será la última, así que gracias por todo el amor.

Un blog sobre nada en particular.