0% encontró este documento útil (0 votos)
82 vistas81 páginas

Manual VBingqui 2010

Este documento presenta una introducción a Visual Basic 2010. Explica que es un lenguaje de programación visual para desarrollar aplicaciones de Windows. Describe algunas de sus características principales como los modos de diseño y ejecución, los formularios y controles, los objetos y propiedades, los nombres de objetos y los eventos. El documento proporciona una visión general del lenguaje para desarrolladores nuevos y experimentados.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
82 vistas81 páginas

Manual VBingqui 2010

Este documento presenta una introducción a Visual Basic 2010. Explica que es un lenguaje de programación visual para desarrollar aplicaciones de Windows. Describe algunas de sus características principales como los modos de diseño y ejecución, los formularios y controles, los objetos y propiedades, los nombres de objetos y los eventos. El documento proporciona una visión general del lenguaje para desarrolladores nuevos y experimentados.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 81

1

ING. ROLANDO BASURCO CARPIO


VISUAL BASIC 2010

2
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

VISUAL BASIC 2010


1. INTRODUCCIÓN
Visual Basic 2010 es uno de los lenguajes de programación que más entusiasmo
despiertan entre los programadores de PCs, tanto expertos como novatos. En el caso de
los programadores expertos por la facilidad con la que desarrollan aplicaciones complejas
en poquísimo tiempo (comparado con lo que cuesta programar en Visual C++, por
ejemplo). En el caso de los programadores novatos por el hecho de ver de lo que son
capaces a los pocos minutos de empezar su aprendizaje. El precio que hay que pagar por
utilizar Visual Basic 2010 es una menor velocidad o eficiencia en las aplicaciones.
Visual Basic 2010 es un lenguaje de programación visual, también llamado lenguaje de
4ª generación. Esto quiere decir que un gran número de tareas se realizan sin escribir
código, simplemente con operaciones gráficas realizadas con el ratón sobre la pantalla.
Visual Basic 2010 es también un programa basado en objetos, aunque no orientado a
objetos como C++ o Java. La diferencia está en que Visual Basic 2010 utiliza objetos
con propiedades y métodos, pero carece de los mecanismos de herencia y
polimorfismo propios de los verdaderos lenguajes orientados a objetos como Java y
C++.
En este primer capítulo se presentarán las características generales de Visual Basic
2010, junto con algunos ejemplos sencillos que den idea de la potencia del lenguaje y del
modo en que se utiliza.
1.1 PROGRAMAS PARA EL ENTORNO WINDOWS
Visual Basic 2010 es uno de la última versión de Visual Basic lanzado por Microsoft en
2010. La última versión es Visual Basic 2010, puso en marcha este año. VB2010 es casi
similar a Visual Basic 2005, pero se ha añadido muchas características nuevas. Visual
Basic 2010 es un Object-Oriented Programming derecho completo (POO) Idioma, por lo
que se ha puesto al día con otros lenguajes de POO como C + +, Java, C # y otros. Sin
embargo, usted no tiene que saber programación orientada a objetos para aprender
VB2010. De hecho, si usted está familiarizado con Visual Basic 6, usted puede aprender
VB2010 sin esfuerzo porque la sintaxis y la interfaz son similares. Visual Basic 2010
Express Edition está disponible gratuitamente para su descarga desde el sitio de
Microsoft.
1.1.1 Modo de Diseño y Modo de Ejecución
La aplicación Visual Basic de Microsoft puede trabajar de dos modos distintos: en modo
de diseño y en modo de ejecución. En modo de diseño el usuario construye
interactivamente la aplicación, colocando controles en el formulario, definiendo sus
propiedades, y desarrollando funciones para gestionar los eventos.
La aplicación se prueba en modo de ejecución. En ese caso el usuario actúa sobre el
programa (introduce eventos) y prueba cómo responde el programa. Hay algunas
propiedades de los controles que deben establecerse en modo de diseño, pero muchas
otras pueden cambiarse en tiempo de ejecución desde el programa escrito en Visual
Basic 2010, en la forma en que más adelante se verá.
También hay propiedades que sólo pueden establecerse en modo de ejecución y que no
son visibles en modo de diseño.
Todos estos conceptos –controles, propiedades, eventos, etc.- se explican en los
apartados siguientes.
1.1.2 Formularios y Controles
Cada uno de los elementos gráficos que pueden formar parte de una aplicación típica de
Windows es un tipo de control: los botones, las cajas de diálogo y de texto, las cajas de
selección desplegables, los botones de opción y de selección, las barras de desplazamiento
horizontales y verticales, los gráficos, los menús, y muchos otros tipos de elementos son
controles para Visual Basic 2010. Cada control debe tener un nombre a través del cual

3
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

se puede hacer referencia a él en el programa. Visual Basic 2010 proporciona nombres


por defecto que el usuario puede modificar.
En la terminología de Visual Basic 2010 se llama formulario (form) a una ventana. Un
formulario puede ser considerado como una especie de contenedor para los controles.
Una aplicación puede tener varios formularios, pero un único formulario puede ser
suficiente para las aplicaciones más sencillas. Los formularios deben también tener un
nombre, que puede crearse siguiendo las mismas reglas que para los controles.
1.1.3 Objetos y Propiedades
Los formularios y los distintos tipos de controles son entidades genéricas de las que puede
haber varios ejemplares concretos en cada programa. En programación orientada a
objetos (más bien basada en objetos, habría que decir) se llama clase a estas entidades
genéricas, mientras que se llama objeto a cada ejemplar de una clase determinada. Por
ejemplo, en un programa puede haber varios botones, cada uno de los cuales es un objeto
del tipo de control command button, que sería la clase.
Cada formulario y cada tipo de control tienen un conjunto de propiedades que definen
su aspecto gráfico (tamaño, color, posición en la ventana, tipo y tamaño de letra, etc.) y
su forma de responder a las acciones del usuario (si está activo o no, por ejemplo). Cada
propiedad tiene un nombre que viene ya definido por el lenguaje.
Por lo general, las propiedades de un objeto son datos que tienen valores lógicos (True,
False) o numéricos concretos, propios de ese objeto y distintos de las de otros objetos de
su clase. Así pues, cada clase, tipo de objeto o control tiene su conjunto de propiedades,
y cada objeto o control concreto tiene unos valores determinados para las propiedades de
su clase.
Casi todas las propiedades de los objetos pueden establecerse en tiempo de diseño y
también -casi siempre- en tiempo de ejecución. En este segundo caso se accede a sus
valores por medio de las sentencias del programa, en forma análoga a como se accede a
cualquier variable en un lenguaje de programación. Para ciertas propiedades ésta es la
única forma de acceder a ellas. Por supuesto Visual Basic 2010 permite crear distintos
tipos de variables, como más adelante se verá.
Se puede acceder a una propiedad de un objeto por medio del nombre del objeto a
que pertenece, seguido de un punto y el nombre de la propiedad, como por ejemplo
optColor.objName. En el siguiente apartado se estudiarán las reglas para dar nombres
a los objetos.
1.1.4 Nombres de objetos
En principio cada objeto de Visual Basic 2010 debe tener un nombre, por medio del cual
se hace referencia a dicho objeto. El nombre puede ser el que el usuario desee, e incluso
Visual Basic 2010 proporciona nombres por defecto para los diversos controles. Estos
nombres por defecto hacen referencia al tipo de control y van seguidos de un número que
se incrementa a medida que se van introduciendo más controles de ese tipo en el
formulario (por ejemplo, VScroll1, para una barra dedesplazamiento -scroll bar- vertical,
HScroll1, para una barra horizontal, etc.).
Los nombres por defecto no son adecuados porque hacen referencia al tipo de control,
pero no al uso que de dicho control está haciendo el programador. Por ejemplo, si se utiliza
una barra de desplazamiento para introducir una temperatura, conviene que su nombre
haga referencia a la palabra temperatura, y así cuando haya que utilizar ese nombre se
sabrá exactamente a qué control corresponde. Un nombre adecuado sería por ejemplo
hsbTemp, donde las tres primeras letras indican que se trata de una horizontal scroll bar,
y las restantes (empezando por una mayúscula) que servirá para definir una temperatura.
Existe una convención ampliamente aceptada que es la siguiente: se utilizan siempre tres
letras minúsculas que indican el tipo de control, seguidas por otras letras (la primera
mayúscula, a modo de separación) libremente escogidas por el usuario, que tienen que
hacer referencia al uso que se va a dar a ese control. La Tabla 1.1 muestra las abreviaturas
de los controles más usuales, junto con la nomenclatura inglesa de la que derivan. En este

4
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

mismo capítulo se verán unos cuantos ejemplos de aplicación de estas reglas para
construir nombres.

Abreviatura Control Abreviatura Control


chk check box cbo combo y drop-list box
btn button dir dir list box
drv drive list box fil file list box
frm form fra frame
hsb horizontal scrolll bar img image
lbl label lin line
lv listView mnu menu
rdb radio button pic pictureBox
shp shape txt tex texbox
Tmr timer vsb vertical scroll bar
Tabla 1.1. Abreviaturas para los controles más usuales.
1.1.5 Eventos
Ya se ha dicho que las acciones del usuario sobre el programa se llaman eventos. Son
eventos típicos el clicar sobre un botón, el hacer doble clic sobre el nombre de un fichero
para abrirlo, el arrastrar un icono, el pulsar una tecla o combinación de teclas, el elegir
una opción de un menú, el escribir en una caja de texto, o simplemente mover el ratón.
Más adelante se verán los distintos tipos de eventos reconocidos por Windows y por
Visual Basic 2010.
Cada vez que se produce un evento sobre un determinado tipo de control, Visual Basic
2010 arranca una determinada función o procedimiento que realiza la acción
programada por el usuario para ese evento concreto. Estos procedimientos se llaman con
un nombre que se forma a partir del nombre del objeto y el nombre del evento, separados
por el carácter (_), como por ejemplo txtBox_click, que es el nombre del procedimiento
que se ocupará de responder al evento click en el objeto txtBox.
1.1.6 Métodos
Los métodos son funciones que también son llamadas desde programa, pero a diferencia
de los procedimientos no son programadas por el usuario, sino que vienen ya pre-
programadas con el lenguaje. Los métodos realizan tareas típicas, previsibles y comunes
para todas las aplicaciones. De ahí que vengan con el lenguaje y que se libere al usuario
de la tarea de programarlos. Cada tipo de objeto o de control tiene sus propios métodos.
Por ejemplo, los controles gráficos tienen un método llamado Line que se encarga de
dibujar líneas rectas. De la misma forma existe un método llamado Circle que dibuja
circunferencias y arcos de circunferencia Es obvio que el dibujar líneas rectas o
circunferencias es una tarea común para todos los programadores y que Visual Basic
2010 da ya resuelta.
1.1.7 Proyectos y ficheros
Cada aplicación que se empieza a desarrollar en Visual Basic 2010 es un nuevo
proyecto. Un proyecto comprende otras componentes más sencillas, como por ejemplo
los formularios (que son las ventanas de la interfase de usuario de la nueva aplicación)
y los módulos (que son conjuntos de funciones y procedimientos sin interfase gráfica de
usuario).

5
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

¿Cómo se guarda un proyecto en el disco? Un proyecto se compone siempre de varios


ficheros (al menos de dos) y hay que preocuparse de guardar cada uno de ellos en el
directorio adecuado y con el nombre adecuado. El comando File/Save Project As. el
entorno muestra el cuadro de diálogo Guardar como, preguntar al usuario un nombre de
archivo.
Clicando en el botón Save en la barra de herramientas se actualizan todos los ficheros del
proyecto. Si no se habían guardado todavía en el disco, Visual Basic 2010 abre cajas de
diálogo Save As por cada uno de los ficheros que hay que guardar.
1.2 EL ENTORNO DE PROGRAMACIÓN VISUAL BASIC 2010
El entorno de desarrollo integrado al iniciar VB2010 Express se muestra en el siguiente
diagrama. El IDE se
compone de un par de
paneles, a saber:
Los proyectos recientes,
Panel que muestra la lista
de proyectos que han
sido creados por usted
recientemente.
La VB exprés Titulares
panel-Proporciona
últimas noticias en línea
acerca de Visual Basic
2010 Express. Se dará a
conocer las nuevas
versiones y
actualizaciones.

Para comenzar a crear


tu primera aplicación,
es necesario hacer clic
en el archivo y
seleccione nuevo
proyecto. Aparecerá el
cuadro de diálogo
Nuevo proyecto
VB2010 siguiente.
En la parte inferior de
este cuadro de diálogo,
puede cambiar el
nombre del proyecto
por defecto
WindowsApplication1 a
algún otro nombre que
te gusta, por exampe,

MyFirstProgram. Después de haber cambiado el nombre del proyecto, haga clic en Aceptar
para continuar. Aparecerá la siguiente IDE de Windows, es casi similar a Visual Basic 6.
Consiste en una forma vacía, la caja de herramientas de los controles comunes, el
explorador de soluciones y de las propiedades.

6
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

1. La barra de títulos, la barra de menús y la barra de herramientas de Visual Basic 2010


en modo Diseño (parte superior de la pantalla).
2. Caja de herramientas (toolbox) con los controles disponibles (a la izquierda de la
ventana).
3. Formulario (form) en gris, en que se pueden ir situando los controles (en el centro).
Está dotado de una rejilla (grid) para facilitar la alineación de los controles.
4. Ventana de proyecto, que muestra los formularios y otros módulos de programas que
forman parte de la aplicación (arriba a la derecha).
5. Ventana de Propiedades, en la que se pueden ver las propiedades del objeto
seleccionado o del propio formulario (en el centro a la derecha). Si esta ventana no
aparece, se puede hacer visible con la tecla <F4>.
6. Ventana FormLayout, que permite determinar la forma en que se abrirá la aplicación
cuando comience a ejecutarse (abajo a la derecha).
Existen otras ventanas para edición de código (Code Editor) y para ver variables en
tiempo de ejecución con el depurador o Debugger (ventanas Immediate, Locals y
Watch). Todo este conjunto de herramientas y de ventanas es lo que se llama un entorno
integrado de desarrollo o IDE (Integrated Development Environment).
Construir aplicaciones con Visual Basic 2010 es muy sencillo: basta crear los controles
en el formulario con ayuda de la toolbox y del ratón, establecer sus propiedades con
ayuda de la ventana de propiedades y programar el código que realice las acciones
adecuadas en respuesta a los eventos o acciones que realice el usuario. A continuación,
tras explicar brevemente cómo se utiliza el Help de Visual Basic, se presentan algunos
ejemplos ilustrativos.
1.3 EL HELP DE VISUAL BASIC 2010
El Help de Visual Basic 2010 es de los mejores que existen. Además de que se puede
buscar cualquier tipo de información con la función Index, basta seleccionar una
propiedad cualquiera en la ventana de propiedades o un control cualquiera en el formulario
(o el propio formulario), para que pulsando la tecla <F1> aparezca una ventana de ayuda
muy completa. De cada control de muestran las propiedades, métodos y eventos que
soporta, así como ejemplos de aplicación. También se muestra información similar o
relacionada. Existe además un breve pero interesante curso introductorio sobre Visual
Basic 2010 en MSDN.

7
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

1.4 ALGORITMOS
¿Qué es un Algoritmo?
Existen muchas y muy variadas definiciones de lo
que es un algoritmo, dependiendo del autor
podemos distinguir las siguientes:
• Conjunto de reglas que permiten obtener
un resultado determinado a partir de
ciertas reglas definidas.
• Conjunto de pasos que nos permite
obtener un dato.
• Algoritmo es una secuencia finita de
instrucciones, cada una de las cuales tiene
un significado preciso y puede ejecutarse
con una cantidad finita de esfuerzo en un
tiempo finito. Ha de tener las siguientes
características: legible, correcto, modular,
eficiente, estructurado, no ambiguo y a
ser posible se ha de desarrollar en el
menor tiempo posible.
• Un algoritmo es el conjunto de
operaciones y procedimientos que deben seguirse para resolver un problema.
A lo anterior debemos agregar que un algoritmo debe cumplir además con las siguientes
características:
• Finitud: el algoritmo debe acabar tras un número finito de pasos. Es más, es casi
fundamental que sea en un número razonable de pasos.
• Definibilidad: el algoritmo debe definirse de forma precisa para cada paso, es
decir, hay que evitar toda ambigüedad al definir cada paso. Puesto que el lenguaje
humano es impreciso, los algoritmos se expresan mediante un lenguaje formal, ya
sea matemático o de programación para un computador.
• Entrada: el algoritmo tendrá cero o más entradas, es decir, cantidades dadas
antes de empezar el algoritmo. Estas cantidades pertenecen además a conjuntos
especificados de objetos. Por ejemplo, pueden ser cadenas de caracteres, enteros,
naturales, fraccionarios, etc. Se trata siempre de cantidades representativas del
mundo real expresadas de tal forma que sean aptas para su interpretación por el
computador.
• Salida: el algoritmo tiene una o más salidas, en relación con las entradas.
• Efectividad: se entiende por esto que una persona sea capaz de realizar el
algoritmo de modo exacto y sin ayuda de una máquina en un lapso de tiempo finito.
Uno de los algoritmos más antiguos conocidos es el algoritmo de Euclides. El término
algoritmo proviene del matemático Muhammad ibn Musa al-Khwarizmi, que vivió
aproximadamente entre los años 780 y 850 d.C. en la actual nación Iraní. El describió la
realización de operaciones elementales en el sistema de numeración decimal. De al-
Khwarizmi se obtuvo la derivación algoritmo.
El Lenguaje Informático
Ya vimos varias definiciones de un algoritmo, pero ahora debemos comprender un nuevo
término y que es el de "Lenguaje Informático".
El lenguaje informático es aquel por medio del cual un algoritmo se codifica a un sistema
comprensible por el ordenador o computadora. Este tipo de lenguaje es más cercano a la
máquina que al ser humano y podemos distinguir distintos tipos dependiendo de la
proximidad a la maquina. Se denomina lenguaje de alto nivel aquel que es más cercano a
la comprensión humana y lenguaje de bajo nivel a aquellos que son más comprensibles
por la máquina.

8
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

En concreto, nosotros vamos a estudiar un lenguaje que es el Visual Basic 2010 que es
tan potente y rápido, pues las funciones principales representan las funciones más básicas
del ordenador
A menudo los algoritmos requieren una organización bastante compleja de los datos, y es
por tanto necesario un estudio previo de las estructuras de datos fundamentales. Dichas
estructuras pueden implementarse de diferentes maneras, y es más, existen algoritmos
para implementar dichas estructuras. El uso de estructuras de datos adecuadas puede
hacer trivial el diseño de un algoritmo, o un algoritmo muy complejo puede usar
estructuras de datos muy simples.
Realización de un Algoritmo
Para la realización de un algoritmo es necesario realizar una secuencia de pasos para llegar
a cumplir con la resolución de un problema dado. Para ello, definiremos los siguientes
pasos:
1. Análisis previo del Problema: Se debe realizar un análisis del funcionamiento del
problema antes que se realice cualquier algoritmo. Esto es para poder obtener los
requerimientos que deberá satisfacer el algoritmo luego de ser ejecutado.
2. Definición de Requerimientos: Los problemas a solucionar, esto es, por ejemplo, el
sumar dos números, multiplicar dos matrices, ordenar una lista de números,
generar un reporte, etc.
3. Identificación de los Módulos: La identificación de los módulos es tan importante
como la identificación correcta de los requerimientos, esto porque la correcta
identificación de los módulos simplifica considerablemente la realización de los
algoritmos que darán solución a los requerimientos identificados en el paso
anterior.
Por ejemplo, si para lograr cumplir el requerimiento del cálculo de una cuota es
necesario multiplicar dos cantidades y luego sumarlas, sería conveniente crear un
módulo que permita multiplicar y otro que permita sumar y luego en otro módulo
utilizar a estos dos y realizar el cálculo de la cuota. Con esto podemos darnos
cuenta que es mucho más simple el realizar los módulos por separado que realizar
todas las operaciones amontonadas. Además, el realizar módulos permite que más
tarde podamos reutilizarlos en otras operaciones.
Por otro lado, es importante mencionar que no se deben realizar módulos que sean
tan simples que puedan ser reemplazados por una operación sencilla.
4. Realización de los Algoritmos: A continuación, corresponde realizar los algoritmos
correspondientes para cada módulo identificado. Dicho algoritmo deberá cumplir
con las características que se indicaron para posteriormente implementarse en un
lenguaje de programación comprensible por una computadora.
5. Implementación de los Algoritmos: La implementación de los algoritmos se debe
realizar en un lenguaje de programación para que una computadora pueda
comprender las instrucciones que el algoritmo modela para así poder ejecutarlas y
lograr el resultado esperado.
En el último paso ya podemos hablar de una aplicación o programa de computadora, que
estará compuesto por una serie de instrucciones que ordenadas una tras otra logran
representar los algoritmos diseñados y dar así solución a los requerimientos identificados.
Representación de un Algoritmo
La principal forma de representación de un algoritmo es la utilización de los denominados
"Diagramas de Flujo".
Los diagramas de flujo, como su nombre lo indica, son gráficas que representan la
dirección que sigue la información que contiene un algoritmo; los datos se encierran en
diferentes figuras, estas se llaman figuras lógicas. Existen siete figuras lógicas utilizadas
en el diagrama de flujo: Inicio, Lectura/Escritura, Flujo, Proceso, Decisión, Ciclo y Fin.

