Sākums / Windows pārskats / Vba for to step ir vienkāršs piemērs, kā tas darbojas. VBA cilpas. Laboratorijas darbi par programmēšanas pamatiem

Vba for to step ir vienkāršs piemērs, kā tas darbojas. VBA cilpas. Laboratorijas darbi par programmēšanas pamatiem

Operatora sintakse:

ParSkaitītājs= Sākt ToBeigas[SolisSolis]

Block_Operators

TālākSkaitītājs

Šeit ir norādīts:

Par Par (obligāts atslēgvārdsVB);

Uz uz (obligāts atslēgvārdsVB);

Block_Operators– zvanīja viens vai vairāki operatori cikla korpuss;

Skaitītājs - vesels mainīgais, kas uzskaita izpildīto cilpu skaitu;

Sākums, beigas - sākotnējās un galīgās skaitītāja vērtības;

Solis solis(atslēgvārdsVB);

solis - skaitītāja maiņas solis; var būt negatīvs; parametrs nav obligāts, jo, ja solis ir 1, varatSolis Solis zemāks;

Nākamais – nākamais (obligāts atslēgvārds VB, cilpas beigu operatora ieraksts).

Skaitītāja vērtība (sākums, beigas) var būt skaitliskās konstantes vai vesela vai reāla tipa mainīgie, var būt negatīvi vai pozitīvi skaitļi. Lai cilpas korpuss tiktu izpildīts vismaz vienu reizi, ir jābūt Sākums ≤ beigas, Ja Solis> 0 un Sākums ≥ beigas, Ja Solis< 0. Tiklīdz tas izrādīsies Skaitītājs>Beigas ( Ja Sākt< Конец), Cilpas izpilde beidzas. Ja Sākt =beigas, cilpa tiks izpildīta vienu reizi;

Piemērs 9.1 .Funkciju novērtēšanaY = 2 – 1.5 Sinxkad X diapazonā mainās ar soļiem 0,2.

Programmas fragments Y aprēķināšanai un argumenta X un funkcijas Y izvadīšanai:

Ja X = 0 līdz 2,4, darbība 0,2

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

Lai saprastu, kā šī cilpa darbojas, šeit ir programma līdzīgai cilpai, kas izveidota, izmantojot operatorsIet uz, tagi, operatorsJaTad.

M1: X = X + 0,2

Ja X<= 2.4 Then

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

Apskatīsim, kā šī programma darbojas. Pirmais aprēķins Y ir nestandarta, it kā tas izkrīt no cikla. Cikls sākas pēc pirmās vadības GoToM1 pārsūtīšanas uz etiķeti M1. Rindā ar apzīmējumu M1 arguments X tiek palielināts par soli 0,2 un nekavējoties tiek pārbaudīts, vai jaunā X vērtība pārsniedz galīgo vērtību 2,4. Ja tas nepārsniedz, tad Y aprēķins tiek atkārtots ar šo jauno X. Pēc tam GoToM1 operators tiek izpildīts vēlreiz - nododot vadību uz līniju ar marķējumu M1. Šīs Y aprēķināšanas iterācijas (cikli) beigsies, tiklīdz X pārsniegs 2,4.

Tagad salīdzināsim programmu ar If ar For...Next cilpu.

Ja X = 0 līdz 2,4, darbība 0,2

aizstāj divas rindas

M1: X = X + 0,2

Ja X<= 2.4 Then

Tās ir pēdējās divas koda rindas, kas tiek izpildītas cilpā For, bet mēs tās neredzam. Mēs tos iekodējām ar rindiņu cFor... GoTo M1 koda rindiņa ir kodēta ar vārdu Next X (burtiski: next X). Tā rezultātā tiek iegūts kompakts dizains.

Lietojot For...Next cilpu, jāiemācās izmantot cilpas skaitītāju dažādu problēmu risināšanai. Lai saprastu, kā problēmas risināšanai izmantot skaitītāju, jums tas ir jādara analizēt problēmas formulējumu, atrast dažu problēmas parametru izmaiņu modeļus.

Piemērs 9.2 . Sērijas elementu summas noteikšana: .

Programmas fragments:

S = 0 ‘ S – rindas summa

Ja i = 1 līdz 16 ‘, skaitītājs i ir daļdaļas saucējs

S = S + 1/i ‘ summas uzkrāšanās

Drukāt "S ="; S ‘ izvada summu S formā

Katrai skaitītāja i vērtībai izteiksme 1/i secīgi veido sērijas elementus, sākot no 1.

Piemērs 9.3 . Elementu sērijas summas aprēķināšana
.

Programmas fragments:

S = 0 ‘ S – rindas summa

Ja i = 1 līdz 18 ‘ skaitītājs i – skaitītājs

S = S + i/(i + 1) ‘ saucējs ir par 1 lielāks par skaitītāju

Drukāt "S ="; S ‘ izvada summu S formā

Piemērs 9.4 . Summas aprēķins: 5 + 8 + 11 + … + 32 + 35

Programmas fragments:

S = 0 ‘ S – rindas summa

Ja i = 5 līdz 35, 3. darbība ' mēs iegūstam aritmētiku _

progresija ar saucēju 3

Drukāt "S ="; S

Piemērs 9.5. Summas aprēķināšana dotam x:

