You are on page 1of 10

Estructura de Datos IDAT

Luis Arias Hidalgo

Tema 3: Sentencias Repetitivas - Bucles (For , While)
Sentencia FOR (PARA HASTA) FOR (Para Hasta) Su sintaxis es: for (inicialización;condición;incremento o decremento){ sentencia1; sentencia2; } El FOR necesita una variable que controle las vueltas que se da Esta variable guardara el inicio, la condición y el incremento o decremento. Ejemplo 1: for(i=0;i<=10;i++){ } En este for se esta empezando de 0 y la condicion es que mientras i sea menor o igual que 10, finalmente i se incrementara en 1 por cada vuelta que se de. (se dará 11 vueltas) Ejemplo 2: for(i=2;i<=10;i=i+2){ } En este FOR se empieza de 2 mientras que i sea menor o igual que 10, finalmente i se incrementara de 2 en 2. (se dará 5 vueltas). Ejemplo 3: For(i=10;i>0;i--){ } En este FOR se empieza de 10 mientras que i sea mayor que 0, finalmente i se decrementará en 1 (se dará 10 vueltas).

-1-

Estructura de Datos IDAT
EJERCICIOS RESUELTOS

Luis Arias Hidalgo

1. Haga un programa que imprima los números del 20 al -10 en orden descendente. public class ejercicio { public static void main(String[] args) { int i; for (i =20 ; i>=-10;i-- ){ System.out.println(i); } } } 2. Escribir un programa que lea 10 números y encuentre el promedio, el máximo y el mínimo de esos valores import java.util.Scanner; public class ejercicio { public static void main(String[] args) { int i, n, max, min; double prom; String Num; Scanner scan = new Scanner(System.in); System.out.print("Ingrese Numero : "); Num = scan.nextLine(); n = Integer.parseInt(Num); max=n; min =n; prom=n; for (i =1 ; i<=9;i++ ){ System.out.print("Ingrese Numero : "); Num = scan.nextLine(); n = Integer.parseInt(Num); if(n<min){ min = n; } if(n>max){ max=n; } prom=prom+n; } prom = prom/10; System.out.println("El minimo valor es : " + min); System.out.println("El máximo valor es : " + max); System.out.println("El promedio es : " + prom); } }

-2-

Estructura de Datos IDAT
Ejercicios practicos

Luis Arias Hidalgo

1.- Ingrese un número y ver la tabla de multiplicar de ese numero. import javax.swing.JOptionPane; public class Ejer1 { public static void main(String[] args){ int Num,i; Num = Integer.parseInt(JOptionPane.showInputDialog("Ingrese Numero")); for(i=1;i<=12;i++){ System.out.println(i + " * " + Num + " = " + (i*Num)); } } } En este ejercicio se ingresara un número y se almacenará en la variable num luego se tendrá que multiplicar esa variable por 1,2,3,4,5,6,7,8,9,10,11,12 La sentencia System.out.println(i + " * " + Num + " = " + (i*Num)); Significa que primero se escribirá el valor de i luego se escribira el carácter “ * “ luego se va a escribir el valor de num luego se escribe el carácter “ = “ luego se escribe el valor de i * num. Esto se repetira 12 veces. Si el numero a ingresar es el 6 el resultado seria si:

Ejercicio 2 Visualizar los números pares o impares hasta el 100 en forma ascendente o descendente. Para eso se ingresara por teclado que clase de numero se quiere ver ‘P’ par o ‘I’ impar y tambien se ingresara por teclado la forma de visualizacion si es ‘A’ ascendente y si es ‘D’ descendente. import javax.swing.JOptionPane; public class Ejer2 { public static void main(String[] args){ String Tipo,Orden; int Num,i,valorini=0,valorfin=0; Tipo = JOptionPane.showInputDialog("Ingrese Tipo de numeros a imprimir Par[P] o Impar[I]"); Orden= JOptionPane.showInputDialog("Ingrese Orden de salida Ascen[A] o Desc[D]"); if(Tipo.equals("P")){ valorini=2; valorfin = 100; }else{ valorini=1; valorfin = 99; } if(Orden.equals("A")){ for(i=valorini;i<=valorfin;i+=2){ System.out.println(i); } }else{ for(i=valorfin;i>=valorini;i-=2){

-3-

Estructura de Datos IDAT
System.out.println(i); } } } }

