ቤት / የዊንዶውስ አጠቃላይ እይታ / Vba ለደረጃ እንዴት እንደሚሰራ ቀላል ምሳሌ ነው። VBA Loops በፕሮግራም መሰረታዊ ነገሮች ላይ የላቦራቶሪ ስራ

Vba ለደረጃ እንዴት እንደሚሰራ ቀላል ምሳሌ ነው። VBA Loops በፕሮግራም መሰረታዊ ነገሮች ላይ የላቦራቶሪ ስራ

ኦፕሬተር አገባብ፡-

ቆጣሪ= ጀምር መጨረሻ[ደረጃደረጃ]

አግድ_ኦፕሬተሮች

ቀጥሎቆጣሪ

እዚህ ላይ ተጠቁሟል፡-

(የሚያስፈልግ ቁልፍ ቃል ቪቢ);

ወደ (የሚያስፈልግ ቁልፍ ቃል ቪቢ);

አግድ_ኦፕሬተሮች- አንድ ወይም ከዚያ በላይ ኦፕሬተሮች ተጠርተዋል የዑደት አካል;

ቆጣሪ -የተፈጸሙትን ቀለበቶች ብዛት የሚቆጥር የኢንቲጀር ተለዋዋጭ;

መጀመሪያ ፣ መጨረሻ -የመጀመሪያ እና የመጨረሻ ቆጣሪ ዋጋዎች;

ደረጃደረጃ (ቁልፍ ቃል ቪቢ);

ደረጃ -የቆጣሪ ለውጥ ደረጃ; አሉታዊ ሊሆን ይችላል; መለኪያው አማራጭ ነው, ምክንያቱም እርምጃው 1 ከሆነ, እርምጃ መውሰድ ይችላሉ ደረጃዝቅተኛ;

ቀጣይ - ቀጣይ (የሚፈለገው ቁልፍ ቃል VB, የ loop ኦፕሬተር ግቤት መጨረሻ).

የቆጣሪ እሴት (ጀምር ፣ መጨረሻ)ሊኖር ይችላል። የቁጥር ቋሚዎች ወይም የኢንቲጀር ወይም የእውነተኛ ዓይነት ተለዋዋጮች፣ አሉታዊ ወይም አወንታዊ ቁጥሮች ሊሆኑ ይችላሉ። የ loop አካል ቢያንስ አንድ ጊዜ እንዲፈፀም, መኖር አለበት መጀመሪያ ≤ መጨረሻ፣ከሆነ ደረጃ> 0፣ እና መጀመሪያ ≥ መጨረሻ፣ከሆነ ደረጃ< 0. ልክ እንደ ተለወጠ ቆጣሪ>መጨረሻ (ከሆነ ጀምር< Конец), የ loop አፈፃፀም ያበቃል። ከሆነ ጀምር =መጨረሻ፣ሉፕ አንድ ጊዜ ይከናወናል;

ምሳሌ 9.1 .የተግባር ግምገማዋይ = 2 – 1.5 ሲንክስበክልል ውስጥ X በ 0.2 ደረጃዎች ሲቀየር.

Yን ለማስላት እና ነጋሪቱን X እና ተግባር Yን ለማውጣት የፕሮግራሙ ቁራጭ፡-

ለ X = 0 እስከ 2.4 ደረጃ 0.2

Y = 2 - 1.5*ኃጢአት(X)

ይህ loop እንዴት እንደሚሰራ ለመረዳት፣ በመጠቀም ለተፈጠረ ተመሳሳይ loop ፕሮግራም እዚህ አለ። ኦፕሬተርጎቶ, መለያዎች, ኦፕሬተርከሆነከዚያም.

M1: X = X + 0.2

X ከሆነ<= 2.4 Then

Y = 2 - 1.5*ኃጢአት(X)

ይህ ፕሮግራም እንዴት እንደሚሰራ እንመልከት. የመጀመሪያው ስሌት Y ከዑደት ውስጥ እንደወደቀ ያህል መደበኛ ያልሆነ ነው። ዑደቱ የሚጀምረው ከመጀመሪያው የመቆጣጠሪያ GoToM1 ሽግግር በኋላ M1 ለመሰየም ነው። ኤም 1 በተሰየመው መስመር ላይ የ X ነጋሪ እሴት በ 0.2 ደረጃ ይጨምራል እና አዲሱ የ X ዋጋ ከ 2.4 የመጨረሻ እሴት በላይ መሆኑን ለማረጋገጥ ወዲያውኑ ቼክ ይደረጋል። ከዚያ በላይ ካልሆነ የ Y ስሌት በዚህ አዲስ X ይደገማል. ከዚያም የ GoToM1 ኦፕሬተር እንደገና ይሠራል - መቆጣጠሪያውን M1 ወደሚሰየመው መስመር ያስተላልፋል. Yን የማስላት እነዚህ ድግግሞሾች (ዑደቶች) X ከ 2.4 ሲበልጥ ያበቃል።

አሁን ፕሮግራሙን ከIf እና ለ...ቀጣይ loop ጋር እናወዳድረው።

ለ X = 0 እስከ 2.4 ደረጃ 0.2

ሁለት መስመሮችን ይተካዋል

M1: X = X + 0.2

X ከሆነ<= 2.4 Then

በFor loop ውስጥ የሚፈጸሙት የመጨረሻዎቹ ሁለት የኮድ መስመሮች ናቸው፣ ግን አናይም። እኛ በመስመር cFor... የGoTo M1 ኮድ መስመር Next X (በትክክል፡ ቀጣይ X) በሚለው ቃል ተቀምጧል። ይህ የታመቀ ንድፍ ያስከትላል.

ለ...ቀጣይ loop ሲጠቀሙ የተለያዩ ችግሮችን ለመፍታት የሉፕ ቆጣሪውን እንዴት መጠቀም እንዳለቦት መማር ያስፈልግዎታል። ችግሩን ለመፍታት ቆጣሪ እንዴት እንደሚጠቀሙ ለማወቅ, ያስፈልግዎታል የችግሩን አፈጣጠር ይተንትኑ ፣ በአንዳንድ የችግሩ መመዘኛዎች ላይ ለውጦችን ይፈልጉ ።

ምሳሌ 9.2 . የተከታታይ ንጥረ ነገሮች ድምር ውሳኔ፡.

የፕሮግራም ቁርጥራጭ;

S = 0 'S - የተከታታዩ ድምር

ለ i = 1 እስከ 16 ' ቆጣሪ i የክፍልፋይ መለያ ነው።

S = S + 1/i 'የድምር ክምችት

አትም "S ="; S መጠን S ወደ ቅጹ ያወጣል።

ለእያንዳንዱ የቆጣሪው i እሴት፣ 1/i የሚለው አገላለጽ ከ 1 ጀምሮ የተከታታይ ክፍሎችን በቅደም ተከተል ይመሰርታል።

ምሳሌ 9.3 . የተከታታይ ንጥረ ነገሮች ድምርን በማስላት ላይ
.

የፕሮግራም ቁርጥራጭ;

S = 0 'S - የተከታታዩ ድምር

ለ i = 1 እስከ 18 'ቆጣሪ i - አሃዛዊ

S = S + i/(i + 1) ‘ተቀባይ ከቁጥር 1 ይበልጣል

አትም "S ="; S መጠን S ወደ ቅጹ ያወጣል።

ምሳሌ 9.4 . የድምሩ ስሌት፡ 5 + 8 + 11 + … + 32 + 35

የፕሮግራም ቁርጥራጭ;

S = 0 'S - የተከታታዩ ድምር

ለ i = ከ 5 እስከ 35 ደረጃ 3 ' አርቲሜቲክን እናገኛለን _

እድገት ከ 3

አትም "S ="; ኤስ

