Diferencia entre revisiones de «Plantilla:PHP/EstructurasControl»

De WikiEducator
Saltar a: navegación, buscar
(Operadores ternario)
(Operadores ternario)
Línea 91: Línea 91:
  
 
{{Plegable|hide|Programa par o impar|
 
{{Plegable|hide|Programa par o impar|
 +
<source lang=php>
 
<?php
 
<?php
 
   $num= rand(1,100);
 
   $num= rand(1,100);
 
   echo ($num%2==0)?  "$num es par" :  "$num es impar";
 
   echo ($num%2==0)?  "$num es par" :  "$num es impar";
 
?>
 
?>
 
+
</source>
  
  

Revisión de 21:28 2 oct 2020

Estructuras de control

Icon objectives.jpg
Objetivo
Determinan el flujo de ejecución de un programa
  • Tenemos tres estructuras de control
  • Veremos cómo se implementan en PHP

Estructuras de control 1

A continuación veremos las estructuras de control Son de tres tipos

  1. Selección
  2. Iteracción
  3. Secuenciales
  • Para construirlas necesitamos operadores

Selección if

  • Sentencia que evlúa una expresión booleana y ejecuta o no en función de que dicha expresión sea true o false
 if (condicion)
     Sentencia 1;

 if  (condicion){
     Sentencia_1;
     Sentencia_2;
 }
Sentencias de control

if (expresion)

    Sentencia_1;

else

     Sentencia_2;

</source>

  • También existe la opción elseif donde aportaremos una condición que se ha de cumplir para que se ejecuten las sentencias que a continuación acompañan.
Estructura de control
if (expresion){
   sentencias;
}
elseif (expresion){
   sentencias;
}
else{
   sentencias;
}
  • Alternativamente puede usarse esta sintaxis que es usada cuando se quiere intercalar condigo html fuera del php.
  • También se puede usar la sintaxis vista anteriormente, pero parece que esta quede más compacta.
if (condicion): 
   Sentencia 1;
 endif;
Ahora lo vemos con código html
<?php if (true): ?>
 
    <h1>Esta frase seguro que aparece ahor</h1>
    <!--escribirmos código html -->
<?php else: ?>
    <h1>Aquí escribiré poco ya que no va a aparecer nada</h1>
    <!--escribimos código html -->
<?php endif ?>

Operadores ternario

  • Es una forma más compacta de un if else con una única instrucción.
Expresión? SentenciaOKExpresion : SentenciaNoOkExpresion


Icon activity.jpg
Actividad
Programa que me dé si un número aleatorio es par o impar!



Seleccion switch

  • Este es un selector múltiple
  • La sentencia case puede albergar cualquier valor de un tipo simple, no está limitado a enteros como en otros lenguajes
  • Estructura indicada cuanto tengamos más de dos casos ante una variable o situación que evaluemos excluyentes entre sí
Switch
<?php
switch ($nombre){
    case "Maria":
        echo "eres una chica";
        break;
    case "Pedro";
        echo "eres una chico";
        break;
    default:
        echo "no se qué nombre tienes";
}
?>


Icon activity.jpg
Generar mes y mostrar número de días
<?php
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
 
//Generamos un número de mes
$mes = rand(1, 20);
 
//Evaluamos en número de días del mes generado
 
switch ($mes) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        $msj = "$mes, mes de 31 días";
        break;
 
    case 4:
    case 6:
    case 10:
    case 11:
        $msj = "$mes, mes de 30 días";
        break;
    case 2:
        $msj = "$mes, mes de 29 o 28 días";
        break;
    default:
        $msj = "$mes, mes incorrecto ";
}
?>
<!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <h1><?= "$msj" ?></h1>
 
    </body>
</html>




Iteración while

  • Como en todos los bucles debemos siempre tener encuenta
  1. inicializar la variable de control
  2. actualizarla correctamente dentro del bucle
  3. realizar de forma correcta la evaluación de condición (< o <=), (> o >=), ...
<?php
$i = 1;
while ($i <= 10) {
    echo "iteracción número ."$i++;
}
?>
  • Alternativamente podemos usar la siguiente sintaxis
$i = 1;
while ($i <= 10):
    $i++;
    echo "iteracción número ."$i;
endwhile;
?>

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.
<?php
$num=10;
$resultado=1;
*Esta es la única sintaxis posible con este tipo de sentencia 
do {
   $resultado:=$resultado*$num;
   $num--;
} while ($num>0);
?>

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
Estructura for
condición
<?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>";
}
?>