################################################################# # # # Ejemplos de las Funciones en Ruby # # # ################################################################# # Hacemos que nuestro archivo use Ruby require 'rubygems' include Math ######################################################################### # DEFINICIÓN # # DE FUNCIÓN # # # # Una función es el trozo de un programa que tiene un objetivo # # concreto, por ejemplo sumar dos números. Es decir podéis crear # # una función que se encargue de sumar dos números y muestre la # # suma por pantalla o la almacene en un array como ya habéis # # visto estos días atrás. # # Además, cuando definiis una función, ella por si sola no hace nada, # # entonces para poder usarla hay que hacer lo que se dice: llamar a la # # función que es hacer que se ejecute el código que está dentro. # ######################################################################### ######################################################################### # Para definir una función se hace como: # # def nombre_funcion([variable1, variable2, ...]) # # código de la función # # end # # # # Donde "nombre_funcion" es el nombre de la función que querés definir, # # y entre los () podéis poner variables separadas por comas, aunque # # no todas las funciones necesitan tener variables entre los (). # ######################################################################### ######################################################################### ######################################################################### # EJEMPLO 1 # Un ejemplo sencillo, creamos la función "saludar" que su objetivo es # mostrar un mensaje en pantalla dando los buenos días. puts "EJEMPLO 1".center(80, ' ') puts "Función que da los buenos días".center(80, ' ') # Definimos la función def saludar() puts "Buenos días alumnos!!" end # La ejecutamos escribiendo el nombre de la función con los () y si esta # función necesita parámetros se los ponemos. saludar() puts "\n\n\tPulsa intro para continuar" gets.chomp system('clear') ######################################################################### ######################################################################### # EJEMPLO 2 # Creamos otra función que sea para saludar, pero le ponemos una variable # que será luego el nombre de una persona. puts "EJEMPLO 2".center(80, ' ') puts "Función que pide vuestro nombre y y os da los buenos días".center(80, ' ') def hola_alumno(nombreAlumno) puts "Buenos días #{nombreAlumno}!!" end puts "Dime tu nombre:" nombre = gets.chomp hola_alumno(nombre) puts "\n\n\tPulsa intro para continuar" gets.chomp system('clear') ######################################################################### ######################################################################### # EJEMPLO 3 # Ahora podemos crear una función a la que le pongamos 2 variables que # serán variables numéricas, y su objetivo es mostrar en pantalla la suma puts "EJEMPLO 3".center(80, ' ') def sumar(x, y) suma = x + y puts "#{x} + #{y} = #{suma}" end sumar(1,2) puts "\n\n\tPulsa intro para continuar" gets.chomp system('clear') ######################################################################### ######################################################################### # EJEMPLO 4 # Función factorial de un número. Si no sabéis lo que es el factorial de un # número es para un número dado multiplicarlo por todos los anteriores hasta # multiplicarlo por 1 y el factorial de 1 es igual a 1. # Un ejemplo: el factorial de 4 es -> 4 x 3 x 2 x 1 = 24 puts "EJEMPLO 4".center(80, ' ') def factorial(numero) resultado=1 copiaNumero = numero if numero == 1 puts "El factorial de 1 es: 1" else while numero >=1 do resultado = resultado * numero numero = numero - 1 end puts "El factorial de #{copiaNumero} = #{resultado}" end end factorial(4) puts "\n\n\tPulsa intro para continuar" gets.chomp system('clear') ######################################################################### # UN EJEMPLO MÁS COMPLEJO # ######################################################################### # # En este ejemplo vamos a ver como se calcula la conocida Sucesión de # Fibonacci. Esta sucesión, los dos primeros números son 1 y los que van # a continuación se forman sumando los 2 últimos que hay, por ejemplo para # calcular el 3er número se suman el 1º y el 2º: 1 + 1 = 2. El 4º número # es la suma del 3º y el 2º: 2 + 1 = 3 y así hasta que queramos parar. # Parte de esta sucesión es la siguiente: # 1 1 2 3 5 8 13 21 34....... # # # Así en este ejemplo vamos a llamar a la función pasándole cuántos números # queremos calcular sin incluir los dos primeros de la sucesión (por que estos # dos primeros siempre son fijos) y cada número que vamos calculando lo # guardamos en un array para mostrarlo luego si lo hemos hecho bien. def fibonacci(numeroParada) i=0 resultados=[] resultados << 1 resultados << 1 # Calculamos la sucesión y la vamos almacenando en un array while i < numeroParada do tama = resultados.size suma = resultados[tama-1] + resultados[tama-2] resultados << suma i = i + 1 end # Ahora mostramos por pantalla el resultado de la sucesión calculada for contador in 0..resultados.size-1 do print "[#{resultados[contador]}] " end end fibonacci(6) ################################################################# # EJERCICIOS # ################################################################# # Así que ahora, haced estos ejercicios que están a continuación: # # 1.- Cread una función a la que le paséis como parámetro un array, # y que ordene los elementos que tiene. # # 2.- Otra función que a la que le paséis el mismo array y calcule # la media de los números que tiene. # # 3.- Otra función a la que le paséis dos parámetros que serán las # dimensiones de un rectángulo, y que calcule el área del mismo. # # 4.- Otra función a la que le paséis el radio de una circunferencia # como parámetro y calcule también el área de la misma. # # 5.- Otra función a la que le paséis como parámetros un número (que serán # las horas trabajadas de un obrero) y el precio que vale cada # hora que trabaja el obrero y calculad cuanto debería cobrar este # obrero. ################################################################################# # # # FIN # # # ################################################################################# ################################################################################# # Copyright (c) 2011 - Serafín Vélez Barrera - Oficina de Software Libre # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . #################################################################################