Problēmas analīze parāda, ka X pakāpe svārstās no 1 līdz 10. Šajā gadījumā skaitītājs koeficientā X ir lielāks par pakāpi par 1, bet saucējs par 2. Pakāpes vērtību veidosim, izmantojot skaitītājs i. Pēc tam varat izveidot šādu programmu (fragmentu):

S = 1 ‘ S – rindas summa

Ja i = 1 līdz 10 ‘, piemēram, skaitītājs i, pakāpe mainās pie X

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

Drukāt "S ="; S

CikliParTālākizmantotsievade, izvade Unmasīva apstrāde .

Piemērs 9.6. Masīva elementu vērtību ievade un izvade B(N).

Programmas fragments:

' Mēs izlaižam vērtību piešķiršanu mainīgajam N, _

ievadīts veidlapā teksta laukā txtN:

B(i) = InputBox("Ievadiet vienumu B(" & i & ")", _

"Ievades masīvs B(" & N & "))

Drukāt " "; B(i);

Funkcija InputBox() parāda dialoglodziņu ar aizvēršanas pogu, norādītu ziņojumu, ievades lauku, pogām Labi,Atcelt, ar doto galveni (vai bez tās). Ja tiek ievadīts skaitlis 12 - masīva N lielums, tad mūsu piemērā, kad tas pirmo reizi parādās, šis logs izskatīsies šādi:

Kā redzam, ziņa Ievadiet elementu B(1) tiek piedāvāts tekstlodziņā ievadīt 1. elementa vērtību. Šis logs parādīsies 12 reizes, jo masīvā ir 12 elementi. Tas izriet no veidlapas nosaukuma. Elementa B(i) rādītājs ielūgumā mainīsies no 1 līdz 12.

Ja veidlapā vēlaties parādīt tikai masīva B(N) elementu vērtības, tad cilpas pamatteksts sastāvēs no viena paziņojuma:

Masīva elementu apskate, lai ar tiem veiktu dažas darbības, arī tiek veikta, izmantojot operatoru For...Next cilpa.

Dosim viendimensiju masīvu apstrādes piemēri.

Piemērs 9.7 . Maksimālā elementa noteikšana masīvā B(M).

Izslēdzot sākotnējo datu ievadi un rezultātu izvadīšanu, mēs īsi aprakstām algoritmu:

    Deklarēsim mainīgo Bmax, kurā ievadīsim masīva pirmā elementa vērtību un mainīgo Imax, kuram piešķirsim 1 - masīva pirmā elementa indeksu.

    Ciklā, izmantojot operatoru For...Next, mēs apskatām visus masīva elementus, sākot ar 2. elementu. Izmantojot operatoru If...Then, mēs salīdzinām to vērtības ar vērtību, kas saglabāta mainīgajā Bmax.

    Ja izrādās, ka masīva elementa vērtība ir lielāka par Bmax vērtību, tad Bmax tiek piešķirta šī elementa vērtība, bet vērtībai Imax tiek piešķirts šī masīva elementa indekss.

Pēc cilpas beigām mainīgajā Bmax būs maksimālā elementa vērtība, bet Imax - tā indekss (skaitlis).

Programma šai algoritma daļai.

Bmax = B(1): Imax = 1

Ja B(i) > Bmax, tad Bmax = B(i): Imax = i

Piemērs 9.8. Masīva pozitīvo elementu summas, reizinājuma un skaita noteikšanaD(M).

Mainīgie: S, P, K – attiecīgi pozitīvo elementu summa, reizinājums un skaits.

Algoritmsšāda definīcija:

    Mainīgajam S un K piešķiram nulli, bet mainīgajam P piešķiram 1. Parasti mainīgie, kuros tiek uzkrāta summa, šeit tā ir S un k, vienmēr tiek atiestatīti uz nulli pirms cilpas, un mainīgie lielumi kuriem produkts tiek aprēķināts, tiek piešķirts 1.

    Izmantojot For...Next cilpu, mēs izejam cauri visiem masīva elementiem un pārbaudām, vai tie ir pozitīvi (D(i) > 0).

    Ja izrādās, ka elements ir pozitīvs, tad pievienojam tā vērtību summas S vērtībai un jauno summu uzglabājam tajā pašā mainīgajā. Mēs reizinām mainīgo P ar elementa pozitīvo vērtību un arī saglabājam to mainīgajā P. Un mēs pievienojam 1 mainīgajam K un saglabājam jauno vērtību tajā pašā mainīgajā

ProgrammaŠī algoritma daļa izskatās šādi:

S = 0: P = 1: K = 0

Ja D(i) > 0 Tad

S = S + D(i) ‘šī summa uzkrājas _

masīva elementu pozitīvās vērtības D(i)

P = P*D(i) ‘pozitīvā reizinājuma definīcija

"masīva elementi

K = K + 1 ‘ šo operatoru sauc COUNTER, šeit tas ir

‘ definē pozitīvo masīva elementu skaitu

Piemērs 9.9. Nepāra masīva elementu summas, reizinājuma, skaitļa un vidējā atrašanaD(M).

Šeit ir programmas fragments šādai definīcijai.

S = 0: P = 1: K = 0

Ja D(i) Mod 2<>0 Tad

Ssr = S/k ‘, aprēķinot nepāra elementu vidējo vērtību

Salīdziniet šo programmas fragmentu ar programmu 9.8. piemērā. Šī programma gandrīz pilnībā atkārto iepriekšējo. Ir mainījies tikai nosacījums If paziņojumā. Nosacījums D(i) 2. mod<>0 nozīmē, ka mēs meklējam masīva D(i) elementus, kas nedalās vienmērīgi ar 2, t.i., nepāra elementus. Ja pārbaudām nosacījumu D(i) Mod 2 = 0, tad atlasīsim pāra masīva elementus.

Kā zināms, dalījums ar Mod dod dalījuma atlikumu veselos skaitļos. Piemēram, pēc operatora d = 34Mod4 izpildes mainīgais d būs vienāds ar 2. Tāpēc, lai atlasītu masīva elementus, kas ir 4 reizes, ir jāpārbauda nosacījums D(i) Mod 4 = 0. Nosacījums tiks izpildīts. jābūt līdzīgiem, ja meklējam elementus, kas ir citu skaitļu daudzkārtņi. Šie citi skaitļi tiks rakstīti 4 vietā.

Piemērs 9.10. Masīva elementu rakstīšanaR(N), reizināti ar 5, citā masīvā un izvadot jauno masīvu formā.

Apzīmēsim citu masīvu, piemēram, R5(N). Jāpieņem, ka šī jaunā masīva lielums ir tāds pats kā oriģinālajam, jo ​​galējā gadījumā visi elementi var būt reizināti ar 5.

Problēmas algoritms:

    Atiestatīt skaitītāju k. Izmantojot For...Next cilpas operatoru, mēs apskatām visus masīva R(N) elementus.

    Mēs pārbaudām katra elementa reizinājumu ar 5, izmantojot operatoru If...Then un dalot masīva elementu ar Mod.

    Ja elements ir reizināts ar 5, tad, izmantojot k=k+ 1 tipa skaitītāju, veidojam masīva R5(N) indeksus, sākot no 1, un ierakstām to šajā citā masīvā –R5(N).

    Ja k atšķiras no nulles, veidlapā parādiet masīvu R5().

    Ja k ir vienāds ar nulli, mēs izvadām: "Nav elementu, kas dalās ar 5."

Programmas fragments:

Ja R(i) Mod 5 Tad k = k + 1: R5(k) = R(i)

Ja k<>0 Tad

Drukāt “Nav elementu, kas dalās ar 5”

Cilpas var ligzdot citās cilpās.

Demonstrēsim darbu ligzdotas cilpas . Tālāk redzamā programma parāda ciklu skaitītāju i, j un k vērtības. No i, j, k izvades kļūst skaidrs, kā tiek izpildītas ligzdotās cilpas.

Privāts apakšējais frmCycle_DblClick()

ScaleMode = 4 vienības — simboli

Ja i = 1 līdz 3 ‘ārējā cilpa

Drukāt "i ="; i;

Ja j = 1 līdz 4 — 1. ligzdotā cilpa

PašreizējaisX = teksta platums("i = 1 ") + 5

Drukāt "j = "; j;

PašreizējaisX = teksta platums("i = 1 j = 1 ") + 7

Ja k = 1 līdz 5 — 2. ligzdotā cilpa

Parādītajā formā (1. att.) ir parādīti visu trīs cilpu skaitītāju izvadīšanas rezultāti: ārējā cilpa – skaitītājs i, pirmā ligzdotā cilpa – skaitītājs j un otrā, iekšējā cilpa – skaitītājs k. Kā redzam, lēnākais skaitītājs ir ārējā cilpa(poi), un “ātrākais” ir visdziļākās cilpas skaitītājs (saskaņā ark).

Programma tiek izpildīta, veicot dubultklikšķi uz frmCicli formas ar peles kreiso pogu.

CurrentX, CurrentY – formas rekvizīti, kas norāda X, Y koordinātas sākuma punkta informācijas attēlošanai, izmantojot Print metodi (X un Y asu atrašanās vietu veidlapā sk. 1. att.).

TextWidth() ir funkcija, kas atgriež funkcijā norādītā teksta platumu kā argumentu dubultpēdiņās.

Ligzdotas cilpas tiek izmantotas, apstrādājot divdimensiju masīvus (matricas). Bet dažos uzdevumos, izņemot divdimensiju masīva elementu ievadi un izvadi, varat aprobežoties ar vienu cilpu. Apskatīsim dažus matricas programmēšanas piemērus.

Piemērs 9.11. Veselu skaitļu matricas (divdimensiju masīva) ievade un izvadeintA(N).

Jūs varat ievadīt matricu pa rindām un kolonnām . Tas ir vienkāršāk - rindu pa rindiņai, ja ieprogrammējat masīva elementu izvadi formā uzreiz pēc to ievadīšanas.

Matricas ievade un izvaderindu pēc rindas - fragments 1.

Dim M kā vesels skaitlis, N kā vesels skaitlis, i kā vesels skaitlis, j kā vesels skaitlis

Dim intA() Kā vesels skaitlis ‘ deklarē dinamisku masīvu

M = Val(txtN.Text) ‘ M – rindu skaits

N = Val(txtN.Text) ‘ N – kolonnu skaits

RedDim intA(M, N) Kā vesels skaitlis ' atkārtoti definējiet masīvu

Ja i = 1 līdz M ‘ i saglabās savu vērtību līdz pilnīgai

‘ligzdotā cilpa uz j netiks izpildīta

Drukāt " "; intA(i, j); ‘ izvada rindiņu pēc rindas

Drukāt ‘ pāriet uz jaunas rindas sākumu

Lai ievadītu matricu pēc kolonnām, ārējā cilpa ir jāizveido j (norāda kolonnu numurus), bet iekšējā cilpa i (norāda rindu numurus).

Matricas ievade un izvadepa kolonnām 2. fragments.

PrY = 2500: CurrentY = PrY ‘ PrY iestata sākuma Y koordinātu

' parāda katras veidlapas kolonnas pirmo elementu

Ja j = 1 līdz N ‘ j saglabās savu vērtību līdz pilnīgai

“ligzdotā cilpa uz i netiks izpildīta

intA (i, j) = InputBox("Ievadiet elementu intA(" & i & "," & j & ")", _

"Ievades matrica intA(" & M & "," & N & ")")

Drukas cilne (6 * j); intA(i, j) ‘izvade pa kolonnām

CurrentY = PrY ', lai parādītu pirmo elementu

Nākamā kolonna

Šis otrais programmas fragments neatkārto pirmās 5 rindas no pirmā fragmenta. Funkcija Tab(6 * j) iestata izvades sākumu rindā (rakstzīmēs), sākot no veidlapas kreisās malas. Koordināta PrY šeit ir vienāda ar 2500 twips, bet jūs varat izvēlēties citu vērtību.

Piemērs 9.12 . Masīva elementu vērtību sakārtošanaV(N) augošā veidā.

Masīvu pasūtīšanai ir vairāki algoritmi. Šeit ir viens no tiem: izmantojot ligzdotas cilpasParTālākmēs atlasām elementus, sākot no pirmā līdz priekšpēdējam, un salīdzinām katru no tiem ar nākamajiem elementiem; ja izrādās, ka nākamais elements ir mazāks par atlasīto, mēs tos apmainām.

Programmas fragments, kas ievieš šo algoritmu:

Ja i = 1 līdz N – 1

Ja j = i + 1 līdz N

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

Paskaidrosim šo programmas fragmentu.

Izmantojot ārējo cilpu ar skaitītāju i, mēs atlasām elementu V(i), lai salīdzinātu ar nākamajiem elementiem. Iekšējā cilpa ar skaitītāju j atlasa salīdzināšanai nākamos V(j) elementus. Sākotnējā vērtībaj ir i+ 1. Šis ir pirmais elements no nākamajiem.

Lai apmainītos ar elementu V(i) un V(j) vērtībām, mēs ieviešam kādu mainīgo P, kurā īslaicīgi “paslēpjam” viena masīva elementa vērtību (programmā tas ir V(i). )). Tad elementam V(i) tiek piešķirta elementa V(j) vērtība, bet elementam V(j) tiek piešķirta vērtība V(i), kas tiek saglabāta mainīgajā P. Ja mēs “slēpsim” vērtību V(j) P, tad vērtību apmaiņas kods būs šāds: P = V(j): V(j) = V(i): V(i) = P Rezultāts nemainīsies.