ምሳሌ 9.5. የተሰጠው x ድምርን በማስላት ላይ፡-

የችግሩ ትንተና እንደሚያሳየው የ X ዲግሪ ከ 1 ወደ 10 ይለያያል. በዚህ ሁኔታ, በ X ኮፊሸንት ውስጥ ያለው አሃዛዊ ከዲግሪው በ 1, እና መለያው በ 2 ይበልጣል. የዲግሪውን እሴት በመጠቀም እንፈጥራለን. ቆጣሪ i. ከዚያ እንደዚህ ያለ ፕሮግራም መፍጠር ይችላሉ (ቁርጥራጭ)

S = 1 'S - የተከታታዩ ድምር

ለ i = 1 እስከ 10 'እንደ ቆጣሪ i፣ ዲግሪው በ X ይቀየራል።

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

አትም "S ="; ኤስ

ዑደቶችቀጥሎጥቅም ላይ ይውላልግብዓት, ውፅዓት እናየድርድር ሂደት .

ምሳሌ 9.6. የድርድር አባሎች እሴት ግቤት እና ውፅዓት B (ኤን).

የፕሮግራም ቁርጥራጭ;

እሴቱን ለተለዋዋጭ N፣ _ መመደብን እንተወዋለን።

በ txtN የጽሑፍ መስክ ላይ በቅጹ ላይ ገብቷል፡-

B(i) = InputBox("ንጥል B(" & i & ") አስገባ"፣ _

"የግቤት ድርድር B(" & N & ")"))

አትም ""; B(i);

ተግባር የግቤት ሳጥን() የመዝጊያ ቁልፍ፣ የተገለጸ መልእክት፣ የግቤት መስክ፣ አዝራሮች ያሉት የንግግር ሳጥን ያሳያል እሺ,ሰርዝ፣በተሰጠው ራስጌ (ወይም ያለሱ). ቁጥሩ 12 ከገባ - የድርድር N መጠን ፣ ከዚያ በእኛ ምሳሌ ፣ በመጀመሪያ ሲታይ ፣ ይህ መስኮት እንደዚህ ይመስላል

እንደምናየው, መልእክቱ ክፍል B(1) አስገባበጽሑፍ ሳጥኑ ውስጥ የ 1 ኛ አካል እሴት እንዲያስገቡ ይጠይቅዎታል። ይህ መስኮት 12 ጊዜ ይታያል ምክንያቱም አደራደሩ 12 ንጥረ ነገሮችን ይዟል። ይህ ከቅጽ ርዕስ ይከተላል. በግብዣው ውስጥ ያለው የኤለመንት B(i) መረጃ ጠቋሚ ከ1 ወደ 12 ይለያያል።

በቅጹ ላይ የድርድር B (N) ንጥረ ነገሮችን እሴቶችን ብቻ ለማሳየት ከፈለጉ የሉፕ አካል አንድ መግለጫ ይይዛል-

በእነሱ ላይ አንዳንድ እርምጃዎችን ለማከናወን የድርድር ክፍሎችን ማየት እንዲሁ ለ...ቀጣይ loop ኦፕሬተርን በመጠቀም ይከናወናል።

እንስጥ ባለ አንድ-ልኬት ድርድሮችን የማስኬድ ምሳሌዎች።

ምሳሌ 9.7 . በድርድር B () ውስጥ ያለውን ከፍተኛውን አካል መወሰንኤም).

የመነሻ ውሂብን እና የውጤቶችን ውፅዓት ሳያካትት ስልተ ቀመሩን በአጭሩ እንገልፃለን፡-

    ተለዋዋጭ Bmax እናውጅ፣ በውስጡም የድርድር የመጀመሪያ ኤለመንት ዋጋ እናስገባለን፣ እና ተለዋዋጭ ኢማክስ፣ 1 የምንመድበው - የድርድር የመጀመሪያ ኤለመንት ኢንዴክስ።

    በ loop ውስጥ፣ ለ...ቀጣይ ኦፕሬተርን በመጠቀም፣ ከሁለተኛው ጀምሮ ሁሉንም የድርድር አካላት እንመለከታለን። If...ከዚያ ኦፕሬተርን በመጠቀም እሴቶቻቸውን በBmax ተለዋዋጭ ውስጥ ካለው እሴት ጋር እናነፃፅራለን።

    የድርድር ኤለመንት ዋጋ ከBmax ዋጋ የበለጠ እንደሆነ ከተረጋገጠ Bmax የዚህ ኤለመንት እሴት ይመደባል እና ኢማክስ የዚህ አደራደር ኤለመንት ኢንዴክስ ይሰየማል።

ከሉፕው መጨረሻ በኋላ, ተለዋዋጭ Bmax ከፍተኛውን ኤለመንት ዋጋ ይይዛል, እና ኢማክስ ኢንዴክስ (ቁጥር) ይይዛል.

የዚህ የአልጎሪዝም ክፍል ፕሮግራም.

Bmax = B (1): ኢማክስ = 1

B(i) > Bmax ከሆነ Bmax = B(i): Imax = i

ምሳሌ 9፡8. የአንድ ድርድር አወንታዊ አካላት ድምር፣ ምርት እና ቁጥር መወሰን(ኤም).

ተለዋዋጮች S, P, K - እንደቅደም ተከተል ድምር, ምርት እና የአዎንታዊ ንጥረ ነገሮች ብዛት.

አልጎሪዝምእንደዚህ ያለ ትርጉም

    ዜሮን ለተለዋዋጭ S እና K እና ለተለዋዋጭ P እንመድባለን 1. እንደ ደንቡ, ድምር የተጠራቀመባቸው ተለዋዋጮች, እዚህ S እና k ነው, ሁልጊዜ ከሉፕ በፊት ወደ ዜሮ ይመለሳሉ, እና ተለዋዋጮች ምርቱ የሚሰላበት 1.

    ለ...ቀጣይ loopን በመጠቀም ሁሉንም የድርድር አካላት እናልፋለን እና እነሱ አዎንታዊ መሆናቸውን እንፈትሻለን (D(i) > 0)።

    ኤለመንቱ አወንታዊ ከሆነ እሴቱን ወደ ድምር S እሴት እንጨምራለን እና አዲሱን ድምር በተመሳሳይ ተለዋዋጭ ውስጥ እናከማቻለን። ተለዋዋጭ P በንጥሉ አወንታዊ እሴት ተባዝቷል እና በተለዋዋጭ ፒ ውስጥም ይከማቻል። እና 1 በተለዋዋጭ K ላይ እንጨምራለን እና አዲሱን እሴት በተመሳሳይ ተለዋዋጭ ውስጥ እናከማቻለን

ፕሮግራምይህ የአልጎሪዝም ክፍል የሚከተለውን ይመስላል።

S = 0፡ P = 1፡ K = 0

D(i) > 0 ከሆነ

S = S + D(i) ‘ መጠኑ በዚህ መንገድ ይከማቻል _

የድርድር አባሎች አወንታዊ እሴቶች D(i)

P = P*D(i) የአዎንታዊ ምርት ትርጉም

' የድርድር አካላት

K = K + 1 ‘ይህ ኦፕሬተር COUNTER ይባላል፣ ይኸው ነው።

' የአዎንታዊ ድርድር አባሎችን ብዛት ይገልጻል

ምሳሌ 9፡9. ያልተለመዱ የድርድር አባሎችን ድምርን፣ ምርትን፣ ቁጥርን እና አማካዩን ማግኘት(ኤም).

ለእንደዚህ አይነት ፍቺ የፕሮግራሙ ቁራጭ ይኸውና.

S = 0፡ P = 1፡ K = 0

D(i) Mod 2 ከሆነ<>0 ከዚያ

Ssr = S/k 'የጎደለ አባሎችን አማካኝ በማስላት ላይ

