When writing a program, you'll often want to repeat a block of code, counting up through a table or performing a block of code with an input value (loop counter) that goes up 1, 2, 3, 4 etc.
You COULD do this using a
while loop, but this means you have to specify each of
• how to start (initialise) the loop counter
• how to test the loop counter to see if it's completed
• how to alter the loop counter each time round
and to do each of these separately means that the maintainer of the code is going to have to look in three places at once to work out what's going on.
Most languages have a
for loop construct which pulls all three elements into one statement, for example:
for ($k=0; $k<25; $k++) {
which means START at zero, REPEAT the loop while $k is less that 25 and before EACH SUBSEQUENT test and loop add 1 to $k.
Here's a diagram to show how that works
The GREEN shows the initial entry to the loop, where the initial value is set and then the condition is tested.
The ORANGE shows each subsequent time round the loop, where the last clause (the increment) is performed before the condition is retested
and the RED shows how the loop exits once the condition has gone false. You'll note that a for loop CAN exit straight away, since the test is done on entry as well as each time the last clause has been run.
(written 2007-06-06, updated 2007-06-07)
Associated topics are indexed under
C203 - C and C based languages - Conditionals and Loops [3397] Does a for loop evaluate its end condition once, or on every iteration? - (2011-08-18)
[3384] Loops - a comparison of goto, while and for - (2011-08-10)
[3243] Breaking the running sequence - an introduction to conditional statements and loops - (2011-04-11)
[3200] How a for loop works Java, Perl and other languages - (2011-03-12)
[3121] New year, new C Course - (2011-01-05)
[3004] Increment operators for counting - Perl, PHP, C and others - (2010-10-18)
[2570] Function Prototypes in C - (2010-01-11)
[2002] New C Examples - pointers, realloc, structs and more - (2009-01-20)
[1696] Saying NOT in Perl, PHP, Python, Lua ... - (2008-07-04)
[1582] Ruby, C, Java and more - getting out of loops - (2008-03-19)
[1191] Smart English Output - via PHP and Perl ? : operator - (2007-05-18)
[962] Breaking a loop - Ruby and other languages - (2006-12-03)
[353] Wimbledon Neck - (2005-06-20)
H104 - PHP - Control Statements [3914] While, for, foreach or something else to loop. - (2012-11-06)
[3895] Flowchart to program - learning to program with Well House - (2012-10-14)
[2912] Predictions for the seagull population - (2010-08-09)
[2304] Extracting real data from an exported file in PHP or Perl - (2009-07-25)
[1825] Question Mark - Colon operator (Perl and PHP) - (2008-10-08)
[1477] Decisions - small ones, or big ones? - (2007-12-18)
[1199] Testing for one of a list of values. - (2007-05-22)
[863] Double and Triple equals operator in PHP - (2006-09-12)
[657] The ternary operator in Python - (2006-03-25)
[421] Don't repeat code - use loops or functions - (2005-08-21)
[406] Assignment, equality and identity in PHP - (2005-08-08)
[340] Code and code maintainance efficiency - (2005-06-08)
J704 - Java - Loops and Conditional Statements [3038] Setting up individual variables, and arrays, in Java - some commented examples - (2010-11-09)
[2734] for and foreach in Java - (2010-04-22)
P206 - Perl - More Loops and Conditionals [3619] Ruby v Perl - a comparison example - (2012-02-21)
[3398] Perl - making best use of the flexibility, but also using good coding standards - (2011-08-19)
[2972] Some more advanced Perl examples from a recent course - (2010-09-27)
[2967] Multiway branches in Perl - the given and when syntax - (2010-09-22)
[2892] Alternative loops and conditionals in Ruby and Perl - (2010-07-28)
[2832] Are you learning Perl? Some more examples for you! - (2010-06-27)
[2824] A pint of Black Rat, and a lazy barman - (2010-06-25)
[2817] Setting a safety net or fallback value in Perl - (2010-06-19)
[2815] switch and case, or given and when in Perl - (2010-06-17)
[2711] For loop - checked once, or evety time? Ruby v Perl comparison and contrast - (2010-04-07)
[299] What - no switch or case statement? - (2005-05-03)
[138] Perl - redo and last without a loop - (2004-12-02)
R104 - Ruby - Control Structures [3769] Muttable v immutable and implications - Ruby - (2012-06-20)
[3620] Finding the total, average, minimum and maximum in a program - (2012-02-22)
[3422] Assigning values to variables within other statements - Ruby - (2011-09-07)
[3254] Multiple inputs, multiple out, ruby functions - (2011-04-19)
[3253] Is this number between? Does this list include? - Ruby - (2011-04-18)
[3159] Returning multiple values from a function call in various languages - a comparison - (2011-02-06)
[3158] Ruby training - some fresh examples for string handling applications - (2011-02-05)
[3156] Splitting data reading code from data processing code - Ruby - (2011-02-04)
[2975] Why do I need brackets in Ruby ... or Perl, Python, C or Java - (2010-09-29)
[2619] Passing code to procedures and yield in Ruby - (2010-02-02)
[2471] A short form of if ... then ... else - (2009-10-23)
[2287] Learning to program in Ruby - examples of the programming basics - (2009-07-15)
[1904] Ruby, Perl, Linux, MySQL - some training notes - (2008-11-23)
[1891] Ruby to access web services - (2008-11-16)
[1887] Ruby Programming Course - Saturday and Sunday - (2008-11-16)
[1870] What to do with a huge crop of apples - (2008-11-04)
[1738] Clean code, jump free (Example in Lua) - (2008-08-06)
[1587] Some Ruby programming examples from our course - (2008-03-21)
[1163] A better alternative to cutting and pasting code - (2007-04-26)
[995] Ruby's case - no break - (2006-12-17)
[985] Equality in Ruby - == eql? and equal? - (2006-12-14)
[960] 1st, 2nd, 3rd revisited in Ruby - (2006-12-02)
Y104 - Python - Lists and Tuples [4027] Collections in Python - list tuple dict and string. - (2013-03-04)
[3763] Spike solutions and refactoring - a Python example - (2012-06-13)
[3669] Stepping through a list (or an array) in reverse order - (2012-03-23)
[3348] List slices in Python - 2 and 3 values forms, with an uplifting example - (2011-07-06)
[3257] All possible combinations from a list (Python) or array (Ruby) - (2011-04-23)
[3181] Beware - a=a+b and a+=b are different - Python - (2011-02-23)
[3118] Arrays of arrays - or 2D arrays. How to program tables. - (2011-01-02)
[2996] Copying - duplicating data, or just adding a name? Perl and Python compared - (2010-10-12)
[2719] Traffic lights in Python - (2010-04-13)
[2368] Python - fresh examples of all the fundamentals - (2009-08-20)
[2284] Strings as collections in Python - (2009-07-12)
[2280] Creating and iterating through Python lists - (2009-07-12)
[1789] Looking for a value in a list - Python - (2008-09-08)
[1641] Tektronix 4010 series / Python Tuples - (2008-05-13)
[955] Python collections - mutable and imutable - (2006-11-29)
[899] Python - extend v append on a list - (2006-10-20)
[383] Overloading of operators on standard objects in Python - (2005-07-19)
53ab
Some other Articles
Object Relation Mapping (ORM)Asda opening large new store in MelkshamPerl, the substitute operator sBathtubs and pecking birdsfor loop - how it works (Perl, PHP, Java, C, etc)Judging the quality of contributed Perl codeSunday afternoonWhat are factory and singleton classes?Five of the best - pictures from LondonAn update on Perl - where is it going?