You are on page 1of 10

Operadores lgicos y bit a bit

en Visual Basic
Visual Studio 2013
Otras versiones

Personas que lo han encontrado til: 2 de 2 - Valorar este tema
Los operadores lgicos comparan expresiones Boolean y devuelven un resultado Boolean. Los
operadores And, Or, AndAlso, OrElse y Xor son binarios porque toman dos operandos, mientras
que el operador Not es unario porque toma un solo operando. Algunos de estos operadores
tambin pueden realizar operaciones lgicas bit a bit en valores enteros.
Operador lgico unario
El Not (Operador, Visual Basic) realiza la negacin lgica en una expresin Boolean. Produce el
contrario lgico de su operando. Si la expresin se evala como True, Notdevuelve False; si la
expresin se evala como False, Not devuelve True. Debido a que Object es la clase base de todos
los tipos de referencia en .NET Framework, este comportamiento es heredado por los tipos de
referencia que no reemplazan el mtodo ToString.
VB

Dim x, y As Boolean
x = Not 23 > 14
y = Not 23 > 67
' The preceding statements set x to False and y to True.


Operadores lgicos binarios
El And (Operador, Visual Basic) realiza la conjuncin lgica de dos expresiones Boolean. Si ambas
expresiones se evalan como True, And devuelve True. Si al menos una de las expresiones se
evala como False, And devuelve False.
El Or (Operador, Visual Basic) realiza la disyuncin o inclusin lgicas de dos
expresiones Boolean. Si una de las expresiones o ambas se evalan como True, Or devuelve True.Si
ninguna de las expresiones se evala como True, Or devuelve False.
Xor (Operador, Visual Basic) realiza la exclusin lgica de dos expresiones Boolean. Si exactamente
una expresin, pero no ambas, se evala como True, Xor devuelve True. Si ambas expresiones se
evalan como True o como False, Xor devuelve False.
En el siguiente ejemplo se muestra cmo utilizar los operadores And, Or y Xor.
VB

Dim a, b, c, d, e, f, g As Boolean

a = 23 > 14 And 11 > 8
b = 14 > 23 And 11 > 8
' The preceding statements set a to True and b to False.

c = 23 > 14 Or 8 > 11
d = 23 > 67 Or 8 > 11
' The preceding statements set c to True and d to False.

e = 23 > 67 Xor 11 > 8
f = 23 > 14 Xor 11 > 8
g = 14 > 23 Xor 8 > 11
' The preceding statements set e to True, f to False, and g to False
ntervalos de valores.
Tipo de
Visual
Basic
Estructura
de tipo
Common
Language
Runtime
Asignacin
de
almacenam
iento
nominal
Intervalo de valores
Boolean Boolean En funcin
de la
plataforma
de
implementa
cin
True o False
Byte Byte 1 byte 0 a 255 (sin signo)
Char (carc
ter
individual)
Char 2 bytes 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 0 a +/-
79.228.162.514.264.337.593.5
43.950.335 (+/-7,9...
E+28)

sin separador decimal;


0 a +/-
7,92281625142643375935439
50335 con 28 posiciones a la
derecha del decimal;
el nmero distinto de cero ms
pequeo es +/-
0,00000000000000000000000
00001 (+/-1E-28)


Double (pu
nto flotante
de
precisin
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 a
2.147.483.647 (con signo)
Long (enter
o 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)
object Object (clas
e)
4 bytes en
plataforma
de 32 bits
8 bytes en
plataforma
de 64 bits
Cualquier tipo puede
almacenarse en una variable de
tipo Object
SByte SByte 1 byte -128 a 127 (con signo)
Short (enter
o corto)
Int16 2 bytes -32.768 a 32.767 (con signo)
Single (pun
to flotante
de
precisin
sencilla)
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
String (lon
gitud
variable)
String (clase
)
En funcin
de la
plataforma
de
0 a 2.000 millones de
caracteres Unicode aprox.
implementa
cin
UInteger UInt32 4 bytes 0 a 4.294.967.295 (sin signo)
ULong UInt64 8 bytes 0 a
18.446.744.073.709.551.615
(1,8...E+19

) (sin signo)
User-
Defined(est
ructura)
(hereda
de ValueTyp
e)
En funcin
de la
plataforma
de
implementa
cin
Cada miembro de la estructura
tiene un intervalo de valores
determinado por su tipo de
datos y es independiente de los
intervalos de valores
correspondientes a los dems
miembros.
UShort UInt16 2 bytes 0 a 65.535 (sin signo)

En notacin cientfica, E hace referencia a una potencia de 10. Por consiguiente, 3,56E+2
significa 3.56 x 10
2
356 y 3,56E-2 significa 3.56 / 10
2
0,0356.
Nota
En las cadenas que contienen texto, utilice la funcin StrConv para pasar de un formato de texto a otro.
Adems de especificar un tipo de datos en una instruccin de declaracin, puede forzar el tipo de
datos de algunos elementos de programacin mediante el carcter de tipo. VeaCaracteres de tipo
(Visual Basic).
Consumo de memoria
Al declarar un tipo de datos bsico, no debe suponerse que su consumo de memoria es igual a su
asignacin de almacenamiento nominal. Esto se debe a las consideraciones siguientes:
Asignacin de almacenamiento. Common Language Runtime puede asignar el
almacenamiento en funcin de las caractersticas actuales de la plataforma en la que se
ejecuta la aplicacin. Si la memoria est casi completa, se pueden empaquetar los
elementos declarados de la forma ms estrecha posible. En otros casos, se podran alinear
las direcciones de memoria a los lmites del hardware naturales para optimizar el
rendimiento.
Ancho de plataforma. La asignacin de almacenamiento en una plataforma de 64 bits es
diferente a la asignacin en una plataforma de 32 bits.
Tipos de datos compuestos
Las mismas consideraciones se aplican a cada miembro de un tipo de datos compuesto, como una
estructura o una matriz. No se pueden sumar simplemente todas las asignaciones de
almacenamiento nominales de los miembros de tipo. Adems, existen otras consideraciones, como
las siguientes:
Sobrecarga. Algunos tipos compuestos tienen requisitos adicionales de memoria. Por
ejemplo, una matriz utiliza memoria adicional para la matriz en s y para cada dimensin. En
una plataforma de 32 bits, esta sobrecarga corresponde a 12 bytes y 8 bytes por cada
dimensin. En una plataforma de 64 bits, los requisitos se duplican.
Diseo de almacenamiento. No debe suponerse que el orden de almacenamiento en la
memoria es igual al orden de declaracin. Ni siquiera pueden hacerse predicciones sobre la
alineacin de bytes, como un lmite de 2 bytes o de 4 bytes. Si define una clase o estructura
y necesita controlar el diseo de almacenamiento de sus miembros, puede aplicar el
atributo StructLayoutAttribute a la clase o estructura.
.
NOMBRES Y TIPOS DE VARIABLES. DECLARACIN. Option Explicit.
Para establecer nombres de variables puedes ver las indicaciones que se dan en el curso Bases de la
programacin Nivel I de aprenderaprogramarcom, apartado Nombres de variables. Visual Basic permite no
declarar una variable antes de ser usada. Por tanto, en cualquier punto de un programa podramos escribir algo
similar a Mostrar velocidad01, sin necesidad de haber declarado la variable velocidad01. Qu nos mostrar si
no hemos asignado contenido a la variable velocidad01? Visual Basic es de los lenguajes que asignan
automticamente contenido cero, vaco o falso a una variable, dependiendo de qu tipo sea. Por tanto, se nos
mostrara cero, , o falso. Conocido que no es estrictamente obligatorio, nosotros vamos a trabajar con Visual
Basic realizando declaracin de variables siempre. Los motivos para ello ya han sido expuestos, pero podemos
resumirlos en:
Generar buenos programas.
Evitar errores y confusiones.

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

Ten en cuenta que la opcin a) es manual, y tendramos que escribir Option Explicit cada vez que furamos a
programar, mientras que la opcin b) es automtica y va a hacer que cada vez que arranquemos Visual Basic
nos obligue a declarar variables sin tener que estar escribiendo cdigo. Por tanto, activa la opcin automtica
(o comprueba que est activada) y as evitaremos olvidos. No vamos a volver a incidir en esto, pero siempre
vamos a considerar que trabajamos con Option Explicit activado. Qu ocurrir si utilizamos en el cdigo una
variable que no ha sido declarada? En este caso Visual Basic impedir la ejecucin del programa mostrando el
mensaje de error: Error de compilacin. Variable no definida / no declarada as como la lnea de programa
donde ha aparecido la variable no declarada. Siempre que exista al menos una variable no declarada ocurrir
esto, lo cual nos obliga a declarar todas y cada una de las variables.
En cuanto a los tipos de variables, Visual Basic las clasifica en funcin del tipo de dato que contienen. Veamos
las ms usuales.
TIPO DE
DATOS
ABREVIATURA
MEMORIA
REQUERIDA
RANGO DE
VALORES
EQUIVALENCIA
CON USADAS EN
PSEUDOCDIGO
OBSERVACIONES
Integer
(Entero)
%
2 bytes 4
bytes segn
versin
- 32768 a
32767 -
2.147.483.648
a
2.147.483.647
segn versin
Entero
Uso en contadores,
control de bucles etc.
Long
(Entero
largo)
&
4 bytes 8
bytes segn
versin
-
2147483648 a
2147483647 -
9,2E+18 a
9,2E+18 segn
versin
Entero
Igual que integer
pero admite un rango
ms amplio
Single
(Decimal
simple)
! 4 bytes
- 3,4 10
38

a
3,4 10
38

Real
Hasta 6 decimales o
ms segn versin.
Tambin admite
enteros
Double
(Decimal
doble)
# 8 bytes
- 1,79 10
308

a
1,79 10
308

Real
Hasta 14 decimales o
ms segn versin.
Tambin admite
enteros
Boolean
(Booleano)
No tiene 2 bytes
True
o
False
Booleano
False es el valor
predeterminado y va
asociado a cero
String $
10 bytes + 1
byte por cada
carcter
0
a
2 10
9
caracteres
Alfanumrica
Texto de longitud
variable
Variant
(Object en
otras
versiones)
No tiene Variable
Los del tipo
double para
nmeros o los
del tipo string
para texto
No tiene
Admite nmeros
enteros, decimales o
texto


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

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


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


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


Has declarado la variable Numerodeplantas como tipo entero. Tambin puedes usar la abreviatura
correspondiente al tipo Integer de esta forma:
Dim Numerodeplantas%


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

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


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

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

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

You might also like