Начало / Общ преглед на Windows / Vba for to step е прост пример за това как работи. VBA цикли. Лабораторна работа по основи на програмирането

Vba for to step е прост пример за това как работи. VBA цикли. Лабораторна работа по основи на програмирането

Синтаксис на оператора:

ЗаБрояч= Започнете ТоКрай[стъпкастъпка]

Блок_оператори

СледващаБрояч

Тук е посочено:

ЗаЗа (задължителна ключова дума VB);

докъм (задължителна ключова дума VB);

Блок_оператори– повикани един или повече оператори тяло на цикъла;

Брояч –целочислена променлива, която отчита броя на изпълнените цикли;

Начало, Край -начални и крайни стойности на брояча;

стъпкастъпка (ключова думаVB);

стъпка –стъпка за смяна на брояча; може да бъде отрицателен; параметърът не е задължителен, защото ако стъпката е 1, можете да направите стъпка стъпкапо-ниска;

Следващ – следващ (задължителна ключова дума VB, въвеждане на оператор за край на цикъл).

Стойност на брояча (Начало, Край)може да има числови константи или променливи от цял ​​или реален тип, могат да бъдат отрицателни или положителни числа. За да може тялото на цикъла да бъде изпълнено поне веднъж, трябва да има Начало ≤ Край,Ако стъпка> 0 и Начало ≥ Край,Ако стъпка< 0. Щом се оказва, че Брояч>край (Ако Започнете< Конец), Изпълнението на цикъла завършва. Ако Старт =край,цикълът ще се изпълни веднъж;

Пример 9.1 .Функционална оценкаY = 2 – 1.5 Синкскогато X се променя на стъпки от 0,2 в диапазона.

Фрагмент от програма за изчисляване на Y и извеждане на аргумент X и функция Y:

За X = 0 до 2.4 Стъпка 0.2

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

За да разберете как работи този цикъл, ето програма за подобен цикъл, създаден с помощта на операторGoTo, тагове, операторАкоТогава.

M1: X = X + 0,2

Ако X<= 2.4 Then

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

Нека да разгледаме как работи тази програма. Първото изчисление Y е нестандартно, сякаш изпада от цикъла. Цикълът започва след първото прехвърляне на управление GoToM1 към етикет M1. В реда с надпис M1 аргументът X се увеличава със стъпка от 0,2 и веднага се прави проверка дали новата стойност на X надвишава крайната стойност от 2,4. Ако не надхвърли, тогава изчислението на Y се повтаря с този нов X. След това операторът GoToM1 се изпълнява отново - прехвърляйки управлението на реда, обозначен с M1. Тези итерации (цикли) на изчисляване на Y ще приключат веднага щом X надхвърли 2,4.

Сега нека сравним програмата с If с цикъла For...Next.

За X = 0 до 2.4 Стъпка 0.2

замества два реда

M1: X = X + 0,2

Ако X<= 2.4 Then

Това са последните два реда код, които се изпълняват в цикъла For, но ние не го виждаме. Ние ги кодирахме с реда cFor... Кодовият ред GoTo M1 е кодиран с думата Next X (буквално: следващ X). Това води до компактен дизайн.

Когато използвате цикъла For...Next, трябва да научите как да използвате брояча на цикъла за решаване на различни проблеми. За да разберете как да използвате брояч за решаване на проблем, трябва анализирайте формулировката на проблема, намерете модели на промени в някои параметри на проблема.

Пример 9.2 . Определяне на сумата от елементите на редица: .

Фрагмент от програмата:

S = 0 ‘ S – сбор от редицата

За i = 1 до 16 ‘брояч i е знаменателят на дробта

S = S + 1/i ‘ натрупване на сума

Отпечатайте “S = “; S ‘ изведе сумата S във формуляра

За всяка стойност на брояча i, изразът 1/i последователно формира елементите на серията, започвайки от 1.

Пример 9.3 . Изчисляване на сумата от поредица от елементи
.

Фрагмент от програмата:

S = 0 ‘ S – сбор от редицата

За i = 1 до 18 ‘ брояч i – числител

S = S + i/(i + 1) ‘знаменателят е с 1 по-голям от числителя

Отпечатайте “S = “; S ‘ изведе сумата S във формуляра

Пример 9.4 . Пресмятане на сбора: 5 + 8 + 11 + … + 32 + 35

Фрагмент от програмата:

S = 0 ‘ S – сбор от редицата

За i = 5 до 35 Стъпка 3 ‘ получаваме аритметиката _

прогресия със знаменател 3

Отпечатайте “S = “; С

Пример 9.5. Изчисляване на сумата за даден x:

Анализът на проблема показва, че степента на X варира от 1 до 10. В този случай числителят в коефициента на X е по-голям от степента с 1, а знаменателят с 2. Ще формираме стойността на степента, използвайки брояч i. След това можете да създадете програма като тази (фрагмент):

S = 1 ‘ S – сбор от реда

За i = 1 до 10 ‘ като брояча i, степента се променя при X

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

Отпечатайте “S = “; С

ЦиклиЗаСледващаизползвани завход, изход Иобработка на масиви .

Пример 9.6. Въвеждане и извеждане на стойностите на елементите на масива B(Н).

Фрагмент от програмата:

„Пропускаме присвояването на стойността на променлива N, _

въведени във формуляра в текстовото поле txtN:

B(i) = InputBox("Въведете елемент B(" & i & ")", _

"Входен масив B(" & N & ")")

Печат " "; B(i);

функция InputBox() показва диалогов прозорец с бутон за затваряне, определено съобщение, поле за въвеждане, бутони добре,Отказ,с даден хедър (или без него). Ако е въведено числото 12 - размерът на масива N, тогава в нашия пример, когато се появи за първи път, този прозорец ще изглежда така:

Както виждаме, съобщението Въведете елемент B(1)ви подканва да въведете стойността на първия елемент в текстовото поле. Този прозорец ще се появи 12 пъти, защото масивът съдържа 12 елемента. Това следва от заглавието на формуляра. Индексът на елемент B(i) в поканата ще варира от 1 до 12.

Ако искате да покажете само стойностите на елементите на масива B(N) във формуляра, тогава тялото на цикъла ще се състои от един оператор:

Прегледът на елементите на масива за извършване на някои действия върху тях също се извършва с помощта на оператора за цикъл For...Next.

Да дадем примери за обработка на едномерни масиви.

Пример 9.7 . Определяне на максималния елемент в масив B(М).

Като изключим въвеждането на първоначални данни и извеждането на резултатите, описваме накратко алгоритъма:

    Нека декларираме променлива Bmax, в която ще въведем стойността на първия елемент от масива, и променлива Imax, на която ще присвоим 1 - индексът на първия елемент от масива.

    В цикъл с помощта на оператора For...Next преглеждаме всички елементи на масива, като започнем от 2-рия. Използвайки оператора If...Then, сравняваме техните стойности със стойността, съхранена в променливата Bmax.

    Ако се окаже, че стойността на даден елемент от масива е по-голяма от стойността на Bmax, тогава на Bmax се присвоява стойността на този елемент, а на стойността Imax се присвоява индексът на този елемент от масива.

След края на цикъла променливата Bmax ще съдържа стойността на максималния елемент, а Imax ще съдържа неговия индекс (номер).

Програмата за тази част от алгоритъма.

Bmax = B(1): Imax = 1

Ако B(i) > Bmax, тогава Bmax = B(i): Imax = i

Пример 9.8. Определяне на сумата, произведението и броя на положителните елементи на масивг(М).

Променливи: S, P, K – съответно сумата, произведението и броя на положителните елементи.

Алгоритъмтакова определение:

    Присвояваме нула на променливите S и K, а на променливата P присвояваме 1. По правило променливите, където се натрупва сумата, тук е S и k, винаги се нулират преди цикъла, а променливите в които се изчислява продуктът, се присвоява 1.

    С помощта на цикъла For...Next преминаваме през всички елементи на масива и проверяваме дали са положителни (D(i) > 0).

    Ако се окаже, че елементът е положителен, тогава добавяме неговата стойност към стойността на сумата S и съхраняваме новата сума в същата променлива. Променливата P се умножава по положителната стойност на елемента и също се съхранява в променливата P. И добавяме 1 към променливата K и съхраняваме новата стойност в същата променлива

програмаТази част от алгоритъма изглежда така:

S = 0: P = 1: K = 0

Ако D(i) > 0 Тогава

S = S + D(i) ‘ така се натрупва сумата _

положителни стойности на елементите на масива D(i)

P = P*D(i) ‘ дефиниция на произведението на полож

елементи на масива

