Archivo de la etiqueta: Eclipse Kepler

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