viernes, 28 de junio de 2013

Curso programación desde 0 - Tema 7 - Funciones

En este tema vamos a introducirnos en el concepto de las funciones, algo elemental para cualquier lenguaje de programación; una función no es más que un conjunto de órdenes, las cuales se suelen usar en distintos puntos de un programa, así que al agruparlas en una función evitamos repetir el código.
Una función puede devolver un resultado, o solo realizar una serie de operaciones, también admite que se le pasen una serie de parámetros (variables) o ejecutarla sin ellas, todo esto depende del caso, vamos a ver algunos ejemplos.
La estructura de una función sería algo de este estilo:

Función NombreDeLaFuncion (parametro1, parámetro2,….) {
                Operaciones;
                Operaciones;
                …..
}

                 Y ya esta así de sencillo, eso sería una función; una función sencilla sería algo así:

Función EscribeMensaje () {
Muestra “Hola esta es mi primera Función”;
}

                En esta función escribiremos cada vez que la llamemos; lo cual se haría simplemente tecleando EscribeMensaje (); dentro de nuestro código, y lo que nos hará esta función es que cada vez que la llamemos, nos escriba en pantalla Hola esta es mi primera Función.
Esta función no recibe ningún parámetro, ni tampoco devuelve ningún resultado, solo ejecuta una operación, la cual consiste en escribir un mensaje.

Otro ejemplo un poco más complejo seria este:

Función EscribeMensaje (mensaje) {
Muestra mensaje;
}

Esta funcion está esperando un parámetro, el cual se llama mensaje, y lo que hará será escribir en pantalla ese mensaje, si la llamamos del siguiente modo:

MuestraMensaje (“Hola esta es mi primera Función”);

Nos dará el mismo resultado que antes, con la salvedad de que cada vez que la llamemos podremos mandarle un mensaje distinto, el cual sera mostrado.
                Este ejemplo es muy sencillo, y poco práctico, aunque por su simplicidad es el mejor modo de entender que es una función.

                Ahora vamos a ver otra función prácticamente igual de sencilla, pero que nos devuelva un resultado.

Función JuntandoTextos (Mensaje) {
Mensaje = Mensaje + “ Nuevo Texto”;
return Mensaje;
}

Bien vamos a ver unas cuantas cosas un poco complejas, que están escritas en el ejemplo anterior; podemos ver como a la variable Mensaje, la sumamos una cadena de texto, y lo volvemos a guardar en la variable Mensaje; esto es totalmente valido, y si tenemos una variable Mensaje, fuera de la función, esa variable es distinta a la que está dentro; es decir podemos tener 2 variables con el mismo nombre, una dentro y otra fuera de la función, las 2 son distintas, y totalmente ajenas, la una a la otra, podemos cambiar el valor de una que no afectara a la otra.


                Otro detalle importante de la función anterior es que en la última línea tenemos el texto return Mensaje, la palabra return es común para casi todos los lenguajes, he decidido usarla así, por su semejanza al castellano, y por que al ser algo “estándar”, es bueno que lo veáis ya, después de esta introducción sigo con lo que estamos haciendo, en esa línea, retornamos (devolvemos) el valor de Mensaje, si nuestro programa fuera algo así:

Var Mensaje texto;
Mensaje = “Hola estoy mandando un texto”;
Var MensajeAMostrar = JuntandoTextos(Mensaje);
Muestra Mensaje;
Muestra MensajeAMostrar;
Mensaje = mensaje + “ Otro Texto”;
Muestra Mensaje;

Función JuntandoTextos(Mensaje){
Mensaje = Mensaje + “ Nuevo Texto”;
return Mensaje;
}

Podemos ver que tenemos la función declarada al final del código, en la mayoría de lenguajes se puede hacer así, en otros hay que hacer las declaraciones antes de llamar a la función, pero bueno eso ya son características de cada lenguaje, lo importante aquí es ver que tenemos en el mismo código, por un lado el programa, y por otro lado la declaración de la función, por lo que queda más separado, claro, y fácil de mantener, las funciones pueden declararse, al final, principio o entre medias del código, eso depende de las características del lenguaje, y de la necesidad de cada programa; tambien utilizaremos muy a menudo funciones que esten almacenadas en otros archivos distintos al que contiene el programa.

En este programa comenzamos declarando una variable, a la que en la siguiente línea le asignamos un valor, en la tercera línea, declaramos otra variable y en la misma línea le asignamos el valor de la función, pasándole como parámetro la variable Mensaje, el valor que almacenara la variable MensajeAMostrar será: Hola estoy mandando un texto Nuevotexto
En la 4 línea mostramos el valor de la variable Mensaje, lo cual nos dará como resultado: Hola estoy mandando un texto.
En la 5 línea mostramos el valor de la variable MensajeAMostrar, lo cual nos mostrara: Hola estoy mandando un texto Nuevo texto
En la sexta línea cambiamos el valor de la variable Mensaje, y en la séptima lo mostramos, lo cual nos mostrara Hola estoy mandando un texto Otro texto ; ya que como hemos explicado anteriormente la variable Mensaje de fuera de la función es independiente a la variable Mensaje de dentro


Ahora vamos a ver otro ejemplo de funciones, quizás un poco más útil, ya que lo que hemos hecho hasta ahora no nos ha servido para demasiado.

Función Operaciones(Numero1, Numero2){
Var Resultado;
Resultado = Numero1 + Numero2;
Muestra Resultado;
Resultado = Numero1 - Numero2
Muestra Resultado;
Resultado  = Numero1 * Numero2
Muestra Resultado;
Resultado  = Numero1 / Numero2
Muestra Resultado;
}

                Cada vez que llamemos a esta función con 2 variables, nos mostrara en pantalla los 4 resultados posibles, uno tras otro, nos dará la suma, la resta, la división y la multiplicación de ambos números, tan solo escribiendo una llamada a la función como podría ser Operaciones(8, 26);

Un Ejercicio interesante seria hacer un programa que recorra todos los números del 1 al 10 y que por cada número nos diga si es par o es impar.

Recuerda que el mejor modo para la corrección es publicarlo como comentario debajo del ejercicio, así tú y todos tus compañeros podréis aprender y ayudaros los unos a los otros, pero estoy disponible en el email: rogamainformatica@gmail.com

Resto de temas:
Tema 8 - Programación Orientada a Objetos POO
Tema 7 - Funciones (Tema actual)
Tema 6 - Bucles Repetitivos
Tema 5 - Usando condicionales
Tema 4 - Arrays
Tema 3 - Pensando con variables
Tema 2 - Pensando como Programadores
Tema 1 - ¿Que es la programacion?