Diferencia entre revisiones de «Plantilla:PHP/OperadoresExpresiones»

De WikiEducator
Saltar a: navegación, buscar
(Operadores)
(Operadores)
 
(79 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
 
<div class="slide">
 
<div class="slide">
 +
 
==Operadores y expresiones==
 
==Operadores y expresiones==
 
<br />
 
<br />
{{MRM_Objetivos|
+
{{MRM_Definicion|Title=¿Qué es una expresión?|
;Son partes de las frases de un lenguaje de programación}}
+
*Son partes de las frases de un lenguaje de programación
 +
{{MRM_Definicion|Title=Definición|
 +
;Es un conjunto de operador/es y operando/s
 +
;que se evalúan
 +
;y dan como resultado un valor
 +
}}
 +
}}
 +
</div>
 +
 
 +
<div class="slide">
 +
{{MRM_Puntos clave|Title=Notas importantes|
 +
;Una expresión tiene un tipo asociado
 +
;En php el tipo lo marca el operador
 +
;Los operandos se intentan adaptar al tipo
 +
;No es una instrucción, es parte de ella
 +
}}
 
</div>
 
</div>
  
Línea 10: Línea 26:
 
*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
 
*Tenemos diferentes tipos de operadores en función del tipo de operandos y del resultado
 
*Tenemos 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
+
{|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 && <nowiki>||</nowiki> ! || 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 asignación simple||style="color:blue;background:white;"|= || valor asignado
 +
|-
 +
|style="color:white;background:red;"|Operadores asignación compuesta||style="color:blue;background:white;"|+= *= -= %= **= .= ||numérico
 +
|-
 +
|style="color:white;background:red;"|Operadores asignación por referenica||style="color:blue;background:white;"|&||Valor referenciado
 +
|-
 +
|style="color:white;background:red;"|Operadores bit a bit||style="color:blue;background:white;"|& | ^ ~ << >> ||numérico
 +
|-
 +
|style="color:white;background:red;"|Operador de control de errors||style="color:blue;background:white;"|@||no retorna, anula comunicaicón de errores si se produjeran
 +
|-
 +
|style="color:white;background:red;font-size: 1.50em;"|Operador de ejecución||style="color:blue;background:white;"|``||resultado del comando ejecutado
 +
 
 +
|}
 +
 
 +
 
 +
====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>
 
</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">
 
<div class="slide">
Línea 43: Línea 225:
 
</source>
 
</source>
 
</div>
 
</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">
 
<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
 
{{MRM_Puntos clave|
 
{{MRM_Puntos clave|
Línea 54: Línea 251:
  
 
<div class="slide">
 
<div class="slide">
;Operador == Vs ===
+
=====Operador == Vs === =====
 
<source lang=php>
 
<source lang=php>
 
$num=1;
 
$num=1;
Línea 79: Línea 276:
  
 
<div class="slide">
 
<div class="slide">
;operadores de concatenacón( .) concatena cadena de caracteres.
+
====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 102: Línea 299:
  
 
<div class="slide">
 
<div class="slide">
;Operadores de asignación (= , =>)
+
====Operadores de asignación (= , =>)====
 
: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
Línea 134: Línea 331:
  
 
<div class="slide">
 
<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
Línea 167: Línea 364:
  
 
<div class="slide">
 
<div class="slide">
;operadores lógicos (and,&&, or, ||, xor !)
+
==== Operadores lógicos (and,&&, or, ||, xor !)====
 
  http://php.net/manual/es/language.operators.logical.php
 
  http://php.net/manual/es/language.operators.logical.php
 
:Funcionan por cortocircuito
 
:Funcionan por cortocircuito

Última revisión de 06:27 28 oct 2024


Icon key points.gif

Notas importantes

Una expresión tiene un tipo asociado
En php el tipo lo marca el operador
Los operandos se intentan adaptar al tipo
No es una instrucción, es parte de ella


Operadores

  • Son símbolos que realizan acciones sobre operandos y dan como resultado un valor
  • Tenemos diferentes tipos de operadores en función del tipo de operandos y del resultado


OPERADORES HABITUALES EN PHP
TIPO DE OPERADOR OPERADOR Tipo de Expresión
Operadores aritméticos + - * / % ** Numérica
Operadores lógicos AND OR && || ! Lógica
Operadores de comparación == != << < > <= >= <=> ?? Lógica
Operadores de auto incremento/decremento ++$a $a++ --$a $a-- Numérica
Operadores de string: concatenación . .= String
OTROS OPERADORES MENOS HABITUALES
TIPO DE OPERADOR OPERADOR Tipo de Expresión
Operadores asignación simple = valor asignado
Operadores asignación compuesta += *= -= %= **= .= numérico
Operadores asignación por referenica & Valor referenciado
Operadores bit a bit & | ^ ~ << >> numérico
Operador de control de errors @ no retorna, anula comunicaicón de errores si se produjeran
Operador de ejecución `` resultado del comando ejecutado


Operadores de expresiones numéricas



Icon key points.gif

Puntos clave

Intervienen con valores numéricos y retorna un número como resultado de su evaluación


  1. Aritméticos (+,-,*,/,%,**)
  2. Autoincremente/decremento(++ --)
  3. Asignación compuesta (los aritmétcios segidos de una asignación += -= *= ....)



Icon key points.gif

Puntos clave

1.- Operadores aritméticos


Cuando haya varios en una operación, hay que tener cuidado con la preferencia. Mejor esplicitarla con paréntesis



Icon qmark.gif
Qué ejecutaría el siguiente código
$num = 5+6*8-4/2;
Mejor ponerlo así
$num = 5+(6*8)-(4/2);



  • El operador quizá menos utilizado es el módulo(%) y el exponente(**).

(Comment.gif: El módulo se usa mucho para ver si un número es o no divisible por otro.)




Icon activity.jpg
Actividad
Buscar todos los números divisibles por 3 del 1 al 100


(Comment.gif: 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


Icon activity.jpg
Actividad
Obtenerlo las diferentes potencias de 2 hasta elevarlo a 15
21 22 23...215




Autoincremente / Decremento
  • el ++, -- son valores de autoincremeto y autodecremento, pueder ser pre o post
  • El el caso pre, primero incrementa y luego toma el valor
  • El el caso post, primero toma el valor y luego incrementa


Icon key points.gif

Puntos clave

Title: forma de usar los operadores

Pre es anteponiendo el operador
++$a;
--$a
Post es posponiéndolo
$a++;
$a--;



Para muchos casos es lo mismo hacerlo pre que post. Esto ocurre cuando en la instrucción solo haga eso
$a=5;
$a++;
echo "Valor de a es $a";

Es igual que

$a=5;
++$a;
echo "Valor de a es $a";
En ambos casos la salida dará el valor 6

Pero

$a=5;
echo "Valor de a es ".++$a."<br />";
echo "Valor de a es $a<br />";

No es igual que

$a=5;
echo "Valor de a es ".$a++."<br />";
echo "Valor de a es $a<br />";



Icon qmark.gif
Pregunta
Lo ves claro


}}



Icon activity.jpg
Realiza el siguiente programa Entendiendo qué hace
//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




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 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
$a=$a*5;
  • Es igual que hacer
$a*=5;
  • Esto lo podemos hacer con cualquiera de los operadores aritméticos



Operadores comparación (==,<,>,>=,<=,<>,!=,===,!==)

Este tipo de operadores genera un booleano como resultado de evaluar la expresión


Icon key points.gif

Puntos clave

  • == operador de comparación igual que (mismo valor)
  • === operador de comparación exactamente igual que (mismo valor y tipo)


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 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
<?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 función 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