módulo_4_el lenguaje vb

209
EL LENGUAJE VISUAL BASIC .NET © élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

Upload: pablo-alvarez

Post on 24-Jul-2015

232 views

Category:

Documents


4 download

DESCRIPTION

Características sintácticas básicas, Primer programa en VB.NET, VAriables, constantes y tipos de datos, Operadores, Intrucciones de control, Utilización de las funciones incorporadas, Arrays, Clases y objetos, Clases y objetos; como crear una clase referente a un nombre, Lista de NameSpace o Espacios de Nombres, Tipos especiales de Visual Basic, Control de excepciones, Fases del desarrollo de aplicaciones en Visual Basic, Programando en Visual Basic, Prácticas.

TRANSCRIPT

Page 1: Módulo_4_El lenguaje VB

EL LENGUAJE VISUAL

BASIC .NET

© élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

Page 2: Módulo_4_El lenguaje VB

ÍNDICE

CARACTERÍSTICAS SINTÁCTICAS BÁSICAS

1. Estructura básica de un programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

2. Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13

3. Módulos y Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16

4. Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .18

Page 3: Módulo_4_El lenguaje VB

1. Estructura básica de un programa

A lo largo de éste conocerás las principales características de Visual Basic .Net y su estructura básica

Introducción

Visual Basic .NET es la evolución natural del conocido lenguaje de programación, ampliamente difundidopor su facilidad de uso, al entorno de la programación orientada a objetos y componentes del entorno deMicrosoft .NET Framework.

Como todos los lenguajes soportados por el entorno y diseñados para aprovechar al máximo sus posibilidades,dispone de todas las funcionalidades de interrelación con el resto de lenguajes y del acceso a todas lasherramientas que permiten el actual modelo de desarrollo orientado a componentes y focalizado haciacualquier tipo de interfaz o plataforma, y la facilidad de instalación de las aplicaciones generadas.

3

CARACTERÍSTICAS SINTÁCTICAS BÁSICAS

i

Page 4: Módulo_4_El lenguaje VB

Características

APORTES AL ENTORNOVisual Basic .NET también ha aportado cosas al entorno, entre otras, la facilidad de desarrollo en el IDEVisual Studio, con el famoso IntelliSense, la evolución de la ayuda automática a la sintaxis, métodos ypropiedades de las funciones y objetos del lenguaje y los del desarrollador disponible en el IDE de Visual Basicdesde hace tiempo. Aunque, inicialmente, el aspecto de este entorno de desarrollo pueda parecer extraño,por las modificaciones aportadas para el soporte a todas las nuevas funcionalidades, el desarrollador seacostumbrará rápidamente y notará la mejor organización de algunas funciones que anteriormente estabanun poco perdidas, debido a las herencias y rémoras que incorporaban tanto el lenguaje como el interfazdebido a la compatibilidad hacia atrás.

4

CARACTERÍSTICAS SINTÁCTICAS BÁSICAS

i

Page 5: Módulo_4_El lenguaje VB

RAPIDO DESARROLLOLa filosofía tradicional de Visual Basic del desarrollo rápido ha sido incorporada a todos los lenguajessoportados por el entorno, facilitando en gran medida el trabajo de los programadores de otros lenguajes,que han descubierto herramientas visuales muy útiles, de las que carecían totalmente con anterioridad. Elmétodo tradicional de creación de formularios y adición de controles a los mismos ha sido incorporado al IDEy generalizado a todo tipo de aplicaciones, no sólo las de escritorio, incrementando la productividad a todoslos niveles y para todos los lenguajes.

LAS MEJORASPara los programadores con experiencia en Visual Basic 6.0 o anteriores las mejoras aportadas son ingentes,llegando a parecer un lenguaje totalmente distinto. Es cierto que con la orientación a objetos y componentesla apariencia inicial del código escrito con las últimas versiones de este lenguaje difiere enormemente de lohabitual, pero, si se mira un poco más a fondo, se verá que las diferencias no son tantas y que la legibilidadse ha mantenido en la nueva versión. Uno de los grandes cambios, que sorprenderá a los usuariosexperimentados es la funcionalidad My, para referirse al propio módulo, sus objetos y características y,parcialmente, al propio sistema.

NOVEDADESEvidentemente, la adopción de la especificación común de lenguajes del entorno (CLS) ha obligado aincorporar muchas novedades como puedan ser, la herencia, el polimorfismo, interfaces, sobrecarga demétodos, soporte multi-threading (multi hilo) y el control ampliado de excepciones, así como el pase de lasmismas desde/hacia módulos externos desarrollados en el mismo u otro de los lenguajes del entorno. Unade las grandes novedades que los desarrolladores agradecemos es todo el interfaz gráfico para laconfiguración del acceso a datos, el cuál simplifica de forma notable la incorporación de orígenes de datosy controles de enlace a datos en nuestros programas, sea cual sea el origen de los mismos, incorporando elsoporte a fuentes de datos XML y todo tipo de sistemas de bases de datos.

5

CARACTERÍSTICAS SINTÁCTICAS BÁSICAS

i

Page 6: Módulo_4_El lenguaje VB

ACTUALIZACIONESPensando en los sufridos desarrolladores y de cara a facilitar la migración de las aplicaciones existentes, elentorno facilita unas herramientas de actualización de los proyectos .vbp, de Visual Basic 6.0 y anteriores,al nuevo formato y entorno de forma automática, lo cual se agradece sobremanera, sobre todo cuando yase han sufrido migraciones anteriores careciendo de este tipo de utilidades.

Este nuevo entorno de desarrollo hace muchas cosas por nosotros pero lo que no podrá hacer es sustituir alprogramador, el cuál será siempre el encargado de redactar el código necesario para aportar la lógica denegocio en los programas, dándoles la funcionalidad requerida.

Convenciones

La estructura básica de un programa, sea éste en el lenguaje que sea, no es una serie estricta de normas acumplir para poder desarrollarlo, es más bien una serie de convenciones establecidas por el uso y laexperiencia de muchísimos programadores alrededor del mundo.

El seguir estas convenciones hace más fácil que cualquier otro desarrollador pueda leer, comprender ymodificar nuestro código, al ser su estructura similar a la del resto de profesionales.

Versiones

Hay una versión del Framework para cada tipo de procesador, ya que los desarrollos efectuados con estametodología, han de ejecutarse mediante el Common Lenguage Runtime o CLR, el cuál es el encargado detraducir el lenguaje intermedio (MSIL) generado por los diferentes lenguajes, al código binario específico decada procesador para su ejecución. Está basado en un catálogo de clases (BCL), estructuradas en árbol, parafacilitar su utilización, disponibles para todos los lenguajes soportados en el entorno.

6

CARACTERÍSTICAS SINTÁCTICAS BÁSICAS

i

Page 7: Módulo_4_El lenguaje VB

Lenguajes

Todos los lenguajes soportados por el Framework, disponen de las mismas funcionalidades y herramientas,siendo igualmente orientados a objetos y componentes, con lo que la elección de uno u otro es totalmentelibre del desarrollador, basada en sus propias preferencias de sintaxis, ya que esta es casi ya la únicadiferencia entre ellos.

Al margen de las funcionalidades ofrecidas al desarrollo, hay una nueva serie de ventajas enfocadas alentorno de desarrollo.

Ventajas

Para un mejor control de seguridad y aislamiento de los procesos en ejecución, dentro de la máquina, elFramework dispone de los Application Domain o dominios de aplicación. Estos permiten, al margen de losbeneficios ya comentados de seguridad y aislamiento, la ejecución concurrente de varias aplicaciones en unmismo proceso.

Hasta ahora, para gestionar el aislamiento, se ejecutaba una única aplicación en cada proceso, lo cualreportaba evidentes beneficios a la hora de separar los recursos utilizados por cada una de ellas y evitabalas colisiones, pero tenía unos graves problemas de rendimiento cuando una de las aplicaciones en ejecucióntenía que hacer referencias o llamadas a recursos o módulos de otra de las aplicaciones en ejecución.

.Net Hoy

Hoy en día, con las técnicas utilizadas por el .NET Framework, es muy fácil incluir varias aplicaciones deforma que se ejecuten conjuntamente en un mismo proceso, con lo cual el consumo de recursos en lasllamadas entre ellas se ven enormemente reducidos, facilitando la programación orientada a componentes.

7

CARACTERÍSTICAS SINTÁCTICAS BÁSICAS

i

Page 8: Módulo_4_El lenguaje VB

De todas formas, antes de lanzar una ejecución en un dominio de aplicación, el Framework efectúa variasvalidaciones del código en cuanto a temas de seguridad, acceso a áreas de memoria, ejecución deoperaciones del sistema que puedan provocar fallos, etc... Cuando estás validaciones han pasado, el códigoes marcado como Type-Safe, es decir seguro a nivel de tipos.

Convenciones más habituales

Algunas de las convenciones más habituales, dejando aparte las especificaciones de cada departamento dedesarrollo, son las siguientes:

REGLAS ESTÁNDAR

Las variables, los objetos y los procedimientos se denominan siguiendo unas reglas estándar. Los comentariosy las etiquetas del código también están estandarizados.

UNIFORMIDAD

Los espacios, sangrías y formatos del texto han sido uniformados

Evidentemente, esta lista no es exhaustiva, aunque dependerá de la instalación en la que nos encontremos,ya que el nivel de personalización de estas normas dependerá, muchas veces, de los gustos del responsabledel departamento o, incluso, de algún antiguo miembro del mismo, que las estableció en su día y que, paramantener la “compatibilidad” se siguen implementando en todo nuevo desarrollo.

Librería de clases básica

Ya hemos comentado que toda la funcionalidad ofrecida por el .NET Framework a los lenguajes, al tiempoque utilizado por él mismo para su funcionamiento, está ubicada en la librería de clases básicas (Base ClassLibrary o BCL).

8

CARACTERÍSTICAS SINTÁCTICAS BÁSICAS

i

Page 9: Módulo_4_El lenguaje VB

Como hay varios miles de clases en esta librería, el tenerlas todas en línea sería totalmente inabordable, ycompletamente perdidos en una interminable lista de nombres de clases.

Archivo fuente

- Uno o varios de estos archivos fuente son los que se compilan para formar un ensamblado, tal y comoya se ha comentado.

- Uno o varios ensamblados son los que componen un proyecto, y una solución contendrá uno o variosproyectos.

Un archivo fuente se debe estructurar de la siguiente manera:

- Instrucciones Option- Instrucciones Imports- Instrucciones Namespace y elementos del nivel de espacio de nombres- El resto del código.

Si colocamos estas instrucciones en otro orden se producirán errores de compilación.

9

CARACTERÍSTICAS SINTÁCTICAS BÁSICAS

i

Page 10: Módulo_4_El lenguaje VB

Términos

Instrucciones Option Establecen las reglas que determinan cómo ha de redactarse el código contenido en el archivo, en cuanto aobligatoriedad o no de declarar las variables antes de su uso (Instrucción Option Explicit), la forma deconversión de tipos de datos entre variables (Instrucción Option Strict), o el método de comparación decadenas (Instrucción Option Compare).

Instrucciones Imports Como ya se explicó en un módulo anterior, este tipo de instrucciones son las que se utilizan para asociar losespacios de nombre (Namespace) del sistema o propios al código para evitar tener que calificar los nombresde cada clase que se utilicen y para que poder disponer de toda la potencia que el IntelliSense ofrece.

Instrucciones NamespaceSon las que se utilizan para generar los propios espacios de nombre o para asociar el módulo actual a unespacio de nombres propio ya existente.

Instrucciones de compilación condicional Aunque pueden aparecer prácticamente en cualquier parte del código fuente, sobre todo las específicaspara tramos de código, si son del tipo genérico para todo el fuente, es mejor colocarlas al inicio, de estaforma será mucho más fácil de leer y se tendrá en cuenta lo que condicionen desde el primer momento.

Elementos de programación

A continuación se deberán incluir los elementos de programación denominados de nivel de espacio denombres o nivel de módulo, es decir las clases, los módulos, las variables, las constantes, las estructuras,las enumeraciones, los delegados y las interfaces que definen las declaraciones de los elementos que seutilizarán en el resto del código.

10

CARACTERÍSTICAS SINTÁCTICAS BÁSICAS

i

Page 11: Módulo_4_El lenguaje VB

Es como la regla clásica de declarar todas las variables al inicio del programa, para que estén agrupadas yno haya que ir revisando todo el fuente, para saber si una variable está declarada y dónde lo ha sido.

Después ya se podrá redactar el cuerpo ejecutable del fuente en la parte denominada, lógicamente, nivelde procedimiento, en el cuál se colocaran los procedimientos, propiedades, operadores y eventos. Estos sonlos únicos elementos que pueden contener instrucciones ejecutables, es decir que realicen alguna acción entiempo de ejecución.

Procedimiento Main ()

Habitualmente, se suele escribir en primer lugar el procedimiento Main(), debido a que es el primero que seejecuta al cargar la aplicación, en cualquiera de sus versiones, siendo la primera de ellas la más habitual.

Para poder utilizar las clases incluidas en un Namespace de forma sencilla, es necesario declarar su utilizaciónal principio del módulo de código en el que se vaya a hacer uso de alguna de sus clases. En Visual Basic estaoperación se realiza con la palabra clave Imports, aunque cada lenguaje utiliza una sintaxis específica paraesta tarea.

11

CARACTERÍSTICAS SINTÁCTICAS BÁSICAS

i

Page 12: Módulo_4_El lenguaje VB

Caracteres especiales

Dentro de las especificaciones de sintaxis, vamos a ver los caracteres especiales que se pueden y debenutilizar a la hora de escribir un código, sin ser un código propiamente dicho, ya que no realizan operacionesconcretas, aunque ayudan mucho a la hora de clarificar el código.

Estos caracteres especiales son:

Paréntesis () Permiten agrupar las listas de parámetros de los procedimientos y funciones. También sirven para agruparlas operaciones a la hora de alterar el orden de precedencia de las mismas.

Dos puntos (:)Se utilizan como separador cuando se desee codificar varias operaciones en la misma línea.

Punto (.) Se utiliza para marcar la separación entre clases, estructuras, interfaces y enumeraciones y sus miembros.Es el encargado de disparar las ayudas del IntelliSense para que se muestre precisamente la lista de miembrosdisponibles para el objeto que estemos tecleando.

Ampersand (&) Es el carácter de concatenación, que permite unir dos cadenas de caracteres.

Signo de exclamación (!) Sirve de la misma forma que el punto, en las clases e interfaces para acceder al diccionario.

12

CARACTERÍSTICAS SINTÁCTICAS BÁSICAS

i

Page 13: Módulo_4_El lenguaje VB

2. Comentarios

Definición

Los comentarios, como su propio nombre indica, están compuestos por el texto explicativo que se añade,entremezclado con el código, para explicar características especiales, detalles funcionales o el propósitogeneral de un módulo de código.

Dentro de las convenciones de sintaxis de todos los lenguajes se incluye la de añadir unas líneas decomentarios al inicio de cualquier procedimiento para explicar su propósito y particularidades, si las tuviera.Este servirá de ayuda cuando se haya de revisar el código y haya pasado ya un tiempo desde que se escribió,a cualquier otro desarrollador que haya de modificar o adaptar el código.

13

CARACTERÍSTICAS SINTÁCTICAS BÁSICAS

i

Page 14: Módulo_4_El lenguaje VB

Consideraciones

Algunas consideraciones:

En procedimientos complicados En procedimientos complicados si se incluye un segmento de código no muy evidente, es habitual añadir unao varias líneas de comentarios, según sea necesario, para facilitar la lectura del código.

Los comentarios pueden incluirse línea a líneas Los comentarios pueden incluirse línea a línea, en cuyo caso se debe marcar el inicio del comentario con elcarácter comilla simple (’), lo que indicará al compilador que no tenga en cuenta el texto que viene acontinuación, hasta el final de la línea. Esto es válido para líneas completas de comentario o para añadir uncomentario a continuación del código, en la misma línea, siempre y cuando sea particularmente breve. Si senecesitan varias líneas para el texto a incluir, se añadirá el carácter comilla (‘) en cada una de las líneas,para identificarlas como comentarios

Las rémorasPor mantener la compatibilidad con versiones anteriores del lenguaje, las ya mencionadas rémoras, sepueden marcar los comentarios con la palabra clave REM, aunque es evidente que requiere más tecleo quela comilla simple y no está garantizado el que se vaya a mantener la compatibilidad infinitamente.

Si se quiere evitar el teclear el carácter comilla Si se quiere evitar el teclear el carácter comilla en cada línea de comentarios, cuando sea un bloqueimportante de texto, el IDE nos facilita dos botones que permiten, una vez seleccionado el bloque de texto,añadir o quitar las marcas de comentario a todas las líneas de una vez.

Como detalle adicional, las líneas de comentarios no se pueden continuar con el carácter de subrayado (_),como cualquier instrucción de código, es necesario marcar la siguiente línea con la comilla simple (‘) denuevo.

14

CARACTERÍSTICAS SINTÁCTICAS BÁSICAS

i

Page 15: Módulo_4_El lenguaje VB

Documentar el código mediante XML También es posible documentar el código mediante XML, el cual se situará en un archivo independiente, conel mismo nombre que el proyecto y extensión .xml, el cual se situará en el mismo directorio que el ejecutableque genere el compilador. Para ello será necesario respetar las reglas sintácticas específicas del XML, ya quede lo contrario el compilador emitirá avisos de los errores.

Para facilitar la tarea de documentar de esta forma el código, existe la posibilidad de generarautomáticamente la estructura del proyecto documentado en XML, para que luego le añadas toda lainformación descriptiva.

15

CARACTERÍSTICAS SINTÁCTICAS BÁSICAS

i

Page 16: Módulo_4_El lenguaje VB

3. Módulos y Clases

Diferencias entre Módulos y clases

Los módulos y las clases son similares, ya que ambos son tipos por referencia y sirven de contenedor paraelementos definidos internamente, aunque hay algunas diferencias entre ellos:

COPIASCon las clases se pueden crear objetos (instancias de clase) pero no con los módulos, es decir, sólo existe unacopia de cada módulo, mientras que pueden existir múltiples copias de cada clase.

UNICIDADCada instancia de clase dispone de su propio conjunto de datos, independiente de los del resto de instanciasde clase, en cambio los módulos son únicos y sus datos son asimismo únicos.

INTERFACESLas clases pueden implementar interfaces, es decir, definiciones de clases heredables que sólo contienen loscontratos o definiciones de miembros, sin el contenido de los mismos, pero los módulos no pueden.

ACCESIBILIDADEl ámbito de los miembros de los módulos es público, es decir son accesibles para todo el código de laaplicación durante la existencia del mismo, en cambio los miembros de clase son del ámbito de su instanciay tienen su vida.

16

CARACTERÍSTICAS SINTÁCTICAS BÁSICAS

i

Page 17: Módulo_4_El lenguaje VB

Síntesis

Visual Basic .NET es la evolución natural del conocido lenguaje de programación, ampliamente difundidopor su facilidad de uso, al entorno de la programación orientada a objetos y componentes.

La estructura básica de un programa, sea éste en el lenguaje que sea, no es una serie estricta de normas acumplir para poder desarrollarlo, es más bien una serie de convenciones establecidas por el uso y laexperiencia de muchísimos programadores alrededor del mundo. El seguir estas convenciones hace más fácilque cualquier otro desarrollador pueda leer, comprender y modificar nuestro código.

Los comentarios están compuestos por el texto explicativo que se añade, entremezclado con el código, paraexplicar características especiales, detalles funcionales o el propósito general de un módulo de código.

Los módulos y las clases son similares, ya que ambos son tipos por referencia y sirven de contenedor paraelementos definidos internamente, aunque hay algunas diferencias entre ellos.

17

CARACTERÍSTICAS SINTÁCTICAS BÁSICAS

i

Page 18: Módulo_4_El lenguaje VB

4. Resumen

Has llegado al final de esta lección de formación que denominamos “Características Sintácticas Básicas”.En esta lección hemos estudiado los siguientes contenidos:

18

CARACTERÍSTICAS SINTÁCTICAS BÁSICAS

i

Page 19: Módulo_4_El lenguaje VB

PRIMER PROGRAMA EN

VISUALBASIC.NET

APLICACIONES DE CONSOLA

© élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

Page 20: Módulo_4_El lenguaje VB

ÍNDICE

PRIMER PROGRAMA EN VISUAL BASIC.NET

1. Primer Programa en Visual Basic .Net: Aplicaciones de Consola . . . . . . . . . . . . . . . . . . . . . . .3

2. Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12

Page 21: Módulo_4_El lenguaje VB

1. Primer Programa en Visual Basic .Net: Aplicaciones de Consola´

A lo largo de éste conocerás cómo hacer tu primer programa como aplicación de consola

Aplicaciones de consola

Las aplicaciones llamadas “de consola” son aquellas en las que el interfaz de usuario es básico, limitado ala típica ventana del DOS, o incluso carecer de interfaz de usuario.

3

PRIMER PROGRAMA EN VISUAL BASIC.NET

i

Page 22: Módulo_4_El lenguaje VB

Aunque en el mundo actual parezca que estas aplicaciones ya no tienen utilidad, hay que pensar en aquellosdesarrollos orientados a instalarse como servicios en el sistema o los programas de utilidad de ejecucióndesatendida (batch).

Incluso pueden llegar a utilizarse para los programas básicos de instalación que desarrolles tú mismo, cuandono te parezca oportuno utilizar todas las ayudas que te proporciona el entorno en este sentido, o cuando tudepartamento de sistemas, que serán los encargados reales de efectuar las instalaciones, desee unasespecificaciones concretas que no cubran los asistentes automáticos del entorno.

Primer Programa

Parece que siempre que estamos aprendiendo un nuevo lenguaje de programación o una nueva versión, elprimer programa que se desarrolla es el famoso “¡Hola Mundo!”, por lo que no vamos a romper con estatradición y crearás una versión del “¡Hola Mundo!” como aplicación de consola.

Para ello, lo primero, será abrir el IDE, o entorno de desarrollo interactivo, en este caso Visual Studio, el cual,dependiendo de la versión que se tenga instalada, te presentará una pantalla inicial con sutiles diferencias.

En este caso, se muestra la pantalla inicial de Visual Studio 2008, configurado en Ingles.

4

PRIMER PROGRAMA EN VISUAL BASIC.NET

i

Page 23: Módulo_4_El lenguaje VB

Pantalla Inicial

Vamos a conocer las partes de la pantalla principal de Visual Studio.

1 . Como puedes apreciar, hay una zona central con informaciones varias, las cuales presentan artículos yenlaces de interés relacionados con el mundo del desarrollo y de los lenguajes de programación deMicrosoft.

2. En la parte superior izquierda se dispone de una lista de los proyectos recientemente accedidos, la cual,en un entorno de trabajo habitual, facilita mucho el acceso a los últimos proyectos, a la apertura de unproyecto existente, aunque no sea reciente, o a la creación de nuevos proyectos.

5

PRIMER PROGRAMA EN VISUAL BASIC.NET

i

Page 24: Módulo_4_El lenguaje VB

3. Se dispone de unos cuantos accesos a las ayudas interactivas del entorno, las cuales son bastante útilesal estar constituidas por auténticas guías de usuario para realizar algunas de las operaciones más comunes.

4. Enlaces de Microsoft con novedades de la comunidad de desarrollo y acceso a eventos específicos.

Crear Proyecto

Para crear un nuevo proyecto pincharemos en el enlace a Create Project, remarcado en rojo en la imagen:

6

PRIMER PROGRAMA EN VISUAL BASIC.NET

i

Page 25: Módulo_4_El lenguaje VB

Tipo de proyecto

Aparecerá la siguiente pantalla:

Seleccionaremos el tipo de proyecto de Windows de Visual Basic y la plantilla de Aplicación de consola.

Daremos el nombre del proyecto, en este caso “Hola Mundo” y pulsaremos “OK”.

7

PRIMER PROGRAMA EN VISUAL BASIC.NET

i

Page 26: Módulo_4_El lenguaje VB

Estructura básica tre

Obtendrás lo siguiente:

No hay interfaz ni has codificado nada todavía, por lo que sólo aparece la estructura básica, que ya habíamoscomentado en otro módulo.

8

PRIMER PROGRAMA EN VISUAL BASIC.NET

i

Page 27: Módulo_4_El lenguaje VB

Explorador de soluciones

Si abrimos el explorador de soluciones verás que, el proyecto ya tiene muchos componentes.

Todo esto es posible debido a la selección efectuada al crear el proyecto, la famosa plantilla. Esta es laforma en la que el entorno sabe qué ha de crear y puede adelantar trabajo.

La zona de trabajo se organiza por pestañas, y al lado de la correspondiente al módulo en el que nosencontramos Module1.vb, aún aparece la página de inicio para poder volver a ella cuando lo desees.

9

PRIMER PROGRAMA EN VISUAL BASIC.NET

i

Page 28: Módulo_4_El lenguaje VB

Barras de herramientas

Las barras de herramientas que aparecen encima del área de trabajo irán cambiando, en función dellenguaje, tipo de proyecto, plantilla y tipo de módulo.

A medida que sea relevante iremos descubriendo los botones más utilizados. De todas formas, como siemprecon Microsoft, absolutamente todo se puede ejecutar desde dos o más accesos, botones, menús, teclas defunción, etc.

Códigos

Llega la hora de decirle al programa lo que queremos que haga, en este caso mostrar el mensaje “HolaMundo” en el interfaz de usuario del programa. En este caso, una ventana del DOS.

Para ello deberás teclear el código siguiente entre las líneas ya existentes:

10

PRIMER PROGRAMA EN VISUAL BASIC.NET

i

Page 29: Módulo_4_El lenguaje VB

Console, es el objeto que te permite acceder a la ventana del DOS.

Su método WriteLine() permite escribir una nueva línea en la pantalla, con el texto que indiquemos entresus paréntesis y comillas dobles.

El método ReadLine() ha de especificarse ya que, en caso contrario, el sistema escribiría las líneas, pero nodaría tiempo a leerlas ya que se cerraría automáticamente la ventana. Con este método, el cual sirve paraleer caracteres en pantalla, el sistema parará hasta que pulsemos <Intro>, dándo tiempo a ver en pantallalo que se ha escrito.

IDE

Las facilidades que te brinda el IDE son:

- Guardar todos los documentos abiertos del proyecto.- Compilar el programa.- Lanzar la ejecución del mismo.

Simplemente haciendo clic sobre el botón

Mientras no se pulse <Intro>, se mantendrá ahí la ventana.

El botón pulsado tiene su equivalencia con la tecla F5, o se puede lanzar desde el menú Debug -> StartDebugging.

Síntesis

Las aplicaciones llamadas “de consola” son aquellas en las que el interfaz de usuario es básico,limitado a la típica ventana del DOS, o incluso carecer de interfaz de usuario.

11

PRIMER PROGRAMA EN VISUAL BASIC.NET

Page 30: Módulo_4_El lenguaje VB

2. Resumen

Has llegado al final de esta lección de formación que denominamos “Primer Programa en Visual Basic .Net:Aplicaciones de Consola”.

En esta lección hemos estudiado los siguientes contenidos:

12

PRIMER PROGRAMA EN VISUAL BASIC.NET

i

Page 31: Módulo_4_El lenguaje VB

VARIABLES,CONSTANTES Y

TIPOS DE DATOS

© élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

Page 32: Módulo_4_El lenguaje VB

ÍNDICE

PRIMER PROGRAMA EN VISUAL BASIC.NET

1. Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

2. Constantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7

3. Tipos de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

4. Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14

Page 33: Módulo_4_El lenguaje VB

1. Variables

A lo largo de éste conocerás las variables de Visual Basic .Net

Concepto de variable

El concepto de variable es el que define aquellas áreas de memoria, con nombre, que permiten almacenarvalores para su posterior uso.

Siempre que sea necesario almacenar algún valor en el programa, se utilizara una variable.

3

VARIABLES, CONSTANTES Y TIPOS DE DATOS

i

Page 34: Módulo_4_El lenguaje VB

Las variables tienen nombre y tipo de dato, aunque Visual Basic permite declarar variables sin indicar el tipodel datos, para que el sistema lo deduzca a partir del valor almacenado. Esta técnica no se recomienda yaque puede dar lugar a problemas posteriores si se convierte la variable a otro tipo de dato o se intentaalmacenar en una base de datos, ya que a partir del valor se puede inferir un tipo de dato que no seacompatible con las operaciones posteriores a las que se someta a la variable.

Nombres de Variables

Los nombres de variables, así como el resto de nombres que se declaren en los programas, han de cumplirunas mínimas normas sintácticas:

- El primer carácter sólo puede ser alfabético o un guión bajo (_).

- Sólo se pueden teclear caracteres alfabéticos, dígitos decimales y signos de subrayado (_).

- El nombre de la variable debe tener al menos un carácter (alfabético o decimal). Si es un guión bajo,habrán de ser dos caracteres.

- La longitud máxima es de 1023 caracteres.

- No hay diferencia entre mayúsculas y minúsculas en Visual Basic, pero sí en otros lenguajes delentorno.

4

VARIABLES, CONSTANTES Y TIPOS DE DATOS

i

Page 35: Módulo_4_El lenguaje VB

Declarar Variables

Para declarar una variable en Visual Basic se utiliza la instrucción Dim y según en qué lugar del código sedeclare podrá ser:

- local: si se declara dentro de un procedimiento

- o miembro: si se declara dentro de un miembro, una clase, una estructura o un módulo, pero fuerade cualquiera de sus procedimientos.

Si una variable miembro se declara con el Shared, será compartida, en caso contrario será de instancia. Lasvariables compartidas son aquellas de las que sólo hay una copia para todas las instancias, las otras sonparticulares para cada instancia de la clase.

Objeto de la variable

Dentro de la instrucción Dim, existe la cláusula As, que permite identificar el tipo de dato o de objeto de lavariable, siendo permitidos los de la siguiente lista:

- Un tipo de datos predefinido del entorno, como Boolean, Long o Decimal, o cualquier otro de loscomentados anteriormente.

- Un tipo de datos compuesto, como una matriz o una estructura, que se detallarán un poco másadelante.

- Un tipo de objeto o clase.

- Clase del entorno, como Label, RadioButton o TextBox, en general, cualquiera de los controlesdisponibles en el entorno.

- Un tipo de interfaz, como IComparable o IDisposable, los cuales comentaremos en un futuro módulo.

5

VARIABLES, CONSTANTES Y TIPOS DE DATOS

i

Page 36: Módulo_4_El lenguaje VB

Ayuda

Como ayuda adicional, en Visual Basic puedes declarar varias variables del mismo tipo, sin inicialización, enuna única línea, con lo que ahorras código cuando se te presenta esta necesidad.

Características restantes

Las características restantes de las variables son:

- Periodo de duración, habitualmente el del lugar en el que está declarada.- Ámbito, todos los que puedan hacer referencia sin tener que utilizar el nombre calificado completo.- Nivel de acceso, todos los que tienen acceso a la misma

Cuando se especifica alguna de estas características, se obvia la palabra clave Dim.

Para asignar un valor a una variable se debe de utilizar el símbolo igual “=”, que en este caso no significaigualdad:

6

VARIABLES, CONSTANTES Y TIPOS DE DATOS

i

Page 37: Módulo_4_El lenguaje VB

2. Constantes

A lo largo de éste conocerás las constantes de Visual Basic .Net.

Definición de Constantes

Las constantes son una forma de tener almacenados determinados valores, que podrás utilizar en varioslugares del código y que no pueden ser cambiados por el código, sólo utilizados.

Aunque sólo se haya de utilizar una vez el valor, siempre es preferible declarar una constante al principiodel programa, comentando la utilidad de la misma al codificar el valor en medio del código, ya que cuandollegue el día de modificar el valor, será mucho más sencillo localizarlo al inicio del programa y biendocumentado, que tener que buscarlo en todo el código, sin saber siquiera si el valor ha sido o no utilizadoen el programa.

7

VARIABLES, CONSTANTES Y TIPOS DE DATOS

i

Page 38: Módulo_4_El lenguaje VB

Reglas sintácticas

Las reglas sintácticas son las mismas que para las variables. Para la creación de constantes se ha de utilizarla instrucción Const. En este caso es obligatorio indicar el nivel de acceso de la constante: Public, Private,Friend, Protected o Protected Friend. Si está activa la restricción Option Strict, será obligatorio indicar eltipo de dato de la constante.

También se puede definir varias constantes en la misma línea, aunque esta vez sin la limitación de que hayande ser todas del mismo tipo de datos.

Las constantes definidas por el usuario, pueden ser de dos tipos:

Constantes en tiempo de compilación

Son aquellas a las que se le asignan valores fijos, por código, al inicio del programa y que siempre tendránel mismo valor, al menos, mientras no se modifique el código fuente del programa.

Constantes en tiempo de ejecución

Son aquellas a las que el valor es asignado de forma dinámica, es decir, en el código se asigna una variable,normalmente recuperada de la base de datos o de una entrada de usuario, por lo que en cada ejecuciónpuede tener un valor diferente, dependiendo de lo que recupere de la base de datos o de lo que introduzcael usuario.

8

VARIABLES, CONSTANTES Y TIPOS DE DATOS

i

Page 39: Módulo_4_El lenguaje VB

Constantes definidas

También existen constantes definidas por el sistema disponibles para el uso en el código, normalmente paradepuración, configuración e impresión.

Enumeración

Cuando exista un grupo relacionado de constantes enteras con las que se tenga que trabajar, y sea útilacceder a las mismas por nombre, es conveniente utilizar una enumeración.

Las enumeraciones siempre son secuencias de valores numéricos, empezando por 0 salvoinicialización explícita, a los que se asocia un nombre.

Se declaran con la instrucción Enum, siempre dentro de la sección declarativa de un módulo yno en los procedimientos, y se les asignara un nivel de acceso, Private, Public, Protected o

Friend, siendo su tipo datos Byte, Short, Long o Integer exclusivamente

9

VARIABLES, CONSTANTES Y TIPOS DE DATOS

i

Page 40: Módulo_4_El lenguaje VB

Instrucción Imports

Una vez declaradas, para no tener que utilizar el nombre calificado, es mejor utilizar la instrucción Imports.

Valor de una enumeración

Para utilizar un valor de una enumeración, se indica el nombre de la misma separada por unpunto del nombre del valor que nos interese.

Para recuperar los valores de una enumeración utilizaremos las instrucciones GetValues oGetNames.

10

VARIABLES, CONSTANTES Y TIPOS DE DATOS

i

Page 41: Módulo_4_El lenguaje VB

3. Tipos de datos

A lo largo de éste conocerás los tipos de datos de Visual Basic .Net.

Tipos de datos predefinidos

Como recordarás, ya vimos los tipos de datos en un módulo anterior, de todas formas, aquí detallaremos lostipos de datos predefinidos y utilizables en Visual Basic y algunas de sus características.

- SByte numérico con signo sin decimales de 8 bits.

- Short numérico con signo sin decimales de 16 bits.

- Integer numérico con signo sin decimales de 32 bits.

- Long numérico con signo sin decimales de 64 bits.

- Byte numérico sin signo sin decimales de 8 bits.

- UShort numérico sin signo sin decimales de 16 bits.

- Uinteger numérico sin signo sin decimales de 32 bits.

- ULong numérico sin signo sin decimales de 64 bits.

- Decimal numérico con signo de coma fija de 128 bits.

- Single numérico con signo de coma flotante de 32 bits.

- Double numérico con signo de coma flotante de 64 bits.

- Char de 16 bits, almacena un único carácter alfabético

- String secuencia de 0 o más Char de 16 bits.

- Boolean valor sin signo, True o False.

- Date fecha y hora de 64 bits. - Object dirección de 32 bits que apunta a una instancia de objeto o hace referencia a cualquier objeto

que la aplicación reconoce o a datos de cualquier tipo de datos

11

VARIABLES, CONSTANTES Y TIPOS DE DATOS

i

Page 42: Módulo_4_El lenguaje VB

Tipos generales de datos

Además de los anteriores tipos de datos, existen otros dos tipos generales en Visual Basic, los tipos de datoscompuestos y los tipos de datos genéricos.

Los tipos de datos compuestos, son aquellos que contienen datos de más de un tipo. Están constituidos porlas matrices, las estructuras y las clases.

Estructuras

Aunque inicialmente pueda parecer que son muy similares a las clases, no tienen tanta funcionalidad asociadacomo éstas, aunque puedan disponer de campos, propiedades, métodos y eventos y puedan implementarinterfaces, y declarar niveles de acceso individuales para cada campo.

Su principal funcionalidad es la de agrupar datos de diversos tipos, relacionados por algún concepto, en unaúnica variable, lo cual facilita su manipulación en el programa, además de permitir instancias de lasestructuras.

Para declarar una estructura se ha de utilizar un bloque Structure - EndStructure. Y declarar por lo menosun elemento dentro del bloque.

12

VARIABLES, CONSTANTES Y TIPOS DE DATOS

i

Page 43: Módulo_4_El lenguaje VB

A lo largo del resto de módulos, iremos viendo mas detalles de todos los tipos de datos aceptados por VisualBasic.

Síntesis

El concepto de variable es el que define aquellas áreas de memoria, con nombre, que permiten almacenarvalores para su uso posterior. Se declaran con la instrucción Dim.

Las constantes son una forma de tener almacenados determinados valores, que se podrán utilizar en varioslugares del código y que no pueden ser cambiados por el código, sólo utilizados.

13

VARIABLES, CONSTANTES Y TIPOS DE DATOS

i

Page 44: Módulo_4_El lenguaje VB

4. Resumen

Has llegado al final de esta lección de formación que denominamos “Variables, Constantes y Tipos de datos”.En esta lección hemos estudiado los siguientes contenidos:

14

VARIABLES, CONSTANTES Y TIPOS DE DATOS

i

Page 45: Módulo_4_El lenguaje VB

OPERADORES

© élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

Page 46: Módulo_4_El lenguaje VB

ÍNDICE

OPERADORES

1. Operadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

2. Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14

Page 47: Módulo_4_El lenguaje VB

1. Operadores

A lo largo de éste conocerás los diferentes operadores de Visual Basic .Net.

¿Qué son los operadores?

Los operadores son elementos del lenguaje que permiten realizar, como su nombre indica, operaciones sobreotros elementos del lenguaje que tengan algún valor, como son: variables, constantes, valores de retorno defunciones o procedimientos, literales y expresiones.

Las expresiones son elementos de datos combinados, es decir, una instrucción con operadores y elementosde datos, que devuelven un valor, que será el utilizado por el operador.

3

OPERADORES

i

Page 48: Módulo_4_El lenguaje VB

Tipos

Aritméticos:Para realizar las operaciones aritméticas básicas sobre tipos de datos numéricos.

De comparación:Se utilizan para comparar dos valores, devolviendo un valor lógico de verdadero o falso.

De concatenación:Unen cadena de caracteres.

Lógicos y bit a bit:Operan con valores lógicos (boolean) o numéricos de tipo bit.

De asignación:Son básicos a la hora de operar, permiten indicar dónde se ha de almacenar el resultado de la operación.

Prioridad de operador

Como en cualquier otro lenguaje de programación, Visual Basic permite combinar varios operadores en unaexpresión, evaluándola en función de lo que se denomina orden de precedencia o prioridad de operador,aunque éste es alterable mediante el uso de paréntesis, como ya se explicó.

Orden de evaluación

Si hay operadores de más de una categoría, el orden de prioridad es, de mayor a menor:

- Operadores aritméticos y de concatenación.- Operadores de comparación.- Operadores lógicos y bit a bit.

4

OPERADORES

i

Page 49: Módulo_4_El lenguaje VB

Prioridad en operadores del mismo tipo

Los operadores con la misma prioridad se evalúan de izquierda a derecha en el orden en que aparecen en laexpresión.

- Operadores de concatenación y aritméticos- Potencia (^)- Identidad y negación unarios (signo de un dato numérico) (+, –)- Multiplicación y división de punto flotante (*, /)- División de número entero (\)- Módulo aritmético (Mod)- Suma y resta (+, –), concatenación de cadenas (+)- Concatenación de cadenas (&)- Desplazamiento de bits aritmético (<<, >>)

Operadores de concatenación

Operadores de concatenación y aritméticos

5

OPERADORES

i

Page 50: Módulo_4_El lenguaje VB

Operadores de comparación

Operadores lógicos y bit a bit

6

OPERADORES

i

Page 51: Módulo_4_El lenguaje VB

Asociatividad

Si hay dos o más operadores de la misma prioridad, Visual Basic los evalúa de izquierda a derecha.

Como hemos mencionado anteriormente, el orden de prioridad y el de asociatividad pueden alterarsemediante el uso de paréntesis, ya que las operaciones incluidas entre estos símbolos se evalúan antes quelas que correspondan a los operadores que se hallen fuera de ellos, aunque dentro de ellos se mantienen lasmismas reglas.

Una particularidad de los operadores en Visual Basic, así como en el resto de los lenguajes del entorno, esque se pueden sobrecargar, es decir, se puede redefinir su funcionalidad en una clase, modificando sucomportamiento para los objetos de dicha clase, lo veremos en detalle más adelante ya que puede llegar aser bastante interesante en algunos casos.

Operadores aritméticos

Potencia: Devuelve siempre un Double, de la base elevada a la potencia.

Multiplicación: El tipo de datos del resultado será en función de los tipos de dato de losvalores multiplicados.

División con decimales: divide el dividendo por el divisor devolviendo el resultado con todoslos decimales que pueda calcular. El tipo de dato del resultado dependerá de los tipos dedatos de los operandos, produciéndose errores en el caso de divisiones por cero o tipo de datodel receptor del resultado no adecuado al tipo de dato resultante de la división.

7

OPERADORES

i

Page 52: Módulo_4_El lenguaje VB

División entera: devuelve el dividendo dividido por el divisor como número entero,descartando cualquier resto. También producirá errores en los mismos casos que la divisióncon decimales.

Módulo: complementaria de la anterior, divide dos números, pero sólo devuelve el resto.Producirá los mismos errores que las divisiones.

Suma: Efectúa la suma de los dos valores suministrados, devolviendo el tipo de datoadecuado para que contenga el resultado. Este operador está ya sobrecargado, siendotambién el de concatenación de cadenas.

Resta: devuelve la diferencia entre los dos valores suministrados o el valor negativo del valorúnico suministrado. El tipo de datos resultante dependerá de los tipos de dato de los valores.

8

OPERADORES

i

Page 53: Módulo_4_El lenguaje VB

Valor lógico

Todas estas operaciones devuelven un valor lógico (Boolean) verdadero (True) o falso (False) según la siguientetabla de evaluaciones.

9

OPERADORES

i

Page 54: Módulo_4_El lenguaje VB

Patrón de sentencia Like

Para el patrón de la sentencia Like es la siguiente:

Operadores de concatenación

Los operadores de concatenación, como ya hemos visto antes, son dos:

& devuelve el resultado, en una variable String u Object, de concatenar las dos expresiones de tipoString o convertibles a String suministradas.

+devolverá una cadena si los dos valores suministrados son de cadena, en caso contrario,devolverá alguno de los resultados que se muestran en la tabla.

10

OPERADORES

i

Page 55: Módulo_4_El lenguaje VB

Recomendaciones operadores de concatenación

Si alguna de las expresiones que sean Object contiene Nothing o DBNull, se trata como un String “”.

Como habrás comprobado, si se realiza una concatenación es preferible utilizar directamente el operador“&”, ya que los condicionantes y errores que se pueden producir con el operador “+” complican un poco suuso.

11

OPERADORES

i

Page 56: Módulo_4_El lenguaje VB

Operadores lógicos y bit a bit en Visual Basic

Operadores lógicos y bit a bit

Los operadores lógicos y bit a bit que Visual Basic pone a tu disposición son:

- And, conjunción lógica entre dos valores Boolean o bit a bit entre dos valores numéricos.Verdadero (True) si Boolean y ambos True, 1 si numéricos y ambos bits = 1.

- Not, negación lógica de un valor Boolean o bit a bit de un valor numérico.

- Or, disyunción lógica o bit a bit, False si Boolean y ambos False, 0 si numéricos y ambos 0.

- Xor, exclusión, False si Boolean e iguales, 0 si numéricos e iguales.

- AndAlso, conjunción lógica con cortocircuito, es decir, si la primera es False, no evalúa lasegunda, devolverá True si ambos son True.

- OrElse, disyunción lógica, con cortocircuito, si la primera es True, no se evalúa, devuelve Falsesi ambas son False.

Operadores de asignación

Ya los has ido viendo en la explicación y ejemplos del resto de operadores. Permiten asignar, valga laredundancia, el resultado de evaluar una expresión a la variable de resultado.

El principal operador de asignación es el signo de igualdad “=”, aunque existen unos operadores de asignacióncompuesta que pueden llegar a ser bastante útiles en la labor de desarrollo. Primero efectúan una operaciónantes de realizar la asignación, con lo que se ahorra un paso, por ejemplo en incrementos de contadores ysimilares.

12

OPERADORES

i

Page 57: Módulo_4_El lenguaje VB

Formato

El formato a utilizar es: resultado operador expresión.

Estos operadores de asignación compuestos son:

+ =, incrementa el resultado en el valor de la expresión, entre cadenas, puede concatenar.

=, decrementa el resultado en el valor de la expresión.

& =, concatena el String de la expresión a el String del resultado.

^ =, eleva el numérico del resultado al numérico de la expresión y lo deja en el resultado.

● =, multiplica el numérico del resultado por el numérico de la expresión y lo deja en elresultado.

/ =, divide el numérico del resultado por el numérico de la expresión y deja el valor decimalen el resultado.

\ =, divide el numérico del resultado por el numérico de la expresión y deja el valor enteroen el resultado.

Síntesis

Dispones de un amplio surtido de operadores suministrados por Visual Basic.

Siempre se puede sobrecargar el que más se asemeje para adaptarlo a los requerimientos del proyecto.

Te recomiendo que te tomes el tiempo de investigar en la ayuda de Visual Studio, para conocer a fondo lasposibilidades de los operadores.

13

OPERADORES

i

Page 58: Módulo_4_El lenguaje VB

2. Resumen

Has llegado al final de esta lección de formación que denominamos “Variables, Constantes y Tipos de datos”.En esta lección hemos estudiado los siguientes contenidos:

14

OPERADORES

i

Page 59: Módulo_4_El lenguaje VB

INSTRUCCIONESDE CONTROL

© élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

Page 60: Módulo_4_El lenguaje VB

ÍNDICE

INSTRUCCIONES DE CONTROL

1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

2. Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20

Page 61: Módulo_4_El lenguaje VB

1. Introducción

Las instrucciones de control permiten, como su nombre indica, controlar el flujo de ejecución de losprogramas.

Son básicamente las mismas que en cualquier otro lenguaje de programación, eso sí, con la sintaxis específicade Visual Basic.

Instrucciones por tipo de acción

A continuación se muestran las instrucciones agrupadas por tipo de acción.

Operaciones de toma de decisiones: If...Then...ElseSelect CaseSwitchChoose

3

INSTRUCCIONES DE CONTROL

i

Page 62: Módulo_4_El lenguaje VB

Operaciones de bucles:Do…LoopFor…NextFor Each…NextWhile…End WhileWith

Bifurcaciones:GoToOn Error

Llamadas a procedimientos externosCallFunctionPropertySub

Finalizar el programaEndExitStop

Operaciones de toma de decisiones:If...Then...Else

4

INSTRUCCIONES DE CONTROL

i

Page 63: Módulo_4_El lenguaje VB

Formato de la instrucción

Evalúa una condición y, en función del resultado, ejecuta un grupo de código u otro.Este es el formato general de la instrucción.

La condición principal

La condición principal que evaluará el sistema será la que se indique en la condición del If, si esta se cumple,ejecutará las sentencias que vayan después del Then, si está presente, o después de la propia condición, encaso contrario, pasando después a la primera instrucción posterior al End If.

Si la condición del If no devuelve un valor True, el sistema comprobará, por orden, todas las instruccionesElseIf, ejecutando las instrucciones de código de la primera cuya condición devuelva el valor True y pasandoa la primera instrucción tras el End If.

SI ninguna condición se evalúa como True, pasará a ejecutar el bloque de instrucciones después del Else.

5

INSTRUCCIONES DE CONTROL

i

Page 64: Módulo_4_El lenguaje VB

Comprobación

Evidentemente, sólo comprobará los ElseIf, si los hay, lo mismo para el Else. Aunque es unapráctica muy recomendable el que siempre haya un Else en todo If, para controlar qué se ha

de hacer cuando la condición no se cumpla, ya que si se utiliza las herramientas dedocumentación automática que ya comentamos anteriormente, comprobarás que si no existe

un Else, da algún que otro problema.

Operación de toma de decisiones

Select Case

Esta instrucción es buena para los datos que admiten múltiples valores, ya que pueden ser verificados todosen una única instrucción, ejecutando el código asociado al valor actual del dato, siendo su formato general:

Expresión dato

El sistema comprobará el valor actual de la expresión dato y buscará la instrucción Case cuyo valorcorresponda, pasando a ejecutar su grupo de instrucciones.

6

INSTRUCCIONES DE CONTROL

i

Page 65: Módulo_4_El lenguaje VB

El valor de un Case puede tener diferentes formatos:

- Un valor atómico.- Un rango de valores (valor1 To valor2)- Operador de comparación (Is operador valor)- Cualquier combinación de los tres anteriores, separados por coma.

Siempre es aconsejable codificar un Case Else para tener controladoslos valores inesperados de dato, aunque es opcional.

El sistema buscará la primera instrucción Case cuyo valor se ajuste adato y ejecutará las instrucciones que sigan hasta el siguiente Case,Case Else o End Select, pasando a la instrucción siguiente al End Selectdespués.

En caso de más de una coincidencia

Si puede haber más de una coincidencia, se ejecutará sólo la primera que se encuentre, con lo que esconveniente que, cuando se codifiquen condiciones compuestas y/o rangos de valores operadores decomparación, plantear muy bien el orden en el que se escriben, ya que en cuanto se cumpla una, ni siquieramirará las siguientes.

El mismo principio se aplica a las condiciones combinadas, se evalúan de izquierda a derecha y en cuantoencuentre una que cumpla, no mira las siguientes, con lo que los paréntesis de agrupación son altamenterecomendables si se tienen condiciones complejas.

7

INSTRUCCIONES DE CONTROL

Page 66: Módulo_4_El lenguaje VB

Operación de toma de decisiones: Switch

Esta es una función muy útil, a la que se le suministra una lista con un número par de elementos de tipoObject, que realizará una búsqueda sobre los elementos impares (aunque con numerador par al empezar por0) y devolverá el valor impar siguiente.

Imagínate una lista de los días de la semana y su equivalencia a laborable o festivo, se podría, con el día dela semana recuperado del sistema para una fecha concreta, mediante la función Switch, obtener fácilmentesi es laborable o festivo.

Para una fecha cualquiera hay una función del sistema que te devuelve el día de la semana, con ese valor,lanzando la función Switch devolverá el “Laborable” o “Festivo” correspondiente a ese día.

Así se codificaría el ejemplo anterior:

Se ha de llamar a la función con el nombre calificado completo debido a que ya existe una función Switch,que no tiene nada que ver son ésta, en el NameSpace Diagnostics.

8

INSTRUCCIONES DE CONTROL

i

Page 67: Módulo_4_El lenguaje VB

Operación de toma de decisiones: Choose

Similar a la anterior, con la salvedad de que la lista de valores a devolver está indexada y la búsqueda seefectúa por este índice en lugar de los valores individuales asociados de la función anterior.

En ambos casos, los valores devueltos pueden ser llamadas a procedimientos o funciones externas.

Así se codificaría el ejemplo anterior:

Operdores de bucles

Do…Loop, repite un grupo de instrucciones indefinidamente, hasta que se cumpla o mientras se cumpla unadeterminada condición.

Su formato general es la siguiente:

9

INSTRUCCIONES DE CONTROL

i

Page 68: Módulo_4_El lenguaje VB

El control de la condición, como puedes apreciar, se puede realizar al principio o al final del bucle, segúnlas necesidades del proceso.

Con While se repetirá el bucle mientras se cumpla la condición, en cambio con Until se cumplirá hasta quese cumpla la condición. Es decir, con While se repetirá mientras la condición devuelva un valor True, perocon Until se repetirá el bucle mientras la condición sea False.

Control de la condición al final del bucle

Si se sitúa el control de la condición al final del bucle, éste se ejecutará siempre al menos una vez.Colocándola al principio, puede llegar a no ejecutarse.

La instrucción Exit Do es opcional, sirve para forzar la salida del bucle en cualquier punto del mismo, ytransfiere el control a la instrucción siguiente al Loop.

10

INSTRUCCIONES DE CONTROL

i

Page 69: Módulo_4_El lenguaje VB

Sugerencia

Si en el ejemplo anterior, no estuviera la instrucción If, controlando unnúmero máximo de ejecuciones para forzar la salida del bucle, éste seríainfinito, ya que dentro del bucle no se modifica el valor que condiciona laejecución del mismo, con lo que el sistema no finalizaría nunca estaejecución.

Como te puedes imaginar, hay que tener muchísimo cuidado con este tipo decosas.

Operaciones de bucles: For…Next

La instrucción For…Next, permite repetir un grupo de instrucciones un determinado número de veces, locual tiene su utilidad para repeticiones establecidas por numerador en vez de por condición, siendo suformato general el siguiente:

11

INSTRUCCIONES DE CONTROL

i

Page 70: Módulo_4_El lenguaje VB

Expresión dato

El paso puede ser negativo, lo cual es interesante para cuentas regresivas. Si no se especifica, es 1 pordefecto.

Inicio y fin son el valor inicial de contador y el valor límite del mismo. El Exit For es para forzar la salida delbucle si se cumple alguna condición que así lo aconseje.

Una forma habitual de utilización es la que sigue, en la cual se declaran directamente las variables decontadores en el bucle, con lo cual su ámbito se circunscribe a éste.

12

INSTRUCCIONES DE CONTROL

i

Page 71: Módulo_4_El lenguaje VB

Operaciones de bucles: For Each…Next

For Each…Next es muy similar a la anterior, pero en lugar de control por contador, se repite el bucle paracada elemento de una colección.

Aunque no te parezca gran cosa, el desarrollo de esta funcionalidad ha sido un gran avance y ha simplificadomucho la codificación de programas.

El formato general es:

Como colección se puede recuperar cualquier lista de elementos del sistema, los tipos, colores o tamañosde fuente disponibles, por ejemplo, y modificar un texto pasando por cada valor de la lista.

Operaciones de bucles: While…End While

Ya hemos visto la instrucción Do Loop, que realiza lo mismo While…EndWhile, aunque con más funcionalidad.

Ésta es una versión reducida, que sólo tiene la posibilidad de ejecución de un grupo de instrucciones mientrasuna condición sea cierta, lo cual puede llegar a serte útil y es más sencillo de codificar.

13

INSTRUCCIONES DE CONTROL

i

Page 72: Módulo_4_El lenguaje VB

Operaciones de bucles: With

With es más bien una operación de bloque, en lugar de bucle. Delimita un objeto con el que se vayan arealizar todas las operaciones siguientes.

Esta instrucción puede serte muy útil si has de realizar varias operaciones consecutivas con un objeto connombre calificado largo. Utilizando este método, sólo se tecleará el nombre una vez y, dentro del bloque.

Sugerencia de asignaciones

Todas las asignaciones se hacen empezando sólo con el punto, asumiéndoseautomáticamente que es para el objeto del bloque With.

14

INSTRUCCIONES DE CONTROL

i

Page 73: Módulo_4_El lenguaje VB

Bifurcaciones: GoTo

La instrucción GoTo realiza un salto directo a una determinada línea del código, marcada con una etiqueta,sin aplicar ningún tipo de condiciones.

Este método era muy utilizado antiguamente, ya que era una de las pocas instrucciones de control de flujodisponible, pero no facilita la lectura del código y se sale totalmente de las técnicas de estructuración decódigo, por lo que no se recomienda su utilización, llegándose incluso a prohibir en los estándares de muchasinstalaciones.

Bifurcaciones: On Error

On Error también entra dentro del grupo de instrucciones a no utilizar, ya que también se salta laestructuración del código. En su lugar es mejor utilizar los controles estructurados de excepcionesTry…Catch…Finally.

Permite bifurcar a una línea etiquetada concreta del código, si se produce una determinada condición deerror o desactivar el control de errores.

Llamadas a procedimientos externos: Call

La instrucción Call pasa el flujo de ejecución desde el programa actual a un procedimiento Function o Subo a una DLL.

Su formato es el siguiente:

15

INSTRUCCIONES DE CONTROL

i

Page 74: Módulo_4_El lenguaje VB

No es obligatoria para la llamada a un procedimiento externo, pero es evidente que queda mucho más claropara cualquiera que lea el código.

Si el procedimiento llamado devuelve algún valor, con Call lo perderemos, por lo que será mejor utilizaralguna de las otras opciones disponibles.

Llamadas a procedimientos externos: Function

Function permite definir una función, a la cuál se llamará posteriormente desde el código. Tiene muchasposibilidades de codificación, aunque aquí te voy a especificar las más habituales.

El formato general completo es el siguiente:

Ejemplo

En su forma más habitual, se limita a cosas como el ejemplo siguiente:

16

INSTRUCCIONES DE CONTROL

Page 75: Módulo_4_El lenguaje VB

Llamadas a procedimientos externos: Property

Property nos permite establecer un interfaz para una propiedad privada de una clase o un módulo, dándolela posibilidad de definir sus funciones Get y Set para recuperar o establecer el valor de la propiedad de unaforma controlada.

Su formato general es el siguiente:

Nivel de especificación

Prácticamente no utilizarás jamás tanto nivel de especificación. Lo más normal es que se parezca más a loque sigue:

17

INSTRUCCIONES DE CONTROL

i

Page 76: Módulo_4_El lenguaje VB

Llamadas a procedimientos externos: Sub

La Instrucción Sub permite definir un procedimiento Sub (subrutinas), que es una forma de aislar grupos decódigo relacionados, dándole un nombre, pasándole, si fuera preciso, parámetros y pudiendo lanzar suejecución desde diferentes puntos del programa.

También permite la reutilización de código, ya que una vez definida y probada una rutina particularmentecompleja, se puede copiar en otros módulos en vez de volver a definirla.

Su formato completo es complejo, como en el caso anterior, pero no se suele utilizar todo.

Finalizar el programa: End y Exit

End finaliza completamente el programa y la aplicación en la que esté, cerrando los archivos abiertos, si loshubiera y destruyendo las referencias a variables definidas.

No se debe utilizar ya que no permite que el resto de la pila de llamada finalice adecuadamente.

La instrucción Exist, lo que hace es salir de un bloque de código determinado. No hay ningún problemateórico para utilizarla, pero es mucho más limpio salir del bloque mediante sus propias condiciones ocontadores, en lugar de este método abrupto.

18

INSTRUCCIONES DE CONTROL

i

Page 77: Módulo_4_El lenguaje VB

Su formato dependerá del lugar donde se codifique y la intención que se tenga, teniendo en cuenta losanidamientos.

Stop efectúa una suspensión de la ejecución, pero sin cerrar nada. Se queda esperando a que el usuarioacepte para continuar.

Si está en un programa exe compilado, si finalizará la ejecución.

Síntesis

Tienes a tu disposición un amplio surtido de instrucciones de control disponibles en Visual Basic, de los tipos:

- Operaciones de toma de decisiones:

- Operaciones de bucles

- Bifurcaciones

- Llamadas a procedimientos externos

- Finalizar el programa

19

INSTRUCCIONES DE CONTROL

i

Page 78: Módulo_4_El lenguaje VB

2. Resumen

Has llegado al final de esta lección de formación que denominamos “Instrucciones de control”En esta lección hemos estudiado los siguientes contenidos:

20

INSTRUCCIONES DE CONTROL

i

Page 79: Módulo_4_El lenguaje VB

UTILIZACION DELAS FUNCIONESINCORPORADAS

© élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

Page 80: Módulo_4_El lenguaje VB

ÍNDICE

UTILIZACION DE LAS FUNCIONES INCORPORADAS

1. Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

2. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10

Page 81: Módulo_4_El lenguaje VB

1. Funciones

Introducción

Las funciones incorporadas son, como te habrás imaginado, las que ya vienen implementadas con el lenguaje.Permiten realizar multitud de tareas y facilitan el trabajo.

Se apoyan en la famosa librería de clases básicas del entorno (BCL) de la que ya hemos habladoanteriormente, por lo que la utilización de una función en un módulo desarrollado con Visual Basic nosupondrá ningún problema si el módulo es llamado desde otro, desarrollado en otro lenguaje.

3

UTILIZACION DE LAS FUNCIONES INCORPORADAS

i

Page 82: Módulo_4_El lenguaje VB

Grupos de funciones incorporadas

- Funciones de conversión

- Funciones matemáticas

- Funciones de conversión de tipos

La lista de funciones es bastante amplia, por lo que, dentro de cada grupo, comentaremos las más utilizadas.El resto podrás verlas mediante los diversos sistemas de ayuda que te brinda Visual Studio.

Funciones de conversión

Permiten cierto tipo de manipulación de los datos.

Asc, devuelve el código numérico del carácter pasado o el primero de la cadena, correspondiente a la páginade códigos del proceso.

4

UTILIZACION DE LAS FUNCIONES INCORPORADAS

i

Page 83: Módulo_4_El lenguaje VB

AscW, devuelve el código numérico del carácter pasado o el primero de la cadena, de la página de códigosUnicode.

Chr, función inversa de Asc, devuelve el carácter correspondiente al código pasado, de la página de códigosdel proceso.

Funciones

ChrW, función inversa de la AscW, devuelve el carácter correspondiente al código pasado, de la página decódigos Unicode.

CType, convierte una expresión a un tipo de datos, objeto, clase,… en general a cualquier cosa que se puedaponer en una cláusula As, con la ventaja de que se compila junto con el código, por lo que su rendimientoes superior a las equivalencias de las clases de la librería básica del entorno.

Format, da formato a una expresión según el nombre de formato que se le pase o la cadena deespecificaciones de formato de usuario.

Hex, devuelve el valor hexadecimal de un número pasado, en una cadena.

5

UTILIZACION DE LAS FUNCIONES INCORPORADAS

i

Page 84: Módulo_4_El lenguaje VB

Oct, devuelve el valor octal de un número pasado, en una cadena.

Val, devuelve el dato numérico pasado en formato cadena en el formato numérico adecuado al valor pasado.Siempre se ha de pasar como separador decimal el punto anglosajón, ya que no reconoce la coma.

Str, devuelve el número pasado en formato cadena (String)

6

UTILIZACION DE LAS FUNCIONES INCORPORADAS

i

Page 85: Módulo_4_El lenguaje VB

Funciones matemáticas

Las funciones matemáticas pertenecen a la librería básica de clases del entorno (BCL) y están implementadasen el NameSpace System.Math.

Además de las aquí mostradas, System.Math dispone de unas cuantas funciones matemáticas avanzadas.

7

UTILIZACION DE LAS FUNCIONES INCORPORADAS

i

Page 86: Módulo_4_El lenguaje VB

Sugerencias

Todas estas funciones tienen la validación para que el valor pasado esté dentro del rango de valores válidospara el tipo de dato esperado, aunque hay varias que tienen sobrecarga y pueden aceptar un amplio surtidode tipos de datos.

Al ser todas del NameSpace System.Math, es conveniente agregar el Imports al mismo al inicio del módulo,para evitar tener que codificar los nombres calificados completos en cada uso de las funciones.

La diferencia entre Fix e Int está en la forma de redondear los negativos, Fix al inferior e Int al superior.

8

UTILIZACION DE LAS FUNCIONES INCORPORADAS

i

Page 87: Módulo_4_El lenguaje VB

Funciones de conversión de tipos

Las funciones de conversión de tipos, estan optimizadas para la conversión entre tipos de datos. Normalmentedarán mejor rendimiento que las equivalentes que puedas encontrar en las clases de la librería básica delentorno, por lo que es recomendable que utilices estas en lugar de las otras.

Síntesis

Las funciones incorporadas son las que vienen implementadas con el lenguaje y se apoyan en la BCL.Se pueden dividir en tres grandes grupos, atendiendo a su función principal:

- Funciones de conversión- Funciones matemáticas- Funciones de conversión de tipos

9

UTILIZACION DE LAS FUNCIONES INCORPORADAS

i

Page 88: Módulo_4_El lenguaje VB

2. Resumen

Has llegado al final de esta lección de formación que denominamos “Utilización de las funcionesincorporadas”.

En esta lección hemos estudiado los siguientes contenidos:

10

UTILIZACION DE LAS FUNCIONES INCORPORADAS

i

Page 89: Módulo_4_El lenguaje VB

ARRAYS

© élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

Page 90: Módulo_4_El lenguaje VB

ÍNDICE

ARRAYS

1. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

2. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9

Page 91: Módulo_4_El lenguaje VB

1. Variables

Introducción

Los Arrays, también son conocidos como matrices, series, tablas, vectores y algún otro término más,dependiendo de la formación específica de la persona que las utiliza.

Son colecciones de elementos, del mismo tipo, a los cuales se accede por índice.

Pueden tener una o más dimensiones, lo cual se denomina, multidimensional y también puede contener otrou otros Arrays, denominado Array escalonado o Array de Arrays.

3

ARRAYS

i

Page 92: Módulo_4_El lenguaje VB

Comienzo del índice de elementos

El índice de elementos comienza siempre por 0, y el número total de elementos es el de la declaración + 1.

Ejemplo práctico

En la página Web de una empresa comercial, un cliente va seleccionando productos, y para cadauno de ellos, el número de unidades. Para ir guardando el “carrito de la compra” se podríanutilizar un par de Arrays, uno para los identificadores de producto y otro para las unidades decada uno adquiridas de cada uno de ellos. Evidentemente, utilizando el mismo índice en ambosArrays. Al finalizar la compra, se podría presentar el resumen del “carrito” mediante unainstrucción For…Each, que ya hemos visto en un módulo anterior o quizás, obteniendo el númerototal de elementos mediante Array.Lenght(), con una instrucción For…Next, también vistaanteriormente, en cualquiera de los casos, en cada iteración, disponiendo del número de índice,se puede presentar el dato del elemento correspondiente en ambos Arrays para que el clienteconfirme toda la compra.

Para acceder a un elemento concreto de un Array se utiliza el índice, para ello se codifica el nombre del Arrayseguido del índice del elemento entre paréntesis, recordando siempre que el primer elemento tiene índice0, por ejemplo nombreArray(índice).

Declaración de Arrays

La declaración de los Arrays es similar a la de las variables mediante la instrucción Dim, con la salvedad de quese ha de añadir, al menos, un par de paréntesis tras el nombre del Array, precisamente para indicar que es unArray, dentro de los cuales se puede indicar el número de elementos que habrá de tener el Array menos 1.

4

ARRAYS

i

Page 93: Módulo_4_El lenguaje VB

Si el Array es multidimensional, se indicará mediante comas separando el número de elementos de cadadimensión, siempre dentro del par de paréntesis único.

Array escalonado

En cambio, si se trata de un Array escalonado, deberemos de teclear un par de paréntesis para indicar elnúmero de elementos de cada uno de los Arrays.

Una de las particularidades de los Arrays, es que en la declaración no es obligatorio crearlos, se puedensimplemente declarar al inicio del módulo, incluso sin dimensiones, y crearlos realmente con sus dimensionesconcretas en otro punto del código.

5

ARRAYS

i

Page 94: Módulo_4_El lenguaje VB

Ejemplos

En la propia declaración o más adelante, como acabamos de ver, se habrá de crear el Array, antes de poderutilizarlo. Para ello se deberá utilizar la instrucción New, por ser un objeto.

Redimensión

Otra opción, muy interesante, de los Arrays, es la posibilidad de redimensionarlos, es decir, cambiar eltamaño de un Array dinámicamente, mediante la instrucción ReDim.

Es conveniente el uso de Preserve si el Array ya tiene valores y se desea conservarlos en la nueva versión.

6

ARRAYS

i

Page 95: Módulo_4_El lenguaje VB

Asignación de valores

Una vez declarado y creado el Array, es posible que aún este completamente vacía, por lo que se hacenecesario algún mecanismo para asignar valores a los elementos individuales, de la misma forma que pararecuperarlos. Para ello hemos de referirnos al nombre del Array, seguido por sus correspondientes paréntesis,y dentro de cada uno de ellos el índice del elemento al que queremos acceder.

Como puedes apreciar, la técnica de recorrido más aconsejable es la del For…Next, ya que siempre es fácilconocer la dimensión de un Array, con lo que tenemos un bucle por índice muy sencillo.

Para recuperar la información de un elemento la técnica es exactamente la misma que la utilizada paraasignarles valor en el ejemplo anterior.

7

ARRAYS

i

Page 96: Módulo_4_El lenguaje VB

Síntesis

Los Arrays, matrices, vectores, series o tablas son las colecciones de elementos, del mismo tipo de dato, quese pueden recorrer mediante índice y que permiten manipularlas mediante una única variable.

Las hay unidimensionales, multidimensionales y escalonadas.

Se pueden dimensionar, crear e inicializar en la declaración o en cualquier otro punto del código, según lasnecesidades.

8

ARRAYS

i

Page 97: Módulo_4_El lenguaje VB

2. Resumen

Has llegado al final de esta lección de formación que denominamos “Arrays”.

En esta lección hemos estudiado los siguientes contenidos:

9

ARRAYS

i

Page 98: Módulo_4_El lenguaje VB

CLASES Y OBJETOS

© élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

Page 99: Módulo_4_El lenguaje VB

ÍNDICE

CLASES Y OBJETOS

1. Utilización de clases externas. Espacios de nombres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

2. Creación de objetos a partir de clases.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10

3. Implementación de métodos y propiedades de una clase.. . . . . . . . . . . . . . . . . . . . . . . . . . .12

4. Métodos compartidos.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16

5. Modificadores de acceso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18

6. Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20

Page 100: Módulo_4_El lenguaje VB

1. Utilización de clases externas. Espacios de nombres.

A lo largo de éste conocerás cómo utilizar clases externas. Espacios de nombres.

Introducción

Sería interesante introducirte algunos conceptos que te podrán ser útiles para continuar con el temario.

- Clase- Objeto

Clase

Es una estructura de código especial que permite definir la composición, métodos y propiedades que tendránlos futuros objetos creados como instancias de la misma.

Un ejemplo, quizás más clásico, pero muy visual.

3

CLASES Y OBJETOS

i

Page 101: Módulo_4_El lenguaje VB

En el entorno de diseño de formularios, disponemos de una barra lateral de herramientas en las que hay unmontón de controles disponibles para su uso, son como las clases, en cuanto se inserta un control en elformulario se obtiene una instancia concreta del control, un objeto.

Objeto

Un objeto es toda instancia de una clase, más, muy importante, sus datos, tratado como una unidad connombre dentro del código y del sistema.

Prácticamente todo lo que esta disponible en Visual Basic son objetos, desde los formularios, los controles,la clases básicas, etc... más todos aquellos que crearemos.

Una vez creado un objeto, y hasta que se destruya o finalice el programa, sigue existiendo y manteniendosu estado, propiedades y datos, siendo independientes unos de otros, aún proviniendo de la misma clase.

En las clases no sólo se define la estructura de los datos, mediante sus métodos, procedimientos ypropiedades, se pueden agregar muchas funcionalidades a cada objeto, lo que permite definir una clasepara alguna herramienta adicional a los programas, por ejemplo un diccionario traductor, y volver a utilizarlodesde todas las aplicaciones en las que se necesite.

Utilización

La librearía básica de clases o BCL integrada en el entorno .NET Framework,y que es uno de sus pilares fundamentales, está compuesta por una ingentecantidad de clases desarrolladas por Microsoft para facilitarnos la vida ypermitirnos el acceso a todas las funcionalidades del sistema.

4

CLASES Y OBJETOS

i

Page 102: Módulo_4_El lenguaje VB

Tener en línea todas las clases no sería muy práctico, por lo tanto, se creó el concepto de los espacios denombre o NameSpace, los cuales son una forma de organización en árbol de las clases suministradas,clasificadas por su funcionalidad.

NameSpace

Se pueden utilizar las clases de un determinado NameSpace directamente en el código, mediante el nombrecalificado completo o efectuando una importación del NameSpace en nuestro código, mediante la instrucciónImports, pasando a poder referenciar directamente las clases del mismo en el programa a partir de esemomento.

También habíamos comentado ya que disponemos de la posibilidad de crear los propios espacios de nombresy de asignar el espacio de nombres al que vaya a quedar asociado un determinado código creado, para ellodeberemos utilizar la instrucción NameSpace. Esto permite generar un espacio de nombres para un proyectocompleto.

Lista de NameSpace

Visual Studio genera automáticamente un espacio de nombres, con el mismo nombre que la solución, paracada nueva solución que se genere, por lo que, salvo el caso descrito anteriormente, no debemos depreocuparnos de la creación de los espacios de nombre.

Como referencia, se adjunta la lista que publica Microsoft en su página Web MSDN sobre los espacios denombres definidos en la BCL. Te podrás hacer una idea de la cantidad de código que ya está generado y delque se dispone libremente para desarrollar los proyectos.

5

CLASES Y OBJETOS

i

Page 103: Módulo_4_El lenguaje VB

LISTA

Microsoft.Aspnet.SnapinMicrosoft.Build.BuildEngineMicrosoft.Build.FrameworkMicrosoft.Build.TasksMicrosoft.Build.Tasks.Deployment.BootstrapperMicrosoft.Build.Tasks.Deployment.ManifestUtilitiesMicrosoft.Build.UtilitiesMicrosoft.CSharpMicrosoft.JScriptMicrosoft.SqlServer.ServerMicrosoft.VisualBasicMicrosoft.VisualBasic.ApplicationServicesMicrosoft.VisualBasic.CompilerServicesMicrosoft.VisualBasic.DevicesMicrosoft.VisualBasic.FileIOMicrosoft.VisualBasic.LoggingMicrosoft.VisualBasic.MyServicesMicrosoft.VisualBasic.MyServices.InternalMicrosoft.VisualBasic.VsaMicrosoft.VisualCMicrosoft.VsaMicrosoft.Vsa.Vb.CodeDOMMicrosoft.Win32Microsoft.Win32.SafeHandlesMicrosoft.WindowsCE.FormsMicrosoft.WindowsMobile.DirectXMicrosoft.WindowsMobile.DirectX.Direct3D

Microsoft_VsaVbSystemSystem.CodeDomSystem.CodeDom.CompilerSystem.CollectionsSystem.Collections.GenericSystem.Collections.ObjectModelSystem.Collections.SpecializedSystem.ComponentModelSystem.ComponentModel.DesignSystem.ComponentModel.Design.DataSystem.ComponentModel.Design.SerializationSystem.ConfigurationSystem.Configuration.AssembliesSystem.Configuration.InstallSystem.Configuration.Provider System.DataSystem.Data.CommonSystem.Data.DesignSystem.Data.LinqSystem.Data.Linq.MappingSystem.Data.OdbcSystem.Data.OleDbSystem.Data.OracleClientSystem.Data.SqlSystem.Data.SqlClientSystem.Data.SqlServerCESystem.Data.SqlTypesSystem.Diagnostics

6

CLASES Y OBJETOS

i

Page 104: Módulo_4_El lenguaje VB

System.Diagnostics.CodeAnalysis System.Diagnostics.DesignSystem.Diagnostics.SymbolStoreSystem.DirectoryServicesSystem.DirectoryServices.ActiveDirectory System.DirectoryServices.Protocols System.DrawingSystem.Drawing.Design System.Drawing.Drawing2D System.Drawing.Imaging System.Drawing.Printing System.Drawing.Text System.EnterpriseServices System.EnterpriseServices.CompensatingResourceManager System.EnterpriseServices.Internal System.Globalization System.IO System.IO.Compression System.IO.IsolatedStorage System.IO.Ports System.Linq System.Linq.Expressions System.Management System.Management.Instrumentation System.Messaging System.Messaging.Design System.Net System.Net.Cache System.Net.Configuration

System.Net.Mail System.Net.Mime System.Net.NetworkInformation System.Net.Sockets System.Reflection System.Reflection.Emit System.Resources System.Resources.Tools System.Runtime System.Runtime.ConstrainedExecution System.Runtime.Hosting System.Runtime.CompilerServices System.Runtime.InteropServices System.Runtime.InteropServices.ComTypes System.Runtime.InteropServices.CustomMarshalers System.Runtime.InteropServices.Expando System.Runtime.Remoting System.Runtime.Remoting.Activation System.Runtime.Remoting.Channels System.Runtime.Remoting.Channels.Http System.Runtime.Remoting.Channels.Ipc System.Runtime.Remoting.Channels.Tcp System.Runtime.Remoting.Contexts System.Runtime.Remoting.Lifetime System.Runtime.Remoting.Messaging System.Runtime.Remoting.Metadata System.Runtime.Remoting.Metadata.W3cXsd2001 System.Runtime.Remoting.MetadataServices System.Runtime.Remoting.Proxies

7

CLASES Y OBJETOS

i

Page 105: Módulo_4_El lenguaje VB

System.Runtime.Remoting.Services System.Runtime.Serialization System.Runtime.Serialization.Formatters System.Runtime.Serialization.Formatters.Binary System.Runtime.Serialization.Formatters.Soap System.Security System.Security.AccessControl System.Security.Cryptography System.Security.Cryptography.Pkcs System.Security.Cryptography.X509Certificates System.Security.Cryptography.Xml System.Security.Permissions System.Security.Policy System.Security.Principal System.ServiceProcess System.Text System.Text.RegularExpressions System.Threading System.Timers System.Transactions System.Transactions.Configuration System.Web System.Web.Caching System.Web.Compilation System.Web.Configuration System.Web.Handlers System.Web.Hosting System.Web.Mail System.Web.Management

System.Web.Mobile System.Web.Profile System.Web.RegularExpressions System.Web.Security System.Web.Services System.Web.Services.Configuration System.Web.Services.Description System.Web.Services.Discovery System.Web.Services.Protocols System.Web.SessionState System.Web.UI System.Web.UI.Adapters System.Web.UI.Design System.Web.UI.Design.MobileControls System.Web.UI.Design.MobileControls.Converters System.Web.UI.Design.WebControls System.Web.UI.Design.WebControls.WebParts System.Web.UI.HtmlControls System.Web.UI.MobileControls System.Web.UI.MobileControls.Adapters System.Web.UI.MobileControls.Adapters.XhtmlAdapters System.Web.UI.WebControls System.Web.UI.WebControls.Adapters System.Web.UI.WebControls.WebParts System.Web.Util System.Windows.Forms System.Windows.Forms.ComponentModel.Com2InteropSystem.Windows.Forms.Design System.Windows.Forms.Design.Behavior

8

CLASES Y OBJETOS

i

Page 106: Módulo_4_El lenguaje VB

System.Windows.Forms.Layout System.Windows.Forms.PropertyGridInternal System.Xml System.Xml.Schema

System.Xml.Serialization System.Xml.XPath System.Xml.Xsl System.Xml.Xsl.Runtime

9

CLASES Y OBJETOS

i

Page 107: Módulo_4_El lenguaje VB

2. Utilización de clases externas. Espacios de nombres.

A lo largo de éste conocerás cómo crear objetos a partir de clases.

Creación

Como ya vimos, un objeto se crea a partir de una clase ya definida, como una instancia de la misma.Lógicamente, para poder utilizar cualquiera de los miembros de una clase, se ha de generar primero unobjeto a partir de ella.

Para ello es necesario una variable en la que colocar el objeto, declararla con la instrucción Dim, asociandoa la variable creada el tipo de dato, en este caso el nombre del tipo de objeto, es decir, el nombre de la clase.

El nuevo objeto se puede crear, asignándoselo a la variable, en la propia declaración o realizarlo más tarde.

10

CLASES Y OBJETOS

i

Page 108: Módulo_4_El lenguaje VB

Tipo de dato Object

Existe la posibilidad, si no conoces la clase que tendrá que instanciar la variable en el momento deldesarrollo, de crear la variable como un tipo de dato Object, ya que como recordarás absolutamente todoen .NET Framework hereda de Object, por lo tanto una variable declarada con este tipo de dato puedealbergar cualquier clase predefinida, y más tarde se le asignará la instancia de clase concreta, cuando seconozca cuál es la que le ha de asignar.

No es aconsejable abusar de esta utilidad, aunque algunas veces es realmente útil, ya que su rendimientoes mucho menor que el de las variables asignadas a su tipo de dato específico.

Instancias de clase

Las instancias de clase son, además de la evidente orientación a objetos, uno de los paradigmas de laorientación a componentes, es decir, cuando ya se ha desarrollado un módulo de código que desarrolla a laperfección una determinada función ¿por qué se habría de repetir todo este esfuerzo la siguiente vez que senecesite resolver esa funcionalidad? Es mucho más sencillo, la primera vez, empaquetar el código en unaclase, con sus propiedades, métodos y funciones, y así, la próxima vez que se necesite resolver ese problema,sólo deberemos instanciar la clase.

Definir una clase

Para definir una clase es necesario utilizar la instrucción Class…End Class, y colocar dentro del bloque, elcódigo necesario para dotarla de la funcionalidad requerida.

11

CLASES Y OBJETOS

i

Page 109: Módulo_4_El lenguaje VB

3. Implementación de métodos y propiedades de una clase.

A lo largo de éste conocerás la implementación de métodos y propiedades de una clase.

Métodos

Las propiedades contienen información o datos de la clase, mientras que los métodos son acciones que realizala clase con esos datos.

Veamos un pequeño ejemplo para que te hagas una idea de lo que representa esto de crear y utilizar unaclase, implementar sus métodos y propiedades.

Ejemplo

Vamos a crear una clase en la que podamos almacenar un nombre y unos apellidos, directamenteal instanciarla o más adelante y que disponga de un método que permita devolver lapresentación habitual de apellidos y nombre separados por una coma.

Para ello necesitaremos que la clase disponga de unas propiedades privadas en las que almacenarel nombre y los apellidos, con unos métodos para almacenar y recuperar sus valores.

También será necesario un constructor, sin y con parámetros, para permitir la inicialización dela instancia según los datos disponibles en cada momento.

Y, por último, habrá que crear ese método que nos devuelva la cadena con los apellidos y elnombre.

12

CLASES Y OBJETOS

i

Page 110: Módulo_4_El lenguaje VB

‘ Llamaremos a la clase tuNombrePublic Class tuNombre‘ Aquí almacenaremos el nombre y los apellidos suministradosPrivate _nombre As StringPrivate _apellido1 As StringPrivate _apellido2 As String‘ Aquí vienen las declaraciones de las propiedades para acceder a los datosPublic Property nombre() As String

Get' Devuelve el nombre almacenadoReturn _nombre

End GetSet(ByVal Value As String)

' Almacena el valor pasado_nombre = Value

End SetEnd PropertyPublic Property apellido1() As String

Get' Devuelve el nombre almacenadoReturn _apellido1

End GetSet(ByVal Value As String)

' Almacena el valor pasado_apellido1 = Value

End SetEnd Property

Public Property apellido2() As String

13

CLASES Y OBJETOS

i

Page 111: Módulo_4_El lenguaje VB

Get' Devuelve el nombre almacenadoReturn _apellido2

End GetSet(ByVal Value As String)

' Almacena el valor pasado_apellido2 = Value

End SetEnd Property‘ Definición de los constructoresPublic Sub New()

' Al no tener valores, se inicializn a blancosMe.nombre = “”

Me.apellido1 = “”Me.apellido2 = “”

End Sub‘ Public Sub New(ByVal Nombre As String, ByVal Apellido1 As String, ByVal Apellido2 As String)

' Inicializa con los valores pasadosMe.nombre = Nombre

Me.apellido1 = Apellido1Me.apellido2 = Apellido2

End Sub‘ Definimos el método comentado para devolver apellidos y nombre

Public Function cadena ( )A s StringReturn Me.apellido1 & “ “ & Me.apellido2 & “, “ & Me.nombreEnd FunctionEnd Class

14

CLASES Y OBJETOS

i

Page 112: Módulo_4_El lenguaje VB

Ejemplo

No es demasiado complicado. Ahora para utilizarla deberemos crear un objeto de la clasetuNombre, asignándole los valores en la creación o posteriormente, por ejemplo tras pedir laintroducción del dato por pantalla, y llamar a su método cadena para obtener la cadenacompleta y presentarla en un mensaje en pantalla, por ejemplo, o utilizarla en cualquier ámbito.

15

CLASES Y OBJETOS

i

Page 113: Módulo_4_El lenguaje VB

4. Métodos compartidos

A lo largo de éste conocerás los métodos compartidos.

Definición

Los métodos son, los procedimientos o rutinas que se codifican dentro de una clase y realizan operacioneso acciones con la información conservada en sus propiedades, en líneas generales.

Se definen, como has visto en el ejemplo, mediante el procedimiento Sub o Function.

Para poder utilizar un método de una clase, es evidente que primero has de crear un objeto como instanciade esa clase y asignarle valor a sus propiedades.

Ejemplo

Para obtener la fecha del día, utilizaremos el método Microsoft.VisualBasic.Now, el cuálpermitirá asignar a una variable de tipo Date la fecha y hora actual del sistema. Adicionalmente,no necesitaremos el nombre calificado completo, ya que si estamos desarrollando en VisualBasic, el NameSpace Microsoft.VisualBasic ya está automáticamente importado.

16

CLASES Y OBJETOS

i

Page 114: Módulo_4_El lenguaje VB

Métodos compartidos

Existe un tipo especial de métodos, los compartidos, que no requieren que se declare una instancia de la clasepara poder utilizarlos.

Hay muchos ejemplos de métodos compartidos en las clases de la BCL, que irás descubriendo con el tiempoy el uso.

Para crearnos nuestros propios métodos compartidos, deberemos de utilizar el calificador Shared en ladefinición del método.

Hay algunas limitaciones en cuanto al ámbito en el que se puede efectuar definiciones de métodoscompartidos, pero son muy específicas.

17

CLASES Y OBJETOS

i

Page 115: Módulo_4_El lenguaje VB

5. Modificaciones de acceso

A lo largo de éste conocerás los modificadores de acceso.

Palabras clave

Los modificadores de acceso son aquellas palabras clave que se asocian a las declaraciones para indicar hastadonde se extenderá su visibilidad, una vez en ejecución.

Básicamente, se trata de indicar, al declarar cualquier elemento, clase, función, propiedad, procedimiento,etc…, quién tendrá acceso al mismo, es decir, cuál será el nivel de protección frente a accesos no deseadosque tendrá el objeto que se cree a partir de esa definición.

Acceso Public

Hay cosas que se crean, precisamente, para que estén disponibles para todo aquél que tenga acceso almódulo en el que se esté ejecutando, con lo que se les pondrá acceso Public.

Esta es básicamente una restricción sobre qué código, y desde dónde podrá tener acceso a las propiedadesy métodos definidos en el elemento.

Los accesos otorgados, por los modificadores de acceso son los siguientes:

18

CLASES Y OBJETOS

i

Page 116: Módulo_4_El lenguaje VB

Síntesis

Una clase es una estructura de código especial que permite definir la composición, métodos y propiedadesque tendrán los futuros objetos creados como instancias de la misma.

Un objeto es toda instancia de una clase más sus datos, tratado como una unidad con nombre dentro delcódigo y del sistema.

19

CLASES Y OBJETOS

i

Page 117: Módulo_4_El lenguaje VB

6. Resumen

Has llegado al final de esta lección de formación que denominamos “Clases y objetos”

En esta lección hemos estudiado los siguientes contenidos:

20

CLASES Y OBJETOS

i

Page 118: Módulo_4_El lenguaje VB

TIPOS ESPECIALES DE

VISUAL BASIC

© élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

Page 119: Módulo_4_El lenguaje VB

ÍNDICE

TIPOS ESPECIALES DE VISUAL BASIC

1. Tipos Implícitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

2. Tipos Anónimos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5

3. Tipos “Nullables” .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7

4. Tipos Genéricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9

5. Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

Page 120: Módulo_4_El lenguaje VB

1. Tipos Implícitos de Visual Basic

Uso

Como sabes, y ya hemos comentado ampliamente, en Visual Basic es necesario declarar una variable, asícomo cualquier otro elemento de código, antes de utilizarlo.

Pero, como siempre, en Visual Basic, por aquello de la compatibilidad con versiones anteriores, disponemosde Option Explicit, que por defecto viene a On, pero que puedes llegar a poner a Off.

Precaución

Todas las variables declaradas de forma implícita, son creadas de tipo Objecty el rendimiento se ve enormemente afectado, ya que para cualquieroperación que haya de realizar el programa, ha de realizar previamente laconversión al tipo de dato apropiado, efectuar la operación y volver aconvertir a Object (Boxing y Unboxing). Además, las variables de tipo Objectocupan bastante más lugar en memoria que cualquier otro tipo.

3

CLASES Y OBJETOS

i

Page 121: Módulo_4_El lenguaje VB

Otro de los problemas de esta técnica es que al “adivinar” el sistema, mediante el contenido, el tipo de datoreal de la variable, puede hacer asignaciones iniciales que no cuadren con todos los valores que vaya a tenerla variable, con lo que se puede llegar a perder información.

Option Explicit On

Option Explicit On asegura que, si nos equivocamos al teclear el nombre de la variable, detecte el problemaen ese momento y lo indica el IDE. Si esta desactivado, no detecta nada y asume que se trata de una nuevavariable, o peor aún, si ya existe otra variable con ese nombre, pasa a utilizar dicha variable, pudiendo llegara provocar unos resultados absurdos en la ejecución de tu programa.

Se desaconseja el uso de esta utilidad, dado que su impacto en el rendimiento es realmente sensible.

4

CLASES Y OBJETOS

i

Page 122: Módulo_4_El lenguaje VB

2. Tipos Anónimos de Visual Basic

Definición

Los tipos anónimos son una novedad en este mundo del desarrollo, implementando una necesidad para datostemporales no definidos.

Concretamente, un tipo anónimo es aquél para el que, en la declaración de la variable, no se indica tipo dedato alguno, con lo que hereda directamente de Object, sin ser de tipo Object, y al que se le asignan valoresa propiedades, en la propia declaración, pudiendo ser claves.

Una de sus posibilidades puede ser solucionar las consultas temporales de datos:

5

CLASES Y OBJETOS

i

Page 123: Módulo_4_El lenguaje VB

Estructura

Para las consultas generadas interactivamente en tiempo de ejecución sería prácticamente imposible saberde antemano el tipo de datos a recuperar, por lo que los tipos anónimos viene bien, ya que el compilador seencargará de generar la estructura necesaria para contener la información recuperada, en función de sustipos de datos y poder presentarla.

KeyLas claves en la declaración (Key), sirven para las comparaciones entre variables anónimas, es decir, cuandose efectúa una comparación entre dos de estas variables, mediante su método heredado.

EqualsEquals, al margen de validar que tengan el mismo número y tipo de atributos, sólo comparará el valor deaquellos marcados como claves.

Como contrapartida, los atributos definidos como claves no podrán modificarse, quedando constantes a partirde la declaración.

6

CLASES Y OBJETOS

i

Page 124: Módulo_4_El lenguaje VB

3. Tipos “Nullables” de Visual Basic

Definición

Un tipo “nullable” es aquél que puede recibir la asignación de un valor Null, es decir no tiene ningún valor,pero no es que no esté inicializado.

Ejemplo

Imagína cualquier tipo de control del tipo Si/No, ¿cómo se le dice que aún no se sabe si es Sí oNo? La solución, el valor por defecto Null, no es ni Sí ni No, pero no está vacío.

Declaración de la variable

Para declarar una variable como “nullable” hay varias opciones, totalmente equivalentes:

7

CLASES Y OBJETOS

i

Page 125: Módulo_4_El lenguaje VB

Aplicación

Por otro lado, esto no sólo se aplica a los campos de tipo lógico, se puede aplicar a variables, propiedades,Arrays, procedimientos, funciones, etc…, siempre que sus tipos de datos acepten Null. Han de ser tipos dedatos derivados de tipos por valor y no tipos por referencia.

Las propiedades HasValue y Value de los tipos de dato nullables te pueden llegar a ser útiles cuando trabajescon ellas. El valor por defecto de HasValue es False, lógicamente, y Value es Null, aunque el tipo de datooriginal tenga un valor inicial por defecto distinto.

Diferencias

Con las variables declaradas de esta forma se trabaja casi como con cualquier otra. Las diferencias básicasson:

Respecto del NothingQue dispones de la posibilidad de asignarle Nothing para que vuelva a su estado de Null.

Respecto del HasValueQue has de verificar su propiedad HasValue antes de acceder al valor de la misma, ya que si está a Nullrecibirías un error en ejecución.

Respecto del NullCualquier operación efectuada con un tipo de dato que acepta Null hace que el resultado herede lapropiedad.

8

CLASES Y OBJETOS

i

Page 126: Módulo_4_El lenguaje VB

4. Tipos Genéricos de Visual Basic

Explicación

Los tipos genéricos son una especie de truco utilizado cuando no se sabe cuál será el tipo real utilizado enejecución, pero, por supuesto, no se quiere asignar Object ni desarrollar una versión de código para cada tipode dato.

Declaramos una clase, procedimiento o función especificando un tipo de dato genérico y operamos dentrodel mismo con el indicador de tipo de dato genérico. En aquellas partes del código en las que vayamos autilizar la clase, es donde indicaremos el tipo de dato con el que vaya a trabajar esa ocurrencia concreta dela clase.

Compilación

Evidentemente, hay que tenerlo en cuenta en el diseño de la clase, ya que no todos los tipos de datossoportan todas las operaciones y cuando compilemos, el tipo de dato concreto de la instancia sustituirá altipo genérico de la clase y es donde se pueden producir problemas si no hemos desarrollado un control deltipo que entra.

9

CLASES Y OBJETOS

i

Page 127: Módulo_4_El lenguaje VB

System Collections Generic

En System.Collections.Generic podemos encontrar varias clases genéricas ya desarrolladas y listas para suuso.

Los genéricos presentan las siguientes ventajas:

Seguridad de tipoya que fuerzan la comprobación de tipo en tiempo de compilación.

Rendimientoyya que no tienen que aplicar la conversión boxing ni aplicar la conversión unboxing a los datos que tendríassi utilizarás la solución Object.

Consolidación del códigoSólo ha de definirse una vez, las versiones específicas de tipo se generan en compilación de formaautomática.

Reutilización del códigoYa que no depende de un tipo de datos determinado.

Síntesis

Acabas de conocer un conjunto de tipos especiales dentro de Visual Basic que te pueden ayudar bastante,en cuanto alcances un cierto nivel en el desarrollo de programas.

10

CLASES Y OBJETOS

i

Page 128: Módulo_4_El lenguaje VB

5. Resumen

Has llegado al final de esta lección de formación que denominamos “Tipos especiales de Visual Basic”

En esta lección hemos estudiado los siguientes contenidos:

11

CLASES Y OBJETOS

i

Page 129: Módulo_4_El lenguaje VB

CONTROL DE EXCEPCIONES.BLOQUES TRY,

CATCH, FINALLY

© élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

Page 130: Módulo_4_El lenguaje VB

ÍNDICE

CONTROL DE EXCEPCIONES.BLOQUES TRY, CATCH, FINALLY

1. Control de excepciones.Bloques try, catch, finally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

2. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10

Page 131: Módulo_4_El lenguaje VB

1. CONTROL DE EXCEPCIONES. BLOQUES TRY, CATCH, FINALLY

Control de errores

Visual Basic dispone de dos formas para el control de errores:

- La tradicional y no estructurada, que utiliza la sentencia On Error, que, como ya hemos comentado,no es aconsejable utilizar.

- La nueva y estructurada mediante los bloques Try..Catch…Finally, que ahora pasaremos a detallar.

EL control de errores permite que, en tiempo de diseño, tengamos en cuenta lo que puede fallar u ocurriren el programa que pueda llegar a afectar al usuario y actuar en consecuencia para evitar la situación, queno aparezca el mensaje de error del sistema al usuario, ya que siempre queda mal.

Propagación

De cara a facilitarnos la tarea, se ha implementado el control de excepciones de forma que se propaguenhacia arriba en la pila de llamadas, es decir, si en un determinado módulo de código se produce una excepciónu error y no se ha introducido código para controlarla, se pasa la excepción al módulo anterior en la pila de

3

CONTROL DE EXCEPCIONES.BLOQUES TRY, CATCH, FINALLY

i

Page 132: Módulo_4_El lenguaje VB

llamadas, que es la lista de programas que se van llamando sucesivamente desde que se entro a alaaplicación.

Esta propagación hacia arriba se repite hasta llegar al punto de entrada de la aplicación, mientras no seencuentre una gestión de excepciones implementada. Si ahí tampoco se controla es cuando se presenta elmensaje de error al usuario.

Evidentemente, sea cual sea la excepción, en ese momento poco se puede hacer ya para solucionar el error,más que ser consciente de que se ha producido.

Sugerencia

De lo anterior se puede deducir fácilmente que es altamente aconsejableimplementar el control de excepciones en todos los módulos del código, nosólo es una buena política, pero el implementar el control en el sitioadecuado permite poder llegar a solucionar el problema y continuar con laejecución con el tema solventado, en lugar de encontrar toda una ristra deinformación mal actualizada, coja y sin saber muy bien hasta donde hallegado el destrozo.

Control estructurado de excepciones

Mediante la instrucción Try..Catch…Finally podemos aislar bloques de código para controlar excepcionesconcretas y específica. Está claro que no podemos controlar en todo momento todo lo que pueda llegar aocurrir, y nadie va a pedir que en cada rutina se contemple la posibilidad de que el ordenador esté ardiendo,pero está claro que en un bloque de código de acceso a datos, es muy conveniente controlar si hay conexióncon la base de datos, si tenemos autorización suficiente para realizar la operación que queremos ejecutar,etc...

4

CONTROL DE EXCEPCIONES.BLOQUES TRY, CATCH, FINALLY

i

Page 133: Módulo_4_El lenguaje VB

A esto se le llama, habitualmente, proteger el código, ya que se aísla del resto y así un error que se produzcaen el bloque no afectará, si se implementa correctamente el control de errores, al resto del módulo.

Estructura

Fíjate en la siguiente estructura:

5

CONTROL DE EXCEPCIONES.BLOQUES TRY, CATCH, FINALLY

i

Page 134: Módulo_4_El lenguaje VB

Detalles

En funcionamiento se comportará de la siguiente forma:

- Dentro del bloque Try es donde colocaremos el código que queramos controlar.

- Si se produce una excepción dentro de dicho código, el sistema verificará los filtros de todos losbloques Catch asociados hasta encontrar uno que cubra la excepción producida.

- Si lo encuentra pasará a ejecutar el código del bloque Catch en su totalidad y después ejecutará elcódigo del bloque Finally en su totalidad, pasando a la instrucción siguiente al End Try para continuarcon el proceso, salvo que codifiques un final abrupto dentro del código del bloque Catch o del Finally.

- Si no lo encuentra, pasará a buscar un bloque Catch, en un nivel superior de la pila de llamadas, quecubra la excepción producida. Si no lo encuentra, es cuando el sistema emitirá el errorcorrespondiente.

- En este caso, el bloque Finally se ejecutará antes de que se pierda el ámbito de ejecución en lasllamadas hacia arriba, ya que puede haber bloque controles de errores anidados dentro del mismomódulo.

- Si no se produce ninguna excepción dentro del bloque Try, se pasará directamente a ejecutar elcódigo del bloque Finally y a continuar el módulo tras el End Try.

La forma de filtrar las excepciones en los bloques Catch es la siguiente:

6

CONTROL DE EXCEPCIONES.BLOQUES TRY, CATCH, FINALLY

i

Page 135: Módulo_4_El lenguaje VB

O tal vez una combinación de ambas.

Filtro

Dentro de los nombres de excepciones hay una jerarquía en árbol que nos permitirá filtrar grupos de excepciones del mismo tipo en una única condición, o establecer una condición de filtro sobre el número de error que valide múltiples valores del mismo o incluso un rango de números. Evidentemente, al disponer de la opción de mezclarlas, se puede llegar a establecer condiciones muy

finas de selección de excepciones a tratar.

Excepción en salto dentro del código

Ya vimos, en las instrucciones de control de flujo, que se podían ejecutar saltos dentro del código. Aquí estáuna de las poquísimas excepciones, a esta regla.

7

CONTROL DE EXCEPCIONES.BLOQUES TRY, CATCH, FINALLY

i

Page 136: Módulo_4_El lenguaje VB

Desde un bloque Catch está permitido bifurcar hacia dentro del bloque Try correspondiente o directamenteal End Try, saltándote el Finally, pero a ningún otro sitio. Esto se hace para permitir que la resolución de lasexcepciones producidas pueda facilitar el reintento (al bloque Try) o que no se propaguen errores en losdatos (directo al End Try).

Ejemplo

A continuación veamos un ejemplo completo de utilización del control estructurado de errores en unprograma que escribe y luego lee un archivo de datos.

8

CONTROL DE EXCEPCIONES.BLOQUES TRY, CATCH, FINALLY

Page 137: Módulo_4_El lenguaje VB

Mensaje de error

Como puedes ver, el control de errores tampoco es que sea muy intrusivo, sólo unas pocas líneas de códigoa añadir y la situación, que podría dejar el archivo dañado, queda controlada, y el mensaje de error alusuario puede ser mucho más amigable que los suministrados por el sistema.

Síntesis

Hemos visto cómo la utilización de los bloques Try…Catch…Finally…End Try pueden evitar que los programasse rompan cuando menos te lo esperas y dándole al usuario un interfaz amigable y profesional.

9

CONTROL DE EXCEPCIONES.BLOQUES TRY, CATCH, FINALLY

i

Page 138: Módulo_4_El lenguaje VB

2. Resumen

Has llegado al final de esta lección de formación que denominamos “Control de Excepciones, Bloques Try,Catch, Finally ”

En esta lección hemos estudiado los siguientes contenidos:

10

CONTROL DE EXCEPCIONES.BLOQUES TRY, CATCH, FINALLY

i

Page 139: Módulo_4_El lenguaje VB

EL LENGUAJE VISUAL

BASIC .NET

© élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

Page 140: Módulo_4_El lenguaje VB

Fases del desarrollo de aplicaciones en VB.Net.

Las aplicaciones mas típicas en Visual Basic.Net siguen los siguientes pasos:

Exposición del problema a solucionar.

Análisis del problema y división en partes mas sencillas que posibilitaran después la detección de errores.

Diseño de la Interfaz de Usuario, esta es la cara del programa al usuario. Tendremos en cuenta el numero deventanas a mostrar al usuario y además el tipo y características de las mismas.

Controles. Que son los elementos interactivos de las ventanas. Botones, cajas de texto, etiquetas, etc.

Características de los controles o sus propiedades.

Acciones a desarrollar con esos controles, llamados EVENTOS. De hecho los desarrollos en VisualBasic estánorientados a eventos. Se interceptan los eventos para realizar las distintas tareas con las que solucionaremosel problema inicial.

Todas las ventanas deben de tener una apariencia similar, así como colores parecidos, letras, distribución delos elementos, etc.

El acceso a la interacción debe ser rápido e intuitivo de los controles mostrados.

Accesibilidad a la ayuda.

Elaboración de pruebas que nos permitan descubrir después errores en nuestro desarrollo, así como lacorrección de errores y verificación de que el problema planteado inicialmente se resuelve.

Mantenimiento y ampliación de la aplicación según las nuevas necesidades.

EL LENGUAJE VISUAL BASIC .NET

2

Page 141: Módulo_4_El lenguaje VB

Configurar el entorno para el desarrollo

Se deben mostrar las ventanas claves para el desarrollo de aplicaciones de manera que nos resulte lo mascómodo posible. Existen varias ventanas que nos lo posibilita y son:

CUADRO DE HERRAMIENTAS

En esta aparecen fichas distinguibles por un botón de separación. Se mostraran unos botones con iconoscaracterísticos, se trata de CONTROLES y son insertables en diferentes ventanas de las aplicaciones.

Para insertar estos botones podemos hacerlo mediante un doble click encima del control o pinchando unavez en el control y moviendo a la ventana del formulario y dándole el tamaño deseado arrastrando el botón,finalmente se suelta.

EL LENGUAJE VISUAL BASIC .NET

3

Page 142: Módulo_4_El lenguaje VB

Podemos crear o eliminar una ficha cuando queramos y en ellas podemos añadir mas controles situándonosen la ficha y pulsando botón derecho con lo que aparecerá un menú como este:

La ficha llamada anillo del portapapeles es la encargada de tener todo el código que se haya ido pasando alportapapeles mediante la acción cortar o copiar, se puede arrastra hacia el código para ir agregando.

EXPLORADOR DE SOLUCIONES

EL LENGUAJE VISUAL BASIC .NET

4

Page 143: Módulo_4_El lenguaje VB

Aquí se muestra jerárquicamente los elementos que componen los proyectos en forma de archivos.

VENTANA DE PROPIEDADES

En esta ventana se hacen las modificaciones en las propiedades de los objetos del proyecto.

VENTANA DE VISTA DE CLASES

En esta se muestra jerárquicamente todas las clases integradas en los proyectos, tanto propias deun proyecto como las encontradas en la Librería de Clases Base.

EL LENGUAJE VISUAL BASIC .NET

5

Page 144: Módulo_4_El lenguaje VB

VENTANA EXPLORADOR DE SERVIDORES

En esta ventana están varias características propias del sistema operativo, como servicios, colas de mensajesy bases de datos.

VENTANA DE RESULTADOS

En esta se mostraran los mensajes que se producen cuando se compilan las aplicaciones, apareciendomensajes de error o de aviso.

EL LENGUAJE VISUAL BASIC .NET

6

Page 145: Módulo_4_El lenguaje VB

VENTANA DE CODIGO

Esta ventana la iremos viendo constantemente y en ella será en la que teclearemos el código de nuestrosprogramas aunque Visual Basic añada inicialmente un código predefinido.

En la parte superior de esta ventana hay unos cuadros combinados. En el de la izquierda aparecen las clasesque son posibles codificar y en el de la derecha los métodos disponibles en la clase que hayamos elegido delcuadro de la izquierda. Cuando vayamos tecleando el código aparecerán mensajes sugiriéndonos diferentescosas referentes al miembro a utilizar de la clase que hayamos tecleado. Esto se llama INTELISENSE.

Estas ventanas se pueden ocultar o se pueden cerrar usando el menú ver del entorno de desarrollo teniendola posibilidad también de acoplarlas por sus bordes o haciendo que se oculten solas, para esto es necesariopulsar un pequeño botón que esta en la izquierda del botón de cerrar. También podremos situar las ventanasen la posición que queramos simplemente moviéndolas.

EL LENGUAJE VISUAL BASIC .NET

7

Clases Métodos

Page 146: Módulo_4_El lenguaje VB

Otras opciones de configuración

Estas son otras de las posibilidades para establecer algunas características del sistema de trabajo con elentorno y como se crearan nuestros programas.

MENU HERRAMIENTAS/PERSONALIZAR

Con esta ventana podremos mostrar u ocultar barras de herramientas pudiendo también crear las nuestraspropias con los botones deseados. Contamos en el entorno con 28.

Nos permite poner como deseemos la estructura de menús del entorno para que podamos mover lasopciones y ver descripciones de los comandos del menú.

EL LENGUAJE VISUAL BASIC .NET

8

Page 147: Módulo_4_El lenguaje VB

Esta afecta a la presentación de las barras de herramientas. Tenemos la posibilidad de configurar unacombinación de teclas para los comandos de los menús.

MENU HERRAMIENTAS/OPCIONES

En la parte izquierda de esta ventana tenemos una estructura de tipo jerárquico con las opciones generalesde configuración más importantes del entorno.

Tenemos disponibles las opciones generales de configuración del entorno de trabajo. Se puede mostrar elentorno con ventanas tipo ficha o ventanas tipo MDI o interfaz de múltiples documentos. Podemos movernosde una a otra mediante CONTROL + ALT. Podríamos incluso organizarlas como si de un mosaico setratase.

EL LENGUAJE VISUAL BASIC .NET

9

Page 148: Módulo_4_El lenguaje VB

Podremos también configurar la velocidad con la que las ventanas se ocultan automáticamente al salir conel ratón de ellas así como también podremos configurar lo que queramos que aparezca al iniciarse el entornode desarrollo. Todo lo cambios de configuración solo estarán disponibles la próxima vez que se inicie sesiónde trabajo de Visual Studio.

EL LENGUAJE VISUAL BASIC .NET

10

Page 149: Módulo_4_El lenguaje VB

EL LENGUAJE VISUAL BASIC .NET

11

Page 150: Módulo_4_El lenguaje VB

EL LENGUAJE VISUAL BASIC .NET

12

Page 151: Módulo_4_El lenguaje VB

EL LENGUAJE VISUAL BASIC .NET

13

Page 152: Módulo_4_El lenguaje VB

EL LENGUAJE VISUAL BASIC .NET

14

Page 153: Módulo_4_El lenguaje VB

EL LENGUAJE VISUAL BASIC .NET

15

Page 154: Módulo_4_El lenguaje VB

EL LENGUAJE VISUAL BASIC .NET

16

Page 155: Módulo_4_El lenguaje VB

EL LENGUAJE VISUAL BASIC .NET

17

Page 156: Módulo_4_El lenguaje VB

EL LENGUAJE VISUAL BASIC .NET

18

Page 157: Módulo_4_El lenguaje VB

EL LENGUAJE VISUAL BASIC .NET

19

Page 158: Módulo_4_El lenguaje VB

EL LENGUAJE VISUAL BASIC .NET

20

Page 159: Módulo_4_El lenguaje VB

EL LENGUAJE VISUAL BASIC .NET

21

Page 160: Módulo_4_El lenguaje VB

EL LENGUAJE VISUAL BASIC .NET

22

Page 161: Módulo_4_El lenguaje VB

LA PLATAFORMA . NET . Fuente Microsoft .NET

NET es un proyecto de Microsoft para crear una nueva plataforma de desarrollo de software con énfasis entransparencia de redes, con independencia de plataforma de hardware y que permita un rápido desarrollode aplicaciones. Basado en ella, la empresa intenta desarrollar una estrategia horizontal que integre todossus productos, desde el sistema operativo hasta las herramientas de mercado.

.NET podría considerarse una respuesta de Microsoft al creciente mercado de los negocios en entornos Web,como competencia a la plataforma Java de Sun Microsystems y a los diversos framework de desarrollo webbasados en PHP. Su propuesta es ofrecer una manera rápida y económica, a la vez que segura y robusta, dedesarrollar aplicaciones –o como la misma plataforma las denomina, soluciones– permitiendo una integraciónmás rápida y ágil entre empresas y un acceso más simple y universal a todo tipo de información desdecualquier tipo de dispositivo.

La plataforma .NET de Microsoft es un componente de software que puede ser añadido al sistema operativoWindows. Provee un extenso conjunto de soluciones predefinidas para necesidades generales de laprogramación de aplicaciones, y administra la ejecución de los programas escritos específicamente con laplataforma. Esta solución es el producto principal en la oferta de Microsoft, y pretende ser utilizada por lamayoría de las aplicaciones creadas para la plataforma Windows.

.NET Framework se incluye en Windows Server 2008 y Windows Vista. De igual manera, la versión actual dedicho componente puede ser instalada en Windows XP, y en la familia de sistemas operativos Windows Server2003. Una versión “reducida” de .NET Framework está disponible para la plataforma Windows Mobile,incluyendo teléfonos inteligentes.

La norma (incluido en ECMA-335, ISO/IEC 23271) que define el conjunto de funciones que debe implementarla biblioteca de clases base (BCL por sus siglas en inglés, tal vez el más importante de los componentes dela plataforma), define un conjunto funcional mínimo que debe implementarse para que el marco de trabajosea soportado por un sistema operativo. Aunque Microsoft implementó esta norma para su sistema operativoWindows, la publicación de la norma abre la posibilidad de que sea implementada para cualquier otrosistema operativo existente o futuro, permitiendo que las aplicaciones corran sobre la plataformaindependientemente del sistema operativo para el cual haya sido implementada. El Proyecto Monoemprendido por Ximian pretende realizar la implementación de la norma para varios sistemas operativosadicionales bajo el marco del software libre o código abierto.

Los principales componentes del marco de trabajo son:

- El conjunto de lenguajes de programación

- La Biblioteca de Clases Base o BCL

- El Entorno Común de Ejecución para Lenguajes o CLR por sus siglas en inglés.

EL LENGUAJE VISUAL BASIC .NET

23

Page 162: Módulo_4_El lenguaje VB

Debido a la publicación de la norma para la infraestructura común de lenguajes (CLI por sus siglas en inglés),el desarrollo de lenguajes se facilita, por lo que el marco de trabajo .NET soporta ya más de 20 lenguajesde programación y es posible desarrollar cualquiera de los tipos de aplicaciones soportados en la plataformacon cualquiera de ellos, lo que elimina las diferencias que existían entre lo que era posible hacer con uno uotro lenguaje.

Algunos de los lenguajes desarrollados para el marco de trabajo .NET son: C#, Visual Basic, Delphi (pascal),C++, J#, Perl, Python, Fortran, Cobol y PowerBuilder.

Este es el lenguaje insignia de .NET Framework (marco de trabajo .NET) y pretende reunir las ventajas delenguajes como C, C++ y Visual Basic en uno solo. El CLR es el verdadero núcleo del framework de .NET,entorno de ejecución en el que se cargan las aplicaciones desarrolladas en los distintos lenguajes, ampliandoel conjunto de servicios del sistema operativo (W2k y W2003).

La herramienta de desarrollo compila el código fuente de cualquiera de los lenguajes soportados por .NETen un código intermedio, el MSIL (Microsoft Intermediate Lenguaje), similar al BYTECODE de Java. Paragenerarlo, el compilador se basa en la especificación CLS (Common Language Specification) que determinalas reglas necesarias para crear el código MSIL compatible con el CLR.

Para ejecutarse se necesita un segundo paso, un compilador JIT (Just-In-Time) es el que genera el códigomáquina real que se ejecuta en la plataforma del cliente. De esta forma se consigue con .NET independenciade la plataforma de hardware. La compilación JIT la realiza el CLR a medida que el programa invoca métodos.El código ejecutable obtenido se almacena en la memoria caché del ordenador, siendo recompilado de nuevosólo en el caso de producirse algún cambio en el código fuente.

EL LENGUAJE VISUAL BASIC .NET

24

Page 163: Módulo_4_El lenguaje VB

Es el encargado de proveer lo que se llama co-administrado, es decir, un entorno que provee serviciosautomáticos al código que se ejecuta. Los servicios son variados:

- Cargador de clases: permite cargar en memoria las clases.

- Compilador MSIL a nativo: transforma código intermedio de alto nivel independiente del hardware que loejecuta a código de máquina propio del dispositivo que lo ejecuta.

- Administrador de código: coordina toda la operación de los distintos subsistemas del Common LanguageRuntime.

- Recolector de basura: elimina de memoria objetos no utilizados.

- Motor de seguridad: administra la seguridad del código que se ejecuta.

- Motor de depuración: permite hacer un seguimiento de la ejecución del código aún cuando se utilicenlenguajes distintos.

- Verificador de tipos: controla que las variables de la aplicación usen el área de memoria que tienen asignado. Administrador de excepciones: maneja los errores que se producen durante la ejecución del código.

- Soporte de multiproceso (hilos): permite ejecutar código en forma paralela.

- Empaquetador de COM: coordina la comunicación con los componentes COM para que puedan ser usados porel .NET Framework.

- Soporte de la Biblioteca de Clases Base: interfaz con las clases base del .NET Framework. Esto quiere decirque existen tipos de estructuras como es la de java y la .NET

Estandarización y Licenciamiento

En Agosto de 2000, Microsoft, Hewlett-Packard e Intel trabajaron conjuntamente para estandarizar ellenguaje de programación C# y una Infraestructura de Lenguaje Común (CLI por sus siglas en inglés). ParaDiciembre de 2001, ambos fueron ratificados por los estándares Internacionales ECMA SO también siguió lospasos para abril de 2003. Mientras Microsoft y sus socios de negocios ganaban patentes para los lenguajes CLIy C#, ECMA e ISO solicitaron que era esencial que la implementación estuviera disponible bajo “términos nodiscriminatorios”. Además de alcanzar estos términos, las compañías también accedían a dejar estas patentesdisponibles. Sin embargo, esto no aplicó para la parte del .NET Framework, que no está cubierto por losestándares ECMA/ISO. Esto incluye Windows Forms, ADO.Net y ASP.Net. En Octubre de 2007, Microsoftanunciaba la liberación de su código fuente para la Biblioteca de Clases Base del .NET Framework (incluidos

EL LENGUAJE VISUAL BASIC .NET

25

Page 164: Módulo_4_El lenguaje VB

ASP.Net, ADO.Net y Windows Presentation Foundation) esto con la lanzamiento de su nueva versión: VisualStudio 2008.

El futuro de .NET

