Las macros: obtención de números primos. En las siguientes ejemplificaciones vamos a mostrar cómo hacer dos programas, el primero para saber si un número es primo, y el segundo, para obtener listas de números primos.
Para esto, en el primer programa, mostraremos qué funciones se deben utilizar para declarar menús de trabajo, y cómo trabajar con ellas, además de cómo llamar a otras funciones sin utilizar la función que se había visto previamente para este propósito (función call). En el segundo programa, veremos de qué forma se podrán declarar listas de números primos, en un número indicado previamente por nosotros mismos.
Vamos a ver ahora qué es lo que deberemos hacer para poder declarar y utilizar menús de trabajo, aplicándolo de manera práctica para poder declarar si un número dado al programa es primo o no.
Números Primos
Como se puede ver en la pantalla anterior del Editor de Visual Basic, el programa previamente descrito se ha dividido en dos partes. En la parte que vemos aquí (declarada a partir del botón) mediante la función InputBox, se declarará un menú que se verá en la página de la Hoja de Cálculo del Microsoft Excel, presentando el texto “DIME UN NÚMERO”, identificado con la variable numero definida como string.
Esta cadena (que recibe el número que se introduciría desde teclado), mediante la función Val, registrará el valor numérico deseado que se pasaría a la otra función (la que calcularía si dicho número es primo o no).
Esto también se podría haber conseguido de una manera un poco más simple, declarando únicamente valor como entero y guardando el número introducido en la InputBox directamente como entero como se puede ver en la siguiente captura:
Obtención de Números Primos con Macros
Una vez hecho esto, dentro de una condición if y utilizando la función MsgBox (esta función, al igual que la previamente definida InputBox, tiene como misión el mostrar en pantalla un mensaje en forma de menú de Windows, pero ahora presentando un resultado determinado y definido desde programa) se mostraría un mensaje sobre la Hoja de Cálculo, diciendo si el número previamente introducido es primo o no.
Tal como se ha visto previamente, tomando el valor de la variable valor se llama a la función esprimo (x), donde la variable x equivale al valor enviado valor.
Así, definiendo esta función como Boolean, la cual daría como resultado una respuesta verdadera o falsa (true o false), se entraría en un bucle Do While (que utiliza como condiciones que el número introducido es inicialmente primo, para entrar en el bucle, y que el último número por el que se dividirá el introducido, para comprobar si es primo o no, deberá ser menor o igual a la raíz cuadrada del introducido).
En este bucle, dentro se pondría una condición if, en la que indica que para que un número no sea primo, el resto de dividirlo por otro menor que él debe ser cero.
Como se puede comprobar, al trabajar con variables Booleanas, se devuelve o recibe un True o un False, que en función de la definición de la condición if del siguiente programa (el definido por el botón), se dará como resultado lo correspondiente al “si” (if) o al “sino” (else).
Ahora se ve cómo quedaría en la pantalla de la hoja de Excel lo expuesto previamente. Se ve, en la página siguiente, como al hacer clic sobre el botón, aparecería el menú pidiendo un número, y acto seguido se diría si éste es primo o no.
Obtención de Números Primos con Macros: Definición de Programas
Ahora se van a definir los dos programas necesarios para obtener un número determinado de números primos, siguiendo el mismo esquema previamente definido. Primero se ve cómo se define con la función InputBox, un nuevo menú en el que se pide el número de números primos deseado. Además, se incluye una línea de código para poder borrar el listado previo de números primos cada vez que se haga clic sobre el botón (para que salga un nuevo menú).
Esta llamada mediante la función Call se hace a una macro grabada mientras se seleccionaba toda la columna A y se borraba su contenido, como se puede ver.
Aquí se ve como una vez se recibe la información de la otra función, se definen dos contadores para controlar los dos bucles. El primero controlaría la acumulación de números primos hasta la cantidad indicada (x). A continuación, al igual que antes, definiendo la variable primo como booleana, se entra al segundo bucle (encargado del cálculo de los primos). Esto suponiendo que:
- La primera entrada es un número primo (2 es primo)
- El número por el que se divida cada número para comprobar que sea primo deberá ser inferior a la raíz cuadrada de dicho número.
Finalmente, con una condición, se irían acumulando en la columna los diferentes números primos encontrados hasta llegar a la cantidad deseada. Aquí se verá ahora el resultado deseado en cuanto a la obtención de números primos con macros.