|
En ocasiones es necesario borrar alguna información que ha sido
escrita en una hoja electrónica, por lo que es importante
conocer una forma de incorporar en la aplicación un
procedimiento de borrado.
Ejemplo 9
Presentamos a continuación un programa que, a partir de un
número construye el triángulo de Pascal de N niveles.
También se incluye un programa que funciona como borrador o destructor del triángulo.
En cada nivel del triángulo hay un uno en los extremos y, a
partir del tercer nivel, cada número, salvo los extremos, es la
suma de los dos de arriba. Concretamente, el triángulo de Pascal
es un arreglo triangular de números de la forma:
Figura 30. Triángulo de Pascal.
Por simplicidad, presentamos un programa que lee el número de
niveles del triángulo de Pascal en la celda E1 y lo despliega de la forma:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
...
El procedimiento para borrar el triángulo también lee el
número de niveles del triángulo de la celda E1.
Tanto la construcción del triángulo como su destrucción pueden ser activados mediante botones. Las instrucciones que realizan estos procedimientos también pueden ser incluidas directamente en el código de los botones, tal y como se detalla a continuación.
El código para la construcción del triángulo quedaría así:
Private Sub EjecucionDePascal_Click()
' Lectura de la cantidad de niveles:
N = Cells(1,5)
' Llenar unos:
For i = 1 To N
Cells(i,1)= 1
Cells(i,i)= 1
Next i
' Llenar el resto:
If N > 2 Then
For i=3 To N
For j=2 To i-1
Cells(i,j)= Cells(i-1,j) + Cells(i-1,j-1)
Next j
Next i
End If
End Sub |
|
El procedimiento para borrar el triángulo también lee el número de niveles y hace el mismo recorrido de celdas que hizo el constructor y en cada celda escribe un valor nulo.
Private Sub Borrador_Click()
N = Cells(1, 5).Value
For i = 1 To N
For j = 1 To i
Cells(i, j).Value = Null
Next j
Next i
End Sub |
|
Figura 31. Triángulo de Pascal construido con 10 niveles.
- Triángulo de Pascal. Haga un programa que, al activarlo desde un botón de
comando, lea un un número
de la celda A1 y construya el
triángulo de Pascal en la forma:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1 ...
Además, incluya un botón que active un destructor
especializado para este triángulo.
- Aritmética entera. En VBA hay dos tipos de división:
a/b es la división corriente (en punto flotante)
y a\b que es la división entera. Por ejemplo, 3/2 = 1.5 mientras que 3\2 = 1.
Hay muchos algoritmos en los que se usa exclusivamente divisón
entera. Veamos un ejemplo.
- Si
es un entero positivo, vamos a calcular el
entero más grande que es menor o igual a , es decir
(`
'
es la parte entera). El algoritmo, que opera en aritmética entera, es el siguiente
- a.)
- Inicio:
- b.)
-
- c.)
- iterar hasta que
- d.)
- el último
es
Por ejemplo si ,
y el último sería
Implemente el algoritmo.
- Cálculo de la raíz cuadrada. Para calcular
con
, se pueden
usar varios algoritmos dependiendo de la precisión y rapidez que se busca.
La calculadoras usualmente tienen implementadas muy buenas subrutinas para
calcular exponenciales y logaritmos por lo que para calcular usan la identidad
En nuestro caso, por simplicidad, vamos a usar un
método iterativo: el método de Newton. Bajo ciertas hipótesis, si es una buena aproximación
a una solución de la ecuación entonces el esquema iterativo
converge a con error
.
Para hallar con , vamos a resolver
la ecuación
con el método
de Newton. Esto nos dará una aproximación a .
Nota: Como es una constante, el esquema iterativo se podría simplificar un poco más en el código
Nota: También se pudo haber usado la ecuación pero el proceso de aproximación es un poco más lento.
Nota: Para una aproximación inicial se podría usar
usando
la solución del problema anterior. En la práctica se usa una aproximación inicial basada en
la representación binaria del número.
- Números primos. Obtenga un programa para hallar el número primo más
cercano a un número
, siendo N un número entero positivo
mayor que uno.3
Por ejemplo, los números primos menores que 50 son:
2, 3, 5, 7, 19, 23, 29, 31, 37, 41, 43.
Si , el programa debería retornar el número 43.
Un procedimiento clásico para hallar todos los números primos
menores que un entero positivo , es la llamada criba de
Eratóstenes. Lo que se hace es colocar en una lista todos los
números del al e ir eliminando de esta lista todos los
múltiplos de (4, 6, 8, ...), todos los múltiplos de
(6, 9, 12, ...), y así sucesivamente, hasta eliminar todos los
múltiplos de los primos que han ido quedando en la lista menores
o iguales que . Para decidir si un número es múltiplo de
otro, usamos la función mod. Esta función
devuelve el resto de una división (entera). Así, si un número es múltiplo de otro,
la división es exacta, o sea, el resto es cero. En código sería así
If m mod n = 0 Then 'si m es múltiplo de n
....
End If
|