K = K + 1 ‘ този оператор се нарича COUNTER, ето го

‘ дефинира броя на положителните елементи на масива

Пример 9.9. Намиране на сбора, произведението, числото и средната стойност на нечетните елементи на масиваг(М).

Ето фрагмент от програма за такова определение.

S = 0: P = 1: K = 0

Ако D(i) Mod 2<>0 Тогава

Ssr = S/k ‘ изчисляване на средната стойност на нечетните елементи

Сравнете този програмен фрагмент с програмата в Пример 9.8. Тази програма почти напълно повтаря предишната. Променено е само условието в оператора If. ConditionD(i) Mod 2<>0 означава, че търсим елементи от масива D(i), които не се делят равномерно на 2, т.е. нечетни елементи. Ако проверим условието D(i) Mod 2 = 0, тогава ще изберем четни елементи от масива.

Както е известно, разделяне на моддава остатъка от деленето в цели числа. Например, след изпълнение на оператора d = 34Mod4, променливата d ще бъде равна на 2. Следователно, за да изберем елементи от масива, които са кратни на 4, трябва да проверим условието D(i) Mod 4 = 0. Условието ще са подобни, ако търсим елементи, които са кратни на други числа. Тези други числа ще бъдат написани вместо 4.

Пример 9.10. Записване на елементи от масивР(Н), кратни на 5, в друг масив и извеждане на новия масив във формуляра.

Нека обозначим друг масив, например R5(N). Размерът на този нов масив трябва да се приеме, че е същият като оригиналния, тъй като в краен случай всички елементи могат да бъдат кратни на 5.

Алгоритъм на проблема:

    Нулирайте брояча k. С помощта на оператора на цикъл For...Next преглеждаме всички елементи на масива R(N).

    Проверяваме всеки елемент за кратно на 5, като използваме оператора If...Then и разделяме елемента на масива на Mod.

    Ако елементът е кратен на 5, тогава с брояч от тип k=k+ 1 формираме индексите на масива R5(N), започвайки от 1, и го записваме в този друг масив –R5(N).

    Ако k е различно от нула, покажете масива R5() във формуляра.

    Ако k е равно на нула, извеждаме: „Няма елементи, делими на 5.“

Фрагмент от програмата:

Ако R(i) Mod 5 Тогава k = k + 1: R5(k) = R(i)

Ако к<>0 Тогава

Отпечатайте „Няма елементи, делими на 5“

Циклите могат да бъдат вложени в други цикли.

Да демонстрираме работата вложени цикли . Програмата по-долу показва стойностите на броячите на цикъла i, j и k. От изхода на i, j, k става ясно как се изпълняват вложените цикли.

Частен суб frmCycle_DblClick()

ScaleMode = 4 ‘единици – символи

За i = 1 до 3 ‘външен цикъл

Отпечатайте "i = "; i;

За j = 1 до 4 ‘1-ви вложен цикъл

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

Отпечатайте "j = "; j;

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

За k = 1 до 5 ‘2-ри вложен цикъл

Показаната форма (фиг. 1) показва резултатите от извеждането на броячите и на трите цикъла: външния цикъл – брояч i, първият вложен цикъл – брояч j и вторият, най-вътрешен цикъл – брояч k. Както виждаме, най-бавният брояч е външният цикъл(poi) и „най-бързият“ е броячът на най-вътрешния цикъл (споредк).

Програмата се изпълнява след двукратно щракване с левия бутон на мишката върху формата frmCicli.

CurrentX, CurrentY – свойства на формуляра, които определят координатите X, Y на началната точка за извеждане на информация чрез метода Print (вижте фиг. 1 за местоположението на осите X и Y във формуляра).

TextWidth() е функция, която връща ширината на текста, посочен във функцията като аргумент в двойни кавички.

Вложените цикли се използват при обработка на двумерни масиви (матрици). Но в някои задачи, с изключение на входа и изхода на елементи от двумерен масив, можете да се ограничите до един цикъл. Нека да разгледаме някои примери за матрично програмиране.

Пример 9.11. Вход и изход на матрица (двумерен масив) от цели числаintA(Н).

Можете да въведете матрицата по редове и по колони . По-лесно е - ред по ред, ако програмирате извеждането на елементи от масива във формуляра веднага след въвеждането им.

Матричен вход и изходред по ред - фрагмент 1.

Dim M като цяло число, N като цяло число, i като цяло число, j като цяло число

