ESTRUCTURAS DE SELECCIÓN . Estructura temática Introducción 1.1. Condicional If 1.2. Condicionales if else 1.3. Estructura Case 1.4. Aplicaciones INTRODUCCIÓN La programación de computadores cuenta con una serie de estructuras que permiten realizar procesos en forma ordenada y ascendente, estas son usadas como elementos de control, la de selección tipo if, ejecuta un proceso cuando esta cumple con una condición, esta es la estructura simple, la estructura if else, realiza una instrucción si se cumple la condición, pero si no se cumple realiza otra acción por el else o ( sino). La estructura case puede seleccionar dentro de una serie de opciones la que cumpla con el caso. El manejo de las estructuras de programación es importante conocer y apropiarse de los conceptos básicos de análisis lógico aplicado al diseño de programas. OBJETIVO GENERAL Revisar los conceptos básicos, de la programación en Visual 2010 y que el estudiante se apropie del manejo de las diferentes estructuras de selección iteración y repetición que permita desarrollar aplicaciones computacionales. 1.1. CONDICIONAL IF. Las sentencias condicionales son aquellas que se realizan si se cumple una determinada condición. If (condición) acción. El formato: If condición then Acción End if El computador evalúa la condición, si encuentra que la condición es diferente de 0 entonces ejecuta la acción y luego sigue con la próxima instrucción en el programa. Si encuentra que el resultado es 0 no se ejecuta la acción y continúa con otras instrucciones. Ejemplo 1 Crear un formulario con el uso de una clave pueda acceder o habilitar un GroupBox. Dos Button Dos TextBox Un GroupBox Dos Label El textbox 1 debe tener la propiedad PasswordChar. El GroupBox1 la propiedad Visible = a False ( o sea oculto ). En el Buuton1 , Validar Clave, el código. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If TextBox1.Text = "unad" Then GroupBox1.Visible = True MessageBox.Show(" Desea Votar", " Votacion Unad", _ MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) End If End Sub En el Button2. Terminar. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click GroupBox1.Visible = False TextBox1.Text = "" End Sub Ejemplo 2. Crear un formulario. Dos RadioButton Un TextBox Un Button Programar. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If (Azul.Checked = True) Then TextBox1.BackColor = Color.Blue End If If (RadioButton2.Checked = True) Then TextBox1.BackColor = Color.Red End If Pasar el foco de un TextBox. Significa, que al dar enter sobre un cuadro de texto luego de escribir algo en ese cuadro el cursor queda en el cuadro de texto al cual lo direccionemos. Funciona con un condicional La función ASCII que permite tomar el carácter leído Uso del Método Focus al TextBox If Asc(e.KeyChar) = 13 Then TextBox1.Focus() End If Pasos para trabajar: 1 crear el formulario (Form1), puede asignarle otro nombre si lo desea. Tres etiquetas (Label) Tres TextBox(Cajas de texto) Al programar: doble clic sobre el TextBox1 Se debe seleccionar el objeto Se debe seleccionar el evento Keypress Programar en evento. Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If Asc(e.KeyChar) = 13 Then TextBox2.Focus() End If End Sub Así para las demás cajas de texto. Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If Asc(e.KeyChar) = 13 Then TextBox3.Focus() End If End Sub Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress If Asc(e.KeyChar) = 13 Then MsgBox("Muy bien") End If End Sub 1.2. CONDICIONALES IF ELSE Si se cumple una condición Entonces Instrucciones uno Si no se cumple Instrucciones dos Fin de la sentencia. Para programar en 2010 se traduce así: If condición Then Instrucciones uno Else Instrucciones dos End If Puede también ejecutar otras condiciones distintas. Puede ocurrir que, caso de no cumplirse la condición primera, se pregunte por otras condiciones de dos o tres posibilidades. La sentencia condicional tendría entonces la forma: If condición 1 Then Instrucción uno Else If Condición 2 Instrucciones dos Else If Condición 3 Instrucción 3 Else Instrucción que se realiza si no cumplir las condiciones 1, 2 y 3. End If Ejemplo 1 Realizar un programa que lea desde un cuadro de texto un valor de una temperatura, si la temperatura leída es mayor a 27 grados, muestre un mensaje caliente, si la temperatura está entre 27 y 15 grados muestre un mensaje templado y si la temperatura es menor a 15 grados, muestre el mensaje, frio, además cada vez que ejecute una lectura debe retornar el cursor al cuadro de texto para digitar otra temperatura. Para realizarla se requiere: Un form1 Un button Un label Este código va en el Button y es quien realiza la operación. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim x As Integer x = TextBox1.Text If x < 15 Then MsgBox("frio") TextBox1.Focus() TextBox1.Text = "" ElseIf x > 27 Then MsgBox("caliente") TextBox1.Focus() TextBox1.Text = "" Else MsgBox("Templado") TextBox1.Focus() TextBox1.Text = "" End If End Sub 1. 2. 3. 4. 5. Se declara una variable x entera Se asigna lo leído o el contenido del textbox1 a la variable x Se realiza la primera condición Si esta se cumple muestra el mensaje frio. Si no cumple ejecuta la siguiente condición por el ElseIf para ejecutar la condición de x > 27 para mostrar el mensaje de caliente. 6. Si no cumple con ninguna de las condiciones entonces ejecuta el else y muestra el mensaje templado. 7. Note que por cualquiera de las opciones que tome, se retorna el foco al text1.tex con la instrucción text1.focus y además limpia el cuadro de texto con la instrucción, textbox1.text = “”. 1.3. ESTRUCTURA CASE Esta estructura Selecciona, dependiendo del caso, un determinado juego de instrucciones: Select Case variable ' variable de 1 a n’ Case 1 Instrucción a ejecutar si variable = 1 Case 2 Instrucción a ejecutar si variable = 2 Case 3 Instrucción a ejecutar si variable = 3 Case 4 Instrucción a ejecutar si variable = 4 End Select Este procedimiento resulta mucho mas sencillo y rápido que las sentencias If Then Else, vistas anteriormente, cuando el margen de elección es mayor que 2. Ejemplo case 1 Crear un programa que al digitar un número entre 1 y 7 muestre el día de la semana al cual corresponde y se digita un número mayor muestra mensaje de error. Para realizarlo use: Un formulario, form1 Un label Un Button Un Textbox Programar Button. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim x As Integer x = TextBox1.Text If x < 1 Or x > 7 Then MsgBox("numero fuera de rango ") TextBox1.Focus() TextBox1.Text = "" End If Select Case x Case 1 MsgBox("Lunes") TextBox1.Focus() TextBox1.Text = "" Case 2 MsgBox("Martes") TextBox1.Focus() TextBox1.Text = "" Case 3 MsgBox("Miercoles") TextBox1.Focus() TextBox1.Text = "" Case 4 MsgBox("Jueves") TextBox1.Focus() TextBox1.Text = "" Case 5 MsgBox("Viernes") TextBox1.Focus() TextBox1.Text = "" Case 6 MsgBox("Sabado") TextBox1.Focus() TextBox1.Text = "" Case 7 MsgBox("Domingo ") TextBox1.Focus() TextBox1.Text = "" End Select End Sub ESTRUCTURA DE ITERACIÓN CON EVALUACIÓN PREVIA Se da cuando la condición de salida se evalúa antes de la ejecución de cada ciclo. Se verifica primero la condición y si resulta ser adecuada se ejecutan las acciones asociadas para volver a evaluar la condición. En este tipo de estructuras puede ocurrir que la condición sea inadecuada la primera vez que se evalúa y que, por lo tanto, las acciones asociadas no lleguen a ejecutarse nunca. La iteración con evaluación previa debe utilizarse entonces en aquellos casos en que la ejecución de todo el ciclo esté sujeta al estado previo de una condición, y, por lo tanto, esté previsto que las acciones puedan no ejecutarse nunca. Por ejemplo: mientras la variable A sea inferior a 10 escribir un salto de línea y sumarle 1 a la variable A. En este caso, si ocurre que la variable A llega al ciclo con un valor no inferior a 10 -esto es, si la condición es inicialmente falsa- no se escribirá ningún salto de línea ni se incrementará la variable. ESTRUCTURA DE ITERACIÓN CON EVALUACIÓN POSTERIOR Se da cuando la condición de salida se evalúa después de la ejecución de cada ciclo. Se ejecutan primero las acciones asociadas al ciclo, se evalúa luego la condición y, si resulta ser adecuada, se repite el ciclo. En este tipo de estructuras ocurre que las acciones asociadas con el ciclo se ejecutan siempre, por lo menos una vez. La iteración con evaluación posterior debe utilizarse entonces en aquellos casos en que la evaluación de la condición esté sujeta a la ejecución del ciclo y, por lo tanto, esté previsto que las acciones deban ejecutarse siempre, por lo menos una vez. Por ejemplo: apretar una tecla mientras que la tecla apretada sea diferente de <Enter>. En este caso es necesario primero oprimir por lo menos una tecla para poder evaluar luego si es <Enter> y repetir eventualmente la acción de oprimir una tecla ESTRUCTRA WHILE La instrucción while permite ejecutar una instrucción o un grupo de instrucciones un número determinado de veces mientras se cumple una condición La forma de esta estructura es: While (condición) Bloque de instrucciones End While Mientras la condición se mantenga verdadera, el bloque de instrucciones se ejecutará "x" cantidad de veces. Es necesario que alguna vez la condición se haga falsa, pues de lo contrario se entraría en un ciclo infinito de repeticiones el programa se consideraría bloqueado. Por lo tanto es necesario que en el bloque de instrucciones dentro de la estructura while, se ejecute alguna acción que en algún momento haga que la condición sea falsa. Un ejemplo del funcionamiento de la estructura de repetición while: Cree en un formulario un botón de comando y haga el siguiente código para ver la forma de evaluación de la condición y sus resultados. Se envía los datos de x a listbox1, mientras cumple la condición de x <= 10. Para realizarlo se usa: Un formulario form1 Un Label Un Listbox Y la programación va sobre el formulario ( form1). Cuando se ejecuta el programa activa de una el while. Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim x As Integer x = 1 While x <= 10 ListBox1.Items.Add(x) x = x + 1 End While End Sub End Class El mismo ejercicio pero ejecutándose desde un Botón (Button) y tomando los datos desde un textbox (caja de texto). Botón de ejecutar: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim x As Integer Dim n As Integer x = 1 n = TextBox1.Text While x <= n ListBox1.Items.Add(x) x = x + 1 End While End Sub Botón Nueva Lista Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ListBox1.Items.Clear() TextBox1.Text = "" TextBox1.Focus() End Sub Botón Salir Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click End End Sub http://www.youtube.com/watch?v=q1WlPxYF_qQ ESTRUCTURA DO LOOP WHILE La instrucción do while permite ejecutar una instrucción o un grupo de instrucciones un numero determinado de veces. La estructura es: Do Instrucciones Loop While condición control Veamos un ejemplo en donde se imprimen los números del 1 al 4 usando esta estructura. Crear un formulario (form1) Diigitar el codigo: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim i As Integer = 0 Do MsgBox("Ejemplo Do " + i.ToString) i = i + 1 Loop While i < 5 End Sub Imprime en un Msgbox los valores que toma i. Ejemplo ejecutado desde un Button(botón) Digitar el código en el botón Ejecutar: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer = 0 Do While i < 5 MsgBox("Ejemplo Do While " + i.ToString) i = i + 1 Loop End Sub Estructura do while loop Do While condición Acciones Loop Para el ejemplo: este se ejecuta desde el formulario (Form1). Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim i As Integer = 0 Do While i < 5 MsgBox("Ejemplo Do While " + i.ToString) i = i + 1 Loop End Sub Ejemplo 3. Carga un arreglo con Do While y lo Muestra o imprime con While. La programación va en el Botón (Button), Ejecutar. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer = 0 Dim arreglo(7) Do While i < 7 arreglo(i) = i i = i + 1 Loop i = 0 While i < 7 MsgBox("Ejemplo Do While.. While " + i.ToString) i = i + 1 End While End Sub Al ejecutarse se puede ver el contenido del arreglo: Ejemplo 3 Encontrar factorial de un número usando while. Código para encontrar el factorial de un numero. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer = 1 Dim x As Integer = 0 Dim fac As Integer = 1 x = TextBox1.Text Do While i <= x fac = fac * i i = i + 1 Loop MsgBox("Ejemplo Do While.. Factorial de " + x.ToString + " = " + fac.ToString) End Sub Practica: revise que sucede al cambiar la instrucción de mostrar resultado, de donde se encuentra fuera del while y agregarla dentro del While. DO UNTIL La diferencia entre una y otra es la condición, While para indicar Mientras se cumpla que... y Until para indicar Mientras no se cumpla que.... X=0 Do Until X > 1000 X=X+1 Loop Con el mismo ejercicio anterior se puede Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer = 1 Dim x As Integer = 0 Dim fac As Integer = 1 x = TextBox1.Text Do Until i > x fac = fac * i i = i + 1 MsgBox("Ejemplo Do While.. Factorial de " + x.ToString + " = " + fac.ToString) Loop CICLO FOR Un ciclo for es una sucesión repetitiva de instrucciones, que se estarán realizando mientras se cumpla una condición o mientras no se cumpla otra condición. que realiza un número determinado de recorridos por el bucle. Es el denominado bucle por contador. For variable inicial = valor de inicio to (hasta) valor final Instrucciones Next La sentencia FOR se utiliza para los bucles, su sintaxis en visual 2010 es: FOR (inicialización) TO (Final del bucle) STEP (paso) Sentencias ........ NEXT La sentencia realiza un ciclo desde la inicialización hasta el final o final del bucle. Para llevar la cuenta se utiliza una variable, Con cada ejecución del bucle se ejecutan unas sentencias o acciones. NEXT sirve para delimitar el final del bucle, cuando se encuentra con el NEXT se vuelve otra vez al principio del FOR, así hasta realizar el número de ejecuciones programado. Existe un valor que sirve para indicar los pasos o saltos que se realizaran entre ejecución y ejecución, es el valor STEP. Un STEP 3 determinaría que entre ejecución y ejecución la variable se ha de incrementar en 3 unidades. En el caso de no indicar nada se realizan pasos de 1 en 1. También puede trabajar con valores negativos. http://msdn.microsoft.com/es-es/library/5z06z1kb%28v=vs.100%29.aspx Un ejemplo aplicado sería el siguiente: Ciclo For ejemplo 1 Un mensaje en MsgBox en donde muestra los números hasta 5. 1. 2. 3. 4. Cree un formulario (Form1). Puede cambiarle el nombre. Luego dele doble clic sobre el form1 Programe el ciclo for Ejecute. El código del form1 es: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim i As Integer For i = 0 To 4 MsgBox(i) Next End Sub Al ejecutarse muestra: Al dar clic sobre el Botón Aceptar muestra uno a uno los elementos del ciclo. Hasta que cumpla con todos. Ciclo for ejemplo 2 La programación para este ejercicio es la misma que el ejemplo de While para el botón Nueva Lista y Salir, cambia es el uso del ciclo For en el Botón (Button) Ejecutar. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim x As Integer x = 1 Dim n As Integer n = TextBox1.Text For x = 1 To n ListBox1.Items.Add(x) Next x End Sub El ciclo for se incrementa de uno en uno, pero si se desea, se puede usar Step en el ciclo para informarle otra opción de paso. Ejemplo: Step 2 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim x As Integer Dim n As Integer n = TextBox1.Text For x = 1 To n Step 2 ListBox1.Items.Add(x) Next x End Sub 3.1.1 Arreglos Arreglo unidimensional Un array (arreglo) o un vector es una estructura que permite almacenar un conjunto de elementos o datos de un mismo tipo. Un arreglo está compuesto por espacios identificados por subíndices para saber la posición del elemento, cada índice es una posición para almacenar datos. 0 30 2 1 35 40 3 45 4 50 5 55 Los valores 30, 35,40…..son datos Los valores 0, 1, 2, 3, 4,5 son los índices del arreglo. Se declara en visual DIM Arreglo(indice_superior) As TIPO_DE_DATO Dim arreglo (6) As Integer Crear un arreglo usando ciclo for. 1. 2. 3. 4. Cree un formulario (Form1). Puede cambiarle el nombre. Luego dele doble clic sobre el form1 Programe el ciclo for Ejecute. Código para el form1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim arreglo(5) As Integer Dim i As Integer For i = 0 To 4 arreglo(i) = i + 1 MsgBox("Arreglo (" + i.ToString + ") = " + arreglo(i).ToString) Next End Sub Al ejecutarse muestra la posición del arreglo y el número que va en el arreglo, como se da i +1, mostrara el tamaño del arreglo. Ejemplo arreglo Ingresar datos a un arreglo por teclado. Por medio de InpuBox. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim arreglo(5) As Integer Dim i As Integer For i = 0 To 4 arreglo(i) = InputBox("Digite Numero ") Next For i = 0 To 4 MsgBox("Arreglo (" + i.ToString + ") arreglo(i).ToString) Next = " + El primer for captura los datos desde InpuBox. El segundo for recorre el arreglo y muestra el contenido. Ejercicio for Arreglo con datos tipo string cargados directamente en el arreglo y mostrados en un ListBox. Para este ejemplo se usa: Un Formulario (Form1) Un Botón (Button) Un ListBox Código necesario para realizar este programa. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim nombres(4) As String nombres(0) = "jaime" nombres(1) = "Andrés" nombres(2) = "Nicolas" nombres(3) = "jars" For i As Integer = 0 To 3 ListBox1.Items.Add(nombres(i)) Next End Sub 3.2 FOR ANIDADOS Esta clase de estructura de programación maneja un ciclo for dentro de otro ciclo for, con la característica principal que por cada ejecución del ciclo del for mas externo, se realiza todo el ciclo interno. Sintaxis FOR (inicialización) TO (Final del bucle) STEP (paso) FOR (inicialización) TO (Final del bucle) STEP (paso) Sentencias NEXT NEXT En inicialización esta la variable con el valor inicial del for. Final del bucle, hasta dónde va el ciclo Step el incremento, si se omite por defecto es 1. En esta estructura cuando ingresa un primer valor para i, j realiza todo el ciclo , cunado termina , sale e incrementa i en 1, y comienza de nuevo todo el ciclo de j. Como ejemplo realizar las tablas de multiplicar partiendo desde un número inicial hasta un número final, para esto se trabaja: Un formulario (Form1). Para hacerlo usamos: Dos label Dos cajas de texto (TextBox) Un ListBox El código: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer Dim j As Integer Dim p As Integer Dim n As Integer Dim n1 As Integer n = TextBox1.Text n1 = TextBox2.Text For i = n To n1 For j = 1 To 10 p = i * j ListBox1.Items.Add((i & "X" & j & " = " & p)) Next Next End Sub También se puede declarar Dim i, j, p,n,n1 As Integer. 3.2.1 Matrices Matriz de 3 X 3, quiere decir que tiene 3 filas 3 columnas, la intersección de fila columna se identifica según la fila y la columna, 0,0 indica primera fila, primera columna, 1,1, fila 1, columna 1, recuerde que la matriz comienza siempre en 0 para fila y para columna. Para la posición 2,2 es la fila 2 y la columna Columna0 Columna1 Columna2 Fila0 Fila1 Fila2 Para la posición 1,1, fila 1, columna 1. Para el ejercicio de ejemplo: Fila0 Fila1 Fila2 Columna0 Columna1 Columna2 1 2 3 4 5 6 7 8 9 Definidos de entrada en la matriz. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim datos(3, 3) As Integer Dim i, j As Integer datos(0, datos(0, datos(0, datos(1, datos(1, datos(1, datos(2, datos(2, datos(2, 0) 1) 2) 0) 1) 2) 0) 1) 2) = = = = = = = = = "1" "2" "3" "4" "5" "6" "7" "8" "9" For i = 0 To 2 For j = 0 To 2 MsgBox(datos(i, j)) Next Next End Sub El ciclo for con j, recorre la fila El ciclo for con i, recorre las columnas Cada vez que ejecuta una i, se ejecutan los 3 ciclos para j, partiendo en 0. Así: i= 0 j=0 j=1 j = 2 luego cambia i = 1 y de nuevo ejecuta el ciclo j. Operación entre matrices Suma de matrices. Se deben crear tres matrices las de la operación y un destino para el resultado de la operación. Matriz datos con los números de 1 a 9 en cada posición. Fila0 Fila1 Fila2 Columna0 Columna1 Columna2 1 2 3 4 5 6 7 8 9 Matriz datos1 con el número 2 en cada posición, se puede con otro número. Columna0 Columna1 Columna2 Fila0 2 2 2 Fila1 2 2 2 Fila2 2 2 2 Matriz resultado en donde guarda el resultado de la suma de matrices. Columna0 Columna1 Columna2 Fila0 Fila1 Fila2 1. Crear formulario (Form1) 2. Un Boton (Button) Programarlo. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim datos(3, 3) As Integer Dim datos1(3, 3) As Integer Dim resultado(3, 3) As Integer Dim i, j As Integer 'Matriz 1 datos datos(0, datos(0, datos(0, datos(1, datos(1, datos(1, datos(2, datos(2, datos(2, 0) 1) 2) 0) 1) 2) 0) 1) 2) = = = = = = = = = "1" "2" "3" "4" "5" "6" "7" "8" "9" 'Matriz 2 datos1 datos1(0, datos1(0, datos1(0, datos1(1, datos1(1, datos1(1, datos1(2, datos1(2, datos1(2, 0) 1) 2) 0) 1) 2) 0) 1) 2) = = = = = = = = = "2" "2" "2" "2" "2" "2" "2" "2" "2" For i = 0 To 2 For j = 0 To 2 resultado(i, j) = (datos(i, j) + datos1(i, j)) MsgBox(resultado(i, j)) Next Next End Sub 3.3 FOR EACH ... NEXT. Esta construcción es similar al ciclo For, con la diferencia de que la variable que controla la repetición del bucle no toma valores entre un mínimo y un máximo, sino a partir de los elementos de un array (o de una colección de objetos). Su estructura es la siguiente: For Each variable In grupo [ Sentencias] Next Public Class Form1 Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged ListBox1.Items.Add(ComboBox1.Text) sumar() End Sub Sub agregar() ComboBox1.Items.Add(10) ComboBox1.Items.Add(20) ComboBox1.Items.Add(30) ComboBox1.Items.Add(40) End Sub Sub sumar() Dim total As Integer For Each elementos In ListBox1.Items total += elementos.ToString Next TextBox1.Text = total End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load agregar() End Sub End Class