Цикльдік бағдарламаны ұйымдастыру



Цикл . нұсқауларды жиынның бiрнеше рет орындауын ұйым үшiн қолайлы жоғары деңгейлi программалау тiлдерiндегi бағдарлаушы конструкциясының бiр түрi. Мысалы, нұсқауларды шартты өту көмегiмен кез келген әдiс ұйымдастырылған кез келген дүркiн.дүркiн атқарылатын тiзбек деп аталуға тiптi циклдi де алды дайды.

Анықтаулар

Нұсқауларды бiрнеше рет орындау үшiн қолайлы тiзбек циклда денемен деп аталады. Циклданың денесiнiң жеке орындауы итерациямен деп аталады. Өрнек анықтайтын, итерация, немесе цикл орындала шығу шарты немесе (немесе жалғасының шартымен оның циклданың аяқтауды қажеттiлiк немесе жалғасының белгiсi ) ретiнде шындығын түсiндiрiп беретiнi соған сәйкес) циклданың аяқтауын шартпен бiтiп, деп аталады. Итерацияның ағымдағы нөмiр саудырлақ айнымалы циклда циклданың итерацияларының есептеуiшi немесе жай ғана есептеуiшпен деп аталады. Мысалы, цикл есептеуiш, есептеуiште мiндеттi түрде болады, бiр болуға мiндеттi емес болғанында . циклдасы шығу шарты бiрнеше жұрнақтарды қабылдайтын сөз т циклдерден айнымалы тәуелдi бола алғанында емес, белгiлi бiр уақытты шабуылмен сыртқы шарттармен анықтала алғанында ), есептеуiш соңғы жағдайда тiптi керек болмауы мүмкiн болғанында.
Кез келген циклданың орындауы айнымалы циклдалардың бастапқы инициализациясы, шығу шартының тексеруi, әрбiр итерациядағы айнымалы циклдасының циклда және жаңартуын дененiң орындауы қосады. Мысалы, демек, бұдан басқа, программалау тiлдерiнiң көпшiлiгi (си . breakтың тiлiнде) шығу шарты және (си . continueнiң тiлiнде) итерацияның рұқсатнамасының операторлары циклдадан шығатын есiктi циклда аяқтаудың операторлары циклдi мерзiмiнен бұрын басқару үшiн құрал тәуелсiз шындық iлiгедi.
Сөзсiз циклдер

Пән: Автоматтандыру, Техника
Жұмыс түрі:  Материал
Тегін:  Антиплагиат
Көлемі: 21 бет
Таңдаулыға:   
Цикльдік бағдарламаны ұйымдастыру

Цикл - нұсқауларды жиынның бiрнеше рет орындауын ұйым үшiн қолайлы жоғары
деңгейлi программалау тiлдерiндегi бағдарлаушы конструкциясының бiр түрi.
Мысалы, нұсқауларды шартты өту көмегiмен кез келген әдiс ұйымдастырылған
кез келген дүркiн-дүркiн атқарылатын тiзбек деп аталуға тiптi циклдi де
алды дайды.

Анықтаулар

Нұсқауларды бiрнеше рет орындау үшiн қолайлы тiзбек циклда денемен деп
аталады. Циклданың денесiнiң жеке орындауы итерациямен деп аталады. Өрнек
анықтайтын, итерация, немесе цикл орындала шығу шарты немесе (немесе
жалғасының шартымен оның циклданың аяқтауды қажеттiлiк немесе жалғасының
белгiсi ) ретiнде шындығын түсiндiрiп беретiнi соған сәйкес) циклданың
аяқтауын шартпен бiтiп, деп аталады. Итерацияның ағымдағы нөмiр саудырлақ
айнымалы циклда циклданың итерацияларының есептеуiшi немесе жай ғана
есептеуiшпен деп аталады. Мысалы, цикл есептеуiш, есептеуiште мiндеттi
түрде болады, бiр болуға мiндеттi емес болғанында - циклдасы шығу шарты
бiрнеше жұрнақтарды қабылдайтын сөз т циклдерден айнымалы тәуелдi бола
алғанында емес, белгiлi бiр уақытты шабуылмен сыртқы шарттармен анықтала
алғанында ), есептеуiш соңғы жағдайда тiптi керек болмауы мүмкiн
болғанында.
Кез келген циклданың орындауы айнымалы циклдалардың бастапқы
инициализациясы, шығу шартының тексеруi, әрбiр итерациядағы айнымалы
циклдасының циклда және жаңартуын дененiң орындауы қосады. Мысалы, демек,
бұдан басқа, программалау тiлдерiнiң көпшiлiгi (си - breakтың тiлiнде) шығу
шарты және (си - continueнiң тiлiнде) итерацияның рұқсатнамасының
операторлары циклдадан шығатын есiктi циклда аяқтаудың операторлары циклдi
мерзiмiнен бұрын басқару үшiн құрал тәуелсiз шындық iлiгедi.
Сөзсiз циклдер
Бағдарламалардағы кейде шығуы бағдарламаның логикасымен ескерiлмеген
циклдер қолданылады. Мұндай циклдер сөзсiз, немесе шексiз деп аталады.
Шексiз циклдердiң жасаулары үшiн арнайы синтаксистiк құралдар, олардың
типсыздығы, программалау тiлдерi сондықтан ескермейдi, сондықтан мұндай
циклдер (немесе шартты) кәдiмгi циклдердiң жасауы үшiн қолайлы болып
конструкциялар арқылы жасалады. Мысалы, такомалардың циклiндегi шарттың
тексеруi шексiз қайталаудың қамтамасыз етулерi үшiн немесе (егер ада тiлдiң
LOOP END LOOPның цикл синтаксис мүмкiндiк бередi) болмап, немесе
(Паскальдегi while true do) тұрақты мәнмен ауыстырылады.

