Buscador

La función Chr( )

Si nos encontramos en la situación inversa a la descrita en el apartado anterior, es decir, tenemos el código de un carácter y queremos saber a cuál corresponde, la función Chr( ) recibe un número como parámetro y devuelve el carácter al que pertenece como un dato de tipo Char, aunque también podemos asignar el resultado a una variable String. Veamos unos ejemplos en el Código fuente 71.

Dim MiCaracter As Char
Dim MiCadena As String
MiCaracter = Chr(65) ' devuelve: "A"
MiCaracter = Chr(70) ' devuelve: "F"
MiCadena = Chr(77) ' devuelve: "M"
MiCadena = Chr(102) ' devuelve: "f"
Código fuente 71

La función Asc( )

Cuando realizamos comparaciones entre cadenas, basadas en los valores binarios de los caracteres, es útil en ocasiones conocer el código de dichos caracteres. 
Para averiguar cuál es el código correspondiente a un determinado carácter, el lenguaje nos proporciona la función Asc( ). Esta función recibe como parámetro una cadena, y devuelve un valor numérico de tipo Integer, con el código correspondiente al primer carácter de la cadena. El Código fuente 70 nos muestra algunos ejemplos.

Dim CodigoCar As Integer
CodigoCar = Asc("A") ' devuelve: 65
CodigoCar = Asc("a") ' devuelve: 97
CodigoCar = Asc("M") ' devuelve: 77
CodigoCar = Asc("F") ' devuelve: 70
CodigoCar = Asc("f") ' devuelve: 102
CodigoCar = Asc("hola") ' devuelve: 104
Código fuente 70

Comparación de cadenas - III

Si a continuación, cambiamos la configuración de Option Compare a Text y realizamos las mismas comparaciones, en algunos casos obtendremos resultados diferentes. Ver Código fuente 69.

Option Compare Text
Module Module1
Sub Main()
Dim Resultado As Boolean
Resultado = "A" = "a" ' devuelve: True
Resultado = "M" < "Z" ' devuelve: True
Resultado = "M" > "m" ' devuelve: False
Resultado = "F" <> "f" ' devuelve: False
End Sub
End Module
Código fuente 69
En esta ocasión “A” y “a” si son iguales, debido a que se comparan sus valores como texto y no como los códigos internos utilizados para representar los caracteres. De igual forma, se devuelve falso en la expresión que comprueba si “F” y “f” son distintos, ya que bajo esta configuración, ambos caracteres se consideran iguales.

Comparación de cadenas - II

Si configuramos a nivel de fichero de código, escribiremos esta instrucción en la cabecera del fichero con el modificador oportuno.
Consulte el lector el apartado sobre declaración obligatoria de variables, para un mayor detalle sobre el acceso a esta ventana de propiedades del proyecto. En el Código fuente 68 tenemos un ejemplo de comparación de cadenas utilizando Option Compare Binary.


Option Compare Binary
Module Module1
Sub Main()
Dim Resultado As Boolean
Resultado = "A" = "a" ' devuelve: False
Resultado = "M" < "Z" ' devuelve: True
Resultado = "M" > "m" ' devuelve: False
Resultado = "F" <> "f" ' devuelve: True
End Sub
End Module
Código fuente 68
El motivo de que la comparación “A” con “a” devuelva falso, o de que “M” no sea mayor que “m” se debe a que lo que se comparan son los valores binarios, o códigos que sirven para representar a cada carácter. Por ejemplo, el código de “M” es 77, mientras que el de “m” es 109, por lo que al ser este último mayor, la comparación realizada en el fuente de ejemplo devuelve False.

Comparación de cadenas - I

Podemos utilizar los operadores de comparación antes descritos para comparar también cadenas de caracteres. La instrucción Option Compare, junto a sus modificadores Binary/Text, nos permite definir el modo en que se realizarán las comparaciones entre expresiones que contengan cadenas.
• Option Compare Binary. Las comparaciones se realizan en base a los valores binarios internos de los caracteres. Esta es la opción por defecto.
• Option Compare Text. Las comparaciones se realizan en base a los valores textuales de los caracteres. Podemos configurar Option Compare a nivel de proyecto y de fichero de código.
En el caso de configurar a nivel de proyecto, deberemos abrir la ventana de propiedades del proyecto, y en su apartado Generar, establecer el valor correspondiente en la lista desplegable. Ver Figura 65.
Figura 65. Configuración de Option Compare.

Operadores de comparación

Estos operadores permiten comprobar el nivel de igualdad o diferencia existente entre los operandos de una expresión. El resultado obtenido será un valor lógico, True (Verdadero) o False (Falso). La Tabla 4 muestra la lista de los operadores disponibles de este tipo.
Tabla 4. Operadores de comparación.
El Código fuente 67 nos muestra algunas expresiones de comparación utilizando números.


Dim Resultado As Boolean
Resultado = 10 < 45 ' devuelve: True
Resultado = 7 <= 7 ' devuelve: True
Resultado = 25 > 50 ' devuelve: False
Resultado = 80 >= 100 ' devuelve: False
Resultado = 120 = 220 ' devuelve: False
Resultado = 5 <> 58 ' devuelve: True
Código fuente 67

Concatenación: &=

Para concatenar dos cadenas, podemos emplear la sintaxis normal o abreviada. Ver Código fuente 66.

Dim PrimeraCad As String
Dim SegundaCad As String
PrimeraCad = "Aquí va "
SegundaCad = "una prueba"
' sintaxis normal
PrimeraCad = PrimeraCad & SegundaCad ' devuelve: "Aquí va una prueba"
' sintaxis abreviada
PrimeraCad &= SegundaCad ' devuelve: "Aquí va una prueba"
Código fuente 66

Resta: -=

Podemos restar números utilizando la sintaxis normal o abreviada. Ver Código fuente 65.

Dim Valor As Integer
Dim Resultado As Double
Valor = 69
Resultado = 200
' sintaxis normal
Resultado = Resultado - Valor ' devuelve: 131
' sintaxis abreviada
Resultado -= Valor ' devuelve: 131
Código fuente 65

Suma: +=

Podemos sumar números, o concatenar cadenas utilizando la sintaxis normal o abreviada. Ver Código fuente 64.

Dim Valor As Integer
Dim Resultado As Double
Dim CadenaA As String
Dim CadenaB As String
' con valores numéricos
Valor = 69
Resultado = 200
' sintaxis normal
Resultado = Resultado + Valor ' devuelve: 269
' sintaxis abreviada
Resultado += Valor ' devuelve: 269
' con cadenas de caracteres
CadenaA = " varios numeros"
CadenaB = "589"
CadenaB += CadenaA ' devuelve: "589 varios numeros"
Código fuente 64

División entera: \=

Para dividir dos números, con un resultado entero, podemos utilizar la sintaxis normal o abreviada. Ver Código fuente 63.

Dim Valor As Integer
Dim Resultado As Double
Valor = 5
Resultado = 182
' sintaxis normal
Resultado = Resultado \ Valor ' devuelve: 36
' sintaxis abreviada
Resultado \= Valor ' devuelve: 36
Código fuente 63

División real: /=

Para dividir dos números, y obtener un resultado con precisión decimal, podemos utilizar la sintaxis normal o abreviada. Ver Código fuente 62.

Dim Valor As Integer
Dim Resultado As Double
Valor = 5
Resultado = 182
' sintaxis normal
Resultado = Resultado / Valor ' devuelve: 36.4
' sintaxis abreviada
Resultado /= Valor ' devuelve: 36.4
Código fuente 62

Multiplicación: *=

Para multiplicar dos números podemos utilizar la sintaxis normal o abreviada. Ver Código fuente 61.

Dim Valor As Integer
Dim Resultado As Double
Valor = 7
Resultado = 12
' sintaxis normal
Resultado = Resultado * Valor ' devuelve: 84
' sintaxis abreviada
Resultado *= Valor ' devuelve: 84
Código fuente 61

Potencia: ^=

Para elevar un número a una potencia podemos utilizar la sintaxis normal o abreviada. Ver Código fuente 60.


Dim Valor As Integer
Dim Resultado As Double
Valor = 3
Resultado = 2
' sintaxis normal
Resultado = Resultado ^ Valor ' devuelve: 8
' sintaxis abreviada
Resultado ^= Valor ' devuelve: 8
Código fuente 60