Você está na página 1de 71

VISUAL BASIC

Visual Basic es un lenguaje desarrollado por Microsoft a principios de la dcada de


los noventa y que se ha seguido usando, en distintas versiones, hasta hoy da.
Tras su lanzamiento adquiri gran popularidad porque Microsoft facilit un entorno
de programacin amigable, que era de fcil uso para los programadores y permita
crear aplicaciones para Windows con aspecto profesional y con rapidez. A lo largo
de la historia ha tenido distintas versiones:

Visual Basic 1.0, 2.0 y 3.0: podemos denominar a estar versiones como
antecedentes del Visual Basic que conocemos hoy en da.

Visual Basic 4.0 y 5.0: fueron versiones que incrementaron la popularidad de


Visual Basic y se integraron en los sistemas operativos de ltima generacin de
Microsoft.

Visual Basic 6.0: fue la consagracin de Visual Basic y supuso su expansin a


gran escala. Visual Basic 6 se us para el desarrollo de numerosas aplicaciones
profesionales y empresariales por todo el mundo y tuvo un gran xito. Tanto, que
aunque ya no cuenta con soporte por parte de Microsoft, es un lenguaje que sigue
siendo usado debido a que numerosos programadores estaban muy
especializados en l y a que muchas empresas tenan programas funcionando con
este lenguaje y no han querido eliminar estos programas.

A partir de 2002 Visual Basic se integr dentro de una plataforma de programacin


ms amplia que admita la programacin en distintos lenguajes denominada Visual
Studio.NET y empez a usarse el trmino Visual Basic.NET para hacer referencia
a estas nuevas versiones. No obstante, Visual Basic ha seguido siendo un
lenguaje propio que ha seguido usndose. Ya dentro de Visual Studio pueden
destacarse estas versiones:

Visual Basic 2005: introdujo cambios importantes en relacin a la filosofa de


programacin en que se basaba Visual Basic (aunque el lenguaje contina siendo
esencialmente el mismo)

Visual Basic 2008, 2010, 2012, 2020 : Visual Basic es un lenguaje vivo que se
mantiene integrado dentro de la plataforma Visual Studio y del que continan
apareciendo versiones que van introduciendo progresivas mejoras.

INTRODUCCIN A VISUAL BASIC


Visual Basic es un lenguaje de programacin creado por Microsoft Corp. que goza
de gran popularidad. Las razones para ello son su potencia o capacidades,
facilidad de uso y el permitir crear programas de aspecto y funcionamiento
relacionados con el tambin muy popular entorno Windows. Aparte de
permitirnos crear programas de aspecto profesional, nos facilitar el trabajo a la
hora de utilizar o vincular aplicaciones casi tan extendidas como Windows como
son Microsoft Word, Excel o Access y PowerPoint.

El trmino Visual hace referencia a que nos movemos en un entorno grfico e


intuitivo. Basic alude al conocido lenguaje BASIC (Beginners All Purpose
Simbolic Instruction Code) del que se conservan diversas palabras claves e
instrucciones. Aparte de esto, poco tiene que ver el Visual Basic con el antiguo
lenguaje de programacin ya que casi todo ha cambiado, y muy especialmente la
forma de estructurar los programas.

Visual Basic es un lenguaje que se apoya en objetos. A nivel terico se podra


distinguir entre programacin orientada a objetos, programacin basada en
objetos o programacin que utiliza objetos. No vamos a entrar en este tipo de
disquisiciones. Iremos viendo cmo programar en Visual Basic poco a poco y con
ejemplos prcticos. A nivel prctico lo que nos interesa es disponer de objetos que
podemos insertar en nuestros programas sin tener que teclear una sola lnea de
cdigo y que esos objetos nos van a hacer fcil y cmoda la programacin.

El usuario de Visual Basic se enfrenta a una larga lista de trminos como pueden
ser: propiedad, formulario, control, evento, mtodo, funcin, argumento, operador,
instruccin, procedimiento, etc. que inicialmente pueden resultar un tanto
abrumadores por su variedad y carcter abstracto. Trataremos de evitar el uso de
terminologa abstracta en la medida de lo posible, pero necesariamente
habremos de enfrentarnos a ella y utilizarla. Una forma sencilla de hacerlo es
aprender jugando. Arrancaremos el ordenador y vamos descubriendo Visual
Basic a travs de pequeos programas de prueba.

FORMULARIOS Y CONTROLES EN VISUAL BASIC

Seguimos explorando Visual Basic. Vete ahora al cuadro de herramientas (si no lo


tienes visible debers hacerlo visible) y busca el icono Label representado por una
A mayscula. Haz doble clic en l y comprobars como aparece un objeto en el
formulario sobre el que est escrito el texto "Label1". Pincha sobre l con el botn
izquierdo y arrstralo para cambiarlo de posicin.

Visual Basic

Para borrar un objeto pinchamos sobre l y pulsamos la tecla Supr(Suprimir).


Borra el label y vuelve a situarte con el ratn sobre el icono de Label. Pulsa con el
botn izquierdo del ratn una sola vez y a continuacin sitate sobre el formulario.
Vers que el puntero del ratn se ha transformado en una cruz. Pulsa con el botn
izquierdo del ratn sobre un punto cualquiera del formulario, y sin soltar el botn,
arrastra hasta generar un rectngulo como este:

label visual basic

Hemos generado un label igual al anterior, aunque por distinta va. Fjate que
estamos trabajando con elementos "prefabricados". No estamos escribiendo
cdigo para generarlos, simplemente el proceso es "Visual". Visual Basic trabaja
con dos tipos de objetos principales: las ventanas, como puede ser un formulario,
y los controles, como puede ser un Label (etiqueta) como el que hemos colocado
en nuestro formulario. Hay distintos tipos de controles, como puedes comprobar
en el cuadro de herramientas.

Un Label puede ser agrandado o empequeecido de la misma manera que lo


hacamos con el formulario. Igualmente, las dimensiones del Label aparecen en la
barra de herramientas y las podemos ver cambiar a medida que las modificamos.
Pero dado que tenemos dos objetos (la ventana y el label) Qu dimensiones nos
aparecen en la barra de herramientas? Pulsa con el botn izquierdo sobre el
formulario y vers que los cuadritos controladores de tamao ya no estn en el
contorno del label, sino en el contorno del formulario, y que las dimensiones que
nos aparecen ahora son las correspondientes al formulario. Es decir, hemos
pasado el enfoque desde el label hasta el formulario. Igualmente podemos pasarlo
del formulario al label.

Cuando modificas el tamao de un objeto sobre el formulario, el tamao de dicho


objeto se adapta a la cuadrcula (en el caso de que tengamos la cuadrcula visible
esto es fcil de ver, si est invisible no). Esto nos permite alinear objetos. Vuelve a
hacer doble click sobre el icono de Label y genera otro control, que ahora te
aparecer con el nombre de Label2. Trata de poner uno debajo de otro: vers que
alinearlos es fcil. Esa es la utilidad de la cuadrcula, y en general te resultar
ventajoso tenerla activada. Puedes manejar la cuadrcula a travs de:

a) En algunas versiones: men Herramientas, Opciones..., Ficha General, donde


dispones de un apartado denominado Opciones de la cuadrcula.

b) En otras versiones el acceso a las opciones de la cuadrcula es por otra va.


Hay que acceder al men Herramientas, Opciones, Diseador de Windows Forms,
General, Gridsize (tamao de la cuadrcula), ShowGrid (cuadrcula visible o no),
SnapToGrid (ajustar a la cuadrcula los controles automticamente s o no).
Adems para que la cuadrcula se haga visible debemos establecer Layout Mode
como Snap to Grid. Una vez hemos puesto todas estas opciones para que se
muestre la cuadrcula es posible que todava no se muestre. En este caso
debemos cerrar la pestaa del formulario (Form1.vb[Diseo]*) pulsando en el aspa
de cierre y abrirla nuevamente haciendo doble click en el archivo Form1.vb del
explorador de soluciones que tendremos en la parte derecha de la pantalla (si no
lo tenemos deberemos hacerlo visible).

Con las opciones de la cuadrcula podemos modificar el tamao de la cuadrcula,


hacerla visible o no visible y activar o desactivar la opcin de que los controles

sean forzados a situarse en posiciones de la cuadrcula. Si te resulta un poco


molesta la presencia del punteado, lo mejor ser que desactives Mostrar
Cuadrcula (ShowGrid), pero que contines con Forzar controles a la cuadrcula
(SnapToGrid) activado. Juega activando y desactivando estas opciones para que
conozcas las posibilidades que te brindan.

Pasemos ahora a la ventana Propiedades que aparece en la parte central derecha


de la pantalla, debajo del Explorador de Proyectos o Explorador de Soluciones (si
no la ves debes activarla). Pincha alternativamente sobre el formulario, el label1 y
el label2 y comprobars que el contenido de la ventana cambia, teniendo en
cabecera el texto "Form1", "Label1" "Label2". Igual que para el caso de las
dimensiones del objeto en la barra de herramientas, el contenido de la ventana
Propiedades depende de qu objeto se encuentra enfocado. El enfoque lo
controlamos pinchando sobre el objeto, pulsando la tecla TAB (tabulador) a
travs del combobox desplegable que nos permite seleccionar el objeto en la
misma ventana de propiedades. Pulsa sobre el formulario y observa el contenido
de la ventana Propiedades. Cada lnea que aparece es una propiedad del objeto.

Pulsa en esta ventana sobre ForeColor. Vers como en la parte inferior de la


ventana te aparece lo siguiente:

ForeColor

Devuelve o establece el color de primer plano usado para mostrar textos y grficos
en un objeto (este texto depende de la versin de Visual Basic que estemos
usando. En otros casos puede ser Color de primer plano de este componente,
utilizado para mostrar texto o algo similar).

El objeto Form1, que es un formulario, tiene una serie de propiedades que te


aparecen en esa lista. Busca la propiedad Width (usa la barra de desplazamiento

vertical para poder acceder a visualizarla; en algunas versiones se halla como


Size - > Width), cuya descripcin ser: "Devuelve o establece el ancho de un
objeto" y establcela en 2000 (pulsa a la derecha de Width, reemplaza el nmero
existente con 2000 y pulsa enter). Comprobars que la ventana ha modificado su
tamao. Vete ahora al formulario y sobre los cuadritos externos, modifica el ancho.
Comprobars ahora que la cifra 2000 que habas establecido en la ventana
Propiedades para Width ha cambiado. Muchas veces vas a disponer de distintas
vas para hacer algo, con lo cual podrs elegir la que te parezca ms adecuada.

