Diferencia entre revisiones de «PHP Estruturas de control»

De MediaWiki
Ir a la navegación Ir a la búsqueda
Línea 283: Línea 283:
 
: Poderíamos enviar de vez os estados (roto,perfecto, pintado,...) de cada un dos exemplares a dar de alta (é un exemplo, loxicamente se queremos gardar ese tipo de dato sería mais conveniente utilizar un <select> cos diferentes estados.
 
: Poderíamos enviar de vez os estados (roto,perfecto, pintado,...) de cada un dos exemplares a dar de alta (é un exemplo, loxicamente se queremos gardar ese tipo de dato sería mais conveniente utilizar un <select> cos diferentes estados.
 
: Lembrar que xa vimos [http://wiki.cifprodolfoucha.es/index.php?title=PHP_Arrays#Creando_arrays_cos_datos_dun_formulario anteriormente na wiki] como enviar datos en forma de array.
 
: Lembrar que xa vimos [http://wiki.cifprodolfoucha.es/index.php?title=PHP_Arrays#Creando_arrays_cos_datos_dun_formulario anteriormente na wiki] como enviar datos en forma de array.
 +
 +
 +
 +
== Exercicios propostos ==
 +
 +
* '''Exercicio 1:''' Determinar se un número é positivo ou negativo. Emprega unha variable e dalle os diferentes valores. Debe amosar unha mensaxe diferente para cando é positivo, negativo ou igual a cero.
 +
 +
 +
* '''Exercicio 2:''' Determina se dada unha contrasinal e un usuario, este pode entrar. Debes empregar dúas variables, unha para o usuario e outra para o password. Se o usuario non existe debe amosar unha mensaxe. Se o usuario existe e a contrasinal é incorrecta deberá indicalo. Se a contrasinal é correcta deberá indicar Acceso concedido.
 +
 +
 +
 +
 +
<br />
 +
=== Solución Exercicios ===
 +
 +
* '''Exercicio 1:''' Determinar se un número é positivo ou negativo. Emprega unha variable e dalle os diferentes valores. Debe amosar unha mensaxe diferente para cando é positivo, negativo ou igual a cero.
 +
::<syntaxhighlight lang="php" enclose="div" highlight="" >
 +
<!DOCTYPE html>
 +
<html>
 +
<head>
 +
    <title>Exercicio con if-else</title>
 +
</head>
 +
<body>
 +
    <h1>Determinar se un número é positivo ou negativo</h1>
 +
    <?php
 +
        $numero = 10; // Podes cambiar este valor para probar diferentes números
 +
 +
        if ($numero > 0) {
 +
            echo "O número $numero é positivo.";
 +
        } elseif ($numero < 0) {
 +
            echo "O número $numero é negativo.";
 +
        } else {
 +
            echo "O número é igual a 0.";
 +
        }
 +
    ?>
 +
</body>
 +
</html>
 +
 +
</syntaxhighlight>
 +
 +
 +
 +
<br />
 +
* '''Solución Exercicio 2:''' Determina se dada unha contrasinal e un usuario, este pode entrar. Debes empregar dúas variables, unha para o usuario e outra para o password. Se o usuario non existe debe amosar unha mensaxe. Se o usuario existe e a contrasinal é incorrecta deberá indicalo. Se a contrasinal é correcta deberá indicar Acceso concedido.
 +
::<syntaxhighlight lang="php" enclose="div" highlight="" >
 +
<!DOCTYPE html>
 +
<html>
 +
<head>
 +
    <title>Exercicio con if-else</title>
 +
</head>
 +
<body>
 +
    <h1>Determinar se un usuario ten acceso</h1>
 +
    <?php
 +
        // Datos del usuario existente
 +
        $usuario_correcto = "usuario1";
 +
        $contrasena_correcta = "secreta123";
 +
 +
        // Datos del usuario ingresado
 +
        $usuario_ingresado = "usuario1"; // Cambia el usuario ingresado
 +
        $contrasena_ingresada = "secreta1234"; // Cambia la contraseña ingresada
 +
 +
        // Comprobar si el usuario y la contraseña son correctos
 +
        if ($usuario_ingresado == $usuario_correcto && $contrasena_ingresada == $contrasena_correcta) {
 +
            echo "Acceso concedido. Benvido, $usuario_correcto.";
 +
        } elseif ($usuario_ingresado == $usuario_correcto) {
 +
            echo "Acceso denegado. A contrasinal é incorrecta.";
 +
        } else {
 +
            echo "Acceso denegado. O usuario non existe.";
 +
        }
 +
    ?>
 +
</body>
 +
</html>
 +
 +
</syntaxhighlight>
 +
  
  

Revisión del 21:52 24 sep 2023

if

  • Nota: Esta información está baseada na que se atopa na web de php.
  • O construtor if permite a execución condicional de fragmentos de código.
  • Sintaxe:
1 if (expr)
2   sentenza
Sendo expr unha expresión que pode ser avaliada como true ou false.
En caso de ser avaliada como true se executa a sentenza.

Exemplo de código:

1 <?php
2 if ($a > $b) {      // Se $a é maior que $b executa dita sentenza
3   echo "a é maior b";
4 }
5 ?>


  • Se queremos executar varias sentenzas temos que facer uso das chaves {....}. Todas as sentenzas que estean dentro das chaves será executadas.

Exemplo de código:

1 <?php
2 if ($a > $b) {
3   echo "a é maior b";
4   $b = $a;
5 }
6 ?>
  • É necesario que a condición estea entre parénteses: (expr).
  • Pódense anidar if´s de forma indefinida.

Exemplo de código:

1 <?php
2 if ($a > $b) {
3   echo "a é maior b";
4   if ($a > $c) {
5      echo "a é maior que c";
6   }
7 }
8 ?>


else

  • Nota: Esta información está baseada na que se atopa na web de php.
  • else forma parte do if e vai servir para executar un conxunto de sentenzas cando non se cumpra a condición indicada no if (cando o valor da expresión avaliada no if sexa false).

Exemplo de código:

1 <?php
2   if ($a > $b) {
3     echo "a é maior que b";
4   } else {
5     echo "a é menor ou igual que b"; 
6   }
7 ?>


elseif | else if

  • Nota: Esta información está baseada na que se atopa na web de php.
  • As dúas formas ('elsif' e 'else if') van facer o mesmo.
  • As condicións elseif van despois dun if e se avalían se a condición do if devolve false. A diferenza do else, podemos ter varios elseif un despois doutro e se irán avaliando en orde ata que un deles se avalía como true. Nese intre executarase o seu código e non se avaliará ningún elseif nin else que haia a continuación.


Exemplo de código:

1 <?php
2   if ($a > $b) {
3     echo "a é maior que b";
4   } elseif ($a == $b) {
5     echo "a é igual a b";
6   } else {
7     echo "a é menor que b";
8   }
9 ?>

while

  • Nota: Esta información está baseada na que se atopa na web de php.
  • Sintaxe:
while (expresión) {
      Sentenzas a executar;
}


Se o while ten unha única sentenza a executar podemos poñer:
while (expresión) 
      Unha única sentenza;


  • Existe unha sintaxe alternativa para o anterior:
while (expresión):
      Sentenzas a executar;
endwhile;


  • O que fai while é executar as sentenzas que se atopan dentro das chaves ata que a expresión devolva false.
Fixarse como primeiro se avalía a expresión e se é certa (devolve true) se executan as sentenzas. Se a primeira vez vale false nunca vai entrar a executar as sentenzas.
Vexamos un exemplo:
<?php
$i = 1;
while ($i <= 10) {
    echo $i++;  /* o valor presentado sería
                   $i antes do incremento
                   (post-incremento) */
}
?>
Sairá como resultado os números do 1 ata o 10.


do-while

  • Nota: Esta información está baseada na que se atopa na web de php.
  • Sintaxe:
do {

      Sentenzas a executar;

while (expresión);
  • O concepto é o mesmo que no caso do bucle while. A diferenza estriba en que neste caso o grupo de sentenzas a executar sempre se executarán a lo menos unha vez, xa que a avaliación da expresión se fai despois de executar as sentenzas.


Vexamos un exemplo:
<?php
$i = 0;
do {
    echo $i++;
} while ($i <= 10);
?>
Amosará todos os números dende 0 ata o 10.
  • Se facemos unha modificación a expresión do while para que sexa false na primeira iteración...
<?php
$i = 0;
do {
    echo $i++;
} while ($i > 10);
?>
Amosará o valor 0, e sairá do bucle.


for

  • Nota: Esta información está baseada na que se atopa na web de php.
  • A sentenza 'for' serve para repetir un conxunto de sentenzas mentres se cumpra unha determinada condición. A cada repetición denomínase 'iteración' (ao igual que no caso do while).
  • Sintaxe:
for(expr1;expr2;expr3){

      Sentenzas a executar;
}
Sendo:
  • expr1: Execútase ao comezo do bucle e soamente unha vez. Normalmente é utilizada para dar valores iniciais á variable que se vai utilizar no bucle.
  • expr2: Ao comezo de cada iteración avalíase a expr2 e devolverá true ou false. O bucle for seguirá executando as sentenzas ata que expr2 devolva false.
  • expr3: Ao final de cada iteración avalíase (execútase) expr3.
expr1,expr2 e expr3 poden ser calquera sentenza php e poden poñerse varias sentenzas separadas por ',' (coma).
  • Normalmente imos utilizar o bucle for para executar un conxunto de sentenzas en base a un contador que se irá incrementando en cada iteración (repetición) ata que chegue a un determinado valor, indicado na expresión 'expr2'.
Por exemplo:
for($cont=0;$cont<5;$cont++){

      printf("Amosando o valor de \$cont: %s<br />",$cont);
}

Nota: $cont++ é igual que poñer $cont=$cont+1. Temos tamén a operación contraria ($cont--).


Este exemplo produce a seguinte saída:
      Amosando o valor de $cont:0
      Amosando o valor de $cont:1
      Amosando o valor de $cont:2
      Amosando o valor de $cont:3
      Amosando o valor de $cont:4


  • Para saír do for sen esperar a que se cumpra a condición indicada no mesmo podemos facer uso da sentenza break.
Por exemplo:
for($cont=0;$cont<5;$cont++){
      if($cont==3) break;
      printf("Amosando o valor de \$cont: %s<br />",$cont);
}
Saída:
      Amosando o valor de $cont:0
      Amosando o valor de $cont:1
      Amosando o valor de $cont:2


  • Para saltar unha iteración (é dicir, que non continúe executando as sentenzas que se atopan dentro do for e avalíe directamente a expr3, saltando ao comezo do bucle) podemos facer uso da sentenza continue.
Por exemplo:
for($cont=0;$cont<5;$cont++){
      if($cont==2) continue;
      printf("Amosando o valor de \$cont: %s<br />",$cont);
}
Saída:
      Amosando o valor de $cont:0
      Amosando o valor de $cont:1
      Amosando o valor de $cont:3
      Amosando o valor de $cont:4


  • Podemos utilizar o for (ao igual que o while) para xerar dinamicamente o contido dun formulario dunha páxina web:
Imaxinemos que dispoñemos en $_POST['num_exemplares'] o número de exemplares dun libro que queremos dar de alta na nosa base de datos (este dato ven dun formulario anterior).
Podemos crear o seguinte formulario:
<form action='Alta_Exemplares.php' method='post'>
  <?php
    for($cont=1;$cont<$_POST['num_exemplares'];$cont++){
       echo "<input type='text' name='txtEstadoExemplar[]' />";
    }
  ?>
   <input type='submit' value='Enviar' name='btnAltaExemplares' />
</form>
Poderíamos enviar de vez os estados (roto,perfecto, pintado,...) de cada un dos exemplares a dar de alta (é un exemplo, loxicamente se queremos gardar ese tipo de dato sería mais conveniente utilizar un <select> cos diferentes estados.
Lembrar que xa vimos anteriormente na wiki como enviar datos en forma de array.


Exercicios propostos

  • Exercicio 1: Determinar se un número é positivo ou negativo. Emprega unha variable e dalle os diferentes valores. Debe amosar unha mensaxe diferente para cando é positivo, negativo ou igual a cero.


  • Exercicio 2: Determina se dada unha contrasinal e un usuario, este pode entrar. Debes empregar dúas variables, unha para o usuario e outra para o password. Se o usuario non existe debe amosar unha mensaxe. Se o usuario existe e a contrasinal é incorrecta deberá indicalo. Se a contrasinal é correcta deberá indicar Acceso concedido.




Solución Exercicios

  • Exercicio 1: Determinar se un número é positivo ou negativo. Emprega unha variable e dalle os diferentes valores. Debe amosar unha mensaxe diferente para cando é positivo, negativo ou igual a cero.
<!DOCTYPE html>
<html>
<head>
    <title>Exercicio con if-else</title>
</head>
<body>
    <h1>Determinar se un número é positivo ou negativo</h1>
    <?php
        $numero = 10; // Podes cambiar este valor para probar diferentes números

        if ($numero > 0) {
            echo "O número $numero é positivo.";
        } elseif ($numero < 0) {
            echo "O número $numero é negativo.";
        } else {
            echo "O número é igual a 0.";
        }
    ?>
</body>
</html>



  • Solución Exercicio 2: Determina se dada unha contrasinal e un usuario, este pode entrar. Debes empregar dúas variables, unha para o usuario e outra para o password. Se o usuario non existe debe amosar unha mensaxe. Se o usuario existe e a contrasinal é incorrecta deberá indicalo. Se a contrasinal é correcta deberá indicar Acceso concedido.
<!DOCTYPE html>
<html>
<head>
    <title>Exercicio con if-else</title>
</head>
<body>
    <h1>Determinar se un usuario ten acceso</h1>
    <?php
        // Datos del usuario existente
        $usuario_correcto = "usuario1";
        $contrasena_correcta = "secreta123";

        // Datos del usuario ingresado
        $usuario_ingresado = "usuario1"; // Cambia el usuario ingresado
        $contrasena_ingresada = "secreta1234"; // Cambia la contraseña ingresada

        // Comprobar si el usuario y la contraseña son correctos
        if ($usuario_ingresado == $usuario_correcto && $contrasena_ingresada == $contrasena_correcta) {
            echo "Acceso concedido. Benvido, $usuario_correcto.";
        } elseif ($usuario_ingresado == $usuario_correcto) {
            echo "Acceso denegado. A contrasinal é incorrecta.";
        } else {
            echo "Acceso denegado. O usuario non existe.";
        }
    ?>
</body>
</html>




-- Ángel D. Fernández González -- (2016).