ይህንን የፕሮግራም ቁራጭ በምሳሌ 9.8 ካለው ፕሮግራም ጋር ያወዳድሩ። ይህ ፕሮግራም ከሞላ ጎደል የቀደመውን ይደግማል። በመግለጫው ውስጥ ያለው ሁኔታ ከተቀየረ ብቻ ነው። ሁኔታD(i) Mod 2<>0 ማለት በ 2 እኩል የማይከፋፈሉ የድርድር D(i) አካላትን እንፈልጋለን ማለት ነው፣ ማለትም ጎዶሎ አካላት። ሁኔታውን D(i) Mod 2 = 0 ካረጋገጥን የድርድር ክፍሎችን እንኳን እንመርጣለን።

እንደሚታወቀው መከፋፈል በ ሞድየቀረውን ክፍል በኢንቲጀር ይሰጣል። ለምሳሌ, ኦፕሬተሩን d = 34Mod4 ከፈጸሙ በኋላ, ተለዋዋጭ d ከ 2 ጋር እኩል ይሆናል. ስለዚህ, የ 4 ብዜት የሆኑትን የድርድር ክፍሎችን ለመምረጥ, D (i) Mod 4 = 0 የሚለውን ሁኔታ ማረጋገጥ አለብን. የሌሎች ቁጥሮች ብዜት የሆኑትን ንጥረ ነገሮች ከፈለግን ተመሳሳይ ይሁኑ። እነዚህ ሌሎች ቁጥሮች ከ 4 ይልቅ ይጻፋሉ።

ምሳሌ 9፡10. የድርድር አካላትን መጻፍአር(ኤን)፣ የ5 ብዜቶች፣ ወደ ሌላ ድርድር እና አዲሱን ድርድር ወደ ቅጹ በማውጣት።

ሌላ ድርድር እንጥቀስ፣ ለምሳሌ፣ R5(N)። በከባድ ሁኔታ ሁሉም ንጥረ ነገሮች የ 5 ብዜት ሊሆኑ ስለሚችሉ የዚህ አዲስ ድርድር መጠን ከመጀመሪያው ጋር ተመሳሳይ ነው ተብሎ መታሰብ አለበት።

የችግር ስልተ ቀመር፡

    ቆጣሪ k. ለ...ቀጣይ loop ኦፕሬተርን በመጠቀም ሁሉንም የድርድር አር(N) አካላት እንመለከታለን።

    If...ከዚያም ኦፕሬተር እና የድርድር ኤለመንትን በሞድ በማካፈል እያንዳንዱን ኤለመንትን ለ5 ብዜት እናረጋግጣለን።

    ኤለመንቱ የ 5 ብዜት ከሆነ፣ የ k=k+ 1 አይነት ቆጣሪን በመጠቀም ከ 1 ጀምሮ የድርድር R5(N) ኢንዴክሶችን እንፈጥራለን እና ወደዚህ ሌላ ድርድር -R5(N) እንፃፍ።

    k ከዜሮ የተለየ ከሆነ፣ ድርድር R5() በቅጹ ላይ ያሳዩ።

    k ከዜሮ ጋር እኩል ከሆነ፣ “በ5 የሚካፈሉ ምንም ንጥረ ነገሮች የሉም” ብለን እናወጣለን።

የፕሮግራም ቁርጥራጭ;

R (i) Mod 5 ከሆነ k = k + 1: R5 (k) = R (i)

k ከሆነ<>0 ከዚያ

አትም "በ 5 ምንም ንጥረ ነገሮች የሉም"

ቀለበቶች በሌሎች loops ውስጥ ሊጣበቁ ይችላሉ።

ስራውን እናሳይ የጎጆ ቀለበቶች . ከዚህ በታች ያለው ፕሮግራም የዑደት ቆጣሪዎችን i, j እና k ዋጋዎችን ያሳያል. ከ i, j, k ውፅዓት, የጎጆ ቀለበቶች እንዴት እንደሚፈጸሙ ግልጽ ይሆናል.

የግል ንዑስ frmCycle_Dblክሊክ()

ScaleMode = 4 'አሃዶች - ምልክቶች

ለ i = 1 ወደ 3 'ውጫዊ loop

አትም "i ="; እኔ;

ለ j = 1 ለ 4 '1 ኛ የተከተተ ሉፕ

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

አትም "j ="; j;

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

ለ k = 1 ለ 5 ‘2ኛ የተከተተ loop

የሚታየው ቅጽ (ምስል 1) የሶስቱን ቀለበቶች ቆጣሪዎች የማውጣት ውጤቶችን ያሳያል-የውጭ ዑደት - ቆጣሪ i ፣ የመጀመሪያው የጎጆው loop - ቆጣሪ j እና ሁለተኛው ፣ ውስጣዊ loop - ቆጣሪ k. እንደምናየው፣ በጣም ቀርፋፋ ቆጣሪ የውጪ ዑደት ነው።(poi) እና “ፈጣኑ” የውስጠኛው የሉፕ ቆጣሪ ነው (በዚህ መሠረት).

ፕሮግራሙ የሚከናወነው በfrmCicli ቅጽ ላይ ያለውን የግራ መዳፊት አዘራር ሁለቴ ጠቅ ካደረገ በኋላ ነው።

CurrentX, CurrentY - የህትመት ዘዴን በመጠቀም የመረጃ ውፅዓት ለማግኘት የመነሻ ነጥብ የ X, Y መጋጠሚያዎችን የሚገልጹ የቅጽ ባህሪያት (በቅጹ ላይ የ X እና Y መጥረቢያዎች የሚገኙበትን ቦታ ስእል 1 ይመልከቱ).

TextWidth () በድርብ ጥቅሶች ውስጥ እንደ ክርክር በተግባሩ ውስጥ የተገለጸውን የጽሑፍ ስፋት የሚመልስ ተግባር ነው።

ባለ ሁለት ገጽታ ድርድሮች (ማትሪክስ) በሚሰሩበት ጊዜ የተቀበሩ ቀለበቶች ጥቅም ላይ ይውላሉ። ነገር ግን በአንዳንድ ተግባራት የሁለት-ልኬት ድርድር ንጥረ ነገሮችን ግብአት እና ውፅዓት ሳያካትት እራስዎን በአንድ ዙር ብቻ መወሰን ይችላሉ። አንዳንድ የማትሪክስ ፕሮግራሚንግ ምሳሌዎችን እንመልከት።

ምሳሌ 9፡11. የአንድ ማትሪክስ (ባለሁለት-ልኬት ድርድር) የኢንቲጀር ግቤት እና ውፅዓትintA(ኤን).

ማትሪክስ ማስገባት ይችላሉ በረድፎች እና በአምዶች . ቀላል ነው - በመስመር ላይ ፣ የድርድር አካላትን ውፅዓት ከገቡ በኋላ ወዲያውኑ ወደ ቅጹ ፕሮግራም ካዘጋጁ።

ማትሪክስ ግቤት እና ውፅዓትመስመር በመስመር - ቁራጭ 1.

Dim M እንደ ኢንቲጀር፣ N እንደ ኢንቲጀር፣ i እንደ ኢንቲጀር፣ j እንደ ኢንቲጀር

Dim intA() እንደ ኢንቲጀር ተለዋዋጭ ድርድር ያውጃል።

M = Val (txtN.Text) 'M - የመስመሮች ብዛት

N = Val(txtN.Text) 'N - የአምዶች ብዛት

ReDim intA(M፣ N) እንደ ኢንቲጀር ‘ ድርድርን እንደገና ይግለጹ

For i = 1 To M ‘እሴቱን ሙሉ በሙሉ እቆያለሁ

በ j ላይ ያለው የጎጆው ዑደት አይተገበርም።

አትም ""; intA (i, j); ' ውፅዓት መስመር በመስመር

