Un cycle d'une valeur d'index plus importante à un VBA plus petit. Cycles VBA. Les cycles peuvent être investis dans d'autres cycles.

Opérateurs de cycle

En vba. Il existe deux types principaux de cycles - cycles avec un mètre (paramétrique) et des cycles avec la condition (itérative).

Les cycles d'un mètre sont utilisés dans des cas où il est nécessaire d'effectuer certaines actions un certain nombre de fois

Les cycles avec la condition sont appliqués lorsque certaines actions du programme doivent être répétées jusqu'à ce qu'une condition spécifique soit effectuée.

Cycles avec paramètrePour ... Suivant

Structure du cycle:

Pour Paramètre_cycla \u003d initial_dationÀ. Date de fin

[Étape étape]

Les opérateurs

[Sortez pour]

Suivant [Paramètre_cycla]

- Mot-cléVBA. (de), dénotant le début du cycle;

Le paramètre Checkout est une variable définie comme compteur de cycle;

Le nom initial est un numéro spécifiant la valeur initiale du paramètre de cycle;

TO - Mot-cléVBA. (UP) séparer

Initial_dation et signe final_;

La valeur finale est le numéro spécifiant la valeur du paramètre de cycle,

Dans lequel le cycle est terminé;

Étape - Mot-cléVBA. (étape) utilisé pour

Tâches de l'étape du cycle, argument facultatif;

Étape - Un numéro spécifiant une étape de cycle, c'est-à-dire la valeur à laquelle

Augmente (ou diminutions) la valeur du paramètre

Cycle à chaque étape. Ce numéro peut être

Négatif;

Sortie pour. - un opérateur de sortie de secours du cycle (facultatif);

Suivant - Mot-cléVBA. (suivant) désignant

La fin du cycle.

Travail de cycle:

Étape 1 Tout d'abord, le paramètre Cycle est d'abord déterminé, ainsi que les valeurs initiales et finales de cette variable sont calculées et mémorisées.

Étape 2 Le paramètre Cycle est attribué à la valeur initiale.

Étape 3 La valeur initiale du paramètre de cycle est comparée à la valeur finale.

Si le paramètre de cycle est supérieur à la valeur finale, le programme quitte immédiatement le cycle et procède à la ligne du code qui suit le cycle.

L'étape 4 est effectuée par le corps du cycle.

Étape 5 Après avoir effectué le corps du cycle, le cycle de valeur suivant est attribué. Aller à l'étape 3.

Noter.

1. Si un mot clé est utiliséMarcher. Le paramètre Cycle varie en fonction du nombre indiqué après ce mot. Si un motMarcher. Il n'y a pas de valeur de pas égale à une.

Exemple 1.

Pour i \u003d 0 à 10 étapes 2 (valeur i augmentera par 2)

2. Cycle pour ... Suivant Il peut être interrompu tôt lors de la réalisation d'une condition. Pour ce faire, l'opérateur doit être placé dans le bon endroit du cycle.Sortie pour.

Exemple 2.

Dim S comme entier

Dim J comme entier

S \u003d 2.

Pour J \u003d 1 à 10

S \u003d S + J

Si S\u003e 6 alors

Sortie pour. (Sortie du cycle si la valeurS\u003e 6)

Fin si

J. suivant

MsgBox (s)

Cycles avec condition (itératif)

Si une action (plusieurs actions) doit être faite plusieurs fois, mais elle n'est pas connue à l'avance combien de fois cela dépend de certaines conditions, alors vous devez utiliser le cycle avec la condition préalable ou la componditionnement.

En vba. Il y a deux cycles principaux.Faire ... boucle. - avec une condition entrée en mots clésPendant que et avec une condition confiée à un mot-cléJusqu'à ce que. . Les deux peuvent être avec la condition préalable ou avec la postcondition.

Syntaxe:

où faire - mot clé (DO);

