Вы находитесь на странице: 1из 10

Expresiones.

Una expresin es una combinacin de operadores y operandos de cuya evaluacin se obtiene un valor. Los operandos pueden ser nombres que denoten objetos variables o constantes, funciones, literales de cualquier tipo adecuado de acuerdo con los operadores u otras expresiones ms simples. La evaluacin de una expresin da lugar a un valor de algn tipo, una expresin se dice que es del tipo de su resultado. Ejemplos de expresiones:
a + 5*b (a >= 0) and ((b+5) > 10) a -a * 2 + b -b + sqrt(b**2 - 4*a*c) length(s) > 0

Las expresiones se evalan de acuerdo con la precedencia de los operadores. Ante una secuencia de operadores de igual precedencia, la evaluacin se realiza segn el orden de escritura, de izquierda a derecha. El orden de evaluacin puede modificarse usando parntesis.

Operadores.
Ada agrupa los operadores en 6 categoras, de menor a mayor precedencia. Los operadores binarios se usan en formato infijo (<operando_izquierdo> <operador> <operando_derecho>), como en "a + b". Los operadores unarios se usan en formato prefijo (<operador> <operando> ), como en "-5". Operadores lgicos. Estn predefinidos para cualquier tipo, T, que designe un booleano, modular o un array monodimensional de componentes booleanos:
function "and"(Left, Right : T) return T function "or" (Left, Right : T) return T function "xor"(Left, Right : T) return T

Ejemplo de uso en expresiones (sean A, B y C de tipo T):


if A and B then ... C := A or B; return (A xor B);

Su significado es el convencional (para los tipos modulares son operaciones bit a bit): A True True False False B (A and B) (A or B) (A xor B) True True True False False False True True True False True True False False False False

Para los tipos booleanos, existen versiones de los operadores "and" y "or", llamadas "and then" y "or else" que tienen el mismo significado, pero realizan una "evaluacin en cortocircuito" consistente en que evalan siempre primero el operando izquierdo y, si el valor de ste es suficiente para determinar el resultado, no evalan el operando derecho.
La evaluacin en cortocircuito resulta muy til si la correcta evaluacin del operando derecho depende del valor del operando izquierdo, como en el siguiente ejemplo: if i <= Vec'last and then Vec(i) > 0 then ... (Evaluar Vec(i) producira un error si i tiene un valor superior al lmite mximo del vector).

Operadores relacionales. Los operadores de igualdad estn predefinidos para todos los tipos no limitados. Sea T un tipo con estas caractersticas:
function "=" (Left, Right : T) return Boolean function "/="(Left, Right : T) return Boolean

Los operadores de ordenacin estn predefinidos para todos los tipos escalares y los arrays de elementos discretos. Sea T un tipo con estas caractersticas:
function function function function "<" (Left, "<="(Left, ">" (Left, ">="(Left, Right Right Right Right : : : : T) T) T) T) return return return return Boolean Boolean Boolean Boolean

Existe tambin un operador de pertenencia ("in", "not in") que determina si un valor pertenece a un rango o a un subtipo: if i in 1..10 then ... Todos los operadores relacionales devuelven un resultado de tipo Boolean. Ejemplo de uso en expresiones (sean A, B de tipo T y C de tipo Boolean):
if A = B then ... C := (A <= B); return (A >= B);

Operadores binarios de adicin. Los operadores de adicin predefinidos para cualquier tipo numrico, T, son:
function "+"(Left, Right : T) return T function ""(Left, Right : T) return T

Ejemplo de uso en expresiones (sean A, B y C de tipo T):


C := A + B; return (A - B);

Tambin pertenecen a esta categora los operadores de concatenacin, predefinidos para cualquier tipo de array monodimensional no limitado, T, de elementos de tipo C:
function function function function "&"(Left "&"(Left "&"(Left "&"(Left : : : : T; T; C; C; Right Right Right Right : : : : T) C) T) C) return return return return T T T T

Operadores unarios de adicin. Los operadores unarios de adicin predefinidos para cualquier tipo nmerico, T, son la identidad y la negacin:
function "+"(Right : T) return T function ""(Right : T) return T

Ejemplo de uso en expresiones (sean A y B de tipo T):


B := -A;

Cuando se aplica a un tipo modular, el operador de negacin ("-") tiene el efecto de restar el valor del operando, si es distinto de cero, al mdulo. Si el valor del operando es cero, el resultado es cero. Operadores multiplicativos. Los operadores de multiplicacin y divisin estn predefinidos entre diversas combinaciones de enteros y reales:
function function function function function function "*" (Left, Right : T) return T "/" (Left, Right : T) return T "*"(Left : T; Right : Integer) return T "*"(Left : Integer; Right : T) return T "/"(Left : T; Right : Integer) return T "*"(Left, Right : root_real) return root_real

function "/"(Left, Right : root_real) return root_real function "*"(Left : root_real; Right : root_integer) return root_real function "*"(Left : root_integer; Right : root_real) return root_real function "/"(Left : root_real; Right : root_integer) return root_real function "*"(Left, Right : universal_fixed) return universal_fixed function "/"(Left, Right : universal_fixed) return universal_fixed

Ejemplo de uso en expresiones (sean A, B y C del mismo tipo entero o real):


C := A * B; return (A / B);

Los operadores mdulo y resto estn definidos para cualquier tipo entero, T:
function "mod"(Left, Right : T) return T function "rem"(Left, Right : T) return T

La relacin entre el resto y la divisin entera viene dada por la expresin: A = (A/B)*B + (A rem B), donde (A rem B) tiene el mismo signo que A, y es menor que B en valor absoluto. El operador mdulo se define de manera que (A mod B) tiene el mismo signo que B, un valor absoluto menor, y existe un nmero entero, N, tal que: A = B*N + (A mod B).

Variables y Constantes
Disponer de todos estos tipos de datos no tendra ningn sentido si no los pudiramos usar de alguna otra forma que de forma literal. Y aqu es donde entran en juego las variables y constantes, no vamos a contarte qu son y para que sirven, salvo en el caso de las constantes, ya que no todos los desarrolladores las utilizamos de la forma adecuada. Consejo para usar las constantes Siempre que tengamos que indicar un valor constante, ya sea para indicar el mximo o mnimo permitido en un rango de valores o para comprobar el trmino de un bucle, deberamos usar una constante en lugar de un valor literal, de esta forma si ese valor lo usamos en varias partes de nuestro cdigo, si en un futuro decidimos que dicho valor debe ser diferente, nos resultar ms fcil realizar un solo cambio que cambiarlo en todos los sitios en los que lo hemos usado, adems de que de esta forma nos aseguramos de

que el cambio se realiza adecuadamente y no tendremos que preocuparnos de las consecuencias derivadas de no haber hecho el cambio en todos los sitios que deberamos. Pero esto no es algo nuevo, las constantes se definen de la misma forma que en VB6, salvo que ahora podemos obligarnos a indicar el tipo de datos que esa constante va a contener. Esto lo veremos en la siguiente seccin. Declarar variables La declaracin de las variables en Visual Basic 2010 se hace de la misma forma que en VB6, o casi, las excepciones vienen dadas, como hemos comentado antes, de la posibilidad de obligar a definir el tipo de cada variable y de cmo podemos definir ms de una variable en una misma instruccin Dim. Para no embrollar mucho la cosa, veamos ejemplos de cmo definir o declarar variables siguiendo las buenas costumbres, es decir, indicando siempre el tipo de datos de la variable. En VB6 podamos definir ms de una variable en una misma instruccin Dim, aunque dependiendo de cmo hicieramos esa declaracin poda ser que, normalmente para nuestro pesar, que no todas las variables fuesen del tipo que "supuestamente" habamos querido indicar. Por ejemplo, con esta declaracin:
Dim a, b, c As Integer

