Diferencia entre revisiones de «Plantilla:ManuelRomero/PHP/OperadoresExpresiones»

De WikiEducator
Saltar a: navegación, buscar
(Ejemplo de Diferencias entre Pre y Post:)
(Operadores con asignación en una misma variable)
Línea 253: Línea 253:
  
 
{{Nota| Cuando los operadores de incremento/decremento están en una instrucción más compleja, su posición (pre o post) puede afectar el resultado.}}
 
{{Nota| Cuando los operadores de incremento/decremento están en una instrucción más compleja, su posición (pre o post) puede afectar el resultado.}}
 +
 +
===Operadores de Asignación===
 +
 +
Los '''operadores de asignación''' permiten asignar un valor a una variable. Existen dos tipos principales:
 +
 +
* **Básicos:** Usan el operador "=" para asignar un valor.
 +
* **Combinados:** Combina un operador aritmético o de concatenación con la asignación.
 +
 +
====Operador de Asignación Básico====
 +
 +
El operador "=" **asigna un valor**, pero no actúa como un igual matemático. La asignación retorna el valor que se asignó. 
 +
Por ejemplo:
 +
 +
<source lang=php>
 +
$x = 3;
 +
// La expresión $x = 3 tiene un valor de 3
 +
echo $x; // Mostrará: 3
 +
</source>
 +
 +
En el caso de los **arrays**, el operador "=>" se utiliza para asignar valores a claves nombradas:
 +
 +
<source lang=php>
 +
$array = ["clave1" => "valor1", "clave2" => "valor2"];
 +
echo $array["clave1"]; // Mostrará: valor1
 +
</source>
 +
 +
====Operadores de Asignación Combinados====
 +
 +
Los operadores de asignación combinados permiten realizar una operación y asignar el resultado a la misma variable en un solo paso.
 +
 +
Ejemplo básico:
 +
<source lang=php>
 +
$x = 3;
 +
$x += 5; // Suma 5 a $x
 +
echo $x; // Mostrará: 8
 +
</source>
 +
 +
Esto es equivalente a:
 +
<source lang=php>
 +
$x = $x + 5;
 +
</source>
 +
 +
Otros operadores combinados:
 +
<source lang=php>
 +
$y = "Hola";
 +
$y .= ", ¿Qué tal?"; // Concatenación
 +
echo $y; // Mostrará: Hola, ¿Qué tal?
 +
</source>
 +
 +
====Ejemplo con Operadores de Asignación Combinados====
 +
<source lang=php>
 +
$b = 1;
 +
for ($a = 0; $a < 10; $a++) {
 +
    $b *= 10; // Multiplica $b por 10 en cada iteración
 +
    echo "Valor de \$b = " . $b . "<br>";
 +
}
 +
</source>
 +
 +
Salida del código anterior:
 +
<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>
 +
 +
====Asignación por Referencia====
 +
 +
La '''asignación por referencia''' permite que dos variables apunten al mismo valor, sin crear copias. Esto se realiza con el operador "&".
 +
 +
Ejemplo:
 +
<source lang=php>
 +
$x = 3;
 +
$y = &$x; // $y apunta a la misma referencia que $x
 +
 +
echo "$x, $y"; // Mostrará: 3, 3
 +
 +
$x = 5;
 +
echo "$x, $y"; // Mostrará: 5, 5
 +
</source>
 +
 +
'''Nota:''' Las referencias son similares a un alias o acceso directo en el sistema de archivos.
 +
 +
===Resumen===
 +
* Los operadores básicos asignan valores directamente.
 +
* Los operadores combinados simplifican las expresiones cuando la misma variable participa en la operación.
 +
* La asignación por referencia permite que múltiples variables compartan un mismo valor sin duplicarlo.
 +
 +
===Actividad Práctica===
 +
 +
'''Objetivo:''' Practicar con operadores de asignación básicos, combinados y por referencia.
 +
 +
1. Escribe un programa que utilice al menos dos operadores básicos y dos combinados.
 +
2. Implementa un ejemplo de asignación por referencia.
 +
3. Evalúa el resultado e incluye una breve explicación.
 +
 +
'''Plantilla de Ejemplo:'''
 +
 +
<source lang=php>
 +
<?php
 +
// 1. Operadores básicos
 +
$x = 10;
 +
$y = "Hola";
 +
 +
// 2. Operadores combinados
 +
$x += 5; // $x es ahora 15
 +
$y .= ", ¿Qué tal?"; // $y es ahora "Hola, ¿Qué tal?"
 +
 +
// 3. Asignación por referencia
 +
