Encapsulado y generalización

Por “encapsulado” generalmente se entiende tomar una pieza de código y envolverla en una función, permitiéndole obtener las ventajas de todo aquello para lo que valen las funciones. Hemos visto dos ejemplos de encapsulado, cuando escribimos imprimeParidad en la Sección «Ejecución alternativa» y esDivisible en la Sección «Funciones booleanas«.

Por “generalización” entendemos tomar algo especifico, como imprimir los múltiplos de 2, y hacerlo más general, como imprimir los múltiplos de cualquier entero.

He aquí una función que encapsula el bucle de la sección anterior y la generaliza para imprimir múltiplos de n.

Para encapsular, todo lo que hubimos de hacer fue añadir la primera lı́nea, que declara el nombre de la función y la lista de parámetros. Para generalizar, todo lo que tuvimos que hacer fue sustituir el valor 2 por el parámetro n.

Si llamamos a esta función con el argumento 2, obtenemos la misma salida que antes. Con el argumento 3, la salida es…

…y con argumento 4, la salida es:

A estas alturas es probable que haya adivinado cómo vamos a imprimir una
tabla de multiplicación: llamaremos a imprimeMultiplos repetidamente con diferentes argumentos. De hecho, podemos a usar otro bucle:

Observe hasta qué punto este bucle es similar al que hay en el interior de
imprimeMultiplos.

Todo lo que hicimos fue sustituir la sentencia print() por una llamada a una función.

La salida de este programa es una tabla de multiplicación: