Algorithmie

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
Spinoza
Membre Naturel
Messages: 36
Enregistré le: 29 Oct 2012, 10:34

Algorithmie

par Spinoza » 29 Oct 2012, 12:11

Bonjour,

J'ai un problème d'algorithmie à résoudre mais je n'en ai jamais fait...
On considère un nombre entier naturel n
En partant de n, on construit une chaîne de nombres de la façon suivante :
• Si un nombre k de la chaîne est paire, le suivant s'obtient en divisant k par 2
• Si un nombre k de la chaîne est impaire, le suivant s'obtient en multipliant k par 3 et en ajoutant 1
La longueur de la chaîne est le nombre d'entiers nécessaires pour atteindre le nombre 1
Exemple : n=20 : 20-10-5-16-8-4-2-1 est une chaine de longueur 8

Questions :
Écrire l'algorithme en langage naturel qui demande à l'utilisateur un entier et qui affiche la chaine de cet entier et sa longueur éventuelle
Mettre cette algorithme sous Algobox


Merci d'avance de votre lecture
Spinoza



DamX
Membre Rationnel
Messages: 630
Enregistré le: 02 Oct 2012, 14:12

par DamX » 29 Oct 2012, 13:04

Hello,

Ca ne va pas t'avancer dans ton problème, mais pour info, la suite dont fait état ton énoncé s'appelle la suite de Syracuse, et la conjecture du même nom affirme qu'elle atteindra toujours 1, quelque soit le n choisi initialement (d'où la possibilité de définir la "longueur" de ta chaine, Meme si la conjecture n'a jamais été démontrée).

En ce qui concerne ton problème, ce n'est plus vraiment des maths. D'ailleurs Qu'entends tu par "langage naturel" ? C'est du pseudo-langage ? "Si n est pair alors n<-n/2" ce genre là ?

Damien

ExarKun
Membre Naturel
Messages: 46
Enregistré le: 28 Sep 2008, 01:28

par ExarKun » 29 Oct 2012, 13:11

D'ailleurs si, après ton exo, tu arrives à démontrer cette propriété tu deviendras très riche ;-)

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 29 Oct 2012, 13:51

Bonjour Spinoza,
Qu'est-ce que c'est pour vous un algorithme ?

Spinoza
Membre Naturel
Messages: 36
Enregistré le: 29 Oct 2012, 10:34

par Spinoza » 29 Oct 2012, 18:43

L'algoritmie pour moi correspond à de la programmation dans le but d'accéder à une certaine rapidité pour rechercher plusieurs résultats du même type...

Spinoza
Membre Naturel
Messages: 36
Enregistré le: 29 Oct 2012, 10:34

par Spinoza » 29 Oct 2012, 18:47

Damien, en ce qui concerne le langage naturel, c'est le langage papier juste avant de l'écrire sous Algobox...

ExarKun
Membre Naturel
Messages: 46
Enregistré le: 28 Sep 2008, 01:28

par ExarKun » 29 Oct 2012, 20:08

En langage naturel, ca dépend des conventions de notation de ton prof.

Est-ce que tu comprends si j'écris ça ?
Code: Tout sélectionner
EDIT : je te laisse C.RET :p

C.Ret
Membre Relatif
Messages: 497
Enregistré le: 02 Juil 2012, 13:33

par C.Ret » 29 Oct 2012, 20:14

Spinoza a écrit:L'algoritmie pour moi correspond à de la programmation dans le but d'accéder à une certaine rapidité pour rechercher plusieurs résultats du même type...


Bonjour,


En fait, c'est plus simple que cela. Il n'y a pas, dans un algorithme, de notion de rapidité, de vitesse ou de performence. De même, il peut n'i avoir qu'un seul résultat.


Plus génralement, un algorithme est une suite finie d’opérations permettant de résoudre un problème donné.

En général, on considère des opération élémentaire et on cherche à faire l'algorithme le plus clair possible afin d'éviter toute ambiguïté ou incompréhension des opérations à réalisé.

Les algorithme ne sont pas nécessairement des opération mathématique; dans l'industrie on parle aussi d'algorithmes dans le cas de traitements, de production ou d'assemblage.


Dans notre cas, l'algorithme n'a qu'un eul résultat; il consiste à partir de la valeur donnée de calculer la longueur de la suite de Syracuse générée.
=> il n'y a qu'un seul "résultaté

Dans l'excercie, il n'est pas question de proposer l'algorithme le plus performant , le plus rapide ou le plus court (D'ailleurs comment définir ces notions pour un algorithme ?? Pas évident !)


Essayons de voir ensemble comment nous pourrions composer cet algorithme.

Pour cela, je propose de décomposer ce qui se passe dans l'exemple donné.

Dans l'exemple, on considère le cas n=20 .

