For петља — разлика између измена
Садржај обрисан Садржај додат
м datum |
м Разне исправке |
||
Ред 1:
[[Датотека:For-loop-diagram.png|thumb|right|
{{Helpbox <!-- NOTE: Please don't remove. Discuss naviagation concept at [[Talk:Do_while_loop#Helpbox_experiment] -->
|name = Конструкције петљи
Ред 29:
У увођењу се наводе (вероватно и додељују) све потрбне променљиве. Тип променљивих би требало да буде исти ако користите више променљивих у делу увођења. Услов проверава услов, и прекида петљу ако услов даје логички одговор нетачно. Накнадна мисао се извршава само једном сваки пут када се петља завршава и понавља.
Ево примера традиционалне for петље у [[Јава (програмски језик)|Јави]].
<source Lang="java">
Линија 82 ⟶ 83:
=== Рани излаз и наставак ===
Неки језици такође могу да пруже и друге пратеће изјаве,
<source lang=FORTRAN>
Линија 91 ⟶ 92:
IF (катастрофа) EXIT !Напушта петљу.
изјаве !Све док је добро, док није катастрофа.
END DO !Треба да се усклади са "DO".
</source>
=== Обим променљиве у петљи и семантика ===
Различити језици наводе различита правила за оно што ће вредност променљиве у петљи имати након завршетка петље. Ово дозвољава [[Компилатор|преводиоцу]] да генерише код који не оставља никакву вредност променљивој из петље, или можда чак и оставља, али је то непромењена вредност петље и никада се не чува у меморији. Стварно понашање може чак да варира у складу са поставкама оптимизације компајлера, као са Honywell Fortran66
У неким језицима (али не у [[C (програмски језик)|С]] и [[C++]]) петља променљиве је [[Непроменљив објекат|непроменљива]] у оквиру тела петље, сваки покушај да се промени њена вредност сматра се семантичком грешком. Такве модификације су понекад последица грешке програмера, што може бити веома тешко идентификовати. Међутим сама грешка ће вероватно бити откривена од стране људи који проверавају код. Ситуације у којима адресе променљивих у петљи пролазе као аргументи [[Потпрограми|потпрограма]] су веома тешко проверљиве, јер понашање рутине је у целини непознато у компајлеру. Неки примери у Фортрановом стилу:
Линија 109 ⟶ 111:
</source>
Заједнички приступ је да израчуна тачку понављања на почетку петље (са посебним освртом на изливање као у <code>for i := 0 : 65535 do ... ;</code> у
Још једна могућност је да је код генерисан и може се користити помоћну променљиве као променљива петље, вероватно сачуваном у регистару, чија вредност може или не може бити копирана у <code>I</code> на сваком понављању. Опет, модификације <code>I</code> неће утицати на контролу петље, али сада је на раскрсници могуће: у оквиру петље, референце вредности <code>I</code> могу бити (евентуално измењене) садашње вредности <code>I</code> или помоћне променљиве <code>I</code> па су збуњујући резултати загарантовани. На пример, у оквиру петље референцу на елемент <code>I</code> низа вероватно ће запослити помоћну променљиве (поготово ако је одржана у регистару), али ако је параметар на неку рутину (на пример, штампање изјава открива своју вредност), вероватно би позивало на одговарајуће променљиве <code>I</code>. Најбоље је да се избегну такве могућности.
Линија 282 ⟶ 284:
Сви делови осим '''do''' и '''od''' су опциони. "'''For''' ''i''" део, ако је присутан, мора бити први. Преостали део ("'''from''' ''f''", "'''by''' ''b''", "'''to''' ''t''", "'''while''' ''w''") може да се појави у било ком редоследу.
'''for''' ''e'' '''in''' ''c'' '''while''' ''w'' '''do'''
''# тело петље''
Линија 288 ⟶ 291:
"'''In''' ''c''" део прецизира контејнер, који може бити листа, скуп, збир, производ, функција, низ, или објекат спровођење итератор.
For петља може се раскинути са '''od''', '''end''', или '''end do'''.
Линија 298 ⟶ 302:
=== 1982: PostScript ===
For петља, написана као <code>[почетна] [прираст] [лимит] {...}for</code> започиње са унутрашњом променљивом, и извршава тело док унутрашња променљива није
<source lang=AppleScript>
1 1 6 {ИЗЈАВЕ} for
Линија 410 ⟶ 414:
END
</source>
Имајте на уму да је у оригиналном језику Oberon for петља изостављена у корист генералног конструкта Oberon петље. For петљa је поново
=== 1991: Python ===
Линија 447 ⟶ 451:
For петље могу такође да иду кроз табелу коришћењем <source lang=lua>ipairs()</source> да бројчано понови кроз низове и <source lang=lua>pairs()</source> да насумице прелазили преко речника.
Генерисана for петља прави [[Затварање (Програмирање)|затварања]]:
Линија 503 ⟶ 508:
<source lang=Java>
for (int i = 0; i < 5; i++) {
//обавља
//може користити изјаву 'break;' да брзо изађе из петље
//може користити изјаву 'continue;' да прескочи тренутни корак
Линија 512 ⟶ 517:
=== 1995:JavaScript ===
JavaScript подржава С стил "троизразних" петљи. <code>Вreak</code> и <code>continue</code> изјаве су
<source lang=JavaScript>
for (var i = 0; i < 5; i++) {
Линија 519 ⟶ 524:
</source>
Алтернативно, могуће је поновити преко свих
<source lang=JavaScript>
for (var key in array) { // такође ради са assoc. arrays
Линија 576 ⟶ 581:
== Имплементација у Интерпретираним програмским језицима ==
У [[Интерпретирани програмски језик|интерпретираним програмским језицима]], for петље могу бити реализоване на више начина. Често су for петље директно
<source lang=text>
Линија 612 ⟶ 617:
== Литература ==
* {{Cite book|title=PostScript Language Reference|publisher=Addison-Wesley Publishing Company|isbn=978-0-201-37922-8|pages=|pages=596}}
[[Категорија:Контрола тока]]
|