jueves, 6 de febrero de 2014

PROGRAMACIÓN DE LA FUNCIÓN SENO EN VISUAL BASIC - MÉTODO NUMÉRICO

La función trigonométrica SENO de un ángulo, puede hallarse fácilmente de manera analítica como la razón entre el cateto opuesto y la hipotenusa de un triángulo rectángulo. Sin embargo también puede conocerse el valor del seno de cualquier ángulo, numéricamente, mediante una serie de Taylor. Aquí se explicara la manera de programar una macro de excel en visual basic que resuelva la función seno numéricamente.
Para crear una macro en excel 2007 por ejemplo hay que seguir la ruta: Vista > Macros > ver macros, y luego de escribir el nombre del procedimiento principal, hacer clic en crear:

La función SENO como serie de Taylor está dada por:
Como se puede ver, el valor final de la función sen(x) será el resultado de la suma de todos los términos de la serie. No es necesario calcular todos los términos, sino hasta que el valor final pueda aproximarse, según la tolerancia de error.
El corazón del programa es  un ciclo que en cada vuelta, calcula un término y acumula en una variable los valores de todos los términos; el ciclo será un While que se ejecutará siempre que la diferencia entre aproximaciones sucesivas sea mayor a la tolerancia de error. Una vez que la diferencia entre aproximaciones sucesivas sea menor a la tolerancia de error, el ciclo no se sigue ejecutando y el valor acumulado de todos los términos será el valor final de la función.
A parte de lo fundamental del programa, hay que escribir líneas de código que permitan la interacción entre el usuario y el programa; Para entender las líneas de código para leer, escribir, organizar, puede remitirse a la entrada Detalle de macro de excel programado en basic de éste blog.
Hay que comentar que parte de la solución de cada término de la serie, implica hacer uso de elevación  a potencias y cálculo de factoriales. Dado que la intención de este programa es resolver todo numéricamente, se han creado funciones externas al procedimiento principal para calcular potencias y factoriales, así cuando sea necesario usar estas operaciones, se hace el llamado a la función específica. 

En el enlace de abajo, se puede acceder a la descarga de una hoja de cálculo habilitada para macros de excel, que contiene la macro programada en visual basic para resolver la función seno de un ángulo. 

Para comprobar el funcionamiento del programa, hay que ingresar el valor de un ángulo en grados en la celda B2, luego remitirse a:  Macros > Ver macros y una vez seleccionada la macro 'seno', hacer clic en ejecutar; en la celda B5 se observará el resultado, y entre las columnas D y J se creará una  tabla con los datos de cada iteración hasta llegar al valor final de la función.


PROGRAMACIÓN EN VISUAL BASIC PARA MÉTODOS NUMÉRICOS

Los métodos numéricos se usan para darle solución a ecuaciones o funciones  casi imposibles de resolver por los métodos analíticos. Mediante algún método numérico se crea una aproximación al valor final de la función, cada vez que se encuentra una aproximación nueva se compara con la aproximación anterior; se considera que se ha encontrado el valor final de alguna función siempre que la diferencia entre una aproximación y la anterior sea tan pequeña que se considere que las siguientes aproximaciones  no tendrán diferencias notorias con respecto a la anterior.
De acuerdo al grado de exactitud que se quiera obtener en el valor final, se define la tolerancia de error. La tolerancia de error usualmente es un valor pequeño, se utiliza para determinar cuando la diferencia entre aproximaciones es aceptable, es decir, cuando el valor de una aproximación y el valor de la anterior aproximación difieren en una cantidad menor al valor de la tolerancia de error, se considera que se ha llegado al valor final de la función o solución.
Como es obvio, para llegar al valor final, es necesario operar matemáticamente en cada iteración, y enlistar los valores de cada aproximación para poder compararlos y decidir cuando la diferencia entre los valores de las aproximaciones es tolerable; esto hace que el procedimiento manual sea tedioso (para llegar a algunos valores precisos, es necesario incluso cientos de iteraciones, según el valor de la tolerancia de error), por esto se hace indispensable un programa de computadora que haga las iteraciones a velocidades muy altas y que no se equivoque en los cálculos matemáticos.
Una de las maneras mas populares de realizar un programa que haga el procedimiento por uno, es programar una macro en excel. La comodidad y popularidad que tiene excel para enlistar y tabular  datos en sus celdas, lo hace apropiado para éste objetivo, sin embargo lo más importante es que integrado con excel, encontramos la opción de programar macros en visual basic; de ésta manera el procedimiento de aplicar algún método numérico a una función o ecuación, se reduce a  programar en visual basic un programa (que correrá dentro de excel) con algunos ciclos (iteraciones) y algunas operaciones matemáticas básicas (según la función) y exel, a través de una hoja de calculo irá efectuando las aproximaciones, mostrando sus valores, y decidirá cuando se ha llegado al valor final de una función.
Aunque aquí se ha mencionado a excel, hay que decir que existen varios programas que proporcionan una hoja de cálculo  y la posibilidad de programar en basic. Open office ó Libre office proporcionan software similar a las herramientas de oficina de Microsoft, y perfectamente puede ser usado para éstas tareas.

sábado, 1 de febrero de 2014

DETALLE DE MACRO DE EXCEL PROGRAMADO EN BASIC

