Curso de programación en .NET - Tema 1.28 - Datos, Visual Studio 2005.
1. Datos, VB.
1.1 Objetivos del tema.
Veamos los datos ahora desde el punto de vista de VB.
Entrar en los tipos de usuario, ahora estructuras en VB, y sus características.
1.2 Introducción.
Hecha la introducción a nivel general en el tema anterior, ahora tenemos que profundizar sobre los datos en VB, los tipos básicos están ya comentados a principio del curso, toca ahora ampliar el uso de los mismos y de sus estructuras, formas de almacenamiento y su acceso desde VB.
1.3 Tipos de datos.
Ya hemos mencionado en un sin fin de ocasiones que arrancamos de dos tipos básicos, y que estos después se amplían en cada uno de los lenguajes de programación existentes.
En los datos numéricos, en función del lenguaje utilizado, encontraremos una mayor o menor gama de variaciones, pero básicamente serán de dos tipos, los que tienen decimales, -single, double, real -, y los que no admiten decimales, integer.
| Código: |
Bytes Máximo Mínimo
Byte números 1 255 0
Booleano 2 True False
Integer rangos 2 32,767 -32,768
Long Entero largo 4 2,147,483,647 -2,147,483,648
Single precisión números (positivos) 4 3.402823E+38 1.401298E-45
Single precisión números(negativos) 4 -1.401298E-45 -3.402823E+38
Double precisión números(positivos) 8 1.797693134862315D+308 4.940656458412465D-324
Double precisión números (negativos) 8 -4.940656458412465D-324 -1.797693134862315D+308 |
Pero esto es lo que podríamos llamar tipos de datos estándar o del lenguaje.
1.4 Declaración.
Los datos a lo largo de un programa pueden cambiar o permanecer inalterables.
Si cambian, o puede ser que cambien, la utilización del mismo se hará mediante el uso de variables.
Si el dato va permanecer inalterable a lo largo del programa, podemos utilizar una constante.
Las constantes y las variables han de declararse antes de utilizarse.
La declaración de una constante es como sigue:
| Código: | | Const PI As Double = 3.1416 |
Para declarar constantes se utiliza el calificador Const nombre tipo y valor.
Una vez declarada una constante, por definición no se le puede asignar otro valor. Por ello, cuando se declara una constante debe ser iniciada con un valor.
Las variables se pueden declarar en cualquier bloque de código, dentro de procedimientos o funciones.
La declaración es siempre indicando primero el nombre de la variable y después el tipo.
| Código: | | Dim Ruta As String |
Podrá o no inicializarse.
| Código: | | Dim Ruta As String = “C:\Archivo.Ext” |
Delante del tipo de la variable, también se puede indicar el ámbito de disponibilidad de la misma, indicando delante public o private.
| Código: | | Public Ruta As String = “C:\Archivo.Ext” |
Como public tiene sentido a nivel de programa o en un módulo disponible así para toda la aplicación.
Como private tiene sentido solo a nivel de procedimiento o función.
En caso de declarar un objeto en lugar de una variable, podemos hacer
| Código: | | Dim Objeto as Clase |
En cuyo caso el objeto queda con un valor nulo.
O bien podemos declarar e inicializar el objeto directamente.
Hay que tener presente que la inicialización dependerá siempre de cómo esté diseñada la clase.
| Código: | | Dim Objeto As Clase = New Clase (50,60) |
1.5 Conversión de tipos.
En algunos casos, es necesario convertir una variable de un tipo en otro. Por ejemplo, puede que se necesite pasar una variable int a un método que acepte solamente variables single. Este proceso se denomina conversión de tipo.
Para convertir el tipo de una variable, basta utilizar la función adecuada de conversión.
El siguiente ejemplo muestra cómo el valor devuelto por un método, de tipo int, puede convertirse en single:
| Código: | Dim A As Single
Dim B As Integer
B = CSng(A) |
Debe tenerse cuidado cuando se conviertan tipos, ya que es posible que se produzca una pérdida de información.
Por ejemplo, cuando se convierte una variable long de 64 bits en una variable int de 32 bits, el compilador omite los 32 bits de orden superior de la variable long.
Si, en el momento de realizar la conversión de tipo, el valor de la variable long ocupase más de 32 bits, en el proceso de conversión se asignaría un valor incorrecto a la variable int.
La regla general es que el tipo convertido debe tener como mínimo un tamaño igual al tipo original.
1.6 Nombres, estructuras.
Con la riqueza del castellano, no tiene sentido complicarse la vida a la hora de asignar el nombre a una variable, por lo tanto, no utilicemos las palabras propias del lenguaje, y no se pueden utilizar los símbolos especiales como los operadores, etc.
Palabras cortas y si deseamos dos las unimos con el guión bajo.
| Código: | | Dim precio_venta_publico As Double = 0 |
Pero mejor ...
| Código: | | Dim pre_vta_pub As Double = 0 |
1.7 Tipos de estructuras.
En un programa los datos pueden tener distintas formas.
- Constante: Un dato que permanece invariable a lo largo del programa.
- Variable: Un dato que cambia de valor a lo largo del programa.
- Array: Es una estructura estática de datos, una agrupación de datos, del mismo tipo, los cuales es posible referenciar con un único nombre y diferenciarlos a través de un índice.
- Colecciones Es una estructura dinámica de datos, similar a un array. Collections.
- Listas: Existe una clase especializada en su gestión, List.
1.8 Ambito de las variables.
En términos generales las variables se consideran locales y globales, o públicas y privadas, después aparece las características de cada lenguaje de programación.
En VB las variables se consideran privadas o locales, y se definen dentro de un método, procedimiento o función, por lo que al finalizar el método desaparece la variable, se destruye.
| Código: | | Dim dato1, dato2, resultado As Double |
Se pueden declarar a nivel de la clase, módulo o formulario acompañadas de la palabra public.
| Código: | Public Class Clase
Public Dat1 As Integer = 1000 |
Y entonces podrá ser utilizada por el objeto que se cree de dicha clase.
| Código: | .. / ..
Dim Objeto As Clase = New Clase()
Objeto.Dat1 = 23
.. / .. |
Se pueden declarar a nivel de la clase, acompañadas de la palabra private.
| Código: | Public Objeto As Clase
Private Double dat1 = 1000; |
Se pueden declarar dentro de una sentencia If, y al finalizar ésta sentencia finaliza su posibilidad de usarse.
| Código: | if (condición) Then
Dim variable = 5
instrucción;
... / ...
instrucción;
End if |
En general se pueden declarar dentro de un bloque de código, entendiendo por bloque lo comprendido el contenido entre un inicio y final de estructura que lo pueda permitir como es un sentencia If.
1.9 Tipos de usuario, estructuras.
El motivo de llamarlos estructuras actualmente no deja de tener algo de sentido, peo conviene que sepamos también que los dos términos son equivalentes.
La declaración de los mismos en la versión actual de VB es
| Código: | Structure Monitor
Dim Marca As String
Dim Pulgadas As Integer
Dim Resolución As String
Dim Velocidad As String
End Structure |
Que significa
| Código: | | Structure Monitor |
El nombre de la estructura.
| Código: | Dim Marca As String
Dim Pulgadas As Integer
Dim Resolución As String
Dim Velocidad As String |
Cada uno de los datos que la componen.
Y el final de la misma.
Su ubicación aunque puede estar en muchos sitios dentro de un proyecto, conviene que por cuestiones de organización las declaremos en un modulo exclusivo para ello, y estará disponible para toda la aplicación, proyecto.
Después tendremos alguna estructura que será muy personal de un único programa, entonces se declara en el mencionado programa.
1.10 Tipos de usuario anidados.
Pero habitualmente en las estructuras de datos es normal que un tipo de usuario albergue a otros tipos de usuario, o que los tipos se aniden unos a otros.
| Código: | Structure Mueble
Dim Color As String
Dim Construido as string
Dim Uso as string
Dim Fabricante as string
End Structure
Structure Silla
Dim Caracteristicas As Mueble
Dim Precio As Double
Dim Cantidad As Double
End Structure |
En el ejemplo podemos observar como la estructura Mueble se utiliza en la definición de un dato llamado "Caracteristicas" en la estructura "Silla".
Otra forma de utilizarlos es creando estructuras de datos más amplias mediante el uso de arrays, en próximo tema los veremos, pero dejamos aquí un avance.
| Código: | Structure Asientos
Dim Asiento() As String
End Structure
Structure Sesiones
Dim Filas() As Asientos
End Structure
Structure Cine
Dim Fecha As String
Dim Sesion() As Sesiones
End Structure |
Esta estructura podría ¿¿¿servir ??? para declarar algo parecido a un cine, teatro, etc., acabando con algo así como
| Código: | | Dim V() As Cine ' estructura del lugar |
Que significa declarar un array, sin tamaño, del tipo, estructura Cine.
Después diremos que V tiene, por ejemplo, treinta elementos, un mes en pocas palabras.
1.11 Ventajas.
No tiene sentido volver a comentar lo mismo, es un tema innegable, y se vienen utilizando desde hace mucho tiempo, y más a medida que los sistemas han ido mejorando en prestaciones y capacidades.
Aunque no sea muy real, solo hay que remitirse al ejemplo del cine, el uso de la estructura anterior queda dentro de un programa en algo parecido a lo siguiente:
| Código: | V(Dia).Fecha = FechaReserva
V(Dia).Sesion(Sesion).Filas(Fila).Asiento(Asiento) = Nombre |
En la que previamente a las variables
Día un día dentro del margen de reservas.
FechaReserva le habremos asignado una fecha
Sesión una de las posibles sesiones de le fecha anterior.
Fila una fila del teatro, cine.
Asiento un asiento disponible
V(Dia).Sesion(Sesion).Filas(Fila).Asiento(Asiento) el nombre de unapersona.
Por lo que queda claro la facilidad de comprensión del ejemplo y lo práctico que puede ser el uso adecuado de la
estructura.
La alternativa a esto podría ser
| Código: | | V(Dia,Sesion,Fila,Asiento) = Nombre |
que implica una estructura más compleja de utilizar, no imposible, pero si es más sencilla la anterior.
1.12 Ejercicios propuestos.
1. Defina un tipo de usuario que le permita utilizar todos los datos relacionados con las características de un monitor.
2. Defina varios tipos de usuario de tal forma que le permita crear una estructura de datos anidada, es decir que al menos uno de los tipos de usuario esté en el interior de otro tipo o estructura.
Se trata traducir la solución de los ejercicios del tema anterior a VB.
1.13 Solución a los ejercicios propuestos.
1. Defina un tipo de usuario que le permita utilizar todos los datos relacionados con las características de un monitor.
| Código: | Structure Monitor
Dim Marca As String
Dim Pulgadas As Integer
Dim Resolución As String
Dim Velocidad As String
End Structure |
2. Defina varios tipos de usuario de tal forma que le permita crear una estructura de datos anidada, es decir que al menos uno de los tipos de usuario esté en el interior de otro tipo o estructura.
| Código: | Structure Mueble
Dim Color As String
Dim Construido as string
Dim Uso as string
Dim Fabricante as string
End Structure
Structure Silla
Dim Caracteristicas As Mueble
Dim Precio As Double
Dim Cantidad As Double
End Structure
Structure Cama
Dim Caracteristicas As Mueble
Dim Medidas As String
Dim Precio As Double
Dim Cantidad As Double
End Structure
Dim Dato As Silla |
Autor del curso: Casiopea |