Cilpa vba Excel aprakstam. "VBA cilpas paziņojumi

Cilpas ļauj izpildīt vienu vai vairākas koda rindiņas vairākas reizes. VBA atbalsta šādas cilpas:

Par...Nākamais Katram...Nākamais Do...Cilpa

Konstrukcija For. . . Nākamais. Ja atkārtojumu skaits ir iepriekš zināms, tiek izmantota For cilpa. . . Nākamais. A For cilpa izmanto mainīgo, ko sauc par cilpas mainīgo vai cilpas skaitītāju, kas palielina vai samazina par noteiktu summu katru reizi, kad cilpa atkārtojas. Šīs konstrukcijas sintakse ir šāda:

Skaitītājam = sākums Līdz beigām Nākamie paziņojumi

Parametri skaitītājs (skaitītājs), sākums (cikla sākums), beigas (cikla beigas) un pieaugums (pieaugums) ir skaitļi.

Piezīme. Pieauguma parametrs var būt pozitīvs vai negatīvs. Ja tas ir pozitīvs, sākuma parametram jābūt mazākam vai vienādam ar beigu parametru, pretējā gadījumā cilpa nedarbosies. Ja pieauguma parametrs ir negatīvs, tad sākuma parametram ir jābūt lielākam par beigu parametra vērtību vai vienādam ar to, lai izpildītu cilpas pamattekstu. Ja parametrs Step nav iestatīts, pieauguma parametra noklusējuma vērtība ir 1.

VBA izpilda cilpu For šādā secībā:

1. Iestata cilpas mainīgā skaitītāja palaišanu.

2. Salīdzina cilpas mainīgo skaitītāja vērtību un beigu parametra vērtību. Ja skaitītāja mainīgais ir lielāks, VBA pārtrauc cilpu. (Ja pieauguma parametra vērtība ir negatīva, VBA pārtrauc cilpu, ja cilpas mainīgā skaitītāja vērtība ir mazāka par beigu parametra vērtību.)

3. Izpilda cilpas pamattekstu paziņojumus.

4. Palielina cilpas mainīgo skaitītāja vērtību par 1 vai par pieauguma parametra vērtību, ja tāds ir dots.

5. Atkārtojiet 2. līdz 4. darbību.

Apsveriet piemēru: Aprēķiniet funkcijas f(t) vērtību

dots a, b, n, ja t mainās no a uz b ar soli Dt=(b-a)/(n-1).

Apakšpiemērs3() Dim f() As Single Dim a As Single, b As Single, t As Single, dt As Single Dim i As Integer, n As Integer Call read("a1", a) : Call read("b1" , b) : Call read("c1", n) ReDim f(1 To n - 1) dt = (b - a) / (n - 1) : t = a Call out("a2", "i") : izsaukt("b2", "t") : izsaukt("c2", "f(t)") i = 1 līdz n - 1 t = t + dt Ja t<= -1 Then f(i) = -1 ElseIf t >1 Tad f(i) = 1 Citādi f(i) = t Beigas If Call out("a" & (2 + i), i) : Call out("b" & (2 + i), t) : Call out("c" & (2 + i), f(i)) Nākamais i Beigas Apakš

Katrai konstrukcijai. . . Nākamais

Katrai cilpai. . . Nākamais ir kā For cilpa. . . Tālāk, bet tas atkārto paziņojumu grupu katram elementam no objektu kopas vai no masīva, nevis atkārto paziņojumus noteiktu skaitu reižu. Tas ir īpaši noderīgi, ja nezināt, cik elementu ir komplektā.

Katrai cilpai konstrukcijas sintakse. . . Nākamais ir:

Katram elementam Grupas priekšrakstos Nākamais elements

Lietojot Katrai cilpai, ievērojiet tālāk norādītos ierobežojumus. . . Nākamais:

Kopām elementa parametrs var būt tikai tipa varianta mainīgais, vispārīgs tipa objekta mainīgais vai objekts, kas norādīts objektu pārlūkprogrammā.

Masīviem elementa parametrs var būt tikai Variant tipa mainīgais

Jūs nevarat izmantot cilpu Katram. . . Tālāk ar lietotāja definēta tipa masīvu, jo tipa varianta mainīgais nevar saturēt lietotāja definēta tipa vērtību

