0% encontró este documento útil (0 votos)
4 vistas

Sentencias Control Java

Cargado por

crojas1110
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas

Sentencias Control Java

Cargado por

crojas1110
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 26

Curso básico de java

Por Jorge Herrera Castillo

3. LAS SENTENCIAS DE CONTROL


® Jorge Herrera Castillo

Dentro de la lógica de la programación las sentencias de control desempeñan un papel muy importante en
la implementación de algoritmos o diagramas de actividades. Al finalizar el estudio de este capítulo el lector o
estudiante tendrá competencias para desarrollar programas en java que requieren en su construcción utilizar
estructuras de:

• Selección
• Repetición

En forma paralela al aprendizaje de las sentencias java el estudiante también adquiere competencias para
el diseño de diagramas de actividades con estas estructuras de control.

3.1 ESTRUCTURAS DE SELECCIÓN


Las estructuras de selección permiten modificar el control de ejecución de una secuencia de actividades
mediante la prueba de una condición. El modelado de una estructura de selección dentro de un diagrama de
actividades UML se representa mediante un rombo con una entrada y dos salidas. La línea de entrada
representa la orden de realización de la prueba y las líneas de salida representan los resultados de la prueba de
condición. Las instrucciones Java para implementar las estructuras de selección son:

 La instrucción de selección if
 La instrucción de selección de alternativa ?
 La instrucción de selección múltiple switch

3.1.1 La sentencia if – else


La sentencia if – else nos permite programa estructuras de lógica de selección de los resultados de
operaciones de comparación la cual nos ofrece dos alternativas de salida (por falso y por verdadero). A
continuación se presenta el formato de la sentencia if - else.

Formato de programación en Java Formato de modelado en UML

if(expresión) sentencia simple o compuesta


else sentencia simple o compuesta

Escuela de Ingeniería de Sistemas e Informática-15


Curso básico de java
Por Jorge Herrera Castillo

Ejemplo 3-1. Se requiere de un programa Java que le solicite al usuario que adivine que letra tiene en la
memoria, para este caso es la letra J. En el caso que el usuario digite la letra J (en mayúscula) el
computador le envía un mensaje de felicitación por su acierto, en caso contrario, un mensaje lamentando por
no acertar. A continuación se presenta el diseño del diagrama de actividades y el código del programa en
java que resuelve este problema.

Figura 3-1. Diagrama de actividades para el modelado del problema ejemplo 3-1

public class Main {


public static void main(String[] args) throws java.io.IOException{
char miLetra='J',respuesta;
System.out.print("Adivine que letra tengo en mi memoria: ");
respuesta=(char)System.in.read();
if(Character.toUpperCase(respuesta)==miLetra)System.out.println("Lo felicito, acertó");
else System.out.println("Lo lamento, no acertó");
}
}
Listado 3-1. Programa java que resuelve el problema del ejemplo 1 ( entrada y salida por consola)

Listado 3-2. Programa java que resuelve el problema del ejemplo 3-1 (con cuadros de diálogos)

Escuela de Ingeniería de Sistemas e Informática-16


Curso básico de java
Por Jorge Herrera Castillo

Figura 3-2. Ejemplos de entradas y salidas del programa del listado 3-2

Ejemplo3- 2. Se requiere de un programa en Java para averiguar si una determinada persona es un niño
o un adulto según su edad. Si la persona tiene menos de 12 años se considera un niño y mayor o igual a 12
años se considera una persona adulta. El valor de la edad se introduce al computador por intermedio de una
caja de mensajes con una caja de texto. Utilizar el método showInputDialog de la clase JOptionPane para
permitirle al usuario digitar el dato de la edad. Para la salida del resultado utilizar el método
showMessageDialog de esta misma clase. A continuación se presenta el código Java que resuelve el problema
enunciado en el ejemplo3-2.

import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
int edad;
edad=Integer.parseInt(JOptionPane.showInputDialog("Cuántos años tiene"));
if(edad<12)JOptionPane.showMessageDialog(null, "Eres un niño");
else JOptionPane.showMessageDialog(null, "Eres un adulto");
System.exit(0);
}
}
Listado 3-3. Programa java que resuelve el problema del ejemplo 3-2

A continuación se presenta ejemplos de estos cuadros de diálogos para entradas de edades de 10 y 18


años.

Escuela de Ingeniería de Sistemas e Informática-17


Curso básico de java
Por Jorge Herrera Castillo

Entrada de datos para una edad de 10 años Respuesta para una entrada de 10 años

Entrada de datos para una edad de 18 años Respuesta para una entrada de 18 años

3.1.2 La sentencia if
La sentencia if es muy similar a la sentencia if – else salvo que no tiene sentencias else. En este caso se
evalúa la expresión de condición en el estado de comparación y en el caso que sea verdadera se realiza las
sentencias correspondientes a a la condición de verdadero y en el caso contrario continua con la secuencia
normal de actividades del programa. A continuación se presenta el formato de la sentencia if.

