Zanke VBA (1. del). Ukazi za organiziranje ciklov

Algoritem za cikel For….Next je prikazan na sl. 5.28.

števec – naj bo številska spremenljivka v VBA, jo poimenujte spremenljivka tipa Integer ali Long.

Začetek - naj bo izražena številčno in pomeni vrednost storža spremenljivke Counter.

Konec - Številski izraz, ki označuje končno vrednost za spremembo števec .

Izjave - En ali več kot en operater. Ti operaterji tvorijo telo cikla. VBA izvleče kožo iz teh operaterjev med ciklom kože.

Ključna beseda Naslednji

Counter=counter+StepSise

9.28. Algoritem za zanko For ...

Ključna beseda Naslednji Obvesti VBA o tistih, ki so dosegli konec zanke. Spremembe števca za ključno besedo Next ni treba spremeniti v spremembo števca, ki je bila podana za ključno besedo For na začetku strukture zanke.

Sintaksa:

Za števec = od začetka do konca

Med vikonijskim ciklomZaNaslednji VBAnajdi takole:

Pomen je podan, predstavljen zvezda , spremenljiv Z teta .

Konfigurira vse operaterje, predstavljene za pomoč Izjave , doki so izven dosega ključne besede Naslednji . Ključna beseda Naslednji Prikaže VBA tiste, ki so dosegli konec zanke.

Spremenite spremembo Z teta po količini StepSize (če je vključena neobvezna beseda Step) Če Step ni podan, VBA poveča števec za 1.

Obrnite se na začetek cikla in natančno izenačite vrednost spremembe Z teta Iz vrednosti, ki jih predstavlja End. Kaj je pomen Z teta manjša vrednost Konec , VBA nadaljuje s prvim stavkom za ključno besedo Naslednji .

9.2.4. Predstavitev in uvedba eno- in dvosvetovnih nizov

Masiv (niz) – to je zbirka sprememb, kot so glavna imena in osnovni tip. Matrika je ročni način shranjevanja številnih povezanih podatkovnih elementov v enem vsebniku za večjo enostavnost in učinkovitost programiranja. Vsi podatkovni elementi, ki so shranjeni v matriki, so zaradi istega tipa.

Matrika vam omogoča shranjevanje in obdelavo najrazličnejših podatkovnih elementov z eno samo spremembo. Poleg spreminjanja števila različnih delov, ki jih je treba spremeniti, je druga glavna prednost nizov vicor ta, da lahko uporabite cikle vicor za enostavno obdelavo nizov ohlapnih elementov. Poleg matrike in strukture zanke (imenovane For....Next) lahko napišete majhno število operatorjev, ki obdelujejo veliko količino podatkov. Vikonannya teh ukazov iz vikoristanny drugih sprememb lahko napiše na stotine operaterjev.

Velikost masiva

V jezikovnem programiranju obstaja vrsta nizov z enim svetom in obogatenih svetov, od katerih nekateri jasno opisujejo preproste, drugi pa kompleksne objekte.

Enodimenzionalni masivi

Zadnjico enodimenzionalnega niza prikazuje tabela št. 9.9.

Tabela št. 9.9

Program ima oštevilčenje z ničelno osnovo.

Za dostop do podatkov, ki so shranjeni v elementu matrike, podajte ime matrike, ki mu sledi vodilna številka, ki se imenuje indeks elementa. Indeks je nameščen blizu okroglega loka. Na primer, ker se matrika v tabeli št. 1.1 imenuje DoubleArray, operater spremenljivki DoubleAny dodeli številko 45.

DoubleAny = DoubleArray (3)

Za ta operator je številka 3 indeks matrike. Medtem ko se številčenje elementov začne od nič, je element, na katerem je uporabljen operator, pravzaprav četrti element DoubleArray.

Pri izbiri operatorja DoubleArray VBA izbere vrednost 45 in te vrednosti shrani v spremenjeni DoubleArray.

Ta operator lahko uporabite med shranjevanjem podatkov iz matrike:

DoubleArray (5)=12.

Ko je ta stavek dodan, VBA vrednost 12 postavi v vrednostni element matrike in nadomesti vodilni element elementa.

Za predstavitev različnih seznamov podatkov je treba uporabiti enodimenzionalne nize.

Bogati svetovni masivi

Če je treba oddati podatkovne tabele z organizacijo podatkov v obliki vrstic in stolpcev, za katere obstajajo bogati nizi.

V dvodimenzionalnem nizu naslovov je središče preobleke sestavljeno iz dveh števil: številke vrstice (prvi indeks) in številke stolpca (drugi indeks). V VBA lahko ustvarite nize do 60 dimenzij.

Če se število elementov v matriki ne spremeni, se taka matrika imenuje statična.

Statični in dinamični nizi

Ker lahko programi VBA kadar koli spremenijo številne elemente v matriki, se takšne matrike imenujejo dinamične. Za spreminjanje velikosti dinamičnega polja se uporablja operator ReDim.

VBA vzdržuje rezervirano pomnilniško območje za vse elemente v matriki, dokler je vrsta matrike spremenjena. Takšne matrike imenujemo statične, ker se število elementov v matriki ne spreminja.

OperaterMožnost Osnova

Naj bo VBA vikoristična matrika z ničelno osnovo. Operator Option Base vam omogoča, da določite 0 ali 1 kot začetno številko za indekse v matriki. Operater Yaksho Možnost Osnova ne spremeni, VBA začne številčiti indekse od 0 (privzeto). Preden razveljavite katero koli spremenljivko, konstanto ali proceduro, morate postaviti stavek Option Base v območje za razveljavitev modula. Stavka Option Base ne morete postaviti sredi postopka. V modulu imate lahko več kot en stavek Option Base.

Sintaksa:

Možnost Osnova 0|1

Osupli masivi

Omamljen od masiva za pomoč operaterja Dim Morda ima žaljivo sintakso.

Sintaksa:

DimVarName()

Dim VarName (zgornji, zgornji]….)[ Kot vrsto],