Pendant que - mot-clé (jusqu'à présent);

Jusqu'à ce que. - mot-clé (aussi longtemps que);

Boucle. - mot clé indiquant la fin du cycle;

<условие> - une expression logique, dont la vérité est vérifiée

Au début de chaque exécution du corps du cycle;

<тело_цикла> - séquence arbitraire des opérateurs;

Conception do ... tandis que lit: faire pendant que la condition est effectuée. Dans le designFaire ... pendant que pour

Design Do ... jusqu'à la lecture: faire jusqu'à ce que la condition soit remplie. Dans le designFaire jusqu'à ce que. pour augmenter l'étape, vous devriez écrire un opérateur spécial, car En cela contrairement à la conceptionPour , il n'est pas automatiquement fait.

Condition écrite après un mot cléJusqu'à ce que. , vérifié à la fin de chaque itération (après les corps du cycle). Faites attention à ce que cela fonctionne ici pas exactement comme dans le cyclePendant que . Si la condition est vraie (Vrai. ), l'exécution du cycle est terminée. Si la condition n'est pas exécutée (est fausse -Faux ), alors le corps du cycle est réalisé à nouveau.

Exemple 1.

Formulation du problème. Calculez le montant de la ligne finale à l'aide du sous-programme de procédure.

Technologie de la performance de la tâche:

1. Données de base:i  z.

Résultat: s  R.

2. La procédure utilisateur suivante dans le module de projet standard, à l'aide du cycle zéro,Pendant que:

Sous-Summa ()

Dim S comme entier

Dim i comme entier

S \u003d 0.

i \u003d 1.

Faire pendant que je<= 10

S \u003d S + I ^ 2

i \u003d i + 1

Boucle.

MsgBox (s)

End sous.

3. La procédure d'utilisation suivante dans le module de projet standard utilise un cycle avec une condition préalable.Jusqu'à ce que:

Sous-Summa ()

Dim S comme entier

Dim i comme entier

S \u003d 0.

i \u003d 1.

Faire jusqu'à ce que je\u003e 10

S \u003d S + I ^ 2

i \u003d i + 1

Boucle.

MsgBox (s)

End sous.

4 Composez la procédure utilisateur suivante dans le module de projet standard à l'aide d'un cycle avec postcontionPendant que:

Sous-Summa ()

Dim S comme entier

Dim i comme entier

S \u003d 0.

i \u003d 1.

S \u003d S + I ^ 2

i \u003d i + 1

Boucle pendant que je<= 10

MsgBox (s)

End sous.

5 Dial dans le module de projet standard La procédure d'utilisation suivante à l'aide d'un cycle avec postconditionJusqu'à ce que:

Sous-Summa ()

Dim S comme entier

Dim i comme entier

S \u003d 0.

i \u003d 1.

S \u003d S + I ^ 2

i \u003d i + 1

Boucle jusqu'à ce que je\u003e 10

MsgBox (s)

End sous.

VBA. Organisation de cycles.

Les opérateurs de cycle sont utilisés pour répéter l'action ou le groupe d'action des temps spécifiés. Le nombre de répétitions (cycle itérations) peut être prédéterminé ou calculé.

VBA soutient les conceptions cycliques de deux types:

  1. Cycles avec un nombre fixe de répétitions ( cycles avec un mètre).
  2. Cycles avec nombre incertain de répétitions ( cycles avec condition).

Pour tous les types de cycles, le concept est utilisécorps de cycle Déterminer le bloc des opérateurs conclus entre les opérateurs de cycle initiaux et finis. Chaque répétition de l'exécution des opérateurs du corps du cycle est appeléeitération.

Cycles fixes

VBA fournit deux structures de contrôle pour organiser un cycle fixe: pour ... Suivant (cycle avec un mètre) et pour chacun ... Suivant (cycle avec dénombrement).

Opérateur pour ... Suivant Il s'agit d'un cycle typique avec un compteur qui effectue un nombre spécifié d'itérations. Syntaxe de l'opérateur pour ... Suivant:

Pour<счетчик> = <начЗначение> Cette<конЗначение>

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

Suivant [<счетчик>]

Un exemple d'utilisation de la ... opérateur suivant.

Inscription 1. Opérateur pour ... Suivant

'Tâche: faire un programme qui reçoit deux chiffres de l'utilisateur.

'Plie tous les nombres dans la plage spécifiée par ces deux nombres, puis

'Affiche le montant résultant.

Sous-échantillon7 ()

Dim i comme compteur de cycle entier 'entier

Dim Sstart 'la valeur initiale du compteur

Dim Envoyer 'La valeur finale du comptoir

Ssum ssum aussi longue "Vente de résultat"

sSTART \u003d INPUTBOX ("Entrez le premier numéro:")

send \u003d INPUTBOX ("Entrez le deuxième numéro:")

ssum \u003d 0.

Pour i \u003d cint (sstart) à cint (envoyer)

ssum \u003d ssum + i

ENSUITE JE.

MsgBox "La quantité de nombres de" & sstart & sstart & "à" & envoyer & "est:" & ssum

End sous.

Cycle de l'opérateur pour chacun ... Suivant Fait référence à la catégorie des opérateurs du type d'objet, c'est-à-dire appliqué principalement aux collectionsobjets ainsi que pour les tableaux . Le corps du cycle est fixé avec un numéro fixe correspondant au nombre d'éléments de matrice ou de collecte. Format de l'opérateur pour chacun ... Suivant:

Pour chaque.<элемент> DANS.<группа> <блок операторов> Suivant [<элемент>]

Cycles avec condition (cycles incertains)

Les cycles de condition sont utilisés dans des cas où des actions répétées ne doivent être effectuées que dans certaines conditions. Le nombre d'itérations n'est pas déterminé et dans le cas général peut être nul (en particulier, pour les cycles avec condition préalable). VBA propose aux développeurs plusieurs structures de contrôle pour organiser des cycles avec la condition:

  • Quatre types de cycles do..loop, qui diffèrent par le type de condition vérifiée et le temps nécessaire pour effectuer cette vérification.
  • Cycle continu tandis que ... wend.

Faire pendant le cycle ... boucle - typique cycle avec condition préalable. La condition est vérifiée avant l'exécution du corps du cycle. Le cycle continue son travail pendant que cela<условие> Effectué (c'est-à-dire que c'est vrai). Étant donné que le chèque est effectué au début, le corps du cycle ne peut jamais être exécuté. Faire pendant le format cyclable ... boucle:

Faire pendant<условие>

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

Boucle.

Liste 2. Cycle Do While ... boucle

'Tâche: constituez un programme qui prévoit une entrée par l'utilisateur

'Séquence arbitraire de nombres. Entrer doit être terminé

«Seulement après que la somme des ineums est entrée sur 100.

Sous-échantillon8 ()

Dim Oddsum comme entier 'quantité de nombres impairs

Dim BODDSTR comme chaîne de chaîne avec des nombres impairs

Dim Num 'pour recevoir des numéros entrés

ODDSTR \u003d "" 'Initialisation de la ligne de sortie

ODDSUM \u003d 0 'Initialisation orsum

Faire alors que Oddsum< 100 ‘начало цикла

NUM \u003d INPUTBOX ("Entrez le numéro:")

Si (NUM MOD 2)<> 0 alors 'vérification de la parité

ODDSUM \u003d ODDSUM + NUM 'Accumulation de nombres impairs

ODDSTR \u003d ODDSTR & NUM & ""

Fin si

Boucle.

'Row avec des nombres impairs

Invite de MsgBox: \u003d "Numéros impairs:" & BoddStr

End sous.

Opérateur do ... boucle pendant Conçu pour une organisationcycle avec post-bandeau. La condition est vérifiée après la réalisation du corps du cycle au moins une fois. Le cycle continue son travail tout en<условие> Il reste vrai. Format de cycle ... boucle pendant:

Fais.<блок операторов> Boucle<условие>

Liste 3. Cycle avec post-bandeau

'Tâche: constituez le jeu de programme "Devinez le numéro". Le programme doit aléatoire

«Le moyen de générer un numéro dans la plage de 1 à 1000, l'utilisateur doit

'Devinez ce numéro. Le programme pour chaque numéro d'entrée affiche une invite

' "plus ou moins".

Sous-échantillon8 ()

Randomize Timer 'Generator Initialisation Numéro aléatoire

DIM MSG AS String 'Message String

Dim SecretNumber aussi longtemps, Usernumber en tant que variante

Commencez: SecretNumber \u003d rond (RND * 1000) 'Numéro généré par un ordinateur

Usernumber \u003d Empty 'Utilisateur entré

Faire "gameplay

Sélectionnez cas true.

Case Isempty (Usernumber): Msg \u003d "Entrez le numéro"

Case Usernumber\u003e SecretNumber: Msg \u003d "Trop de!"

Case Usernumber< SecretNumber: msg = “Слишком мало!”

Fin de sélection.

Usernumber \u003d Inputbox (Invite: \u003d MSG, Titre: \u003d "Devinez le numéro")

Boucle pendant que Usernumber<> Numéro secret

'Vérifier

Si msgbox ("jouer à un autre?", Vbyesno + vbquestion, "Vous avez deviné!") \u003d Rebbyes alors

Goto commence.

Fin si

End sous.

Faire jusqu'à ce que les cycles ... boucle et faire ... boucle jusqu'à ce que sont des inversions de cycles précédemment considérés avec la maladie. En général, ils travaillent de la même manière, sauf que le corps du cycle est effectué sous une fausse condition (c'est-à-dire<условие>\u003d Faux). Format de cycle Faire jusqu'à ce que ... boucle:

Faire jusqu'à ce que.<условие> <блок операторов> Boucle.

Format de cycle Do ... boucle jusqu'à:

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

Boucle jusqu'à.<условие>

Tâche pratique: Réécrivez les programmes des listes 10 et 11 en utilisant les opérateurs de cycle inversés.

Alors que le cycle ... wend fait également référence aux cycles avec condition. Cet opérateur correspond pleinement à la structure ... boucle. Whele Cycle Format Wend:

Pendant que<условие>

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

Wendend.

Une caractéristique distinctive de cet opérateur est l'impossibilité de l'achèvement forcé (interruption) du corps du cycle (la sortie de la sortie ne fonctionne pas dans la ... WEND CYCLE).

Interruption du cycle

Pour la fin précoce d'itération et de sortie du cycle, la déclaration de sortie est utilisée. Cet opérateur est applicable dans n'importe quelle structure cyclique, sauf si ... WEND. La syntaxe générale de l'utilisation de la sortie pour l'interruption du cycle est la suivante:

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

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

Quitter (pour | faire)

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

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

Lors de l'exécution d'un opérateur de sortie, le cycle est interrompu et le contrôle est transmis à l'opérateur après l'opérateur.<конец_цикла>. Il peut y avoir plusieurs opérateurs de sortie dans le corps du cycle.

Inscription 4. Sortie forcée du cycle

Sous-échantillon9 ()

Pour i \u003d 1 à 10000000

Si i \u003d 10, quittez la sortie du cycle lorsque le compteur atteindra 10

Suivant

Il existe des situations dans lesquelles le même ensemble d'actions est requis du programme VBA (c'est-à-dire répéter plusieurs fois le même code de bloc). Cela peut être fait à l'aide de cycles VBA.

Opérateur de cycle "pour" dans Visual Basic

Structure de l'opérateur de cycle Pour Visual Basic peut être organisé sur l'une des deux formes: comme un cycle Pour ... Suivant ou comme cycle Pour chaque..

Cycle "pour ... Suivant"

Cycle Pour ... Suivant Utilise une variable qui prend systématiquement des valeurs d'une plage donnée. Avec chaque changement de valeur de la variable, les actions entrées dans le corps du cycle. Il est facile de comprendre à partir d'un exemple simple:

Pour i \u003d 1 à 10 total \u003d total + iarray (i) suivant i

Dans ce cycle simple Pour ... Suivant Variable d'occasion jE.Ce qui prend systématiquement des valeurs 1, 2, 3, ... 10 et pour chacune de ces valeurs, le code VBA est effectué à l'intérieur du cycle. Ainsi, ce cycle résume les éléments du tableau iarray. dans une variable Le total.

Dans l'exemple ci-dessus, l'étape d'incrément de cycle n'est pas spécifiée, par conséquent, pour une augmentation étape par étape de la variable jE. 1 à 10 par défaut est l'incrément 1 . Cependant, dans certains cas, il est nécessaire d'utiliser d'autres valeurs d'incrément pour le cycle. Cela peut être fait avec un mot clé Marcher.Comme indiqué dans le prochain exemple simple.

Pour d \u003d 0 à 10 étapes 0,1 dtotal \u003d dtotal + d suivant d

Étant donné que l'exemple de l'étape d'incrément est défini dans l'exemple ci-dessus. 0.1 puis variable dtotal Pour chaque répétition du cycle prend des valeurs 0,0, 0,1, 0,2, 0,3, 0,3, ... 9.9, 10.0.

Pour déterminer l'étape du cycle dans VBA, vous pouvez utiliser une valeur négative, par exemple, comme celle-ci:

Pour i \u003d 10 à 1 étape -1 iarray (i) \u003d i prochain i

Ici l'étape d'incrément est égale -1 , Par conséquent, la variable jE. Avec chaque répétition du cycle prend des valeurs 10, 9, 8, ... 1.

Cycle "pour chaque"

Cycle Pour chaque. Ressemble à du cycle Pour ... Suivantmais au lieu de changer la séquence de valeurs pour la variable du compteur, cycle Pour chaque. Effectue un ensemble d'actions pour chaque objet du groupe d'objets spécifié. Dans l'exemple suivant à l'aide d'un cycle Pour chaque. Toutes les feuilles sont en détention dans le cahier de travail actuel Excel:

Dim Wshet en tant que feuille de calcul pour chaque Wshet dans les feuilles de calcul MSGBox "a été trouvée répertoriée:" & wsheet.name Suivant Wshet

Opérateur d'interruption "Sortie pour"

Opérateur Sortie pour. Utilisé pour interrompre le cycle. Dès que cet opérateur est rencontré dans le code, le programme termine l'exécution du cycle et procède à l'exécution des opérateurs dans le code immédiatement après ce cycle. Ceci peut être utilisé, par exemple, pour rechercher une valeur définie dans la matrice. Pour ce faire, avec l'aide d'un cycle, chaque élément de la matrice est considéré. Dès que l'élément désiré est trouvé, vous regardez à travers le reste. Aucun besoin - le cycle est interrompu.

Application de l'opérateur Sortie pour. Démontré dans l'exemple suivant. Ici, le cycle passe par 100 enregistrements de tableau et se compare chacun d'une valeur variable. dval. Si la coïncidence est trouvée, le cycle est interrompu:

Pour i \u003d 1 à 100 si dvalues \u200b\u200b(i) \u003d dval, alors indexval \u003d i Sortez pour fin si le prochain i

Cycle "faire quand" dans Visual Basic

Cycle Faire pendant Effectue le code de bloc jusqu'à ce qu'une condition donnée soit effectuée. Ce qui suit est un exemple de la procédure. Sous.dans lequel avec un cycle Faire pendant Affiche un nombre cohérent de Fibonacci n'excédant pas 1000:

"La sous-procédure affiche les numéros de Fibonacci, ne dépassant pas 1000 Sub Fibonacci () Dim i comme entier" Entretière "Pour faire référence à la position de l'élément dans la séquence inteer en tant que séquence entière" stocke la valeur actuelle de la séquence inteer ineger " stocke la valeur suivante du DIM ISTEP en tant que séquence entière "Store" stocke la taille de l'incrément suivant "Initialiser les variables I et ifib_Next i \u003d 1 ifib_next \u003d 0" Bien que le cycle soit exécuté jusqu'à la valeur "du nombre actuel de fibonacci ne dépassera pas 1000 que ifib_next< 1000 If i = 1 Then "особый случай для первого элемента последовательности iStep = 1 iFib = 0 Else "сохраняем размер следующего приращения перед тем, как перезаписать "текущее значение последовательности iStep = iFib iFib = iFib_Next End If "выводим текущее число Фибоначчи в столбце A активного рабочего листа "в строке с индексом i Cells(i, 1).Value = iFib "вычисляем следующее число Фибоначчи и увеличиваем индекс позиции элемента на 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

Dans l'exemple donné, la condition ifib_next.< 1000 Vérifié au début du cycle. Donc, si la première signification ifib_next. Ce serait plus de 1000, le cycle ne serait pas rempli.

Une autre façon de mettre en œuvre un cycle Faire pendant - Placez la condition n'est pas au début, mais à la fin du cycle. Dans ce cas, le cycle sera effectué au moins une fois, que la condition soit effectuée.

Schématiquement un tel cycle Faire pendant Avec l'état vérifiable à la fin, cela ressemblera à ceci:

Faire ... boucle tandis que ifib_next< 1000

Cycle "faire jusqu'à" dans Visual Basic

Cycle Faire jusqu'à ce que. Très semblable au cycle Faire pendant: Le bloc de code dans le corps du cycle est effectué une fois au fil du temps jusqu'à ce que la condition spécifiée soit satisfaite (le résultat de l'expression conditionnelle est égal Vrai.). Dans la procédure suivante Sous. Avec du cycle Faire jusqu'à ce que. Les valeurs de toutes les cellules de colonne sont récupérées. UNE. Fiche d'ouverture jusqu'à ce qu'une cellule vide soit remplie dans la colonne:

Irow \u003d 1 Faire jusqu'à ce que Isempty (cellules (Irow, 1)) "La valeur de la cellule actuelle est enregistrée dans le tableau DCellvalus dcellvalues \u200b\u200b(IROW) \u003d cellules (IROW, 1) .Value iroute \u003d IROW + 1 boucle

Dans l'exemple ci-dessus, la condition Isempty (cellules (Irow, 1)) est au début de la construction Faire jusqu'à ce que.Par conséquent, le cycle sera rempli au moins une fois, si la première cellule n'est pas vide.

Cependant, comme indiqué dans les exemples du cycle Faire pendantDans certaines situations, il est nécessaire que le cycle soit effectué au moins une fois, quel que soit le résultat initial de l'expression conditionnelle. Dans ce cas, l'expression conditionnelle doit être placée à la fin du cycle, comme ceci:

Faire ... boucle Urtil Isefty (cellules (Irow, 1))

Syntaxe de l'opérateur:

PourCompteur= Démarrer T.o.la fin[Marcher.Marcher]

Bloquer les référenceurs

SuivantCompteur

Ici est indiqué:

Pourpour (Mots clés obligatoiresvb);

À.avant que (Mots clés obligatoiresvb);

Bloquer les référenceurs- un ou plusieurs opérateurs appelés corps de cycle;

Compteur -une variable entière qui considère le nombre de cycles effectués;

Début Fin -valeurs initiales et finales du compteur;

Marcher.étape (mot-clévb);

Marcher -Étape changer le compteur; peut-être négatif; Le paramètre est facultatif, car si l'étape est 1, Canstep Marcherplus bas;

Suivant est la suivante (Mot-clé obligatoire, la fin de l'enregistrement de l'opérateur de cycle).

Valeur de compteur (Début, fin)peut être les constantes numériques ou variables variables ou réelles peuvent être des nombres négatifs ou positifs. Au corps du cycle, au moins une fois devrait être Commencer ≤ fin,si un Marcher\u003e 0, et Commencer ≥ fin,si un Marcher< 0. Dès qu'il s'avère que Compteur>La fin (si un Démarrer< Конец), l'exécution du cycle se termine. Si un Démarrer \u003d.La fin,le cycle sera exécuté une fois;

Exemple 9.1. .Calcul de la fonctionY. = 2 – 1.5 Sinx. Lorsque vous modifiez X par incréments de 0,2 dans la plage.

Fragment du programme pour calculer la sortie de l'argument x et la fonction:

Pour x \u003d 0 à 2,4 étapes 0.2

Y \u003d 2 - 1,5 * sin (x)

Pour comprendre comment ce cycle fonctionne, nous donnons un programme de cycle similaire créé par opérateurAller à., étiquettes, opérateurSiPuis..

M1: x \u003d x + 0.2

Si X.<= 2.4 Then

Y \u003d 2 - 1,5 * sin (x)

Nous analyserons les travaux de ce programme. Le premier calcul est YNEST, comme si vous tombez hors du cycle. Le cycle commence après la première commande de transfert de commande sur l'étiquette M1. Dans une chaîne avec une étiquette M1, l'argument X est augmenté par étape 0.2 et vérifie immédiatement, ne dépasse pas la nouvelle valeur de la valeur finale 2.4. S'il ne dépasse pas, le calcul de ce nouveau X. Ensuite, l'instruction de l'instruction est réalisée à nouveau - Contrôle de transmission dans la chaîne avec l'étiquette M1. Ces répétitions (cycles) calculent le calcul, dès que x dépasser 2,4.

Maintenant, un programme avec un cycle ... Suivant.

Pour x \u003d 0 à 2,4 étapes 0.2

remplace deux lignes

M1: x \u003d x + 0.2

Si X.<= 2.4 Then

Il s'agit de deux des dernières lignes du code sont effectuées dans le cycle pour le cycle, mais nous ne le voyons pas. Nous les avons codés avec une rangée de la CFOR ... Le code de CodeGoto M1 est codé par le WordNext X (littéralement: le prochain X). Il s'avère un design compact.

Lorsque vous utilisez la ... Nexto Cycle, apprenez à utiliser le compteur de cycle lorsque vous résolvez diverses tâches. Pour déterminer comment utiliser le compteur pour résoudre le problème, il est nécessaire pour analyser le réglage du problème, trouvez les modèles de modification des paramètres de la tâche.

Exemple 9.2. . Détermination de la quantité des éléments de la série :.

Fragment du programme:

S \u003d 0 'S - la somme de la ligne

Pour i \u003d 1 à 16 'compteur i est un dénomoteur

S \u003d S + 1 / I 'Accumulation de montant

Imprimer "s \u003d"; S 'formulaire de sortie S

Chaque fois que la valeur du compteur, les touches 1 / Iset formulent les éléments de la rangée, à partir de 1.

Exemple 9.3. . Calcul de la somme des éléments
.

Fragment du programme:

S \u003d 0 'S - la somme de la ligne

Pour i \u003d 1 à 18 'compteur i - numérateur

S \u003d S + I / (i + 1) 'Dénominateur Plus de numérateur sur 1

Imprimer "s \u003d"; S 'formulaire de sortie S

Exemple 9.4. . Calcul de la quantité: 5 + 8 + 11 + ... + 32 + 35

Fragment du programme:

S \u003d 0 'S - la somme de la ligne

Pour i \u003d 5 à 35 étapes 3 'nous obtenons une arithmétique _

progression avec dénominateur 3

Imprimer "s \u003d"; S.

Exemple 9.5. Calcul du montant pour le x spécifié:

L'analyse de la tâche montre que le degré de X passe de 1 à 10 à 10h dans ce cas, le numérateur du coefficient de X est supérieur à 1, et le dénominateur - à 2. La valeur de l'ampleur sera formée à l'aide du compteur I. Ensuite, vous pouvez faire un tel programme (fragment):

S \u003d 1 's - la somme de la ligne

Pour i \u003d 1 à 10 'comme mètre, je change le degré de x

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

Imprimer "s \u003d"; S.

CyclesPourSuivant Utilisé parentrez, sortie ettraitement des armes .

Exemple 9.6. Entrez et sortie des valeurs des éléments du tableau dans (N.).

Fragment du programme:

'Abaissez l'affectation de la valeur de la variable n, _

entré sur le formulaire dans le champ de texte TXTN:

B (i) \u003d INPUTBOX ("Entrez l'élément B (" & i & ")", _

"Entrer dans un tableau B (" & n & ")")

Imprimer ""; B (i);

Une fonction Zone de saisie.() affiche une boîte de dialogue avec un bouton de fermeture, un message spécifié, un champ de saisie, des boutons d'accord,Annulationun titre défini (ou sans elle). Si le numéro 12 est la taille de la matrice, dans notre exemple, à la première apparition, cette fenêtre examinera:

Comme vous pouvez le constater, le message Entrez l'élément dans (1)il propose d'entrer la valeur du 1er élément de la zone de texte. Cette fenêtre apparaîtra 12 fois, car la matrice contient 12 éléments. Cela découle de l'en-tête de forme. Un indice d'élément dans (i) dans l'invitation variera de 1 à 12.

Si vous souhaitez produire uniquement les valeurs des éléments du tableau dans (N), le corps du cycle comprendra un opérateur:

Affichage des éléments du tableau pour effectuer certaines actions au-dessus d'elles est également survenue à l'aide de l'opérateur de la ... Cycle suivant.

Ici exemples de traitement des tableaux unidimensionnels.

Exemple 9.7. . Détermination de l'élément maximum dans la matrice dans (M.).

En excluant l'entrée des données initiales et de la sortie des résultats, décrivez brièvement l'algorithme:

    Nous allons déclarer la variable de VAX, dans laquelle nous apportons la valeur du premier élément de la matrice, et la variableIax, qui est affectée à 1 - l'index du premier élément de la matrice.

    Dans le cycle en utilisant un opérateur pour ... Ensuite, nous visons tous les éléments du tableau, à partir du 2e. Utilisation de l'opérateur ... Ensuite, comparez leurs valeurs avec la valeur stockée dans la variable BMAX.

    S'il s'avère que la valeur de l'élément de tableau est supérieure à la valeur de BMAX, Tibmax. Prenez la valeur de cet élément et la valeur deimax est l'index de cet élément de la matrice.

Après la fin du cycle de la variable BMAX, la valeur de l'élément maximum, et le formax est son index (numéro).

Le programme de cette partie de l'algorithme.

Bmax \u003d B (1): IMAX \u003d 1

Si b (i)\u003e bmax puis bmax \u003d b (i): imax \u003d i

Exemple 9.8. Détermination du montant, des travaux et du nombre d'éléments positifs de la matriceRÉ.(M.).

Variables:S, P, K-, respectivement, la quantité, le produit et le nombre d'éléments positifs.

Algorithmecette définition:

    Nous attribuons zéro variable SI à, variableprise 1. En règle générale, toujours variables, où la quantité s'accumule ici, le cycle est réinitialisé et les variables dans lesquelles le produit est calculé est attribué 1.

    Utilisation de la ... Cycle suivant, tous les éléments du tableau et vérifiez si elles sont positives (D (i)\u003e 0).

    S'il s'avère que l'élément est positif, nous ajoutons sa valeur à la valeur de Si, nous conservent le nouveau montant dans la même variable. Une variable à la valeur positive de l'élément et également d'économiser également à la variable. Et à la variable-pull 1 et enregistrez une nouvelle valeur dans la même variable

Programmecette partie de l'algorithme a la forme:

S \u003d 0: p \u003d 1: k \u003d 0

Si D (i)\u003e 0 alors

S \u003d S + D (i) 'donc l'accumulation de la quantité _

valeurs positives des éléments du tableau D (i)

P \u003d p * d (i) "détermination du travail de positif

'Éléments de Massiva

K \u003d k + 1 'Cet opérateur s'appelle le compteur, ici il

'Détermine le nombre d'éléments positifs de la matrice

Exemple 9.9. Détermination de la quantité, des travaux, de la quantité et des valeurs moyennes des éléments de matrice impairsRÉ.(M.).

Donnons un fragment d'un programme d'une telle définition.

S \u003d 0: p \u003d 1: k \u003d 0

Si d (i) mod 2<> 0 alors.

SSR \u003d S / K 'Calcul des valeurs moyen des éléments impairs

Comparez ce fragment du programme avec le programme d'exemple 9.8. Ce programme répète presque complètement le précédent. Changé seulement la condition dans la déclaration IF. Conditiond (i) mod 2<> 0 signifie que nous recherchons des éléments de tableau (I), qui ne sont pas divisés par 2, c'est-à-dire des éléments impairs. Si nous vérifions les conditions (i) mod 2 \u003d 0, nous sélectionnerons même des éléments de la matrice.

Comme vous le savez, divisant Mod.le temps deat résultant de la balance de la division dans les entiers. Par exemple, après l'exécution de l'opératord \u003d 34Mod4, la variable doit être 2. Par conséquent, pour la sélection d'éléments de matrice multiples 4, il est nécessaire de vérifier la condition (i) mod 4 \u003d 0. La condition est similaire Si nous recherchons des éléments, plusieurs autres numéros. Au lieu de 4 ces autres numéros seront enregistrés.

Exemple 9.10. Éléments d'enregistrement du tableauR(N.), plusieurs 5, dans un autre tableau et le retrait d'un nouveau tableau sur la forme.

Un autre tableau est, par exemple, R5 (N). La taille de ce nouveau tableau doit être prise comme l'original, puisque dans le cas de limitation, tous les éléments peuvent être multiples 5.

Algorithme de tâches:

    Réinitialiser le compteur k. Utilisation du cycle de l'opérateur ... Prolevépect Tous les éléments du tableau (N).

    Chaque élément vérifie la multiplicité 5 à l'aide d'un opérateur IF ... puis divisant un emouillage d'élément de tableau.

    Si l'élément Koint 5 est, puis en utilisant un compteur K \u003d K + 1, nous formons des indices de tableau (n), en commençant par 1, et écrivez-le à cet autre tableau -R5 (N).

    Si c'est NULL, nous dérivons un tableau () à la forme.

    Si Kranno Zero se retire: "Il n'y a pas d'éléments, plusieurs 5".

Fragment du programme:

Si r (i) mod 5 puis k \u003d k + 1: r5 (k) \u003d r (i)

Si K.<> 0 alors.

Imprimer "Aucun élément, plusieurs 5"

Les cycles peuvent être investis dans d'autres cycles.

Nous allons démontrer le travail cycles imbriqués . Ci-dessous dans le programme de production organisée des valeurs des compteurs de cycle, JK. À partir des résultats de la sortie, J, il est clair que des cycles imbriqués sont effectués.

Sous-frccycle_dblclick ()

Scalemode \u003d 4 'Unités de mesure - symboles

Pour i \u003d 1 à 3 'cycle externe

Print "i \u003d"; JE;

Pour J \u003d 1 à 4 '1er cycle investi

Curnex \u003d textwidth ("i \u003d 1") + 5

Imprimer "j \u003d"; j;

Curnex \u003d textwidth ("i \u003d 1 j \u003d 1") + 7

Pour k \u003d 1 à 5 '2e cycle imbriqué

Sur le formulaire décrit (Fig. 1), les résultats de la sortie des compteurs de tous les trois cycles sont donnés: un compteur de cycle externe I, le premier cycle investi - le compteur de la seconde, le compteur de cycle interne. Comme tu peux le voir le mètre le plus "lent" au cycle externe(PI), et le plus rapide "- le comptoir du cycle interne (park.).

Le programme est effectué après double-cliquant sur le bouton gauche de la souris de la forme FRMCICICLI.

Curnex, actuellement - Propriétés de formulaire Spécification des coordonnées, cottages à démarrer les informations Méthode de sortie d'informations Imprimer (voir Fig. 1 Formulaire d'emplacement d'ouverture).

TEXTWIDTH () est une fonction qui renvoie la largeur du texte spécifié dans la fonction sous forme d'argument dans des guillemets doubles.

Les cycles imbriqués sont utilisés pour traiter des tableaux à deux dimensions (matrices). Mais dans certaines tâches, à l'exclusion de l'entrée et de la sortie des éléments de la matrice bidimensionnelle, il peut être limité à un cycle. Considérez quelques exemples de matrices de programmation.

Exemple 9.11. Entrée et sortie de la matrice (réseau à deux dimensions) entiersinta(N.).

Vous pouvez entrer la matrice sur des lignes et des colonnes . Simplement - sur des lignes, si vous programmez le retrait des éléments de matrice sur le formulaire immédiatement après leur entrée.

Entrée et sortie de la matricesur des rangées - fragment 1..

Dim m comme entier, n comme entier, i comme entier, j comme entier

DIM INTA () comme entier 'déclarer une matrice dynamique

M \u003d val (txtn.text) 'M - nombre de lignes

N \u003d val (txtn.text) 'n - Nombre de colonnes

Redim Inta (m, n) comme entier 'remplacer un tableau

Pour i \u003d 1 à m 'je vais enregistrer votre valeur jusqu'à ce que complètement

'Il n'est pas terminé dans le cycle imbriqué par J

Imprimer ""; INTA (i, j); 'Conclusion par ligne

Imprimer 'Allez au début d'une nouvelle ligne

Pour entrer dans la matrice sur les colonnes, il est nécessaire de faire une boucle de j (définit les numéros de colonne) et le cycle interne PI (spécifie les numéros de ligne).

Entrée et sortie de la matricepar colonnes fragment 2..

Pry \u003d 2500: actuely \u003d pry 'pry fixe la coordonnée y du début

«Sortie du premier élément de chaque colonne sur le formulaire

Pour J \u003d 1 à N 'J, je sauvegarderez votre valeur complètement

'Il n'est pas terminé dans le cycle imbriqué selon moi

iNTA (I, J) \u003d INTERNETBOX ("Entrez l'élément INTA (" & I & "," & J & ")", _

"Entrée inta matrix (" & m & "," & n & ")")

Onglet Imprimer (6 * J); Inta (i, j) 'Conclusion dans les colonnes

Courenty \u003d Pry 'pour la sortie du premier élément

'Next colonne

Dans ce deuxième fragment du programme, les 5 premières lignes du premier fragment ne sont pas répétées. La fonction Tab (6 * J) définit le démarrage de la sortie dans la chaîne (en caractères), allant du bord gauche du formulaire. La coordonnée est égale à 2500 brindilles, mais vous pouvez choisir une autre valeur.

Exemple 9.12. . Organiser les valeurs des éléments du tableauV.(N.) Ascendant.

Il existe plusieurs algorithmes dans la commande des tableaux. Nous en donnons un: avec l'aide de cycles imbriquésPourSuivant Sélectionnez les éléments à partir du premier et de l'avant-dernier et comparez chacun d'eux avec des éléments ultérieurs; S'il s'avère que l'élément suivant est inférieur à celui sélectionné, changez-les dans des endroits.

Fragment du programme mettant en œuvre cet algorithme:

Pour i \u003d 1 à n - 1

Pour j \u003d i + 1 à n

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

Expliquons ce fragment du programme.

À l'aide d'un cycle externe avec un mètre, l'élément I sélectionne (i) pour comparer avec des éléments suivants. Le cycle interne avec les contre-jeux pour comparer les éléments ultérieurs (j). La valeur initiale-JOWY + 1. Il s'agit du premier élément de la suite.

Pour échanger les valeurs des éléments V (i) YV (j), nous entrons une variable, qui est temporairement "masquer" la valeur de l'un des éléments du tableau (dans le programme ISV (I)). Ensuite, l'élément V (i) est ensuite attribué à la valeur de l'élément (J) et de l'élément V (J) est attribué à la valeur dev (i), qui est stockée dans la variable. Si la "Hide" est attribuée à TOV (j), le code de l'échange de valeurs sera: p \u003d v (j): v (j) \u003d v (i): v (i) \u003d P. le résultat ne changera pas.

À rationaliser la matrice descendante, une condition suffisante pour la vérification d'écrire dans la vidéosov (j)\u003e v (i), c'est-à-dire de changer le signe de l'inégalité à une autre.

Si le tableau n'est pas un chiffre et la chaîne, et que les noms de famille seront introduits dans les éléments du tableau, puis selon le programme de l'exemple 9.12, vous pouvez organiser une liste de noms de famille en fonction de l'alphabet. Le fait est que pour les lettres de l'alphabet utilisé dans l'ordinateur, les inégalités sont juste: a< Б < В < Г….< Я и т. д., поскольку числовые коды букв алфавита последовательно увеличиваются, начиная с А и до конца алфавита. Это же справедливо и для букв английского алфавита.

Exemple 9.13. . Calcul de la quantité d'éléments positifs pour les colonnes impaires de la matriceF.(M., N.) Et la sortie de la forme.

Programme d'algorithme:

    Utilisation du cycle externe par incréments 2, formez l'index de la colonne de matrice d'index, à partir de la première colonne.

    Nous réinitialisons la somme de S, dans laquelle la somme d'éléments positifs s'accumulera.

    Dans le cycle intérieur, vérifiez le signe d'un élément de tableau.

    Si l'élément de tableau est positif (\u003e 0), nous calculons la somme S.

    Après la fin du cycle interne, nous dérivons la somme de la forme SNA.

Fragment programmes:

Pour j \u003d 1 à n étape 2

Si f (i, j)\u003e 0 puis s \u003d s + f (i, j)

Imprimer "Taille de la colonne"; j; ":"; S 'J - Numéro de colonne!

Les cycles imbriqués vous permettent d'organiser options d'Everbore et résoudre des problèmes qui ne peuvent pas être résolus analytiquement. À la suite de l'existence, des options de solution sont obtenues, parmi lesquelles une ou plusieurs, qui répondent à la condition du problème.

Exemple 9.14. Il y a 1801 roubles. Combien pouvez-vous acheter des chocolats pour 31 roubles. Et le taureau sur 18 roubles pour dépenser pleinement tout l'argent.

Programme:

Montant \u003d 1801.

Tout-incliné \u003d montant \\ 31: allbilails \u003d montant \\ 18

Pour i \u003d 1 à tous inclinés

Pour J \u003d 1 à tout tour

Prix \u200b\u200b\u003d I * 31 + J * 18 'Prix d'achat total

Si le prix \u003d 1801 alors

Imprimer "Chocolat:"; JE; Onglet (19); "Livre:"; J.

Expliquons le programme dans lequel nous utilisons des variables appelées en russe.

Premièrement, déterminez le nombre maximal de chocolat seulement ou uniquement du taureau peut être acheté pour la totalité du montant. Les valeurs obtenues de toutes les tensions et de tous les usines sont utilisées pour limiter les quantités de sautillant par le nombre de chocolats et de taureau. Pour chaque valeur de la quantité de chocolat (I) et du nombre de morceaux (J), nous déterminons le prix total de leur achat. Si le prix calculé est 1801, l'option sélectionnée est l'une des solutions du problème.

La fonction Tab () indique quelle position du bord du formulaire sera la sortie des informations suivant cette fonction. IFTAB (19), puis à partir de la 19ème position.

Le programme affiche 3 options d'achat possibles:

Chocolat 7, livre 88

Chocolat 25, livre 57

Chocolat 43, livre 26

Si vous avez besoin de donner une réponse sans ambiguïté, il est nécessaire de formuler une condition supplémentaire. Par exemple, "le taureau a été acheté moins que des chocolats." Ensuite, la seule solution sera la 3ème option.

Il existe de nombreuses tâches mathématiques qui sont simplement résolues par la méthode d'extinction en utilisant la programmation de cycles imbriqués.

Les cycles vous permettent d'effectuer plusieurs fois une ou plusieurs lignes de journalisation. VBA prend en charge les cycles suivants:

Pour ... Suivant pour chacun ... Suivant do ... boucle

Conception pour. . . Suivant. Lorsque le nombre de répétitions est connu à l'avance, utilisez le cycle pour le cycle. . . Suivant. Une variable, appelée variable de cycle ou un compteur de cycle, est utilisée dans le cycle d'un cycle, qui augmente ou diminue à une valeur spécifiée à la répétition de chaque cycle. La syntaxe de cette conception est la suivante:

Pour le compteur \u003d commencer à mettre fin aux opérateurs suivants

Paramètres de comptoir (compte), Démarrer (début du cycle), fin (fin de cycle) et incrément sont numériques.

Noter. Le paramètre Incrément peut être à la fois positif et négatif. S'il est positif, le paramètre de démarrage doit être inférieur ou égal au paramètre d'extrémité, sinon le cycle ne sera pas effectué. Si le paramètre Incrément est négatif, le paramètre de démarrage doit être supérieur ou égal à la valeur du paramètre d'extrémité à effectuer dans le corps du cycle. Si le paramètre Étape n'est pas spécifié, la valeur du paramètre incrément par défaut est 1.

VBA effectue le cycle de la séquence suivante:

1. Définit la valeur de la variable de cycle du compteur pour démarrer.

2. Compee la valeur de la variable de cycle du compteur et la valeur du paramètre d'extrémité. Si la variable de compteur est plus grande, VBA complète l'exécution du cycle. (Si la valeur du paramètre Incrément est négative, alors VBA arrête l'exécution du cycle, à condition que la valeur de la variable de cycle du compteur soit inférieure à la valeur du paramètre d'extrémité.)

3. Effectue des relevés de cycle des opérateurs corporels.

4. Augmente la valeur de la variable du cycle du compteur à 1 ou la valeur de la valeur de paramètre incrément si elle est spécifiée.

5. Répétez les étapes 2 à 4.

Considérez un exemple: calculez la valeur de la fonction F (t)

À un, B, B, N, si t varie de A à B avec une étape DT \u003d (B - A) / (N-1).

Sous Exemple3 () Dim F () Comme unique Dim A comme Simple, B comme Simple, T comme célibataire, DT comme unique Dim I comme entier, N comme entier d'appel entier lu ("A1", A): appel de l'appel ("B1" , b): appel à lire ("C1", n) Redim F (1 à N - 1) DT \u003d (B - A) / (N-1): T \u003d un appel ("A2", "I") : Appelez ("B2", "T"): appelez ("c2", "f (t)") pour i \u003d 1 à n - 1 t \u003d t + dt si t<= -1 Then f(i) = -1 ElseIf t > 1 alors f (i) \u003d 1 autre f (i) \u003d t fin si appelez ("A" & (2 + i), i): appelez ("B" & (2 + i), t): appelez Out ("c" & (2 + i), f (i)) suivant i fin subit

Pour chaque design. . . Suivant

Cycle pour chacun. . . Ensuite ressemble à A pour le cycle. . . Ensuite, mais il répète le groupe d'opérateurs pour chaque élément d'un ensemble d'objets ou d'une matrice, au lieu de répétition des opérateurs un nombre de fois spécifié. Il est particulièrement utile lorsqu'il n'est pas connu combien d'articles sont contenus dans l'ensemble.

Syntaxe de cycle pour chacun. . . Suivant est:

Pour chaque élément des opérateurs d'éléments suivants du groupe

Les restrictions suivantes doivent être rappelées lors de l'utilisation du pour chaque cycle. . . Suivant:

Pour les ensembles, le paramètre Elément ne peut être une variante de type variable, un objet de type variable commun ou un objet répertorié dans le navigateur d'objets.

Pour les tableaux, le paramètre Element ne peut être qu'une variante de type variable.

Vous ne pouvez pas utiliser le pour chaque cycle. . . Ensuite avec un tableau qui a un type défini par l'utilisateur, une variable de variante de type ne peut pas contenir de valeur d'un type défini par l'utilisateur.

Design Do ... boucle

Le cycle DO est utilisé pour effectuer un bloc d'opérateurs Nombre illimité. Il existe plusieurs variétés de conception. . . Boucle, mais chacun d'entre eux calcule l'expression pour déterminer le moment de quitter le cycle. Comme dans le cas de la conception IF. . . Ensuite, la condition doit être une valeur ou une expression qui accepte la valeur de false (zéro) ou true (pas zéro).

Dans la prochaine conception. . . Les opérateurs de boucle sont effectués jusqu'à ce que la valeur de condition soit vraie (vérité):

Faire en boucle des opérateurs de condition

Effectuer ce cycle, VBA vérifie d'abord la condition. Si la condition est fausse (FALSE), il saute tous les opérateurs de cycle. S'il est vrai (vrai), VBA effectue des opérateurs de cycle, revient à l'opérateur et vérifie à nouveau la condition.

Par conséquent, le cycle soumis par cette conception peut être effectué à n'importe quel nombre de fois que la valeur de condition n'est pas nulle ou vraie (vérité). Notez que les opérateurs du corps du cycle ne sont pas satisfaits si la condition est fausse au premier chèque (faux).

Considérez un exemple: calculer la somme de la ligne

avec une précision donnée.

Sous Exemple4 () Dim E AS Simple, X AS Simple, S Simple Dim M comme Simple, P AS Simple, I Comme un appel unique Lisez ("A1", X): appelez Lecture ("B1", E) S \u003d 0: i \u003d 1: m \u003d 1: p \u003d -1 appelez ("A2", "i"): appelez ("B2", "M"): appelez ("C2", "s") (M)\u003e \u003d EP \u003d -P * xm \u003d p / is s + m appelez ("A" & (2 + i), i): appelez ("B" & (2 + i), ABS ( m)): appelez ("c" & (2 + i), s) i \u003d i + 1 boucle end sous

Un autre type de conception fait. . . La boucle effectue d'abord les opérateurs du corps du cycle, puis vérifie la condition après chaque exécution. Ce type garantit que les opérateurs de corps de cycle sont effectués au moins une fois:

DOO Opérateurs en boucle pendant que la condition

Deux autres variétés de la conception du cycle sont similaires à la précédente, sauf que le cycle est exécuté pendant que la condition est fausse (FALSE):

Le cycle n'est pas effectué du tout ou est effectué plusieurs fois:

Faire jusqu'à condition

opérateurs en boucle.

Le cycle est effectué au moins une fois:

les opérateurs

Boucle jusqu'à condition

7.2 Cycles imbriqués.

Vous pouvez mettre des structures de contrôle dans d'autres structures de contrôle (par exemple, bloquer si .. Ensuite, à l'intérieur de la ... Suivant). On dit que la structure de contrôle placée à l'intérieur de l'autre structure de gestion est imbriquée.

La profondeur de la fixation des structures de contrôle dans VBA n'est pas limitée. Pour améliorer la lisibilité du Code, la pratique du déplacement de biais de la décision de la décision ou du cycle dans le programme dans le cas de l'utilisation de structures de gestion imbriquées est adoptée.

Lorsque vous investissez dans un cycle d'un ou plusieurs autres cycles, ils parlent de cycles imbriqués, dans lesquels des cycles externes (embrassés) et internes (incorporés) sont distingués.

Considérons un exemple de sommation des éléments de la matrice AIJ A (N, M).

Sous Exemple5 () Dim A () comme Single, S () comme unique Dim N comme entier, M As Integer Dim I comme entier, J en tant qu'integre d'appel entier ("A1", N): appelez ("B1", M ) Redim A (1 à N, 1 à M), S (1 à N) "Matrice de lecture pour i \u003d 1 à n pour J \u003d 1 à M Call Readcell (i + 1, j, A (i, j)) Next j Next i "Calcul pour i \u003d 1 à NS (i) \u003d 0 pour J \u003d 1 à ms (i) \u003d s (i) + a (i, j) suivant J Appelez Outcell (i + 1, m + 1 , s (i)) suivant je finis sous

Notez que le premier opérateur suivant ferme le cycle interne et la dernière instruction suivante ferme le cycle externe. De même, pour une netteté si des déclarations, finissez si les opérateurs sont automatiquement utilisés pour fermer l'opérateur de si le plus proche de celui-ci. Do Structures imbriquées. . . Boucle Travail de la même manière: la boucle de l'opérateur la plus éloignée correspond à l'opérateur le plus éloigné.

Lors de la saisie / sortie des éléments d'une matrice à deux dimensions sur la feuille de travail Microsoft Excel, il est pratique d'utiliser les procédures d'E / S utilisateur:

Sous-lecture (i en tant qu'Éteger, J comme entier, Val comme variante) Val \u003d List1.cells (i, J) .Value End Sub Sub orsell (I comme entier, J comme entier, Val comme variante) Stade1.cells (i, j) .value \u003d Val End Sub

où i est le numéro de ligne, J est le numéro de colonne de la feuille d'emploi.

Structures de gestion de sortie

L'opérateur de sortie vous permet d'aller directement du cycle, du cycle, des sous-procédures, des procédures ou des fonctions. La syntaxe de sortie de l'opérateur est simple:

Pour Compteur \u003d Démarrer pour mettre fin au [Bloc de l'opérateur] [Bloc de l'opérateur] Suivant DO [(((Âge de l'opérateur)] [Bloc opérateur] [Bloc opérateur]

Sortez pour l'intérieur du cycle pour et de sortie à l'intérieur du cycle DO peut apparaître combien de fois.

Sortie Do Opérateur fonctionne avec toutes les espèces de syntaxe du cycle de fabrication.

Sorti pour et quitter les instructions DOITES SONT UTILISÉES Si vous devez terminer le cycle immédiatement, sans continuer d'itérations ou ne pas attendre l'exécution du bloc d'opérateurs dans le corps du cycle.

Lorsque vous utilisez l'opérateur de sortie, pour quitter le cycle de cycle, la valeur du cycle dépend de la manière dont le cycle est terminé:

Avec une achèvement normale du cycle, la valeur de la variable de cycle a plus que la limite supérieure du nombre de cycles

Avec une conclusion prématurée du cycle, la variable de cycle conserve sa valeur qu'elle a reçue, en tenant compte des règles habituelles.

Lorsque le cycle est terminé à la fin de l'ensemble, la variable de cycle n'est rien (rien) s'il s'agit d'un objet de type variable (objet) ou de la valeur de vide (vide), s'il s'agit d'une variante de type variable.

Avez-vous aimé l'article? Partager avec des amis: