Diferencia entre revisiones de «Plantilla:ManuelRomero/PHP/EstructurasControlRepetitivo»

De WikiEducator
Saltar a: navegación, buscar
(Página creada con «===Iteración while=== *Como en todos los bucles debemos siempre tener encuenta #inicializar la variable de control #actualizarla correctamente dentro del bucle #realizar d...»)
 
 
(6 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
 +
===Introducción===
 +
En este tema aprenderemos tres estructuras de control que permiten repetir bloques de código:
 +
#'''while''': Repite un bloque mientras una condición sea verdadera.
 +
#'''do...while''': Similar al ''while'', pero asegura que el bloque se ejecute al menos una vez.
 +
#'''for''': Útil cuando conocemos de antemano el número de iteraciones necesarias.
 +
 +
*Empecemos por  la estructura '''while''', explicando su funcionamiento básico y resolviendo ejercicios prácticos.
 +
 
===Iteración while===
 
===Iteración while===
*Como en todos los bucles debemos siempre tener encuenta
+
Un bucle '''while''' repite un bloque de código mientras una condición sea verdadera. Para evitar errores, debemos prestar atención a tres aspectos fundamentales:
#inicializar la variable de control
+
# '''Inicializar la variable de control''' antes de entrar en el bucle.
#actualizarla correctamente dentro del bucle
+
# '''Actualizar la variable de control''' dentro del bucle para evitar bucles infinitos.
#realizar de forma correcta la evaluación de condición (< o <=), (> o >=), ...
+
# '''Realizar correctamente la evaluación de la condición''' utilizando operadores de comparación (''<'', ''<= '', ''>'', ''>= '', ...).
 +
;Sintaxis
 +
<source lang=php>
 +
while (expresion_booleana){
 +
  //instrucciones del bloque
 +
}
 +
</source>
 +
{{MRM_Puntos clave|title=estructura repetitiva|
 +
;Estructura repetitiva:
 +
<source lang=php>
 +
//Inicializamos variables de la condición
 +
$contador = 0;
 +
 
 +
//Establecemos la condición cuidando mucho
 +
//los extremos (< o <= ...)
 +
while ($contador < 10){
 +
 
 +
    //Actualizamos la variable dentro del bucle
 +
    $contador ++ //comentar este operador
 +
 
 +
    //Realizamos las acciones
 +
    echo "Estoy en la interación $contador<br />"
 +
 
 +
}
 +
</source>
 +
}}
 +
 
 
{{MRM_Actividad|Title=Uso de while|
 
{{MRM_Actividad|Title=Uso de while|
*Mostrar la suma de los primeros 100 números naturales
+
* Mostrar la suma de los primeros 25 números naturales.
*Se quiere ver el número de iteración y la suma hasta ese momento (Es decir queremos ver cien líneas)
+
* Se quiere ver el número de iteración y la suma hasta ese momento (es decir, queremos ver cien líneas).
*Cada iteración que aparezca en numeración ordinal en símbolo 1ª , 2ª, ...
+
* Cada iteración debe aparecer en numeración ordinal con el símbolo ª (por ejemplo, 1ª, 2ª, ...).
 +
* Al final mostraremos el total
  
 
{{Plegable|hide|Posible solución|
 
{{Plegable|hide|Posible solución|
 
 
<source lang=php>
 
<source lang=php>
    <?php
+
<?php
    $i = 0;
+
//Inicializamos variables
    while ($i < 100) {
+
//establecemos el bucle con la condición de iteración
        $suma+=$i;
+
while ($i < 25) {
        $i++;
+
    //Actualizamos las variables
        echo "iteracción  {$i}ª Suma $suma<br />";
+
    //Realizamos la suma y la vamos acumulando
    }
+
    //mostramos el mensaje
    ?>
+
}
 +
//Mostramos la suma total
 +
?>
 
</source>
 
</source>
}}
 
 
}}
 
}}
 +
 +
  
  
Línea 52: Línea 89:
  
  
$n1 = 72;
 
$n2 = 15;
 
$n3 = $n1&$n2;
 
echo "<h1> $n1 or a nivel de bits $n2 es $n3</h1>";
 
printf ("<h1> %b or %b es %b</h1>", $n1, $n2, $n3);
 
 
do{
 
   
 
}while (                      )
 
$n1 = rand(1, 50);
 
 
do {
 
    $n2 = rand(1, 50);
 
} while ($n2 == $n1);
 
 
 
do {
 
    $n3 = rand(1, 50);
 
} while (($n3 == $n1) OR ($n3 == $n2));
 
 
do {
 
    $n4 = rand(1, 50);
 
} while (($n4 == $n1) OR ($n4 == $n2)OR ($n4 == $n3));
 
 
do {
 
    $n5 = rand(1, 50);
 
} while ($n5 == $n1 || $n5 == $n2 || $n5 == $n3 || $n5 == $n4);
 
 
echo "<h1>Los números generados $n1-$n2-$n3-$n4-$n5</h1>";
 
 
</source>
 
</source>
  
Línea 103: Línea 111:
 
<source lang=php>
 
<source lang=php>
 
<?php
 
<?php
//Parte fija
 
 
$password = "";
 
for ($n = 0; $n < 2; $n++) {
 
    $rango = rand(0,2);
 
    $caracter = match ($rango) {
 
        0 => rand(33, ord('0')),
 
        1 => rand(ord('9'), ord('A')),
 
        2 => rand(ord('Z'), 126),
 
    };
 
    $password .= chr($caracter);
 
}
 
 
for ($n = 0; $n < 6; $n++) {
 
    $caracter = rand(34, 126);
 
    $password .= chr($caracter);
 
}
 
echo "<h1>$password</h1>";
 
$password = str_shuffle($password);
 
 
echo "<h1>$password</h1>";
 
//Parte común
 
  
  

Última revisión de 18:34 22 nov 2024

Introducción

En este tema aprenderemos tres estructuras de control que permiten repetir bloques de código:

  1. while: Repite un bloque mientras una condición sea verdadera.
  2. do...while: Similar al while, pero asegura que el bloque se ejecute al menos una vez.
  3. for: Útil cuando conocemos de antemano el número de iteraciones necesarias.
  • Empecemos por la estructura while, explicando su funcionamiento básico y resolviendo ejercicios prácticos.

Iteración while

Un bucle while repite un bloque de código mientras una condición sea verdadera. Para evitar errores, debemos prestar atención a tres aspectos fundamentales:

  1. Inicializar la variable de control antes de entrar en el bucle.
  2. Actualizar la variable de control dentro del bucle para evitar bucles infinitos.
  3. Realizar correctamente la evaluación de la condición utilizando operadores de comparación (<, <= , >, >= , ...).
Sintaxis
 while (expresion_booleana){
   //instrucciones del bloque
 }


Icon key points.gif

Puntos clave

Estructura repetitiva
//Inicializamos variables de la condición
$contador = 0;
 
//Establecemos la condición cuidando mucho
//los extremos (< o <= ...)
while ($contador < 10){
 
     //Actualizamos la variable dentro del bucle
     $contador ++ //comentar este operador
 
     //Realizamos las acciones 
     echo "Estoy en la interación $contador<br />"
 
}




Icon activity.jpg
Uso de while
  • Mostrar la suma de los primeros 25 números naturales.
  • Se quiere ver el número de iteración y la suma hasta ese momento (es decir, queremos ver cien líneas).
  • Cada iteración debe aparecer en numeración ordinal con el símbolo ª (por ejemplo, 1ª, 2ª, ...).
  • Al final mostraremos el total




Icon activity.jpg
Uso de while
  • Generamos un número aleatorio entre 1 y 15.
  • Mostramos un mensaje con el número hasta que el número que salga sea el 13.
  • Podría ser que el número nos salga el primero en cuyo caso no habrá ningún mensaje
  • Mostramos cuantos números se han generado y la suma de los mismos








Iteracción do-while

  • Este tipo de bucle donde seguro que al menos se ejecuta un iteracción
  • Respecto al anterior nos ahorra una comparación.


Icon activity.jpg
Usando do-while
  • Modifica el ejercicio anterior usando un do-wile
  • En este caso el número 13 también queremos que forme parte de la lista y se incluya tanto en la suma como en la contabilización,





Icon activity.jpg
Usando do-while
Programa para rellenar una bonoloto
  • Generamos 5 valores aleatorios de 1 a 50 diferentes
  • Los motramos por pantalla





Icon activity.jpg
Generar tabla ascii
Programa para generar una tabla ascii con caracteres desde el 0 hasta el 127
Intentamos generar la tabla html
 





Icon activity.jpg
Generar una password
Programa para generar una passoword
  • Generamos una password con caracteres ascii (ver tabla anterior
  • La password debe de tener 7 caracteres
  • Los caracteres se puede repetir
  • Al menos 2 de ellos han de ser no alfanuméricos




 

}}

Iteración for

  • Es un bucle de tipo contador
for (expresion_inicial; condicion;expresion_actualizar){
sentencias;
}


Estructura for
  • tiene tres partes
expresion_inicial
Se ejecuta una sola vez al comienzo del bucle. se usa para inicializar variables
condición
Es una expresión booleana que se evalúa en cada interacción
Si da un valor false, ya no se ejecuta ninguna vez
Si no hay expresión se toma como true
En este caso para que el bucle no sea infinito deberá llevar algún break (instrucción de terminación de bloque) en algún momento
Incremento de la expresión inicial
Marca el paso o cómo se va modificando la variable de control en cada iteración


Estructura for
condición
    <?php
    for ($a=0; ;$a++){
        echo "$a*$a=".$a*$a."<br>";
    }
    ?>
  • Es como si dentro del bucle establecemos la condición de terminación usando la instrucción de terminación de bloque break
  • Observa el siguiente código forzado y compáralo con el anterior (mira que la sección de condición está vacía)
    <?php
    for ($a=0; ;$a++){
        echo "$a*$a=".$a*$a."<br>";
        if ($a==10)
            break;
    }
    ?>


Estructura for
expresion_actualizar
Esta expresión actualiza el valor de alguna/as variables
Se ejecuta en cada interactivo
  • El ejemplo anterior
    <?php
    for ($a=0;$a<10 ;$a++){
        echo "$a*$a=".($a*$a)."<br>";
    }
    ?>