Upload
daniel2482
View
16
Download
0
Embed Size (px)
DESCRIPTION
Practica2
Citation preview
Página 1 de 16 Fundamentos de programación, Práctica #2
UNIVERSIDAD NACIONAL DE
COLOMBIA
SEDE DE MEDELLÍN ______________________________ FACULTAD NACIONAL DE MINAS
Escuela de Sistemas
Fundamentos de
Programación
PRÁCTICA # 2
OBJETIVOS:
• General: Estudiar y utilizar los elementos del entorno de trabajo, tanto a nivel del Sistema Operativo como del Excel – Visual Basic for Applications (VBA).
• Específicos: (a) Entender y utilizar Explorador de Windows, como herramienta básica de interacción con el Sistema Operativo. (b) Entender y Aplicar el concepto de ambiente de trabajo para el diseño de aplicaciones, con sus componentes básicos: menú principal, barra de herramientas, caja de controles, explorador de proyectos, ventana de propiedades, formulario base de diseño. (c) Diseñar una interfaz sencilla, manipulando los objetos (controles) del tipo: UserForm, Label, TextBox, CommandButton, Image. (d) Entender y utilizar los conceptos de asignación de memoria, operadores aritméticos y de concatenación, eventos, lectura y escritura de variables. (e) Reconocer y manejar los diferentes tiempos en un proyecto VBA: diseño, ejecución, depuración. (f) Emplear la definición, lectura y escritura de variables en Visual Basic for Applications (VBA).
1. EXPLORADOR DE WINDOWS: 1.1 El explorador de Windows es una herramienta básica para interactuar con el Sistema Operativo. Permite efectuar diversas operaciones: visualizar el contenido de archivos y carpetas en cada dispositivo de almacenamiento (diskette, discos duros, CD’s, USB’s, etc.); copiar, cortar, pegar archivos y carpetas; conexión a la Internet. En la figura 1.1, mostrada a continuación, se presenta la interfaz gráfica de usuario del explorador de Windows, con sus diversos componentes:
Página 2 de 16 Fundamentos de programación, Práctica #2
1.2 Operaciones típicas con el explorador de Windows son: • Copiar un archivo o una carpeta: (a) ‐ haga clic en el archivo o en la carpeta que desee copiar. (b) ‐ En el menú Edición, haga clic en Copiar. (También puede hacer clic en ícono Copiar en la barra de herramientas; o elegir la opción Copiar del menú contextual que se activa haciendo clic con el botón derecho del mouse). (c) – Ubíquese en la carpeta o el disco donde desee colocar la copia. (d) ‐ En el menú Edición, haga clic en Pegar. (También puede hacer clic en ícono Pegar en la barra de herramientas). Notas: (i) ‐ Puede seleccionarse más de un archivo o carpeta al sostener la tecla Control e ir haciendo clic en los archivos o carpetas a copiar. (ii) – También se puede copiar de un computador a otro en un entorno de red local o de red remota (por ejemplo, Internet), abriendo la carpeta Mis Sitios de Red. • Abrir un archivo o una carpeta: (a) ‐ Haga doble clic en la unidad que contenga el archivo. (b) ‐ Haga doble clic en el archivo o en la carpeta que desee abrir. • Mover archivos si los arrastra en lugar de utilizar menús: (a) ‐ Haga clic en el archivo o en la carpeta que desee mover (en el panel de detalles). (b) ‐ Asegúrese de que el lugar al que desee arrastrar el archivo o la carpeta esté visible (en el panel arbóreo). (c) – Arrastre, sosteniendo el clic, el archivo o la carpeta hasta su destino, y suelte cuando la ubicación sea la deseada. • Enviar rápidamente archivos y carpetas a otro lugar: (a) ‐ Haga clic derecho en el archivo o en la carpeta que desee enviar. (b) ‐ Seleccione Enviar a y, a continuación, haga clic en la opción del destino que aparece en el submenú desplegado. 2. ENTORNO DE DISEÑO EN VBA: 2.1 En la siguiente figura se muestran los componentes principales del entorno de diseño de aplicaciones de Visual Basic for Applications (VBA). Con estos elementos se elaboran los proyectos Visual Basic en el curso. (Para más detalles véase las notas de clase, o apuntes).
Página 3 de 16 Fundamentos de programación, Práctica #2
2.2 Algunas operaciones típicas con el entorno de desarrollo en VBA son: • Ocultar/Visualizar diversos componentes como a caja de controles, la barra de herramientas, la ventana de propiedades, la ventana exploradora de proyectos (explorador de proyectos), el formulario. • Ubicar controles sobre el formulario de diseño. • Establecer propiedades al formulario y a los diversos controles ubicados sobre él. • Asociar programas (procedimientos, subprogramas, rutinas, funciones) con los diversos controles (objetos) que así lo requieran. 3. EJERCICIO 1: El Índice de Masa Corporal – IMC de una persona puede calcularse de manera sencilla mediante la siguiente fórmula:
( )( )metrosenaltura
kgsenpesoIMC 2=
Así por ejemplo, una persona que pese 65 kgs. y mida 1.72 mts. tendría un IMC de 21.97 (65/1.722) Desarrollar un proyecto en VBA para calcular este valor. SOLUCIÓN: 3.1 Activar el entorno de trabajo Excel‐VBA en Excel 2007 (Vista)
Página 4 de 16 Fundamentos de programación, Práctica #2
Para activar el entorno de trabajo Excel‐VBA si se tiene instalado el Windows Vista con su respectivo Office simplemente desde la barra de tareas haga clic en INICIO y luego en Microsoft Office Excel1 (es posible que primero se tenga que ubicar el puntero del mouse en Microsoft Office, dependiendo de la máquina en la cual se esté trabajando). Aparecerá la ventana o escritorio principal de Excel. Por ejemplo, en la figura siguiente se muestra el escritorio principal de Excel 2007 (versión en español). La flecha roja señala la opción y el ícono de Visual Basic, dentro de la ficha (pestaña o lengüeta) llamada Programador.
Esta ficha se activa haciendo clic en el botón de Windows (fecha verde) y haciendo de nuevo clic en la pestaña Opciones de Excel (parte inferior de la figura 1.4, página siguiente), señala con la flecha roja. Al hacer clic en la pestaña Opciones de Excel se llega al panel de diálogo mostrado en la figura 1.5. Allí se debe activar la opción Mostrar ficha Programador en la cinta de opciones. A partir de esta activación, siempre se mostrará la ficha Programador, a partir de la cual se accesa el entorno de VBA. Sin embargo, independientemente de si la ficha Programador está o no activada, siempre es posible llegar al entorno VBA pulsando las teclas Alt F11 a la vez (sostenga la tecla Alt y pulse la tecla F11).
1 Microsoft Office, Microsoft Office Excel son marcas registradas de Microsoft Corporation (http://www.microsoft.com/spanish/)
Página 5 de 16 Fundamentos de programación, Práctica #2
Página 6 de 16 Fundamentos de programación, Práctica #2
3.2 Activar el entorno de trabajo Excel‐VBA en Excel 2003 (XP) Si en vez de tener instalado el Windows Vista con su respectivo Office se tiene la versión anterior (Office 2003) se debe proceder de la siguiente manera. Primero debe permitírsele al Excel ejecutar macros, para esto ir a Herramientas – Macro – Seguridad como se muestra en la Figura 1.6.
Luego donde dice “Nivel de seguridad” debe seleccionarse Medio o Bajo como se muestra en la Figura 1.7. En el primer caso aparecerá una ventana de confirmación cada vez que se abra el archivo de Excel correspondiente para determinar si efectivamente se desea habilitar las macros. En el segundo caso todas las macros podrán ser ejecutadas sin confirmación previa. Como esta propiedad de seguridad no se define para un archivo en particular si no para todo el Excel en general, se recomienda seleccionar la opción “Medio” para evitar que otras macros externas puedan hacer alguna operación no deseada.
Página 7 de 16 Fundamentos de programación, Práctica #2
3.3 Elaborar el proyecto en VBA Una vez se define el nivel de seguridad apropiado (sólo se debe hacer una vez en el equipo siempre y cuando luego no se cambie esta configuración) se puede proceder a crear el proyecto en VBA. Para esto Se selecciona Herramientas – macro – Editor de Visual Basic como se muestra en la Figura 1.8. Una forma abreviada de hacer esto, al igual que en Excel 2007 es oprimir las teclas Alt + F11.
Página 8 de 16 Fundamentos de programación, Práctica #2
Luego de entrar al entorno de programación VBA se puede iniciar diseñando la Interfaz del Usuario dando clic derecho en el proyecto y seleccionando Insertar – UserForm, como se muestra en la Figura 1.9.
Una vez hecho esto aparecerá una ventana (form o formulario) en blanco como se muestra en la parte derecha de la Figura 1.10. También debe aparecer el cuadro de herramientas (que se muestra en la parte izquierda de la misma figura) donde se encuentran los controles típicos para desarrollar una interfaz. La explicación de cada uno se presenta a continuación.
Control Descripción Formulario (form) Corresponde al formulario (ventana) en sí Etiqueta (label) Sirve generalmente para agregar texto a manera de títulos,
anotaciones, etc. Cuadro de texto (textbox)
Sirve generalmente para las operaciones de lectura/escritura de las variables de entrada y salida respectivamente
Botón (command button)
Sirve para realizar alguna operación bien sea de lectura o escritura de datos, de transformación, o cualquier combinación de estas
Marco (frame) Puede servir para diseñar el formulario de manera ordenada subdividiendo la ventana total en diferentes secciones. Por ejemplo: sección de lectura de variables de entrada, sección de escritura de variables de salida, sección de operaciones (botones). La utilización de este control es opcional.
Página 9 de 16 Fundamentos de programación, Práctica #2
Téngase en cuenta que cualquiera de estos controles tiene una serie de propiedades que pueden ser modificadas usando la ventana de propiedades que sale al darle clic derecho al control que se agregue al formulario y seleccionando propiedades, o mediante la opción Ver‐ Ventana de propiedades (o abreviado como F4) y señalando el control correspondiente (el formulario en sí mismo es también un control con propiedades propias). De cualquiera de las dos formas debe aparecer la ventana de propiedades para el control seleccionado como se muestra en la Figura 1.11 (en este caso las propiedades corresponden a un control tipo “label” que se describirá a continuación).
Propiedad Descripción (Name) Identificador único que tendrá el control dentro del proyecto. Se
recomienda utilizar nombres mnemotécnicos que consideren tanto el tipo de control como la función asociada (por ejemplo botonAceptar, textoResultados, etiquetaTitulo, etc.)
Backcolor Color de fondo Caption Texto del control, aplica para todos los controles excepto para el cuadro de
texto Font Propiedades del texto: tipo de letra, tamaño, estilos y efectos Forecolor Color del texto Text Texto que aparece en el control cuadro de texto
*Nota: Estas propiedades pueden ser definidas tanto en tiempo de diseño (como en estos ejemplos) o en tiempo de ejecución (de manera dinámica) al interactuar con el usuario.
Página 10 de 16 Fundamentos de programación, Práctica #2
Teniendo en cuenta lo anterior es fácil diseñar una interfaz para el problema planteado como se muestra en la Figura 1.12.
Página 11 de 16 Fundamentos de programación, Práctica #2
Una vez definida la interfaz se procede a pasar el algoritmo al código correspondiente en VBA. Para hacer esto se puede seleccionar Ver – Código (o abreviado como F7) o dando doble clic en cualquier parte del formulario.
Como el VBA es un entorno de programación estructurado basado en eventos (ciertas operaciones se llevan a cabo cuando cierto evento ocurre sobre un control) el código se distribuye como se muestra en la figura 1.13. Así por ejemplo, al dar doble clic en el control botonCalcular aparecería en el entorno de programación el cursor situado al interior de:
marcoEntrada
marcoResultados
marcoOpciones
botonCalcular botonSalir
etiquetaPeso
etiquetaEstatura
etiquetaIMC
textoPeso
textoEstatura
textoIMC
Página 12 de 16 Fundamentos de programación, Práctica #2
Private Sub botonCalcular_Clic() End Sub Esto significa que lo que se escriba al interior de esas instrucciones será lo que se ejecutaría cuando al correr el programa se de clic sobre el botón Calcular. Nótese que en esa instrucción aparece “botonCalcular_Clic()” y no “Calcular_Clic()” pues el nombre del control (que se definió con la propiedad Name) es “botonCalcular” mientras que “Calcular” es simplemente lo que aparece en pantalla. En este caso lo que se debe ejecutar es precisamente lo que estamos buscando con este algoritmo que es calcular el IMC de una persona. Si hiciéramos el diagrama de caja respectivo de este problema sería algo como:
Que traducido a VBA es precisamente lo que aparece en la parte superior de la Figura 1.13 para botonCalcular. Es necesario recordar que TODAS las variables (las de entrada, las de salida y las intermedias) que se utilicen en el código deben ser declaradas, esto con el fin que el lenguaje de programación sepa de qué tipo de datos es cada una. Un listado de cómo se declaran en VBA los tipos de datos más importantes vistos en la clase teórica se presenta a continuación:
Tipo de dato Sintaxis en VBA Entero Corto Integer Entero Largo Long Real Simple Single Real Doble Double Cadena de texto String Lógico Boolean
Luego de la declaración de variables aparece: peso = Val(textoPeso.Text) estatura = Val(textoEstatura.Text) Las cuales asignan valores a las variables peso y estatura respectivamente, a partir de lo digitado en las correspondientes cuadros de texto en tiempo de ejecución. Con la función Val() se asigna el valor numérico de lo digitado; si se digitan números obviamente los valores asignados corresponden a esos números; si se digitan letras y otros caracteres, se asignará cero. Luego aparece el cálculo de la variable de salida: IMC = peso / (estatura ^ 2)
Leer peso
Leer estatura
IMC = peso / estarura2
Mostar IMC
Página 13 de 16 Fundamentos de programación, Práctica #2
Y por último aparece la instrucción: textoIMC.Text = IMC, que lo que hace es precisamente poner en la caja de texto textoIMC el valor calculado. Como en la interfaz diseñada también aparece un botón para salir, es necesario agregar el código correspondiente. En VBA la instrucción que se emplea para terminar un programa es End como se muestra en la parte inferior de la figura 1.13. En este caso como dicha instrucción se encuentra al interior de Private Sub botonSalir_Clic(), esto significa que cuando al ejecutar el programa se de clic sobre ese boton el programa terminaría (se cerraría la ventana). 4. EJERCICIO 2: Teniendo en cuanta lo aprendido hasta el momento, realice un proyecto en VBA para leer dos valores numéricos y tener la opción de realizar sobre ellos las operaciones aritméticas básicas. Una posible interfaz se muestra en la Figura 1.14.
Nótese que además de los botones para las 4 operaciones aritméticas básicas y el botón de salir, hay dos botones adicionales: “Leer Datos” y “Borrar” para hacer el programa un poco más completo. Como se muestra en la parte media de la figura 1.15 el botonBorrar lo único que hace es poner el contenido de los cuadros de texto vacíos. Para este problema como se tienen varias y no solo una operación (a diferencia del ejercicio anterior) es conveniente hacer dos cosas:
• Primero, las variables (tanto de entrada como de salida) no se definen al interior del código de cada operación si no de manera general como se muestra en la parte superior figura 1.15. Para hacer esto solo es necesario seleccionar en la ventana del código la opción “General” que aparece de primera en la lengüeta que sale en la parte superior izquierda de esa ventana. Lo que se escriba allí aparecerá aparte de la programación de los controles y será general para todos ellos. Esto significa que las variables que se declaren allí (al igual que como lo estamos haciendo para este ejercicio) serán “comunes” para todos los controles y por tanto no es necesario declararlas en cada uno.
• Segundo, y tendiendo en cuenta lo anterior, la lectura de los datos de entrada no se hace en cada operación, si no que se tiene un botón específico (botonLeer) para hacerlo como se
Página 14 de 16 Fundamentos de programación, Práctica #2
muestra en el segundo bloque presentado en la figura 1.15. Esto sirve para no tener que copiar el mismo código en todos los botones de operaciones. Nótese que al final aparece la instrucción Msgbox “Datos leidos”. Esta sirve para que aparezca una ventana de información con el texto correspondiente.
Nota: Un apóstrofe (o comilla simple) indica un comentario. Los comentarios son ignorados a tiempo de ejecución; sólo sirven para explicar (documentar) ciertas partes de un código como se muestra en la parte final de la figura 1.15 (en botonSalir). Normalmente en VBA tales comentarios se muestran en verde (salvo que se cambie la convención de colores del editor). Aparte de la definición (general) de variables y de los botones de “Leer Datos”, “Borrar” y “Salir” se encuentran los botones para las 4 operación básicas. Cada uno tendrá un código muy simple como el que se muestra a manera de ejemplo para botonSumar en la figura 1.15. LA única operación que tiene una restricción especial es la de dividir, puesto que si B toma el valor de 0 no se puede realizar (división indefinida). Para tener en cuenta esta situación es posible emplear la instrucción SI … DE LO CONTRARIO … FIN SI, cuya traducción a VBA se presenta en la figura 1.16
Página 15 de 16 Fundamentos de programación, Práctica #2
Nótese en este código que si B es diferente de 0, la operación se realiza normalmente y el resultado se imprime, mientras que en caso contrario (si B es cero) se mostraría un mensaje de información indicando la situación. 5. EJERCICIOS ADICIONALES: a) Puede extenderse los conceptos vistos en la presente práctica para diseñar y programar una calculadora sencilla como la ilustrada en la figura 1.17.
b) Efectuar, por lo menos otra sesión práctica. Por ejemplo, diseñar una interfaz para leer tres valores numéricos, correspondientes a los lados de un triángulo, y calcular el área del triángulo empleando la fórmula de Herón de Alejandría [5], siendo A, B, C los lados y S el semiperímetro (semisuma de los lados):
REFERENCIAS:
))()(( CSBSAASAREA −−−=
Página 16 de 16 Fundamentos de programación, Práctica #2
Walkenbach, J.: «The Spreadsheet Page/Excel Developers Tips for VBA users», J‐Walk & Associates, Inc. http://www.j‐walk.com/ss/ (visita en Junio 21 de 2008).
Alvarez‐Montoya, William: «Fundamentos de Programación con VBA y Excel», en la página web http://virtual2.unalmed.edu.co/moodle.
Chapra, Steven C.; Canale, Raymond P.: «Numerical Methods for Engineers, with software applications», fourth edition, McGraw‐Hill, 2002, chapters 1, 2.
Herón de Alejandría, en Gacetilla matemática http://www.arrakis.es/~mcj/heron.htm Barker, R.M.; Harris, P.M.; Parkin, G.I.: «Developing Advanced Scientific Engineering Spreadsheet
Applications», December 2006, The UK’s National Measurement Laboratory, http://www.npl.co.uk/ (visitada en Junio 22 de 2008).
Walkenbach, J.: «Microsoft Office Excel 2007 VBA Programming for DUMMIES», Wyley Publishing, Inc., 2007. (puede leerse online en http://www.docstoc.com/docs/document‐preview.aspx?doc_id=1659168; capítulos: 3, 7, 10, 14, 15, 16, 17, 22.