jueves, 16 de abril de 2009

Curso básico de programación con PHP (6) - Los operadores

Llegados a este punto sería interesante saber que operaciones podemos realizar con los datos que almacenamos en nuestras variables. No voy a poner todos los operadores, solamente los más utilizados.

Operadores aritméticos:

var1 + $var2 nos devuelve la suma de $var1 y $var2
$var1 - $var2 nos devuelve la diferencia entre $var1 y $var2
$var1 * $var2 (es un asterisco, olvidaos de la X) nos devuelve el producto de $var1 por $var2
$var1 / $var2 nos devuelve el cociente de $var1 por $var2
$var1 % $var2 nos devuelve el módulo, es decir, el resto de $var1 dividido por $var2

Operadores lógicos:

!$var1    (Negación), TRUE si $a no es TRUE.
$var1 && $var2    (Y), TRUE si tanto $var1 como $var2 son TRUE.
$var1 || $var2    (O),  TRUE si cualquiera de $var1 o $b es TRUE.
$var1 xor $var2 (O exclusivo), TRUE si $var1 o $var2 es TRUE, pero no ambos.

&& y || tienen alias (and y or respectivamente) pero se usan mucho menos. Es decir, puedes usar indistintamente "$var1 && $var2" o "$var1 and $var2"

Operadores de asignación:

= , asigna lo que esté a la derecha a lo que esté a la izquierda;
.=, concatena (junta dos cadenas de texto) lo que esté a la derecha a lo que esté a la izquierda;
+=, *=, /=,-= ,%= , realiza la operación que precede al simbolo = con el valor situado a la derecha sobre el valor situado a la izquierda.

Operadores de comparación:

$var1 == $var2 (Igual), TRUE si $var1 es igual a $var2.
$var1 === $var2 (Idéntico), TRUE si $var1 es igual a $var2, y son del mismo tipo (por ejemplo, los dos son números).
$var1 != $var2    (Diferente),  TRUE si $var1 no es igual a $var2.
$var1 !== $var2  (No idénticos),  TRUE si $var1 no es igual a $var2, o si no son del mismo tipo (por ejemplo, uno es cadena y el otro es un número).
$var1 < $var2    (Menor que),  TRUE si $var1 es escrictamente menor que $var2.
$var1 > $var2    (Mayor que),  TRUE si $var1 es estrictamente mayor que $var2.
$var1 <= $var2    (Menor o igual que),  TRUE si $var1 es menor o igual que $var2.
$var1 >= $var2    (Mayor o igual que),  TRUE si $var1 es mayor o igual que $var2.

Este coñazo que acabo de soltar y que parece tan enrevesado no lo es en cuanto veais los siguientes ejemplos:

<?
$var1=10;
$var2=6;

$resultado=$var1 + $var2; //resultado valdría 16
$resultado=$var1 - $var2; //resultado valdría 4
$resultado=$var1 * $var2; //resultado valdría 60
$resultado=$var1 / $var2; //resultado valdría 1.66666666667
$resultado=$var1 % $var2; //resultado valdría 4
$resultado=$var1 + $var2 * 3; //resultado valdría 28
$resultado=($var1 + $var2) * 3; //resultado valdría 48
?>
<?
$var1=TRUE;
$var2=FALSE;

$resultado=$var1 && $var2; //resultado vale false
$resultado=$var1 || $var2; //resultado vale true
$resultado=!$var1; //resultado vale false
?>
<?
$var1=5;
$var2=3;
$cadena1="Hola ";
$cadena2="Mundo";

$var1+=$var2 //$var1 pasa a valer 8
$cadena1.=$cadena2; //$cadena1 pasa a valer "Hola Mundo"
$cadena2.=$cadena1; //$cadena2 pasa a valer "Mundo Hola Mundo"

$resultado=$cadena1.$cadena2.$var1 //$resultado valdría "Hola Mundo Mundo Hola Mundo 8"
?>
<?
$var1=5;
$var2="5";
$var3=3;

$resultado=$var1 == $var2; //resultado vale true
$resultado=$var1 === $var2; //resultado vale true
$resultado=$var1!=$var3; //resultado vale true
$resultado=$var1>$var3; //resultado vale true
$resultado=$var3>=$var1; //resultado vale false
?>

Como ejercicio propongo que hagáis un programita que nos muestre por pantalla cuantos segundos hay dentro de 732 años. Vamos a suponer que todos los meses tienen 30 días y que no hay años bisiestos. No quiero que simplemente mostréis el número, quiero que haya algo de texto introductorio (ej. "En 732 años hay....").

Y se me ha ocurrido otro más complicadito. Sabiendo que los años bisiestos son aquellos que son divisibles por 4, siempre y cuando no sean divisibles por 100 y que también son bisiestos cuando son divisibles por 400 (independientemente de que sean divisibles por 100). Calcula dentro de una variable si un año es bisiesto.

Ya me contaréis si habéis conseguido hacerlo sin problemas :)

No hay comentarios:

Publicar un comentario