$z = &$x; // $z apunta a la misma referencia que $x
 +
$z = 20; // Cambiar $z también afecta a $x
 +
 +
// Muestra los resultados
 +
echo "Valor de x: $x\n"; // Debería mostrar 20
 +
echo "Valor de y: $y\n"; // Debería mostrar "Hola, ¿Qué tal?"
 +
echo "Valor de z: $z\n"; // Debería mostrar 20
 +
?>
 +
</source>
 +
 +
 +
 +
 +
 +
  
 
====Operadores con asignación en una misma variable====
 
====Operadores con asignación en una misma variable====
Línea 270: Línea 400:
  
 
<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

Revisión de 21:57 28 nov 2024


Icon key points.gif

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:
//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


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


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 o String
Operadores de string (concatenación) . .= String
OTROS OPERADORES MENOS HABITUALES
Tipo de Operador Operador Tipo de Expresión
Operadores de asignación simple = Valor asignado
Operadores de asignación compuesta += -= *= /= %= **= .= Numérica
Operadores de asignación por referencia & Valor referenciado
Operadores bit a bit & | ^ ~ << >> Numérica
Operador de control de errores @ Silencia errores
Operador de ejecución `comando` Resultado del comando ejecutado



Icon key points.gif

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.



Precedencia de Operadores en PHP

  • La precedencia de los operadores define el orden en que se evalúan cuando hay múltiples operadores en una expresión.
  • Sigue las reglas básicas de las matemáticas:
 - La multiplicación y división tienen mayor prioridad que la suma y la resta.  
 - Los paréntesis siempre tienen la mayor precedencia.
  • Cuando varios operadores tienen la misma precedencia, la asociatividad determina cómo se agrupan:
 - Ejemplo (asociatividad izquierda): `1 + 2 + 3` se evalúa como `(1 + 2) + 3`.  
 - Ejemplo (asociatividad derecha): `$x = $y = $z` se evalúa como `$x = ($y = $z)`.
  • Algunos operadores no tienen asociatividad y no pueden combinarse directamente.
 - Ejemplo incorrecto: `1 < 2 > 1`.  

Nota importante: Usar paréntesis puede hacer que las expresiones sean más legibles, aunque no sean necesarios.

Tabla de Precedencia de Operadores