Do...Cilpas dizains

Do cilpa tiek izmantota, lai izpildītu paziņojumu bloku neierobežotu skaitu reižu. Ir vairākas Do konstrukcijas variācijas. . . Cikla, bet katrs no tiem novērtē nosacījumu izteiksmi, lai noteiktu, kad iziet no cilpas. Tāpat kā If konstrukcijas gadījumā. . . Tad nosacījumam ir jābūt vērtībai vai izteiksmei, kas tiek novērtēta uz False (nulle) vai True (kas nav nulle).

Sekojošā konstrukcijā Do . . . Cilpas paziņojumi tiek izpildīti, kamēr nosacījuma vērtība ir True (True):

Veiciet nosacījumu cilpas paziņojumus

Izpildot šo cilpu, VBA vispirms pārbauda nosacījumu. Ja nosacījums ir False, tas izlaiž visus cilpas paziņojumus. Ja tā ir patiesa, VBA izpilda cilpas priekšrakstus, atkal atgriežas pie Do While priekšraksta un vēlreiz pārbauda nosacījumu.

Tāpēc šīs konstrukcijas attēloto cilpu var izpildīt neierobežotu skaitu reižu, ja vien nosacījuma vērtība nav nulle vai True. Ņemiet vērā, ka cilpas pamatteksta paziņojumi nekad netiek izpildīti, ja nosacījums pirmo reizi tiek pārbaudīts, tas izrādās nepatiess (False).

Apsveriet piemēru: Aprēķiniet sērijas summu

ar noteiktu precizitāti.

Apakšpiemērs4() Dim e As Single, x As Single, s As Single Dim m As Single, p As Single, i As Single Call read("a1", x) : Call read("b1", e) s = 0 : i = 1: m = 1: p = -1 Izsaukt ("a2", "i") : izsaukt ("b2", "m") : izsaukt ("c2", "s") Do While Abs(m) >= e p = -p * x m = p / i s = s + m Izsaukt ("a" & (2 + i), i) : izsaukt ("b" & (2 + i), Abs (m)) : izsaukums ("c" & (2 + i), s) i = i + 1 cilpas beigu apakš.

Vēl viena Do konstrukcijas variācija. . . Loop vispirms izpilda cilpas pamatteksta paziņojumus un pēc tam pārbauda stāvokli pēc katras izpildes. Šī variācija nodrošina, ka priekšraksti cilpas pamattekstā tiek izpildīti vismaz vienu reizi:

Vai paziņojumi Loop While nosacījums

Pārējās divas cilpas konstrukcijas šķirnes ir līdzīgas iepriekšējām, izņemot to, ka cilpa tiek izpildīta, kamēr nosacījums ir nepatiess (False):

Cilpa netiek izpildīta vispār vai tiek izpildīta vairākas reizes:

Dariet līdz nosacījumam

Cilpas paziņojumi

Cilpa tiek izpildīta vismaz vienu reizi:

operatoriem

Cilpa Līdz stāvoklim

7.2. ligzdotas cilpas.

Vadības struktūras var ievietot citās vadības struktūrās (piemēram, Ja... Tad bloķēt iekšā For . . . Next cilpa). Tiek uzskatīts, ka vadības struktūra, kas atrodas citā vadības struktūrā, ir ligzdota.

Vadības struktūru ligzdošanas dziļums VBA nav ierobežots. Lai uzlabotu koda lasāmību, ir ierasta prakse mainīt lēmuma konstrukcijas vai cilpas pamattekstu programmā, ja tiek izmantotas ligzdotas vadības struktūras.

Ievietojot cilpā vienu vai vairākas citas cilpas, tiek runāts par ligzdotām cilpām, kas atšķir ārējās (ieslēdzošās) un iekšējās (ligzdotas) cilpas.

Aplūkosim piemēru matricas A(n,m) elementu Aij summēšanai pēc rindas.

Apakšpiemērs5() Dim a() kā viens, s() kā viens Dim n kā vesels skaitlis, m kā vesels skaitlis Dim i kā vesels skaitlis, j kā vesels skaitlis Call read("a1", n): Call read("b1", m ) ReDim a(1 uz n, 1 uz m), s(1 līdz n) "Lasīt matricu, ja i = 1 līdz n, ja j = 1 To m Izsaukt readcell(i + 1, j, a(i, j)) Nākamais j Nākamais i "Aprēķins i = 1 līdz n s(i) = 0 j = 1 m s(i) = s(i) + a(i, j) Nākamais j Izsaukt outcell(i + 1, m + 1 , s(i)) Nākamais i Beigas Apakš

Ņemiet vērā, ka pirmais Nākamais aizver iekšējo For cilpu, bet pēdējais Nākamais aizver ārējo For cilpu. Līdzīgi ligzdotajiem If priekšrakstiem tiek automātiski lietoti beigu If priekšraksti, lai aizvērtu tuvāko If priekšrakstu. Ligzdotas struktūras Do . . . Cilpas darbojas līdzīgi: tālākais Loop priekšraksts atbilst tālākajam Do priekšrakstam.

Ievadot/izvadot divdimensiju masīva elementus Microsoft Excel darblapā, ir ērti izmantot pielāgotas ievades/izvades procedūras:

Apakšnolasīšanas šūna(i kā vesels skaitlis, j kā vesels skaitlis, val kā variants) val = lapa j).Vērtība = val Beigas Apakš

kur I ir rindas numurs, j ir darblapas kolonnas numurs.

Atstājot kontroles struktūras

Paziņojums Exit ļauj iziet tieši no For cilpas, Do cilpas, Sub procedūras vai Function procedūras. Izejas priekšraksta sintakse ir vienkārša:

Skaitītājam = sākums Līdz beigām [paziņojuma bloks] [paziņojuma bloks] Nākamais Do [(Kamēr | Līdz) nosacījums] [paziņojuma bloks] [paziņojuma bloks] Cikls

Iziet For cilpas For iekšienē un Exit Do Do cilpas iekšpusē var parādīties neierobežotu skaitu reižu.

Paziņojums Exit Do darbojas ar visiem Do cilpas sintakses variantiem.

Paziņojumi Exit For un Exit Do tiek izmantoti, ja ir nepieciešams nekavējoties beigt cilpu, neturpinot turpmākās iterācijas vai negaidot priekšrakstu bloka izpildi cilpas pamattekstā.

Ja izmantojat paziņojumu Exit, lai izietu no cilpas, cilpas mainīgā vērtības ir atkarīgas no tā, kā cilpa beidzas:

Kad cilpa beidzas normāli, cilpas mainīgā vērtība ir par vienu vairāk nekā cilpu skaita augšējā robeža

Kad cilpa beidzas priekšlaicīgi, cilpas mainīgais saglabā savu vērtību, ko tas saņēma, ņemot vērā parastos noteikumus

Kad cilpa beidzas kopas beigās, cilpas mainīgais ir Nekas, ja tas ir objekta mainīgais, vai Tukšs, ja tas ir variants

Pēdējā atjaunināšana: 30.10.2015

Cits vadības struktūru veids ir cilpas. VB.NET izmanto vairāku veidu cilpas.

Par...Next Loop

Šī cilpa tiek izpildīta noteiktu skaitu reižu, un šo skaitli iestata skaitītājs:

Ja i As Integer = 1 līdz 9 Console.WriteLine("(0) kvadrāts ir (1)", i, i * i) Nākamais

Šeit mainīgais i spēlē skaitītāja lomu. Pēc vārda Uz mēs ievietojam skaitītāja maksimālo vērtību. Ar katru ciklu skaitītāja vērtība tiek palielināta par vienu. Un šī vērtība tiek salīdzināta ar vērtību pēc Uz. Ja šīs divas vērtības ir vienādas, cilpa beidzas.

Strādājot ar cilpām, mēs varam palielināt skaitītāja vērtību ar katru piegājienu ne tikai par vienu, bet par jebkuru skaitli kopumā. Lai to izdarītu, jums ir jāizmanto atslēgvārds solis un pēc tam norādiet cilpas soli, par kuru palielināsies skaitītāja vērtība, vai arī varat palielināt skaitītāju tieši cilpā:

Ja i As Integer = 1 līdz -9 Solis -1 For j As Integer = 1 līdz 9 Console.WriteLine("I un j reizinājums ir (0)", i * j) j += 1 Nākamais Nākamais

