La forma de repetir un conjunto de instruccin un determinado nmero de veces o
basados en que se cumpla una condicin son los llamados ciclos. Mientras - while Se diferencia del para en que este es ms universal en el sentido que solo se preocupa por evaluar una expresin y mientras dicha expresin sea verdadera se encarga de repetir el bloque delimitado en el mientras. La expresin pude ser un valor lgico, una funcin que retorne un valor lgico, una expresin relacional o una expresin lgica.
La expresin debe estar entre un gran parntesis, esto es similar a lo que se hizo en su momento con el if. Si se llega a colocar el punto y coma al final del while no muestra error, pero no funciona como un ciclo dado que no tiene en cuenta al bloque y lo ejecuta como parte de la secuencia del programa y no como parte del ciclo. Esto ya lo experimentamos con el ciclo for. Forma general de un ciclo mientras que se repite ascendentemente. Double p=10.0; while(p<20){ System.out.println(p); p+=0.5; } Forma general de un ciclo mientras descendente Double n=500.0; while(n>90){ System.out.println(n); n=n-0.02; } Forma general de un ciclo mientras que el usuario lo desee. int contador=0; String seguir="s"; while(seguir.equals("s")||seguir.equals("S")){ System.out.println("Veces que se ha repetido "+contador++); //operaciones que se desean repetir seguir=JOptionPane.showInputDialog("Desea continuar oprima s"); } Forma grfica sugerida para convertir un for a un while.
Concepto adicional de Java.
Java es un lenguaje orientado a objetos, el cual permite realizar operaciones especiales sobre las cadenas de textos denominadas String. Para ejecutar una operacin sobre los textos se realiza el siguiente procedimiento:
texto.funcion(parametros) texto: puede ser una variable, una expresin o cualquier cosa que este representada por el String funcion: es el nombre de la operacin que se desea realizar sobre el texto parametros: esto depende de la funcin pueden ser cero uno o n. Estas son las funciones ms comunes para los textos.
substring(int carcaterInicial, int caracaterFinal) retorna un pedazo del texto. Ejemplo: String t="Hola amigos"; System.out.println(t.substring(1, 4)); //retorna ola
trim() retorna un texto sin espacios en blanco a delante y atrs de la cadena dada. Ejemplo: String texto=" Vamos muy bien "; System.out.println(texto.substring(1, 4)); texto=texto.trim(); System.out.println(texto);
toLowerCase() retorna el texto en minscula. Ejemplo: String dato="Este es mi dato"; dato=dato.toLowerCase(); System.out.println(dato);
toUpperCase() retorna el texto en maysculas Ejemplo: String info="Este es mi dato"; info=info.toUpperCase(); System.out.println(info);
Mediante la observacin identifique otras funciones de los textos ... explore replaceAll, replaceFirst, split ...
Para generar un nmero entero randmico entre [cero y el limite). Random rnd = new Random(); int valor = rnd.nextInt(20); //20 es el lmite dado. System.out.println(""+valor);
Ejercicios.
1. Construir un algoritmo que calcula la resistencia total de n resistencias conectadas en paralelo. El usuario entra cuntas resistencias desea ingresar y el sistema captura los n datos y calcula la resistencia total.
2. Leer dos nmeros enteros, calcular la multiplicacin de estos dos nmeros mediante la operacin de sumas sucesivas.
3. Leer dos nmeros enteros, calcular la divisin entera del primer nmero entre el segundo, mediante la operacin de restas sucesivas.
4. Leer dos nmeros enteros, calcular el primero nmero elevado al segundo, mediante la tcnica de sumas sucesivas.
5. Construir un programa que simule el lanzamiento de un dado. Como aun no sabemos hacer el movimiento en la GUI, aplicaremos lo siguiente. 6 Campos de texto, en los cuales el usuario no puede escribir. Cada campo con un nmero entre 1 y 6 cada campo representa una cara del dado y por tanto hay que asignarle un color diferente. La idea es que al oprimir un botn denominado lanzar el sistema rote alumbrando de color amarillo un elemento y en el cual se detenga es el nmero en que termin el dado.
6. Construir un programa que lea un nmero, sin importar el nmero de dgitos, el lmite ser el dado por la capacidad de las variables long. El sistema colocar en rojo el fondo del campo de texto en el cual se ley el nmero s este es un nmero que lstima, lo colocar en verde si es un nmero palndromo y en amarillo si no es ninguno de los dos anteriores. Al iniciar el proceso de verificacin, el campo se colocar en blanco. Un nmero que lastima es el que le falto 1 o le sobra 1 para ser palndromo.
En java los vectores Los vectores en java son de dos tipos los vectores tradicionales y la clase Vector. Trabajaremos los tradicionales para conocer elementos al respecto. 1. Vector global static tipo[ ] nombre = new tipo[tamao]; 2. Vector local o de bloque tipo[] nombre = new tipo[tamao]; tipo: se puede usar cualquiera de los primitivos y de lo extendidos. nombre: siguiendo las reglas que se manejan para la definicin de variables. tamao: valor literal entera, expresin entera o variable entera. Si se desea cambiar el tamao de un vector se hace de la siguiente manera: nombre = new tipo[nuevo_tamao] si coloca nuevamente el tipo al lado izquierdo muestra un error pues considera que se esta definiendo nuevamente, y lo que deseamos hacer es cambiar la capacidad.
Trabajando con vectores
En java los vectores son de un tipo de dato, sea primitivo o extendido. Los vectores en java tiene un tamao fijo, que si se cambia pierde todo lo almacenado. Definir un vector global static tipo[] nombreVector = new tipo[tamao]; Ejemplo static int[] vectorEnteros = new int[100]; Definir un vector local tipo[] nombreVector = new tipo[tamao]; Ejemplo double[] vectorDouble=new double[200]; Para recorrer un vector elemento por elemento es necesario hacer un ciclo desde cero hasta el tamao del vector, para conocer el tamao de un vector se usa la funcin length nombreVector.length for(int indide=0;indice<vectorEnteros.length;indice++){ System.out.println(vectorEnteros[indice]); } Para asignar un elemento a una posicin nombrevector[posicion]=valor; Para recuperar el contenido de una posicin prueba=nombrevector[posicion]; suma= datos*nombrevector[posicion]; System.out.println(nombrevector[posicion]); Ejemplo Realizar las pruebas respectivas e investigar que significa length
import java.io.*; public class EjemploVectores { public static InputStreamReader inp = new InputStreamReader(System.in); public static BufferedReader tec = new BufferedReader(inp); public static void main(String[] args)throws IOException { System.out.println("digite el nmero de posiciones "); int longitud = Integer.parseInt(tec.readLine()); int[] vec = new int[longitud]; for (int i=0;i<longitud;i++){ System.out.println("ingrese el valor para la pos "+i); vec[i]=Integer.parseInt(tec.readLine()); } for (int i=0;i<longitud;i++){ System.out.println("el valor de la pos "+i+" es: "+vec[i]); } String[] nombre=new String[20]; for(int i=0;i<nombre.length;i++){ System.out.println("digite un nombre "); nombre[i]=tec.readLine(); } for (int i=0;i<nombre.length;i++){ System.out.println("el nombre de la pos "+i+" es: "+nombre[i]); } } }
Ejercicio.
1. Crear un vector de tamao solicitado por el teclado, llenarlo de letras identificando cuantas de ellas son vocales en mayscula y cuantas son vocales en minscula.
2. Leer n nmeros por el teclado y determinar: cuantos de ellos son mayores, cuantos son menores y cuantos son iguales al promedio de los nmeros ledos.
3. Almacenar en un vector n nmeros primos desde 100.
4. Construir un programa que dado el tamao deseado para un vector de enteros permita llenarlo.
5. Construir un programa que llene un vector y lo ordene de mayor a menor.
6. Construir un programa que llene un vector y solicite un valor, identificando en que posicin se encuentra el dato en el vector.
7. Construir un programa que llene un vector de tamao n de forma que no tenga ningn elemento repetido.
import javax.swing.JOptionPane; public class Raizcuadrada2 { public static void main(String args[]) { String primerNumero, segundoNumero, tercerNumero,opci; double a, b,c,d=0,e=0,f=0,g=0,h=0,suma,op=0; suma=0; op=0; do{ primerNumero=JOptionPane.showInputDialog("Escribe coeficiente a" ); segundoNumero=JOptionPane.showInputDialog("Escribe coeficiente b" ); tercerNumero=JOptionPane.showInputDialog("Escribe coeficiente c" ); a=Integer.parseInt(primerNumero); b=Integer.parseInt(segundoNumero); c=Integer.parseInt(tercerNumero); d=((b*b)-(4*a*c)); e=((2)*(a)); if(e<=0) { opci=JOptionPane.showInputDialog("\n el coeficiente a es negativo, no se puede dividir entre cero, Repetir 1-Si 2-No:" ); op=Integer.parseInt(opci); }else{ if(d<0){ opci=JOptionPane.showInputDialog("\n no existe raiz de un numero negativo, Repetir 1-Si 2-No:" ); op=Integer.parseInt(opci); }else{ h=Math.sqrt(d); f=(((-b)+(h))/e); g=(((-b)-(h))/e); JOptionPane.showMessageDialog(null,"La raiz x1_:"+f,"resultado",JOptionPane.INFORMATION_MESSAGE); JOptionPane.showMessageDialog(null,"la raiz x2_:"+g,"resultado",JOptionPane.INFORMATION_MESSAGE); opci=JOptionPane.showInputDialog("\n Repetir? 1-Si 2-No:" ); op=Integer.parseInt(opci); } } }while(op==1); } }