Uz kārtot masīvu dilstošā secībā, pietiek uzrakstīt verifikācijas nosacījumu formā V(j) > V(i), t.i., nomainīt nevienlīdzības zīmi uz citu.

Ja masīvs nav skaitlis, bet virkne, un masīva elementos tiek ievadīti uzvārdi, tad, izmantojot programmu 9.12 piemērā, uzvārdu sarakstu var sakārtot alfabētiskā secībā. Fakts ir tāds, ka datorā izmantotajiem alfabēta burtiem ir patiesas šādas nevienādības: A.< Б < В < Г….< Я и т. д., поскольку числовые коды букв алфавита последовательно увеличиваются, начиная с А и до конца алфавита. Это же справедливо и для букв английского алфавита.

Piemērs 9.13 . Pozitīvo elementu summas aprēķināšana matricas nepāra kolonnāmF(M, N) un izvadiet summas veidlapā.

Programmas algoritms:

    Izmantojot ārējo cilpu ar 2. darbību, mēs veidojam matricas nepāra kolonnu indeksu, sākot no pirmās kolonnas.

    Mēs atiestatām summu S, kurā uzkrāsies pozitīvo elementu summa.

    Iekšējā cilpā mēs pārbaudām masīva elementa zīmi.

    Ja masīva elements ir pozitīvs (> 0), mēs aprēķinām summu S.

    Pēc iekšējās cilpas beigām veidlapā parādām summu S.