Dim intA() As Integer ‘ декларира динамичен масив

M = Val(txtN.Text) ‘ M – брой редове

N = Val(txtN.Text) ‘ N – брой колони

ReDim intA(M, N) As Integer ‘предефинирайте масива

За i = 1 To M ‘ i ще запази стойността си до пълно

„вложеният цикъл на j няма да бъде изпълнен

Печат " "; intA(i, j); ‘ изход ред по ред

Печат ‘ отидете в началото на нов ред

За да въведете матрица по колони, трябва да направите външния цикъл в j (посочва номерата на колоните), а вътрешния цикъл в i (посочва номерата на редовете).

Матричен вход и изходпо колони фрагмент 2.

PrY = 2500: CurrentY = PrY ‘ PrY задава Y координатата на старта

‘ показва първия елемент от всяка колона във формуляра

За j = 1 To N ‘ j ще запази стойността си до пълно

„вложеният цикъл на i няма да бъде изпълнен

intA (i, j) = InputBox("Въведете елемент intA(" & i & “,” & j & ")", _

"Входна матрица intA(" & M & “,” & N & ")")

Раздел за печат (6 * j); intA(i, j) ‘ изход по колони

CurrentY = PrY ' за показване на първия елемент

' следващата колона

Този втори програмен фрагмент не повтаря първите 5 реда от първия фрагмент. Функцията Tab(6 * j) задава началото на изхода в ред (в знаци), започвайки от левия край на формуляра. Координатата PrY тук е равна на 2500 twips, но можете да изберете друга стойност.

Пример 9.12 . Подреждане на стойностите на елементите на масиваV(Н) възходящо.

Има няколко алгоритъма за подреждане на масиви. Ето един от тях: използване на вложени циклиЗаСледващаизбираме елементи, започвайки от първия до предпоследния, и сравняваме всеки от тях със следващите елементи; ако се окаже, че следващият елемент е по-малък от избрания, ги разменяме.

Фрагмент от програма, която изпълнява този алгоритъм:

За i = 1 до N – 1

За j = i + 1 към N

Ако V(j)< V(i) Then P = V(i): V(i) = V(j): V(j) = P

Нека обясним този фрагмент от програмата.

Използвайки външен цикъл с брояч i, ние избираме елемент V(i), за да го сравним със следващите елементи. Вътрешният цикъл с брояч j избира следващите елементи от V(j) за сравнение. Първоначалната стойност е равна на i + 1. Това е първият елемент от следващите.

За да обменим стойностите на елементите V(i) и V(j), въвеждаме някаква променлива P, в която временно „скриваме“ стойността на един от елементите на масива (в програмата това е V(i )). Тогава на елемента V(i) се присвоява стойността на елемента V(j), а на елемента V(j) се присвоява стойността V(i), която се съхранява в променливатаP. Ако „скрием“ стойността V(j) в P, тогава кодът за обмен на стойности ще бъде така: P = V(j): V(j) = V(i): V(i) = P Резултатът няма да се промени.

до сортирайте масива в низходящ ред, достатъчно е да запишете условието за проверка във формата V(j) > V(i), т.е. да смените знака за неравенство с друг.

Ако масивът не е числов, а низов и в елементите на масива са въведени фамилни имена, тогава с помощта на програмата в пример 9.12 можете да подредите списъка с фамилни имена по азбучен ред. Факт е, че за буквите от азбуката, използвани в компютъра, са верни следните неравенства: A< Б < В < Г….< Я и т. д., поскольку числовые коды букв алфавита последовательно увеличиваются, начиная с А и до конца алфавита. Это же справедливо и для букв английского алфавита.

Пример 9.13 . Изчисляване на сумата от положителни елементи за нечетни колони на матрицаЕ(М, Н) и изведете сумите във формуляра.

Алгоритъм на програмата:

    Използвайки външния цикъл със стъпка 2, ние формираме индекс на нечетните колони на матрицата, започвайки от първата колона.

    Нулираме сумата S, в която ще се натрупа сумата от положителни елементи.

    Във вътрешния цикъл проверяваме знака на елемента на масива.

    Ако елементът на масива е положителен (> 0), изчисляваме сумата S.

    След края на вътрешния цикъл показваме сумата S на формата.

Фрагмент програми:

За j = 1 до N Стъпка 2

Ако F(i, j) > 0, тогава S = S + F(i, j)

