Algoritmos y Programación — Parte VII

Procedimientos y Funciones

Juan Manrique
6 min readApr 29, 2019

Los procedimientos y funciones permiten la organización y la reutilización de código. En lugar de escribir largas secciones de código, por lo general, repetido, es posible definir bloques de instrucciones lógicamente independientes y con una única finalidad, que luego pueden ser invocados cuando se necesiten, sin tener que reescribirlo una y otra vez. Los procedimientos y funciones, también conocidos en el paradigma orientado a objetos como métodos, son simples de escribir y usar: sólo necesitan ser declarados con un nombre para poder ser usados.

La diferencia básica entre los procedimientos y las funciones es que los procedimientos no devuelven ningún valor, mientras que las funciones, obligatoriamente, deben devolver un valor, lo que las hace equivalentes a un valor. En el caso del lenguaje Ruby, no existen los procedimientos, sólo funciones.

La instrucción para devolver el valor la función va

Las funciones deben diseñarse de modo que tengan una única funcionalidad (Principio de Responsabilidad Única) escrita genéricamente, a fin de que funcionen para la mayor cantidad de casos posibles (si no todos), por lo que pueden recibir valores que parametricen el computo y, en consecuencia, el resultado que devolverá la función. Estos valores (llamados parámetros) son dados a la función al momento de ser invocados.

Definir una función

# Estructura general de una funcion
def nombre_funcion( param1, param2, …, paramN )
.
. # sentencias
.
return valor
end
# Ejemplo de funcion 1
# Devuelve un string con un saludo
def saluda_a( nombre )
return “Hola “ + nombre
end
# Invocamos la función
puts saluda_a( “Juca” ) # Imprime “Hola Juca” en el terminal
# Ejemplo de funcion 2
# Devuelve la suma de los dos parámetros que recibe
def suma( val1, val2 )
return val1 + val2
end
s = suma( 3, 5 ) # La variable ‘s’ vale 8
s = suma( 6, 1 ) # La variable ‘s’ vale 7
s = suma( suma( 9, 4 ), suma( 2, 3 ) ) # La variable ‘s’ vale 18
# Ejemplo de funcion 3
# No devuelve nada (procedimiento) ni recibe parámetros.
# Sólo imprime un string.
def inutil
puts ““
end
# Se invoca la funcion
inutil

La publicación anterior trata sobre Arreglos Bidimensionales.

Ejercicios propuestos

1.- Escriba el código Ruby de un procedimiento que reciba un saludo y el nombre de una persona y muestre un mensaje saludando a la persona por pantalla.

2.- Escriba el código Ruby de una función que reciba un saludo y el nombre de una persona y devuelva un mensaje saludando a la persona.

3.- Escriba el código Ruby de un procedimiento que calcule el cuadrado de un número cualquiera y lo muestre en pantalla.

4.- Escriba el código Ruby de una función que devuelva el cuadrado de un número cualquiera.

5.- Escriba un procedimiento en Ruby que pida un nombre, un apellido y un lugar y a raíz de ahí muestre en pantalla una pequeña historia.

6.- Escriba en Ruby una función que devuelva la media de los tres números que recibe por parámetros.

7.- Escriba una función Ruby que llene un arreglo de 20 enteros.

8.- Escriba un procedimiento en Ruby que muestre el contenido del array anterior.

9.- Escriba en Ruby una función que devuelva el promedio de los números contenidos en un arreglo recibido por parámetro.

10.- Codifique un procedimiento y/o función Ruby, según corresponda, que muestre por pantalla la tabla de dividir de un número recibido por parámetro. Ejemplo de salida por pantalla para n = 6:

6 entre 6 = 1
12 entre 6 = 2
18 entre 6 = 3
24 entre 6 = 4
30 entre 6 = 5
36 entre 6 = 6
42 entre 6 = 7
48 entre 6 = 8
54 entre 6 = 9
60 entre 6 = 10