Fragments programmas:

Ja j = 1 līdz N, 2. darbība

Ja F(i, j) > 0, tad S = S + F(i, j)

Drukāt “Slejas summa”; j; “:”; S ‘ j – ailes numurs!

Ligzdotas cilpas ļauj sakārtot opciju uzskaitījums un atrisināt problēmas, kuras nevar atrisināt analītiski. Meklēšanas rezultātā tiek iegūti risinājuma varianti, starp kuriem tiek atlasīts viens vai vairāki, kas atbilst problēmas nosacījumiem.

Piemērs 9.14. Ir 1801 rublis. Cik šokolādes var nopirkt par 31 rubli? un maizītes par 18 rubļiem, lai pilnībā iztērētu visu naudu.

Programma:

Summa = 1801

AllChocolates = summa\31: AllBulks = summa\18

Ja i = 1 uz visu šokolādi

Ja j = 1 uz VseBulk

Cena = i * 31 + j * 18 ‘kopējā pirkuma cena

Ja cena = 1801, tad

Drukāt "Šokolāde:"; i; Tab(19); "Bulok:"; j

Paskaidrosim programmu, kurā izmantojam krievu valodā nosauktos mainīgos.

Pirmkārt, mēs nosakām, kāds ir maksimālais šokolādes konfekšu skaits atsevišķi vai tikai rullīši, ko var iegādāties par visu summu. Mēs izmantojam iegūtās AllChocolates un AllBulks vērtības, lai ierobežotu šokolādes un rullīšu skaita meklējumu skaitu. Katrai šokolādes konfekšu skaita (i) un ruļļu skaita (j) vērtībai mēs nosakām kopējo to iegādes cenu. Ja aprēķinātā Cena ir 1801, tad izvēlētā opcija ir viens no problēmas risinājumiem.