አትም ' ወደ አዲስ መስመር መጀመሪያ ይሂዱ

ማትሪክስ በአምዶች ለማስገባት የውጪውን ዑደት በ j (የአምድ ቁጥሮችን ይገልፃል) እና በ i ውስጥ ያለው የውስጥ ዑደት (የረድፍ ቁጥሮችን ይገልጻል) ማድረግ አለብዎት።

ማትሪክስ ግቤት እና ውፅዓትበአምዶች ቁርጥራጭ 2.

PrY = 2500፡ CurrentY = PrY ‘PrY የጅማሬውን Y መጋጠሚያ ያዘጋጃል

በቅጹ ላይ የእያንዳንዱን አምድ የመጀመሪያ ክፍል ያሳያል

ለ j = 1 To N 'j ዋጋውን ሙሉ በሙሉ ይይዛል

'በላይ የተዘረጋው ሉፕ አይገደልም።

intA (i፣ j) = InputBox("Element intA(" & i & "," & j & ")"፣ _

"የግቤት ማትሪክስ intA(" & M & "," እና N & ")))

የህትመት ትር (6 * j); intA(i፣ j) ‘ውፅአት በአምዶች

CurrentY = PrY ' የመጀመሪያውን ኤለመንት ለማሳየት

' ቀጣይ ዓምድ

ይህ ሁለተኛው የፕሮግራም ቁራጭ ከመጀመሪያው ክፍልፋይ የመጀመሪያዎቹን 5 መስመሮች አይደግምም. የትር (6 * j) ተግባር የውጤቱን ጅምር በመስመር (በቁምፊዎች) ያዘጋጃል ፣ ከቅጹ ግራ ጠርዝ ጀምሮ። እዚህ ያለው አስተባባሪ PrY ከ2500 እጥፍ ጋር እኩል ነው፣ ነገር ግን ሌላ እሴት መምረጥ ይችላሉ።

ምሳሌ 9፡12 . የድርድር አባል እሴቶችን ማዘዝ(ኤን) ወደ ላይ መውጣት።

ድርድሮችን ለማዘዝ በርካታ ስልተ ቀመሮች አሉ። ከመካከላቸው አንዱ ይኸውና፡- የጎጆ ቀለበቶችን በመጠቀምቀጥሎከመጀመሪያው ጀምሮ እስከ መጨረሻው ድረስ ያሉትን ንጥረ ነገሮች እንመርጣለን እና እያንዳንዳቸውን ከሚቀጥሉት አካላት ጋር እናነፃፅራለን ። የሚቀጥለው ንጥረ ነገር ከተመረጠው ያነሰ ከሆነ እኛ እንለዋወጣቸዋለን።

ይህን ስልተ ቀመር የሚተገበር የፕሮግራም ቁራጭ፡-

ለ i = 1 ወደ N - 1

ለ j = i + 1 ወደ N

ቪ(j) ከሆነ< V(i) Then P = V(i): V(i) = V(j): V(j) = P

እስቲ ይህን የፕሮግራሙን ቁርሾ እናብራራ።

ውጫዊ loopን ከቆጣሪ i ጋር በመጠቀም፣ ከተከታይ አካላት ጋር ለማነፃፀር ኤለመንት V(i)ን እንመርጣለን። የውስጠኛው ዑደት ከቆጣሪ j ጋር ለንፅፅር ቀጣይ የV(j) አካላትን ይመርጣል። የመነሻ ዋጋው ከ i + 1 ጋር እኩል ነው. ይህ ከቀጣዮቹ የመጀመሪያ አካል ነው.

የኤለመንቶችን V(i) እና V(j) እሴቶችን ለመለዋወጥ አንዳንድ ተለዋዋጮችን እናስተዋውቃለን ፣ በዚህ ውስጥ የአንዱን ድርድር አካላት ዋጋ ለጊዜው “ደብቅ” (በፕሮግራሙ ውስጥ ይህ V (i) ነው ። ))። ከዚያም ኤለመንቱ V (i) የ elementV (j) እሴት ይመደባል, እና elementV (j) በተለዋዋጭ ፒ ውስጥ የተቀመጠው እሴትV (i) ይመደባል. በ P ውስጥ V (j) ዋጋን “ከተደበቅነው” እሴት ለመለዋወጥ ኮድ እንደዚህ ይሆናል P = V (j): V (j) = V (i): V(i) = P ውጤቱ አይለወጥም.

አደራደሩን በሚወርድበት ቅደም ተከተል ደርድር, የማረጋገጫ ሁኔታን በ V (j)> V (i) ቅጽ ውስጥ መፃፍ በቂ ነው, ማለትም የእኩልነት ምልክቱን ወደ ሌላ ይለውጡ.

አደራደሩ አሃዛዊ ካልሆነ ፣ ግን ሕብረቁምፊ እና የአያት ስሞች ወደ ድርድሩ አካላት ከተገቡ ፣ ፕሮግራሙን በምሳሌ 9.12 በመጠቀም ፣ የአያት ስሞችን ዝርዝር በፊደል ቅደም ተከተል ማዘዝ ይችላሉ። እውነታው ግን በኮምፒተር ውስጥ ለሚጠቀሙት የፊደላት ፊደላት, የሚከተሉት አለመመጣጠኖች እውነት ናቸው.< Б < В < Г….< Я и т. д., поскольку числовые коды букв алфавита последовательно увеличиваются, начиная с А и до конца алфавита. Это же справедливо и для букв английского алфавита.

ምሳሌ 9፡13 . ለማትሪክስ ያልተለመዱ አምዶች የአዎንታዊ አካላት ድምርን በማስላት ላይኤፍ(ኤም, ኤን) እና መጠኑን ወደ ቅጹ ያወጡ.

የፕሮግራም ስልተ ቀመር፡

    ከደረጃ 2 ጋር የውጪውን ዑደት በመጠቀም ፣ ከመጀመሪያው አምድ ጀምሮ የማትሪክስ ያልተለመዱ አምዶች መረጃ ጠቋሚ እንሰራለን።

    የአዎንታዊ አካላት ድምር የሚከማችበትን ድምር S ዳግም እናስጀምረዋለን።

    በውስጠኛው ዑደት ውስጥ የድርድር ኤለመንት ምልክትን እንፈትሻለን።

    የድርድር ኤለመንት አወንታዊ ከሆነ (> 0) ድምር S እናሰላለን።

    ከውስጣዊው ዑደት መጨረሻ በኋላ, ድምር S በቅጹ ላይ እናሳያለን.

ቁርጥራጭ ፕሮግራሞች:

ለ j = 1 ወደ N ደረጃ 2

F(i፣ j) > 0 ከሆነ S = S + F(i፣ j)

"የአምድ ድምር" አትም; j; ":"; S 'j - የአምድ ቁጥር!

የጎጆ ቀለበቶች እንዲያደራጁ ያስችሉዎታል አማራጮችን መቁጠር እና በመተንተን ሊፈቱ የማይችሉ ችግሮችን መፍታት. በፍለጋው ምክንያት, የመፍትሄ አማራጮች ተገኝተዋል, ከእነዚህም መካከል የችግሩን ሁኔታዎች የሚያሟሉ አንድ ወይም ብዙ ተመርጠዋል.

ምሳሌ 9፡14. 1801 ሩብሎች አሉ. ለ 31 ሩብልስ ምን ያህል ቸኮሌት መግዛት ይችላሉ? እና ቡኒዎች ለ 18 ሩብልስ ሁሉንም ገንዘብ ሙሉ በሙሉ ለማዋል.

ፕሮግራም፡

መጠን = 1801

AllChocolates = ድምር\31፡ AllBulks = ድምር\18

ለ i = 1 ወደ AllChocolates

ለ j = 1 ወደ VseBulk