En la imagen de abajo se puede observar en detalle el código en visual basic de una macro de Microsoft Excel. Se ha resaltado con diferentes colores, las partes mas sobresalientes del código; a continuación se explicará cada una de las partes:

En color Amarillo se observa la creación del procedimiento llamado 'Seno' y en la parte inferior el cierre del mismo.

Resaltado en azul, está la dimensión de todas las variables se se usarán dentro del procedimiento. Escribir la palabra de código Dim antes de la variable, indica que se le dará dimensión; una variable se puede dimensionar como: Integer, Double, Boolean, String, entre otras.

Con fondo Naranja,  se observa la asignación de valores a las variables definidas y dimensionadas anteriormente. Se asigna un valor a una variable, poniendo el signo = (igual) a la derecha de la misma, y escribiendo el valor luego del signo igual. El valor asignado puede ser una cantidad concreta, otra variable, o incluso el resultado de una operación aritmética entre variables. A las variables de tipo 'String' se les asignan cadenas de caracteres. 

Con color verde,  se resalta la escritura en celdas. en una celda se puede escribir una cantidad o una cadena de caracteres, las cadenas de caracteres deben ir entre comillas dobles " ". La posición de la celda se especifica mediante el comando Cells(), por ejemplo: Cells(2,1).value="x" escribe el caracter x en la ceda A2; Cells(3,2).value=rad escribe el valor de la variable rad en la celda B3.

Resaltado en rojo, se ve la forma de leer un valor desde una celda (observe que se invierte el orden con respecto a <escritura en celda> pero el formato es el mismo). por ejemplo:  equis=Cells(2,2).value lee el valor de la celda B2 y lo asigna a la variable equis. 

Con fondo gris se ve la manera de proponer un ciclo while, y con fondo rosa el llamado a un función.

En la parte de abajo (fondo blanco) se observa la creación de una función. Dicha función será llamada dentro del procedimiento principal cuando sea necesario. 

Por último, es necesario aclarar que la línea de código  Worksheets("Hoja1").Range("C1:K100").ClearContents limpia o borra cualquier contenido que pudiera haber dentro de las celdas del rango C1  a K100.


jueves, 30 de enero de 2014

PROGRAMACIÓN DE MICROCONTROLADORES CON LENGUAJE C

Si bien la programación de  microcontroladores siempre invita a pensar en un largo y complejo código en lenguaje ensamblador (Assembler), no siempre que se quiera programar un microcontrolador es necesario escribir el código en assembler a mano.
Los microcontroladores no funcionan atendiendo instrucciones como las que se escriben con lenguajes de programación, sino que su programa consta de cantidades hexadecimales ubicadas en localidades de memoria especificas que hacen al dispositivo comportarse como el diseñador de firmware desea.
Así como las instrucciones del lenguaje de bajo nivel 'Assembler' pueden ser traducidas a un código hexadecimal, también un programa escrito en lenguaje de alto nivel como C, puede traducirse a un código hexadecimal apto para programar un microcontrolador.
En últimas todo se reduce a un software IDE que permita realizar un firmware en lenguaje C, y que posteriormente genere un archivo .HEX de acuerdo a las instrucciones escritas por el programador. Dos de los IDE que permiten programar microcontroladores usando lenguaje C son: PCWHD IDE Compiler para dispositivos Microchip PIC® y mikroC que tiene versiones para diversas familias y fabricantes; No son los únicos, pero son bastante populares y los códigos  para microcontrolador expuestos en éste blog, están diseñados en alguno de ellos o en ambos.

martes, 28 de enero de 2014

CALCULADOR HTML DISEÑADO EN JAVASCRIPT (EJEMPLO 2)

Calculador para conocer la calificación final de un alumno según sus notas parciales en algún curso. los porcentajes de cada nota parcial pueden ser cambiados al modificar el código. Este calculador está diseñado en javascript; puede observarse la utilización de variables de texto y la adjudicación de atributos como 'solo lectura' a los cuadros de texto.
El diseño en Javascript de este programa hace que pueda ser utilizado en una sección de alguna página web. a manera de ejemplo, se ha colocado el archivo HTML como gadget al costado derecho de la página (en color azul) para que se pueda observar la interacción de este programa dentro del blog.
El enlace de abajo permite descargar el archivo HTML, que se puede abrir con un navegador web, y observar (y modificar) el código en javascript con un editor de texto plano como 'bloc de notas'.
CALCULADOR DE NOTA DEFINITIVA

CALCULADOR HTML DISEÑADO EN JAVASCRIPT (EJEMPLO1)

Calculador de servicios públicos para conocer el costo de los servicios básicos (agua, electricidad y gas residencial). Este ejemplo está diseñado para calcular los valores en pesos colombianos (COP) pero puede ser cambiado a cualquier divisa, editando el código; así como también puede cambiarse los cargos fijos, porcentaje de  descuentos o subsidios y valor de las unidades de medida (KW/h, m^3).
Un selector, permite a quién le interese, conmutar entre el calculo del costo de agua, electricidad o gas, debido a que la manera de cobrar y sobre todo el costo por unidad difiere entre los tres servicios.
El enlace a continuación, permite descargar el archivo HTML. el archivo abre con cualquier navegador web, y puede ser abierto con 'bloc de notas' para observar el código escrito en javascript.
CALCULADOR DE SERVICIOS PÚBLICOS