Duda sobre el bucle do...while(solucionado)

Iniciado por Senior++, 25 Noviembre 2013, 12:00 PM

0 Miembros y 2 Visitantes están viendo este tema.

Senior++

Resulta que me encontre con este código:

<?php

$texto 
"Esto es un ejercicio de repaso.";
$i=0;
do {
 
$i++;
}while (
$texto[$i]!="u" && $istrlen($texto));
if (
$i==strlen($texto))
 
echo "En el texto no existe ninguna letra u.";
else
 
echo "La hemos encontrado. Está en la posición $i.";
?>


Bueno entiendo casi todo del código, lo que no entiendo es $texto[$i]!="u"

Saludos ;-)
Vendo cuenta de LEAGUE OF LEGENDS lvl 30, EU west, muy barata

Mad Antrax

#1
while ($texto[$i]!="u" && $i< strlen($texto));

Se puede traducir como:

Mientras el contenido de la variable $texto sea distinto de "u" y el contador sea inferior al tamaño de la variable $texto....

Por lo que veo, el bucle recorre el contenido de una variable de texto y si se encuentra el carácter "u" se detiene.

!= es un operador para comparar. Significa no es igual a
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

Senior++

Cita de: ||MadAntrax|| en 25 Noviembre 2013, 12:04 PM
while ($texto[$i]!="u" && $i< strlen($texto));

Se puede traducir como:

Mientras el contenido de la variable $texto sea distinto de "u" y el contador sea inferior al tamaño de la variable $texto....

Por lo que veo, el bucle recorre el contenido de una variable de texto y si se encuentra el carácter "u" se detiene.

!= es un operador para comparar. Significa no es igual a
gracias por responder..

pero la parte que no entiendo es la parte del [$i],¿es como si fuera un indice? osea el primer caracter que evalua es la 'E'? el recorrido ese lo hace gracias a la variable $i no?
Vendo cuenta de LEAGUE OF LEGENDS lvl 30, EU west, muy barata

Shell Root

Cita de: Senior++ en 25 Noviembre 2013, 12:35 PMpero la parte que no entiendo es la parte del [$i],¿es como si fuera un indice? osea el primer caracter que evalua es la 'E'? el recorrido ese lo hace gracias a la variable $i no?
Simon, se comporta como si fuera un array
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Senior++

Cita de: @shellroot en 25 Noviembre 2013, 14:16 PM
Simon, se comporta como si fuera un array

Hola gracias por contestar, entonces si yo hago esto: $texto[$i]

quiere decir que es un 'simon'?  :xD

entonces si la cadena en este caso es: $texto = "Esto es un ejercicio de repaso.";
La letra E contiene el indice 1, la s el indice 2 y asi sucesivamente?


Lo siento pero no lo entendí bien...
Vendo cuenta de LEAGUE OF LEGENDS lvl 30, EU west, muy barata

Shell Root

#5
A manera de pseudocódigo, sí! Pero en realidad el primer indice es 0, es decir,

Código (php) [Seleccionar]
$aNick = "shellroot";
for($i=0; $i <= strlen($aNick)-1; $i++):
  echo "Letra [".$aNick[$i]."] en el indice [".$i."] <br/>";
endfor;


Código (php) [Seleccionar]
# Letra [s] en el indice [0]
# Letra [h] en el indice [1]
# Letra [e] en el indice [2]
# Letra [l] en el indice [3]
# Letra [l] en el indice [4]
# Letra [r] en el indice [5]
# Letra [o] en el indice [6]
# Letra [o] en el indice [7]
# Letra [t] en el indice [8]


Y lo de "simon", es una afirmación, SImon! -veo mucho los simpson :p-
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Senior++

#6
Cita de: @shellroot en 25 Noviembre 2013, 15:21 PM
A manera de pseudocódigo, sí! Pero en realidad el primer indice es 0, es decir,

Código (php) [Seleccionar]
$aNick = "shellroot";
for($i=0; $i <= strlen($aNick)-1; $i++):
  echo "Letra [".$aNick[$i]."] en el indice [".$i."] <br/>";