ዋጋ = i * 31 + j * 18 'ጠቅላላ የግዢ ዋጋ

ዋጋ = 1801 ከሆነ ከዚያ

አትም "ቸኮሌት:"; እኔ; ትር (19); " ቡሎክ: "; ጄ

በሩሲያኛ የተሰየሙ ተለዋዋጮች የምንጠቀምበትን ፕሮግራም እናብራራ።

በመጀመሪያ, ለሙሉ መጠን ሊገዙ የሚችሉትን ከፍተኛው የቸኮሌት ብዛት ወይም ቡን ብቻ እንወስናለን. የቸኮሌት እና የጥቅልል ፍለጋዎችን ብዛት ለመገደብ የተገኙትን የAllChocolates እና AllBulks እሴቶችን እንጠቀማለን። ለእያንዳንዱ የቸኮሌት ብዛት (i) እና ጥቅል (j) ብዛት ለግዢያቸው አጠቃላይ ዋጋ እንወስናለን። የተሰላው ዋጋ 1801 ከሆነ, የተመረጠው አማራጭ ለችግሩ መፍትሄዎች አንዱ ነው.

የትር() ተግባር ከቅጹ ጠርዝ ላይ ከየትኛው ቦታ ይገልፃል ይህን ተግባር ተከትሎ የሚመጣው መረጃ ይታያል። ትር (19) ከሆነ ከ19ኛው ቦታ።

ፕሮግራሙ 3 ሊሆኑ የሚችሉ የግዢ አማራጮችን ያሳያል፡-

ቸኮሌት 7፣ ጥቅል 88

ቸኮሌት 25፣ ጥቅል 57

ቸኮሌት 43 ፣ ጥቅል 26

የማያሻማ መልስ መስጠት ከፈለጉ, ተጨማሪ ቅድመ ሁኔታን ማዘጋጀት ያስፈልግዎታል. ለምሳሌ፣ “ከቸኮሌት ያነሱ ዳቦዎች ተገዙ። ከዚያ ብቸኛው መፍትሔ 3 ኛ አማራጭ ይሆናል.

የጎጆ ሉፕ ፕሮግራሚንግ በመጠቀም በቀላሉ በጉልበት ሊፈቱ የሚችሉ ብዙ የሂሳብ ችግሮች አሉ።

ከውሳኔ ሰጪ አወቃቀሮች በተጨማሪ ዑደት የሚባል ሌላ ዓይነት የቁጥጥር መዋቅር አለ.

ዑደትበርካታ የኦፕሬተሮች ድግግሞሾች በሚተገበሩበት ስልተ-ቀመር መዋቅር ነው።

በ Visual Basic ውስጥ ሶስት ዋና ዋና የሉፕ ዓይነቶች አሉ እነዚህም ለ፡ቀጣይ፣ ዶ፡ሉፕ እና ሳሉ፡Wend ኮንስትራክሽንስ በመጠቀም ይተገበራሉ።

ለ: ቀጣይ loop ጥቅም ላይ የዋለው የአንድ የተወሰነ የመግለጫዎች ድግግሞሾች ብዛት አስቀድሞ ሲታወቅ ነው። ይህ ንድፍ ይህን ይመስላል:

ለቆጣሪ = የመጀመሪያ እሴት ወደ የመጨረሻው ዋጋ ኦፕሬተሮች1 ኦፕሬተሮች2 ቀጣይ [ቆጣሪ]

ከላይ ያሉት መግለጫዎች ለመጀመሪያ ጊዜ ሲፈጸሙ የቆጣሪው ተለዋዋጭ የመጀመሪያ እሴት ይመደባል, ከዚያ በኋላ ሁለት አማራጮች ሊኖሩ ይችላሉ. የሁኔታ ቆጣሪ> የመጨረሻ ዋጋን በመፈተሽ ምክንያት እውነተኛው እሴት ከተገኘ ፣ ከዚያ ሉፕ ያበቃል ፣ እና ብሎኮች ኦፕሬተሮች1 እና ኦፕሬተሮች 2 በጭራሽ አይተገበሩም። በሌላ በኩል ፣ የሁኔታ ፈተናው ውጤት ሐሰት ከሆነ ፣ የመግለጫው እገዳዎች ለመጀመሪያ ጊዜ ይከናወናሉ ፣ ከዚያ በኋላ ወደ ምልልሱ መጀመሪያ የሚደረግ ሽግግር ይከሰታል። በመቀጠል የቆጣሪው ተለዋዋጭ እሴት ከደረጃ ቁልፍ ቃል በኋላ በሚገኝ አንድ ደረጃ ይጨምራል (ከሌለ ደረጃ = 1 ተቀናብሯል)። ከዚህ በኋላ, የሁኔታ ቆጣሪ> የመጨረሻ እሴት, ወዘተ እውነት እንደገና ይጣራል, የሉፕ መጨረሻው የሚከሰተው የዚህ ቼክ ውጤት ዋጋው እውነት በሚሆንበት ጊዜ ነው.

አንዳንድ ተጨማሪ ሁኔታዎች ሲሟሉ ብዙውን ጊዜ የ loop "ድንገተኛ" ማቋረጥ አስፈላጊ ነው. በዚህ አጋጣሚ በ loop ውስጥ ብዙውን ጊዜ የሚገኘውን Exit:For የሚለውን የአገልግሎት ሐረግ መጠቀም አለብዎት የቁጥጥር መዋቅርለምሳሌ፡-

ሁኔታ ከሆነ ከዚያ ለመውጣት ይውጡ

ሁኔታውን የማጣራት ውጤት እውነት ከሆነ ፣ ከዚያ የ loop አፈፃፀም ይቋረጣል ፣ እና ኦፕሬተር1 ብሎክ እንደገና ይፈጸማል ፣ ግን ኦፕሬተር2 ብሎክ አይሰራም።

አድርግ: loop. የ loop አካል ኦፕሬተሮች ድግግሞሾች ቁጥር አስቀድሞ በማይታወቅበት ጊዜ ጥቅም ላይ ይውላል። የዚህ ንድፍ አራት ዓይነቶች አሉ. የመጀመሪያዎቹን ሁለቱን ሲጠቀሙ ሉፕ ብዙ ጊዜ ይፈጸማል ወይም በጭራሽ አይሆንም።

ሁኔታ Loop መግለጫዎች ድረስ አድርግ

ሁኔታውን የማጣራት ውጤት ሐሰት ከሆነ ፣ የመግለጫዎቹ እገዳ ተፈፃሚ ይሆናል ፣ አለበለዚያ ሽግግሩ የሚደረገው ከአገልግሎት ቃል በኋላ ወደሚገኘው መግለጫ ነው Loop። በሌላ በኩል ፣ የሁኔታው የመጀመሪያ ሙከራ ውጤቱን ከመለሰ ፣ ከዚያ ምልልሱ አንድ ጊዜ እንኳን አይከናወንም።

የሁኔታ ምልልስ መግለጫዎችን ያድርጉ

ሁኔታው እውነት ከሆነ የመግለጫው እገዳ ተፈፃሚ ይሆናል, ነገር ግን ሐሰት ከሆነ, ማለትም, የቼክ ውጤቱ ሐሰት ነው, ከዚያም ምልልሱ አንድ ጊዜ እንኳን አይፈጸምም.

የመጨረሻዎቹ ሁለት ግንባታዎች ጥቅም ላይ ከዋሉ, ምልልሱ ቢያንስ አንድ ጊዜ ይከናወናል.

እስከ ሁኔታ ድረስ መግለጫዎችን ያድርጉ

የመግለጫው እገዳ የሚከናወነው ሁኔታውን የመፈተሽ ውጤቱ ውሸት እስከሆነ ድረስ ነው, አለበለዚያ ምልልሱ ያበቃል.