Ņemiet vērā, ka negatīva vērtība tiek izvēlēta kā solis pirmajā cilpā, un skaitītāja vērtība samazinās par vienu ar katru piegājienu. Iekšējā cilpā skaitītājs j tiek palielināts par 2 katrā iterācijā, jo pēc noklusējuma tas palielinās par vienu, un mēs to arī skaidri palielinām ciklā par vienu. Rezultātā iekšējā cilpa darbojas piecas reizes, bet ārējā - deviņas, tas ir, faktiski tiek iegūti 45 cikli.

Katram...Nākamā cilpa

Katrai cilpa atkārtojas pār elementiem noteiktā grupā, piemēram, masīvā vai kolekcijā. Pieņemsim, ka mums ir kāds vesels skaitļa masīvs, un mums ir jāinicializē šis masīvs ar nejaušām vērtībām un pēc tam visi tā elementi jāparāda ekrānā:

"Izveidot piecu skaitļu masīvu Dim nums(4) As Integer Dim r As New Random() "inicializējiet masīvu For i As Integer = 0 To nums.Length - 1 nums(i) = r.Next(100) Next " Parādīt elementu masīvu Katram i Kā vesels skaitlis In nums Console.Write("(0) ", i) Nākamais

Paziņojumā Katram mēs vispirms norādām mainīgo, kas ņems masīva elementu vērtības. Un pēc atslēgvārda In Norādiet grupu, kurā vēlaties kārtot visus elementus.

kamēr cilpa

Ciklā While tas tiek izpildīts tik ilgi, kamēr ir izpildīts noteikts nosacījums, kas norādīts aiz vārda While:

Blāvs j kā vesels skaitlis = 10, kamēr j > 0 konsole. WriteLine(j) j -= 1 beigas, kamēr

Veiciet cilpu

Do cilpa, tāpat kā cilpa While, tiek izpildīta tik ilgi, kamēr ir izpildīts noteikts nosacījums. Tomēr tam ir dažādas formas. Tātad šajā piemērā vispirms tiek pārbaudīts nosacījums un pēc tam tiek izpildīts cilpā definētais koda bloks:

Dim j kā vesels skaitlis = 10 Do, kamēr j > 0 konsole.WriteLine(j) j -= 1 cilpa

Šajā gadījumā cilpa tiek izpildīta, kamēr j vērtība ir lielāka par nulli. Bet ir vēl viens ieraksts, kur vārda vietā tiek lietots vārds Kamēr Līdz plkst, un cilpa tiek izpildīta, līdz ir izpildīts noteikts nosacījums, tas ir, līdz j vērtība kļūst mazāka par nulli:

Dim j kā vesels skaitlis = 10 Do Līdz j< 0 Console.WriteLine(j) j -= 1 Loop

Ja sākotnēji cilpā norādītais nosacījums ir nepatiess, tad cilpa nedarbosies. Bet mēs varam definēt pārbaudi cilpas beigās, un tādējādi mūsu cilpa darbosies vismaz vienu reizi:

Dim j kā vesels skaitlis = -1 Do Console.WriteLine(j) j -= 1 cilpa līdz j< 0 "либо Do Console.WriteLine(j) j -= 1 Loop While j > 0

Turpināšanas un izejas paziņojumi

Bieži vien ir nepieciešams nevis gaidīt cikla beigas, bet nekavējoties iziet no cikla, ja ir izpildīts noteikts nosacījums. Lai to izdarītu, izmantojiet operatoru Izeja, kam seko cilpas veids, no kura jāiziet, piemēram, Exit Do (Exit While) :

Dim r As New Random() Dim num As Integer = r.Next(100) For i As Integer = 0 līdz 100 num -= 1 Ja num< 50 Then Exit For Next Console.WriteLine(num)

Ir vēl viens uzdevums - iziet nevis no cilpas, bet no pašreizējās piespēles vai iterācijas un doties uz nākamo. Lai to izdarītu, izmantojiet paziņojumu Continue, pēc kura tie norāda cilpas veidu, no kuras tiek veikta izeja, piemēram, Continue While:

Dim r As New Random() Dim num As Integer = r.Next(100) For i As Integer = 0 līdz 10 num -= 7 Ja num< 50 AndAlso num >25 Pēc tam Continue For End If Console.WriteLine(num) Next

