Бесконачна петља — разлика између измена
Садржај обрисан Садржај додат
Направљено превођењем странице „Infinite loop“ |
м Разне исправке; козметичке измене |
||
Ред 1:
'''Бесконачна петља'''(или '''петља без граница''')
== Планирано против непланираног петљања ==
Ред 5:
=== Намерно петљање ===
Постоје неколико случаја када је то пожељно понашање.
Старински читач картица, јединица за записивање опрема, би се буквално зауставио када би обрада картице била завршена , пошто није било потребе да хардвер настави са радом , све док се не учита нова гомила програмских картица.
Насупрот томе, модерни интерактивни рачунари захтевају да рачунар стално надгледа корисничке уносе или активност уређаја , тако да на неком основном нивоу постоји бесконачан процес петље која мора да настави све док се уређај не искључи или ресетује.
Модерни рачунари такође обично не заустављају процесор или цикличне сатове матичне плоче када се "сруше". Уместо тога, враћају се грешци која приказује поруке оператору, и улази у бесконачну петљу чекајући корисника да или одговори на упит како би наставио, или да ресетује уређај.
=== Ненамерно петљање ===
Најчешће се термин користи за оне ситуације када то није циљани
Један чест узрок, на пример,је тај када програмер покуша да понови нешто над збирком ставки као што је [[Povezana lista|повезана листа]],извршавајући код петље једном за сваку ставку.Неправилно формирање везе може створити референтну петљу у листи, где је један елемент листе повезан са оним који се догодио раније на листи. Овај део листе улази у круг, што доводи да програм петља заувек.
Ред 21:
== Прекид ==
Све док систем реагује, бесконачне петље често могу бити прекинуте слањем сигнала у процесу(као што је SIGINT у Unix), или прекид у процесору, што узрокује да тренутни процес буде прекинут. Ово се може урадити у [[менаџеру задатака]], у терминалу са командом Control-C , или користећи "kill" команду или [[
== Језичка подршка ==
Ред 101:
print x
x += 0.1
</source>Због вероватноће тестова за једнакост или неједнакост који су неочекивано неисправни, сигурније је користити више-од или мање-од тестове када се ради о "floating-point
Сличан проблем се дешава често у [[Нумеричка анализа|нумеричкој анализи]]: да би се израчунао одређени резултат, понављање је намењено да се изврши све док грешка не буде мања од изабране толеранције. Међутим, због грешака заокруживања током понављања, одређена толеранција не може бити никада достигнута, што резултује бесконачном петљом.
Ред 117:
/* loop code */
}
</source>It appears that this will go on indefinitely, but in fact the value of <code>i</code> will eventually reach the maximum value storable in an <code>unsigned int</code> and adding 1 to that number will wrap-around to 0, breaking the loop. The actual limit of <code>i</code> depends on the details of the system and [[Компилатор|compiler]] used.
=== Бесконачна рекурзија ===
Ред 161:
}
}
</source>Термин је наводно добио име од програмера који је кодирао модалну поруку кутије у [[Мајкрософт аксес|Microsoft Access]] без ОК или Cancel дугмета, чиме се онемогућава читав програм сваки пут када се кутија појави.<ref>[http://www.catb.org/~esr/jargon/html/A/Alderson-loop.html Alderson Loop] The Jargon File, Version 4.4.7.
== Такође видети ==
Ред 171:
== Референце ==
{{reflist}}
[[Категорија:Рекурзије]]
|