VBA – Iteración Indefinida Iteración Indefinida: Do…Loop: Do While…Loop Do Until…Loop Do…Loop While Do…Loop Until
Repaso Iteración definida For…Next Conceptos de Acumulador y Contador Métodos de Integración: Rectangular, Trapezoidal, Simpson 1/3 Simple Clase 5
Iteración Indefinida La Iteración Indefinida permite repetir un conjunto de instrucciones un número indefinido de veces. La estructura Do…Loop permite representar la iteración indefinida en VB. Clase 5
Iteración Indefinida La Iteración Indefinida repite la ejecución de un conjunto de instrucciones mientras una condición dada sea verdadera, o hasta que una condición dada sea verdadera. Do While…Loop Mientras que Do Until…Loop Hasta que Clase 5
Representación Estructura Do While…Loop Libre Instrucciones Mientras exp_lógica Loop Estructurado Instrucciones Mientras exp_lógica Clase 5
Representación Estructura Do Until…Loop Libre Instrucciones Hasta exp_lógica Loop Estructurado Instrucciones Hasta exp_lógica Clase 5
exp_lógica: Una expresión lógica Estructura Do…Loop: Sintaxis 1 Do While exp_lógica Instrucciones Loop El ciclo se inicia si exp_lógica es True (verdadero) y se repite mientras que exp_lógica sea verdadera. Si exp_lógica es False, el ciclo termina y se continúa con la expresión siguiente a Loop. Las instrucciones se ejecutan 0 ó varias veces Instrucciones: Una o más instrucciones entre Do y Loop que se ejecutan un número indefinido de veces. exp_lógica: Una expresión lógica Clase 5
exp_lógica: Una expresión lógica Estructura Do…Loop: Sintaxis 2 Do Until exp_lógica Instrucciones Loop El ciclo se inicia si exp_lógica es False (falso) y se repite hasta que exp_lógica sea verdadera. Si exp_lógica es True, el ciclo termina y se continúa con la expresión siguiente a Loop. Las instrucciones se ejecutan 0 ó varias veces exp_lógica: Una expresión lógica Instrucciones: Una ó más instrucciones entre Do y Loop que se ejecutan un número indefinido de veces. Clase 5
exp_lógica: Una expresión lógica Estructura Do…Loop: Sintaxis 3 Do Instrucciones Loop While exp_lógica El ciclo se ejecuta una vez y se vuelve a repetir mientras que exp_lógica sea True. Si exp_lógica es False, el ciclo termina y se continúa con la expresión siguiente a Loop. Las instrucciones se ejecutan 1 ó varias veces Instrucciones: Una ó más instrucciones entre Do y Loop que se ejecutan un número indefinido de veces. exp_lógica: Una expresión lógica Clase 5
exp_lógica: Una expresión lógica Estructura Do…Loop: Sintaxis 4 Do Instrucciones Loop Until exp_lógica El ciclo se ejecuta una vez y se vuelve a repetir hasta que exp_lógica sea True. Si exp_lógica es True, el ciclo termina y se continúa con la expresión siguiente a Loop. Las instrucciones se ejecutan 1 ó varias veces Instrucciones: Una ó más instrucciones entre Do y Loop que se ejecutan un número indefinido de veces. exp_lógica: Una expresión lógica Clase 5
Estructura Do…Loop Do While exp_lógica Instrucciones Loop Estas dos formas de iteración indefinida verifican la expresión lógica al inicio del proceso Do Until exp_lógica Instrucciones Loop Clase 5
Estructura Do…Loop Do Instrucciones Loop While exp_lógica Do Estas dos formas de iteración indefinida verifican la expresión lógica al final del proceso Do Instrucciones Loop Until exp_lógica Clase 5
Equivalencia entre While y Until Do While exp_lógica Instrucciones Loop Una estructura While siempre se puede convertir en una estructura Until y viceversa Do Until Not(exp_lógica) Instrucciones Loop Clase 5
N = Int((Fin – Inicio)/Incr)+1 Iteración Indefinida Vs. Iteración Definida En la Iteración Indefinida NO se sabe, en general, de antemano cuántas veces se repetirá el ciclo. Si se desea saber el número de veces que se repite el ciclo se necesita un contador. En la Iteración Definida SI se sabe de antemano cuántas veces se repetirá el ciclo: N = Int((Fin – Inicio)/Incr)+1 Clase 5
Una estructura For siempre se puede convertir en una estructura Do Equivalencia entre For y Do For I = A To B Step C Instrucciones Next I Una estructura For siempre se puede convertir en una estructura Do I = A Do While I<=B Instrucciones I=I+C Loop Clase 5
Ejemplo 1: Iteración Definida Calcular la suma de los 100 primeros términos de la sumatoria: S = 0 K = 0, 99, 1 S = S+1/(1+K^2) Terminar Inicio Mostrar S Dim K As Integer, S As Double S = 0 For K = 0 To 99 S = S + 1 / (1 + K ^ 2) Next K Text1.Text = S Clase 5
Ejemplo 2: Iteración Indefinida Calcular S hasta que el último término de la serie sea menor o igual que 0.0001 Contar cuántos términos se requieren para alcanzar ese valor. Clase 5
Desarrollo Matemático Ejemplo 2: Desarrollo Matemático k=5 k=6 k=3 k=4 k=0 k=2 k=1 0.5 < 0.0001? 0.2 < 0.0001? 0.1 < 0.0001? 0.0588 < 0.0001? 0.03846 < 0.0001? 0.027 < 0.0001? Cuándo 1/(1+k2) ≤ 0.0001? NO NO NO NO NO NO Clase 5
Desarrollo Matemático Ejemplo 2: Desarrollo Matemático Clase 5
Ejemplo 2: Interfaz Gráfica Clase 5
Ejemplo 2: Código del programa Dim S As Double, Term As Double Dim Error As Double, K As Long Error = Val(Text1.Text) S = 0 K = 0 Do Term = 1 / (1 + K ^ 2) S = S + Term K = K + 1 Loop While (Term > Error) Text2.Text = S Text3.Text = K Clase 5