Šajā gadījumā katrā cilpas piegājienā mēs atņemam skaitli 7 no num un tad pārbaudām, vai skaitlis num pieder intervālam no 25 līdz 50. Un, ja tā ir, mēs pārejam uz jaunu cilpas atkārtojumu, un ja nē, mēs to parādām ekrānā.

Laboratorijas darbi par programmēšanas pamatiem

2.1. Analītiski attēloto funkciju tabula
un saplūst tuvumā

Mērķis

· Teorētisko zināšanu nostiprināšana par zarojošo un ciklisko struktūru organizācijas pamatiem.

· Praktisku programmēšanas iemaņu apgūšana, izmantojot zarojošās un cikliskās struktūras Visual Basic sistēmā.

VB ir trīs veidu cilpas paziņojumi:

skaitīšanas cikls: Par...Līdz...Nākamais

Cilpas ar priekšnosacījumiem: Do While...Cilpa, Do Until...Cilpa, While...WEend

Cilpas ar pēcnosacījumiem: Do...Cilpa kamēr, Do...Cilpa līdz.

Skaitīšanas cikls — ļauj pārslēgt paziņojumu kopu noteiktu skaitu reižu. Tās sintakse ir šāda:

Priekš skaitītājs = Sākt Uz beigas

[operatoriem]

[operatoriem]

Nākamais[ skaitītājs]

Parametrs skaitītājs ir skaitlisks mainīgais (vesels skaitlis, reāls vai datums, variants, valūta), kas tiek automātiski palielināts pēc katras iterācijas. Sākotnējā vērtība skaitītājs vienāds ar parametru Sākt, un pēdējais parametrs ir beigas. Ja nav norādīts, tad solis tiek uzskatīts par vienādu ar 1, soļa vērtību var mainīt. Tas var būt pozitīvs vai negatīvs skaitlis.

Do….Cilpai ir četras sintaktiskās konstrukcijas:

Paziņojumi starp Do...Loop atslēgvārdiem tiek izpildīti noteiktu reižu skaitu atkarībā no nosacījuma. Piemēram, nākamajā programmas fragmentā, kad C = 100, nosacījums tiks izpildīts un cilpa tiks ievadīta. Cilpas iekšpusē tiek izsaukta procedūra un C vērtība samazinās par 1. Pēc tam vēlreiz tiek pārbaudīts nosacījums (C > 0) un vēlreiz izpildīti cilpas priekšraksti (kopā tiks izpildīti 100 reizes), līdz C = 0. Kad nosacījums C > 0 kļūst nepatiess un cilpa apstājas.

Dariet, kamēr C > 0

Tas pats programmas fragments, kas izpildīts, izmantojot priekšnosacījuma cilpu 2. sintaksē:

Šajā gadījumā cilpa tiek izpildīta, kamēr nosacījums ir False, atšķirībā no iepriekšējā gadījuma, tas ir, tā turpinās pirms tam nosacījuma izpilde C = 0.

Cilpas priekšraksti 3. un 4. sintaksē ir ļoti līdzīgi pirmajiem diviem, izņemot nosacījumu tiek novērtēts, līdz cilpa ir izpildīta vismaz vienu reizi.

Šo cilpu sintaksēs var izmantot beznosacījuma izejas no cilpas Exit For un Exit Do operatorus, kas ļauj pārsūtīt vadību operatoram aiz cilpas. Piemēram, nākamajā programmas fragmentā, ja C sākotnējā vērtība ir >50, tad cilpa nekavējoties apstāsies.



Dariet līdz C<= 0

MsgBox "Sākt. vērtība ir lielāka par atļauto”, “Ievades kļūda”

Cilpa While...Wend tika izmantota sākotnējās Visual Basic versijās. Tās sintakse ir šāda:

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

<Операторы>

Atšķirībā no Do..Loop cilpai While ..Wend nav otrās opcijas, kurā stāvokļa pārbaude tiek veikta cilpas beigās. Turklāt tam nav tāda cilpas izejas paziņojuma kā Exit Do.

VBA. Ciklu organizēšana.

