Diferencia entre revisiones de «Plantilla:ManuelRomero/PHP/OperadoresExpresiones»
De WikiEducator
(Página creada con «**Índice de contenido** | | | | -------- | -------- | | 1. Precedencia de operadores | 7. Operadores de ejecución | | 2. Operadores artiméticos | 8. Operadores de incre...») |
|||
Línea 1: | Línea 1: | ||
− | + | <div class="slide"> | |
− | + | ==Operadores y expresiones== | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | {{MRM_Definicion|Title=¿Qué es una expresión?| | |
− | + | Una expresión es una parte esencial de las frases en un lenguaje de programación. }} | |
+ | {{MRM_Definicion|Title=Definición técnica de expresión| | ||
+ | ; Es un conjunto de operadores y operandos | ||
+ | ; que, al evaluarse, producen un valor. | ||
+ | ; Este valor puede ser usado dentro de otras instrucciones o asignado a variables. | ||
+ | }} | ||
+ | </div> | ||
− | + | <div class="slide"> | |
+ | {{MRM_Puntos clave|Title=Notas importantes sobre expresiones en PHP| | ||
− | + | * Una '''expresión tiene un tipo asociado'''. Este tipo depende del resultado de su evaluación. | |
+ | * En PHP, '''el operador determina el tipo de la expresión''' en muchos casos. | ||
+ | * Los operandos '''intentan adaptarse al tipo esperado''' por el operador mediante conversiones automáticas (casting implícito). | ||
+ | * Una expresión '''no es una instrucción completa''', sino parte de ella. Por ejemplo: | ||
+ | <source lang=php> | ||
+ | //Instruccion: | ||
+ | $resultado = 5+3; | ||
+ | // Expresión => 5+3 | ||
+ | // Operador => + | ||
+ | // Operandos => el 5 y el 3 | ||
+ | // Resultado => 8 | ||
+ | //Tipo de expresión => Aritmética, lo marca el operador | ||
+ | </source> | ||
− | + | }}</div> | |
+ | <div class="slide"> | ||
+ | {{Nota| Las expresiones son piezas fundamentales en cualquier lenguaje de programación. Es importante identificar sus partes (operadores y operandos) para entender cómo funciona el código. | ||
+ | }} | ||
+ | ===Operadores=== | ||
− | + | Los operadores son '''símbolos que realizan acciones''' sobre operandos y generan un resultado. | |
+ | Existen diferentes '''tipos de operadores''' en función del tipo de operandos y el resultado esperado. | ||
− | + | {| class="wikitable col1cen col2cen center" style="width:auto;" |+ style="color:white; background:blue; font-size:1.50em;" | '''OPERADORES HABITUALES EN PHP''' |- ! style="color:white; background:green;" | '''Tipo de Operador''' || '''Operador''' || '''Tipo de Expresión''' |- | style="color:white; background:red;" | Operadores aritméticos || style="color:blue; background:white;" | + - * / % ** || Numérica |- | style="color:white; background:red;" | Operadores lógicos || style="color:blue; background:white;" | AND OR && || ! || Lógica |- | style="color:white; background:red;" | Operadores de comparación || style="color:blue; background:white;" | == != < > <= >= <=> ?? || Lógica |- | style="color:white; background:red;" | Operadores de auto incremento/decremento || style="color:blue; background:white;" | ++$a $a++ --$a $a-- || Numérica |- | style="color:white; background:red;" | Operadores de string (concatenación) || style="color:blue; background:white;" | . .= || String |} | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | {| class="wikitable col1cen col2cen center" style="width:auto;" |+ style="color:white; background:blue; font-size:1.50em;" | '''OTROS OPERADORES MENOS HABITUALES''' |- ! style="color:white; background:green;" | '''Tipo de Operador''' || '''Operador''' || '''Tipo de Expresión''' |- | style="color:white; background:red;" | Operadores de asignación simple || style="color:blue; background:white;" | = || Valor asignado |- | style="color:white; background:red;" | Operadores de asignación compuesta || style="color:blue; background:white;" | += -= *= /= %= **= .= || Numérica |- | style="color:white; background:red;" | Operadores de asignación por referencia || style="color:blue; background:white;" | & || Valor referenciado |- | style="color:white; background:red;" | Operadores bit a bit || style="color:blue; background:white;" | & | ^ ~ << >> || Numérica |- | style="color:white; background:red;" | Operador de control de errores || style="color:blue; background:white;" | @ || Silencia errores |- | style="color:white; background:red;" | Operador de ejecución || style="color:blue; background:white;" | `comando` || Resultado del comando ejecutado |} | |
− | + | MRM_Puntos clave|Title=Notas importantes| | |
+ | ;Notas importantes: | ||
− | + | *Algunos operadores, como los de control de errores (@), deben usarse con cuidado, ya que pueden ocultar errores importantes en el código. | |
− | + | *Los operadores de asignación compuesta permiten realizar operaciones y asignar el resultado en un solo paso. | |
− | + | *El operador de ejecución (` `) se utiliza para ejecutar comandos del sistema y devolver su salida. | |
− | + | }} | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | *** | + | ====Operadores de expresiones numéricas==== |
+ | <br /> | ||
+ | {{MRM_Puntos clave| | ||
+ | ;Intervienen con valores numéricos y retorna un número como resultado de su evaluación | ||
+ | }} | ||
+ | #Aritméticos (+,-,*,/,%,**) | ||
+ | #Autoincremente/decremento(++ --) | ||
+ | #Asignación compuesta (los aritmétcios segidos de una asignación += -= *= ....) | ||
− | ** | + | {{MRM_Puntos clave|title=Valor de retorno| |
+ | ===== 1.- Operadores aritméticos===== | ||
+ | <br /> | ||
+ | ;Cuando haya varios en una operación, hay que tener cuidado con la preferencia. Mejor esplicitarla con paréntesis}} | ||
+ | {{MRM_Pregunta|Title=Qué ejecutaría el siguiente código| | ||
+ | <source lang=php> | ||
+ | $num = 5+6*8-4/2; | ||
+ | </source> | ||
+ | ;Mejor ponerlo así | ||
+ | <source lang=php> | ||
+ | $num = 5+(6*8)-(4/2); | ||
+ | </source> | ||
+ | {{Plegable|hide|Ejecución| | ||
+ | <source lang=php> | ||
+ | $num = 5+6*8-4/2; | ||
+ | echo "<h1>Valor de número $num</h1>"; | ||
+ | $num = 5+(6*8)-(4/2); | ||
+ | $num = 5+48-2; | ||
+ | $num = 53-2; | ||
+ | echo "<h1>Valor de número $num</h1>"; | ||
+ | </source> | ||
+ | ;Salida | ||
+ | [[Archivo:salida_preferencia_1.png]] | ||
+ | }} | ||
+ | }} | ||
+ | <br /> | ||
+ | *El operador quizá menos utilizado es el <span class=r>módulo(%) y el exponente(**)</span>. | ||
+ | {{Nota|El módulo se usa mucho para ver si un número es o no divisible por otro.}} | ||
− | + | {{MRM_Actividad| | |
+ | ;Buscar todos los números divisibles por 3 del 1 al 100 | ||
− | + | {{Plegable|hide|Posible solución| | |
− | + | <source lang=php> | |
− | + | $lista = null; | |
− | + | for($n=1; $n<=100; $n++){ | |
− | + | if ($n%3==0) | |
− | + | $lista.="$n, "; | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | $ | + | |
− | $ | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | < | + | |
− | + | ||
− | $ | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
} | } | ||
− | + | echo "<h1>$lista</h1>"; | |
+ | </source> | ||
+ | ;Salida | ||
+ | [[Archivo:salida_multiplos_3.png]] | ||
+ | }} | ||
− | |||
− | + | {{Nota|En el ejemplo anterior, al final sale una coma de más, que ya veremos cómo quitarla.}} | |
+ | }} | ||
− | + | ;El exponente consiste en elevar un número a otro | |
− | + | {{MRM_Actividad| | |
− | + | ;Obtenerlo las diferentes potencias de 2 hasta elevarlo a 15: 2<sup>1</sup> 2<sup>2</sup> 2<sup>3</sup>...2<sup>15</sup> | |
− | + | {{Plegable|hide|Posible solución| | |
− | + | <source lang=php> | |
− | + | for($n=1; $n<=15; $n++){ | |
− | + | echo "2<sup>$n</sup>=".(2**$n)."<br />"; | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | < | + | |
− | $ | + | |
− | $ | + | |
− | + | ||
− | + | ||
− | + | ||
− | $ | + | |
− | + | ||
− | + | ||
} | } | ||
− | + | </source> | |
+ | ;Salida | ||
+ | [[Archivo:salida_potencias_2.png]] | ||
+ | }} | ||
+ | }} | ||
+ | <br /> | ||
+ | =====Autoincremente / Decremento ===== | ||
+ | *el <span class=r>++, --</span> son valores de autoincremeto y autodecremento, pueder ser <span class=r>pre o post</span> | ||
+ | *El el caso '''''pre''''', primero incrementa y luego toma el valor | ||
+ | *El el caso '''''post''''', primero toma el valor y luego incrementa | ||
+ | {{ | ||
+ | MRM_Puntos clave|Title: forma de usar los operadores | ||
+ | ;Pre es anteponiendo el operador | ||
+ | <source lang=php> | ||
+ | ++$a; | ||
+ | --$a | ||
+ | </source> | ||
+ | :Post es posponiéndolo | ||
+ | <source lang=php> | ||
+ | $a++; | ||
+ | $a--; | ||
+ | </source> | ||
+ | }} | ||
+ | <br /> | ||
+ | ;Para muchos casos es lo mismo hacerlo pre que post. Esto ocurre <span class=r>cuando en la instrucción solo haga eso</span> | ||
+ | <source lang=php> | ||
+ | $a=5; | ||
+ | $a++; | ||
+ | echo "Valor de a es $a"; | ||
+ | </source> | ||
+ | Es igual que | ||
+ | <source lang=php> | ||
+ | $a=5; | ||
+ | ++$a; | ||
+ | echo "Valor de a es $a"; | ||
+ | </source> | ||
+ | ;En ambos casos la salida dará el valor 6 | ||
+ | Pero | ||
+ | <source lang=php> | ||
+ | $a=5; | ||
+ | echo "Valor de a es ".++$a."<br />"; | ||
+ | echo "Valor de a es $a<br />"; | ||
+ | </source> | ||
+ | No es igual que | ||
+ | <source lang=php> | ||
+ | $a=5; | ||
+ | echo "Valor de a es ".$a++."<br />"; | ||
+ | echo "Valor de a es $a<br />"; | ||
+ | </source> | ||
+ | {{MRM_Pregunta| | ||
+ | '''''Lo ves claro''''' | ||
+ | }} | ||
+ | }} | ||
+ | </div> | ||
− | + | {{MRM_Actividad|Title=Realiza el siguiente programa Entendiendo qué hace| | |
+ | <source lang=php> | ||
+ | //Declara una variable entera y asigna el valor 4 | ||
− | + | //Usando el operador unario, incrementa una unidad y compáralo con el valor 5 | |
+ | //Muestra un mensaje mostrando su valor | ||
− | + | //Compáralo con el valor 4 y decrementa en una unidad , muestra información de que no es igual y muestra el valor | |
+ | //Analiza la salida y prueba deferentes situaciones | ||
+ | </source> | ||
+ | }} | ||
− | + | <div class="slide"> | |
+ | ;Operadores | ||
+ | <source lang=php> | ||
+ | $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>'; | |
+ | ?> | ||
+ | </source> | ||
+ | </div> | ||
− | + | <div class="slide"> | |
− | $ | + | ;Operadores |
− | + | *El código anterior genera la siguiente salida | |
+ | <source lang=php> | ||
+ | $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 | ||
+ | </source> | ||
+ | </div> | ||
− | + | ====Operadores con asignación en una misma variable==== | |
+ | *Cuando la variable donde asignamos el resultado de la expresión forma parte de la expresión, la podemos simplificar | ||
+ | *Veamos el siguiente ejemplo | ||
+ | <source lang=php> | ||
+ | $a=$a*5; | ||
+ | </source> | ||
+ | *Es igual que hacer | ||
+ | <source lang=php> | ||
+ | $a*=5; | ||
+ | </source> | ||
+ | *Esto lo podemos hacer con cualquiera de los operadores aritméticos | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | <div class="slide"> | |
− | * | + | ====Operadores comparación (==,<,>,>=,<=,<>,!=,===,!==)==== |
+ | :Este tipo de operadores genera un booleano como resultado de evaluar la expresión | ||
+ | {{MRM_Puntos clave| | ||
+ | *'''''<nowiki>==</nowiki>''''' operador de comparación '''''igual que''''' (mismo valor) | ||
+ | *'''''<nowiki>===</nowiki>''''' operador de comparación '''''exactamente igual que''''' (mismo valor y tipo) | ||
+ | }} | ||
+ | </div> | ||
− | + | <div class="slide"> | |
+ | =====Operador == Vs === ===== | ||
+ | <source lang=php> | ||
+ | $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'; | ||
+ | </source> | ||
+ | </div> | ||
− | + | <div class="slide"> | |
+ | ;Operador == vs === | ||
− | + | *El código anterior generaría la siguiente salida | |
− | + | <source lang=php> | |
− | + | $num es igual a true | |
− | + | $num no es exactamente igual a true | |
− | + | </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 class="slide"> | |
+ | ====operadores de concatenacón( .) concatena cadena de caracteres.==== | ||
+ | :El operador + no está sobre cargado, observa el siguiente código | ||
+ | <source lang=php> | ||
+ | $nombre="Maria"; | ||
+ | $apellido = " de la Oh"; | ||
− | + | $nombreCompleto = $nombre.$apellido; | |
− | + | echo "el valor de nombre completo es $nombreCompleto ---<br>"; | |
− | $ | + | |
− | + | ||
− | echo " | + | |
− | $ | + | $nombreCompleto = $nombre+$apellido; |
− | echo " | + | echo "el valor de nombre completo es $nombreCompleto --<br>"; |
− | + | </source> | |
+ | </div> | ||
− | + | <div class="slide"> | |
− | + | ;La salida del código anterior sería | |
− | + | <source lang=php> | |
− | + | el valor de nombre completo es Maria de la Oh --- | |
+ | el valor de nombre completo es 0 -- | ||
+ | </source> | ||
+ | </div> | ||
− | + | <div class="slide"> | |
− | + | ====Operadores de asignació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 | ||
+ | ;Operador de asignación | ||
+ | <source lang=php> | ||
<?php | <?php | ||
− | $ | + | $b=1; |
− | + | for ($a=0;$a<10;$a++){ | |
− | echo | + | $b*=10; |
+ | echo 'valor de $b ='.$b.'<br>'; | ||
+ | } | ||
+ | ?> | ||
+ | </source> | ||
+ | </div> | ||
− | $ | + | <div class="slide"> |
− | + | *El código anterior genera la siguiente salida | |
− | + | <source lang=php> | |
+ | 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 | ||
+ | </source> | ||
+ | </div> | ||
− | + | <div class="slide"> | |
− | + | ==== Operadores de ejecución (``)==== | |
− | + | :PHP proporciona un operador especial que permite ejecutar sentencias | |
− | + | *Observa el siguiente código | |
− | + | <source lang=php> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<?php | <?php | ||
− | $ | + | $Discos = `df`; |
− | $ | + | echo "<pre>$Discos</pre>"; |
− | + | ?> | |
− | + | </source> | |
+ | </div> | ||
− | + | <div class="slide"> | |
− | + | *El código anterior generará la siguiente salida | |
− | + | <source lang=php> | |
− | + | 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 | |
− | + | </source> | |
− | + | </div> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | < | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | // | + | |
− | + | ||
− | + | ||
− | + | ||
− | / | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | // | + | |
− | + | ||
− | + | ||
− | + | ||
− | / | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | <div class="slide"> | |
− | + | ;Invocando funciones del sistema | |
− | + | *El operador anterior (comillas invertidas) es igual que la función '''''shell_exec()''''' | |
+ | http://php.net/manual/es/function.shell-exec.php | ||
+ | </div> | ||
− | + | <div class="slide"> | |
− | + | ==== 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 | ||
+ | </div> |