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

De WikiEducator
Saltar a: navegación, buscar
 
(7 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
  
{{:Usuario:ManuelRomero/php/nav}}
+
<!--{{:Usuario:ManuelRomero/php/nav}}-->
  
 
<!--__NOEDITSECTION__-->
 
<!--__NOEDITSECTION__-->
Línea 11: Línea 11:
 
[[Imagen:DWES_TituloTema3.gif|center]]
 
[[Imagen:DWES_TituloTema3.gif|center]]
 
|}
 
|}
 
+
__NOTOC__
 +
{{#widget:Slides}}
 +
<div class="slides layout-regular template-default">
 
<div class="slide">
 
<div class="slide">
 
<!--4---------------------------------->
 
<!--4---------------------------------->
Línea 38: Línea 40:
 
  }
 
  }
 
</source>
 
</source>
<hr>
+
</div>
<source lang=php>
+
 
 +
<div class="slide">
 +
;Sentencias de control
 
if  (expresion)
 
if  (expresion)
 
     Sentencia_1;
 
     Sentencia_1;
Línea 46: 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 57: Línea 65:
 
}
 
}
 
</source>
 
</source>
 +
</div>
 +
 +
<div class="slide">
  
 
*Alternativamente puede usarse esta sintaxis que es usada cuando se quiere intercalar condigo html fuera del php.  
 
*Alternativamente puede usarse esta sintaxis que es usada cuando se quiere intercalar condigo html fuera del php.  
Línea 65: Línea 76:
 
   Sentencia 1;
 
   Sentencia 1;
 
  endif;
 
  endif;
 +
</source>
 
</div>
 
</div>
 
<div class="slide">
 
<div class="slide">
</source>
+
 
 
*Ahora lo vemos con código html
 
*Ahora lo vemos con código html
 
<source lang=php>
 
<source lang=php>
Línea 79: Línea 91:
 
<?php endif ?>
 
<?php endif ?>
 
</source>
 
</source>
 +
</div>
  
 
<div class="slide">
 
<div class="slide">
Línea 84: Línea 97:
 
*Es una forma más compacta de un if else con una única instrucción.
 
*Es una forma más compacta de un if else con una única instrucción.
 
  Expresión? SentenciaOKExpresion : SentenciaNoOkExpresion
 
  Expresión? SentenciaOKExpresion : SentenciaNoOkExpresion
 +
{{Actividad|Programa que me de si un número aleatorio es par o impar}}
 
</div>
 
</div>
  
 
+
<div class="slide">
 
===Seleccion switch===
 
===Seleccion switch===
 
*Este es un selector múltiple
 
*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
 
*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í
 +
</div>
 +
 +
<div class="slide">
 +
;Switch
 
<source lang=php>
 
<source lang=php>
 
<?php
 
<?php
Línea 104: Línea 123:
 
?>
 
?>
 
</source>
 
</source>
 
+
</div>
 
+
 
+
 
+
  
 
<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
 
#acutalizarla correctamente dentro del bucle
 
#acutalizarla correctamente dentro del bucle
 
#realizar de forma correcta la evaluación de condiciòn (< o <=), (> o >=), ...
 
#realizar de forma correcta la evaluación de condiciòn (< o <=), (> o >=), ...
 
 
<source lang=php>
 
<source lang=php>
 
<?php
 
<?php
Línea 124: Línea 139:
 
?>
 
?>
 
</source>
 
</source>
 +
</div>
 +
 +
<div class="slide">
 
*Alternativamente podemos usar la siguiente sintaxis
 
*Alternativamente podemos usar la siguiente sintaxis
 
<source lang=php>
 
<source lang=php>
Línea 133: Línea 151:
 
?>
 
?>
 
</source>
 
</source>
===iteracion do-while===
+
</div>
 +
 
 +
<div class="slide">
 +
 
 +
===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 140: 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 146: Línea 169:
 
?>
 
?>
 
</source>
 
</source>
*Esta es la única sintaxis posible con este t tipo de sentencia iterativa-
+
</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 156: Línea 179:
 
  }
 
  }
 
</source>
 
</source>
 +
</div>
 +
 +
<div class="slide">
 +
;Estructura for
 
*tiene tres partes
 
*tiene tres partes
 
;expresion_inicial:
 
;expresion_inicial:
Línea 164: Línea 191:
 
:Si no hay expresión se toma como true
 
: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
 
: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
 +
</div>
 +
 +
<div class="slide">
 +
;Estrucutura for: condición
 
<source lang=php>
 
<source lang=php>
 
<?php
 
<?php
Línea 173: Línea 204:
 
?>
 
