Бесконачна петља — разлика између измена

Садржај обрисан Садржај додат
Нема описа измене
Autobot (разговор | доприноси)
м Разне исправке; козметичке измене
Ред 9:
|list6 = [[Контрола протока]]
}}
'''Бесконачна петља'''(или '''петља без граница''') је низ упутстава у [[Рачунарски програм|рачунарском програму]] који улазе у бесконачну петљу, било због [[Управљање током|петље]] која нема завршно стање, имате неког који се не може срести, или оног који изазива поновни почетак петље. У старијим [[Оперативни систем|оперативним системима]] са [[Кооперативно мултитасковање|кооперативним мултитасковањем]], бесконачне петље обично утичу на цео систем да престане да реагује. Са садашњим преовлађујућим превентивним мултитаскинг моделом, бесконачне петље узрокују да програм троши све могуће време процесора, али обично се може зауставити од стране корисника. [[Активно чекањe]] петље се такође понекад зову и   "бесконачне петље". Један могући узрок  [[Држ (рачунарство)|"заустављања"]] рачунара је бесконачна петља ; остали укључују [[млаћење]] (енгл.[[Trashing(computer science)|thrashing]]), [[застој]] и [[Грешка сегментације|грешка сегментације]].
 
== Планирано против непланираног петљања ==
Ред 19:
Старински [[Бушена картица|читач картица]], [[опрема за записивање јединица]], би се буквално зауставио када би обрада картице била завршена , пошто није било потребе да хардвер настави са радом  , све док се не учита нова гомила програмских картица.
 
Насупрот томе, модерни интерактивни рачунари захтевају да рачунар стално надгледа корисничке уносе или активност уређаја , тако да на неком основном нивоу постоји бесконачан процес [[idle петље]] која мора да настави све док се уређај не искључи или ресетује. У [[Apollo Guidance Рачунар|Apollo Guidance Рачунару]]у, на пример, ова спољна петља се налазила у Exec програму, и ако рачунар не би имао никаквог посла, петља би се стартовала како би радила лажни посао који би искључио  светлосни показивач"рачунарске активности" .
 
Модерни рачунари такође обично не заустављају процесор или цикличне сатове матичне плоче када се "сруше". Уместо тога, враћају се грешци која приказује поруке оператору, и улази у бесконачну петљу чекајући корисника да или одговори на упит како би наставио, или да ресетује уређај.
Ред 26:
Најчешће се термин користи за оне ситуације када то није циљани резултатаt;то је , када се деси "[[Баг (информатика)|баг]]". Овакве грешке су најчешће код програмера почетника, али могу се десити и код искуснијих програмера такође,јер су њихови узроци доста суптилни.
 
Један чест узрок, на пример,је тај када програмер покуша да понови нешто над збирком ставки као што је [[Povezana lista|повезана листа]], извршавајући код петље једном за сваку ставку. Неправилно формирање везе може створити референтну петљу у листи, где је један елемент листе повезан са оним који се догодио раније на листи. Овај део листе улази у круг, што доводи да програм петља заувек.
 
Док се већина бесконачних петљи могу наћи у близини инспекције кода, не постоји општи метод за одређивање да ли ће се дати програм икада зауставити или ће радити заувек ; ово је често код [[Халтинг проблем|проблема заустављања]].
Ред 72:
 
=== Математичке грешке ===
Овде је пример бесконачне петље у [[Вижуал бејсик|Вижуал бејсик]]:<source lang="vb">
dim x as integer
do while x < 5
Ред 116:
 
== Вишепартијска петља ==
Иако су бесконачне петље у једном програму обично лаке за предвидети, петља изазвана од стране више лица је много теже предвидети. Замислите сервер који увек одговара са грешком у виду поруке ако не разуме тражени захтев. Очигледно, не постоји могућност за бесконачном петљом на серверу, али ако су ту два сервера(A и Б), и A прими поруку о непознатом типу из Б, онда А одговара са грешком у виду поруке серверу Б, Б не разуме поруку у одговара серверу А са његовом поруком , А не разуме поруку од Б и шаље још једну грешку у виду поруке, и тако у бесконачност. Један чест пример ове ситуације је [[Петља електронске поште|петља електронске поште]].
 
== Квази-бесконачне петље ==
Ред 127:
/* loop code */
}
</source>Чини се да ће ово ићи у недоглед, али уставари ће вредност <code>i</code> на крају достићи максималну складишну вредност у <code>unsigned int</code> и додавање броја 1 том броју ће се завршити са 0, окончавајући петљу. Стварна граница <code>i</code> зависи од система и [[Компилатор|компилатора]] који се користи. Са [[Произвољно прецизна рачуница|произвољно прецизном рачуницом]], ова петља ће наставити са радом све док [[Рачунарска меморија|рачунарска меморија]] не може више садржати <code>i</code>. Ако је <code>i</code> припицан цео број, више него не приписан цео број, преливање неће бити дефинисано. У том случају, петља може бити оптимизована у бесконачну петљу.
 
=== Бесконачна рекурзија ===
Ред 171:
}
}
</source>Термин је наводно добио име од програмера који је кодирао модалну поруку кутије у [[Мајкрософт аксес|Мајкрософт аксес]] без ОК или Cancel дугмета, чиме се онемогућава читав програм сваки пут када се кутија појави.<ref>[http://www.catb.org/~esr/jargon/html/A/Alderson-loop.html Alderson Loop] The Jargon File, Version 4.4.7.</ref>
 
== ТакођеВиди видетијош ==
* [[Детекција кружења]]
* [[Застој]]
* [[Дивергенција (рачунарство)]]
* [[GoTo]]
* [[Рекурзија|Рекурзија]]
* [[Форк бомба]]