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, operatorsJa… Tad.
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
CikliPar… Tā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 cilpasPar… Tā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:
- Cilpas ar fiksētu atkārtojumu skaitu ( pretrunā cilpas).
- 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:
- skaitītāja cilpas, kurās tiek izpildīts cilpas korpuss noteiktu summu vienreiz;
- cilpas masīvu vai kolekciju apstrādei;
- 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
- Skaitītāja mainīgā vērtība ir iestatīta vienāda ar StartValue.
- Stāvokļa skaitītājs ir pārbaudīts<= КонЗнач
- 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.
- 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).