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

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

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

Senior++

#10
Hola shellroot, enserio muchas gracias por ayudar, tu código con el for lo entiendo perfectamente, osea lo entiendo totalmente, pero no entiendo este código, este en especial del while

<?

$texto = "Esto es un ejercicio de repaso.";
$i=0;
do {
$i++;
}while ($texto[$i]!="u" && $i< strlen($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.";
?>


de ese código lo que no me entra en la cabeza es este codigo en especial:
while ($texto[$i]!="u"

Mientras $texto sea DISTINTO a "u"...

ok pero  que pasa si $texto[$i] llega al valor 8 osea $texto[8], osea en el valor 8 se encuentra el caracter "u", y el while dice: mientras $texto sea DISTINTO, osea no es distinto ¿por que se sigue ejecutando todo lo que hay detras del bucle while? osea el if en ese momento no se deberia de ejecutar ¿por que se ejecuta?

En resumen: cuando llegue al indice 8 por que se ejecuta lo que hay detras del bucle while? si $texto[8] no es distinto al caracter 'u' , es igual
Vendo cuenta de LEAGUE OF LEGENDS lvl 30, EU west, muy barata

Shell Root

#11
En el while se tiene la condición! En este caso es,
Código (php) [Seleccionar]
# SNIP
while( ($texto[$i] != "u") && ($i < strlen($texto)) ):
# SNIPP


Ahora lo que debes de entender es la logica de programación, operadores tales como: OR, AND, Xor, Not,... Para este ejemplo, se tiene el operador AND ( && ).

Entonces para el while se tienen 2 condiciones,
1er Condición: El caracter en la posición indice ($i) sea diferente de 'u'.
Y
2da Condición: El tamaño de caracteres debe de ser menor del texto recorrido.

Para que el while funcione, se deben de cumplir las dos condiciones, cuando una de ellas sea falsa, el ciclo termina! -caso diferente al tener el operador OR (||, que es cuando se cumplen 1 de las 2 condiciones)-
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Senior++

#12
Cita de: @shellroot en 25 Noviembre 2013, 20:34 PM
En el while se tiene la condición! En este caso es,
Código (php) [Seleccionar]
# SNIP
while( ($texto[$i] != "u") && ($i < strlen($texto)) ):
# SNIPP


Ahora lo que debes de entender es la logica de programación, operadores tales como: OR, AND, Xor, Not,... Para este ejemplo, se tiene el operador AND ( && ).

Entonces para el while se tienen 2 condiciones,
1er Condición: El caracter en la posición indice ($i) sea diferente de 'u'.
Y
2da Condición: El tamaño de caracteres debe de ser menor del texto recorrido.

Para que el while funcione, se deben de cumplir las dos condiciones, cuando una de ellas sea falsa, el ciclo termina! -caso diferente al tener el operador OR (||, que es cuando se cumplen 1 de las 2 condiciones)-

entiendo todo eso, pero para que usted lo entienda a lo que me refiero con un codigo mas sencillo:

$i = 1;
while($i != 10){
$i++;
echo $i."<br />";

}


¿por que imprime en pantalla el numero 10, si el 10 no es distinto de 10?
Vendo cuenta de LEAGUE OF LEGENDS lvl 30, EU west, muy barata

#!drvy

·_·

Cuestion de logica. Incrementas y imprimes antes de comprobar el numero. Osease...  el while llega a 9!=10 y ejecuta lo que hay dentro, inmediatamente se suma uno (10) y se impime.

Código (php) [Seleccionar]
$i = 1;
while($i != 10){echo $i."<br />";  ++$i;}


Saludos

Senior++

 :xD era un ejemplo para que entendiera lo que queria decirle del código anterior...
bueno ya entendí todo

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

Shell Root

A mi me imprime sólo hasta 9  :silbar:

Código (php) [Seleccionar]
$i = 1;
while($i != 10):
    echo $i."<br />";
    $i++;
endwhile;


1
2
3
4
5
6
7
8
9
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.