Introducción
Las últimas clases estuvimos viendo como hacer para no tener que escribir tanto, aprendimos sobre los loops y de esa manera ahora cuando queremos repetir muchas veces lo mismo no tenemos que escribirlo muchas veces. Sin embargo todavía hay veces que repetimos muchas líneas que queremos usar, o escribimos un montón de código y queda todo desordenado.
En la clase de hoy vamos a ver como hacer para definir funciones y ordenar nuestros código, cuando hagamos estas funciones vamos a poder usarlas muchas veces siempre que querramos hacer lo mismo.
Una función básica
Para empezar vamos a definir nuestra primer función que diga beeeeeeeeeee
def deci_bee puts ' beeeeeeeeeee...' end
Si ejecutamos el programa, resulta que no pasa nada, no pasa lo mismo que antes y sale por la pantalla beeeeeeeeeee….
Lo que hay que hacer es llamar a la función deci_bee, con lo cual el código quedaría
def deci_bee puts ' beeeeeeeeeee...' end deci_bee
Vemos que en la última línea simplemente escribimos deci_bee, esto hace que se llame a la función y aparezca por pantalla beeeeeeeeeee….
Los parámetros
Si si, esta es una clase aburrida, pero bueno no quedan muchas mas clases aburridas y hay que aprenderse un par de palabritas mas, no es para tanto che !!!. Bueno entre esas palabras aburridas esta parámetro, no es para nada dificil, se trata de los valores que pasamos a las funciones, por ejemplo imaginemos ahora que queremos que diga beeeeeeeeeee… muchas veces, en diferentes momentos, por ejemplo:
def deci_bee cantidad_de_veces puts ' beeeeeeeeeee...' * cantidad_de_veces end
Y ahora queremos escribir un código que diga que tengo una ovejita Pancha que dice 5 veces beeeeee, otra ovejita juliana que dice 7 veces beeee y dolly que dice 14 veces beeeeee, el código podría ser:
def deci_bee cantidad_de_veces puts ' beeeeeeeeeee...' * cantidad_de_veces end puts 'La ovejita Pancha dice: ' deci_bee 5 puts 'La ovejita Juliana dice: ' deci_bee 7 puts 'La ovejita Dolly dice: ' deci_bee 14
El resultado es:
La ovejita Pancha dice:
beeeeeeeeeee… beeeeeeeeeee… beeeeeeeeeee… beeeeeeeeeee… beeeeeeeeeee…
La ovejita Juliana dice:
beeeeeeeeeee… beeeeeeeeeee… beeeeeeeeeee… beeeeeeeeeee… beeeeeeeeeee… beeeeeeeeeee… beeeeeeeeeee…
La ovejita Dolly dice:
beeeeeeeeeee…
Analicemos un poquito este código y de paso repasemos lo de funciones y lo de parámetros, en la parte que dice
def deci_bee cantidad_de_veces puts ' beeeeeeeeeee...' * cantidad_de_veces end
Estamos definiendo, por eso se usa def, el nombre de la función es deci_bee, ahora bien, después de eso hay un espacio y dice cantidad_de_veces este es el parámetro que en este caso, le dice a la función deci_bee cuantas veces se tiene que repetir.
El código que sigue:
puts 'La ovejita Pancha dice: ' deci_bee 5 puts 'La ovejita Juliana dice: ' deci_bee 7 puts 'La ovejita Dolly dice: ' deci_bee 1
Lo que hace es llamar a la función con diferentes valores para el parámetro , por ejemplo cuando hacemos
deci_bee 5
Queremos decir que llame a la función deci_bee y que repita 5 veces.
Devolver un valor.
Bueno ahora como hacemos para devolver un resultado desde la función, porque no siempre queremos solamente que muestre algo sino por ahi que devuelva algo, por ejemplo que devuelva la cantidad de veces que yo quiera la palabra beeeeeee, para hacer esto la función dejaría de imprimir y nada mas y pasaría a devolver un valor, se escribe así:
puts 'La ovejita Pancha dice: ' puts deci_bee 5 puts 'La ovejita Juliana dice: ' + deci_bee 7 puts 'La ovejita Dolly dice: ' p deci_bee (1)
Bueno y este codigo tiene varios pequeños secretos, analicemoslo por partes
puts 'La ovejita Pancha dice: ' puts deci_bee 5
Hasta acá vendría a ser lo que estuvimos aprendiendo al poner puts deci_bee 5, estamos diciendo que llame a la función deci_bee con el parámetro 5 y que imprima el valor que devuelve la misma. Sigamos:
puts 'La ovejita Juliana dice: ' + deci_bee 7
Esto es lo mismo solo que concatenando las dos partes, como yo se que devuelve una palabra puedo hacerlo así. Al final viene
p deci_bee (1)
En donde estamos diciendo que imprima el valor que devuelve la función deci_bee pasándole por parámetro el valor 1, sin embargo esta escrito diferente a como lo venimos haciendo hasta ahora, escribir p solo es lo mismo que escribir puts, y otra forma más prolija de llamar parámetros es pasándolos entre paréntesis
Ejercicios
Bueno ahora hay que combinar un poco todo lo que aprendimos y una gran idea podría ser mezclar lo que sabemos de las listas y lo que acabamos de aprender de las funciones, vamos con dos ejemplos muy famosos y faciles:
Hacer un ejercicio que encuentre el numero mayor de una lista que se escriba por pantalla
Marta, la profesora diabólica tiene la lista de sus alumnos, con las notas del primer, segundo y tercer trimestre, quiere un programa que le diga quienes deben ir a recuperatorio en diciembre y quienes aprobaron la materia.