Some loops run through a sequence of values accumulating some number as they go. The following loop, for example, makes r = n! (assuming that we already know what n is in this context). It starts r at 1. Then it goes through the numbers 2, 3, ..., n, multiplying r by each of them.
Let r = 1. Let k = 2. While k <= n do Relet r = r * k. Relet k = k + 1. %WhileLet's put that loop into a function that computes factorials. Now the loop is put into a context where n is known (because somebody else told the function a value of n to use).
Define factorial(n: Integer): Integer by factorial(n) = r | Let r = 1. Let k = 2. While k <= n do Relet r = r * k. Relet k = k + 1. %While %Define
Suppose that we already have a function isVowel(c) that produces true when character c is a vowel. Let's write a function, using a loop, that counts the number of vowels in a string s. The idea is to keep a count of the number of vowels seen. Initially, it is 0. Then look at each character in the string. If it is a vowel, add one to the count.
Define numVowels(s: String) : Integer by numVowels(s) = count | Let slen = length(s). Let count = 0. Let k = 1. While k <= slen do If isVowel(s_k) then Relet count = count + 1. %If Relet k = k + 1. %While %Define
[solve] Suppose that the factorial function is defined as follows.
Define factorial(n: Integer): Integer by factorial(n) = r | Let r = 1. Let k = 2. While k <= n do Relet r = r * k. Relet k = k + 1. %While %DefineDo a careful hand simulation of factorial(4).
[solve] Using a loop to accumulate the result, define function power(x,n), which returns xn. Assume that x is a real number and n is a positive integer. Write the function with Define ... %Define around it.
Some loops go through a sequence of values accumulating an answer as they go.