Sunteți pe pagina 1din 9

Instructor : Hernn Galopino Alberca

Curso: Java

Ejercicios con While


Sentencia de iteracin Una sentencia de iteracin consiste en ejecutar o realizar sentencias mientras se cumple una determinada condicin. En general : MIENTRAS (condicin) HACER sentencia(s) FIN MIENTRAS JAVA : Sentencia while while (condicin) { sentencia(s) } Supongamos que queremos escribir en pantalla, la secuencia de nmeros del 50 al 100. Una alternativa (ineficiente) sera plantear el siguiente algoritmo : imprimir imprimir : : imprimir imprimir 1 2 99 100

Obviamente este algoritmo aparte de ser ineficiente es largo de escribir. Usando una sentencia iterativa, podemos declarar una variable que inicializada en 50, podemos ir la incrementando en 1, mientras esa variable no pase de 100. num = 50 MIENTRAS(num < 101) HACER imprimir(num) num = num + 1 FIN MIENTRAS public class impnum { public static void main(String arg[ ]) { int num = 50; while(num < 101) { System.out.println(num); num = num + 1; } } }

En cada iteracin, se imprime la variable num y luego se incrementa en 1. Despus de esto se evala la condicin. Si se cumple que el valor actual de num es menor que 101, se entra de nuevo al ciclo, y se repiten las instrucciones. Supongamos ahora, que slo queremos imprimir los nmeros pares que existen del 50 al 100. Hay dos alternativas visibles. Una es comprobar en cada iteracin si la variable es par mediante la pregunta : SI (RESTO(num/2) == 0) y la otra alternativa es incrementar en cada iteracin la variable num en 2.

Pg.: 9
HARD ROCK COFEE IN JAVA

Instructor : Hernn Galopino Alberca

Curso: Java

Alternativa 1) num = 50 MIENTRAS(num < 101) HACER SI ( RESTO(num / 2) == 0) ENTONCES imprimir(num) FIN SI num = num + 1 FIN MIENTRAS Public class pares { public static void main(String arg[ ]) { int num = 50; while (num < 101) { if (num % 2 == 0) { System.out.println(num); } num = num + 1; } } Bajar archivo <BR }

Alternativa 2) num = 50 MIENTRAS(num < 101) HACER imprimir(num) num = num + 2 FIN MIENTRAS Ejercicios : del 1 al 100

a ) Escribir el algoritmo que imprima todos los nmeros impares, b ) Escribir el algoritmo que imprima todos los mltiplos de 17, del 17 al 3000

Otros problemas tpicos que se resuelven con estos ciclos iterativos, son los que involucran sumatorias y contadores. Por ejemplo queremos hacer una sumatoria desde 1 hasta una valor ingresado por el usuario. Digamos que el valor ingresado por el usuario es 3. Por lo tanto en definitiva se quiere que se hagan iterativamente las siguientes instrucciones : num = 3 sum = 0 sum = sum + 1 --> sum = 0 + 1 --> sum = 1 sum = sum + 2 --> sum = 1 + 2 --> sum = 3 sum = sum + 3 --> sum = 3 + 3 --> sum = 6 Podemos observar que en general se est aplicando la frmula : sum = sum + i donde i toma los valores 1,2,3 , o sea se va incrementando mientras i sea menor o igual a 3. Si extendemos este ejemplo a un valor cualquiera para num, y aplicamos una sentencia iterativa tenemos lo siguiente : Leer num i =1 Pg.: 9
HARD ROCK COFEE IN JAVA

Instructor : Hernn Galopino Alberca sum = 0 MIENTRAS ( i < = num ) HACER sum = sum + i i=i+1 FIN MIENTRAS

Curso: Java