9
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

Ejemplo:
Aquí podemos apreciar cómo se relacionan los elementos anteriores entre sí:
Esta es una de las tantas formas de representación de un algoritmo. También podemos
representarlo en forma de líneas de texto estructurado u otra.
Concluyendo
El algoritmo es de carácter general y puede aplicarse a
cualquier operación matemática o a cualquier problema.
La formulación de algoritmos fue uno de los más grandes
adelantos dentro de la ciencia matemática ya que a partir de
ellos se pudieron resolver infinidad de problemas.
Los algoritmos, para llegar a ser tales deben reunir ciertas
características. Una de ellas es que los pasos que deben
seguirse deben estar estrictamente descritos, cada acción
debe ser precisa, y debe ser general, es decir, que pueda ser
aplicable a todos los elementos de una misma clase.
La representación gráfica de un algoritmo permite un mayor
entendimiento de éste y da una mayor claridad al momento
de realizar un seguimiento de éste.
La implementación es el fin último del algoritmo y mediante
esta implementación puede ser puesto en práctica en una computadora.
Algoritmos y Programas
El computador debe estar al servicio de resolver problemas. Éste es una máquina que no
funciona sin un grupo de instrucciones que le indiquen qué hacer.
Para comunicarnos o darle instrucciones a un computador debemos aprender un lenguaje
común para ambos (Lenguaje de Programación). Este lenguaje de programación debe
contener un grupo de símbolos que la máquina comprende y que ayuda a la ejecución de
las instrucciones que queremos.
A medida que pasa el tiempo, los lenguajes de programación han ido evolucionando para
parecerse más a nuestro idioma.
En la actualidad existen en el mercado una serie de lenguajes de programación, unos más
evolucionados que otros, entre los cuales podemos mencionar: Pascal, C, Java, Visual
Basic, Power Builder, etc. Para este curso utilizaremos el lenguaje Visual Basic 2010 como
lenguaje de trabajo.

10
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

Como vimos en la parte introductoria, para poder construir un programa de computadora


debemos diseñar previamente un algoritmo que lo modele.
Todo algoritmo puede ser construido por medio de tres estructuras:
a. Decisión
b. Ciclo
c. Proceso

Ejercicio
Veamos ahora un ejemplo de diseño e
implementación de un algoritmo.
Consideremos el problema de resolver
una serie como la de a continuación:

Veamos ahora como construir un


algoritmo que calcule el valor de S para
valores dados de x e y.
Paso 1: Realizar el análisis previo. Se
debe determinar el valor de la variable
S a partir de los valores x e y ingresados. Estos valores deben ser leídos y procesados de
acuerdo a la serie presentada para
obtener el valor de ésta.
Paso 2: Requerimientos. El
requerimiento principal es el
determinar el valor de S y mostrarlo
por pantalla.
Paso 3: Módulos a diseñar. El
problema es sencillo y puede ser
resuelto por medio de dos módulos,
uno que realice la función exponencial
y otro que desarrolle la serie haciendo
la llamada respectiva al módulo
anterior.
Paso 4: Realización de los
Algoritmos. Al realizar los algoritmos
debemos tener presentes las
características que debe tener un
algoritmo para poder llegar a una
correcta implementación de éstos.
Para ello utilizaremos los símbolos
descritos y con ellos lograremos el
algoritmo que a continuación se
presenta.
Algoritmos Solución:
Podemos apreciar cómo nuestro
algoritmo A requiere del algoritmo B para poder realizar la operación exponencial que
hemos separado en otro módulo que más tarde podremos reutilizar en algún otro
algoritmo que necesitemos realizar.
Ahora sólo nos queda el último paso, la implementación de los algoritmos anteriores en
un lenguaje de programación, que cómo dijimos anteriormente será el lenguaje.

11
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

Otros Algoritmos

ESTRUCTURA SECUENCIAL
1. Se Ingresan 2 números. Calcular y visualizar la suma de los números ingresados.
2. Se ingresa el radio de un círculo. Visualizar el área del círculo
3. Ingresar un número y calcular el 5 % del número ingresado. Visualizar el número y el
porcentaje calculado.

In ic i o In ic i o
In ic io In ic i o

Sum a = 0 Pn = 0
R Sm = 0

A ,B N
N o m , sb h , n h t
A = 3 .1 4 1 6 * R 2
Su m a = A + B
Pn = N * 0 .0 5 Sm = sb h * n h t

A
A ,B No m
Su m a N ,Pn Sm

Fin Fin Fin


Fin

4. Ingresar el nombre (Nom) de un empleado, su salario básico por hora (sbh) y el número
de horas trabajadas en el mes (nht). Calcular y visualizar el nombre y su salario mensual
(Sm).
ESTRUCTURA CONDICIONAL
5. Se ingresa un número. Visualizar el número sólo si es positivo.

12
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

In ic i o
In ic i o In ic i o

N
X ,Y a, b

N > 0
X < Y a > b
“Po sitiv o ”

Y, X X ,Y b a

Fin

Fin Fin

6. Se ingresa dos números diferentes. Visualizar al número mayor.


7. Se ingresan 2 números diferentes. Visualizar siempre de menor a mayor.
8. Se ingresan 2 números cualesquiera. Visualizar al mayor
ESTRUCTURA REPETITIVA “MIENTRAS SE CUMPLA LA CONDICION”
In ic i o
INI
K = 1
M = 30
A, B

K 10
A

A IGU K, M

ALE
B > A K = K + 1
M = M + 5

Fin
FIN
9. Visualizar 10 múltiplos del 5 a partir del 30 en forma ascendente.
10. Visualizar 15 múltiplos del 7 a partir del 49 de forma descendente.
11. Visualizar la hora y el minuto de un reloj digital por el lapso de un día.

13
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

In ic i o

H = 0

H < 24 No

K = K + 1

M 59 No

H,M

M = M + 1

H = H+ 1

Fin

ESTRUCTURA CONDICIONAL ANIDADA


12. Se ingresan 3 números diferentes. Visualizar al número intermedio.

In ic i o In ic io

A ,B,C A ,B,C

Si No Si
No A> B Y B> C A> B
A< B Y B< C

No Si No Si
No B> A Y A> C Si B B > C A> C
B< A Y A< C

C B C A
C A

Fin
Fin

13. Se ingresan tres números diferentes. Visualizar al menor.


14. Se ingresan los coeficientes A, B, C de una ecuación de 2º grado Hallar las raíces de
la ecuación. El discriminante de la ecuación determina la naturaleza de las raíces. Si: D>0
entonces existen dos raíces reales, Si D=0, una raíz. Si D<0 entonces la ecuación tiene
raíces imaginarias.

 = b 2 − 4ac

1.5 EJEMPLOS DE VISUAL BASIC

14
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

El entorno de programación de Visual Basic 2010 ofrece muchas posibilidades de


adaptación a los gustos, deseos y preferencias del usuario. Los usuarios expertos tienen
siempre una forma propia de hacer las cosas, pero para los usuarios noveles conviene
ofrecer unas ciertas orientaciones al respecto. Por eso, antes de realizar los ejemplos que
siguen se recomienda modificar la configuración de Visual Basic 2010 de la siguiente
forma:
1. En el menú Herramientas elegir el comando Opciones; se abre un cuadro de diálogo
con 6 solapas.
2. En la solapa Proyectos y Soluciones elegir General: “guardar proyectos al
crearlos” para que pregunte antes de cada ejecución si se desean guardar los cambios
realizados. En la solapa Editor elegir también “Reqerir Declaracion de Variable” en
“Opciones de codigo” para evitar errores al teclear los nombres de las variables.
3. En la solapa Editor, en Editor, dar a “Anchura de Tabulación” un valor de 4 y elegir
la opción “Sangria Inteligente” (para que ayude a mantener el código legible y
ordenado).
1.5.1 Ejemplo 1: Transformación de unidades de temperatura
La Figura 1.4 muestra un programa sencillo que permite ver la equivalencia entre las
escalas de temperaturas en grados centígrados y grados Fahrenheit. Los ficheros de este
proyecto se pueden llamar Temperat.vbp y Temperat.frm.
En el centro del formulario aparece una barra de desplazamiento vertical que permite
desplazarse con incrementos pequeños de 1º C y grandes de 10º C. Como es habitual,
también puede cambiarse el valor arrastrando con el ratón el cursor de la barra.
Los valores máximos y mínimo de la barra son 100º C y -100º C.
A ambos lados de la barra aparecen dos cuadros de texto (color de fondo blanco) donde
aparecen los grados correspondientes a la barra en ambas escalas. Encima aparecen dos
rótulos (labels) que indican la escala de temperaturas correspondiente. Completan la
aplicación un botón Salir que termina la ejecución y un menú File con la única opción
Exit, que termina asimismo la ejecución del programa.
La Tabla 1.4 indica los controles utilizados en este ejemplo junto con las propiedades y los
valores correspondientes.

Figura 1.2. Equivalencia de temperaturas.

Control Propiedad Valor Control Propiedad Valor

15
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

frmTemp Name frmTemp vsbTemp Name vsbTemp


Text Conversor de Min -100
Temperaturas
mnuFile Name mnuFile Max 100
Text &File SmallChange 1
mnuFileExit Name mnuFileExit LargeChang 10
Text E&xit Value 0
cmdSalir Name cmdSalir lblCent Name lblCent
Text Salir Text Grados
Centígrados
Font MS Sans Serif, Font MS Sans
Bold, 14 Serif,10
txtCent Name txtCent lblFahr Name lblFahr
text 0 Text Grados
Fahrenheit
txtFahr Name txtFahr Font MS Sans
Serif, 10
text 32
Tabla 1.2. Controles y propiedades del Ejemplo 1.3.
Por otra parte, el código con el que este programa responde a los eventos es el contenido
en
los siguientes procedimientos:
Option Explicit
Private Sub cmbSalir_Click()
Beep
End
End Sub
Private Sub mnuFileExit_Click()
End
End Sub
Private Sub vsbTemp_Change()
txtCent.Text = vsbTemp.Value
txtFahr.Text = 32 + 1.8 * vsbTemp.Value
End Sub
Sobre este tercer ejemplo se puede comentar lo siguiente:
1. Se ha utilizado la propiedad Value de la barra de desplazamiento, la cual da el valor
actual de la misma con respecto a los límites inferior y superior, previamente establecidos
(-100 y 100).
2. Mediante el procedimiento cmdSalir_Click, se cierra el programa, gracias a la
instrucción End. El cometido de Beep no es otro que el de emitir un pitido a través del
altavoz del ordenador, que indicará que en efecto se ha salido del programa.
3. La función mnuFileExit_Click() y activa desde el menú y termina la ejecución sin
emitir ningún sonido.
4. Finalmente, la función vsbTemp_Change() se activa al cambiar el valor de la barra
de desplazamiento; su efecto es modificar el valor de la propiedad text en las cajas de
texto que muestran la temperatura en cada una de las dos escalas.

2. ENTORNO DE PROGRAMACIÓN VISUAL BASIC 2010


2.1 INTRODUCCIÓN: ¿QUÉ ES VISUAL BASIC 2010?

16
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

Visual Basic 2010 es una excelente herramienta de programación que permite crear
aplicaciones propias (programas) para Windows. Con ella se puede crear desde una
simple calculadora hasta una hoja de cálculo de la talla de Excel (en sus primeras
versiones...), pasando por un procesador de textos o cualquier otra aplicación que se le
ocurra al programador. Sus aplicaciones en Ingeniería son casi ilimitadas: representación
de movimientos mecánicos o de funciones matemáticas, gráficas termodinámicas,
simulación de circuitos, etc.
Este programa permite crear ventanas, botones, menús y cualquier otro elemento de
Windows de una forma fácil e intuitiva. El lenguaje de programación que se utilizará será
el Basic, que se describirá en el siguiente capítulo.
A continuación, se presentarán algunos aspectos del entorno de trabajo de Visual Basic
2010: menús, opciones, herramientas, propiedades, etc.
2.2 EL ENTORNO DE VISUAL BASIC 2010
2.2.1 La barra de menús y las barras de herramientas
La barra de menús de Visual Basic 2010 resulta similar a la de cualquier otra aplicación
de Windows, tal y como aparece en la Figura 2.2. Bajo dicha barra aparecen las barras
de herramientas, con una serie de botones que permiten acceder fácilmente a las
opciones más importantes de los menús. En Visual Basic 2010 existen cuatro barras de
herramientas: Depuración, Edición, Editor de Formulas y
Estandard. Por defecto sólo aparece la barra Estandard,
aunque en la Figura 2.2 se muestran las cuatro. Clicando con
el botón derecho sobre cualquiera de las barras de
herramientas aparece un menú contextual con el que se
puede hacer aparecer y ocultar cualquiera de las barras. Al
igual que en otras aplicaciones de Windows, también pueden
modificarse las barras añadiendo o eliminando botones
Figura 2.1. Información visual
(opción Personalizar).
sobre el tamaño de un control.
En la barra de herramientas Estandard también se pueden
ver a la derecha dos recuadros con números, que
representan cuatro propiedades del formulario referentes a su posición y tamaño que se
verán más adelante: Top y Left, que indican la posición de la esquina superior izquierda
de el formulario, y también Height y Width, que describen el tamaño del mismo en unas
unidades llamadas twips, que se corresponden con la vigésima parte de un punto (una
pulgada tiene 72 puntos y 1440 twips). Las dimensiones de un control aparecen también
cuando con el ratón se arrastra sobre el formulario, según se puede ver en la Figura 2.1.
Los botones de la barra de herramientas Estandard responden a las
funciones más importantes: abrir y/o guardar nuevos proyectos,
añadir formularios, hacer visibles las distintas ventanas del entorno de
desarrollo, etc. Todos los botones tienen su correspondiente comando en alguno de los
menús. Son importantes los botones que permiten arrancar y/o parar la ejecución de un
proyecto, pasando de modo diseño a modo de ejecución y viceversa.

Figura 2.2. Barra de menús y barras de herramientas de Visual Basic 2010.


El menú Archivo tiene pocas novedades. Lo más importante es la distinción entre
proyectos y todos los demás ficheros. Como ya se ha dicho, un proyecto reúne y organiza
todos los ficheros que componen el programa o aplicación (hace la función de una carpeta
que contuviera apuntes). Estos ficheros pueden ser formularios, módulos, clases,
recursos, etc. Visual Basic 2010 permite tener más de un proyecto abierto
simultáneamente, lo cual puede ser útil en ocasiones. Con el comando Agregar proyecto
se añade un nuevo proyecto en la ventana Editor de Proyectos. Con los comandos Abrir

17
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

Project o Nuevo Project se abre o se crea un nuevo proyecto, pero cerrando el o los
proyectos que estuvieran abiertos previamente.
Tampoco el menú Edición aporta cambios importantes sobre lo que es habitual. Por el
contrario, el menú Ver, generalmente de poca utilidad, es bastante propio de Visual
Basic 2010. Este menú permite hacer aparecer en pantalla las distintas ventanas del
entorno de desarrollo, así como acceder a un formulario o al código relacionado con un
control (que también aparece si se clica dos veces en dicho control), y manejar funciones
y procedimientos.
El menú Proyecto permite añadir distintos tipos de elementos a
un proyecto (formularios, módulos, etc.). Con Propiedades de
Proyectos se puede elegir el tipo de proyecto y determinar el
formulario con el que se arrancará la aplicación (Startup Object).
Con el comando Components se pueden añadir nuevos controles
a la Toolbox que aparece a la izquierda de la pantalla.
El menú Format contiene opciones para controlar el aspecto de la
aplicación (alinear controles, espaciarlos uniformemente, etc.).
Los menús Depuración y Ejecutar permiten controlar la
ejecución de las aplicaciones. Con Depuración se puede ver en
detalle cómo funcionan, ejecutando paso a paso, yendo hasta una
línea de código determinada, etc. Esto es especialmente útil
cuando haya que encontrar algunos errores ejecutando paso a
paso, o viendo resultados intermedios.
En el menú Herramientas se encuentran los comandos para
arrancar el Menu Editor (para crear menús, como se verá en el
Apartado 5, a partir de la página 64, dedicado a los Menús) y para
establecer las opciones del programa. En
Herramientas/Opciones se encuentran las opciones relativas al
proyecto en el que se trabaja. La lengüeta Entorno determina las
propiedades del entorno del proyecto, como las opciones para
actualizar o no los ficheros antes de cada ejecución; en General
se establece lo referente a la retícula o grid que aparece en el
formulario; Editor permite establecer la necesidad de declarar
todas las variables junto con otras opciones de edición, como si se
quieren ver o no todos los procedimientos juntos en la misma
ventana, y si se quiere ver una línea separadora entre
procedimientos.
Por último, la ayuda (siempre imprescindible y en el caso de
Visual Basic 2010 particularmente bien hecha) que se encuentra
en el menú Ayuda, se basa fundamentalmente en una
clasificación temática ordenada de la información disponible
(Contents), en una clasificación alfabética de la información
(Index) y en la búsqueda de información sobre algún tema por el
nombre (Search). Como ya se ha mencionado, la tecla <F1>
permite una ayuda directa sensible al contexto, esto es
dependiente de donde se haya clicado con el ratón (o de lo que
esté seleccionado).
2.2.2 Las herramientas (toolbox)
La Figura 2.3 muestra la caja de herramientas, que incluye los Figura 2.3. Caja de
controles componentes
(Toolbox).
con los que se puede diseñar la pantalla de la aplicación. Estos
controles
son por ejemplo botones, etiquetas, cajas de texto, zonas gráficas, etc. Para introducir un
control en el formulario simplemente hay que clicar en el icono adecuado de la toolbox y

18
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

colocarlo en el formulario con la posición y el tamaño deseado, clicando y arrastrando con


el ratón. Clicando dos veces sobre el icono de un control aparece éste en el centro del
formulario y se puede modificar su tamaño y/o trasladar con el ratón como se desee.
El número de controles que pueden aparecer en esta ventana varía con la configuración
del sistema. Para introducir nuevos componentes se utiliza el comando Componentes en
el menú Proyecto, con lo cual se abre el cuadro de diálogo mostrado en la Figura 2.4.
2.3 FORMULARIOS (FORMS) Y MÓDULOS
Los formularios son las zonas de la pantalla sobre las que se diseña el programa y sobre
las que se sitúan los controles o herramientas de la Caja de Herramientas.
Al ejecutar el programa, el form se convertirá en la ventana de la aplicación, donde
aparecerán los botones, el
texto, los gráficos, etc.
Exteriormente, los formularios
tienen una estructura similar a
la de cualquier ventana. Sin
embargo, también poseen un
código de programación que
estará escrito en Basic, y que
controlará algunos aspectos del
formulario, sobre todo en la
forma de reaccionar ante las
acciones del usuario (eventos).
El formulario y los controles en
él situados serán el esqueleto o
la base del programa. Una
aplicación puede tener varios
formularios, pero siempre habrá
Figura 2.4. Cuadro de diálogo Componentes.
uno con el que arrancará la
aplicación; este formulario se
determina a partir del menú Project/Properties, en Startup Objects. componentes
(Toolbox).
Resumiendo, cuando se vaya a crear un programa en Visual Basic 2010 habrá que dar
dos pasos:
1. Diseñar y preparar la parte gráfica (formularios,
botones, menús, etc.)
2. Realizar la programación que gestione la respuesta
del programa ante los distintos eventos.
2.4 LA VENTANA DE PROYECTO (PROJECT)
Esta ventana, mostrada en la Figura 2.5, permite
acceder a los distintos formularios y módulos que
componen el proyecto. Desde ella se puede ver el
diseño gráfico de dichos formularios (botón View
Object), y también permite editar el código que
contienen (botón View Code). Estos botones están
situados en la parte superior de la ventana, debajo de
la barra de títulos.
Los módulos estándar (ficheros *.bas) contienen
sólo código que, en general, puede ser utilizado por
distintos formularios y/o controles del proyecto e
incluso por varios proyectos. Por ejemplo puede prepararse un módulo estándar de
funciones matemáticas que sea de utilidad general. Normalmente contienen siempre
algunas declaraciones de variables globales o Public,
Figura 2.5. Ventana de proyecto

19
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

que serán accesibles directamente desde todos los formularios.


