VISUAL BASIC
Estructura de Visual Basic
Elementos de programación en el nivel de archivo
Instrucciones Option Instrucciones Imports - Instrucciones Namespace y elementos del nivel de espacio de nombres
Si escribe instrucciones en un orden distinto, pueden producirse errores de compilación.
Instrucciones Option
Instrucciones Imports
Instrucciones Namespace
Instrucciones de compilación condicional
Elementos de programación en el nivel de espacio de nombres
Los elementos de datos en el nivel de espacio de nombres son las enumeraciones y los delegados.
Elementos de programación en el nivel de módulo
Los elementos de datos en el nivel de módulo son las variables, las constantes, las enumeraciones y los delegados.
Elementos de programación en el nivel de procedimiento
Los elementos de datos en el nivel de procedimiento se limitan a las constantes y las variables locales.
Procedimiento Main
- Sub Main()
- Sub Main(ByVal cmdArgs() As String)
- Function Main() As Integer
- Function Main(ByVal cmdArgs() As String) As Integer
Tipos de Datos
La tabla siguiente muestran los tipos de datos de Visual Basic, sus tipos auxiliares de common language runtime, su asignación de almacenamiento nominal y sus intervalos de valores.
Tipo de Visual Basic | Estructura de tipo de Common language runtime | Asignación de almacenamiento nominal | Intervalo de valores |
---|---|---|---|
Boolean | Boolean | Depende de la plataforma de implementación | True o False |
Byte | Byte | 1 byte | 0 y 255 (sin signo) |
Char(carácter individual) | Char | 2 bytes | de 0 a 65535 (sin signo) |
Date | DateTime | 8 bytes | 0:00:00 (medianoche) del 1 de enero de 0001 a 11:59:59 P.M. del 31 de diciembre de 9999 |
Decimal | Decimal | 16 bytes | de 0 a +/-79,228,162,514,264,337,593,543,950,335 (+/-7.9... E + 28) † sin ningún separador decimal; de 0 a +/-7,9228162514264337593543950335 con 28 posiciones a la derecha del separador decimal; número más pequeño distinto de cero es +/-0.0000000000000000000000000001 (+/-1E-28) † |
Doble (punto flotante de precisión doble) | Double | 8 bytes | -1, 79769313486231570E + 308 a - 4, 94065645841246544E-324 † para los valores negativos; 4, 94065645841246544E-324 a 1, 79769313486231570E + 308 † para los valores positivos |
Integer | Int32 | 4 bytes | -2.147.483.648 y 2.147.483.647 (con signo) |
Long (entero largo) | Int64 | 8 bytes | -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 (9.2 … E + 18 †) (con signo) |
Objeto | Object(clase) | 4 bytes en plataforma de 32 bits 8 bytes en la plataforma de 64 bits | Cualquier tipo puede almacenarse en una variable de tipoObject |
SByte | SByte | 1 byte | -128 a 127 (con signo) |
Short (entero corto) | Int16 | 2 bytes | -32.768 a 32.767 (con signo) |
Solo (punto flotante de precisión simple) | Single | 4 bytes | -3, 4028235E + 38 a - 1, 401298E-45 † para los valores negativos; 1, 401298E-45 a 3, 4028235E + 38 † para los valores positivos |
Cadena (longitud variable) | String (clase) | Depende de la plataforma de implementación | 0 a aproximadamente 2 mil millones de caracteres Unicode |
UInteger | UInt32 | 4 bytes | de 0 a 4.294.967.295 (sin signo) |
ULong | UInt64 | 8 bytes | de 0 a 18.446.744.073.709.551.615 (1.8 … E + 19 †) (sin signo) |
Definido por el usuario (estructura) | (se hereda de ValueType) | Depende de la plataforma de implementación | Cada miembro de la estructura tiene un intervalo determinado por su tipo de datos y es independiente de los intervalos de los otros miembros |
UShort | UInt16 | 2 bytes | de 0 a 65.535 (sin signo) |
En notación científica, "E" hace referencia a una potencia de 10. Por lo que significa que 3.56E + 2 3.56 x 102 o 356 y 3.56E-2 significa 3.56 / 102 o 0.0356.
Estructura Repetitivas
En el siguiente ejemplo se muestra una estructura de bucle que ejecuta un conjunto de instrucciones hasta que una condición se convierta en verdadera.

