All the languages that we teach have a
for loop or the equivalent, which is a clean way of repeating a block of code with a rising or falling index number. It's used in many circumstances - for example in iterating through the months of the year (
for m goes from 1 to 12) of in stepping through all the members of an ordered [list / array / table]
*
In many cases, the end condition in this type of structure is evaluated
before every iteration of the loop so that a changing end condition will be reflected immediatley. Look at this (Perl)
$j = 8;
for ($k=0; $k<$j; $k++) {
print "Value $k\n";
$j--;
}
which runs like this:
munchkin:laug11 grahamellis$ perl ph
Value 0
Value 1
Value 2
Value 3
munchkin:laug11 grahamellis$
There's a similar structure / setup in PHP, Java, C and C++. See previous article
[here] for a diagram and further example. And it applies to a Tcl
for loop too - there's an example
[here].
However, in some languages the loop terminator is evaluated once before the loop is entered, and no matter how the termination condition / value is changed while the loop is running, the
for statement knows the iteration count from the start
%. Here's a Ruby example:
j = 8
for i in 0..j
puts "Value of loop variable is #{i}"
j -= 1
end
which runs like this:
munchkin:laug11 grahamellis$ ruby rx
Value of loop variable is 0
Value of loop variable is 1
Value of loop variable is 2
Value of loop variable is 3
Value of loop variable is 4
Value of loop variable is 5
Value of loop variable is 6
Value of loop variable is 7
Value of loop variable is 8
munchkin:laug11 grahamellis$
In Lua, too, the loop count is evaluated once before the loop is entered, and that's the iteration count used. From this week's
Lua course there's an example showing that -
[here] and another
[here].
In Python, too, the
for and
range /
xrange construct is a single evaluation at the start. See an example of that
[here].
* - Use "list", "array" or "table" depending on the language you're programming in - they are different words for a sequentially numerically indexed (ordere) collection.
% - In all languages, there is at least one mechanism such as
break or
last to exit prematurley. Rather more dramatically,
return and
exit will get you out of a loop and more besides.
(written 2011-08-18, updated 2012-04-15)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
Y103 - Python - Conditionals and Loops [299] What - no switch or case statement? - (2005-05-03)
[353] Wimbledon Neck - (2005-06-20)
[657] The ternary operator in Python - (2006-03-25)
[668] Python - block insets help with documentation - (2006-04-04)
[788] New - Conditional expressions in Python 2.5 - (2006-07-01)
[835] Python - when to use the in operator - (2006-08-16)
[909] Python is like a narrowboat - (2006-10-30)
[1201] No switch in Python - (2007-05-23)
[1477] Decisions - small ones, or big ones? - (2007-12-18)
[1661] Equality, sameness and identity - Python - (2008-05-31)
[1696] Saying NOT in Perl, PHP, Python, Lua ... - (2008-07-04)
[2778] Learning to program in Python 2 ... and / or in Python 3 - (2010-05-24)
[2899] Groupsave tickets - 3 or 4 train tickets for the price of 2 - (2010-08-02)
[3083] Python - fresh examples from recent courses - (2010-12-11)
[3200] How a for loop works Java, Perl and other languages - (2011-03-12)
[3439] Python for loops - applying a temporary second name to the same object - (2011-09-14)
[3558] Python or Lua - which should I use / learn? - (2011-12-21)
[3620] Finding the total, average, minimum and maximum in a program - (2012-02-22)
[3762] Learning to program - the if statement. Python. - (2012-06-12)
[3895] Flowchart to program - learning to program with Well House - (2012-10-14)
[4092] Identity in Python - (2013-05-17)
[4210] If elif elif elif - multiway selection in Python - (2013-11-16)
[4322] Learning to Program - the conditional statement (if) - (2014-11-21)
[4323] Learning to program - Loop statements such as while - (2014-11-22)
[4402] Finding sum, minimum, maximum and average in Python (and Ruby) - (2015-01-19)
[4541] Setting up and tearing down with the Python with keyword - (2015-10-16)
[4545] Method, Class, Module, Package - how to they relate in Python? - (2015-10-17)
[4713] Equality (in Python) - (2016-10-30)
[4723] Conditional operators in Python - (2016-11-05)
U103 - Lua - Conditionals and loops [1685] Short circuit evaluation (lazy operator) in Lua - (2008-06-22)
[1738] Clean code, jump free (Example in Lua) - (2008-08-06)
[2351] Ternary operators alternatives - Perl and Lua lazy operators - (2009-08-12)
[2454] For loops in Lua - (2009-10-14)
[2455] Lua examples - coroutines, error handling, objects, etc - (2009-10-15)
[3686] The goto statement in Lua - (2012-04-06)
[4272] Lazy operators in Lua - what they mean, and examples - (2014-05-05)
[4574] repeat until in Lua - a one or more rather than a zero or more loop - (2015-11-05)
T203 - Tcl/Tk - Conditionals and Loops [210] Joining lists in Tcl. Indirect variables in Tcl. - (2005-02-12)
[1401] Tcl - using [] or {} for conditions in an if (and while) - (2007-10-23)
[2261] Tcl - nice and nasty - (2009-06-29)
[2471] A short form of if ... then ... else - (2009-10-23)
[2681] Tcl - a great engineering language - (2010-03-17)
[3189] Tcl - the danger of square brackets in a while command - (2011-03-02)
[3570] Trapping errors in Tcl - the safety net that catch provides - (2012-01-06)
[3571] Comparing loop commands in Tcl - (2012-01-06)
[4455] Working out distance between places, using OS grid references and a program in Tcl - (2015-03-11)
R104 - Ruby - Control Structures [960] 1st, 2nd, 3rd revisited in Ruby - (2006-12-02)
[962] Breaking a loop - Ruby and other languages - (2006-12-03)
[985] Equality in Ruby - == eql? and equal? - (2006-12-14)
[995] Ruby's case - no break - (2006-12-17)
[1163] A better alternative to cutting and pasting code - (2007-04-26)
[1220] for loop - how it works (Perl, PHP, Java, C, etc) - (2007-06-06)
[1582] Ruby, C, Java and more - getting out of loops - (2008-03-19)
[1587] Some Ruby programming examples from our course - (2008-03-21)
[1870] What to do with a huge crop of apples - (2008-11-04)
[1887] Ruby Programming Course - Saturday and Sunday - (2008-11-16)
[1891] Ruby to access web services - (2008-11-16)
[1904] Ruby, Perl, Linux, MySQL - some training notes - (2008-11-23)
[2287] Learning to program in Ruby - examples of the programming basics - (2009-07-15)
[2619] Passing code to procedures and yield in Ruby - (2010-02-02)
[2711] For loop - checked once, or evety time? Ruby v Perl comparison and contrast - (2010-04-07)
[2892] Alternative loops and conditionals in Ruby and Perl - (2010-07-28)
[2975] Why do I need brackets in Ruby ... or Perl, Python, C or Java - (2010-09-29)
[3156] Splitting data reading code from data processing code - Ruby - (2011-02-04)
[3158] Ruby training - some fresh examples for string handling applications - (2011-02-05)
[3159] Returning multiple values from a function call in various languages - a comparison - (2011-02-06)
[3253] Is this number between? Does this list include? - Ruby - (2011-04-18)
[3254] Multiple inputs, multiple out, ruby functions - (2011-04-19)
[3422] Assigning values to variables within other statements - Ruby - (2011-09-07)
[3619] Ruby v Perl - a comparison example - (2012-02-21)
[3769] Muttable v immutable and implications - Ruby - (2012-06-20)
[4370] Conditionals, loops and methods in Ruby - a primer with simple examples - (2014-12-29)
[4503] Separating your code for easier testing, understanding and re-use; example in Ruby - (2015-06-02)
[4504] Where does Ruby load modules from, and how to load from current directory - (2015-06-03)
[4674] Alternating valuses / flip-flop / toggle - example in Ruby - (2016-05-17)
P204 - Perl - Conditionals and Loops [930] -> , >= and => in Perl - (2006-11-18)
[1191] Smart English Output - via PHP and Perl ? : operator - (2007-05-18)
[1468] Lexical v Arithemetic testing, Bash and Perl - (2007-12-11)
[1607] Learning to program in Perl - (2008-04-11)
[1727] Equality and looks like tests - Perl - (2008-07-29)
[2550] Do not copy and paste code - there are much better ways - (2009-12-26)
[2832] Are you learning Perl? Some more examples for you! - (2010-06-27)
[3004] Increment operators for counting - Perl, PHP, C and others - (2010-10-18)
[4031] Showing what programming errors look like - web site pitfall - (2013-03-06)
J704 - Java - Loops and Conditional Statements [2734] for and foreach in Java - (2010-04-22)
[3038] Setting up individual variables, and arrays, in Java - some commented examples - (2010-11-09)
[4346] A behaviour driven example of writing a Java program - (2014-12-09)
[4427] Java example - for loop and conditionals from course exercise - (2015-02-16)
H104 - PHP - Control Statements [340] Code and code maintainance efficiency - (2005-06-08)
[406] Assignment, equality and identity in PHP - (2005-08-08)
[421] Don't repeat code - use loops or functions - (2005-08-21)
[863] Double and Triple equals operator in PHP - (2006-09-12)
[1199] Testing for one of a list of values. - (2007-05-22)
[1825] Question Mark - Colon operator (Perl and PHP) - (2008-10-08)
[2304] Extracting real data from an exported file in PHP or Perl - (2009-07-25)
[2912] Predictions for the seagull population - (2010-08-09)
[3914] While, for, foreach or something else to loop. - (2012-11-06)
C203 - C and C based languages - Conditionals and Loops [2002] New C Examples - pointers, realloc, structs and more - (2009-01-20)
[2570] Function Prototypes in C - (2010-01-11)
[3121] New year, new C Course - (2011-01-05)
[3243] Breaking the running sequence - an introduction to conditional statements and loops - (2011-04-11)
[3384] Loops - a comparison of goto, while and for - (2011-08-10)
[4337] Learning to program sample program - past its prime, but still useful - (2014-12-02)
Some other Articles
Open Source Training Schedule - learn a programming language - in Autumn 2011 or 2012$ is atomic and % and @ are molecular - PerlFrom fish, loaves and apples to money, plastic cards and BACS (Perl references explained)Perl - making best use of the flexibility, but also using good coding standardsDoes a for loop evaluate its end condition once, or on every iteration?Tables as Objects in Lua - a gentle introduction to data driven programmingParallel but not really parallel. Moving game characters. Coroutines in Lua. The difference between lists and strings - TclRodwell Trail, WeymouthWhat costs 8.20 from Melksham, or 22.30 via Chippenham?