Отпечатайте „Сума на колона“; j; „:“; S ‘ j – номер на колона!

Вложените цикли ви позволяват да организирате изброяване на опциите и решаване на проблеми, които не могат да бъдат решени аналитично. В резултат на търсенето се получават варианти за решение, сред които се избират един или повече, отговарящи на условията на проблема.

Пример 9.14. Има 1801 рубли. Колко шоколада можете да купите за 31 рубли? и кифли за 18 рубли, за да похарчите напълно всички пари.

програма:

Сума = 1801

AllChocolates = Sum\31: AllBulks = Sum\18

За i = 1 към AllChocolates

За j = 1 Към VseBulk

Цена = i * 31 + j * 18 ‘обща покупна цена

Ако цена = 1801 Тогава

Печат "Шоколад: "; i; Раздел (19); "Булок: "; й

Нека обясним програмата, в която използваме променливи, именувани на руски език.

Първо определяме какъв е максималният брой само шоколади или само кифлички, които могат да бъдат закупени за цялата сума. Ние използваме получените стойности на AllChocolates и AllBulks, за да ограничим броя на търсенията за броя шоколадови бонбони и кифлички. За всяка стойност на броя шоколади (i) и броя на кифличките (j) определяме общата цена за закупуването им. Ако изчислената цена е 1801, тогава избраната опция е едно от решенията на проблема.

Функцията Tab() указва от каква позиция от ръба на формуляра ще се показва информацията, която следва тази функция. Ако Tab(19), тогава от 19-та позиция.

Програмата показва 3 възможни опции за покупка:

Шоколад 7, кифлички 88

Шоколад 25, кифлички 57

Шоколад 43, кифлички 26

Ако искате да дадете недвусмислен отговор, трябва да формулирате допълнително условие. Например „купени са по-малко кифли, отколкото шоколадови бонбони“. Тогава единственото решение ще бъде 3-тата опция.

Има много математически проблеми, които могат просто да бъдат решени чрез груба сила с помощта на програмиране на вложен цикъл.

В допълнение към структурите за вземане на решения има друг тип контролна структура, наречена цикъл.

Цикъле алгоритмична структура, с помощта на която се реализират многократни повторения на блокове от оператори.

Има три основни типа цикли във Visual Basic, които се изпълняват с помощта на конструкциите For:Next, Do:Loop и While:Wend.

За: Следващ цикъл. Използва се, когато броят на повторенията на даден блок от изрази е известен предварително. Този дизайн изглежда така:

За брояч = начална стойност До крайна стойност Оператори1 Оператори2 Напред [брояч]

Когато горните инструкции се изпълнят за първи път, на променливата брояч се присвоява начална стойност, след което са възможни две опции. Ако в резултат на проверка на брояча на условието > крайната стойност се получи стойността True, тогава цикълът завършва и блоковете operators1 и operators2 никога не се изпълняват. От друга страна, ако резултатът от проверката на условието е False, тогава блоковете с инструкции се изпълняват за първи път, след което се извършва преход към началото на цикъла. След това стойността на променливата на брояча се увеличава със стъпка, разположена след ключовата дума Step (ако липсва, се задава стъпка = 1). След това отново се проверява истинността на брояча на условието > крайна стойност и т.н., краят на цикъла настъпва в момента, в който резултатът от тази проверка е стойността True.

Често е необходимо да се прекрати „авариен“ цикъл, когато е изпълнено някакво допълнително условие. В този случай вътре в цикъла трябва да използвате служебната фраза Exit:For, която обикновено се намира в контролна структура, Например:

Ако условие, тогава изход за

Ако резултатът от проверката на условието е True, тогава изпълнението на цикъла ще бъде прекратено и блокът operator1 ще бъде изпълнен отново, но блокът operator2 няма.

Направи: Цикъл. Използва се, когато броят на повторенията на операторите на тялото на цикъла е предварително неизвестен. Има четири разновидности на този дизайн. Когато използвате първите две, цикълът или ще бъде изпълнен много пъти, или изобщо няма да бъде изпълнен.

Do Until оператори за цикъл на условие

Ако резултатът от проверката на условието е False, тогава блокът от оператори се изпълнява, в противен случай се извършва преход към оператора, разположен след служебната дума Loop. От друга страна, ако първият тест на условието върне резултата True, тогава цикълът няма да бъде изпълнен дори веднъж.

