TEMA 6.- SINTAXIS BÁSICA DE VB .
NET
6.1. Introducción
Es momento de que formalices las nociones de programación aprendidas con
pseudocódigo mediante el uso de un lenguaje de programación concreto, en
este caso Visual Basic .NET.
El objetivo de este tema será
aprender como se declaran
variables y constantes, los tipos de
datos simples y complejos, como
los arrays y las estrucutras, y
además ahondaremos en la sintaxis
concreta del uso de operadores.
La sintaxis basica de Visual Basic
.NET, al que a partir de ahora
llamaremos VB .NET para abreviar,
es muy similar en algunos aspectos
a Visual Basic “tradicional” (no .NET), y si conoces algo de este lenguaje es
seguro que encontrarás esas similitudes.
Si no conoces nada de VB tampoco te preocupes. La idea original con la que
nació VB, era la de proporcionar a los desarrolldores un lenguaje que fuera
sencillo de entender, por su cercania al lenguaje natural (el Inglés) , y este
mismo espiritu se ha intentado mantener en su reedición en .NET con el añadido
de sustentarse sobre un potente Framework.
Si sigues con detenimiento este tema, una vez completado, serás capaz de
realizar tus primeros programas sencillos.
Programación .NET I . Sintaxis básica
6.2. Estructura de una aplicación VB
Lo primero que nunca debes olvidar es que toda aplicación Visual Basic tiene
un punto de entrada a la secuencia de ejecución. Este punto de entrada es la
función Main()
Sub Main()
End Sub
Sin embargo antes de que el programa se ponga en marcha a través de la
función Main() es posible encontrarse con algunos elementos del lenguajes
útiles para organizar el código.
Estos elementos del lenguaje son :
Option
Option
La sentencia Optión nos ayuda a que el código que estamos
escribiendo sea más correcto. Mediante dicha sentencia se puede
forzar el control sobre la declaración de variables y sobre la
conversión de tipo de datos. La sintaxis para la sentencia Option es
la siguiente:
• Option Explicit On/Off
Cuando esta opción esta en “on”, se deben declarar
explícitamente todas las variables mediante instrucciones Dim
o ReDim. Si se intenta utilizar un nombre de variable no
declarada, se producirá un error en tiempo de compilación.
• Option Strict On/Off
Visual Basic permite realizar conversiones de muchos tipos de
datos a otros tipos de datos. Sin embargo, se pueden perder
datos cuando el valor de un tipo de datos se convierte en un
tipo de datos con menor precisión o menor capacidad. Option
Strict garantiza la notificación en tiempo de compilación de
estas conversiones de restricción para que puedan evitarse
Si se utiliza, cualquiera de estas instrucciones Option deben aparecer
antes de cualquier otra instrucción de código fuente
6.2 Programación .NET I . Sintaxis básica
Namespace
Namespace
Los espacios de nombres (namespace) son la herramienta que
usamos para agrupar bajo un mimo nombre un conjunto de clases
que tienen algún tipo de relación entre sí. Lo bueno de esta
clasificación y agrupación es que se evitan los problemas que
pudieran surgir de tener distintas clases con el mismo nombre.
Gracias al espacio de nombre se pueden distinguir unas de otras por
su namespace aunque se llamen igual.
La estructura de un espacio de nombres es jerárquica pudiendo
existir espacios de nombres dentro de otros
Namespace Coctail
Namespace Alcoholicos
Public Class Margarita
'Clase Coctail.Alcoholicos.Margarita
End Class
End Namespace
End Namespace
Namespace Flores
Public Class Margarita
'Clase Flores.Margarita
End Class
End Namespace
Programación .NET I . Sintaxis básica 6.3
Imports
Imports
Gracias a la organización en namespaces es posible hacer referencia
inequívocamente a cualquier clase dentro de nuestras sentencias de
código, sin embargo, en algunas ocasiones esto puede ser algo
farragoso desde el punto de vista de la escritura y limpieza del
código.
Lo que hace Imports es indicarle al compilador que si no encuentra
una clase en el espacio de nombres actual, la busque en el espacio
de nombres que hemos importado.
Ejemplo:
Sentencias sin el uso de Imports:
Module Module1
Sub Main()
System.Console.WriteLine("hola Mundo !!")
End Sub
End Module
Sentencias usando Imports:
Imports System.Console
Module Module1
Sub Main()
WriteLine("hola Mundo !!")
End Sub
End Module
6.4 Programación .NET I . Sintaxis básica
6.3. Tipos de datos, variables y operadores
Tipos de datos
Seguramente recuerdas de los primeros temas que los datos, para ser tratados,
se almacenan en variables y que estas variables deben especificar que tipo de
datos van a contener, pues bien los tipos de datos que puedes manejar en
Visual Basic .NET son los tipos primitivos, las estructuras y el tipo enumerado.
Dentro de los tipos primitivos habíamos hablado con anterioridad de los tipos
de datos enteros, reales, lógicos, carácter y el tipo fecha. Aunque
conceptualmente ya los conoces es muy recomendable que sepas cual es la
sintaxis correcta para nombrarlos en Visual Basic .NET
Las estructuras son una agrupación de tipos básicos o de otras estructuras.
Realmente con la programación orientada a objetos no sería necesario el uso
de este tipo de datos pues una clase puede suplir con creces la funcionalidad
de una estructura.
Por último los tipos enumerados son tipos definidos por el usuario y que constan
de una colección de elementos.
Tipos primitivos
Dim lógico As Boolean
Dim caracter As Char
Dim entero_corto_16bits As Short
Dim entero_normal_32bits As Integer
Dim entero_largo_64bits As Long
Dim numero_decimal As Decimal
Dim flotante_doble_precision As Double
Dim fecha As Date
Dim cadena As String
Estos tipos primitivos son los más utilizados de manera habitual sin
embargo puedes ver una lista más completa de los tipos de datos
básicos así como el tamaño en memoria de los mismo consultando
en la siguiente tabla.
Programación .NET I . Sintaxis básica 6.5
6.6 Programación .NET I . Sintaxis básica
Estructuras
Las estructuras, también conocidas en otros lenguajes como
registros, son una agrupación de datos que por norma general
tienden a ir juntos como una sola unidad con significado. Estos datos
agrupados no tienen por que ser del mismo tipo.
La sintaxis Visual Basic para declarar una estructura es:
Structure nombreestructura
Dim nombrevariablemiembro1 As Tipo de dato
Dim nombrevariablemiembro2 As Tipo de dato
End Structure
Para declarar una variable del tipo estructura:
Dim Nombrevairableestrucutra As New nombreestructura
Para acceder al contenido de las variables miebro (también
conocidas como campos) que componen la estructura debes usar la
notación punto:
Nombrevairableestrucutra.nombrevariablemiebro
Ejemplo de estructura
Imports System.Console
Module Module1
'Declaramos una estructura llamada Empleado
Structure Empleado
'Dentro de esta estructura delcaramos
'los campos que la componen
Dim NombreEmpleado As String
Dim ApellidosEmpleado As String
Dim PuestoEmpleado As String
Dim SalarioEmpleado As Double
Dim EmpId As Integer
End Structure
Programación .NET I . Sintaxis básica 6.7
Sub Main()
'Instanciamos una variable de tipo Empleado
Dim MiEmpleado As New Empleado()
'y se asignan valores a las variables miembro de la estrucutra
MiEmpleado.NombreEmpleado = "Marcial"
MiEmpleado.ApellidosEmpleado = "Ruiz Escribano"
MiEmpleado.PuestoEmpleado = "Programador"
MiEmpleado.SalarioEmpleado = 30000
MiEmpleado.EmpId = 2707
'Accedemos a las variables miembro mediante el operador punto
WriteLine("Nombre Empleado: " + MiEmpleado.NombreEmpleado)
WriteLine("Apellidos Empleado:" + MiEmpleado.ApellidosEmpleado)
WriteLine("Puesto Empleado: " + MiEmpleado.PuestoEmpleado)
WriteLine("Salario :" + MiEmpleado.SalarioEmpleado.ToString)
WriteLine("EmpID :" + MiEmpleado.EmpId.ToString)
Read()
End Sub
End Module
6.8 Programación .NET I . Sintaxis básica
Enumeraciones
Las enumeraciones no son más que una colección de elementos a
los que se les asocia un número. Una de las principales ventajas de
usar tipos enumerados es que pueden ayudar a hacer el código más
legible.
La sintaxis Visual Basic para declarar una enumeración es:
Enum Nombre_tipo_enumerado
Elemento_1 [= valor inicial]
Elemento_2 [= valor inicial]
. . .
Elemento_N [= valor inicial]
End Enum
Inicializar los elementos de la enumeración es opcional, en caso de
no hacerlo se les asignará valores del 0 en delante de manera
consecutiva.
Para acceder a los valores de la lista enumerada debemos usar la
notación punto:
Variable = tipo_enumerado.Elemento
La diferencia entre un tipo enumerado y una estructura es que en
una enumeración los valores son todos del mismo tipo, de tipo
numérico y que son siempre constantes, solo se les puede definir en
tiempo de diseño y no se pueden alterar en tiempo de ejecución.
Programación .NET I . Sintaxis básica 6.9
Ejemplo de tipo enumerado
Imports System.Console
Module Module1
'Declaramos una enumeración llamada Puntos cardinales
Enum puntos_cardinales
Norte
Sur
Este
Oeste
End Enum
Sub Main()
'Instanciamos una variable de tipo entero
Dim cardinal As Integer
'y se asigna el valor correspondiente de un
'elemento de la lista enumerada
cardinal = puntos_cardinales.Oeste
'Mostramos el valor por pantalla
WriteLine("Punto cardinal elegido vale " + cardinal.ToString)
Read()
End Sub
End Module
6.10 Programación .NET I . Sintaxis básica
Variables
El concepto de variable esta estrechamente ligado al concepto de tipo de datos,
por eso resulta complejo explicar una cosa sin haber explicado previamente la
otra y viceversa.
Afortunadamente ya conoces lo que son las variables gracias a la introducción
a la programación de los primeras temas del curso, por esta razón venimos
haciendo uso de ellas en nuestros ejemplos de manera natural para almacenar
los valores de los datos
No obstante, es una buena idea formalizar la sintaxis que se emplea en Visual
Basic .Net para declarar, inicializar y acceder a las variables.
Declarar vaiables
La sentencia básica de declaración de una variable tiene esta forma:
Dim nombrevariable As Tipo
Aunque puedes declarar múltiples variables en una sola sentencia
Dim variable1 As Tipo1, variable2 As Tipo2
Incluso de esta otra forma si todas las variables son del mismo tipo
Dim variable1, variable2,variableN As Tipo
Programación .NET I . Sintaxis básica 6.11
Inicializar vaiables
Mediante la sentencia de declaración puedes dar un primer valor de
inicio de una variable
Dim nombrevariable As Tipo = valor
Ejemplos:
Dim cardinal As Integer = 7
Dim Nombre As String = "Alberto"
Si declara más de una variable con la misma cláusula As, no se
puede inicializar los valores para ese grupo de variables.
Ejemplo de inicialización errónea:
Dim Apellidos, Nombre As String = "Alberto"
Acceder a las vaiables
El acceso a las variables está determinado por el ámbito de la
variable. Este concepto ya lo has visto en temas anteriores y
volveremos sobre él más adelante cuando tratemos las cuestiones
relacionadas con las funciones y procedimientos
6.12 Programación .NET I . Sintaxis básica
Operadores
Los operadores son símbolos que nos permiten manipular, y transformar datos,
por lo tanto por si mismos no tienen entidad y siempre van a parecer en
expresiones junto con los datos a los que afectan.
En la expresión
precio = descuento + 10
el símbolo ‘=’ y el símbolo ‘+’ están afectando al valor de la variable ‘precio’
valiéndose del valor de la variable ‘descuento’ y del literal ‘10’.
Como ya comentábamos en temas anteriores existen distintos tipos de
operadores y pueden resumirse en las siguientes categorías:
Operadores de asignación
Operadores aritméticos
Operadores de comparación
Operadores Lógicos
Operadores de cadena
Programación .NET I . Sintaxis básica 6.13
Asignación
La asignación es una de las operaciones elementales dentro de la
programación y sirve para designar el contenido de una variable.
Hasta ahora habías visto el operador de asignación simple
Operando1 = operando 2
con el que se cambia el valor del operando de la izquierda con el
valor del operando de la derecha.
Sin embargo existen operandos de asignación algo más complejos
que permiten realizar de manera simultánea una operación
aritmética y una asignación
Operador Operación Ejemplo Equivalencia
= Asignación simple a=b
^= Exponenciación y asignación a ^= b a=a^b
*= Multiplicación y asginación a *= b a=a*b
/= División real y asginación a /= b a=a/b
= División entera y asignación a=b a=a b
+= Suma y asginación a += b a=a+b
-= Resta y asginación a -= b a=a-b
&= Concatenación y asginación a &= b a=a&b
6.14 Programación .NET I . Sintaxis básica
Aritméticos
Estos operadores son los usados habitualmente para llevar a cabo
operaciones matemáticas elementales
Operador Descripción
+ Suma
- Resta
* Multiplicación
/ División
División entera
Mod Resto de la división
^ Exponenciación
Comparación
Los operadores de comparación devuelven siempre un valor
booleano, cierto (True) o falso (False) dependiendo de si se cumple
o no la premisa que están postulando.
Operador Descripción
== Igual que
<> Distinto que
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
Las expresiones con operadores de comparación son utilizadas muy
frecuentemente para la decisión sobre el flujo de ejecución del
programa. Seguro que las verás aparecer muy frecuentemente
cuando estudies las estructuras de control más adelante.
Programación .NET I . Sintaxis básica 6.15
Aritméticos
Al igual que sucedía con los operadores de comparación, los
operadores lógicos devuelven siempre un valor booleano, cierto
(True) o falso (False).
Operador Descripción
Devuelve Verdadero (True) si ambos operandos
son Verdaderos (True), en otro caso devuelve el
AND valor Falso (False)
Devuelve Verdadero (True) si alguno de los
operandos es Verdadero (True), de no ser así
OR devuelve Falso (False)
Invierte el valor del operando. Si era Verdadero
(True) devuelve Falso (False) y si era Falso
NOT (False) devuelve Verdadero (True)
Devuelve Verdadero (True) si uno y solo uno de
XOR los operandos es Verdadero (True)
Puedes ver resumido el funcionamiento de estos operadores en la
siguiente tabla de verdad
A B A AND B A OR B NOT A A XOR B
V V V V F F
V F F V F V
F V F V V V
F F F F V F
6.16 Programación .NET I . Sintaxis básica
Concatenación
La concatenación es una operación aplicable a las cadenas de
caracteres. Consiste en unir o juntar uno o más caracteres. El
operador de concatenación es el símbolo &
Ejemplo:
Dim a1 As String = "Hola"
Dim a2 As String = " Mundo!"
Dim a3 As String
a3 = a1 & a2
System.Console.WriteLine(a3)
El resultado por pantalla será el mensaje: Hola Mundo!
La concatenación es una de las operaciones más básicas que se
pueden realizar con las cadenas de caracteres. Visual Basic . NET
ofrece un conjunto de funciones (métodos de la clase System.String)
especificas para trabajar con cadenas que permiten al desarrollador
manipular cadenas de caracteres con mayor facilidad.
Entre estos métodos encontrarás herramientas para limpiar y
recortar cadenas, hacer rellenos en cadenas o compararlas.
Programación .NET I . Sintaxis básica 6.17
6.4. Otros tipos complejos de datos
Arrays y matrices
Un array es una colección de elementos del mismo tipo, almacenados de
manera consecutiva en memoria, con un nombre común y accesible mediante
un índice.
Los términos matrices y arrays se utilizan indistintamente como sinónimo,
aunque suele ser más habitual utilizar el término array en programación y el
término matriz en el ámbito matemático. Aunque las palabras array y matrices
pueden sonar a conceptos matemáticos complejos, realmente son sencillos de
entender con un ejemplo.
Fíjate en la imagen de la huevera puedes apreciar
un matriz de 5 filas por 4 columnas, y si
atendemos a la primera definición estamos ante
una colección de elementos del mismo tipo
(huevos), están almacenados uno de tras de otro
en un espacio bien definido (hay un hueco
reservado para cada huevo, independientemente
de que esté ocupado o no) , es fácil referirse al
conjunto con un nombre común (huevera) y sencillo de referenciar a un
elemento concreto mediante índices (por ejemplo tercera fila, segunda
columna) .
Los arrays pueden tener una o varias dimensiones, por eso podemos hablar
de arrays unidimensionales (arrays de una única fila ) o multidimensionales
(aunque gráficamente nos resulte complicado representar más de 3).
Para declarar una variable de tipo array en Visual Basic se utiliza la siguiente
notación
Dim nombre_array() As Tipodato
Mediante los paréntesis indicamos que la variable es un array, siendo
fundamental además indicar el tipo de datos de los elementos del array
Desde el punto de vista de la programación nos interesa hacer otra distinción,
arrays estáticos y arrays dinámicos
6.18 Programación .NET I . Sintaxis básica
Arrays estáticos
Declarar un array no implica crearlo, realmente para crear un array hay que
reservar la memoria necesaria para albergar los elementos de ese array, por
esta razón es tan importante distinguir los arrays estáticos de los dinámicos.
Un array estático es aquel del que podemos decir a priori de cuantos elementos
va a constar, lo que se conoce comúnmente como longitud del array. Por tanto
un array estático es un array con un número definido de elementos que lo
forman.
La sintaxis para la creación de este tipo de arrays es la siguiente:
Dim nombrearray(numero_de_elementos) As Tipodatos
Debes tener en cuenta que los elementos de un array empiezan a contarse
desde el índice 0, por lo que si quieres por ejemplo un array de 10 elementos
tipo cadena la declaración debería ser así
Dim cadena_array(9) As String
Al igual que con otro tipo de variables, los arrays se pueden inicializar en el
momento de la declaración, para hacer esto debes utilizar la siguiente sintaxis:
Dim nombarry() As Tipo = New Tipo(num_elementos) {elemento_1, elemento_2,
. . ., elemento_n}
Por ejemplo si quisiéramos declarar e inicializar un array con cuatro elementos
de tipo cadena:
Dim cardinales() As String = New String(3) {"Norte", "Sur", "Este",
"Oeste"}
Para poder acceder a cualquier elemento de un array (independientemente de
si es dinámico o estático) es necesario conocer y utilizar su índice
Ejemplo:
cardinales(0) = "N"
cardinales(1) = "S"
cardinales(2) = "E"
cardinales(3) = "O"
Programación .NET I . Sintaxis básica 6.19
Arrays dinámicos
Un array dinámico es aquel del que no podemos decir a priori de cuantos
elementos va a constar. Por tanto un array dinámico es un array con un número
inicialmente no definido de elementos que lo forman y cuya longitud puede ser
cambiada ajustándola a nuestras necesidades.
La sintaxis para la creación de este tipo de arrays es la siguiente:
Dim nombrearray() As Tipodatos
Cuando quieras acotar la longitud del array debes usar la palabra reservada
ReDim
Ejemplo:
Dim nombrearray() As Integer
ReDim nombrearray(6)
Es muy importante tener en cuenta que al redimensionar un array los datos
que pudiera contener se pierden, a no ser que especifiquemos lo contrario
mediante la palabra reservada Preserve
ReDim Preserve nombrearray(6)
Cuando se trabaja con arrays, especialmente los dinámicos, puede ser
interesante hacer uso de algunas funciones específicas para trabajar con arrays
Ubound , Lbound y Length
6.20 Programación .NET I . Sintaxis básica
Ubound
La función Ubound devuelve el límite superior de un array:
lsuperior = UBound(miArray)
Lbound
La función Lbound devuelve el límite inferior de un array:
linferior = LBound(miArray)
Lenght
La función Length devuelve el número de elementos de un array:
num_ele = miArray.Length
Programación .NET I . Sintaxis básica 6.21
Ejemplo de Arrays
Module Module1
Sub Main()
Dim miArrayDinamico() As Integer = New Integer() {}
ReDim Preserve miArrayDinamico(6)
' Declaramos e incializamos el Array
Dim miArrayEstatico() As String = New String(3) {"John", "Paul",
"George", "Ringo"}
'Mostramos por pantalla el contenido del array
Dim i As String
For Each i In miArrayEstatico
System.Console.WriteLine(i)
Next
'Cambiamos el contenido del array
System.Console.WriteLine(vbCrLf & " -- Cambiamos el contenido de
los elementos del array -- " & vbCrLf)
miArrayEstatico(0) = "Norte"
miArrayEstatico(1) = "Sur"
miArrayEstatico(2) = "Este"
miArrayEstatico(3) = "Oeste"
'Mostramos por pantalla el contenido del array
For Each i In miArrayEstatico
System.Console.WriteLine(i)
Next
'Mostramos por pantalla los límites y el numero de elementos
System.Console.WriteLine("Limite inferior: " &
LBound(miArrayEstatico).ToString)
System.Console.WriteLine("Limite superior: " &
UBound(miArrayEstatico).ToString)
System.Console.WriteLine("Numero de elementos: " &
miArrayEstatico.Length)
System.Console.Read()
6.22 Programación .NET I . Sintaxis básica
Dim v As Integer
v = LBound(miArrayEstatico)
End Sub
End Module
Programación .NET I . Sintaxis básica 6.23