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.