Hogar / Descripción general de Windows / Vba para paso es un ejemplo sencillo de cómo funciona. Bucles VBA. Trabajo de laboratorio sobre conceptos básicos de programación.

Vba para paso es un ejemplo sencillo de cómo funciona. Bucles VBA. Trabajo de laboratorio sobre conceptos básicos de programación.

Sintaxis del operador:

ParaEncimera= Comenzar tohFin[PasoPaso]

Operadores_bloque

PróximoEncimera

Aquí se indica:

Para Para (palabra clave obligatoriaVB);

A a (palabra clave obligatoriaVB);

Operadores_bloque– uno o más operadores llamados cuerpo del ciclo;

Encimera - una variable entera que cuenta el número de bucles ejecutados;

Principio, Fin - valores de contador inicial y final;

Paso paso(palabra claveVB);

Paso - paso de cambio de contador; puede ser negativo; el parámetro es opcional, porque si el paso es 1, puedesPaso Paso más bajo;

Siguiente – siguiente (palabra clave requerida VB, entrada del operador de fin de bucle).

Valor del contador (Inicio, Fin) puede haber constantes numéricas o variables de tipo entero o real, pueden ser números negativos o positivos. Para que el cuerpo del bucle se ejecute al menos una vez, debe haber Principio ≤ Fin, Si Paso> 0, y Principio ≥ Fin, Si Paso< 0. Tan pronto como resulte que Encimera>Fin ( Si Comenzar< Конец), La ejecución del bucle finaliza. Si Inicio =Fin, el bucle se ejecutará una vez;

Ejemplo 9.1 .Evaluación de funcionesY = 2 – 1.5 Sinxcuando X cambia en pasos de 0,2 en el rango.

Un fragmento de un programa para calcular Y y generar el argumento X y la función Y:

Para X = 0 a 2,4 Paso 0,2

Y = 2 – 1,5*Sin(X)

Para entender cómo funciona este bucle, aquí hay un programa para un bucle similar creado usando operadorIr a, etiquetas, operadorSiEntonces.

M1: X = X + 0,2

Si X<= 2.4 Then

Y = 2 – 1,5*Sin(X)

Veamos cómo funciona este programa. El primer cálculo Y no es estándar, como si se saliera del ciclo. El ciclo comienza después de la primera transferencia de control GoToM1 a la etiqueta M1. En la línea denominada M1, el argumento X se incrementa en un paso de 0,2 e inmediatamente se realiza una verificación para ver si el nuevo valor de X excede el valor final de 2,4. Si no excede, entonces el cálculo de Y se repite con esta nueva X. Luego, el operador GoToM1 se ejecuta nuevamente, transfiriendo el control a la línea etiquetada como M1. Estas iteraciones (ciclos) de cálculo de Y finalizarán tan pronto como X supere 2,4.

Ahora comparemos el programa con If con el bucle For...Next.

Para X = 0 a 2,4 Paso 0,2

reemplaza dos líneas

M1: X = X + 0,2

Si X<= 2.4 Then

Son las dos últimas líneas de código las que se ejecutan en el bucle For, pero no lo vemos. Los codificamos con la línea cFor... La línea de código de GoTo M1 está codificada con la palabra Next X (literalmente: next X). Esto da como resultado un diseño compacto.

Cuando utilice el bucle For...Next, debe aprender a utilizar el contador de bucle para resolver varios problemas. Para descubrir cómo usar un contador para resolver un problema, necesitas analizar la formulación del problema, encontrar patrones de cambios en algunos parámetros del problema.

Ejemplo 9.2 . Determinación de la suma de los elementos de una serie: .

Fragmento del programa:

S = 0 ‘ S – suma de la serie

Para i = 1 A 16 ‘ el contador i es el denominador de la fracción

S = S + 1/i ' acumulación de suma

Imprimir “S = “; S ' envía la cantidad S al formulario

Para cada valor del contador i, la expresión 1/i forma secuencialmente los elementos de la serie, empezando por 1.

Ejemplo 9.3 . Calcular la suma de una serie de elementos.
.

Fragmento del programa:

S = 0 ‘ S – suma de la serie

Para i = 1 a 18 ‘contador i – numerador

S = S + i/(i + 1) 'el denominador es 1 mayor que el numerador

Imprimir “S = “; S ' envía la cantidad S al formulario

Ejemplo 9.4 . Cálculo de la suma: 5 + 8 + 11 +… + 32 + 35

Fragmento del programa:

S = 0 ‘ S – suma de la serie

Para i = 5 a 35 Paso 3 'obtenemos la aritmética _