?>
 
</source>
 
</source>
;expresion_actualizar
+
</div>
 +
<div class="slide">
 +
;Estructura for: expresion_actualizar
 
:Esta expresión actualiza el valor de alguna/as variables
 
:Esta expresión actualiza el valor de alguna/as variables
 
:Se ejecuta en cada interacion
 
:Se ejecuta en cada interacion
</div>
 
 
*El ejemplo anterior  
 
*El ejemplo anterior  
 
<source lang=php>
 
<source lang=php>
Línea 185: Línea 217:
 
?>
 
?>
 
</source>
 
</source>
<div class="slide">
 
 
 
</div>
 
</div>
  
 
+
<div class="slide">
 
===Operadores===
 
===Operadores===
 
*Son símbolos que realizan acciones sobre operandos y dan como resultado un valor
 
*Son símbolos que realizan acciones sobre operandos y dan como resultado un valor
Línea 196: Línea 226:
 
*Retorna un valor numérico  
 
*Retorna un valor numérico  
 
*el ++, -- son valores de autoincremeto y autodecremento, pueder ser pre o post
 
*el ++, -- son valores de autoincremeto y autodecremento, pueder ser pre o post
 +
</div>
 +
 +
<div class="slide">
 +
;Operadores
 
<source lang=php>
 
<source lang=php>
 
$a=5;
 
$a=5;
Línea 210: Línea 244:
 
?>
 
?>
 
</source>
 
</source>
*que genera la siguiente salida
+
</div>
 +
 
 +
<div class="slide">
 +
;Operadores
 +
*El código anterior genera la siguiente salida
 
<source lang=php>
 
<source lang=php>
 
  $a que vale 6 dice que vale 5 ????  
 
  $a que vale 6 dice que vale 5 ????  
Línea 217: Línea 255:
 
  efectivamente ahora $a ya no vale 6 sino 7
 
  efectivamente ahora $a ya no vale 6 sino 7
 
</source>
 
</source>
 +
</div>
 +
 +
<div class="slide">
 
;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 229: 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>
  
;opreadores de concatenacón( .) concatena cadena de caracteres.
+
<div class="slide">
 +
;operadores de concatenacón( .) concatena cadena de caracteres.
 
:El operador + no está sobre cargado, observa el siguiente código
 
:El operador + no está sobre cargado, observa el siguiente código
 
<source lang=php>
 
<source lang=php>
Línea 247: Línea 304:
 
echo "el valor de nombre completo es $nombreCompleto --<br>";
 
echo "el valor de nombre completo es $nombreCompleto --<br>";
 
</source>
 
</source>
*La salida sería
+
</div>
 +
 
 +
<div class="slide">
 +
;La salida del código anterior sería
 
<source lang=php>
 
<source lang=php>
 
el valor de nombre completo es Maria de la Oh ---
 
el valor de nombre completo es Maria de la Oh ---
 
el valor de nombre completo es 0 --
 
el valor de nombre completo es 0 --
 
</source>
 
</source>
 +
</div>
  
 
+
<div class="slide">
;operadores de asignacion (= , =>)
+
;Operadores de asignacion (= , =>)
 
:Se pueden combinar con los aritméticos (+=, *=, ...)  y con los de concatenación (.=)
 
: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
 
:En este caso el valor de la variable de la izquierda se toma como primero operando
 +
;Operador de asiganción
 
<source lang=php>
 
<source lang=php>
 
<?php
 
<?php
Línea 266: Línea 328:
 
?>
 
?>
 
</source>
 
</source>
*Genera la siguiente salida
+
</div>
 +
 
 +
<div class="slide">
 +
*El código anterior genera la siguiente salida
 
<source lang=php>
 
<source lang=php>
 
valor de $b =10
 
valor de $b =10
Línea 279: Línea 344:
 
valor de $b =10000000000
 
valor de $b =10000000000
 
</source>
 
</source>
 +
</div>
 +
 +
<div class="slide">
 
;operadores de ejecución (``)
 
;operadores de ejecución (``)
 
: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 288: Línea 357:
 
?>
 
?>
 
</source>
 
</source>
*Genera la siguiente salido
+
</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 300: 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 class="slide">
 
;operadores lógicos (and,&&, or, ||, xor !)
 
;operadores lógicos (and,&&, or, ||, xor !)
 +
http://php.net/manual/es/language.operators.logical.php
 
:Funcionan por cortocircuito
 
:Funcionan por cortocircuito
 
:El operador  '''''xor''''' da verdad si los operando son de diferente valor uno true y el otro false
 
: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 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
 
|}
 
|}

Última revisión de 17: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