VarName – naj bo ime za matriko, ki ustreza pravilom VBA za poimenovanje identifikatorjev.

Subscripts – vimir massivu.

Kot Vrsta - vrsto podatkov.

Lower – spodnja meja vrednosti indeksa.

Zgornja – zgornja meja vrednosti indeksa.

Vrsta – vrsta podatkov

Če tip izpustite, so vsi elementi matrike tipa Variant. VBA inicializira elemente številskih nizov z ničlami ​​in elemente nizov vrstic s praznimi vrsticami.

Dim str_array (1 do 100) Kot niz

Dim variant_array()

Dim str_Množenje (0 do 15, 0 do 15) kot niz

Vikoristannya masivіv

Za dostop do elementa matrike morate podati ime matrike, ki mu sledi vrednost indeksa, ki je postavljena na okroglo roko.

Razširitev na element matrike lahko vključuje žaljivo sintakso.

Sintaksa.

arrayName(validIndex1, ….)

validIndex – ime matrike.

validIndex1 – veljavna vrednost za indeks prve izbrisane matrike.

validIndex2 – veljavna vrednost indeksa druge spremenjene matrike.

Potrebno je dodeliti vrednosti indeksa za matriko, urejeno s preobleko, ko je urejena preobleka elementu matrike.

Predstavitev in uvajanje enodimenzionalnih nizov

Pri vnosu enodimenzionalne matrike je potrebno zaporedno vnesti 1., 2. itd. elementi masiva, podobno se približajo uri izločitve. Za vstop in izstop iz polja je potrebno organizirati cikel. Najenostavneje je uporabiti algoritem za uvajanje in odstranjevanje enodimenzionalnega niza v nori zanki.

Algoritem za uvedbo prikaza enodimenzionalnega polja je prikazan na sliki 5.29.

Postopek dešifriranja je opisan spodaj.

Sub Massiv() – ime postopka.

Dim Mas (5) As Integer - izglasovana enodimenzionalna matrika s 5 elementi, vrsta števil je cilji.

Dim s As String – izglasoval spremembo dela za končni prikaz podatkov iz matrike v pogovornem oknu. Kot niz – vrsta podatkov za shranjevanje.

For i = 1 To 5 – postopek v prvem ciklu For....Next, sprejme cela števila od 1 do 5 in jih vnese v matriko.

Mas(i) = InputBox(i) – vnos celega števila za i-ti element.

Naprej – prehod na drug cikel (elementi niza so postavljeni v vrsto in prikazani na zaslonu v pogovornem oknu z uporabo operaterja MsgBox).

Za i = 1 do 5 – elementi v vrstici od 1 do 5.

s = s & Mas(i) & ";" - Oblikovanje vrste elementov polja. Masiv je urejen v eni vrsti. Elementi niza so ločeni s simbolom ";".

MsgBox s – prikazano prej kot vneseno polje.

Sl.5.27. Algoritem za uvajanje-umik enodimenzionalnega

majhna 9.29. Algoritem in postopek za uvedbo in prikaz enodimenzionalnega polja

Uvedba masiva dveh svetov

Algoritem in postopek za uvedbo in prikaz dvodimenzionalnega niza predstavitev na sliki 5.30.

Opis postopka:

Sub Massiv() – ime postopka

Obstaja veliko ljudi, ki se ne strinjajo s tem postopkom:

Dim Mas (5, 5) Ker je bilo napovedano celo število - dvojno polje 5 stolpcev in petih vrstic, je vrsta števil cilji.

Dim s As String – izglasoval spremembo dela za končni prikaz podatkov iz matrike v pogovornem oknu. Kot niz – vrsta podatkov za shranjevanje

Naprej i - zaključena operacija dodeljevanja sprememb

Predstavitev elementov uganke o računalniku:

Za i = 1 do 5 – vnos se začne od prvega elementa prve vrstice, nato drugega itd.

Za j = 1 do 5 do konca prve vrstice, nato od prvega elementa druge vrstice itd.

Mas(i,j) = InputBox(i,j) – operator za vnos elementov polja v uganko o EOM

majhna 9.30. Algoritem in postopek za uvedbo in prikaz dvodimenzionalnega polja

Algoritmi po množičnem vrstnem redu

Kot zadnjico bomo vzpostavili algoritem in postopek za razvrščanje enodimenzionalne matrike z metodo "bulbashka".

Prikaz elementov vnesenega polja iz pomnilnika EOM:

Pri i = 1 do 5 – postopek poteka na enak način kot pred uvedbo

s = s & Mas (i,j) & “; ”

s = s & Chr (13) – premik vrstice (ni prikazan v eni vrstici, ampak v več vrsticah, kot vnesena matrika)

Naprej i – izpolnitev operatorja Za...

MsgBox s – prikazano prej kot vnesena matrika v pogovornem oknu

End Sub – zaključek postopka.

Cikel je algoritemska struktura, Za morebitno dodatno pomoč je implementirana velika ponovitev bloka operaterjev.

Operater za cikel z zdravnikom (Za ... naprej)

Ukaz For...Next vam omogoča ciklično vnašanje navodil (operatorjev) določeno število krat. Sintaksa navodil:

Za zdravnik = številka Za konec_pomena

[navodila]

[navodila]

Naslednji [ zdravnik]

Parameter zdravnik– to je številska vrednost, ki samodejno spremeni svojo vrednost za vrednost krokodil Po kožnem ciklu bom ponovil. Cikel se zaključi s pikami, pikami zdravnik£ konec_pomena s pozitivno vrednostjo parametra krokodil do takrat, do takrat zdravnik³ konec_pomena z negativno vrednostjo parametra krokodil. Na ta način se cikel ne konča vsakič zaradi pozitivnega pomena cikla častna_vrednost bolj nižje konec_pomena. Kot parameter Step krokodil opustitve, potem se za obrazložitev povečanja spremembe zdravilec spoštuje enako 1.