Formato de programación en Java Formato de diseño en UML

if( expresión) sentencia simple o compuesta

Ejemplo 3-3. Se requiere de un programa Java que calcule la retención de la fuente para sueldos
mayores de $1500000 pesos. Para sueldos mayores de $1500000 se retiene el 3% de lo que exceda de
$1500000. El programa debe mostrar el sueldo bruto, el valor de la retención y el sueldo neto. A
continuación se presenta el programa Java que resuelve este problema. Las operaciones de entrada y salida
se programan mediante el uso de los métodos showInputDialog y showMessageDialog disponibles en la clase
JOptionPane.

Escuela de Ingeniería de Sistemas e Informática-18


Curso básico de java
Por Jorge Herrera Castillo

import javax.swing.JOptionPane;
public class Ejemplo {
public static void main(String[] args){
float sueldo,retencion=0.0F;
sueldo=Float.parseFloat(JOptionPane.showInputDialog(null,"Digite valor del sueldo"));
if(sueldo>1500000)retencion=(float)0.03*(sueldo-1500000);
JOptionPane.showMessageDialog(null, "Sueldo bruto: $"+sueldo+"\nRetención: $"+retencion+
"\nSueldo neto: $"+Float.toString(sueldo-retencion));
}
}
Listado 3-4. Programa Java que resuelve el problema del ejemplo 3-3

A continuación se presenta algunas pruebas del programa.

Ejemplo 3-4. Se requiere de un programa Java que encuentre las raíces de la formula cuadrática:

− ± √  − 4
=
2

Los valores de a, b y c se le introducen como datos desde las cajas de texto de la caja de mensajes que
muestra el método showInputDialog de la clase JOptionPane .Los resultados se deben visualizar en la caja de
mensajes visualizados por el método showMessageDialog de JOptionPane. Para la programación de la
solución de este problema debe primero hacer el diseño del diagrama de actividades que modela la lógica de
programación. El programa sólo debe encontrar la solución si el discriminante   − 4 es mayor que cero
para otros valores debe ignorar la solución.

Escuela de Ingeniería de Sistemas e Informática-19


Curso básico de java
Por Jorge Herrera Castillo

Diagrama de actividades que modela la solución del problema del ejemplo 4

A continuación se presenta el programa Java que implementa el diagrama de actividades anterior.

import javax.swing.JOptionPane;
public class Ejemplo {
public static void main(String[] args) {
double a,b,c,x1,x2;
a=Double.parseDouble(JOptionPane.showInputDialog("Digite el valor de a"));
b=Double.parseDouble(JOptionPane.showInputDialog("Digite el valor de b"));
c=Double.parseDouble(JOptionPane.showInputDialog("Digite el valor de c"));
if((b*b-4*a*c)>0){
x1=(-b+Math.sqrt(b*b-4*a*c))/2*a;
x2=(-b-Math.sqrt(b*b-4*a*c))/2*a;
JOptionPane.showMessageDialog(null, "x1= "+x1+"\nx2= "+x2);
}
}
}
Listado 3-5. Programa Java que resuelve el problema del ejemplo 3-4

3.1.3 La sentencia de escalera if – else - if


Este tipo de estructura de sentencias se utiliza para la programación de estructuras complejas de lógica de
selección. A continuación se presenta los formatos de modelado y programación para la escalera de if.

Formato de programación en Java Formato de diseño en UML


if(expresión)
if(expresión)
if(expression)
… Continúa escalera
If(expresión)
Sentencias
else
Sentencias
else Sentencias
else Sentencias

Escuela de Ingeniería de Sistemas e Informática-20


Curso básico de java
Por Jorge Herrera Castillo

Una regla muy útil para la programación es la siguiente: “Las sentencias else se aplican al if más cercano
a cada else”. Cada else se aparea con el if más cercano, ósea que el último else corresponde al primer if de la
escalera.

Ejemplo 3-5. Se requiere de un programa Java que le permita al usuario digitar una fecha bajo el
siguiente formato “aaaa/mm/dd” para que el computador le analice si la cadena de caracteres digitado
corresponde a un formato posiblemente válido para una fecha. Para la elaboración de este programa ignore
las demás condiciones para que el año, el mes y el día sean valores válidos para una fecha. En el caso que el
formato sea válido extraiga de la cadena de caracteres el valor del año, del mes y del día para que estos sean
visualizados por separado. A continuación se presenta el programa Java que resuelve este problema.

import javax.swing.JOptionPane;
public class Ejemplo {
public static void main(String[] args) {
int año,mes,dia;
boolean errorFormato;
String fecha=JOptionPane.showInputDialog("Digite fecha bajo el formato aaaa/mm/dd");
// Comienzo escalera de if
if(fecha.length()==10)
if(fecha.charAt(4)=='/')
if(fecha.charAt(7)=='/')
errorFormato=false;
else errorFormato=true;
else errorFormato=true;
else errorFormato=true;
// Fin de la escalera
if(!errorFormato){
año=Integer.parseInt(fecha.substring(0, 4));
mes=Integer.parseInt(fecha.substring(5, 7));
dia=Integer.parseInt(fecha.substring(8, 10));
JOptionPane.showMessageDialog(null, Integer.toString(año)+"\n"+
Integer.toString(mes)+"\n"+Integer.toString(dia));
}
else{
JOptionPane.showMessageDialog(null, "Formator errado");
}
}
}
Listado 3-6. Programa java que resuelve el problema del ejemplo 3-5

3.1.4 Las sentencias de if anidados


Las sentencias de if anidados se construyen con base a los if de escalera según el formaro general que se
presenta a continuación.

if(expresión) sentencias simples o compuestas;


else if(expresión) sentencias simples o compuestas;
else if(expressióln) sentencias simples o compuestas;
else … continúa los if anidados

Escuela de Ingeniería de Sistemas e Informática-21


Curso básico de java
Por Jorge Herrera Castillo

Las sentencias simples o compuestas pueden tener anidados otros if, según las necesidades de la
aplicación, sin embargo el diseñador de la lógica del programa debe ser muy cuidadoso en el uso de los if
anidados.

Ejemplo 3- 6. En un triángulo, un lado es menor que la suma de los otros dos y mayor que la diferencia.
Se requiere de un programa en Java que determine si tres valores que supuestamente son los lados de un
triángulo forman un triángulo y en caso afirmativo informar sí es un triángulo equilátero, isósceles o
escaleno. Triángulo isósceles el que tiene dos lados iguales. Triángulo equilátero el que tiene sus tres lados
iguales. Triángulo escaleno el que tiene sus tres lados diferentes. A continuación se presenta el diseño del
diagrama de actividades y el programa Java que resuelve este problema.

Diagrama de actividades

import javax.swing.JOptionPane;
public class Ejemplo {
public static void main(String[] args) {
double a,b,c;
a=Math.abs(Double.parseDouble(JOptionPane.showInputDialog("Digite el valor del lado a")));
b=Math.abs(Double.parseDouble(JOptionPane.showInputDialog("Digie el valor del lado b")));
c=Math.abs(Double.parseDouble(JOptionPane.showInputDialog("Digie el valor del lado c")));
if((a+b)>c&&Math.abs(a-b)<c)
if(a==b && a==c)
JOptionPane.showMessageDialog(null,"Forman un triángulo equilátero");
else
if((a!=b) && (a!=c) && (b!=c))
JOptionPane.showMessageDialog(null,"Forman un triángulo escaleno");
else
JOptionPane.showMessageDialog(null,"Forman un triángulo isósceles");
else
JOptionPane.showMessageDialog(null,"No forman un triángulo");
}
}
Listado 3-7. Programa java que resuelve el problema del ejemplo 3-6

Escuela de Ingeniería de Sistemas e Informática-22


Curso básico de java
Por Jorge Herrera Castillo

3-1.5 La sentencia de alternativa


La sentencia de alternativa nos permite programar lógicas de decisión en la cual el operador nos regresa
un valor. A continuación se presenta el formato java de la sentencia alternativa.

Expresión de condición ? actividad por verdadero : actividad por falso;

Ejemplo 3-7. Se requiere de un programa java que lea una cadena de caracteres (un objeto de la clase
String) que supuestamente es el título de una persona (hombre o mujer) y visualice en la pantalla del
computador el mensaje: “Eres un hombre” o “Eres una mujer”. Para identificar si el título se refiere a una
mujer asuma que siempre los títulos de las mujeres terminan con la letra vocal “a” o “A”. En el caso
contrario se asume que el título se refiere a un hombre. Por ejemplo, señora, señor: señora se refiere a una
mujer y señor a un hombre. Ingeniera, ingeniero: ingeniera se refiere a una mujer e ingeniero a un hombre.
A continuación se presenta el programa java que resuelve este problema.

import javax.swing.JOptionPane;
public class Ejemplo {
public static void main(String[] args) {
String titulo;
char genero;
titulo=JOptionPane.showInputDialog("Digite su título que lo identifica\n" +
"según su género");
genero= titulo.toUpperCase().charAt(titulo.length()-1)=='A'?'F':'M';
if(genero=='M')JOptionPane.showMessageDialog(null, "Eres un hombre");
else JOptionPane.showMessageDialog(null, "Eres una mujer");
}
}
Listado 3-8. Programa Java que resuelve el problema del ejemplo 3-7

Comentario del profesor. Muy posiblemente no le encuentre utilidad a la sentencia de alternativa,


pero en aplicaciones móviles, de control, robótica y de construcción de compiladores esta sentencia es muy
útil por su simplicidad para la asignación de un valor según una condición.