Funkcija Tab() norāda, no kuras pozīcijas no formas malas tiks parādīta informācija, kas seko šai funkcijai. Ja Tab(19), tad no 19. pozīcijas.

Programma parāda 3 iespējamās pirkšanas iespējas:

Šokolāde 7, rullīši 88

Šokolāde 25, rullīši 57

Šokolāde 43, bulciņas 26

Ja vēlaties sniegt nepārprotamu atbildi, jums ir jāformulē papildu nosacījums. Piemēram, “tika nopirkts mazāk bulciņu nekā šokolādes”. Tad vienīgais risinājums būs 3. variants.

Ir daudzas matemātiskas problēmas, kuras var vienkārši atrisināt ar brutālu spēku, izmantojot ligzdotās cilpas programmēšanu.

Papildus lēmumu pieņemšanas struktūrām pastāv arī cita veida kontroles struktūra, ko sauc par ciklu.

Cikls ir algoritmiska struktūra, ar kuras palīdzību tiek realizēti vairāki operatoru bloku atkārtojumi.

Programmā Visual Basic ir trīs galvenie cilpu veidi, kas tiek ieviesti, izmantojot For:Next, Do:Loop un While:Wend konstrukcijas.

Priekš: Nākamā cilpa. Izmanto, ja ir iepriekš zināms noteiktā priekšrakstu bloka atkārtojumu skaits. Šis dizains izskatās šādi:

Skaitītājam = sākotnējā vērtība Līdz galīgajai vērtībai Operatori1 Operatori2 Nākamais [skaitītājs]

Pirmo reizi izpildot iepriekš minētos paziņojumus, skaitītāja mainīgajam tiek piešķirta sākotnējā vērtība, pēc kuras ir iespējamas divas iespējas. Ja, pārbaudot nosacījumu skaitītāju > gala vērtība, tiek iegūta vērtība True, tad cilpa beidzas, un bloki operatori1 un operatori2 nekad netiek izpildīti. Savukārt, ja nosacījumu pārbaudes rezultāts ir False, tad šajā gadījumā paziņojumu bloki tiek izpildīti pirmo reizi, pēc tam notiek pāreja uz cilpas sākumu. Pēc tam skaitītāja mainīgā vērtība tiek palielināta par soli, kas atrodas aiz atslēgvārda Step (ja tā nav, tiek iestatīts solis = 1). Pēc tam vēlreiz tiek pārbaudīts nosacījumu skaitītāja > gala vērtība utt. patiesums, cilpas beigas notiek brīdī, kad šīs pārbaudes rezultāts ir vērtība True.

Bieži vien ir nepieciešams pārtraukt cilpas “ārkārtas situāciju”, ja ir izpildīts kāds papildu nosacījums. Šajā gadījumā cilpas iekšpusē ir jāizmanto pakalpojuma frāze Exit:For, kas parasti atrodas kontroles struktūra, Piemēram:

Ja stāvoklis Tad iziet uz

Ja nosacījuma pārbaudes rezultāts ir True, tad cilpas izpilde tiks pārtraukta un operator1 bloks tiks izpildīts vēlreiz, bet operator2 bloks netiks izpildīts.

Darīt: cilpa. To lieto, ja cilpas korpusa operatoru atkārtojumu skaits nav iepriekš zināms. Šim dizainam ir četras šķirnes. Izmantojot pirmos divus, cilpa tiks izpildīta vairākas reizes vai netiks izpildīta vispār.

Darīt līdz nosacījumam Cikla paziņojumi

Ja nosacījuma pārbaudes rezultāts ir False, tad tiek izpildīts priekšrakstu bloks, pretējā gadījumā tiek veikta pāreja uz paziņojumu, kas atrodas aiz servisa vārda Loop. Savukārt, ja nosacījuma pirmā pārbaude atgriež rezultātu True, tad cilpa netiks izpildīta pat vienu reizi.

Veiciet nosacījumu cilpas paziņojumus

Ja nosacījums ir patiess, tad priekšrakstu bloks tiek izpildīts, bet, ja tas ir false, tas ir, pārbaudes rezultāts ir False, tad cilpa netiks izpildīta pat vienu reizi.

Ja tiek izmantotas pēdējās divas konstrukcijas, cilpa tiks izpildīta vismaz vienu reizi.

Veiciet paziņojumu cilpu līdz stāvoklim

Paziņojuma bloks tiek izpildīts tik ilgi, kamēr nosacījuma pārbaudes rezultāts ir False, pretējā gadījumā cilpa beidzas.