Stavek Exit For konča cikel zanke "pre-line" in prenese nadzor na operaterja, ki sledi stavku v zanki. Izhod za mora biti postavljen v miselni operator, na primer:

če Umova Nato Izhod za

Opomba. zdravnik Za sintakso stavka For je parameter

- aritmetična sprememba ne glede na vrsto, je še vedno bolje vikorystuvat celotno vrsto spremembe, ker del vrednosti spremembe vrste govora pomeni smrt. To je posledica načina, kako računalnik shranjuje številke.

Zadnjica 1 10 Spoznajte vsoto prvih naravna števila:+ 10 S = 1 + 2 + 3 + …

. Delček programa:

Dim I kot Integer, S kot Integer " S=0

Ponastavljiva vrednost spremenljivke S " Za i = 1 do 10
Kop do cikla. Nastavite končne in končne vrednosti

"parameter za cikel. Trajanje cikla je 1. " S = S + i
Operater je dodeljen koži

Vikonanny cikel, v tej aplikaciji 10-krat " Naprej jaz

Konec cikla. Vrednost parametra cikla se poveča za eno.

Za ta del programa se cikel konča točno 10-krat.

Zadnjica 2

V 1. stolpec delovnega lista (začenši od 2. vrstice) vnesite vrednosti v območju od 0 do 3,2 z omejitvijo 0,4.

Javni podzavihek()

Dim x kot eno, i kot celo število

Za x = 0 do 3.2, korak 0.4

Če želim, da je interval dowzhin natančno deljen z 0,4, je rezultat v delovnem loku videti takole:

Zakaj bi se trudil?

1. Končne vrednosti lahko malo povečate; v tej aplikaciji namesto 3.2 napišite 3.201.

2. Izračunajte število ponovitev cikla in za celotno vrsto napišite cikel.

V tem razdelku programa lahko vidim:

Javna podtabela1()

Dim x kot eno, i kot celo število, n kot celo število

n = CInt((3,2 - 0)/0,4)

Za i = 0 do n 1. korak

Celice (i + 2, 1) = x

Operator zanke Za vsak ... Naprej

Cikel Za vsak … Naslednji vam omogoča, da ponovite vsako skupino navodil za element kože iste družine. To navodilo ima naslednjo sintakso: Za vsakogar element noter

[navodila]

[navodila]

Naslednji [ Za vsakogar]

Parameter Za vsakogar skupina noter– dragocen, saj je element družine in masiva. Prepir Za vsakogar- Imam niz ali družino. Navodila je treba izpolniti samo enkrat za vsakega člana skupine. To navodilo je uporabno, ker vam ni treba vnaprej vedeti, koliko elementov se prilega matriki ali družini. Zminna

- aritmetična sprememba ne glede na vrsto, je še vedno bolje vikorystuvat celotno vrsto spremembe, ker del vrednosti spremembe vrste govora pomeni smrt. To je posledica načina, kako računalnik shranjuje številke.

Za tip Variant je kriva mati.

Povprečje javne funkcije (razpon kot obseg) kot dvojno

Dim Element kot različica

Dim Suma kot dvojnik

Zatemni količino kot celo število

Količina = 0

Za vsak predmet v obsegu

Suma = Suma + Element

Količina = Količina + 1

Naslednji element

Sredina = vsota / količina

Zastosuvannya. V razponu videnih povprečij so krive številke. Številke v praznih sredinah so enake 0. Besedilo v sredini je dodano sredini.

Najbolj predelani operatorji so If ... End If, Select ... Case, For ... Next, For Each ... Next - skupina osnovnih navodil, ki spreminjajo vrstni red ukazov. Ključna navodila lahko vstavite eno v drugo v poljubnem zaporedju.

V tej lekciji si boste ogledali robota s ciklom Za v VBA. Primer robota z zanko For, zato bo prikazan primer ustvarjanja Excelovih formul s pomočjo makrov.

Cikel Za sledi načelu zdravilca. Za stagnirati v teh situacijah, če je treba ista dejanja v prihodnje čim večkrat ponoviti. Na primer cikel Za pogosto vikorystvoyatsya med uro branja nizov.

Cikel Za Lahko ima naslednjo sintakso:
Za zdravnik = cikel storža Za konec cikla [korak krokodil]
skupina operaterjev, timov in drugih.
Izhod za
Naslednji zdravnik

  • "zdravilec" - spremenite, ko se spremeni v indikacije "Krok."Če časovna omejitev ni določena, bo za čiščenje poskrbela samo ena oseba.
  • "storž v cikel", "konec cikla" -Številke se spremenijo tako, da označujejo spodnjo in zgornjo mejo zdravnika. Cikel se začne šele, ko "zdravnik" >"konec cikla" ( chi, yakscho cikel vorotny, tobto. s krokodilom -1, torej "zdravilec"< "konec cikla").
  • Izhod za – ukaz primus skodelice ciklu. Težko se je zatakniti v teh situacijah, če pesem začne teči, potem pa je treba preklicati ukaze v ciklu ali se izogniti kazni.

Oglejmo si nekaj zadnjic cikla vikoristana Za. V tem ciklu je potrebno pogosto piti.

- aritmetična sprememba ne glede na vrsto, je še vedno bolje vikorystuvat celotno vrsto spremembe, ker del vrednosti spremembe vrste govora pomeni smrt. To je posledica načina, kako računalnik shranjuje številke.
Dana sta dva stolpca C in E, napolnjena s številkami:

Številke v stolpcu C je treba združiti s številkami v stolpcu E za prihajajoče naročilo:
C2+E21, C3+E20, …, C21+E2. Rezultat vyvesti stovpets D yak formula tobto. Zamenjava zneska za rezultat bo "=C2+E21".

Koda za makro je videti takole (kje napisati kodo je berljivo):