11.- Codifique un procedimiento o función (según convenga) Ruby que muestre por pantalla si un número es par o impar.

12.- Codifique un procedimiento o función (según convenga) Ruby que muestre por pantalla si un número es primo o no.

13.- Codifique un procedimiento o función Ruby (según convenga) que reciba un string y reemplace cada caracter por su posición en el alfabeto.

14.- Escriba un programa en Ruby, usando procedimientos y/o funciones, que reciba un arreglo “a” de caracteres y devuelva un arreglo con las vocales presentes en el arreglo recibido y la cantidad de ocurrencias de cada vocal. Ej.
Entrada:

Salida:

15. Escriba un programa en Ruby, usando procedimientos y/o funciones, que reciba una matriz de enteros y devuelva un arreglo que contenga la columna de la matriz cuya sumatoria de elementos es la máxima de la matriz. Ej.
Entrada:

Salida:

16.- Escriba un programa en Ruby que pida por pantalla un número del 1 al 10 y, mediante un procedimiento, muestre por pantalla el número escrito en letras.

17.- Escriba un programa en Ruby que simule una calculadora sencilla con las siguientes operaciones:

 1 - Suma
2 - Resta
3 - Multiplicación
4 - División
5 - Residuo
6 - Mayor
7 - Menor
8 - Suc. Fibonacci
9 - Salir

La calculadora debe solicitar, en primer lugar, la operación que se desea realizar. Luego, debe solicitar los 2 valores numéricos a operar. En el caso de la Suc. Fibonacci, debe solicitar sólo un valor.

Debe estructurar completamente el código fuente mediante procedimientos y/o funciones: el código debe comenzar invocando sólo un procedimiento (llamado main), debe usar un procedimiento para mostrar el menú de opciones, debe pedir los datos en el main e implementar funciones para realizar los cálculos.

18.- Escriba un programa en Ruby, usando procedimientos y/o funciones, que pida por pantalla una temperatura en grados Celsius, muestre un menú para convertirlos a Fahrenheit o Kelvin y muestre el equivalente por pantalla.

19.- Escriba un programa Ruby que reciba un número romano y devuelva su equivalente en notación decimal.

20.- Escriba un programa Ruby que reciba un número entero del 0 al 999 y devuelva su equivalente en números romanos.

21.- Escriba un programa en Ruby que gestione un array de 15 alumnos con sus códigos, nombres, apellidos, direcciones, teléfonos y correos. Las operaciones de usuarios posibles son crear, modificar, borrar, buscar y ordenar por código.

22.- Escriba el código Ruby de una versión sencilla del juego “3 en línea” (la vieja).

23.- Escriba un programa en Ruby que gestione un restaurante. Para ello se seguirán las siguientes instrucciones:
a - El restaurante dispone de una carta de 6 platillos, de los cuales debemos saber el nombre, el precio de venta y el tipo de comida que es (aperitivo, carne, pescado, postre).
b - Se debe poder añadir, modificar o eliminar cualquier plato de la carta.
c - Cuando se realiza un pedido se introducirán los platos requeridos y al final se mostrará por pantalla el precio total.
d - Cuando se cierra el restaurante el programa mostrará por pantalla el dinero total ganado.

24.- Escriba un programa en Ruby que implemente los diferentes métodos de ordenamiento de arreglos utilizando funciones:

a- Rellenar un arreglo.
b- Mostrar en pantalla todos los valores del arreglo.
c- Ordenar por método intercambio.
d- Ordenar por método selección.
e- Ordenar por método inserción.
f- Ordenar por método burbuja.
g- Ordenar por método quick sort.

25.- Escriba el código Ruby que genere un tablero válido de sopa de letras a partir de un conjunto de palabras reales.

--

--

Juan Manrique

SW developer. Coding Mentor @academia_hack. Agile promoter. Writer. Simplifier. Motivator. Venezuelan Rums Expert Evangelist. At your services.