endfor;


Código (php) [Seleccionar]
# Letra [s] en el indice [0]
# Letra [h] en el indice [1]
# Letra [e] en el indice [2]
# Letra [l] en el indice [3]
# Letra [l] en el indice [4]
# Letra [r] en el indice [5]
# Letra [o] en el indice [6]
# Letra [o] en el indice [7]
# Letra [t] en el indice [8]


Y lo de "simon", es una afirmación, SImon! -veo mucho los simpson :p-

Ok ya entendí,gracias

Por cierto vi nas cuantas curiosidades en tu código:

en esta parte: $i=0; $i <= strlen($aNick)-1; $i++ ¿no sería mas facil de ponerlo así $i=0; $i < strlen($aNick); $i++ ¿seria lo mismo no?

La otra es que inicias un bucle for y lo terminas con un endfor ¿que diferencia hay entre ponerlo así o con {}? así:

$aNick = "shellroot";
for($i=0; $i <= strlen($aNick); $i++){
  echo "Letra [".$aNick[$i]."] en el indice [".$i."] <br/>";
}

por lo demas todo entendido

Saludos y gracias de nuevo
Vendo cuenta de LEAGUE OF LEGENDS lvl 30, EU west, muy barata

HackID1

Cita de: Senior++ en 25 Noviembre 2013, 16:35 PM
En esta parte:
$i=0; $i <= strlen($aNick)-1; $i++ ¿no sería mas facil de ponerlo así $i=0; $i < strlen($aNick); $i++ ¿seria lo mismo no?

R= No es lo mismo menor ( < ) a menor igual (<= ) , En el 1 caso entra hasta el último carácter de la cadena ( que es la t ).

En el 2 caso solo mostraría hasta la letra ( o ) faltaría por mostrar la t de root.


La otra es que inicias un bucle for y lo terminas con un endfor ¿que diferencia hay entre ponerlo así o con {}? así:

$aNick = "shellroot";
for($i=0; $i <= strlen($aNick); $i++){
   echo "Letra [".$aNick[$i]."] en el indice [".$i."] <br/>";
}


Esto es otra variante de hacer un for. solo eso cuestión de gustos.

-------------------------------------------------------
El trabajo va a ocupar gran parte de tu vida, y la única forma de estar satisfecho es hacer lo que consideren un trabajo extraordinario.
Si no lo has descubierto, sigue intentándolo. No te conformes.
STEVE JOBS.

Senior++

Cita de: ||MadAntrax|| en 25 Noviembre 2013, 12:04 PM
while ($texto[$i]!="u" && $i< strlen($texto));

Se puede traducir como:

Mientras el contenido de la variable $texto sea distinto de "u" y el contador sea inferior al tamaño de la variable $texto....

Por lo que veo, el bucle recorre el contenido de una variable de texto y si se encuentra el carácter "u" se detiene.

!= es un operador para comparar. Significa no es igual a

Me liastes con tu respuesta, dices mientras la variables $texto[$i] sea distinto de "u" se ejecuta el código pero que pasa cuando la variable $texto[$i] es igual a "u" ¿por que se sigue ejecutando el bloque de código del bucle while(osea el if)

Saludos
Vendo cuenta de LEAGUE OF LEGENDS lvl 30, EU west, muy barata

Shell Root

#9
Código (php) [Seleccionar]
$aNick = "shelluroot";
for($i=0; $i <= strlen($aNick)-1; $i++):
   if($aNick[$i] === 'u'):
       echo "Letra u! muahahhaha 3:) <br/>";
       exit();
   else:
       echo "Letra [".$aNick[$i]."] en el indice [".$i."] <br/>";
   endif;
endfor;


Tiempo atras, cuando empezaba a programar no me gustaba utilizar el ciclo while, pero despues de un tiempo entendí qué: cada cosa se usa para cada cosa, es decir, hay casos en los que se DEBE de usar while...
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.