La suite commence donc par 20.
Pourquoi le second élément est 10 ?

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 29 Oct 2012, 20:18

Spinoza a écrit:L'algoritmie pour moi correspond à de la programmation dans le but d'accéder à une certaine rapidité pour rechercher plusieurs résultats du même type...

Je suis pas vraiment d'accord avec cette définition, la rapidité n'a rien à voir, de même que "plusieurs résultats du même type".
Un algorithme est pour moi la description des opérations élémentaires et successives pour arriver à un résultat.
En général on a des données initiales et on cherche un ensemble de valeurs. Si on veut plusieurs résultats du même type, on recommence avec un jeu de données initiales différentes.
Algorithme rime avec "logique" programmation rime avec "langage".

EDIT Bonsoir C.Ret je t'assure, j'avais pas lu ta réponse avant d'écrire le mien

C.Ret
Membre Relatif
Messages: 497
Enregistré le: 02 Juil 2012, 13:33

par C.Ret » 29 Oct 2012, 20:22

Désolé Dlzlogic nos messages se sont croisés !

Et je suis bien ravi de lire que nous somme d'accord avec la définition d'un algorithme.

P.S.: Désolé d'être intervenu pématurément, je laisse la place pour guider notre ami Spinoza[U].

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 29 Oct 2012, 20:26

C.Ret a écrit:Désolé Dlzlogic nos messages se sont croisés !

Et je suis bien ravi de lire que nous somme d'accord avec la définition d'un algorithme.

P.S.: Désolé d'être intervenu pématurément, je laisse la place pour guider notre ami Spinoza[U].

Oh, non, pas de problème, rien n'empêche de s'y mettre à deux. C'est vraiment marrant qu'on ait utilisé presque le mêmes mots, serions-nous de la même génération ? :we:

C.Ret
Membre Relatif
Messages: 497
Enregistré le: 02 Juil 2012, 13:33

par C.Ret » 29 Oct 2012, 20:28

ExarKun a écrit:En langage naturel, ca dépend des conventions de notation de ton prof.

Est-ce que tu comprends si j'écris ça ?
Code: Tout sélectionner
EDIT : je te laisse C.RET :p

Qui lui - même laisse faire Dlzlogic qui avait commencé avant nous :lol3: .

P.S.: J'ai eut le temps de lir le programme.
Juste une question, pourquoi mémoriser les élément de la suite dans un tableau ? Ce n'est pas à priori demandé. De plus, du point de vue de l'apprentissage de l'algorithmie, il est important de bien montrer que l'on ne confond pas vecteur, tableau et variable.

En algorithmie, et contrairemetn aux mathématiques, les variables changent de valeur au fur et à mesure du déroulement d'un algorithme. C'est très diffèrent des notion mathématiques.
Ainsi, comme dans cet exemple, les différent élément d'un suite peuvent très bien être pris en charge par une unique variable dans l'algorithme.

utiliser un tableau dans le programme alors qu'il n'est pas question de vecteurs ou de mémoriser les termes d'une suite laisse à penser que la notion algorithmique de variable n'est pas maitrisée .

C.Ret
Membre Relatif
Messages: 497
Enregistré le: 02 Juil 2012, 13:33

par C.Ret » 29 Oct 2012, 20:36

Dlzlogic a écrit:Serions-nous de la même génération ? :we:


Il y a de fortes chances ! :lol3:

J'ai deux fils qui ont bien du mal à me croire quand je leur explique que l'algorithmie est une science plus que centenaire et que déjà Euclide (celui de la Grèce Antique 400 ans avant J.C.) utilisait ce terme pour décrire les opérations à effectuer en géométrie et calcul.

Pour mes gamins et élèves, l'algorithmie est systèmatiquemetn liée aux ordinateurs et à l'informatiques et confondue avec la programmation ...

Alors, je suis de près les questions concernant ce sujet car je crains fort qu'il soit assez mal abordé en classe...

Pour moi, ce n'est pas aux professeurs de mathématique de faire de l'algorithmie, mais aux professeurs de technologie (ex EMT). Car c'est en technologie, sciences et techniques industrielles, que ces notions sont les plus utilisées et les plus pratiques.

Rien de tel qu'un bon algorithme de montage pour expliquer toutes ces notions au lieu d'un algo-box bancal par nature et des sujets mélant mathématiques/informatiques.

Mais bon, tachons d'aider nos jeunes amis ...

Spinoza
Membre Naturel
Messages: 36
Enregistré le: 29 Oct 2012, 10:34

par Spinoza » 29 Oct 2012, 22:00

N étant égal à 20 il va "entrer " dans l'algorithme et on peut lui appliquer la première règle soit 20 étant un nombre paire, on me divise par 2 d'où 10 ! Il me semble ...

Spinoza
Membre Naturel
Messages: 36
Enregistré le: 29 Oct 2012, 10:34

par Spinoza » 29 Oct 2012, 22:06

Vos remarques me font sourire car en géréral, les élèves de terminales ont énormément d'a priori vis a vis des algorithmes car on les étudie très vaguement en première S et beaucoup plus en terminale... Et depuis les réformes nous sommes tous inquiets qu'ils y en aient au bac :)

LeJeu
Membre Irrationnel
Messages: 1141
Enregistré le: 24 Jan 2010, 22:52

par LeJeu » 29 Oct 2012, 22:20

Spinoza a écrit:N étant égal à 20 il va "entrer " dans l'algorithme et on peut lui appliquer la première règle soit 20 étant un nombre paire, on me divise par 2 d'où 10 ! Il me semble ...


et ça papote au fond de la classe :-)

oui mais 20 n'est qu'un exemple , il faut que tu donnes la suite des opération à faire

Début de l'algo :

Code: Tout sélectionner
Demander n

Tant que ( ???)
   si
      n est pair
   alors
      n = n/2
   sinon
      n = 3n +1

   On augmente la longueur de 1

fin du tant que   
     


je te laisse trouver le tant que

LeJeu
Membre Irrationnel
Messages: 1141
Enregistré le: 24 Jan 2010, 22:52

par LeJeu » 29 Oct 2012, 22:27

LeJeu a écrit:Début de l'algo :

Code: Tout sélectionner
Demander n

Tant que ( ???)
   si
      n est pair
   alors
      n = n/2
   sinon
      n = 3n +1

   On augmente la longueur de 1

fin du tant que   
     



Ceci dit ce que j'écris est plutot du pseudo code
en langage naturel c'est plutot

"tant que le résultat n'est pas un , si le nombre est pair tu le divises par 2 et si il est impair tu le multiplies par 3 et tu ajoutes un, ce qui fait un élément de plus à la chaine" grosso-modo c'est l'énoncé !


Je pense (fort) qu'il faut que tu passes par le pseudo code pour attaquer algoBox

ExarKun
Membre Naturel
Messages: 46
Enregistré le: 28 Sep 2008, 01:28

par ExarKun » 29 Oct 2012, 22:28

C.Ret a écrit:Qui lui - même laisse faire Dlzlogic qui avait commencé avant nous :lol3: .

P.S.: J'ai eut le temps de lir le programme.
Juste une question, pourquoi mémoriser les élément de la suite dans un tableau ? Ce n'est pas à priori demandé. De plus, du point de vue de l'apprentissage de l'algorithmie, il est important de bien montrer que l'on ne confond pas vecteur, tableau et variable.

En algorithmie, et contrairemetn aux mathématiques, les variables changent de valeur au fur et à mesure du déroulement d'un algorithme. C'est très diffèrent des notion mathématiques.
Ainsi, comme dans cet exemple, les différent élément d'un suite peuvent très bien être pris en charge par une unique variable dans l'algorithme.

utiliser un tableau dans le programme alors qu'il n'est pas question de vecteurs ou de mémoriser les termes d'une suite laisse à penser que la notion algorithmique de variable n'est pas maitrisée .

Salut,

j'ai utilisé une liste (et non un vecteur) car on ne connait (à priori) pas le nombre d'éléments à stocker. Cependant il est vrai que n'ai pas utilisé les primitives usuelles de la liste.

D'autre part j'ai écrit une fonction (et non une procédure comme le suggère en effet l'énoncé), en laissant l'affichage à la responsabilité de la fonction/procédure appelante : il fallait donc toutes les valeurs de la suite.

LeJeu
Membre Irrationnel
Messages: 1141
Enregistré le: 24 Jan 2010, 22:52

par LeJeu » 29 Oct 2012, 22:33

ExarKun a écrit:Salut,

j'ai utilisé une liste (et non un vecteur) car on ne connait (à priori) pas le nombre d'éléments à stocker. Cependant il est vrai que n'ai pas utilisé les primitives usuelles de la liste.

D'autre part j'ai écrit une fonction (et non une procédure comme le suggère en effet l'énoncé), en laissant l'affichage à la responsabilité de la fonction/procédure appelante : il fallait donc toutes les valeurs de la suite.


Salut,

je comprends pas trop ce que tu veux nous dire ... à la fin - ça rentre dans AlgoBox ? ou pas ?
et quel est ton code ?

ExarKun
Membre Naturel
Messages: 46
Enregistré le: 28 Sep 2008, 01:28

par ExarKun » 29 Oct 2012, 22:41

J'ai effacé mon code suite aux messages croisés entre un de mes messages et celui de C.Ret.

Ne prenez pas en compte ces remarques pour l'exercice !

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 52 invités

cron

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite