චක්‍රීය පරිගණක දත්ත සැකසුම් ක්‍රියාවලි ක්‍රමලේඛනය කිරීම. චක්‍රීය පරිගණක ක්‍රියාවලි ක්‍රමලේඛනය කිරීම. ප්රකාශය සඳහා භාවිතා කිරීමේ උදාහරණයක්

ක්‍රමලේඛනයේදී, ඒවායේ ක්‍රියාවලි වල විවිධ අගයන් සහිත එකම වැඩසටහන් ප්‍රකාශ සමූහය නැවත නැවත ක්‍රියාත්මක කිරීමට අවශ්‍ය කාර්යයන් බොහෝ විට ඇත. එවැනි ක්රියාවලීන් ලෙස හැඳින්වේ චක්රීයහෝ සරලව චක්ර.චක්‍රීයව පුනරාවර්තන ප්‍රකාශ සමූහයක් ඊනියා සාදයි ලූප් ශරීරය, සරල හෝ සංයුක්ත ප්‍රකාශනයකින් නිරූපණය කළ හැක. අපි ලූප් බොඩි එක වරක් ක්‍රියාත්මක කිරීම ලෙස හඳුන්වමු පුනරාවර්තනය.

වැඩසටහනක ලූපයක සිරුර සෑම විටම පූර්වයෙන් පවතී loop header, තනතුර අඩංගු loop operatorසහ පුනරාවර්තන ගණන (සෘජුව හෝ වක්‍රව) නිර්වචනය කරන ප්‍රකාශනයක්. ලූපයේ බඳ ලූප ක්‍රියාකරුගේ ක්‍රියාව බව සලකන්න; එබැවින්, ලූපයේ ශීර්ෂකය සහ බඳ වැඩසටහනේ වෙන් කළ නොහැකි ව්‍යුහාත්මක ඒකකයක් වේ. පහත දැක්වෙන පරිදි, "" යන යෙදුම භාවිතා කරයි loop operator", අපි ලූපයේ ශීර්ෂය සහ ශරීරය යන දෙකම අදහස් කරමු.

සියලුම ක්‍රමලේඛන පද්ධතිවල චක්‍ර සංවිධානය කිරීම සඳහා විශේෂිත වූ ඒවා ඇත loop operators, එය භාවිතා කිරීම "අතින්" චක්‍ර ක්‍රමලේඛනය කිරීමේ අවශ්‍යතාවයෙන් ක්‍රමලේඛකයා නිදහස් කරයි. MathCAD එවැනි ක්‍රියාකරුවන් වර්ග දෙකකට සහය දක්වයි - පූර්ව නියමය සමඟ චක්රය සදහා (එසේම හැඳින්වේ කවුන්ටරය සමඟ ලූප්) සහ පූර්ව කොන්දේසියක් සහිත ලූප් අතර . මෙම ක්රියාකරුවන්ගේ ව්යුහය පිළිබඳ විස්තරයක් වගුව 5 හි දක්වා ඇත.

5.4.1 ක්රියාකරු සදහා

පුනරාවර්තන ගණන කලින් තීරණය කර ඇති, එනම් කල්තියා දන්නා අවස්ථාවන්හිදී මෙම ක්‍රියාකරු භාවිතා කළ යුතුය.

ලූප ශීර්ෂකයමෙම ක්‍රියාකරුගේ (දකුණු operand) නම් විචල්‍යයක් අඩංගු වේ පරාමිතිය(හෝ කවුන්ටරය) චක්රය, සහ අගයන් ලැයිස්තුවමෙම පරාමිතිය. ලැයිස්තුවේ මූලද්‍රව්‍ය ගණන ද පුනරාවර්තන ගණන තීරණය කරයි - එක් එක් පුනරාවර්තනය අතරතුර, ලූප පරාමිතිය ශීර්ෂයේ දක්වා ඇති ලැයිස්තුවෙන් ඊළඟ අගය ලබා ගනී.

ලූප් පරාමිතියඅභ්‍යන්තර වැඩසටහන් විචල්‍යයක තත්ත්වය ඇති අතර එහි සියලුම ගුණාංග ඇත (5.1.4 වගන්තියේ විස්තර කර ඇත). රීතියක් ලෙස, ලූප් පරාමිතිය භාවිතා කරනුයේ ලූපයේ සිරුරේ ඇතුළත් ප්‍රකාශනවල දකුණු පැත්තේ, නමුත් එය ප්‍රකාශනවල වම් පැත්තේ (එනම්, දේශීය අර්ථ දැක්වීමේ වම් පසින්) එය භාවිතා කිරීම විධිමත් ලෙස තහනම් කර නැත. ක්රියාකරු "f"). ලූපයේ සිරුරේ පරාමිතියක් වෙනස් කර ඇත්නම්, එහි වෙනස් කළ අගය වලංගු වන්නේ වත්මන් පුනරාවර්තනය අවසන් වන තෙක් පමණක් බව මතක තබා ගත යුතුය, මන්ද ඊළඟ පුනරාවර්තනය ආරම්භ වීමට පෙර පරාමිතියට ඊළඟ අගය ලැබෙනු ඇත. ලූප ශීර්ෂයේ දක්වා ඇති ලැයිස්තුව.

විධිමත් ලෙස, ලූප් බොඩියේ ප්‍රකාශනවල ලූප් පරාමිතිය කිසිසේත් භාවිතා නොකිරීමට අවසර ඇත - මෙම අවස්ථාවේ දී, පරාමිති අගයන් ලැයිස්තුව කිසිදු කාර්යභාරයක් ඉටු නොකරයි - මෙම ලැයිස්තුවේ දිග පමණක් වැදගත් වේ, එය තීරණය කරයි (සමහර විට තේරුමක් නැති) පුනරාවර්තන ගණන.

අවසාන පුනරාවර්තනය අවසන් වූ පසු, ලූප් ප්‍රකාශයෙන් පසු වැඩසටහන් ප්‍රකාශය ක්‍රියාත්මක වේ. මෙම අවස්ථාවෙහිදී, සම්පූර්ණ කරන ලද ලූපයේ පරාමිතියක් ලෙස භාවිතා කරන විචල්‍යය එහි තිබූ අගය රඳවා ගනී අන්තිම එක ඇත්ත වශයෙන්ම සම්පූර්ණ කර ඇතපුනරාවර්තනය[*]. මෙම අගය සෑම විටම ලූප ශීර්ෂයේ දක්වා ඇති ලැයිස්තුවේ අවසාන අගය සමඟ සමපාත නොවන බව සලකන්න, මන්ද ක්‍රියාකරු ක්‍රියාරම්භ කරන විට ලූපයෙන් “මුල්” පිටවීමක් කළ හැකිය. කඩන්න ලූපයේ සිරුරේ ඇතුළත් වේ.

අගයන් ලැයිස්තුවලූප් පරාමිතිය ලූප් ශීර්ෂයේ ලියා ඇත්තේ "" සංකේතයට පසුවය. Î ", කට්ටලයක සාමාජිකත්වය දක්වයි (මෙම සංකේතය අතින් ඇතුල් කිරීමට අවශ්ය නොවේ - ක්රියාකරුට ඇතුල් වන විට එය ස්වයංක්රීයව දර්ශනය වනු ඇත. සදහා ) MathCAD භාවිතයට ඉඩ දෙයි ආකාර තුනක්මෙම ලැයිස්තුවේ ඇතුළත් කිරීම්: සෘජු මාරු කිරීම- ලැයිස්තු මූලද්‍රව්‍ය කොමා වලින් පැහැදිලිවම වෙන් කර ඇත, පරාමිතිය ඒවා දිස්වන අනුපිළිවෙලට ලැයිස්තුවෙන් අගයන් ලබා ගනී; ශ්‍රේණිගත විචල්‍ය විලාසයෙන් -ලැයිස්තුවේ මූලද්‍රව්‍ය අනුරූප ගණිත ශ්‍රේණි සාදයි; අරාව- ලැයිස්තු මූලද්‍රව්‍ය අනුපිළිවෙලින් ඒවායේ දර්ශක අනුපිළිවෙලට අරා මූලද්‍රව්‍යවල අගයන් ලබා ගනී (පළමුව, වමේ සිට දකුණට තීරු, පසුව ඉහළ සිට පහළට පේළි).

රූප සටහන 21 හි දැක්වෙන වැඩසටහන් තුන මඟින් ක්‍රියාකරුගේ විවිධ භාවිතයන් නිරූපණය කරයි සදහා .

වැඩසටහන කරුණ(n) සංඛ්‍යාවක සාධකය ගණනය කරයි n . මෙම වැඩසටහනේ ලූප් ක්‍රියාකරු සංයුක්ත ප්‍රකාශනයක කොටසකි, එය අනෙක් අතට, කොන්දේසි සහිත ක්‍රියාකරුවෙකුගේ ක්‍රියාකාරකම වේ. නැතිනම්. ලූප් පරාමිතිය කේ නිඛිල අංක ගණිත ශ්‍රේණියකින් අගයන් ලබා ගනී.

වැඩසටහන Ch(V,N,p) ආදාන දෛශිකය සකසයි වී , අගය සමඟ එය ප්රතිස්ථාපනය කිරීම පි දෙවන ආදාන දෛශිකයේ මූලද්‍රව්‍ය මගින් දර්ශක නියම කර ඇති එම මූලද්‍රව්‍ය එන් . මෙම උදාහරණයේ, loop පරාමිති අගයන් ලැයිස්තුවක් මම දෛශික මූලද්‍රව්‍ය සමූහයක් මගින් අර්ථ දක්වා ඇත එන් . මෙම වැඩසටහන් දෙකම ආදාන දත්ත පාලනය සිදු කරන අතර සත්‍ය වැඩසටහන් තර්ක වැරදි ලෙස සඳහන් කර ඇත්නම් ප්‍රධාන ඇල්ගොරිතම ක්‍රියාත්මක කිරීම අවහිර කරන බව සලකන්න.

වැඩසටහන L(M,z) උදාහරණයේ දී ඇත වී ), සවිස්තරාත්මක අදහස් සමඟ ඇති අතර පැහැදිලි කිරීමක් අවශ්ය නොවේ. මෙම වැඩසටහන මඟින් බහු ලූප් ප්‍රකාශ භාවිතා කිරීමේ හැකියාව විදහා දක්වයි, ඉන් එකක් ප්‍රකාශ අතරට ඇතුළත් වේ සිරුරතවත්. භාවිතය කූඩු ලූප- බහුමාන අරා සැකසීමට භාවිතා කරන සාමාන්‍ය තාක්‍ෂණයකි.

රූපය 21 - චක්‍ර ක්‍රමලේඛනයේ උදාහරණ සදහා


රූප සටහන 22 ක්‍රියාකරුවන් භාවිතා කිරීම නිරූපණය කරයි කඩන්න සහ දිගටම කරගෙන යන්න ලූපයේ ශරීරය තුළ. සාමාන්‍යයෙන්, මෙම ක්‍රියාකරුවන් තමන් විසින්ම ඔපෙරාන්ඩ් වේ කොන්දේසි සහිත ප්රකාශයන් නම් හෝ නැතිනම් .

ක්රියාකරු කඩන්න ("ගබ්සා කිරීම") බාධා කරයිලූපය ක්‍රියාත්මක කිරීම සහ බාධා කළ ලූප් ක්‍රියාකරු අනුගමනය කරමින් පාලනය ක්‍රියාකරු වෙත මාරු කිරීම. ක්රියාකරු නම් බව සලකන්න කඩන්න බාධා කූඩු ලූප්, පිටත ලූපය ක්රියාත්මක කිරීම දිගටම කරගෙන යනු ඇත.

ක්රියාකරු දිගටම කරගෙන යන්න ("දිගටම") වෙනස් ලෙස ක්රියා කරයි - ඔහු ලූපයේ වත්මන් පුනරාවර්තනයට පමණක් බාධා කරයිසහ මෙම ලූපයේ ශීර්ෂයට පාලනය මාරු කරයි, පසුව ලූපය ක්රියාත්මක වේ දිගටම පවතියිඊළඟ පුනරාවර්තනයේ සිට (ඇත්ත වශයෙන්ම, බාධා කළ පුනරාවර්තනය අවසන් එක නොවේ නම්).

ක්රියාකරු කඩන්න භාවිතා කිරීමට අවසර ඇත සහ පිටතචක්රයේ ශරීරය. මෙම අවස්ථාවෙහිදී, සම්පූර්ණ subroutine ක්‍රියාත්මක කිරීම බාධා වන අතර, එහි අවසාන සත්‍ය වශයෙන්ම ක්‍රියාත්මක කරන ලද ප්‍රකාශනයේ ඇගයීමේ ප්‍රතිඵලය ආපසු ලබා දෙනු ලැබේ.

රූපය 22 - ක්රියාකරුවන් භාවිතා කිරීමේ උදාහරණ කඩන්න සහ දිගටම කරගෙන යන්න

කාර්යය එකතුව(V) අදිශ සංඛ්‍යා දත්ත අඩංගු දෛශික මූලද්‍රව්‍ය පමණක් එකතු කර ඉතිරි මූලද්‍රව්‍ය මඟ හරියි. කාර්යය ප්රතිලෝම (V) මුල් දෛශිකයේ අනුරූප මූලද්‍රව්‍යවල ප්‍රතිලෝම අගයන් වන මූලද්‍රව්‍ය දෛශිකයක් සාදයි. එපමණක් නොව, ඊළඟ මූලද්‍රව්‍යයේ "0" අංකය තිබේ නම් හෝ සංඛ්‍යාත්මක වර්ගයක අදිශයක් නොවේ නම්, චක්රය බාධා ඇති වේ. ක්රියාකරු බව සලකන්න කඩන්න අවසාන උදාහරණයේ එය වැඩසටහනට බාධා නොකරයි, නමුත් පාලනය ක්රියාකරු වෙත මාරු කරයි ආපසු , වහාම ක්රියාකරු අනුගමනය සදහා .

5.4.3 ක්රියාකරු අතර

ක්රියාකරු මෙන් නොව සදහා , ප්රකාශ ශීර්ෂය අතර (පරිවර්තනයෙන් -" ආයුබෝවන්") පුනරාවර්තන ගණන පිළිබඳ පැහැදිලි ඇඟවීම් අඩංගු නොවේ - එහි අඩංගු වේ තාර්කික ප්රකාශනය, එහි අගය ස්වයංක්රීයව ගණනය කරනු ලැබේ ආරම්භයට පෙරඑක් එක් ඊළඟ පුනරාවර්තනය [†] ක්‍රියාත්මක කිරීම. මෙම ප්‍රකාශනය සත්‍ය වන තාක්, ලූපය පුනරාවර්තනය වෙමින් පවතී; ඊළඟ පුනරාවර්තනය අවසන් වූ පසු ප්‍රකාශනය අසත්‍ය වූ වහාම, ලූපයේ ඊළඟ පුනරාවර්තනය ක්‍රියාත්මක නොවනු ඇති අතර, ප්‍රකාශය අනුගමනය කරන ක්‍රමලේඛ ප්‍රකාශයට පාලනය ලැබෙනු ඇත අතර .

පැහැදිලිවම, ලූප ශීර්ෂය තුළ අනන්‍ය ලෙස සාවද්‍ය තාර්කික ප්‍රකාශනයක් තැබුවහොත්, මෙම ලූපය එහි කිසිදු පුනරාවර්තනයක් සම්පූර්ණ නොකරන අතර, මෙම ප්‍රකාශනය අනන්‍ය ලෙස සත්‍ය නම්, ලූපය අනන්ත වේ (අවසාන තත්වය ලෙස හැඳින්වේ. ලූප කිරීමවැඩසටහන්). එවැනි තත්ත්වයන් මඟහරවා ගැනීම සඳහා, තාර්කික ප්‍රකාශනයක ක්‍රියාවන්හි අගයන් වෙනස් කරන විචල්‍ය එකක් හෝ කිහිපයක් ඇතුළත් විය යුතුය. ලූපයේ ශරීරය තුළලූපය සීමිත වන පරිදි (ලූප වැලැක්වීමට වෙනත් ක්‍රම භාවිතා කළ හැක - නිදසුනක් ලෙස, ක්‍රියාකරුට ලූපයෙන් පිටවීමට බල කිරීම කඩන්න ).

ක්රියාකරු භාවිතා කිරීමේ උදාහරණ අතර රූප සටහන 23 හි පෙන්වා ඇත. එකම ගැටළුව විසඳීම සඳහා විකල්ප තුනක් ලබා දී ඇත: එක් එක් වැඩසටහන් F0 , F1 සහ F2 මූලාශ්ර දෛශිකයේ පළමු මූලද්රව්යයේ දර්ශකය ආපසු ලබා දෙයිවී නිශ්චිත අගය ඉක්මවාz .

පළමු වැඩසටහන (උදාහරණ ) කවුන්ටරයට එකක් එකතු කරයි කේ ලූපයේ ශරීරය තුළ අතර ඊළඟ එක දක්වා කේ මුල් දෛශිකයේ වෙනි මූලද්‍රව්‍යය නියමිත අගයට වඩා වැඩි නොවේ z . මෙයින් පසු, ලූපය අවසන් වන අතර වැඩසටහන මඟින් විචල්‍යයේ අවසාන වෙනස් කළ අගය ලබා දෙයි කේ , ගැටලුවට විසඳුම වන. චක්රය මෙන් නොව බව සලකන්න සදහා , කවුන්ටරය කේ මෙහිදී එය වෙනම ප්‍රකාශයන් සමඟ සැකසීම අවශ්‍ය වේ: ලූප ක්‍රියාකරුට පෙර ආරම්භ කරන්න (එනම්, එයට ආරම්භක අගයක් පවරන්න) සහ ලූපයේ සිරුරේ එහි අගය වෙනස් කරන්න.

විකල්පය බව දැකීම පහසුය ) වැඩසටහනේ සැලකිය යුතු අඩුපාඩුවක් ඇත: ගැටලුවට විසඳුමක් නොමැති විට, එනම් පරාමිතිය වන විට වැඩසටහන ලූප් වීම වළක්වන්නේ නැත. z දෛශිකයේ විශාලතම මූලද්රව්යයේ අගය ඉක්මවා යයි වී . මෙම උදාහරණයේ දී, එවැනි තත්වයක් තුළ ලූප් කිරීම ඇත්ත වශයෙන්ම සිදු නොවනු ඇත - නමුත් මෙය අපගේ වැඩසටහනේ කුසලතාව නොව, දෛශික දර්ශකයේ ප්රතිදානය පාලනය කරන MathCAD පද්ධතියයි. වී අවසර ලත් අගයන්ගෙන් පිටත සහ දෝෂ පණිවිඩයක් ජනනය කරනු ඇත.

මෙම අඩුපාඩුවෙන් නිදහස් විකල්පය වේ බී ) ලූපයේ සිරුරේ ඊළඟ දර්ශක අගයේ වලංගු භාවය සඳහා අමතර චෙක්පතක් අඩංගු වන අතර ක්‍රියාකරු සමඟ ලූපය බලහත්කාරයෙන් බාධා කරන වැඩසටහනක කඩන්න කෙටි පණිවිඩයක් නිකුත් කිරීමත් සමඟ සුදුසු තත්වයක.

සමහර විට මෙම ගැටලුව සඳහා වඩාත් ඵලදායී විසඳුම වන්නේ විකල්පයයි වී ), ක්‍රියාකරු කිසිසේත් භාවිතා නොකරයි අතර . මෙම වැඩසටහනේ විචල්යය කේ "විලාසයේ සංශුද්ධතාවය" පවත්වා ගැනීමට පමණක් භාවිතා වේ - ලූප් පරාමිතිය සැකසීම බැහැර කිරීමට මම ක්රියාකරුට පිටතින් සදහා .

රූපය 23 - චක්‍ර ක්‍රමලේඛනයේ උදාහරණ අතර

කාර්යයේ අරමුණ:

චක්‍රීය ක්‍රියාකරුවන් අධ්‍යයනය කරන්න, විට, කරන විට, චක්‍රීය ඇල්ගොරිතම රචනා කරන ආකාරය සහ ක්‍රමලේඛන ආකාරය ඉගෙන ගන්න.

කෙටි න්යායික තොරතුරු

සමහර ක්‍රියා (ක්‍රියාකරුවන් සහ මෙහෙයුම්) කිහිප වතාවක් පුනරාවර්තනය කිරීමට අවශ්‍ය වූ විට ලූප් ක්‍රියාකරුවන් භාවිතා කරන අතර එවැනි ඇල්ගොරිතම කොටස් ලූප් ලෙස හැඳින්වේ.

for loop operator

for loop ප්‍රකාශයේ මූලික ස්වරූපය වන්නේ:

සඳහා (ප්‍රකාශනය_1; ප්‍රකාශනය_2; ප්‍රකාශනය_3)

ක්රියාකරු;

කොහෙද ප්රකාශනය_1- චක්රය පරාමිතියෙහි ආරම්භක අගය;

ප්රකාශනය_2- චක්රය දිගටම කරගෙන යාම සඳහා කොන්දේසි පරීක්ෂා කිරීම;

ප්රකාශනය_3- චක්රය පරාමිතිය වෙනස් කිරීම (නිවැරදි කිරීම);

ක්රියාකරු- C භාෂාවෙන් සරල හෝ සංයුක්ත ක්රියාකරු.

ක්‍රියාකරුගේ මෙහෙයුම් ක්‍රමය පහත පරිදි වේ: එක් වරක් පමණක්, පළමු ප්‍රකාශනය_1 ගණනය කරනු ලැබේ, පසුව ප්‍රකාශනය_2 පරීක්ෂා කරනු ලැබේ, එය “සත්‍ය” නම්, වැඩසටහනේ චක්‍රීය අංශයක් ක්‍රියාත්මක වේ, එවිට පරාමිතිය නිවැරදි කරනු ලැබේ, යනාදිය. Expression_2 "false" අගය ගන්නා තුරු.

උදාහරණ වශයෙන්:සඳහා (k=1; k<5; k++)

printf(“\n %d”, k);

මෙම ක්රියාකරු ක්රියාත්මක කිරීමේ ප්රතිඵලයක් ලෙස, 1 සිට 4 දක්වා සංඛ්යා තීරුවක මුද්රණය කර ඇත.

ඔබට ලූප් පරාමිතියක් ලෙස ඕනෑම මූලික වර්ගයක විචල්‍යයක් භාවිතා කළ හැකිය.

උදාහරණ වශයෙන්:

for(ch='a'; ch<=’z’; ch++) // Вывод на экран букв

printf ("%c",ch); // ලතින් හෝඩිය

වැඩසටහනේ for loop වල ව්‍යුහය ප්‍රවේශමෙන් පාලනය කිරීම අවශ්‍ය වන අතර එමඟින් ඔබට නිමක් නැති ලූපයක් (පිටවීමක් නොමැති) සමඟ අවසන් නොවේ.

උදාහරණ වශයෙන්:

සඳහා (k=10; k>6;k++)

printf ("නිමක් නැති ලූපය\n");

පිටවීමේ ලූපයපහත දැක්වෙන ආකාරවලින් කාලසටහනට පෙර:

අතිරේක කොන්දේසිය අනුව;

පහත ක්‍රියාකරුවන් භාවිතා කරමින්:

කැඩීම;- බ්රේක් පිහිටා ඇති ලූපයෙන් පිටවීම, පාලනය ලූපයෙන් පසු පළමු ක්රියාත්මක කරන ලද ප්රකාශය වෙත මාරු කරනු ලැබේ;

පිටවීම (int Kod);- වැඩසටහනෙන් පිටවීම;

ආපසු;- කාර්යයෙන් පිටවීම;

කොන්දේසි විරහිත පැනීමේ ක්‍රියාකරු භාවිතා කිරීම යන්න<метка>;

මුල් වත්මන් චක්රීය පියවර සම්පූර්ණ කිරීමඅතිරේක කොන්දේසියක් හෝ ක්රියාකරු භාවිතා කළ හැකිය දිගටම, වත්මන් ලූප් පියවර ක්රියාත්මක කිරීම බාධා කරන, i.e. පරාමිතිය සීරුමාරු කිරීමට සහ තත්ත්වය පරීක්ෂා කිරීමට ලූපයේ ඉතිරි ප්‍රකාශයන් මඟ හැර පාලනය ලූපයේ ප්‍රධාන ප්‍රකාශය වෙත මාරු කරයි.

පාලනය පිටත සිට ලූපය තුළට මාරු කිරීම තහනම්ය.

වරහන් තුළ ඇති ඕනෑම for loop ප්‍රකාශනයක් අතුරුදහන් විය හැකි නමුත් ";" සංකේතය පහත් කළ නොහැක.

උදාහරණ වශයෙන්:

සඳහා (; i<3; i++)

ස්ථාන ("හෙලෝ!");

Cyclic while සහ do-while ප්‍රකාශ

චක්‍රීය ක්‍රියාකරුගේ මූලික ස්වරූපය අතර:

අතරතුර (තත්ත්වය)

ක්රියාකරු;

කොහෙද ක්රියාකරු

කොන්දේසිය සත්‍ය ලෙස තක්සේරු කරන තාක් ලූපය ක්‍රියාත්මක වේ, i.e. වරහන් තුළ ප්‍රකාශනය ශුන්‍ය නොවන ප්‍රතිඵලයක් ලබා දෙයි. මෙය පූර්ව කොන්දේසියක් සහිත ලූපයකි - පළමුව කොන්දේසිය පරීක්ෂා කරනු ලැබේ, පසුව ප්රකාශය ක්රියාත්මක වේ. එබැවින්, කොන්දේසිය ගණනය කිරීමේ ආරම්භක ප්‍රතිඵලය 0 නම් while ලූපය එක් වරක්වත් ක්‍රියාත්මක නොවේ.

ක්රියාකරුගේ මූලික ස්වරූපය කරන්න - අතරතුර:

ක්රියාකරු;

අතරතුර (තත්වය);

කොහෙද ක්රියාකරුයනු සරල, සංයුක්ත හෝ හිස් ප්‍රකාශයකි.

ක්රියාකරු කරන්නඅතර- පශ්චාත් කොන්දේසි සහිත ලූප් ක්‍රියාකරු, i.e. ප්‍රථමයෙන් ප්‍රකාශය ක්‍රියාත්මක වන අතර පසුව කොන්දේසිය සත්‍ය සඳහා පරීක්ෂා කරනු ලැබේ. do–while loop එකකදී ලූපයේ අවසානයේ තත්ත්‍වය පරීක්‍ෂා කරන බැවින්, ලූපය එක් වරක්වත් ක්‍රියාත්මක වේ.

while සහ do–while වැනි ලූප වලදී, ලූපයෙන් කලින් පිටවීමේ ක්‍රම සහ ලූපයේ වත්මන් පියවර ඉක්මනින් සම්පූර්ණ කිරීම සඳහා ප්‍රකාශය සඳහා අවසර දෙනු ලැබේ, නමුත් අවසාන අවස්ථාවේදී, for loop මෙන් නොව, පාලනය මාරු කරනු ලැබේ. තත්ත්වය පරීක්ෂා කිරීමට. අතරතුර සහ do-while ලූප ඇතුළත නිමක් නැති ලූපයක් වැලැක්වීම සඳහා, කොන්දේසියට ඇතුළත් කර ඇති විචල්‍යයන් වෙනස් කිරීම සඳහා ඔබ සැපයිය යුතුය.

උදාහරණ වශයෙන්:

සඳහා (i=1;i<=300;i++) // Печать целых чисел, кратных 5

නම් (i%5!=0) දිගටම;

printf ("%5d",i);

අනන්ත ලූප සඳහා උදාහරණ:

ක්රියාකරු;

2) විට(අංක_නො_0) // සැමවිටම සත්‍ය!

ක්රියාකරු;

ක්රියාකරු;

අතරතුර (අංක_නො_0); //හැමදාම ඇත්ත!

ලූප් ක්‍රියාකරුවන් අතර පිටවීමේ කොන්දේසියක් තිබිය යුතුය.

Nested Loops

කැදලි ලූප වලදී, එක් ලූපයක් තවත් එකක් තුළ ඇත, උදාහරණයක් ලෙස:

සඳහා (i=nn;i

සඳහා(j=mn;j

ක්රියාකරු;

කොහෙද ක්රියාකරුයනු සරල, සංයුක්ත හෝ හිස් ප්‍රකාශයකි. පිටත ලූපයේ තත්ත්‍වය තෘප්තිමත් කරන i පරාමිතියේ එක් එක් අගය සඳහා අභ්‍යන්තර ලූපය ක්‍රියාත්මක වේ.

උදාහරණයක්:

සඳහා (i=1;i<10;i++) // Печать таблицы умножения

සඳහා (j=1;j<4;j++)

printf (“\n %d*%d=%2d”, i, j, i*j);

printf ("\n");

ප්රකාශය සඳහා භාවිතා කිරීමේ උදාහරණයක්

ගණනය කරන්න. වැඩසටහන අතරමැදි සහ අවසාන ප්රතිඵල මුද්රණය කළ යුතුය.

වැඩසටහන් පෙළ මේ වගේ විය හැක

#ඇතුළත්

#ඇතුළත්

ස්ථාන ("එන්ටර් එන්");

scanf("%d",&N);

සඳහා (s=0, k=1; k<=N; k++) // В заголовке цикла можно выпол-

(// භාර ගැනීම සහ ද්විත්ව පැවරුම

printf(" \n k=%d s=%f ", k, s);

printf("\n පිළිතුර: s=%f, ඕනෑම යතුරක් ඔබන්න...",s);

තනි පැවරුම් සඳහා විකල්ප

ශ්‍රිත අගයන් වගුවක් තීරණය කිරීම සඳහා වැඩසටහනක් ලියන්න හිදීඅත්තනෝමතික පරාසයක [ ,බී] තර්ක වෙනස් වේ xඅත්තනෝමතික පියවර සමඟ h. වටිනාකම් a, b, hයතුරු පුවරුවෙන් ඇතුල් විය. වගුවේ පහත තීරු අඩංගු විය යුතුය: අනුක්‍රමික අංකය, තර්ක අගය x, ශ්‍රිත අගය, ශ්‍රිතය වැඩි කිරීම හෝ අඩු කිරීම පිළිබඳ පණිවිඩය, යාබද ශ්‍රිත අගයන් දෙකක වෙනස.

ශ්‍රිතයේ උපරිම සහ අවම අගයන් නිර්ණය කරන්න.

1. a=-p; b=p; h=0.4.

2. a=0.7; b=1.8; h=0.1.

3. a=-0.5; b=2.5; h=0.2.

4. a=-0.9; b=2.7; h=0.3.

5. a=-2; b=0.8; h=0.2.

6. a=-1.9; b=2.7; h=0.3.

7. a=-0.4p; b=0.4p; h=0.5.

8. a=-0.3p; b=1.3p; h= p/10.

9. a=-p/2; b= p/2; h=p/10.

10. a=-3; b=3; h=0.5.

"ක්‍රමලේඛන චක්‍රීය පරිගණක ක්‍රියාවලි"

කාර්යයේ අරමුණ:චක්‍රීය ගණනය කිරීමේ ක්‍රියාවලීන් සඳහා ඇල්ගොරිතම සම්පාදනය කිරීම සහ සංකීර්ණ ව්‍යුහයේ චක්‍රීය වැඩසටහන් සංවිධානය කිරීම සඳහා ප්‍රගුණ කිරීමේ ක්‍රම.

න්යායික කොටස

4.1.1. චක්රීය ඇල්ගොරිතම.

චක්‍රයක් යනු එක් වරකට වඩා සිදු කළ හැකි ක්‍රියා අනුපිළිවෙලකි.

රවුන්ඩ් රොබින් ඇල්ගොරිතමයක් යනු ලූප එකක් හෝ කිහිපයක් අඩංගු ඇල්ගොරිතමයකි.

චක්‍ර වර්ග 3ක් ඇත:

පූර්ව කොන්දේසි සහිත ලූප්;

පසු කොන්දේසි සහිත ලූප්;

කවුන්ටරයක් ​​සහිත ලූප් (ගණන් කිරීමේ ලූපය).

ලූපයක් ක්‍රියාත්මක කිරීම යම් තාර්කික තත්වයක් සමඟ සම්බන්ධ වී ඇත්නම්, පූර්ව කොන්දේසියක් හෝ පසු කොන්දේසියක් සහිත ලූප භාවිතා වේ.

කවුන්ටර් ලූප් යනු ලූප් බොඩි ක්‍රියාත්මක කිරීම කලින් තීරණය කළ වාර ගණනක් නැවත නැවතත් කළ යුතු පන්තියකි.

චක්‍රීය ඇල්ගොරිතම වල බ්ලොක් රූපසටහන් මේ ආකාරයෙන් පෙනේ:

1. කවුන්ටරයක් ​​සහිත ලූප්.

2. පූර්ව කොන්දේසිය සහිත ලූප්. 3. පශ්චාත් කොන්දේසි සහිත ලූප්.

4.1.2 C++ ක්‍රමලේඛන භාෂාවේ ලූප් ක්‍රියාකරුවන්.

C++ හි, එක් එක් වර්ගයේ ලූප සඳහා අනුරූප ක්රියාකරු ඇත:

ලූප් like while (පූර්ව කොන්දේසි සහිතව);

කරන්න වගේ ලූප්... අතරතුර (පශ්චාත් තත්ත්‍වය සහිත);

(ගණන් කිරීම) සඳහා මෙන් ලූප් කරන්න.

1.Loop operator like while

ඇතුල්වීමේ පෝරමය:

while (තත්වය) ප්රකාශය;

එහිදී: (තත්ත්වය) - තාර්කික ප්රකාශනය;

ක්රියාකරු - ලූපයක් තුළ ක්රියාත්මක කරන ලද ලූපයේ ක්රියාකරු හෝ ශරීරය.

ලූපයේ බඳ සංයුක්ත ප්‍රකාශයක් නම්, එය ක්‍රියාකරු වරහන් (...):

අතරතුර (තත්වය)

ක්රියාකරුවන් කණ්ඩායම

එවැනි ලූපයක් ක්‍රියා කරන ආකාරය පිළිබඳ යෝජනා ක්‍රමය: කොන්දේසිය සත්‍ය වන අතර, ලූපයේ සිරුර ක්‍රියාත්මක වන අතර තත්වය නැවත පරීක්ෂා කරනු ලැබේ. කොන්දේසිය අසත්‍ය වූ විට, ලූපය පිටවෙයි.

2. do...while වැනි ලූප් ක්‍රියාකරු

ඇතුල්වීමේ පෝරමය:

ක්රියාකරු;

අතරතුර (තත්වය);

එවැනි ලූපයක් ක්‍රියා කරන ආකාරය පිළිබඳ යෝජනා ක්‍රමය: පළමුව ක්‍රියාකරු ක්‍රියාත්මක කරනු ලැබේ, පසුව කොන්දේසිය පරීක්ෂා කරනු ලැබේ, කොන්දේසිය සත්‍ය නම්, ක්‍රියාකරු ක්‍රියාත්මක කර තත්වය නැවත පරීක්ෂා කරනු ලැබේ, යනාදිය. කොන්දේසිය අසත්‍ය වූ විට, ලූපය පිටවෙයි.

ලූපයේ බඳ සංයුක්ත ප්‍රකාශයක් නම්, පූර්ව කොන්දේසියක් සහිත ලූපයක් සඳහා, එය ක්‍රියාකරු වරහන් (...):



ක්රියාකරුවන් කණ්ඩායම

අතරතුර (තත්වය);

3. Loop operator කැමති

ඇතුල්වීමේ පෝරමය:

ක්රියාකරු;

A යනු ලූප පරාමිතිය සඳහා ආරම්භක අගයන් සහ, අවශ්ය නම්, අනෙකුත් පරාමිතීන් සඳහා ආරම්භක අගයන් නියම කරන ආරම්භක ප්රකාශනයකි. උදාහරණ වශයෙන්:

i=0, x=0.5, p=1, s=0

B යනු ලූපය දිගටම කරගෙන යාම සඳහා කොන්දේසිය පරීක්ෂා කරන කොන්දේසි සහිත ප්රකාශනයකි. උදාහරණ වශයෙන්:

C යනු ලූප පරාමිතියේ වර්ධක සහ, අවශ්‍ය නම්, වෙනත් පරාමිතිවල වර්ධක නිශ්චය කරන වර්ධක ප්‍රකාශනයකි, එවිට ඒවා ලැයිස්තුවක ලියා ඇත. උදාහරණයක් ලෙස: x+=0.1, i++

4.1.3 චක්‍රීය පරිගණක ක්‍රියාවලියක් සඳහා C++ හි ඇල්ගොරිතමයක් සහ වැඩසටහනක් සම්පාදනය කිරීමේ උදාහරණයක්.

ප්‍රකාශනයක අගය ගණනය කරන්න:

බී- ආරම්භක අගය, එහි අගය යතුරු පුවරුවෙන් ඇතුළත් කර ඇති අතර වෙනස් නොවේ;

- පියවර 1 හි පරාසයේ වෙනස්කම්;

වයි- ප්රතිඵලය, එහි අගයන් තිරය මත දර්ශනය වේ.

පිරිවිතර මත පදනම්ව, විචල්‍යය a පූර්ණ සංඛ්‍යාවක් වන බැවින් එය ගණන් කිරීමේ ලූපයක කවුන්ටරයක් ​​ලෙස භාවිතා කළ හැකිය.

ගණන් කිරීමේ චක්‍රයක් භාවිතයෙන් මෙම ගැටළුව විසඳීම සඳහා ඇල්ගොරිතමයේ බ්ලොක් රූප සටහන පහත පරිදි වේ:

#ඇතුළත්

#ඇතුළත්

#ඇතුළත්

printf ("ආ ඇතුළු කරන්න:");

scanf("%f",&b);

printf ("a y\n");

සඳහා (a=0;a<=10;a++)

printf ("%3d",a);

printf("%8.2f\n",y);

y=(a-b)/sqrt(a);

printf("%8.2f\n",y);

පූර්ව කොන්දේසියක් සහිත ලූපයක් භාවිතයෙන් මෙම ගැටළුව විසඳීම සඳහා ඇල්ගොරිතමයේ බ්ලොක් රූප සටහන පහත පරිදි වේ:

මෙම ඇල්ගොරිතමයට අනුරූප වන C++ වැඩසටහනේ පෙළ පහත පරිදි වේ:

#ඇතුළත්

#ඇතුළත්

#ඇතුළත්

printf ("ආ ඇතුළු කරන්න:");

scanf("%f",&b);

printf ("a y\n");

printf ("%3d",a);

printf("%8.2f\n",y);

y=(a-b)/sqrt(a);

printf("%8.2f\n",y);

වෙනත් printf (" y නොපවතියි\n");

පශ්චාත් කොන්දේසියක් සහිත ලූපයක් භාවිතයෙන් මෙම ගැටළුව විසඳීම සඳහා ඇල්ගොරිතමයේ බ්ලොක් රූප සටහන පහත පරිදි වේ:

මෙම ඇල්ගොරිතමයට අනුරූප වන C++ වැඩසටහනේ පෙළ පහත පරිදි වේ:

#ඇතුළත්

#ඇතුළත්

#ඇතුළත්

printf ("ආ ඇතුළු කරන්න:");

scanf("%f",&b);

printf ("a y\n");

printf ("%3d",a);

printf("%8.2f\n",y);

y=(a-b)/sqrt(a);

printf("%8.2f\n",y);

වෙනත් printf (" y නොපවතියි\n");

අතරතුර (අ<=10);

ප්රායෝගික කොටස

4.2.1 කාර්යය ඉටු කිරීම සඳහා අවශ්‍යතා:

එක් විචල්‍යයක අගයන් පරාසයක් සඳහා රසායනාගාර වැඩ අංක 3 වෙතින් කාර්යය සම්පූර්ණ කරන්න. වෙනස් වන විචල්‍යය, එහි වෙනස් වීමේ පරාසය සහ පියවර වගුව 4 හි දක්වා ඇත. තනි කාර්යයේ දක්වා ඇති චක්‍ර වර්ග දෙක සඳහා ඇල්ගොරිතම සහ වැඩසටහන් වල බ්ලොක් රූප සටහන් සාදන්න (වගුව 4).

විචල්‍ය පරාමිතියේ අගයන් පැහැදිලිව උද්දීපනය වන ආකාරයට ප්‍රතිඵලවල ප්‍රතිදානය විධිමත් කරන්න සහ එක් එක් නිශ්චිත අගය සඳහා ප්‍රතිඵලයේ අගයන් (වගුව 3 හි 2 තීරුවේ සිට විචල්‍ය තුනක්) පෝරමයේ ප්‍රදර්ශනය කෙරේ. මේසයක.

වැඩ පිළිවෙල.

1. කාර්යය පිළිබඳ විශ්ලේෂණයක් සිදු කරන්න, ගැටලුව පිළිබඳ ප්රකාශයක් සකස් කරන්න.

2. ඇල්ගොරිතම වල බ්ලොක් රූප සටහන් සාදන්න.

3. C++ හි වැඩසටහනක් සාදන්න. යතුරුපුවරුවෙන් ආරම්භක දත්ත ආදානය සහ ප්‍රතිඵල ප්‍රතිදානය තිරයට ලබා දෙන්න.

4. විවිධ ආරම්භක දත්ත මත වැඩසටහනේ ක්රියාකාරිත්වය පරීක්ෂා කරන්න.

5. ලබාගත් ප්රතිඵල විශ්ලේෂණය කරන්න.

තනි පැවරුම් සඳහා විකල්ප.

ගුරුවරයාගේ ජර්නලයේ කණ්ඩායම් ලැයිස්තුවේ ශිෂ්‍ය අංකයට අනුව තනි පැවරුම් සඳහා විකල්ප 4 වගුවෙන් තෝරා ගනු ලැබේ.

වගුව 4. තනි කාර්යයන් සඳහා විකල්ප

නැත. වෙනස් කළ හැකි විචල්‍යය චක්ර වර්ග
10 ≤ a ≤ 10,Δ a=1
-4 ≤ d ≤ 4, Δ d = 0.5
-6 ≤ x ≤ 3, Δ x = 0.5
0 ≤ b ≤ 3 0, Δ b = 1.5 1. පූර්ව කොන්දේසි සහිතව, 2. ගණන් කළ හැකි
-15 ≤ j ≤ 1 0, Δ j = 0.5 1. පූර්ව කොන්දේසි සහිතව, 2. පසු කොන්දේසි සහිතව
5 ≤ e ≤ 35,Δ e = 2 1. ගණන් කළ හැකි, 2. පශ්චාත් කොන්දේසි සහිතව
-5 ≤ m ≤ 15,Δ m = 1 1. පූර්ව කොන්දේසි සහිතව, 2. ගණන් කළ හැකි
1 ≤ c ≤ 70,Δ c = 3 1. පූර්ව කොන්දේසි සහිතව, 2. පසු කොන්දේසි සහිතව
1.5 ≤ c ≤ 15,Δ c = 0.5 1. ගණන් කළ හැකි, 2. පශ්චාත් කොන්දේසි සහිතව
-8 ≤ b ≤ 28,Δ b = 2 1. පූර්ව කොන්දේසි සහිතව, 2. ගණන් කළ හැකි
-4.5 ≤ x ≤ 11.5,Δ x = 0.5 1. පූර්ව කොන්දේසි සහිතව, 2. පසු කොන්දේසි සහිතව
-7 ≤ k ≤ 2,Δ k = 0.3 1. ගණන් කළ හැකි, 2. පශ්චාත් කොන්දේසි සහිතව
-1 ≤ m ≤ 21,Δ m = 1 1. පූර්ව කොන්දේසි සහිතව, 2. ගණන් කළ හැකි
-2 ≤ e ≤ 34,Δ e = 2 1. පූර්ව කොන්දේසි සහිතව, 2. පසු කොන්දේසි සහිතව
-11 ≤ c ≤ 23,Δ c = 2 1. ගණන් කළ හැකි, 2. පශ්චාත් කොන්දේසි සහිතව
-13 ≤ p ≤ 50,Δ p = 3 1. පූර්ව කොන්දේසි සහිතව, 2. ගණන් කළ හැකි
3.3 ≤ b ≤ 9.3,Δ b = 0.3 1. පූර්ව කොන්දේසි සහිතව, 2. පසු කොන්දේසි සහිතව
3.5 ≤ y ≤ 12.3,Δ y = 0.4 1. ගණන් කළ හැකි, 2. පශ්චාත් කොන්දේසි සහිතව
-7.5 ≤ a ≤ 5.7,Δ a = 0.6 1. පූර්ව කොන්දේසි සහිතව, 2. ගණන් කළ හැකි
-1.5 ≤ h ≤ 1.2,Δ h = 0.1 1. පූර්ව කොන්දේසි සහිතව, 2. පසු කොන්දේසි සහිතව
0 ≤ h ≤ 10,Δ h=0.5 1. ගණන් කළ හැකි, 2. පශ්චාත් කොන්දේසි සහිතව
-15 ≤ b ≤ 15, Δ b =2 1. පූර්ව කොන්දේසි සහිතව, 2. ගණන් කළ හැකි
-7 ≤ l ≤ 3, Δ l = 0.5 1. පූර්ව කොන්දේසි සහිතව, 2. පසු කොන්දේසි සහිතව
-5.5 ≤ b ≤ 6.5, Δ b = 0.5 1. ගණන් කළ හැකි, 2. පශ්චාත් කොන්දේසි සහිතව
1 ≤ k ≤ 9, Δ k = 0.4 1. පූර්ව කොන්දේසි සහිතව, 2. ගණන් කළ හැකි
0 ≤ b ≤ 6.9,Δ b = 0.3 1. පූර්ව කොන්දේසි සහිතව, 2. පසු කොන්දේසි සහිතව
-3 ≤ v ≤ 9,Δ v = 0.6 1. ගණන් කළ හැකි, 2. පශ්චාත් කොන්දේසි සහිතව
-2 ≤ පි ≤ 2.6,Δ p = 0.2 1. පූර්ව කොන්දේසි සහිතව, 2. ගණන් කළ හැකි

4.3 පරීක්ෂණ ප්‍රශ්න සහ ප්‍රායෝගික කාර්යයන්:

1. while ප්‍රකාශය ක්‍රියා කරන්නේ කෙසේද?

2. do ... while ප්‍රකාශය ක්‍රියා කරන්නේ කෙසේද?

3. ප්‍රකාශය සඳහා ක්‍රියා කරන්නේ කෙසේද?

4. චක්‍රයක් සාදන ක්‍රමලේඛයේ ප්‍රකාශ යටින් ඉරි අඳින්න.

5. the while සහ do ... while ප්‍රකාශ අතර වෙනස කුමක්ද?

6. වැඩසටහනේ එක් ලූප් ක්‍රියාකරුවෙකු තවත් එකක් සමඟ ප්‍රතිස්ථාපනය කරන්න.

ක්‍රමලේඛනයේදී, අපට බොහෝ විට නැවත නැවත සිදුවන ක්‍රියාවලීන් සම්බන්ධ ගැටළු වලට මුහුණ දීමට සිදුවේ. එමනිසා, අප දැනගත යුතු අතර එවැනි සංකල්පයක් භාවිතා කිරීමට හැකි විය යුතුය. චක්‍රීය පරිගණක ක්‍රියාවලි».

නවක ක්‍රමලේඛකයෙකුට සාමාන්‍යකරණය කළ උදාහරණයකින් ඒවා තේරුම් ගැනීමට පහසු වනු ඇත. එපමණක් නොව, සියලුම ක්‍රමලේඛන භාෂාවල ලූප ක්‍රියාත්මක කිරීමට ක්‍රම ඇති බව වටහා ගැනීම වැදගත්ය.

ක්‍රමලේඛනයේ ලූප් යනු කුමක්ද?

චක්‍රයක් - ක්‍රමලේඛනයේ දී, එකම ක්‍රියාවන් හෝ ගණනය කිරීම් නැවත නැවත සිදු කිරීම, නමුත් විචල්‍යවල විවිධ අගයන් සහිත එකම පරායත්තතා අනුව ය.

චක්‍රයක් යන සංකල්පය අපට හමුවන්නේ ක්‍රමලේඛනයේදී පමණක් නොවේ. අපේ ජීවිතයේ බොහෝ අංශවල චක්‍ර තිබේ.

නිදසුනක් වශයෙන්, ස්වභාවධර්මයේ ජල චක්රය අපගේ ජීවිතයේ ස්වභාවික චක්රයකි.

දැන් අපි ගණනය කිරීමේ චක්‍රවල භාවිතා වන සාමාන්‍ය රීති සහ සංකල්ප දෙස බලමු.

චක්රීය ක්රියාවලියේ අදියර

සාමාන්යයෙන්, චක්රය අදියර 4 කින් ක්රියාත්මක කළ යුතුය:
  • අදියර 1 - චක්රය සකස් කිරීම (ආරම්භ කිරීම).
    පරාමිතිය සහ ලූප් විචල්‍යය සඳහා ආරම්භක අගය සැකසීම.
    ලූප් පරාමිතිය- චක්රයේ පියවර ගණන (චක්රයේ පුනරාවර්තන සංඛ්යාව) ගණනය කරන මෙම අගය.
    ලූප් විචල්‍යයචක්රයේ සෑම අදියරකදීම එහි අගය වෙනස් කරන ප්රමාණයකි.
    ආරම්භ කිරීම- මෙය පරාමිතිය සහ ලූප් විචල්‍යය සඳහා ආරම්භක අගයන් සැකසීමයි.
  • අදියර 2 - චක්රයේ ශරීරය.
    මෙය චක්‍රයක ක්‍රියාවක් පුනරාවර්තනය කිරීම හෝ විචල්‍යවල විවිධ අගයන් සහිත එකම ගණිතමය පරායත්තතා මත පදනම් වූ ගණනය කිරීම් වේ.
  • අදියර 3 - චක්රය වෙනස් කිරීම (වෙනස් කිරීම).
  • අදියර 4 - චක්රය කළමනාකරණය.
    මෙය ලූපයේ අඛණ්ඩ පැවැත්ම හෝ ආරම්භය සඳහා කොන්දේසි පරීක්ෂාවකි.
ඕනෑම දෙයක් ක්‍රියාත්මක කළ හැකි ලූප් ක්‍රියාකරුවන් 3ක් පැස්කල්හි ඇත ඇල්ගොරිතමය - චක්රීය ව්යුහය :
  1. පරාමිතිය සහිත ලූප් ප්‍රකාශය
  2. පූර්ව කොන්දේසි සහිත ලූප ක්රියාකරු
  3. පසු තත්ත්‍වය සහිත ලූප් ක්‍රියාකරු
ඊළඟ ලිපියෙන් අපි ඒවා විස්තරාත්මකව බලමු.

1. වැඩසටහන් වල චක්‍රීය ගණනය කිරීමේ ක්‍රියාවලි ගොඩනැගීමේ ක්‍රම.

2. පරිගණකයට ඇතුල් වියඑන්සැබෑ සංඛ්යා. මෙම කට්ටලයේ අංක ගණිත මධ්යන්යය පෙන්වන වැඩසටහනක් ලියන්න.

හැදින්වීම

චක්‍රීය වැඩසටහන් ඕනෑම මෘදුකාංගයක පාහේ භාවිතා වේ. මෙම අවස්ථාවෙහිදී, චක්‍ර පැහැදිලි හෝ ව්‍යංග විය හැක. විශේෂයෙන්ම, ව්‍යංග ලූපය බාධා හසුරුවන්නෙහි පවතින අතර, එය බාධාවකින් ශරීරය ක්‍රියාත්මක වන අනන්ත ලූපයක ඵලදායී ලෙස ක්‍රියාත්මක වේ. උපසිරැසි - වින්ඩෝස් යෙදුම්වල කවුළු කාර්යයන් - ද චක්‍රීය වේ. ශරීරයේ ක්‍රියාකාරී මොඩියුල අඩංගු ලූපයක් සහිත වැඩසටහන් අපි පහත සලකා බලමු.

චක්රීය ක්රියාවලියයනු තර්කයේ විවිධ අගයන් සඳහා එකම සූත්‍ර භාවිතා කරමින් නැවත නැවත ගණනය කිරීම් සිදු කරන ගණනය කිරීමේ ක්‍රියාවලියකි.

වැඩසටහන්, චක්‍රීය ක්‍රියාවලියක් ක්‍රියාත්මක කිරීම චක්‍රීය වැඩසටහන් ලෙස හැඳින්වේ.

චක්රය සංවිධානය කිරීම පහත අදියරවලට බෙදිය හැකිය:

චක්රය (AND) සකස් කිරීම (ආරම්භ කිරීම);

ලූප් ගණනය කිරීම් සිදු කිරීම (ලූප් බොඩි) (ටී);

පරාමිතීන් වෙනස් කිරීම (M);

චක්‍ර අවසාන තත්ත්වය (U) පරීක්ෂා කිරීම.

T සහ M වැනි මෙම පියවරවල අනුපිළිවෙල වෙනස් විය හැක. චක්‍රයේ අවසාන තත්ත්‍වයේ චෙක්පතේ පිහිටීම අනුව, පහළ සහ ඉහළ කෙළවර සහිත චක්‍ර අතර වෙනසක් සිදු කෙරේ. පහළින් අවසන් වන ලූපයක් සඳහා, ලූපයේ සිරුර අවම වශයෙන් එක් වරක් ක්රියාත්මක කරනු ලැබේ, මන්ද ගණනය කිරීම් මුලින්ම සිදු කරනු ලබන අතර පසුව ලූපයෙන් පිටවීම සඳහා කොන්දේසිය පරීක්ෂා කරනු ලැබේ.


ඉහළ-අවසන් ලූපයකදී, පිටවීමේ කොන්දේසිය වහාම සපුරාලන්නේ නම්, ලූපයේ සිරුර එක් වරක්වත් ක්‍රියාත්මක නොවිය හැක.

ලූප් ශරීරයේ පුනරාවර්තන ගණන කලින් දැනගෙන හෝ තීරණය කරන්නේ නම් චක්‍රයක් නිර්ණායක ලෙස හැඳින්වේ. ලූප් බොඩියේ පුනරාවර්තන ගණන කලින් නොදන්නේ නම්, නමුත් ගණනය කිරීම්වලට සම්බන්ධ පරාමිතීන් (සමහර විචල්‍යයන්) අගයන් මත රඳා පවතී නම් චක්‍රයක් පුනරාවර්තනය ලෙස හැඳින්වේ.

ලූප් ශරීරය- මෙය නැවත නැවතත් වැඩසටහනේ කොටසකි.

ලූප් පරාමිතියලූපය පුනරාවර්තනය වන සෑම අවස්ථාවකම නව අගයන් ගන්නා විචල්‍යයකි (ලූප සරල හෝ සංකීර්ණ විය හැක).

ලූපයේ සාමාන්‍ය දර්ශනය n වාර

සාමාන්‍යයෙන්, ලූපයක් n වාරයක් මෙසේ ලියා ඇත:

nc පුනරාවර්තන වාර ගණන

සේවා වචනය nts (චක්‍රයේ ආරම්භය) සහ kts (චක්‍රයේ අවසානය) එකකට වඩා තදින් ලියා ඇති අතර සිරස් රේඛාවකින් සම්බන්ධ කර ඇත. මෙම රේඛාවේ දකුණට, නැවත නැවතත් කළ හැකි විධාන අනුපිළිවෙලක් (ලූප් බොඩි) ලියා ඇත.

පුනරාවර්තන ගණන අත්තනෝමතික නිඛිලයකි.

ඇල්ගොරිතම ක්‍රියාත්මක කරන විට, ලූපයේ සිරුරේ විධාන අනුපිළිවෙල නියමිත වාර ගණන නැවත නැවතත් සිදු කෙරේ. ඇල්ගොරිතම භාෂාවේ රීති මඟින් ඕනෑම පුනරාවර්තන පූර්ණ සංඛ්‍යාවක් නියම කිරීමට ඉඩ ලබා දේ. එය ශුන්‍ය හෝ සෘණ විය හැක. මෙම අවස්ථා වැරදි ලෙස සලකනු නොලැබේ, ලූපයේ ශරීරය එක් වරක්වත් ක්‍රියාත්මක නොවනු ඇත, සහ පරිගණකය cc ට පසුව ලියන ලද විධානයන් ක්‍රියාත්මක කිරීමට වහාම ඉදිරියට යයි.

මෙතෙක් චක්රයේ සාමාන්ය දසුන

සාමාන්යයෙන්, චක්රය දැනට පහත පරිදි ලියා ඇත:

තාම කොන්දේසියක් නෑ

| loop body (විධාන අනුපිළිවෙල)

චක්‍රයක් සිදු කරන විට, පරිගණකය පහත ක්‍රියා නැවත සිදු කරයි:

a) while ශ්‍රිත වචනයෙන් පසුව ලියා ඇති තත්ත්වය පරීක්ෂා කරයි;

b) කොන්දේසිය සපුරා නොමැති නම්, ලූපය ක්‍රියාත්මක කිරීම අවසන් වන අතර පරිගණකය cc ට පසුව ලියා ඇති විධාන ක්‍රියාත්මක කිරීමට පටන් ගනී. කොන්දේසිය සපුරා ඇත්නම්, පරිගණකය ලූපයේ සිරුර ක්‍රියාත්මක කරයි, තත්වය නැවත පරීක්ෂා කරයි.

සඳහා චක්රයේ සාමාන්ය දර්ශනය

i1 සිට i2 දක්වා i සඳහා nc

| loop body (විධාන අනුපිළිවෙල)

මෙහි i යනු නිඛිල වර්ගයේ අගයක නමකි, i1, i2 යනු අත්තනෝමතික පූර්ණ සංඛ්‍යා හෝ පූර්ණ සංඛ්‍යා අගයන් සහිත ප්‍රකාශන වේ. ලූපයේ සිරුර i = i1, i = i1 + 1, i1 + 2, …i = i2 සඳහා අනුක්‍රමිකව ක්‍රියාත්මක වේ.

ඇල්ගොරිතම භාෂාවේ නීති ඕනෑම නිඛිල i1, i2 නියම කිරීමට ඉඩ දෙයි. විශේෂයෙන්ම i2 i1 ට වඩා අඩු විය හැක. මෙම අවස්ථාව දෝෂයක් ලෙස නොසැලකේ - සරලවම ලූපයේ සිරුර එක් වරක්වත් ක්‍රියාත්මක නොවනු ඇත, සහ පරිගණකය වහාම cc ට පසුව ලියන ලද විධානයන් ක්‍රියාත්මක කිරීමට ඉදිරියට යයි.

n වරක් ලූප් කරන්න සහ විට ලූප් කරන්න

ලූප n වාර සහ මෙතෙක් ඇල්ගොරිතම භාෂාවෙන් එකම ආකාරයෙන් ආකෘතිගත කර ඇත. මෙය පුදුමයට කරුණක් නොවේ, මන්ද මෙම විධාන දෙකම ලූපයක් නිර්වචනය කරයි - පුනරාවර්තන විධාන අනුපිළිවෙලකි. nts සහ kts යන සේවා වචන මඟින් ලූපයක් ක්‍රියාත්මක වන බව පෙන්නුම් කරන අතර ලූප ශීර්ෂය එය ක්‍රියාත්මක කිරීම සඳහා නිශ්චිත යාන්ත්‍රණය නියම කරයි.

කෙසේ වෙතත්, මෙම චක්‍ර දෙකෙහි එක් සැලකිය යුතු වෙනසක් ඇත. පරිගණකය n වාරයක් ලූපයක් ක්‍රියාත්මක කිරීමට පටන් ගත් විට, එය ලූපයේ ශරීරය කොපමණ වාර ගණනක් නැවත කිරීමට සිදු වේද යන්න දනී. ලූපයක් ක්‍රියාත්මක කරන විට, මෙය තවමත් එසේ නොවේ: පරිගණකය සෑම විටම ලූපයේ තත්ත්වය පරීක්ෂා කරන අතර ක්‍රියාත්මක කිරීම අවසන් වන්නේ කවදාදැයි කල්තියා තීරණය කළ නොහැක. දැනට, ඔබට චක්‍රයක පුනරාවර්තන ගණන සොයාගත හැක්කේ චක්‍රය අවසන් වූ පසුව පමණි.

කුමන අවස්ථා වලදී කුමන ලූපය භාවිතා කළ යුතුද යන්න මෙයින් පැහැදිලි වේ. ලූපය ආරම්භ වන විට පුනරාවර්තන ගණන දන්නේ නම්, ලූපය n වාරයක් භාවිතා කිරීම පහසුය. පුනරාවර්තන සංඛ්යාව කලින් තීරණය කළ නොහැකි නම්, චක්රයක් අවශ්ය වේ.

උදාහරණයක් ලෙස, ස්වයංක්‍රීය පාලන වැඩසටහනක රූපයේ දැක්වෙන ව්‍යුහය ඇත. 1. චක්‍රයට ඇතුළත් මොඩියුල(මෙන්ම බාධා හැසිරවීමේ මොඩියුල), එක් ආදානයක් සහ එක් ප්‍රතිදානයක් බැගින්, සාමාන්‍යයෙන් ලාක්ෂණික ලක්ෂණය වන්නේ මොඩියුලවල වත්මන් චක්‍රයේ අගයක් පවරන ලද ස්ථිතික විචල්‍යයන් අඩංගු වන අතර මෙම විචල්‍යයන් විශ්ලේෂණය ඊළඟ චක්‍රයේ සිදු කෙරේ. . මේ අනුව, සඳහන් කළ විචල්‍යයන් ධාරාව අවසානයේ හෝ ඊළඟ වැඩසටහන් චක්‍රයේ ආරම්භයේ මොඩියුලයේ තත්වය සංලක්ෂිත කරයි. පහත දැක්වෙන දේ තුළ, අපි එවැනි චක්‍රීය වැඩසටහන් මොඩියුල පමණක් සලකා බලා ඒවා කෙටියෙන් MCP ලෙස දක්වන්නෙමු.


Fig.1. අසීමිත ලූපයක් සහිත පාලන වැඩසටහනක සාමාන්‍ය ව්‍යුහය.

MCP වලට විවිධ ව්‍යුහයක් ඇත, එහි සංකීර්ණත්වය විශේෂ නිර්ණායක අනුව තක්සේරු කළ යුතුය. V.V. Lipaev මෘදුකාංග මොඩියුලවල සංකීර්ණත්වය සඳහා පහසු සහ වෛෂයික නිර්ණායකයක් යෝජනා කළේය, එනම්: මොඩියුලයේ පාලන ප්‍රස්ථාරයේ ඇති මාර්ග ගණන සහ සම්පූර්ණ දිග. කොන්දේසි සහිත සහ තේරීම් ප්රකාශයන් පමණක් සැලකිල්ලට ගනී. කෙසේ වෙතත්, ස්ථිතික මතකය සහිත MCP සඳහා මෙම නිර්ණායකය පැහැදිලිවම ප්‍රමාණවත් නොවේ, මන්ද MCP විශ්ලේෂණය කිරීමේදී පෙර චක්‍රයේ පිහිටුවා ඇති සියලුම ස්ථිතික විචල්‍යවල අගයන් මතක තබා ගැනීම අවශ්‍ය වේ. මීට අමතරව, C සහ Pascal වැනි බහුලව භාවිතා වන ක්‍රමලේඛන භාෂාවන්හි දිගුකාලීන ව්‍යුහගත වැඩසටහන් හැර ඇල්ගොරිතම සහ වැඩසටහන් ප්‍රමිතිකරණය සඳහා නිර්දේශ නොමැත. මෙම ලිපිය MCP සම්බන්ධයෙන් මෙම හිඩැස් පිරවීමට යෝජනා කරයි.

2. චක්‍රීය වැඩසටහන් මොඩියුලවල කොටස්

පර්යන්ත දෙකක ඛණ්ඩයක්, හෝ සරලව ඛණ්ඩයක්, සලකා බලනු ලබන MCPs ව්‍යුහගත වී ඇතැයි යන උපකල්පනය යටතේ එක් ආදානයක් සහ එක් ප්‍රතිදානයක් (ලූප් ක්‍රියාකරුවන් ඇතුළුව) සහිත වැඩසටහනක කොටසක් ලෙස සලකනු ලැබේ. සරලම ඛණ්ඩනයට තනි ප්‍රකාශයක් ඇතුළත් වේ. කොටස් අනුපිළිවෙලක් ද ඛණ්ඩනයකි. MCP, අනෙක් අතට, ඛණ්ඩයක් වන අතර කොටස් අනුපිළිවෙලකින් සමන්විත වේ.

තීරණ වගු ක්‍රියාත්මක කරන මොඩියුලවල ව්‍යුහය සංස්ලේෂණය කිරීම සඳහා ස්වාධීන කොටස් ක්‍රමය යෝජනා කෙරේ. මෙම අවස්ථාවෙහිදී, මොඩියුල කොටස්වල අනුපිළිවෙලෙහි ඕනෑම ස්ථානයකට ඇතුල් කළ හැකි කැබැල්ලක් ස්වාධීන ලෙස සලකනු ලැබේ. එවැනි ඛණ්ඩයක පිහිටීමෙහි ස්වාධීනත්වයට හේතු වී ඇත්තේ එහි විශ්ලේෂණය කරන ලද දත්ත නිශ්චිත කොටස් අනුපිළිවෙලින් ජනනය නොවීම සහ ස්වාධීන කොටසෙහි ජනනය වන දත්ත මෙම කොටස් අනුපිළිවෙලෙහි විශ්ලේෂණය නොකිරීමයි. එබැවින් ස්වාධීන කොටස් සමාන්තරව (ව්යාජ-සමාන්තර) ක්රියාත්මක කළ හැකිය. රූපයේ. ස්වාධීන කොටස් දෙකක් සහිත මොඩියුලයක් සඳහා විය හැකි ක්‍රියාත්මක කිරීමේ විකල්ප රූප සටහන 2 පෙන්වයි. "a" සහ "b" විකල්ප වලදී වැඩසටහනේ සාරය විකෘති නොකර කොටස් නැවත සකස් කර ඇත; "c" විකල්පය තුළ කොටස් සමාන්තරව ක්රියාත්මක වේ.


Fig.2. ස්වාධීන කොටස් සහිත මොඩියුලයක් ක්රියාත්මක කිරීම සඳහා විකල්ප:

a) සහ b) - අනුක්රමික ක්රියාත්මක කිරීම,

c) - සමාන්තර ක්රියාත්මක කිරීම: ද්විත්ව තිරස් රේඛාවක් වැඩසටහනේ සමාන්තරකරණය පෙන්නුම් කරයි, ඝන තිරස් රේඛාවක් සමාන්තර ක්රියාවලීන් සම්පූර්ණ කිරීම පෙන්නුම් කරයි.

පරායත්ත ඛණ්ඩයක් යනු මොඩියුලයේ වෙනත් ඛණ්ඩයක (ය) පිහිටීම මත රඳා පවතින එකකි. අපි ඉහත සහ පහළ යැපෙන කොටස් අතර වෙනස හඳුනා ගනිමු. මෙම (යැපෙන) ඛණ්ඩයේ භාවිතා වන විචල්‍යයන් සෑදී ඇති කිසියම් ඛණ්ඩයකට පහළින් ඉහළ-යැපෙන ඛණ්ඩය සැමවිටම පිහිටා තිබිය යුතුය. මෙම ඛණ්ඩනය තුළ ජනනය කරන ලද විචල්‍යයන් භාවිතා කරන ඛණ්ඩයකට ඉහළින් සෑම විටම පතුලේ රඳා පවතින ඛණ්ඩයක් තැබිය යුතුය. යැපෙන කොටස් දෙකක්, ඉන් එකක් ඉහළින් දෙවැන්න මත රඳා පවතින අතර දෙවැන්න පහළින් පළමුවැන්න මත රඳා පවතී, අන්‍යෝන්‍ය වශයෙන් යැපෙන කොටස් ලෙස හැඳින්වේ. ඒවා එකිනෙකට හුවමාරු කළ නොහැකි අතර සමාන්තරව ක්රියාත්මක කළ නොහැකිය. රූපයේ. රූපය 3 අන්‍යෝන්‍ය වශයෙන් යැපෙන කොටස් සහිත මොඩියුලයක උදාහරණයක් පෙන්වයි. අන්‍යෝන්‍ය වශයෙන් යැපෙන කොටස් අතර ඒවායින් යැපෙන හෝ ස්වාධීන වෙනත් ඒවා තිබිය හැකිය. Fig.3. රඳා පවතින කොටස් සහිත මොඩියුලය.

මොඩියුලයේ පිහිටීම ස්ථාවර ලෙස දැඩි ලෙස අර්ථ දක්වා ඇති පරායත්ත ඛණ්ඩයක් අපි අමතන්නෙමු. උදාහරණයක් ලෙස, යතුරුපුවරුවෙන් ඇතුල් කරන ලද අක්ෂරයක් හඳුනාගැනීමේ මොඩියුලයේ, පළමුවැන්න සත්‍ය අක්ෂර ආදානයේ පහළට යැපෙන කොටස විය යුතුය. මොඩියුලයක "ආරම්භක" සහ "අවසන්" ක්රියාකරුවන් ස්ථාවර කොටස් වේ.

ඕනෑම මොඩියුලයක ආරම්භයේ සහ අවසානයෙහි සඳහන් ස්ථාවර කොටස් ඇති නිසා පමණක් නිරපේක්ෂ ස්වාධීන කොටස් නොපවතී. එබැවින්, ස්වාධීන ඛණ්ඩයකට, සාමාන්‍යයෙන්, අන්‍යෝන්‍ය වශයෙන් යැපෙන කොටස් දෙකකින් සීමා කළ හැකි ස්ථාන ප්‍රදේශයක් ඇත. එනම්, ස්වාධීන ඛණ්ඩනයක වඩාත් දැඩි නිර්වචනයක් පහත පරිදි වේ: ස්ථාවර කොටස් දෙකක් සම්බන්ධයෙන් ස්වාධීනව අපි නිශ්චිත ස්ථාවර කොටස් මගින් ඉහළින් සහ පහළින් මායිම් කර ඇති කොටස් අනුපිළිවෙලෙහි ඕනෑම තැනක තැබිය හැකි කැබැල්ලක් ලෙස හඳුන්වමු.




ඉහල