በሁኔታዎች ጊዜ መግለጫዎችን ያድርጉ

ሁኔታው ውሸት ከሆነ የመግለጫዎቹ እገዳ ተፈጽሟል, ግን እውነት ከሆነ, ማለትም. የቼክ ውጤቱ እውነት ነው, ከዚያም የዑደቱ መጨረሻ ይከሰታል.

loop ሳለ: Wend. እንዲሁም የ loop አካል መግለጫዎች ድግግሞሾች ቁጥር አስቀድሞ በማይታወቅበት ጊዜ ጥቅም ላይ ይውላል እና የሚከተለው አገባብ አለው፡

ሁኔታ Wend መግለጫዎች ሳለ

ሁኔታውን የማጣራት ውጤት እውነት ከሆነ የኦፕሬተሮች እገዳ ተፈፅሟል, አለበለዚያ ሽግግሩ ወደ ኦፕሬተር የሚደረገው ከ Wend አገልግሎት ቃል በኋላ ነው. በሌላ በኩል ፣ የሁኔታው የመጀመሪያ ሙከራ ውጤቱን ከመለሰ የውሸት ፣ ከዚያ ምልልሱ አንድ ጊዜ እንኳን አይከናወንም።

ቪቢኤ የዑደቶች አደረጃጀት.

የሉፕ መግለጫዎች አንድን ድርጊት ወይም የድርጊት ቡድን የተወሰኑ ጊዜያትን ለመድገም ይጠቅማሉ። የድግግሞሽ ብዛት (የድግግሞሽ ድግግሞሽ) አስቀድሞ ሊወሰን ወይም ሊሰላ ይችላል።

ቪቢኤ ሁለት ዓይነት የሎፒንግ ግንባታዎችን ይደግፋል፡-

  1. ድግግሞሾች ቋሚ ቁጥር ያላቸው (ሎፕስ) የተገላቢጦሽ ቀለበቶች).
  2. ላልተወሰነ የድግግሞሽ ብዛት ያላቸው ቀለበቶች ( ሁኔታዊ ቀለበቶች).

ለሁሉም ዓይነት ዑደቶች ጽንሰ-ሐሳቡ ጥቅም ላይ ይውላል loop አካል , እሱም በ loop የመጀመሪያ እና የመጨረሻ መግለጫዎች መካከል የተዘጉ የመግለጫዎችን ብሎክ ይገልጻል። የ loop አካል መግለጫዎች አፈፃፀም እያንዳንዱ ድግግሞሽ ይባላልመደጋገም

ቋሚ ዑደቶች

VBA ቋሚ ዑደትን ለማደራጀት ሁለት የቁጥጥር አወቃቀሮችን ያቀርባል፡ ለ ... ቀጣይ (loop with a counter) እና ለያንዳንዱ ... ቀጣይ (loop with an inumeration)።

ኦፕሬተር ለ...ቀጣይ ይህ የተወሰነ የድግግሞሽ ብዛት የሚያስፈጽም የተለመደ የቆጣሪ ዑደት ነው። የ... የሚቀጥለው መግለጫ አገባብ፡-

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

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

ቀጣይ [<счетчик>]

ለ...ቀጣይ ኦፕሬተርን የመጠቀም ምሳሌ።

ዝርዝር 1. ለ … ቀጣይ ኦፕሬተር

ተግባር፡ ከተጠቃሚው ሁለት ቁጥሮችን የሚቀበል ፕሮግራም ይፍጠሩ።

በእነዚህ ሁለት ቁጥሮች በተጠቀሰው ክልል ውስጥ ያሉትን ሁሉንም ቁጥሮች ይጨምራል እና ከዚያ

የተገኘውን መጠን ያሳያል።

ንዑስ ናሙና7()

ዲም i እንደ ኢንቲጀር 'ሳይክል ቆጣሪ

Dim sStart 'የመጀመሪያ ቆጣሪ እሴት

የመጨረሻ ቆጣሪ እሴትን ደብዝዝ

Dim sSum As Long 'ውጤት ድምር

sStart = InputBox ("የመጀመሪያውን ቁጥር አስገባ:")

sEnd = InputBox ("ሁለተኛውን ቁጥር አስገባ:")

sSum = 0

ለ i = CInt(sStart) ወደ CInt(መጨረሻ)

sSum = sSum + i

ቀጥሎ i

MsgBox "ከ" & sStart &" ወደ " & sEnd &" ያሉት ቁጥሮች ድምር: " & sSum ነው.

መጨረሻ ንዑስ

የሉፕ መግለጫ ለእያንዳንዱ... ቀጣይየነገር አይነት ኦፕሬተሮች ምድብ ነው, ማለትም. በዋናነት ስብስቦችን ይመለከታልዕቃዎች, እንዲሁም ድርድሮች . የ loop አካል በድርድር ወይም በስብስብ ውስጥ ካሉት ንጥረ ነገሮች ብዛት ጋር የሚዛመደው የተወሰነ ጊዜ ብዛት ይፈጸማል። ለእያንዳንዱ...የሚቀጥለው መግለጫ ቅርጸት፡-

ለእያንዳንዱ<элемент>ውስጥ<группа> <блок операторов>ቀጣይ [<элемент>]

ሁኔታዊ ዑደቶች (ያልተገለጹ ቀለበቶች)

ተደጋጋሚ ድርጊቶች በተወሰኑ ሁኔታዎች ውስጥ ብቻ መከናወን ሲያስፈልግ ሁኔታዊ ቀለበቶች ጥቅም ላይ ይውላሉ. የድግግሞሾቹ ቁጥር አልተገለጸም እና በአጠቃላይ ከዜሮ ጋር እኩል ሊሆን ይችላል (በተለይም, ቅድመ ሁኔታ ላላቸው ቀለበቶች). ሁኔታዊ loopsን ለማደራጀት VBA ለገንቢዎች በርካታ የቁጥጥር አወቃቀሮችን ያቀርባል፡-

  • በምርመራው ሁኔታ አይነት እና ይህን ቼክ ለማጠናቀቅ የሚፈጀው ጊዜ የሚለያዩ አራት አይነት ዶ..ሎፕስ።
  • ቀጣይነት ያለው ምልልስ እያለ….

የDo While... Loop የተለመደ ነው። ከቅድመ ሁኔታ ጋር loop. የሉፕ አካሉ ከመፈጸሙ በፊት ሁኔታው ​​​​ይጣራል. ዑደቱ እስኪያልቅ ድረስ ሥራውን ይቀጥላል<условие>ተፈጽሟል (ማለትም እውነት አለው)። ቼኩ የሚካሄደው መጀመሪያ ላይ ስለሆነ የሉፕ አካሉ በፍፁም ሊፈጸም አይችልም። አድርግ ሳለ... Loop ቅርጸት፡-

ሳለ አድርግ<условие>

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

ሉፕ

ዝርዝር 2. በሚያደርጉት ጊዜ... ሉፕ

ተግባር፡ የተጠቃሚ ግብአት የሚፈልግ ፕሮግራም ፍጠር

የዘፈቀደ የቁጥሮች ቅደም ተከተል። ግቤት መቋረጥ አለበት።

የገቡት ያልተለመዱ ቁጥሮች ድምር ከ100 በላይ ከሆነ በኋላ ብቻ ነው።

ንዑስ ናሙና 8 ()

Dim OddSum እንደ ኢንቲጀር ‘የተለያዩ ቁጥሮች ድምር

Dim OddStr As String 'ያልተለመዱ ቁጥሮች ያለው ሕብረቁምፊ

Dim Num 'የገቡትን ቁጥሮች ለመቀበል

OddStr = "" የውጤት ሕብረቁምፊ ማስጀመሪያ

OddSum = 0 'OddSum ን ማስጀመር

