Hola amigos de Taringa!, hoy les traigo la sexta lección del curso de PHP, si bien la quinta lección fue publicada hace 15 días eso no significa que el curso haya sido abandonado así que empecemos.
Lección 5: estructuras de control de flujo, bucles condicionales.
Lo primeros que haremos es crear un nuevo archivo en nuestro servidor local al que llamaremos script5.php. Pero antes de empezar a trabajar debemos de familiarizarnos con algunos conceptos básicos.
¿Qué es una estructura de control de flujo?
Una estructura de control de flujo es un bloque de código que permite que tu programa toma un rumbo u otro dependiendo del tipo de dato que reciba del usuario, dicho de otra forma es un bloque de código que permite que tu programa se ejecute de forma dinámica y que no siempre llegue al mismo destino.
Explicado de esta forma parece confuso pero tu mente se despejará con los ejemplos.
En PHP existen dos tipos de estructuras de control de flujo: las condicionales y las iterativas.
Las condicionales ejecutan un bloque de código solo si una condición se cumple mientras que las iterativas ejecutan un bloque de código determinado número de veces.
Otra explicación que parece confusa pero que en la práctica no lo es…
Bien empecemos.
Bucles condicionales
Empecemos con los bucles condicionales, en PHP existen solo dos de estos y son “if” y “switch”.
La condicional if
La condicional if nos permite ejecutar un bloque de código si y solo si se cumple una condición, su estructura es la siguiente:
Como pueden ver primero usamos la palabra reservada “if”, seguido de paréntesis, en estos paréntesis debe ir una condición que se evaluará y si devuelve “TRUE” entonces se ejecutará lo que está dentro de las llaves.
Vamos a ilustrarnos con un ejemplo:
Como verán en este simple ejemplo si se cumple la condición de que 2 + 2 = 4 se imprimirá en pantalla el texto “Operación correcta”, si vamos al navegador podremos corroborarlo:
Ahora, si primero cambiamos la condición a 2 + 2 = 5 y luego nos vamos al navegador pasará lo siguiente, veamos:
Como ven tenemos una pantalla en blanco, ¿por qué? Simple, el código de entre las llaves se ejecutará si y solo la expresión entre paréntesis evalúa a TRUE, como en este caso la expresión es FALSE el código entre llaves no se ejecuta.
¡Pero esperen, eso no es todo! El condicional “if” no solo nos permite ejecutar un bloque de código cuando se cumpla la condición entre paréntesis, sino que mediante el uso de la palabra reservada “else” podemos ejecutar un código alternativo cuando la condición no se cumpla. Veamos:
Luego de la llave que cerraba el “if” he puesto la palabra reservada “else” y abierto y cerrado llaves, dentro de estas he puesto un código a ejecutar en caso de que la condición dentro de los paréntesis del “if” no se cumplan. Si ahora nos vamos al navegador veremos lo siguiente:
Como ven se ha impreso el mensaje que se encontraba entre las llaves del “else” y se ha ignorado el mensaje dentro de las llaves de el “if” ¿Genial, no? (Los que vieron Art Attack alguna vez recordarán esta frase).
Bueno, ¿Y si te digo que las posibilidades no se limitan a un “if” y un “else”? Pues exactamente eso, existen la combinación de las palabras reservadas “if” y “else” para formar “else if” que te permite evaluar otra condición en la misma estructura condicional a diferencia de “else” que no evalúa nada y se ejecuta de manera automática si “if” evalúa como FALSE.
Otra explicación que se lee compleja pero que en el código es bastante simple… Veamos:
El ejemplo es sencillo primero creamos una variable donde pondremos nuestra edad, en mi caso 21. Si la variable edad vale 0 el programa te dirá que cómo es eso de que tienes 0 años; si no se cumple pasara al “else if”, esta es la parte nueva aquí, se evaluará la expresión entre paréntesis y si se cumple se ejecutará el código contenido entre llaves, en este caso se evaluará si la variable edad es mayor o igual que 18 y de ser así se ejecutará el código entre llaves e imprimirá la cadena “Eres mayor de edad”; para cualquier otro caso (cuando no se cumplan ninguna de las dos condiciones que hemos especificado) se ejecutará el código contenido entre las llaves del “else”, en este caso siempre que la variable edad sea 17 o menos y no sea cero se ejecutará el código contenido entre las llaves del “else”.
Como en mi caso la variable edad equivale a 21 el navegador me muestra lo siguiente:
Debemos tener cuidado al escribir una estructura de control condicional y siempre tratar de cubrir el mayor número de posibilidades posibles ya que la mayoría de veces que usemos una estructura condicional en un proyecto real será para trabajar con datos que recibimos de los usuarios.
En nuestro ejemplo hemos cubierto la posibilidad de que edad valga 0 o más, ¿pero qué pasaría si edad tuviera un valor negativo? ¡Veamos!
Dice que eres menor de edad pero las edades válidas son siempre en números positivos, ¿qué ha pasado? Simple y llanamente hemos programado mal, nuestro script verifica si edad es 0, de no ser así verifica si edad es 18 o más y de no ser así ejecuta lo que esté dentro de “else”, como en nuestro caso edad no era 0 y tampoco mayor o igual a 18 se ha ejecutado el bloque de código contenido entre las llaves del “else”, por suerte podemos arreglar este pequeño desperfecto fácilmente. Veamos:
Arreglando la expresión dentro de los paréntesis del “if” nuestro script ahora está limpio de fallas, ahora siempre y cuando edad sea menor o igual a 0 recibiremos el siguiente mensaje en nuestro navegador:
¿Genial, no? ¡Pero aún podemos aplicar un poquito más de complejidad en nuestras estructuras condicionales if!
Una cosa genial que podemos hacer es usar un “if” dentro de otro “if”, en aplicaciones reales podrías tener un formulario que le pregunte al usuario si tiene tarjeta de crédito, si te responde que no pues no haces nada si te responde que si preguntas si Visa o Master Card, este es un simple ejemplo teórico y aburrido, veamos uno más divertido:
Hemos agregado una nueva variable a nuestro ejemplo y es tomar_arcohol, yo le he dado el valor FALSE ya que se corresponde con mi realidad, luego dentro del “else if” que teníamos antes y que evaluaba si edad es mayor o igual a 18 he introducido una estructura “if – else”, si tomar_arcohol es igual TRUE entonces imprimirá un mensaje, en cualquier otro caso imprimirá el mensaje dentro de las llaves del “else”.
En mi caso:
Estructura switch
La estructura condicional switch evalúa situaciones específicas y ejecuta un bloque de código u otro dependiendo del caso.
La estructura es la siguiente:
Lo que hace el bloque switch es evaluar la variable que se le pasa entre paréntesis, luego debemos crear un caso con la palabra reservada “case” para que en caso la variable tenga ese valor se ejecute el código que se encuentra seguido de los dos puntos, finalmente terminamos con la palabra “break” que lo que hace es romper la estructura de control para volver al flujo normal del programa, pero como la teoría siempre es aburrida pasemos a revisar un sencillo ejemplo:
Como vemos he comentado el ejemplo del “if” para que no estorbe. Aquí dentro de los paréntesis del “switch” tenemos la variable edad ya que es la que vamos a evaluar, en el primer caso tenemos que si vale 20 imprima “Tienes 20 años”, si vale 21 imprima “Tienes 21 años”, y en un caso “default” que sería equivalente a un “else” osea si no se cumple ninguno de los demás casos se imprimirá “No se que edad tienes”.
Si vamos al navegador:
Claro que podemos hacer cosas mucho más complejas que esas dentro de cada caso en un bloque switch pero por ahora van teniendo la idea.
Esto es todo por la clase de hoy, espero les haya gustado, practiquen y en la próxima veremos las estructuras de control iterativas. Si tienen alguna duda favor dejarme un comentario o mensaje directo, también me pueden contactar a mi cuenta de Twitter @maxalmonte14
Lecturas recomendadas:
Lección 5: estructuras de control de flujo, bucles condicionales.
Lo primeros que haremos es crear un nuevo archivo en nuestro servidor local al que llamaremos script5.php. Pero antes de empezar a trabajar debemos de familiarizarnos con algunos conceptos básicos.
¿Qué es una estructura de control de flujo?
Una estructura de control de flujo es un bloque de código que permite que tu programa toma un rumbo u otro dependiendo del tipo de dato que reciba del usuario, dicho de otra forma es un bloque de código que permite que tu programa se ejecute de forma dinámica y que no siempre llegue al mismo destino.
Explicado de esta forma parece confuso pero tu mente se despejará con los ejemplos.
En PHP existen dos tipos de estructuras de control de flujo: las condicionales y las iterativas.
Las condicionales ejecutan un bloque de código solo si una condición se cumple mientras que las iterativas ejecutan un bloque de código determinado número de veces.
Otra explicación que parece confusa pero que en la práctica no lo es…
Bien empecemos.
Bucles condicionales
Empecemos con los bucles condicionales, en PHP existen solo dos de estos y son “if” y “switch”.
La condicional if
La condicional if nos permite ejecutar un bloque de código si y solo si se cumple una condición, su estructura es la siguiente:
<?php
if(se cumple esto){
haz esto;
}
?>
Como pueden ver primero usamos la palabra reservada “if”, seguido de paréntesis, en estos paréntesis debe ir una condición que se evaluará y si devuelve “TRUE” entonces se ejecutará lo que está dentro de las llaves.
Vamos a ilustrarnos con un ejemplo:
Como verán en este simple ejemplo si se cumple la condición de que 2 + 2 = 4 se imprimirá en pantalla el texto “Operación correcta”, si vamos al navegador podremos corroborarlo:
Ahora, si primero cambiamos la condición a 2 + 2 = 5 y luego nos vamos al navegador pasará lo siguiente, veamos:
Como ven tenemos una pantalla en blanco, ¿por qué? Simple, el código de entre las llaves se ejecutará si y solo la expresión entre paréntesis evalúa a TRUE, como en este caso la expresión es FALSE el código entre llaves no se ejecuta.
¡Pero esperen, eso no es todo! El condicional “if” no solo nos permite ejecutar un bloque de código cuando se cumpla la condición entre paréntesis, sino que mediante el uso de la palabra reservada “else” podemos ejecutar un código alternativo cuando la condición no se cumpla. Veamos:
Luego de la llave que cerraba el “if” he puesto la palabra reservada “else” y abierto y cerrado llaves, dentro de estas he puesto un código a ejecutar en caso de que la condición dentro de los paréntesis del “if” no se cumplan. Si ahora nos vamos al navegador veremos lo siguiente:
Como ven se ha impreso el mensaje que se encontraba entre las llaves del “else” y se ha ignorado el mensaje dentro de las llaves de el “if” ¿Genial, no? (Los que vieron Art Attack alguna vez recordarán esta frase).
Bueno, ¿Y si te digo que las posibilidades no se limitan a un “if” y un “else”? Pues exactamente eso, existen la combinación de las palabras reservadas “if” y “else” para formar “else if” que te permite evaluar otra condición en la misma estructura condicional a diferencia de “else” que no evalúa nada y se ejecuta de manera automática si “if” evalúa como FALSE.
Otra explicación que se lee compleja pero que en el código es bastante simple… Veamos:
El ejemplo es sencillo primero creamos una variable donde pondremos nuestra edad, en mi caso 21. Si la variable edad vale 0 el programa te dirá que cómo es eso de que tienes 0 años; si no se cumple pasara al “else if”, esta es la parte nueva aquí, se evaluará la expresión entre paréntesis y si se cumple se ejecutará el código contenido entre llaves, en este caso se evaluará si la variable edad es mayor o igual que 18 y de ser así se ejecutará el código entre llaves e imprimirá la cadena “Eres mayor de edad”; para cualquier otro caso (cuando no se cumplan ninguna de las dos condiciones que hemos especificado) se ejecutará el código contenido entre las llaves del “else”, en este caso siempre que la variable edad sea 17 o menos y no sea cero se ejecutará el código contenido entre las llaves del “else”.
Como en mi caso la variable edad equivale a 21 el navegador me muestra lo siguiente:
Debemos tener cuidado al escribir una estructura de control condicional y siempre tratar de cubrir el mayor número de posibilidades posibles ya que la mayoría de veces que usemos una estructura condicional en un proyecto real será para trabajar con datos que recibimos de los usuarios.
En nuestro ejemplo hemos cubierto la posibilidad de que edad valga 0 o más, ¿pero qué pasaría si edad tuviera un valor negativo? ¡Veamos!
Dice que eres menor de edad pero las edades válidas son siempre en números positivos, ¿qué ha pasado? Simple y llanamente hemos programado mal, nuestro script verifica si edad es 0, de no ser así verifica si edad es 18 o más y de no ser así ejecuta lo que esté dentro de “else”, como en nuestro caso edad no era 0 y tampoco mayor o igual a 18 se ha ejecutado el bloque de código contenido entre las llaves del “else”, por suerte podemos arreglar este pequeño desperfecto fácilmente. Veamos:
Arreglando la expresión dentro de los paréntesis del “if” nuestro script ahora está limpio de fallas, ahora siempre y cuando edad sea menor o igual a 0 recibiremos el siguiente mensaje en nuestro navegador:
¿Genial, no? ¡Pero aún podemos aplicar un poquito más de complejidad en nuestras estructuras condicionales if!
Una cosa genial que podemos hacer es usar un “if” dentro de otro “if”, en aplicaciones reales podrías tener un formulario que le pregunte al usuario si tiene tarjeta de crédito, si te responde que no pues no haces nada si te responde que si preguntas si Visa o Master Card, este es un simple ejemplo teórico y aburrido, veamos uno más divertido:
Hemos agregado una nueva variable a nuestro ejemplo y es tomar_arcohol, yo le he dado el valor FALSE ya que se corresponde con mi realidad, luego dentro del “else if” que teníamos antes y que evaluaba si edad es mayor o igual a 18 he introducido una estructura “if – else”, si tomar_arcohol es igual TRUE entonces imprimirá un mensaje, en cualquier otro caso imprimirá el mensaje dentro de las llaves del “else”.
En mi caso:
Estructura switch
La estructura condicional switch evalúa situaciones específicas y ejecuta un bloque de código u otro dependiendo del caso.
La estructura es la siguiente:
<?php
switch ($variable) {
case 'valor':
código a ejecutar;
break;
?>
Lo que hace el bloque switch es evaluar la variable que se le pasa entre paréntesis, luego debemos crear un caso con la palabra reservada “case” para que en caso la variable tenga ese valor se ejecute el código que se encuentra seguido de los dos puntos, finalmente terminamos con la palabra “break” que lo que hace es romper la estructura de control para volver al flujo normal del programa, pero como la teoría siempre es aburrida pasemos a revisar un sencillo ejemplo:
Como vemos he comentado el ejemplo del “if” para que no estorbe. Aquí dentro de los paréntesis del “switch” tenemos la variable edad ya que es la que vamos a evaluar, en el primer caso tenemos que si vale 20 imprima “Tienes 20 años”, si vale 21 imprima “Tienes 21 años”, y en un caso “default” que sería equivalente a un “else” osea si no se cumple ninguno de los demás casos se imprimirá “No se que edad tienes”.
Si vamos al navegador:
Claro que podemos hacer cosas mucho más complejas que esas dentro de cada caso en un bloque switch pero por ahora van teniendo la idea.
Esto es todo por la clase de hoy, espero les haya gustado, practiquen y en la próxima veremos las estructuras de control iterativas. Si tienen alguna duda favor dejarme un comentario o mensaje directo, también me pueden contactar a mi cuenta de Twitter @maxalmonte14
Lecturas recomendadas: