Inicio » Informática profesional. » Novedades 2008 » Curso de ASP.NET » 3. Operadores y comparadores

Curso de ASP.NET

Cursos Relacionados:

3. Operadores y comparadores

Una vez que ya conocemos las variables veamos que operadores tenemos para trabajar con estos datos. Seguro que ya conoces muchos de ellos pero los recordamos en esta tabla:

Operador Símbolo Ejemplo
Suma + 4 + 3
Resta - 4 - 3
División real / 56 / 45. Da como resultado un decimal, single o double
División entera \ 56 \ 45. Da como resultado un entero
Multiplicación * 12 * 34
Potencia ^ 2  ^ 3 | (-4) ^2
Resto Mod resultado=10 mod 3. Devuelve el resto de la división, en este caso resultado=1
Concatenar & + resultado="Jose" & " Angel". Unen dos cadena para crear una: "Jose Angel"

Inscríbete ahora y accede a 3 unidades gratis

Evalua el curso de ASP.NET y accede a las 3 unidades gratis con acceso completo al aula virtual donde podrás disfrutar de la inestimable ayuda del tutor y una gran variedad de recursos como videotutoriales, ejercicios resueltos, foros, enlaces, bibliografía, etc....


3.1 Comparación

Estos operadores permiten compara dos operandos, el resultado será un valor boolean (lógico): True (verdadero) ó False (falso).

Comparador Devuelve True Devuelve False
< Menor que A<B A>=B
> Mayor que A>B A<=B
<= Menor o igual que A<=B A>B
>= Mayor o igual que A>=B A<B
= Igual a A=B A<>B
<> Distinto de A<>B A=B

Inscríbete ahora y accede a 3 unidades gratis

Evalua el curso de ASP.NET y accede a las 3 unidades gratis con acceso completo al aula virtual donde podrás disfrutar de la inestimable ayuda del tutor y una gran variedad de recursos como videotutoriales, ejercicios resueltos, foros, enlaces, bibliografía, etc....


4. Matrices

Las matrices o arrays son una lista de valores asociados a un sólo identificador. Es decir podemos asignarle a la variable "dias_semana" siete valores alfanuméricos o de cadenas de caracteres. Para acceder a cada uno de ellos se lo indicaremos por un índice. Las matrices pueden ser de mas de una dimensión, cuando son de una sola dimensión se le suele llamar también vector. Mira este gráfico:

Es decir, vamos a definir una matriz o un array de una dimensión que se va a llamar "dias_semana" y luego le voy a asignar los valores que quiera. Una vez creada para acceder a cada uno de sus elementos se lo indicaré por un índice entre paréntesis. Como detalle saber que las matrices comienzan por el elemento 0. Es decir si quiero que tenga 5 elementos la declararé con el valor 4: elementos 0,1,2,3 y 4. Vamos a declarar una matriz:

    dim dias_semana (6) as string

Esta declaración define una matriz de 7 elementos de tipo string.

¡Atención! Las matrices son colecciones del mismo tipo de datos, es decir, INT,LONG, STRING, ... pero siempre del mismo tipo. Si queremos que sean diferentes debemos declarar el array como de tipo Object. Este tipo es el genérico de VS.NET y permite almacenar distintos tipos pero lo veremos mas adelante.

Veamos ahora cómo asignamos los valores al array:

    dias_semana(0)="Lunes"
   dias_semana(1)="Martes"
   dias_semana(2)="Miercoles"
   dias_semana(3)...

Lógicamente recibiremos un error si queremos asignar el valor octavo: dias_semana (7) ya que definimos la matriz con 7 elementos.

Para definir una matriz de mas de una dimensión será muy parecido, simplemente le indicamos el número de elementos de cada dimensión:

    dim mi_matriz(4,5) as long
    dim otra_matriz(6,6,6) as string

En el primer caso la matriz es de 30 elementos (0 al 4 y 0 al 5) y para referirnos a un elemento en concreto le tendremos que indicar fila,columna. En el segundo caso es de tres dimensiones y tiene hasta 7*7*7 elementos, vemos cómo tendremos que referirnos a sus elementos:

    mi_matriz (2,2)=345
    mi_matriz(0,3)=12
    otra_matriz(0,0,0)="primer elemento"
    tra_metriz(2,4,4)="otro elemento"

Nota Las matrices pertenecen a la jerarquía de clases del sistema, es decir, está incluida en el espacio de nombre System. Por lo tanto podremos utilizar las matrices con toda la capacidad de la programación orientada a objeto ya que las matrices son objetos. De todas formas seguiremos con la notación tradicional y no utilizaremos la POO con matrices de momento.

No me acuerdo hasta cuantas dimensiones permite VS.NET pero te puedo asegurar que muchas mas de las que necesitaremos en nuestros programas.

 ¿Defectos? Pues si, ya lo habréis pensado: tenemos que decirle el número de elementos que debe tener nuestra matriz (array)... pero tranquilo esto tiene solución VB.NET permite modificar el tamaño de las matrices (arrays) en tiempo de ejecución, es decir mientras nuestro programa se está ejecutando. Para esto tengo dos instrucciones: REDIM y REDIM PRESERVE. La primera redimensiona una matriz (array), cambia su tamaño al indicado en el parámetro pero borra su contenido. La segunda instrucción le cambia su tamaño pero conservando los valores actuales, esta opción es la mas utilizada porque normalmente querremos asignar un nuevo valor y al ver que hemos llegado al último elemento ampliaremos en mas elementos pero conservando lógicamente los actuales. Mira estas instrucciones:

  • redim matriz1(10). Cambia de tamaño a matriz1 pasando a tener 11 elementos y borrando su contenido.
  • redim preserve matriz2 (19). Cambia el tamaño de matgriz2 a 20 elementos pero conservando los elementos anteriores.

Inscríbete ahora y accede a 3 unidades gratis

Evalua el curso de ASP.NET y accede a las 3 unidades gratis con acceso completo al aula virtual donde podrás disfrutar de la inestimable ayuda del tutor y una gran variedad de recursos como videotutoriales, ejercicios resueltos, foros, enlaces, bibliografía, etc....


4.1 Formas de declarar una matriz

Además de la más básica vista arriba vamos a ver mas formas de declarar una matriz:

1. Estableciendo el número de elementos:

        dim dias_semana (6) as string

2. Indicando el tipo de datos pero no el número de elementos

        dim numeros () as longh

3. Iniciando los valores

Al igual que las variables normales se pueden declarar y al mismo tiempo asignarle un valor inicial, con los arrays también podemos hacerlo, pero de una forma diferente, ya que no es lo mismo asignar un valor que varios. Aunque hay que tener presente que si inicializamos un array al declararla, no podemos indicar el número de elementos que tendrá, ya que el número de elementos estará supeditado a los valores asignados. Para inicializar un array debemos declarar ese array sin indicar el número de elementos que contendrá, seguida de un signo igual y a continuación los valores encerrados en llaves. Veamos un ejemplo:

	Dim a() As Integer = {1, 42, 15, 90, 2}

También podemos hacerlo de esta otra forma:

	Dim a As Integer() = {1, 42, 15, 90, 2}

Inscríbete ahora y accede a 3 unidades gratis

Evalua el curso de ASP.NET y accede a las 3 unidades gratis con acceso completo al aula virtual donde podrás disfrutar de la inestimable ayuda del tutor y una gran variedad de recursos como videotutoriales, ejercicios resueltos, foros, enlaces, bibliografía, etc....


4.2 Recorrer una matriz. Utilizar bucles For Next y  For Each para recorrer los elementos de un array

Mas adelante veremos las estructuras de flujo de los programas, como avance veamos dos tipos de bucles que nos ayudarán a recorrer las variables.

El tipo For Next es muy sencillo de utilizar y se adecuado para las matrices porque sabemos cuantos elementos tenemos que es fundamental para un bucle de este tipo.

Dim a() As Integer = {1, 42, 15, 90, 2}
'
Escribe ("Elementos del array a()= {0}", a.Length)
'
Dim i As Integer
For i=0 to 4
    Escribe (i & "<br>")
Next
 

El tipo de bucle For Each es muy útil para recorrer los elementos de un array, además de ser una de las pocas, por no decir la única, formas de poder acceder a un elemento de un array sin indicar el índice.

Dim a() As Integer = {1, 42, 15, 90, 2}
'
Escribe ("Elementos del array a() " & a.Length)
'
Dim i As Integer
For Each i In a
    Escribe(i)
Next
'

Me he adelantado un poco porque los bucles los veremos en el siguiente capítulo, pero te puedes hacer una idea de cómo funcionan... ahora vamos a hacer un pequeño ejemplo de matrices


Inscríbete ahora y accede a 3 unidades gratis

Evalua el curso de ASP.NET y accede a las 3 unidades gratis con acceso completo al aula virtual donde podrás disfrutar de la inestimable ayuda del tutor y una gran variedad de recursos como videotutoriales, ejercicios resueltos, foros, enlaces, bibliografía, etc....


4.3 Clasificar el contenido de un array

Todos los arrays están basados realmente en una clase del .NET Framework, (recuerda que TODO en .NET Framework son clases, aunque algunas con un tratamiento especial) La clase en las que se basan los arrays, es precisamente una llamada Array. Y esta clase tiene una serie de métodos y propiedades, entre los cuales está el método Sort, el cual sirve para clasificar el contenido de un array

Para clasificar el array a, podemos hacerlo de dos formas:

    a.Sort(a)

La variable a es un array, por tanto es del tipo Array y como tal, tiene el método Sort, el cual se usa pasando como parámetro el array que queremos clasifica. Pero esto puede parecer una redundancia, así que es preferible, por claridad, usar el segundo método:

Array.Sort(a)

En el que usamos el método Sort de la clase Array. Este método es lo que se llama un método "compartido" y por tanto se puede usar directamente

Nota Para nuestros ejemplos vamos a utilizar una instrucción nueva llamada "response.write" que nos escribirá en el navegador lo que le indiquemos ahí. Si en nuestro "Page_Load" le ponemos un "response.write ("Hola", le mandará ese texto al navegador. Con esto nos evitamos utilizar de momento los controles label ya que lo escribimos directamente. Veámoslo en este ejemplo...

Veamos ahora un ejemplo completo en el que se crea y asigna un array al declararla, se muestra el contenido del array usando un bucle For Each, se clasifica y se vuelve a mostrar usando un bucle For normal. Crea una página nueva y le pones este código en la parte inicial

Sub Page_Load()
    Dim a() As Integer = {1, 42, 15, 90, 2}
    'Escribimos en pantalla el número de elementos
    Response.write ("Elementos del array a(): " & a.Length & "<br>")
    '
    Dim i As Integer
    For Each i In a
	'Escribimos cada elemento (<br> es una línea en blanco)
        Response.write(i & "<br>")
    Next
    '
    Array.Sort(a)
    Response.write("Matriz ordenada:" & "<br>")
    '
    For i = 0 To a.Length - 1
	'Escribimos cada elementos de la matriz ordenada (<br> es una línea en blanco)	
        Response.write(a(i) & "<br>")
    Next
    '
End Sub

Resultado:


Inscríbete ahora y accede a 3 unidades gratis

Evalua el curso de ASP.NET y accede a las 3 unidades gratis con acceso completo al aula virtual donde podrás disfrutar de la inestimable ayuda del tutor y una gran variedad de recursos como videotutoriales, ejercicios resueltos, foros, enlaces, bibliografía, etc....


4.4 El contenido de los arrays son tipos por referencia

Cuando tenemos el siguiente código:

Dim m As Integer = 7
Dim n As Integer
'
n = m
'
m = 9
'
Response.write("m = " & m & ", n = " & n)

El contenido de n será 7 y el de m será 9, es decir cada variable contiene y mantiene de forma independiente el valor que se le ha asignado y a pesar de haber hecho la asignación n = m, y posteriormente haber cambiado el valore de m, la variable n no cambia de valor.

Sin embargo, si hacemos algo parecido con dos arrays, veremos que la cosa no es igual:

Dim a() As Integer = {1, 42, 15, 90, 2}
Dim b() As Integer
Dim i As Integer
'
b = a
'
a(3) = 55
'
For i = 0 To a.Length - 1
    Response.Write("a(i) = " & a (i) & " , b(i) = " &  b(i))
Next

En este caso, al cambiar el contenido del índice 3 del array a, también cambiamos el contenido del mismo índice del array b, esto es así porque sólo existe una copia en la memoria del array creado y cuando asignamos al array b el contenido de a, realmente le estamos asignando la dirección de memoria en la que se encuentran los valores, no estamos haciendo una nueva copia de esos valores, por tanto, al modificar el elemento 3 del array a, estamos modificando lo que tenemos "guardado" en la memoria y como resulta que el array b está apuntando (o hace referencia) a los mismos valores... pues pasa lo que pasa... que tanto a(3) como b(3) devuelven el mismo valor.

Para poder tener arrays con valores independientes, tendríamos que realizar una copia de todos los elementos del array a en el array b.


Inscríbete ahora y accede a 3 unidades gratis

Evalua el curso de ASP.NET y accede a las 3 unidades gratis con acceso completo al aula virtual donde podrás disfrutar de la inestimable ayuda del tutor y una gran variedad de recursos como videotutoriales, ejercicios resueltos, foros, enlaces, bibliografía, etc....


Si desea obtener un acceso sin restricciones a los contenidos del curso de ASP.NET y disfrutar de todas las herramientas del aula virtual (Videos explicativos streaming, acceso a los foros, chat, ejercicios resueltos, la ayuda del tutor, audioconferencia, estudio de grabación, test y actividades de autoevaluación, etc...) puede inscribirse completamente gratis y comenzar a realizar de forma inmediata el curso.