Cikla paziņojumi tiek izmantoti, lai noteiktu darbību vai darbību grupas izpildi 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 ( cikli ar skaitītāju).
  2. Cilpas ar nenoteiktu atkārtojumu skaitu ( nosacījuma cilpas).

Visu veidu cikliem tiek izmantots jēdziens cilpas korpuss A, kas definē paziņojumu bloku, kas atrodas starp cilpas sākuma un beigu priekšrakstiem. Katrs apgalvojumu atkārtojums cilpas pamattekstā tiek izsaukts 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).

Par… Nākamajam paziņojumam tā ir tipiska cilpa ar skaitītāju, kas veic noteiktu iterāciju skaitu. For… Nākamā priekšraksta sintakse ir šāda:

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

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

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

Paziņojuma For … Next izmantošanas piemērs.

Uzskaitījums 1. Par … Nākamais paziņojums

‘ MĒRĶIS: uzrakstiet programmu, kas no lietotāja saņem divus skaitļus.

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

‘ Parāda iegūto summu.

Apakšparaugs7()

Dim i As Integer ‘cilpu skaitītājs

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

Dim sEnd ' skaitītāja beigu 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

beigu apakš

Katram … nākamā cikla paziņojumampieder 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ā. For Every… Nākamā paziņojuma formāts ir šāds:

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

Nosacījuma cilpas (nenoteiktas 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 vispārīgā gadījumā 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 cilpas Do..Loop, kas atšķiras ar pārbaudāmā nosacījuma veidu un šīs pārbaudes izpildes laiku.
  • Nepārtraukts kamēr … cilpa.

Darīt, kamēr... Cilpa — tipiski 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., ir patiess). Tā kā pārbaude tiek veikta sākumā, cilpas pamattekstu var nekad izpildīt. Cilpas Do While… formāts:

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

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

cilpa

Listing 2. Do While … Loop

MĒRĶIS: uzrakstiet programmu, kas pieņem lietotāja ievadi

‘patvaļīga skaitļu secība. Ieeja ir jāpārtrauc

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

Apakšparaugs8()

Dim OddSum kā vesels skaitlis

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 ‘OddSum summas inicializācija

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

Skaitlis = InputBox ("Ievadiet numuru: ")

Ja (2. mod.)<>0 Tad “vienmērīga paritāte”.

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

OddStr = OddStr & Skaitlis & ”

Beidziet, ja

cilpa

‘izvadiet virkni ar nepāra skaitļiem

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

beigu apakš

Do...Cilpas kamēr paziņojumsparedzēts organizēšanaicilpa ar pēcnosacījumu. Nosacījums tiek pārbaudīts pēc tam, kad cilpas pamatteksts ir izpildīts vismaz vienu reizi. Cikls turpinās līdz<условие>paliek patiess. Do...Cilpas kamēr formāts:

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

Saraksts 3. Cilpa ar pēcnosacījumu

‘ MĒRĶIS: izveidojiet programmu spēlei “Uzmini numuru”. Programmai jābūt nejauši

Lai ģenerētu skaitli diapazonā no 1 līdz 1000, lietotājam tas ir jādara

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

' "vairāk vai mazāk".

Apakšparaugs8()

Randomize Timer — nejaušo skaitļu ģeneratora inicializācija

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 = "Lūdzu, 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 ("Vai vēlaties spēlēt vēlreiz?", vbYesNo + vbQuestion, "Tu uzminēji pareizi!") = vbYes Tad

Iet uz sākumu

Beidziet, ja

beigu apakš

Darīt līdz… cilpa un darīt… cilpa līdz cilpām ir iepriekš uzskatīto nosacījumu cilpu inversijas. Kopumā tie darbojas līdzīgi, izņemot to, ka cilpas pamatteksts tiek izpildīts nepatiesā stāvoklī (t.i.<условие>=Nepatiesi). Cilpas Darīt līdz... formāts ir šāds:

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

Cilpas Do... Loop Until formāts ir:

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

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

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

Kamēr Loop ... Wend attiecas arī uz nosacījumu cilpām. Šis apgalvojums pilnībā atbilst Do While… Loop struktūrai. Cilpas While… Wend formāts ir šāds:

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

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

Wend