Veiciet paziņojumu cilpu, kamēr nosacījums

Ja nosacījums ir nepatiess, tiek izpildīts priekšrakstu bloks, bet, ja tas ir patiess, t.i. Pārbaudes rezultāts ir True, tad notiek cikla beigas.

Kamēr cilpa: Wend. To izmanto arī tad, ja cilpas pamattekstu atkārtojumu skaits nav iepriekš zināms, un tam ir šāda sintakse:

Kamēr nosacījums Wend paziņojumiem

Ja nosacījuma pārbaudes rezultāts ir True, tad tiek izpildīts operatoru bloks, pretējā gadījumā tiek veikta pāreja uz operatoru, kas atrodas aiz servisa vārda Wend. Savukārt, ja nosacījuma pirmā pārbaude atgriež rezultātu False, tad cilpa netiks izpildīta pat vienu reizi.

VBA. Ciklu organizēšana.

Cikla paziņojumi tiek izmantoti, lai noteiktu darbību vai darbību grupu atkārtotu noteiktu skaitu reižu. Atkārtojumu (cilpas iterāciju) skaitu var iepriekš definēt vai aprēķināt.

VBA atbalsta divu veidu cilpas konstrukcijas:

  1. Cilpas ar fiksētu atkārtojumu skaitu ( pretrunā cilpas).
  2. Cilpas ar nenoteiktu atkārtojumu skaitu ( nosacījuma cilpas).

Šis jēdziens tiek izmantots visu veidu cikliem cilpas korpuss , kas definē paziņojumu bloku, kas atrodas starp cilpas sākuma un beigu priekšrakstiem. Tiek izsaukts katrs cilpas korpusa paziņojumu izpildes atkārtojums iterācija

Fiksētie cikli

VBA nodrošina divas kontroles struktūras fiksētas cilpas organizēšanai: For... Next (cilpa ar skaitītāju) un For Every... Next (cilpa ar uzskaitījumu).

Operators priekš...Nākamais Šī ir tipiska skaitītāja cilpa, kas izpilda noteiktu iterāciju skaitu. Priekšraksta For...Next sintakse ir šāda:

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

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

Nākamais [<счетчик>]

Operatora For...Next izmantošanas piemērs.

Listing 1. Operator for ... Next

Uzdevums: izveidojiet programmu, kas no lietotāja saņem divus skaitļus.

Saskaita visus skaitļus diapazonā, ko nosaka šie divi skaitļi, un pēc tam

' parāda iegūto summu.

Apakšparaugs7()

Dim i As Integer ‘ciklu skaitītājs

Dim sStart ‘sākotnējā skaitītāja vērtība

Dim sEnd ‘beigu skaitītāja vērtība

Dim sSum As Long ‘rezultātā summa

sStart = InputBox ("Ievadiet pirmo numuru:")

sEnd = InputBox (“Ievadiet otro numuru:”)

sSum = 0

Ja i = CInt(sStart) To CInt(sEnd)

sSum = sSum + i

Nākamais i

MsgBox “Ciparu summa no “ & sStart & ” līdz “ & sEnd & ” ir: “ & sSum

Beigt apakš

Cilpas paziņojums Katram...Tālākpieder objektu tipa operatoru kategorijai, t.i. galvenokārt attiecas uz kolekcijām objektus, kā arī masīvus . Cilpas pamatteksts tiek izpildīts noteiktu reižu skaitu, kas atbilst elementu skaitam masīvā vai kolekcijā. Katram...Nākamā paziņojuma formātam:

Katram<элемент>In<группа> <блок операторов>Nākamais [<элемент>]

Nosacījuma cilpas (nenodefinētas cilpas)

Nosacījuma cilpas tiek izmantotas, ja atkārtotas darbības ir jāveic tikai noteiktos apstākļos. Iterāciju skaits nav definēts un kopumā var būt vienāds ar nulli (jo īpaši cilpām ar priekšnosacījumu). VBA piedāvā izstrādātājiem vairākas kontroles struktūras nosacījumu cilpu organizēšanai:

  • Četru veidu Do..Loops, kas atšķiras pēc pārbaudāmā stāvokļa veida un laika, kas nepieciešams šīs pārbaudes pabeigšanai.
  • Nepārtraukta cilpa Kamēr... Wend.

Tipisks ir Do While... Loop cilpa ar priekšnosacījumu. Nosacījums tiek pārbaudīts, pirms tiek izpildīts cilpas pamatteksts. Cikls turpina savu darbu līdz tam<условие>tiek izpildīts (t.i., tam ir vērtība True). Tā kā pārbaude tiek veikta sākumā, cilpas pamattekstu var nekad izpildīt. Darīt, kamēr... Cikla formāts:

Darīt Kamēr<условие>

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

Cilpa

Saraksts 2. Do While... Loop

Uzdevums: izveidojiet programmu, kurai nepieciešama lietotāja ievade

“patvaļīga skaitļu secība. Ievade ir jāpārtrauc

tikai pēc tam, kad ievadīto nepāra skaitļu summa pārsniedz 100.

Apakšparaugs8()

Dim OddSum As Integer ‘nepāra skaitļu summa

Dim OddStr As String ‘virkne ar nepāra skaitļiem

Dim Num, lai pieņemtu ievadītos skaitļus

OddStr = “” ‘izvades virknes inicializācija

OddSum = 0 ‘inicializēt OddSum

Darīt, kamēr OddSum< 100 ‘начало цикла

Skaitlis = InputBox ("Ievadiet numuru: ")

Ja (2. mod.)<>0 Pēc tam “paritātes pārbaude”.

OddSum = OddSum + Skaitlis ‘nepāra skaitļu summas uzkrāšanās

OddStr = OddStr & Skaitlis & ”

Beigas Ja

Cilpa

"izdrukājiet virkni ar nepāra skaitļiem

MsgBox prompt:=”Nepāra skaitļi: ” & OddStr

Beigt apakš

Do...Cilpas kamēr paziņojumsparedzēts organizēšanaicilpa ar pēcnosacījumu. Stāvoklis tiek pārbaudīts pēc tam, kad cilpas pamatteksts ir izpildīts vismaz vienu reizi. Cikls turpina savu darbu līdz<условие>paliek patiess. Veiciet... Formatējot cilpu:

Dariet<блок операторов>Cilpa, kamēr<условие>

Saraksts 3. Cilpa ar pēcnosacījumu

Uzdevums: izveidojiet programmu spēlei “Uzmini numuru”. Programmai jābūt nejaušai

' veids, kā ģenerēt skaitli diapazonā no 1 līdz 1000, lietotājam ir jābūt

"Uzmini šo skaitli. Programma parāda mājienu par katru ievadīto numuru

““vairāk” vai “mazāk”.

Apakšparaugs8()

Randomize Timer “inicializē nejaušo skaitļu ģeneratoru

Dim msg As String ‘ ziņojuma virkne

Dim SecretNumber Tik ilgi, UserNumber kā variants

Sākt: SecretNumber = Round(Rnd * 1000)' datora ģenerēts numurs

UserNumber = tukšs lietotāja ievadītais numurs

Do' spēle

Izvēlieties True

Case IsEmpty(UserNumber): msg = "Ievadiet numuru"

Case UserNumber > SecretNumber: msg = "Pārāk daudz!"

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

Beigu atlase

UserNumber = InputBox(prompt:=msg, Title:="Uzmini numuru")

Cilpa, kamēr lietotāja numurs<>Slepenais numurs

'pārbaude

Ja MsgBox (“Atskaņot vēlreiz?”, vbYesNo + vbQuestion, “Tu uzminēji!”) = vbYes Tad

Iet uz sākumu

Beigas Ja

Beigt apakš

Cilpas darīt līdz... cilpa un darīt... cilpa līdz ir iepriekš apspriesto nosacījumu cilpu inversijas. Kopumā tie darbojas līdzīgi, izņemot to, ka cilpas pamatteksts tiek izpildīts, ja nosacījums ir nepatiess (t.i.<условие>=Nepatiesi). Darīt līdz... Cikla formāts:

Darīt līdz<условие> <блок операторов>Cilpa

Darīt... Cikla līdz cilpai formāts:

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

Cilpa līdz<условие>

Praktiskais uzdevums:Pārrakstiet programmas 10. un 11. sarakstā, izmantojot apgrieztās cilpas paziņojumus.

Loop While...Wend attiecas arī uz nosacījumu cilpām. Šis operators pilnībā atbilst Do While... Loop struktūrai. Kamēr...Wend cilpas formāts:

Kamēr<условие>

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

Wend

Šī operatora atšķirīga iezīme ir neiespējamība piespiest pabeigt (pārtraukt) cilpas korpusu (operators Exit Do nedarbojas cilpā While ... Wend).

Cikla pārtraukšana

Lai agri pārtrauktu iterāciju un izietu no cikla, tiek izmantots paziņojums Exit. Šis operators ir piemērojams jebkurā cikliskā struktūrā, izņemot While... Wend. Vispārējā sintakse, lai izmantotu Exit, lai pārtrauktu cilpu, ir:

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

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

Iziet (par | Darīt)

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

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

Kad tiek izpildīts paziņojums Exit, cilpa tiek pārtraukta un vadība tiek nodota priekšrakstam, kas seko paziņojumam<конец_цикла>. Cilpas pamattekstā var būt vairāki Exit paziņojumi.

4. saraksts. Piespiedu izeja no cilpas

Apakšparaugs9()

Ja i = 1 līdz 10000000

Ja i = 10, tad Exit For ‘ izejiet no cilpas, kad skaitītājs sasniedz 10

Tālāk

Nodarbība no sērijas: “ Programmēšana programmā Visual Basic.NEN skolēniem"

Jūs esat iepazinies ar ComboBox vadīklu.
Šajā nodarbībā mēs turpināsim Visual Basic.Net valodas operatoru izpēti, pievēršoties cilpas operatoriem.
Ciklisks algoritmiskās struktūras ir trīs veidi:

  1. skaitītāja cilpas, kurās tiek izpildīts cilpas korpuss noteiktu summu vienreiz;
  2. cilpas masīvu vai kolekciju apstrādei;
  3. nosacījuma cilpas, kurās cilpas pamatteksts tiek izpildīts, kamēr nosacījums ir patiess (vai līdz nosacījums kļūst patiess).

Šajā nodarbībā aplūkosim cilpas operatoru ar skaitītāju (For . . . Next). Rakstīsim projektu, izmantojot šo operatoru.

Cikls ar skaitītāju Par. . . Nākamais t lieto, ja ir iepriekš zināms, cik atkārtojumu ir jāveic.

Bloku diagramma

Operatora vispārīgs skats

Skaitītājam = sākuma vērtība līdz beigu vērtībai cilpas pamatteksts Nākamais [skaitītājs]

Operatora sintakse ir šāda: rinda, kas sākas ar atslēgvārdu For, ir cilpas galva, un rinda ar atslēgvārdu Next ir cilpas beigas, starp tām ir paziņojumi, kas ir cilpas pamatteksts.

Algoritms operatora For izpildei. . . Tālāk

  1. Skaitītāja mainīgā vērtība ir iestatīta vienāda ar StartValue.
  2. Stāvokļa skaitītājs ir pārbaudīts<= КонЗнач
  3. Ja nosacījums ir izpildīts, tiek izpildīts cilpas pamatteksts. Skaitītāja mainīgo maina soļa vērtība: Skaitītājs = Skaitītājs + solis.
  4. Kad mainīgais Counter sasniedz vērtību ConValue, cilpa iziet un tiek izpildīti šādi paziņojumi.

Programmētājs var organizēt priekšlaicīgu iziešanu no cilpas, izmantojot konstrukciju Exit For. Šajā gadījumā cilpa tiek automātiski izieta un vadība tiek nodota nākamajai komandai pēc cilpas.

Projekts "Ienākumi no depozīta"

Uzrakstiet projektu, kas aprēķina ienākumus no depozīta un nodrošina vienkāršo un salikto procentu aprēķinu. Vienkāršie procenti tiek uzkrāti depozīta termiņa beigās, saliktie procenti tiek uzkrāti katru mēnesi un tiek pieskaitīti sākotnējai depozīta summai, un nākamajā mēnesī tiek uzkrāti procenti par jauno summu. Ieteicamā forma ir parādīta attēlā.

Izpildes tehnoloģija

Šajā apmācībā tika parādīts, kā izmantot For...Next cilpu, lai atkārtotu kodu noteiktu skaitu reižu.

Tiek izsauktas visas procedūras darbības, kas tiek atkārtotas noteiktu skaitu reižu vai līdz brīdim, kad ir izpildīts vai nav izpildīts kāds nosacījums cikls .

Tiek izsaukts visu cilpas struktūrā ietverto paziņojumu izpildes process cilpas iterācija.

Tiek izsauktas cilpas struktūras, kas vienmēr izpilda noteiktu skaitu reižu cilpas ar fiksētu atkārtojumu skaitu. Cita veida cilpas struktūras atkārtojas mainīgu skaitu reižu atkarībā no dažu nosacījumu kopas. Tādus ciklus sauc nenoteikti cikli.

Tiek izsaukts paziņojumu bloks, kas atrodas starp cilpas sākumu un beigām "cilpas korpuss".

Vienkāršākā cilpas struktūra ir fiksēts cikls .

Par..Nākamā cilpa

Sintakse

Par skaitītājs = Sākt Uz Beigas
Paziņojumi
Nākamais [ skaitītājs]

Skaitītājs — jebkurš VBA skaitliskais mainīgais
Sākt — jebkura skaitliska izteiksme, kas nosaka skaitītāja mainīgā sākotnējo vērtību
Beigas — skaitliska izteiksme, kas nosaka skaitītāja mainīgā galīgo vērtību


Pēc noklusējuma VBA palielina mainīgo skaitītājs pa 1 katru reizi, kad paziņojumi tiek izpildīti cilpā. Varat iestatīt citu vērtību ( SterSize- jebkura skaitliska izteiksme), ar kuru tas mainīsies skaitītājs.

Atslēgvārds Tālāk norāda VBA, ka ir sasniegts cilpas beigas. Izvēles mainīgais skaitītājs pēc atslēgvārda Tālāk jābūt vienam un tam pašam mainīgajam skaitītājs, kas tika norādīts pēc atslēgvārda Par cilpas struktūras sākumā.


Tālāk ir sniegts vienkāršākās cilpas saraksts Par..Nākamais, kas saskaita skaitļu summu no 1 līdz 10:



Un tagad divi cikla varianti Par..Nākamais izmantojot citu cilpas soli, nevis vienu:



Pievērsiet uzmanību! Samazinot cikla skaitītāju Par..Nākamais cilpa tiek izpildīta tik ilgi, kamēr skaitītāja mainīgais ir lielāks vai vienāds ar galīgo vērtību, un, kad cilpas skaitītājs tiek palielināts, cilpa tiek izpildīta tik ilgi, kamēr skaitītāja mainīgais ir mazāks vai vienāds ar galīgo vērtību.

Cikls Katram..Nākamais

Cikls Katram..Nākamais neizmanto cikla skaitītāju. Cikli Katram..Nākamais tiek izpildīti tik reižu, cik elementi ir konkrētā grupā, piemēram, objektu kolekcija vai masīvs (par to tiks runāts vēlāk). Citiem vārdiem sakot, cikls Katram..Nākamais tiek izpildīts vienu reizi katram elementam grupā.

Sintakse

Katram Elements In Grupa
Paziņojumi
Nākamais [ Elements]

Elements — mainīgais, ko izmanto, lai atkārtotu visus konkrētas grupas elementus
Grupa ir kolekcijas objekts vai masīvs
Paziņojumi - viens, vairāki vai nav VBA paziņojumi (cilpas pamatteksts).