fbpx
Wikipedia

For loop

In computer science a for-loop or for loop is a control flow statement for specifying iteration. Specifically, a for loop functions by running a section of code repeatedly until a certain condition has been satisfied.

Flow diagram of the following for loop code:
for (i = 0; i < 5; i++)  printf("*"); 
The loop will cause five asterisks to be printed.

For-loops have two parts: a header and a body. The header defines the iteration and the body is the code that is executed once per iteration. The header often declares an explicit loop counter or loop variable. This allows the body to know which iteration is being executed. For-loops are typically used when the number of iterations is known before entering the loop. For-loops can be thought of as shorthands for while-loops which increment and test a loop variable.

Various keywords are used to indicate the usage of a for loop: descendants of ALGOL use "for", while descendants of Fortran use "do". There are other possibilities, for example COBOL which uses PERFORM VARYING.

The name for-loop comes from the word for. For is used as the keyword in many programming languages to introduce a for-loop. The term in English dates to ALGOL 58 and was popularized in ALGOL 60. It is the direct translation of the earlier German für and was used in Superplan (1949–1951) by Heinz Rutishauser. Rutishauser was involved in defining ALGOL 58 and ALGOL 60.[citation needed] The loop body is executed "for" the given values of the loop variable. This is more explicit in ALGOL versions of the for statement where a list of possible values and increments can be specified.

In Fortran and PL/I, the keyword DO is used for the same thing and it is called a do-loop; this is different from a do-while loop.

FOR Edit

 
For loop illustration, from i=0 to i=2, resulting in data1=200

A for-loop statement is available in most imperative programming languages. Even ignoring minor differences in syntax there are many differences in how these statements work and the level of expressiveness they support. Generally, for-loops fall into one of the following categories:

Traditional for-loops Edit

The for-loop of languages like ALGOL, Simula, BASIC, Pascal, Modula, Oberon, Ada, Matlab, Ocaml, F#, and so on, requires a control variable with start- and end-values, which looks something like this:

for i = first to last do statement (* or just *) for i = first..last do statement 

Depending on the language, an explicit assignment sign may be used in place of the equal sign (and some languages require the word int even in the numerical case). An optional step-value (an increment or decrement ≠ 1) may also be included, although the exact syntaxes used for this differs a bit more between the languages. Some languages require a separate declaration of the control variable, some do not.

Another form was popularized by the C programming language. It requires 3 parts: the initialization (loop variant), the condition, and the advancement to the next iteration. All these three parts are optional.[1] This type of "semicolon loops" came from B programming language and it was originally invented by Stephen Johnson.[2]

In the initialization part, any variables needed are declared (and usually assigned values). If multiple variables are declared, they should all be of the same type. The condition part checks a certain condition and exits the loop if false, even if the loop is never executed. If the condition is true, then the lines of code inside the loop are executed. The advancement to the next iteration part is performed exactly once every time the loop ends. The loop is then repeated if the condition evaluates to true.

Here is an example of the C-style traditional for-loop in Java.

// Prints the numbers from 0 to 99 (and not 100), each followed by a space.  for (int i=0; i<100; i++)  {  System.out.print(i);  System.out.print(' '); } System.out.println(); 

These loops are also sometimes called numeric for-loops when contrasted with foreach loops (see below).

Iterator-based for-loops Edit

This type of for-loop is a generalisation of the numeric range type of for-loop, as it allows for the enumeration of sets of items other than number sequences. It is usually characterized by the use of an implicit or explicit iterator, in which the loop variable takes on each of the values in a sequence or other data collection. A representative example in Python is:

for item in some_iterable_object: do_something() do_something_else() 