Šī paziņojuma atšķirīga iezīme ir cilpas korpusa piespiedu pārtraukšanas (pārtraukšanas) neiespējamība (Iziet Do paziņojums nedarbojas cilpā While ... Wend).

Cilpas pārtraukums

Paziņojums Exit tiek izmantots, lai beigtu iterāciju un izietu no cikla. Šis apgalvojums 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 priekšraksti.

Uzskaitījums 4. Piespiedu cilpas izeja

Apakšparaugs9()

Ja i = 1 līdz 10000000

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

Nākamais

Operatora sintakse:

PriekšSkaitītājs= Sākt ToBeigas[solisSolis]

Paziņojums_Bloks

NākamaisSkaitītājs

Tas ir atzīmēts šeit:

Priekš priekš (obligāts VB atslēgas vārds);

Uz pirms tam (obligāts VB atslēgas vārds);

Paziņojums_Bloks piezvanīja viens vai vairāki operatori velosipēda korpuss;

Skaitītājs - vesels mainīgais, kas saskaita izpildāmo ciklu skaitu;

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

solis solis (atslēgvārds VB);

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

Next - next (obligāts VB atslēgvārds, cilpas beigu priekšraksta 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 pamattekstu varētu izpildīt vismaz vienu reizi, tam 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 sinxmainot X ar soli 0,2 diapazonā .

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, etiķetes, operatorsJaTad.

M1:X=X+0,2

Ja X<= 2.4 Then

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

Analizēsim, kā šī programma darbojas. Pirmais aprēķins Y ir nestandarta, it kā izkrīt no cilpas. Cilpa 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 nepā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 atkal tiek izpildīts operators GoToM1 - nododot vadību uz līniju ar etiķeti M1. Šie Y aprēķināšanas atkārtojumi (cikli) beigsies, tiklīdz X pārsniegs 2,4.

Tagad programma If ir salīdzināma 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

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

Izmantojot For…Next cilpu, jums jāiemācās izmantot cilpas skaitītāju, risinot dažādas problēmas. Lai noskaidrotu, kā problēmas risināšanai izmantot skaitītāju, 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 ir sērijas summa

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

S = S + 1/i ‘ akumulācijas summa

Drukāt "S="; S ‘ summas S izvade uz formu

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 ir sērijas 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 ‘ summas S izvade uz formu

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

Programmas fragments:

S = 0 ‘S ir sērijas summa

Ja i = 5 līdz 35, 3. darbība ‘ iegūt 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 pakāpe pie X mainās no 1 uz 10. Šajā gadījumā koeficienta skaitītājs pie X ir lielāks par pakāpi par 1, un saucējs ir par 2. Tiks izveidota pakāpes vērtība. izmantojot skaitītāju i. Pēc tam varat uzrakstīt šādu programmu (fragmentu):

S = 1 ‘S ir sērijas summa

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

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

Drukāt "S="; S

CikliPriekšNākamaisizmantotsieejas izejas unmasīva apstrāde .

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

Programmas fragments:

Izlaidiet vērtības N piešķiršanu mainīgajam, _

ievadīts veidlapas teksta laukā txtN:

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

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

drukāt " "; B(i);

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

Kā redzat, 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 galvenes. Elementa B(i) indekss uzvednē mainīsies no 1 līdz 12.

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

Masīva elementu skatīšana, lai ar tiem veiktu kādu darbību, arī notiek, izmantojot operatoru For…Next cilpa.

Atvedīsim 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 no 2. daļa. 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, tad Bmax tiek piešķirta šī elementa vērtība, bet Imax vērtība ir šī 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).

Šīs algoritma daļas programma.

Bmax = B(1): Imax = 1

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

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

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

Algoritmsšī definīcija:

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

    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ā. Mainīgo P reizinām ar elementa pozitīvo vērtību un saglabājam arī 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) ‘ šādi uzkrājas summa _

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

' nosaka pozitīvo masīva elementu skaitu

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

Mēs piedāvājam šādas definīcijas programmas fragmentu.

S=0: P=1: K=0

Ja D(i) Mod 2<>0 Tad

Ssr = S/k ‘ nepāra elementu vidējā aprēķins

