La conjecture de Syracuse

publicité
La conjecture de Syracuse
algorithmes
8 janvier 2011
Enoncé du problème
Résolution du problème
Algorithmes
Historique
Compléments
Enoncé du problème
La conjecture de Syracuse
Choisissez un entier naturel non nul.
La conjecture de Syracuse
Choisissez un entier naturel non nul.
s’il est pair, divisez-le par 2
La conjecture de Syracuse
Choisissez un entier naturel non nul.
s’il est pair, divisez-le par 2
s’il est impair, multipliez-le par 3 puis ajouter 1
La conjecture de Syracuse
Choisissez un entier naturel non nul.
s’il est pair, divisez-le par 2
s’il est impair, multipliez-le par 3 puis ajouter 1
Répétez ce processus avec le résultat obtenu.
La conjecture de Syracuse
Choisissez un entier naturel non nul.
s’il est pair, divisez-le par 2
s’il est impair, multipliez-le par 3 puis ajouter 1
Répétez ce processus avec le résultat obtenu.
Et ceci jusqu’à . . .
Résolution du problème
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
nombre
13
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
1
nombre
13
40
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
1
2
nombre
13
40
20
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
1
2
3
nombre
13
40
20
10
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
1
2
3
4
nombre
13
40
20
10
5
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
1
2
3
4
5
nombre
13
40
20
10
5
16
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
1
2
3
4
5
6
nombre
13
40
20
10
5
16
8
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
1
2
3
4
5
6
7
nombre
13
40
20
10
5
16
8
4
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
1
2
3
4
5
6
7
8
nombre
13
40
20
10
5
16
8
4
2
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
1
2
3
4
5
6
7
8
9
nombre
13
40
20
10
5
16
8
4
2
1
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
1
2
3
4
5
6
7
8
9
10
nombre
13
40
20
10
5
16
8
4
2
1
4
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
1
2
3
4
5
6
7
8
9
10
11
nombre
13
40
20
10
5
16
8
4
2
1
4
2
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
1
2
3
4
5
6
7
8
9
10
11
12
nombre
13
40
20
10
5
16
8
4
2
1
4
2
1
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
1
2
3
4
5
6
7
8
9
10
11
12
...
nombre
13
40
20
10
5
16
8
4
2
1
4
2
1
...
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
1
2
3
4
5
6
7
8
9
10
11
12
...
nombre
13
40
20
10
5
16
8
4
2
1
4
2
1
...
Commentaires
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
1
2
3
4
5
6
7
8
9
10
11
12
...
nombre
13
40
20
10
5
16
8
4
2
1
4
2
1
...
Commentaires
lorsque le résultat est 1, la suite de nombres (4, 2, 1) se répète indéfiniment ; il
est donc inutile se poursuivre le processus.
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
1
2
3
4
5
6
7
8
9
10
11
12
...
nombre
13
40
20
10
5
16
8
4
2
1
4
2
1
...
Commentaires
lorsque le résultat est 1, la suite de nombres (4, 2, 1) se répète indéfiniment ; il
est donc inutile se poursuivre le processus.
la liste {40, 20, 10, 5, 16, 8, 4, 2, 1} sera appelée suite de Syracuse associée à 13
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
1
2
3
4
5
6
7
8
9
10
11
12
...
nombre
13
40
20
10
5
16
8
4
2
1
4
2
1
...
Commentaires
lorsque le résultat est 1, la suite de nombres (4, 2, 1) se répète indéfiniment ; il
est donc inutile se poursuivre le processus.
la liste {40, 20, 10, 5, 16, 8, 4, 2, 1} sera appelée suite de Syracuse associée à 13
40 est le plus grand nombre qui a été calculé
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
1
2
3
4
5
6
7
8
9
10
11
12
...
nombre
13
40
20
10
5
16
8
4
2
1
4
2
1
...
Commentaires
lorsque le résultat est 1, la suite de nombres (4, 2, 1) se répète indéfiniment ; il
est donc inutile se poursuivre le processus.
la liste {40, 20, 10, 5, 16, 8, 4, 2, 1} sera appelée suite de Syracuse associée à 13
40 est le plus grand nombre qui a été calculé
il a fallu 9 itérations pour arriver à 1
Exemple
Choisissons le nombre 13 et étudions la suite de nombre obtenu.
étape n˚
0
1
2
3
4
5
6
7
8
9
10
11
12
...
nombre
13
40
20
10
5
16
8
4
2
1
4
2
1
...
Commentaires
lorsque le résultat est 1, la suite de nombres (4, 2, 1) se répète indéfiniment ; il
est donc inutile se poursuivre le processus.
la liste {40, 20, 10, 5, 16, 8, 4, 2, 1} sera appelée suite de Syracuse associée à 13
40 est le plus grand nombre qui a été calculé
il a fallu 9 itérations pour arriver à 1
et une représentation graphique nous permettrait comme d’habitude de mieux
visualiser ce phénomène
Représentation graphique
Dans un repère du plan, l’axe des abscisses indique l’étape du calcul et l’axe des
ordonnées le résultat obtenu.
résultat
b
40
30
b
20
b
b
b
10
b
b
b
b
O
1
2
3
4
5
6
7
8
b
9
étape
Vocabulaire
Les mathématiciens ont alors choisi un vocabulaire adapté pour décrire ces
phénomènes étudiées
Vocabulaire
Les mathématiciens ont alors choisi un vocabulaire adapté pour décrire ces
phénomènes étudiées
{40, 20, 10, 5, 16, 8, 4, 2, 1} porte le nom de vol ou trajectoire du nombre 13
Vocabulaire
Les mathématiciens ont alors choisi un vocabulaire adapté pour décrire ces
phénomènes étudiées
{40, 20, 10, 5, 16, 8, 4, 2, 1} porte le nom de vol ou trajectoire du nombre 13
10 est une étape
Vocabulaire
Les mathématiciens ont alors choisi un vocabulaire adapté pour décrire ces
phénomènes étudiées
{40, 20, 10, 5, 16, 8, 4, 2, 1} porte le nom de vol ou trajectoire du nombre 13
10 est une étape
40 est l’altitude maximale du vol
Vocabulaire
Les mathématiciens ont alors choisi un vocabulaire adapté pour décrire ces
phénomènes étudiées
{40, 20, 10, 5, 16, 8, 4, 2, 1} porte le nom de vol ou trajectoire du nombre 13
10 est une étape
40 est l’altitude maximale du vol
9 est le temps ou la durée du vol
Vocabulaire
Les mathématiciens ont alors choisi un vocabulaire adapté pour décrire ces
phénomènes étudiées
{40, 20, 10, 5, 16, 8, 4, 2, 1} porte le nom de vol ou trajectoire du nombre 13
10 est une étape
40 est l’altitude maximale du vol
9 est le temps ou la durée du vol
et le temps de vol en altitude est la durée entre le moment où le vol
commence, et celui où il repasse sous sa valeur initiale.
Vocabulaire
Les mathématiciens ont alors choisi un vocabulaire adapté pour décrire ces
phénomènes étudiées
{40, 20, 10, 5, 16, 8, 4, 2, 1} porte le nom de vol ou trajectoire du nombre 13
10 est une étape
40 est l’altitude maximale du vol
9 est le temps ou la durée du vol
et le temps de vol en altitude est la durée entre le moment où le vol
commence, et celui où il repasse sous sa valeur initiale.
Conséquence
Comme on veut étudier la trajectoire de plusieurs nombres, le recours à un algorithme et un logiciel de calcul s’avère nécessaire.
Algorithmes
La conjecture de Syracuse
algorithme avec algobox
Variables et affectations
Affichage d’un message
Instructions conditionnelles
Boucle POUR . . . DE . . . A . . .
Structure TANT QUE . . .
Compléments
Variables et affectations
Opérations avec les nombres
Voici les calculs qui sont possibles avec Algobox en plus des quatre opérations de
base +, −, ∗, / (x et y sont des variables du type NOMBRE).
Opérations avec les nombres
Voici les calculs qui sont possibles avec Algobox en plus des quatre opérations de
base +, −, ∗, / (x et y sont des variables du type NOMBRE).
Racine carrée d’une variable x : sqrt(x)
Opérations avec les nombres
Voici les calculs qui sont possibles avec Algobox en plus des quatre opérations de
base +, −, ∗, / (x et y sont des variables du type NOMBRE).
Racine carrée d’une variable x : sqrt(x)
Mettre une variable x à la puissance n : pow(x,n)
Opérations avec les nombres
Voici les calculs qui sont possibles avec Algobox en plus des quatre opérations de
base +, −, ∗, / (x et y sont des variables du type NOMBRE).
Racine carrée d’une variable x : sqrt(x)
Mettre une variable x à la puissance n : pow(x,n)
Obtenir un nombre pseudo-aléatoire compris en 0 et 1 : random()
Opérations avec les nombres
Voici les calculs qui sont possibles avec Algobox en plus des quatre opérations de
base +, −, ∗, / (x et y sont des variables du type NOMBRE).
Racine carrée d’une variable x : sqrt(x)
Mettre une variable x à la puissance n : pow(x,n)
Obtenir un nombre pseudo-aléatoire compris en 0 et 1 : random()
Nombre PI : Math.PI
Opérations avec les nombres
Voici les calculs qui sont possibles avec Algobox en plus des quatre opérations de
base +, −, ∗, / (x et y sont des variables du type NOMBRE).
Racine carrée d’une variable x : sqrt(x)
Mettre une variable x à la puissance n : pow(x,n)
Obtenir un nombre pseudo-aléatoire compris en 0 et 1 : random()
Nombre PI : Math.PI
Partie entière d’une variable x : floor(x)
Opérations avec les nombres
Voici les calculs qui sont possibles avec Algobox en plus des quatre opérations de
base +, −, ∗, / (x et y sont des variables du type NOMBRE).
Racine carrée d’une variable x : sqrt(x)
Mettre une variable x à la puissance n : pow(x,n)
Obtenir un nombre pseudo-aléatoire compris en 0 et 1 : random()
Nombre PI : Math.PI
Partie entière d’une variable x : floor(x)
Cosinus d’une variable x (en radians) : cos(x)
Opérations avec les nombres
Voici les calculs qui sont possibles avec Algobox en plus des quatre opérations de
base +, −, ∗, / (x et y sont des variables du type NOMBRE).
Racine carrée d’une variable x : sqrt(x)
Mettre une variable x à la puissance n : pow(x,n)
Obtenir un nombre pseudo-aléatoire compris en 0 et 1 : random()
Nombre PI : Math.PI
Partie entière d’une variable x : floor(x)
Cosinus d’une variable x (en radians) : cos(x)
Sinus d’une variable x (en radians) : sin(x)
Opérations avec les nombres
Voici les calculs qui sont possibles avec Algobox en plus des quatre opérations de
base +, −, ∗, / (x et y sont des variables du type NOMBRE).
Racine carrée d’une variable x : sqrt(x)
Mettre une variable x à la puissance n : pow(x,n)
Obtenir un nombre pseudo-aléatoire compris en 0 et 1 : random()
Nombre PI : Math.PI
Partie entière d’une variable x : floor(x)
Cosinus d’une variable x (en radians) : cos(x)
Sinus d’une variable x (en radians) : sin(x)
Tangente d’une variable x (en radians) : tan(x)
Opérations avec les nombres
Voici les calculs qui sont possibles avec Algobox en plus des quatre opérations de
base +, −, ∗, / (x et y sont des variables du type NOMBRE).
Racine carrée d’une variable x : sqrt(x)
Mettre une variable x à la puissance n : pow(x,n)
Obtenir un nombre pseudo-aléatoire compris en 0 et 1 : random()
Nombre PI : Math.PI
Partie entière d’une variable x : floor(x)
Cosinus d’une variable x (en radians) : cos(x)
Sinus d’une variable x (en radians) : sin(x)
Tangente d’une variable x (en radians) : tan(x)
Exponentielle d’une variable x : exp(x)
Opérations avec les nombres
Voici les calculs qui sont possibles avec Algobox en plus des quatre opérations de
base +, −, ∗, / (x et y sont des variables du type NOMBRE).
Racine carrée d’une variable x : sqrt(x)
Mettre une variable x à la puissance n : pow(x,n)
Obtenir un nombre pseudo-aléatoire compris en 0 et 1 : random()
Nombre PI : Math.PI
Partie entière d’une variable x : floor(x)
Cosinus d’une variable x (en radians) : cos(x)
Sinus d’une variable x (en radians) : sin(x)
Tangente d’une variable x (en radians) : tan(x)
Exponentielle d’une variable x : exp(x)
Logarithme népérien d’une variable x : log(x)
Opérations avec les nombres
Voici les calculs qui sont possibles avec Algobox en plus des quatre opérations de
base +, −, ∗, / (x et y sont des variables du type NOMBRE).
Racine carrée d’une variable x : sqrt(x)
Mettre une variable x à la puissance n : pow(x,n)
Obtenir un nombre pseudo-aléatoire compris en 0 et 1 : random()
Nombre PI : Math.PI
Partie entière d’une variable x : floor(x)
Cosinus d’une variable x (en radians) : cos(x)
Sinus d’une variable x (en radians) : sin(x)
Tangente d’une variable x (en radians) : tan(x)
Exponentielle d’une variable x : exp(x)
Logarithme népérien d’une variable x : log(x)
Valeur absolue d’une variable x : abs(x)
Opérations avec les nombres
Voici les calculs qui sont possibles avec Algobox en plus des quatre opérations de
base +, −, ∗, / (x et y sont des variables du type NOMBRE).
Racine carrée d’une variable x : sqrt(x)
Mettre une variable x à la puissance n : pow(x,n)
Obtenir un nombre pseudo-aléatoire compris en 0 et 1 : random()
Nombre PI : Math.PI
Partie entière d’une variable x : floor(x)
Cosinus d’une variable x (en radians) : cos(x)
Sinus d’une variable x (en radians) : sin(x)
Tangente d’une variable x (en radians) : tan(x)
Exponentielle d’une variable x : exp(x)
Logarithme népérien d’une variable x : log(x)
Valeur absolue d’une variable x : abs(x)
Arrondi d’une variable x à l’entier le plus proche : round(x)
Opérations avec les nombres
Voici les calculs qui sont possibles avec Algobox en plus des quatre opérations de
base +, −, ∗, / (x et y sont des variables du type NOMBRE).
Racine carrée d’une variable x : sqrt(x)
Mettre une variable x à la puissance n : pow(x,n)
Obtenir un nombre pseudo-aléatoire compris en 0 et 1 : random()
Nombre PI : Math.PI
Partie entière d’une variable x : floor(x)
Cosinus d’une variable x (en radians) : cos(x)
Sinus d’une variable x (en radians) : sin(x)
Tangente d’une variable x (en radians) : tan(x)
Exponentielle d’une variable x : exp(x)
Logarithme népérien d’une variable x : log(x)
Valeur absolue d’une variable x : abs(x)
Arrondi d’une variable x à l’entier le plus proche : round(x)
Reste de la division de la variable x par la variable y : x%y
Affectation des variables
On veut calculer l’image d’un nombre par la fonction f : x 7−→
x
2
Affectation des variables
On veut calculer l’image d’un nombre par la fonction f : x 7−→
x
2
VARIABLES
Commentaires
la déclaration des variables est obligatoire
Affectation des variables
On veut calculer l’image d’un nombre par la fonction f : x 7−→
VARIABLES
x EST_DU_TYPE NOMBRE
y EST_DU_TYPE NOMBRE
x
2
Commentaires
la déclaration des variables est obligatoire
y sera l’image de x par la fonction f
Affectation des variables
On veut calculer l’image d’un nombre par la fonction f : x 7−→
VARIABLES
x EST_DU_TYPE NOMBRE
y EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
x
2
Commentaires
la déclaration des variables est obligatoire
y sera l’image de x par la fonction f
FIN_ALGORITHME
Affectation des variables
On veut calculer l’image d’un nombre par la fonction f : x 7−→
VARIABLES
x EST_DU_TYPE NOMBRE
y EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE x
x
2
Commentaires
la déclaration des variables est obligatoire
y sera l’image de x par la fonction f
FIN_ALGORITHME
Affectation des variables
On veut calculer l’image d’un nombre par la fonction f : x 7−→
VARIABLES
x EST_DU_TYPE NOMBRE
y EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE x
y PREND_LA_VALEUR x/2
FIN_ALGORITHME
x
2
Commentaires
la déclaration des variables est obligatoire
y sera l’image de x par la fonction f
Affectation des variables
On veut calculer l’image d’un nombre par la fonction f : x 7−→
VARIABLES
x EST_DU_TYPE NOMBRE
y EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE x
y PREND_LA_VALEUR x/2
AFFICHER y
FIN_ALGORITHME
x
2
Commentaires
la déclaration des variables est obligatoire
y sera l’image de x par la fonction f
Affectation des variables
On veut calculer l’image d’un nombre par la fonction f : x 7−→
x
2
Commentaires
on peut n’utiliser qu’une variable
Affectation des variables
On veut calculer l’image d’un nombre par la fonction f : x 7−→
VARIABLES
x EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE x
x PREND_LA_VALEUR x/2
FIN_ALGORITHME
x
2
Commentaires
on peut n’utiliser qu’une variable
Affectation des variables
On veut calculer l’image d’un nombre par la fonction f : x 7−→
VARIABLES
x EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE x
x PREND_LA_VALEUR x/2
AFFICHER x
FIN_ALGORITHME
x
2
Commentaires
on peut n’utiliser qu’une variable
x prend alors une valeur qui dépend de l’ancienne tout en l’effaçant définitivement
Affectation des variables
Composition des fonctions f : x 7−→
x
et g : x 7−→ 3x + 1
2
Affectation des variables
Composition des fonctions f : x 7−→
VARIABLES
x EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE x
x PREND_LA_VALEUR x/2
FIN_ALGORITHME
x
et g : x 7−→ 3x + 1
2
Commentaires
x va à chaque affectation prendre des valeurs
différentes
Affectation des variables
Composition des fonctions f : x 7−→
VARIABLES
x EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE x
x PREND_LA_VALEUR x/2
x PREND_LA_VALEUR 3*x+1
FIN_ALGORITHME
x
et g : x 7−→ 3x + 1
2
Commentaires
x va à chaque affectation prendre des valeurs
différentes
Affectation des variables
Composition des fonctions f : x 7−→
VARIABLES
x EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE x
x PREND_LA_VALEUR x/2
x PREND_LA_VALEUR 3*x+1
AFFICHER x
FIN_ALGORITHME
x
et g : x 7−→ 3x + 1
2
Commentaires
x va à chaque affectation prendre des valeurs
différentes et seule la dernière valeur sera affichée à l’écran
Affichage d’un message
Affichage d’un message
On désire que le nombre choisi soit un entier naturel non nul.
Affichage d’un message
On désire que le nombre choisi soit un entier naturel non nul.
Commentaires
L’affichage des messages est nécessaire lorsque l’algorithme est complexe ou qu’il
va être exécuté par quelqu’un qui ne la pas conçu.
Affichage d’un message
On désire que le nombre choisi soit un entier naturel non nul.
VARIABLES
n EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Choisir un entier naturel n non nul : "
LIRE n
n PREND_LA_VALEUR n/2
n PREND_LA_VALEUR 3*n+1
AFFICHER n
FIN_ALGORITHME
Commentaires
L’affichage des messages est nécessaire lorsque l’algorithme est complexe ou qu’il
va être exécuté par quelqu’un qui ne la pas conçu.
Instructions conditionnelles
Instructions conditionnelles
On tient à vérifier que le nombre choisi est bien un entier naturel non nul.
Instructions conditionnelles
On tient à vérifier que le nombre choisi est bien un entier naturel non nul.
VARIABLES
n EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Choisir un entier naturel n non nul : "
LIRE n
FIN_ALGORITHME
Instructions conditionnelles
On tient à vérifier que le nombre choisi est bien un entier naturel non nul.
VARIABLES
n EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Choisir un entier naturel n non nul : "
LIRE n
SI
ALORS
FIN_ALGORITHME
Instructions conditionnelles
On tient à vérifier que le nombre choisi est bien un entier naturel non nul.
VARIABLES
n EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Choisir un entier naturel n non nul : "
LIRE n
SI
ALORS
DEBUT_SI
FIN_SI
FIN_ALGORITHME
Instructions conditionnelles
On tient à vérifier que le nombre choisi est bien un entier naturel non nul.
VARIABLES
n EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Choisir un entier naturel n non nul : "
LIRE n
SI
ALORS
DEBUT_SI
FIN_SI
SINON
DEBUT_SINON
FIN_SINON
FIN_ALGORITHME
Commentaires
Il n’est pas obligatoire de traiter la cas où la condition n’est pas vérifiée.
Instructions conditionnelles
On tient à vérifier que le nombre choisi est bien un entier naturel non nul.
VARIABLES
n EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Choisir un entier naturel n non nul : "
LIRE n
SI (n>0 ET n==floor(n)) ALORS
DEBUT_SI
FIN_SI
SINON
DEBUT_SINON
FIN_SINON
FIN_ALGORITHME
Commentaires
Il n’est pas obligatoire de traiter la cas où la condition n’est pas vérifiée.
Instructions conditionnelles
On tient à vérifier que le nombre choisi est bien un entier naturel non nul.
VARIABLES
n EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Choisir un entier naturel n non nul : "
LIRE n
SI (n>0 ET n==floor(n)) ALORS
DEBUT_SI
n PREND_LA_VALEUR n/2
AFFICHER n
FIN_SI
SINON
DEBUT_SINON
FIN_SINON
FIN_ALGORITHME
Commentaires
Il n’est pas obligatoire de traiter la cas où la condition n’est pas vérifiée.
Instructions conditionnelles
On tient à vérifier que le nombre choisi est bien un entier naturel non nul.
VARIABLES
n EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Choisir un entier naturel n non nul : "
LIRE n
SI (n>0 ET n==floor(n)) ALORS
DEBUT_SI
n PREND_LA_VALEUR n/2
AFFICHER n
FIN_SI
SINON
DEBUT_SINON
AFFICHER "le nombre choisi ne convient pas"
FIN_SINON
FIN_ALGORITHME
Commentaires
Il n’est pas obligatoire de traiter la cas où la condition n’est pas vérifiée.
Instructions conditionnelles
La conjecture de Syracuse nous oblige à tester la parité d’un entier naturel.
Instructions conditionnelles
La conjecture de Syracuse nous oblige à tester la parité d’un entier naturel.
VARIABLES
n EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Choisir un entier naturel n non nul : "
LIRE n
SI (n>0 ET n==floor(n)) ALORS
DEBUT_SI
FIN_SI
SINON
DEBUT_SINON
AFFICHER "le nombre choisi ne convient pas"
FIN_SINON
FIN_ALGORITHME
Instructions conditionnelles
La conjecture de Syracuse nous oblige à tester la parité d’un entier naturel.
VARIABLES
n EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Choisir un entier naturel n non nul : "
LIRE n
SI (n>0 ET n==floor(n)) ALORS
DEBUT_SI
SI
ALORS
DEBUT_SI
FIN_SI
SINON
DEBUT_SINON
FIN_SINON
FIN_SI
SINON
DEBUT_SINON
AFFICHER "le nombre choisi ne convient pas"
FIN_SINON
FIN_ALGORITHME
Instructions conditionnelles
La conjecture de Syracuse nous oblige à tester la parité d’un entier naturel.
VARIABLES
n EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Choisir un entier naturel n non nul : "
LIRE n
SI (n>0 ET n==floor(n)) ALORS
DEBUT_SI
SI
ALORS
DEBUT_SI
n PREND_LA_VALEUR n/2
FIN_SI
SINON
DEBUT_SINON
n PREND_LA_VALEUR 3*n+1
FIN_SINON
FIN_SI
SINON
DEBUT_SINON
AFFICHER "le nombre choisi ne convient pas"
FIN_SINON
FIN_ALGORITHME
Instructions conditionnelles
La conjecture de Syracuse nous oblige à tester la parité d’un entier naturel.
VARIABLES
n EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Choisir un entier naturel n non nul : "
LIRE n
SI (n>0 ET n==floor(n)) ALORS
DEBUT_SI
SI (n%2==0) ALORS
DEBUT_SI
n PREND_LA_VALEUR n/2
FIN_SI
SINON
DEBUT_SINON
n PREND_LA_VALEUR 3*n+1
FIN_SINON
FIN_SI
SINON
DEBUT_SINON
AFFICHER "le nombre choisi ne convient pas"
FIN_SINON
FIN_ALGORITHME
Instructions conditionnelles
La conjecture de Syracuse nous oblige à tester la parité d’un entier naturel.
VARIABLES
n EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Choisir un entier naturel n non nul : "
LIRE n
SI (n>0 ET n==floor(n)) ALORS
DEBUT_SI
SI (n%2==0) ALORS
DEBUT_SI
n PREND_LA_VALEUR n/2
FIN_SI
SINON
DEBUT_SINON
n PREND_LA_VALEUR 3*n+1
FIN_SINON
AFFICHER n
FIN_SI
SINON
DEBUT_SINON
AFFICHER "le nombre choisi ne convient pas"
FIN_SINON
FIN_ALGORITHME
Boucle POUR . . . DE . . . A . . .
Boucle POUR . . . DE . . . A . . .
A partir du résultat obtenu, on désire maintenant réitérer ce calcul et ceci 50 fois.
Boucle POUR . . . DE . . . A . . .
A partir du résultat obtenu, on désire maintenant réitérer ce calcul et ceci 50 fois.
.
.
.
SI (n%2==0) ALORS
DEBUT_SI
n PREND_LA_VALEUR n/2
FIN_SI
SINON
DEBUT_SINON
n PREND_LA_VALEUR 3*n+1
FIN_SINON
.
.
.
Boucle POUR . . . DE . . . A . . .
A partir du résultat obtenu, on désire maintenant réitérer ce calcul et ceci 50 fois.
.
.
.
POUR
ALLANT_DE 1 A 50
DEBUT_POUR
SI (n%2==0) ALORS
DEBUT_SI
n PREND_LA_VALEUR n/2
FIN_SI
SINON
DEBUT_SINON
n PREND_LA_VALEUR 3*n+1
FIN_SINON
FIN_POUR
.
.
.
Boucle POUR . . . DE . . . A . . .
A partir du résultat obtenu, on désire maintenant réitérer ce calcul et ceci 50 fois.
.
.
.
VARIABLES
compteur EST_DU_TYPE NOMBRE
.
.
.
POUR compteur ALLANT_DE 1 A 50
DEBUT_POUR
SI (n%2==0) ALORS
DEBUT_SI
n PREND_LA_VALEUR n/2
FIN_SI
SINON
DEBUT_SINON
n PREND_LA_VALEUR 3*n+1
FIN_SINON
FIN_POUR
.
.
.
Boucle POUR . . . DE . . . A . . .
A partir du résultat obtenu, on désire maintenant réitérer ce calcul et ceci 50 fois.
.
.
.
VARIABLES
compteur EST_DU_TYPE NOMBRE
.
.
.
POUR compteur ALLANT_DE 1 A 50
DEBUT_POUR
SI (n%2==0) ALORS
DEBUT_SI
n PREND_LA_VALEUR n/2
FIN_SI
SINON
DEBUT_SINON
n PREND_LA_VALEUR 3*n+1
FIN_SINON
AFFICHER compteur
AFFICHER " -> "
AFFICHER n
FIN_POUR
.
.
.
Structure TANT QUE . . .
Structure TANT QUE . . .
Lorque l’on ne connait pas le nombre d’itérations nécessaire
Structure TANT QUE . . .
Lorque l’on ne connait pas le nombre d’itérations nécessaire ou qu’on ne veut pas
répéter inutilement certaines instructions,
Structure TANT QUE . . .
Lorque l’on ne connait pas le nombre d’itérations nécessaire ou qu’on ne veut pas
répéter inutilement certaines instructions,la boucle POUR n’est pas pertinente et
la structure TANT QUE s’impose.
Structure TANT QUE . . .
Lorque l’on ne connait pas le nombre d’itérations nécessaire ou qu’on ne veut pas
répéter inutilement certaines instructions,la boucle POUR n’est pas pertinente et
la structure TANT QUE s’impose.
.
.
.
SI (n%2==0) ALORS
DEBUT_SI
n PREND_LA_VALEUR n/2
FIN_SI
SINON
DEBUT_SINON
n PREND_LA_VALEUR 3*n+1
FIN_SINON
.
.
.
Structure TANT QUE . . .
Lorque l’on ne connait pas le nombre d’itérations nécessaire ou qu’on ne veut pas
répéter inutilement certaines instructions,la boucle POUR n’est pas pertinente et
la structure TANT QUE s’impose.
.
.
.
TANT_QUE
FAIRE
DEBUT_TANT_QUE
SI (n%2==0) ALORS
DEBUT_SI
n PREND_LA_VALEUR n/2
FIN_SI
SINON
DEBUT_SINON
n PREND_LA_VALEUR 3*n+1
FIN_SINON
FIN_TANT_QUE
.
.
.
Structure TANT QUE . . .
Lorque l’on ne connait pas le nombre d’itérations nécessaire ou qu’on ne veut pas
répéter inutilement certaines instructions,la boucle POUR n’est pas pertinente et
la structure TANT QUE s’impose.
.
.
.
TANT_QUE (n!=1) FAIRE
DEBUT_TANT_QUE
SI (n%2==0) ALORS
DEBUT_SI
n PREND_LA_VALEUR n/2
FIN_SI
SINON
DEBUT_SINON
n PREND_LA_VALEUR 3*n+1
FIN_SINON
FIN_TANT_QUE
.
.
.
Structure TANT QUE . . .
Lorque l’on ne connait pas le nombre d’itérations nécessaire ou qu’on ne veut pas
répéter inutilement certaines instructions,la boucle POUR n’est pas pertinente et
la structure TANT QUE s’impose.
.
.
.
TANT_QUE (n!=1) FAIRE
DEBUT_TANT_QUE
SI (n%2==0) ALORS
DEBUT_SI
n PREND_LA_VALEUR n/2
FIN_SI
SINON
DEBUT_SINON
n PREND_LA_VALEUR 3*n+1
FIN_SINON
AFFICHER n
FIN_TANT_QUE
.
.
.
Structure TANT QUE . . .
Lorque l’on ne connait pas le nombre d’itérations nécessaire ou qu’on ne veut pas
répéter inutilement certaines instructions,la boucle POUR n’est pas pertinente et
la structure TANT QUE s’impose.
.
.
.
TANT_QUE (n!=1) FAIRE
DEBUT_TANT_QUE
SI (n%2==0) ALORS
DEBUT_SI
n PREND_LA_VALEUR n/2
FIN_SI
SINON
DEBUT_SINON
n PREND_LA_VALEUR 3*n+1
FIN_SINON
AFFICHER n
FIN_TANT_QUE
.
.
.
Commentaires
Malheureusement, on a perdu notre compteur.
Algorithme amélioré
On peut commencer par créer un compteur qui donnera le temps de vol de l’entier
naturel choisi.
Algorithme amélioré
On peut commencer par créer un compteur qui donnera le temps de vol de l’entier
naturel choisi.
.
.
.
VARIABLES
.
.
.
TANT_QUE (n!=1) FAIRE
DEBUT_TANT_QUE
SI (n%2==0) ALORS
DEBUT_SI
n PREND_LA_VALEUR n/2
FIN_SI
SINON
DEBUT_SINON
n PREND_LA_VALEUR 3*n+1
FIN_SINON
FIN_TANT_QUE
.
.
.
Algorithme amélioré
On peut commencer par créer un compteur qui donnera le temps de vol de l’entier
naturel choisi.
.
.
.
VARIABLES
temps EST_DU_TYPE NOMBRE
.
.
.
TANT_QUE (n!=1) FAIRE
DEBUT_TANT_QUE
SI (n%2==0) ALORS
DEBUT_SI
n PREND_LA_VALEUR n/2
FIN_SI
SINON
DEBUT_SINON
n PREND_LA_VALEUR 3*n+1
FIN_SINON
FIN_TANT_QUE
.
.
.
Algorithme amélioré
On peut commencer par créer un compteur qui donnera le temps de vol de l’entier
naturel choisi.
.
.
.
VARIABLES
temps EST_DU_TYPE NOMBRE
.
.
.
temps PREND_LA_VALEUR 0
TANT_QUE (n!=1) FAIRE
DEBUT_TANT_QUE
SI (n%2==0) ALORS
DEBUT_SI
n PREND_LA_VALEUR n/2
FIN_SI
SINON
DEBUT_SINON
n PREND_LA_VALEUR 3*n+1
FIN_SINON
FIN_TANT_QUE
.
.
.
Algorithme amélioré
On peut commencer par créer un compteur qui donnera le temps de vol de l’entier
naturel choisi.
.
.
.
VARIABLES
temps EST_DU_TYPE NOMBRE
.
.
.
temps PREND_LA_VALEUR 0
TANT_QUE (n!=1) FAIRE
DEBUT_TANT_QUE
SI (n%2==0) ALORS
DEBUT_SI
n PREND_LA_VALEUR n/2
FIN_SI
SINON
DEBUT_SINON
n PREND_LA_VALEUR 3*n+1
FIN_SINON
temps PREND_LA_VALEUR temps+1
FIN_TANT_QUE
.
.
.
Algorithme amélioré
On peut commencer par créer un compteur qui donnera le temps de vol de l’entier
naturel choisi.
.
.
.
VARIABLES
temps EST_DU_TYPE NOMBRE
.
.
.
temps PREND_LA_VALEUR 0
AFFICHER "le temps de vol du nombre "
AFFICHER n
TANT_QUE (n!=1) FAIRE
DEBUT_TANT_QUE
SI (n%2==0) ALORS
DEBUT_SI
n PREND_LA_VALEUR n/2
FIN_SI
SINON
DEBUT_SINON
n PREND_LA_VALEUR 3*n+1
FIN_SINON
temps PREND_LA_VALEUR temps+1
FIN_TANT_QUE
AFFICHER " est "
AFFICHER temps
.
.
.
La conjecture de Syracuse
algorithme avec scilab
Variables
Fonctions
Affichage d’un message
Instructions conditionnelles
Boucle POUR . . . DE . . . A . . .
Structure TANT QUE . . .
Compléments
Variables et affectations
Les variables
On veut calculer l’image d’un nombre par la fonction f : x 7−→
x
2
Les variables
On veut calculer l’image d’un nombre par la fonction f : x 7−→
x
2
x=10;
Commentaires
les variables n’ont pas besoin d’être déclarées à l’avance, mais toute variable utilisée
doit avoir une valeur
Les variables
On veut calculer l’image d’un nombre par la fonction f : x 7−→
x
2
x=10;
y=x/2
Commentaires
les variables n’ont pas besoin d’être déclarées à l’avance, mais toute variable utilisée
doit avoir une valeur
y sera l’image de x par la fonction f
Les variables
On veut calculer l’image d’un nombre par la fonction f : x 7−→
x
2
x=10;
y=x/2
Commentaires
les variables n’ont pas besoin d’être déclarées à l’avance, mais toute variable utilisée
doit avoir une valeur
y sera l’image de x par la fonction f
le ; permet de ne pas afficher la valeur de x
Les variables
On veut calculer l’image d’un nombre par la fonction f : x 7−→
x
2
x=10;
y=x/2
Commentaires
les variables n’ont pas besoin d’être déclarées à l’avance, mais toute variable utilisée
doit avoir une valeur
y sera l’image de x par la fonction f
le ; permet de ne pas afficher la valeur de x
Incontournable
Lorsqu’on programme sous scilab, le recours aux fonctions est bien plus intéressant.
Fonctions
Définition d’une fonction
On veut définir la fonction f : x 7−→
x
et la fonction g : x 7−→ 3x + 1
2
Commentaires
Définition d’une fonction
On veut définir la fonction f : x 7−→
x
et la fonction g : x 7−→ 3x + 1
2
function y = f(x);
endfunction
Commentaires
x et y seront des variables muettes
Définition d’une fonction
On veut définir la fonction f : x 7−→
function y = f(x);
y=x/2;
endfunction
x
et la fonction g : x 7−→ 3x + 1
2
Commentaires
x et y seront des variables muettes
Définition d’une fonction
On veut définir la fonction f : x 7−→
function y = f(x);
y=x/2;
endfunction
function y = g(x);
endfunction
x
et la fonction g : x 7−→ 3x + 1
2
Commentaires
x et y seront des variables muettes
Définition d’une fonction
On veut définir la fonction f : x 7−→
function y = f(x);
y=x/2;
endfunction
function y = g(x);
y=3*x+1;
endfunction
x
et la fonction g : x 7−→ 3x + 1
2
Commentaires
x et y seront des variables muettes
Affichage d’un message
Affichage d’un message
On désire que le nombre choisi soit un entier naturel non nul.
Affichage d’un message
On désire que le nombre choisi soit un entier naturel non nul.
Commentaires
L’affichage des messages est nécessaire lorsque l’algorithme est complexe ou qu’il
va être exécuté par quelqu’un qui ne l’a pas conçu.
Affichage d’un message
On désire que le nombre choisi soit un entier naturel non nul.
function y=f(x);
y=x/2;
endfunction
n=input("Choisir un entier naturel n non nul : ");
Commentaires
L’affichage des messages est nécessaire lorsque l’algorithme est complexe ou qu’il
va être exécuté par quelqu’un qui ne l’a pas conçu.
Affichage d’un message
On désire que le nombre choisi soit un entier naturel non nul.
function y=f(x);
y=x/2;
endfunction
n=input("Choisir un entier naturel n non nul : ");
afficher("Image de n par la fonction f : "+string(f(n)))
Commentaires
L’affichage des messages est nécessaire lorsque l’algorithme est complexe ou qu’il
va être exécuté par quelqu’un qui ne l’a pas conçu.
Téléchargement