Digamos ahora, que queremos hacer la sumatoria de 1 hasta num, de slo los mltiplos de 3. La nica modificacin al algoritmo anterior, sera que la variable sum se incrementara, slo si se cumple la condicin antes descrita. Ej : Leer num i=1 sum = 0 MIENTRAS ( i <= num ) HACER SI (RESTO (i %3) == 0) ENTONCES sum = sum + i FIN SI i=i+1 FIN MIENTRAS import java.io.*; public class prbwhile2 { public static void main(String Arg[ ]) throws IOException { int i = 1; int sum = 0; int num; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Ingrese numero : "); num = Integer.parseInt(in.readLine( )); while (i <= num) { if (i % 3 == 0) { sum += i; } i++; } } } Salida a pantalla Para una entrada 12 se tiene : 3 + 6 + 9 + 12 = 30 System.out.println("sumatoria : " + sum );

Supongamos ahora, que slo queremos contar cuntos nmeros mltiplos de 3 hay de 1 hasta num. Para eso, se elimina todo lo que sea sumar y se reemplaza por una variable contador. En definitiva, si se cumple la condicin de mltiplo de 3, la variable contador se incrementar en 1. Leer num i= 1 Pg.: 9
HARD ROCK COFEE IN JAVA

Instructor : Hernn Galopino Alberca contador = 0 MIENTRAS( i < = num ) HACER SI (RESTO (i / 3) = 0) ENTONCES contador = contador + 1 FIN SI i=i+1 FIN MIENTRAS

Curso: Java

Ejercicio : Basndose en el programa anterior , pasar este algoritmo a Java.

Ejemplo El siguiente programa consiste en ir calculando la media, a medida que se van incorporando datos. El algoritmo es el siguiente media = 0 n=0 leer(elementos) MIENTRAS (n < elementos) HACER leer(num) media = (media * n + num) / (n + 1) imprimir(media) n=n+1 FIN MIENTRAS

import java.io.*; public class prbwhile3 { public static void main(String Arg[ ]) throws IOException { double media = 0.0; int n = 0; int elementos; double num; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Ingrese numero de elementos a ingresar : "); elementos = Integer.parseInt(in.readLine( )); while (n < elementos) { System.out.print("\nIngrese numero : "); num = Double.parseDouble(in.readLine( )); media = (media * n + num) / (double) (n + 1); /* Redondea a dos decimales */ media = Math.round(media * 100.0) / 100.0; System.out.println("media actual : " + media); } } n++;

System.out.println("\nMedia final : " + media ); }

Salida a pantalla

Pg.: 9
HARD ROCK COFEE IN JAVA

Instructor : Hernn Galopino Alberca

Curso: Java

Sumar la cantidad de dgitos y contarlos import java.io.*; class manipnum { public static void main(String Arg[ ]) throws IOException { int num,div_entera,resto,contador,sum; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Ingrese numero : "); num = Integer.parseInt(in.readLine( )); div_entera = num; sum = 0; contador = 0; while (div_entera != 0) { resto = div_entera % 10; div_entera = div_entera / 10; sum += resto; contador++;

} }

System.out.println("suma : " + sum); System.out.println("contador : " + contador);

Ejercicios con do While


Invertir un nmero Algoritmo leer num num_inv = 0 div_entera = num resto_div = 0 hacer mientras (div_entera != 0) resto_div = div_entera % 10 div_entera = div_entera / 10 Pg.: 9
HARD ROCK COFEE IN JAVA

Instructor : Hernn Galopino Alberca num_inv = num_inv * 10 + resto_div mientras (div_entera != 0) import java.io.*;

Curso: Java

public class InvNum { public InvNum() { } public static void main(String Arg[ ]) throws IOException { int num , num_inv , div_entera , resto_div; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Ingrese numero : "); num = Integer.parseInt(in.readLine( )); num_inv = 0; div_entera = num; resto_div = 0; do { resto_div = div_entera % 10; div_entera = div_entera / 10; num_inv = num_inv * 10 + resto_div; }while (div_entera != 0); System.out.println("El numero " + num + " invertido es " + num_inv); } }

Eliminar un dgito Algoritmo Leer num, x // x : dgito a eliminar div_entera = num resto_div = 0 aux = 0 mult = 1 hacer resto_div = div_entera % 10 div_entera = div_entera / 10 si ( resto_div != x) entonces aux = aux + (resto_div * mult) mult = mult * 10 fin si mientras (div_entera != 0) import java.io.*; class ElimDig { public static void main(String Arg[ ]) throws IOException { int num , x , aux , mult , div_entera , resto_div; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Ingrese numero : "); num = Integer.parseInt(in.readLine( )); Pg.: 9
HARD ROCK COFEE IN JAVA

Instructor : Hernn Galopino Alberca

Curso: Java

System.out.print("Ingrese digito a eliminar : "); x = Integer.parseInt(in.readLine( )); div_entera = num; resto_div = 0; aux = 0; mult = 1; do { resto_div = div_entera % 10; div_entera = div_entera / 10; if (resto_div != x) { aux += (resto_div * mult); mult *= 10; } } while (div_entera != 0);

System.out.println("El numero " + num + ", eliminando el digito " + x + " es igual a " + aux); } }

TAREA DE AYUDANTIA (SECCIONES DE SEGUNDO CICLO) : CONSISTE EN LEER UN NUMERO POR TECLADO Y UN DIGITO A ELIMINAR, PARA LUEGO INVERTIR DICHO NUMERO SIN EL DIGITO ELEGIDO. (Fijarse en los dos ejemplos anteriores). Ej : Ingrese numero : 12345 Ingrese digito a eliminar : 2 El numero 12345 invertido, sin el digito 2 es igual a 5431

Ejercicios 1) Realizar programa en java que a) Sume los digitos de un nmero b) Determine si un nmero es perfecto ; o sea que la suma de los divisores del nmero , sean igual al nmero. Ej : 6 = 1 + 2 + 3. c) Determine si un nmero es palndrome ; o sea que si se invierten los dgitos de un nmero, resulta el mismo nmero. Ej : 1221 , 56765 , 33 , 353 d) Determine los n primeros nmeros perfectos e ) Determine cuntos nmeros palndromos existen entre 10 y 32000 2 ) Resolver los problemas de manipulacin numrica, para nmeros enteros negativos, haciendo los mnimos cambios posibles. 3 ) Ordenar los dgitos de un nmero, en forma creciente y decreciente, usando funciones de manipulacin numrica. Ej : num = 907035 --> 3579 , 975300