progresión con denominador 3

Imprimir “S = “; S

Ejemplo 9.5. Calcular la suma para una x dada:

El análisis del problema muestra que el grado de X varía de 1 a 10. En este caso, el numerador en el coeficiente de X es mayor que el grado en 1 y el denominador en 2. Formaremos el valor del grado usando contador i. Luego puedes crear un programa como este (fragmento):

S = 1 ‘ S – suma de la serie

Para i = 1 a 10 'como el contador i, el grado cambia en X

S = S + (-1)^i*(i + 1)*x^i / (i + 2)

Imprimir “S = “; S

CiclosParaPróximousado paraentrada, salida Yprocesamiento de matrices .

Ejemplo 9.6. Entrada y salida de valores de elementos de matriz B(norte).

Fragmento del programa:

‘Omitimos asignar el valor a la variable N, _

ingresado en el formulario en el campo de texto txtN:

B(i) = InputBox("Ingrese el elemento B(" & i & ")", _

"Matriz de entrada B(" & N & “)”)

Imprimir " "; Bi);

Función Cuadro de entrada() muestra un cuadro de diálogo con un botón de cerrar, un mensaje específico, un campo de entrada, botones DE ACUERDO,Cancelar, con un encabezado determinado (o sin él). Si ingresa el número 12, el tamaño de la matriz N, en nuestro ejemplo, cuando aparezca por primera vez, esta ventana se verá así:

Como podemos ver, el mensaje Introduzca el elemento B(1) le solicita que ingrese el valor del primer elemento en el cuadro de texto. Esta ventana aparecerá 12 veces porque la matriz contiene 12 elementos. Esto se desprende del título del formulario. El índice del elemento B(i) de la invitación variará del 1 al 12.

Si desea mostrar solo los valores de los elementos de la matriz B(N) en el formulario, entonces el cuerpo del bucle constará de una declaración:

La visualización de elementos de la matriz para realizar algunas acciones sobre ellos también se realiza utilizando el operador de bucle For...Next.

vamos a dar Ejemplos de procesamiento de matrices unidimensionales.

Ejemplo 9.7 . Determinando el elemento máximo en la matriz B (METRO).

Excluyendo la entrada de datos iniciales y la salida de resultados, describimos brevemente el algoritmo:

    Declaremos una variable Bmax, en la que ingresaremos el valor del primer elemento de la matriz, y una variable Imax, a la que le asignaremos 1, el índice del primer elemento de la matriz.

    En un bucle, usando el operador For...Next, revisamos todos los elementos de la matriz, comenzando por el segundo. Usando el operador If...Then, comparamos sus valores con el valor almacenado en la variable Bmax.

    Si resulta que el valor de un elemento de la matriz es mayor que el valor de Bmax, entonces a Bmax se le asigna el valor de este elemento y al valor Imax se le asigna el índice de este elemento de la matriz.

Una vez finalizado el ciclo, la variable Bmax contendrá el valor del elemento máximo y Imax contendrá su índice (número).

El programa para esta parte del algoritmo.

Bmáx = B(1): Imáx = 1

Si B(i) > Bmax Entonces Bmax = B(i): Imax = i

Ejemplo 9.8. Determinar la suma, el producto y el número de elementos positivos de una matrizD(METRO).

Variables: S, P, K – respectivamente la suma, el producto y el número de elementos positivos.

Algoritmo tal definición:

    A las variables S y K le asignamos cero, y a la variable P le asignamos 1. Como regla general, las variables donde se acumula la suma, aquí son S y k, siempre se ponen a cero antes del ciclo, y las variables en el que se calcula el producto se les asigna 1.

    Usando el bucle For...Next, revisamos todos los elementos de la matriz y comprobamos si son positivos (D(i) > 0).

    Si resulta que el elemento es positivo, entonces sumamos su valor al valor de la suma S y almacenamos la nueva suma en la misma variable. La variable P se multiplica por el valor positivo del elemento y también se almacena en la variable P. Y sumamos 1 a la variable K y almacenamos el nuevo valor en la misma variable

Programa Esta parte del algoritmo se ve así:

S = 0: P = 1: K = 0

Si D(i) > 0 Entonces

S = S + D(i) ‘así se acumula la cantidad _

valores positivos de los elementos de la matriz D (i)

P = P*D(i) 'definición del producto de valores positivos

'elementos de matriz

K = K + 1 ‘ este operador se llama CONTADOR, aquí está

'define el número de elementos positivos de la matriz

Ejemplo 9.9. Encontrar la suma, producto, número y promedio de elementos impares de una matrizD(METRO).

Aquí hay un fragmento de un programa para tal definición.

S = 0: P = 1: K = 0

Si D(i) Mod 2<>0 Entonces

Ssr = S/k ‘calculando el promedio de elementos impares

Compare este fragmento de programa con el programa del ejemplo 9.8. Este programa repite casi por completo el anterior. Sólo ha cambiado la condición en la declaración If. CondiciónD(i) Mod 2<>0 significa que estamos buscando elementos de la matriz D(i) que no son divisibles por 2, es decir, elementos impares. Si verificamos la condición D(i) Mod 2 = 0, seleccionaremos elementos pares de la matriz.

Como es sabido, la división por Modificación da el resto de la división en números enteros. Por ejemplo, después de ejecutar el operador d = 34Mod4, la variable d será igual a 2. Por lo tanto, para seleccionar elementos de la matriz que sean múltiplos de 4, debemos verificar la condición D(i) Mod 4 = 0. La condición será ser similares si buscamos elementos que sean múltiplos de otros números. Estos otros números se escribirán en lugar de 4.

Ejemplo 9.10. Escribir elementos de matrizR(norte), múltiplos de 5, en otra matriz y enviando la nueva matriz al formulario.

Designemos otra matriz, por ejemplo, R5(N). Se debe suponer que el tamaño de esta nueva matriz es el mismo que el original, ya que en el caso extremo todos los elementos pueden ser múltiplos de 5.

Algoritmo del problema:

    Reiniciar el contador k. Usando el operador de bucle For...Next, examinamos todos los elementos de la matriz R(N).

    Verificamos que cada elemento sea un múltiplo de 5 usando el operador If...Then y dividiendo el elemento de la matriz por Mod.

    Si el elemento es múltiplo de 5, entonces usando un contador de tipo k=k+ 1 formamos los índices del array R5(N), empezando por 1, y los escribimos en este otro array –R5(N).

    Si k es diferente de cero, muestre la matriz R5() en el formulario.

    Si k es igual a cero, obtenemos: "No hay elementos divisibles por 5".

Fragmento del programa:

Si R(i) Mod 5 Entonces k = k + 1: R5(k) = R(i)

si k<>0 Entonces

Imprimir “No hay elementos divisibles por 5”

Los bucles se pueden anidar dentro de otros bucles.

Demostremos el trabajo. bucles anidados . El siguiente programa muestra los valores de los contadores de ciclos i, j y k. A partir de la salida de i, j, k, queda claro cómo se ejecutan los bucles anidados.

Subprivado frmCycle_DblClick()

ScaleMode = 4’ unidades – símbolos

Para i = 1 a 3 'bucle exterior

Imprimir "yo = "; i;

Para j = 1 a 4 '1er bucle anidado

CurrentX = TextWidth("i = 1 ") + 5

Imprimir "j = "; j;

CurrentX = TextWidth("i = 1 j = 1 ") + 7

Para k = 1 a 5 'segundo bucle anidado

El formulario mostrado (Fig. 1) muestra los resultados de generar los contadores de los tres bucles: el bucle externo – contador i, el primer bucle anidado – contador j, y el segundo bucle más interno – contador k. Como vemos, el contador más lento es el bucle exterior(poi), y el “más rápido” es el contador del bucle más interno (segúnk).

El programa se ejecuta después de hacer doble clic con el botón izquierdo del ratón en el formulario frmCicli.

CurrentX, CurrentY: propiedades del formulario que especifican las coordenadas X, Y del punto de partida para la salida de información utilizando el método Imprimir (consulte la Fig. 1 para conocer la ubicación de los ejes X e Y en el formulario).

TextWidth() es una función que devuelve el ancho del texto especificado en la función como argumento entre comillas dobles.

Los bucles anidados se utilizan al procesar matrices (matrices) bidimensionales. Pero en algunas tareas, excluyendo la entrada y salida de elementos de una matriz bidimensional, puede limitarse a un bucle. Veamos algunos ejemplos de programación matricial.

Ejemplo 9.11. Entrada y salida de una matriz (matriz bidimensional) de números enterosintA(norte).

Puedes ingresar a la matriz. por filas y por columnas . Es más fácil, línea por línea, si programa la salida de los elementos de la matriz al formulario inmediatamente después de ingresarlos.

Entrada y salida de matrizlínea por línea - fragmento 1.

Dim M como entero, N como entero, i como entero, j como entero

Dim intA() As Integer ' declara una matriz dinámica

M = Val(txtN.Text) ‘ M – número de líneas

N = Val(txtN.Text) ' N - número de columnas

ReDim intA(M, N) As Integer 'redefine la matriz

