Está en la página 1de 3

:: LAD - Linux a Distancia :: file:///I:/CURSO PHP/CLASE 002.

htm

Estructuras de control de flujo


Hasta este punto solo se podían ejecutar una sentencia debajo de la otra hasta que se
completará el programa. Sin embargo, existen algunas estructuras que permiten alterar este
comportamiento y obtener resultados más interesantes.

Estructura de bifurcación
La primera de las estructuras, el if, es la que me permite tomar una decisión sobre si
ejecutar o no un bloque de código dependiendo de una condición:

if(condición) {
sentencia1;
sentencia2;
sentencia3;
...
sentenciaN;
}

Si se cumple condición entonces se ejecutarán todas las sentencias que se encuentren entre
las llaves (que son obligatorias). En caso de que no se cumpla, entonces se seguiran
ejecutando las sentencias que se encuentren por debajo de la última llave del if.
Una condición puede solamente ser Verdadera, se cumple, o Falsa, no se cumple (Ver
operadores de comparación).
Sin embargo, también se puede obligar a ejecutar un bloque de código si no se cumple la
condición:

if(condición) {
sentencia1;
sentencia2;
...
sentenciaN;
} else {
sentenciaN+1;
sentenciaN+2;
...
sentenciaM;
}

En este caso, si se cumple la condición se ejecutan las sentencias que van desde el 1 hasta
N, y si no se cumple, las que van desde N+1 hasta M. Para ello se utilizó la palabra else
(sino) que nos permite ejecutar algo si la condición es falsa. Siempre se ejecutará un bloque u
otro pero nunca ambos.

Cuando se anidan un if, o sea, poner muchos if uno dentro de otro, el código se hace
bastante ilegible. Para ello existe otra palabra reservada (o conjunción), elseif, que permite
juntar un else con un if y así dejar el código más ordenado:

if(condición) {
sentencia1;
sentencia2;
...
sentenciaN;
} elseif(condicion2) {
sentenciaN+1;
sentenciaN+2;
...
sentenciaM;
} else {
sentenciaM+1;
sentenciaM+2;
...
sentenciaJ;
}

En este caso, solo se ejecutará uno de los tres bloques de código (1 a N, N+1 a M o M+1 a J).
Ejemplos
Ejemplo 1: Leer una temperatura desde el usuario y decir "Hace Calor" si la temperatura es
mayor que 30 o "Hace Frio" en otro caso.

echo "Ingrese la temperatura actual: ";


$temperatura = fgets(STDIN);

if($temperatura > 30) {


echo "Hace calor\n";
} else {
echo "Hace frio\n";
}

Ejemplo 2: Leer una temperatura desde el usuario y decir "Hace Calor" si la temperatura es
mayor que 30, si esta entre 20 y 30 mostrar "Esta perfecto" o "Hace Frio" en otro caso.

1 de 3 29/07/2011 03:35 p.m.


:: LAD - Linux a Distancia :: file:///I:/CURSO PHP/CLASE 002.htm

mayor que 30, si esta entre 20 y 30 mostrar "Esta perfecto" o "Hace Frio" en otro caso.

echo "Ingrese la temperatura actual: ";


$temperatura = fgets(STDIN);

if($temperatura > 30) {


echo "Hace calor\n";
} elseif ($temperatura > 20) {
echo "Esta perfecto\n";
} else {
echo "Hace frio\n";
}

Estructura while
Esta estructura sirve para iterar sobre una porción de código mientras se cumpla una
condición dada:

while(condición) {
sentencia1;
sentencia2;
...
sentenciaN;
}

Las sentencias 1 a la N se ejecutarán mientras condición tenga un valor verdadero. La


condición se controla cada vez que se termine de ejecutar la sentenciaN y allí determinará si
debe iterar de nuevo o no. Por lo tanto un ciclo while puede ejecutarse desde 0 (la condición
nunca fue verdadera) hasta infinito.
Ejemplos
Ejemplo 1: Mostrar la tabla de multiplicar del 7.

$x = 1;
while ($x <= 10) {
echo "$x por 7 = ", $x * 7, "\n";
$x = $x + 1;
}

Ejemplo 2: Leer varias líneas por teclado hasta que se ingrese una línea que contenga
solamente un punto (.). Cada línea leída se debe repetir en pantalla, pero enumerandolas
desde 1 en adelante.

$ingreso = fgets(STDIN);
$ingreso = chop($ingreso);
$x = 1;
while($ingreso != '.') {
echo "$x. $ingreso\n";
$x = $x + 1;
$ingreso = fgets(STDIN);
$ingreso = chop($ingreso);
}

Estructura foreach
Esta estructura se utiliza para recorrer un arreglo.
Existen dos estilos de foreach. En el primero, se irán tomando de a uno los elementos del
arreglo indicado, y se irán colocando en la variable indicada luego del as.
La sintaxis sería:

foreach($arreglo as $valor) {
sentencia1;
sentencia2;
...
sentenciaN;
}

Aquí se ejecutarán las sentencias 1 a la N tantas veces como elementos haya en el arreglo.
Para cada iteración existirá una variable llamada $valor que tendrá un valor de la lista.

La segunda forma nos permite no solo obtener el valor, sino también la clave asociada con
dicho valor.
Para ello utilizaremos la sintaxis:

foreach($arreglo as $clave => $valor) {


sentencia1;
sentencia2;

2 de 3 29/07/2011 03:35 p.m.


:: LAD - Linux a Distancia :: file:///I:/CURSO PHP/CLASE 002.htm

sentencia2;
...
sentenciaN;
}

De esta forma para cada ciclo se dispondrá de una variable $clave que tiene la clave del
elemento que se este procesando. Además, en $valor estará el contenido del elemento
actual. Por lo tanto, al saber la clave, es posible modificar el arreglo original.
Ejemplos
Ejemplo 1: Mostrar todos los elementos de una lista.

$lista = array("Hola", 3, 5, "Mundo");


foreach($lista as $valor) {
echo "$valor\n";
}

Ejemplo 2: Desde una lista con números calcular la suma de todos ellos.

$lista = array(2000, 700, 900, 1500);


$total = 0;
foreach($lista as $valor) {
$total = $total + $valor;
}
echo "La suma es $total\n";

Ejercicios
1. ¿Cual es la diferencia entre un if y un while?
2. ¿Que es más práctico para recorrer una lista? ¿un while o un foreach?
3. Hacer un programa que dada una lista con numeros, los muestre y diga si cada número
es PAR o IMPAR.
NOTA: un número es PAR si al dividirlo por 2 el modulo da 0 ($numero % 2 == 0)
4. Hacer un programa que dada una lista con numeros, calcular la sumatoria y el
promedio de todos ellos.
5. Hacer un programa que muestre las tablas de multiplicar del 1 al 10 (usando
solamente dos ciclos while)

3 de 3 29/07/2011 03:35 p.m.

También podría gustarte