Secuencia, selección e iteración en PHP


Lección 5 / 24

Secuencia, selección e iteración en PHP

Php Desarrollador Php

En este punto, seguramente ya estarás muy entusiasmado con las nociones que has aprendido, ¡y no tendrás ganas de ponerte serio!
¿Qué dices? ¿Continuamos?
Veamos, en esta guía, qué son las llamadas estructuras de control: secuencia, selección e iteración.

Para ayudarnos a introducirlos está el famosísimo Teorema de Böhm-Jacopini (Corrado Böhm y Giuseppe Jacopini).
El Teorema de Böhm-Jacopini, de hecho, establece que cualquier algoritmo puede implementarse en la fase de programación utilizando solo tres estructuras, llamadas estructuras de control:

  • la secuencia
  • la selección 
  • la iteración (o ciclo)

para ser aplicado recursivamente a la composición de instrucciones elementales.

Analicemos ahora las estructuras de control una por una.

SECUENCIA

Tenemos, en nuestro código, esta situación: 

<?php
   $num1=2;
   $num2=5;
   echo $num1+$num2;
?>

De lo que resultará:

La secuencia comienza de arriba hacia abajo y ejecuta las sentencias de una en una.
Prácticamente:

  • el primer paso asigna el valor 2 a la variable $num1
  • el primer paso asigna el valor 5 a la variable $num2
  • el tercer paso ve el comando echo y muestra la suma de las dos variables

Como puedes ver en la descripción que acabamos de hacer, todo sucede en secuencia, de arriba a abajo.

SELECCIÓN (condición)

En la selección, cuando ocurra una condición (interna a una instrucción) se ejecutarán líneas de código.
Las instrucciones pueden ser:

  • if 
  • else
  • elseif
  • switch

IF

Cuando encuentra la declaración IF, el programa ejecuta el código dentro de su cuerpo solo si se verifica la condición.

<?php
   $is_student = true;
   if($is_student == true){
    echo "Si eres un estudiante!";
   }
?>

De lo que resultará:

Por secuencia se le asignará el valor verdadero a la variable $ is_student, luego se encontrará la instrucción if con la condición dentro de ella verdadera, y por lo tanto se ejecutará el código.
Veamos el mismo ejemplo escrito, sin embargo, de una manera ligeramente diferente:

<?php
   $is_student = true;
   if($is_student){
    echo "Si eres un estudiante!";
  }
?>

También resultará:

¿Te preguntas por qué? Esto se debe a que la variable $ is_student es un valor verdadero, por lo que podemos omitir verificar que sea == verdadero.

IF/ELSE

Con este tipo de instrucción, el programa ejecutará el código en el cuerpo del if solo si la condición entre paréntesis es verdadera. De lo contrario, ejecutará el código presente en el cuerpo del else. 

<?php
   $is_student = true;
   if($is_student == true){
     echo "Si eres un estudiante!";
   }else{
     echo "No eres un estudiante!";
   }
?>

Resultará:

Por secuencia, se asignará el valor false a la variable $ is_student, luego se encontrará la instrucción if con la condición dentro de ella, que sin embargo será false (por lo tanto, un dato falso). Por lo tanto, no se ejecutará el código dentro del cuerpo del if sino el código presente en el cuerpo del else.

IF/ELSEIF/ELSE

De manera similar a lo anterior, con estas instrucciones el programa ejecuta el código en el cuerpo del si solo si la condición de verdad entre paréntesis es verdadera.
Si no, analiza la condición entre paréntesis del elseif; si esto se verifica lo ejecutará, de lo contrario ejecutará el código presente en el cuerpo del else.

<?php
   $color = 'red'; 
   if($color == 'red'){
     echo "El color es rojo!";
   }elseif($color == 'blue'){
     echo "El color es azul!";
   }
   else{
     echo "El color no es ni rojo ni azul!";
   } 
?>

Resultará:

Por secuencia, el valor 'rojo' se asignará a la variable de color $, después de lo cual se encontrará la instrucción if con la condición interna que es verdadera, por lo tanto, veraz. Entonces, gracias a php echo, el programa imprimirá en la consola que el color es rojo.

Si el check en el primero hubiera sido falso, la secuencia habría seguido cumpliendo con la siguiente declaración elsif y, por lo tanto, al verificar si la condición era verdadera, en caso de ser verdadera, se habría impreso "el color es azul" en la terminal. Si no se hubiera dado ninguna de las dos condiciones en el if y en el else-if, se habría ejecutado el último eco de php que nos habría impreso en la terminal "el color no es ni rojo ni azul". Muy sencillo, ¿verdad?
 

SWITCH

¿Qué pasa si aumenta el número de elseifs? ¡Sin miedo! Afortunadamente, no tendríamos que escribirlos todos, creando así un código poco claro e ilegible: usaríamos el switch case en su lugar.
El switch no hace más que evaluar el valor de una variable y elegir un camino a seguir teniendo en cuenta este último. Si no encuentra una coincidencia, seguirá una ruta definida por defecto (predeterminado).
Podemos imaginar el comportamiento del interruptor como si fuera una habitación con tres puertas de colores. Uno amarillo, uno verde y uno azul. A la entrada nos dan una nota correspondiente a uno de estos tres colores y nosotros, por tanto, solo podemos abrir la que tiene el color correspondiente. La nota es la variable a evaluar, mientras que las puertas son las piezas de código a ejecutar.

Veamos un ejemplo: 