Алғы шартпен цикл

Алғы шарты бар цикл - бас алдында көрcетiлген шын кейбiр шарт болғанша
орындалатын цикл. Бұл шарттар циклданың дененiң орындауына дейiн тексередi,
сондықтан дене (өздерi бар шарт егер бастады) бiр деге орындамауы мүмкiн.
Процедура программалау тiлдерi көпшiлiкте whileнiң операторымен жүзеге
асырылады, бұдан оның екiншi атау - whileсi - цикл. Алғы шартпен цикл
Pascalдың тiлiнде келесi түрi болады:

while шарт do
begin
циклда дене
end;
Си тiлде:
while(шарт)
{
циклда дене
}

Шартпен цикл

Шарты бар цикл - шартқа циклданың дененiң орындауынан кейiн тексеретiн
цикл. Дене ең болмаса бiр рет әрдайым орындалатынын бұдан шығады. Бұл цикл
Паскаль тiлде repeat..untilдiң операторын жүзеге асырады си - do
whileлерге. Шартпен цикл Pascalдың тiлiнде келесi түрi болады:

repeat
циклда дене
until шығу шарты
Си тiлде:
do
{
циклда дене
}
while(циклданың жалғасының шарты )
Әртүрлi тiлдердегi шарты бар циклдасы шарттарды түсiндiруде бұл
айырмашылық. Мұндай циклданың шарты Паскальде және ол болған тiлдер (цикл
шарт шын, мұндай циклдер орыс терминологиясында дейiн циклдердi әлi деп
атайтында бiтедi) шығу шарты сияқты түсiндiредi, силарға және (цикл шарт
жалған, мұндай циклдер болғанша циклдердi кейде деп атайтында бiтедi)
жалғасының шарт оның нәсiлдерi.

Ортадан шығатын есiкпен цикл

Ортадан шығатын есiкпен цикл - шартты циклданың жұртқа белгiлi формасы.
Мұндай цикл синтаксис бойынша үш конструкциялар көмегiмен пiсiп жетедi:
циклда, циклданың аяғы және циклдадан шығатын есiктi команда бастады.
Конструкция аяқтың циклда, конструкциясы дененi бастайтын бағдарламаның
нүктесiн дененi бiткен нүктенi таңбалайды. Цикл орындаудың жанында бiткен
және басқару операторға берiлген циклдадан шығатын есiктi команда циклданың
аяғының келесi конструкциясына дененiң iшi қатысуы керек. Табиғи, шығуды
команда циклдадан шығу шарты әрине, емес тек қана орындаудың жанында
шақыруы керек.
Мұндай циклдасының түрiнiң маңызды айырмашылығы қарастырылған кейiн циклда
ЄдЄ шығуды командаға дейiн бастауға орналасқан циклда мүшедi (бiрiншi
итерацияның жанында циклда шығу шарты егер де шын) әрдайым орындалатын
жоғары болып табылады, шығуды командадан кейiн болатын циклда мүшедi соңғы
итерацияның жанында орындалмайды.
Циклда арқылы ортадан шығатын есiкпен оңай (циклданың денесi шығуды
команданы басында таратып салып қойып) алғы шарты бар цикл, және (циклда
шығуды команданы дененiң соңында таратып салып қойып) шарты бар цикл де
үлгi жасауға болғанын оңай көру.
Программалауды тiлдердiң бiр бөлiгi ортадан шығатын есiгi бар циклданың
ұйымы үшiн арнайы құралымдарда болады. Осылай, ол үшiн ада тiлде EXIT
немесе EXIT WHEN:нiң шығуын LOOP END LOOP-ның конструкциясы және команданы
қолданылады

LOOP
... Циклда мүшедi
EXIT WHEN шығу шарты ;
... Циклда мүшедi
IF шығу шарты THEN
EXIT;
END;
... Циклда мүшедi
END LOOP:

Екi түрлердiң шығудың командаларының кез келген саны бұл жерде циклданың
iшi бола алады. Өзгешеленбегенiнде, EXIT WHEN әдетте тек қана шығу шарты
тексеретiнде қолданғанында емес, циклдадан шығатын есiк күрделi шартты
оператордың варианттардың бiрлерiнде өндiрiп алатында EXIT жай ғана -
шығуды өздерiнiң командасы принциптi.
Ұқсас конструкциялар ескерiлмеген, ортадан шығатын есiгi бар цикл кез
келген шартты циклда және (т.б. Паскаль турбода си, exit-терге breakқан)
мерзiмiнен бұрын циклдадан шығатын есiктi оператор, немесе goto-ның сөзсiз
өтуiн оператор көмегiмен үлгi жасай алған тiлдер сол.

Есептеуiшпен цикл
Есептеуiшi бар цикл - кейбiр айнымалы тап қалған бастапқы мән кейбiр адымы
бар түпкi мәнге өз мәнiн өзгертетiн цикл және циклданың бұл айнымалы
дененiң әрбiр мәнi үшiн бiр рет орындалады. Процедура программалау тiлдерi
көпшiлiкте (немесе есептеуiштiң шектi мәнi) өтулердi тиiстi сан және (деп
аталатын айнымалы циклда) есептеуiш көрсетiлген forдiң операторымен жүзеге
асырылады болуы мүмкiн, есептеуiш өзгеретiн адым. Мысалы, оберон тiлде - 2
мұндай цикл сияқты болады:

FOR v := b TO e BY s DO
... циклда дене
END
(v - b, b бұл жерде - бастапқы мән есептеуiш, eлер - есептеуiш, sтiң шектi
мәнi - адым). Бұл айнымалы есептеуiштi сияқты қолданылатын циклда
аяқтағаннан соң айнымалы мәнi туралы сұрақ бiрмәндi емес. Мысалы, егер
Паскаль тiлде бағдарламада түрдiң конструкциясын кездессе:
i := 100;
for i := 0 to 9 do
begin
... циклда дене
end;
k := i;

сұрақ пайда болады: мүмкiн, жинап келгенденiң мән неткен қандай болса да
басқа айнымалы k: 9, 10, 100 бередi? Егер циклдi жедел бiтсе ме? Жауаптар
есептеуiштiң мәнi соңғы итерациядан кейiн үлкеедi ме және бұл мән
транслятор қосымша өзгертпейдi ме, сонымен тәуелдi болады. Тағы бiр сұрақ:
егер циклданың iшi есептеуiшке жаңа мәндi анық берсе не болады? Әр түрлi
программалау тiлдерi осы мәселелер әртүрлi шешедi. Есептеуiштiң кейбiр
мiнез-құлықтарына айқын реттелген. Мысалы, басқа сол Паскальделерде, тiлдiң
стандарты циклде есептеуiштiң түпкi мәнi де, оның анық өзгерiсiнiң
зардаптары дан анықтамайды, бiрақ есептеуiш анық өзгертпейдi және циклда
оның аяқтағаннан соңы қайтадан инициализациясыз қолдануға кеңес бермейдi.
Бұл ұсыныс аяққа басатын Паскаль тiлiндегi программа әртүрлi жүйелер және
әртүрлi трансляторлардың қолдануында орындаудың жанында әртүрлi нәтиже бере
алады.
Ада тiлдегi сұрақ батыл шешiлген: есептеуiш циклда суреттеп айтылған баста
болып есептеледi, және ол тыс жай ғана бар болмайды. Егер қолданылып
қойылдарды бағдарламадағы есептеуiштiң ат болса, жеке айнымалы циклданың
iшi есептеуiш ретiнде қолданылады. Есептеуiшке қандай болмасын мәндер, ол
тағайындауға анық тыйым салылған циклданың операторының тек қана iшкi
тетiгiмен өзгере алады. Конструкцияның нәтижесiнде