Para i = 1 To M ‘i conservaré su valor hasta que esté completamente

'el bucle anidado en j no se ejecutará

Imprimir " "; intA(i,j); ' salida línea por línea

Imprimir 'ir al principio de una nueva línea

Para ingresar una matriz por columnas, debe hacer el bucle externo en j (especifica los números de las columnas) y el bucle interno en i (especifica los números de las filas).

Entrada y salida de matrizpor columnas fragmento 2.

PrY = 2500: CurrentY = PrY ‘ PrY establece la coordenada Y del inicio

'muestra el primer elemento de cada columna en el formulario

Para j = 1 To N ‘j conservará su valor hasta que esté completamente

'el bucle anidado en i no se ejecutará

intA (i, j) = InputBox("Ingrese el elemento intA(" & i & “,” & j & ")", _

"Matriz de entrada intA(" & M & “,” & N & ")")

Imprimir pestaña(6 * j); intA(i, j) 'salida por columnas

CurrentY = PrY ' para mostrar el primer elemento

' siguiente columna

Este segundo fragmento de programa no repite las primeras 5 líneas del primer fragmento. La función Tab(6 * j) establece el inicio de la salida en una línea (en caracteres), comenzando desde el borde izquierdo del formulario. La coordenada PrY aquí es igual a 2500 twips, pero puedes elegir otro valor.

Ejemplo 9.12 . Ordenar valores de elementos de matrizV(norte) ascendente.

Existen varios algoritmos para ordenar matrices. Aquí está uno de ellos: usando bucles anidadosParaPróximoseleccionamos elementos, desde el primero hasta el penúltimo, y comparamos cada uno de ellos con los elementos posteriores; si resulta que el elemento siguiente es más pequeño que el seleccionado, los intercambiamos.

Un fragmento de un programa que implementa este algoritmo:

Para i = 1 Para N – 1

Para j = i + 1 a N

Si V(j)< V(i) Then P = V(i): V(i) = V(j): V(j) = P

Expliquemos este fragmento del programa.

Usando un bucle externo con un contador i, seleccionamos el elemento V(i) para compararlo con los elementos posteriores. El bucle interno con un contador j selecciona elementos posteriores de V(j) para comparar. El valor inicial es igual a i + 1. Este es el primer elemento de los siguientes.

Para intercambiar los valores de los elementos V(i) y V(j), introducimos alguna variable P, en la que “ocultamos” temporalmente el valor de uno de los elementos de la matriz (en el programa es V(i )). Luego, al elemento V(i) se le asigna el valor del elemento V(j), y al elemento V(j) se le asigna el valor V(i), que se almacena en la variableP. Si “ocultamos” el valor V(j) en P, entonces el código para intercambiar valores será así: P = V(j): V(j) = V(i): V(i) = P El resultado no cambiará.

A ordenar la matriz en orden descendente, basta con escribir la condición de verificación en la forma V(j) > V(i), es decir cambiar el signo de desigualdad por otro.

Si la matriz no es numérica, sino una cadena, y los apellidos se ingresan en los elementos de la matriz, entonces, usando el programa del ejemplo 9.12, puede ordenar la lista de apellidos alfabéticamente. El hecho es que para las letras del alfabeto utilizadas en una computadora, se cumplen las siguientes desigualdades: A< Б < В < Г….< Я и т. д., поскольку числовые коды букв алфавита последовательно увеличиваются, начиная с А и до конца алфавита. Это же справедливо и для букв английского алфавита.

Ejemplo 9.13 . Calcular la suma de elementos positivos para columnas impares de una matrizF(METRO, norte) y enviar las cantidades al formulario.

Algoritmo del programa:

    Usando el bucle exterior del paso 2, formamos un índice de las columnas impares de la matriz, comenzando desde la primera columna.

    Restablecemos la suma S, en la que se acumulará la suma de elementos positivos.

    En el bucle interior comprobamos el signo del elemento de la matriz.

    Si el elemento de la matriz es positivo (> 0), calculamos la suma S.

    Después del final del bucle interno, mostramos la suma S en el formulario.

Fragmento programas:

Para j = 1 a N Paso 2

Si F(i, j) > 0 Entonces S = S + F(i, j)

Imprimir “Suma de columnas”; j; “:”; S ' j - ¡número de columna!

Los bucles anidados te permiten organizar enumeración de opciones y resolver problemas que no pueden resolverse analíticamente. Como resultado de la búsqueda se obtienen opciones de solución, entre las cuales se selecciona una o más que cumplan con las condiciones del problema.