A primera vista estamos declarando tres variables de tipo Integer, pero realmente solo declara con el tipo indicado a la ltima variable, las otras dos, se declaran con tipo Variant o el tipo de datos predefinido. En Visual Basic 2010 al usar esa misma lnea de cdigo estamos declarando tres variables de tipo Integer, esto es algo que debemos tener en cuenta, sobre todo si nuestra intencin era hacer precisamente lo que VB6 haca, es decir, declarar dos variables de tipo Variant y una de tipo Integer. Declarar variables y asignar el valor inicial En Visual Basic 2010 tambin podemos inicializar una variable con un valor distinto al predeterminado, que en los tipos numricos es un cero, en las fechas es el 1 de enero del ao 1 a las doce de la madrugada (#01/01/0001 12:00:00AM#) y en la cadenas es un valor nulo (Nothing), para hacerlo, simplemente tenemos que indicar ese valor, tal como veremos es muy parecido a como se declaran las constantes. Por ejemplo:
Dim a As Integer = 10

En esa misma lnea podemos declarar y asignar ms variables, pero todas deben estar indicadas con el tipo de datos:
Dim a As Integer = 10, b As Integer = 25

Por supuesto, el tipo de datos puede ser cualquiera de los tipos primitivos:
Dim a As Integer = 10, b As Integer = 25, s As String = "Hola"

Aunque para que el cdigo sea ms legible, y fcil de depurar, no deberamos mezclar en una misma instruccin Dim ms de un tipo de datos. Nota: Es importante saber que en las cadenas de Visual Basic 2010 el valor de una variable de tipo String no inicializada NO es una cadena vaca como ocurra en VB6, sino un valor nulo (Nothing). El tipo de datos Char En Visual Basic 2010 podemos declarar valores de tipo Char, este tipo de datos es un carcter Unicode y podemos declararlo y asignarlo a un mismo tiempo. El problema con el que nos podemos encontrar es a la hora de indicar un carcter literal. Si bien en VB6 no existe el tipo de datos Char, si podemos convertir un valor numrico en un carcter (realmente en una cadena) o bien podemos convertir un carcter en su correspondiente valor numrico.
Dim c As String c = Chr(65) Dim n As Integer n = Asc("A")

En Visual Basic 2010 tambin podemos usar esas mismas funciones, aunque en el caso de Chr, el valor que devuelve esta funcin es un valor de tipo Char, no de tipo String como ocurre en VB6, pero debido a que un valor de tipo Char se puede convertir en una cadena, podemos hacer una asignacin como la mostrada en el cdigo anterior sin ningn tipo de problemas. Si nuestra intencin es asignar un valor Char a una variable, adems de la funcin Chr, podemos hacerlo con un literal, ese valor literal estar encerrado entre comillas dobles, (al igual que una cadena), aunque para que realmente sea un carcter debemos agregarle una c justo despus del cierre de las comillas dobles:
Dim c As Char = "A"c

Obligar a declarar las variables con el tipo de datos La obligatoriedad, a la que hacamos referencia anteriormente, de declarar las variables y constantes con el tipo de datos adecuado, la podemos aplicar a todo el proyecto o a un mdulo en particular, para ello tenemos que usar la instruccin Option Strict On, una vez indicado, se aplicar a todo el cdigo, no solo a las declaraciones de variable, constantes o al tipo de datos devuelto por las funciones y propiedades, sino tambin a las conversiones y asignaciones entre diferentes tipos de datos.

No debemos confundir Option Strict con Option Explicit, este ltimo, al igual que en VB6, nos obliga a declarar todas las variables, mientras que el primero lo que hace es obligarnos a que esas declaraciones tengan un tipo de datos. Tanto una como la otra tienen dos estados: conectado o desconectado dependiendo de que agregumos On u Off respectivamente. Como recomendacin para buenas prcticas, debemos "conectar" siempre estas dos opciones, si bien Option Explicit On ya viene como valor por defecto, cosa que no ocurre con Option Strict, que por defecto est desconectado. Aplicar Option Strict On a un fichero en particular Cuando en VB6 agregbamos un nuevo formulario, mdulo BAS o mdulo de clase, se agregaba automticamente la instruccin Option Explicit, en Visual Basic 2010 esta opcin est predefinida y no se agrega a ningn mdulo, pero eso no significa que no se aplique, aunque siempre podemos escribir esas instrucciones (con el valor On al final) en cada uno de los mdulos o ficheros de cdigo que agregumos a nuestro proyecto. Lo mismo podemos hacer con Option Strict On, en caso de que nos decidamos a hacerlo, esas lneas de cdigo deben aparecer al principio del fichero y solamente pueden estar precedidas de comentarios (instrucciones REM o lneas iniciadas con una comilla simple). En la figura 1 mostrada anteriormente tenemos una captura del editor de Visual Basic 2010 en la que hemos indicado que queremos tener comprobacin estricta. Aplicar Option Stict On a todo el proyecto Tambin podemos hacer que Option Strict funcione igual que Option Explicit, es decir, que est activado a todo el proyecto, en este caso no tendramos que indicarlo en cada uno de los ficheros de cdigo que formen parte de nuestro proyecto, si bien solamente ser aplicable a los que no tengan esas instrucciones, aclaremos esto ltimo: si Option Strict (u Option Explicit) est definido de forma global al proyecto, podemos desactivarlo en cualquiera de los ficheros, para ello simplemente habra que usar esas declaraciones pero usando Off en lugar de On. De igual forma, si ya est definido globalmente y lo indicamos expresamente, no se producir ningn error. Lo importante aqu es saber que siempre se usar el estado indicado en cada fichero, independientemente de cmo lo tengamos definido a nivel de proyecto. Para que siempre se usen estas asignaciones en todo el proyecto, vamos a ver cmo indicarlo en el entorno de Visual Basic 2010.

Abrimos el Visual Basic 2010 Express y una vez que se haya cargado, (no hace falta crear ningn nuevo proyecto, de este detalle nos ocuparemos en breve), seleccionamos la opcin Herramientas>Opciones... se mostrar un cuadro de dilogo y del panel izquierdo seleccionamos la opcin Proyectos y soluciones, la expandimos y seleccionamos Valores predeterminados de VB y veremos ciertas opciones, tal como podemos comprobar en la figura:

De la lista despegable Option Strict, seleccionamos On. Por defecto ya estarn seleccionadas las opciones On de Option Explicit y Binary de Option Compare, por tanto no es necesario realizar ningn cambio ms, para aceptar los cambios y cerrar el cuadro de dilogo, pulsamos en el botn Aceptar. Nota: Aunque en esta captura muestre: C:\vbexpB1 en Default project location, salvo que lo cambiemos, aparecer el path por defecto dentro de Mis documentos. Como podemos observar, aparecen pocas opciones, realmente el IDE de Visual Basic 2010 Express nos muestra las predeterminadas para los desarrolladores de Visual Basic, si bien, podemos hacer que se muestren todas las disponibles, para hacerlo, debemos marcar la casilla que est en la parte inferior izquierda en la que podemos leer: Mostrar todas las configuraciones, al seleccionar esa opcin nos mostrar un nmero mayor de opciones, tal como podemos ver en la figura:

Desde este momento el compilador de VB se volver estricto en todo lo relacionado a las declaraciones de variables y conversiones, tal como vemos en la figura 1.4 al intentar declarar una variable sin indicar el tipo de datos. Nota: Una de las ventajas del IDE (Integrated Development Environment, entorno de desarrollo integrado) de Visual Basic 2010 es que nos avisa al momento de cualquier fallo que cometamos al escribir el cdigo, este "pequeo" detalle, aunque alguna veces puede llegar a parecer fastidioso, nos facilita la escritura de cdigo, ya que no tenemos que esperar a realizar la compilacin para que tengamos constancia de esos fallos. Ms opciones aplicables a los proyectos Aunque en estos mdulos no trataremos a fondo el entorno de desarrollo, ya que la finalidad de este curso online es tratar ms en el cdigo propiamente dicho, vamos a mostrar otro de los sitios en los que podemos indicar dnde indicar que se haga una comprobacin estricta de tipos y, como veremos, tambin podremos indicar algunas "nuevas peculiaridades" de Visual Basic 2010, todas ellas relacionadas con el tema que estamos tratando. Cuando tengamos un proyecto cargado en el IDE de Visual Basic 2010 Express, (pronto veremos cmo crear uno), podemos mostrar las propiedades del proyecto, para ello seleccionaremos del men Proyecto la opcin Propiedades de y tendremos un cuadro de dilogo como el mostrado en la figura:

Вам также может понравиться