Luis Arias Hidalgo

Ejercicio 3: Visualizar la tabla de multiplicar de un numero x para lo cual se deberá ingresar primero el numero que se va a multiplicar luego desde donde empieza la tabla y también hasta donde termina la tabla import javax.swing.JOptionPane; public class eJER3 { public static void main(String[] args){ int Num,Inicio,Fin,i; Num = Integer.parseInt(JOptionPane.showInputDialog("Ingrese Numero a multiplicar")); Inicio = Integer.parseInt(JOptionPane.showInputDialog("Ingrese Inicio de la tabla")); Fin = Integer.parseInt(JOptionPane.showInputDialog("Ingrese Fin de la tabla")); for(i=Inicio;i<=Fin;i++){ System.out.println(i + " * " + Num + " = " + (i*Num)); } } } El resultado será el siguiente:

-4-

Estructura de Datos IDAT

Luis Arias Hidalgo

Sentencia WHILE y DO WHILE (HACER MIENTRAS) Ambas sentencias son las mismas con la unica diferencia que el WHILE controla la condición antes de entrar en el bucle. Si ésta no se cumple, el programa no entrará en el bucle. Y el DO WHILE controla la condición al final del bucle. Si ésta se cumple, el programa vuelve a ejecutar las sentencias del bucle. Sintaxis del WHILE es: while (condición) { sentencia; } Esto se define Mientras que la condicion se cumpla hacer. Sintaxis del DO WHILE es: do{ sentencia1; sentencia2; }while (condición); Esto se define Hacer mientras que la condicion se cumpla. Ejemplos resueltos Ejercicio 1: Ingresar un numero de cualquier cantidad de cifras y al final mostrar la suma de sus cifras pares e impares. import javax.swing.JOptionPane; public class Ejer4 { public static void main(String[] args){ int numero,cifra,sumpar=0,sumimp=0; numero=Integer.parseInt(JOptionPane.showInputDialog("Ingrese Numero")); while(numero>0){ cifra=numero%10; if (cifra%2==0){ sumpar+=cifra; } else{ sumimp+=cifra; } numero=numero/10; } System.out.println("Suma de pares:" + sumpar); System.out.println("Suma de impares:" + sumimp); } }

-5-

Estructura de Datos IDAT

Luis Arias Hidalgo

Ejercicio 2: Ingresar un numero de cualquier cantidad de cifras y mostrarlo en forma invertida. import javax.swing.JOptionPane; public class Ejer5 { public static void main(String[] args){ int numero,cifra,numeroinv=0; numero=Integer.parseInt(JOptionPane.showInputDialog("Ingrese Numero")); while(numero>0){ cifra=numero%10; numeroinv=numeroinv*10 + cifra; numero=numero/10; } System.out.println("Numero Invertido es :" + numeroinv); } } Ejercicio 3: public class Dec2Bin{ public static void main(String args[]){ int decimal = 252222; String binario = ""; while ( decimal > 0 ) { binario = decimal % 2 + binario; decimal /= 2; } System.out.println(binario); } }