- Bucles While:
La construcción While...End While ejecuta un conjunto de instrucciones mientras la condición especificada en la instrucción While sea True.
- Bucles Do:
La construcción Do...Loop le permite probar una condición al comienzo o al final de una estructura de bucle. También puede especificar si repite el bucle mientras la condición sigue siendo True o hasta que se convierta en True.
- Bucles For:
La construcción For...Next ejecuta el bucle un número fijo de veces. Utiliza una variable de control de bucle, también denominada contador para realizar el seguimiento de las repeticiones. Especifica los valores de inicio y fin de este contador, y puede especificar opcionalmente la cantidad en la que se incrementa de una repetición a la siguiente.
- Bucles For Each:
La construcción For Each...Next ejecuta un conjunto de instrucciones una vez para cada elemento de una colección. Especifica la variable de control de bucle pero no tiene que determinar los valores de inicio y fin para ella.
Estructuras Condicionales:
Las estructuras condicionales nos permiten ejecutar una serie de instrucciones si cumple una determinada condición que nosotros le indiquemos. Es importante recordar que la condición debe dar un resultado booleano, por lo que lo mas normal es usar operadores relacionales y condicionales. Tenemos varios tipos de estructuras condicionales:
- if: le indicamos una condición si esta es verdadera se ejecuta, sino no se ejecuta las instrucciones de dentro. Se suele traducir como “Si se cumple esta condición haz esto”. Su sintaxis es:
if condicion then 'Instrucciones end if
Por ejemplo:
Module Module1 Sub Main() Dim precio As Integer = 300 If precio > 100 Then Console.WriteLine("El precio es mayor que 100") End If Console.ReadLine () End Sub End Module
Donde colocamos la condición, podemos colocar una variable booleana, ya que su valor puede ser true o false.
- if – else: es como el anterior solo que después de cerrarse la llave de if, se añade else sin indicarle ninguna condición. Esto sirve para que si la condición del if no es verdadera, ejecute otras instrucciones que estarán dentro de else. Se suele traducir como “Si se cumple esta condición haz esto y sino haz esto”.
Veamos un ejemplo:
Module Module1 Sub Main() Dim precio As Integer = 50 If precio > 100 Then Console.WriteLine("El precio es mayor que 100") Else Console.WriteLine("El precio es menor que 100") End If End Sub End Module
En este caso, se ejecutara lo que hay en else ya que no cumple la condición.
- if -else if: esta estructura es como una mezcla de los anteriores, esto nos permite, que si no se cumple la condición podamos indicar otra condición para hacerlo aún mas especifico. Se suele traducir como “Si se cumple esta condición haz esto y sino si cumple esta condición haz esto”.
Veamos un ejemplo:
Module Module1 Sub Main() Dim precio As Integer = 50 If precio > 100 Then Console.WriteLine("El precio es mayor que 100") ElseIf precio > 80 Then Console.WriteLine("El precio es mayor que 80") Else Console.WriteLine("El precio es menor que 80") End If End Sub End Module
El ejemplo anterior es equivalente al siguiente, esto es lo que se conoce como if anidados, podemos anidar tantos como queramos:
Module Module1 Sub Main() Dim precio As Integer = 50 If precio > 100 Then Console.WriteLine("El precio es mayor que 100") Else If precio > 80 Then Console.WriteLine("El precio es mayor que 80") Else Console.WriteLine("El precio es menor que 80") End If End If End Sub End Module
- Select: esta estructura condicional de selección múltiple, le damos un valor (puede ser una variable) y una lista de casos y si cumple alguno de los casos ejecuta las instrucciones asociadas a ella, en caso de que ninguna sea podemos indicarle que hace por defecto, normalmente se usa para indicar de un error con un mensaje. Su sintaxis es:
Select valor Case caso1 'Instrucciones Case caso2 'Instrucciones Case casoN 'Instrucciones Case Else 'Instrucciones End Select
Los case de un select se pueden escribir con rangos con To, por ejemplo, 1 TO 5, también podemos usar comas para indicar varios valores. Por ejemplo:
Module Module1 Sub Main() Dim valor As Integer = 3 Select Case valor Case 1 To 5 Console.WriteLine("El valor esta entre 1 y 5") Console.WriteLine("El valor esta es 6 o 8 o 9") Case Else Console.WriteLine("El valor es otro") End Select Console.ReadLine() End Sub End Module
Funciones
Declaración
Niveles de declaración
Variables compartidas y de instancias
Declarar el tipo de datos
- Un tipo de datos básico, como Boolean, Long o Decimal.
- Un tipo de datos compuesto, como una matriz o una estructura.
- Un tipo de objeto o clase, definido en su aplicación o en otra aplicación
Clase de .NET Framework, como Label o TextBox Un tipo de interfaz, como IComparable o IDisposable
Dim i, j, k As Integer
' All three variables in the preceding statement are declared as Integer.
Dim l, m As Long, x, y As Single
' In the preceding statement, l and m are Long, x and y are Single.
Inferencia de tipo de variable local
Public Sub inferenceExample()
' Using explicit typing.
Dim num1 As Integer = 3
' Using local type inference.
Dim num2 = 3
End Sub
Características de variables declaradas
Invocación
Se invoca un
Sub
procedimiento explícitamente con una instrucción llamada independiente. No se puede llamar a mediante su nombre en una expresión. Debe proporcionar valores para todos los argumentos que no son opcionales, y debe incluir la lista de argumentos entre paréntesis. Si no se proporcionan argumentos, se pueden omitir los paréntesis. El uso de la Call
palabra clave es opcional, pero no se recomienda.
La sintaxis de una llamada a un
Sub
procedimiento es el siguiente:[Call]
nombre secundario [(
argumentlist)]
Puede llamar a un
Sub
método desde fuera de la clase que lo define. En primer lugar, tiene que utilizar el New
palabra clave se debe crear una instancia de la clase o llamar a un método que devuelve una instancia de la clase. Para obtener más información, consulte New (operador). A continuación, puede utilizar la siguiente sintaxis para llamar a la Sub
método en el objeto de instancia:
Objeto. MethodName
[(
argumentlist)]
Ilustración de declaración y llamada
El siguiente
Sub
procedimiento explica el usuario del equipo la tarea que la aplicación está a punto de realizar y también muestra una marca de tiempo. En lugar de duplicar este código al principio de cada tarea, la aplicación simplemente llama tellOperator
desde diversas ubicaciones. Cada llamada pasa una cadena en el task
argumento que identifica la tarea que se va a iniciar.
VB
Sub tellOperator(ByVal task As String)
Dim stamp As Date
stamp = TimeOfDay()
MsgBox("Starting " & task & " at " & CStr(stamp))
End Sub
En el ejemplo siguiente se muestra una llamada típica a
tellOperator
.
VB
tellOperator("file update")
Implementación
Existen otras razones por las que se podría desear utilizar interfaces en lugar de la herencia de clases:
- Las interfaces admiten mejor las situaciones en las cuales las aplicaciones necesitan el mayor número de tipos de objetos no relacionados posible para proporcionar determinadas funciones.
- Las interfaces son más flexibles que las clases de base, porque puede definir una única implementación que puede implementar interfaces múltiples.
- Las interfaces son mejores en situaciones en las que no es necesario heredar una implementación de una clase de base.
Las interfaces son útiles cuando no se puede usar la herencia de clases. Por ejemplo, las estructuras no pueden heredarse de las clases, pero pueden implementar interfaces.
Declarar las interfaces
![]() |
---|
Por ejemplo, en el código siguiente se define una interfaz con una función, una propiedad y un evento.
Interface IAsset
Event ComittedChange(ByVal Success As Boolean)
Property Division() As String
Function GetID() As Integer
End Interface
Implementar interfaces
Implements (Instrucción)
La palabra clave Implements
Por ejemplo, el código siguiente muestra cómo declarar una subrutina denominada Sub1 que implementa un método de una interfaz:
Class Class1
Implements interfaceclass.interface2
Sub Sub1(ByVal i As Integer) Implements interfaceclass.interface2.Sub1
End Sub
End Class
Para declarar la implementación de un método de interfaz, puede utilizar cualquier atributo permitido en las declaraciones de método de instancia, incluidos Overloads, Overrides, Overridable, Public, Private, Protected, Friend, Protected Friend, MustOverride, Default y Static.El atributo Shared no está permitido, ya que define una clase en lugar de un método de instancia.
Con Implements también puede crear un único método que implemente varios métodos definidos en una interfaz, como en el ejemplo siguiente:
Class Class2
Implements I1, I2
Protected Sub M1() Implements I1.M1, I1.M2, I2.M3, I2.M4
End Sub
End Class
Ejemplos de implementación de interfaces
Las clases que implementan una interfaz deben implementar todas sus propiedades, métodos y eventos.
Interface Interface1
Sub sub1(ByVal i As Integer)
End Interface
' Demonstrates interface inheritance.
Interface Interface2
Inherits Interface1
Sub M1(ByVal y As Integer)
ReadOnly Property Num() As Integer
End Interface
El ejemplo siguiente implementa Interface1, la interfaz definida en el ejemplo anterior:
Public Class ImplementationClass1
Implements Interface1
Sub Sub1(ByVal i As Integer) Implements Interface1.sub1
' Insert code here to implement this method.
End Sub
End Class
El ejemplo final implementa Interface2, incluyendo un método heredado de Interface1:
Public Class ImplementationClass2
Implements Interface2
Dim INum As Integer = 0
Sub sub1(ByVal i As Integer) Implements Interface2.sub1
' Insert code here that implements this method.
End Sub
Sub M1(ByVal x As Integer) Implements Interface2.M1
' Insert code here to implement this method.
End Sub
ReadOnly Property Num() As Integer Implements Interface2.Num
Get
Num = INum
End Get
End Property
End Class
Comments
Post a Comment