### 8.4.23 La boucle : `while` et `tantque`

`while` et `tantque` permettent de faire plusieurs fois des instructions.
`while` est suivi d’un booléen mis entre des parenthèses et d’un bloc d’instructions. `while` permet de faire plusieurs fois ce bloc d’instructions tant que la valeur de ce booléen est vrai.
`tantque` est suivi d’un booléen, de `faire` d’instructions puis de `ftantque`. `tantque` permet de faire plusieurs fois les instructions situèes entre `faire` et `ftantque` tant que la valeur de ce booléen est vrai.
On tape :

    somwhile(eps):={
    local s,j;
    s:=0;
    j:=1;
    while (1/j>=eps){
     s:=s+1/j;
     j:=j+1;
    }
    return s;
    }

Ou on tape :

    somtantque(eps):={
    local s,j;
    s:=0;
    j:=1;
    tantque 1/j>=eps faire
     s:=s+1/j;
     j:=j+1;
    ftantque
    retourne s;
    }

puis :

`somwhile(0.2)`

ou

`somantque(0.2)`

On obtient :

`137/60`

Remarque
On peut aussi écrire un `while` avec un `for` :
`while (<condition>)``<instructions>` est équivalent à :
`for (;<condition>;)``<instructions>`
On aurait donc pu écrire :

    somwhilefor(eps):={
    local s,j;
    s:=0;
    j:=1;
    for (;1/j>=eps;){
     s:=s+1/j;
     j:=j+1;
    }
    return s;
    }

ou encore

    somforwhile(eps):={
    local s,j;
    s:=0;
    for (j:=1;1/j>=eps;j++){
     s:=s+1/j;
    }
    return s;
    }

On tape :

`somwhile(0.1);somforwhile(0.1);somwhilefor(0.1)`

On obtient :

`7129/2520,7129/2520,7129/2520`