Ejemplo 9.14. Hay 1801 rublos. ¿Cuántos chocolates puedes comprar por 31 rublos? y bollos por 18 rublos para gastar todo el dinero.

Programa:

Cantidad = 1801

Todos los chocolates = Suma\31: Todos los graneles = Suma\18

Para i = 1 para todos los chocolates

Para j = 1 a VseBulk

Precio = i * 31 + j * 18 'precio total de compra

Si precio = 1801 entonces

Imprimir "Chocolate: "; i; Tabulador(19); "Bulok: "; j

Expliquemos el programa en el que utilizamos variables nombradas en ruso.

En primer lugar, determinamos cuál es el número máximo de chocolates solos o bollos solos que se pueden comprar por el importe total. Usamos los valores resultantes de AllChocolates y AllBulks para limitar el número de búsquedas de chocolates y panecillos. Para cada valor de la cantidad de chocolates (i) y la cantidad de rollos (j), determinamos el Precio total de su compra. Si el precio calculado es 1801, entonces la opción seleccionada es una de las soluciones al problema.

La función Tab() especifica desde qué posición desde el borde del formulario se mostrará la información que sigue a esta función. Si Tab(19), entonces desde la posición 19.

El programa muestra 3 posibles opciones de compra:

Chocolate 7, panecillos 88

Chocolate 25, panecillos 57

Chocolate 43, panecillos 26

Si desea dar una respuesta inequívoca, debe formular una condición adicional. Por ejemplo, “se compraron menos bollos que chocolates”. Entonces la única solución será la tercera opción.

Hay muchos problemas matemáticos que pueden resolverse simplemente mediante fuerza bruta utilizando programación de bucle anidado.

Además de las estructuras de toma de decisiones, existe otro tipo de estructura de control llamada ciclo.

Ciclo es una estructura algorítmica con la ayuda de la cual se implementan múltiples repeticiones de bloques de operadores.

Hay tres tipos principales de bucles en Visual Basic, que se implementan mediante las construcciones For:Next, Do:Loop y While:Wend.

Para:Siguiente bucle. Se utiliza cuando se conoce de antemano el número de repeticiones de un determinado bloque de declaraciones. Este diseño se ve así:

Para contador = valor inicial Al valor final Operadores1 Operadores2 Siguiente [contador]

Cuando las declaraciones anteriores se ejecutan por primera vez, a la variable contador se le asigna un valor inicial, después del cual son posibles dos opciones. Si, como resultado de verificar el contador de condición > valor final, se obtiene el valor Verdadero, entonces el ciclo finaliza y los bloques operadores1 y operadores2 nunca se ejecutan. Por otro lado, si el resultado de la prueba de condición es Falso, entonces los bloques de instrucciones se ejecutan por primera vez, después de lo cual se produce la transición al comienzo del ciclo. A continuación, el valor de la variable del contador aumenta en un paso ubicado después de la palabra clave Paso (si está ausente, se establece paso = 1). Después de esto, se verifica nuevamente la verdad del contador de condición > valor final, etc., el final del ciclo ocurre en el momento en que el resultado de esta verificación es el valor Verdadero.

A menudo es necesario finalizar un circuito de “emergencia” cuando se cumple alguna condición adicional. En este caso, dentro del bucle deberías utilizar la frase de servicio Exit:For, que normalmente se encuentra en estructura de control, Por ejemplo:

Si la condición es entonces salir para

Si el resultado de verificar la condición es Verdadero, entonces la ejecución del bucle finalizará y el bloque operador1 se ejecutará nuevamente, pero el bloque operador2 no.

Hacer: bucle. Se utiliza cuando se desconoce de antemano el número de repeticiones de los operadores del cuerpo del bucle. Hay cuatro variedades de este diseño. Cuando se utilizan los dos primeros, el bucle se ejecutará muchas veces o no se ejecutará en absoluto.

Hacer hasta condición Declaraciones de bucle

Si el resultado de verificar la condición es Falso, entonces se ejecuta el bloque de declaraciones; de lo contrario, se realiza la transición a la declaración ubicada después de la palabra de servicio Bucle. Por otro lado, si la primera prueba de la condición devuelve el resultado Verdadero, entonces el bucle no se ejecutará ni una sola vez.

Hacer mientras declaraciones de bucle de condición

Si la condición es verdadera, entonces se ejecuta el bloque de declaraciones, pero si es falsa, es decir, el resultado de la verificación es Falso, entonces el bucle no se ejecutará ni una sola vez.

Si se utilizan las dos últimas construcciones, el bucle se ejecutará al menos una vez.

Hacer bucle de declaraciones hasta la condición

