Diferencia entre revisiones de «Programación en PHP/Bucles»

Contenido eliminado Contenido añadido
Sin resumen de edición
Línea 13:
===While===
Sintáxis:
<source lang="php">
while (condición) sentencia;
</source>
 
Su funcionamiento es sencillo, ya que pimero se evalua que la condición sea verdadera y luego se ejecuta, hasta que la condición pase a ser falsa; una sentencia '''while''' (Español: Mientras) puede que no se ejecute ni siquiera una vez, si su condición es inicialmente falsa.
 
Línea 30 ⟶ 31:
 
Un bucle '''while''' puede contener varias sentencia, encerrandolas entre llaves ({}) o usando ésta sintáxis alternativa:
<source lang="php">
 
while (condición):
sentencia;
Línea 39 ⟶ 40:
sentencia;
endwhile;
</source>
 
Ejemplo con múltiples sentencias:
 
Línea 47 ⟶ 48:
|
<source lang="php">
<?php
$i = 1;
while($i <= 5):
echo "\$i = $i" . "<nowiki><br/></nowiki>\n";
$i += 1;
endwhile;
?>
</source>
|
<source lang="php">
<?php
$i = 1;
while($i <= 5)
{
echo "\$i = $i" . "<nowiki><br/></nowiki>\n";
$i += 1;
}
?>
 
</source>
|}
Línea 70 ⟶ 72:
Intentemos ahora un ejemplo más complicado.
<source lang="php">
<?php
$i = 1; $mult_2_3 = 0; $mult_2 = 0; $mult_3 = 0;
echo "Verifiquemos los múltiplos de 2 y 3 (del 1 al 10):<nowiki><br/></nowiki>\n";
echo "--------------------------------------------------<nowiki><br/></nowiki>\n";
while($i <= 10){
if(($i % 2 == 0) AND ($i % 3 == 0) )
{
echo "$i es múltiplo de 2 y de 3.<nowiki><br/></nowiki>\n";
$mult_2_3 += 1;
}elseif ($i % 2 == 0)
{
echo "$i es múltiplo de 2.<nowiki><br/></nowiki>\n";
$mult_2 += 1;
}elseif ($i % 3 == 0)
{
$mult_3 += 1;
echo "$i es múltiplo de 3.<nowiki><br/></nowiki>\n";
}else
{
$mult_2 = $mult_2+$mult_2_3; //Agrega a los multiplos de 2 los multiplos que son tanto de 2 como de 3.
echo "$i no es múltiplo de 2 ni de 3.\n";
$mult_3 = $mult_3+$mult_2_3 ; //Agrega a los multiplos de 3 los multiplos que son tanto de 2 como de 3.
}
echo "--------------------------------------------------<nowiki><br/></nowiki>" ;
$i += 1; //ojo: esta línea es muy importante!!!
echo "Entre 1 y 10 hay:<nowiki><br/></nowiki>";
}
echo " * '$mult_2_3' múltiplos de 2 y 3.<nowiki><br/></nowiki>";
echo "--------------------------------------------------<nowiki><br/></nowiki>\n" ;
"' números no son múltiplos ni de 2 ni de 3.<nowiki><br/></nowiki>";
echo "Entre 1 y 10 hay:<nowiki><br/></nowiki> \n";
?>
echo " * '$mult_2_3' múltiplos de 2 y 3.<nowiki><br/></nowiki>\n";
echo " * '$mult_2' múltiplos de 2.\n";
echo " * '$mult_3' múltiplos de 3.\n";
echo "Los restantes '" . (10 - $mult_2_3 - $mult_2 - $mult_3) .
"' números no son múltiplos ni de 2 ni de 3.<nowiki><br/></nowiki>\n";
?>
</source>
 
Salida:
 
