|
|
Línea 148: |
Línea 148: |
| |} | | |} |
| | | |
− | ====Operadores de expresiones numéricas====
| + | ===Operadores Aritméticos=== |
− | <br /> | + | |
− | {{MRM_Puntos clave|
| + | Los '''operadores aritméticos en PHP''' son similares a los de las matemáticas y realizan operaciones básicas. |
− | ;Intervienen con valores numéricos y retorna un número como resultado de su evaluación | + | |
− | }}
| + | {| class="wikitable" |
− | #Aritméticos (+,-,*,/,%,**) | + | |+ style="background:#004080; color:white; font-size:1.25em;" | '''Operadores Aritméticos''' |
− | #Autoincremente/decremento(++ --) | + | |- |
− | #Asignación compuesta (los aritmétcios segidos de una asignación += -= *= ....) | + | ! style="background:#0066CC; color:white;" | '''Operación''' || '''Representación''' || '''Descripción''' |
| + | |- |
| + | | style="background:#E6F0FF;" | Suma || <source lang=php>$x + $y</source> || Devuelve la suma de $x y $y. |
| + | |- |
| + | | style="background:#FFFFFF;" | Resta || <source lang=php>$x - $y</source> || Devuelve la diferencia entre $x y $y. |
| + | |- |
| + | | style="background:#E6F0FF;" | Multiplicación || <source lang=php>$x * $y</source> || Devuelve el producto de $x y $y. |
| + | |- |
| + | | style="background:#FFFFFF;" | División || <source lang=php>$x / $y</source> || Devuelve el cociente de $x dividido por $y. Si ambos son divisibles, devuelve un entero; de lo contrario, un flotante. |
| + | |- |
| + | | style="background:#E6F0FF;" | Módulo || <source lang=php>$x % $y</source> || Devuelve el resto de dividir $x entre $y. Si $x o $y son flotantes, se transforman en enteros antes de la operación. |
| + | |- |
| + | | style="background:#FFFFFF;" | Exponenciación || <source lang=php>$x ** $y</source> || Eleva $x a la potencia de $y. |
| + | |- |
| + | | style="background:#E6F0FF;" | Negación || <source lang=php>-$x</source> || Cambia el signo de $x. |
| + | |} |
| + | |
| + | '''Notas importantes:''' |
| + | * En '''módulo''', el signo del resultado dependerá del dividendo. |
| + | Ejemplo: <source lang=php>-5 % 3</source> devolverá <source lang=php>-2</source>. |
| + | * El '''exponente''' eleva un número a otro. Ejemplo: <source lang=php>2 ** 3</source> devolverá <source lang=php>8</source>. |
| + | |
| + | ====Ejemplos Prácticos==== |
| | | |
− | {{MRM_Puntos clave|title=Valor de retorno|
| + | '''1. Preferencia de Operadores:''' |
− | ===== 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> | | <source lang=php> |
− | $num = 5+6*8-4/2; | + | $num = 5 + 6 * 8 - 4 / 2; |
| + | // Mejor usar paréntesis para mayor claridad: |
| + | $num = 5 + (6 * 8) - (4 / 2); |
| </source> | | </source> |
− | ;Mejor ponerlo así
| + | |
| + | '''Ejecución paso a paso:''' |
| <source lang=php> | | <source lang=php> |
− | $num = 5+(6*8)-(4/2); | + | $num = 5 + 48 - 2; |
| + | $num = 53 - 2; |
| + | $num = 51; |
| </source> | | </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.}}
| |
| | | |
| + | '''2. Uso del módulo:''' |
| {{MRM_Actividad| | | {{MRM_Actividad| |
− | ;Buscar todos los números divisibles por 3 del 1 al 100 | + | ; Buscar los números divisibles por 3 entre 1 y 100. |
− | | + | |
| {{Plegable|hide|Posible solución| | | {{Plegable|hide|Posible solución| |
| <source lang=php> | | <source lang=php> |
− | $lista = null;
| + | for ($n = 1; $n <= 100; $n++) { |
− | for($n=1; $n<=100; $n++){ | + | if ($n % 3 == 0) { |
− | if ($n%3==0) | + | echo "$n, "; |
− | $lista.="$n, "; | + | } |
| } | | } |
− | echo "<h1>$lista</h1>";
| |
| </source> | | </source> |
− | ;Salida | + | ; Salida: Números divisibles por 3 con una coma al final. |
− | [[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
| + | '''3. Exponenciación:''' |
| {{MRM_Actividad| | | {{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> | + | ; Calcular las potencias de 2 del 1 al 15: |
| {{Plegable|hide|Posible solución| | | {{Plegable|hide|Posible solución| |
| <source lang=php> | | <source lang=php> |
− | for($n=1; $n<=15; $n++){ | + | for ($n = 1; $n <= 15; $n++) { |
− | echo "2<sup>$n</sup>=".(2**$n)."<br />"; | + | echo "2^$n = " . (2 ** $n) . "<br />"; |
| } | | } |
| </source> | | </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
| + | ===Operadores de Incremento y Decremento=== |
− | //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
| + | Los operadores de '''incremento y decremento''' permiten aumentar o reducir en 1 el valor de una variable. |
− | //Analiza la salida y prueba deferentes situaciones | + | |
− | </source> | + | {| class="wikitable" |
− | }}
| + | |+ style="background:#004080; color:white; font-size:1.25em;" | '''Incremento y Decremento''' |
| + | |- |
| + | ! style="background:#0066CC; color:white;" | '''Tipo''' || '''Representación''' || '''Descripción''' |
| + | |- |
| + | | style="background:#E6F0FF;" | Pre-incremento || <source lang=php>++$a</source> || Incrementa el valor de $a antes de usarlo. |
| + | |- |
| + | | style="background:#FFFFFF;" | Post-incremento || <source lang=php>$a++</source> || Usa el valor de $a y luego lo incrementa. |
| + | |- |
| + | | style="background:#E6F0FF;" | Pre-decremento || <source lang=php>--$a</source> || Decrementa el valor de $a antes de usarlo. |
| + | |- |
| + | | style="background:#FFFFFF;" | Post-decremento || <source lang=php>$a--</source> || Usa el valor de $a y luego lo decrementa. |
| + | |} |
| | | |
− | <div class="slide">
| + | ====Ejemplo de Diferencias entre Pre y Post:==== |
− | ;Operadores
| + | |
| <source lang=php> | | <source lang=php> |
− | $a=5; | + | // Pre-incremento |
− | if ($a++==5)
| + | $a = 5; |
− | echo '$a que vale '.$a.' dice que vale 5 ???? <br>'
| + | echo "Pre-incremento: " . ++$a; // Muestra 6 |
− | . 'Esto es por que primero compara y luego incrementa<br>';
| + | |
| | | |
− | echo 'ahora $a vale '.$a.'<br>';
| + | // Post-incremento |
− | | + | $a = 5; |
− | if (++$a==6)
| + | echo "Post-incremento: " . $a++; // Muestra 5 |
− | echo 'esto nunca saldrá ya que $a se incrementa antes de comparar';
| + | echo "Nuevo valor: " . $a; // Muestra 6 |
− | else
| + | |
− | echo 'efectivamente ahora $a ya no vale 6 sino '.$a.'<br>';
| + | |
− | ?>
| + | |
| </source> | | </source> |
− | </div>
| |
| | | |
− | <div class="slide">
| + | '''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
| + | |
− | *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==== | | ====Operadores con asignación en una misma variable==== |
(: 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
|
- 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 |
|
Devuelve la suma de $x y $y.
|
Resta |
|
Devuelve la diferencia entre $x y $y.
|
Multiplicación |
|
Devuelve el producto de $x y $y.
|
División |
|
Devuelve el cociente de $x dividido por $y. Si ambos son divisibles, devuelve un entero; de lo contrario, un flotante.
|
Módulo |
|
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 |
|
Eleva $x a la potencia de $y.
|
Negación |
|
Cambia el signo de $x.
|
Notas importantes:
- En módulo, el signo del resultado dependerá del dividendo.
Ejemplo:
devolverá
.
- El exponente eleva un número a otro. Ejemplo: devolverá .
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:
Actividad
- Buscar los números divisibles por 3 entre 1 y 100.
Posible solución |
---|
for ($n = 1; $n <= 100; $n++) {
if ($n % 3 == 0) {
echo "$n, ";
}
}
- Salida
- Números divisibles por 3 con una coma al final.
|
|
3. Exponenciación:
Actividad
- Calcular las potencias de 2 del 1 al 15
-
Posible solución |
---|
for ($n = 1; $n <= 15; $n++) {
echo "2^$n = " . (2 ** $n) . "<br />";
}
|
|
---
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 |
|
Incrementa el valor de $a antes de usarlo.
|
Post-incremento |
|
Usa el valor de $a y luego lo incrementa.
|
Pre-decremento |
|
Decrementa el valor de $a antes de usarlo.
|
Post-decremento |
|
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
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 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
- 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
- == 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';
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