OddSum እያለ ያድርጉ< 100 ‘начало цикла

ቁጥር = InputBox ("ቁጥር አስገባ:")

ከሆነ (ቁጥር Mod 2)<>0 ከዚያ 'ተመጣጣኝ ማረጋገጫ

OddSum = OddSum + Num 'የተለያዩ ቁጥሮች ድምር

OddStr = OddStr እና NUM & ”

ካለቀ

ሉፕ

‹ሕብረቁምፊውን ባልተለመዱ ቁጥሮች ያትሙ

የMsgBox መጠየቂያ፡=”ያልተለመዱ ቁጥሮች፡” እና OddStr

መጨረሻ ንዑስ

መግለጫ በሚሰጥበት ጊዜ አዙሩለድርጅት የተነደፈሉፕ ከድህረ-ሁኔታ ጋር. የሉፕ አካሉ ቢያንስ አንድ ጊዜ ከተፈፀመ በኋላ ሁኔታው ​​ይጣራል. ዑደቱ እስከሚቀጥለው ድረስ ሥራውን ይቀጥላል<условие>እውነት ሆኖ ይቆያል። በቅርጸት ጊዜ አዙር፦

መ ስ ራ ት<блок операторов>ሉፕ እያለ<условие>

ዝርዝር 3. ምልልስ ከድህረ ሁኔታ ጋር

ተግባር፡ ለጨዋታው ፕሮግራም ፍጠር "ቁጥሩን ገምት" ፕሮግራሙ በዘፈቀደ መሆን አለበት።

ከ1 እስከ 1000 ባለው ክልል ውስጥ ቁጥርን የማመንጨት መንገድ ተጠቃሚው አለበት።

"ይህን ቁጥር መገመት. ፕሮግራሙ ለእያንዳንዱ የገባው ቁጥር ፍንጭ ያሳያል

"የበለጠ" ወይም "ያነሰ"

ንዑስ ናሙና 8 ()

ጊዜ ቆጣሪን በዘፈቀደ ያዛውሩ 'የነሲብ ቁጥር ጄኔሬተርን ያስጀምሩ

ዲም msg As String ' የመልእክት ሕብረቁምፊ

ሚስጥራዊ ቁጥርን እንደ ረጅም፣ የተጠቃሚ ቁጥር እንደ ተለዋጭ ደብዝዝ

ጀምር፡ SecretNumber = Round(Rnd * 1000) ‘ ኮምፒውተር የተፈጠረ ቁጥር

የተጠቃሚ ቁጥር = ባዶ ቁጥር በተጠቃሚው የገባ

ጨዋታ አድርግ

ጉዳይ እውነትን ይምረጡ

ጉዳይ ኢምፕቲ(የተጠቃሚ ቁጥር)፡ msg = "ቁጥር አስገባ"

የጉዳይ ተጠቃሚ ቁጥር > ሚስጥራዊ ቁጥር፡ msg = "በጣም ብዙ!"

የጉዳይ ተጠቃሚ ቁጥር< SecretNumber: msg = “Слишком мало!”

ምርጫን ጨርስ

የተጠቃሚ ቁጥር = InputBox(ጥያቄ፡=msg፣ ርዕስ፡="ቁጥሩን ገምት")

የተጠቃሚ ቁጥር እያለ ሉፕ ያድርጉ<>ሚስጥራዊ ቁጥር

' ምርመራ

MsgBox ("እንደገና ይጫወቱ?"፣ vbYesNo + vbQuestion፣ "ገምተሃል!") = vbYes ከሆነ

GoTo ጀምር

ካለቀ

መጨረሻ ንዑስ

ቀለበቶች ያድርጉ እስከ... ሉፕ እና ያድርጉ... እስከ ሉፕ ​​ያድርጉ ቀደም ሲል የተነጋገሩት ሁኔታዊ loops ተገላቢጦሽ ናቸው። በአጠቃላይ ፣ እነሱ በተመሳሳይ ሁኔታ ይሰራሉ ​​\u200b\u200b፣ የሉፕ አካሉ ሁኔታው ​​ውሸት ከሆነ (ማለትም) ካልሆነ በስተቀር ይከናወናል ።<условие>=ውሸት)። አድርግ እስከ... Loop ቅርጸት፡-

ድረስ ያድርጉት<условие> <блок операторов>ሉፕ

አድርግ... Loop እስከ loop ቅርጸት፡-

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

ሉፕ ድረስ<условие>

ተግባራዊ ተግባር፡-የተገለበጠ የሉፕ መግለጫዎችን በመጠቀም ፕሮግራሞቹን በዝርዝር 10 እና 11 እንደገና ይፃፉ።

ሉፕ እያለ... ዌንድ ሁኔታዊ ምልልሶችንም ይመለከታል። ይህ ኦፕሬተርከDo While... Loop መዋቅር ጋር ሙሉ ለሙሉ የሚስማማ ነው። ሳለ...Wend loop ቅርጸት፡-

እያለ<условие>

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

Wend

የዚህ ኦፕሬተር ልዩ ባህሪ የ loop አካልን ማጠናቀቅ (ማቋረጥ) ማስገደድ የማይቻል ነው (የኤግዚት ዶ ኦፕሬተር በ While ... Wend loop ውስጥ አይሰራም)።

ዑደት ማቋረጥ

ድግግሞሹን ቀደም ብሎ ለማቋረጥ እና ከሉፕ ለመውጣት የመውጣት መግለጫው ጥቅም ላይ ይውላል። ይህ ኦፕሬተር ከ... Wend በስተቀር በማንኛውም ሳይክል መዋቅር ውስጥ ተፈጻሚ ይሆናል። ዑደትን ለመስበር ውጣን ለመጠቀም አጠቃላይ አገባብ፡-

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

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

ውጣ (ለ | አድርግ)

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

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

የመውጫ መግለጫው ሲተገበር ዑደቱ ይቋረጣል እና መቆጣጠሪያው መግለጫውን ተከትሎ ወደ መግለጫው ይተላለፋል<конец_цикла>. በ loop አካል ውስጥ ብዙ የመውጫ መግለጫዎች ሊኖሩ ይችላሉ።

ዝርዝር 4. ከ loop ለመውጣት ያስገድዱ

ንዑስ ናሙና9()

ለ i = 1 እስከ 10000000

I = 10 ከሆነ ከዚያ ውጡ ለ ‹ loop› ቆጣሪው 10 ሲደርስ ውጣ

ቀጥሎ

ከተከታታዩ ትምህርት፡ " ፕሮግራሚንግ በ Visual Basic.NENለትምህርት ቤት ልጆች"

ከComboBox መቆጣጠሪያ ጋር በደንብ ያውቁታል።
በዚህ ትምህርት በ loop ኦፕሬተሮች ላይ በማተኮር የ Visual Basic.Net ቋንቋ ኦፕሬተሮችን ጥናታችንን እንቀጥላለን።
ሳይክል አልጎሪዝም አወቃቀሮችሶስት ዓይነቶች አሉ:

  1. የሉፕ አካሉ የሚከናወንበት የቆጣሪ ቀለበቶች የተወሰነ መጠንአንድ ጊዜ፤
  2. ድርድሮችን ወይም ስብስቦችን ለማስኬድ ቀለበቶች;
  3. ሁኔታዊ ዑደቶች፣ ሁኔታው ​​እውነት ሆኖ ሳለ (ወይም ሁኔታው ​​እውነት እስኪሆን ድረስ) የሉፕ አካሉ የሚፈጸምበት።

በዚህ ትምህርት የ loop ኦፕሬተርን በቆጣሪ (ለ . . . ቀጣይ) እንመለከታለን. ይህንን ኦፕሬተር በመጠቀም ፕሮጀክት እንፃፍ።

