Présentation de l'algorithme :
Courbe fractale de Von Koch :
En partant d'un segment de droite initial :
- on divise le segment de droite en trois segments de longueurs égales,
- on construit un triangle équilatéral ayant pour base le segment médian de la première étape,

- selon le nombre d'itérations demandé (entre 1 et 8), on réitère ce processus pour chaque segment de droite de la figure.

Code de l'algorithme :
1
VARIABLES
2
n EST_DU_TYPE NOMBRE
3
i EST_DU_TYPE NOMBRE
4
j EST_DU_TYPE NOMBRE
5
k EST_DU_TYPE NOMBRE
6
a EST_DU_TYPE NOMBRE
7
x EST_DU_TYPE LISTE
8
y EST_DU_TYPE LISTE
9
max EST_DU_TYPE NOMBRE
10
DEBUT_ALGORITHME
11
AFFICHER "Nombre d'itérations="
12
LIRE n
13
AFFICHER n
14
SI (n>=1 ET n<=8) ALORS
15
DEBUT_SI
16
max PREND_LA_VALEUR pow(4,n)
17
POUR i ALLANT_DE 0 A max
18
DEBUT_POUR
19
x[i] PREND_LA_VALEUR 0
20
y[i] PREND_LA_VALEUR 0
21
FIN_POUR
22
x[max] PREND_LA_VALEUR 450
23
POUR i ALLANT_DE 1 A n
24
DEBUT_POUR
25
k PREND_LA_VALEUR pow(4,n-i)
26
POUR j ALLANT_DE 0 A pow(4,i-1)-1
27
DEBUT_POUR
28
a PREND_LA_VALEUR 4*j*k
29
x[a+k] PREND_LA_VALEUR (2*x[a]+x[a+4*k])/3
30
y[a+k] PREND_LA_VALEUR (2*y[a]+y[a+4*k])/3
31
x[a+3*k] PREND_LA_VALEUR (x[a]+2*x[a+4*k])/3
32
y[a+3*k] PREND_LA_VALEUR (y[a]+2*y[a+4*k])/3
33
x[a+2*k] PREND_LA_VALEUR (x[a+k]+x[a+3*k]+sqrt(3)*(y[a+k]-y[a+3*k]))/2
34
y[a+2*k] PREND_LA_VALEUR (y[a+k]+y[a+3*k]+sqrt(3)*(x[a+3*k]-x[a+k]))/2
35
FIN_POUR
36
FIN_POUR
37
POUR i ALLANT_DE 0 A max-1
38
DEBUT_POUR
39
TRACER_SEGMENT (x[i],y[i])->(x[i+1],y[i+1])
40
FIN_POUR
41
FIN_SI
42
FIN_ALGORITHME
Fichier AlgoBox associé : vonkoch.alg (faire un clic-droit et utiliser l'option "enregistrer sous" pour télécharger le fichier)
Tester l'algorithme :
Graphique :