Salīdziniet šo programmas fragmentu ar programmu 9.8. piemērā. Šī programma gandrīz pilnībā atkārto iepriekšējo. Ir mainīts tikai nosacījums If paziņojumā. Nosacījums D(i) Mod 2<>0 nozīmē, ka mēs meklējam masīva D(i) elementus, kas pat nedalās 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, sadalīšana Mod rezultātā iegūst 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. 4 vietā tiks rakstīti šie citi skaitļi.

Piemērs 9.10. Masīva elementu rakstīšanaR(N) dalās ar 5 citā masīvā un veidlapā parāda jauno masīvu.

Otrs masīvs tiks apzīmēts, piemēram, ar R5(N). Jāpieņem, ka šī jaunā masīva lielums ir tāds pats kā oriģinālajam, jo ​​ierobežojuma gadījumā visi elementi var būt 5 reizes.

Uzdevuma algoritms:

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

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

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

    Ja k nav nulle, izvadiet masīvuR5() formā.

    Ja k ir vienāds ar nulli, mēs izvadām: "Nav elementu, kas reizinātos 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 . Zemāk programma organizē cikla skaitītāju i, j un k vērtību izvadi. 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 parādīšanas rezultāti: ārējā cilpa - skaitītājs i, pirmā ligzdotā cilpa - counterj un otrā, iekšējā cilpa - counterk. Kā redzam, ārējās cilpas "lēnākais" skaitītājs(poi), un “ātrākais” ir visdziļākās cilpas skaitītājs (saskaņā ark).

Programma tiek izpildīta pēc dubultklikšķa uz frmCicli formas ar peles kreiso pogu.

CurrentX, CurrentY - formas rekvizīti, kas norāda sākuma punkta X, Y koordinātas informācijas izvadīšanai ar Drukas metodi (X un Y asu atrašanās vietu veidlapā skatīt 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 ciklu. Apsveriet 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 – rindiņu pa rindiņai, ja masīva elementu izvade uz formu tiks ieprogrammēta uzreiz pēc to ievades.

Matricas ievade un izvaderinda 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 ir rindu skaits

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

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

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

‘ligzdota cilpa uz j netiks izpildīta

drukāt " "; intA(i, j); ‘ izvade pēc rindas

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

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

Matricas ievade un izvadepa kolonnām fragments 2.

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

Izvadiet katras kolonnas pirmo elementu veidlapā

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

“ligzdota cilpa uz i netiks izpildīta

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

"Matricas ievade intA(" & M & "," & N & ")")

Drukas cilne (6 * j); intA(i, j) ‘ attēlošana 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), kas sākas no veidlapas kreisās malas. PrY koordinātas šeit ir 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šs.

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

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.

Ar ārējās cilpas palīdzību ar skaitītāju i izvēlamies elementu V (i) salīdzināšanai ar nākamajiem elementiem. Iekšējā cilpa ar skaitītāju j atlasa salīdzināšanai nākamos V(j) elementus. J sākotnējā vērtība ir i + 1. Šis ir pirmais elements no sekojošā.

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ēpjam” V(j) vērtību 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 gan virkne, un masīva elementi ir aizpildīti ar uzvārdiem, 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 nevienādības: A< Б < В < Г….< Я и т. д., поскольку числовые коды букв алфавита последовательно увеличиваются, начиная с А и до конца алфавита. Это же справедливо и для букв английского алфавита.

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

Programmas algoritms:

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

    Mēs atiestatām summu S, kurā tiks uzkrāta 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), aprēķiniet summu S.

    Pēc iekšējās cilpas beigām izvadiet summu S formā.

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 ir kolonnas numurs!

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

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

Programma:

Summa = 1801

Visas šokolādes = summa \ 31: visas maizītes = summa \ 18

Ja i = 1 uz visu šokolādi

Ja j = 1 uz AllBulki

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 tikai šokolādes vai tikai rullīšu skaits, ko var iegādāties par visu summu. Iegūtās VseChocolate un VseBulki vērtības tiek izmantotas, lai ierobežotu meklējumu skaitu pēc šokolādes un rullīšu skaita. 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, kurā vietā 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ādes 7, maizītes 88

Šokolādes 25, maizītes 57

Šokolādes 43, maizītes 26

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

Ir daudzas matemātiskas problēmas, kuras vienkārši atrisina, atkārtojot ligzdotās cilpas programmēšanu.