Ejercicio 4: public class impnum{ public static void main(String arg[ ]) int num = 50; while(num < 101){ System.out.println(num); num = num + 1; } } } {

-6-

Estructura de Datos IDAT

Luis Arias Hidalgo

Ejercicios resueltos 1. Pida por pantalla el ingreso de números enteros y muestre la cantidad de números ingresados y la suma de los mismos. Realice esta acción hasta que el usuario ingrese “no”. import java.util.Scanner; public class ejercicio { public static void main(String[] args) { int tot_num, n, suma; String Num; Scanner scan = new Scanner(System.in); tot_num=0; suma=0; do { System.out.print("Ingrese numero: "); Num = scan.nextLine(); if (Num != "no"){ n = Integer.parseInt(Num); suma = suma+n; tot_num = tot_num +1; } suma = suma + 1; }while(Num != "no"); System.out.println("Cantidad de numeros : " + suma); System.out.println("La suma es : " + suma); } } 2. Leer un valor positivo mayor que 1, y hacer la siguiente secuencia: si el número es par, dividirlo entre 2; sino, multiplicarlo por 3 y sumarle 1. Repetir lo anterior hasta que el valor sea 1, imprimiendo cada valor, también se deberá imprimir cuantas operaciones de estas son hechas. import java.util.Scanner; public class ejercicio { public static void main(String[] args) { int n, res, operaciones; String Num; Scanner scan = new Scanner(System.in); operaciones = 0; do { operaciones ++; System.out.print("Ingrese numero: "); Num = scan.nextLine(); n = Integer.parseInt(Num); if (n % 2 == 0){ res = n/2; }else{ res = n+1; } System.out.println("Resultado : " + res); }while(n > 0); System.out.println("Operaciones : " + operaciones); } }

-7-

Estructura de Datos IDAT
Laboratorio 3: Bucles

Luis Arias Hidalgo

1. Desarrolle un programa que permita intercambiar el valor de dos variables. 2. Visualice la suma de las cifras de un número introducido por teclado y muestre la diferencia entre el número inicial y el resultante de colocar las cifras en orden inverso. 3. Haga un programa que lea un número por pantalla; determine si es par, impar o neutro. 4. Se ingresa un año por teclado, el programa debe mostrar si es bisiesto o no. 5. En un colegio primario aplican un 5% de aumento por cada grado de estudio. Realice un programa que permita ingresar el precio de pago del 1º grado y muestre el precio de los demás años de estudio. 6. En la siguiente tabla se muestra el número de camas de las habitaciones de una casa rural, además de la planta donde está ubicada cada una de ellas: Habitación 1. Azul 2. Roja 3. Verde 4. Rosa 5. Gris Camas 2 1 3 2 1 Planta Primera Primera Segunda Segunda Tercera

Diseñe el algoritmo (en pseudocódigo) de un programa que: • Muestre el listado de las habitaciones de la casa rural. • Pida por teclado el número (dato entero) asociado a una habitación. • Muestre por pantalla la planta y el número de camas de la habitación seleccionada. 7. Escribir un programa que lea números hasta que se encuentre el cero. El segundo número se sumará al primero, luego el tercero se restará, el cuarto se sumará, y así se deberá seguir alternado hasta que se llegue al cero. Cuando se llegue a esta condición deberá imprimir el resultado, el total de operandos de la operación (sin incluir el cero), y la suma de los operandos que se restaron. 8. Diseñe el algoritmo (en pseudocódigo) de un programa que: • Pida por teclado la arista (dato real) de un cubo. • En el caso de que la arista sea mayor que cero, muestre por pantalla el mensaje:"El volumen del cubo de arista <arista> es: <volumen>". • Repita los primeros pasos, mientras que, la arista introducida sea mayor que cero. • Muestre por pantalla cuantos volúmenes de cubos han sido calculados. 9. Desplegar múltiplos de 4 entre 60 y 20 acompañados de su logaritmos de base 10 y base e respectivos. 10. Construir la tabla de multiplicar que el usuario indique. 11. Calcular los valores de la suma del capital y el interes compuesto para un período dado de años. Para cada año el interes es calculado como: interes = capital * tasa_interes / 100 capital += interes; 12. Escribir un programa que lea dos caracteres, e imprima su valor cuando se pueda interpretar como un número hexadecimal. Aceptar letras mayúsculas y minúsculas para los valores del 10 al 15.

-8-

Estructura de Datos IDAT

Luis Arias Hidalgo

13. Leer un valor entero. Suponer que el número es un día de la semana. Suponer que 1 corresponde a Lunes y así sucesivamente. Imprimir el nombre del día. 14. Dados como entrada 3 enteros representando la fecha como día, mes, año, imprimir la fecha del día anterior. Por ejemplo para una entrada como: 1 3 1992 La salida será: Fecha anterior a 1-3-1992 es 29-02-1992. 15. Escribir un programa el cual lea dos valores enteros. Si el primero es menor que el segundo, que imprima el mensaje ``Arriba''. Si el segundo es menor que el primero, que imprima el mensaje ``Abajo''. Si los números son iguales, que imprima el mensaje ``igual''. Si hay un error en la lectura de los datos, que imprima un mensaje conteniendo la palabra ``Error'' y haga finalice.

-9-

Estructura de Datos IDAT

Luis Arias Hidalgo

- 10 -