A largo plazo Microsoft pretende reemplazar el API Win32 o Windows API con la plataforma .NET. Esto debidoa que el API Win32 o Windows API fue desarrollada sobre la marcha, careciendo de documentación detallada,uniformidad y cohesión entre sus distintos componentes, provocando múltiples problemas en el desarrollode aplicaciones para el sistema operativo Windows. La plataforma .NET pretende solventar la mayoría deestos problemas proveyendo un conjunto único y expandible con facilidad, de bloques interconectados,diseñados de forma uniforme y bien documentados, que permitan a los desarrolladores tener a mano todolo que necesitan para producir aplicaciones sólidas.

Debido a las ventajas que la disponibilidad de una plataforma de este tipo puede darle a las empresas detecnología y al público en general, muchas otras empresas e instituciones se han unido a Microsoft en eldesarrollo y fortalecimiento de la plataforma .NET, ya sea por medio de la implementación de la plataformapara otros sistemas operativos aparte de Windows (Proyecto Mono de Ximian /Novell para Linux/MacOSX/BSD/Solaris), el desarrollo de lenguajes de programación adicionales para la plataforma o la creación debloques adicionales para la plataforma (como controles, componentes y bibliotecas de clases adicionales);siendo algunas de ellas software libre, distribuibles bajo la licencia GPL.

Con esta plataforma Microsoft incursiona de lleno en el campo de los Servicios Web y establece el XML comonorma en el transporte de información en sus productos y lo promociona como tal en los sistemasdesarrollados utilizando sus herramientas.

EL LENGUAJE VISUAL BASIC .NET

26

Page 165: Módulo_4_El lenguaje VB

PROGRAMANDOEN VISUAL

BASIC .NET

© élogos Conocimiento, S.L. Madrid 2009. Todos los derechos de Propiedad Intelectual e Industrial de esta obra pertenecen a élogos Conocimiento, S.L.

Page 166: Módulo_4_El lenguaje VB

PALABRAS CLAVE

Todo programa construido con Visual Basic estará constituido por sentencias que a su vez están hechos deuna serie de palabras con un significado único para el lenguaje de programación. Estas palabras son conocidascomo palabras clave o Key Word y en Visual Basic son:

AddHandler AddressOf Alias AndAndAlso Ansi As AssemblyAuto Boolean ByRef ByteByVal Call Case CatchCBool CByte CChar CDateCDec CDbl Char CIntClass CLng CObj ConstCShort CSng CStr CTypeDate Decimal Declar DefaultDelegate Dim DirectCast DoDouble Each Else ElseIfEnd Enum Erase ErrorEvent Exit #ExternalSource FalseFinally For Friend FunctionGet GetType GoTo HandlesIf Implements Imports InInherits Integer Interface IsLet Lib Like LongLoop Me Mod ModuleMustInherit MustOverride MyBase MyClassNamespace New Next NotNothing NotInheritable NotOverridable ObjectOn Option Optional OrOrElse Overloads Overridable OverridesParamArray Preserve Private PropertyProtected Public RaiseEvent ReadOnlyReDim #Region REM RemoveHandlerResume Return Select SetShadows Shared Short SingleStatic Step Stop StringStructure Sub SyncLock ThenThrow To True TryTypeOf Unicode Until VariantWhen While With WithEventsWriteOnly Xor #Const #ExternalSource#If...Then...#Else #Region - &&= * *= //= \ \= ^^= + += =-=

PROGRAMANDO EN VISUAL BASIC .NET

2

Page 167: Módulo_4_El lenguaje VB

ESCRIBIR CODIGO EN NUESTROS PROGRAMAS

Ya iniciado un proyecto, se deben introducir controles que permitan la interacción con el usuario en losformularios. Después se programan las reacciones de estos controles mediante eventos. Por ejemplopodríamos introducir un botón en el formulario y lo normal seria codificarle o programarle el evento clickdel botón. Para poder acceder y codificar este evento así como otro cualquiera se debe dar doble click sobreel y nos llevara a la ventana de código donde ya esta el código que automáticamente ha introducidoVisualBasic relacionado con el evento mencionado.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button1.Click

End Sub

El código comprendido entre la palabra clave Private Sub y End Sub se llama procedimiento de evento y todoel código puesto entre estas palabras se ejecutará en el momento en que el usuario pinche sobre el botón.

Existen algunos eventos que no son disparados por el usuario sino que son disparados por el sistema y a estostambién se les puede asociar cualquier tipo de código. En la parte superior, debajo de las barras deherramientas hay una serie de solapas con nombres, éstas nos permiten pasar de vista diseño a vista códigodel formulario.

Estructura de un programa en VB

Todo programa a construir en VisualBasic tiene que estar estructurado en secciones que podrán o no estarpresentes. En el caso de que las tuviera hay que procurar que el orden sea el siguiente:

instrucciones Option.Option Explicit - on/ off. Con esta instrucción obligamos a declarar o no las variables en el programa.

Option Strict - on/ off. Con esta instrucción permitimos que las conversiones de tipo de datos sean estrictasde manera que si esta activada esta opción no se podrán hacer conversiones implícitas de tipos de datos comopor ejemplo:

Dim ANTIGUEDAD As integerANTIGUEDAD = 567800

PROGRAMANDO EN VISUAL BASIC .NET

3

Page 168: Módulo_4_El lenguaje VB

Visual Basic suele hacer la conversión implícita de tipos de datos, por lo que en la sentencia anteriorANTIGÜEDAD la habría convertido a tipo Long automáticamente ya que los tipos Integer no admiten valorespor encima de 36767. Si hubiese estado activo Option Strict daría un error ya que forzosamente nos obligaríaa realizarlo mediante funciones específicas de conversión.

Option Compare – Binary/ text. Encaminado a la búsqueda, ordenación y comparación de cadenas. UsandoBinary tendrá en cuenta el código ASCII, en el cual las letras mayúsculas son menores que las minúsculas yestas son menores que los números. Si se usa Text tanto minúsculas como mayúsculas tienen el mismo valor.Instrucciones Imports. Nos permite acceder a los espacios de nombres de .Net para poder usar las clases consus métodos, eventos y propiedades en nuestros programas.

Main. Este procedimiento especial se ejecuta antes que ningún otro código aunque es opcional en nuestrosprogramas.

Class, Module, Namespace. Estas instrucciones nos son útiles para crear clases, módulos y espacios denombres en los programas.

Sub, End Sub, Function, End Function. Instrucciones de los procedimientos de eventos de los controles. Conellas podemos crear nuestros propios procedimientos y funciones personalizadas.

Instrucciones de Compilación Condicional. Están dirigidas al compilador. Con ellas se determinan que secompile parte del código o no. Las podemos poner en la parte que queramos del código.

Primer programa en Visual Basic

Mediante este primer programa nos iniciaremos en el proceso de construcción de programas e introducir enun formulario los elementos necesarios para usar todos los conceptos a dar en este tema. Pasos a seguir:

Menú archivoNuevoProyectoProyecto visual basicAplicación para WindowsDel cuadro de herramientas introducir un botón (button)Abrir ventana de propiedades del botón (f4)Establecer las siguientes propiedades al botónNAME - BotoncitoTEXT - BotónIntroducir una etiqueta en el formulario (label)Establecer las siguientes propiedades a la etiqueta

PROGRAMANDO EN VISUAL BASIC .NET

4

Page 169: Módulo_4_El lenguaje VB

NAME - EtiquetaTEXT - ResultadoIntroducir una caja de texto (textbox)Establecer las siguientes propiedades a la caja de textoNAME - CajaTEXT - DatosDar un doble click al botónNos pasamos a la ventana de código Estamos en el procedimiento click del botónTeclee el siguiente código

CAJA.Text = “ESTOY ESCRIBIENDO EN LA CAJA”ETIQUETA.Text = “ESTOY ESCRIBIENDO EN LA ETIQUETA”BOTONCITO.Text = “ESTOY ESCRIBIENDO EN EL BOTON”MessageBox.Show(CAJA.Text)

Ejecute el código pulsando al botón iniciar de la barra de herramientasSe abre la ventana del formulario con los controlesSi se pincha en el botón se muestra las frases tecleadas en cada control y una ventana en donde se muestrael contenido que hay en la caja de textoSi se teclea algo nuevo en la caja de texto y se vuelve a pulsar al botón se mostrará en la ventana Standardel nuevo contenido de la caja de texto.

Aquí hemos usado tres controles, que van a ser los que usemos para practicar con los ejemplos de este tema.Podemos visualizar la información a través de una ventana mediante la instrucción MessageBoxShow, aunquemas tarde profundizaremos en ella.

Como podemos ver al asignar valores a las propiedades de algunos controles nos permite escribir en ellos.

Variables y tipos de datos

En la memoria RAM de nuestros ordenadores se encuentra la información que los microprocesadores seencargan de gestionar. Es normal que un lenguaje de programación reserve una o mas celdas de la memoriadándoles nombres o identificadores. Si en uno de estos lenguajes tecleamos la siguiente sentencia:

SALARIO = 150.000

Lo que en realidad estamos haciendo es introducir o asignar ese valor a la variable así que la celda dememoria contendrá el valor 150.000. Si después tecleamos:

SALARIO = 200.000

PROGRAMANDO EN VISUAL BASIC .NET

5

Page 170: Módulo_4_El lenguaje VB

Lo que hacemos es que sustituimos el valor y queda alojado en esa celda de memoria. Es por esto que lasllamamos variables, ya que a lo largo del proceso de ejecución su valor cambiará, pero en un momento lacelda solo tendrá un valor, nunca varios.

Utilizando las variables podemos poner las siguientes sentencias:

DEDUCCION = 10LIMPIO = SALARIO – (SUELDO* DEDUCCION / 100)

Se le da un valor a la variable DEDUCCION y después se le asigna a la variable LIMPIO el resultado de laexpresión matemática o lo que es lo mismo al usar el nombre de la variable en cualquier parte del código,el ordenador va al a memoria a buscar la celda con el nombre especifico y en el código sustituye el nombrepor el valor que haya en memoria.

Es necesario especificar en todo momento el tipo de dato que se almacenara ya que se debe de hacer lareserva de memoria. En VisualBasic existen los siguientes tipos de datos:

PROGRAMANDO EN VISUAL BASIC .NET

6

Page 171: Módulo_4_El lenguaje VB

CLR – nos dice que el tipo de datos base puede ser implementado por una clase de la librería indicada.Espacio el tamaño en bytes que ocupan los tipos en la memoria del ordenador e intervalo son los posiblesvalores admitidos para los tipos de variables.Declaración de variables

Previamente a usar una variable siempre hay que declararla primera, dándole un nombre y un tipo de datode los anteriormente vistos aunque hay ocasiones en las que VisualBasic no obliga a tener que declarar antesde usarlas. Aun así es recomendable hacerlo. Como ya sabemos para obligar a declarar usaremos lainstrucción Option Explicit On.

DIM

[ <listaAtributos> ][{Public | Protected |Friend| Protected Friend | Private | Static }] [ Shared ] [ Shadows ] [ ReadOnly ] Dim [ WithEvents] nombre[ (máximolista) ] [ As [ New ] tipo ] [ = inicializacion ]

Esta es la instrucción para declarar una variable.

Public , Protected , Friend , Protected Friend , Private , Static. Referencian al ámbito de las variables queya veremos mas adelante.

[ Shared ] [ Shadows ] [ ReadOnly ] – usadas cuando se trabaja con propiedades de clases. También se veránmas adelante.

WithEvents – Especificamos que deseamos trabajar con eventos que se han declarado y disparado en unaclase.

New - Lo usamos para indicarle a VisualBasic que lo declarado es una variable de tipo Objeto la cualalmacenará una clase previamente declarada.

Tipo – Uno de los tipos de datos a usar en VisualBasic.

Es necesario seguir una serie de normas a la hora de asignar un identificador:

Se aconseja empezar el nombre con letra mayúscula. Los nombres además pueden tener cualquiera de laspalabras clave, pero cuando utilicemos estos identificadores en los programas, debemos poner el nombrecompleto del espacio de nombres donde se declaro la variable o bien el identificador entre corchetes,llamado cualificado de variables.

No existe un limite del numero de caracteres a usar en los identificadores y hay una serie de caracteresespeciales que no se pueden usar como identificadores que son: %, /, (, ), &, ^, “ , ¡, ¿,?

PROGRAMANDO EN VISUAL BASIC .NET

7

Page 172: Módulo_4_El lenguaje VB

EJEMPLOS DE UTILIZACION DE DIM:

Dim EDAD As IntegerDim SALARIO As LongDim NUM_HIJOS As ByteDim NUM_EMPLEADOS As ShortDim _EDAD As Int16Dim PAGINAS As Int32Dim CIUDADES As Int64Dim OLOR As CharDim DEDUCCIONES As SingleDim MOTE As System.StringDim PRESUPUESTO As System.CharDim NACIONAL As BooleanDim EXTRANJERO As System.BooleanDim F_NAC, F_BODA, F_HIJO As DateDim EDAD As Byte, SUELDO As LongDim A As Integer, B, C As Long

Las variables pueden ser declaradas como tipos Standar o como clases de tipos. A la hora de ejecutar losprogramas es indiferente.

Podemos declarar varias variables de un mismo tipo en una misma sentencia separando los nombres de lasvariables por comas y el tipo al final. Podemos declarar varias variables con varios tipos en una sola sentencia.

Dim EDAD As Byte = 56Dim uno, dos, tres As Integer ‘ todas las variables anteriores son de tipo integerDim APELLIDOS As String = “HUERTAS LOPEZ”Dim CADENA As Char = “H”Dim IMPUESTO As Single = 56.678Dim NACIONAL As Boolean = TrueDim DIRECCION As System.String = “C/ALCALA 345”Dim A As Integer, B, C As Long = 89000 ‘ ERROR

No nos es posible inicializar varias variables al mismo tiempo en una sola sentencia.

Si no inicializamos las variables VisualBasic las inicializara automáticamente, con los siguiente valores:

Tipos numéricos – 0Boolean – FalseDate – 01/01/0001 12:00:00 AMDecimal – 0

PROGRAMANDO EN VISUAL BASIC .NET

8

Page 173: Módulo_4_El lenguaje VB

Object – NothingString – cadena de longitud cero “”

Todo lo que declaremos en VisualBasic posee unas propiedades características como:

Tipo de dato – Ya visto anteriormente.

Ámbito – Lugar del código donde podemos utilizar el elemento o desde donde podemos ver el contenido. Loselementos pueden tener los siguientes ámbitos:

A nivel de BloqueA nivel de ProcedimientoA nivel de ModuloA nivel de Espacio de NombresTodos estos conceptos los veremos posteriormente en el libro.Duración – el tiempo de vida de cada elementoAccesibilidad – son los permisos que se tienen para poder acceder al elemento.Todo esto se le da mediante palabras clave usadas en la sentencia de declaración.

Declaración de constantes

Las constantes una vez que se les ha asignado un valor nunca va a cambiar a lo largo de la ejecución de losprogramas.

CONST

[ <listaAtributos> ] [{ Public | Protected | Friend | Protected Friend| Private }] [ Shadows ] Const nombre [ As tipo ] = inicializacion

Const PLUS As Single = 45.6789Const PI As Single = System.Math.PIConst CE As Single = System.Math.EConst PI2 As Double = System.Math.PIConst CE2 As Double = System.Math.E

Como vemos en el ejemplo en la primera línea tenemos declaración e inicialización de una constanteasignándole un valor. En las líneas siguientes vemos que los valores a asignar se consiguen a través de laclase Math que pertenece al espacio de nombres System.

PROGRAMANDO EN VISUAL BASIC .NET

9

Page 174: Módulo_4_El lenguaje VB

Enumeraciones

Nos da la posibilidad de tener varias constantes asociadas a un identificador común. Es una forma de crearconstantes en nuestros programas.

ENUM

[ <listaAtributos> ] [{ Public | Protected| Friend | Protected Friend| Private }] [ Shadows] Enum NAMBRE [ As TIPO ]

[<listaAtributos>] CONSTNOMBRE [ = INICIALIZACION ][<listaAtributos>] CONSTNOMBRE [ = INICIALIZACION ]

...[<listaAtributos>] CONSTNOMBRE [ = INICIALIZACION ]

End Enum

Podemos poner los nombres que deseemos entre las palabras ENUM y END ENUM. Podemos inicializarlas conun valor o no, pero si no lo hacemos VisualBasic inicializa la primera constante con el valor 0 y las siguientede forma secuencial.

Public Enum SEMANALUNESMARTESMIERCOLESJUEVESVIERNESSABADODOMINGO

End EnumPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

MessageBox.Show(SEMANA.LUNES)

End Sub

La declaración de la enumeración debe estar al principio del código del programa nunca en el interior de unprocedimiento de evento o uno personalizado.

Usando Messagebox podemos mostrar en un cuadro de dialogo Estándar cualquier mensaje, constante o valorde variable. En el ejemplo anterior mostraría 0 ya que nosotros no hemos inicializado LUNES.

PROGRAMANDO EN VISUAL BASIC .NET

10

Page 175: Módulo_4_El lenguaje VB

Public Enum SEMANALUNES = 5MARTESMIERCOLESJUEVESVIERNESSABADODOMINGO

End Enum

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

MessageBox.Show(SEMANA.MIERCOLES)

End Sub

Este código sin embargo inicializa la constante LUNES a cinco con lo que el resto de las constantes seinicializaran con valores secuenciales. Este código mostrará un 7. Si inicializáramos MIERCOLES a 10, todaslas constantes detrás de miércoles en la enumeración tendrían valores a partir de 10, sin embargo las queestén por delante en la enumeración tendrán valores dados por VisualBasic o por el programador. Lasconstantes de las enumeraciones se suelen inicializar a números enteros, si la inicializamos a números condecimales VisualBasic las convierte enteros y las redondea.

Arrays

También llamados vectores o matrices son estructuras de datos que a diferencia de las variables almacenanvarios datos a la vez. Todos estos datos se reservan en memoria con un nombre único.

0 1 2 .................... 8

Array de 9 posiciones que van desde la posición 0 a la posición 8

En los arrays se pueden referenciar cada celda mediante un número llamado índice del array. Otra de lascaracterísticas que tienen es la llamada DIMENSION del array, según esa característica tenemos:

Array de una dimensión à VECTORArray de dos dimensiones à TABLA o MATRIZArray de tres dimensiones à POLIEDRO, CUBOArray de N dimensiones hasta un total de 60 como máximo.

PROGRAMANDO EN VISUAL BASIC .NET

11

Page 176: Módulo_4_El lenguaje VB

Los arrays con tres dimensiones por ejemplo van a necesitar tres índices para acceder a cada uno de loselementos, uno para las filas, otro para las columnas y otro para las capas. Siempre el índice de un arrayempezara en 0 y su tamaño es el numero de elementos que puede tener.

Declaración de un Array

Dim sueldos (5) As LongDim empleados(19) As StringDim PAISES(3, 1) As StringDim PERSONAS(3, 3, 1) As Byte

Dim sueldos1() As Long = {150000, 200000, 300000, 400000}Dim empleados1() As String = {“PACO”, “ISI”, “AMADO”, “OLGA”}Dim PAISES2(,) As String = {{“FRANCIA”, “PARIS”}, {“NORUEGA”, “OSLO”}}Dim PERSONAS2(,,) As Short = {{{10, 20, 30}, {40, 50, 60}, {70, 80, 90}}, {{666, 200, 300}, {400, 500, 600}, {700, 800, 900}}}

La primera sentencia declara un vector de 6 elementos long, el valor puesto entre paréntesis no determinael tamaño del array sino el valor máximo donde puede llegar el índice de la dimensión especificada en elarray.

La segunda reserva un vector de 20 elementos donde irán string.

La tercera declara una matriz de cuatro filas y dos columnas para almacenar strings.

La cuarta un poliedro de cuatro filas por cuatro columnas y dos capas para bytes.

La quinta declara un vector de tipo long y asigna valores a cada uno de los elementos del vector. Este tieneun índice máximo de 3 y su tamaño es de cuatro elementos.

La sexta sentencia es idéntica a la anterior pero con strings.

Las otras dos sentencias declaran y dan valores a una matriz y poliedro. Las llaves determinan el comienzoy final de la dimensión del array en las sentencias de inicialización de estos.

El array no ha de tener ni dimensiones ni índice máximo al inicializarlo, estos son los valores que se otorganal array y se establecen posteriormente.

El código siguiente nos indica sentencias de asignación de valores a elementos de un array.

PROGRAMANDO EN VISUAL BASIC .NET

12

Page 177: Módulo_4_El lenguaje VB

sueldos(1) = 220000empleados(0) = “Elvira Diaz”PAISES(0, 0) = “ESPAÑA”PERSONAS(0, 0, 0) = 10PERSONAS(0, 0, 1) = 20

En este otro código vemos como se puede mostrar el valor de cualquier elemento de cualquier array. Losarrays manejados son los declarados anteriormente.

MessageBox.Show(sueldos(1))MessageBox.Show(empleados(0))

Cuando queremos acceder a un elemento del array hay que hacerlo utilizando tantos índices comodimensiones tenga el array.

Dim VALOR As ObjectDim datos(,) As Object = {{“PEDRO”, “JOSE”, “ADOLFO”}, {200000, 150000, 175000}}

For Each VALOR In datosMessageBox.Show(VALOR)

Next

En este código anterior se muestra como tener matrices con datos de diferentes tipos, gracias a declararlascomo tipo Object.

Arrays irregulares.

Son arrays que no tienen una forma regular como los anteriores sino que cada fila podrá tener diferentescolumnas o capas. Por ejemplo una declaración de array irregular:

Dim VALOR As IntegerDim datos()() As Integer = New Integer(2)() {}datos(0) = New Integer(4) {40, 50, 60, 70, 80}datos(1) = New Integer(3) {5, 6, 7, 8}

For Each VALOR In datos(0)MessageBox.Show(VALOR)

Next

For Each VALOR In datos(1)MessageBox.Show(VALOR)

Next

PROGRAMANDO EN VISUAL BASIC .NET

13

Page 178: Módulo_4_El lenguaje VB

En este código se va a declarar una matriz base de tipo entero, se indica que va a estar compuesta a su vezde dos matrices de tipo entero.

La primera submatriz esta compuesta de cinco elementos y se inicializa la misma a cinco valores.La segunda submatriz está compuesta por cuatro valores y también se inicializan los mismos.Se declara después una variable del tipo que el de las matrices para recorrer todos los elementos de las dosmatrices.

Arrays Dinámicos.

Son aquellos que en el momento en que los declaramos se desconoce el tamaño que van a tener así comotampoco los valores que estos almacenarán mientras se ejecuta el programa. Se declaran así:

Dim valores() As LongReDim valores(6)valores(3) = 450000MessageBox.Show(valores(3))ReDim Preserve valores(9)valores(4) = 300000MessageBox.Show(valores(3))

Cuando hemos declarado el array no se especifica el valor máximo del índice.

La instrucción ReDim permite redimensionar el array pero realmente solo cambia el valor del índice máximopara alguna dimensión que tenga ya el array por lo que un array de una dimensión no lo podremos convertiren una matriz.

ReDim Preserve, permite que se mantengan los valores que se le hayan asignado al array, ya que si no se usaPreserve estos valores se perderán cuando VisualBasic los cambie a 0.

Estructuras – Tipos definidos por el usuario

Visual Basic nos da la posibilidad de crearnos nuestros tipos de datos y después poder declarar variables paraestos tipos. La forma de declarar seria la siguiente:

STRUCTURE

[ <listaAtributos> ] [{ Public | Protected | Friend| Protected Friend | Private }] [ Shadows ] Structure nombre

[ Implements nombreInterfaces]declaracionVariables[ declaracionProcedimientos]

End Structure

PROGRAMANDO EN VISUAL BASIC .NET