El bloque de declaración se ejecuta siempre que el resultado de probar la condición sea Falso; de lo contrario, el ciclo finaliza.

Hacer bucle de declaraciones mientras condición

Si la condición es falsa se ejecuta el bloque de sentencias, pero si es verdadera, es decir El resultado de la verificación es Verdadero, luego se produce el final del ciclo.

Bucle while: Wend. También se utiliza cuando se desconoce de antemano el número de repeticiones de las declaraciones del cuerpo del bucle y tiene la siguiente sintaxis:

Mientras condición declaraciones Wend

Si el resultado de verificar la condición es Verdadero, entonces se ejecuta el bloque de operadores; de lo contrario, la transición se realiza al operador ubicado después de la palabra de servicio Wend. Por otro lado, si la primera prueba de la condición devuelve el resultado Falso, entonces el bucle no se ejecutará ni una sola vez.

VBA. Organización de ciclos.

Las declaraciones de bucle se utilizan para repetir una acción o grupo de acciones un número específico de veces. El número de repeticiones (iteraciones de bucle) puede ser predeterminado o calculado.

VBA admite dos tipos de construcciones en bucle:

  1. Bucles con un número fijo de repeticiones ( bucles contrarrestados).
  2. Bucles con un número indefinido de repeticiones ( bucles condicionales).

Para todo tipo de ciclos se utiliza el concepto. cuerpo de bucle , que define un bloque de declaraciones encerradas entre las declaraciones de inicio y fin del bucle. Cada repetición de la ejecución de las sentencias del cuerpo del bucle se llama iteración

Ciclos fijos

VBA proporciona dos estructuras de control para organizar un bucle fijo: For... Next (bucle con un contador) y For Each... Next (bucle con una enumeración).

Operador para...Siguiente Este es un bucle de contador típico que ejecuta un número específico de iteraciones. La sintaxis de la declaración For...Next es:

Para<счетчик> = <начЗначение>Eso<конЗначение>

<блок операторов>

Próximo [<счетчик>]

Un ejemplo del uso del operador Para...Siguiente.

Listado 1. Para... Siguiente operador

‘TAREA: Crear un programa que reciba dos números del usuario.

' Suma todos los números en el rango especificado por estos dos números, y luego

'muestra la cantidad resultante.

Submuestra7()

Dim i As Integer’ contador de ciclos

Atenuar el valor del contador inicial de sStart

Atenuar el valor del contador final de envío

Dim sSum As Long 'suma resultante

sStart = InputBox(“Ingrese el primer número:”)

sEnd = InputBox(“Ingrese el segundo número:”)

sSuma = 0

Para i = CInt(sInicio) A CInt(enviar)

sSuma = sSuma + i

siguiente yo

MsgBox "La suma de los números desde " & sStart & " hasta " & sEnd & " es: " & sSum

Subtítulo final

Declaración de bucle para cada...Siguientepertenece a la categoría de operadores de tipo de objeto, es decir se aplica principalmente a colecciones objetos, así como matrices . El cuerpo del bucle se ejecuta un número fijo de veces, correspondiente al número de elementos de la matriz o colección. Para cada...Siguiente formato de declaración:

Para cada uno<элемент>En<группа> <блок операторов>Próximo [<элемент>]

Bucles condicionales (bucles indefinidos)

Los bucles condicionales se utilizan cuando es necesario realizar acciones repetidas solo bajo ciertas condiciones. El número de iteraciones no está definido y, en general, puede ser igual a cero (en particular, bucles for con una condición previa). VBA ofrece a los desarrolladores varias estructuras de control para organizar bucles condicionales:

  • Cuatro tipos de Do..Loops, que se diferencian en el tipo de condición que se verifica y el tiempo que lleva completar esta verificación.
  • Bucle continuo Mientras... Wend.

El bucle Do While... es típico bucle con condición previa. La condición se verifica antes de ejecutar el cuerpo del bucle. El ciclo continúa su trabajo hasta que<условие>se ejecuta (es decir, tiene el valor Verdadero). Dado que la verificación se realiza al principio, es posible que el cuerpo del bucle nunca se ejecute. Hacer mientras... Formato de bucle:

hacer mientras<условие>

<блок операторов>

Bucle

Listado 2. Hacer mientras... Bucle

‘TAREA: Crear un programa que requiera la entrada del usuario

'una secuencia arbitraria de números. La entrada debe ser terminada

'solo después de que la suma de los números impares ingresados ​​supere 100.

Submuestra8()

Dim OddSum As Integer 'suma de números impares

Dim OddStr As String 'una cadena con números impares

