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

Садржај обрисан Садржај додат
Направљено превођењем странице „Infinite loop
 
Autobot (разговор | доприноси)
м Разне исправке; козметичке измене
Ред 1:
'''Бесконачна петља'''(или '''петља без граница''') jeје низ упутстава у [[Рачунарски програм|рачунарском програму]] који улазе у бесконачну петљу, било због петље која нема завршно стање, имате неког који се не може срести, или оног који изазива поновни почетак петље.У старијим оперативним системима са кооперативним мултитасковањем, бесконачне петље обично утичу на цео систем да престане да реагује. Са садашњим преовлађујућим превентивним мултитаскинг моделом, бесконачне петље узрокују да програм троши све могуће време процесора, али обично се може зауставити од стране корисника. Busy wait петље се такође понекад зову и   "бесконачне петље". Један могући узрок  "заустављања" рачунара је бесконачна петља ; остали укључују "млаћење"(енгл.thrashing), "застој"(енгл.deadlock), и [[Грешка сегментације|<nowiki/>]][[грешка сегментације]](енгл.access violations).
 
== Планирано против непланираног петљања ==
Ред 5:
 
=== Намерно петљање ===
Постоје неколико случаја када је то пожељно понашање. На пример, игрице засноване на конзолама обично немају услов излаза у главној петљи, јер не постоји оперативни систем из ког би се могло изаћи; петља ради све док се конзола не искључи.
 
Старински читач картица, јединица за записивање опрема, би се буквално зауставио када би обрада картице била завршена , пошто није било потребе да хардвер настави са радом  , све док се не учита нова гомила програмских картица.
 
Насупрот томе, модерни интерактивни рачунари захтевају да рачунар стално надгледа корисничке уносе или активност уређаја , тако да на неком основном нивоу постоји бесконачан процес петље која мора да настави све док се уређај не искључи или ресетује. У Apollo Guidance Рачунару, на пример, ова спољна петља се налазила у Exec програму, и ако рачунар не би имао никаквог посла, петља би се стартовала како би радила лажни посао који би искључио  светлосни показивач"рачунарске активности" .
 
Модерни рачунари такође обично не заустављају процесор или цикличне сатове матичне плоче када се "сруше". Уместо тога, враћају се грешци која приказује поруке оператору, и улази у бесконачну петљу чекајући корисника да или одговори на упит како би наставио, или да ресетује уређај.
 
=== Ненамерно петљање ===
Најчешће се термин користи за оне ситуације када то није циљани резултатatрезултатаt;то је , када се деси "[[Баг (информатика)|баг]]". Овакве грешке су најчешће код програмера почетника, али могу се десити и код искуснијих програмера такође,јер су њихови узроци доста суптилни.
 
Један чест узрок, на пример,је тај када програмер покуша да понови нешто над збирком ставки као што је [[Povezana lista|повезана листа]],извршавајући код петље једном за сваку ставку.Неправилно формирање везе може створити референтну петљу у листи, где је један елемент листе повезан са оним који се догодио раније на листи. Овај део листе улази у круг, што доводи да програм петља заувек.
Ред 21:
 
== Прекид ==
Све док систем реагује, бесконачне петље често могу бити прекинуте слањем сигнала у процесу(као што је SIGINT у Unix), или прекид у процесору, што узрокује да тренутни процес буде прекинут. Ово се може урадити у [[менаџеру задатака]], у терминалу са командом Control-C , или користећи  "kill" команду или [[ позив система]]. Међутим, ово не ради увек, јер процес можда не реагује на сигнала или процесор може бити у непрекидном стању, као у "Cyrix coma bug "(проузрокован преклапањем непрекидним инструкцијама у инструкционом "цевоводу"). У неким случајевима остали сигнали као што је  SIGKILL може радити, пошто не захтевају процес да се оглашава, док у другим случајевима петља не може бити угашена гашењем система.
 
== Језичка подршка ==
Ред 101:
print x
x += 0.1
</source>Због вероватноће тестова за  једнакост или неједнакост који су неочекивано неисправни, сигурније је користити више-од или мање-од тестове када се ради о  "floating-point "вредностима. На пример, уместо да се тестира да ли је  <code>x</code> једнако 1.1, могло би се проверити да ли  је <tt>(x <= 1.0)</tt>, или <tt>(x < 1.1)</tt>, који би сигурно изашли накод одређеног броја понављањаeпонављањае. Још један начин да се поправи овај пример био би уз коришћење целог броја као индекс петље, бројећи број понављања који су били извршени.
 
Сличан проблем се дешава често у [[Нумеричка анализа|нумеричкој анализи]]:  да би се израчунао одређени резултат, понављање је намењено да се изврши све док грешка не буде мања од изабране толеранције. Међутим, због грешака заокруживања током понављања, одређена толеранција не може бити никада достигнута, што резултује бесконачном петљом.
Ред 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. With arbitrary-precision arithmetic, this loop would continue until the computer's [[Рачунарска меморија|memory]] could no longer contain <code>i</code>. If <code>i</code> was a signed integer, rather than an unsigned integer, overflow would be undefined. In this case, the loop could be optimized into an infinite loop.
 
=== Бесконачна рекурзија ===
Ред 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. </ref>
 
== Такође видети ==
Ред 171:
 
== Референце ==
{{reflist}}
<references />
 
[[Категорија:Рекурзије]]