Verifiquemos los múltiplos de 2 y 3 (del 1 al 10):
--------------------------------------------------
1 no es múltiplo de 2 ni de 3.
2 es múltiplo de 2.
3 es múltiplo de 3.
4 es múltiplo de 2.
5 no es múltiplo de 2 ni de 3.
6 es múltiplo de 2 y de 3.
7 no es múltiplo de 2 ni de 3.
8 es múltiplo de 2.
9 es múltiplo de 3.
10 es múltiplo de 2.
--------------------------------------------------
Entre 1 y 10 hay:
* '1' múltiplos de 2 y 3.
* '4' múltiplos de 2.
* '2' múltiplos de 3.
Los restantes '3' números no son múltiplos ni de 2 ni de 3.
 
Analicemos el ejemplo. La variable <tt>$i</tt> actua como un ''contador'' indicandonos cuantas iteraciones han sido llevadas a cabo, además de ser usado para evaluar la condición de bucle '''while'''. Las variables <tt>$mult_2_3</tt>, <tt>$mult_2</tt> y <tt>$mult_3</tt> son tambien contadores, pero estos nos indican, respectivamente, cuantos múltiplos de 2 y 3 (simultaneamente), solo de 2, y solo de 3 se han encontrado. Una vez completadas las 10 iteraciones se muestran los valores de estas tres variables y se calcula la cantidad de números que no son múltiplos ni de 2 ni de 3.
 
Línea 132 ⟶ 161:
n = 120
|
<source lang="php">
<?php
$n = 1;
$i = 50;
$mensaje = "No hay múltiplos de 11 entre " .
"50 y 100. (¿no hay?)";
while($i < 100){
if ($i % 11 == 0)
{
$mensaje = "El primer múltiplo de 11 " .
"entre 50 y 100 es: " . $i;
break;
}
$i += 1;
}
echo $mensaje;
?>
</source>
Salida:
El primer múltiplo de 11 entre 50 y 100 es: 55
 
|}
 
===Do...While===
Línea 141 ⟶ 188:
 
Sintáxis:
<source lang="php">
 
do {
sentencia;
sentencia;
.
.
.
sentencia;
} while (condición);
</source>
 
Todo lo explicado referente al bucle [[#While|while]] se aplica también al '''do...while''', sin embargo la principal diferencia con este es que el '''do...while''' siempre ejecuta al menos la primera iteración, mientras que en el '''while''' pudiera no ejecutar ninguna iteración, esto ocurre si la condición es falsa desde antes del inicio del bucle.
 
Línea 175 ⟶ 222:
 
Sintáxis:
<source lang="php">
 
for (inicialización; condición; actualización) sentencia;
</source>
 
'''Inicialización:''' Es una expresión que ejecuta una sola vez al inicio y predetermina el primer valor inicial, mas comúnmente asignado a una variable ejemplo:
<source lang="php">
Línea 196 ⟶ 243:
En resumen estas expresiones son la ''inicialización'', donde se dá el valor inicial a la variable de control del bucle; la ''condición'' que inicia cada iteración solo si es evaluada a verdadero; y el ''actualización o paso'' que incrementa o decrementa la variable de control al final de cada iteración para garantizar que la condición eventualmente evalúe a falso. veamos ahora como se utiliza:
<source lang="php">
<?php
for($i = 1; $i <= 5; $i += 1) echo $i . "<nowiki><br/></nowiki>\n";
?>
</source>
Salida
Línea 238 ⟶ 285:
Y continuemos ahora con un ejemplo de bucle '''for''' con múltiples sentencias:
<source lang="php">
<?php
for($i = 2; $i <= 10; $i += 2)
{
echo "......................<nowiki><br/></nowiki>\n";
//contando números pares
echo "i vale: " . $i . "<nowiki><br/></nowiki>\n";
//sus cuadrados
echo "i^2: " . $i*$i . "<nowiki><br/></nowiki>\n";
//y sus inversos
echo "1/i: " . 1/$i . "<nowiki><br/></nowiki>\n";
}
?>
</source>
y la salida