Dim Num’ para aceptar números ingresados

OddStr = “” ‘inicialización de cadena de salida

OddSum = 0 'inicializar OddSum

Hacer mientras OddSum< 100 ‘начало цикла

Num = InputBox(“Ingrese un número: “)

Si (Núm Mod 2)<>0 Luego 'verificación de paridad

OddSum = OddSum + Num’ acumulación de la suma de números impares

OddStr = OddStr & Núm & ””

Terminar si

Bucle

'imprime una cadena con números impares

Mensaje de MsgBox: = "Números impares:" & OddStr

Subtítulo final

Hacer... bucle mientras declaracióndiseñado para la organizaciónbucle con poscondición. La condición se comprueba después de que el cuerpo del bucle se haya ejecutado al menos una vez. El ciclo continúa su trabajo hasta<условие>sigue siendo cierto. Hacer... Bucle mientras Formato:

Hacer<блок операторов>Bucle mientras<условие>

Listado 3. Bucle con poscondición

‘TAREA: Crear un programa para el juego “Adivina el número”. El programa debe ser aleatorio.

' forma de generar un número en el rango de 1 a 1000, el usuario debe

'adivina este número. El programa muestra una pista para cada número ingresado.

'"más" o "menos".

Submuestra8()

Randomize Timer 'inicializa el generador de números aleatorios

Dim msg As String 'cadena de mensaje

Dim SecretNumber mientras sea largo, UserNumber como variante

Comenzar: SecretNumber = Round(Rnd * 1000) 'número generado por computadora

UserNumber = Vacío 'número ingresado por el usuario

Hacer juego

Seleccionar caso verdadero

Caso está vacío (Número de usuario): msg = "Ingrese un número"

Número de usuario del caso > Número secreto: msg = “¡Demasiados!”

Número de usuario del caso< SecretNumber: msg = “Слишком мало!”

Finalizar selección

Número de usuario = Cuadro de entrada (mensaje: = mensaje, Título: = "Adivina el número")

Bucle mientras número de usuario<>Número Secreto

'examen

If MsgBox(“¿Jugar de nuevo?”, vbYesNo + vbQuestion, “¡Lo adivinaste!”) = vbYes Entonces

Ir a comenzar

Terminar si

Subtítulo final

Los bucles hacen hasta... bucle y hacen... bucle hasta son inversiones de los bucles condicionales discutidos anteriormente. En general, funcionan de manera similar, excepto que el cuerpo del bucle se ejecuta si la condición es falsa (es decir,<условие>=Falso). Hacer hasta... Formato de bucle:

hacer hasta<условие> <блок операторов>Bucle

Hacer... Bucle hasta formato de bucle:

<блок операторов>

Bucle hasta<условие>

Tarea práctica:Reescriba los programas en los Listados 10 y 11 usando sentencias de bucle invertido.

Bucle mientras...Wend También se aplica a los bucles condicionales. Este operador es totalmente coherente con la estructura del bucle Do While.... Mientras... Formato de bucle Wend:

Mientras<условие>

<блок операторов>

Encaminarse a

Una característica distintiva de este operador es la imposibilidad de forzar la finalización (interrupción) del cuerpo del bucle (el operador Exit Do no funciona en el bucle While... Wend).

Interrumpir un ciclo

Para finalizar una iteración antes de tiempo y salir del bucle, se utiliza la instrucción Exit. Este operador es aplicable en cualquier estructura cíclica excepto While... Wend. La sintaxis general para usar Salir para romper un bucle es:

<начало_цикла>

[<блок операторов1>]

Salir (Para | Hacer)

[<блок операторов2>]

<конец_цикла>

Cuando se ejecuta la instrucción Exit, el ciclo se interrumpe y el control se transfiere a la instrucción que sigue a la instrucción.<конец_цикла>. Puede haber varias declaraciones de salida en el cuerpo de un bucle.

Listado 4. Forzar la salida del bucle

Submuestra9()

Para i = 1 a 10000000

Si i = 10, entonces Salir para 'salir del ciclo cuando el contador llegue a 10

Próximo

Lección de la serie: “ Programación en Visual Basic.NEN para escolares"

Se ha familiarizado con el control ComboBox.
En esta lección continuaremos nuestro estudio de los operadores del lenguaje Visual Basic.Net, enfocándonos en los operadores de bucle.
Cíclico estructuras algorítmicas hay tres tipos:

  1. bucles contadores en los que se ejecuta el cuerpo del bucle una cierta cantidad una vez;
  2. bucles para procesar matrices o colecciones;
  3. Bucles condicionales, en los que el cuerpo del bucle se ejecuta mientras la condición es verdadera (o hasta que la condición se vuelve verdadera).