Nota: algunos objetos no dejan modificar sus dimensiones si tienen establecida la


propiedad autosize con valor true. Para permitir la modificacin de dimensiones
esta propiedad debe estar establecida como false.

Muchas propiedades permanecen con igual nombre y comportamiento en las


distintas versiones de Visual Basic. Otras cambian de nombre con la versin,
cambian de nombre y comportamiento o simplemente desaparecen de una versin
a otra. Por ejemplo en un formulario la propiedad Caption en algunas versiones es
equivalente a la propiedad Text en otras: sirve para establecer el texto que se
muestra en la barra superior del formulario.

La ventana Propiedades, al igual que hemos visto con otros casos, la puedes
cerrar con el aspa correspondiente y restablecerla con el icono de la barra de
herramientas, la tecla F4 eligiendo la opcin Ventana de Propiedades del men
Ver (en algunas versiones men Ver, Otras ventanas, Ventana propiedades) . La
ventana de propiedades nos muestra una lista de propiedades del objeto que tiene
el enfoque, as como una descripcin de la propiedad y a veces opciones de
valores para dichas propiedades. Juega un poco leyendo propiedades de un form
o de un label, y cambia valores cuando entiendas lo que indica la descripcin.
Modifica por ejemplo el contenido de Caption Text para el Form1 y comprueba lo
que sucede.

Como ltimo elemento por analizar en la pantalla, en algunas versiones en la parte


inferior derecha encontramos una ventana denominada Posicin del formulario
que se puede hacer visible o cerrar segn deseemos. Nos muestra dnde va a
situarse el formulario sobre el que estamos trabajando cuando ejecutemos el
programa. Pincha sobre el pequeo formulario que se ve en la pantalla dibujada y
muvelo. Djalo situado en el centro de la pantalla, para que cuando ejecutemos
el programa nos aparezca ah.

Si la versin que utilizamos no dispone de la opcin de men Ver Ventana


posicin del formulario, esto no es problema porque podremos hacerlo a travs de
ciertas propiedades de la ventana propiedades.

Propiedad StartPosition StartUpPosition: nos permite elegir la posicin inicial de


la pantalla en la que debe aparecer el formulario. Por ejemplo elige Center Screen,
el formulario se posicionar en el centro de la pantalla. Si elegimos la opcin
manual nosotros podremos indicar dnde debe situarse el formulario usando otras
propiedades.

Indicar manualmente la posicin del formulario: se hace a travs de las


propiedades Top y Left en algunas versiones, o mediante las propiedades
Location X y Location Y en otras versiones. A nosotros de momento nos resulta
suficiente con elegir como posicin de inicio Center Screen sin necesidad de
especificar manualmente una posicin de inicio usando coordenadas.

Vamos a ver dnde se escribe el cdigo o instrucciones que queremos


especificarle al ordenador. En el men Ver, pulsa sobre Cdigo. Vers que el
formulario desaparece y que su lugar es ocupado por una ventana vaca o con
algn texto breve (como Option Explicit Public Class Form1 End Class). En
dicha ventana escribiremos el cdigo. De momento, aprendamos cmo alternar
entre ver los objetos que hemos diseado o estamos diseando y ver el cdigo.
En el men Ver, pulsa sobre Diseador (Objeto en algunas versiones), y
comprobars que aparece el formulario y desaparece el cdigo. El mismo efecto
se produce si pulsamos Shift y F7 simultneamente. Y si ahora pulsamos F7 nos
aparecer el cdigo nuevamente.

Ahora sitate en el Explorador de Proyectos o Explorador de Soluciones e


identifica los iconos existentes poniendo el ratn sobre ellos. Comprobars que
uno de ellos corresponde a Ver Cdigo y otro a Ver Diseador u Objeto. Pulsa
alternativamente estos botones, y comprueba que es otra va para pasar del
cdigo al diseo de objetos. Ten en cuenta que segn la versin de Visual Basic
que ests utilizando la apariencia de la ventana de trabajo puede variar.

formulario visual basic

VARIABLES CON VISUAL BASIC - VISUAL STUDIO


Si has estudiado pseudocdigo y tipos de variables con pseudocdigo previamente los conocimientos
adquiridos sern vlidos y tiles con Visual Basic, pero con matices. Vamos a tratar los aspectos ms bsicos
de la declaracin de variables con Visual Basic y a dar algunas orientaciones a travs de las que profundizar en
el manejo de variables.

NOMBRES Y TIPOS DE VARIABLES. DECLARACIN. Option Explicit.


Para establecer nombres de variables puedes ver las indicaciones que se dan en
el curso Bases de la programacin Nivel I de aprenderaprogramarcom, apartado
Nombres de variables. Visual Basic permite no declarar una variable antes de ser
usada. Por tanto, en cualquier punto de un programa podramos escribir algo
similar a Mostrar velocidad01, sin necesidad de haber declarado la variable
velocidad01. Qu nos mostrar si no hemos asignado contenido a la variable
velocidad01? Visual Basic es de los lenguajes que asignan automticamente
contenido cero, vaco o falso a una variable, dependiendo de qu tipo sea. Por
tanto, se nos mostrara cero, , o falso. Conocido que no es estrictamente
obligatorio, nosotros vamos a trabajar con Visual Basic realizando declaracin de
variables siempre. Los motivos para ello ya han sido expuestos, pero podemos
resumirlos en:
Generar buenos programas.
Evitar errores y confusiones.

El propio Visual Basic dispone de una instruccin que obliga a tener que declarar
todas las variables, denominada Option Explicit. La obligacin de declaracin de
variables puede establecerse de dos maneras.
a) En la ventana de cdigo escribir Option Explicit (en las versiones ms
modernas debe escribirse Option Explicit On).
b) En el men Herramientas, selecciona Opciones... y en la pestaa Editor (en
otras versiones Herramientas, Opciones, Proyectos y Soluciones, Valores
predeterminados de VB) establece (o comprueba que est establecida) la
opcin Requerir declaracin de variables como activa Option Explicit On.

Ten en cuenta que la opcin a) es manual, y tendramos que escribir Option


Explicit cada vez que furamos a programar, mientras que la opcin b) es
automtica y va a hacer que cada vez que arranquemos Visual Basic nos obligue
a declarar variables sin tener que estar escribiendo cdigo. Por tanto, activa la
opcin automtica (o comprueba que est activada) y as evitaremos olvidos. No
vamos a volver a incidir en esto, pero siempre vamos a considerar que trabajamos
con Option Explicit activado. Qu ocurrir si utilizamos en el cdigo una variable
que no ha sido declarada? En este caso Visual Basic impedir la ejecucin del
programa mostrando el mensaje de error: Error de compilacin. Variable no
definida / no declarada as como la lnea de programa donde ha aparecido la
variable no declarada. Siempre que exista al menos una variable no declarada
ocurrir esto, lo cual nos obliga a declarar todas y cada una de las variables.
En cuanto a los tipos de variables, Visual Basic las clasifica en funcin del tipo de
dato que contienen. Veamos las ms usuales.

TIPO DE
DATOS

Integer
(Entero)

ABREVIATURA

MEMORIA
REQUERIDA

RANGO DE
VALORES

EQUIVALENCIA
CON USADAS EN
PSEUDOCDIGO

OBSERVACIONES

2 bytes 4
bytes segn
versin

- 32768 a
32767 2.147.483.648
a

Entero

Uso en contadores,
control de bucles etc.

2.147.483.647
segn versin

Long
(Entero
largo)

Single
(Decimal
simple)

&

4 bytes 8
bytes segn
versin

2147483648 a
2147483647 9,2E+18 a
9,2E+18 segn
versin

4 bytes

- 3,41038
a
3,41038

Entero

Igual que integer


pero admite un rango
ms amplio

Real

Hasta 6 decimales o
ms segn versin.
Tambin admite
enteros

Real

Hasta 14 decimales o
ms segn versin.
Tambin admite
enteros

Double
(Decimal
doble)

8 bytes

- 1,7910308
a
1,7910308

Boolean
(Booleano)

No tiene

2 bytes

True
o
False

Booleano

False es el valor
predeterminado y va
asociado a cero

10 bytes + 1
byte por cada
carcter

0
a
2109 caracteres

Alfanumrica

Texto de longitud
variable

Variable

Los del tipo


double
para
nmeros o los
del tipo string
para texto

No tiene

Admite nmeros
enteros, decimales o
texto

String

Variant
(Object en
otras
versiones)

No tiene

Existen otros tipos de variables. Algunos tipos son comunes a todas las versiones de Visual Basic mientras que otros tipos

slo estn disponibles en algunas versiones. Otros tipos que pueden aparecer en Visual Basic son el tipo Byte, Char, Date,
Decimal, Object,Sbyte, Short, UInteger, Ulong, Ushort Currency, String de longitud fija o las variables definidas por el Usuario a
travs de Type User-Defined. Ahora no te preocupes por conocer todos los tipos de Visual Basic, te irs familiarizando con ellos
poco a poco a lo largo del curso. Puedes acceder a informacin sobre los tipos de variables a travs de la ayuda, buscando Tipos de
datos,

Resumen

de

tipos

de

datos

Type

(instruccin)

Tipo

de

datos

definido

por

el

usuario.

Los tipos definidos por el usuario, tambin llamados variables UDT (User Definided Type) o variables Structure (estructuras) son
variables especiales que tienen un nombre general y luego n variables internas o campos. Su inters e importancia son notables.
Por ello te recomendamos que ms adelante profundices en ellas por tu cuenta. Por el momento solo es necesario que atiendas a los
contenidos del curso.

Conociendo ya el significado de Option Explicit, los tipos de variables y cmo


nombrarlas, veamos ahora cmo declararlas. Hay distintas formas y sitios para
declarar variables con Visual Basic. Veremos ahora una forma bsica que nos
permita empezar a trabajar y, de paso, crear nuestro primer programa.
Usaremos para ello la instruccin Dim. Su sintaxis ser:
Dim [Nombre de variable] As [Tipo de
variable]

El lugar donde realizaremos la declaracin de variables ser la cabecera del