3.1.6 La sentencia switch


La sentencia switch nos permite programar estructuras lógicas de selección entre múltiples alternativas.
La sentencia switch se utiliza especialmente cuando la selección se basa en el valor de una expresión enteros
o char. A continuación se presenta el formato general de la sentencia switch.

Escuela de Ingeniería de Sistemas e Informática-23


Curso básico de java
Por Jorge Herrera Castillo

Formato de programación en java de switch Formato de diseño en UML de switch

switch (expresión)
{
case ctte1:
sentencias;
break;
case ctte2:
sentencias;
break;
case ctte3:
sentencias;
break;

default:
sentencias;
break;
}

Ejemplo 3-8. Se requiere de un programa java que evalúe una operación aritmética binaria. La entrada
de datos es dos operandos de tipo entero (int) y un operador aritmético (+, -, *, / ). Por ejemplo, 3*8. El
resultado será 24. A continuación se presenta el programa que resuelve este problema.

import java.util.Scanner;
public class Ejemplo {
public static Scanner leer=new Scanner(System.in);
public static void main(String[] args)throws java.io.IOException {
System.out.print("Digite operando 1: ");
int operando1=leer.nextInt();
System.out.print("Digite operador: ");
char operador=(char)System.in.read();
System.out.print("Digite operando 2: ");
int operando2=leer.nextInt();
switch(operador)
{
case '+':
System.out.println(operando1+ " + "+operando2+" = "+
Integer.toString(operando1+operando2));
break;
case '-':
System.out.println(operando1+ " - "+operando2+" = "+
Integer.toString(operando1-operando2));
break;
case '*':
System.out.println(operando1+ " * "+operando2+" = "+
Integer.toString(operando1*operando2));
break;
case '/':
System.out.println(operando1+ " / "+operando2+" = "+
Integer.toString(operando1/operando2));

Escuela de Ingeniería de Sistemas e Informática-24


Curso básico de java
Por Jorge Herrera Castillo

break;
default:
System.out.println("Error operacion");
break;
}
}
}
Listado 3-9. Programa java que resuelve el problema del ejemplo 3-8

Ejemplo 3-9. Se requiere de un programa Java que valide una fecha, dado el año, el mes y el día.
Recuerde que el mes de febrero tiene 29 días cuando el año es bisiesto. Un año es bisiesto si es divisible por 4
excepto si los dos últimos dígitos son ceros para esta última excepción si el año es divisible por 400 en este
caso el año es bisiesto. A continuación se presenta el programa java que resuelve este problema.

import java.util.Scanner;
public class Switch {
public static Scanner leer=new Scanner(System.in);
public static void main(String[] args) {
int año,mes,dia;
System.out.print("Digite año: ");
año=leer.nextInt();
System.out.print("Digite mes (1 a 12): ");
mes=leer.nextInt();
System.out.print("Digite día (1 a 31) : ");
dia=leer.nextInt();
if(año<0)
{
System.out.println("Fecha incorrecta\nAño no valido");
return;
}
int diasMes=0;
// Obtener el número de dias que tiene el mes
switch (mes)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
diasMes=31;
break;
case 2:
if(año%4!=0)diasMes=28;
else if(año%400==0)diasMes=29;
else if(año%100==0)diasMes=28;
else diasMes=29;
break;
case 4: case 6: case 9: case 11:
diasMes=30;
deafault:
System.out.println("Fecha incorrecta\nMes no válido");
return;
}
if(dia<1 || dia>diasMes)
{
System.out.println("Fecha incorrecta\nDía no válido");

Escuela de Ingeniería de Sistemas e Informática-25


Curso básico de java
Por Jorge Herrera Castillo

return;
}
System.out.println("Fecha correcta:"+año+"/"+mes+"/"+dia);
}
}
Listado 3-10. Programa java que valida una fecha dada

3.2 ESTRUCTURAS DE REPETICIÓN


Para la programación de las estructuras lógicas de repetición el lenguaje Java proporciona tres estructuras
de sentencias:

1. Sentencia while
2. Sentencia do – while
3. Sentencia for

3.2.1 Estructura sentencia while


La sentencia while nos permite programar un bloque de actividades que se repiten mientras ciertas
condiciones se cumplan. En el caso que al entrar a realizar las actividades que comprenden el bloque
repetitivo no se cumplan las condiciones no se realizará las actividades correspondientes al bloque repetitivo.

Modelo diagrama de actividades para los ciclos repetitivos while

Observe el diagrama anterior que si al entrar no se cumple la condición no se realiza el bloque repetitivo,
se sale automáticamente del ciclo y continua la secuencia normal. Esta estructura se utiliza cuando antes de
entrar al ciclo se tienen todos los elementos para realizar prueba a la condición. Formato Java:

while (prueba condición){


// Bloque repetitivo
}