14

Page 179: Módulo_4_El lenguaje VB

Se pueden declarar las variables que queramos e incluso se pueden declarar procedimientos y funciones queveremos mas adelante.

Public Structure EMPLEADOSPublic NOMBRE As StringPublic APELLIDOS As StringPublic SUELDO As LongPublic FECHAENTRADA As DatePublic HIJOS As Byte

End StructureDim EMPLE1 As EMPLEADOS

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

EMPLE1.NOMBRE = “MARIA”EMPLE1.APELLIDOS = “RUIZ LOPEZ”EMPLE1.SUELDO = 199000EMPLE1.FECHAENTRADA = #09/6/2008#EMPLE1.HIJOS = 1

MessageBox.Show(EMPLE1.SUELDO)End Sub

Siempre que declaremos una estructura de datos tenemos que declarar una variable del tipo de la estructuracomo hemos hecho con EMPLE1.

En el procedimiento de evento del botón hemos escrito valores a los campos de la estructura y hemosmostrado el valor del campo sueldo, similar a lo que hacemos con las variables normales a excepción de quese ha de utilizar el nombre de la variable que contiene la estructura, un punto y el nombre del campo de laestructura a usar. No podemos declarar dentro de funciones o procedimientos las estructuras.

Sentencias de control de flujo

Se trata de un conjunto de instrucciones que permiten dividir el flujo en los programas. Cuando hacemos unprograma en cualquier lenguaje de programación se va a ejecutar en un orden establecido, primero laprimera instrucción y después la siguiente sucesivamente hasta llegar a la última, esto es lo que se llama Flujode programa, o la dirección de la ejecución de las instrucciones del programa. Dependiendo de la situacióno el problema el flujo del programa será derivado en un sentido u otro ejecutando unas instrucciones u otrasdependiendo de unas condiciones. Estas condiciones vienen dadas por las sentencias de control.

PROGRAMANDO EN VISUAL BASIC .NET

15

Page 180: Módulo_4_El lenguaje VB

Instrucción condicional/IF

If CONDICION [ Then ][ SENTENCIAS ]

[ ElseIf CONDICION[ Then ][ SENTENCIASELSE] ]

[ Else[ SENTENCIAS ELSE ] ]

End If

If CONDICION Then [ SENTENCIAS] [ Else SENTENCIASELSE]

Podemos usar la instrucción en una sola línea o en varias en nuestro código. Un código de ejemplo:

Dim PERROS As BytePERROS = 3If PERROS > 4 Then

MessageBox.Show(“EL NUMERO DE PERROS ES MAYOR DE 4”)End If

Se declara una variable que inicializamos a 3 y se evalúa la condición después del If. Si la condición se cumplese ejecutara todo lo que siga al Then, de modo contrario salta el flujo e interpreta las instrucciones despuésdel End If si las hubiera.

Dim EDAD As ByteEDAD = 30If EDAD > 40 Then

MessageBox.Show(“LA EDAD ES MAYOR DE 40”)Else

MessageBox.Show(“LA EDAD ES MENOR DE 40”)End If

En este otro ejemplo la condiciones es falsa así que se ejecutan las instrucciones del bloque del else. Estaes conocida como condicional simple.

Dim EDAD As ByteEDAD = 30If EDAD > 40 Then

MessageBox.Show(“LA EDAD ES MAYOR DE 40”)ElseIf EDAD < 20 Then

MessageBox.Show(“LA EDAD ES MENOR DE 20”)Else

MessageBox.Show(“LA EDAD ESTA ENTRE 20 Y 40”)End If

PROGRAMANDO EN VISUAL BASIC .NET

16

Page 181: Módulo_4_El lenguaje VB

Aquí tenemos un caso de anidamiento unas dentro de otras y siempre que usemos un ElseIf se ha de poneruna condición y un Then aunque todo esto lo cerraremos con un solo End If.

Todo else contenido en el interior de una instrucción condicional es una alternativa al If que se encuentremás próximo a la instrucción. En el ejemplo anterior el If mas cercano a el es el del ElseIf.

If EDAD > 40 Then MessageBox.Show(“MAYOR DE 40”) Else EDAD = 50

Este If de una sola alternativa se puede poner en una sola línea de código.

Instrucción selectiva/SELECT

Select [ Case ] EXPRESION_A_EVALUAR[ Case VALORRESULTADO1

[ SENTENCIAS] ][ Case Else

[ SENTENCIAS] ]End Select

Esta sentencia es mas flexible y potente que If ya que es capaz de evaluar distintos posibles valores que puededevolver una expresión o que posea una variable para ejecutar una tarea dependiendo del valor que sedevuelve.

Dim DATO As Integer Dim VALOR As Integer

DATO = CAJA.TextVALOR = 5000

Select Case DATOCase Is < 20

ETIQUETA.Text = “ES MENOR DE 20”Case 25, 30, 35

ETIQUETA.Text = “ES 25 O 30 O 35”Case 50 To 75

ETIQUETA.Text = “ESTA ENTRE 50 Y 75”Case 80, 90 To 110, 200

ETIQUETA.Text = “ES 80,200, ESTA ENTRE 90 Y 110”Case Is < 400, Is > 600

ETIQUETA.Text = “YA ESTOY PERDIDO”Case Is < VALOR

ETIQUETA.Text = “ES ALGO MENOR QUE 5000”Case Else

ETIQUETA.Text = “TODO LO ANTERIOR”End Select

PROGRAMANDO EN VISUAL BASIC .NET

17

Page 182: Módulo_4_El lenguaje VB

Se asigna el contenido de la caja de texto del formulario en una variable y después se interpretan los valoresque puede haber escritos en la caja de texto.

En una instrucción Select se evalúa una variable o el resultado de una expresión y va comprobando los valoresque puede tener la variable con los distintos case. En cada case abra una constante o distintas expresiones.La palabra clave Is es colocada automáticamente por VisualBasic. La palabra To especifica un rango de valoresy la coma es como si uniésemos las condiciones con Y. Podemos poner combinaciones de todo lo anterior enun case. Cada else se valora solamente cuando no se cumpla ninguna de las condiciones anteriores.Deberemos tener en cuenta como colocamos los casos ya que VisualBasic valorara los casos del primero alultimo y si uno de ellos se cumple, se ejecutan las sentencias solamente que corresponden a ese caso aunhabiendo mas casos que cumplan las condiciones y que estén por debajo de este primero. Al igual que conla condicional If se pueden anidar instrucciones Select unas dentro de otras.

Instrucciones RepetitivasDO - LOOP

Do { While | Until} CONDICION[ SENTENCIAS]

[ Exit Do ][ SENTENCIAS ]

Loop

También

Do[ SENTENCIAS]

[ Exit Do ]

[ SENTENCIAS]Loop { While | Until} CONDICION

Nos va a permitir ejecutar una o un conjunto de sentencias un número determinado de veces. La instrucciónadmite varias alternativas posibles.

Do While veces < 1000CAJA.Text = vecesveces = veces + 1

Loop

PROGRAMANDO EN VISUAL BASIC .NET

18

Page 183: Módulo_4_El lenguaje VB

Tras la palabra While se pone una expresión condicional que nos devolverá Verdad o Falso. La instrucciónmientras se cumpla la condición ejecutará todas las instrucciones que haya entre el Do y Loop. Entendemosbucle cuando en un programa se evalúa una condición y la repetirá mientras lo evaluado siga siendo cierto,en el momento en que no se cumpla saldrá de ese bucle. La línea de código que vemos ahora a continuaciónes usada comúnmente en programación y se la llama contador, teniendo en cuenta que el símbolo = nosignifica igualdad sino asignación:

SUMA = SUMA + 1

Evaluamos siempre primero lo que se encuentra a la derecha del operador de asignación, o lo que es lomismo, a lo que actualmente tiene la variable SUMA se le suma 1, y una vez hecha esta operación se leasigna el valor a la variable SUMA, es por esto que se le llama contador. Cuando en el programa anterior seencuentra la palabra Loop retornará al Do y volverá a evaluar la condición, llegara un momento en que esacondición se cumpla o sea verdadera, entonces dejara de ejecutar las líneas de dentro. En caso de quesiempre se cumpliese la condición estaríamos hablando de un fallo en la lógica de nuestro programa ya quese trataría de un bucle infinito.

DoCAJA.Text = vecesveces = veces + 1

Loop While veces < 1000

En este otro ejemplo igual que el anterior en vez de encontrarse la condición al principio del bucle seencuentra al final lo que provoca que las instrucciones que se encuentren dentro del cuerpo del bucle seejecutaran al menos una vez.

Do Until veces = 1000CAJA.Text = vecesveces = veces + 1

Loop

En este código se utiliza la palabra clave Until lo que hará que este bucle se repite hasta que la condiciónsea cierta y en ese caso saldrá de él, o lo que es lo mismo mientras la condición que se ponga detrás de Untilsea falsa se repetirá el bucle. Tal como ocurría con While, Until podrá estar tanto al principio como al final.

DoCAJA.Text = vecesIf veces = 1000 Then

Exit DoEnd Ifveces = veces + 1

Loop

PROGRAMANDO EN VISUAL BASIC .NET

19

Page 184: Módulo_4_El lenguaje VB

En este código se observa que es posible no usar ni While ni Until tanto al principio como al final. Pero vemosque en el código del bucle se ha añadido una condición que cuando se cumpla ejecuta EXIT FOR y la obligaraa salirse del bucle. De otro modo si no ponemos en el bucle anterior la sentencia EXIT FOR, se estaríarepitiendo indefinidamente con lo que tendríamos un bucle infinito.

FOR - NEXT

For VARCONTROLADORA= INICIO To FIN [ Step PASO ][ SENTENCIAS ]

[ Exit For ][ SENTENCIAS ]

Next [ VARCONTROLADORA ]

Esta sentencia es similar a la anterior pero se controlan las veces que se van a ejecutar las sentencias delbucle. Además se controla como se incrementa o decrementa la variable controladora. Tiene un valor deinicio y un valor final.

Dim A As Integer

For A = 0 To 500 Step 2CAJA.Text = A

Next

Con este código escribimos en una caja de texto de nuestro formulario lo que vale la variable A. Puesto queA comienza valiendo 0 y se trata de la variable controladora, en cada vuelta ira incrementando su valorhasta que A valga mas de 500 que entonces saldrá del bucle. No debemos olvidar declarar siempre la variablecontroladora. Se puede inicializar al valor que queramos tanto positivo como negativo.

Dim A As Double

For A = 0 To -10 Step -0.1CAJA.Text = A

Next

Con este código se va a poner en la caja de texto primero el valor 0, en la segunda vuelta -0,1 , en la siguiente-0,2 y así hasta que A sea menor que -10 que será cuando salga del bucle. La variable controladora puedetener decimales. Podemos incluso inicializar la variable controladora con el valor de otra variable y ponerlimite a esa variable referenciando a otra variable.

PROGRAMANDO EN VISUAL BASIC .NET

20

Page 185: Módulo_4_El lenguaje VB

En el siguiente bucle hay una sentencia que obliga al programa a salirse, esta es EXIT FOR y la podemos usaren cualquier parte del bucle.

Dim A As DoubleDim B As Integer = 1Dim C As Integer = 40Dim D As Integer = 200

For A = C To D Step BIf A * B > 80 Then

Exit ForEnd IfCAJA.Text = A

Next

WHILE – END WHILE

While CONDICION[ SENTENCIAS]

End While

Esta instrucción es parecida al Do aunque menos flexible y potente ya que solo admite una condición alprincipio del bucle y mientras que esa condición sea cierta se estarán ejecutando las instrucciones que hayandentro del bucle. Al contrario de lo que ocurría con el bucle Do este no tiene ninguna instrucción que leobligue a salir del bucle.

FOR - EACH

For Each ELEMENTO In GRUPOELEMENTOS[ SENTENCIAS ]

[ Exit For ][ SENTENCIAS]

Next [ ELEMENTO ]

Instrucción dirigida a tratar con grupos de objetos y colecciones ya que nos permite recorrer los elementosdel grupo. Previamente tendremos que declarar una variable que tenga el mismo tipo de los elementos delgrupo, esta variable será la que en cada repetición o iteración tendrá cada uno de los elementos, y se usarápara hacer un tratamiento específico de cada uno de ellos. Cuando no hay más elementos en el grupo,

PROGRAMANDO EN VISUAL BASIC .NET

21

Page 186: Módulo_4_El lenguaje VB

termina el bucle. Al igual que el For posee una instrucción para obligar a salir del bucle en el momento quedeseemos.

Dim SUELDOS() As Long = {125000, 200000, 245000, 89000, 133567}Dim A As Long

For Each A In SUELDOSMessageBox.Show(A)

Next

En este código se ha declarado un array y se inicializan uno valores y se declara una variable del mismo tipoque el array. Tras el Each siempre debemos de utilizar una variable del mismo tipo que el grupo de elementos.En ese ejemplo corresponde a A y en la primera vuelta contendrá el primer valor del array y después elsegundo hasta que no haya mas elementos en el array. Con In especificamos el grupo a tratar. En cada ciclose mostrara uno de los elementos de array desde el primero hasta el último que será cuando salga del bucle.

OPERADORES

Se trata de unas instrucciones de VisualBasic que realizan operaciones o tratamientos de datos o variables.

OPERADORES ARITMETICOS

+El operador que produce la suma de dos operandos.SUMA = 3+15

Si los dos operandos fueran cadenas se realiza una concatenación o lo que es lo mismo las dos cadenas sejuntan en una.

-

El operador de resta.

*El Operador de multiplicación

/

El operador de división. Devuelve también decimales.

Caja.Text = 50/3

PROGRAMANDO EN VISUAL BASIC .NET

22

Page 187: Módulo_4_El lenguaje VB

En la caja de texto se escribe 16,66666666666666\Operador de división entera, igual que el anterior pero el resultado lo muestra sin decimales ni redondeos,simplemente quita los decimales.

Caja.Text = 50\37

En la caja se muestra 1.

MOD

Operador que devuelve el modulo de una división entera o lo que es lo mismo el resto de la misma.Caja.text = 50 Mod 4Escribiría en la caja de texto un 2.

^Operador de exponenciación , eleva una base que se pone a la izquierda del operador a una potencia a laderecha del mismo. Tendremos en cuenta que cuando se pulsa la tecla que tiene el símbolo no se escribehasta que escribamos algo después.Caja1.Text = 5 ^ 2Escribe en la caja de texto 25.

OPERADORES DE ASIGNACION

=

Operador que da valores a las variables. El nombre de la variable se escribe a la izquierda mientras que eldato se hace a la derecha.

+=Suma el valor a la derecha el operador al valor que tenia la variable a la izquierda del operador y despuésel resultado se lo asigna a la variable.

Valor = 70Valor += 100Caja.Text = Valor

Muestra en la caja de texto 170.

PROGRAMANDO EN VISUAL BASIC .NET

23

Page 188: Módulo_4_El lenguaje VB

-= Igual que el anterior pero resta el valor que se pone a la derecha.

*= Igual que antes pero le multiplica el valor

/= Igual que antes pero hace la división decimal con el valor.

\= Igual pero hace la división entera con el valor.

^= Hace la exponenciación con el valor.

&= Usado para concatenar la cadena de caracteres que haya a la derecha del operador a la cadena que haya

en la variable.

Dim cadena1 As StringDim cadena2 As Stringcadena1 = “hace”cadena2 = “ un buen día”cadena1 &= cadena2CAJA.Text = cadena1Muestra en la caja “hace un buen día”

OPERADORES DE COMPARACION

> Mayor que

< Menor que>= Mayor o Igual que<= Menor o Igual que= Igual<> DistintoIS Operador con varios usos, por ejemplo en la instrucción Select se utiliza como

referencia a una condición.Otras veces funciona como operador que trabaja con objetos.

LIKE Compara dos cadenas, para devolver solamente verdad o falso, dependiendo deltipo de comparación que se haga.La cadena que se pone a la izquierda del operador es la base sobre la que se van ahacer las comparaciones.A la derecha se pone lo que se llama Mascara.La Mascara puede consistir en una cadena o una serie de símbolos especialesdisponibles:* - indica cualquier carácter y número de caracteres.? – indica cualquier carácter# - indica cualquier dígito[carácter] –secuencia de caracteres[!carácter] –exclusión de caracteres

PROGRAMANDO EN VISUAL BASIC .NET

24

Page 189: Módulo_4_El lenguaje VB

Ejemplo con LIKE:

If “ALEMANIA” Like “A*“ ThenMessageBox.Show(“ALEMANIA EMPIEZA POR A”)

End If

If “ ALEMANIA “ Like “*A” ThenMessageBox.Show(“ALEMANIA TERMINA EN A”)

End If

If “ESPAÑA” Like “?S*“ ThenMessageBox.Show(“LA SEGUNDA LETRA DE ESPAÑA ES S”)

End If

If “ESPAÑA CAPITAL MADRID” Like “*CAPITAL*“ ThenMessageBox.Show(“CAPITAL ESTA EN LA FRASE”)

End If

If “ACCIONES” Like “?[ABC]*“ ThenMessageBox.Show(“LA SEGUNDA LETRA ES A O B O C”)

End If

If Not “ESPAÑA CAPITAL MADRID” Like “*CAPITAL*“ ThenMessageBox.Show(“ESTO NO SALE, CAPITAL SI ESTA”)

End If

If “3D STUDIO” Like “#[!FGH]*“ ThenMessageBox.Show(“EL SEGUNDO CARACTER NO ES F, G O H”)

End If

OPERADORES DE CONCATENACION

& Concatenan una cadena con otra.+ Igual que el anterior.

PROGRAMANDO EN VISUAL BASIC .NET

25

Page 190: Módulo_4_El lenguaje VB

OPERADORES LOGICOS Y BIT A BIT

Usada en sentencias condicionales para unir varias condiciones entre si.

AND Es el Y lógico, concatena dos condiciones y tiene las siguientes valoraciones.

Expr1 Expr2 AndVerdad Verdad VerdadVerdad Falso FalsoFalso Verdad FalsoFalso Falso Falso

OR Es el O lógico y tiene las siguientes valoraciones

Expr1 Expr2 OrVerdad Verdad VerdadVerdad Falso VerdadFalso Verdad VerdadFalso Falso Falso

NOT La negación lógica, valoraciones:

Expr1 NotVerdad FalsoFalso Verdad

XOR El O exclusivo, las valoraciones son las siguientes:

Expr1 Expr2 XorVerdad Verdad FalsoVerdad Falso VerdadFalso Verdad VerdadFalso Falso Falso

PROGRAMANDO EN VISUAL BASIC .NET

26

Page 191: Módulo_4_El lenguaje VB

AND ALSO Muy parecido al And, pero a diferencia del anterior hay ocasiones en que solo evalúa laprimera expresión, no como el anterior que siempre evaluaba las dos.

En el caso de que la primera expresión condicional sea falso, no evalúa la segunda y elresultado es falso

OR ELSE Parecido al anterior pero con el O lógico. Cuando la primera expresión condicional es ciertano evalúa la segunda y da como resultado verdad.

OPERADORES VARIOS

ADDRESSOF Devuelve la dirección de memoria de una variable o función especificada como argumento.

GETTYPE Devuelve el tipo de un objeto.

Precedencia de Operadores

En ocasiones tenemos que escribir expresiones utilizando varios operadores de diferentes tipos, de estaforma la valoración de la expresión será de una manera o de otra dependiendo del operador que usemos yel orden de utilización, a esto se llama PRECEDENCIA DE OPERADORES, lo que significa que hay operadoresque se evalúan antes que otros en las expresiones y en Visual Basic existe esta relación de precedencia deoperadores:

Categoría Operadores

Principal Todas las expresiones de no operadorExponenciación ^Negación unaria +, -Multiplicación, división decimal *, /División de número entero \Módulo ModSuma, resta +, -Concatenación &Relacionales =, <>, <, >, <=, >=, Like, Is, TypeOf...IsCondicional NOT NotCondicional AND And, AndAlsoO condicional Or, OrElseCondicional XOR Xor

PROGRAMANDO EN VISUAL BASIC .NET

27

Page 192: Módulo_4_El lenguaje VB

El lenguaje de programación siempre evaluara la expresión de izquierda a derecha cuando ponemos unaexpresión en la que usamos diferentes operadores. Si en una expresión ponemos operadores diferentes y dedistinta precedencia se evaluaran antes los operadores de más precedencia a no ser que usemos paréntesislos cuales indicaran al lenguaje de programación que lo primero a evaluar es la expresión que se encuentraen el interior de los paréntesis y después todas las que haya fuera de los mismos.

Funciones y procedimientos

Podemos construirnos pequeños programas con un conjunto de instrucciones que sabemos que van anecesitarse varias veces, de forma que cada vez que los necesitemos las podemos invocar. Esto incide en queno necesitamos teclear estas instrucciones todas las veces sino una sola vez y meter una instrucción quellame a las mismas cuando se necesite. A estos trozos de programas se les suele llamar subrutinas,procedimientos o funciones. Existe una diferencia entre procedimientos y funciones y e que un procedimientose caracteriza porque realiza una tarea determinada mientras que la función se caracteriza porque devuelveun dato cuando se la llama. Cuando construyamos uno de estos dos será necesario que tengan lo que sedenomina máxima cohesión y mínimo acoplamiento.

La máxima cohesión significa que la rutina realizará solamente una tarea nunca varias es decir estaráespecializada en algo. Y mínimo acoplamiento significa que es aconsejable que a la subrutina se la llamedesde el menor número posible de localizaciones y dentro de estas subrutinas no se invoquen muchassubrutinas. Además es aconsejable dividirlos en trozos o subrutinas entre ellas se establezca un nivel dejerarquía o lo que es lo mismo una subrutina realiza una tarea y llama a otra subrutina que realiza una tareamucho mas detallada y así sucesivamente haciendo mas fácil a resolución de problemas y la lectura de lassoluciones dadas a esos problemas, localizando mejor los errores y sus soluciones.

En Visual Basic hay dos instrucciones que nos permiten declarar los procedimientos y funciones y son:

SUB

[ <listaAtributos> ][{ Overloads | Overrides | Overridable | NotOverridable| MustOverride | Shadows| Shared }] [{ Public | Protected | Friend | Protected Friend | Private}] Sub nombre [(listaArgumentos)] [ Implements interface.nombredefinido ]

[ instruccciones ][ Exit Sub ][ instrucciones ]

End Sub

PROGRAMANDO EN VISUAL BASIC .NET

28

Page 193: Módulo_4_El lenguaje VB

Nos permite declarar un procedimiento y las únicas palabras que estamos obligados a poner son Sub y EndSub además del nombre de procedimiento.

Podemos pasar una serie de valores especificando variables a un procedimiento, a esto lo llamamos lista deargumentos. Podemos especificar múltiples tipos de argumentos que se verán mas adelante. A la lista deargumentos podemos poner lo siguiente:

[ <listaAtributos> ] [Optional] [{ByVal| ByRef}] [ParamArray] nombreArgumento[( )] [ As Tipo ] [ = valoPorDefecto ]

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

mostraría()MessageBox.Show(“YA HE LLAMADO AL PROCEDIMIENTO”)

End Sub

Sub mostrardia()MessageBox.Show(“estamos a VIERNES”)

End Sub

En este código hemos declarado un procedimiento con la instrucción Sub llamado “mostraría” , no se le pasaningún argumento y lo único que se hace es mostrar un mensaje en la ventana Standar. Con el procedimientode evento Clic de un botón en el formulario llamo al procedimiento abriendo y cerrando el paréntesis sinpasársele argumentos. Cuando se llama al procedimiento se ejecuta el código que contenga y cuando terminevolverá al flujo del programa justamente a la instrucción siguiente a la llamada. En este caso se mostrará elmensaje: YA HE LLAMADO AL PROCEDIMIENTO.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