cdigo asociado al formulario. As pues, crea un nuevo proyecto (Men archivo -->
Nuevo Proyecto --> Exe estndar Men Archivo --> Nuevo proyecto -->
Aplicacin de Windows Forms). Vete a la ventana de cdigo (Ver ---> Cdigo)
donde quizs te aparezca una lnea que ponga Option Explicit Public Class
Form1 End Class. Escribe una nueva lnea de cdigo (debajo de Option Explicit o
debajo de Public Class Form1) con este contenido:

Dim Numerodeplantas As Integer

Has declarado la variable Numerodeplantas como tipo entero. Tambin puedes


usar la abreviatura correspondiente al tipo Integer de esta forma:
Dim Numerodeplantas%

Usar el smbolo % unido al nombre de la variable declarada equivale a escribir As


Integer, lo cual nos supone ahorrar unas cuantas pulsaciones de teclas.
En algunas versiones se permite declarar una variable para la que no se
especifica tipo de forma extendida o abreviada. Si esto se hiciera y fuera
permitido, la variable es automticamente asignada por Visual Basic al tipo
Variant. As si escribimos:
Dim Numerodeplantas

Hay dos opciones: bien obtenemos un error de compilacin (si la versin de Visual
Basic que estemos usando no admite esta declaracin), bien la variable
Numerodeplantas es considerada por Visual Basic como tipo Variant. Todava no
est definido si es de tipo numrico (nmeros) o alfanumrico (texto). En este caso
la definicin se producir a posteriori cuando asignemos contenido a la variable.
Otra forma de declarar la variable como tipo genrico (Variant u Object, segn la
versin) es usar la expresin:
Dim Numerodeplantas As Variant ( Dim Numerodeplantas

As Object)

Esta expresin no tiene abreviatura. Siempre ser preferible especificar As


Variant o As Object antes que declarar la variable sin especificacin alguna.
Por qu? Simplemente porque al especificar As Variant As Object dejamos
constancia de que nosotros, como programadores, hemos decidido crear esa
variable como tipo Variant u Object. Si no se especifica puede dar la impresin de
que se nos ha olvidado indicar el tipo de variable.
Las variables Variant u Object son un caso especial. Las podramos calificar de
potentes y peligrosas. Potentes porque a diferencia de otro tipo de variables,
pueden contener distinto tipo de informacin como texto, nmeros enteros o
decimales, etc. y con pocas limitaciones. Peligrosas porque es fcil incurrir en un
mal uso de ellas dando lugar a programas difciles de leer o depurar y ms
ineficientes.
Supn que declaras: Dim edad As Variant Dim edad As Object, como variable
destinada a contener la edad de una persona. Sabemos que la edad de una
persona puede oscilar entre cero y 150 aos (siendo groseros), y que sus valores
no son decimales. Por tanto puede declararse como tipo Integer sin ningn
problema. Qu supone el declararla sin especificacin de tipo (tipo Variant)?
a) Vamos a ocupar mayor cantidad de memoria al sistema cuando podramos
haber ocupado una menor cantidad. Es una falta de eficiencia y economa.
b) A la hora de liberar de errores al programa (depurarlo) no sabremos a ciencia
cierta qu tipo de datos contiene la variable edad, ya que puede contener tanto
el valor numrico 56 como el valor alfanumrico cincuenta y seis. Hacemos al
programa ms difcil de entender.

A la hora de declarar variables conviene seguir las pautas indicadas en el curso


"Bases de la programacin nivel I" de aprenderaprogramar.com y, resumidamente:
Elegir siempre el tipo de variable ms sencillo posible. Consideraremos que
el grado de sencillez viene definido por la memoria requerida (a menor memoria
requerida mayor es la sencillez). Esto redunda en un menor consumo de
recursos del sistema y en una mayor rapidez de las operaciones que realiza el
ordenador.
Realizar declaraciones ordenadas y claras.
Evitar el uso del tipo Variant u Object en la medida de lo posible, es decir,
slo usar estos tipos cuando realmente sean necesarios.

Hasta ahora estamos viendo las bases que nos van a permitir construir
programas. A medida que vayamos avanzando, empezaremos a construir
pequeos programas para aprender practicando.

DECLARACIN DE VARIABLES EN VISUAL BASIC


A la hora de declarar variables conviene seguir las pautas indicadas en el curso
Bases de la programacin nivel I de aprenderaprogramar.com y, resumidamente:
Elegir siempre el tipo de variable ms sencillo posible. Consideraremos que el
grado de sencillez viene definido por la memoria requerida (a menor memoria
requerida mayor es la sencillez). Esto redunda en un menor consumo de
recursos del sistema y en una mayor rapidez de las operaciones que realiza el
ordenador.

Realizar declaraciones ordenadas y claras.


Evitar el uso del tipo Variant u Object en la medida de lo posible.
Visual Basic permite declarar variables en mltiples lneas una por lnea pero
tambin varias variables en una lnea. Veamos ejemplos:
Expresin abreviada

Equivalente

a) Dim i%, j%, k%

a) Dim i As Integer, j As Integer, k As Integer

b) Dim i% : Dim j% : Dim k%

b) Dim i As Integer : Dim j As Integer : Dim k As


Integer

c) Dim i%, j%, k As Integer

c) Dim i As Integer, j As Integer, k As Integer

d) Dim i%
Dim j%
Dim k%

d) Dim i As Integer
Dim j As Integer
Dim k As Integer

e) Dim i As Integer
Dim j%, k%

e) Dim i As Integer
Dim j As Integer, k As Integer

Las opciones a), b), c), d), e) dan lugar a un mismo resultado. Se declaran tres
variables tipo Integer denominadas i, j, k. Las opciones a- e), escritas de forma
extendida, tambin son vlidas y con el mismo resultado. Nosotros nos
decantamos por usar opciones como la c), donde en una misma lnea aparezcan
variables de un tipo de forma abreviada, excepto la ltima que se pone extendida

de forma aclaratoria, y en las que las variables de una misma lnea tienen algn
tipo de relacin. Por ejemplo tratarse de contadores para bucles.
Ten en cuenta que la declaracin Dim i, j, k As Integer no declara tres variables de
tipo entero de forma correcta. Esta sintaxis es imprecisa y por tanto no debemos
utilizarla. Segn la versin de Visual Basic que estemos usando esto puede
generar errores o problemas. Conviene tener cuidado a la hora de realizar
declaraciones de variables para evitar prcticas de este tipo.
Una expresin como Dim i!, j%, k& equivale a Dim i As Single, j As Integer, k As
Long. Esta expresin es vlida, aunque como hemos dicho preferimos no declarar
distintos tipos de variables en una misma lnea.

EJERCICIO
Realizar una declaracin de variables para las siguientes propuestas de
programas.
a) Un programa que muestra un mensaje de bienvenida.
b) Un programa que nos pide nuestra edad y nos muestra el ao en que nacimos.
c) Un programa que nos muestra el valor medio de tres magnitudes.
d) Un programa que trabaja con: tres contadores para bucles, tres valores de
tensin en una viga (de magnitud no conocida), valores de longitud de la viga,
canto y ancho y un valor interruptor que permite o impide que se muestren
resultados.

SOLUCIN
a) Dim mensaje As String. Tambin es vlida la expresin abreviada Dim
mensaje$.
b) Dim edad As Integer. Tambin podemos usar la expresin abreviada Dim
edad%.

Se podra definir otra variable llamada aonacimiento segn el programador lo


estime oportuno o no.
c) Dim magnitud1!, magnitud2!, magnitud3 As Single
Dim media As Single

Hemos utilizado el tipo Single para cubrirnos las espaldas. No sabemos con qu
tipo de valores vamos a trabajar y por ello cogemos un tipo de variables bastante
amplio como es el Single. Preferimos no coger Double si no es estrictamente
necesario.
Hemos utilizado dos lneas pero slo un tipo de variable Por qu? El
programador ordena la declaracin de variables como estime ms conveniente. En
este caso ordenamos valores para el clculo en una lnea y resultados en otra.
Resulta ms fcil de leer y analizar que estando todo en una sola lnea.

d) Dim i%, j%, k As Integer


Dim tension1!, tension2!, tension3 As Single
Dim largo!, canto!, ancho As Single
Dim Muestraresultados As Boolean.

Siempre ser preferible usar las expresiones tension1, tension2 y tension3 antes
que t1, t2 y t3 que resultan ms confusas. Sin embargo, este tipo de decisiones
siempre quedan a criterio del programador.

CONTENIDO Y ASIGNACIN DE CONTENIDO A VARIABLES

Las normas para asignar contenido a variables sern las indicadas en el curso
Bases de la programacin nivel I de aprenderaprogramar.com, teniendo en
cuenta que de forma general usaremos estas equivalencias.

Nota: las variables "todo en uno" se denominan Variant en algunas versiones


mientras que en otras el tipo Variant no existe y su equivalente sera el tipo Object.

Ejemplos de asignacin de contenidos son estos:


Declaracin

Ejemplo asignacin
contenidos

Dim A As Integer

A = 123

Dim A As Single

A = - 3323.57

Dim A As String

A = Hay que mejorar

Dim A As String

A = 123 coches

Dim A As String

A = Son 35,37 euros

Dim Salario As Integer

A = 30500

Dim Salario As Single

A = 30500

Dim Salario As String

A = Se asignarn 30500
euros

Dim A%, B%, Suma%

A=5+2
B = 32
Suma = A + B [Suma
valdr 39]

Dim A%, B%, C%, D%, E%

A=5
B = 32
C = A * B [C toma el valor
160]
D = A + C [D toma el valor
165]
E=D
[E toma el valor
165]

Dim Agotamiento As
Boolean

Agotamiento = True

Nota: la separacin decimal normalmente es un punto, pero tendrs que


comprobarlo en tu computador porque puede variar en funcin de las
configuraciones aplicadas. Es decir, normalmente se escribir un decimal como
3.33 en lugar de cmo 3,33.

Un programa que conste de:


Dim A As
Integer
A=7*B
dar lugar a un error debido a que B no est declarada.

En cambio:
Dim A%, B%
A=7*B

Supone que A valga cero, ya que si no se asigna un valor a B sta tiene por
contenido el valor por defecto, es decir, cero. 7 * B equivale en este caso a 7 * 0,
que vale cero.

CREAR UN PROGRAMA BSICO