Sub Loop_For()
"konstanta pove ciklu, naj doseže neko vrednost med cikli
Konst n = 21
Za i=2 Za n
Ustvarite niz formul in jih shranite v nakupovalno vrečko
Celice(i, 4) = "=C" & CStr(i) & "+E" & CStr((n - i) + 2)
nadaljevanje, če se konča v ciklu
Naslednji jaz
Program za kodiranje Reshta
End Sub

Poglejmo kodo:

  • Konst n = 21 – opis konstante n z vrednostmi 21, torej. število vrstic, skozi katere mora iti cikel Za;
  • Za i=2 Za n - i zdravnik, ki bo prešel na 1. kožni prehod cikla. Zdravljenje se začne pri 2 in konča pri i>n;
  • Celice (i, 4) - sredina videl arkusha, i je številka vrstice, 4 je številka vrstice, ki je rezultat. Upoštevajte, da naš zdravnik navede številko vrstice Excelovega loka;
  • naslednji i- operater zapre zanko in premakne indikator na Za. Vse je vmes Zaі Naslednji konvoji na kolesu;
  • CStr- funkcija, ki pretvori število v besedilo.

Na sredini dodelimo formulo, ki jo ustvari naslednji rang "=C" & CStr(i) & "+E" & CStr((n – i) + 2). Znak & pomeni "lepljenje" simbolov in vrstic. Rezultat prikazuje formulo "=Сn+E((n - i) + 2)", kjer je n = 21, i je zdravnik.
Strašljivo?

Samo vprašanje časa je :)

Za ta del programa se cikel konča točno 10-krat.
To je vse. Po zaključku makra zavrnemo ofenzivni korak (vizije), v središču kože pa formulo:

Sub Zdaj pa poglejmo cikel z določenim časovnim okvirom. Po razširitvi prejšnjega makra smo odstranili tri stolpce, zdaj moramo izbrati D iz razdelka E in vnesti formule iz razdelka F. Predhodna makro koda:
Konst n = 21
Za Loop_For_with_croc() Za 2 korak -1
i = n CStr Celice(i, 6) = "=E" & CStr(i)&"-D"&
Naslednji jaz
End Sub

(jaz)
V tej fazi je vse enako, le cikel zdaj "teče" ne od 2, ampak od 21 do 2 s korakom (Step) -1.

Cikel Za Rezultat Vikonannyja je odvrnjen z ofenzivo:

VBA nima ene same zanke. Spodaj si bomo ogledali številne možnosti zanke, brez katerih ne morete storiti pri pisanju makro ukazov v Excelu.

ZaSintaksa operaterja:= zdravnik storžTo[korakKineti]

Krok

NaslednjiSintaksa operaterja:

Operatorji_blokov

Za Tukaj je napisano: Za