Precedencia y Asociatividad de Operadores en PHP
Asociatividad Operadores
No asociativo `clone`, `new`
Izquierda `[`
Derecha `**`
Derecha `++`, `--`, `~`, `(int)`, `(float)`, `(string)`, `(array)`, `(object)`, `(bool)`, `@`
No asociativo `instanceof`
Derecha `!`
Izquierda `*`, `/`, `%`
Izquierda `+`, `-`, `.`
Izquierda `<<`, `>>`
No asociativo `<`, `<=`, `>`, `>=`
No asociativo `==`, `!=`, `===`, `!==`, `<>`
Izquierda `&`
Izquierda `^`
Izquierda `
Izquierda `&&`
Izquierda ` `
Izquierda `?:`
Derecha `=`, `+=`, `-=`, `*=`, `**=`, `/=`, `.=`, `%=`, `&=`, `/=`, `^=`, `<<=`, `>>=`, `=>`
Izquierda `and`
Izquierda `xor`
Izquierda `or`
Izquierda `,`

Operadores Aritméticos

Los operadores aritméticos en PHP son similares a los de las matemáticas y realizan operaciones básicas.

Operadores Aritméticos
Operación Representación Descripción
Suma
$x + $y
Devuelve la suma de $x y $y.
Resta
$x - $y
Devuelve la diferencia entre $x y $y.
Multiplicación
$x * $y
Devuelve el producto de $x y $y.
División
$x / $y
Devuelve el cociente de $x dividido por $y. Si ambos son divisibles, devuelve un entero; de lo contrario, un flotante.
Módulo
$x % $y
Devuelve el resto de dividir $x entre $y. Si $x o $y son flotantes, se transforman en enteros antes de la operación.
Exponenciación
$x ** $y
Eleva $x a la potencia de $y.
Negación
-$x
Cambia el signo de $x.

Notas importantes:

  • En módulo, el signo del resultado dependerá del dividendo.
Ejemplo:
-5 % 3
devolverá
-2
.
  • El exponente eleva un número a otro. Ejemplo:
    2 ** 3
    devolverá
    8
    .

Ejemplos Prácticos

1. Preferencia de Operadores:

$num = 5 + 6 * 8 - 4 / 2;
// Mejor usar paréntesis para mayor claridad:
$num = 5 + (6 * 8) - (4 / 2);

Ejecución paso a paso:

$num = 5 + 48 - 2;
$num = 53 - 2;
$num = 51;

2. Uso del módulo:


Icon activity.jpg
Actividad
Buscar los números divisibles por 3 entre 1 y 100.




3. Exponenciación:


Icon activity.jpg
Actividad
Calcular las potencias de 2 del 1 al 15




---

Operadores de Incremento y Decremento

Los operadores de incremento y decremento permiten aumentar o reducir en 1 el valor de una variable.

Incremento y Decremento
Tipo Representación Descripción
Pre-incremento
++$a
Incrementa el valor de $a antes de usarlo.
Post-incremento
$a++
Usa el valor de $a y luego lo incrementa.
Pre-decremento
--$a
Decrementa el valor de $a antes de usarlo.
Post-decremento
$a--
Usa el valor de $a y luego lo decrementa.

Ejemplo de Diferencias entre Pre y Post:

// Pre-incremento
$a = 5;
echo "Pre-incremento: " . ++$a; // Muestra 6
 
// Post-incremento
$a = 5;
echo "Post-incremento: " . $a++; // Muestra 5
echo "Nuevo valor: " . $a; // Muestra 6


(Comment.gif: Cuando los operadores de incremento/decremento están en una instrucción más compleja, su posición (pre o post) puede afectar el resultado.)



Operadores de Asignación

Los operadores de asignación permiten asignar un valor a una variable. Existen dos tipos principales:

  • **Básicos:** Usan el operador "=" para asignar un valor.
  • **Combinados:** Combina un operador aritmético o de concatenación con la asignación.

Operador de Asignación Básico

El operador "=" **asigna un valor**, pero no actúa como un igual matemático. La asignación retorna el valor que se asignó. Por ejemplo:

$x = 3;
// La expresión $x = 3 tiene un valor de 3
echo $x; // Mostrará: 3

En el caso de los **arrays**, el operador "=>" se utiliza para asignar valores a claves nombradas:

$array = ["clave1" => "valor1", "clave2" => "valor2"];
echo $array["clave1"]; // Mostrará: valor1

Operadores de Asignación Combinados

Los operadores de asignación combinados permiten realizar una operación y asignar el resultado a la misma variable en un solo paso.

Ejemplo básico:

$x = 3;
$x += 5; // Suma 5 a $x
echo $x; // Mostrará: 8

Esto es equivalente a:

$x = $x + 5;

Otros operadores combinados:

$y = "Hola";
$y .= ", ¿Qué tal?"; // Concatenación
echo $y; // Mostrará: Hola, ¿Qué tal?

Ejemplo con Operadores de Asignación Combinados

$b = 1;
for ($a = 0; $a < 10; $a++) {
    $b *= 10; // Multiplica $b por 10 en cada iteración
    echo "Valor de \$b = " . $b . "<br>";
}

Salida del código anterior:

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

Asignación por Referencia

La asignación por referencia permite que dos variables apunten al mismo valor, sin crear copias. Esto se realiza con el operador "&".

Ejemplo:

$x = 3;
$y = &$x; // $y apunta a la misma referencia que $x
 
echo "$x, $y"; // Mostrará: 3, 3
 
$x = 5;
echo "$x, $y"; // Mostrará: 5, 5

Nota: Las referencias son similares a un alias o acceso directo en el sistema de archivos.

Resumen

  • Los operadores básicos asignan valores directamente.
  • Los operadores combinados simplifican las expresiones cuando la misma variable participa en la operación.
  • La asignación por referencia permite que múltiples variables compartan un mismo valor sin duplicarlo.

Actividad Práctica

Objetivo: Practicar con operadores de asignación básicos, combinados y por referencia.

1. Escribe un programa que utilice al menos dos operadores básicos y dos combinados. 2. Implementa un ejemplo de asignación por referencia. 3. Evalúa el resultado e incluye una breve explicación.

Plantilla de Ejemplo:

<?php
// 1. Operadores básicos
$x = 10;
$y = "Hola";
 
// 2. Operadores combinados
$x += 5; // $x es ahora 15
$y .= ", ¿Qué tal?"; // $y es ahora "Hola, ¿Qué tal?"
 
// 3. Asignación por referencia
$z = &$x; // $z apunta a la misma referencia que $x
$z = 20; // Cambiar $z también afecta a $x
 
// Muestra los resultados
echo "Valor de x: $x\n"; // Debería mostrar 20
echo "Valor de y: $y\n"; // Debería mostrar "Hola, ¿Qué tal?"
echo "Valor de z: $z\n"; // Debería mostrar 20
?>




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