<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hr">
	<id>https://croatianschoolsydney.com/index.php?action=history&amp;feed=atom&amp;title=For_petlja</id>
	<title>For petlja - Povijest promjena</title>
	<link rel="self" type="application/atom+xml" href="https://croatianschoolsydney.com/index.php?action=history&amp;feed=atom&amp;title=For_petlja"/>
	<link rel="alternate" type="text/html" href="https://croatianschoolsydney.com/index.php?title=For_petlja&amp;action=history"/>
	<updated>2026-05-25T21:14:37Z</updated>
	<subtitle>Povijest promjena ove stranice na wikiju</subtitle>
	<generator>MediaWiki 1.36.2</generator>
	<entry>
		<id>https://croatianschoolsydney.com/index.php?title=For_petlja&amp;diff=55744&amp;oldid=prev</id>
		<title>WikiSysop: Bot: Automatski unos stranica</title>
		<link rel="alternate" type="text/html" href="https://croatianschoolsydney.com/index.php?title=For_petlja&amp;diff=55744&amp;oldid=prev"/>
		<updated>2021-08-24T06:10:12Z</updated>

		<summary type="html">&lt;p&gt;Bot: Automatski unos stranica&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nova stranica&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;!--'''For petlja'''--&amp;gt;{{nedostaju izvori}}&lt;br /&gt;
&lt;br /&gt;
U [[računarstvo|računarstvu]], '''''for'' petlja''' je [[naredba (programiranje)|naredba]] [[programski jezik|programskog jezika]] koja dopušta uzastopno [[izvršavanje (računala)|izvršavanje]] koda. ''For'' petlja se klasificira kao [[iteracija|iterativna]] naredba.&lt;br /&gt;
&lt;br /&gt;
Za razliku od drugih [[upravljanje tokom#Petlje|petlji]], poput [[while petlja|while petlje]], ''for'' petlja se razlikuje postojanjem eksplicitnog [[brojač petlje|brojača petlje]] ili varijable petlje. Ovo dopušta tijelu petlje (kodu koji se opetovano izvršuje) svjesnost o sekvenciranju svake iteracije. ''For'' petlje se tipično koriste kad je broj iteracija poznat prije ulaska u petlju.&lt;br /&gt;
&lt;br /&gt;
Ime &amp;quot;''for'' petlja&amp;quot; dolazi od [[Engleski jezik|engl.]] riječi ''for'' koja se koristi kao [[ključna riječ]] u većini programskih jezika. U [[FORTRAN]]-u i PL/I se, međutim, koristi ključna riječ ''DO'' i zvana je &amp;quot;''do'' petljom&amp;quot;, dok je u svim drugim pogledima istovjetna ovdje opisanoj ''for'' petlji.&lt;br /&gt;
&lt;br /&gt;
== Vrste ''for'' petlji ==&lt;br /&gt;
&lt;br /&gt;
Naredba ''for'' petlje je dostupna u većini [[imperativno programiranje|imperativnih programskih]] jezika. Čak i ignorirajući manje razlike u [[sintaksa|sintaksi]], postoje mnoge razlike u načinu na koje ove naredbe rade i razini ekspresivnosti koju pružaju. Općenito ''for'' petlje potpadaju u jednu od sljedećih kategorija:&lt;br /&gt;
&lt;br /&gt;
=== Numerički opsezi ===&lt;br /&gt;
&lt;br /&gt;
Ova je vrsta ''for'' petlje karakterizirana [[brojanje]]m - enumeriranjem svake od vrijednosti unutar cjelobrojnog numeričkog opsega ili aritmetičkim napredovanjem. Opseg je često specificiran početnim i završnim brojem, i ponekad uključuje vrijednost koraka (dopuštajući primjerice brojanje po dva, ili npr. unazad). Reprezentativan primjer u [[BASIC (programski jezik)|BASIC]]-u jest:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
   FOR I = 1 TO 10&lt;br /&gt;
      ''tijelo petlje''&lt;br /&gt;
   NEXT I&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Varijabla petlje ''I'' će poprimiti vrijednosti 1, 2, ..., 9, 10 u svakoj od deset iteracija tijela petlje, koje će se izvršiti u tom redoslijedu. Svaki računalni jezik, pa čak i različiti dijalekti istog jezika (npr. BASIC), ima razlčite ključne riječi za ''for'' petlju i različite načine određivanja ''početnih'', ''završnih'' i vrijednosti ''koraka''.&lt;br /&gt;
&lt;br /&gt;
Rijetko dostupno poopćenje dopušta vrijednostima početka, kraja i koraka da budu specificirane kao stavke u listi, a ne samo kao aritmetički niz; primjerice:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
  for i:=2,3,5,7,11 do ''itd.''&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Pri čemu svaki stavak liste može i sam biti aritmetički niz. Obična je ''for'' petlja stoga primjer liste sa samo jednim elementom.&lt;br /&gt;
&lt;br /&gt;
=== ''For'' petlje zasnovane na iteratorima ===&lt;br /&gt;
{{glavni|Foreach}}&lt;br /&gt;
&lt;br /&gt;
Ova vrsta petlje je poopćenje one vrste ''for'' petlje koja barata numeričkim opsezima, s obzirom da dopušta enumeriranje skupova stavaka (elemenata) koji ne moraju biti nizovi brojeva. Obično je karakterizirana uporabom implicitnog ili eksplicitnog [[iterator]]a, u kojem varijabla petlje poprima svaku od vrijednosti niza ili neke druge uredive podatkovne kolekcije. Kanonski primjer u [[Python (programski jezik)|Pythonu]] jest:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
   for item in lista:&lt;br /&gt;
      ''tijelo petlje''&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pri čemu je ''lista'' ili podatkovna kolekcija koja implicitno podržava iteriranje, ili sama može biti eksplicitni iterator. Neki jezici imaju ovo kao dodatak drugoj sintaksi ''for'' petlje; prije svega PHP posjeduje ovu vrstu petlje pod imenom &amp;lt;code&amp;gt;[[foreach]]&amp;lt;/code&amp;gt; kao i kao troizraznu ''for'' petlju (vidjeti dolje) pod imenom &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Složene ''for'' petlje ===&lt;br /&gt;
&lt;br /&gt;
Uvedene u Algol-68 nakon čega su ostvarane i u PL/I, dopuštaju da iteriranje petlje bude složeno sa ispitivanjem, kao u: &lt;br /&gt;
&lt;br /&gt;
 for i:=1:N while A(i) &amp;gt; 0 do ''itd.''&lt;br /&gt;
&lt;br /&gt;
To jest, vrijednost je dodijeljena varijabli petlje ''i'' i tijelo će petlje biti izvršeno samo ako je ''while izraz'' '''istinit'''. Ako je rezultat '''lažan''', izvršavanje se ''for'' petlje zaustavlja. Pod pretpostavkom da je vrijednost varijable petlje definirana nakon terminacije petlje, gornja će naredba naći prvi nepozitivan element niza ''A'' (ako takav ne postoji, njegova će vrijednost biti ''N+1'') ili, s prikladnim varijacijama, prvi znak nebjeline u stringu, itd.&lt;br /&gt;
&lt;br /&gt;
=== ''For'' petlje s tri izraza ===&lt;br /&gt;
{{prijevod|eng}}&lt;br /&gt;
[[Datoteka:For-loop-diagram.png|mini|170px|&amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loop diagram]]&lt;br /&gt;
Ovaj tip petlje za nalazimo u gotovo svim jezicima koje dijele zajedničke baštine sa C programskom jeziku. Ona se odlikuje tri parametra petlja kontrole izražavanja; se sastoji od initializer, loop-test, i brojanje izražavanja. Predstavnik primjer u C je: for (brojac = 0; counter &amp;lt;10; brojac + +)''tijelo petlje'''tri kontrolna izraza, odvojenih zarezima ovdje, su s lijeva na desno initializer izražavanja, testa izraz petlji, i računajući izraz. Initializer se ocjenjuje točno jednom na početku. Izraz petlja testa se procjenjuje na početku svake iteracije kroz petlju, a određuje kada treba petlja izlaz. Konačno, računajući izraz se ocjenjuje na kraju svake iteracije petlje, i obično je odgovorna za mijenjanje varijable petlje. U većini jezika koji pružaju ovu vrstu for petlji, svaka od tri kontrolna petlja izraza nije obavezan. Kad izostavili testiranje izraz petlju uzima uvijek biti istina, dok initializer i prebrojavanja izrazi tretiraju kao ne-OPS-a kada je ispuštena. Zarezom u sintaksi su dovoljno navesti izostavljanje jednog od izraza. Neki primjeri su:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
   int i = 0;&lt;br /&gt;
   for ( ; i&amp;lt;10; ) {&lt;br /&gt;
      i++;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or this,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
   int i = 0;&lt;br /&gt;
   for ( ; ; i++ ) {&lt;br /&gt;
       if ( i &amp;gt;= 10 ) break;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primijetite da u normalnom korištenju, naziv varijable iteracija ponavlja u svakoj od tri dijela. Korištenje drugo ime u bilo kojem dijelu vrijedi sintaksa, iako je rezultiralo ponašanje ne bi moglo biti željeni. == Dodatna semantika i konstrukti == === Upotreba kao beskonačne petlje === Ova C-style for petlje je obično izvor [[beskonačnu petlju]] od temeljnih koraka iteracije su potpuno u kontroli programer. U stvari beskonačne petlje, kada su namijenjene, za ovu vrstu petlje se često koristi (s praznim izrazima), kao što su:&lt;br /&gt;
&lt;br /&gt;
   for (;;)&lt;br /&gt;
      ''tijelo petlje'''&lt;br /&gt;
&lt;br /&gt;
=== Rani izlazak i nastavljanje ===&lt;br /&gt;
&lt;br /&gt;
Neki jezici mogu također osigurati ostale prateće izvještaje, koji kada se danas može mijenjati kako za iteracija petlje prihoda. Zajednička među njima su [[break naredbe | break]] i [[nastaviti izjavu | nastavite]] izjavama pronađena C i njegovi derivati . break naredbe uzrokuje unutrašnje-najviše petlje biti prestaje odmah našto proveden. nastavlja iskaz će krenuti odmah na sljedeću iteraciju bez daljnjeg napredak kroz petlju tijelo za tekuće iteracije. drugim jezicima svibanj imati slične izjave ili na drugi način osigurati sredstva mijenjati za napredak petlji, npr. u Fortranu 95:&lt;br /&gt;
      DO I = 1,N&lt;br /&gt;
        I = 7                    !Overt adjustment of the loop variable. Compiler complaint likely.&lt;br /&gt;
        Z = ADJUST(I)            !Function ''ADJUST'' might alter ''I'', to uncertain effect.&lt;br /&gt;
        ''normal statements''&lt;br /&gt;
        IF (''no good'') CYCLE       !Skip this value of ''I'', continue with the next.&lt;br /&gt;
        ''statements''&lt;br /&gt;
        IF (''finish now!'') EXIT    !Abandon the loop.&lt;br /&gt;
        ''statements''&lt;br /&gt;
      END DO&lt;br /&gt;
Nažalost, jasna vodeća daje OSNOVNI nije slijedio i tako''END DO''ne identificiraju varijable petlje se smatra da pripadaju u, i još gore, niti CIKLUS''''i''EXIT ' izjave. To postaje još važnije kada su mnoge i ugniježđene petlje su uključeni. ''EXIT''mogu čak smatra kao''izlaz''postupak'', umjesto''petlja izlaz: fraze poput''NEXT''a možda sam,''DONEXT ja''i'' DOQUIT Ja''ili slično eksplicitno indikacije će pomoći kako bi zabluda vidljivija. Djelomično rješenje nudi se kroz sintakse nastavak (u Fortranu i PL / I, na primjer), čime je naljepnica povezan s''''DO izjavu i istom oznakom tekst je dodan na kraju markera, kao što su''x: DO I = 1, N''i''END DO x''na primjer, nakon čega CIKLUS x''''i''x''EXIT bi se mogla koristiti. Međutim, radeći izravno protiv objektivno, tekst oznaku''x''ne smije biti ime varijable petlje, tako da &amp;quot;ja&amp;quot; neće biti dozvoljeno (iako &amp;quot;II&amp;quot; bi biti), i, ako ima je drugi takav petlju kasnije u rutinu, različite oznake tekstovima bi da bude izabran.&lt;br /&gt;
=== Doseg i semantika varijable petlje ===&lt;br /&gt;
&lt;br /&gt;
Različiti jezici odrediti različite pravila za koju vrijednost varijable petlje održat će na završetku svojih petlje, i doista neki drže da je to &amp;quot;postaje nedefiniran&amp;quot;. To omogućava [[sastavljač]] za generiranje koda koji ostavlja bilo koju vrijednost u varijablu petlje, ili možda čak i ostavlja je bez promjena, jer petlje vrijednost održan je u registar i nikada pohranjuju memory.In nekim jezicima (ne [[C ( jezik) | C]] ili C + +) petlje varijabla [[Immutable objekta | nepromjenjivi]] u okviru tijela petlje, uz svaki pokušaj to promijeniti njegovu vrijednost i smatra se semantička pogreška. Takve promjene su često posljedica pogreške programer, koji može biti vrlo teško utvrditi nakon što je napravio. Međutim samo očit promjene su vjerojatno da će biti otkriven kod kompajler. Situacije gdje adresu varijable petlje je prošao kao argument [[potprogram]] čine ga vrlo teško provjeriti, jer je rutinsko ponašanje općenito nepristupačan to kompajler&lt;br /&gt;
&lt;br /&gt;
Ipak Druga mogućnost je da generira kôd može zaposliti pomoćne varijable petlje varijablu, eventualno održava u stroju registar, čija je vrijednost svibanj ili svibanj ne biti kopiran to''ja''na svakoj iteraciji. U ovom slučaju, izmjene''Ja''neće utjecati na kontrolu petlje, ali sada je moguće disjunkcije: unutar petlje, reference na vrijednosti''ja''bi moglo biti to (moguće mijenjati) struje Vrijednost''Ja''ili pomoćne varijable (održan siguran od nepravilne izmjene) i zbunjujuće rezultati su zagarantirani. Na primjer, unutar petlje referencu na element''ja''polja vjerojatno bi zapošljavao pomoćne varijable (posebno ako se u stroju registar), ali ako''ja''je parametar neke rutine (npr. ,''print''-izjavu da bi se otkrilo njegovu vrijednost), to bi vjerojatno biti odgovarajuće varijable''ja''umjesto. To je najbolje izbjegavati takve mogućnosti.&lt;br /&gt;
== Razlikovanje ''for'' petlji zasnovanih na iteratorima i onih numeričkih ==&lt;br /&gt;
&lt;br /&gt;
Jezika se može ponuditi i iterator na bazi''za''petlje i numerički-based''za''petlja u, naravno, svoje sintakse. To može izgledati da je brojčana petlja-temeljen uvijek se može zamijeniti odgovarajućim loop-based iterator, ali razlike mogu nastati. Pretpostavimo da polje''''ima elemente 1 do''N'', a jezik ne nude jednostavna pridruživanja'': = 3 *;'', tako da neke vrste for petlje moraju razvijati. Zatim u pseudocode, dvije verzije bi mogle biti za i: = 1: N do (i): = 3 * (i), pored i; forall i: = 1: N do (i): = 3 * (i), koji su očito ekvivalent, dapače čini razlika samo sintaksu trivijalnost, ali, semantika su različite. ''''Forall verzija je da se smatra kao masovna zadatkom u kojem pojmovno, sva desna strana rezultati vrednuju i lijeve strane nalaze se primatelji, onda su učinili zadatke. Kod kompajlera smišlja da je to efekt neutvrđenih, ali ideja je da nijedan predmet s lijeve strane se mijenja prije svih stavki na desnoj strani su ocijenili, svaki element je dodijeljena samo jednom.&lt;br /&gt;
&lt;br /&gt;
Sada pretpostavimo da je uvjet je da svaki element se prosjek sebe i svoja dva susjeda, a zbog jednostavnosti, pretpostavimo da je prvi i posljednji elementi moraju biti nepromijenjeni. Zatim, petlje postaju za i: = 2: N-1 do A (i): = [(i-1) + (i) + (i +1)] / 3; Dalje ja, ja pi: = 2: N-1 do A (i): = [(i-1) + (i) + (i +1)] / 3; U ovom slučaju, rezultati će biti različiti: jer'' za''petlja se izvodi kao uzastopna iteracija, elementa (i-1) održat će vrijednost koja je pravedan bio izračunava prethodne iteracije, a ne izvorna vrijednost, dok je u''forall''verziju, ona bi još uvijek nije su se promijenila. Pod uvjetom naravno da je prevodilac provedbu''''forall konstrukt ne, u stvari, podupirati to tumačenje. Ova razlika svibanj ili svibanj ne biti važno. Ako ne, ovisno o tome što pokreće najbrže mogli biti izabrani. No, razlika može biti vitalna, kako je u pojedinim fazama [[LU dekompozicija]] algoritam za samo jedan primjer.&lt;br /&gt;
&lt;br /&gt;
Složenije''za''petlje (posebno s uvjetno grananje) će uvesti dodatne teškoće najvjerojatnije neće biti smješteni po sintaksu forall''''izjave. Umjesto da pokuša pretvoriti''za''izjavu u''''forall priopćenju, zadaća treba revidirati u smislu dodjele jedne strukture podataka (npr. polje) do drugog istog tipa, izbjegavajući složene uvjetima. Na primjer, s obzirom na cijeli broj podjela u kojima 3 / 4 = 0, kvadrat polje''''može se inicira na identitet matrica kako slijedi: pi i: = 1: n, j: = 1: n do A (i, j): = (i / j) * (j / i);% = 1 ako i = j, inače nula. Evo, desna strana nije stvarna kvadratnih polja kao što su''A'', već izraz generiranje vrijednosti za svaki element ipak, koja bi se mogla smatrati kao formiranje fiktivnog polja. ''''Izjave forall stoga poopćenje jednostavnije array-izjava zadatka, u kojem obje strane izraza moraju biti stvarni polja.&lt;br /&gt;
&lt;br /&gt;
It might be that during the preparation of the right-hand side's values the compiler might deduce that the rather odd integer arithmetic expression generates either zero or one in a simple pattern and so would produce code that does not perform the evaluations, but this is unlikely. Better results would likely be gained by&lt;br /&gt;
 A:=0;                        %Mass assignment to an array.&lt;br /&gt;
 forall i:=1:N do A(i,i):=1;  %Too complex for simple array assignment.&lt;br /&gt;
Though a language designed to support array manipulation and especially matrix arithmetic might well allow some syntax that identifies the diagonal of a square array, so that the second statement might become&lt;br /&gt;
 Diag(A):=1;&lt;br /&gt;
&lt;br /&gt;
== Istovjetnost s ''while'' petljama ==&lt;br /&gt;
&lt;br /&gt;
A for loop can ''always'' be converted into an equivalent while loop by incrementing a counter variable directly.  The following pseudocode illustrates this technique:&lt;br /&gt;
&lt;br /&gt;
  faktorijela := 1&lt;br /&gt;
  for brojac from 1 to 5:&lt;br /&gt;
      faktorijela := faktorijela * brojac&lt;br /&gt;
&lt;br /&gt;
is easily translated into the following while loop:&lt;br /&gt;
&lt;br /&gt;
  faktorijela := 1&lt;br /&gt;
  brojac := 1&lt;br /&gt;
  while brojac &amp;lt;= 5:&lt;br /&gt;
     faktorijela := faktorijela * brojac&lt;br /&gt;
     brojac := brojac + 1&lt;br /&gt;
&lt;br /&gt;
== Sintaksa ==&lt;br /&gt;
&lt;br /&gt;
Given an action that must be repeated, for instance, five times, different languages' for loops will be written differently.  The syntax for a three-expression for loop is nearly identical in all languages that have it, after accounting for different styles of block termination and so on (example is C):&lt;br /&gt;
&lt;br /&gt;
 for (brojac = 1; brojac &amp;lt;= 5; brojac++)&lt;br /&gt;
   ''naredbe'';&lt;br /&gt;
&lt;br /&gt;
The numeric-range for loop varies somewhat more.  Pascal would write it:&lt;br /&gt;
&lt;br /&gt;
 for Brojac := 1 to 5 do&lt;br /&gt;
   ''naredbe'';&lt;br /&gt;
&lt;br /&gt;
Whereas Perl would use:&lt;br /&gt;
&lt;br /&gt;
 for($brojac = 1; $brojac &amp;lt;= 5; ++$brojac) {&lt;br /&gt;
   ''naredbe'';&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
(Note that &amp;lt;code&amp;gt;for(1..5) { }&amp;lt;/code&amp;gt; is really a ''foreach'' in Perl.)&lt;br /&gt;
&lt;br /&gt;
Iterator for loops most commonly take a form such as this (example is Python):&lt;br /&gt;
&lt;br /&gt;
  for brojac in range (1, 6):    ''# range() gives values to one less than the second argument''&lt;br /&gt;
    ''naredbe''&lt;br /&gt;
&lt;br /&gt;
But the PHP equivalent (virtually never used for simple repetition but noted here for completeness):&lt;br /&gt;
&lt;br /&gt;
 foreach (range(1,5) as $i)&lt;br /&gt;
     ''naredbe'';&lt;br /&gt;
&lt;br /&gt;
Contrary to other languages, in [[Smalltalk]] a for loop is not a language construct but defined in the class Number as a method with two parameters, the end value and a [[closure]], using self as start value. &lt;br /&gt;
&lt;br /&gt;
 1 to: 5 do: [ &amp;quot;naredbe&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
== Vremeplov ''for'' petlji u raznim [[programski jezik|programskim jezicima]] ==&lt;br /&gt;
=== 1966: [[Fortran#FORTRAN_66|FORTRAN 66]] ===&lt;br /&gt;
&lt;br /&gt;
FORTRAN 66's equivalent of the &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loop is the &amp;lt;code&amp;gt;DO&amp;lt;/code&amp;gt; loop. The syntax of Fortran's &amp;lt;CODE&amp;gt;DO&amp;lt;/CODE&amp;gt; loop is:&lt;br /&gt;
        DO label counter=start, stop, step&lt;br /&gt;
 label  naredbe&lt;br /&gt;
Example:&lt;br /&gt;
        PROGRAM MAIN&lt;br /&gt;
          SUM SQ=0&lt;br /&gt;
          DO 101 I=1,9999999&lt;br /&gt;
            IF (SUM SQ.GT.1000) GO TO 109&lt;br /&gt;
            SUM SQ=SUM SQ+I**2&lt;br /&gt;
 101      CONTINUE&lt;br /&gt;
 109      CONTINUE&lt;br /&gt;
        END&lt;br /&gt;
The fortran DO loop caused an orbit computation error in a [[Project Mercury|Mercury flight]], and was long suspected to have caused the crash of the [[Mariner program#Mariners 1 and 2|Mariner 1 space rocket]] on 22 July 1962 - [[q:C. A. R. Hoare|C.A.R. Hoare]], in particular a missing comma in the wrong place can drastically alter the meaning of the loop. Example:&lt;br /&gt;
          DO 101 I=1.9999999&lt;br /&gt;
 101      CONTINUE&lt;br /&gt;
Because of the peculiar feature of fortran that spaces are not significant, this is interpreted as a single assignment to the (probably undeclared) variable &amp;lt;code&amp;gt;DO101I&amp;lt;/code&amp;gt;.  In the subsequent FORTRAN 77 specification an additional [[comma]] was required in the &amp;lt;code&amp;gt;DO&amp;lt;/code&amp;gt; loop syntax.&lt;br /&gt;
&lt;br /&gt;
=== 1968: [[Algol68]] ===&lt;br /&gt;
&lt;br /&gt;
[[Algol68]] has what was considered &amp;lt;b&amp;gt;the&amp;lt;/b&amp;gt; universal loop, the full syntax is:&lt;br /&gt;
 &amp;lt;u&amp;gt;for&amp;lt;/u&amp;gt; i &amp;lt;u&amp;gt;from&amp;lt;/u&amp;gt; 1 &amp;lt;u&amp;gt;by&amp;lt;/u&amp;gt; 1 &amp;lt;u&amp;gt;to&amp;lt;/u&amp;gt; 3 &amp;lt;u&amp;gt;while&amp;lt;/u&amp;gt; i≠4 &amp;lt;u&amp;gt;do&amp;lt;/u&amp;gt; ~ &amp;lt;u&amp;gt;od&amp;lt;/u&amp;gt;&lt;br /&gt;
There are several unusual aspects of the construct&lt;br /&gt;
* only the ''&amp;lt;u&amp;gt;do&amp;lt;/u&amp;gt; ~ &amp;lt;u&amp;gt;od&amp;lt;/u&amp;gt;'' portion was compulsory, in which case the loop will iterate indefinitely.&lt;br /&gt;
* thus the clause ''&amp;lt;u&amp;gt;to&amp;lt;/u&amp;gt; 100 &amp;lt;u&amp;gt;do&amp;lt;/u&amp;gt; ~ &amp;lt;u&amp;gt;od&amp;lt;/u&amp;gt;'', will iterate only 100 times.&lt;br /&gt;
* the &amp;lt;u&amp;gt;while&amp;lt;/u&amp;gt; &amp;quot;syntactic element&amp;quot; allowed a programmer to break from a &amp;lt;u&amp;gt;for&amp;lt;/u&amp;gt; loop early, as in:&lt;br /&gt;
 &amp;lt;u&amp;gt;int&amp;lt;/u&amp;gt; sum sq:=0;&lt;br /&gt;
 &amp;lt;u&amp;gt;for&amp;lt;/u&amp;gt; i&lt;br /&gt;
 &amp;lt;u&amp;gt;while&amp;lt;/u&amp;gt; &lt;br /&gt;
   print ((&amp;quot;So far:&amp;quot;,i, newline));&lt;br /&gt;
   sum sq≤1000 &lt;br /&gt;
 &amp;lt;u&amp;gt;do&amp;lt;/u&amp;gt; &lt;br /&gt;
   sum sq+:=i↑2&lt;br /&gt;
 &amp;lt;u&amp;gt;od&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Subsequent &amp;quot;extensions&amp;quot; to the standard Algol68 allowed the &amp;lt;u&amp;gt;to&amp;lt;/u&amp;gt; syntactic element to be replaced with &amp;lt;u&amp;gt;upto&amp;lt;/u&amp;gt; and &amp;lt;u&amp;gt;downto&amp;lt;/u&amp;gt; to achieve a small optimization.  The same compilers also incorporated:&lt;br /&gt;
* &amp;lt;u&amp;gt;until&amp;lt;/u&amp;gt; - for late loop termination.&lt;br /&gt;
* &amp;lt;u&amp;gt;foreach&amp;lt;/u&amp;gt; - for working on arrays in [[Parallel computing|parallel]].&lt;br /&gt;
&lt;br /&gt;
=== 1977: [[Fortran#FORTRAN_77|FORTRAN 77]] ===&lt;br /&gt;
&lt;br /&gt;
FORTRAN 77's equivalent of the &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loop is the &amp;lt;code&amp;gt;DO&amp;lt;/code&amp;gt; loop. The syntax of Fortran's &amp;lt;CODE&amp;gt;DO&amp;lt;/CODE&amp;gt; loop is:&lt;br /&gt;
        DO label, counter=start, stop, step&lt;br /&gt;
 label  naredbe&lt;br /&gt;
Example:&lt;br /&gt;
        PROGRAM MAIN&lt;br /&gt;
          SUM SQ=0&lt;br /&gt;
          DO 101, I=1,9999999&lt;br /&gt;
            IF (SUM SQ.GT.1000) GO TO 109&lt;br /&gt;
            SUM SQ=SUM SQ+I**2&lt;br /&gt;
 101      CONTINUE&lt;br /&gt;
 109      CONTINUE&lt;br /&gt;
        END&lt;br /&gt;
&lt;br /&gt;
== Vidjeti također ==&lt;br /&gt;
* [[While petlja]]&lt;br /&gt;
* [[Do while petlja]]&lt;br /&gt;
* [[Brojač petlje]]&lt;br /&gt;
* [[Foreach]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vanjske poveznice ==&lt;br /&gt;
[http://bitfreedom.net/For_loop Implementacija ''for'' petlje u raznim programskim jezicima]&lt;br /&gt;
&lt;br /&gt;
[[Kategorija:Konstrukti u programiranju]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
</feed>