Za(obov'yakovke ključna beseda VB); Za

Krok prej – en ali več operaterjev, kot se imenujejo

celoten cikel; zdravnik -

Celotna stvar je spremenljiva, ker je odvisna od števila opravljenih ciklov; Konec storža -

korak začetni in končni pomen zdravnika;

croc (ključna beseda VB); Krok – Kinetičas za zamenjavo zdravnika; lahko ste negativni; Parameter ni nujno prilagodljiv, ker je vrednost enaka 1, lahko korak

nižje;

Naprej – žaljivo (ključna beseda obov'yazkov VB, konec operaterjevega snemanja cikla). Pomen zdravnika(konec storža) mogoče buti numerične konstante celega ali govornega tipa, ki so lahko negativna ali pozitivna števila. Da telo vsaj enkrat sklene krog, morda Cob ≤ Kinets, Kineti yakscho > 0, to Cob ≤ Kinets, Kineti< 0. Cob ≥ Kinets, Sintaksa operaterja:>Kako hitro se bo pojavilo? Cob ≤ Kinets, zdravnik< Конец), Kineti ( Cikel se bo končal. Yakshchostorž = Kineti,

cikel se konča enkrat; .Zadnjica 9.1Računske funkcije = 2 – 1.5 YSinx

pri spreminjanju X z mejo 0,2 v območju.

Delček programa za izračun Y in zamenjavo argumenta X in funkcije Y:

Za X = 0 do 2,4 Korak 0,2

Da bi razumeli, kako deluje ta cikel, ustvarimo program, podoben ciklu, ki ga je ustvaril operaterPojdi do, oznaka, operaterčePotem.

M1: X = X + 0,2

Če X<= 2.4 Then

Za X = 0 do 2,4 Korak 0,2

Poglejmo robotove programe. Prva oblika je nestandardna, saj ne spada v cikel. Cikel se začne po prvem prenosu kontrole GoToM1 na oznako M1. V seriji z oznako M1 se argument X poveča za vrednost 0,2 in takoj se izvede preverjanje, tako da nova vrednost končne vrednosti X ne preseže 2,4. Če se ne spremeni, se postavitev Y ponovi z novim X. Nato se znova zaključi operator GoToM1 - vrstica se prenese v vrstico z oznako M1. Ponovite (ciklirajte) struktura Y se bo končala takoj, ko se X premakne 2.4.

Zdaj je program z If posodobljen z zanko For ... Next.

Delček programa za izračun Y in zamenjavo argumenta X in funkcije Y:

nadomešča dve vrstici

M1: X = X + 0,2

Če X<= 2.4 Then

Preostali dve vrstici same kode se končata v zanki For, vendar nič drugega. Kodirali smo jih v vrstico z For... Vrstica kodiranja GoTo M1 z besedo Next X (dobesedno: prihajajoči X). Zasnova je kompaktna.

Ko izvajate cikel Za...Naslednji, se morate naučiti uporabljati cikel zdravilca za različne naloge. Če želite ugotoviti, kako uporabiti zdravilca za najpomembnejšo nalogo, potrebujete opravite analizo izjave o problemu, ugotovite vzorce sprememb določenih parametrov problema.

Zadnjica 9.2 . Vrednost vsote elementov je nizka: .

Delček programa:

S = 0 'S - vsota vrstice

Za i = 1 Do 16 ' doktor i - to je pasica strela

S = S + 1/i ' akumulirani znesek

Natisni "S = "; S ‘videdennya sumi S na obrazcu

Pri kožnih simptomih zdravilo ivirase 1/i zaporedno tvori elemente v vrsti, začenši z 1.

Zadnjica 9.3 . Izračun vsote na več elementov
.

Delček programa:

S = 0 'S - vsota vrstice

Za i = 1 Do 18 ' numericist i - numericist

S = S + i/(i + 1) ' imenovalec je za 1 večji od imenovalca

Natisni "S = "; S ‘videdennya sumi S na obrazcu

Zadnjica 9.4 . Znesek za izračun: 5 + 8 + 11 + … + 32 + 35

Delček programa:

S = 0 'S - vsota vrstice

Za i = 5 do 35 3. korak aritmetika obsedeno _

napredujte z znakom 3

Natisni "S = "; S

Zaloga 9.5. Izračunska vsota za dani x:

Analiza podatkov pokaže, da se stopnja pri X spreminja od 1 do 10. V tem primeru je število koeficienta pri X večje za stopnjo za 1, predznak pa za 2. Vrednost stopnje se oblikuje po mnenju dodatnega zdravnika i. Potem lahko sestavite program, kot je ta (fragment):

S = 1 'S - vsota vrstic

Za i = 1 do 10 kot zdravnik i se stopnja spremeni pri X

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

Natisni "S = "; S

CikliZaNaslednjiuporabnik priuvod, uvod іvzorčni nizi .

Zadnjica 9.6. Vnos in prikaz vrednosti elementov polja (N).

Delček programa:

' Izpustimo dodano vrednost spremenljivke N, _

vnesite na obrazcu v besedilno polje txtN:

B(i) = InputBox("Vhodni element B(" & i & ")", _

"Uvod v niz B(" & N & ")")

Natisni " "; B(i);

funkcija InputBox() prikaz pogovornega okna z gumbom za zapiranje, določenimi obvestili, vnosnim poljem, gumbi v redu,Vidmina, nastavite naslov (ali brez naslova). Če vnesete številko 12 - velikost matrike je N, bo v naši aplikaciji, ko se prvič prikaže, videti takole:

Yak bachimo, upoštevajte Vnesite element (1) V besedilno polje vas prosi, da vnesete vrednost enega elementa. Pojavi se 12-krat in pusti maso 12 elementov. To izhaja iz naslova obrazca. Indeks elementa (i) za zahtevanega se bo spremenil iz 1 v 12.

Če je treba na obrazcu prikazati samo vrednosti elementov polja (N), bo telo zanke sestavljeno iz enega operaterja:

Ponavljanje elementov matrike za izvajanje določenih dejanj zahteva tudi dodatni operater zanke For...Next.

Vodilno oporniki za obdelavo enodimenzionalnih nizov.

Zadnjica 9.7 . Vrednost največjega elementa v matriki (M).

Vključno z vnosom semenskih podatkov in prikazom rezultatov bomo na kratko opisali algoritem:

    Recimo ime Bmax, ki vsebuje vrednost prvega elementa matrike, in spremembo Imax, ki je 1 – indeks prvega elementa matrike.

    V zanki s pomočjo operatorja For...Next se pregledajo vsi elementi matrike, začenši z 2. Operator vikoryst If ... Potem izenači njihove vrednosti z vrednostmi, ki so shranjene v spremenljivki Bmax.

    Če se izkaže, da je vrednost elementa matrike večja od vrednosti Bmax, se Bmax dodeli vrednosti elementa, vrednost Imax pa je indeks elementa matrike.

Po končanem ciklu bo spremenljivi Bmax vrednost največjega elementa, Imax pa njegov indeks (število).

Program je del algoritma.

Bmax = B(1): Imax = 1

Če je B(i) > Bmax, potem je Bmax = B(i): Imax = i

Zadnjica 9.8. Kar se tiče količine, ustvarim toliko pozitivnih elementov v masivuD(M).

Zminni: S, P, K – očitno seštevek, seštevek toliko pozitivnih elementov.

Algoritem tak pomen:

    Spremenljivima S in K je dodeljena ničla, spremenljivemu P je dodeljena 1. Praviloma se spremembe, kjer se kopiči količina, tukaj Sik, ponastavijo pred ciklom, spremembe, v katerih je izračunana trdnost, pa so dodeljene 1.

    Z dodatno zanko For ... Next preletimo vse elemente matrike in preverimo, kateri so pozitivni (D(i) > 0).

    Če se izkaže, da je element pozitiven, potem njegovo vrednost prištejemo vrednosti vsote S in v to spremembo shranimo novo vsoto. Sprememba se pomnoži s pozitivno vrednostjo elementa in se tudi shrani v spremembo. In spremembi K se doda 1 in iz iste spremembe se shrani nova vrednost

Program Ta del algoritma izgleda takole:

S = 0: P = 1: K = 0

Če je D(i) > 0 Potem

S = S + D(i) tako se izračuna akumulirani znesek _

pozitivne vrednosti elementov v matriki D(i)

P = P*D(i) ‘ vrednost za ustvarjanje pozitiv

' elementi niza

K = K + 1 ' ta operater se imenuje CHILINATOR, tukaj je

' pomeni število pozitivnih elementov v nizu

Zadnjica 9.9. Vrednost vsote, ustvarjanja, števila in povprečne vrednosti neparnih elementov v matrikiD(M).

Oglejmo si delček programa za ta namen.

S = 0: P = 1: K = 0

Če je D(i) Mod 2<>0 Potem

Ssr = S/k ' izračun povprečne vrednosti neparnih elementov

Primerjaj ta fragment s programom iz primera 9.8. Ta program je skoraj popolnoma enak prejšnjemu. Um operaterja If je bil spremenjen. Umova D(i) Mod 2<>0 pomeni, da iščemo elemente niza D(i), ki so deljivi z 2, torej neparne elemente. Ker je mentalno preverljiv D(i) Mod 2 = 0, bomo izbrali parne elemente niza.

Očitno je padel na Mod povzroči presežek v podpolju v celih številih. Na primer, po spremembi operatorja d = 34Mod4 bo d enak 2. Zato je za izbiro elementov matrike, ki so deljivi s 4, potrebno preveriti vrednost D(i) Mod 4 = 0. Vrednost bo podoben elementom , večkratniki drugih števil. Namesto 4 bodo zapisana druga števila.

Zadnjica 9.10. Snemanje elementov nizaR(N), deljivo s 5, v drugo matriko in prikaže novo matriko na obrazcu.

Drugi niz je pomemben, na primer R5(N). Velikost te nove matrike sledi je enaka izhodni, saj so lahko v mejnem primeru vsi elementi deljivi s 5.

Algoritem ukazov:

    Zdravilec k je ponastavljen. Z dodatkom operatorja v zanko For ... Next preletimo vse elemente matrike R (N).

    Element kože se preveri za večkratnost 5 z uporabo operatorja If ... Then in podmatričnega elementa v skladu z Mod.

    Če je element večkratnik števila 5, potem z dodatnim operatorjem tipa k=k+ 1 oblikujemo indeks matrike R5(N), začenši z 1, in ga zapišemo v drugo matriko -R5(N).

    Takoj ko je nič odstranjena, se na obrazcu prikaže matrika R5().

    Če je enak nič, se prikaže: "Ni elementov, deljivih s 5."

Delček programa:

Če je R(i) Mod 5 k = k + 1: R5(k) = R(i)

Če k<>0 Potem

Natisni "Ni elementov, deljivih s 5"

Zanke so lahko ugnezdene znotraj drugih zank.

Pokažimo robotu ugnezdeni cikli . Spodaj je program organiziran za prikaz vrednosti ciklov zdravljenja. Iz rezultatov izhoda i, j, k postane jasno, kako se zaključijo vhodni cikli.

Zasebni podfrmCycle_DblClick()

ScaleMode = 4 'vimiru enote - simboli

Za i = 1 do 3 'zunanja zanka

Natisni "i="; jaz;

Za j = 1 do 4 '1. gnezdenje zanke

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

Natisni "j="; j;

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

Za k = 1 do 5 '2. gnezdenje zanke

Slike obrazca (slika 1) prikazujejo rezultate prikaza obravnave vseh treh ciklov: zunanjega cikla – obravnave i, prvega ugnezdenega cikla – obravnave in drugega, najbolj notranjega cikla – obravnave. Jak Bačimo, »najmočnejši« zdravilec v zunanjem ciklu(poi) in najbolj viden - zdravilec najbolj notranjega cikla (pok).

Program se zaključi s pritiskom na levi gumb miške na obrazcu frmCicli.

CurrentX, CurrentY - avtoritete obrazca, ki nastavijo koordinate točk X, Y začetka prikaza informacij z metodo Print (div. na sliki 1, vrtenje osi X in Y na obrazcu ).

TextWidth() je funkcija, ki zasuka širino besedila, podanega kot argument funkcije.

Ugnezdene zanke zastanejo pri obdelavi dvodimenzionalnih nizov (matrike). Vendar pa lahko pri drugih nalogah poleg vnosa in odstranjevanja elementov dvodimenzionalnega niza uporabite en cikel. Oglejmo si, kako uporabiti programirano matriko.

Zaloga 9.11. Vnos in prikaz matrike (dvodimenzionalne matrike) celih številintA(N).

Lahko vnesete matriko v vrstah in v vrstah . Najenostavnejši način je v vrsticah, ki omogoča programiranje prikaza elementov polja na obrazcu takoj po njihovem vnosu.

Vnos in prikaz matrikev vrstah - fragment 1.

Dim M kot celo število, N kot celo število, i kot celo število, j kot celo število

Dim intA() As Integer 'osupljivo dinamična matrika

M = Val(txtN.Text) ‘ M – število vrstic

N = Val(txtN.Text) 'N - število ljudi

ReDim intA(M, N) As Integer ' ponovna matrika

Za i = 1 k M ' bom shranil svojo vrednost, dodal bom dokumente

'ne vključuje cikla gnezdenja j

Natisni " "; intA(i, j); visnovok v vrstah

Natisni 'prehod na uho nove vrstice

Če želite matriko vnesti po pragovih, nato zaženite cikel na zunanji strani (določi števila stolpcev) in zaženite cikel na notranji strani (določite števila vrstic).

Vnos in prikaz matrikeglede na stovpts fragment 2.

PrY = 2500: CurrentY = PrY ' PrY nastavi koordinato Y storža

prikaz prvega elementa preobleke na obrazcu

Za j = 1 To N ' j svojo vrednost shranite do konca

'ne vidim cikla vstavljanja z i

intA (i, j) = InputBox("Vhodni element intA(" & i & “,” & j & ")", _

"Vhodna matrika intA(" & M & “,” & N & ")")

Natisni zavihek (6*j); intA(i, j) ‘ visnovki po stovpts

CurrentY = PrY ‘ za prikaz prvega elementa

ofenzivna strategija

V nobenem drugem fragmentu programa se prvih 5 vrstic prvega fragmenta ne ponovi. Funkcija Tab(6 * j) vstavi glavo zaslona v vrstico (znakov), začenši na levem robu obrazca. Tukaj je več kot 2500 vrst koordinat PrY, vendar lahko izberete drugo vrednost.

Zadnjica 9.12 . Urejanje vrednosti elementov poljaV(N) za rastjo.

Obstaja več algoritmov za urejanje nizov. Poglejmo enega od njih: za dodatno pomoč pri ciklih gnezdenjaZaNaslednjiizberemo elemente, začenši od prvega do zadnjega, in kožo iz njih izenačimo z naslednjimi elementi; Če se izkaže, da je napadalni element manjši za selekcijo, jih zamenjamo na njihova mesta.

Delček programa, ki izvaja ta algoritem:

Za i = 1 do N - 1

Za j = i + 1 To N

Če je V(j)< V(i) Then P = V(i): V(i) = V(j): V(j) = P

Razložimo ta delček programa.

Po dodatnem ciklu z zdravnikom i je element V (i) izbran za poravnavo z napredujočimi elementi. Notranji cikel z zdravilcem je izbran tako, da izenači napadalni element V(j). Koruza pomeni + 1. Prvi element iz ofenzive.

Če želite zamenjati vrednosti elementov V(i) in V(j), vnesite korak spremembe P, ki takoj "želi" vrednosti enega od elementov matrike (v programu - V(i) ). Nato elementu V (i) priredimo vrednost elementa V (j), elementu V (j) pa vrednost V (i), ki se shrani v spremenljivko P. Če jo »shranimo« v vrednost V (j), potem bo koda menjave vrednosti naslednja: P = V (j): V (j) = V (i): V (i) = P. Rezultat se ne spremeni.

Ščob spraviti masiv v red Dovolj pameti je, da preverimo zapis v obliki V(j) > V(i), da znak nervoze spremenimo v drugega.

Če matrika ni številčna, ampak temelji na vrsticah in bodo vzdevki vneseni v elemente matrike, lahko s programom 9.12 seznam vzdevkov uredite po abecedi. Na desni strani so poštene neenakosti za črke abecede, ki se uporabljajo v računalnikih: A< Б < В < Г….< Я и т. д., поскольку числовые коды букв алфавита последовательно увеличиваются, начиная с А и до конца алфавита. Это же справедливо и для букв английского алфавита.

Zadnjica 9.13 . Izračun vsote pozitivnih elementov za neparne stolpce matrikeF(M, N) se ta znesek prenese na obrazec.

Programski algoritem:

    Vikorist in zunanji cikel z vrstico 2 tvorita indeks neparnih stolpcev matrike, začenši s prvim stolpcem.

    Ponastavimo vsoto S, ki je nabrala vsoto pozitivnih elementov.

    V notranji zanki se preveri predznak elementa polja.

    Če je element matrike pozitiven (> 0), izračunamo vsoto S.

    Po končani notranji zanki se na obrazcu izpiše vsota S.

Drobec programi:

Za j = 1 do N 2. korak

Če je F(i, j) > 0, potem je S = S + F(i, j)

Natisnite "Vsota denarja"; j; ":"; S ' j – stovptova številka!

Organizirati je mogoče cikle vstavljanja razvrščanje možnosti in nemogoče je razmišljati analitično. Kot rezultat iskanja se pojavijo možnosti rešitve, med katerimi je izbrana ena ali več, ki predstavljajo miselne naloge.

Zaloga 9.14. 1801 € rubljev. Koliko lahko dobite čokolade za 31 rubljev. in žemljice za 18 rubljev, bom na koncu porabil ves svoj denar.

Program:

Vsota = 1801

Vse čokolade = Suma \ 31: Vse zvitki = Suma \ 18

Za i = 1 Vsem čokoladam

Za j = 1 Za VseBulk

Cena = i * 31 + j * 18 'galalna nakupna cena

Če je cena = 1801 Potem

Tisk "Čokolada:"; jaz;

Zavihek(19); "Bulok:"; j

Razložimo program, de vikoristovu spremembo, ki se imenuje ruski.

Najprej to pomeni največjo količino čokolad ali žemljic, ki jih lahko kupite za celoten znesek. Odstranjevanje vrednosti All Chocolates and All Rolls vikorista izmenjuje število iskanj za število čokolad in zvitkov. Za vsakogar je število čokolad (i) in število žemljic (j) določilo zakonito ceno za njihov nakup. Če je zavarovalna cena 1801, potem je izbira opcije ena izmed rešitev problema.

Funkcija Tab() določa, na katerem mestu na robu obrazca bodo prikazane informacije, ki sledijo tej funkciji. Če Tab(19), potem od 19. mesta.

Program prikaže 3 možne možnosti nakupa:

Čokolada 7, žemljice 88

Čokolada 25, žemljice 57

Čokolada 43, žemljice 26

Če morate dati nedvoumno potrditev, morate oblikovati dodatno inteligenco. Na primer, "kupili smo manj žemljic in manj čokolade." Potem bo tretja možnost edina rešitev.

Obstaja veliko matematičnih problemov, ki jih je enostavno rešiti z metodo surove sile z dodatnim programiranjem ugnezdenih zank.

VBA. Organizacija ciklov.

Operatorji cikla se uporabljajo za ponavljanje dejanj ali skupin dejanj določeno število krat. Število ponovitev (iteracij v ciklu) je mogoče izračunati oz.

  1. VBA podpira dve vrsti konstrukcij zanke: Cikli z določenim številom ponovitev ().
  2. cikluse z zdravnikom Zanke z nepomembnim številom ponovitev ().

ciklov iz umivalnice Za vse vrste ciklov obstaja koncept telo na cikel, kar pomeni blok operatorjev, postavljen med začetnim in končnim operatorjem cikla. Kožna ponovitev cikla telesnih operaterjev se imenuje

ponovitev.

VBA ponuja dve osnovni strukturi za organizacijo fiksne zanke: For ... Next (zanka z zdravnikom) in For Every ... Next (zanka s ponovno obdelavo).

Operater za ... Naprej To je tipičen cikel z zdravnikom, ki opravi določeno število ponovitev. Sintaksa stavka For...Next je:

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

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

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

Zadnjica operaterja Za...Naprej.

Izpis 1. Operator za ... Naprej

‘ ZAVDANNYA: Prevedite program, ki odšteje dve števili od koristnika.

'Sešteje vsa števila v obsegu, določenem s tema dvema številoma, in nato

' prikaže nastali znesek.

Podvzorec7()

Dim i As Integer 'čistilni cikel

Dim sStart 'cob pomen zdravnika

Dim Send 'končni pomen zdravnika

Dim sSum As Long 'končna vsota

sStart = InputBox(“Vnesite prvo številko:”)

sEnd = InputBox(“Vnesite drugo številko:”)

sVsota = 0

Za i = CInt(sStart) do CInt(sEnd)

sVsota = sVsota + i

Naprej i

MsgBox “Vsota števil od ” & sStart & ” do ” & Send & ” prejšnji: ” & sSum

End Sub

Celice (i + 2, 1) = xspadajo v kategorije operatorjev tipa objekta, torej. zatakniti na prvem mestu do zbiranja predmetov, kot tudi nizov . Cikel se zaključi določeno število krat, kar ustreza številu elementov v nizu in zbirki. Za vsak ... Naslednji format izjave:

Za vsakogar<элемент>noter<группа> <блок операторов>Naslednji [<элемент>]

Možganski cikli (nepredznačeni cikli)

Cikli iz uma zmagujejo v teh epizodah, če se ponavljajo, je treba plačati samo za pojoče ume. Število iteracij ni določeno in je v končni fazi lahko enako nič (zokrema, za cikle s premislitvijo). VBA razvijalcem predstavlja številne osnovne strukture za organiziranje možganskih ciklov:

  • Obstaja več vrst ciklov Do..Loop, odvisno od vrste pranja, ki se preverja, in časa preverjanja.
  • Zanka brez prekinitev Medtem... Wend.

Tipična je zanka Naredi, medtem ko... cikel od spremembe misli. Um se prej ponovno preveri, tako kot se telo uskladi s ciklom. Cikel nadaljuje svoje delo do<условие>Konfigurira (takrat je vrednost True). Torej, ker se obračanje konča na storžu, se telo cikla morda ne konča niti enkrat. Oblika za Do While ... Loop:

Naredi Medtem<условие>

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

Zanka

Izpis 2. Naredi, medtem ko ... Loop

‘ ZAVDANNYA: Zložite program, saj posreduje uvod uporabnika

' zadostno zaporedje številk. Lahko se doda uvod

Šele potem, ko se vsota vnesenih neparnih števil pomakne na 100.

Podvzorec8()

Dim OddSum As Integer 'vsota neparnih števil

Dim OddStr As String 'vrstica neparnih števil

Dim Num 'za sprejem novih številk

OddStr = “” ‘Inicializacija izhodne vrstice

OddSum = 0 'inicializacija vsote OddSum

Naredite Medtem ko OddSum< 100 ‘начало цикла

Num = InputBox("Vnesite številko: ")

Če (Num Mod 2)<>0 Nato 'preveri pariteto

OddSum = OddSum + Num 'kopičenje vsote neparnih števil

OddStr = OddStr & Num & ” ”

Konec Če

Zanka

prikaz niza neparnih števil

Poziv MsgBox:=”Neseznanjene številke: ” & OddStr

End Sub

Izjava Do...Loop Whilenamene za organizacijocikel s postumovo. Um se ponovno preveri po enkratnem zaključku telesnega cikla. Cikel nadaljuje svoje delo do<условие>je prikrajšan za storitev. Oblika zanke Do... Loop While:

naredi<блок операторов>Zanka Medtem<условие>

Listing 3. Cikel iz postumove

' ZAVDANNYA: Zložite program "Ugani številko". Program je prilagodljiv

' za generiranje številke v območju od 1 do 1000 je kriv kupec

' ugani številko. Program na preobleki prikaže številko za vnos in prikaže poziv.

' "Več ali manj."

Podvzorec8()

Randomize Timer ' inicializacija generatorja naključnih števil

Dim msg As String ' informacijska vrstica

Dim SecretNumber As Long, UserNumber Kot Variant

Začetek: SecretNumber = Round(Rnd * 1000) ' število, ki ga ustvari računalnik

UserNumber = prazna številka, ki jo mora vnesti uporabnik

Izvedite postopek igre

Izberite Case True

Case IsEmpty(UserNumber): msg = "Vnesite številko"

Case UserNumber > SecretNumber: msg = "Prebogat!"

Uporabniška številka primera< SecretNumber: msg = “Слишком мало!”

Konec Izberite

UserNumber = InputBox(prompt:=msg, Title:="Ugani število")

Loop While UserNumber<>SecretNumber

'ponovno preverjanje

Če je MsgBox("Naribajte zdaj?", vbDaNe + vbVprašanje, "Prav ste uganili!") = vbDa Potem

Pojdi na začetek

Konec Če

End Sub

Loops Do Until... Loop in Do... Loop Until Inverzije pred pogledom na cikle iz uma. Pri smradu delujejo podobno, razen pri tistih, katerih telesni cikel sledi škodljivemu umu (popolnoma.<условие>= False). Oblika za zanko Do Until...:

Naredite do<условие> <блок операторов>Zanka

Oblika zanke Do... Loop Until:

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

Zanka do<условие>

Praktična zasnova:Prepišite programe iz seznamov 10 in 11 z ustreznimi obrnjenimi operatorji v zanki.

Loop While...Wend Enako velja za mentalne cikle. Ta operator je zelo podoben strukturi zanke Do While.... Oblika zanke While... Wend:

Medtem<условие>

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

Wend

Pomembna lastnost tega operatorja je nezmožnost dokončanja (prekinitve) telesa cikla (operator Exit Do ne deluje s ciklom While…Wend).

Zamenjajte cikel

Za dokončanje ponovitve pred vrstico in izhod iz zanke je stavek Exit zamrznjen. Ta operator je obtičal v kateri koli ciklični strukturi, vključno z Medtem ko... Wend. Izvirna sintaksa za Izhod za zanko je naslednja:

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

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

Izhod (Za | Naredi)

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

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

Ko se izvede operator Izhod, se cikel prekine in izvedba prenese na operaterja, ki sledi operatorju<конец_цикла>. Vsak cikel ima lahko več izhodnih stavkov.

Listing 4. Izhod Primusa iz cikla

Podvzorec9()

Za i = 1 do 10000000

If i = 10 Then Exit For 'zapusti zanko, če je zdravilec v dosegu 10

Naslednji