i := 100;
for i in (0..9) loop
... циклда дене
end loop;
k := i;

Паскальде сыртқы ұқсасы жоғарыда айтылған циклге, бiрмәндi түсiндiредi:
айнымалы iлер циклданың берiлгеннен тыс қолданылатын жасалып циклданың iшi
өзгеретiн iнiң есептеуiшiне ешқандай да қатынасы болмайтындығынан, айнымалы
kтармен 100-шi мәндi бередi. Есептеуiштiң ұқсас жекелеуi ыңғайлы және қауiп-
қатерсiз: цикл қарағанда кездейсоқ қиратумен сыртқы айнымалы сабақтас
кездейсоқ қателердiң оны және ең төменгi ықтималдығы үшiн жеке сипаттама
керек болмайды. Егер бағдарламашыға есептеуiшi бар цикл дайын кодқа қосуға
керек болса, бiрақ осы уақытта еркiн есептеуiштер, онда ол тексермеуi
мүмкiн болады, айнымалы оны есептеуiш ретiнде таңдайтын атпен бiрiн тиiстi
процедураның басына жаңа есептеуiшiнiң сипаттамасына толықсытпау қолдануға
тырыспауға бар болады бар. Ол цикл айнымалы жай ғана жазады - оған аты
ыңғайлы есептеуiшпен және аттардың ешқандай да қайшылығында болмағанын
сендiре алады.
Есептеуiшi бар цикл есептеуiшке басының алдында бастапқы мән тағайындаған
шартты цикл шығу шарты түпкi мәннiң есептеуiшiмен табыс болып табылады
әрдайым сияқты жазып алуға болады; сонымен бiрге циклданы денеге тап қалған
адымға есептеуiштiң өзгерiсiнiң операторы жамалады. Есептеуiшi бар циклда
арнайы операторлар дегенмен тиiмдiрек хабарландырлай алады, мұндай
циклданың өйткенi формализацияланған түрi циклдердiң ұйымының арнайы
процессорлық командаларын қолдануға ꬬ¦оЄ мюгұнады.
Мысалы, есептеуiшi бар циклда синтаксистiк форманы for, неткенмен цикл тағы
басқалар силардың ол болған кейбiр тiлдерiнде, алғы шарты бар цикл шындықта
болып табылады. Циклда конструкция силарға демек:

for (i = 0; i 10; ++i)
{
... циклда дене
}
конструкцияның жазуын басқа форманы iс жүзiнде болады:
i = 0;
while (i 10)
{
... циклда дене
++i;
}

Әйтеуiр, for-дың конструкцияларында демек циклданың инициализациясының кез
келген ұсынысы бастапқыда жазылады, содан соң - кейбiр операцияның
циклданың әрбiр денесiнен кейiн бұл есептеуiштiң өзгерiсi мiндеттi түрде
емес болуы керек болуға атқарылатын жалғастары шарт; бұл нұсқағыштың
түзетуi немесе қандай болмасын мүлде бөтен операция бола алады. Мұндай
жоғарыда айтылған мәселенiң түрiнiң тiлдерi үшiн өте оңай ұйғарылады:
айнымалы - есептеуiш болжалғандық мүлде өзiн-өзi ұстайды және циклда
аяқтағаннан соң өз соңғы мәнiн сақтайды.

Бiрлескен цикл

