Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

25
Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat

Transcript of Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

Page 1: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

Arreglos y comunicación Usuario

Profesor: Rodrigo Cruzat

Page 2: 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

Page 3: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

MsgBox

respuesta = MsgBox("texto para el usuario“[, tiposBotones, "titulo“])

Dim respuesta As Integerrespuesta = MsgBox("Este es un MsgBox",3, "Hola inf2001-X")

Page 4: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

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")

Page 5: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

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)

Page 6: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

InputBox

Dim respuesta As String

respuesta = InputBox(“Como te llamas?", “Dime tu nombre“, “Aca va el nombre”)

Page 7: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

Arreglos y Estructuras

Page 8: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

Á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

Page 9: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

Ejemplo

Page 10: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

Problema

Page 11: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

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

Page 12: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

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")

Page 13: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

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”

Page 14: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

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.

Page 15: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

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.

Page 16: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

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

Page 17: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

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)

Page 18: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

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.

Page 19: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

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.

Page 20: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

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.

Page 21: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

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.

Page 22: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

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.

Page 23: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

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”

Page 24: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

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

Page 25: Arreglos y comunicación Usuario Profesor: Rodrigo Cruzat.

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.