Vamos a crear un programa que declare una variable tipo String llamada mensaje
y nos muestre un texto en pantalla.Para ello como primer paso abrimos un
proyecto de Visual Basic. Recordar que esto se hace de la siguiente manera. En el
men Archivo seleccionamos la opcin Nuevo proyecto.

A continuacin elegimos:
a) Para las versiones que nos dan la opcin Aplicacin de Windows Forms
elegimos esta opcin.
b) Para las versiones que nos dan la opcin Exe estndar elegimos esta opcin.
Una vez abierto el proyecto debe aparecernos el formulario vaco sobre la
pantalla. Hacemos doble click sobre el formulario y se nos debe abrir la ventana
de cdigo conteniendo algunas lneas. En caso de que no se te abra la ventana de
cdigo, vete al men Ver y elige la opcin Cdigo.
Escribiremos el siguiente cdigo que corresponde al programa que vamos a
ejecutar:

Para versiones de VB menos recientes:


versiones de VB ms recientes:

Para

Rem Curso Visual Basic


aprenderaprogramar.com
Option Explicit
Dim mensaje As String
Private Sub Form_Load()
mensaje = "Bienvenido a este
programa"
MsgBox (mensaje)
End Sub
REM
Curso
Visual
aprenderaprogramar.com

Basic

Option Explicit On
Public Class Form1
Dim mensaje As String
Private Sub Form1_Load(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
mensaje = "Bienvenido a este programa"
MsgBox(mensaje)
End Sub
End Class

Ten en cuenta que segn la versin de Visual Basic que ests utilizando pueden
existir pequeas diferencias en el cdigo que debe usarse. Nosotros pretendemos
centrarnos en la lgica de la programacin ms que en los detalles de la sintaxis
de una versin concreta. Si es necesario, consulta la ayuda para conocer la
sintaxis exacta que debes emplear.
Analicemos las lneas que lo componen.
1. Option Explicit (Option Explicit On). Ya hemos definido su significado.

2. Dim mensaje as String, declara una variable denominada mensaje como


tipo alfanumrico de longitud variable.
3. Private Sub Form Load() Private Sub Form1_Load ().Esta parte de
cdigo corresponde a la apertura de un mdulo de cdigo de Visual Basic, que
en la terminologa del lenguaje se denomina Procedimiento. La cuestin se
puede hacer un poco complicada en lo que se refiere a terminologa, pero no
vamos a preocuparnos por esta cuestin ahora.

En el curso Bases de la programacin I de aprenderaprogramar.com se trabaja


con programas que constan de un algoritmo principal y distintos mdulos o
subprogramas. La estructura y terminologa de un programa en Visual Basic es
algo ms compleja, al trabajarse con distintos elementos dentro de un programa.
Estos elementos varan segn la versin, pero podran ser por ejemplo mdulos
de formulario (.frm), mdulos estndar (.bas), mdulos de clases (.cls), etc..
Nosotros vamos a centrarnos en lo que es un mdulo de formulario: un fichero en
el que almacenamos informacin relacionada con el formulario donde hemos
colocado objetos y para el que hemos escrito un cdigo. As pues, de momento
para nosotros el programa va a constar de:
Un formulario donde hemos colocado objetos (trabajo de diseo de tipo
grfico). Excepcionalmente un formulario puede carecer de objetos y
encontrarse vaco.
Un cdigo que consta normalmente de: Option Explicit (Option Explicit On),
Declaracin de variables y Procedimientos. Un procedimiento es un conjunto de
cdigo que se ejecutar en un momento dado, algo equivalente a lo que
habamos definido con el pseudocdigo como mdulo o subprograma.

Un procedimiento puede ejecutarse por varios motivos como:


a)

Ser llamado desde alguna parte del programa.

b) Se produce un evento que da lugar a que se ejecute el cdigo.

En este ejemplo que estamos viendo, el procedimiento se ejecuta cuando tiene


lugar un evento que es la carga del formulario (form load), que vamos a considerar
la ejecucin del programa. As pues, el cdigo comprendido entre el fragmento de
cdigo de tipo Private Sub Form_Load() y End Sub se va a ejecutar cada vez
que mandemos correr el programa, es decir, cada vez que ordenemos su
ejecucin.
4. mensaje = "Bienvenido a este programa", asigna a la variable mensaje el
contenido de tipo alfanumrico indicado.
5. MsgBox (mensaje), indica al ordenador que proceda a mostrar el contenido
de la variable mensaje dentro de una caja de mensajes.
6.

End Sub, define el final del mdulo de cdigo (procedimiento).

Ejecuta el programa pulsando la tecla F5. Tambin puedes hacerlo a travs del
men <<Ejecutar / Iniciar>> <<Depurar / Iniciar la depuracin>> segn la versin
que ests utilizando. En algunas versiones existe la opcin <<Ejecutar / Iniciar con
compilacin completa>>, que permite que la ejecucin del programa se haga
realizando una revisin de errores ms exhaustiva que si se ejecuta el programa
pulsando simplemente F5.
Tras ejecutar el programa te aparecer en pantalla el mensaje Bienvenido a este
programa. Para cerrar el programa pulsa aceptar y haz click sobre el aspa de
cierre de la ventana. Vamos a hacer una pequea mejora esttica. Vete a VerDiseador (Ver-Objeto) y cambia el valor de la propiedad Caption Text (segn la
versin que ests usando) del form a "Bienvenida" y modifica el cdigo de la
siguiente manera.

Para las versiones menos recientes:


versiones ms recientes:

Para las

Rem Curso Visual Basic


aprenderaprogramar.com
Option Explicit
Dim mensaje As String
Dim espacios As String
Private Sub Form_Load()
espacios = vbTab
mensaje = espacios & "Bienvenido a
este programa" & espacios
MsgBox (mensaje)
End Sub
REM Curso Visual Basic
aprenderaprogramar.com
Option Explicit On
Public Class Form1
Dim mensaje As String
Dim espacios As String
Private Sub Form1_Load(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
espacios = vbTab
mensaje = espacios & "Bienvenido a este
programa" & espacios
MsgBox(mensaje)
End Sub
End Class

Fjate que cuando aparezca la ventana del formulario, debido a que hemos
modificado sus propiedades, ahora nos aparecer el texto Bienvenida en la parte
superior.

Tambin hemos usado otros elementos que iremos explicando poco a poco a lo
largo del curso. El objetivo ahora es simplemente irnos familiarizando con Visual
Basic.
La constante vbTab nos ha servido para introducir un tabulador. Ello da lugar a
que el texto aparezca con un pequeo margen por el lado izquierdo y derecho
sobre la ventanita del mensaje. Prueba a introducir variables de tipo numrico y a
dar lugar a que se muestren sus contenidos sobre la ventana del mensaje. Juega
con los nombres de las variables, sus contenidos y la asignacin de contenidos.
Tambin puede resultar de inters que compruebes qu ocurre si declaras una
variable de un tipo y le asignas contenido de otro tipo.Por ejemplo declara Dim
salario As Integer, asgnale el contenido salario = Son 3000 euros y prueba a
mostrarlo en pantalla.

Qu ocurre cuando incumplimos las previsiones de Visual Basic para


asignar contenidos a variables (por ejemplo, para una variable A tipo Integer definir A
= 53200000000000000000000000000, que est fuera del rango previsto)? No vamos
a analizar los distintos casos que se pueden presentar, sino a tratar de dar una
respuesta genrica. Cuando hacemos algo no esperado, como asignar un valor fuera
de rango, asignar un valor que no concuerda con el tipo de la variable, sumar

variables numricas con alfanumricas, asignar decimales a un nmero entero..., etc.


pueden suceder varias cosas:
a) Salta un error. Un mensaje impide que el programa comience a ejecutarse, o
bien el programa se detiene mientras se est ejecutando.
b) El programa se ejecuta pero los resultados no son los deseados.
c)

El

programa

se

ejecuta

los

resultados

son

los

deseados.

En resumen, es difcil prever lo que va a suceder, aunque se pueden estudiar y


manejar las circunstancias. Por ejemplo una variable que se declare como tipo Long
pero a la que se asigna un contenido numrico real con dos decimales no da lugar a
un error, pero s a una prdida de informacin derivada de que el nmero decimal se
va a redondear a un entero. Las consecuencias de esta circunstancia habra que
valorarlas para cada programa y circunstancias concretas. Como programadores
hemos de buscar programas 100% predecibles, en los que no se pueda producir que
"sea difcil prever lo que va a suceder". Por tanto intentaremos que la declaracin y
asignacin de contenidos a variables se ajuste a las normas de Visual Basic. En
ltima instancia, podremos prever una rutina de gestin de errores para casos
imprevistos.

IF THEN (SI ENTONCES) E IF THEN ELSE (SI ENTONCES


SINO)
La sintaxis a emplear con Visual Basic es muy similar a la que se estudia en los
cursos de algoritmia y pseudocdigo, con la sustitucin del Si por If, del Entonces
por Then, del SiNo por Else y del Finsi por End If. La nica salvedad a tener en
cuenta es que Visual Basic permite adems de la escritura en bloques la escritura
en una sola lnea.

Sintaxis en bloque:
If [condicin]
Then
Instruccin 1
Instruccin 2

Instruccin n
Else
Instruccin A
Instruccin B


Instruccin Z
End If

Sintaxis en una sola lnea:


If [condicin] Then Instruccin 1 Else
Instruccin A

Tambin es posible encadenar varias acciones derivadas de un Then o de un Else


en una sola lnea. Sin embargo, recomendamos usar la opcin de sintaxis en una
sola lnea exclusivamente para desarrollos sencillos como puede ser una
instruccin en caso de que se cumpla la condicin y otra en caso de que no se
cumpla. Si intervienen varias instrucciones, siempre resultar ms legible usar el
formato de bloque.
La instruccin If ... Then es anidable dentro de s misma, siendo siempre preferible
el formato de bloque cuando se vayan a generar anidamientos.