Ejemplom 3-10. Suponga que se tiene un tanque circular de 3 metros de radio y de altura de 2 metro. El
tanque se encuentra vacío cuando se le pone una manguera que vierte agua al tanque a razón de 0.003
metros cúbicos por segundo. Se requiere de un programa java que genere una tabla que registre cada 20
minutos la altura del nivel del agua antes de que comience a derramarse el agua por encima del tanque.

Escuela de Ingeniería de Sistemas e Informática-26


Curso básico de java
Por Jorge Herrera Castillo

A continuación se presentan algunas fórmulas que debe tener en cuenta para el desarrollo del programa:

 =   ℎ (Cálculo volumen de un tanque circular de radio r y altura h)



ℎ =  (Cálculo altura nivel del agua según volumen de agua v).


Diagrama de actividades

package ejemplotaque;
import java.text.NumberFormat;
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
// Estado actividades inicialización
NumberFormat formato=NumberFormat.getInstance();
formato.setMaximumFractionDigits(3);
String tabla="Tiempo Altura\n-----------------------------\n";
double radio=3.0, altura=2.0;
double volumenCilindro=Math.PI*Math.pow(radio, 2)*altura;
double volumenAgua=0.0;
double alturaNivelAgua=0.0;
double tiempo=0.0,tasaAguaPorMinuto=0.003*60;

Escuela de Ingeniería de Sistemas e Informática-27


Curso básico de java
Por Jorge Herrera Castillo

// Estado actividades creación tabla


while((volumenAgua+20*tasaAguaPorMinuto)<=volumenCilindro){
tiempo+=20;
volumenAgua+=20*tasaAguaPorMinuto;
alturaNivelAgua=volumenAgua/(Math.PI*Math.pow(radio, 2));
tabla=tabla+Double.toString(tiempo)+" ";
tabla=tabla+formato.format(alturaNivelAgua)+"\n";
}
// Estado actividades visualización tabla
JOptionPane.showMessageDialog(null, tabla);
}
}
Listado 3-11. Programa java solución problema ejemplo 3-10

A continuación se presenta una muestra de la visualización de la tabla generada al ejecutarse el programa


del listado 3-11.

3.2.2 Estructura sentencia do – while


La sentencia do – while es muy similar a la sentencia estudiada en la sección anterior con la diferencia
que la prueba de la condición de repetición se hace al final, por lo tanto el uso de esta sentencia se recomienda
utilizar cuando no hay unas condiciones previas para hacer la prueba de control del ciclo repetitivo.

Escuela de Ingeniería de Sistemas e Informática-28


Curso básico de java
Por Jorge Herrera Castillo

Modelo del diagrama de actividades de la sentencia do - while

El formato java de la sentencia do – while es:

do{

// Bloque de sentencias del estado de repetición

while(condición);

Ejemplo 3- 11. Se requiere de un programa Java que calcule el valor promedio (media) de un
determinado número de calificaciones de resultados de las evaluaciones presentadas por un estudiante de un
grupo no determinado. El usuario del programa digita las calificaciones dentro de un cuadro de diálogos de
entrada mientras confirme que desea digitar otra calificación. Esta confirmación la hace pulsando el botón
SI y para terminar debe pulsar el botón NO.

∑
 =


Donde x es una determinada calificación y n el número de calificaciones.

Diagrama de actividades

Escuela de Ingeniería de Sistemas e Informática-29


Curso básico de java
Por Jorge Herrera Castillo

package media;
import javax.swing.JOptionPane;
public class CalculoMedia {
public static void main(String[] args) {
float media=0.0F;
int n=0;
int botonSINO;
float x;
do{
x=Float.parseFloat(JOptionPane.showInputDialog("Digite una calificación"));
media=(n*media+x)/++n;
botonSINO=JOptionPane.showConfirmDialog(null, "Desea editar otra calificación","Prueba condición",
JOptionPane.YES_NO_OPTION);
}while(botonSINO==JOptionPane.YES_OPTION);
JOptionPane.showMessageDialog(null, "Media:\n"+media);
}
}
Listado 3-12. Programa java para el cálculo de la media de un conjunto de calificaciones

A continuación se presenta ejemplo de salidas de algunos de los estados al ejecutarse el programa de java
anterior.

3.2.3 Estructura sentencia for


Normalmente la sentencia for se utiliza para programar ciclos repetitivos controlados por los valores que
toma una determinada variable. No necesariamente se requiere una variable de control para la programación
del ciclo repetitivo for.

Escuela de Ingeniería de Sistemas e Informática-30


Curso básico de java
Por Jorge Herrera Castillo

La sentencia for en su sintaxis tiene el espacio para definir: las sentencias de definición e inicialización
de la variable de control (INICIALIZACION), definir el test de prueba de terminación (TEST) y para definir
la modificación de la variable de control (MODIFICACIÓN).

Modelo del diagrama de actividades de la sentencia for

Formato java:

for(INICIALIZACIÓN; TEST; MODIFICACIÓN){

ESTADO ACTIVIDADES REPETICIÓN

Ejemplo 3-12. Se requiere de un programa en Java que nos permita calcular y visualizar en un cuadro
de diálogos de mensajes los diez primeros términos de la serie de Fibbonacci. La serie de fibbonacci es
aquella que el siguiente termino es la suma del penúltimo y último antecesores.

0, 1, 1, 2, 3, 5, …

Escuela de Ingeniería de Sistemas e Informática-31


Curso básico de java
Por Jorge Herrera Castillo

Diagrama de actividades

package fibbonaci;
import javax.swing.JOptionPane;
public class CalcularSerie {
public static void main(String[] args) {
int penultimo=0;
int ultimo=1;
String serie="Serie Fibbonaci:\n";
for(int i=0;i<10;i++){
serie=serie+Integer.toString(penultimo)+", ";
ultimo=penultimo+ultimo;
penultimo=ultimo-penultimo;
}
serie=serie.substring(0, serie.length()-2);
JOptionPane.showMessageDialog(null, serie);
}
}
Listado 3-13. Programa java cálculo de los primeros diez términos de la serie de Fibbonaci

A continuación se muestra el cuadro de mensajes con los resultados de la ejecución del programa del
listado 3-13.

Escuela de Ingeniería de Sistemas e Informática-32


Curso básico de java
Por Jorge Herrera Castillo

3.3 ESTRUCTURAS DE REPETICIÓN ANIDADAS


Para la solución de problemas complejos el leguaje Java en sus reglas de sintaxis permite un número no
determinado de sentencias de repetición anidadas en cualquier forma de combinación de estas sentencias,
siempre y cuando que alcance de una estructura de repetición anidada no vaya más allá del alcance de la
estructura que la contenga. A continuación un ejemplo de un anidamiento de sentencias while, do – while y
for.

Ejemplo 3-13. Se requiere de un programa Java que nos permita averiguar si una serie de números
enteros dados son primos o no. El usuario digita un número determinado y el computador le responde si es
primo o no es primo. El programa termina de pedir que digite números hasta que el usuario pulse el botón
No del cuadro de diálogo de confirmación SI – NO.

Un número es primo si es divisible únicamente por el mismo y por la unidad.

package primos;
import javax.swing.JOptionPane;
public class AveriguarPrimos {
public static void main(String[] args) {
int boton;
long numero;
String mensaje="";
boolean esPrimo;
do{
esPrimo=true;
numero=Long.parseLong(JOptionPane.showInputDialog("Digite un número entero"));
for(long k=2;k<=numero/2;k++){

Escuela de Ingeniería de Sistemas e Informática-33


Curso básico de java
Por Jorge Herrera Castillo

if(numero%k==0){
mensaje=Long.toString(numero)+"\nNo es PRIMO";
esPrimo=false;
}
}
if(esPrimo)mensaje=Long.toString(numero)+"\nEs PRIMO";
JOptionPane.showMessageDialog(null, mensaje);
boton=JOptionPane.showConfirmDialog(null, "Desea continuar","Estado de prueba",
JOptionPane.YES_NO_OPTION);
}while(boton==JOptionPane.YES_OPTION);
}
}
Listado 3-14. Programa java para averiguar si una serie de números enteros dado son primos o no

3.4 LAS SENTENCIAS break y continue


La sentencia break tiene dos acciones:

 Para romper la continuidad de una secuencia, como en el caso de las secuencias de los bloques case
de la instrucción switch
 Para salir de un bloque repetitivo

La sentencia continue se utiliza para forzar la terminación de una iteración antes de ser completada. La
diferencia con la sentencia break es que la sentencia continue no sale del ciclo repetitivo sino que continua
con la siguiente iteración.

Ejemplo 3-14. Se requiere de un programa Java que acepte en primera instancia una cadena de
caracteres (un string) y a continuación un conjunto no determinado de cadenas (string) para que nos
determine cuántas veces se encuentra en la cadena que se introdujo en primera instancia. El programa
continua solicitando cadenas para contar el número de veces que la primera cadena la contiene hasta
cuando el usuario digite una cadena vacía, pulsa la tecla ENTER sin editar texto.
Por ejemplo, Si la primera cadena editada es: “Actualmente los carros nos están invadiendo el mundo,
carros en la carretera, carros en la calle, carros en los andenes, carros en los campos y para todas que
vayamos encontramos carros”. Y posteriormente digitamos la cadena “carros” el programa nos contestará
que se encuentra 6 veces.

package analisiscadenas;
import javax.swing.JOptionPane;
public class Analizadora {
public static void main(String[] args) {
String cadena,subCadena;
int nCadena,nSubCadena;
int contador;
cadena=JOptionPane.showInputDialog("Digite la cadena inicial");
nCadena=cadena.length();
boolean salir=false;
do{
contador=0;
subCadena=JOptionPane.showInputDialog("Digite una cadena");

Escuela de Ingeniería de Sistemas e Informática-34


Curso básico de java
Por Jorge Herrera Castillo

nSubCadena=subCadena.length();
if(nSubCadena>nCadena){
JOptionPane.showMessageDialog(null, subCadena+"\nEn:\n"+cadena+"\nSe encuetra "+contador+"
veces");
continue;
}
if(nSubCadena==0){
salir=true;
break;
}
for(int i=0;i<nCadena-(nSubCadena-1);i++){
if(cadena.substring(i, i+nSubCadena).compareTo(subCadena)==0){
contador++;
}
}
JOptionPane.showMessageDialog(null,subCadena+ "\nEn:\n"+cadena+"\nSe encuetra "+contador+" veces");
}while(!salir);
}
}
Listado 3-15. Programa java que resuelve el problema enunciado en el ejemplo 3-14

3.5 EJERCICIOS RESUELTOS

Ejercicio 1. Contador de rebotes de una pelota.

Se deja caer una pelota de caucho “saltadora” de una altura de 5


metros. Esta pelota cae sobre una superficie lisa y muy dura, lo cual facilita
que la pelota siga saltando. Si la altura para cada rebote es del 95% de la
altura del rebote anterior, el programa en Java debe calcular cuántos
rebotes hace la pelota antes de que la altura del rebote sea menor de un
metro.

Programa Java
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
int cuenta=0;
double altura=5.0;
do{
altura*=0.95;
cuenta++;
}while(altura>1.0);
JOptionPane.showMessageDialog(null, "Número de rebotes:\n"+cuenta);
System.exit(0);
}

Escuela de Ingeniería de Sistemas e Informática-35


Curso básico de java
Por Jorge Herrera Castillo

Modifique el programa para que el cálculo se haga para cualquier altura, la cual se introduce al
computador como datos.

Ejercicio 2. Calculo de la raíz cuadrada de 3 por el método de iteraciones.

Programa Java para calcular la raíz cuadrada de 3 por el método iterativo según la fórmula:

y = x 2 − 3.0

El método iterativo consiste en evaluar la fórmula para valores de x=0.0, 0.0001, 0.0002, 0.0003, ....,
hasta cuando el valor de y sea negativo o igual a cero. La raíz cuadrada de 3 será cuando y intercepte al eje X.
La tolerancia de error será de ±0.0001

Programa Java
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
double x;
double y;
for (x = 0.0, y = x*x-3.0; y <=0.0; x += 0.0001)
{
y = x*x-3.0;
}
String mensaje="La raíz cuadrada de 3 es:\n"+x;
JOptionPane.showMessageDialog(null, mensaje);
System.exit(0);
}

Modifique el programa para generalizar el programa. Que pueda calcular cualquier raíz de cualquier
número.

Ejercicio 3. Generación de números aleatorios

Suponga que se tiene un tablero para el tiro al blanco como se


muestra en la figura de su lado derecho. Se lanza un disparo
apuntando al tablero. Elabore un programa que simule un tiro al
blanco mediante la generación de un número aleatorio entre 0 y
cuatro.

La puntuación es como sigue:


0 Si cae por fuera de los círculos
1 Si cae dentro del circulo celeste
2 Si cae dentro del circulo azul
3 Si cae dentro del circulo verde
4 Si cae dentro del círculo amarillo

El programa debe visualizar el puntaje y un mensaje en la zona que cayó el dardo.

Escuela de Ingeniería de Sistemas e Informática-36


Curso básico de java
Por Jorge Herrera Castillo

Programa Java
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
int blanco=(int)(Math.random()*5);
switch(blanco)
{
case 0:
JOptionPane.showMessageDialog(null, "Fuera de los círculos Puntos= "+blanco);
break;
case 1:
JOptionPane.showMessageDialog(null, "Círculo celeste Puntos= "+blanco);
break;
case 2:
JOptionPane.showMessageDialog(null, "Círculo azul Puntos= "+blanco);
break;
case 3:
JOptionPane.showMessageDialog(null, "Círculo verde Puntos= "+blanco);
break;
case 4:
JOptionPane.showMessageDialog(null, "Círculo amarillo Puntos= "+blanco);
break;
}
System.exit(0);
}
}

