Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

duda con seguimiento

celio

Bovino maduro
Desde
11 Ago 2007
Mensajes
239
package veces6;

/**
*
* @author celio
*/
public class Veces6 {

public static void main(String[] args) {
final int MAX=35;
int i,j;
for(i=0,j=MAX;i<j;i++,j--){
System.out.println("d"+(i+2*j));
}
}
}
Al hacer seguimiento

i j MAX
0 MAX



Mi pregunta es que si MAX es 35 como constante por que se va a decrementar??

y reemplese esta formula i+2*j y me da

0*2+35=70
1+2*34=68
2+2*33=66

no me cuadra con lo que el programa me compilo

Gracias
 
Tú dinos porque no hace lo que debería, tú eres el autor del mismo... X_X

MAX nunca se decrementa, la que se decrementa es su vecina, la 'j'.

No es una buena idea robarse los programas de alguna parte y hacerlos pasar por propios, porque sucederá lo que acaba de suceder, no tendrás NPI de lo que hacen y cómo lo hacen.
 
Zephyros tienes razon pero creo que a ti Celio amigo mio se te olvida como funciona el ciclo for

la primera vez que pasas por for(i=0,j=MAX;i<j;i++,j--)
i se inicializa en 0
j se inicializa en 35
se valida la condicion i<j
se incrementa y decrementa i++, j-- (aqui se requiere una explicación mas extensa, la cual no voy a hacer)

la segunda vez (y demas veces que sea necesario repetir el ciclo) que pasas por el ciclo:
se valida la condicion i<j
se incrementa y decrementa i++, j--
si te fijas a partir de aqui y en adelante ya no se inicializan las variables i y j puesto que solo se hacen la primera vez que recorres el ciclo y por ende a j que tiene el valor de 35 se le resta 1 y su valor actual es ahora j=34 y a i que valia 0 se le aumenta 1 dando como resultado i=1 y asi sucesivamente.


si quieres emplear la constante MAX lo que tendria que hacer es lo siguiente:

for(i=0;i<MAX;i++){
System.out.println("d"+(i+2*MAX));
}


espero haber ayudado
Saludos!!!
 
Estimado Zephiros gracias por sus observacion el programa no lo ROBE ni lo estoy HACIENDO PASAR POR PROPIO yo estoy cojiendo el libro de Programacion en Java 2 del autor Luis Joyanes Aguilar transcribo el codigo y lo compilo haber que hace, o si no intento hacer la prueba de escritorio y si no puedo , pues pregunto en el foro.

Por lo tanto señor Zephiros A MI NADIE ME TRATA DE LADRON Y ME RESPETA ME HACE EL FAVOR asi como lo he respetado a usted y siempre desde que he estado en este foro, si es ciero que cometi un error en no citar la fuente y el autor del programa como lo he hecho en eso PERO LE RECALCO YO MEREZCO RESPETO ASI COMO USTED LO MERECE POR QUE SU TRATO HACIA MI NO ME GUSTA PARA NADA Y SI SE VA PONER A OFENDERME PRIMERO ENTONCES NO SE META AYUDARME POR QUE SUS INSULTOS COMO EN ESTE CASO DECIRME LADRON NO ME SIRVEN PARA NADA .

Señor Zephiros de todas maneras gracias por su atencion y disculpe si lo incomode.
 
Zephyros tienes razon pero creo que a ti Celio amigo mio se te olvida como funciona el ciclo for

la primera vez que pasas por for(i=0,j=MAX;i<j;i++,j--)
i se inicializa en 0
j se inicializa en 35
se valida la condicion i<j
se incrementa y decrementa i++, j-- (aqui se requiere una explicación mas extensa, la cual no voy a hacer)

la segunda vez (y demas veces que sea necesario repetir el ciclo) que pasas por el ciclo:
se valida la condicion i<j
se incrementa y decrementa i++, j--
si te fijas a partir de aqui y en adelante ya no se inicializan las variables i y j puesto que solo se hacen la primera vez que recorres el ciclo y por ende a j que tiene el valor de 35 se le resta 1 y su valor actual es ahora j=34 y a i que valia 0 se le aumenta 1 dando como resultado i=1 y asi sucesivamente.


si quieres emplear la constante MAX lo que tendria que hacer es lo siguiente:

for(i=0;i<MAX;i++){
System.out.println("d"+(i+2*MAX));
}


espero haber ayudado
Saludos!!!


Pero una pregunta

Apenas se valide i<j (0 es menor que 35) eso es cierto entonces entra a hacer el calculo y luego incrementar i y decrementar j??


Muchas Gracias
 
exacto!!!

Pero una pregunta

Apenas se valide i<j (0 es menor que 35) eso es cierto entonces entra a hacer el calculo y luego incrementar i y decrementar j??


Muchas Gracias

muy bien Celio eso es exactamente lo que hace en este D-F se ve un poco mas claro:

Dibujo7.PNG


te animo a seguir con ese espiritu autodidacta!!!


P.D. por cierto Zephyros es niña.
 
LISTO YA LO ENTENDI

Código:
  TENEMOS LAS VARIABLES
Código:
     i             j                MAX
                 0           35                35        70          Max se queda ahi siempre  35
                 1           34                35       69
                 2           33                35       68 
                 3           32                35       67
                 4           31                35        66
Código:
   PRIMERA PASADA   i es igual 0, j es igual a 35 , i es menor que j?? si entra al ciclo  (i+2*j) osea (0+2*35) =70 
luego i++=1 ,j--=34 fuera del System.out.println();
 
asi es

asi es como funciona esto del ciclo for.

Estoy seguro de que de ahora en adelante te será mas facil entender la logica del while, do-while y demas cosas que te depara esto de la programacion.


Saludos!!!
 
Volver
Arriba