Ejemplo:
If A > 7 And B < 5 Then
MsgBox ("A es mayor que 7 y B menor
que 5")
End If

Tambin vlido es:


If A > 7 And B < 5 Then MsgBox ("A es mayor que 7 y B
menor que 5")

Si introducimos una clusula Else el modelo es:


If A > 7 And B < 5 Then
MsgBox ("A es mayor que 7 y B menor que 5")
Else
MsgBox ("A no es mayor que 7 B no es menor
que 5")
End If

Tambin vlido:
If A > 7 And B < 5 Then MsgBox ("A es mayor que 7 y B
menor que 5") _
Else MsgBox ("A no es mayor que 7 B no es menor que 5")

Una cuestin a tener en cuenta es que cuando la condicin indicada por un If en


bloque no se cumple, se produce el salto a la siguiente instruccin inmediatamente
posterior a la palabra End If. En cambio, cuando la condicin indicada por un If en
una lnea no se cumple, se produce el salto a la siguiente lnea ignorando todas
las instrucciones que pudieran encontrarse en la misma lnea del If. Vemoslo con
un ejemplo. Ejecuta estos dos pequeos programas:

Programa 1 (versionesVB menos recientes)

Rem Curso Visual Basic aprenderaprogramar.com


Option Explicit
Dim a%
Private Sub Form_Load()
a=3
If a = 5 Then
MsgBox("Se cumple que a vale 5")
End If
a = 25
MsgBox("El valor actual de a es " & a)
End Sub

Programa 2 (versionesVB menos recientes)

Rem Curso Visual Basic aprenderaprogramar.com

Programa 1 (versiones
VB ms recientes)
REM Curso Visual Basic
aprenderaprogramar.com
Option Explicit On
Public Class Form1
Dim a%
Private Sub
Form1_Load(ByVal
sender As
System.Object, ByVal e
As System.EventArgs)
Handles MyBase.Load
a=3
If a = 5 Then
MsgBox("Se
cumple que a vale 5")
End If
a = 25
MsgBox("El valor
actual de a es " & a)
End Sub
End Class

Programa 2 (versiones VB ms
recientes)
REM Curso Visual Basic
aprenderaprogramar.com

Option Explicit
Dim a%

Option Explicit On
Public Class Form1
Dim a%

Private Sub Form_Load()


a=3
If a = 5 Then MsgBox ("Se cumple que a vale 5"): a
= 25
MsgBox ("El valor actual de a es " & a)
End Sub

Private Sub Form1_Load(ByVal


sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
a=3
If a = 5 Then MsgBox("Se cumple que
a vale 5") : a = 25
MsgBox("El valor actual de a es " & a)
End Sub
End Class

En el programa 1 el resultado es que se muestra en pantalla "El valor actual de a


es 25", mientras que en el programa 2 se muestra "El valor actual de a es 3". La
razn para que en la versin 2 no se ejecute la orden a = 25 es que al no
cumplirse la condicin del If se produce un salto a la siguiente lnea, ignorndose
todas las instrucciones que se encuentren en la misma lnea del If. En general
consideramos recomendable habituarse a usar la sintaxis de bloque siempre pues
resulta ms fcil de interpretar y evita posibles confusiones como sta, donde
muchas personas podran pensar que si no se cumple el if se ejecutar la
instruccin que aparece en la misma lnea a continuacin.

EJERCICIO EJEMPLO CON IF THEN ELSE EN VISUAL BASIC


Crear un programa que pida un nmero entero distinto de cero y nos muestre en
pantalla un mensaje indicndonos si el nmero es par o impar.
Nota: El procedimiento a emplear ser basado en el uso del operador Mod.

SOLUCIN
Crearemos un Label de solicitud del nmero, un Textbox de entrada, un Button
(Command Button en las versiones menos recientes de Visual Basic) y un Label
para el clculo y el resultado. Le ponemos los nombres y organizamos los
controles en pantalla como nos parezca correcto (no tiene por qu coincidir con lo
que ponemos aqu). Los nombres que hemos empleado nosotros son:
LabelPideNum, TextNentero, ButtonHallar yLabelResultado.

Cdigo (versionesVB menos recientes)

Rem Curso Visual Basic


aprenderaprogramar.com
Option Explicit
Dim Num As Integer
Dim Res As Integer

Cdigo (versiones VB ms recientes)


REM Curso Visual Basic
aprenderaprogramar.com
Option Explicit On
Public Class Form1
Dim Num As Integer
Dim Res As Integer

Private Sub Form_Load()


Form1.Caption = "Determina naturaleza par o
impar"
ButtonHallar.Caption = "Determinar"
LabelPideNum = "Introduzca un n entero"
End Sub
Private Sub ButtonHallar_Click()
Num = Val(TextNentero)
Res = Num Mod 2
LabelResultado.FontSize = 10
LabelResultado.FontBold = True
If Res = 0 Then
LabelResultado = "El nmero es par"
Else
LabelResultado = "El nmero es impar"
End If
End Sub

Grficamente:

Private Sub Form1_Load(ByVal sender As


System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Me.Text = "Determina naturaleza par o impar"
ButtonHallar.Text = "Determinar"
LabelPideNum.Text = "Introduzca un n
entero"
End Sub
Private Sub ButtonHallar_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonHallar.Click
Num = Val(TextNentero.Text)
Res = Num Mod 2
LabelResultado.Font = New Font("Arial",
10, FontStyle.Bold)
If Res = 0 Then
LabelResultado.Text = "El nmero es par"
Else
LabelResultado.Text = "El nmero es
impar"
End If
End Sub
End Class

Hemos escrito el If ... Then Else como un bloque en vez de como una nica
lnea. El motivo para ello es que aporta mayor claridad y facilidad de
interpretacin.

EJERCICIO ECUACIN DE SEGUNDO GRADO (ECUACIN CUADRTICA)


Crear un programa que resuelva la ecuacin cuadrtica tipo ax2 + bx + c. El
planteamiento del problema y su solucin en forma de pseudocdigo se pueden
encontrar en el curso Bases de la programacin nivel I de
aprenderaprogramar.com, dentro de los ejercicios relacionados con condicionales.
Una vez creado el programa, hay que contrastar su correcto funcionamiento.

SOLUCIN
Usaremos tres Labels para pedir los parmetros a, b y c denominados Labela,
Labelb y Labelc, y tres TextBox para que el usuario introduzca datos (Texta, Textb
y Textc) adems de un botn (ButtonCalcular). Nosotros hemos aadido adems
un mensaje de cabecera con un label (LabelTitulo). Mostraremos primero el cdigo
para versiones de Visual Basic ms recientes y luego para versiones menos
recientes. Ten en cuenta que la lgica de los programas es en ambos casos igual,
lo nico que vara son los detalles de la sintaxis.

CDIGO (PARA VERSIONES DE VISUAL BASIC MS RECIENTES)

REM Curso Visual Basic aprenderaprogramar.com


Option Explicit On
Public Class Form1
REM Declaracin de variables
Dim aNumber, bNumber, cNumber, dNumber, eNumber As Single
REM Contenido del formulario
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Me.Text = "Ecuacin cuadrtica"
ButtonCalcular.Text = "Calcular x"
LabelTtulo.Text = "Parmetros a, b y c para ecuacin tipo a*x^2 + b*x + c = 0"
End Sub
REM Clculo y muestra de resultados
Private Sub ButtonHallar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonCalcular.Click
LabelResultado.Font = New Font("Arial", 10, FontStyle.Bold)
aNumber = Val(Texta.Text)
bNumber = Val(Textb.Text)
cNumber = Val(Textc.Text)
dNumber = bNumber ^ 2 - 4 * aNumber * cNumber
eNumber = 2 * aNumber
If dNumber = 0 Then
LabelResultado.Text = "x1 = x2 = " & -bNumber / eNumber
Else
If dNumber > 0 Then
LabelResultado.Text = "x1 = " & (-bNumber + Math.Sqrt(dNumber)) / eNumber
LabelResultado.Text = LabelResultado.Text & vbCrLf & "x2 = " & (-bNumber Math.Sqrt(dNumber)) / eNumber
Else
LabelResultado.Text = "x1 = " & -bNumber / eNumber & " + " & Math.Sqrt(-dNumber) /
eNumber & " * " & Math.Sqrt(-dNumber) / eNumber & " * i"
End If
End If
End Sub
End Class

Nota: en versiones recientes de Visual Basic algunas letras estn reservadas y no


pueden ser usadas como nombres de variables. Por ejemplo la letra e. De ah que
en vez de nombrar a las variables como a, b, c, d, e las hayamos nombrado
aNumber, bNumber, cNumber, dNumber y eNumber.

CDIGO (PARA VERSIONES DE VISUAL BASIC MENOS RECIENTES)


Rem Curso Visual Basic aprenderaprogramar.com
Option Explicit
Rem Declaracin de variables
Dim a!, b!, c!, d!, e As Single
Rem Contenido del formulario
Private Sub Form_Load()
Form1.Caption = "Ecuacin cuadrtica"
CommandCalcular.Caption = "Calcular x"
LabelTtulo = "Parmetros a, b y c para ecuacin tipo a*x^2 + b*x + c = 0"
Labela.Caption = "Valor parmetro a"
Labelb.Caption = "Valor parmetro b"
Labelc.Caption = "Valor parmetro c"
End Sub
Rem Clculo y muestra de resultados
Private Sub CommandCalcular_Click()
LabelResultado.FontSize = 10
LabelResultado.FontBold = True
a = Val(Texta)
b = Val(Textb)
c = Val(Textc)
d=b^2-4*a*c
e=2*a
If d = 0 Then
LabelResultado = "x1 = x2 = " & - b / e
Else
If d > 0 Then
LabelResultado = "x1 = " & (-b + Sqr(d)) / e
LabelResultado = LabelResultado & vbCrLf & "x2 = " & (-b - Sqr(d)) / e
Else

LabelResultado = "x1 = " & -b / e & " + " & Sqr(-d) / e & " * i"
LabelResultado = LabelResultado & vbCrLf & "x2 = " & -b / e & " - " & Sqr(-d) / e & " * i"
End If
End If
End Sub

COMENTARIOS
El programa (ambas versiones de cdigo) "funciona", si bien tiene sus
limitaciones. Prueba a introducir los siguientes datos: a = 0, b = 3 y c = 1 . Te
aparecern resultados extraos (o un error como "Error 6 en tiempo de ejecucin.
Desbordamiento"). El motivo para esos resultados extraos o errores es que si a =
0 implica que e = 0 y al encontrarnos con una operacin del tipo (-b + Sqr(d)) /
edonde el denominador vale cero... operacin matemtica no permitida! Esto
ocurrir mientras no preparemos el programa para detectar este tipo de
situaciones y darles un tratamiento adecuado, cosa que veremos ms adelante.
Estamos construyendo programas sencillos que en lneas generales responden
bien cuando se dan las circunstancias previstas pero que fallan ante situaciones
extraas. Esto no debe preocuparnos por el momento, ya que a medida que
progresemos como programadores iremos construyendo programas cada vez ms
slidos.
Aspecto grfico:

EJEMPLOS CON IF THEN ELSE EN VISUAL BASIC: PARADOJA DEL SI


BURLADO POR UN INTERVALO
Reflexiona sobre el significado y prueba los siguientes cdigos en tu ordenador:

Cdigo 1 (versionesVB menos recientes)

Cdigo 1 (versiones VB ms recientes)

Rem Curso Visual Basic


aprenderaprogramar.com
Option Explicit
Dim A%

REM Curso Visual Basic


aprenderaprogramar.com
Option Explicit On
Public Class Form1
Dim A As Integer

Private Sub Form_Load()


A = 160
If 50 < A < 75 Then
MsgBox ("Arabia")
Else

Private Sub Form1_Load(ByVal sender


As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
A = 160
If 50 < A < 75 Then

MsgBox ("Eusebio")
End If
End Sub

Cdigo 2 (versionesVB menos recientes)

Rem Curso Visual Basic


aprenderaprogramar.com
Option Explicit
Dim A%
Private Sub Form_Load()
A = 160
If A > 50 And A < 75 Then
MsgBox ("Arabia")
Else
MsgBox ("Eusebio")
End If
End Sub

MsgBox("Arabia")
Else
MsgBox("Eusebio")
End If
End Sub
End Class

Cdigo 2 (versiones VB ms recientes)


REM Curso Visual Basic
aprenderaprogramar.com
Option Explicit On
Public Class Form1
Dim A As Integer
Private Sub Form1_Load(ByVal sender
As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
A = 160
If A > 50 And A < 75 Then
MsgBox("Arabia")
Else
MsgBox("Eusebio")
End If
End Sub
End Class

Si bien podra esperarse obtener el mismo resultado con ambos cdigos, al


ejecutar el cdigo 1 obtenemos como resultado que se muestre en pantalla
"Arabia", mientras que al ejecutar el cdigo 2 se muestra "Eusebio". La razn:
Visual Basic no admite comparaciones dobles del tipo x < y < z. Ante este tipo de
escritura, slo es evaluada la primera condicin de las dos pretendidas.
Solucin? No usar comparaciones dobles.

Este resultado inesperado puede ocasionar un buen quebradero de cabeza, ya


que en un programa extenso no ser nada fcil detectar este error. Como remedio,
usaremos siempre la escritura de condiciones una detrs de otra y no de forma
mltiple.
INSTRUCCIN SEGN (CASO) HACER (SELECT CASE)
La sintaxis a emplear con Visual Basic es la que indicamos a continuacin. Como
se podr comprobar, mediante esta instruccin establecemos una serie de casos
que se podran cumplir para el valor de una expresin o variable, y en funcin del
valor de la variable se ejecutarn una serie de instrucciones asociadas u otra.

Select Case [expresin]


Case [valor expresin
1]
Instruccin 1
Instruccin 2
Case [valor expresin
2]
Instruccin 3
Instruccin 4
.
.
.
Case [valor expresin
n]
Instruccin k

Case Else
Instruccin m
End Select

Select Case en Visual Basic equivale a la instruccin switch de otros lenguajes.


La expresin a evaluar puede ser un valor numrico o una cadena de texto. Slo
se puede evaluar una expresin y no mltiples expresiones. La evaluacin de
expresiones puede ser:
a) De coincidencia: por ejemplo, Case 12 indicara que si la expresin
evaluada vale 12 se ejecutarn las instrucciones anexas.
b) De intervalo: usando la palabra clave To. Por ejemplo, Case 12 To 14
indicara que si la expresin evaluada tiene un valor comprendido entre 12 y 14
(incluidos los extremos de los intervalos), se ejecutarn las instrucciones
anexas.
c) De comparacin: usando la palabra clave Is. Por ejemplo, Case Is <= 14
indicara que si la expresin evaluada tiene un valor menor o igual a 14 se
ejecutarn las instrucciones anexas.

Cuando varios casos son vlidos, slo se ejecutan las instrucciones asociadas al
primer caso verificado, siguiendo el flujo del programa por la siguiente instruccin
despus de End Select. Esto debemos tenerlo muy en cuenta, ya que si
pretendemos que cuando se cumplan dos condiciones se ejecuten sendos
bloques de instrucciones, convendr hacerlo a travs de la instruccin If en vez de
a travs de Select Case.
Las instrucciones Select Case se pueden anidar. Cada instruccin Select Case
debe tener su correspondiente terminacin End Select.

La instruccin Select Case presenta similitudes marcadas con la instruccin If Then. Por ello, en general podremos conseguir resultados similares con ambas
instrucciones y elegir usar una u otra depender de nuestro gusto y de cul se
adapte mejor a nuestros intereses, que en general sern ahorrar cdigo y
conseguir claridad para cumplir el objetivo. Otras veces ser interesante anidar
ambas instrucciones.
Prueba el siguiente cdigo:

Cdigo (versionesVB menos


recientes)

Rem Curso Visual Basic


aprenderaprogramar.com
Option Explicit
Dim A As Integer
Private Sub Form_Load()
A = 12
Select Case A
Case 12
MsgBox ("A vale 12")
Case Is < 14
MsgBox ("A es menor que 14")
Case 160 To 200
MsgBox ("A est comprendida entre
160 y 200")
Case Else
MsgBox ("No se ha verificado
ninguna de las condiciones previstas")
End Select
End Sub

Cdigo (versiones VB ms recientes)


REM Curso Visual Basic aprenderaprogramar.com
Option Explicit On
Public Class Form1
Dim A As Integer
Private Sub Form1_Load(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
A = 12
Select Case A
Case 12
MsgBox("A vale 12")
Case Is < 14
MsgBox("A es menor que 14")
Case 160 To 200
MsgBox("A est comprendida entre 160 y 200")
Case Else
MsgBox("No se ha verificado ninguna de las
condiciones previstas")
End Select
End Sub
End Class

El resultado es que se muestra en pantalla "A vale 12". Sin embargo, a pesar de
que la hiptesis A < 14 se cumple, no llega a evaluarse y por tanto las
instrucciones asociadas a este caso no se ejecutan.

EJERCICIO
Transformar en cdigo de Visual Basic el siguiente enunciado: crear un programa
que pida al usuario un nmero de da y un nmero de mes, evale si la entrada es
correcta y en caso de que as sea calcule el da del ao que es, considerando un
ao no bisiesto.

SOLUCIN
Crearemos tres labels a los que denominaremos Label1, Label2 y LabelResultado.
Label1 servir para mostrar un mensaje solicitando que se introduzca el nmero
de da, Label2 servir para mostrar un mensaje solicitando que se introduzca el
nmero de mes y LabelResultado servir para mostrar el resultado.
Crearemos dos TextBoxes denominados Text1 y Text2. El primero de ellos servir
para que el usuario introduzca el dato de nmero de da y el segundo el dato de
nmero de mes.
Finalmente tendremos un botn denominado ButtonCalcular que servir para
mostrar los resultados una vez el usuario haya introducido el dato de nmero de
da y nmero de mes.

Cdigo (versionesVB menos


recientes)

Cdigo (versiones VB ms recientes)

Rem Curso Visual Basic


aprenderaprogramar.com
Rem [Clculo del da del ao]
Option Explicit
Dim Nda%, Nmes%, DDA As Integer
Private Sub Form_Load()
Form1.Caption = "Clculo da del ao"
Label1.Caption = "Introduzca aqu el
nmero del da"
Label2.Caption = "Introduzca aqu el
nmero del mes"
ButtonCalcular.Caption = "Determinar
da del ao"
End Sub
Private Sub ButtonCalcular_Click()
Nda = Val(Text1)
Nmes = Val(Text2)
LabelResultado.FontSize = 10
LabelResultado.FontBold = True
If Nda >= 1 And Nda <= 31 And Nmes
>= 1 And Nmes <= 12 Then
Select Case Nmes
Case 1
DDA = Nda '[DDA es da del
ao]
Case 2
DDA = Nda + 31
Case 3
DDA = Nda + 59
Case 4
DDA = Nda + 90
Case 5
DDA = Nda + 120
Case 6
DDA = Nda + 151
Case 7
DDA = Nda + 181
Case 8
DDA = Nda + 212
Case 9
DDA = Nda + 243
Case 10
DDA = Nda + 273

REM Curso Visual Basic aprenderaprogramar.com


Option Explicit On
Public Class Form1
Dim Nda, Nmes, DDA As Integer
Private Sub Form1_Load(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Me.Text = "Clculo da del ao"
Label1.Text = "Introduzca aqu el nmero del da"
Label2.Text = "Introduzca aqu el nmero del
mes"
ButtonCalcular.Text = "Determinar da del ao"
End Sub
Private Sub ButtonCalcular_Click(ByVal sender
As System.Object, ByVal e As System.EventArgs)
Handles ButtonCalcular.Click
Nda = Val(Text1.Text)
Nmes = Val(Text2.Text)
LabelResultado.Font = New Font("Arial", 10,
FontStyle.Bold)
If Nda >= 1 And Nda <= 31 And Nmes >= 1 And
Nmes <= 12 Then
Select Case Nmes
Case 1
DDA = Nda '[DDA es da del ao]
Case 2
DDA = Nda + 31
Case 3
DDA = Nda + 59
Case 4
DDA = Nda + 90
Case 5
DDA = Nda + 120
Case 6
DDA = Nda + 151
Case 7
DDA = Nda + 181
Case 8
DDA = Nda + 212
Case 9
DDA = Nda + 243
Case 10
DDA = Nda + 273

Case 11
DDA = Nda + 304
Case 12
DDA = Nda + 334
End Select
LabelResultado = "El " & Nda & " del
" & Nmes & " es el da " & DDA & " del
ao"
Else
LabelResultado = "Datos
proporcionados no vlidos"
End If
End Sub

Aspecto grfico:

Case 11
DDA = Nda + 304
Case 12
DDA = Nda + 334
End Select
LabelResultado.Text = "El " & Nda & " del " &
Nmes & " es el da " & DDA & " del ao"
Else
LabelResultado.Text = "Datos proporcionados
no vlidos"
End If
End Sub
End Class

ESTRUCTURAS DE REPETICIN (BUCLES) CON VISUAL BASIC


Vamos a ver cmo materializar con Visual Basic estructuras de repeticin que
permitirn que en nuestros programas se realice un proceso n veces. En concreto
veremos las instrucciones Desde Siguiente (For Next) con su clusula Paso
(Step), la instruccin Mientras Hacer (Do While Loop) y la instruccin Hacer
Repetir Mientras (Do Loop While).

Muchas veces podremos optar indistintamente por usar una instruccin u otra. En
otros casos, es recomendable decantarse por una de ellas por hacer el programa
ms legible o sencillo que usando otras opciones.

INSTRUCCIN DESDE ... SIGUIENTE (FOR ... NEXT) Y CLUSULA PASO


(STEP)
La sintaxis a emplear con Visual Basic es la siguiente:
For VAR = Vi To Vf
Instruccin 1
Instruccin 2

Instruccin n

Next VAR

El incremento que sufre el contador es, por defecto, unitario. Es decir, el primer
valor que toma VAR en el bucle ser Vi, el segundo Vi + 1, el tercero (Vi + 1) + 1,
etc. La modificacin de dicho valor de incremento la realizaremos a travs de la
clusula Step despus del valor Vf. Step 2 implicar que en cada repeticin del
bucle el contador se incremente en dos unidades, Step 5 implicar que en cada
repeticin del bucle el contador se incremente en cinco unidades. Un paso
negativo del tipo Step -1 supone que el contador decrece en vez de
incrementarse. Si el paso es negativo, Vi necesariamente habr de ser mayor que
Vf, ya que en caso contrario no se producir la entrada en el bucle.
Con este cdigo se nos muestra en pantalla 3 veces hola (se ha invertido el
sentido del bucle):

Cdigo (versionesVB menos


recientes)

Rem Curso Visual Basic


aprenderaprogramar.com
Option Explicit
Dim VAR As Integer
Dim Vi As Integer
Dim Vf As Integer
Private Sub Form_Load()
Vi = 1
Vf = 3
For VAR = Vf To Vi Step 1
'[Tambin supondra tres repeticiones
For VAR = Vi to Vf]
MsgBox ("hola")
Next VAR

Cdigo (versiones VB ms recientes)


REM Curso Visual Basic aprenderaprogramar.com
Option Explicit On
Public Class Form1
Private Sub Form1_Load(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Dim VAR As Integer
Dim Vi As Integer
Dim Vf As Integer
Vi = 1
Vf = 3
For VAR = Vf To Vi Step -1
'[Tambin supondra tres repeticiones For
VAR = Vi to Vf]
MsgBox("hola")
Next VAR

End Sub

End Sub
End Class

Con Visual Basic resulta admisible usar Next sin indicar la variable que est
sirviendo de gua del bucle, pues todo bucle ha de tener un cierre. Sin embargo,
no lo creemos recomendable pues puede dificultar la lectura y depuracin de los
programas.
La instruccin For ... Next es anidable dentro de s misma o dentro de otros tipos
de bucles o estructuras, debiendo seguir las pautas que ya hemos comentado.

EJERCICIO
Transformar en cdigo el siguiente planteamiento: queremos generar un programa
que pida un nmero del 1 al 10 y nos muestre la tabla de multiplicar
correspondiente.

SOLUCIN
Hemos realizado la pregunta relativa al nmero cuya tabla se desea conocer
utilizando un InputBox. Igualmente vlido hubiera sido hacerlo con un Label
contenedor de la pregunta y un TextBox donde el usuario introduce la informacin.
La tabla la mostramos sobre un Label denominado LabelTabla.

Cdigo (versionesVB menos


recientes)

Cdigo (versiones VB ms recientes)


REM Curso Visual Basic aprenderaprogramar.com
Option Explicit On

Rem Curso Visual Basic


aprenderaprogramar.com
Option Explicit
Dim T As Integer
Dim i As Integer
Private Sub Form_Load()
Form1.Caption = "Tabla"
T = Val(InputBox("Qu tabla quiere
conocer?" & vbCrLf & _
"(Introduzca un nmero de 1 a 10)",
"Nmero?"))
LabelTabla.FontBold = True
LabelTabla.Alignment = 2
LabelTabla = "TABLA DEL " & T &
vbCrLf & vbCrLf
For i = 1 To 10
LabelTabla = LabelTabla & T & " * "
& i & " = " & T * i & vbCrLf
Next i
End Sub

Aspecto grfico:

Public Class Form1


Dim T As Integer
Dim i As Integer
Private Sub Form1_Load(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Me.Text = "Tabla"
T = Val(InputBox("Qu tabla quiere conocer?" &
vbCrLf & _
"(Introduzca un nmero de 1 a 10)", "Nmero?"))
LabelTabla.Font = New Font("Arial", 10,
FontStyle.Bold)
LabelTabla.TextAlign =
ContentAlignment.MiddleCenter
LabelTabla.Text = "TABLA DEL " & T & vbCrLf &
vbCrLf
For i = 1 To 10
LabelTabla.Text = LabelTabla.Text & T & " * " & i
& " = " & T * i & vbCrLf
Next i
End Sub
End Class

EJERCICIO
Transformar en cdigo el siguiente planteamiento: queremos generar un programa
que muestre todos los enteros comprendidos entre un nmero definido por el
usuario y 100.

SOLUCIN

Cdigo (versionesVB menos


recientes)

Rem Curso Visual Basic


aprenderaprogramar.com
Option Explicit
Dim Num As Integer
Dim i As Integer

Cdigo (versiones VB ms recientes)


REM Curso Visual Basic aprenderaprogramar.com
Option Explicit On
Public Class Form1
Private Sub Form1_Load(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Dim Num As Integer

Private Sub Form_Load()


Form1.Caption = "Enteros"
Num = Val(InputBox("Introduzca un
nmero entero comprendido entre 1 y
99", "Nmero?"))
LabelTabla.Alignment = 2
LabelTabla.FontBold = True
LabelTabla = "ENTEROS ENTRE " &
Num & " y 100" & vbCrLf & vbCrLf
For i = Num To 100
LabelTabla = LabelTabla & i & " "
Next i
End Sub

Aspecto grfico:

Dim i As Integer
Me.Text = "Enteros"
Num = Val(InputBox("Introduzca un nmero
entero comprendido entre 1 y 99", "Nmero?"))
LabelTabla.TextAlign =
ContentAlignment.MiddleCenter
LabelTabla.Font = New Font("Arial", 10,
FontStyle.Bold)
LabelTabla.Text = "ENTEROS ENTRE " &
Num & " y 100" & vbCrLf & vbCrLf
For i = Num To 100
LabelTabla.Text = LabelTabla.Text & i & " "
Next i
End Sub
End Class

INSTRUCCIN MIENTRAS ... HACER (DO WHILE ... LOOP)


La sintaxis que hemos de seguir es la siguiente:
Do
[condicin]

While

Instruccin 1
Instruccin 2
.
.
.
Instruccin n
Loop

Las instrucciones tipo Do While son anidables dentro de s mismas o dentro de


otras estructuras. Es importante verificar que los bucles diseados con esta
instruccin dispongan de una condicin de salida vlida.
Ejemplo: k = 0: Do while k < 5. Dentro del bucle tendremos que incrementar el
valor de k, k = k +1.

INSTRUCCIN HACER ... REPETIR MIENTRAS (DO ... LOOP WHILE)

La sintaxis a utilizar es:


Do
Instruccin 1
Instruccin 2
.
.
.
Instruccin n
Loop
[condicin]

While

Un Do ... Loop While es anidable dentro de s mismo o dentro de otras estructuras.


Es importante verificar que los bucles diseados con esta instruccin dispongan
de una condicin de salida vlida.
Ejemplo:
Do
LabelTabla.Text = LabelTabla.Text & "Iteracin " & k & vbCrLf
k=k+1
Loop While k <= 5

Visual Basic admite adems de la clusula While, usar el trmino Until,


como equivalente a "hasta que se cumpla que". As Loop Until i >= 3

significara "Repetir hasta que i sea mayor o igual que 3". En un bucle en el que i
parte de un valor cero y se incrementa unitariamente Do While i < 3 sera
equivalente a Do Until i >= 3, y Loop Until i >= 3 sera equivalente a Loop While i
< 3. Dado que podemos valernos de equivalencias, puede evitar confundirnos el
usar preferentemente un mismo tipo de expresin, sabiendo que disponemos de
otra equivalente.

Ejercicios

EJERCICIO RESUELTO N 2 EJEMPLO DE USO DE FOR NEXT, CONSTANTES vbYes Y vbNo,


MSGBOX, Y DO WHILE LOOP
Generar un programa que resuelva el siguiente problema: calcular el sumatorio de los 10 primeros nmeros
enteros positivos y segn decida el usuario calcular o no la suma de los 20, 30, 40..., n 10, n enteros
positivos.

SOLUCIN

Cdigo (versionesVB menos recientes)


Curso Visual Basic aprenderaprogramar.com
Option Explicit
Dim i%, j As Integer
Dim Respuesta As Integer
Dim Suma As Integer
Private Sub Form_Load()
Show
j=1
Respuesta = vbYes
Do While Respuesta = vbYes
For i = j To j + 9
Suma = Suma + i
Next i
j = j + 10
Respuesta = MsgBox("La suma de los " & j - 1
& " primeros nmeros da " & Suma & vbCrLf &
_
"Quiere continuar?", vbYesNo,
"Continuar?")
Loop
End Sub

Cdigo (versiones VB ms recientes)


REM Curso Visual Basic aprenderaprogramar.com
Option Explicit On
Public Class Form1
Private Sub Form1_Load(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Dim i, j As Integer
Dim Respuesta As Integer
Dim Suma As Integer
j=1
Respuesta = vbYes
Do While Respuesta = vbYes
For i = j To j + 9
Suma = Suma + i
Next i
j = j + 10
Respuesta = MsgBox("La suma de los " & j - 1 & "
primeros nmeros da " & Suma & vbCrLf & _
"Quiere continuar?", vbYesNo, "Continuar?")
Loop
End Sub
End Class

En vez de usar una variable string para almacenar la respuesta, usamos los botones predeterminados de
Visual Basic y las constantes vbYes (s) y vbNo (no).
Debemos conocer la ruta en que se ubica el archivo de datos y escribirla correctamente.
Grficamente el resultado ser similar a este:

EJERCICIO RESUELTO EJEMPLO DE USO DE ARRAYS ESTTICOS, DO WHILE LOOP, IF THEN,


USO DE FICHEROS...
Desarrollar un programa que permita resolver el siguiente problema. Una librera dispone de un archivo donde
se guarda informacin relativa a un lote de libros estructurada de la siguiente manera:

Dato(1) = [Nmero de ISBN, 10 dgitos]


Dato(2) = [Precio de venta al pblico, en euros]
Dato(3) = [Sealero, -33 Libro de menos de un ao de antigedad
-66 Libro de uno a tres aos de antigedad
-99 Libro de ms de tres aos de antigedad]
Dato(4) = [Nmero de ISBN]
.
.
.
Dato(n 1) = [Sealero -33, -66, -99]
Dato(n) = [Sealero -500, Fin del lote]

Se desea desarrollar un programa que permita:


a) Consultar el precio de un libro dado su ISBN.
b) Conocer el precio del lote de libros en conjunto.

Teniendo en cuenta lo siguiente: si el libro tiene menos de un ao de antigedad su precio coincide con el
registrado. Si tiene entre uno y tres aos deber aplicarse un descuento del 15%. Si tiene ms de tres aos
deber aplicarse una rebaja del 25%.

Nota: considerar que el nmero total de datos es igual o inferior a 50, y que se encuentran en el fichero
libros.dat. Crear un botn para poder introducir el isbn de un libro y otro botn para poder calcular el precio
del lote. En un archivo al que llamaremos libros.dat pondremos una simulacin de datos como la siguiente:

SOLUCIN
El cdigo sera:

Cdigo (versionesVB menos

Cdigo (versiones VB ms recientes)

recientes)
REM Curso Visual Basic aprenderaprogramar.com
Rem Curso VB
aprenderaprogramar.com
Option Explicit
Dim i%, Canal As Integer
Dim Dato(50) As Single
Dim ISBN!, Precio!, Valorlote
As Single
Dim Encontrado As Boolean
Private Sub Form_Load()
Show
Form1.Caption = "Libros"
CommandLibro.Caption =
"Precio de un libro"
CommandLote.Caption =
"Precio del lote"
LabelResultado.Alignment = 2
LabelResultado.FontBold =
True
End Sub
Private Sub
CommandLibro_Click()
Encontrado = False
ISBN = InputBox("Cul es el
ISBN del libro?", "ISBN")
Canal = FreeFile
i=1
Open "C:\libros.dat" For Input
As Canal
Input #Canal, Dato(i)
Do While Dato(i) <> -500

Option Explicit On
Public Class Form1
Dim Dato(50) As Single
Dim ISBN, Precio, Valorlote As Single
Dim Encontrado As Boolean
Private Sub Form1_Load(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles MyBase.Load
Me.Text = "Libros"
CommandLibro.Text = "Precio de un libro"
CommandLote.Text = "Precio del lote"
LabelResultado.TextAlign = ContentAlignment.MiddleCenter
LabelResultado.Font = New Font("Arial", 10, FontStyle.Bold)
LabelResultado.Text = ""
End Sub
Private Sub CommandLibro_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
CommandLibro.Click
Dim i As Integer
Encontrado = False
ISBN = InputBox("Cul es el ISBN del libro?", "ISBN")
Dim myFileToRead As New
System.IO.StreamReader("C:\Users\Toshiba\Desktop\libros.dat", False)
i=1
Dato(i) = myFileToRead.ReadLine()
Do While Dato(i) <> -500
If Dato(i) = ISBN Then
Dato(i + 1) = myFileToRead.ReadLine()
Dato(i + 2) = myFileToRead.ReadLine()
Precio = Dato(i + 1)
If Dato(i + 2) = -66 Then

If Dato(i) = ISBN Then


Input #Canal, Dato(i + 1)
Input #Canal, Dato(i + 2)
Precio = Dato(i + 1)
If Dato(i + 2) = -66 Then
Precio = 0.85 * Precio
End If
If Dato(i + 2) = -99 Then
Precio = 0.75 * Precio
End If
LabelResultado = "El
precio del libro con ISBN " &
ISBN & " es de " & Precio
Encontrado = True
End If
i=i+3
Input #Canal, Dato(i)
Loop
Close
If Encontrado = False Then
LabelResultado = "No se ha
encontrado el ISBN deseado"
End If
End Sub
Private Sub
CommandLote_Click()
Valorlote = 0
Canal = FreeFile

Precio = 0.85 * Precio


End If
If Dato(i + 2) = -99 Then
Precio = 0.75 * Precio
End If
LabelResultado.Text = "El precio del libro con ISBN " & ISBN & " es
de " & Precio
Encontrado = True
End If
i=i+3
Dato(i) = myFileToRead.ReadLine()
Loop
myFileToRead.Close()
If Encontrado = False Then
LabelResultado.Text = "No se ha encontrado el ISBN deseado"
End If
End Sub
Private Sub CommandLote_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles CommandLote.Click
Dim i As Integer
Valorlote = 0
Dim myFileToRead As New
System.IO.StreamReader("C:\Users\Toshiba\Desktop\libros.dat", False)
i=1
Dato(i) = myFileToRead.ReadLine()
Do While Dato(i) <> -500
Dato(i + 1) = myFileToRead.ReadLine()
Dato(i + 2) = myFileToRead.ReadLine()

i=1
Open "C:\libros.dat" For Input
As Canal
Input #Canal, Dato(i)

Precio = Dato(i + 1)
If Dato(i + 2) = -66 Then
Precio = 0.85 * Precio
End If

Do While Dato(i) <> -500


Input #Canal, Dato(i + 1)
Input #Canal, Dato(i + 2)

If Dato(i + 2) = -99 Then


Precio = 0.75 * Precio
End If

Precio = Dato(i + 1)
If Dato(i + 2) = -66 Then
Precio = 0.85 * Precio
End If
If Dato(i + 2) = -99 Then
Precio = 0.75 * Precio
End If
Valorlote = Valorlote +
Precio
i=i+3
Input #Canal, Dato(i)
Loop
Close
LabelResultado = "El precio del
lote es " & Valorlote
End Sub

Grficamente:

Valorlote = Valorlote + Precio


i=i+3
Dato(i) = myFileToRead.ReadLine()
Loop
myFileToRead.Close()
LabelResultado.Text = "El precio del lote es " & Valorlote
End Sub
End Class

En una gasolinera, los surtidores registran la cantidad de gasolina que les


suministran a los clientes en gaones, pero el precio de la gasolina est fijado en
litros. Si se sabe que el precio de litro de litro es de 180 Bs. Y que el galn tiene
3.785 litros, calcule lo que hay que cobrarle al cliente.

En una gasolinera, los surtidores registran la cantidad de gasolina que les


suministran a los clientes en gaones, pero el precio de la gasolina est fijado en
litros. Si se sabe que el precio de litro de litro es de 180 Bs. Y que el galn tiene

3.785 litros, calcule lo que hay que cobrarle al cliente.

Descripcin del Proyecto


Nombre del
proyecto

ANALISIS Y DESARROLLO DE SISTEMAS DE


INFORMACION(658373)RUTA(648802)

Cualquier empresa de produccin que transforme materias


primas requiere la gestin y operacin de las plantas de
procesos frecuentemente y en tiempo real, situacin que se
Planteamiento del
dificulta cuando no se tiene acceso a una terminal o
Problema o
directamente a los equipos. La falta de oportunidad en la toma
Necesidad que se
de decisiones o en la operacin de los equipos por no poder
pretende
administrar la planta podra generar disminuciones o
Solucionar
detenciones en la produccin que ocasionara prdidas de
contratos, atraso en las entregas a los clientes, stock de
materia prima inadecuado y otros.

Justificacin

Cualquier situacin que afecte la eficacia de los procesos en


una empresa de produccin requiera una revisin de las
actividades que generan la anormalidad y una definicin de
las estrategias a seguir para corregirla. Los problemas
planteados evidencian que uno de los factores que afecta la
problemtica es la imposibilidad de gestionar y operar la
planta cuando los tcnicos no se encuentran fsicamente en el
sitio. Este proyecto ofrece una solucin mediante una
aplicacin que permita a los operarios gestionar y operar las
plantas desde cualquier sitio y a travs de un dispositivo mvil.

Ojetivo General

Desarrollar una solucin mvil que permita operar y gestionar


las plantas de una empresa de produccin.

Identificar las necesidades para la gestin y el control de las


plantas de procesos de una planta de produccin Disear un
sistema de informacin para dar solucin a las necesidades
de una empresa de produccin Desarrollar el sistema de
informacin diseado en un lenguaje de programacin de alto
nivel. Documentar el sistema de informacin para soportar al
Ojetivo Especifico
uso del aplicativo a los usuarios y a futuras actualizaciones al
sistema de informacin Elaborar planes de capacitacin para
los usuarios del sistema de informacin que garantice su
correcta aplicacin a los procesos del rea Elaborar y ejecutar
planes de implantacin para entrega del sistema de
informacin a los usuarios finales
Alcance
Beneficiarios

rea de automatizacin industrial del CEAI, organizaciones


que usen equipos industriales

Impacto Social

Aumento en la satisfaccin del cliente de las empresas de

produccin. Mejora en el trabajo de operarios, administradores


y funcionarios en general relacionados con la gestin de las
plantas de procesos de las empresas de produccin
Impacto
Econmico

Incremento en las utilidades al optimizar los procesos de las


plantas de produccin

Impacto Ambiental

mejoramiento en el desempeo de las plantas, optimizando


recursos que puedan impactar el medio ambiente.

Impacto
Tecnolgico

Aprovechamiento de las tecnologas e innovacin en la


gestin de las plantas de procesos de las empresas de
produccin

Falta de materiales de formacin (Dispositivos mviles,


Restricciones o
medios para copias de respaldo) Acceso restringido a la
Riesgos Asociados
planta

Producto del
Proyecto

Documento de Anlisis del SI Documento Diseo del SI


SIMPLAP 1.0 Documentos de Pruebas y Planes de
Capacitacin del SI Planes de implantacin del SI Manuales
administrativos, tcnicos y de usuario del SI Documento de
calidad del desarrollo del proyecto Planes de comercializacin
del SI

Você também pode gostar