Ejercico 4. Desarrollo de un proyecto Java para calcular la suma de los primeros 20 términos de la serie:

x3 x5 x7
suma = x + + + + ...
3 5 7
El usuario debe introducir como datos el valor para X para que luego el computador calcule la suma y la
visualice en cuadro de mensajes.

Programa java
import javax.swing.*;
public class Main {
public static void main(String[] args) {
double suma=0.0,x,den=1.0,term;
int cuenta=0;
x=Double.parseDouble(JOptionPane.showInputDialog("Digite valor de X:"));
term=x;
while(cuenta<20){
suma+=term/den;
den+=2;
cuenta++;
}
JOptionPane.showMessageDialog(null, "El valor de la suma es:\n"+suma);

Escuela de Ingeniería de Sistemas e Informática-37


Curso básico de java
Por Jorge Herrera Castillo

System.exit(0);
}
}

Ejercico 5. El vaciado de un tanque

Un tanque de 8.0 pies de diámetro tiene un orificio de descargue cuya área seccional es de 1.0 pie
cuadrado. La altura (h) del líquido por encima de este orificio de descarga es de 5.0 pies. La velocidad del
líquido a través del orificio está dada en función de la altura h. Vea figura.

El volumen del líquido perdido, Q, es igual a la velocidad veces el área de la sección del orificio. Elabore
un programa java para determinar a intervalos de un segundo:

a. La velocidad a través del orificio


b. La cantidad de líquido perdido
c. La altura del líquido restante en el tanque.

El programa de terminar su ejecución cuando h sea menor o igual a un


pie.

Programa Java
import javax.swing.JOptionPane;
import java.text.DecimalFormat;
public class Main {
public static void main(String[] args) {
double tiempo = 0.0;
double r = 8.0/2.0;
double h = 5.0;
double a = 1.0;
double velocidad=Math.sqrt(2.0*32.2*h);
double volumen=3.1416*r*r*h;
double q=0.0;
String blancos=" ";
DecimalFormat dosDecimales=new DecimalFormat("0.00");
String mensaje="Diámetro= 8.0 pies\nAltura= 5.0 pies\nÁrea orificio= 1.0 pies al cuadrado\n";
mensaje=mensaje+"Tiempo"+blancos+"Altura"+blancos+"Velocidad"+blancos+"Cantidad líquido pérdido";
blancos=" ";

mensaje=mensaje+"\n"+dosDecimales.format(tiempo)+blancos+dosDecimales.format(h)+blancos+dosDecimales.for
mat(velocidad)
+blancos+dosDecimales.format(q);
while(h>1.0){
tiempo++;
velocidad=Math.sqrt(2.0*32.2*h);
q=a*velocidad;
volumen-=q;
h=volumen/(Math.PI*r*r);

mensaje=mensaje+"\n"+dosDecimales.format(tiempo)+blancos+dosDecimales.format(h)+blancos+dosDecimales.for

Escuela de Ingeniería de Sistemas e Informática-38


Curso básico de java
Por Jorge Herrera Castillo

mat(velocidad)
+blancos+dosDecimales.format(q);
}
JOptionPane.showMessageDialog(null, mensaje);
}
}

Ejercicio 6. Tiro parabólico

Una bola se lanza en tiro parabólico con una velocidad inicial de V0 metros/seg con un ángulo de
inclinación de α grados. Elaborar un programa java que permita introducirle al computador el valor de la
velocidad inicial y el ángulo de inclinación para calcular las coordenadas X y Y de las posiciones de la bola
en su trayectoria parabólica en incrementos de tiempo de 0.01 segundo, hasta que la bola toque el piso.

Ecuaciones:

X = Vx0T velocidad constante


1
Y = Vy 0 T − gT 2 aceleración constante
2
Vx0 = V 0 cos α
Vy 0 = V 0 senα

Programa java
import javax.swing.JOptionPane;
import java.text.DecimalFormat;
public class Main {
public static void main(String[] args) {
DecimalFormat dosDecimales=new DecimalFormat("0.00");
Double V0=Double.parseDouble(JOptionPane.showInputDialog("Digite Velocidad inicial"));
Double alfa=Double.parseDouble(JOptionPane.showInputDialog("Digite ángulo"));
String mensaje="Velocidad inicial= "+dosDecimales.format(V0)+"\nÁngulo= ";
mensaje=mensaje+alfa+"\n";
alfa=Math.PI*alfa/180.0;
double Vx=V0*Math.cos(alfa);
double Vy=V0*Math.sin(alfa);
mensaje=mensaje+"Vx= "+dosDecimales.format(Vx)+"\nVY= "+dosDecimales.format(Vy)+"\n";
mensaje=mensaje+"T (seg) X Y\n";
mensaje=mensaje+"-------------------------------\n";
double X=0.00,Y=0.00,T=0.00;

Escuela de Ingeniería de Sistemas e Informática-39


Curso básico de java
Por Jorge Herrera Castillo

do{
mensaje=mensaje+dosDecimales.format(T)+" "+dosDecimales.format(X)+
" "+dosDecimales.format(Y)+"\n";
T+=0.5;
X=Vx*T;
Y=Vy*T-9.8/2.0*T*T;

}while(Y>=0.0);
JOptionPane.showMessageDialog(null, mensaje);
}
}

Escuela de Ingeniería de Sistemas e Informática-40

También podría gustarte