Diferencia entre revisiones de «Usuario:ManuelRomero/php/sentencias»

De WikiEducator
Saltar a: navegación, buscar
 
(Una revisión intermedia por el mismo usuario no mostrado)
Línea 1: Línea 1:
  
{{:Usuario:ManuelRomero/php/nav}}
+
<!--{{:Usuario:ManuelRomero/php/nav}}-->
  
 
<!--__NOEDITSECTION__-->
 
<!--__NOEDITSECTION__-->
Línea 50: Línea 50:
 
</source>
 
</source>
 
*También existe la opción elseif donde aportaremos una condición que se ha de cumplir para que se ejectuten las sentencias que a continuación acompañan.
 
*También existe la opción elseif donde aportaremos una condición que se ha de cumplir para que se ejectuten las sentencias que a continuación acompañan.
 +
</div>
 +
 +
<div class="slide">
 +
;Estructura de control
 
<source lang=php>
 
<source lang=php>
 
if (expresion){
 
if (expresion){
Línea 122: Línea 126:
  
 
<div class="slide">
 
<div class="slide">
===iteracion while===
+
===Iteración while===
 
*Como en todos los bucles debemos siempre tener encuenta
 
*Como en todos los bucles debemos siempre tener encuenta
 
#inicializar la variable de control
 
#inicializar la variable de control
Línea 151: Línea 155:
 
<div class="slide">
 
<div class="slide">
  
===iteracion do-while===
+
===Iteración do-while===
 
*Este tipo de bucle donde seguro que al menos se ejectua un iteración
 
*Este tipo de bucle donde seguro que al menos se ejectua un iteración
 
*Respecto al anterior nos ahorra una comparación.
 
*Respecto al anterior nos ahorra una comparación.
Línea 158: Línea 162:
 
$num=10;
 
$num=10;
 
$resultado=1;
 
$resultado=1;
 +
*Esta es la única sintaxis posible con este tipo de sentencia
 
do {
 
do {
 
   $resultado:=$resultado*$num;
 
   $resultado:=$resultado*$num;
Línea 164: Línea 169:
 
?>
 
?>
 
</source>
 
</source>
*Esta es la única sintaxis posible con este t tipo de sentencia iterativa-
 
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
===iteracion for===
+
===Iteración for===
 
*Es un bucle de tipo contador
 
*Es un bucle de tipo contador
 
<source lang=php>
 
<source lang=php>
Línea 256: Línea 260:
 
;operadores comparación (==,<,>,>=,<=,<>,!=,===,!==)
 
;operadores comparación (==,<,>,>=,<=,<>,!=,===,!==)
 
:Este tipo de operadores genera un booleano como resultado de evaluar la expresión
 
:Este tipo de operadores genera un booleano como resultado de evaluar la expresión
:Observar '''''==''''' que es igual, es decir el mismo valor respecto a '''''===''''' que es exactamente igual lo que quiere decir el mismo valor y tipo
+
{{Puntos clave|
 +
*'''''==''''' operador de comparacion '''''igual que''''' (mismo valor)
 +
*'''''===''''' operador de comparacion '''''exactamente igual que''''' (mismo valor y tipo)
 +
}}
 +
</div>
 +
 
 +
<div class="slide">
 +
;Operador == Vs ===
 
<source lang=php>
 
<source lang=php>
 
$num=1;
 
$num=1;
Línea 266: Línea 277:
 
     echo '$num no es exactamente igual a true';
 
     echo '$num no es exactamente igual a true';
 
</source>
 
</source>
*Genera la siguiente salida
+
</div>
 +
 
 +
<div class="slide">
 +
;Operador == vs ===
 +
 
 +
*El código anterior generaría  la siguiente salida
 
<source lang=php>
 
<source lang=php>
 
$num es igual a true
 
$num es igual a true
 
$num no es exactamente igual a true
 
$num no es exactamente igual a true
 
</source>
 
</source>
 +
*Ver la sección '''''comparación de tipos''''' de la página oficial
 +
http://php.net/manual/es/language.operators.comparison.php
 
</div>
 
</div>
  
Línea 332: Línea 350:
 
:PHP proporciona un operador especial que permite ejecutar sentencias
 
:PHP proporciona un operador especial que permite ejecutar sentencias
 
*Observa el siguiente código
 
*Observa el siguiente código
 +
 
<source lang=php>
 
<source lang=php>
 
<?php
 
<?php
Línea 338: Línea 357:
 
?>
 
?>
 
</source>
 
</source>
*Genera la siguiente salida
+
</div>
 +
 
 +
<div class="slide">
 +
 
 +
*El código anterior generará la siguiente salida
 
<source lang=php>
 
<source lang=php>
 
Filesystem    1K-blocks    Used Available Use% Mounted on
 
Filesystem    1K-blocks    Used Available Use% Mounted on
Línea 350: Línea 373:
 
/dev/sda7      101797224 40480360  56122728  42% /home
 
/dev/sda7      101797224 40480360  56122728  42% /home
 
</source>
 
</source>
 +
</div>
 +
 +
<div class="slide">
 +
;Invocando funciones del sistema
 +
*El operador anterior (comillas invertidas) es igual que la funcion '''''shell_exec()'''''
 +
http://php.net/manual/es/function.shell-exec.php
 
</div>
 
</div>
  

Última revisión de 18:40 5 oct 2015


DWES TituloTema3.gif

Estructuras de control 1

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

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

Selección if

  • Sentencia que evlúa una expresión booleana y ejectua 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 ejectuten 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>
    <!--escribirmos 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 de 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 sitiació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";
}
?>

Iteración while

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

Iteración do-while

  • Este tipo de bucle donde seguro que al menos se ejectua un iteració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 sóla vez al comienzo del bucle. se usa para inicializar variables
condicion
Es una expresión booleana que se evalúa en cada interación
Si da un valor false, ya no se ejectua 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
Estrucutura 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 interacion
  • El ejemplo anterior
<?php
for ($a=0;$a<10 ;$a++){
    echo "$a*$a=".$a*$a."<br>";
}
?>

Operadores

  • Son símbolos que realizan acciones sobre operandos y dan como resultado un valor
  • Tenmos diferentes tipos de operadores en función del tipo de operandos y del resultado
operadores aritméticos (+,-,*,/,%,**, ++, --)
  • Retorna un valor numérico
  • el ++, -- son valores de autoincremeto y autodecremento, pueder ser pre o post
Operadores
$a=5;
if ($a++==5)
    echo '$a que vale '.$a.' dice que vale 5 ???? <br>'
        . 'Esto es por que primero compara y luego incrementa<br>';
 
echo 'ahora $a vale '.$a.'<br>';
 
if (++$a==6)
    echo 'esto nunca saldrá ya que $a se incrementa antes de comparar';
else
    echo 'efectivamente ahora $a ya no vale 6 sino '.$a.'<br>';
?>
Operadores
  • El código anterior genera la siguiente salida
 $a que vale 6 dice que vale 5 ???? 
 Esto es por que primero compara y luego incrementa
 ahora $a vale 6
 efectivamente ahora $a ya no vale 6 sino 7
operadores comparación (==,<,>,>=,<=,<>,!=,===,!==)
Este tipo de operadores genera un booleano como resultado de evaluar la expresión


Icon key points.gif

Puntos clave

{{{1}}}


Operador == Vs ===
$num=1;
if ($num==true)
    echo '$num es igual a true<br>';
if ($num===true){
    echo "esto nunca se ejecutará";
}else
    echo '$num no es exactamente igual a true';
Operador == vs ===
  • El código anterior generaría la siguiente salida
$num es igual a true
$num no es exactamente igual a true
  • Ver la sección comparación de tipos de la página oficial
http://php.net/manual/es/language.operators.comparison.php
operadores de concatenacón( .) concatena cadena de caracteres.
El operador + no está sobre cargado, observa el siguiente código
$nombre="Maria";
$apellido = " de la Oh";
 
$nombreCompleto = $nombre.$apellido;
echo "el valor de nombre completo es $nombreCompleto ---<br>";
 
$nombreCompleto = $nombre+$apellido;
echo "el valor de nombre completo es $nombreCompleto --<br>";
La salida del código anterior sería
el valor de nombre completo es Maria de la Oh ---
el valor de nombre completo es 0 --
Operadores de asignacion (= , =>)
Se pueden combinar con los aritméticos (+=, *=, ...) y con los de concatenación (.=)
En este caso el valor de la variable de la izquierda se toma como primero operando
Operador de asiganción
<?php
$b=1;
for ($a=0;$a<10;$a++){
    $b*=10;
    echo 'valor de $b ='.$b.'<br>';
}
?>
  • El código anterior genera la siguiente salida
valor de $b =10
valor de $b =100
valor de $b =1000
valor de $b =10000
valor de $b =100000
valor de $b =1000000
valor de $b =10000000
valor de $b =100000000
valor de $b =1000000000
valor de $b =10000000000
operadores de ejecución (``)
PHP proporciona un operador especial que permite ejecutar sentencias
  • Observa el siguiente código
<?php
$Discos = `df`;
echo "<pre>$Discos</pre>";
?>
  • El código anterior generará la siguiente salida
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda5       86378608  6072360  75895384   8% /
none                   4        0         4   0% /sys/fs/cgroup
udev             4023720        4   4023716   1% /dev
tmpfs             806904     1384    805520   1% /run
none                5120        0      5120   0% /run/lock
none             4034504     6588   4027916   1% /run/shm
none              102400       28    102372   1% /run/user
/dev/sda7      101797224 40480360  56122728  42% /home
Invocando funciones del sistema
  • El operador anterior (comillas invertidas) es igual que la funcion shell_exec()
http://php.net/manual/es/function.shell-exec.php
operadores lógicos (and,&&, or, ||, xor !)
http://php.net/manual/es/language.operators.logical.php
Funcionan por cortocircuito
El operador xor da verdad si los operando son de diferente valor uno true y el otro false
La notación and y && representan el mismo operador, igual ocurre con or y ||
  • La diferencia entre los operadores es la prioridad
http://php.net/manual/es/language.operators.precedence.php