En esta lección veremos el operador de bucle con un contador (For... Next). Escribamos un proyecto usando este operador.

Ciclo con mostrador Para. . . siguiente Se utiliza cuando se sabe de antemano cuántas repeticiones se deben realizar.

diagrama de bloques

Vista general del operador.

For Counter = StartValue To EndValue Cuerpo del bucle Siguiente [Contador]

La sintaxis del operador es la siguiente: la línea que comienza con la palabra clave For es el comienzo del bucle y la línea con la palabra clave Next es el final del bucle, entre ellas hay declaraciones que son el cuerpo del bucle.

Algoritmo para ejecutar el operador For. . . Próximo

  1. El valor de la variable Contador se establece en StartValue.
  2. El contador de condiciones está marcado.<= КонЗнач
  3. Si se cumple la condición, se ejecuta el cuerpo del bucle. La variable Contador cambia por el valor del paso: Contador = Contador + paso.
  4. Cuando la variable Counter alcanza el valor ConValue, el bucle sale y se ejecutan las siguientes declaraciones.

El programador puede organizar una salida prematura del bucle utilizando la construcción Exit For. En este caso, el bucle se sale automáticamente y el control se transfiere al siguiente comando que sigue al bucle.

Proyecto "Rentas sobre Depósitos"

Escriba un proyecto que calcule los ingresos de un depósito y proporcione el cálculo del interés simple y compuesto. El interés simple se acumula al final del plazo del depósito, el interés compuesto se acumula mensualmente y se agrega al monto del depósito inicial, y el mes siguiente se acumula interés sobre el nuevo monto. La forma recomendada se muestra en la figura.

Tecnología de ejecución

Este tutorial mostró cómo usar un bucle For...Next para repetir el código una cantidad específica de veces.

Cualquier acción de un procedimiento que se repite un número específico de veces o hasta que se cumpla o no alguna condición se llama ciclo .

El proceso de ejecutar todas las declaraciones encerradas en una estructura de bucle una vez se llama iteración de bucle.

Las estructuras de bucle que siempre se ejecutan un número específico de veces se llaman bucles con un número fijo de iteraciones. Otros tipos de estructuras de bucle se repiten un número variable de veces dependiendo de un conjunto de condiciones. Estos ciclos se llaman ciclos indefinidos.

El bloque de declaraciones ubicado entre el principio y el final del ciclo se llama "cuerpo de bucle".

La estructura de bucle más simple es ciclo fijo .

Para...Siguiente bucle

Sintaxis

Para encimera = Comenzar A Fin
Declaraciones
Próximo [ encimera]

Contador: cualquier variable numérica de VBA
Inicio: cualquier expresión numérica que defina el valor inicial de la variable del contador.
Fin: una expresión numérica que define el valor final de la variable del contador.


Por defecto, VBA incrementa una variable. encimera por 1 cada vez que las declaraciones se ejecutan en el bucle. Puede establecer un valor diferente ( tamaño ester- cualquier expresión numérica) por la cual cambiará encimera.

Palabra clave Próximo le dice a VBA que se ha alcanzado el final del ciclo. Variable opcional encimera después de la palabra clave Próximo debe ser la misma variable encimera, que se especificó después de la palabra clave Para al comienzo de la estructura del bucle.


A continuación se muestra una lista del bucle más simple. Para...Siguiente, que cuenta la suma de números del 1 al 10:



Y ahora dos opciones para el ciclo. Para...Siguiente usando un paso de bucle distinto de uno:



¡Prestar atención! Al disminuir el contador de ciclos Para...Siguiente el bucle se ejecuta siempre que la variable del contador sea mayor o igual que el valor final, y cuando se incrementa el contador del bucle, el bucle se ejecuta siempre que la variable del contador sea menor o igual al valor final.

Bucle para cada uno...Siguiente

Ciclo Para cada uno...Siguiente no utiliza un contador de ciclos. Ciclos Para cada uno...Siguiente se ejecutan tantas veces como elementos haya en un grupo particular, como una colección de objetos o una matriz (que se discutirá más adelante). En otras palabras, el ciclo Para cada uno...Siguiente se ejecuta una vez para cada elemento del grupo.

Sintaxis

Para cada uno Elemento En Grupo
Declaraciones
Próximo [ Elemento]

Elemento: una variable utilizada para iterar sobre todos los elementos de un grupo específico.
El grupo es un objeto o matriz de colección.
Declaraciones: una, varias o ninguna declaración VBA (cuerpo del bucle).