# 0.21 WHILE-DO constructs

A WHILE-DO construction is a construction that will perform zero or more iterations. First a condition is checked, then the body is executed. Then it will branch back to the condition. In 4tH it looks like this:

         BEGIN <condition> WHILE <body> REPEAT

The condition will have to evaluate to TRUE in order to execute the body. If it evaluates to FALSE it branches to just after the REPEAT. This example does a Fibbonaci test.

         : fib 0 1
               begin
                    dup >r rot dup r> >       \ condition
               while
                    rot rot dup rot + dup .   \ body
               repeat
               drop drop drop ;               \ after loop is executed

You might not understand all of the commands, but we'll get to that. If you enter "20 fib" you will get:

         1 2 3 5 8 13 21

This construct is particularly handy if you are not sure that all data will pass the condition.