Do While Condition Loop оператори

Ако условието е вярно, тогава блокът от оператори се изпълнява, но ако е невярно, тоест резултатът от проверката е False, тогава цикълът няма да бъде изпълнен нито веднъж.

Ако се използват последните две конструкции, цикълът ще се изпълни поне веднъж.

Направете условие за цикъл на изявления

Блокът с инструкции се изпълнява, докато резултатът от тестването на условието е False, в противен случай цикълът завършва.

Do Statements Loop While Condition

Ако условието е невярно, блокът от оператори се изпълнява, но ако е вярно, т.е. Резултатът от проверката е True, след което настъпва краят на цикъла.

Цикъл докато: Уенд. Използва се и когато броят на повторенията на операторите на тялото на цикъла е неизвестен предварително и има следния синтаксис:

Докато условие Wend отчети

Ако резултатът от проверката на условието е True, тогава блокът от оператори се изпълнява, в противен случай се извършва преход към оператора, разположен след служебната дума Wend. От друга страна, ако първият тест на условието върне резултата False, тогава цикълът няма да бъде изпълнен дори веднъж.

VBA. Организация на циклите.

Инструкциите за цикъл се използват за повтаряне на действие или група от действия определен брой пъти. Броят на повторенията (итерации на цикъл) може да бъде предварително определен или изчислен.

VBA поддържа два типа циклични конструкции:

  1. Цикли с фиксиран брой повторения ( контрирани бримки).
  2. Цикли с неопределен брой повторения ( условни цикли).

За всички видове цикли се използва концепциятатяло на примка , който дефинира блок от изрази, затворени между началния и крайния оператор на цикъла. Всяко повторение на изпълнението на операторите на тялото на цикъла се извикваитерация

Фиксирани цикли

VBA предоставя две контролни структури за организиране на фиксиран цикъл: For ... Next (цикъл с брояч) и For Every ... Next (цикъл с изброяване).

Оператор за...Напред Това е типичен цикъл на брояча, който изпълнява определен брой итерации. Синтаксисът на оператора For...Next е:

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

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

Следващ [<счетчик>]

Пример за използване на оператора For...Next.

Листинг 1. За … Следващ оператор

‘ ЗАДАЧА: Създайте програма, която получава две числа от потребителя.

‘ Събира всички числа в диапазона, определен от тези две числа, и след това

“ показва получената сума.

Подизвадка7()

Брояч на цикли Dim i As Integer

Dim sStart ‘начална стойност на брояча

Крайна стойност на брояча Dim sEnd

Dim sSum As Long ‘резултантна сума

sStart = InputBox(“Въведете първото число:”)

sEnd = InputBox(“Въведете второто число:”)

sSum = 0

За i = CInt(sStart) до CInt(sEnd)

sSum = sSum + i

Следваща i

MsgBox „Сумата на числата от „ & sStart & ” до „ & sEnd & ” е: „ & sSum

End Sub

Инструкция за цикъл за всеки...следващпринадлежи към категорията оператори на обектен тип, т.е. важи предимно за колекциитеобекти, както и масиви . Тялото на цикъла се изпълнява фиксиран брой пъти, съответстващ на броя на елементите в масива или колекцията. За всеки... Следващ формат на изявление:

За всеки<элемент>в<группа> <блок операторов>Следващ [<элемент>]

Условни цикли (недефинирани цикли)

Условните цикли се използват, когато трябва да се извършват повтарящи се действия само при определени условия. Броят на итерациите не е дефиниран и като цяло може да бъде равен на нула (по-специално за цикли с предварително условие). VBA предлага на разработчиците няколко контролни структури за организиране на условни цикли:

  • Четири вида Do..Loops, които се различават по вида на проверяваното условие и времето, необходимо за извършване на тази проверка.
  • Непрекъснат цикъл Докато... Венд.

Цикълът Do While... е типичен цикъл с предварително условие. Условието се проверява преди да се изпълни тялото на цикъла. Цикълът продължава своята работа, докато не<условие>се изпълнява (т.е. има стойност True). Тъй като проверката се извършва в началото, тялото на цикъла може никога да не бъде изпълнено. Направи докато... Цикъл Формат:

Правете докато<условие>

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

Цикъл

Списък 2. Do While... Loop

‘ ЗАДАЧА: Създайте програма, която изисква въвеждане от потребителя

„произволна последователност от числа. Въвеждането трябва да бъде прекратено

“ само след като сборът на въведените нечетни числа надвиши 100.

Подизвадка8()

Dim OddSum As Integer 'сума от нечетни числа

Dim OddStr As String ‘низ с нечетни числа

Dim Num ‘за приемане на въведени числа

OddStr = “” ‘инициализация на изходен низ

OddSum = 0 ‘инициализиране на OddSum

Направете докато OddSum< 100 ‘начало цикла

Num = InputBox(“Въведете число: “)

Ако (Num Mod 2)<>0 След това „проверка на четност“.

OddSum = OddSum + Num ‘натрупване на сумата от нечетни числа

OddStr = OddStr & Num & ” ”

Край Ако

Цикъл

„отпечатайте низ с нечетни числа

MsgBox подкана:=”Нечетни числа: ” & OddStr

End Sub

Изявление Do...Loop Whileпредназначени за организацияцикъл с постусловие. Условието се проверява, след като тялото на цикъла е изпълнено поне веднъж. Цикълът продължава работата си до<условие>остава вярно. Направете... цикъл докато формат:

Направи<блок операторов>Цикъл докато<условие>

Листинг 3. Цикъл с постусловие

‘ ЗАДАЧА: Създайте програма за играта „Познай числото“. Програмата трябва да е произволна

начин за генериране на число в диапазона от 1 до 1000, потребителят трябва

„познайте това число. Програмата показва подсказка за всяко въведено число

„повече“ или „по-малко“.

Подизвадка8()

Randomize Timer ‘инициализиране на генератора на случайни числа

Dim msg As String ‘ низ за съобщения

Dim SecretNumber As Long, UserNumber като вариант

Начало: SecretNumber = Round(Rnd * 1000) ‘ компютърно генерирано число

UserNumber = Празен номер, въведен от потребителя

Правете геймплей

Изберете Case True

Case IsEmpty(UserNumber): msg = „Въведете номер“

Case UserNumber > SecretNumber: msg = „Твърде много!“

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

Край Избор

UserNumber = InputBox(prompt:=msg, Title:=”Познай числото”)

Loop While UserNumber<>SecretNumber

' преглед

Ако MsgBox(“Играйте отново?”, vbYesNo + vbQuestion, “Познахте!”) = vbYes Тогава

GoTo Begin

Край Ако

End Sub

Цикли Do Until... Loop и Do... Loop Until са инверсии на обсъдените по-рано условни цикли. Като цяло те работят по подобен начин, с изключение на това, че тялото на цикъла се изпълнява, ако условието е невярно (т.е.<условие>=Невярно). Направете до... Формат на цикъл:

Направете До<условие> <блок операторов>Цикъл

Do... Loop Until формат на цикъла:

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

Loop Until<условие>

Практическа задача:Пренапишете програмите в листинги 10 и 11, като използвате изрази за обърнат цикъл.

Loop While...Wend важи и за условни цикли. Този операторе напълно съвместим със структурата Do While... Loop. Формат на цикъла на Wend...

Докато<условие>

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

Венд

Отличителна черта на този оператор е невъзможността за принудително завършване (прекъсване) на тялото на цикъла (операторът Exit Do не работи в цикъла While ... Wend).

Прекъсване на цикъл

За да прекратите итерация по-рано и да излезете от цикъла, се използва командата Exit. Този оператор е приложим във всяка циклична структура с изключение на While... Wend. Общият синтаксис за използване на Exit за прекъсване на цикъл е:

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

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

Изход (за | Направете)

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

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

Когато операторът Exit се изпълни, цикълът се прекъсва и контролът се прехвърля към оператора, следващ оператора<конец_цикла>. Може да има няколко оператора Exit в тялото на цикъл.

Листинг 4. Принудително излизане от цикъл

Подизвадка9()

За i = 1 до 10000000

If i = 10 Then Exit For ‘ излизане от цикъла, когато броячът достигне 10

Следваща

Урок от поредицата: “ Програмиране на Visual Basic.NENза ученици"

Запознахте се с контролата ComboBox.
В този урок ще продължим изучаването на езиковите оператори на Visual Basic.Net, като се фокусираме върху операторите за цикъл.
Циклични алгоритмични структуриима три вида:

  1. броячи цикли, в които се изпълнява тялото на цикъла определена сумаведнъж;
  2. цикли за обработка на масиви или колекции;
  3. Условни цикли, в които тялото на цикъла се изпълнява, докато условието е вярно (или докато условието стане вярно).

В този урок ще разгледаме оператора за цикъл с брояч (For . . . . Next). Нека напишем проект, използвайки този оператор.

Цикълс брояч За. . . Nex t се използва, когато предварително се знае колко повторения трябва да се извършат.

Блокова схема

Общ изглед на оператора

For Counter = StartValue To EndValue Body Body Next [Counter]

Синтаксисът на оператора е следният: редът, започващ с ключовата дума For, е началото на цикъла, а редът с ключовата дума Next е краят на цикъла, между тях са инструкции, които са тялото на цикъла.

Алгоритъм за изпълнение на оператора For. . . Следваща

  1. Стойността на променливата Counter е зададена равна на StartValue.
  2. Условието Брояч се проверява<= КонЗнач
  3. Ако условието е изпълнено, тогава тялото на цикъла се изпълнява. Променливата Counter се променя от стойността на стъпката: Counter = Counter + step.
  4. Когато променливата Counter достигне стойността ConValue, цикълът излиза и се изпълняват следните инструкции.

Програмистът може да организира преждевременно излизане от цикъла с помощта на конструкцията Exit For. В този случай цикълът се излиза автоматично и управлението се прехвърля към следващата команда след цикъла.

Проект "Доход по депозит"

Напишете проект, който изчислява доходите по депозит и осигурява изчисляването на проста и сложна лихва. Обикновена лихва се начислява в края на срока на депозита, сложна лихва се начислява ежемесечно и се добавя към първоначалната сума на депозита, а следващия месец се начислява лихва върху новата сума. Препоръчителната форма е показана на фигурата.

Технология на изпълнение

Този урок показа как да използвате цикъл For...Next, за да повторите кода определен брой пъти.

Извикват се всички действия на процедура, които се повтарят определен брой пъти или докато някое условие бъде изпълнено или не цикъл .

Извиква се процесът на еднократно изпълнение на всички изрази, затворени в структура на цикъл итерация на цикъл.

Извикват се циклични структури, които винаги се изпълняват определен брой пъти цикли с фиксиран брой итерации. Други типове циклични структури се повтарят различен брой пъти в зависимост от набор от условия. Такива цикли се наричат неопределени цикли.

Извиква се блокът от оператори, разположен между началото и края на цикъла "тяло на примка".

Най-простата структура на цикъла е фиксиран цикъл .

За..Следващ цикъл

Синтаксис

За брояч = Започнетедо Край
Изявления
Следващ [ брояч]

Брояч - всяка цифрова променлива на VBA
Начало - всеки числов израз, който определя началната стойност за променливата на брояча
Край - числов израз, който определя крайната стойност за променливата на брояча


По подразбиране VBA увеличава променлива броячс 1 всеки път, когато изразите се изпълняват в цикъла. Можете да зададете различна стойност ( SterSize- всеки числов израз), с който ще се промени брояч.

Ключова дума Следващаказва на VBA, че е достигнат краят на цикъла. Незадължителна променлива броячслед ключовата дума Следващатрябва да е същата променлива брояч, която беше посочена след ключовата дума Зав началото на структурата на цикъла.


По-долу е даден списък на най-простия цикъл За..Напред, който брои сбора на числата от 1 до 10:



А сега два варианта за цикъла За..Напредизползвайки стъпка на цикъл, различна от една:



Обърнете внимание!При намаляване на брояча на цикъла За..Напредцикълът се изпълнява, докато променливата на брояча е по-голяма или равна на крайната стойност, а когато броячът на цикъла се увеличи, цикълът се изпълнява, докато променливата на брояча е по-малка или равна на крайната стойност.

Цикъл за всеки..Напред

Цикъл За всеки..Напредне използва брояч на цикли. Цикли За всеки..Напредсе изпълняват толкова пъти, колкото има елементи в определена група, като например колекция от обекти или масив (които ще бъдат обсъдени по-късно). С други думи, цикълът За всеки..Напредсе изпълнява веднъж за всеки елемент в групата.

Синтаксис

За всеки елементв Група
Изявления
Следващ [ елемент]

Елемент - променлива, използвана за итерация на всички елементи в конкретна група
Групата е колекция обект или масив
Инструкции - една, няколко или никакви VBA инструкции (тяло на цикъл).