Los módulos de clase (ficheros *.cls) contienen clases definidas por el usuario. Las
clases son como formularios o controles complejos, sin interface gráfica de usuario.
2.5 LA VENTANA DE PROPIEDADES (PROPERTIES) .
Antes de escribir un procedimiento de evento para
el control de la respuesta a la entrada de un usuario,
hay que establecer ciertas propiedades del control
para determinar su aspecto y cómo se va a trabajar
con el procedimiento de evento. Puede establecer
las propiedades de los controles en la ventana de
propiedades en tiempo de diseño o en tiempo de
ejecución.
Figura 2.6 a la derecha es una ventana de
propiedades típicas de un formulario. Se refiere en
particular a la interfaz del primer programa que ha
aprendido en la lección anterior, como se muestra
en la Figura 3.2. El título del formulario se define
mediante la propiedad Text y su nombre por defecto
es la Forma 1. Para cambiar el título del formulario
a cualquier nombre que más te guste, simple clic en
el cuadro de la derecha de la propiedad Text y
escriba el nuevo nombre, en este ejemplo, el título
es la multiplicación. Tenga en cuenta que este título
aparecerá en la parte superior de las ventanas. En
la ventana de propiedades, el elemento aparece en
la parte superior es el objeto seleccionado en ese
momento (en la Figura 2.6, el objeto seleccionado
es Form1). En la parte inferior, los elementos que
aparecen en la columna izquierda representan los
nombres de varias propiedades asociadas al objeto
seleccionado, mientras que los elementos que se
enumeran en la columna de la derecha representan
los estados de las propiedades.
Las propiedades pueden establecerse poniendo de
relieve los elementos en la columna de la derecha y
luego cámbielos escribiendo o seleccionando las
opciones disponibles.
3. LENGUAJE BASIC
3.1 INTRODUCCIÓN
En este capítulo se explican los fundamentos del
lenguaje de programación Basic utilizado en el
sistema de desarrollo para Visual Basic 2010 de
Microsoft. En este manual se supone que el lector no tiene conocimientos previos de
programación.
Un programa –en sentido informático– está constituido en un sentido general por
variables que contienen los datos con los que se trabaja y por algoritmos que son las
sentencias que operan sobre estos datos. Estos datos y algoritmos suelen estar incluidos
dentro de funciones o procedimientos.
Un procesador digital únicamente es capaz de entender aquello que está constituido por
conjuntos de unos y ceros. A esto se le llama lenguaje de máquina o binario, y es muy
difícil de manejar. Por ello, desde casi los primeros años de los ordenadores, se
comenzaron a desarrollar los llamados lenguajes de alto nivel (tales como el Fortran, el
Cobol, etc.), que están mucho más cerca del lenguaje natural. Estos lenguajes están

20
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

