sábado, 1 de octubre de 2011

17. Funciones que retornan un valor.

Son comunes los casos donde una función, luego de hacer un proceso, retorne un valor.
Ejemplo 1: Confeccionar una función que reciba un valor entero comprendido entre 1 y 5. Luego retornar en castellano el valor recibido.


<html>
<head>
</head>
<body>
<script language="javascript">
function convertirCastellano(x)
{
  if (x==1)
    return "uno";
  else
    if (x==2)
      return "dos";
    else
      if (x==3)
        return "tres";
      else
        if (x==4)
          return "cuatro";
        else
          if (x==5)
            return "cinco";
          else
            return "valor incorrecto";
}
var valor;
valor=prompt("Ingrese un valor entre 1 y 5","");
valor=parseInt(valor);
var r;
r=convertirCastellano(valor);
document.write(r);
</script>
</body>
</html>
Podemos ver que el valor retornado por una función lo indicamos por medio de la palabra clave return. Cuando se llama a la función, debemos asignar el nombre de la función a una variable, ya que la misma retorna un valor.

Una función puede tener varios parámetros, pero sólo puede retornar un único valor.

La estructura condicional if de este ejemplo puede ser remplazada por la instrucción switch, la función queda codificada de la siguiente manera:

function convertirCastellano(x)
{
  switch (x) 
  {
    case 1:return "uno";
    case 2:return "dos";
    case 3:return "tres";
    case 4:return "cuatro";
    case 5:return "cinco";
    default:return "valor incorrecto";
  }
}
Esta es una forma más elegante que una serie de if anidados. La  instrucción switch analiza el contenido de la variable x con respecto al  valor de cada caso. En la situación de ser igual, ejecuta el bloque  seguido de los 2 puntos hasta que encuentra la instrucción return o  break.

Ejemplo 2: Confeccionar una función que reciba una fecha con el formato de día, mes y año y retorne un string con un formato similar a: "Hoy es 10 de junio de 2003".

<html>
<head>
</head>
<body>
<script language="javascript">
 
function formatearFecha(dia,mes,año)
{
  var s='Hoy es '+dia+' de ';
  switch (mes) {
  case 1:s=s+'enero ';
         break;
  case 2:s=s+'febrero ';
         break;
  case 3:s=s+'marzo ';
         break;
  case 4:s=s+'abril ';
         break;
  case 5:s=s+'mayo ';
         break;
  case 6:s=s+'junio ';
         break;
  case 7:s=s+'julio ';
         break;
  case 8:s=s+'agosto ';
         break;
  case 9:s=s+'septiembre ';
         break;
  case 10:s=s+'octubre ';
         break;
  case 11:s=s+'noviembre ';
         break;
  case 12:s=s+'diciembre ';
         break;
  } //fin del switch
  s=s+'de '+año;
  return s;
}
document.write(formatearFecha(11,6,2006));
</script>
</body>
</html>
Analicemos un poco la función formatearFecha. Llegan tres parámetros con el día, mes y año. Definimos e inicializamos una variable con:

var s='Hoy es '+dia+' de ';
Luego le concatenamos o sumamos el mes:

s=s+'enero ';
Esto, si el parámetro mes tiene un uno. Observemos como acumulamos lo  que tiene 's' más el string 'enero '.

En caso de hacer s='enero ' perderíamos el valor previo que tenía la variable s.

Por último concatenamos el año:
s=s+'de '+año;
Cuando se llama a la función directamente, al valor devuelto se lo  enviamos a la función write del objeto document. Esto último lo podemos  hacer en dos pasos:

var fec= formatearFecha(11,6,2006);
  document.write(fec);
Guardamos en la variable 'fec' el string devuelto por la función.

PROBLEMAS

1 - Confeccionar una función a la cual le envíe tres enteros y retorne el mayor de ellos.

2 - Elaborar una función a la cual le envíe el valor del lado de un cuadrado y me retorne su perímetro.

3 - Desarrollar una función que retorne la cantidad de dígitos que tiene una variable entera positiva.

4 - Elaborar una función que reciba tres enteros y retorne el promedio.

5 - Confeccionar una función que solicite la carga de 5 valores por teclado y retorne su suma. 

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.