Ejercicios con FOR

Pg.: 9
HARD ROCK COFEE IN JAVA

Instructor : Hernn Galopino Alberca Sentencia de iteracin for Instruccin para realizar ciclos.

Curso: Java

Es til para hacer variar el valor de una variable entera, permitiendo la inicializacin, condicin de trmino o valor de borde e incremento de dicha variable. El ciclo cumple los siguientes pasos : 1) Inicializa el valor de la variable 2) Revisa la condicin de borde 3) SI se cumple la condicin ENTONCES ejecuta la sentencia incrementa la variable Vuelve al paso 2) SINO saltar al paso 4) 4) Fin del ciclo Su sintaxis es la siguiente : for(inicializacin; condicin; incremento) sentencia Ejemplos

1) Imprimir todos los dgitos for(int i = 0; i < 10; i++) System.out.print(i); salida : 0123456789

2) Imprimir todos los dgitos pares mayores que 1 y menores de 10 int i; for(i = 1; i < 10; i++) { if(i % 2 == 0) System.out.print(i); } salida : 2468 Otra solucin : int i; for(i = 2; i < 10; i += 2) System.out.print(i);

3) Imprimir los numeros impares del 15 al 1. for(int n = 15; n >= 1; n -= 2) System.out.print(n + " ");

Pg.: 9
HARD ROCK COFEE IN JAVA

Instructor : Hernn Galopino Alberca

Curso: Java

4) Contar y sumar los nmeros mltiplos de 3, 5 y 7 que hay entre los nmeros 100 y 300 class contFor { public static void main(String Arg[]) { int sum3 = 0, sum5 = 0, sum7 = 0; int cont3 = 0, cont5 = 0, cont7 = 0; for(int p = 100; p <= 300; p++) { if (p % 3 == 0) { sum3 += p; cont3++; } if (p % 5 == 0) { sum5 += p; cont5++; } if (p % 7 == 0) { sum7 += p; cont7++; } } System.out.println(" multiplos de 3 : " + cont3 + ", sumatoria : " + sum3); System.out.println(" multiplos de 5 : " + cont5 + ", sumatoria : " + sum5); System.out.println(" multiplos de 7 : " + cont7 + ", sumatoria : " + sum7);

} }

5) Determinar el factorial de un nmero import java.io.*; class Factorial { public static void main(String Arg[ ]) throws IOException { int num; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Ingrese numero : "); num = Integer.parseInt(in.readLine( )); long fact = 1; for(int i = 2; i <= num; i++) fact *= i; } } System.out.println(num + "! : " + fact);

Pg.: 9
HARD ROCK COFEE IN JAVA

S-ar putea să vă placă și