basados en el uso de identificadores, tanto para los datos como para las componentes
elementales del programa, que en algunos lenguajes se llaman rutinas, procedimientos, o
funciones. Además, cada lenguaje dispone de una sintaxis o conjunto de reglas con las
que se indica de modo inequívoco las operaciones que se quiere realizar.
Los lenguajes de alto nivel son más o menos comprensibles para el usuario, pero no para
el procesador. Para que éste pueda ejecutarlos es necesario traducirlos a su propio
lenguaje de máquina. Al paso del lenguaje de alto nivel al lenguaje de máquina se le
denomina compilación. En Visual Basic esta etapa no se aprecia tanto como en otros
lenguajes donde el programador tiene que indicar al ordenador explícitamente que realice
dicha compilación. Los programas de Visual Basic se dice que son interpretados y no
compilados ya que el código no se convierte a código máquina sino que hay otro programa
que durante la ejecución “interpreta” las líneas de código que ha escrito el programador.
En general durante la ejecución de cualquier programa, el código es cargado por el sistema
operativo en la memoria RAM.
3.2 COMENTARIOS Y OTRAS UTILIDADES EN LA PROGRAMACIÓN CON
VISUAL BASIC
Visual Basic 2010 interpreta que todo lo que está a la derecha del carácter (') en una
línea cualquiera del programa es un comentario y no lo tiene en cuenta para nada. El
comentario puede empezar al comienzo de la línea o a continuación de una instrucción
que debe ser ejecutada, por ejemplo:
’ Esto es un comentario
A = B*x+3.4 ' también esto es un comentario
Los comentarios son tremendamente útiles para poder entender el código utilizado,
facilitando de ese modo futuras revisiones y correcciones. En programas que no contengan
muchas líneas de código puede no parecer demasiado importante, pero cuando se trata
de proyectos realmente complejos, o desarrollados por varias personas su importancia es
tremenda. En el caso de que el código no esté comentado este trabajo de actualización y
revisión puede resultar complicadísimo.
Otro aspecto práctico en la programación es la posibilidad de escribir una sentencia en
más de una línea. En el caso de sentencias bastante largas es conveniente cortar la línea
para que entre en la pantalla. En otro caso la lectura del código se hace mucho más
pesada. Para ello es necesario dejar un espacio en blanco al final de la línea y escribir
el carácter (_) tal y como se muestra en el siguiente ejemplo:
str1 = "Londres" : str2 = "París" 'Se inicializan las variables
Frase = "Me gustaría mucho viajar a " & _
str1 & " y a " & str2
'El contenido de Frase sería: "Me gustaría mucho viajar a Londres y a París
Una limitación a los comentarios en el código es que no se pueden introducir en una línea
en
la que se ha introducido el carácter de continuación (_).
La sintaxis de Visual Basic 2010 permite también incluir varias sentencias en una
mismalínea. Para ello las sentencias deben ir separadas por el carácter dos puntos (:).
Por ejemplo:
m = a : n = b : resto = m Mod n ' Tres sentencias en una línea
3.3 PROYECTOS Y MÓDULOS
Un proyecto realizado en Visual Basic 2010 es el conjunto de todos los ficheros o
módulos necesarios para que un programa funcione. La información referente a esos
ficheros se almacena en un fichero del tipo ProjectName.vbp. La extensión *.vbp del
fichero hace referencia a Visual Basic Project.
Si se edita este fichero con cualquier editor de texto se comprueba que la información que
almacena es la localización en los discos de los módulos que conforman ese proyecto, los

21
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

controles utilizados (ficheros con extensión .ocx), etc. En el caso más simple un proyecto
está formado por un único formulario y constará de dos ficheros: el que define el proyecto
(*.vbp) y el que define el formulario (*.frm).
Los módulos que forman parte de un proyecto pueden ser de varios tipos: aquellos que
están asociados a un formulario (*.frm), los que contienen únicamente líneas de código
Basic (*.bas) llamados módulos estándar y los que definen agrupaciones de código y
datos denominadas clases (*.cls), llamados módulos de clase.
Un módulo *.frm está constituido por un formulario y toda la información referente a los
controles (y a sus propiedades) en él contenidos, además de todo el código programado
en los eventos de esos controles y, en el caso de que existan, las funciones y
procedimientos propios de ese formulario. En general se llama función a una porción
de código independiente que realiza una determinada actividad. En Visual Basic existen
dos tipos de funciones: las llamadas function, que se caracterizan por tener valor de
retorno, y los procedimientos o procedures, que no lo tienen. En otros lenguajes, como
C/C++/Java, las function realizan los dos papeles.
Un módulo de código estándar *.bas contendrá una o varias funciones y/o
procedimientos, además de las variables que se desee, a los que se podrá acceder desde
cualquiera de los módulos que forman el proyecto.
3.3.1 Ámbito de las variables y los procedimientos
Se entiende por ámbito de una variable la parte de la aplicación donde la variable es
visible (accesible) y por lo tanto puede ser utilizada en cualquier expresión.
3.3.1.1 Variables y funciones de ámbito local
Un módulo puede contener variables y procedimientos o funciones públicos y privados.
Los públicos son aquellos a los que se puede acceder libremente desde cualquier punto
del proyecto.
Para definir una variable, un procedimiento o una función como público es necesario
preceder a la definición de la palabra Public, como, por ejemplo:
Public Variable1 As Integer Public Sub Procedimiento1 (Parametro1 As Integer, …) Public
Function Funcion1 (Parametro1 As Integer, …) As Integer Para utilizar una variable Public
o llamar a una función Public definidas en un formulario desde otro módulo se debe
preceder el nombre de la variable o procedimiento con el nombre del formulario al que
pertenece, como, por ejemplo:
Modulo1.Variable1
Call Modulo1.Procedimiento1(Parametro1, …)
Retorno = Modulo1.Funcion1(Parametro1, …)
Sin embargo si el módulo al que pertenecen la variable o el procedimiento Public es un
módulo estándar (*.bas) no es necesario poner el nombre del módulo más que si hay
coincidencia de nombres con los de otro módulo también estándar. Una variable Private,
por el contrario, no es accesible desde ningún otro módulo distinto de aquél en el que se
haya declarado.
Se llama variable local a una variable definida dentro de un procedimiento o función. Las
variables locales no son accesibles más que en el procedimiento o función en que están
definidas.
Una variable local es reinicializada (a cero, por defecto) cada vez que se entra en el
procedimiento. Es decir, una variable local no conserva su valor entre una llamada al
procedimiento y la siguiente. Para hacer que el valor de la variable se conserve hay que
declarar la variable como static (como, por ejemplo: Static n As Integer). Visual Basic
inicializa una variable estática solamente la primera vez que se llama al procedimiento.
Para declarar una variable estática, se utiliza la palabra Static en lugar de Dim. Un poco
más adelante se verá que Dim es una palabra utilizada para crear variables. Si un
procedimiento se declara Static todss sus variables locales tienen carácter Static.

22
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

3.3.1.2 Variables y funciones de ámbito global


Se puede acceder a una variable o función global desde cualquier parte de la aplicación.
Para hacer que una variable sea global, hay que declararla en la parte general de un
módulo *.bas o de un formulario de la aplicación. Para declarar una variable global se
utiliza la palabra Public. Por ejemplo:
Public var1_global As Double, var2_global As String
De esta forma se podrá acceder a las variables var1_global, var2_global desde todos
los formularios. La Tabla 3.1 muestra la accesibilidad de las variables en función de dónde
y cómo se hayan declarado1.

Tabla 3.1. Accesibilidad de las variables.


La diferencia entre las variables y/o procedimientos Public de los formularios y de los
módulos estándar está en que las de los procedimientos deben ser cualificadas
(precedidas) por el nombre del formulario cuando se llaman desde otro módulo distinto,
mientras que las de un módulo estándar (*.bas) sólo necesitan ser cualificadas si hay
colisión o coincidencia de nombres.
3.4 VARIABLES
3.4.1 Identificadores
La memoria de un computador consta de un conjunto enorme de bits (1 y 0), en la que
se almacenan datos y programas. Las necesidades de memoria de cada tipo de dato no
son homogéneas (por ejemplo, un carácter alfanumérico ocupa un byte (8 bits), mientras
que un número real con 16 cifras ocupa 8 bytes), y tampoco lo son las de los programas.
Además, el uso de la memoria cambia a lo largo del tiempo dentro incluso de una misma
sesión de trabajo, ya que el sistema reserva o libera memoria a medida que la va
necesitando.
Cada posición de memoria en la que un dato está almacenado (ocupando un conjunto de
bits) puede identificarse mediante un número o una dirección, y éste es el modo más
básico de referirse a una determinada información. No es, sin embargo, un sistema
cómodo o práctico, por la nula relación nemotécnica que una dirección de memoria suele
tener con el dato contenido, y porque –como se ha dicho antes– la dirección física de un
dato cambia de ejecución a ejecución, o incluso en el transcurso de una misma ejecución
del programa. Lo mismo ocurre con partes concretas de un programa determinado.
Dadas las citadas dificultades para referirse a un dato por medio de su dirección en
memoria, se ha hecho habitual el uso de identificadores. Un identificador es un nombre
simbólico que se refiere a un dato o programa determinado. Es muy fácil elegir
identificadores cuyo nombre guarde estrecha relación con el sentido físico, matemático o
real del dato que representan. Así, por ejemplo, es lógico utilizar un identificador llamado

23
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

salario_bruto o salarioBruto para representar el coste anual de un empleado. El usuario


no tiene nunca que preocuparse de direcciones físicas de memoria: el sistema se preocupa
por él por medio de una tabla, en la que se relaciona cada identificador con el tipo de dato
que representa y la posición de memoria en la que está almacenado.
Visual Basic 2010, como todos los demás lenguajes de programación, tiene sus propias
reglas para elegir los identificadores. Los usuarios pueden elegir con gran libertad los
nombres de sus variables y funciones, teniendo siempre cuidado de respetar las reglas del
lenguaje y de no utilizar un conjunto de palabras reservadas (keywords), que son
utilizadas por el propio lenguaje. En el Apartado 3.4.3, en la página 25, se explicarán las
reglas para elegir nombres y cuáles son las palabras reservadas del lenguaje Visual Basic
2010.
3.4.2 Variables y constantes
Una variable es un nombre que designa a una zona de memoria (se trata por tanto de
un identificador), que contiene un valor de un tipo de información.
Tal y como su nombre indica, las variables pueden cambiar su valor a lo largo de la
ejecución de un programa. Completando a las variables existe lo que se denomina
constantes las cuales son identificadores, pero con la particularidad de que el valor que
se encuentra en ese lugar de la memoria sólo puede ser asignado una única vez. El
tratamiento y tipos de datos es igual al de las variables.
Para declarar un dato como constante únicamente es necesario utilizar la palabra Const
en la declaración de la variable. Si durante la ejecución se intenta variar su valor se
producirá un error.
Ejemplos:
Const MyVar = 459’ Las constantes son privadas por defecto.
Public Const MyString = "HELP" ' Declaración de una constante pública.
Private Const MyInt As Integer = 5 ' Declaración de un entero constante.
Const Str = "Hi", PI As Double = 3.14 ' Múltiples constantes en una línea.
Visual Basic 2010 tiene sus propias constantes, muy útiles, por cierto. Algunas ya se
han visto al hablar de los colores. En general estas constantes empiezan por ciertos
caracteres como vb (u otros similares que indican a que grupo pertenecen) y van seguidas
de una o más palabras que indican su significado. Para ver las constantes disponibles se
puede utilizar el comando View/Examinador de Objetos, tal como se muestra en la
Figura 3.1.
3.4.3 Nombres de variables
El nombre de una variable (o de una constante) tiene que comenzar siempre por una letra
y puede tener una longitud hasta 255 caracteres. No se admiten espacios o caracteres en
blanco, ni puntos (.), ni otros caracteres especiales.
Los caracteres pueden ser letras, dígitos, el carácter de subrayado (_) y los caracteres de
declaración del tipo de la variable (%, &, #, !, @, y $ ). El nombre de una variable no
puede ser una palabra reservada del lenguaje (For, If, Loop, Next, Val, Hide,
Caption, And, ...). Para saber cuáles son las palabras reservadas en Visual Basic 2010
puede utilizarse el Help de dicho programa, buscando la referencia Reserved Words. De
ordinario las palabras reservadas del lenguaje aparecen de color azul en el editor de
código, lo que hace más fácil saber si una palabra es reservada o no. A diferencia de C,
Matlab, Maple y otros lenguajes de programación, Visual Basic 2010 no distingue
entre minúsculas y mayúsculas. Por tanto, las variables LongitudTotal y
longitudtotal son consideradas como idénticas (la misma variable). En Visual Basic
2010 es habitual utilizar las letras mayúsculas para separar las distintas palabras que
están unidas en el nombre de una variable, como se ha hecho anteriormente en la variable
LongitudTotal. La declaración de una variable o la primera vez que se utiliza determnan
cómo se escribe en el resto del programa.

24
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

También es habitual entre los programadores, aunque no obligado, el utilizar nombres con
todas mayúsculas para los nombres de las constantes simbólicas, como por ejemplo PI.
3.4.4 Tipos de datos
Al igual que C y otros lenguajes de programación, Visual Basic dispone de distintos tipos
de datos, aplicables tanto para constantes como para variables. La Tabla 3.2 muestra los
tipos de datos disponibles en Visual Basic.
En el lenguaje Visual Basic 2010 existen dos formas de agrupar varios valores bajo un
mismo nombre. La primera de ellas son los arrays (vectores y matrices), que agrupan
datos de tipo homogéneo. La segunda son las estructuras, que agrupan información
heterogénea o de distinto tipo. En Visual Basic 2010 las estructuras son verdaderos tipos
de datos definibles por el usuario.

Tabla 3.2. Tipos de datos en Visual Basic 2010.


Para declarar las variables se utiliza la sentencia siguiente:
Dim NombreVariable As TipoVariable
cuyo empleo se muestra en los ejemplos siguientes:
Dim Radio As Double, Superficie as Single
Dim Nombre As String
Dim Etiqueta As String * 10
Dim Francos As Currency
Dim Longitud As Long, X As Currency
Es importante evitar declaraciones del tipo:
Dim i, j As Integer
Pues contra lo que podría parecer a simple vista no se crean dos variables Integer, sino
una Integer (j) y otra Variant (i).
En Visual Basic 2010 no es estrictamente necesario declarar todas las variables que se
van a utilizar (a no ser que se elija la opción Option Explicit on que hace obligatorio el

25
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

declararlas), y hay otra forma de declarar las variables anteriores, utilizando los caracteres
especiales vistos anteriormente. Así por ejemplo, el tipo de las variables del ejemplo
anterior se puede declarar al utilizarlas en las distintas expresiones, poniéndoles a
continuación el carácter que ya se indicó en la Tabla 3.2, en la forma:
Radio# doble precisión
Nombre$ cadena de caracteres
Francos@ unidades monetarias
Longitud& entero largo
Esta forma de indicar el tipo de dato no es la más conveniente. Se mantiene en las
sucesivas versiones de Visual Basic por la compatibilidad con códigos anteriores. Es
preferible utilizar la notación donde se escribe directamente el tipo de dato.
3.4.5 Elección del tipo de una variable
Si en el código del programa se utiliza una variable que no ha sido declarada, se considera
que esta variable es de tipo Variant. Las variables de este tipo se adaptan al tipo de
información o dato que se les asigna en cada momento. Por ejemplo, una variable tipo
Variant puede contener al principio del programa un string de caracteres, después una
variable de doble precisión, y finalmente un número entero. Son pues variables muy
flexibles, pero su uso debe restringirse porque ocupan más memoria (almacenan el tipo
de dato que contienen, además del propio valor de dicho dato) y requieren más tiempo
de CPU que los restantes tipos de variables.
En general es el tipo de dato (los valores que puede tener en la realidad) lo que determina
qué tipo de variable se debe utilizar. A continuación, se muestran algunos ejemplos:
· Integer para numerar las filas y columnas de una matriz no muy grande
· Long para numerar los habitantes de una ciudad o los números de teléfonos
· Boolean para una variable con sólo dos posibles valores (sí o no)
· Single para variables físicas con decimales que no exijan precisión
· Double para variables físicas con decimales que exijan precisión
· Currency para cantidades grandes de dinero
Es muy importante tener en cuenta que se debe utilizar el tipo de dato más sencillo
que represente correctamente el dato real ya que en otro caso se ocupará más
memoria y la ejecución de los programas o funciones será más lenta.
3.4.6 Declaración explícita de variables
Una variable que se utiliza sin haber sido declarada toma por defecto el tipo Variant.
Puede ocurrir que, durante la programación, se cometa un error y se escriba mal el nombre
de una variable. Por ejemplo, se puede tener una variable " declarada como entera, y al
programar referirse a ella por error como "; Visual Basic supondría que ésta es una nueva
variable de tipo Variant.
Para evitar este tipo de errores, se puede indicar a Visual Basic que genere un mensaje
de error siempre que encuentre una variable no declarada previamente. Para ello lo más
práctico es establecer una opción por defecto, utilizando el comando Environment del
menú Tools/Options; en el cuadro que se abre se debe poner Yes en la opción Require
Variable Declaration. También se puede hacer esto escribiendo la sentencia siguiente
en la sección de declaraciones de cada formulario y de cada módulo:
Option Explicit
3.5 OPERADORES
La Tabla 3.3 presenta el conjunto de operadores que soporta Visual Basic 2010.
Cuando en una expresión aritmética intervienen operandos de diferentes tipos, el
resultado se expresa, generalmente, en la misma precisión que la del operando que la
tiene más alta. El orden, de menor a mayor, según la precisión es Integer, Long, Single,
Double y Currency.

26
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

Los operadores relacionales, también conocidos como operadores de comparación,


comparan dos expresiones dando un resultado True (verdadero), False (falso) o Null
(no válido).
El operador & realiza la concatenación de dos operandos. Para el caso particular de que
ambos operandos sean cadenas de caracteres, puede utilizarse también el operador +. No
obstante, para evitar ambigüedades (sobre todo con variables de tipo Variant) es mejor
utilizar &.

Tabla 3.3. Operadores de Visual Basic 2010.


El operador Like sirve para comparar dos cadenas de caracteres. La sintaxis para este
operador es la siguiente:
Respuesta = Cadena1 Like Cadena2
Donde la variable Respuesta será True si la Cadena1 coincide con la Cadena2, False
si no coinciden y Null si Cadena1 y/o Cadena2 son Null.
Para obtener más información se puede consultar el Help de Visual Basic.
3.6 SENTENCIAS DE CONTROL
Las sentencias de control, denominadas también estructuras de control, permiten tomar
decisiones y realizar un proceso repetidas veces. Son los denominados bifurcaciones y
bucles. Este tipo de estructuras son comunes en cuanto a concepto en la mayoría de los
lenguajes de programación, aunque su sintaxis puede variar de un lenguaje de
programación a otro. Se trata de unas estructuras muy importantes ya que son las
encargadas de controlar el flujo de un programa según los requerimientos del mismo.
Visual Basic 2010 dispone de las siguientes estructuras de control:
If ... Then ... Else
Select Case
For ... Next

27
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

Do ... Loop
While … Wend
For Each … Next
3.6.1 Sentencia IF ... THEN ... ELSE ...
Esta estructura permite ejecutar condicionalmente una o más sentencias y puede
escribirse de dos formas. La primera ocupa sólo una línea y tiene la forma siguiente:
If condicion Then sentencia1 [Else sentencia2]
La segunda es más general y se muestra a continuación:
If condicion Then
sentencia(s)
[Else
sentencia(s)]
End If
Si condicion es True (verdadera), se ejecutan las sentencias que están a continuación
de Then, y si condicion es False (falsa), se ejecutan las sentencias que están a
continuación de Else, si esta cláusula ha sido especificada (pues es opcional). Para indicar
que se quiere ejecutar uno de varios bloques de sentencias dependientes cada uno de
ellos de una condición, la estructura adecuada es la siguiente:
If condicion1 Then
sentencias1
ElseIf condicion2 Then
sentencias2
Else
sentencia-n
End If
Si se cumple la condicion1 se ejecutan las sentencias1, y si no se cumple, se examinan
secuencialmente las condiciones siguientes hasta Else, ejecutándose las sentencias
correspondientes al primer ElseIf cuya condición se cumpla. Si todas las condiciones son
falsas, se ejecutan las sentencias-n correspondientes a Else, que es la opción por defecto.
La Figura 3.2 presenta esquemáticamente ambas formas de representar estas sentencias:
Por ejemplo,
Numero = 53 ’ Se inicializa la variable.
If Numero < 10 Then
Digitos = 1
ElseIf Numero < 100 Then

28
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

' En este caso la condición se cumple (True) luego se ejecuta lo siguiente.


Digitos = 2
Else 'En el caso en que no se cumplan los dos anteriores se asigna 3
Digitos = 3
End If
3.6.2 Sentencia SELECT CASE
Esta sentencia permite ejecutar una de entre varias acciones en función del valor de una
expresión.
Es una alternativa a If ... Then ... ElseIf cuando se compara la misma expresión con
diferentes valores. Su forma general es la siguiente:
Select Case expresion
Case etiq1
[sentencias1]
Case etiq2
[sentencias2]
Case Else
sentenciasn
End Select
donde expresion es una expresión numérica o alfanumérica, y etiq1, etiq2, ... pueden
adoptar las formas siguientes:
1. expresion
2. expresion To expresion
3. Is operador-de-relación expresion
4. combinación de las anteriores separadas por comas
Por ejemplo,
Numero = 8’ Se inicializan las variables.
Select Case Numero’ Se va a evaluar la variable Numero.
Case 1 To 5 ' Numero está entre 1 y 5.
Resultado = "Se encuentra entre 1 y 5"
' Lo siguiente se ejecuta si es True la expresión.
Case 6, 7, 8 ' Numero es uno de los tres valores.
Resultado = "Se encuentra entre 6 y 8"

29
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

Case Is = 9, Is = 10 ' Numero es 9 ó 10.


Resultado = "El valor es 9 o 10"
Case Else ' Resto de valores.
Resultado = "El número no se encuentra entre 1 y 10"
End Select
Cuando se utiliza la forma expresion To expresion, el valor más pequeño debe aparecer
en primer lugar.
Cuando se ejecuta una sentencia Select Case, Visual Basic evalúa la expresion y el
control del programa se transfiere a la sentencia cuya etiqueta tenga el mismo valor que
la expresión evaluada, ejecutando a continuación el correspondiente bloque de sentencias.
Si no existe un valor igual a la expresion entonces se ejecutan las sentencias a
continuación de Case Else.
3.6.3 Sentencia FOR ... NEXT
La sentencia For da lugar a un lazo o bucle, y permite ejecutar un conjunto de sentencias
cierto número de veces. Su forma general es:
For variable = expresion1 To expresion2 [Step expresion3]
[sentencias]
Exit For
[sentencias]
Next [variable]
Cuando se ejecuta una sentencia For, primero se asigna el valor de la expresion1 a la
variable y se comprueba si su valor es mayor o menor que la expresion2. En caso de ser
menor se ejecutan las sentencias, y en caso de ser mayor el control del programa salta a
las líneas a continuación de Next. Todo esto sucede en caso de ser la expresion3 positiva.
En caso contrario se ejecutarán las sentencias cuando la variable sea mayor que
expresion2. Una vez ejecutadas las sentencias, la variable se incrementa en el valor de
la expresion3, o en 1 si Step no se especifica, volviéndose a efectuar la comparación
entre la variable y la expresion2, y así sucesivamente.
La sentencia Exit For es opcional y permite salir de un bucle For ... Next antes de que
éste finalice. Por ejemplo,
MyString="Informática "
For Words = 3 To 1 Step -1 ' 3 veces decrementando de 1 en 1.
For Chars = Words To Words+4 '5 veces.
MyString = MyString & Chars ' Se añade el número Chars al string.
Next Chars ' Se incrementa el contador
MyString = MyString & " " ' Se añade un espacio.
Next Words
'El valor de MyString es: Informática 34567 23456 12345
3.6.4 Sentencia DO ... LOOP
Un Loop (bucle) repite la ejecución de un conjunto de sentencias mientras una condición
dada sea cierta, o hasta que una condición dada sea cierta. La condición puede ser
verificada antes o después de ejecutarse el conjunto de sentencias. Sus posibles formas
son las siguientes:
’ Formato 1:
Do [{While/Until} condicion]
[sentencias]
[Exit Do]
[sentencias]

30
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

Loop
’ Formato 2:
Do
[sentencias]
[Exit Do]
[sentencias]
Loop [{While/Until}condicion]
La sentencia opcional Exit Do permite salir de una bucle Do ... Loop antes de que finalice
éste. Por ejemplo,
Check = True ’ Se inicializan las variables.
Counts = 0
Do ' Empieza sin comprobar ninguna condición.
Do While Counts < 20 ' Bucle que acaba si Counts>=20 o con Exit Do.
Counts = Counts + 1 ' Se incrementa Counts.
If Counts = 10 Then ' Si Counts es 10.
Check = False ' Se asigna a Check el valor False.
Exit Do ' Se acaba el segundo Do.
End If
Loop
Loop Until Check = False ' Salir del "loop" si Check es False.
En el ejemplo mostrado, se sale de los bucles siempre con Counts = 10. Es necesario
fijarse que si se inicializa Counts con un número mayor o igual a 10 se entraría en un
bucle infinito (el primer bucle acabaría con Counts = 20 pero el segundo no finalizaría
nunca, bloqueándose el programa y a veces el ordenador).
3.6.5 Sentencia WHILE … WEND
Esta sentencia es otra forma de generar bucles que se recorren mientras se cumpla la
condición inicial. Su estructura es la siguiente:
While condicion
[sentencias]
Wend
Por ejemplo,
Counts = 0 ’ Se inicializa la variable.
While Counts < 20 ’ Se comprueba el valor de Counts.
Counts = Counts + 1 ’ Se incrementa el valor de Counts.
Wend ’ Se acaba el bucle cuando Counts > 19.
En cualquier caso, se recuerda que la mejor forma de mirar y aprender el funcionamiento
de todas estas sentencias es mediante el uso del Help de Visual Basic. Ofrece una
explicación de cada comando con ejemplos de utilización.
3.6.6 Sentencia FOR EACH ... NEXT
Esta construcción es similar al bucle For, con la diferencia de que la variable que controla
la repetición del bucle no toma valores entre un mínimo y un máximo, sino a partir de los
elementos de un array (o de una colección de objetos). La forma general es la siguiente:
For Each variable In grupo
[sentencias]
Next variable

31
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

Con arrays variable tiene que ser de tipo Variant. Con colecciones variables puede ser
Variant o una variable de tipo Object. Esta construcción es muy útil cuando no se sabe
el número de elementos que tiene el array o la colección de objetos.
3.7 FUNCIONES Y PROCEDIMIENTOS
3.7.1 Conceptos generales sobre funciones
Las aplicaciones informáticas que habitualmente se utilizan, incluso a nivel de informática
personal, suelen contener decenas y aún cientos de miles de líneas de código fuente. A
medida que los programas se van desarrollando y aumentan de tamaño, se convertirían
rápidamente en sistemas poco manejables si no fuera por la modularización, que es el
proceso consistente en dividir un programa muy grande en una serie de módulos mucho
más pequeños y manejables. A estos módulos se les suele denominar de distintas formas
(subprogramas, subrutinas, procedimientos, funciones, etc.) según los distintos lenguajes.
Sea cual sea la nomenclatura, la idea es sin embargo siempre la misma: dividir un
programa grande en un conjunto de subprogramas o funciones más pequeñas que son
llamadas por el programa principal; éstas a su vez llaman a otras funciones más
específicas y así sucesivamente.
La división de un programa en unidades más pequeñas o funciones presenta –entre otras–
las ventajas siguientes:
1. Modularización. Cada función tiene una misión muy concreta, de modo que nunca
tiene un número de líneas excesivo y siempre se mantiene dentro de un tamaño
manejable. Además, una misma función (por ejemplo, un producto de matrices, una
resolución de un sistema de ecuaciones lineales, ...) puede ser llamada muchas veces en
un mismo programa, e incluso puede ser reutilizada por otros programas. Cada función
puede ser desarrollada y comprobada por separado.
2. Ahorro de memoria y tiempo de desarrollo. En la medida en que una misma función
es utilizada muchas veces, el número total de líneas de código del programa disminuye, y
también lo hace la probabilidad de introducir errores en el programa.
3. Independencia de datos y ocultamiento de información. Una de las fuentes más
comunes de errores en los programas de computador son los efectos colaterales o
perturbaciones que se pueden producir entre distintas partes del programa. Es muy
frecuente que al hacer una modificación para añadir una funcionalidad o corregir un error,
se introduzcan nuevos errores en partes del programa que antes funcionaban
correctamente. Una función es capaz de mantener una gran independencia con el resto
del programa, manteniendo sus propios datos y definiendo muy claramente la interfaz o
comunicación con la función que la ha llamado y con las funciones a las que llama, y no
teniendo ninguna posibilidad de acceso a la información que no le compete.
3.7.2 Funciones y procedimientos Sub en Visual Basic 2010
En Visual Basic 2010 se distingue entre funciones y procedimientos Sub. En
ocasiones se utiliza la palabra genérica procedimiento para ambos. La fundamental
diferencia entre un procedimiento Sub y una función es que ésta última puede ser
utilizada en una expresión porque tiene un valor de retorno. El valor de retorno ocupa
el lugar de la llamada a la función donde esta aparece. Por ejemplo, si en una expresión
aparece sin(x) se calcula el seno de la variable x y el resultado es el valor de retorno que
sustituye a sin(x) en la expresión en la que aparecía. Por tanto, las funciones devuelven
valores, a diferencia de los procedimientos que no devuelven ningún valor, y por tanto no
pueden ser utilizadas en expresiones. Un procedimiento Sub es un segmento de código
independiente del resto, que una vez llamado por el programa, ejecuta un número
determinado de instrucciones, sin necesidad de devolver ningún valor al mismo (puede
dar resultados modificando los argumentos), mientras que una función siempre tendrá un
valor de retorno.
Los nombres de los procedimientos tienen reglas de visibilidad parecidas a las de las
variables. Para llamar desde un formulario a un procedimiento Public definido en otro
formulario es necesario preceder su nombre por el del formulario en que está definido. Sin

32
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

embargo, si se desea llamar a un procedimiento definido en un módulo estándar (*.bas)


no es necesario precederlo del nombre del módulo más que si hay coincidencia de nombre
con otro procedimiento de otro módulo estándar.
3.7.3 Funciones (function)
La sintaxis correspondiente a una función es la siguiente:
[Static] [Private] Function nombre ([parámetros]) [As tipo]
[sentencias]
[nombre = expresion]
[Exit Function]
[sentencias]
[nombre = expresion]
End Function
donde nombre es el nombre de la función. Será de un tipo u otro dependiendo del dato
que devuelva. Para especificar el tipo se utiliza la cláusula As Tipo (Integer, Long,
Single, Double, Currency, String o Variant). parámetros son los argumentos que son
pasados cuando se llama a la función. Visual Basic asigna el valor de cada argumento en
la llamada al parámetro que ocupa su misma posición. Si no se indica un tipo determinado
los argumentos son Variant por defecto. Como se verá en un apartado posterior, los
argumentos pueden ser pasados por referencia o por valor.
El nombre de la función, que es el valor de retorno, actúa como una variable dentro del
cuerpo de la función. El valor de la variable expresion es almacenado en el propio nombre
de la función. Si no se efectúa esta asignación, el resultado devuelto será 0 si la función
es numérica, nulo ("") si la función es de caracteres, o Empty si la función es Variant.
Exit Function permite salir de una función antes de que ésta finalice y devolver así el
control del programa a la sentencia inmediatamente a continuación de la que efectuó la
llamada a la función.
La sentencia End Function marca el final del código de la función y, al igual que la Exit
Function, devuelve el control del programa a la sentencia siguiente a la que efectuó la
llamada, pero lógicamente una vez finalizada la función.
La llamada a una función se hace de diversas formas. Por ejemplo, una de las más
usuales es la siguiente:
variable = nombre([argumentos])
donde argumentos son una lista de constantes, variables o expresiones separadas por
comas que son pasadas a la función. En principio, el número de argumentos debe ser igual
al número de parámetros de la función. Los tipos de los argumentos deben coincidir con
los tipos de sus correspondientes parámetros, de lo contrario puede haber fallos
importantes en la ejecución del programa. Esta regla no rige si los argumentos se pasan
por valor (concepto que se verá más adelante).
En cada llamada a una función hay que incluir los paréntesis, aunque ésta no tenga
argumentos.
El siguiente ejemplo corresponde a una función que devuelve como resultado la raíz
cuadrada de un número N:
Function Raiz (N As Double) As Double
If N < 0 Then
Exit Function
Else
Raiz = Sqr(N)
End Function
La llamada a esta función se hace de la forma siguiente:

33
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

Cuadrada = Raiz(Num)
A diferencia de C y C++ en Visual Basic 2010 no es necesario devolver explícitamente
el valor de retorno, pues el nombre de la función ya contiene el valor que se desea
devolver. Tampoco es necesario declarar las funciones antes de llamarlas.
3.7.4 Procedimientos Sub
La sintaxis que define un procedimiento Sub es la siguiente:
[Static] [Private] Sub nombre [(parámetros)]
[sentencias]
[Exit Sub]
[sentencias]
End Sub
La explicación es análoga a la dada para funciones.
La llamada a un procedimiento Sub puede ser de alguna de las dos formas siguientes:
Call nombre[(argumentos)]
o bien, sin pasar los argumentos entre paréntesis, sino poniéndolos a continuación del
nombre simplemente separados por comas:
nombre [argumentos]
A diferencia de una función, un procedimiento Sub no puede ser utilizado en una
expresión pues no devuelve ningún valor. Por supuesto una función puede ser llamada al
modo de un procedimiento Sub, pero en esta caso no se hace nada con el valor devuelto
por la función.
El siguiente ejemplo corresponde a un procedimiento Sub que devuelve una variable F
que es la raíz cuadrada de un número N.
Sub Raiz (N As Double, F As Double)
If N < 0 Then
Exit Sub 'Se mandaría un mensaje de error
Else
F = Sqr(N)
End If
End Sub
La llamada a este procedimiento Sub puede ser de cualquiera de las dos formas
siguientes:
Raiz N, F
Call Raiz(N, F)
En el ejemplo anterior, el resultado obtenido al extraer la raíz cuadrada al número N se
devuelve en la variable F pasada como argumento, debido a que como se ha mencionado
anteriormente, un procedimiento Sub no puede ser utilizado en una expresión.
3.7.5 Argumentos por referencia y por valor
En las funciones (Function) y en los procedimientos Sub de Visual Basic, por defecto
los argumentos se pasan por referencia2; de este modo, cualquier cambio de valor que
sufra un parámetro dentro de la función o del procedimiento Sub también se produce
en el argumento correspondiente de la llamada a la función o al procedimiento Sub.
Cuando se llama a una función o a un procedimiento Sub, se podrá especificar que el
valor de un argumento no sea cambiado por la función o por el procedimiento, poniendo
dicho argumento entre paréntesis en la llamada. Un argumento entre paréntesis en la
llamada es un argumento pasado por valor. Por ejemplo,
Raiz ((Num)) ' En el caso de la función
Raiz (Num), F ' En el caso del procedimiento

34
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

El argumento Num es pasado por valor. Significa que lo que se pasa es una copia de
Num. Si el procedimiento cambia ese valor, el cambio afecta sólo a la copia y no a la
propia variable Num.
Otra forma de especificar que un argumento será siempre pasado por valor es
anteponiendo la palabra ByVal a la declaración del parámetro en la cabecera del
procedimiento (Sub o Function).
Por ejemplo,
Function Raiz (ByVal N As Double)
Sub Raiz (ByVal N As Double, F As Double)
Pasar argumentos por valor evita modificaciones accidentales, pero tiene un coste en
tiempo y memoria que puede ser significativo cuando se pasan grandes volúmenes de
información, como sucede con vectores, matrices y estructuras.
3.7.6 Procedimientos recursivos
Se dice que una función (Function) es recursiva o que un procedimiento Sub es
recursivo si se llaman a sí mismos.
A continuación, se presenta un ejemplo de una función que calcula la factorial de un
número programada de forma recursiva.
Function Factorial (N As Integer) As Long
If N = 0 Then
Factorial = 1 'Condición de final
Else
Factorial = N * Factorial (N - 1)
End If
End Function
En este ejemplo, si la variable N que se le pasa a la función vale 0, significará que se ha
llegado al final del proceso, y por tanto se le asigna el valor 1 al valor del factorial
(recordar que 0! = 1). Si es distinto de 0, la función se llama a ella misma, pero variando
el argumento a (N-1), hasta llegar al punto en el que N-1=0, finalizándose el proceso.
3.8 ESTRUCTURAS: SENTENCIA TYPE
Una estructura (según la nomenclatura típica del lenguaje C) es un nuevo tipo de datos,
un tipo definido por el usuario, que puede ser manipulado de la misma forma que los tipos
predefinidos (Int, Double, String, ...). Una estructura puede definirse como una
colección o agrupación de datos de diferentes tipos evidentemente relacionados entre sí.
Para crear una estructura con Visual Basic 2010 hay que utilizar la sentencia Type ...
End Type.
Esta sentencia solamente puede aparecer en la sección General o de declaraciones de un
módulo.
Pueden crearse como Public o como Private en un módulo estándar o de clase y sólo
como Private en un formulario. Dim equivale a Public. Véase el siguiente ejemplo,
Public Type Alumno
Nombre As String
Direccion As String *40
Telefono As Long
DNI As Long
End Type
Este ejemplo declara un tipo de datos denominado Alumno que consta de cuatro
miembros o campos, denominados Nombre, Direccion, Telefono y DNI.

35
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

Una vez definido un nuevo tipo de datos, en un módulo estándar o de clase se pueden
declarar variables Public o Private de ese tipo (en un formulario sólo Private), como por
ejemplo:
Public Mikel as Alumno
Para referirse a un determinado miembro de una estructura se utiliza la notación
variable.miembro. Por ejemplo,
Mikel.DNI = 34103315
A su vez, un miembro de una estructura puede ser otra estructura, es decir un tipo definido
por el usuario. Por ejemplo,
Type Fecha
Dia As Integer
Mes As Integer
Anio As Integer
End Type
Type Alumno
Alta As Fecha
Nombre As String
Direccion As String * 40
Telefono AS Long
DNI As Long
End Type
Dentro de una estructura puede haber arrays tanto estáticos como dinámicos.
En Visual Basic 2010 se pueden definir arrays de estructuras. La declaración de un
array de estructuras se hará con la palabra Public, Private o Static, dependiendo de su
ámbito. La forma de hacerlo es la siguiente:
Public grupoA (1 To 100) As Alumno
Private grupoB (1 To 100) As Alumno
Static grupoC (1 To 100) As Alumno
En Visual Basic 2010, a la hora de declarar arrays de estructuras, sucede lo mismo que
al declarar arrays de cualquier tipo de variables. Con GrupoA(1 To 100), se crea un
vector de estructuras de 100 elementos de tipo Alumno (grupoA(1), grupoA(2), ...,
grupoA(100)). Con grupoB(100), se crearía un vector de estructuras de 101 elementos
(grupoB(0), grupoB(1), ... grupoB(100)).
Es posible asignar una estructura a otra del mismo tipo. En este caso se realiza una copia
miembro a miembro. Véase el siguiente ejemplo:
GrupoA(1) = delegado
Las estructuras pueden ser también argumentos en las llamadas a funciones y
procedimientos Sub. Siempre son pasados por referencia, lo cual implica que pueden
ser modificados dentro del procedimiento y esas modificaciones permenecen en el entorno
de llamada al procedimiento. En el caso de las funciones, las estructuras pueden ser
también valores de retorno.
3.9 FUNCIONES PARA MANEJO DE CADENAS DE CARACTERES
Existen varias funciones útiles para el manejo de cadenas de caracteres (Strings). Estas
funciones se utilizan para la evaluación, manipulación o conversión de cadenas de
caracteres. Algunas de ellas se muestran en la Tabla 3.4.
Es necesario tener presente que cuando se quieren comparar dos cadenas de caracteres,
dicha comparación se realiza por defecto en función del código ASCII asociado a cada letra
(ver Anexo 8.1). Esto significa que por ejemplo caña es posterior a casa debido a que la
letra ñ tiene un código

36
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

ASCII asociado superior a la letra s (ñ es el 164; s es el 115). Esto mismo ocurre con las
vocales acentuadas. Si se desea conseguir una comparación alfabética lógica es necesario
incluir al comienzo del fichero de código la sentencia Option Compare Text (frente a
Option Compare Binary establecida por defecto). La función strComp() admite un
tercer argumento que permite especificar el tipo de comparación (constantes
vbBinaryCompare o vbTextCompare).

Tabla 3.4. Funciones de manejo de cadenas de caracteres en Visual Basic 2010.


Ejemplos:
MyDouble = 437.324 ’ MyDouble es un Double.
MyString = CStr(MyDouble) ’ MyString contiene "437.324".
MyValue = Val("2457") ’ Devuelve 2457.
MyValue = Val(" 2 45 7") ’ Devuelve 2457.
MyValue = Val("24 and 57") ’ Devuelve 24.
AnyString = "Hello World" ’ Se define el string.
MyStr = Right(AnyString, 6) ’ Devuelve " World".
MyStr = Left(AnyString, 7) ’ Devuelve "Hello W".
MyStr = Right(AnyString, 20) ’ Devuelve "Hello World".
i = StrComp("casa", "caña") ' Devuelve –1 por defecto y 1 con Option
Compare Text
MyString = "Mid Function Demo" ' Se crea un nuevo string.
LastWord = Mid(MyString, 14, 4) ' Devuelve "Demo".
MidWords = Mid(MyString, 5) ' Devuelve "Function Demo".
El operador Like permite comparar dos cadenas de caracteres. Si son iguales devuelve
Trae y si no lo son, False. Téngase en cuenta que Like es un operador, no una función.

37
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

Existe además el operador de concatenación & que puede ser utilizado con cadenas de
caracteres. Se utiliza para poner una cadena a continuación de otra. Por ejemplo:
str1 = "My first string" ’Se inicializan los strings
str2 = "My second string"
TextoFinal = str1 & str2 ’TextoFinal vale "My first stringMy second string"
El operador "+" opera de forma análoga, pero su uso se desaconseja pues en ciertas
ocasiones convierte las cadenas en números y realiza la suma.
Para obtener más información sobre cada una de las funciones buscar Strings en el Help
de Visual Basic 2010.
3.10 FUNCIONES MATEMÁTICAS
Al igual que las funciones vistas para el manejo de cadenas de caracteres, existe una serie
de funciones matemáticas las cuales permiten realizar cálculos dentro de un programa de
Visual Basic.
Dichas funciones se muestran en la Tabla 3.5:
Ejemplos:
MyNumber = Abs(50.3) ’ Devuelve 50.3.
MyNumber = Abs(-50.3) ’ Devuelve 50.3.
MyAngle = 1.3 ' El ángulo debe estar en radianes.

Tabla 3.5. Funciones matemáticas en Visual Basic 2010.


MySecant = 1 / Cos(MyAngle)' Calcula la secante.
MySqr = Sqr(4) ' Devuelve 2.
MySqr = Sqr(23) ' Devuelve 4.79583152331272.
MyVar1 = 12: MyVar2 = -2.4: MyVar3 = 0 'Declaración de las variables
MySign = Sgn(MyVar1) ' Devuelve 1.
MySign = Sgn(MyVar2) ' Devuelve -1.
MySign = Sgn(MyVar3) ' Devuelve 0.
Las funciones trigonométricas de Visual Basic utilizan radianes para medir los ángulos.
Con el fin de completar estas funciones, se ofrece a continuación una relación de funciones
que son derivadas de las anteriores. El alumno podría programar dichas funciones en un
fichero *.bas y así poderlas utilizar posteriormente en cualquier programa. Dichas
funciones se muestran en la Tabla 3.6:

38
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

Tabla 3.6. Funciones auxiliares matemáticas (no las tiene Visual Basic 2010).
4. EVENTOS, PROPIEDADES Y CONTROLES
En este capítulo se pretende
recoger de una manera más
sistemática y general los
eventos y controles más
habituales de Visual Basic
2010. Hay que señalar que en
ningún momento se pretende
abandonar el carácter
introductorio de este manual, y
que Visual Basic 2010 tiene
muchas más posibilidades de las
que aquí se muestran. Por
ejemplo, muchos de los Figura 4.1. Código que gestionará el evento Click sobre
controles y eventos de Visual el control de nombre cmbSalir
Basic 2010 están relacionados
con el acceso a bases de datos. Estos aspectos no se citarán en estos apuntes. Para una
información más detallada se puede acudir a un buen libro de referencia o al Help del
programa.
La programación en Visual Basic 2010 (al menos para ejemplos sencillos) suele proceder
del siguiente modo:
1. Se definen interactivamente sobre el formulario los controles que van a constituir la
aplicación..

39
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

2. Se define para cada control el código con el que se va a responder a cada uno de los
eventos. Para ello basta clicar dos veces sobre el control y se abre una ventana de código
como la mostrada en la Figura 4.1. En ella Visual Basic 2010 ha preparado ya el inicio y
el final de la función con la que se va a responder al evento. El nombre del evento forma
parte del nombre de la función, junto al nombre del control. En el ejemplo del la Figura
4.1 está preparada la función para escribir el código que se ejecutará al producirse el
evento Click sobre el control cmbSalir.
En el resto de este capítulo se verán con un cierto detalle los eventos, controles y
propiedades más habituales en Visual Basic 2010.
4.1 EVENTOS
A continuación, se presentan brevemente los eventos más normales que reconoce Visual
Basic 2010. Es importante tener una visión general de los eventos que existen en
Windows porque cada control de los que se verán más adelante tiene su propio conjunto
de eventos que reconoce, y otros que no reconoce. Cualquier usuario de las aplicaciones
escritas para Windows hace uso continuo e intuitivo de los eventos, pero es posible que
nunca se haya detenido a pensar en ello.
Para saber qué eventos puede recibir un control determinado basta seleccionarlo y pulsar
<F1>. De esta forma se abre una ventana del Help que explica el control y permite
acceder a los eventos que soporta.
4.1.1 Eventos generales
4.1.1.1 Carga y descarga de formularios
Cuando se arranca una aplicación, o más en concreto cuando se visualiza por primera vez
un formulario se producen varios eventos consecutivos: Initialize, Load, Activate y
Paint. Cada uno de Figura 4.1. Código que gestionará el evento Click sobre el control de
nombre cmbSalir. Estos eventos se pueden aprovechar para realizar ciertas operaciones
por medio de la función correspondiente.
Al ocultar, cerrar o eliminar un formulario se producen otra serie de eventos: Deactivate,
QueryUnload, Unload y Terminate que se verán en un próximo ejemplo.
Para inicializar las variables definidas a nivel de módulo se suele utilizar el evento
Initialize, que tiene lugar antes que el Load. El evento Load se activa al cargar un
formulario. Con el formulario principal esto sucede al arrancar la ejecución de un
programa; con el resto de los formularios al mandarlos cargar desde cualquier
procedimiento o al hacer referencia a alguna propiedad o control de un formulario que no
esté cargado. Al descargar un formulario se produce el evento Unload. Si se detiene el
programa desde el botón Stop de Visual Basic 2010 (o del menú correspondiente) o con
un End, no se pasa por el evento Unload. Para pasar por el evento Unload es necesario
cerrar la ventana con el botón de cerrar o llamarlo explícitamente. El evento QueryUnload
se produce antes del evento Unload y permite por ejemplo enviar un mensaje de
confirmación.
El evento Load de un formulario se suele utilizar para ejecutar una función que dé valor
a sus propiedades y a las de los controles que dependen de dicho formulario. No se puede
utilizar para dibujar o imprimir sobre el formulario, pues en el momento en que se produce
este evento el formulario todavía no está disponible para dichas operaciones. Por ejemplo,
si en el formulario debe aparecer la salida del método Print o de los métodos gráficos
Pset, Line y Circle (que se estudian en el Capítulo 6 de este manual) puede utilizarse el
evento Paint u otro posterior (por ejemplo, el evento GotFocus del primer control) pero
no puede utilizarse el evento Load.
Se puede ocultar un formulario sin descargarlo con el método Hide o haciendo la
propiedad Visible = False. Esto hace que el formulario desaparezca de la ventana,
aunque sus variables y propiedades sigan estando accesibles y conservando sus valores.
Para hacer visible un formulario oculto, pero ya cargado se utiliza el método Show, que
equivale a hacer la propiedad Visible = True, y que genera los eventos Activate y Paint.

40
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

Si el formulario no había sido cargado previamente, el método Show genera los cuatro
eventos mencionados.
Cuando un formulario pasa a ser la ventana activa se produce el evento Activate y al
dejar de serlo el evento Desactivate. En el caso de que el formulario que va a ser activo
no estuviera cargado ya, primero sucederían los eventos Initialize, Load y luego los
eventos Activate y Paint.
Todo esto se puede ver y entender con un simple ejemplo, mostrado en la Figura 4.2. Se
han de crear dos formularios (frmPrincipal y frmSecundario). El primero de ellos
contendrá dos botones
(cmdVerSec y cmdSalir)
y el segundo tres
(cmdHide, cmdUnload y
cmdTerminate). El
formulario principal será el
primero que aparece, y
sólo se verá el segundo si
se clica en el botón Cargar
Formulario. Cuando así
se haga, a medida que los
eventos antes
mencionados se vayan Figura 4.2. Resultado del ejemplo de carga de formularios
sucediendo, irán
apareciendo en pantalla unas cajas de mensajes que tendrán como texto el nombre del
evento que se acaba de producir. Según con cual de los tres botones se haga desaparecer
el segundo formulario, al volverlo a ver se producirán unos eventos u otros, según se
puede ver por los mensajes que van apareciendo con cada evento. .

‘código del form. principal Private Sub Form_Initialize()


Private Sub cmdCargar_Click() MsgBox ("Evento Initialize")
frmSecundario.Show End Sub
End Sub Private Sub Form_Load()
' código del form. secundario MsgBox ("Evento Load")
Private Sub cmdHide_Click() End Sub
Hide Private Sub Form_Paint()
End Sub MsgBox ("Evento Paint")
Private Sub cmdUnload_Click() End Sub
Unload Me Private Sub
End Sub Form_QueryUnload(Cancel As
Integer, UnloadMode As Integer)
Private Sub cmdTerminate_Click()
MsgBox ("Evento QueryUnload")
Hide
End Sub
Set Form2 = Nothing
Private Sub Form_Terminate()
End Sub
MsgBox ("Evento Terminate")
Private Sub Form_Activate()
End Sub
MsgBox ("Evento Activate")
Private Sub Form_Unload(Cancel As
End Sub
Integer)
Private Sub Form_Deactivate()
MsgBox ("Evento Unload")
MsgBox ("Evento Deactivate")
End Sub
End Sub

41
ING. ROLANDO BASURCO CARPIO
Es muy interesante realizar este ejemplo y seguir la secuencia de eventos que se producen
al hacer aparecer y desaparecer los formularios.
4.1.1.2 Paint
El evento Paint sucede cuando hay que redibujar un formulario o PictureBox. Esto
sucede cuando esos objetos se hacen visibles por primera vez y también cuando vuelven
a ser visibles después de haber estado tapados por otros, tras haber sido movidos o tras
haber sido modificados de tamaño.
4.1.1.3 El foco (focus)
En todas las aplicaciones de Windows, en cualquiera de sus versiones, siempre hay un
único control, formulario o ventana que puede recibir entradas desde teclado. En cada
momento ese control, ventana o formulario es el que dispone del “foco” (focus). El objeto
que posee el foco está caracterizado por estar resaltado con letra negrita, con un
contorno más vivo o teniendo parpadeando el cursor en él. Este foco puede ser trasladado
de un objeto a otro por código o por interacciones del usuario, como por ejemplo clicando
con el ratón en distintos puntos de la pantalla o pulsando la tecla Tab. Cada vez que un
objeto pierde el foco se produce su evento LostFocus y, posteriormente, el evento
GotFocus del objeto que ha recibido el foco.
El método SetFocus permite dar el focus al objeto al que se aplica. Dos propiedades de
muchos controles relacionadas con el foco son TabIndex y TabStop.
TabStop determina si el foco se va o no a posar en el objeto al pulsar la tecla Tab (si
TabStop está a False no se puede obtener el foco mediante el tabulador) y TabIndex
determina el orden en el que esto va a suceder. Así al cargar un formulario, el foco estará
en aquel objeto cuyo TabIndex sea 0.
Al pulsar la tecla Tab el foco irá al objeto que tenga TabIndex = 1 y así sucesivamente.
Para retroceder en esta lista se pulsa Mayúsculas+Tab. La propiedad TabIndex se
puede determinar en tiempo de diseño por medio de la caja de propiedades de un control,
del modo habitual.
Cuando a un control se le asigna un determinado valor de TabIndex, Visual Basic ajusta
automáticamente los valores de los demás controles (si tiene que desplazarlos hacia arriba
o hacia abajo, lo hace de modo que siempre tengan números consecutivos). Para que un
formulario reciba el foco es necesario que no haya en él ningún control que sea capaz de
recibirlo.
Un grupo de botones de opción tiene un único TabIndex, es decir, se comporta como
si fuera un único control. Para elegir una u otra de las opciones se utilizan las flechas del
teclado (- y ¯).
4.1.1.4 KeyPress, KeyUp y KeyDown
El evento KeyPress sucede cuando el usuario pulsa y suelta determinada tecla. En el
procedimiento asociado con este evento el único argumento KeyAscii es necesario para
conocer cuál es el código ASCII de la tecla pulsada. El evento KeyDown se produce
cuando el usuario pulsa determinada tecla y el evento KeyUp al soltar una tecla.
Los eventos KeyUp y KeyDown tienen un segundo argumento llamado Shift que
permiten determinar si esa tecla se ha pulsado estando pulsadas a la vez cualquier
combinación de las teclas Shift, Alt y Ctrl. En un apartado próximo se explica cómo se
identifican las teclas pulsadas a partir del argumento Shift.
4.1.2 Eventos relacionados con el ratón
4.1.2.1 Click y DblClick
El evento Click se activa cuando el usuario pulsa y suelta rápidamente uno de los botones
del ratón.
También puede activarse desde código (sin tocar el ratón) variando la propiedad Value
de alguno de los controles. En el caso de un formulario este evento se activa cuando el
usuario clica sobre una zona del formulario en la que no haya ningún control o sobre un

42
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

control que en ese momento esté inhabilitado (propiedad Enabled = False). En el caso de
un control, el evento se activa cuando el usuario realiza una de las siguientes operaciones:
· Clicar sobre un control con el botón derecho o izquierdo del ratón. En el caso de un botón
de comando, de un botón de selección o de un botón de opción, el evento sucede
solamente al clicar con el botón izquierdo.
· Seleccionar un registro de alguno de los varios tipos listas desplegables que dispone
Visual Basic.
· Pulsar la barra espaciadora cuando el foco está en un botón de comando, en un botón
de selección o en un botón de opción.
· Pulsar la tecla Return cuando en un formulario hay un botón que tiene su propiedad
Default = True.
· Pulsar la tecla Esc cuando en un formulario hay un botón que tiene su propiedad Cancel
= True.
· Pulsar una combinación de teclas aceleradoras (Alt + otra tecla, como por ejemplo
cuando de despliega el menú File de Word con Alt+F) definidas para activar un
determinado control de un formulario.
También se puede activar el evento Click desde código realizando una de las siguientes
operaciones:
· Hacer que la propiedad Value de un botón de comando valga True.
· Hacer que la propiedad Value de un botón de opción valga True
· Modificar la propiedad Value de un botón de selección.
El evento DblClick sucede al clicar dos veces seguidas sobre un control o formulario con
el botón izquierdo del ratón.
4.1.2.2 MouseDown, MouseUp y MouseMove
El evento MouseDown sucede cuando el usuario pulsa cualquiera de los botones del
ratón, mientras que el evento MouseUp sucede al soltar un botón que había sido pulsado.
El evento MouseMove sucede al mover el ratón sobre un control o formulario.
Los eventos MouseUp y MouseDown tienen algunos argumentos que merecen ser
comentados. El argumento Button indica cuál de los botones del ratón ha sido pulsado o
soltado, y el argumento Shift indica si además alguna de las teclas alt, shift o ctrl está
también pulsada. La lista con todos los posibles valores de estos argumentos se muestra
en la Tabla 4.1:

Tabla 4.1. Valores de los argumentos de los eventos MouseUp y MouseDown.


Con estos valores se aplica la aritmética booleana, lo cual quiere decir que si se pulsan
simultáneamente los botones izquierdo y derecho del ratón el argumento Button valdrá
3 (1+2) y si se pulsan las tres teclas shift, ctrl y alt simultáneamente el argumento Shift
valdrá 7 (1+2+4). Conesta forma de combinar los valores se resuelven todas las
indeterminaciones posibles.
4.1.2.3 DragOver y DragDrop
El evento DragOver sucede mientras se está arrastrando un objeto sobre un control.
Suele utilizarse para variar la forma del cursor que se mueve con el ratón dependiendo de
si el objeto sobre el que se encuentra el cursor en ese momento es válido para soltar o
no. El evento DragDrop sucede al concluir una operación de arrastrar y soltar. El evento
DragOver requiere de los argumentos que se muestran a continuación:

43
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

Private Sub Text1_DragOver(Source As Control, _


X As Single, Y As Single, State As Integer)
...
End Sub
Los argumentos de este evento son Source que contiene el objeto que está siendo
arrastrado, X e Y que indican la posición del objeto arrastrado dentro del sistema de
coordenadas del objeto sobre el que se está arrastrando y State (que es propio del
DragOver, pero no aparece en el DragDrop) que vale 0, 1 ó 2 según se esté entrando,
saliendo o permaneciendo dentro del mismo objeto, respectivamente. Es importante
señalar que el evento DragOver pertenece al objeto sobre el que se arrastra, no al objeto
que es arrastrado.
En el Help se puede encontrar información sobre la propiedad DragMode, que puede
tomar dos valores (vbManual y vbAutomatic). Esta constante determina cómo comienza
una oparación de arrastre de un objeto. En modo manual se debe comenzar llamando al
método Drag para el objeto a arrastrar. En modo automático basta clicar sobre el objeto
a arrastrar, pero puede que en este caso dicho objeto no responda del modo habitual a
otros eventos.
4.4 Programas Propuestos para Text Ingresa
aprendizaje palabras:
Label 2 (Nombre) Label 2
USO DE LOS CONTROLES TEXT Y
Caption Mensaje de
LABEL
salida:
Ejercicio 1. Elaborar un formulario que Label 3 (Nombre) lblMensaje
permita ingresar desde el teclado, Text (vacío)
palabras en un control de texto: Text1 y Alignment 2 – Center
luego visualizar dichas palabras en un BorderStyle 1 –
control Label, tal como se muestra en la Font FixedSingle
siguiente figura: Estilo de Arial Black
Fuente Negrita
Form 1 ToolTipText (Bold)
Haz clic
aquí
Label 1
Código del Programa.-Hacer doble clic
Text 1 en lblMensaje y digitar el siguiente
módulo de programa:
Label 2
Private Sub lblMensaje_Click() ‘
Módulo del programa
lblMensaje
lblMensaje.Text = Text1.Text ‘ la
Tabla Nº 1 de propiedades del derecha asigna a la izquierda
formulario Form1 ‘ lblMensaje recibe el dato desde
OBJETO PROPIEDAD VALOR Text1 que se ingresa por teclado
Form 1 (Nombre) Form1
BackColor Light gray End Sub
Text Mensajes Ejercicio 2. Elaborar un formulario que
permita ingresar desde el teclado,
palabras en dos controles de texto: Text1
y Text2; luego encadenar y visualizar
TextBox (Nombre) Text1
dichas palabras en un control Label, tal
1 Text (vacío)
como se muestra en la siguiente figura:
Alignment 2 – Center
Label 1 (Nombre) Label 1

44
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

Form 1
Label 1

Text 1
Label 2

Text 2

Label 3

lblCadena
c1 = Text1.Text ´c1 recibe el
Tabla Nº 2 de propiedades del
dato desde Text1 que se ingresa
formulario Form1
por teclado
OBJETO PROPIEDA VALOR
D c2 = Text2.Text
Form 1 (Nombre) Form1 lblCadena.Text = c1 & “ “ & c2 ´
BackColor Light gray
Text Encadena lblCadena.Caption visualiza la
palabras respuesta
TextBo (Nombre) Text1
x1 Alignment 2 – Center End Sub ´& es un
Text (vacío) operador de concatenación de
TextBo (Nombre) Text2
x2 Alignment 2 – Center textos
Text (vacío) Ejercicio 3. Elaborar un formulario que
Label 1 (Nombre) Label 1
Text Ingresa permita ingresar números en dos
palabras: controles Text y mostrar la sumar en un
Label 2 (Nombre) Label2
Caption Ingresa control Label, tal como se muestra en la
otras siguiente figura:
palabras:
Label 3 (Nombre) Label 3 Label 1
Text Expresión
encadenada Text 1
:
Label 4 (Nombre) lblCadena
Text (vacío) Text 2
Alignment 2 – Center
BorderStyle 1 – Label 2
ToolTipText FixedSingle
Haz clic aquí lblSuma
Código del Programa.-Hacer doble clic
en lblCadena y digitar el siguiente Tabla Nº 3 de propiedades del
módulo de programa: formulario Form1
Private Sub lblCadena_Click() OBJETO PROPIEDAD VALOR

45
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

Form 1 (Nombre) Form1


BackColor Light gray
Text Encadena cmdSuma
palabras
TextBox (Nombre) Text1 Text 1
1 Text (vacío)
TextBox (Nombre) Text2
2 Text (vacío) Text 2
Label 1 (Nombre) Label 1
Text Ingresa dos
números cmdDivision
Label 2 (Nombre) Label2
Text La
respuesta lblResultado
es:
Tabla Nº 4 de propiedades del
Label 3 (Nombre) lblSuma
Text (vacío) formulario Form1
Alignment 2 – Center
BorderStyle 1 – OBJETO PROPIEDA VALOR
ToolTipText FixedSingle D
Haz clic Form 1 (Nombre) Form1
aquí BackColor Light gray
Text Encadena
Código del Programa. Hacer doble clic palabras
en lblSuma y digitar el siguiente módulo TextBox (Nombre) Text1
1 Text (vacío)
de programa:
TextBox (Nombre) Text2
Private Sub lblSuma_Click() 2 Text (vacío)
Label 1 (Nombre) Label 1
Dim n1 As Single, n2 As Single Text Ingrese dos
' n1 y n2 son datos numéricos de números
Label 2 (Nombre) Label2
tipo single (real) Text El resultado
n1 = Text1.Text es:
Label 3 (Nombre) lblResultad
n2 = Text2.Text Text o
lblSuma. Text = n1 + n2 Alignment (vacío)
BorderStyle 2 – Center
End Sub BackColor 1 –
FixedSingle
USO DEL CONTROL COMMAND Blanco
Comman (Nombre) cmdSuma
d1 Text &Suma
Ejercicio 4. Elaborar una calculadora
Comman (Nombre) cmdResta
básica que permita ingresar números en d2 Text &Resta
Comman (Nombre) cmdProduc
dos controles Text; y con cuatro controles
d3 Text to
Command efectuar las operaciones &Producto
Comman (Nombre) cmdDivisio
aritméticas, de acuerdo a la figura:
Label 1 d4 Text n
&División
Código del Programa:
Dim n1 As Single, n2 As Single
Private Sub cmdSuma_Click()

46
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

n1 = txtN1.Text ComboBo (Nombre) cboPais


x1 Text (vacío)
n2 = txtN2.Text
Items Argentina
lblResultado.Text = n1 + n2 Ecuador
Colombia
End Sub
Venezuela
Private Sub cmdResta_Click() Bolivia
Label 1 (Nombre) Label 1
n1 = txtN1.Text
Text Elija un
n2 = txtN2.Text país:
lblResultado. Text = n1 - n2 Label 2 (Nombre) Label2
Text Su capital
End Sub es:
Private Sub cmdProducto_Click() Label 3 (Nombre) lblCapital
Text (vacío)
n1 = txtN1.Text Alignment 2 – Center
n2 = txtN2.Text BorderStyle 1 -
FixedSingl
lblResultado. Text = n1 * n2 e
End Sub Código del Programa. Hacer doble clic
en el ComboBox y digitar lo siguiente,
Private Sub cmdDivision_Click() usando la estructura selectiva simple IF -
n1 = txtN1.Text THEN:
Private Sub cboPais_Click()
n2 = txtN2.Text
p = cboPais.Text
If n2 <> 0 Then ‘ Evita la
c = ""
división entre cero
If p = "Ecuador" Then
lblResultado. Text = n1 / n2
c =
Else
lblResultado. Text = "Error"
End If
End Sub
USO DEL CONTROL COMBOBOX

Ejercicio 5. Usando un ComboBox,


elaborar un formulario, que muestre una
lista de países y su correspondiente "Quito"
capital. Usar el IF.
End If
Tabla Nº 5 de propiedades del
If p = "Venezuela" Then
formulario Form1
c = "Caracas"
OBJETO PROPIEDA VALOR
D End If
Form 1 (Nombre) Form1
If p = "Bolivia" Then
BackColor Light gray
Text País y su c = "La Paz"
capital
End If
If p = "Argentina" Then
c = "Buenos Aires"

47
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

End If Case "Tacna" : p = 15


If p = "Colombia" Then End Select
c = "Bogota" Text1.Text = p ´la respuesta (o
End If sea el pago del pasaje) se visualiza
lblCapital. Text = c en el Text1
End Sub End Sub
Ejercicio 6. Usando un ComboBox,
elaborar un formulario que muestre el
precio del pasaje Arequipa-Lima: S/.50;
Arequipa–Ica: S/.30 y Arequipa-Tacna:
S/.15. Usar la estructura Select Case.
Tabla Nº 6 de propiedades del
formulario Form1
OBJETO PROPIEDA VALOR
D
Form 1 (Nombre) Form1 USO DEL CONTROL HORIZONTAL
BackColor Blanco SCROLLBAR
Text Transporte Ejercicio 7. Usando un Horizontal
s Chasqui ScrollBar, elaborar un formulario que
TextBox 1 (Nombre) Text1 muestre el calificativo de una nota, de
Text (vacío) acuerdo a una tabla de calificaciones;
Enabled False usando la estructura selectiva múltiple
ComboBo (Nombre) Combo1 Select Case.
x1 Items Lima USO DEL CONTROL OPTION
Ica
Tacna Ejercicio 8. Elaborar una calculadora
Label 1 (Nombre) Label1 básica, usando controles Option para las
Text Pasaje a: operaciones aritméticas y dos TextBox
para el ingreso de los números. El
Label 2 (Nombre) Label2
resultado se debe visualizar en un control
Text Pago en
Label de acuerdo al siguiente formulario.
S/.
(Nota: Insertar primero el Text1).
Código del Programa.-Hacer doble clic
USO DEL CONTROL CHECK
Label 1 en el ComboBox y digitar lo siguiente: Ejercicio 9. Elaborar una aplicación, de
Label 2acuerdo al formulario adjunto, usando
Option Explicit
controles Check para determinar el total
Dim c As String ´ c es una variable a pagar por consumo en una pollería. El
pago visualizarlo en un control Label.
de tipo cadena o alfanumérica
USO DE LOS CONTROLES DRIVE,
Dim p As Integer ´ p es una DIRLIST, FILELIST E IMAGE
variable de tipo numérico entero Ejercicio 10. Desarrollar un visualizador
de archivos gráficos.
Private Sub Combo1_Click()
USO DEL CONTROL TIMER
c = Combo1.Text ´c recibe el
Ejercicio 11. Crear un reloj digital con el
nombre del país desde el ComboBox
lblCapital Control Timer, y cambie la Propiedad del
control Timer a Interval =1000 (1
p=0
segundo).
cboPais Select Case c Ejercicio 12.-Elaborar una aplicación,
Case "Lima" : p = 50 que permita determinar, a través de un

Case "Ica" : p = 30

48
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

mensaje, si un número es positivo o USO DE ESTRUCTURAS DE CONTROL


negativo FOR, WHILE, DO WHILE
Ejercicio 13.-Elaborar una aplicación, Ejercicio 22. Visualizar los diez primeros
que permita determinar, a través de un números naturales, usando la estructura
mensaje, al número mayor o si son repetitiva FOR - NEXT
iguales. Ejercicio 23. Visualizar diez múltiplos
Ejercicio 14.-Elaborar una aplicación del cinco, desde 100 de forma
que permita mostrar siempre dos ascendente. Nota: Las mismas
números, ordenados de menor a mayor. propiedades del formulario anterior.
Ejercicio 15. Mostrar el factorial de un USO DEL INPUTBOX
número a través de una barra Ejercicio 24. Ingresar 5 números.
USO DEL CONTROL SHAPE (FIGURA Mostrar al mayor, usando FOR, un sólo
GEOMETRICA) IF, y una ventana de diálogo que diga:
Ejercicio 16. Mostrar el área de un “Ingrese un número:”
círculo al ingresar el radio a través de una Ejercicio 25. Visualizar el pago parcial y
barra horizontal. Hacer doble clic en el total con/sin IGV, al ingresarse varios
hsbRadio y digite: artículos (txtArti), la cantidad (txtCanti),
Ejercicio 17. Mostrar el calificativo de y el precio unitario (txtPU) de cada caso.
una nota al ingresarse a través de una Los Text, su propiedad Multiline = true
barra horizontal. Hacer doble clic en Los totales mostrarlo en Labels
hsbNota y digite: (lblParcial, lblIGV, lblTotal).
Ejercicio 18. Mostrar las soluciones Ejercicio 26. La entrada a un circo
(raices) de una ecuación de 2do grado: cuesta S/ 10; pero si es menor de 5 años,
aX^2 + bX + c = 0. Hacer doble clic en paga un cuarto de entrada; pero si es
cmdEjecutar y digite: menor de 18 años, paga media entrada.
Visualizar el pago en cada caso.
Ejercicio 19. Ingresar tres números
diferentes en controles Text. Mostrar al Ejercicio 27. Ingresar una cantidad
mayor en lblMensaje (Label), usando dos indeterminada de números enteros.
IF y el operador AND. Hacer doble clic en Visualizar el total de números ingresados,
cmdOK y digite: la cantidad de positivos así como su
suma. Para finalizar ingrese el cero.
Ejercicio 20. Ingresar tres números en
controles Text. Mostrar los números Ejercicio 28. Visualizar diez múltiplos
repetidos en lblMensaje (Label); usando del cinco desde el 5 en forma ascendente
dos IF y el operador OR. Hacer doble clic usando la instrucción DO WHILE y el
en cmdOK y digite: evento click del Text
Ejercicio 21. Ingresar un número a un Ejercicio 29. Visualizar un número
control Text. Mostrar el Mensaje “Par” o aleatorio entre uno y diez al hacer clic en
“No es par” en lblPar (Label), usando el el Text1 y luego determinar en cuantos
operador MOD. Hacer doble clic en lblPar ensayos se vuelve a obtener el mismo
y digite: número al hacer clic en cmdAleatorio.
4.5 ARCHIVOS Y ENTRADA/SALIDA
DE DATOS
En este capítulo se van a describir varias formas de introducir información en el programa,
así como de obtener resultados en forma impresa o mediante escritura en un fichero. Se
va a presentar una nueva forma interactiva de comunicarse con el usuario, como son las
cajas de diálogo MsgBox e InputBox. Particular interés tiene la lectura y escritura de
datos en el disco, lo cual es necesario tanto cuando el volumen de información es muy
importante (la memoria RAM está siempre más limitada que el espacio en disco), como
cuando se desea que los datos no desaparezcan al terminar
la ejecución del programa. Los ficheros en disco resuelven ambos problemas.
También se verá en este capítulo cómo obtener resultados alfanuméricos y gráficos por la
impresora.

49
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

5.1 CAJAS DE DIÁLOGO INPUTBOX Y MSGBOX


Estas cajas de diálogo son similares a las que se utilizan en muchas aplicaciones de
Windows. La caja de mensajes o MsgBox abre una ventana a través de la cual se envía
un mensaje al usuario y se le pide una respuesta, por ejemplo en forma de clicar un botón
O.K./Cancel, o Yes/No. Este tipo de mensajes son muy utilizados para confirmar
acciones y para decisiones sencillas. La caja de diálogo InputBox pide al usuario que
teclee una frase, por ejemplo su nombre, un título, etc.
La forma general de la función MsgBox es la siguiente:
respuesta = MsgBox("texto para el usuario", tiposBotones, "titulo")
donde respuesta es la variable donde se almacena el valor de retorno, que es un número
indicativo del botón clicado por el usuario, de acuerdo con los valores de la Tabla 7.1. La
constante simbólica que representa el valor de retorno indica claramente el botón clicado.
Los otros dos argumentos son opcionales. El parámetro tiposBotones es un entero que
indica la combinación de botones deseada por el usuario; sus posibles valores se muestran
en la Tabla 7.2. También en este caso la constante simbólica correspondiente es
suficientemente explícita. Si este argumento se omite se muestra sólo el botón O.K. El
parámetro titulo contiene un texto que aparece como título de la ventana; si se omite, se
muestra en su lugar el nombre de la aplicación.

Tabla 7.1. Botón clicado por el usuario. Tabla 7.2. Botones mostrados en MsgBox.

Se puede modificar el valor de tiposBotones de modo que el botón que se activa por
defecto cuando se pulsa la tecla Intro (el botón que tiene el focus) sea cualquiera de los
botones de la caja.
Para ello basta sumar a tiposBotones otra constante que puede tomar uno de los tres
valores siguientes: 0 (vbDefaulButton1, que representa el primer botón), 256
(vbDefaulButton2, que representa el segundo botón) y 512 (vbDefaulButton3, que
representa el tercer botón).
Finalmente, se puede incluir en el mensaje un icono ad-hoc por el mismo procedimiento
de sumarle al argumento tiposBotones una nueva constante numérica con los siguientes
valores y significados definidos por la constante simbólica apropiada: 16 (vbCritical), 32
(vbQuestion), 48
(vbExclamation) y 64 (vbInformation). Es obvio que, por los propios valores considerados,
al sumar estas constantes o las anteriores al argumento tiposBotones, la información
original descrita en la Tabla 7.2 no se pierde. La Figura 7.1 muestra un ejemplo de caja
MsgBox resultado de ejecutar el comando siguiente:
lblBox.Caption = MsgBox("Pulse un botón: ", 2 + 256 + 48, _ "Caja de mensajes")
donde el “2” indica que deben aparecer los botones Abort, Retry y Cancel, el “256” indica
que el botón por defecto es el segundo (Retry) y el “48” indica que debe aparecer el icono
de exclamación. Por otra parte, la forma general de la función InputBox es la siguiente:
texto = InputBox("texto para el usuario", "titulo", "default", left, top)

50
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

donde texto es la variable donde se almacena el valor de retorno, que es el texto


tecleado por el usuario. Los parámetros "texto para el usuario" y titulo tienen el mismo
significado que en MsgBox. El parámetro default es un texto por defecto que aparece
en la caja de texto y que el usuario puede aceptar, modificar o sustituir; el contenido de
esta caja es lo que en definitiva esta función devuelve como valor de retorno.
Finalmente, left y top son las

7.1. Ejemplo de caja MsgBox Figura 7.2. Ejemplo de caja de InputBox.


5.2 Uso del MSChart.-
Al crear una dispersión XY gráfico mediante el control MSChart, el gráfico resultante puede
aparecer distorsionada; que es muy alto y estrecho o muy corto y todo. Esto se produce
en un gráfico de dispersión XY cuyos ejes tienen intervalos que diferencian a una gran
cantidad. Por ejemplo, un eje de X con un intervalo de 0 - 10000 y un eje Y de 0 - 50.
De forma predeterminada, la escala de los ejes de un gráfico XY (Dispersión) es uniforme.
Si los valores de x son pequeños en comparación con los valores o viceversa, el gráfico
puede mostrarse distorsionado. Para permitir el escalado de cada eje para ser
independientes, cambiar la propiedad de UniformAxis del objeto Plot en false. El valor
predeterminado de esta propiedad es True.
Ejemplo paso a paso
1. Inicie Visual Basic y cree un nuevo proyecto EXE estándar. Se creará Form1
de manera predeterminada.
2. Haga clic en componentes en el menú proyecto y comprobar el componente
de "Control de gráfico de Microsoft". El control MSChart estará disponible en
el cuadro de herramientas.
3. Coloque un control MSChart en Form1.
4. Copie y pegue el código siguiente a ventana de código del formulario:

1. Private Sub Form_Load()


2. Dim Graph(1 To 10, 1 To 2) As Single
3. Dim x As Integer
4. For x = 1 To 10
5. Graph(x, 1) = x ' value for X-axis
6. Graph(x, 2) = x * 10 ' value for Y-axis
7. Next x
8. MSChart1.chartType = VtChChartType2dXY ' set to X Y Scatter chart
9. MSChart1 = Graph ' populate chart's data grid using Graph array
10. ' Leave the following line commented until step 6:
11. 'MSChart1.Plot.UniformAxis = False

51
ING. ROLANDO BASURCO CARPIO
VISUAL BASIC 2010

12. End Sub

5. Presione la tecla F5 para


ejecutar el proyecto. Observe
que el gráfico no es legible
(alto y estrecho) porque ejes
x e y utilizan la misma escala
y los valores son mayores
que los valores de x.
6. Detenga el proyecto y quite el
comentario de la última línea
de código.
7. Presione la tecla F5 para
ejecutar el proyecto y
observe que el gráfico es
legible.

EJEMPLO
1. Programa que dibuja la ecuación y = x2 - 3x + 12 en el dominio -10 <= x <=
10
2. Function FdeX(ByVal x As
Single) As Single
3. FdeX = (x ^ 2) - (x * 3) +
12
4. End Function
5.
6. Sub Form_Paint()
7. Dim x As Single
8. 'Configura la pantalla
9. Cls
10. Scale (-150, 150)-(150, -
150) 'Sistema de
coordenadas cartesianas estándar
11. 'Dibujar los ejes
12. Line (-150, 0)-(150, 0)
13. Line (0, -150)-(0, 150)
14. CurrentX = -10
15. CurrentY = FdeX(-10)
16. For x = -10 To 10
17. Line -(x, FdeX(x)) 'Dibujar la línea desde la última posición conocida
18. Next x
19. End Sub
La Grafica será similar a la siguiente:

52
ING. ROLANDO BASURCO CARPIO
MATLAB
1. Introducción
Este es el aspecto que presenta la versión R2015-A de MatLab, que será la que
utilizaremos este curso:

Ventana de
comandos
Espacio de
Carpeta de Variables
trabajo

Historial de
comandos

En la ventana de comandos es donde podemos introducir las distintas expresiones para


que MatLab las evalúe. Para realizar los cálculos elementales con MATLAB es suficiente
conocer la sintaxis de las distintas operaciones:

Ejemplo 1 Obsérvese la diferencia entre las siguientes operaciones:

Para borrar la ventana de comandos se utiliza la orden clc. Esta acción no borra de la
memoria nada que haya sido creado con anterioridad.
Las órdenes que han sido escritas previamente en un fichero ASCII se van a ejecutar
secuencialmente. Los ficheros que reconoce MatLab reciben el nombre de ficheros m,
debido a que su nombre tiene extensión .m.
Para crear un fichero .m se pincha con el ratón File -> New -> M-File, o bien se pincha el

primer icono de la barra de herramientas . Los dos caminos nos llevan a un editor de
texto en el que se escriben las instrucciones que se quieren ejecutar posteriormente en el
área de trabajo.

53
ING. ROLANDO BASURCO CARPIO
MATLAB 2015

El signo% permite añadir comentarios, MATLAB obviará todo lo que esté escrito a la
derecha de dicho símbolo. Además, si las primeras líneas van precedidas de este símbolo,
MATLAB considerará éstas como la ayuda del fichero, y cuando en el área de trabajo
tecleemos help nombre_fichero nos devolverá este comentario.
Una vez escrito el fichero, nos situamos en la opción File del menú del editor, se elige la
opción Save As y aparece una ventana donde escribiremos el nombre del fichero
nombre_fichero.m. Las reglas para dar nombre a un fichero son las siguientes: el primer
carácter del nombre debe ser una letra, nunca un número, se pueden utilizar letras,
números y el guión de subrayado, nunca signos de puntuación, ni los símbolos que indican
operaciones y nunca pueden contener letras acentuadas ni espacios en blanco.
Para ejecutar un fichero .m se escribe el nombre de dicho fichero sin extensión en el área
de trabajo, y se pulsa enter,
2. Variables
Introducir variables nos ofrece nuevas posibilidades enMATLAB. Las reglas que se utilizan
para nombrar las variables son las siguientes:
➢ MATLAB distingue entre letras mayúsculas y minúsculas. Las variables area, Area,
AREA, arEa son variables distintas.
➢ El nombre de una variable puede contener un máximo de 31 caracteres ignorándose
los posteriores.
➢ El nombre de una variable debe empezar necesariamente por una letra, aunque puede
contener letras números y el guión de subrayado, nunca puede contener operadores
(+,*,...), espacios en blanco ni signos de puntuación.
➢ No deben nombrarse variables con funciones con significado específico enMATLAB, por
ejemplo, cos=3 construye una variable cos cuyo valor es 3, y a partir de este momento
no podríamos calcular el coseno de un ángulo hasta que no borrásemos la variable
cos.
Ejemplo 2 Si queremos calcular el espacio recorrido por un móvil en movimiento rectilíneo
y uniforme de velocidad v0 = 5 m/s, para distintos tiempos, es necesario actualizar la
variable espacio para cada valor del tiempo:
>> v0=5, t=1, s=v0*t
>> t=3 %Cambiamos el valor de t
>> s %s no se ha actualizado
>> s=v0*t %actualización de s
Obsérvese, por un lado, que en la primera línea se han definido tres variables, sin más
que separarlas por comas y, por otro, que hasta que no se actualice la definición de la
variable s su valor no cambia.
2.1. Información sobre las variables
Para obtener información sobre las variables definidas en una sesión de trabajo se utilizan
las órdenes who y whos.
La primera muestra las variables que tienen valores asignados, la segunda nos da además
información sobre el tamaño y el tipo de dato.
>> who
>> whos
Puede observarse que MATLAB utiliza los escalares como matrices 1×1.
2.2. Cómo borrar variables
La orden clear all borra de la memoria todas las variables definidas hasta el momento; si
a la orden clear se le añade una lista de variables (separadas por espacios en blanco) sólo
se borrarán las variables de la lista.
>> clear t

54
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

>> s=v0*t
>> who
Como la variable t ha desaparecido MATLAB da un mensaje de error al recalcular s.
2.3. Algunas variables predefinidas en MATLAB
Algunas variables ya están definidas en MATLAB:

NaN (Not a Number) representa una expresión indeterminada, como puede verse en el
siguiente ejemplo:
>> (2-2)/(3-3)
3. Trabajando con matrices
Como ya se ha comentado, el tipo básico de dato con el que MATLAB trabaja es la matriz,
incluso los escalares son considerados como matrices 1×1, por lo que es esencial
familiarizarse con esta sección.
3.1. Vectores
Los vectores se introducen escribiendo cada una de sus coordenadas entre corchetes,
separadas por un espacio en blanco:
>> v=[1 3 pi 1/3]
o bien separadas por comas:
>> v=[1,3,pi,1/3]
No obstante, existen otras formas de introducir vectores, cuando sus coordenadas guardan
alguna relación entre sí:

>> v=[1:0.3:2]
>> v=(1:-0.4:-0.8)
Si se omite el incremento h MATLAB toma por defecto h=1
>> v=1:4
En la orden linspace el tercer argumento es opcional, y si no se introduce toma el valor
100:
>> v=linspace(0,10)
Ejemplo 3 Supongamos ahora que en el ejemplo 2 queremos calcular los espacios
recorridos por el móvil a velocidad v0 = 5 m/s, para 5 instantes correspondientes a los 2
primeros segundos del movimiento:
>> t=linspace(0,2,5)
>> v0=5
>> s=v0*t
Obsérvese que, como cabía esperar, el resultado del producto de un escalar por un vector
es el vector de las posiciones
en los instantes correspondientes.

55
ING. ROLANDO BASURCO CARPIO
MATLAB 2015

Si nos interesa conocer las posiciones en instantes de tiempo separados por 0.3 segundos
>> t=[0:0.3:2]
>> s=v0*t
3.2. Matrices
Los elementos de una matriz se introducen entre corchetes. Las filas separadas mediante
un punto y coma (;) y los elementos separados por espacios en blanco o comas.
>> A=[1 2 3; 3,1,2;1 1 0]
Una vez definida una matriz o un vector, se puede acceder a sus elementos o submatrices
con las órdenes:
Or den Salida
v(i) Coordenada i del vector v
v(end) Ultima coordenada del vector v
A(I,j) Elemento de la inatriz A que ocupa la posicion i j
A(:j) Colurnna j de la inatriz A
A(i.:) Fila 1 de la inatriz A
A(v,w) Subrnatriz de A que contiene las filas indicadas en las coordenadas de x y
las columnas Iindicadas en w
A(i,:)=[ ] Elimina la fila i de la matriz A
A(:,j)=[ ] Elnnina la colurnna j de la matriz A
A(:.end) Ultima colurnna de la matriz A
Haciendo uso de estas órdenes pueden introducirse matrices y vectores elemento a
elemento. Al asignarle un valor a una posición, se construye la matriz o vector de menor
tamaño que contiene los elementos introducidos y hace ceros los no asignados.
>> B(5)=3
>> B(2,4)=5
O bien se puede utilizar para modificar posiciones de una matriz predefinida:
>> A=[1 2 3; 4 5 6]
>> A(1,2)=5
También puede eliminarse filas y columnas de matrices dadas.
>> A=[1 2 3 4 1; 3,1,2 0 2;1 1 0 1 3]
>> A(3,4)=100, A(2,5)=200
>> B=A
>> B(:,2)=[]
La matriz B coincide con la matriz obtenida de eliminar la columna 2 de A.
Pueden definirse ciertas matrices con las siguientes órdenes:
Orden Salida
ones(n) Matriz cuadrada n x n de unos.
ones(m,n) Matriz m x n de unos.
zeros(n) Matriz cuadrada n x n de ceros.
zeros{m,n} Matriz m x n de ceros.
eye(n) Matriz identidadnxn
eye (m, n) Matriz m x n con unos en la diagonal principal y el resto
ceros.
3.3. Definición de matrices por bloques

56
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

Dadas dos matrices A y B con el mismo número de filas, se puede definir una matrizC
formada por todas las columnas de A y de B:
>> A=zeros(3)
>> B=eye(3,2)
>> C=[A B]
Análogamente, se puede definir una matriz a partir de otras dos con el mismo número de
columnas:
>> A=eye(2,3)
>> B=ones(3)
>> C=[A;B]
Estas dos posibilidades pueden combinarse para formar matrices definidas por bloques:
>> A=[eye(3) ones(3,3);1:6;zeros(2) ones(2,1) eye(2,3)]
3.4. Operaciones con vectores y matrices
Si A y B son matrices con las dimensiones adecuadas y l es un escalar, las operaciones
habituales se efectúan con las siguientes órdenes:
Operacion Resultado
A+B Suina Ay B
A-B Resta B de A
A*B Multiplica A por B
A/B Calcula AB_1
A\B Calcula A_1B
A*A Multiplica todos los elenientos de A por A
A^n Eleva la matriz. A al entero n
A. ' Calcula la Traspuesta de A
A' Calcula la traspuesfa de la conjugada de A
Además de las operaciones mencionadas, en MATLAB se definen otras operaciones a las
que llamaremos operaciones elemento a elemento:
Operation Resoltado
+A Suma a cada elemento de A el escalar 
A.*B Calcula una malriz que en la posicion (i,j) contiene el producto ajjbjj
de los elenientos que en A y B ocupan die ha posicion
A./B Calcula una malriz que en la posicion {i.j) contiene el cociente aij/bij
de los elementos que en A y B ocupan dicha posicion
A.^n Eleva cada elemento de la niatriz A al entero n
A.^B Calcula una niatriz que en la posicion (i.j) contiene aij bij

En MATLAB hay una colección de funciones que pueden utilizarse para obtener información
y realizar cálculos. Por ejemplo, si se escribe
» A=eye(3,2)
se obtiene una matriz de tres filas y dos columnas con unos en la diagonal principal y
ceros en el resto. El nombre de la función es eye, los argumentos de entrada son 3 y 2,
la matriz resultante, que tiene por nombre A, es la salida.
Las siguientes funciones permiten obtener información sobre las matrices o vectores que
tienen como argumentos de entrada

57
ING. ROLANDO BASURCO CARPIO
MATLAB 2015

Ejemplo 4 Calcula el polinomio det(A−xI) para A =


Solución
>> A=[1 2 5; 2 1 -1; 3 0 -3]
A = 1 2 5
2 1 -1
3 0 3
>> p=poly(A)
p =
1 1 -24 12
y se obtiene que det(xI −A) = x3+x2−24x+12. También se puede escribir:
>> syms lambda
>> A=[1 2 5; 2 1 -1; 3 0 -3]
A =

58
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

1 2 5
2 1 -1
3 0 -3
>> p=poly(A,lambda)
p =
lambda^3 + lambda^2 - 24*lambda + 12
Obviamente, las funciones matemáticas habituales también están predefinidas en
MATLAB, con la única particularidad de que actúan sobre vectores o matrices elemento a
elemento.

y las funciones trigonométricas:

En MATLAB, por defecto, las letras i ó j representan la unidad imaginaria. Obsérvese cómo
se introduce el complejo 1+i
» z=1+i
» z=1+j
Las operaciones con complejos se realizan igual que con números reales:

Ejemplo 5 Calcular los siguientes complejos en forma binómica:

Solución
» (3+5i)*(4-i)
» (3-i)/(4+5i)
Cuando la parte imaginaria del complejo se involucra alguna función u operación, debe
escribirse * entre la parte imaginaria y la unidad imaginaria:
>> (1+sqrt(3)i)^3 %Devuelve un mensaje de error
>> (1+sqrt(3)*i)^3
>> 1+(1-1/3)i %Devuelve un mensaje de error
>> 1+(1-1/3)*i
Otras funciones útiles para operar con complejos son las siguientes:

59
ING. ROLANDO BASURCO CARPIO
MATLAB 2015

Si las funciones anteriores trabajan sobre una matriz, devuelven otra matriz del mismo
tipo que es el resultado de evaluar la función al actuar sobre el elemento.
Todas estas funciones, excepto angle, pueden actuar tanto sobre variables simbólicas
como numéricas.
5. Programando bucles y condicionales
5.1. Operadores relacionales
A menudo, según sean los datos que se utilizan, es necesario tomar una decisión sobre
las órdenes a ejecutar, por lo que resultan de gran utilidad los operadores y bucles que se
mencionan a continuación.
MATLAB utiliza los operadores relacionales que se describen en la tabla adjunta:

El símbolo ∼ se obtiene pulsando Alt Gr y 4 simultáneamente y un espacio en blanco.


Es importante distinguir el símbolo = de asignación de un valor a una variable, del símbolo
== que compara el valor de dos variables.
Los operadores relacionales permiten construir expresiones lógicas cuya estructura es
expresion1 OpR expresion2
donde OpR es un relacional y expresion1 y expresion2 son números, matrices (de igual
dimensión) o cadenas de caracteres. La respuesta de estas expresiones lógicas es 1 si son
verdaderas y 0 cuando son falsas.
Ejemplo 6 Construiremos una variable x que almacene el complejo 1+i, la compararemos
con dicho complejo y con el complejo 1+2i.
» x=1+i
x =
1.0000 + 1.0000i
» x==1+i
ans =
1
» x==1+2i
ans =
0
En la primera línea se asigna a x el valor 1+i, en la siguiente se compara x con 1+i, y nos
devuelve un 1 debido a que la proposición lógica es cierta. En la tercera línea se compara
la variable x con 1+2i y nos devuelve un 0 debido a que la proposición lógica es falsa.

60
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

5.2. Estructuras if-elseif-else-end


En ocasiones se quiere ejecutar un conjunto de órdenes solo en el caso de que se verifique
cierta condición. Esto se consigue con las combinaciones de órdenes siguiente if-end, if-
else-end e if-elseif-else-end.
La estructura if-elseif-else-end se utiliza como sigue:
if expresión lógica 1
conjunto de órdenes 1
elseif expresión lógica 2
conjunto de órdenes 2
elseif expresión lógica 3
conjunto de órdenes 3
.
.
else
conjunto de órdenes
end
El conjunto de órdenes 1 se ejecuta si la expresión lógica 1 es verdadera, el conjunto de
órdenes 2 se ejecuta si la expresión lógica 2 es verdadera, etc. Cuando todas las
expresiones lógicas son falsas, se ejecuta el conjunto de órdenes que sigue a else y la
expresión lógica 1 es falsa.
La orden else puede aparecer o no. También puede aparecer sólo la combinación if-end o
la combinación if-else-end.
Ejemplo 7 Escribir un fichero m llamado ejem1_6.m que calcule la imagen de un complejo
z = x+yi por la función:

z=3-i;
if (imag(z)==0)&(real(z)==0)
imagen=0;
elseif real(z)*imag(z)<0
imagen=imag(z)+real(z)*i;
elseif (real(z)==0)&(imag(z)<0)
imagen=1;
elseif real(z)*imag(z)>0
imagen=imag(z)-real(z)*i;
elseif (real(z)==0)&(imag(z)>0)
imagen=imag(z);
end
imagen
5.3. La estructura for-end
Hasta ahora las órdenes se ejecutaban de forma secuencial, pero pueden existir procesos
en los que un conjunto de órdenes se deba ejecutar varias veces, para ello existen los
bucles for-end. La sintaxis es la siguiente:
for k=x

61
ING. ROLANDO BASURCO CARPIO
MATLAB 2015

conjunto de órdenes
end
donde k es una variable y x es un vector.
Al llegar el programa a la orden for la variable k toma como valor la primera coordenada
del vector x y se ejecuta el conjunto de órdenes. A continuación, k toma como valor la
segunda coordenada de x y se vuelve a ejecutar conjunto de órdenes. El bucle se repite
tantas veces como coordenadas tenga x. Cuando k ha recorrido todas las posiciones de x
el programa seguirá con las órdenes posteriores a end. En el caso de que x sea una matriz,
la variable k tomará como valor las distintas columnas de x.
Por ejemplo, si queremos calcular el valor de k 2, cuando k = 4,5,6, escibiríamos:
>> for k=[4,5,6]
k^2
end
la salida sería
ans =
16
ans =
25
ans =
36
5.4. Bucles while-end
Su sintaxis es la siguiente:
while expresión lógica
conjunto de órdenes
end
Hacen que un conjunto de órdenes se ejecute mientras una expresión lógica sea
verdadera.
Por ejemplo, si escribimos en un fichero:
x=1
while x<=11
x=2*x
end
Al ejecutarlo la salida obtenida es
x =
1
x =
2
x =
4
x =
8
x =
16
Cuando x = 16 ya no se verifica la condición y el bucle termina.
6. Ficheros function
Dentro de la organización de un programa es muy común la realización de tareas que
pueden servir para diferentes programas o simplemente la separación en etapas del

62
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

programa global que se pueden abordar independientemente. Una de las formas de


realizar esta división en MATLAB es a través de las function.
La característica de la function respecto a los ficheros de órdenes es la utilización de
argumentos. Su funcionamiento es análogo a muchas de las órdenes del MATLAB, por
ejemplo, cuando nosotros ejecutamos
>> x = sqrt(16)
x =
4
la orden sqrt funciona como una function con argumento de entrada (16) y obtenemos un
argumento de salida que asociamos a x.
Las function se construyen en ficheros .m . Se distinguen de los guiones en la primera
orden en donde se deben especificar los argumentos
function [Argumento(s) de Salida] = nombrefuncion (Arg. Entrada)
% líneas de comentarios
% que aparecen al ejecutar
% help nombrefuncion
Órdenes que hacen los cálculos
...
Por norma los nombres de la function y del fichero coincidirán. Es decir, el fichero lo
llamamos nombrefuncion.m
Para llamar o ejecutar la function se realiza como las órdenes normales
» [Argumento(s) de Salida] = nombrefuncion (Arg. Entrada)
Los argumentos tanto de entrada como salida pueden ser varios y se separan por comas.
Incluso puede que no los haya. Los nombres de los argumentos en el fichero function son
variables ficticias puesto que esos nombres van a ser sustituidos por los utilizados en la
llamada a la function que son las variables verdaderamente reales.
Ejemplo 8 Construir una function raices.m que calcule las raíces de un polinomio de
segundo grado ax2+bx+c
SOLUCIÓN:
Se escribe en el fichero raices.m
function [x1, x2] = raices(a,b,c)
%
% Función que calcula en x1 y x2 las raíces
% de un polinomio de segundo grado
% a x^2 + b x + c = 0
%
disc=sqrt(b*b-4*a*c)
x1 = (-b + disc)/(2*a)
x2 = (-b - disc)/(2*a)
Una vez guardado el fichero raices.m. Se puede llamar
>> [x,y] = raices(1,-3,2)
x =
2
y =
1
>> help raices
Función que calcula en x1 y x2 las raíces
Función que calcula en x1 y x2 las raíces

63
ING. ROLANDO BASURCO CARPIO
MATLAB 2015

de un polinomio de segundo grado


a x^2 + b x + c = 0
Debe mencionarse que a las variables de salida se les puede asignar un nombre cualquiera.
En este caso, se les han asignado los nombres x e y. Si se escribe x1 o y1, estas variables
no existen y lo mismo sucede con la variable disc.
Estas variables sólo están activas dentro de la función raices.
7. Cálculo simbólico
7.1. Creamos objetos simbólicos y operamos con ellos

Si se utiliza la instrucción syms para declarar variables, estas se introducen con un espacio
en blanco entre ellas.
Por ejemplo, syms s t declara simbólicas las variables s y t . Si al finalizar la lista se escribe
real, MatLab considerará que estas variables no tienen parte imaginaria, en caso contrario
se presuponen complejas.
Pueden crearse objetos simbólicos y aplicar las funciones habituales:
» syms x y real %crea las variables simbólicas reales x e y.
» f=(x+i*y)^3 %crea la variable simbólica f.
» u=imag(f)
» v=real(f)
En la instrucción anterior las variables x e y tienen el sentido de variables independientes
habitual en matemáticas.
La variable f sería la variable dependiente, y, como puede observarse, no es necesario
declararla.
Con el comando sym se pueden obtener constantes simbólicas:
» x=sym(pi)
y también puede aplicarse a matrices, en cuyo caso trabaja elemento a elemento:
» A=sym([1 2/3;pi sqrt(2)])
7.2. Cómo borrar variables simbólicas
La orden clear, utilizada sobre variables simbólicas, presenta algunas limitaciones. Por
ejemplo, si la variable está declarada como simbólica real, al borrarla con clear, queda en
memoria su carácter real. Veamos un ejemplo:
>> syms x real
>> imag(x)%Será 0 por ser real
ans =
0
>> clear x
>> x % Aparentemente borrada
??? Undefined function or variable ’x’
>> syms x
>> imag(x) % vemos que es 0, luego sigue siendo real
ans =
0
Para borrar el carácter real de una lista de variables escribiremos syms lista clear. Por
ejemplo
>> syms x y real

64
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

>> syms x y clear % Son simbólicas, pero ya no son reales.


>> imag(x),imag(y)
ans =
(i*conj(x))/2 - (i*x)/2
ans =
(i*conj(y))/2 - (i*y)/2
>> clear x y % ya quedan perfectamente borradas
Si queremos borrar todas las variables de golpe podemos seguir utilizando clear all, pues
esta orden también borra el carácter real de las variables.
7.3. Sustituciones en una expresión simbólica y conversión a
numérico

Ejemplo 9 Construir f = ax2 +bx+c y sustitúyase x por s2. Haciendo a = 1, b = 2 y c =


√3, obténgase el valor de f para s = 1 y s = 4.
» syms x a b c real
» f=a*x^2+b*x+c
» syms s real
» g=subs(f,x,s^2) %en f sustituye x por s^2
» h=subs(g,{a,b,c},{1,2,sqrt(3)}) %substitución múltiple.
» k=subs(h,s,[1;4]) %sustituye s por una matriz.
» a=1;b=2;c=3;f=subs(f) %Cambia en f a, b, c, por los valores dados.
a,b,c dejan de ser simbólicos.
Ejemplo 10 Obtener el valor de f (x,y) = √3 2x+5y+3 en los puntos (0,0), (0,1), (0,2),
y (0,3).
» syms x y
» f=(2*x+5*y+3)^(1/3)
» v=[0 1 2 3];
» val=subs(f,{x,y},{0*v,v}) %sustituye (x,y) por (0,v(i))
» val=double(val) %pasa val a variable numérica
En la parte básica, MATLAB utiliza la aritmética de punto flotante y trabaja con 16 dígitos.
Por este motivo, si se manejan números de más decimales, lo que sucede siempre con
números irracionales, en cada operación se produce un error llamado de redondeo. En
cálculo simbólico no se produce este tipo de error pues MATLAB no realiza cálculos
numéricos, trabaja simbólicamente. Sí puede producirse un error de redondeo cuando se
usa la instrucción double para convertir un resultado simbólico a numérico.
7.4. Límites, derivadas e integrales simbólicas
MatLab calcula límites, suma de expresiones, derivadas e integrales de variables
simbólicas. Al hacerlo, si no especificamos otra cosa, considera como variable
independiente la variable preferente de la expresión simbólica con la que está trabajando.
La variable preferente en una expresión simbólica es la letra x. Si ésta no interviene en la
expresión, será el carácter más próximo a x en el orden lexicográfico que no sea ni la i ni

65
ING. ROLANDO BASURCO CARPIO
MATLAB 2015

la j. Por esto, no conviene omitir la variable respecto de la cual se va a realizar la


operación.

Conviene señalar que diff puede actuar sobre una matriz. También hay un operador diff
que actúa sobre variables numéricas (obviamente no calcula la derivada).
7.5. Manipulación de expresiones simbólicas
En una expresión simbólica f se pueden realizar, entre otras, las siguientes
transformaciones:

8. Solución de ecuaciones
En esta sección vamos a resolver ecuaciones simbólicas mediante la función solve.
Mediante esta instrucción MATLAB obtiene soluciones de ecuaciones. MATLAB busca
soluciones en el campo de los números complejos y cuando no puede obtener soluciones
simbólicas intenta obtener soluciones numéricas.

Ejemplo 11 Calcúlense todas las raíces del polinomio z3+z2−4z+6

66
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

La instrucción
» syms z
» p=z^3+z^2-4*z+6
» sol=solve(p)
nos da las soluciones de la ecuación. La solución es un vector de tres componentes que
hemos guardado con el nombre sol.
La orden solve no siempre da todas las soluciones como puede comprobarse si se escribe
» sol=solve(’sin(x)’)
Sólo devuelve sol = 0 .
Ejemplo 12 Hallar la solución general de la ecuación az4 +bz2+c = 0.
» sol=solve(’a*z^4+b*z^2+c’,’z’)
En el comando solve podemos especificar cual es la variable que deseamos despejar, en
el caso de que haya varias. Así, en la ecuación del ejemplo anterior podemos despejar la
b escribiendo
» sol=solve(’a*z^4+b*z^2+c’,’b’)
También podemos resolver un sistema de ecuaciones.
Ejemplo 13 Hallar las soluciones del sistema −90z+12w+45z2+6z2w
−12zw+z2w2−2zw2+2w2 = −90, w2−2w= −5.
MATLAB almacena la solución del sistema en una estructura de datos:
» sol=solve(’90-90*z+12*w+45*z^2+6*z^2*w-12*z*w+z^2*w^2
-2*z*w^2+2*w^2’,’w^2-2*w+5’)
Para obtener los valores de la soluclón escribimos:
» sol.w,sol.z
En el caso de que en el sistema aparezcan más variables que ecuaciones también podemos
elegir qué variables deseamos despejar.
Ejemplo 14 En el sistema ax+by= 0, bx−ay+1= 0, despejar las variables a y x en función
de las variables y y b.
>> syms a x b y real
>> ec1=a*x+b*y
ec1 =
a*x+b*y
>> ec2=b*x-a*y+1
ec2 =
b*x-a*y+1
>> S=solve(ec1,ec2,’a’,’x’)
S =
a: [2x1 sym]
x: [2x1 sym]
>> solucion=[S.a S.x]
solucion =
[ (1/2+1/2*(1-4*b^2*y^2)^(1/2))/y, 1/2/b*(-1+(1-4*b^2*y^2)^(1/2))]
[ (1/2-1/2*(1-4*b^2*y^2)^(1/2))/y, -1/2*(1+(1-4*b^2*y^2)^(1/2))/b]
9. Resolución de ecuaciones y sistemas de ecuaciones diferenciales
9.1. Resolución de ecuaciones diferenciales
Una ecuación diferencial la escribiremos siempre entre comillas simples. En MATLAB, y′ se
representa por Dy, y′′ se representa por D2y, y′′′ por D3y, etc.

67
ING. ROLANDO BASURCO CARPIO
MATLAB 2015

Por ejemplo, la ecuación se escribiría en MATLAB como


’D3y+4*Dy=sin(t)^2’.
Las condiciones iniciales también van entre comillas simples. Por ejemplo, las condiciones
y(0) = 1, y′(0) = 2, y′′(0) = 3 se escriben ′y(0) = 1′, ′Dy(0) = 2′ , ′D2y(0) = 3′.

Ejemplo 15 Resolver el problema y′′−4y′+3y = 9x2+4, y(0) = 6, y′(0) = 8


>> y=dsolve(’D2y-4*Dy+3*y=9*x^2+4’,’y(0)=6’,’Dy(0)=8’,’x’)
y=
2*exp(3*x)-6*exp(x)+10+8*x+3*x^2
Si se omite la variable, el programa interpreta que se trabaja con variable independiente
t.
Ejemplo 16 Resolver la ecuación

>> clear, syms t


y=dsolve(’D3y+4*Dy=sin(t)^2’)
y =
-1/2*cos(2*t)*C2+1/2*sin(2*t)*C1-3/64*sin(2*t)+1/16*cos(2*t)*t+1/8*t+C3
9.2. Resolución de sistemas de ecuaciones diferenciales

Ejemplo 17 Hallar la solución del problema de valores iniciales

Utilizando dsolve, haríamos


>> syms x, ed1=’Du=u+2*v’; ed2=’Dv=-2*u+v+2*exp(x)’;
S= dsolve(ed1,ed2,’u(0)=2’,’v(0)=0’,’x’)
S =
v: [1x1 sym]
u: [1x1 sym]
y esto nos indica que MATLAB ha calculado las soluciones y las ha almacenado en la
estructura S. De este modo, para definirlas bastará escribir:
>> u=S.u,v=S.v
u =
exp(x) + cos(2*x)*exp(x)

68
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

v =
-sin(2*x)*exp(x)
También en este caso, si se omite la variable, el programa interpreta que se trabaja con
variable independiente t.
10. Funciones de tipo numérico
10.1. Funciones anónimas
Además de definirlas por medio de un archivo, como ya se ha visto, las funciones de tipo
numérico pueden construirse directamente en la ventana de comandos utilizando las
funciones anónimas.

Ejemplo 18 >> f=@(x)x.^2 %función de la variable x


f =
@(x)x.^2
>> f(3),f([1 2 3])% puedo evaluarla sobre escalares y matrices
ans =
9
ans =
1 4 9
>> syms x y, g=x^2+3*y %es una función simbólica
g =
x^2 + 3*y
>> g_num=matlabFunction(g) %es una función anónima
g_num =
@(x,y)y.*3.0+x.^2
10.2. Polinomios
EnMatlab, un polinomio se define mediante un vector fila cuyas coordenadas son los
coeficientes del polinomio según potencias decrecientes. Por ejemplo, el polinomio p =
x2+2x+5 se escribiría p=[1 2 5] . Para trabajar con fracciones polinómicas, serán útiles
las órdenes siguientes:
Ejemplo 19 Descomponemos en fracciones simples

>> p=[1 7 -12 0 ];q=[1 -2 -1 2];


>> [A r k]=residue(p,q)

r =

69
ING. ROLANDO BASURCO CARPIO
MATLAB 2015

4.0000
3.0000
2.0000
p =
2.0000
-1.0000
1.0000
k =
1
lo que significa que

En A se almacenan los coeficientes de las fracciones, en r las raíces del denominador y en


k el cociente de la división.
11. Gráficos con MatLab
11.1. Gráficos 2D
MatLab genera los gráficos, tanto 2D como 3D, en una ventana distinta del área de trabajo
y del editor de ficheros, es lo que se llama una ventana gráfica o figura, que, por defecto,
tiene este aspecto.

La mayor parte de los comandos que se utilizan para construir gráficos llevan implícita la
orden de abrir una ventana gráfica, no obstante, existen instrucciones que permiten abrir
(o cerrar) las ventanas gráficas antes de construir los gráficos.
Además, se pueden mantener abiertas varias ventanas gráficas a la vez, una de ellas es
la que llamaremos ventana activa, que será la última ventana gráfica abierta, aunque esto
puede modificarse a partir de ciertas órdenes o simplemente, pinchando con el ratón en
la que queremos que sea la activa. Todas las instrucciones gráficas serán enviadas a la
que en ese momento es la ventana activa. Las instrucciones básicas son las siguientes:

70
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

El comando ezplot permite representar curvas utilizando directamente la expresión


simbólica de la curva. La curva puede venir expresada de tres formas:
en forma explícita: y = f (x), con x ∈ [a,b]
en forma paramétrica: (x(t),y(t)), con t ∈ [a,b]
en forma implícita: f (x,y) = 0, con (x,y) ∈ [a,b]×[c,d]
Su sintaxis básica es:

La instrucción plot es la función clave de la mayor parte de los gráficos 2D enMATLAB y


su sintaxis es la siguiente:
plot(x,y,s) (la variable s es opcional). Si queremos dibujar n puntos P1 = (x1,y1), P2 =
(x2,y2), ... ,Pn = (xn,yn), x sería [x1,x2, . . . ,xn] e y sería [y1,y2, . . . ,yn]. Si la variable
s no aparece, dibujaría los puntos unidos por segmentos. La variable s puede contener un
símbolo de cada una de las columnas de la siguiente tabla, encerrados entre apóstrofos:
Ejemplo 20 Dibujar la gráfica de la función f (x) = x2+1, en el intervalo [−3,3]
Primero se construye un vector con las coordenadas x,
» x=linspace(-3,3);
Es recomendable recordar el; al finalizar la instrucción, ya que esto evita que aparezca
información innecesaria por pantalla.
A continuación se construye el vector que
contiene las imágenes de dichos valores
por la función f , es decir, el vector de las
coordenadas y
» y=x.^2+1;
Obsérvese que a la operación elevado a ^
la hemos antecedido de un punto, ya que
lo que queremos no es elevar a 2 la
matriz x (que ni tan siquiera estaría
definido), sino elevar a 2 cada elemento
de la matriz x.
A continuación, utilizamos el plot para
dibujar la gráfica pedida
» plot(x,y)
Como no hemos incluido la variable s, la
gráfica resulta ser en azul (color por

71
ING. ROLANDO BASURCO CARPIO
MATLAB 2015

defecto), con trazo continuo (uniendo los puntos por una poligonal) y sin marcas. La
gráfica obtenida es:
La gráfica aparece en un rectángulo blanco que en el lenguaje de MATLAB se llama ‘eje’.
Una figura puede tener varios ejes, al último eje utilizado es al que llamaremos eje activo.
Se pueden modificar los ejes a partir de las siguientes funciones:

Estas funciones alteran la visualización


de gráfica, pero no lo que se ha dibujado.
Obsérvese lo que ocurre con la gráfica
anterior si en el área de trabajo
tecleamos:
» axis([-1 4 -1 9])
se obtiene:
prueba ahora con las siguientes
instrucciones:
» axis([-3 3 -1 9])
» axis square
» axis equal
La ventana gráfica dispone de un menú
que permite modificar el estilo de las
líneas, añadir textos, borrar partes de la
gráfica...
Veamos algunas instrucciones útiles para dibujar complejos:
Ejemplo 21 Dibújense, en tres ventanas gráficas distintas, los complejos 0, 1+i y −1+3i
unidos por segmentos, marcados con puntos azules y vectorialmente.
» z=[0 1+i -1+3i]
» plot(z)
» figure
» plot(z,’b.’)
» figure
» compass(z)

72
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

Ejemplo 22 Dibujar en la misma ventana gráfica el triángulo T cuyos vértices son los del
ejemplo 21 en azul, en rojo el triángulo girado en torno al 0 un ángulo de /2, en verde el
homotético de T de centro 0 y razón 1.5, y en negro su trasladado por el vector (0,−1).
» z=[z 0];
» plot(z)
» hold on
» plot(i*z,’r’)
» plot(1.5*z,’g’)
» plot(z-i,’k’)
Otras utilidades gráficas pueden ser las que nos permiten dividir la pantalla en varias
subventanas, esto se realiza con la siguiente instrucción:

La forma de activar uno de los ejes generados en la ventana es con la orden subplot. n es
el número de filas en que se divide la pantalla, m es el número de columnas, y k se refiere
al eje sobre el que se va a enviar la gráfica, numera por orden los ejes de izquierda a
derecha y de arriba abajo. Obsérvese la numeración en la gráfica siguiente:
Las gráficas de los distintos ejes pueden
ser de distinto tipo:
Ejemplo 23 Dibujar en dos subventanas
de la misma ventana gráfica el complejo z
= 1+i con la instrucción compass y con la
instrucción quiver.
Creamos un fichero m con las
instrucciones siguientes:
z=1+i
subplot(1,2,1)
compass(z)
subplot(1,2,2)
quiver(0,0,1,1,0)
axis equal

73
ING. ROLANDO BASURCO CARPIO
MATLAB 2015

obteniendo la siguiente gráfica:


Se observa que en la misma ventana gráfica tenemos dos ejes, en cada momento se activa
el que indica el subplot, es decir subplot(1,2,1) activa el primer eje subplot(1,2,2) activa
el segundo eje.
11.2. Gráficos 3D
11.2.1. Dibujo de curvas
La función plot3 es análoga a su
homóloga bidimensional plot. Su forma
de uso más sencilla es
» plot3(x,y,z)
dibuja una línea que une los puntos
(x(1),y(1), z(1)), (x(2),y(2), z(2)),
(x(3),y(3), z(3)), etc. Al igual que en el
caso plano se puede añadir una cadena
con 1, 2 ó 3 caracteres para determinar
el color, los marcadores y el tipo de línea.
Básicamente, el uso de esta instrucción
es como sigue:

Ejemplo 24 Representar la trayectoria s (t) = ((2−2t)cos(4pt), (2−2t) sen(4pt),2t) con


t ∈ [0,2p ].
SOLUCIÓN:
» t=linspace(0,2*pi,500);
» x=(2-2*t).*cos(4*pi*t);
» y=(2-2*t).*sin(4*pi*t);
» z=2*t;
» plot3(x,y,z)
11.2.2. Superficies
Vamos a representar a continuación superficies. En general, se puede determinar una
superficie por una función de la forma:
f (u,v) = (x(u,v),y(u,v), z(u,v)) con (u,v) ∈ I = [a,b]×[c,d]
los puntos imágenes serían los que formarían la superficie.
La representación de una superficie en MATLAB se realiza básicamente generando una
malla de puntos sobre ella y uniéndolos mediante segmentos o planos para obtener el
aspecto de superficie en el sentido habitual. Una malla sobre la superficie se construye a
partir de una partición del intervalo I. Si a = u1 < u2 < ... < un = b y c = v1 < v2 < ... <
vm = d el conjunto de puntos (ui,vj) con i = 1, ...,n y j = 1, ...,m define la malla en I y
los puntos (x(ui,vj),y(ui,vj), z(ui,vj)) la malla sobre la superficie.

74
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

La malla sobre I se genera con el siguiente comando:

Los puntos donde MATLAB dibuja la función de forma exacta son los f (Ui j ,Vi j) para cada
i = 1, . . . ,m y para cada j = 1, . . . ,n, y a dichos puntos les llamaremos nudos de la
malla.
La forma habitual de proceder es la siguiente:
➢ Se definen los vectores u=linspace(a,b,n) y v=linspace(c,d,m).
➢ Se generan las matrices [U,V]=meshgrid(u,v)
➢ Se definen las matrices X=x(U,V), Y=y(U,V), Z=z(U,V), siempre teniendo en cuenta
que las operaciones que se realicen con U y V deben realizarse elemento a elemento.
Una vez generadas las matrices de coordenadas de los puntos de la malla existen distintos
tipos de gráficos que se pueden realizar, con distintos aspectos.
Gráficos de malla La superficie se representa mediante una malla, con un aspecto similar
al de una red de pesca, cuyos nudos están situados sobre la superficie correspondiente.
La orden básica para este tipo de gráficos es mesh y sus distintas opciones:

Para observar la diferencia entre los distintos gráficos, ejecuta en el área de trabajo el
fichero ej_mesh.
Gráficos continuos En este tipo de gráficos, la superficie se representa como una lámina
continua, y se genera con las siguientes órdenes:

Ejemplo 25 Dibujar la gráfica de la función que a cada complejo le asigna su módulo,


para complejos con módulo en el intervalo [0,2p ].
SOLUCIÓN:
» r=linspace(0,4);
» t=linspace(0,2*pi);
» [r,t]=meshgrid(r,t);
» X=r.*cos(t);
» Y=r.*sin(t);
» Z=r;
» surf(X,Y,Z)
12. Creación de interfaces de usuario con MATLAB
12.1. Interfaces gráficas de usuario (GUI)
Una GUI debe ser consistente y fácilmente entendida por el usuario

75
ING. ROLANDO BASURCO CARPIO
MATLAB 2015

• Proporciona al
usuario la habilidad
de usar un
programa sin tener
que preocuparse
sobre los comandos
para ejecutar un
programa.
• Los componentes
habituales de una
GUI son
➢ Pushbuttons
➢ Sliders
➢ List boxes
➢ Menus, ...etc
12.2. Características esenciales de una GUI
➢ Componentes
o Gráficos
▪ pushbuttons, edit boxes, sliders, labels, menus, etc…
o Estáticos
▪ Frames, text strings, …
o Ambos se crean usando la funcion uicontrol
➢ Figuras – los componentes están contenidos en figuras
➢ Callbacks – son funciones que realizan las acciones requeridas cuando un
componente se activa
12.3. Creación de GUIs con GUIDE
MATLAB dispone
de una utilidad
para el desarrollo
interactivo de
interfaces de
usuario (GUI)
llamado GUIDE
Para ello se
escribe el
comando guide o
se pulsa sobre su
icono en el
entorno de
desarrollo Matlab.
12.4. Entorno de desarrollo
GUIDE
Aparece una ventana para seleccionar
plantillas o abrir GUIs existentes
Ventana de desarrollo GUI

76
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

Cambio de preferencias para mostrar


nombres
• El editor permite
construir interfaces
arrastrando y
soltando
componentes en el
área de diseño de la
GUI
• Todas las GUIs
creadas con guide

empiezan con una función inicial (callback) que se invoca cuando


se invoca la interfaz
• La operación automática de guardado (save) genera un fichero .m y un fichero .fig
• El fichero .fig contiene el diseño del GUI en binario y el fichero .m contiene el código que
controla el GUI
Componentes disponibles en la paleta.
12.5. Ejemplo
de GUI con
GUIDE
La interfaz que se
desarrollará
consiste en permitir
al usuario
seleccionar entre
tres conjuntos de
datos y mostrarlos
según tres tipos de
gráficos
Para ello se
insertarán los
componentes
adecuados desde la
paleta de
componentes (Push
Buttons, Panel,
Static Text box, Pop-up Menu, y Axes)

77
ING. ROLANDO BASURCO CARPIO
MATLAB 2015

Se puede redimensionar
el tamaño del canvas de
la interfaz en modo
diseño, aunque después
se puede modificar
haciendo uso de Tools.
Se inserta un Push
Button y por duplicación
dos más, dentro de un
Panel

Añadir Static Text, Pop-


up Menu y Axis

Alineamiento de objetos
y Modificación de
propiedades con Property Inspector
➢ Modificación de propiedades con Property Inspector:
– Figure, Name: GUI Simple
– Panel , Title: Tipos de gráficos
– Push Button, String: Surf, Tag: surf_pb
– Push Button, String: Mesh, Tag: mesh_pb
– Push Button, String: Contour, Tag: contour_pb
– Static Text, String: Seleccionar datos
– Pop-up Menu, String: (editor) peaks, membrane, sinc Tag: plot_popup
➢ Grabar GUI. File - Save As: ejm_gui (sufijo .fig)

• Se puede activar (Run) la GUI y editar el código


• Se puede adaptar el código generado por GUIDE para ejecutarse cuando se seleccionan
los controles
• El código de usuario introducido se llama funciones callback. El editor M facilita la
navegación por estas funciones con el icono Show Functions
Primero se modifica la función OpeningFcn que se ejecuta al inicio de ejecutar el GUI
• En esta función se puede cargar o crear datos a usar en el GUI y realizar algunos gráficos
iniciales
• Para compartir datos dentro del GUI se usa la estructura handles que se pasa entre
funciones.

78
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

function ejm_gui_OpeningFcn(hObject, eventdata, handles, varargin)


% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to ejm_gui (see VARARGIN)
% Create the data to plot
handles.peaks = peaks(35);
handles.membrane = membrane;
[x,y]=meshgrid(-8:0.5:8);
r=sqrt(x.^2 + y.^2) + eps; Código añadido
sinc = sin(r)./r;
handles.sinc = sinc;
handles.current_data = handles.peaks;
surf(handles.current_data);
% Choose default command line output for ejm_gui
handles.output = hObject; Argumento retornado
% Update handles structure cuando se invoca el GUI

79
ING. ROLANDO BASURCO CARPIO
MATLAB 2015

guidata(hObject, handles); Línea que actualiza la GUI


Después de introducir el código se activa la GUI
• Cuando una GUI está completa y en
ejecución, y el usuario pulsa sobre un
control de la intefaz de usuario, como un
botón, Matlab ejecuta la función callback
del control
• Otra forma de acceder a la función
callback de un control es usar el editor de
GUI,
seleccionar el control y hacer click en el
botón derecho
• Se agregan los callbacks de los botones
% --- Executes on button press in
surf_pb.
function surf_pb_Callback(hObject,
eventdata, handles)
% hObject handle to surf_pb (see GCBO)
% eventdata reserved - to be defined in a future
version of MATLAB
% handles structure with handles and user data
(see GUIDATA)
% Display surf plot of the currently selected data
surf(handles.current_data);
% --- Executes on button press in mesh_pb.
function mesh_pb_Callback(hObject, eventdata,
handles)
% hObject handle to mesh_pb (see GCBO)
% eventdata reserved - to be defined in a future
version of MATLAB
% handles structure with handles and user data (see GUIDATA)
mesh(handles.current_data);
% --- Executes on button press in contour_pb.
function contour_pb_Callback(hObject, eventdata, handles)
% hObject handle to contour_pb (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
contour(handles.current_data);
• Se agrega el callback para el popup menu
% --- Executes on selection change in plot_popup.
function plot_popup_Callback(hObject, eventdata, handles)
% hObject handle to plot_popup (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = get(hObject,'String') returns plot_popup contents as
cell array
% contents{get(hObject,'Value')} returns selected item from plot_popup
val = get(hObject,'Value');
str = get(hObject,'String');
switch str{val}

80
ING. ROLANDO BASURCO CARPIO
COMPUTACIÓN APLICADA A LA INGENIERÍA QUÍMICA

case 'peaks' % User selects peaks


handles.current_data = handles.peaks;
case 'membrane'
handles.current_data = handles.membrane;
case 'sinc'
handles.current_data = handles.sinc;
end
guidata(hObject,handles);
• En el entorno GUIDE se puede navegar por los componentes e identificar sus callbacks
usando el Object Browser.

• Se activa la GUI

81
ING. ROLANDO BASURCO CARPIO

También podría gustarte