lunes, 20 de abril de 2009

Cómo hacer una pagina web (7) - Listas no ordenadas

En HTML hay tres tipos de listas: no ordenadas, ordenadas y de definición. En este tutorial voy a explicar qué son las listas no ordenadas, pero antes es importante que sepas que un ítem de lista es cada uno de los "puntos" o partes que componen una lista, sea del tipo que sea.

¿Qué es una lista no ordenada o de viñetas?

  • Es aquella en la que si se cambiara el orden de los ítems la información seguiría teniendo sentido.
  • Se crea con el elemento UL (de Unordered List) y uno o más elementos LI (de List Item).
  • Con cada elemento LI se crea un ítem de lista.
  • Los navegadores visuales muestran cada ítem de lista en una línea diferente y con una viñeta precediendo al texto. Las viñetas pueden ser de tipo disc (círculo), circle (circunferencia) y square (cuadrado).

Abre en tu editor de texto la página HTML con recetas que estábamos haciendo. Borra los párrafos que hay después del H3 "Ingredientes" de Sushi (es decir, los dos <p> Lorem ipsum... </p>), y escribe esto en su lugar:

<ul>
<li>Arroz japonés</li>
<li>Vinagre de arroz</li>
<li>x gramos de atún</li>
<li>x gramos de salmón</li>
<li>6 langostinos</li>
<li>Wasabi</li>
<li>Gari</li>
<li>Salsa de soja</li>
</ul>

Una lista no ordenada es ideal para listar ingredientes, ya que el orden de los ingredientes realmente no importa. Como ves, hemos creado nuestra lista no ordenada con las etiquetas de apertura y cierre <ul> y </ul> y varios items de lista entre ellas, cada uno de ellos formado por las etiquetas <li> </li> y un texto entre ambas.

Visualiza el resultado. Yo estoy usando los navegadores Flock, Firefox 3.0.8, Safari 4 Beta, IE 8 y Opera 9.64 y en todos ellos las viñetas de los ítems de lista son del tipo disc, aunque puede que haya alguno en el que no sea así.

Convendría que empezaras a usar varios navegadores para que vieras las diferencias entre ellos, como por ejemplo la diferencia en el tamaño de las viñetas. Según vayamos avanzando verás que de dolores de cabeza pueden llegar a dar las discrepancias entre navegadores, sobre todo las de Internet Explorer.

Listas anidadas

Una lista anidada (nested list) es una lista dentro de una lista. Para anidar una lista lo único que hay que hacer es crearla justo antes de la etiqueta de cierre </li> del ítem de lista donde queramos anidarla.

Por ejemplo, imaginemos que queremos que haya varios tipos de langostinos en nuestra receta; una manera fácil de reflejar esto es crear una nueva lista con los tipos de langostinos que queremos y anidarla dentro del ítem "langostinos".

<ul>
<li>Arroz japonés</li>
<li>Vinagre de arroz</li>
<li>x gramos de atún</li>
<li>x gramos de salmón</li>
<li>6 langostinos <ul> <li>3 blancos</li> <li>3 tigres</li> </ul> </li>
<li>Wasabi</li>
<li>Gari</li>
<li>Salsa de soja</li>
</ul>

Visualiza el resultado. Como ves, para remarcar que una lista es anidada y facilitar la lectura y comprensión de los usuarios, los principales navegadores muestran las listas anidadas indentadas y generalmente con un tipo de viñeta diferente al de la lista de la que dependen. Todos los navegadores que estoy usando emplean en la lista anidada viñetas de tipo circle, salvo Opera que mantiene las viñetas de tipo disc. Si anidárais una lista dentro de esta lista ya anidada, los principales navegadores mostrarían viñetas de tipo square, salvo Opera que mantendría las de tipo disc.

Por supuesto, podrías anidar una lista dentro de una lista dentro de una lista dentro de... pero lo aconsejable, como siempre, es mantener las cosas sencillas siempre que se pueda y facilitar la lectura y comprensión al usuario. Si te hace falta anidar muchas veces es mi opinión que el contenido no está lo suficientamente trabajado para internet.

Cómo cambiar una lista

Como con la mayoría de los elementos HTML, se puede "jugar" con las listas y cambiar su aspecto usando hojas de estilo. Con las hojas de estilo puede conseguirse que en vez de viñetas cada ítem de lista tenga una pequeña imagen, que los ítems no estén en diferentes líneas sino en la misma, que la distancia entre ítems sea mayor o menor, que los ítems anidados tengan un color de texto diferente... y muchísmas cosas más.

En un próximo post os explicaré cómo ver lo "invisible" y así empezar a comprender cómo funcionan las hojas de estilo. Aunque todavía nos queda un tiempo antes de meternos de lleno con ellas, y entonces entenderás por qué he seguido este orden. 8)

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

jueves, 9 de abril de 2009

Curso básico de programación con PHP (5) - Las variables

¿Qué son las variables?. Pues la forma más sencilla de entender que es una variable es imaginarse que es una cajita. Una cajita donde puedes guardar lo que quieras para poder utilizarlo más tarde. En una caja podemos guardar fruta, zapatillas, gafas...pero ¿qué podemos guardar en una variable?. Pues en una variable podemos guardar todas estas cosas:

  • Datos booleanos (boolean): es decir, podemos guardar el valor "true" (verdad) o "false" (falso). Ya veremos más tarde para que nos puede ser útil almacenar esta información.
  • Enteros (integer): ... -2 -1 0 1 2 ...
  • Reales (float): 3.85 -243.22
  • Cadenas (string): Estas siempre van entrecomilladas (con comilla doble " o con comilla simple '). Ej. "No por mucho madrugar amanece más temprano".
  • Después hay otros dos tipos, denominados "compuestos" que veremos más adelante debido a su complejidad. Son los arrays y los objetos (estos últimos los veremos bastante más adelante).
  • Y finalmente hay un tipo especial, NULL, que sirve para indicar que la variable no tiene ningún valor.

¿Cómo se declara una variable?. Una variable se declara anteponiendo el signo dólar $ delante de la palabra que queremos usar como variable. Esa palabra debe empezar siempre por una letra o guión bajo y después por un número indeterminado de letrás, números o guiones bajo. Ejemplos:

<?
$total=5;

$mensaje="Email enviado";

$mesa5=2.33;

$arroz_con_leche=true;

$recibido=NULL;
?>

¿Cómo se imprime (se muestra por pantalla) una variable?. Muy sencillo, simplemente hay que usar la funcion echo (como vimos en el último ejercicio) o la función print. Hay, además de estas dos, otra forma de mostrar el valor de una variable, pero lo veremos cuando empecemos a alternar código PHP con HTML.

<?
$holaMundo="HOLA A TODOS";

echo $holaMundo;

//esto va a volver a repetir el mensaje de arriba

print $holaMundo;
?>

Yo estoy acostumbrado a usar echo pero eso es al gusto del programador. Otras personas, que por ejemplo hayan programado algo en C, probablemente se sientan más familiarizadas con print.

Cuidado con las mayúsculas y las minúsculas porque PHP es sensible a ellas. No es lo mismo $perro que $Perro.  Procurad ponerles nombres lógicos a las variables. Si en una variable vamos a guardar el total de la compra no pongáis "$gatos" o "$ac33" poned "$totalCompra". Os lo digo porque no es la primera vez que me encuentro cosas así.

En el siguiente capítulo veremos como utilizar operadores con esas variables para hacerlas más interesantes y útiles.