Where some_iterable_object is either a data collection that supports implicit iteration (like a list of employee's names), or may in fact be an iterator itself. Some languages have this in addition to another for-loop syntax; notably, PHP has this type of loop under the name for each, as well as a three-expression for-loop (see below) under the name for.

Vectorised for-loops Edit

Some languages offer a for-loop that acts as if processing all iterations in parallel, such as the for all keyword in FORTRAN 95 which has the interpretation that all right-hand-side expressions are evaluated before any assignments are made, as distinct from the explicit iteration form. For example, in the for statement in the following pseudocode fragment, when calculating the new value for A(i), except for the first (with i = 2) the reference to A(i - 1) will obtain the new value that had been placed there in the previous step. In the for all version, however, each calculation refers only to the original, unaltered A.

for i := 2 : N - 1 do A(i) := [A(i - 1) + A(i) + A(i + 1)] / 3; next i; for all i := 2 : N - 1 do A(i) := [A(i - 1) + A(i) + A(i + 1)] / 3; 

The difference may be significant.

Some languages (such as FORTRAN 95, PL/I) also offer array assignment statements, that enable many for-loops to be omitted. Thus pseudocode such as A := 0; would set all elements of array A to zero, no matter its size or dimensionality. The example loop could be rendered as

 A(2 : N - 1) := [A(1 : N - 2) + A(2 : N - 1) + A(3 : N)] / 3; 

But whether that would be rendered in the style of the for-loop or the for all-loop or something else may not be clearly described in the compiler manual.

Compound for-loops Edit

Introduced with ALGOL 68 and followed by PL/I, this allows the iteration of a loop to be compounded with a test, as in

for i := 1 : N while A(i) > 0 do etc. 

That is, a value is assigned to the loop variable i and only if the while expression is true will the loop body be executed. If the result were false the for-loop's execution stops short. Granted that the loop variable's value is defined after the termination of the loop, then the above statement will find the first non-positive element in array A (and if no such, its value will be N + 1), or, with suitable variations, the first non-blank character in a string, and so on.

Loop counters Edit

In computer programming, a loop counter is a control variable that controls the iterations of a loop (a computer programming language construct). It is so named because most uses of this construct result in the variable taking on a range of integer values in some orderly sequences (example., starting at 0 and end at 10 in increments of 1)

Loop counters change with each iteration of a loop, providing a unique value for each individual iteration. The loop counter is used to decide when the loop should terminate and for the program flow to continue to the next instruction after the loop.

A common identifier naming convention is for the loop counter to use the variable names i, j, and k (and so on if needed), where i would be the most outer loop, j the next inner loop, etc. The reverse order is also used by some programmers. This style is generally agreed to have originated from the early programming of Fortran[citation needed], where these variable names beginning with these letters were implicitly declared as having an integer type, and so were obvious choices for loop counters that were only temporarily required. The practice dates back further to mathematical notation where indices for sums and multiplications are often i, j, etc. A variant convention is the use of duplicated letters for the index, ii, jj, and kk, as this allows easier searching and search-replacing than using a single letter.[3]

Example Edit

An example of C code involving nested for loops, where the loop counter variables are i and j:

for (i = 0; i < 100; i++) {  for (j = i; j < 10; j++) {  some_function(i, j);  } } 

For loops in C can also be used to print the reverse of a word. As:

for (i = 0; i < 6; i++) {  scanf("%c", &a[i]); } for (i = 4; i >= 0; i--) {  printf("%c", a[i]); } 

Here, if the input is apple, the output will be elppa.

Additional semantics and constructs Edit

Use as infinite loops Edit

This C-style for-loop is commonly the source of an infinite loop since the fundamental steps of iteration are completely in the control of the programmer. In fact, when infinite loops are intended, this type of for-loop can be used (with empty expressions), such as:

for (;;)  //loop body 

This style is used instead of infinite while (1) loops to avoid a type conversion warning in some C/C++ compilers.[4] Some programmers prefer the more succinct for (;;) form over the semantically equivalent but more verbose while (true) form.

Early exit and continuation Edit

Some languages may also provide other supporting statements, which when present can alter how the for-loop iteration proceeds. Common among these are the break and continue statements found in C and its derivatives. The break statement causes the inner-most loop to be terminated immediately when executed. The continue statement will move at once to the next iteration without further progress through the loop body for the current iteration. A for statement also terminates when a break, goto, or return statement within the statement body is executed. [Wells] Other languages may have similar statements or otherwise provide means to alter the for-loop progress; for example in FORTRAN 95:

DO I = 1, N  statements !Executed for all values of "I", up to a disaster if any.  IF (no good) CYCLE !Skip this value of "I", continue with the next.  statements !Executed only where goodness prevails.  IF (disaster) EXIT !Abandon the loop.  statements !While good and, no disaster. END DO !Should align with the "DO". 

Some languages offer further facilities such as naming the various loop statements so that with multiple nested loops there is no doubt as to which loop is involved. Fortran 95, for example:

X1:DO I = 1,N  statements  X2:DO J = 1,M  statements  IF (trouble) CYCLE X1  statements  END DO X2  statements  END DO X1 

Thus, when "trouble" is detected in the inner loop, the CYCLE X1 (not X2) means that the skip will be to the next iteration for I, not J. The compiler will also be checking that each END DO has the appropriate label for its position: this is not just a documentation aid. The programmer must still code the problem correctly, but some possible blunders will be blocked.

Loop variable scope and semantics Edit

Different languages specify different rules for what value the loop variable will hold on termination of its loop, and indeed some hold that it "becomes undefined". This permits a compiler to generate code that leaves any value in the loop variable, or perhaps even leaves it unchanged because the loop value was held in a register and never stored to memory. Actual behaviour may even vary according to the compiler's optimization settings, as with the Honywell Fortran66 compiler.

In some languages (not C or C++) the loop variable is immutable within the scope of the loop body, with any attempt to modify its value being regarded as a semantic error. Such modifications are sometimes a consequence of a programmer error, which can be very difficult to identify once made. However, only overt changes are likely to be detected by the compiler. Situations where the address of the loop variable is passed as an argument to a subroutine make it very difficult to check, because the routine's behavior is in general unknowable to the compiler. Some examples in the style of Fortran:

DO I = 1, N  I = 7 !Overt adjustment of the loop variable. Compiler complaint likely.  Z = ADJUST(I) !Function "ADJUST" might alter "I", to uncertain effect.  normal statements !Memory might fade that "I" is the loop variable.  PRINT (A(I), B(I), I = 1, N, 2) !Implicit for-loop to print odd elements of arrays A and B, reusing "I"...  PRINT I !What value will be presented? END DO !How many times will the loop be executed? 

A common approach is to calculate the iteration count at the start of a loop (with careful attention to overflow as in for i := 0 : 65535 do ... ; in sixteen-bit integer arithmetic) and with each iteration decrement this count while also adjusting the value of I: double counting results. However, adjustments to the value of I within the loop will not change the number of iterations executed.

Still another possibility is that the code generated may employ an auxiliary variable as the loop variable, possibly held in a machine register, whose value may or may not be copied to I on each iteration. Again, modifications of I would not affect the control of the loop, but now a disjunction is possible: within the loop, references to the value of I might be to the (possibly altered) current value of I or to the auxiliary variable (held safe from improper modification) and confusing results are guaranteed. For instance, within the loop a reference to element I of an array would likely employ the auxiliary variable (especially if it were held in a machine register), but if I is a parameter to some routine (for instance, a print-statement to reveal its value), it would likely be a reference to the proper variable I instead. It is best to avoid such possibilities.

Adjustment of bounds Edit

Just as the index variable might be modified within a for-loop, so also may its bounds and direction. But to uncertain effect. A compiler may prevent such attempts, they may have no effect, or they might even work properly - though many would declare that to do so would be wrong. Consider a statement such as

for i := first : last : step do A(i) := A(i) / A(last); 

If the approach to compiling such a loop was to be the evaluation of first, last and step and the calculation of an iteration count via something like (last - first)/step once only at the start, then if those items were simple variables and their values were somehow adjusted during the iterations, this would have no effect on the iteration count even if the element selected for division by A(last) changed.

List of value ranges Edit

PL/I and Algol 68, allows loops in which the loop variable is iterated over a list of ranges of values instead of a single range. The following PL/I example will execute the loop with six values of i: 1, 7, 12, 13, 14, 15:

do i = 1, 7, 12 to 15;  /*statements*/ end; 

Equivalence with while-loops Edit

A for-loop is generally equivalent to a while-loop:

factorial := 1 for counter from 2 to 5 factorial := factorial * counter counter := counter - 1 print counter + "! equals " + factorial 

is equivalent to:

factorial := 1 counter := 1 while counter < 5 counter := counter + 1 factorial := factorial * counter print counter + "! equals " + factorial 

as demonstrated by the output of the variables.

Timeline of the for-loop syntax in various programming languages Edit

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.

1957: FORTRAN Edit

Fortran's equivalent of the for loop is the DO loop, using the keyword do instead of for, The syntax of Fortran's DO loop is:

   DO label counter = first, last, step    statements label  statement 

The following two examples behave equivalently to the three argument for-loop in other languages, initializing the counter variable to 1, incrementing by 1 each iteration of the loop and stopping at five (inclusive).

   DO 9, COUNTER = 1, 5, 1    WRITE (6,8) COUNTER  8  FORMAT( I2 )  9  CONTINUE 

In Fortran 77 (or later), this may also be written as:

do counter = 1, 5  write(*, '(i2)') counter end do 

The step part may be omitted if the step is one. Example:

* DO loop example.    PROGRAM MAIN    SUM SQ = 0    DO 199 I = 1, 9999999    IF (SUM SQ.GT.1000) GO TO 200 199   SUM SQ = SUM SQ + I**2 200   PRINT 206, SUMSQ 206   FORMAT( I2 )    END 

Spaces are irrelevant in fixed-form Fortran statements, thus SUM SQ is the same as SUMSQ. In the modern free-form Fortran style, blanks are significant.

In Fortran 90, the GO TO may be avoided by using an EXIT statement.

* DO loop example.    program main    implicit none    integer :: sumsq    integer :: i    sumsq = 0    do i = 1, 9999999    if (sumsq > 1000.0) exit    sumsq = sumsq + i**2    end do    print *, sumsq    end program 

1958: ALGOL Edit

ALGOL 58 introduced the for statement, using the form as Superplan:

 FOR Identifier = Base (Difference) Limit 

For example to print 0 to 10 incremented by 1:

FOR x = 0 (1) 10 BEGIN PRINT (FL) = x END 

1960: COBOL Edit

COBOL was formalized in late 1959 and has had many elaborations. It uses the PERFORM verb which has many options. Originally all loops had to be out-of-line with the iterated code occupying a separate paragraph. Ignoring the need for declaring and initialising variables, the COBOL equivalent of a for-loop would be.

 PERFORM SQ-ROUTINE VARYING I FROM 1 BY 1 UNTIL I > 1000  SQ-ROUTINE   ADD I**2 TO SUM-SQ. 

In the 1980s the addition of in-line loops and "structured" statements such as END-PERFORM resulted in a for-loop with a more familiar structure.

 PERFORM VARYING I FROM 1 BY 1 UNTIL I > 1000  ADD I**2 TO SUM-SQ.  END-PERFORM 

If the PERFORM verb has the optional clause TEST AFTER, the resulting loop is slightly different: the loop body is executed at least once, before any test.

1964: BASIC Edit

Loops in BASIC are sometimes called for-next loops.

10 REM THIS FOR LOOP PRINTS ODD NUMBERS FROM 1 TO 15 20 FOR I = 1 TO 15 STEP 2 30 PRINT I 40 NEXT I 

Notice that the end-loop marker specifies the name of the index variable, which must correspond to the name of the index variable in the start of the for-loop. Some languages (PL/I, FORTRAN 95 and later) allow a statement label on the start of a for-loop that can be matched by the compiler against the same text on the corresponding end-loop statement. Fortran also allows the EXIT and CYCLE statements to name this text; in a nest of loops this makes clear which loop is intended. However, in these languages the labels must be unique, so successive loops involving the same index variable cannot use the same text nor can a label be the same as the name of a variable, such as the index variable for the loop.

1964: PL/I Edit

do counter = 1 to 5 by 1; /* "by 1" is the default if not specified */  /*statements*/;  end; 

The LEAVE statement may be used to exit the loop. Loops can be labeled, and leave may leave a specific labeled loop in a group of nested loops. Some PL/I dialects include the ITERATE statement to terminate the current loop iteration and begin the next.

1968: Algol 68 Edit

ALGOL 68 has what was considered the universal loop, the full syntax is:

FOR i FROM 1 BY 2 TO 3 WHILE i≠4 DO ~ OD 

Further, the single iteration range could be replaced by a list of such ranges. There are several unusual aspects of the construct

  • only the do ~ od portion was compulsory, in which case the loop will iterate indefinitely.
  • thus the clause to 100 do ~ od, will iterate exactly 100 times.
  • the while syntactic element allowed a programmer to break from a for loop early, as in:
INT sum sq := 0; FOR i WHILE print(("So far:", i, new line)); # Interposed for tracing purposes. # sum sq ≠ 70↑2 # This is the test for the WHILE # DO sum sq +:= i↑2 OD 

Subsequent extensions to the standard Algol68 allowed the to syntactic element to be replaced with upto and downto to achieve a small optimization. The same compilers also incorporated:

until
for late loop termination.
foreach
for working on arrays in parallel.

1970: Pascal Edit

for Counter := 1 to 5 do  (*statement*); 

Decrementing (counting backwards) is using downto keyword instead of to, as in:

for Counter := 5 downto 1 do  (*statement*); 

The numeric-range for-loop varies somewhat more.

1972: C/C++ Edit

for (initialization; condition; increment/decrement)  statement 

The statement is often a block statement; an example of this would be:

//Using for-loops to add numbers 1 - 5 int sum = 0; for (int i = 1; i <= 5; ++i) {  sum += i; } 

The ISO/IEC 9899:1999 publication (commonly known as C99) also allows initial declarations in for loops. All the three sections in the for loop are optional, with an empty condition equivalent to true.

1972: Smalltalk Edit

1 to: 5 do: [ :counter | "statements" ] 

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.

1980: Ada Edit

for Counter in 1 .. 5 loop -- statements end loop; 

The exit statement may be used to exit the loop. Loops can be labeled, and exit may leave a specifically labeled loop in a group of nested loops:

Counting: for Counter in 1 .. 5 loop Triangle: for Secondary_Index in 2 .. Counter loop -- statements exit Counting; -- statements end loop Triangle; end loop Counting; 

1980: Maple Edit

Maple has two forms of for-loop, one for iterating of a range of values, and the other for iterating over the contents of a container. The value range form is as follows:

for i from f by b to t while w do # loop body od; 

All parts except do and od are optional. The for i part, if present, must come first. The remaining parts (from f, by b, to t, while w) can appear in any order.

Iterating over a container is done using this form of loop:

for e in c while w do # loop body od; 

The in c clause specifies the container, which may be a list, set, sum, product, unevaluated function, array, or an object implementing an iterator.

A for-loop may be terminated by od, end, or end do.

1982: Maxima CAS Edit

In Maxima CAS one can use also non integer values :

for x:0.5 step 0.1 thru 0.9 do  /* "Do something with x" */ 

1982: PostScript Edit

The for-loop, written as [initial] [increment] [limit] { ... } for initialises an internal variable, executes the body as long as the internal variable is not more than limit (or not less, if increment is negative) and, at the end of each iteration, increments the internal variable. Before each iteration, the value of the internal variable is pushed onto the stack.[5]

1 1 6 {STATEMENTS} for 

There is also a simple repeat-loop. The repeat-loop, written as X { ... } repeat, repeats the body exactly X times.[6]

5 { STATEMENTS } repeat 

1983: Ada 83 and above Edit

procedure Main is Sum_Sq : Integer := 0; begin for I in 1 .. 9999999 loop if Sum_Sq <= 1000 then Sum_Sq := Sum_Sq + I**2 end if; end loop; end; 

1984: MATLAB Edit

for n = 1:5   -- statements end 

After the loop, n would be 5 in this example.

As i is used for the Imaginary unit, its use as a loop variable is discouraged.

1987: Perl Edit

for ($counter = 1; $counter <= 5; $counter++) { # implicitly or predefined variable  # statements; } for (my $counter = 1; $counter <= 5; $counter++) { # variable private to the loop  # statements; } for (1..5) { # variable implicitly called $_; 1..5 creates a list of these 5 elements  # statements; } statement for 1..5; # almost same (only 1 statement) with natural language order for my $counter (1..5) { # variable private to the loop  # statements; } 

(Note that "there's more than one way to do it" is a Perl programming motto.)

1988: Mathematica Edit

The construct corresponding to most other languages' for-loop is called Do in Mathematica

Do[f[x], {x, 0, 1, 0.1}] 

Mathematica also has a For construct that mimics the for-loop of C-like languages

For[x= 0 , x <= 1, x += 0.1,  f[x] ] 

1989: Bash Edit

# first form for i in 1 2 3 4 5 do  # must have at least one command in loop  echo $i # just print value of i done 
# second form for (( i = 1; i <= 5; i++ )) do  # must have at least one command in loop  echo $i # just print value of i done 

Note that an empty loop (i.e., one with no commands between do and done) is a syntax error. If the above loops contained only comments, execution would result in the message "syntax error near unexpected token 'done'".

1990: Haskell Edit

The built-in imperative forM_ maps a monadic expression into a list, as

forM_ [1..5] $ \indx -> do statements 

or get each iteration result as a list in

statements_result_list <- forM [1..5] $ \indx -> do statements 

But, if you want to save the space of the [1..5] list, a more authentic monadic forLoop_ construction can be defined as

import Control.Monad as M forLoopM_ :: Monad m => a -> (a -> Bool) -> (a -> a) -> (a -> m ()) -> m () forLoopM_ indx prop incr f = do  f indx  M.when (prop next) $ forLoopM_ next prop incr f  where   next = incr indx 

and used as:

 forLoopM_ (0::Int) (< len) (+1) $ \indx -> do -- whatever with the index 

1991: Oberon-2, Oberon-07, or Component Pascal Edit

FOR Counter := 1 TO 5 DO (* statement sequence *) END 

Note that in the original Oberon language the for-loop was omitted in favor of the more general Oberon loop construct. The for-loop was reintroduced in Oberon-2.

1991: Python Edit

Python does not contain the classical for loop, rather a foreach loop is used to iterate over the output of the built-in range() function which returns an iterable sequence of integers.

for i in range(1, 6): # gives i values from 1 to 5 inclusive (but not 6) # statements print(i) # if we want 6 we must do the following for i in range(1, 6 + 1): # gives i values from 1 to 6 # statements print(i) 

Using range(6) would run the loop from 0 to 5.

1993: AppleScript Edit

repeat with i from 1 to 5 -- statements log i end repeat 

You can also iterate through a list of items, similar to what you can do with arrays in other languages:

set x to {1, "waffles", "bacon", 5.1, false} repeat with i in x log i end repeat 

You may also use exit repeat to exit a loop at any time. Unlike other languages, AppleScript does not currently have any command to continue to the next iteration of a loop.

1993: Crystal Edit

for i = start, stop, interval do -- statements end 

So, this code

for i = 1, 5, 2 do print(i) end 

will print:

1 3 5 

For-loops can also loop through a table using

ipairs() 

to iterate numerically through arrays and

pairs() 

to iterate randomly through dictionaries.

Generic for-loop making use of closures:

for name, phone, address in contacts() do -- contacts() must be an iterator function end 

1995: CFML Edit

Script syntax Edit

Simple index loop:

for (i = 1; i <= 5; i++) { // statements } 

Using an array:

for (i in [1,2,3,4,5]) { // statements } 

Using a list of string values:

loop index="i" list="1;2,3;4,5" delimiters=",;" { // statements } 

The above list example is only available in the dialect of CFML used by Lucee and Railo.

Tag syntax Edit

Simple index loop:

<cfloop index="i" from="1" to="5"> <!--- statements ---> </cfloop> 

Using an array:

<cfloop index="i" array="#[1,2,3,4,5]#"> <!--- statements ---> </cfloop> 

Using a "list" of string values:

<cfloop index="i" list="1;2,3;4,5" delimiters=",;"> <!--- statements ---> </cfloop> 

1995: Java Edit

for (int i = 0; i < 5; i++) {  //perform functions within the loop;  //can use the statement 'break;' to exit early;  //can use the statement 'continue;' to skip the current iteration } 

For the extended for-loop, see Foreach loop § Java.

1995: JavaScript Edit

JavaScript supports C-style "three-expression" loops. The break and continue statements are supported inside loops.

for (var i = 0; i < 5; i++) {  // ... } 

Alternatively, it is possible to iterate over all keys of an array.

for (var key in array) { // also works for assoc. arrays  // use array[key]  ... } 

1995: PHP Edit

This prints out a triangle of *

for ($i = 0; $i <= 5; $i++) { for ($j = 0; $j <= $i; $j++) { echo "*"; } echo "<br />\n"; } 

1995: Ruby Edit

for counter in 1..5  # statements end 5.times do |counter| # counter iterates from 0 to 4  # statements end 1.upto(5) do |counter|  # statements end 

Ruby has several possible syntaxes, including the above samples.

1996: OCaml Edit

See expression syntax.[7]

 (* for_statement := "for" ident '=' expr ( "to" ∣ "downto" ) expr "do" expr "done" *) for i = 1 to 5 do (* statements *) done ;; for j = 5 downto 0 do (* statements *) done ;; 

1998: ActionScript 3 Edit

for (var counter:uint = 1; counter <= 5; counter++){  //statement; } 

2008: Small Basic Edit

For i = 1 To 10  ' Statements EndFor 

2008: Nim Edit

Nim has a foreach-type loop and various operations for creating iterators.[8]

for i in 5 .. 10:  # statements 

2009: Go Edit

for i := 0; i <= 10; i++ {  // statements } 

2010: Rust Edit

for i in 0..10 {  // statements } 

2012: Julia Edit

for j = 1:10  # statements end 

See also Edit

References Edit

  1. ^ "For loops in C++".
  2. ^ Ken Thompson. "VCF East 2019 -- Brian Kernighan interviews Ken Thompson". YouTube. Archived from the original on 2021-12-12. Retrieved 2020-11-16. I saw Johnson's semicolon version of the for loop and I put that in [B], I stole it.
  3. ^ http://www.knosof.co.uk/vulnerabilities/loopcntrl.pdf Analysis of loop control variables in C
  4. ^ "Compiler Warning (level 4) C4127". Microsoft. Retrieved 29 June 2011.
  5. ^ PostScript Language Reference. Addison-Wesley Publishing Company. 1999. p. 596. ISBN 0-201-37922-8.
  6. ^ "PostScript Tutorial - Loops".
  7. ^ "OCaml expression syntax". Archived from the original on 2013-04-12. Retrieved 2013-03-19.
  8. ^ https://nim-lang.org/docs/system.html#...i%2CT%2CT ".. iterator"

loop, computer, science, loop, loop, control, flow, statement, specifying, iteration, specifically, loop, functions, running, section, code, repeatedly, until, certain, condition, been, satisfied, flow, diagram, following, loop, code, printf, loop, will, cause. In computer science a for loop or for loop is a control flow statement for specifying iteration Specifically a for loop functions by running a section of code repeatedly until a certain condition has been satisfied Flow diagram of the following for loop code for i 0 i lt 5 i printf The loop will cause five asterisks to be printed For loops have two parts a header and a body The header defines the iteration and the body is the code that is executed once per iteration The header often declares an explicit loop counter or loop variable This allows the body to know which iteration is being executed For loops are typically used when the number of iterations is known before entering the loop For loops can be thought of as shorthands for while loops which increment and test a loop variable Various keywords are used to indicate the usage of a for loop descendants of ALGOL use for while descendants of Fortran use do There are other possibilities for example COBOL which uses PERFORM VARYING The name for loop comes from the word for For is used as the keyword in many programming languages to introduce a for loop The term in English dates to ALGOL 58 and was popularized in ALGOL 60 It is the direct translation of the earlier German fur and was used in Superplan 1949 1951 by Heinz Rutishauser Rutishauser was involved in defining ALGOL 58 and ALGOL 60 citation needed The loop body is executed for the given values of the loop variable This is more explicit in ALGOL versions of the for statement where a list of possible values and increments can be specified In Fortran and PL I the keyword DO is used for the same thing and it is called a do loop this is different from a do while loop Contents 1 FOR 1 1 Traditional for loops 1 2 Iterator based for loops 1 3 Vectorised for loops 1 4 Compound for loops 2 Loop counters 2 1 Example 3 Additional semantics and constructs 3 1 Use as infinite loops 3 2 Early exit and continuation 3 3 Loop variable scope and semantics 3 3 1 Adjustment of bounds 3 4 List of value ranges 4 Equivalence with while loops 5 Timeline of the for loop syntax in various programming languages 5 1 1957 FORTRAN 5 2 1958 ALGOL 5 3 1960 COBOL 5 4 1964 BASIC 5 5 1964 PL I 5 6 1968 Algol 68 5 7 1970 Pascal 5 8 1972 C C 5 9 1972 Smalltalk 5 10 1980 Ada 5 11 1980 Maple 5 12 1982 Maxima CAS 5 13 1982 PostScript 5 14 1983 Ada 83 and above 5 15 1984 MATLAB 5 16 1987 Perl 5 17 1988 Mathematica 5 18 1989 Bash 5 19 1990 Haskell 5 20 1991 Oberon 2 Oberon 07 or Component Pascal 5 21 1991 Python 5 22 1993 AppleScript 5 23 1993 Crystal 5 24 1995 CFML 5 24 1 Script syntax 5 24 2 Tag syntax 5 25 1995 Java 5 26 1995 JavaScript 5 27 1995 PHP 5 28 1995 Ruby 5 29 1996 OCaml 5 30 1998 ActionScript 3 5 31 2008 Small Basic 5 32 2008 Nim 5 33 2009 Go 5 34 2010 Rust 5 35 2012 Julia 6 See also 7 ReferencesFOR Edit nbsp For loop illustration from i 0 to i 2 resulting in data1 200A for loop statement is available in most imperative programming languages Even ignoring minor differences in syntax there are many differences in how these statements work and the level of expressiveness they support Generally for loops fall into one of the following categories Traditional for loops Edit The for loop of languages like ALGOL Simula BASIC Pascal Modula Oberon Ada Matlab Ocaml F and so on requires a control variable with start and end values which looks something like this for i first to last do statement or just for i first last do statement Depending on the language an explicit assignment sign may be used in place of the equal sign and some languages require the word int even in the numerical case An optional step value an increment or decrement 1 may also be included although the exact syntaxes used for this differs a bit more between the languages Some languages require a separate declaration of the control variable some do not Another form was popularized by the C programming language It requires 3 parts the initialization loop variant the condition and the advancement to the next iteration All these three parts are optional 1 This type of semicolon loops came from B programming language and it was originally invented by Stephen Johnson 2 In the initialization part any variables needed are declared and usually assigned values If multiple variables are declared they should all be of the same type The condition part checks a certain condition and exits the loop if false even if the loop is never executed If the condition is true then the lines of code inside the loop are executed The advancement to the next iteration part is performed exactly once every time the loop ends The loop is then repeated if the condition evaluates to true Here is an example of the C style traditional for loop in Java Prints the numbers from 0 to 99 and not 100 each followed by a space for int i 0 i lt 100 i System out print i System out print System out println These loops are also sometimes called numeric for loops when contrasted with foreach loops see below Iterator based for loops Edit Main article Foreach loop This type of for loop is a generalisation of the numeric range type of for loop as it allows for the enumeration of sets of items other than number sequences It is usually characterized by the use of an implicit or explicit iterator in which the loop variable takes on each of the values in a sequence or other data collection A representative example in Python is for item in some iterable object do something do something else Where some iterable object is either a data collection that supports implicit iteration like a list of employee s names or may in fact be an iterator itself Some languages have this in addition to another for loop syntax notably PHP has this type of loop under the name for each as well as a three expression for loop see below under the name for Vectorised for loops Edit Some languages offer a for loop that acts as if processing all iterations in parallel such as the for all keyword in FORTRAN 95 which has the interpretation that all right hand side expressions are evaluated before any assignments are made as distinct from the explicit iteration form For example in the for statement in the following pseudocode fragment when calculating the new value for A i except for the first with i 2 the reference to A i 1 will obtain the new value that had been placed there in the previous step In the for all version however each calculation refers only to the original unaltered A for i 2 N 1 do A i A i 1 A i A i 1 3 next i for all i 2 N 1 do A i A i 1 A i A i 1 3 The difference may be significant Some languages such as FORTRAN 95 PL I also offer array assignment statements that enable many for loops to be omitted Thus pseudocode such as A 0 would set all elements of array A to zero no matter its size or dimensionality The example loop could be rendered as A 2 N 1 A 1 N 2 A 2 N 1 A 3 N 3 But whether that would be rendered in the style of the for loop or the for all loop or something else may not be clearly described in the compiler manual Compound for loops Edit Introduced with ALGOL 68 and followed by PL I this allows the iteration of a loop to be compounded with a test as in for i 1 N while A i gt 0 do etc That is a value is assigned to the loop variable i and only if the while expression is true will the loop body be executed If the result were false the for loop s execution stops short Granted that the loop variable s value is defined after the termination of the loop then the above statement will find the first non positive element in array A and if no such its value will be N 1 or with suitable variations the first non blank character in a string and so on Loop counters EditIn computer programming a loop counter is a control variable that controls the iterations of a loop a computer programming language construct It is so named because most uses of this construct result in the variable taking on a range of integer values in some orderly sequences example starting at 0 and end at 10 in increments of 1 Loop counters change with each iteration of a loop providing a unique value for each individual iteration The loop counter is used to decide when the loop should terminate and for the program flow to continue to the next instruction after the loop A common identifier naming convention is for the loop counter to use the variable names i j and k and so on if needed where i would be the most outer loop j the next inner loop etc The reverse order is also used by some programmers This style is generally agreed to have originated from the early programming of Fortran citation needed where these variable names beginning with these letters were implicitly declared as having an integer type and so were obvious choices for loop counters that were only temporarily required The practice dates back further to mathematical notation where indices for sums and multiplications are often i j etc A variant convention is the use of duplicated letters for the index ii jj and kk as this allows easier searching and search replacing than using a single letter 3 Example Edit An example of C code involving nested for loops where the loop counter variables are i and j for i 0 i lt 100 i for j i j lt 10 j some function i j For loops in C can also be used to print the reverse of a word As for i 0 i lt 6 i scanf c amp a i for i 4 i gt 0 i printf c a i Here if the input is apple the output will be elppa Additional semantics and constructs EditUse as infinite loops Edit Main article Infinite loop This C style for loop is commonly the source of an infinite loop since the fundamental steps of iteration are completely in the control of the programmer In fact when infinite loops are intended this type of for loop can be used with empty expressions such as for loop body This style is used instead of infinite while 1 loops to avoid a type conversion warning in some C C compilers 4 Some programmers prefer the more succinct for form over the semantically equivalent but more verbose while true form Early exit and continuation Edit Some languages may also provide other supporting statements which when present can alter how the for loop iteration proceeds Common among these are the break and continue statements found in C and its derivatives The break statement causes the inner most loop to be terminated immediately when executed The continue statement will move at once to the next iteration without further progress through the loop body for the current iteration A for statement also terminates when a break goto or return statement within the statement body is executed Wells Other languages may have similar statements or otherwise provide means to alter the for loop progress for example in FORTRAN 95 DO I 1 N statements Executed for all values of I up to a disaster if any IF no good CYCLE Skip this value of I continue with the next statements Executed only where goodness prevails IF disaster EXIT Abandon the loop statements While good and no disaster END DO Should align with the DO Some languages offer further facilities such as naming the various loop statements so that with multiple nested loops there is no doubt as to which loop is involved Fortran 95 for example X1 DO I 1 N statements X2 DO J 1 M statements IF trouble CYCLE X1 statements END DO X2 statements END DO X1 Thus when trouble is detected in the inner loop the CYCLE X1 not X2 means that the skip will be to the next iteration for I not J The compiler will also be checking that each END DO has the appropriate label for its position this is not just a documentation aid The programmer must still code the problem correctly but some possible blunders will be blocked Loop variable scope and semantics Edit Different languages specify different rules for what value the loop variable will hold on termination of its loop and indeed some hold that it becomes undefined This permits a compiler to generate code that leaves any value in the loop variable or perhaps even leaves it unchanged because the loop value was held in a register and never stored to memory Actual behaviour may even vary according to the compiler s optimization settings as with the Honywell Fortran66 compiler In some languages not C or C the loop variable is immutable within the scope of the loop body with any attempt to modify its value being regarded as a semantic error Such modifications are sometimes a consequence of a programmer error which can be very difficult to identify once made However only overt changes are likely to be detected by the compiler Situations where the address of the loop variable is passed as an argument to a subroutine make it very difficult to check because the routine s behavior is in general unknowable to the compiler Some examples in the style of Fortran DO I 1 N I 7 Overt adjustment of the loop variable Compiler complaint likely Z ADJUST I Function ADJUST might alter I to uncertain effect normal statements Memory might fade that I is the loop variable PRINT A I B I I 1 N 2 Implicit for loop to print odd elements of arrays A and B reusing I PRINT I What value will be presented END DO How many times will the loop be executed A common approach is to calculate the iteration count at the start of a loop with careful attention to overflow as in for i 0 65535 do in sixteen bit integer arithmetic and with each iteration decrement this count while also adjusting the value of I double counting results However adjustments to the value of I within the loop will not change the number of iterations executed Still another possibility is that the code generated may employ an auxiliary variable as the loop variable possibly held in a machine register whose value may or may not be copied to I on each iteration Again modifications of I would not affect the control of the loop but now a disjunction is possible within the loop references to the value of I might be to the possibly altered current value of I or to the auxiliary variable held safe from improper modification and confusing results are guaranteed For instance within the loop a reference to element I of an array would likely employ the auxiliary variable especially if it were held in a machine register but if I is a parameter to some routine for instance a print statement to reveal its value it would likely be a reference to the proper variable I instead It is best to avoid such possibilities Adjustment of bounds Edit Just as the index variable might be modified within a for loop so also may its bounds and direction But to uncertain effect A compiler may prevent such attempts they may have no effect or they might even work properly though many would declare that to do so would be wrong Consider a statement such as for i first last step do A i A i A last If the approach to compiling such a loop was to be the evaluation of first last and step and the calculation of an iteration count via something like last first step once only at the start then if those items were simple variables and their values were somehow adjusted during the iterations this would have no effect on the iteration count even if the element selected for division by A last changed List of value ranges Edit PL I and Algol 68 allows loops in which the loop variable is iterated over a list of ranges of values instead of a single range The following PL I example will execute the loop with six values of i 1 7 12 13 14 15 do i 1 7 12 to 15 statements end Equivalence with while loops EditA for loop is generally equivalent to a while loop factorial 1 for counter from 2 to 5 factorial factorial counter counter counter 1 print counter equals factorial is equivalent to factorial 1 counter 1 while counter lt 5 counter counter 1 factorial factorial counter print counter equals factorial as demonstrated by the output of the variables Timeline of the for loop syntax in various programming languages EditGiven 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 1957 FORTRAN Edit Fortran s equivalent of the for loop is the DO loop using the keyword do instead of for The syntax of Fortran s DO loop is DO label counter first last step statements label statement The following two examples behave equivalently to the three argument for loop in other languages initializing the counter variable to 1 incrementing by 1 each iteration of the loop and stopping at five inclusive DO 9 COUNTER 1 5 1 WRITE 6 8 COUNTER 8 FORMAT I2 9 CONTINUE In Fortran 77 or later this may also be written as do counter 1 5 write i2 counter end do The step part may be omitted if the step is one Example DO loop example PROGRAM MAIN SUM SQ 0 DO 199 I 1 9999999 IF SUM SQ GT 1000 GO TO 200 199 SUM SQ SUM SQ I 2 200 PRINT 206 SUMSQ 206 FORMAT I2 END Spaces are irrelevant in fixed form Fortran statements thus SUM SQ is the same as SUMSQ In the modern free form Fortran style blanks are significant In Fortran 90 the GO TO may be avoided by using an EXIT statement DO loop example program main implicit none integer sumsq integer i sumsq 0 do i 1 9999999 if sumsq gt 100 0 0 exit sumsq sumsq i 2 end do print sumsq end program 1958 ALGOL Edit ALGOL 58 introduced the for statement using the form as Superplan FOR Identifier Base Difference Limit For example to print 0 to 10 incremented by 1 FOR x 0 1 10 BEGIN PRINT FL x END 1960 COBOL Edit COBOL was formalized in late 1959 and has had many elaborations It uses the PERFORM verb which has many options Originally all loops had to be out of line with the iterated code occupying a separate paragraph Ignoring the need for declaring and initialising variables the COBOL equivalent of a for loop would be PERFORM SQ ROUTINE VARYING I FROM 1 BY 1 UNTIL I gt 1000 SQ ROUTINE ADD I 2 TO SUM SQ In the 1980s the addition of in line loops and structured statements such as END PERFORM resulted in a for loop with a more familiar structure PERFORM VARYING I FROM 1 BY 1 UNTIL I gt 1000 ADD I 2 TO SUM SQ END PERFORM If the PERFORM verb has the optional clause TEST AFTER the resulting loop is slightly different the loop body is executed at least once before any test 1964 BASIC Edit Loops in BASIC are sometimes called for next loops 10 REM THIS FOR LOOP PRINTS ODD NUMBERS FROM 1 TO 15 20 FOR I 1 TO 15 STEP 2 30 PRINT I 40 NEXT I Notice that the end loop marker specifies the name of the index variable which must correspond to the name of the index variable in the start of the for loop Some languages PL I FORTRAN 95 and later allow a statement label on the start of a for loop that can be matched by the compiler against the same text on the corresponding end loop statement Fortran also allows the EXIT and CYCLE statements to name this text in a nest of loops this makes clear which loop is intended However in these languages the labels must be unique so successive loops involving the same index variable cannot use the same text nor can a label be the same as the name of a variable such as the index variable for the loop 1964 PL I Edit do counter 1 to 5 by 1 by 1 is the default if not specified statements end The LEAVE statement may be used to exit the loop Loops can be labeled and leave may leave a specific labeled loop in a group of nested loops Some PL I dialects include the ITERATE statement to terminate the current loop iteration and begin the next 1968 Algol 68 Edit ALGOL 68 has what was considered the universal loop the full syntax is FOR i FROM 1 BY 2 TO 3 WHILE i 4 DO OD Further the single iteration range could be replaced by a list of such ranges There are several unusual aspects of the construct only the do od portion was compulsory in which case the loop will iterate indefinitely thus the clause to 100 do od will iterate exactly 100 times the while syntactic element allowed a programmer to break from a for loop early as in INT sum sq 0 FOR i WHILE print So far i new line Interposed for tracing purposes sum sq 70 2 This is the test for the WHILE DO sum sq i 2 OD Subsequent extensions to the standard Algol68 allowed the to syntactic element to be replaced with upto and downto to achieve a small optimization The same compilers also incorporated until for late loop termination foreach for working on arrays in parallel 1970 Pascal Edit for Counter 1 to 5 do statement Decrementing counting backwards is using downto keyword instead of to as in for Counter 5 downto 1 do statement The numeric range for loop varies somewhat more 1972 C C Edit Further information C syntax Iteration statements for initialization condition increment decrement statement The statement is often a block statement an example of this would be Using for loops to add numbers 1 5 int sum 0 for int i 1 i lt 5 i sum i The ISO IEC 9899 1999 publication commonly known as C99 also allows initial declarations in for loops All the three sections in the for loop are optional with an empty condition equivalent to true 1972 Smalltalk Edit 1 to 5 do counter statements 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 1980 Ada Edit for Counter in 1 5 loop statements end loop The exit statement may be used to exit the loop Loops can be labeled and exit may leave a specifically labeled loop in a group of nested loops Counting for Counter in 1 5 loop Triangle for Secondary Index in 2 Counter loop statements exit Counting statements end loop Triangle end loop Counting 1980 Maple Edit Maple has two forms of for loop one for iterating of a range of values and the other for iterating over the contents of a container The value range form is as follows for i from f by b to t while w do loop body od All parts except b do b and b od b are optional The b for b i i i part if present must come first The remaining parts b from b i f i b by b i b i b to b i t i b while b i w i can appear in any order Iterating over a container is done using this form of loop for e in c while w do loop body od The b in b i c i clause specifies the container which may be a list set sum product unevaluated function array or an object implementing an iterator A for loop may be terminated by b od b b end b or b end do b 1982 Maxima CAS Edit In Maxima CAS one can use also non integer values for x 0 5 step 0 1 thru 0 9 do Do something with x 1982 PostScript Edit The for loop written as initial increment limit for initialises an internal variable executes the body as long as the internal variable is not more than limit or not less if increment is negative and at the end of each iteration increments the internal variable Before each iteration the value of the internal variable is pushed onto the stack 5 1 1 6 STATEMENTS for There is also a simple repeat loop The repeat loop written as X repeat repeats the body exactly X times 6 5 STATEMENTS repeat 1983 Ada 83 and above Edit procedure Main is Sum Sq Integer 0 begin for I in 1 9999999 loop if Sum Sq lt 1000 then Sum Sq Sum Sq I 2 end if end loop end 1984 MATLAB Edit for n 1 5 statements end After the loop n would be 5 in this example As i is used for the Imaginary unit its use as a loop variable is discouraged 1987 Perl Edit for counter 1 counter lt 5 counter implicitly or predefined variable statements for my counter 1 counter lt 5 counter variable private to the loop statements for 1 5 variable implicitly called 1 5 creates a list of these 5 elements statements statement for 1 5 almost same only 1 statement with natural language order for my counter 1 5 variable private to the loop statements Note that there s more than one way to do it is a Perl programming motto 1988 Mathematica Edit The construct corresponding to most other languages for loop is called Do in Mathematica Do f x x 0 1 0 1 Mathematica also has a For construct that mimics the for loop of C like languages For x 0 x lt 1 x 0 1 f x 1989 Bash Edit first form for i in 1 2 3 4 5 do must have at least one command in loop echo i just print value of i done second form for i 1 i lt 5 i do must have at least one command in loop echo i just print value of i done Note that an empty loop i e one with no commands between do and done is a syntax error If the above loops contained only comments execution would result in the message syntax error near unexpected token done 1990 Haskell Edit The built in imperative forM maps a monadic expression into a list as forM 1 5 indx gt do statements or get each iteration result as a list in statements result list lt forM 1 5 indx gt do statements But if you want to save the space of the 1 5 list a more authentic monadic forLoop construction can be defined as import Control Monad as M forLoopM Monad m gt a gt a gt Bool gt a gt a gt a gt m gt m forLoopM indx prop incr f do f indx M when prop next forLoopM next prop incr f where next incr indx and used as forLoopM 0 Int lt len 1 indx gt do whatever with the index 1991 Oberon 2 Oberon 07 or Component Pascal Edit FOR Counter 1 TO 5 DO statement sequence END Note that in the original Oberon language the for loop was omitted in favor of the more general Oberon loop construct The for loop was reintroduced in Oberon 2 1991 Python EditPython does not contain the classical for loop rather a foreach loop is used to iterate over the output of the built in range function which returns an iterable sequence of integers for i in range 1 6 gives i values from 1 to 5 inclusive but not 6 statements print i if we want 6 we must do the following for i in range 1 6 1 gives i values from 1 to 6 statements print i Using range 6 would run the loop from 0 to 5 1993 AppleScript Edit repeat with i from 1 to 5 statements log i end repeat You can also iterate through a list of items similar to what you can do with arrays in other languages set x to 1 waffles bacon 5 1 false repeat with i in x log i end repeat You may also use exit repeat to exit a loop at any time Unlike other languages AppleScript does not currently have any command to continue to the next iteration of a loop 1993 Crystal Edit for i start stop interval do statements endSo this codefor i 1 5 2 do print i endwill print 1 3 5For loops can also loop through a table usingipairs to iterate numerically through arrays andpairs to iterate randomly through dictionaries Generic for loop making use of closures for name phone address in contacts do contacts must be an iterator function end 1995 CFML Edit Script syntax Edit Simple index loop for i 1 i lt 5 i statements Using an array for i in 1 2 3 4 5 statements Using a list of string values loop index i list 1 2 3 4 5 delimiters statements The above list example is only available in the dialect of CFML used by Lucee and Railo Tag syntax Edit Simple index loop lt cfloop index i from 1 to 5 gt lt statements gt lt cfloop gt Using an array lt cfloop index i array 1 2 3 4 5 gt lt statements gt lt cfloop gt Using a list of string values lt cfloop index i list 1 2 3 4 5 delimiters gt lt statements gt lt cfloop gt 1995 Java Edit for int i 0 i lt 5 i perform functions within the loop can use the statement break to exit early can use the statement continue to skip the current iteration For the extended for loop see Foreach loop Java 1995 JavaScript Edit JavaScript supports C style three expression loops The break and continue statements are supported inside loops for var i 0 i lt 5 i Alternatively it is possible to iterate over all keys of an array for var key in array also works for assoc arrays use array key 1995 PHP Edit This prints out a triangle of for i 0 i lt 5 i for j 0 j lt i j echo echo lt br gt n 1995 Ruby Edit for counter in 1 5 statements end 5 times do counter counter iterates from 0 to 4 statements end 1 upto 5 do counter statements end Ruby has several possible syntaxes including the above samples 1996 OCaml Edit See expression syntax 7 for statement for ident expr to downto expr do expr done for i 1 to 5 do statements done for j 5 downto 0 do statements done 1998 ActionScript 3 Edit for var counter uint 1 counter lt 5 counter statement 2008 Small Basic Edit For i 1 To 10 Statements EndFor 2008 Nim Edit Nim has a foreach type loop and various operations for creating iterators 8 for i in 5 10 statements 2009 Go Edit for i 0 i lt 10 i statements 2010 Rust Edit for i in 0 10 statements 2012 Julia Edit for j 1 10 statements endSee also EditDo while loop Foreach While loopReferences Edit For loops in C Ken Thompson VCF East 2019 Brian Kernighan interviews Ken Thompson YouTube Archived from the original on 2021 12 12 Retrieved 2020 11 16 I saw Johnson s semicolon version of the for loop and I put that in B I stole it http www knosof co uk vulnerabilities loopcntrl pdf Analysis of loop control variables in C Compiler Warning level 4 C4127 Microsoft Retrieved 29 June 2011 PostScript Language Reference Addison Wesley Publishing Company 1999 p 596 ISBN 0 201 37922 8 PostScript Tutorial Loops OCaml expression syntax Archived from the original on 2013 04 12 Retrieved 2013 03 19 https nim lang org docs system html i 2CT 2CT iterator Retrieved from https en wikipedia org w index php title For loop amp oldid 1175616454, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.