arreglos y comunicación usuario profesor: rodrigo cruzat
TRANSCRIPT
Arreglos y comunicación Usuario
Profesor: Rodrigo Cruzat
MsgBox
Abre una ventana Envía mensaje al usuario y pide
– respuesta– O.K./Cancel– Yes/No.– Etc
MsgBox
respuesta = MsgBox("texto para el usuario“[, tiposBotones, "titulo“])
Dim respuesta As Integerrespuesta = MsgBox("Este es un MsgBox",3, "Hola inf2001-X")
MsgBox
Botón seleccionado por defecto: Sumar a tipoBotones– 0 para que sea el primero– 256 para el segundo– 512 para el tercero
Agregar ícono– 16 critical– 32 question– 48 exclamation– 64 information}
respuesta = MsgBox(“aaa?", 4+256+32, “a")
InputBox
Pide al usuario que teclee una frase, e.g., su nombre, un título, etc.texto = InputBox("texto para el usuario","titulo", "default", left, top)
texto: lo ingresado por el usuario “default” lo que aparece en caja de texto Left, top: coordenadas. (opcional)
InputBox
Dim respuesta As String
respuesta = InputBox(“Como te llamas?", “Dime tu nombre“, “Aca va el nombre”)
Arreglos y Estructuras
Ámbito de variables
En un solo procedimiento– Dim– Static
Retiene su valor cuando el procedimiento termina
En un solo módulo– Dim antes del primer Sub o Function
Todos los procedimientos en todos los módulos– Public antes del primer Sub o Function en un módulo
Ejemplo
Problema
Solucion 1
Dim v1, v2, v3, v4, v5, v6, v7, v8, v9, v10 As IntegerFor i = 2 To 101 Dim voto As Integer voto = Hoja1.Cells(i, 1) If voto = 1 Then v1 = v1 + 1 ElseIf voto = 2 Then v2 = v2 + 1 ... ElseIf voto = 9 Then v9 = v9 + 1 Else 'voto es 10 v10 = v10 + 1 End IfNext i
Solucion 1 (Cont)
Dim result As String
result = "Candidato 1: " & v1 & ", candidato 2: " & v2 & ", candidato 3:" & v3 & ", candidato 4: " & v4 & ",candidato 5: " & v5 & ", candidato 6:" & v6 & ", candidato 7: " & v7 & ",candidato 8: " & v8 & ", candidato 9:" & v9 & ", candidato 10: " & v10
respuesta = MsgBox(result, 0,"Resultados")
Solucion con Arreglos
Dim v(10) As IntegerFor i = 2 To 101 Dim voto As Integer voto = Hoja1.Cells(i, 1) v(voto - 1) = v(voto - 1) + 1NextDim result As String For i = 0 To 9 (i r+e s1u)l t& =" :r e"s u&l tv (&i )" C&a n"d i"dato " & Nextrespuesta = MsgBox(result, 0, “Resultados”
Arreglos
Un arreglo, o array, permite referirse a una serie de elementos del mismo tipo con un mismo nombre
Si el array es de tipo Variant cada elemento puede contener un dato de tipo diferente, e incluso puede contener otro array.
Arreglos Estáticos y Dinámicos
Hay dos tipos de arreglos en VB
1. Arrays estáticos, cuya dimensión es siempre la misma.
2. Arrays dinámicos, cuya dimensión se puede modificar durante la ejecución del programa.
Arreglo estático: creación
Dim vector(20) As Double– Array de una dimensión con nombre vector– 20 elementos, vector(0), vector(1), ... , vector(19)– Cada elemento almacena un Double
Dim matriz(3, 6) As Integer– Array de dos dimensiones con nombre matriz– 3x6 elementos, matriz(0,0), ... matriz(2,5), de tipo entero.
Dim cadena(1 To 12) As String– Array de una dimensión con nombre cadena– 12 elementos, caract(1), ... , caract(12), de tipo string
Ejemplos: acceso
Dim vector(20) As Double– Darle un valor a un elemento
vector(20) = 123
– Obtener el valor de un elemento Hoja1.Cells(1,1) = vector(20)
Arreglos Dinámicos
Un array estático tiene tamaño fijo Ejemplo: Dim vector(20) As Double
¡¡siempre tiene tamaño 20!! El espacio para un array dinámico se
asigna durante la ejecución del programa. Un array dinámico, puede ser
redimensionado en cualquier momento de laejecución.
Arreglos Dinámicos
Creación: igual que estático, pero sin darle dimensión
Dim vector() As Double Asignar núm de elementos: se usa ReDim. ReDim
§ puede aparecer solamente en un procedimiento§ permite cambiar el número de elementos del array y sus límites inferior y superior,§ No permite cambiar el número de dimensiones.
Ejemplos
Dim Matriz( ) As Integer...ReDim Matriz(100, 50)...Notas Al ejecutar ReDim, valores almacenados en el array se pierden Para conservar los valores del array, ejecutar ReDim con la palabra clave
Preserve.
ReDim Preserve A(D1, UBound(A, 2) + 2)incrementa el tamaño del array en dos columnas más.Cuando se utiliza la palabra Preserve no puede cambiarse elíndice inferior del array (sí el superior).UBound(Array,dim) : devuelve tamaño de la dimensión dim dela matriz.
Estructuras: Sentencia Type
Una estructura es un nuevo tipo de datos, que el usuario define y puede ser manipulado de la misma forma que los tipos predefinidos (Int,Double, String, ...).
Una estructura puede definirse como una colección o agrupación de datos de diferentes tipos evidentemente relacionados entre sí.
Para crear una estructura hay que utilizar la sentencia Type ... End Type.
Ejemplos
Public Type AlumnoNombre As StringDireccion As StringTelefono As LongID As Long
End Type Este ejemplo declara un tipo de datos denominado
Alumno que consta de cuatro miembros o campos, denominados Nombre, Direccion, Telefono y ID.
Ejemplos
Una vez definido un nuevo tipo de datos, se pueden declarar variables de ese tipo
Public Type AlumnoNombre As StringDireccion As StringTelefono As LongID As Long
End TypeSub Botón1_AlHacerClic()Dim Alum1 As Alumno…End Sub
Para referirse a un miembro de una estructura se utiliza la notación variable.miembroAlum1.Nombre = “Juanito”
Estructuras de Estructuras
Un miembro de una estructura puede ser otra estructura, es decir un tipo definido por el usuarioType Fecha
Dia As IntegerMes As IntegerAnio As Integer
End Type
Type AlumnoNacimiento As FechaNombre As StringDireccion As StringTelefono AS LongID As Long
End Type
Estructuras, Arreglos yArgumentos
Dentro de una estructura puede haber arrays tanto estáticos como dinámicos.
Se pueden definir arrays de estructuras.
Dim grupoB (1 To 100) As Alumno Las estructuras pueden ser también argumentos
en las llamadas a funciones y procedimientos Sub.Siempre son pasados por referencia; En el caso de las funciones, las estructuras pueden ser también valores de retorno.