viernes, 21 de noviembre de 2014

Parte 6: Funciones

6.1 Funciones en Javascript

Definimos el concepto de función y aprendemos a crearlas y a llamarlas.


6.1.1 Qué es una función

A la hora de hacer un programa ligeramente grande existen determinados procesos que son más sencillos de resolver que el problema entero. Estos procesos se pueden agrupar en una función, para no repetir una y otra vez ese código en nuestros scripts, simplemente llamamos a la función y ella se encarga de hacer todo lo que debe. 

Podemos ver una función como una serie de instrucciones que englobamos dentro de un mismo proceso. Por ejemplo, en una página web puede haber una función para cambiar el color del fondo y desde cualquier punto de la página podríamos llamarla para que nos cambie el color cuando lo deseemos.

Ya hemos visto alguna función en ejemplos anteriores. Por ejemplo, cuando hacíamos un document.write() en realidad estábamos llamando a la función write() asociada al documento de la página, que escribe un texto en la página.


6.1.2 Cómo se escribe una función

Una función se debe definir con una sintaxis especial:

function nombrefuncion (){ 
  instrucciones de la función 
  ... 
}


Primero se escribe la palabra function, reservada para este uso. Seguidamente se escribe el nombre de la función, puede tener números, letras y algún carácter adicional como en guión bajo. A continuación se colocan entre llaves las distintas instrucciones de la función.

Un ejemplo de función para escribir un mensaje de bienvenida:

function escribirBienvenida(){
  document.write("<H1>Hola a todos</H1>") 
}

Las etiquetas H1 son interpretadas como el significado de la misma, en este caso que escribimos un encabezado de nivel 1.


6.1.3 Cómo llamar a una función

Para ejecutar la función utilizamos su nombre seguido de los paréntesis.

escribirBienvenida()



6.2 Dónde colocamos las funciones

Uso correcto y habitual que se hace de las funciones en Javascript. 
Importante: colocar la función antes de cualquier llamada a la misma.
Existen dos opciones:

a) Colocar la función en el mismo bloque de script: 

<SCRIPT> 
miFuncion() 
function miFuncion(){ 
  //hago algo... 
  document.write("Esto va bien") 
</SCRIPT>


b) Colocar la función en otro bloque de script: También es válido que la función se encuentre en un bloque <SCRIPT> anterior al bloque donde está la llamada.

<HTML>
<HEAD> 
  <TITLE>MI PÁGINA</TITLE> 
