Características del lenguaje VB. Explicaremos las características de los diferentes tipos de datos, ámbito, operandos y expresiones en VB. Características del lenguaje VB.................................................................................................................................................................................... 1 1.TIPOSDEDATOS................................................................................................................................................................................................................ 1 2.DECLARACIÓNDEMATRICES:.......................................................................................................................................................................................... 4 3.ÁMBITODELASVARIABLES............................................................................................................................................................................................... 7 4.TIPOSDEFINIDOSPORELUSUARIO................................................................................................................................................................................... 7 5.COMENTARIOS................................................................................................................................................................................................................. 7 6.OPERADORES................................................................................................................................................................................................................... 7 6.EJERCICIOS:..................................................................................................................................................................................................................... 10
Objetivos
Conocer los diferentes tipos básicos de datos en lenguaje VB. Diferenciar entre variables y constantes en un programa. Conocer los rangos de valores de los tipos básicos. Manejar expresiones.
1. TIPOS DE DATOS. En la formula 2πr observamos diferentes tipos de datos. Por un lado los valores 2 y π que son constantes y no podrán ser modificados. Pero 2 es un valor constante literal y π es un valor constante con nombre. En cuanto a r es un valor variable . Estos conceptos son importantes a la hora de trabajar con datos .
1.1. CONSTANTES. Son valores que no cambian durante la ejecución de la aplicación. Las constantes pueden ser numéricas y alfanuméricas.
Constantes literales Las constantes numéricas admiten valores decimales, hexadecimales (base 16) y octales (base 8): Decimales: 10,1784, 28 Hexadecimales: &H3, &HlOA, &HF7 Octales: &055, &0176, &01447 Las constantes alfanuméricas o de caracteres son para cadenas de letras, también pueden almacenar número pero no permiten realizar operaciones aritméticas: Alfanuméricas: “Visual Basic”, “Fundamentos de programación” 1
Constantes con nombre Const nombre_constante[AS Tipo]=expresión
1.2. VARIABLES Una variable es el campo donde almacenaremos un valor que podrá ser modificado durante la ejecución de la aplicación. En versiones anteriores VB nos permitía utilizar variables sin definición previa. Ahora nos obliga a declarar las variables antes de utilizarlas: Declaración explicita de variables y nos permite especificar si queremos que nos obligue a declarar el tipo datos: Declaración estricta. Podemos desactivar estas dos Opciones, no se recomienda no hacerlo. Para la declaración estricta de variables: Botón derecho del ratón sobre el nombre del proyecto del Explorador de soluciones -> Propiedades->Compilar>Option Strict=On Para desactivar declaración Explicita: Option Expilcit=OF
la
Las variables son necesarias declararlas con la sentencia Dim, que tiene el siguiente formato: Dim nombre-variable [AS Tipo]........ Ejemplo: Dim Conta AS Integer Las variables han de definirse con un nombre, un tipo y un ámbito. Nombre: Es el nombre que utilizaremos al escribir el programa para referirnos a la variable.Los nombres de variable han de comenzar obligatoriamente por una letra y pueden tener un máximo de 40 caracteres. Estos caracteres serán letras, números y el guión de subrayado, no se admiten símbolos como (%, &, $, ", etc.), ni palabras reservadas que el lenguaje utilice para otros cometidos. Tipo: Determina qué clase de valores podrá almacenar. Sufijo: Se puede indicar el tipo de variable sin la cláusula AS, terminando el nombre en un carácter a modo de sufijo, especifico para cada tipo de variable. Ejemplo: Dim Contador%, Nombre$ La siguiente lista muestra los tipos de variables y el rango de valores que pueden almacenar. La tabla siguiente muestra los tipos de datos de Visual Basic .NET, los tipos correspondientes de Common Language Runtime, su asignación de almacenamiento nominal y sus intervalos de valores. tipo
lógico
Tipo de Visual Basic Boolean
Estructura de tipo Common Language Runtime System.Boolean
Asignación de almacenamiento nominal 2 bytes True o False
2
Intervalo de valores
caracter fecha
Char Date
System.Char System.DateTime
Nueros reales
Decimal
System.Decimal
Double (punto flotante con precisión doble)
System.Double
Single (punto flotante con precisión simple) Byte Integer Long (entero largo) Short Object
System.Single
enteros
Cadenas String de (cadena de longitud caracteres variable) Tipo de datos definido por el usuario (estructura)
System.Byte System.Int32 System.Int64 System.Int16 System.Object (clase) System.String (clase)
(hereda de System.ValueType)
2 bytes 8 bytes
0 a 65535 (sin signo) 0:00:00 del 1 de enero de 0001 a 11:59:59 PM del 31 de diciembre de 9999. 16 bytes 0 a +/-79.228.162.514.264.337.593.543.950.335 sin separador decimal; 0 a +/-7,9228162514264337593543950335 con 28 posiciones a la derecha del signo decimal; el número más pequeño distinto de cero es +/-0,0000000000000000000000000001 (+/-1E-28). 8 bytes -1,79769313486231570E+308 a -4,94065645841246544E-324 para valores negativos; 4,94065645841246544E-324 a 1,79769313486231570E+308 para valores positivos. 4 bytes -3,4028235E+38 a –1,401298E-45 para valores negativos; 1,401298E-45 a 3,4028235E+38 para valores positivos. 1 byte 0 a 255 (sin signo) 4 bytes -2.147.483.648 a 2.147.483.647 8 bytes -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 2 bytes -32.768 a 32.767 4 bytes Cualquier tipo puede almacenarse en una variable de tipo Object. En función de la De 0 a 2.000 millones de caracteres Unicode aprox. plataforma de implementación En función de la Cada miembro de la estructura tiene un intervalo de plataforma de valores determinado por su tipo de datos e implementación independiente de los intervalos de valores correspondientes a los demás miembros.
CONSIDERACIONES:
Las variables de tipo Char se almacenan como números de 16 bits (2 byte) sin signo con valores comprendidos entre 0 y 65535. Cada número representa un único carácter Unicode. Los datos numéricos se pueden convertir a datos lógicos. El valor 0 es False y distinto de cero es True. Para convertir los lógicos a numéricos False se convierte en 0 y True en -1. Los valores literales de fechas y horas deben expresarse en un formato reconocible por windows, encerrados por el carácter (#). Ejemplo:
#15/05/95 14:30:15# #15Mayo1995 14:30#
Si convierte un valor Date a un tipo String, la fecha se procesa en función del formato de fecha corta reconocida por el equipo y la hora se procesa en función del formato de hora que tenga el equipo (12 horas o 24 horas).
Si se agrega el carácter de tipo I a un literal, se convierte el tipo de datos del literal al tipo de datos Integer. Si se agrega el carácter de declaración de tipo % a cualquier identificador, se convierte su tipo de datos al tipo Integer. Ejemplo: Dim Contador%
Los números enteros se especifican por los tipos Byte,Short,Integer y Long según el tamaño.
Para números enteros sin signo de 0 a 255 el tipo Byte Si se agrega el carácter de tipo L a un literal, se convierte el tipo de datos del literal al tipo de datos Long. Si se agrega el carácter de declaración de tipo & a cualquier identificador, se convierte su tipo de datos al tipo Long. Ejemplo: Dim largo&.. Si se agrega el carácter de tipo S a un literal, se convierte el tipo de datos del literal al tipo de datos Short.
3
Si se agrega el carácter de tipo F a un literal, se convierte el tipo de datos del literal al tipo de datos Single. Si se agrega el carácter de tipo de identificador ! a cualquier identificador, se convierte su tipo de datos al tipo Single. Ejemplo Dim area! Si se agrega el carácter de tipo R a un literal, se convierte el tipo de datos del literal al tipo de datos Double. Si se agrega el carácter de declaración de tipo # a cualquier identificador, se convierte su tipo de datos al tipo Double. Ejemplo: Dim radio# Cuando se declaran variables, las variables numéricas sé inicializan a 0, las cadenas de longitud variable se inicializan a cadena de longitud cero, y las cadenas de longitud fija se rellenan con ceros.
Ejemplos de declaraciones: Dim x,y,z As Integer, Dim q,w As Single, r as Double 1.2.1 INICIALIZACIÓN DE VARIABLES.
Asignar valor a una variable después de su definición Dim x As Integer x = 10 'Asignar a x el valor de 10 Puede declarar más de una variable por enunciado separando su declaración con comas: Dim x As Integer, y as String x = 10 : y = "hola" Asignar valor en su declaración Dim dato& = 10 Dim dato1 As Integer = 21
2. DECLARACIÓN DE MATRICES: 2..1 Definir Matrices. Para declarar matrices necesitamos: nombre, numero de elementos y tipo de datos. 1. Dim a(9) As Integer 2. Dim b() As Double
‘ define un array de 10 elementos enteros
‘ define un array de números Double sin especificar el tamaño 3. Dim cadena(11) As String ‘ define un array de 12 elementos de tipo cadena En .NET se puede definir el segundo ejemplo de la forma: Dim b As Double() Si conocemos a priori el tamaño de la matriz podemos usar este dato en su definición, ejemplos 1 y 3 ,si no lo conocemos podemos hacerlo como el segundo ejemplo y más adelante lo redefiniremos con su tamaño. Como se puede apreciar el número de elementos se expresa teniendo en cuenta que el número expresado entre paréntesis es el valor mayor que puede tomar el índice, ya que en Net los arrays van de 0 al valor del índice expresado en su definición. Así el primer ejemplo tiene 10 elementos enteros accesibles con índices del 0 al 9. Si utilizamos en su definición los limites de los índices, ejemplos1 y 3, no podremos inicializar de forma explicita la matriz.
2.2 Dar valores a matrices. Para dar valores a un a matriz en su definición, tendremos que declararla sin límites explícitos: Dim a() As Integer = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} 4
Dim s() As String = {"hh", "bb"}
Para asignar un valor a un elemento de una matriz:
a(1) = 12 a(i)=1 ‘ i debe ser una variable entera y entre los valores permitidos por su tamaño a(i+2)=1 ‘ la expresión debe ser una variable entera y entre los valores permitidos por su tamaño
2.3. Para definir matrices de más de una dimensión:
Dim b()As Integer Dim c(,) As Integer Dim d(,,) As Integer Dim e(2) As Integer Dim f(1, 6) As Integer Dim g(3, 1, 5, 2) As Integer Dim h() As Integer = {1, 2, 3, 4} Dim j(,) As Integer = {{1, 2, 3}, {4, 5, 6}} ' este array se declararía como K(3, 2, 1) Dim K(,,) As Integer = { _ {{18, 20}, {23, 34}, {12, 6}}, _ {{7, 8}, {19, 16}, {11, 12}}, _ {{13, 15}, {15, 16}, {17, 18}}, _ {{1, 20}, {1, 22}, {25, 43}} _ }
2.4 Redimensionar una matriz Para cambiar el tamaño de una matriz se usa Redim: ReDim a(8) Pero debemos tener cuidado, al redefinir el tamaño, perdemos su contenido a menos que especifiquemos lo contrario: ReDim Preserve a(11) Los elementos añadidos se inicializarán a cero. En matrices de más de una dimensión, no podremos modificar el número de dimensiones. Con Redim podemos modificar el número de elementos de todas las dimensiones. Con Redim Preserve solo podremos modificar el numero de elementos de la última dimensión, incluso ponerlo a cero.
2.5 Propiedades de una matriz IsFixedSize
Obtiene un valor que indica si Array tiene un tamaño fijo.
IsReadOnly Length
Obtiene un valor que indica si Array es de sólo lectura. Obtiene un entero de 32 bits que representa el número total de elementos de todas las dimensiones de Array.
a.Length nos dará 10 y a.Length-1 nos dará 9 que es el valor mayor del índice, dato interesante para utilizar el el bucle que recorrerá la matriz.
LongLength
Obtiene un entero de 64 bits que representa el número total de elementos de todas las dimensiones de Array.
Rank
Obtiene el rango (número de dimensiones) de Array.
5
Ejemplo: K.Rank
2.6 Métodos para matrices. BinarySearch
Busca un valor en una matriz Array unidimensional y ordenada utilizando un algoritmo de búsqueda binario.
Clear . Clone
Establece un intervalo de elementos de Array en cero, false o una referencia nula (Nothing en Visual Basic), en función del tipo de elemento.
Copy
Copia una sección de una matriz Array en otra matriz Array y realiza la conversión de tipos y la conversión boxing de tipos necesarias.
CopyTo
Copia todos los elementos del objeto Array unidimensional actual en el objeto Array unidimensional especificado a partir de una posición. Debemos tener la precaución del numero de elementos de los arrays sean correctos.
Crea una copia superficial de Array.
a.CopyTo(b, 0)
CreateInstance
Inicializa una nueva instancia de la clase Array.
Equals (se hereda de Object)
Determina si dos instancias de Object son iguales.
GetEnumerator
Devuelve IEnumerator correspondiente a Array.
GetHashCode (se hereda de Object)
Sirve como función hash para un tipo concreto, apropiado para su utilización en algoritmos de hash y estructuras de datos como las tablas hash.
GetLength
Obtiene un entero de 32 bits que representa el número de elementos de la dimensión especificada de Array.
GetLongLength
Obtiene un entero de 64 bits que representa el número de elementos de la dimensión especificada de Array. Obtiene el límite inferior de la dimensión especificada de Array. Siempre será cero
GetLowerBound GetType
Obtiene el objeto Type de la instancia actual.
GetUpperBound
Obtiene el límite superior de la dimensión especificada de Array. Ejemplo
GetValue . IndexOf . Initialize
Obtiene el valor del elemento especificado de la matriz Array actual. Los índices se especifican en forma de una matriz de enteros de 32 bits.
LastIndexOf
Sobrecargado. Devuelve el índice de la última aparición de un valor en una matriz Array unidimensional o en una parte de la matriz Array.
Reverse
k.GetUpperBound(1) dará como resultado el numero de elementos de la dimensión 2.
Devuelve el índice de la primera aparición de un valor en una matriz Array unidimensional o en una parte de la matriz Array. Inicializa todos los elementos de la matriz Array de tipo de valor llamando al constructor predeterminado del tipo de valor.
Invierte el orden de los elementos de una matriz Array unidimensional o de una parte de Array.
b.Reverse(b)
SetValue
Establece el elemento especificado de la matriz Array actual en el valor especificado.
Sort
Ordena los elementos en objetos Array unidimensionales. Array.Sort(a) a.Sort(a) Las dos formas son correctas.
ToString
Devuelve un objeto String que representa al objeto Object actual.
6
3. ÁMBITO DE LAS VARIABLES. Las constantes y variables tienen los siguientes ámbitos: 1. Nivel de bloque: dentro de un bloque de código, ejemplo If….En if 2. Nivel de procedimiento: (Local)dentro de un procedimiento 3. Nivel de módulo. Visible para todos los procedimientos almacenados para el mismo módulo. Se declara en la sección de Declaraciones.
4. Global: Sustituiremos Dim o Private por Public. Para declarar variables de ámbito estático: Static a as integer. La variable no se inicializa cada vez que ejecute el procedimiento que la declara.
4. TIPOS DEFINIDOS POR EL USUARIO.
VB permite al programador definir sus propios tipos de datos mediante la sentencia Structure , con el siguiente formato: Public Structure Empleado Public EmpNumero As Integer Dim Telefono As String Private TelefonoCasa As String ' Can be made Private inside Structure. End Structure Después de realizada la definición, se pueden declarar variables del tipo definido usando la sentencia Dim. Ejemplo: Dim Ramón AS Enpleado, Pepe AS Empleado Para poder acceder a los valores individuales se hace especificando el nombre de la variables, un punto y el del elemento. Ejemplos: Ramon.telefono=9682345678 Ramon=Pepe
5. COMENTARIOS. Es posible que en ocasiones sea necesario incluir algún comentario en un programa. Un comentario es una línea que Visual Basic ignorará cuando ejecute la aplicación, pero que será muy útil para nosotros al comprobar los listados. Para insertar un comentario basta con colocar una comilla simple delante de la frase. Los comentarios pueden estar situados detrás de una sentencia de Visual Basic: ' esto es un ejemplo de un comentario
6. OPERADORES Un operador suele estar representado por un símbolo y como su nombre indica realiza una operación. Las operaciones pueden ser lógicas, relacionales y aritméticas. Los operadores de Visual Basic son los siguientes: Aritméticos 7
+ (Suma) - (Resta) - (Cambio de signo) * (Multiplicación) / (División) ^ (Exponente) \ (División entera) Mod (Resto división entera) Relacionales < (menor que) > (Mayor que) <> (Diferente) = (Igual) <= (Menor igual) >= (Mayor igual) Lógicos a b a And b A Or b Not a Verdadero Verdadero Verdadero Verdadero Falso Verdadero Falso Falso Verdadero Verdadero Falso Verdadero Falso Verdadero Falso Falso Falso Falso
Not (No) And (Y) Or (O)
Xor (Or exclusivo),su tabla de verdad es: expresión1 Verdadero Verdadero Falso Falso
expresión2 Verdadero Falso Verdadero Falso
expresión1 Xor expresion2 Falso Verdadero Verdadero Falso
Eqv (Equivalencia, opuesto a Xor) su tabla de verdad es: expresión1 Verdadero Verdadero Falso Falso
expresión2 Verdadero Falso Verdadero Falso
expresión1 Eqv expresion2 Verdadero Falso Falso Verdadero
Imp (Implicación, falso si el primer operando es verdadero y el segundo operando es falso) expresión1 Verdadero Verdadero Verdadero Falso Falso Falso Null Null Null
expresión2 Verdadero Falso Null Verdadero Falso Null Verdadero Falso Null
expresión1 Imp expresion2 Verdadero Falso Null Verdadero Verdadero Verdadero Verdadero Null Null
ejemplos: 5<8 And Not 4>2 (> resultado False) 6=5 Or 6<>5 (>resultado True) 4>=3 Xor 2<=5 (>resultado False 8
En estos ejemplos se utiliza el operador Imp para ejecutar una implicación lógica con dos expresiones. A = 10: B = 8: C = 6: D = Null MiPrueba = A > B Imp B > C MiPrueba = A > B Imp C > B MiPrueba = B > A Imp C > B MiPrueba = B > A Imp C > D MiPrueba = C > D Imp B > A
' Inicializa variables. ' Devuelve True. ' Devuelve False. ' Devuelve True. ' Devuelve True. ' Devuelve Null.
•
Los operadores relacionales dan como resultado los valores True (condición cierta), False (condición falsa) o Null (no válido). En VB el valor Null indica que la variable no tiene un valor válido. Se pueden comparar cadenas de dos formas: - carácter a carácter. - Ignorando la mayúsculas, minúsculas y los signos de acentuación de vocales. Para esto debe incluirse la sentencia Option Compare Text en la sección de declaraciones del módulo. El modo por defecto es Optión Compare Binary. Option Compare Binary da por resultado comparaciones de cadenas basadas en el criterio de ordenación derivado de las representaciones binarias internas de los caracteres. En Microsoft Windows, el criterio de ordenación depende del código de página. En Macintosh, el criterio de ordenación se determina por el juego de caracteres. En el siguiente ejemplo se ilustra un criterio de ordenación binaria típico: A<B<E<Z<a<b<e<z<À<Ê<Ø<à<ê<ø Option Compare Text da por resultado comparaciones de cadenas basadas en el criterio de ordenación determinado por la información local. Los mismos caracteres del ejemplo anterior, ordenados con la opción Option Compare Text, aparecen en el siguiente orden: (A=a) < (À=à) < (B=b) < (E=e) < (Ê=ê) < (Z=z) < (Ø=ø) Αaaa= ΑAAA >resultado : True Αááá= ΑAAA > resultado : Trué OTROS & (Enlazar, concatenar) ejemplo: Nombre = “Daniel” print “mi nombre es “ & Nombre resultado : Mi nombre es Daniel Like (Comparar dos expresiones alfanuméricas) Al utilizar estos operadores se han de tener en cuenta algunas cuestiones: - Al comparar valores numéricos de diferente tipo, el resultado será igual al operando de mayor precisión. - Si uno de los operandos tiene el valor Null, el resultado es Null. 9
- El operador Like compara dos expresiones alfanuméricas (caracteres) y permite trabajar con los siguientes patrones: ? Sólo un carácter. * Ninguno o más caracteres. # Sólo un dígito (0-9). [Lista] Sólo un carácter de la lista. [!Lista] Sólo un carácter que no esté en la lista. Ejemplo del operador Like Ejemplos:. M = "aBBBa" Like "a*a" M = "F" Like "[A-Z]" M = "F" Like "[!A-Z]"
' Devuelve True. ' Devuelve True. ' Devuelve False.
M es una variable numérica. La siguiente lista muestra algunos ejemplos de patrones del operador Like:
Patrón
True
False
a?a
aaa, a7a, axa
a12a, aaaa
b*b
b12bb, bb, bcdefb
bcde, bcbd
c#c
c1c, c7c, c0c
c12c, cX9c
d[0]d
d0d
ddd, d1d, d*d
[a-z]
a,b,c,d,e
7,9,-,=
[!a-z]
1,3,4,5
a,b,c,d,z
El orden de ejecución de los operandos en una expresión es: 1) Paréntesis más internos de izquierda a derecha 2) ^ 3) * y / 4) \ Aritméticos 5) Mod 6) + y –
Relacionales
7) <,>,>=,>=,=,<>
8) Not 9) And 10) Or 11) Xor 12) Equ 13) Imp
Lógicos
6. EJERCICIOS: 1) Escribir en expresión Visual Basic las siguientes expresiones algebraicas: a) 3x +5 10
b) x2+y 2 c) (U+V)K-1
d)
a c −m + b 4 3
e) 6 .8 R
f) f
=
(a
+ b ) c (a − c
⎡ 2ab t ⎤ = + ⎢ c +1 3( p + q )⎥ ⎣ ⎦
2
1
7 .2 a b + c
−
)
1 n
3
2) Evaluar las siguientes expresiones, para los valores: X=1 y=4 z=10 PI=3,141592 E=2,718281 • • •
X + y + z + PI - E + 2,576689 (Not(2 * x = y / 2 Or (PI- E) >y)) = ( Not y / 2 = 2 *x) And Not y <( PI - E) * z x>3 And (y =4 Or x+y <= z)
11