<?php

$color="yellow";

//En los corchetes ponemos la variable que queremos evaluar

switch($color){
    case $color == "green":

        echo "Has entrado en la puerta verde!";
    break;

    case $color == "blue":

        echo "Has entrado en la puerta azul!";
        break;

    case $color == "yellow":

        echo "Has entrado en la puerta amarilla!";
        break;  

    default: // gestiona todos los otros casos en los que no he pensado

        echo "No hay puertas del color elegido!";
        break;
}

   //Output
   //Has entrado en la puerta amarilla!
?>

Como podemos ver en el ejemplo, todos los "casos" y el valor predeterminado reemplazan todos los if/else/elseif. El break bloquea el código, que -recordemos- sigue una secuencia de ejecución de arriba a abajo, y se ejecutará por defecto si $color no coincide con ninguno de los valores enumerados en el caso.

ITERACIÓN

Las iteraciones (o ciclos) son bloques de código que se repiten hasta que cierta condición de verdad se vuelve falsa, pero también para cada elemento de una estructura de datos compleja (siempre, sin embargo, siempre que la condición resulte ser verdadera (truthy).
Los ciclos son:

  • for
  • foreach
  • while
  • do-while

Analicemos uno a la vez

Ciclo FOR

Un ciclo for repite el código encerrado dentro de su cuerpo hasta que una condición en particular se vuelve falsa (falsa). Esta condición será sólo una comprobación del número de veces que se ha realizado el ciclo.
Eso es inventado:

  • un punto de entrada de la lógica del ciclo que corresponderá a un índice inicializado a 0 (obviamente dependiendo del uso puede tener también valores distintos de cero)
  • la condición de control del número de ciclos realizados
  • el aumento/disminución del índice

Veamos un ejemplo de ciclo for: 

<?php
   for ($i=0; $i < 5; $i++) {
   echo $i."\n";
}
?>

Resultará:

Como puede ver, este ciclo solo nos mostrará todos los números del 0 al 4, ya que, en el último ciclo, verificará la condición con el índice igual a 5: sin embargo, 5 no es menor que 5 y, por lo tanto, nuestro bucle dejará de mostrarnos el valor de $ i igual a 4.

Ciclo FOREACH

Se utiliza un ciclo foreach para seleccionar y manipular todos los elementos de un array, pero también de una colección (colección de datos)
Consta de dos partes principales:

  • El array o la colección a ciclo
  • Una variable de apoyo (imagínala como un contenedor dentro del cual se añadirá el dato que se ha cogido de la estructura de datos) 

La diferencia clave entre un ciclo for y un foreach es que el ciclo se detendrá cuando finalice toda la estructura de datos. No podemos controlar ciclos, como hicimos con la condición de ciclo for.

<?php
   $elements=['ciao','sono','il','dato'];
   foreach ($elements as $element) {
     echo $element."\n";
}
?>

Resultará:

Como podemos ver, el programa imprimirá en output todos los datos del array. Podemos usar php echo, en este caso, porque cada dato es un dato simple. Si, por el contrario, estuviéramos capturando datos complejos del array, habríamos tenido que usar el php print_r().

Ciclo While

Un ciclo while ejecuta la pieza de código dentro de él solo y solo si en la primera evaluación de su condición, será veraz. Todas las ejecuciones posteriores del código se llevarán a cabo solo y solo si la condición sigue siendo verdadera.

<?php
   $num=0;
   while($num < 5){
     echo $num."\n";
     $num++;
}
?>

Resultará:

Observa: ejecutando el código de arriba a abajo (secuencia) ¿qué sucede? El programa inicializa una variable llamada $ num a cero, encuentra la declaración del ciclo while y evalúa su condición. En efecto, 0 es menor que 5 y por tanto su condición será verdadera; en consecuencia, entrará en el cuerpo del ciclo while y ejecutará el php echo, mostrándonos el valor de $num que resultará ser 0.

Luego encontrará la declaración para incrementar la variable $ num y luego volverá a verificar la condición. Ahora $num es 1; 1 es menor que 5, por lo que su condición seguirá siendo verdadera y el fragmento de código se repetirá hasta que $num se convierta en 5, que no es menor que 5, entonces el ciclo se detendrá.
 

Ciclo DO-WHILE

El bucle do-while, a diferencia del bucle while, ejecuta el fragmento de código que contiene al menos una vez y sin evaluar la condición antes de poder ejecutar el código que contiene. Para ejecuciones posteriores del código, se evaluará la condición que debe ser verdadera y se repetirá el código dentro del cuerpo del do.

<?php
   $num=0;
   do{
     echo $num."\n";
     $num++;
   }while($num < 5);
?>

Resultará:

Como arriba: ejecutando el código de arriba a abajo (secuencia), veamos qué sucede. El programa inicializa una variable llamada $ num a cero, encuentra la declaración del bucle do-while e ingresa al cuerpo del do mediante la ejecución del código.

Luego php echo, mostrándonos el valor de $ num (0 en este paso); luego cumple con el incremento de la variable y suma 1 a $num. Ahora evalúe la condición, 1 es en realidad menor que 5, por lo que se verificará la condición y la pieza de código se repetirá hasta que $ num se convierta en 5. Finalmente, verifica que 5 no sea menor que 5 y, por lo tanto, bloquea el ciclo.

Siguiente

6

© 2022 Aulab. Todos los derechos reservados • P.IVA: IT07647440721 • Política de privacidad