<SCRIPT> 
function miFuncion(){ 
  //hago algo... 
  document.write("Esto va bien") 
</SCRIPT> 
</HEAD> 
<BODY> 
<SCRIPT> 
miFuncion() 
</SCRIPT> 
</BODY> 
</HTML>


Veamos un código que daría un error, debido a que hacemos una llamada a una función que se encuentra declarada en un bloque <SCRIPT> posterior:

<SCRIPT> 
miFuncion()               (daría error)
</SCRIPT> 
<SCRIPT> 
function miFuncion(){ 
  //hago algo... 
  document.write("Esto va bien") 
</SCRIPT>


6.3 Parámetros de las funciones

Definir funciones que reciben parámetros y como hacer llamadas a funciones pasando parámetros.


6.3.1 Parámetros

Los parámetros son los valores de entrada que recibe una función. Una suma de dos números tendría como parámetros a esos dos números. Los dos números son la entrada, así como la salida sería el resultado de la suma.

Creamos una función para un mensaje de bienvenida:

function escribirBienvenida(nombre){
  document.write("<H1>Hola " + nombre + "</H1>") 
}

Para llamar a una función que tiene parámetros se coloca entre paréntesis el valor del parámetro:

escribirBienvenida("Alberto García")


Los parámetros pueden recibir cualquier tipo de datos, numérico, textual, boleano o un objeto, por eso debemos tener un cuidado especial al definir las acciones que realizamos dentro de la función y al pasarle valores.


6.3.2 Múltiples parámetros

Una función puede recibir tantos parámetros como queramos y para expresarlo se colocan los nombres de los parámetros separados por comas, dentro de los paréntesis. Veamos rápidamente la sintaxis para que la función de antes reciba dos parámetros, el primero el nombre al que saludar y el segundo el color del texto.

function escribirBienvenida(nombre,colorTexto){
  document.write("<FONT color='" + colorTexto + "'>")
  document.write("<H1>Hola " + nombre + "</H1>")
  document.write("</FONT>")
}


Llamaríamos a la función con esta sintaxis. Entre los paréntesis colocaremos los valores de los parámetros: 

var miNombre = "Pepe" 
var miColor = "red" 
escribirBienvenida(miNombre,miColor)


He colocado entre los paréntesis dos variables en lugar de dos textos entrecomillados. Cuando colocamos variables entre los parámetros en realidad estamos pasando los valores que contienen las variables y no las mismas variables.


6.3.3 Los parámetros se pasan por valor

Aunque modifiquemos un parámetro en una función, la variable original que habíamos pasado no cambiará su valor. Vemos un ejemplo:

function pasoPorValor(miParametro){ 
  miParametro = 32 
  document.write("he cambiado el valor a 32") 
var miVariable = 5 
pasoPorValor(miVariable) 
document.write ("el valor de la variable es: " + miVariable)



6.4 Valores de retorno

Las funciones pueden devolver valores a través de la sentencia return.


6.4.1 Devolución de valores en las funciones

Por ejemplo, una función que calcula el cuadrado de un número tendrá como entrada a ese número y como salida tendrá el valor resultante de hallar el cuadrado de ese número.
Veamos un ejemplo de función que calcula la media de dos números:

function media(valor1,valor2){ 
  var resultado 
  resultado = (valor1 + valor2) / 2 
  return resultado 
}

Para especificar el valor que retornará la función se utiliza la palabra return seguida del valor que se desea devolver. Cuando una función devuelve un valor simplemente se sustituye la llamada a la función por ese valor que devuelve.

Este ejemplo guardará el resultado de la media en una variable para luego imprimirla en la página.

var miMedia 
miMedia = media(12,8) 
document.write (miMedia)


6.4.2 Múltiples return

En realidad en Javascript las funciones sólo pueden devolver un valor, ahora bien, aunque sólo podamos devolver un dato, en una misma función podemos colocar más de un return.
Sólo vamos a poder retornar una cosa, pero dependiendo de lo que haya sucedido en la función podrá ser de un tipo u otro, con unos datos u otros.

En esta función podemos ver un ejemplo de utilización de múltiples return. Se trata de una función que devuelve un 0 si el parámetro recibido era par y el valor del parámetro si este era impar. 

function multipleReturn(numero){ 
  var resto = numero % 2 
  if (resto == 0) 
    return 0 
  else 
    return numero 
}

Para averiguar si un número es par hallamos el resto de la división al dividirlo entre 2.


6.4.3 Ámbito de las variables en funciones

Dentro de las funciones podemos declarar variables. Sobre este asunto debemos de saber que todas las variables declaradas en una función son locales a esa función, es decir, sólo tendrán validez durante la ejecución de la función.

Podría darse el caso de que podemos declarar variables en funciones que tengan el mismo nombre que una variable global a la página. Entonces, dentro de la función, la variable que tendrá validez es la variable local y fuera de la función tendrá validez la variable global a la página.

Si no declaramos las variables en las funciones se entenderá por javascript que estamos haciendo referencia a una variable global a la página, si no está creada la variable la crea, pero siempre global a la página en lugar de local a la función.

jueves, 20 de noviembre de 2014

Parte 5: Estructuras de control

5.1 Estructuras de control en Javascript

Para realizar cosas más complejas en nuestros scripts se utilizan las estructuras de control.
Con ellas podemos realizar tomas de decisiones y bucles.


5.1.1 Toma de decisiones

Sirven para realizar unas acciones u otras en función del estado de las variables. Se enuncian mediante:
  • IF
  • SWITCH

5.1.2 Bucles

Los bucles se utilizan para realizar ciertas acciones repetidamente. En javascript existen varios tipos de bucles:
  • FOR
  • WHILE
  • DO WHILE

5.2 Estructura IF en Javascript

IF es una estructura de control que sirve para realizar unas u otras operaciones en función de una expresión.

La sintaxis de la estructura IF es la siguiente.

if (expresión) { 
 //acciones a realizar en caso positivo 
 //... 
}

Opcionalmente se pueden indicar acciones a realizar en caso de que la evaluación de la sentencia devuelva resultados negativos.

if (expresión) { 
 //acciones a realizar en caso positivo 
 //... 
} else { 
 //acciones a realizar en caso negativo 
 //... 
}

Las llaves engloban las acciones que queremos realizar en caso de que se cumplan o no las expresiones.

Otro detalle que salta a la vista es el sangrado (margen) que hemos colocado en cada uno de los bloques de instrucciones a ejecutar en los casos positivos y negativos.

Ejemplo de condicionales IF:

if (credito >= precio) { 
  document.write("has comprado el artículo " + nuevoArtículo)//enseño compra 
  carrito += nuevoArticulo //introduzco el artículo en el carrito de la compra 
  credito -= precio //disminuyo el crédito según el precio del artículo 
} else { 
  document.write("se te ha acabado el crédito") //informo que te falta dinero 
  window.location = "carritodelacompra.html" //voy a la página del carrito 
}

En este ejemplo lo que hago es comprobar si tengo crédito para realizar una supuesta compra. Para ello miro si el crédito es mayor o igual que el precio del artículo, si es así informo de la compra, introduzco el artículo en el carrito y resto el precio al crédito acumulado. Si el precio del artículo es superior al dinero disponible informo de la situación y mando al navegador a la página donde se muestra su carrito de la compra.


5.2.1 Expresiones condicionales

La expresión a evaluar se coloca siempre entre paréntesis y está compuesta por variables que se combinan entre si mediante operadores condicionales. Los operadores condicionales relacionaban dos variables y devolvían siempre un resultado boleano.

Las expresiones condicionales se pueden combinar con las expresiones lógicas para crear expresiones más complejas. Las expresiones lógicas tienen como operandos a los boleanos que devuelven otro valor boleano. Son los operadores negación lógica, Y lógico y O lógico.

if (bateria < 0.5 && redElectrica == 0)
  document.write("tu ordenador portatil se va a apagar en segundos") 

Lo que hacemos es comprobar si la batería de nuestro supuesto ordenador es menor que 0.5 (está casi acabada) y también comprobamos si el ordenador no tiene red eléctrica (está desenchufado). Luego, el operador lógico los relaciona con un Y, de modo que si está casi sin batería Y sin red eléctrica, informo que el ordenador se va a apagar.



5.3 Estructura IF (parte II)

La estructura if es de las más utilizadas para tomar decisiones en función de la evaluación de una sentencia.

5.3.1 Sentencias IF anidadas

Para hacer estructuras condicionales más complejas podemos anidar (colocar) estructuras IF dentro de otras estructuras IF.

Por ejemplo, si deseo comprobar si un número es mayor menor o igual que otro, tengo que evaluar tres posibilidades distintas. Primero puedo comprobar si los dos números son iguales, si lo son, ya he resuelto el problema, pero si no son iguales todavía tendré que ver cuál de los dos es mayor. Veamos este ejemplo en código:. 

var numero1=23 
var numero2=63 
if (numero1 == numero2){ 
  document.write("Los dos números son iguales")
}else{ 
  if (numero1 > numero2) { 
    document.write("El primer número es mayor que el segundo") 
  }else{ 
    document.write("El primer número es menor que el segundo") 
  } 
}


5.4 Estructura SWITCH de Javascript

La estructura de control switch es utilizada para tomar decisiones en función de distintos estados o valores de una variable.

Switch es una estructura que permite hacer múltiples operaciones dependiendo del estado de una variable. Ésta se utiliza cuando tenemos múltiples posibilidades como resultado de la evaluación de una sentencia. Su sintaxis es la siguiente:


switch (expresión) { 
  case valor1: 
    Sentencias a ejecutar si la expresión tiene como valor a valor1 
    break 
  case valor2: 
    Sentencias a ejecutar si la expresión tiene como valor a valor2 
    break 
  case valor3: 
    Sentencias a ejecutar si la expresión tiene como valor a valor3 
    break 
  default: 
    Sentencias a ejecutar si el valor no es ninguno de los anteriores

}

Veamos un ejemplo de uso de esta estructura. Supongamos que queremos indicar que día de la semana es. Si el día es 1 (lunes) sacar un mensaje indicándolo, si el día es 2 (martes) debemos sacar un mensaje distinto y así sucesivamente para cada día de la semana, menos en el 6 (sábado) y 7 (domingo) que queremos mostrar el mensaje "es fin de semana". Para días mayores que 7 indicaremos que ese día no existe:

switch (dia_de_la_semana) { 
  case 1: 
    document.write("Es Lunes") 
    break 
  case 2: 
    document.write("Es Martes") 
    break 
  case 3: 
    document.write("Es Miércoles") 
    break 
  case 4: 
    document.write("Es Jueves") 
    break 
  case 5: 
    document.write("Es viernes") 
    break 
  case 6:
  case 7: 
    document.write("Es fin de semana")
    break 
  default: 
    document.write("Ese día no existe") 
}


En el caso 6 en realidad no indicamos ninguna instrucción, pero como tampoco colocamos un break se ejecutará la sentencia o sentencias del caso siguiente, que corresponden con la sentencia indicada en el caso 7, que informa que es fin de semana.


5.5 Bucle FOR

Se utiliza para repetir mas instrucciones un determinado número de veces:

for (inicialización; condición; actualización) { 
 //sentencias a ejecutar en cada iteración 

}

El bucle FOR tiene tres partes:

  • La primera parte es la inicialización, donde se coloca la variable que utilizaremos para llevar la cuenta de las veces que se ejecuta el bucle.


  • La segunda parte es la condición que se debe cumplir para que continúe la ejecución del bucle.


  • Por último la actualización, sirve para indicar los cambios que queramos ejecutar en las variables cada vez que termina la iteración del bucle, antes de comprobar si se debe seguir ejecutando.

Después del for se colocan las sentencias que queremos que se ejecuten en cada iteración, acotadas entre llaves:

var i 
for (i=0;i<=10;i++) { 
  document.write(i)
  document.write("<br>") 

}

En este caso se inicializa la variable i a 0. Como condición para realizar una iteración, se tiene que cumplir que la variable i sea menor o igual que 10. Como actualización se incrementará en 1 la variable i.

Si queremos escribir los números del 1 al 1.000 de dos en dos se escribirá el siguiente bucle:

for (i=1;i<=1000;i+=2) 

  document.write(i)

Si queremos contar descendentemente del 343 al 10 utilizaríamos este bucle:

for (i=343;i>=10;i--) 
  document.write(i)

En este caso decrementamos en una unidad la variable i en cada iteración, comenzando en el valor 343 y siempre que la variable tenga un valor mayor o igual que 10.




5.5.1 Ejercicio de ejemplo del bucle for

Un bucle que escriba en una página web los encabezamientos desde <H1> hasta <H6> con un texto que ponga "Encabezado de nivel x":

<H1>Encabezado de nivel 1</H1> 
<H2>Encabezado de nivel 2</H2> 
<H3>Encabezado de nivel 3</H3> 
<H4>Encabezado de nivel 4</H4> 
<H5>Encabezado de nivel 5</H5> 

<H6>Encabezado de nivel 6</H6>

Para ello tenemos que hacer un bucle que empiece en 1 y termine en 6 y en cada iteración escribiremos el encabezado que toca:

for (i=1;i<=6;i++) { 
  document.write("<H" + i + ">Encabezado de nivel " + i + "</H" + i + ">") 

}



5.6 Bucles WHILE y DO WHILE

Diferentes usos de los dos tipos de bucles WHILE


5.6.1 Bucle WHILE

Estos bucles se utilizan cuando queremos repetir la ejecución de unas sentencias un número indefinido de veces, siempre que se cumpla una condición. Sólo se indica la condición que se tiene que cumplir para que se realice una iteración.

while (condición){ 
  //sentencias a ejecutar 


Un ejemplo de código:

var color = "" 
while (color != "rojo"){ 
  color = prompt("dame un color (escribe rojo para salir)","") 

}

Lo más sencillo que se puede hacer con un bucle while. Lo que hace es pedir que el usuario introduzca un color y lo hace repetidas veces, mientras que el color introducido no sea rojo. Para ejecutar un bucle como este primero tenemos que inicializar la variable que vamos a utilizar en la condición de iteración del bucle. Con la variable inicializada podemos escribir el bucle, que comprobará para ejecutarse que la variable color sea distinto de "rojo".

Nota: Hemos utilizado en este ejemplo la función prompt de Javascript, que sirve para mostrar una caja de diálogo donde el usuario debe escribir un texto. 


5.6.2 Bucle DO...WHILE
El bucle do...while se utiliza cuando no sabemos cuantas veces se habrá de ejecutar el bucle. La sintaxis es la siguiente:

do { 
 //sentencias del bucle 
} while (condición) 

El bucle se ejecuta siempre una vez y al final se evalúa la condición para decir si se ejecuta otra vez el bucle o se termina su ejecución.

var color

do {
  color = prompt("dame un color (escribe rojo para salir)","") 
} while (color != "rojo")


5.6.3 Ejemplo de uso de los bucles while

En este ejemplo vamos a declarar una variable e inicializarla a 0. Luego iremos sumando a esa variable un número aleatorio

del 1 al 100 hasta que sumemos 1.000 o más, imprimiendo el valor de la variable suma después de cada operación. Será

necesario utilizar el bucle WHILE porque no sabemos exactamente el número de iteraciones que tendremos que realizar (dependerá de los valores aleatorios que se vayan obteniendo). 

var suma = 0 
while (suma < 1000){ 
    suma += parseInt(Math.random() * 100) 
    document.write (suma + "<br>")
}


5.7 Break y continue

Dos instrucciones que sirven para parar y continuar con la siguiente iteración del bucle respectivamente.

Javascript tiene diferentes estructuras de control para implementar bucles, como FOR, WHILE y DO...WHILE, pero faltan algunas posibilidades de control de las repeticiones de los bucles. Son las instrucciones break y continue:

  • break: Significa detener la ejecución de un bucle y salirse de él.


  • continue: Sirve para detener la iteración actual y volver al principio del bucle para realizar otra iteración, si corresponde. 




5.7.1 Break

Este ejemplo escribe los números del 0 al 9 y en cada iteración del bucle pregunta al usuario si desea continuar. Si el usuario dice cualquier cosa continua, excepto cuando dice "no", situación en la cual se sale del bucle y deja la cuenta por donde se había quedado.

for (i=0;i<10;i++){ 
  document.write (i) 
  escribe = prompt("dime si continuo preguntando...", "si") 
  if (escribe == "no") 
    break 

}


5.7.2 Continue

Sirve para volver al principio del bucle en cualquier momento, sin ejecutar las líneas que haya por debajo de la palabra continue

var i=0 
while (i<7){ 
  incrementar = prompt("La cuenta está en " + i + ", dime si incremento", "si") 
  if (incrementar == "no") 
    continue 
  i++ 


Este ejemplo, en condiciones normales contaría hasta desde i=0 hasta i=7, pero cada vez que se ejecuta el bucle pregunta al usuario si desea incrementar la variable o no. Si introduce "no" se ejecuta la sentencia continue, con lo que se vuelve al principio del bucle sin llegar a incrementar en 1 la variable i, ya que se ignorarían las sentencia que hayan por debajo del continue. 


5.7.3 Ejemplo adicional de la sentencia break

Un ejemplo más práctico sobre estas instrucciones se puede ver a continuación. Se trata de un bucle FOR planeado para llegar hasta 1.000 pero que lo vamos a parar con break cuando lleguemos a 333. 

for (i=0;i<=1000;i++){ 
  document.write(i + "<br>") 
  if (i==333) 
  break; 

}


5.8 Bucles anidados en Javascript

Anidar un bucle consiste en meter ese bucle dentro de otro.

for (i=0;i<10;i++){ 
  for (j=0;j<10;j++) { 
  document.write(i + "-" + j) 
  } 


La ejecución funcionará de la siguiente manera. Para empezar se inicializa el primer bucle, con lo que la variable i valdrá 0 y a continuación se inicializa el segundo bucle, con lo que la variable j valdrá también 0. En cada iteración se imprime el valor de la variable i, un guión ("-") y el valor de la variable j, como las dos variables valen 0, se imprimirá el texto "0-0" en la página web.

Veamos un ejemplo que imprime en la página todas las tablas de multiplicar. Del 1 al 9, es decir, la tabla del 1, la del 2, del 3...



for (i=1;i<10;i++){ 
  document.write("<br><b>La tabla del " + i + ":</b><br>") 
  for (j=1;j<10;j++) { 
    document.write(i + " x " + j + ": ") 
    document.write(i*j) 
    document.write("<br>") 
  } 
}



Con el primer bucle controlamos la tabla actual y con el segundo bucle la desarrollamos. En el primer bucle escribimos una cabecera, en negrita, indicando la tabla que estamos escribiendo, primero la del 1 y luego las demás en orden ascendente hasta el 9. Con el segundo bucle escribo cada uno de los valores de cada tabla.

Parte 4: Operadores

4.1 Operadores Javascript I

Qué es un operador y para qué sirve. Operadores aritméticos y de asignación.

En cualquier lenguaje se utilizan los operadores, que sirven para hacer los cálculos y operaciones necesarios para llevar a cabo tus objetivos.


4.1.1 Ejemplos de uso de operadores

miVariable = 23 * 5

En el ejemplo anterior, el operador * se utiliza para realizar una multiplicación y el operador = se utiliza para asignar el resultado en una variable, de modo que guardemos el valor para su posterior uso. 

Los operadores se pueden clasificar según el tipo de acciones que realizan.


4.1.2 Operadores aritméticos

Son los utilizados para la realización de operaciones matemáticas:

  • + Suma
  • - Resta (también para cambiar el signo)
  • * Multiplicación
  • / División
  • % El resto de la división de dos números
  • ++ Incremento en una unidad y -- Decremento en una unidad (se utiliza con un solo operando)

Ejemplo:

precio = 128 //introduzco un 128 en la variable precio
unidades = 10 //otra asignación
factura = precio * unidades //multiplico precio por unidades, obtengo el valor factura 
resto = factura % 3 //obtengo el resto de dividir la variable factura por 3 
precio++ //incrementa en una unidad el precio (ahora vale 129)


4.1.3 Operadores de asignación

  • = Asignación.
  • = Asignación. Asigna la parte de la derecha del igual a la parte de la izquierda. A la derecha se colocan los valores finales y a la izquierda generalmente se coloca una variable donde queremos guardar el dato. 
  • += Asignación con suma. Realiza la suma de la parte de la derecha con la de la izquierda y guarda el resultado en la parte de la izquierda. 
  • -= Asignación con resta 
  • *= Asignación de la multiplicación 
  • /= Asignación de la división 
  • %= Se obtiene el resto y se asigna

Ejemplo:

ahorros = 7000 //asigna un 7000 a la variable ahorros 
ahorros += 3500 //incrementa en 3500 la variable ahorros, ahora vale 10500 
ahorros /= 2 //divide entre 2 mis ahorros, ahora quedan 5250


4.2 Operadores Javascript II

Operadores de cadenas, lógicos y condicionales.

4.2.1 Operadores de cadenas

Las cadenas de caracteres, o variables de texto, también tienen sus propios operadores, aunque Javascript sólo tiene un operador para cadenas.

Ejemplo:

cadena1 = "hola" 
cadena2 = "mundo" 
cadenaConcatenada = cadena1 + cadena2 //cadena concatenada vale "holamundo"

Se puede ver en este caso que el operador + sirve para dos usos distintos, si sus operandos son números los suma, pero si se trata de cadenas las concatena.

miNumero = 23 
miCadena1 = "pepe" 
miCadena2 = "456" 
resultado1 = miNumero + miCadena1 //resultado1 vale "23pepe" 
resultado2 = miNumero + miCadena2 //resultado2 vale "23456" 
miCadena2 += miNumero //miCadena2 ahora vale "45623"

En el caso del operador +=, si estamos tratando con cadenas de texto y números entremezclados, tratará a los dos operadores como si fuesen cadenas.


4.2.2 Operadores lógicos

Son aquellos que dan como resultado un verdadero o un falso.

Los operadores lógicos pueden utilizarse en combinación con tipos de datos distintos de los boleanos, pero en este caso debemos utilizarlos en expresiones que los conviertan en boleanos. Por ejemplo:

if (x==2 && y!=3){
 //la variable x vale 2 y la variable y es distinta de tres
}

Por una parte x==2 devolverá un true en caso que la variable x valga 2 y por otra, y!=3 devolverá un true cuando la variable y tenga un valor distinto de 3.

  • ! Operador NO o negación. Si era true pasa a false y viceversa. 
  • && Operador Y, si son los dos verdaderos vale verdadero. 
  • || Operador O, vale verdadero si por lo menos uno de ellos es verdadero. 

Ejemplo:

miBoleano = true 
miBoleano = !miBoleano //miBoleano ahora vale false 
tengoHambre = true 
tengoComida = true 
comoComida = tengoHambre && tengoComida


4.2.3 Operadores condicionales

Se utilizan para tomar decisiones en función de la comparación de varios elementos. 
Tabla de operadores condicionales:

== Comprueba si dos números son iguales 
!= Comprueba si dos números son distintos 
> Mayor que, devuelve true si el primer operador es mayor que el segundo 
< Menor que, es true cuando el elemento de la izquierda es menor que el de la derecha 
>= Mayor igual. 
<= Menor igual

4.3 Operadores Javascript III

4.3.1 Operadores a nivel de bit

Su uso se realiza para efectuar operaciones con ceros y unos.


4.3.2 Precedencia de los operadores

En un principio todos los operadores se evalúan de izquierda a derecha, pero existen unas normas adicionales, por las que determinados operadores se evalúan antes que otros.

() [] . Paréntesis, corchetes y el operador punto que sirve para los objetos 
! - ++ -- negación, negativo e incrementos 
* / % Multiplicación división y módulo 
+- Suma y resta 
<< >> >>> Cambios a nivel de bit 
< <= > >= Operadores condicionales 
== != Operadores condicionales de igualdad y desigualdad 
& ^ | Lógicos a nivel de bit 
&& || Lógicos boleanos 
= += -= *= /= %= <<= >>= >>>= &= ^= != Asignación


4.4 Control de tipos

Para comprobar el tipo de un dato se puede utilizar el operador typeof, que devuelve una cadena de texto que describe el tipo del operador que estamos comprobando.

var boleano = true 
var numerico = 22
var numerico_flotante = 13.56 
var texto = "mi texto" 
var fecha = new Date() 
document.write("<br>El tipo de boleano es: " + typeof boleano) 
document.write("<br>El tipo de numerico es: " + typeof numerico) 
document.write("<br>El tipo de numerico_flotante es: " + typeof numerico_flotante) 
document.write("<br>El tipo de texto es: " + typeof texto) 
document.write("<br>El tipo de fecha es: " + typeof fecha)


Si ejecutamos este script obtendremos que en la página se escribirá el siguiente texto: 

El tipo de boleano es: boolean
El tipo de numerico es: number
El tipo de numerico_flotante es: number
El tipo de texto es: string (cadenas de caracteres)
El tipo de fecha es: object (objetos)

Parte 3: Variables y tipos de datos

3.1 Variables en Javascript

Qué es una variable, para qué sirve y cómo declarar variables en Javascript antes de usarlas.

3.1.1 Concepto de variable

Una variable es un espacio en memoria donde se almacena un dato:


sumando1 = 23 
sumando2 = 33
suma = sumando1 + sumando2 

En este ejemplo tenemos tres variables, sumando1, sumando2 y suma.

Las variables han de construirse con caracteres alfanuméricos y el carácter subrayado (_). Existen una serie de reglas para construir nombres para variables.
  • Tienen que comenzar por un carácter alfabético o el subrayado.
  • No podemos utilizar caracteres raros como el signo +, un espacio o un $.
Nombres admitidos:


Edad 
paisDeNacimiento 
_nombre


3.1.2 Declaración de variables en Javascript

Declarar variables consiste en definir y de paso informar al sistema de que vas a utilizar una variable. Para declarar una o varias variables utilizaremos la palabra var.

Cuando queramos declarar una o varias variables:


var operando1 
var operando2

Se puede asignar un valor a la variable cuando se está declarando:


var operando1 = 23 
var operando2 = 33

También se permite declarar varias variables en la misma línea,

var operando1,operando2


3.1 Ámbito de las variables en Javascript

Qué son las variables locales y globales y cómo se trabaja con ellas en Javascript.

3.2.1 Concepto de ámbito de variables

Se le llama ámbito de las variables al lugar donde estas están disponibles. 

Como Javascript se define dentro de una página web, las variables que declaremos en la página estarán accesibles dentro de ella. En Javascript no podremos acceder a variables que hayan sido definidas en otra página. Por tanto, la propia página donde se define es el ámbito más habitual de una variable y le llamaremos a este tipo de variables globales a la página. Pero también existen variables que declararemos y tendrán validez en lugares más acotados.


3.2.2 Variables globales

Para declarar una variable global a la página lo haremos en un script, con la palabra var.

<SCRIPT> 
var variableGlobal 
</SCRIPT>

Las variables globales son accesibles desde cualquier lugar de la página, es decir, desde todos los scripts de la página, incluidos los manejadores de eventos, como el onclick.


3.2.3 Variables locales

También podremos declarar variables en lugares más acotados, como una función. Cuando se declaren variables locales en una función solo podremos acceder a ella cuando estemos en esa función. También pueden ser locales a otros ámbitos, como por ejemplo un bucle. En general, son ámbitos locales cualquier lugar acotado por llaves:

<SCRIPT> 
function miFuncion (){ 
  var variableLocal 
</SCRIPT>

En el script anterior hemos declarado una variable dentro de una función, por lo que esa variable sólo tendrá validez dentro de la función. Las llaves acotan el lugar donde está definida esa función o su ámbito.

La variable que tendrá validez en cualquier sitio de la página es la global, menos en el ámbito donde está declarada la variable local, que será ella quien tenga validez.

<SCRIPT>
var numero = 2 
function miFuncion (){ 
  var numero = 19 
  document.write(numero) //imprime 19 

document.write(numero) //imprime 2 
</SCRIPT>

3.2.4 Diferencias entre declarar variables con var, o no declararlas

Cuando utilizamos var estamos haciendo que la varible que estamos declarando sea local al ámbito donde se declara. si no utilizamos la palabra var para declarar una variable, ésta será global a toda la página. 

<SCRIPT> 
var numero = 2 
function miFuncion (){ 
  numero = 19 
  document.write(numero) //imprime 19 

document.write(numero) //imprime 2 
//llamamos a la función 
miFuncion() 
document.write(numero) //imprime 19 
</SCRIPT> 

En este ejemplo, tenemos una variable global a la página llamada numero, que contiene un 2. También tenemos una función que utiliza la variable numero sin haberla declarado con var, por lo que la variable numero de la función será la misma variable global numero declarada fuera de la función. En una situación como esta, al ejecutar la función se sobreescribirá la variable numero y el dato que había antes de ejecutar la función se perderá.


3.3 Qué podemos guardar en variables

En una variable podemos guardar distintos tipos de datosPor ejemplo podríamos introducir simple texto, números enteros o reales, etc.

Tipos de datos más habituales de Javascript:

  • Números. Tipo numérico, para guardar números como 3 o 7123,22.
  • Cadenas. Guarda un texto. Siempre debemos utilizar las comillas (").
  • Boleanos. (true) or (false)

En realidad nuestras variables no están forzadas a guardar un tipo de datos en concreto. Podemos introducir cualquier información en una variable de cualquier tipo, incluso podemos ir cambiando el contenido de una variable de un tipo a otro sin ningún problema:

var nombre_ciudad = "Valencia" 
var revisado = true 
nombre_ciudad = 32 
revisado = "no"


3.4 Tipos de datos en Javascript

En nuestros scripts vamos a manejar variables diversas clases de información, como textos o números. Cada una de estas clases de información son los tipos de datos.


3.4.1 Tipo de datos numérico

En este lenguaje sólo existe un tipo de datos numérico, independientemente de si son números reales o enteros. Con Javascript también podemos escribir números en otras bases, existen tres bases en las que podemos trabajar:

  • Base 10, es el sistema decimal.
  • Base 8, sistema octal, que utiliza dígitos del 0 al 7
  • Base 16, o sistema hexadecimal.

3.4.2 Tipo boleano


Para realizar acciones si el contenido de una variable es verdadero o falso. Los dos valores que pueden tener las variables boleanas son true o false.

miTexto = "Pepe se va a pescar" 
miTexto = '23%%$ Letras & *--*' 

Todo lo que se coloca entre comillas, como en los ejemplos anteriores es tratado como una cadena de caracteres independientemente de lo que coloquemos en el interior de las comillas. Por ejemplo, en una variable de texto podemos guardar números y en ese caso tenemos que tener en cuenta que las variables de tipo texto y las numéricas no son la misma cosa y mientras que las de numéricas nos sirven para hacer cálculos matemáticos las de texto no.


3.4.4 Caracteres de escape en cadenas de texto

Hay una serie de caracteres especiales que sirven para expresar controles como ser un salto de línea o un tabulador. Estos son los caracteres de escape y que comienza por una contra barra y luego se coloca el código del carácter a mostrar.

Tabla con todos los caracteres de escape:

Salto de línea: \n

Comilla simple: \'
Comilla doble: \" 
Tabulador: \t 
Retorno de carro: \r 
Avance de página: \f 
Retroceder espacio: \b 

Contrabarra: \\