ዑደትቆጣሪ ጋር ለ. . . ቀጣይ t ምን ያህል ድግግሞሽ መከናወን እንዳለበት አስቀድሞ ሲታወቅ ጥቅም ላይ ይውላል.

ንድፍ አግድ

የኦፕሬተሩ አጠቃላይ እይታ

ለቆጣሪ = StartValue To EndValue Loop Body Next [Counter]

የኦፕሬተሩ አገባብ እንደሚከተለው ነው፡- ከቁልፍ ቃላቱ የሚጀመረው መስመር የሉፕ ራስ ነው፣ እና ከቀጣዩ ቁልፍ ቃል ጋር ያለው መስመር የሉፕ መጨረሻ ነው፣ በመካከላቸውም የሉፕ አካል የሆኑ መግለጫዎች አሉ።

ኦፕሬተርን ለማስኬድ ስልተ-ቀመር. . . ቀጥሎ

  1. የቆጣሪው ተለዋዋጭ እሴት ከStarValue ጋር እኩል ተቀናብሯል።
  2. የሁኔታ ቆጣሪው ተረጋግጧል<= КонЗнач
  3. ሁኔታው ከተሟላ, የሉፕው አካል ይከናወናል. የቆጣሪው ተለዋዋጭ በደረጃ እሴት ይቀየራል፡ ቆጣሪ = ቆጣሪ + ደረጃ።
  4. የቆጣሪው ተለዋዋጭ እሴት ConValue ላይ ሲደርስ ምልክቱ ይወጣል እና የሚከተሉት መግለጫዎች ይከናወናሉ.

የፕሮግራም አድራጊው ያለጊዜው መውጣትን ከ loop መውጣትን በመጠቀም Exit For construct ማደራጀት ይችላል። በዚህ አጋጣሚ ዑደቱ በራስ-ሰር ይወጣል እና መቆጣጠሪያው ዑደቱን ተከትሎ ወደሚቀጥለው ትዕዛዝ ይተላለፋል።

ፕሮጀክት "በተቀማጭ ላይ ገቢ"

በተቀማጭ ገንዘብ ላይ ገቢን የሚያሰላ እና ቀላል እና የተወሳሰቡ ወለድ ስሌት የሚያቀርብ ፕሮጀክት ይጻፉ። ቀላል ወለድ የሚሰበሰበው በተቀማጭ ዘመኑ መጨረሻ ላይ ነው፣ ውህድ ወለድ በየወሩ ይሰበሰባል እና ወደ መጀመሪያው የተቀማጭ መጠን ይጨመራል፣ እና በሚቀጥለው ወር ወለድ በአዲሱ መጠን ይሰበሰባል። የሚመከረው ቅጽ በሥዕሉ ላይ ይታያል.

የማስፈጸሚያ ቴክኖሎጂ

ይህ አጋዥ ስልጠና የተወሰነ ቁጥርን ለመድገም ለ...ቀጣይ loop እንዴት መጠቀም እንደሚቻል ያሳያል።

የተወሰኑ ጊዜያት የተደጋገሙ ወይም አንዳንድ ሁኔታዎች እስኪሟሉ ወይም እስካልተሟሉ ድረስ የሂደቱ ማናቸውም ድርጊቶች ተጠርተዋል። ዑደት .

በ loop መዋቅር ውስጥ የተካተቱትን ሁሉንም መግለጫዎች አንድ ጊዜ የማስፈጸም ሂደት ይባላል loop መደጋገም.

ሁልጊዜ የተወሰነ ጊዜ የሚፈጽም የሉፕ መዋቅሮች ተጠርተዋል የድግግሞሽ ቋሚ ቁጥር ያላቸው loops. ሌሎች የሉፕ አወቃቀሮች በተወሰኑ ሁኔታዎች ስብስብ ላይ በመመስረት ተለዋዋጭ ቁጥር ይደግማሉ. እንዲህ ያሉት ዑደቶች ይባላሉ ያልተወሰነ ዑደቶች.

በ loop መጀመሪያ እና መጨረሻ መካከል ያለው የመግለጫዎች እገዳ ይባላል "ሉፕ አካል".

በጣም ቀላሉ የሉፕ መዋቅር ነው ቋሚ ዑደት .

ለ..የሚቀጥለው ዙር

አገባብ

ቆጣሪ = ጀምርመጨረሻ
መግለጫዎች
ቀጣይ [ ቆጣሪ]

ቆጣሪ - ማንኛውም VBA የቁጥር ተለዋዋጭ
ጀምር - ለቆጣሪው ተለዋዋጭ የመጀመሪያውን ዋጋ የሚገልጽ ማንኛውም የቁጥር አገላለጽ
መጨረሻ - ለቆጣሪው ተለዋዋጭ የመጨረሻውን ዋጋ የሚገልጽ የቁጥር አገላለጽ


በነባሪ VBA ተለዋዋጭ ይጨምራል ቆጣሪበእያንዳንዱ ጊዜ መግለጫዎቹ በ loop ውስጥ ሲፈጸሙ በ 1. የተለየ ዋጋ ማዘጋጀት ይችላሉ ( ስተር መጠን- ማንኛውም የቁጥር አገላለጽ) የሚቀየርበት ቆጣሪ.

ቁልፍ ቃል ቀጥሎየ loop መጨረሻ እንደደረሰ ለVBA ይነግረዋል። አማራጭ ተለዋዋጭ ቆጣሪከቁልፍ ቃሉ በኋላ ቀጥሎተመሳሳይ ተለዋዋጭ መሆን አለበት ቆጣሪ, ከቁልፍ ቃሉ በኋላ የተገለጸው በ loop መዋቅር መጀመሪያ ላይ.


ከታች ያለው በጣም ቀላሉ loop ዝርዝር ነው። ለ..ቀጣይከ1 እስከ 10 ያሉትን የቁጥሮች ድምር ይቆጥራል፡



እና አሁን ለዑደት ሁለት አማራጮች ለ..ቀጣይከአንድ ሌላ የሉፕ እርምጃን በመጠቀም፡-



ትኩረት ይስጡ!የዑደት ቆጣሪውን ሲቀንስ ለ..ቀጣይሉፕ የሚፈፀመው የቆጣሪው ተለዋዋጭ ከመጨረሻው እሴቱ ጋር እስከተበለጠ ወይም እኩል እስከሆነ ድረስ እና የ loop ቆጣሪው ሲጨምር ሉፕው የሚሰራው የቆጣሪው ተለዋዋጭ ከመጨረሻው እሴት ያነሰ ወይም እኩል እስከሆነ ድረስ ነው።

ሉፕ ለእያንዳንዱ..ቀጣይ

ዑደት ለእያንዳንዱ..ቀጣይየዑደት ቆጣሪ አይጠቀምም. ዑደቶች ለእያንዳንዱ..ቀጣይበአንድ ቡድን ውስጥ ያሉ ንጥረ ነገሮች ካሉ ብዙ ጊዜ ይፈጸማሉ፣ ለምሳሌ የነገሮች ስብስብ ወይም ድርድር (በኋላ ላይ የሚብራራ)። በሌላ አነጋገር ዑደቱ ለእያንዳንዱ..ቀጣይበቡድኑ ውስጥ ላለው እያንዳንዱ አካል አንድ ጊዜ ይከናወናል.

አገባብ

ለእያንዳንዱ ንጥረ ነገርውስጥ ቡድን
መግለጫዎች
ቀጣይ [ ንጥረ ነገር]

አካል - በአንድ የተወሰነ ቡድን ውስጥ ያሉትን ሁሉንም ንጥረ ነገሮች ለመድገም የሚያገለግል ተለዋዋጭ
ቡድን ስብስብ ነገር ወይም ድርድር ነው።
መግለጫዎች - አንድ፣ ብዙ ወይም ምንም የVBA መግለጫዎች (loop body)።