Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Duda DO WHILE

Estas en el tema de Duda DO WHILE en el foro de Java en Foros del Web. Hola a todos en general, recien estoy iniciando en la programacion, este ejemplo lo cogì de un libro , en esta ocasion tengo una duda ...
  #1 (permalink)  
Antiguo 23/02/2016, 17:36
Avatar de oskarxx  
Fecha de Ingreso: febrero-2014
Ubicación: LIMA
Mensajes: 7
Antigüedad: 10 años, 3 meses
Puntos: 0
Duda DO WHILE

Hola a todos en general, recien estoy iniciando en la programacion, este ejemplo lo cogì de un libro , en esta ocasion tengo una duda acerca del funcionamiento del While , este programa es para darme el màximo comùn divisor de dos nùmeros(Algoritmo de Euclides), Se usa el Do while para que cuando el "mcd" sea 0, pare el ciclo. La cuestiòn es que no entiendo porque se realiza un bucle , es decir se sigue dividiendo hasta obtener un "MCD" igual a 0. Yo sè que para que exista un bucle debe existir un contador, pero en este caso sòlo se puede ver un juego de asignaciones dentro del DO:

Código:
do {
		residuo = numero1 % numero2;
 
		if (residuo != 0) {
			numero1 = numero2;
			numero2 = residuo;
 
		} else {
			mcd = numero2;
		}
 
	}

Programa:

Código:
 Scanner xalu =new Scanner(System.in);
        System.out.println("Ingrese numero");
        int numero1=xalu.nextInt();
        
         System.out.println("Ingrese numero");
        int numero2=xalu.nextInt();
        
        int residuo;
        int mcd = 0;
        
        	do {
		residuo = numero1 % numero2; 
		if (residuo != 0) {
			numero1 = numero2;
			numero2 = residuo;
 
		} else {
			mcd = numero2;
		}
 
	} while (residuo != 0);
   
        System.out.println("el mcd es: "+mcd);
  #2 (permalink)  
Antiguo 24/02/2016, 02:02
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Duda DO WHILE

Hola:

Estrictamente hablando, un bucle no necesita necesariamente un contador. Un bucle se repite mientras se cumpla una condición cualquiera, que no tiene que ser que un contador llegue a un valor.

Habitualmente, sobre todo en bucles for, la condicion es que un contador llegue a un valor, pero no es obligatorio. Por ejemplo, podrías perfectamente hacer esto

Código Java:
Ver original
  1. boolean ranasCrienPelo=true;
  2. for (int i=0; ranasCrienPelo==true; i++) {
  3.  
  4. }

y el bucle, incrementando el contador, se repetiría indefinidamente hasta que dentro del bucle alguien cambien el valor de la variable ranasCrienPelo a false.

Igual con el do-while o el while a secas. En tu ejemplo, el bucle, sin necesidad de contador, se repite mientras residuo no sea 0. Dentro del bucle se van asignado valores a residuo y el bucle se parará cuando se le asigne un valor cero.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 26/02/2016, 14:06
Avatar de oskarxx  
Fecha de Ingreso: febrero-2014
Ubicación: LIMA
Mensajes: 7
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Duda DO WHILE

Gracias man , por otro lado, la tècnica de Euclides es dividir el mayor entre el menor, al insertar dos numeros me muestra la respuesta correcta , como asì ordena si es mayor o menor?

Última edición por oskarxx; 26/02/2016 a las 16:51
  #4 (permalink)  
Antiguo 29/02/2016, 13:22
 
Fecha de Ingreso: agosto-2015
Ubicación: La Habana
Mensajes: 72
Antigüedad: 8 años, 8 meses
Puntos: 4
Respuesta: Duda DO WHILE

compara primero los números e intercambialos en dependencia del resultado
Código:
 Scanner xalu =new Scanner(System.in);
        System.out.println("Ingrese numero");
        int numero1=xalu.nextInt();
        
         System.out.println("Ingrese numero");
        int numero2=xalu.nextInt();
        //--------------------------------------------------------------
        if(numero1 < numero2)
        {
           int temp = numero2;
           numero2 = numero1;
           numero1 = temp;
         }
        //--------------------------------------------------------------
        int residuo;
        int mcd = 0;
        
        	do {
		residuo = numero1 % numero2; 
		if (residuo != 0) {
			numero1 = numero2;
			numero2 = residuo;
 
		} else {
			mcd = numero2;
		}
 
	} while (residuo != 0);
   
        System.out.println("el mcd es: "+mcd);

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:39.