Циклда тағы бiр вариант тап қалған жиыннан объекттерi үшiн кейбiр
операцияның орындау бенетiн цикл бұл объекттердiң тiзiмнiң ретiнiң анық
нұсқауысыз болып табылады. Мұндай циклдер (сонымен бiрге коллекция бойынша
циклдермен, көрудiң циклдерiмен) бiрлескен деп аталады және түрдiң нұсқауын
үстiрт жазуларды болады: M-ның жиын кiретiн барлық элементтер үшiн
операцияны X орындау. Әлбетте, нақты программалау тiлдерi элементтердiң
асып кетуiн нақты рет тапсырма бере алатындығыменнен, бiрлескен цикл,
теория жағынан алғанда, операция ретте жиынның элементтерiне қолданылатынын
ешқалай анықтамайды. Кез келгендiк емес рұқсаттың мекеме есебiненiнiң
циклдасының орындауды ықшамдауы мүмкiндiк бередi, тап қалған бағдарламашы
емес, өте тиiмдi рет. Бiрнеше операциялардың мүмкiндiк болған жағдайда
параллел орындауы бiр және операция та әртүрлi объекттер үшiн әртүрлi
есептеуiш модулдарға бiр уақытта орындалатында бiрлескен циклданың
орындауын қиғаштау тiптi бағдарлама сол ненiң жанында қисынды бiртiндеп
болып қалады болуы мүмкiн.
(C, Eiffel, Java, JavaScript, Perl, Python, PHP, LISP, Tcl тағы басқалар)
кейбiр программалау тiлдерiндегi бiрлескен циклдерi объекттердiң тап қалған
коллекциясының барлық элементтерiне арналған циклдердi орындауға мүмкiндiк
беруге болады. Мұндай циклданың анықтауында объекттердiң тек қана
коллекциясын көрсетуге керек болады және циклда дене (немесе оған сiлтеме)
объект мән жұмыстанылатын осы уақытта берген айнымалы. Оператордың
синтаксисi әр түрлi программалау тiлдерiнде айырып таныған:

C#:
foreach (type item in set)
{
қолдануы item
}
Delphi:
For item In [1..100] Do
Begin
қолдануы item (Кодтың жұмысқа қабiлеттiлiгi Delphi 2010 тексердi)
End;
Perl:
foreach (@set)
{
#қолдануы $_
}

немесе
for(@set)
{
#қолдануы $_
}
немесе
foreach $item(@set)
{
#қолдануы $item
}
Eiffel:
across set as cursor loop
-- қолдануы cursor.item
End
Java:
for (type item : set)
{
қолдануы item
}
JavaScript:
for (txtProperty in objObject)
{
*
қолдануы:
objObject [txtProperty]
*
}
PHP:
foreach ($arr as $item) {
* қолдануы $item*
}
немесе
foreach ($arr as $key=$value) {
* $key-ның индексi және $value-ның оның мәнiнiң қолдану мәндерi *
}
Visual Basic.NET:
For Each item As type In set
'қолдануы item
Next item
Windows PowerShell:
foreach ($item in $set) {
# $item-мен операциялар
}
немесе
$set ForEach-Object {
# операциялармен $_
}
Python
for item in iterator_instance:
# қолдануы item

Мерзiмiнен бұрын шығу және итерацияның рұқсатнамасы
Циклдiк конструкциялар өз синтаксис болатын көп программалау тiлдерi бұл
конструкциялардың жұмысының ретiн бұзылуға мүмкiндiк беретiн ерекше
командалар сонымен бiрге алады: мерзiмiнен бұрын циклдадан шығатын есiк
команданы және итерацияның рұқсатнама командасын.
Мерзiмiнен бұрын циклдадан шығатын есiк
Мерзiмiнен бұрын шығуды команда шығу шартына әлi жетуге жеткiлiксiз болатын
циклда орындау үзуге керегетiнде қолданылады. Мысалы, циклда ары қарай
жұмыстан кейiн мағынасы болмайтын циклданың денесi қашан орындаудың жанында
болады қате мәлiм болады. Мерзiмiнен бұрын шығуды команда EXIT немесе break
әдетте деп аталады, команданы, тiкелей келесi бұл команда iшiнде болатын
циклге (goto ) сөзсiз өтудi команданың әсерiне оның әсерi сол сияқты.
Осылай, екi төменде келтiрiлген циклдалар си тiлде бiрдей мүлде жұмыс
iстейдi:

Break-тың операторының қолдануы
while(шарт) {
... оператор
if (қате) break;
... оператор
}
... бағдарламаның жалғасы

Ұқсас бөлiк break-сыз
while(шарт) {
... оператор
if (қате) goto break_label;
... операторы
}
break_label:

... бағдарламаның жалғасы

Егер циклда дене қате шарт орындалса, екi жағдайларға, белгi қойылған
бағдарламаның ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Си тіліндегі циклдік алгоритм және циклдік алгоритмді бағдарламау
Бағдарламаны тестілеу
Шартты цикл операторлары C++
Алгоритмдеу, қасиеттері, негізгі құрылымдары. Паскаль бағдарламалау ортасы
Turbo pascal тілінің негізгі элементтері туралы
Өндірістік учаскелердің ауданын есептеу
Тұрғындардың жұмысбастылық теориясы
Электр жетегін санды аналогты басқару жүйесі
Электр жетегінің жағдайын аналогты және санды аналогты жүйелермен басқару
ТҚК санын анықтау
Пәндер