Les boucles

Les boucles FOR


Une boucle consiste à incrémenter une variable i de 1 à n afin de réitérer n fois la création d’un ou plusieurs objets. La forme générale d’une boucle est :

for i=1 to n do ;
 script tep (utilisant la variable i )
end ;

- La variable i doit être écrite entre crochets à l’intérieur de la boucle pour pouvoir être utilisée : [i].
- Une boucle peut utiliser une variable, un entier ou un réel défini en dehors de la boucle.
- On peut mettre une boucle à l’intérieur d’une boucle.


Syntaxe et usage des boucles

Exemple 1

for i = 1 to 5 do ;
A[i]=point(6,[i]) ;
end ;

On crée 5 points : A1, A2, A3, ... dont les coordonnées respectives sont : (6,1), (6,2), (6,3), ...

Exemple 2

A1 = point(-1.9,8.18) {i} ;
B1 = point(9.45,-2.79) {i} ;
ceA1B1 =cercle(A1,B1) {i} ;
ceB1A1 =cercle(B1,A1) {i} ;
C12 =intersection(ceA1B1,ceB1A1,1) {i} ;
C1 =intersection(ceA1B1,ceB1A1,2) {i} ;
x =reel(0.2,0,1,0.01) {noir,(6.5,-6.96)} ;
for i = 1 to 10 do ;
A[i+1]=pointsur(A[i],B[i],x){i} ;
B[i+1]=pointsur(B[i],C[i],x){i} ;
C[i+1]=pointsur(C[i],A[i],x){i} ;
p[i+1]=polygone(A[i+1],B[i+1],C[i+1]) ;
end ;

A l’intérieur de la boucle on utilise le réel x défini à l’extérieur de celle-ci. On peut modifier la valeur de celui-ci à l’aide de la souris comme on pourrait l’animer en lui rajoutant l’option anime.

Exemple 3

A = point( -9.03 , 5.7 ) {rougefonce,rond2,sansnom} ;
B = point( 8.4 , 4.57 ) {rougefonce,rond2,sansnom} ;
sAB =segment(A,B) {i} ;
C = point( 8.37 , -2.13 ) {rougefonce,rond2,sansnom} ;
D = point( -5 , -2 ) {rougefonce,rond2,sansnom} ;
sCD =segment(C,D) {i} ;
for i = 1 to 9 do ;
var x[i] = ([i]-1)/9 ;
M[i]=pointsur(A,B,x[i]){i} ;
end ;
for j = 1 to 9 do ;
var y[j] = ([j]-1)/9 ;
N[j]=pointsur(C,D,y[j]){i} ;
end ;
for i = 1 to 9 do ;
for j = 1 to 9 do ;
s[i_j]=segment(M[i],N[j]){rougefonce} ;
end ;
end ;

Les 2 dernières boucles sont imbriquées l’une dans l’autre, afin de construire dans un premier temps les segments [M1N1], [M1N2], [M1N3], ... puis les segments [M2N1], [M2N2], [M2N3], ... etc

Remarque :
Notez que si on remplace 9 par 10 alors le programme plante ; Car dans la dernière boucle, quand i=10, on obtient s10_j = segment(M10,Nj) ;
Or il existe à ce moment un point M1 et un point M10 : le prog ne sait pas lequel choisir !
Ce bug sera corrigé dans tep2.20b.
Le développement de ce genre de fonctionnalités est fastidieux.
Il faut savoir qu’un langage évolué associé à tep est déjà disponible puisqu’il suffit d’utiliser TepNoyau.
Néanmoins nous continuerons encore un peu dans cette direction (jusqu’aux si).