Ranking para pagina web [Parte II]

Bienvenidos a un nuevo tutorial, hoy continuaremos con un tema pendiende que corresponde al siguiente tutorial Ranking para una página web [Parte I]
1)El tema pendiente planteado al final de anterior tutorial, hacia referencia a la cantidad de personajes que aparecen en el Ranking.
¿Por qué aparecen 100 personajes en el ranking y no 101 o 20 personajes?

Interfaz del ranking

2)La respuesta a esto, se debe a lo siguiente:

for($i=0;$i < 100;++$i)
Ese fragmento es quien determina que sólo aparezcan 100 personajes en el ranking.

Selección del código for

3)Comenzemos a analizarlo detenidamente, presten mucho atención ya que no es fácil entenderlo.
"For" es un bucle, este bucle se ejecutará la cantidad de veces que nosotros le indiquemos.
"While" [mientras](Que no lo tenemos en el código, pero lo explicaremos) es también un tipo de bucle, pero a diferencia del "For" el punto de corte de un While es un "false"
Pero retomemos el "For", como dijimos anteriormente, el "for" es un bucle, un bucle es una iteración (repetición) de una sentencia.
4)Luego del "For" tenemos lo siguiente:
$i=0;
Esto es sencillo, es una variable que está inicializada en "0"
5)Ahora sigue lo siguiente:
$i < 100;

Esta es la parte más importante, ya que ese 100 es el que define la cantidad de veces que se ejecutará la setencia.
Ese código nos dice que la sentencia que se presenta a continuación se ejecutará cuando "$i" sea menor a 100, cuando "$i" sea mayor a 100 no se ejecutará más la sentencia que se presenta a continuación.
Cuando hablo de la "Sentencia que se presenta a continuación" es lógico que me refiero a la muestra del personaje, clase, nivel, resets... que ya vimos en el anterior turorial.
6)Finalmente el código termina con lo siguiente:
++$i
Lo que estamos haciendo con eso es llevar el conteno de la variable $i.
Sino hacemos esto, el "For" no tendría fin, es decir, que la secuencia entraría en una iteración infinita, y de esta forma sobrecargaríamos la consulta dando como resultado un caótico consumo de memoria infinito.
(++$i es la forma "limpia y correcta" de llevar el conteo, pero también podemos hacerlo de otra forma y es de la siguiente: $i=$i+1)
7)Entonces ya tenemos analizada toda la linea correctamente, vamos a darle un esquema más didacto para comprender mejor:
for($i=0;$i < 100;++$i)
{
Setencia ....
}
Asi comienza este "For", pero ¿Sólo se ejecuta una sola vez?
NO, le falta ejecutarse 99 veces más, cuando el "For" se vuelve a ejecutar sucederá lo siguiente
for($i=1;$i < 100;++$i)
{
Setencia ....
}
¿Lograron ver el cambio?, vamos a ejecutarlo de nuevo
for($i=2;$i < 100;++$i)
{
Setencia ....
}
¿Y ahora?, como pueden ver, "imaginariamente" esa "$i" va aumentando su valor de 1 en 1, esto es debido a lo mencionado anteriormente, es decir, se debe a que el "++$i" va sumando 1 por cada ejecución y este bucle o "For" terminará cuando llegue a 100
8)Vamos a jugar un rato con esto, ¿Qué creen pasaría si en vez de inicializar la variable $i=0; la inicializamos en $i=99;?
¿Cuántas veces se debería ejecutar el bucle o "For" para llegar a 100?
El código en nuestro .php quedaría asi:
for($i=99;$i < 100;++$i)
Ahora veamos lo que sucede en nuestra página web

Visualizando cambios

9)La respuesta a la pregunta anterior es 1 (una vez), si inicializamos la variable que produce el corte en 99 , para llegar al 100 nos hace falta 1.
Sigamos jugando, yo anteriormente, para ser más exactos en el punto 7) dije que le faltaba ejecutarse 99 veces más, ¿Qué sucede con el 0? , es decir si observamos nuestro ranking original o cualquier ranking MuOnline, siempre veremos que el comienzo es 1, ¿Y el 0? ¿Por qué no aparece el 0 en el ranking? ¿A qué se debe?
La respuesta se debe a que si la variable ya está inicializada en 0 el primer bucle la convierte en 1, porque ya se ejecutó una vez. Para imprimir el 0 en el ranking debemos aplicar matemáticas.
¿Qué número es menor a 0? ¿Conjunto Z, recuerdan? Cualquier número negativo es menor a 0, entonces para que aparezca el 0 en nuestro ranking debemos ir un número más atrás que el 0, y sin pensarlo mucho, es el -1. (-1+1=0)
Usaré esto en el código y veremos que sucede en nuestra WebMU:
for($i=-1;$i < 100;++$i)
Visualizando ranking

10)Entonces ya estamos en condiciones de responder la pregunta inicial,¿Por qué aparecen 100 personajes en el ranking y no 101 o 20 personajes?
Volvemos a analizar el código nuevamente inicial:
for($i=0;$i < 100;++$i)
Teníamos, una variable que está inicializada en 0, un bucle que dice que se ejecutará hasta que la variable llegue a 100 y un contador de la variable.
¿Qué debemos modificar para que nuestros ranking muestre un total de 20 personajes por ejemplo?
Por supuesto que si, lo que debemos modificar es el "100" por un "20" de esta forma nos mostrará los primeros 20 personajes de nuestro ranking, ya que el bucle se ejecutará sólamente 20 veces, es decir cuando "$i=20" el código se detendrá.

Mostrando los 20 personajes

11)Pero antes de despedirme, tomaré el código original y cambiaré la variable inicial en 80 de tal forma que el código modificado quede así:
for($i=80;$i < 100;++$i)
¿De acuerdo a lo leído anteriormente cuántos personajes creen que aparecerán en el server? ¿Qué diferencia hay con el anterior código? ¿Son efectivos?
No les daré las respuestas, las deberán pensar ustedes.
RankingDemo.txt [1 KB]

¿Necesitas ayuda? Visita www.iceventas.com y nosotros lo hacemos por ti.

Se han publicado un total de 0 comentarios en Mu Online Tutoriales :

Publicar un comentario en la entrada