visualiza(“perico”, “olga”)MessageBox.Show(“YA HE LLAMADO AL PROCEDIMIENTO”)

End Sub

Sub visualiza(ByVal uno As String, ByVal dos As String)MessageBox.Show(dos & uno)

End Sub

PROGRAMANDO EN VISUAL BASIC .NET

29

Page 194: Módulo_4_El lenguaje VB

En este caso el procedimiento se declara con dos argumentos llamados uno y dos los dos de tipo cadena ydeclarados ambos con ByVal o lo que es lo mismo pasados por valor, si se hubieran pasado por referencia sehubiera usado ByRef. Cuando los argumentos e pasan por valor se puede introducir valores en el cuerpo delprocedimiento pero no afectara al valor de la variable que se ha pasado. Pero si se pasa por referencia lasmodificaciones que se hagan en la variable dentro del procedimiento afectaran a la variable fuera de él.

Al llamar al procedimiento del clic del botón se le pasan todos los valores de los argumentos que en este casose han pasado como constantes.

En este otro ejemplo vemos la diferencia entre pasar un argumento por valor o por referencia.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim valor As Integer = 500visualiza(valor)MessageBox.Show(valor)

End SubSub visualiza(ByVal dato As Integer)

MessageBox.Show(dato)dato = 1000

End Sub

Como vemos en la llamada al procedimiento se pasa como argumento la variable valor. En el momento quese le llama el valor que tiene la variable pasa a la variable declarada en la lista de argumentos delprocedimiento, sucedería o mismo si tuviésemos mas argumentos. Si no especificásemos nadaautomáticamente VisualBasic pasa argumentos por valor o lo que es lo mismo pone ByVal. En el código deantes vemos que se muestra en una caja de dialogo Standar el valor 500 y nuevamente después el valor 500.En el interior del procedimiento hemos cambiado el valor de la variable dato pero los cambios no afectan alos valores de las variables que se pasan como argumentos en la llamada al procedimiento. Si hubiésemospasado el argumento por referencia en vez de por valor se vería que primero se muestra el 500 y después el1000, o lo que es lo mismo, todas las modificaciones que se hacen en el cuerpo del procedimiento afectana los valores de la variable fuera de él.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim valor As Integer = 500Dim nombre As String = “ALFREDO”visualiza(valor, nombre)MessageBox.Show(valor & “ “ & nombre)

End SubSub visualiza(ByRef dato1 As Integer, ByVal dato2 As String)

MessageBox.Show(dato1)Dato2 = “maria la flaca”dato1 = 1000

End Sub

PROGRAMANDO EN VISUAL BASIC .NET

30

Page 195: Módulo_4_El lenguaje VB

En este código declaramos un procedimiento al que se le pasan dos argumentos, uno por referencia y otropor valor, se puede ver que se muestra uno de los valores y otro se inicializa a 1000. Al hacer clic se lanza elevento y se inicializan dos variables y después se llama al procedimiento. Debemos comprobar que se hanpasado todos los valores como argumentos declarados y en el mismo orden de la llamada. Tras la llamada loque se muestra es 1000 ALFREDO. Al pasar por valor no hay posibilidad de modificar los datos en elprocedimiento, pero si lo pasamos por referencia es posible modificar los valores.

FUNCTION

[ <LISTAATRIBUTOS> ] [{ Overloads | Overrides | Overridable | NotOverridable | MustOverride | Shadows | Shared }] [{ Public | Protected | Friend | Protected Friend | Private }] Function NOMBRE[(LISTAARGUMENTOS] [ As TIPO] [ Implements interface.NOMBREDEFINIDO ]

[ SENTENCIAS ][ Exit Function ][ SENTENCIAS ]

End Function

La declaración de funciones es exactamente igual que la de los procedimientos, pero el objetivo es diferentecomo vamos a ver en estos ejemplos:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim resultado As Single

resultado = VolumenPrisma(TextBox1.Text, TextBox2.Text, TextBox3.Text)MessageBox.Show(resultado)

End SubFunction VolumenPrisma(ByVal lado1 As Single, ByVal lado2 As Single, ByVal lado3 As Single) As Single

Return lado1 * lado2 * lado3End Function

Se declara la función que calcula el volumen de un prisma. Se le van a pasaren un momento tres argumentoscorrespondientes a los lados del prisma. Es necesario poner el tipo de datos que devuelve en las funcionesjusto después de la lista de argumentos ya que las funciones devuelven un valor. Se esta especificando lapalabra clave return seguida de una expresión que es el cálculo del volumen y especifica el valor a retornarpor la función, tras ella podemos poner una referencia a una variable que contenga el dato que se desea quedevuelva. Otra opción es no usar return y usar una variable que tiene que tener el mismo nombre que lafunción a la que le asignamos el valor de retorno. Las modificaciones de pasar valores por referencia o valorfuncionan de igual modo que en los procedimientos.

PROGRAMANDO EN VISUAL BASIC .NET

31

Page 196: Módulo_4_El lenguaje VB

Pasos de argumentos a procedimiento o funciones.

Además de pasos por referencia y por valor hay otras alternativas posibles:

Paso de argumentos opcionalesCuando uno de los argumentos de la lista solo lo queremos pasar en alguna ocasiones y otras no. Paraespecificar la opcionalidad se ha de poner delante del nombre del argumento la palabra OPTIONAL. Siponemos un argumento opcional en la lista de una subrutina el resto de los argumentos también tienen queser opcionales, aunque también es posible que todos los argumentos sean opcionales. Ejemplo:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim a, b As Integer, resultado As Longa = 50b = 100

resultado = calculo1(a, b)MessageBox.Show(resultado)resultado = calculo1(a)MessageBox.Show(resultado)

End Sub

Function calculo1(ByVal a As Integer, Optional ByVal b As Integer = 1000) As LongReturn a * b

End Function

En el ejemplo vemos que se muestra una caja de dialogo standar el valor 5000 y después otro dialogo con50000, debido a que en la invocación le hemos pasado a la función dos argumentos por los que capta losvalores la función y realiza la expresión matemática dando un resultado. De modo contrario en la segundainvocación se le pasa el primer argumento que es obligatorio, se capta el valor por defecto asignado alsegundo argumento es 1000.

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim a, b As Integer, resultado As Longa = 50b = 100

resultado = calculo1(a, b)MessageBox.Show(resultado)resultado = calculo1(a)MessageBox.Show(resultado)resultado = calculo1(b)MessageBox.Show(resultado)

PROGRAMANDO EN VISUAL BASIC .NET

32

Page 197: Módulo_4_El lenguaje VB

End Sub

Function calculo1(Optional ByVal dato1 As Integer = 100, Optional ByVal dato2 As Integer = 1000) As Long

Return dato1 * dato2End Function

En este otro ejemplo se observa que los dos argumentos se han declarado como opcionales y se hanespecificado dos valores por defecto, así el programa devolverá primero la cifra 5000, después 50000 y porultimo 100000 que dependerá de cómo se llama a la función en un determinado momento.

Paso de argumentos por nombre

Podemos a la hora de invocar una subrutina, pasar argumentos por el nombre o identificador que tuviesencuando declaramos la subrutina, así no es necesario que los llamemos en un determinado orden.

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim a, b As Integer, resultado As Longa = 50b = 100

resultado = calculo1(dato2:=a)MessageBox.Show(resultado)

End Sub

Function calculo1(Optional ByVal dato1 As Integer = 20, Optional ByVal dato2 As Integer = 1000) As LongReturn dato1 * dato2

End Function

En este ejemplo se muestra la cifra 1000 ya que el único argumento pasado a la función es el segundo queespecificamos con su nombre de forma que el primer argumento no se pasa por lo que toma el valor pordefecto, 20, después hace la operación 20*50 y mostrará el resultado.

PROGRAMANDO EN VISUAL BASIC .NET

33

Page 198: Módulo_4_El lenguaje VB

Paso de un número variable de argumentos

No solo no se saben los valores que se van a pasar a una subrutina sino que además no se sabe ni el numerode argumentos que se le van a pasar. Veamos un ejemplo:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim a, b, c As Integer, resultado As Longa = 100b = 200c = 300

resultado = calculo1(a)MessageBox.Show(resultado)resultado = calculo1(a, b)MessageBox.Show(resultado)resultado = calculo1(a, b, c)MessageBox.Show(resultado)resultado = calculo1(a, 40, 50, 60, 70)MessageBox.Show(resultado)

End Sub

Function calculo1(ByVal ParamArray datos() As Integer) As LongDim suma As Long, valor As IntegerFor Each valor In datos

suma += valorNextReturn suma

End Function

Primero devuelve 100, luego 300,600 y finalmente 320 ya que todos los valores que se le pasan comoargumentos formaran parte de un solo array llamado datos. En el interior de la función se recorren loselementos de este array independientemente del numero de argumentos.

PROGRAMANDO EN VISUAL BASIC .NET

34

Page 199: Módulo_4_El lenguaje VB

Paso de arrays a funciones o procedimientos

A una función o procedimiento podemos pasarle un array en la lista de argumentos haciendo posible que elvalor que devuelva la función sea un array.

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.ClickDim provincias() As String = {“CADIZ”, “CORDOBA”, “SEVILLA”, “JAEN”}

MUESTRAARRAY(provincias)End Sub

Sub MUESTRAARRAY(ByVal DATOS() As String)Dim DAT As StringFor Each DAT In DATOS

MessageBox.Show(DAT)Next

End Sub

En el código se declara en el procedimiento de evento de un botón u array de tipo string que tiene cuatroprovincias, además se llama a un procedimiento pasando como argumento simplemente el nombre del array.

En la declaración el procedimiento hay un array en la lista de argumentos, pudiéndose tratar dentro de lafunción con todas sus posibilidades.

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

Dim VALORES(), A As String

VALORES = provincias(“ANDALUCIA”)For Each A In VALORES

MessageBox.Show(A)Next

End Sub

Function provincias(ByVal autonomia As String) As ArrayDim PROV() As String

If autonomia = “ANDALUCIA” ThenReDim PROV(7)PROV(0) = “SEVILLA”PROV(1) = “CORDOBA”PROV(2) = “ALMERIA”PROV(3) = “GRANADA”

PROGRAMANDO EN VISUAL BASIC .NET

35

Page 200: Módulo_4_El lenguaje VB

PROV(4) = “MALAGA”PROV(5) = “HUELVA”PROV(6) = “CADIZ”PROV(7) = “JAEN”Return PROV

End IfEnd Function

Se observa como se declara una función cuyo valor de retorno es un array, pasándoseles una de las autonomíascomo argumento. Cuando la autonomía sea Andalucía se redimensiona y se introduce en cada elemento delarray las provincias que tiene Andalucía. Después se especifica la palabra clave return con el nombre del arrayya inicializado. A la hora de llamar a la función provincias se procede como cualquier función ya que siempredevuelven un valor, la invocación se hará la derecha de una sentencia de asignación aunque la variable ausar para volcar todo lo que devuelve la función será un array, de esta forma se rellena el array y se puedehacer con él las operaciones que queramos.

Paso de tipos definidos de usuario o estructuras

Al igual que con los arrays es posible que a una función o procedimiento se le pase una estructura comoargumento y que devuelva una estructura al programa que la invoque.

Structure libroPublic titulo As StringPublic autor As StringPublic páginas As Integer

End StructureStructure ESTANTE

Public ZONA As IntegerPublic BALDA As Integer

End Structure

Dim libros As libroDim ESTANTERIA As ESTANTE

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.ClickDim ESTA As ESTANTElibros.titulo = “EL QUIJOTE DE LA MANCHA”libros.autor = “CERVANTES”libros.páginas = 1240ESTA = MUESTRAESTRUCTURA(libros)

MessageBox.Show(ESTA.BALDA)MessageBox.Show(ESTA.ZONA)

End Sub

PROGRAMANDO EN VISUAL BASIC .NET

36

Page 201: Módulo_4_El lenguaje VB

Function MUESTRAESTRUCTURA(ByVal VALOR As libro) As ESTANTEIf VALOR.autor = “CERVANTES” Then

ESTANTERIA.BALDA = 12End IfIf VALOR.titulo = “EL QUIJOTE DE LA MANCHA” Then

ESTANTERIA.ZONA = 4End IfReturn ESTANTERIA

End Function

Inicialmente se declaran dos estructuras, para mandar los valores a la función y para recibir los valores dela función. Al llamar a la función se pasa el nombre de la variable asignada a la estructura pero antes dellamar a la función lógicamente se ha puesto los datos en cada campo de la estructura. En al declaración ela función además de pasar en el argumento una variable de tipo estructura se ha declarado el tipo devueltopor la función. Si se asigna lo que devuelve la función a una variable de tipo estructura no habrá problemaspara alojar en ella los campos que devuelve la función.

Paso de objetos a funciones y procedimientos

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button5.Click

IGUALAOBJETOS(Button5, Button6)End Sub

Sub IGUALAOBJETOS(ByVal OBJ1 As Button, ByVal OBJ2 As Button)

OBJ2.BackColor = OBJ1.BackColorOBJ2.Font = OBJ1.FontOBJ2.ForeColor = OBJ1.ForeColor

End Sub

En el código se llama a un procedimiento donde hay declarados dos objetos de tipo botón como argumentosy son captadas todas las características de ambos objetos que se pasan. Después se igualan algunaspropiedades de uno relacionando al otro.

PROGRAMANDO EN VISUAL BASIC .NET

37

Page 202: Módulo_4_El lenguaje VB

Ejemplos con Visual Basic .NET

Tipos VB NET:

Module Module1

Sub Main()

Dim B As ByteDim Bclr As System.Byte

Dim S As ShortDim Sclr As System.Int16

Dim I As IntegerDim Iclr As System.Int32

Dim L As LongDim Lclr As System.Int64

Dim SI As SingleDim SIclr As System.Single

Dim D As DoubleDim Dclr As System.Double

Dim DE As DecimalDim DEclr As System.Decimal

Dim C As CharDim Cclr As System.Char

Dim BO As BooleanDim BOclr As System.Boolean

Dim DA As DateDim DAclr As System.DateTime

Dim ST As StringDim STclr As System.String

PROGRAMANDO EN VISUAL BASIC .NET

38

Page 203: Módulo_4_El lenguaje VB

Dim x1 As Byte, x2 As Short, x3 As Integer, x4 As Long, x5 As Single, _x6 As Double, x7 As DecimalDim x8, x9 As Integerx8 = 1000000Dim x10 As Byte = 7Dim x11 As Double = 2.2323, x12 As Decimal = 8.82372

Dim m$ = “234ds”

ST = “saludos”C = “a”DAclr = “#20/02/04#“BO = False

Console.WriteLine(x11 & x12)Console.WriteLine(x11 + x12)Console.Write(ST & “desde NET”)Console.WriteLine(TypeName(ST))MsgBox(BO)MsgBox(ST & “ “ & C & “ “ & “todos”)MsgBox(“dia” & DAclr)MsgBox(TypeName(m) + m.GetType().ToString())‘ TypeName me devuelve el tipo de VisualBasic‘GetType me devuelve el tipo CTS

End Sub

End Module

Ambito:

Module Module1

Sub Main()

Dim x As Integer = 5

If x = 5 ThenDim y As String = “Saludos”

End If

PROGRAMANDO EN VISUAL BASIC .NET

39

Page 204: Módulo_4_El lenguaje VB

Console.WriteLine(x & y)‘Y no lo reconoce porque esta declarado en un ambito local‘sin embargo estamos intentando acceder desde otro ambito mas general

End Sub

End Module

Consola:

Module Module1

Sub Main()

Console.WriteLine(“Introduce primer numero”)Dim primero As Integer = System.Convert.ToInt16(Console.ReadLine())Console.WriteLine(“Introduce segundo numero”)Dim segundo As Integer = System.Convert.ToInt16(Console.ReadLine())Console.Write(“la suma de los dos parametros vale “)Console.WriteLine(primero + segundo)

End Sub

End Module

Acceso:

Module Module1Public Class Clase1

Public variable11 As StringPrivate variable12 As StringDim variable13 As String ‘por defecto no es accesiblePublic Sub procedimiento11()

Console.WriteLine(“soy el procedimiento11 de Clase1”)End SubPrivate Sub procedimiento12()

Console.WriteLine(“soy el procedimiento12 de Clase1”)End SubSub procedimiento13()

Console.WriteLine(“soy el procedimiento12 de Clase1”)End Sub

End Class

PROGRAMANDO EN VISUAL BASIC .NET

40

Page 205: Módulo_4_El lenguaje VB

Class Clase2Public Sub procedimiento2()

Dim objeto1 As New Clase1()objeto1.variable11 = “como objeto1 es Public puedo acceder desde otra clase”objeto1.procedimiento11() ‘lo mismo ocurre con procedimiento1objeto1.procedimiento13() ‘si no indicamos nada los procedimientos son accesibles

End SubEnd ClassSub Main()

Dim objeto3 As New Clase1()objeto3.variable11 = “tambien puedo acceder a los miembros publicos desde aqui”objeto3.procedimiento11()objeto3.procedimiento13()Dim objeto4 As New Clase2()objeto4.procedimiento2()

End SubEnd Module

Programas resumen:

Module Module1REM tambien sirve para comentariosClass Persona

‘ campos (propiedades) ‘ son datos comunes a todos los objetos de una clasePublic Nombre As String = “valor de la propiedad por defecto”Public Edad As IntegerPublic DNI As Boolean

‘ metodo : conjunto de acciones (instrucciones) asociadas a un nombre‘ para ejecutar las acciones hay que llamar al nombre del metodoPublic Sub respira()

Console.WriteLine(“puedo respirar”)End Sub

‘ Constructor (en este caso con 2 parametros)‘ si no creamos ningun constructor se crea uno por defecto‘sin parametros, en este caso seria : public Persona () { }Public Sub New(ByVal edad As Integer, ByVal dni As Boolean)

PROGRAMANDO EN VISUAL BASIC .NET

41

Page 206: Módulo_4_El lenguaje VB

‘ el miembro(propiedad) ‘Edad’ de la clase Persona toma el valor del‘ parametro ‘edad’que le pasamos por el constructor‘ lo mismo ocurre con ‘DNI’ y ‘dni’Me.Edad = edadMe.DNI = dni‘ sin embargo el miembro(propiedad)‘Nombre’toma el valor por defecto‘ asignado en la declaracion de propiedades

End SubEnd Class

Sub Main()‘creamos (instanciamos) un objeto de la clase Persona ‘Persona persona1=’‘ new no devuelve el propio objeto sino una referencia a el Dim persona1 As New Persona(32, True)Console.WriteLine(persona1.Edad & “ “ & persona1.Nombre & _“ “ & persona1.DNI)persona1.respira()

End Sub

End Module

Module Module1‘ los metodos pueden ser Procedimentos Sub o funciones FunctionClass Clase

‘Sub no devuelve valoresPublic Sub metodo1()

Console.WriteLine(“soy un constructor sin parametros”)End SubPublic Sub metodo1(ByVal a As Integer)

Console.WriteLine(Math.Sqrt(a))End SubPublic Sub metodo1(ByVal b As Double, ByVal c As Double)

Console.WriteLine(Math.Pow(b, c))End SubPublic Sub metodo1(ByVal d As String())

Console.WriteLine(d(0) + d(1) + d(2))End SubPublic Sub metodo2(ByVal e As Char)

Console.Write(“este no tiene nada que ver con de metodo1”)Console.WriteLine(“ “ & e)

End Sub

PROGRAMANDO EN VISUAL BASIC .NET

42

Page 207: Módulo_4_El lenguaje VB

‘Function devuelve valoresPublic Function metodo3() As Boolean

Return TrueEnd FunctionPublic Function metodo4() As Integer

Console.WriteLine(“ademas de devolver valores puedo realizar acciones”)Return 56

End FunctionPublic Function metodo4(ByVal f As Char, ByVal g As Char) As String

Console.WriteLine(“ademas me pueden pasar parametros”)Return f.ToString() & g.ToString()

End Function‘ constructores de la clasePublic Sub New()End SubPublic Sub New(ByVal x As Byte, ByVal y As Long)End SubPublic Sub New(ByVal p As String, ByVal r As Char, ByVal s As Double(), ByVal t As Boolean)End Sub

End Class

Sub Main()‘ instancio objetos y llamo a metodos(sub o function)Dim objeto As New Clase()Dim objeto2 As New Clase(3, 29383)Dim objeto3 As New Clase(“sndnj”, “t”, New Double() {2.12, 23.292, 173.198}, False)objeto.metodo1()objeto.metodo1(9)objeto.metodo1(2.0, 4.0)objeto.metodo1(New String() {“buenos”, “ dias “, “ ¿que tal?”})objeto.metodo2(“#“)Dim w As Boolean = objeto.metodo3()Console.WriteLine(w)Dim v As Integer = objeto.metodo4() ‘ ademas de la asignacion provoca la ejecucion del metodoConsole.WriteLine(v)Console.WriteLine(objeto.metodo4(“a”, “b”))‘ ademas de mostrar el resultado (return) tambien provoca la ejecucion del metodo

End Sub

End Module

PROGRAMANDO EN VISUAL BASIC .NET

43

Page 208: Módulo_4_El lenguaje VB

Matrices:

Module Module1

Sub Main()Dim numeros(4) As Integer ‘ declaramos array de tipo Integer ‘ con 5 elementos, porque el 4 es el indice del ultimo elemento,‘ y los array empiezan en 0numeros(0) = 1 ‘ asignamos los valores de los elementos del arraynumeros(1) = 2numeros(2) = 3numeros(4) = 4Console.WriteLine(“la longitud del array numeros es : “ & numeros.Length())Dim i As IntegerFor i = 0 To numeros.Length - 1 ‘ el quinto y ultimo tiene indice 4

Console.WriteLine(“posicion:” & i & “ resultado:” & numeros(i))NextDim tabla(2, 3) As Byte ‘declaramos un array bidimensional‘ con 3 filas (filas 0,1 y 2) y 4 columnas (columnas 0,1,2 y 3)tabla(0, 0) = 11tabla(0, 1) = 12tabla(0, 2) = 13tabla(0, 3) = 14tabla(1, 0) = 21tabla(1, 1) = 22tabla(1, 2) = 23tabla(1, 3) = 24tabla(2, 0) = 31tabla(2, 1) = 32tabla(2, 2) = 33tabla(2, 3) = 34Dim fila, columna As IntegerFor fila = 0 To 2 Step 1 ‘ step es opcional, por defecto tb seria 1

For columna = 0 To 3Console.WriteLine(“posicion:” & fila & columna & “ resultado:” & tabla(fila, columna))

NextNextDim letras() As Char = {“a”, “b”, “c”, “d”, “e”}‘ este array las dimensiones las coge de lo que encuentra despues del =Dim letra As Char

PROGRAMANDO EN VISUAL BASIC .NET

44

Page 209: Módulo_4_El lenguaje VB

For Each letra In letrasConsole.WriteLine(letra)

NextDim calles(,) As String = {{“Lagasca”, “Goya”, “Gran Via”, “Castellana”, “Arturo Soria”}, _{“Cibeles”, “Neptuno”, “Puerta del Sol”, “Callao”, “Emilio Castelar”}, _{“Duque de Pastrana”, “Canal”, “Tetuan”, “Mar de Cristal”, “Sevilla”}}Dim calle As StringFor Each calle In calles ‘ saca todos los elementos de uno en uno

Console.WriteLine(calle)Next calle

End Sub

End Module

PROGRAMANDO EN VISUAL BASIC .NET

45