Algorithmie

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
LeJeu
Membre Irrationnel
Messages: 1142
Enregistré le: 24 Jan 2010, 21:52

par LeJeu » 29 Oct 2012, 21:44

ExarKun a écrit: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 !


Tu peux toujours donner ton algo sous algoBox ?



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

par ExarKun » 29 Oct 2012, 21:47

LeJeu a écrit:Tu peux toujours donner ton algo sous algoBox ?

Je ne connait pas AlgoBox.

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 29 Oct 2012, 21:53

slt,

il est important de bien montrer que l'on ne confond pas vecteur, tableau et variable.

vecteur et tableau c'est pareil.

ou mémoriser les termes d'une suite laisse à penser que la notion algorithmique de variable n'est pas maitrisée .

il est demandé d'afficher la chaine, donc on peut très bien vouloir stocker la liste.
la vie est une fête :)

LeJeu
Membre Irrationnel
Messages: 1142
Enregistré le: 24 Jan 2010, 21:52

par LeJeu » 29 Oct 2012, 22:02

fatal_error a écrit:slt,


vecteur et tableau c'est pareil.


il est demandé d'afficher la chaine, donc on peut très bien vouloir stocker la liste.


d'accord sur les deux points .

Mais perso si je peux éviter je ne stocke pas (par économie - je veux dire pas fainéantise...)

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 29 Oct 2012, 22:14

Je fais la même remarque à Fatal Error, tout ce qui concerna la diffèrence entre veceur, liste, tableau, chaine, ... concerne la programmation et l'implémentation de ces objet dans une machine et donc n'a rien avoir avec un algorithme.

la structure de données, ca concerne le pseudo-code.
Après tu peux choisir ton niveau d'abstraction, mais généralement si tu commences à parler de tableau, c'est que tu as une taille précise, si tu rentres dans ces détails, c'est mieux d'adopter le vocabulaire adapté.

Mais perso si je peux éviter je ne stocke pas (par économie - je veux dire pas fainéantise...)

ah ben je décèle pas trop tes clins d'oeil, mais je stocke pas non plus...c'est pénible à trimballer
la vie est une fête :)

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

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

fatal_error a écrit:la structure de données, ca concerne le pseudo-code.
Après tu peux choisir ton niveau d'abstraction, mais généralement si tu commences à parler de tableau, c'est que tu as une taille précise, si tu rentres dans ces détails, c'est mieux d'adopter le vocabulaire adapté.


J'oubliai de dire que je suis tout à fait d'accord. J'ai bien le même défaut que la pluspart d'entre-nous de penser immédiatement "programmation". :lol3:

Mais je crois aussi qu'il est important, au moins dans un premier temps, de faire la part des choses entre ce qui est mathématiques, algorithme, programmation et implémentation.

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

par Spinoza » 30 Oct 2012, 11:00

J'ai tenté un essai sur Algobox ... Cependant, il n'affiche ni la longueur de la chaine, ni les différentes solutions obtenues après chaque passage dans la boucle "Si...alors"
I correspond au compteur à chaque passage dans la boucle
Mais je prense que le problème est surement lors de mon changement (souligné)

Variables:
Nombre choisi est du type nombre
U terme de la suite est du type nombre
I est du type nombre
Début algorithme
LIRE Nombre choisi
I PREND LA VALEUR 0
Nombre choisi PREND LA VALEUR U terme de la suite
SI (floor((Uterme de la suite/2)== Uterme de la suite/2)) ALORS
DEBUT SI
I PREND LA VALEUR I+1
U terme de la suite PREND LA VALEUR U terme de la suite /2
FIN SI
SINON
DEBUT SINON
U terme de la suite PREND LA VALEUR 3*U terme de la suite+1
FIN SINON
AFFICHER U terme de la suite
AFFICHER I
FIN ALGO

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

par Dlzlogic » 30 Oct 2012, 13:53

Bonjour,
Juste un petit message pour parler de cette conjecture.
Il est vrai que la longueur de la chaine converge rapidement. Mais ça on le savait déjà.
Par contre, il apparait que certaines longueurs de chaine sont beaucoup plus rares, voire inexistantes, pour certaines tranches de nombres. En gros, les résultats sont assez surprenants.

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

par C.Ret » 30 Oct 2012, 14:41

Bonjour,


Je vois que Spinoza a bien travaillé.

Pour faciliter nos échange, je numérote les ligne de son algorithme :

Code: Tout sélectionner
Variables:
----------
01  Nombre_choisi EST DU TYPE nombre
02  U_terme_de_la_suite EST DU TYPE nombre
03  i EST DU TYPE nombre

Début algorithme:
-----------------
04  LIRE Nombre_choisi
05  i PREND LA VALEUR 0
06  Nombre_choisi PREND LA VALEUR U_terme_de_la_suite
07  SI (FLOOR(U_terme_de_la_suite/2) == (U_terme_de_la_suite/2)) ALORS
08     DEBUT SI
09       i PREND LA VALEUR I+1
10       U_terme_de_la_suite PREND LA VALEUR U_terme_de_la_suite/2
11     FIN SI
12  SINON
13     DEBUT SINON
14        U_terme_de_la_suite PREND LA VALEUR 3*(U_terme_de_la_suite)+1
15     FIN SINON
16  AFFICHER U_terme_de_la_suite
17  AFFICHER i

FIN ALGO:
---------


C'est un bon début.

Ce qui est très bien, c'est qu'il y a au centre de cet algo le test de parité (j'ai corrigé les erreurs de parenthèsage).
Ce qui est bête avec Algo-Box c'est que l'on ne peut pas faire quelque chose de plus nature, du style :
Code: Tout sélectionner
     SI  U_terme_de_la_suite/2 EST pair  ALORS
            U_terme_de_la_suite PREND LA VALEUR U_terme_de_la_suite/2
    SINON
           U_terme_de_la_suite PREND LA VALEUR 3*(U_terme_de_la_suite)+1
    FIN SI/SINON

C'est bien plus lisible.

Ce qui est bien aussi c'est qu'au début de l'algorithme on demande la valeur du Nombre Choisi et à la fin on affiche le nombres déléments de la suite (la variable i).

Mais, il y a trois choses qui ne vont pas :
- 1 - C'est pas grave, juste une erreur de compréhension de la notation, à la ligne 06, il faut inverser les terme; c'est le terme de la suite qui doit être initialisé avec le nombre choisi. Pas l'inverse !

- 2 - la seconde est aussi un détail ; le compteur d'élément (la varaible i) ; c'est bien de cette façon que l'on va compter le élement de la liste. Mais l'opération de comptage n'est pas au bon endroit, tel que placé, le compteru n'est incrémenter que lorsque le terme de la suite est pair !

Or on doit compter tous les éléments, pair et impair. Il faut donc placer cette opération ailleurs dans l'algorithme. A l'extérieur du test.

- 3 - dernière est la plus grave, tel qu'il est écrit, cet algorithme ne calcule qu'un seul terme de la suite.
Il manque la boucle, celle qui permet de répéter les opérations pour tous les terme de la suite et arrêter le processus lorsque l'on arrive à 1 !

Image

Pour tenter d'aider, j'ai dessiné l'organigramme correspondant à cet algorithme et à coté l'organigramme auquel je m'attendais.


Image

Est-il possible de corriger et modifier l'algorithme afin qu'il correspond à l'organigramme ci-dessus ?

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

par Dlzlogic » 30 Oct 2012, 14:46

Spinoza a écrit:J'ai tenté un essai sur Algobox ... Cependant, il n'affiche ni la longueur de la chaine, ni les différentes solutions obtenues après chaque passage dans la boucle "Si...alors"

Bonjour,
D'abord "si ... alors" n'est pas une boucle, c'est une condition.
Une boucle, c'est "on recommence jusqu'à ce que telle condition n'est pas remplie"
Cette séquence avec AlgoBox est illisible. Il faut mettre des espaces en début de ligne pour isoler les séquences.

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

par Dlzlogic » 30 Oct 2012, 14:55

Bonjour C.Ret,
Décidément, on se croise.
J'avoue que je ne comprends pas l'intérêt de AlgoBox. Ou bien on écrit son algorithme à la main, sur un papier, ou bien, on l'écrit dans le langage qu'on a adopté. Bien sûr de préférence on aura écrit l'algorithme avant. Pourquoi une étape intermédiaire ?
En d'autres termes, la première étape est de la réflexion pure, de la création, la seconde l'art de traduire une logique en langage de développement.

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

par C.Ret » 30 Oct 2012, 15:42

Je partage le même avis sur cet Algo-Box qui est plus perturbant qu'autre-chose.

J'ai moi aussi était très déçu en installant cette application et je suis tombé de haut en voyant ce que cela fait. Effectivemetn, il n'y a aucun intérêt, sauf peut-être d'avoir un pseudo-language informatique libre de droits.

Car pour l'Education nationale, comment demander à des éléves de programmer dans un language sans avoir à en payer les droits d'utilisation ?

De notre temps, nous faisions l'algorithme sur papier en "langage naturel", éventellemtn un organigramme et nous passion à la programmation (PASCAL, BASIC, ...) peu importe.

Les deux étapes sont bien distinctes, l'algorithme doit permettre de mettre en ordre rigoureuse, clair et précis le déroulemetn des opérations pour arriver aux résultats souhaités.

Alors que la programmation est l'adaptation et le codage de l'algorithme en tenant compte des limite de la machine utilisée (ou de l'environnement de programmation).

Autant je comprend l'intérêt de la première étape pour former l'esprit de nos jeunes apprentis, autant je suis perplexe et surpris quand je vois l'outil imposé qui clairement est une application de pseudo-langage, pseudo-programmation !!!??? :mur:

Demander de faire un shema, un organigramme (=shéma avec des flèches) ou un petit texte doit être hors de porté des étudiants actuels !!?
Comprends pas.

EDIT:
Tout cela m'a donné l'idée de proposer un excercice de programmation à Fatal_Error, LeJeu et les autres fans de nouvelles technoligies :

L'algorithme peut aussi être présenté de cette façon; on trouve au centre un test qui n'est pas binaire, met qui propose trois issues, pair, impair ou n=1 .
Difficile de transcrire cette organigramme directement dans un langage qui fait la distinction entre boucle et test uniquement booléen !?

Image

Tout cela sans prétention, autre que de chercher à illustrer la distinction que je fais entre un algorithme et un programme.


P.S.: Je viens de trouver où est le mal entendu avec Algo-BOX, mes organigramme sont bel et bien des algorithmes-sous-forme-de -boite.

Alors que Algo-Box devrais s'appeler progr-text car il n'y a d'une part aucun moyen de dessiner sous forme de shéma l'algorithme et en plus les auteurs confondent allégrement algortihmie et Programmation : pour preuve la première ligne du tutorial

Objectif de l'algorithmique : obtenir d'une machine (ordinateur, calculatrice, robot,...) qu'elle fasse certaines taches à notre place.


C'est excatement mot, pour mot la définition de la programmation.
Notre analyse est donc bonne, Algo-Box est une application d'apprentissage de la programmation et n'a rien à voir avec les algorithmes, qu'ils soient algorithme de calculs, de classement, de montage, d'organisation, de transformation ou de production...

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

par Dlzlogic » 30 Oct 2012, 17:17

Au moins, on est déjà deux à être d'accord sur la même chose. :marteau:

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 30 Oct 2012, 19:40

les auteurs confondent allégrement algortihmie et Programmation : pour preuve la première ligne du tutorial

Citation:
Objectif de l'algorithmique : obtenir d'une machine (ordinateur, calculatrice, robot,...) qu'elle fasse certaines taches à notre place.


l'objectif d'un algorithme c'est qu'on puisse exécuter le processus de manière automatique.

après que ton algo tu l'écrives en C, en pseudo code ou en francais...c'est la programmation, ecrire pour que la machine comprenne, mais les taches que la machines doit faire c'est quand même l'algorithmie :D

Ils auraient pe du écrire "décrire les taches"..., mais bon, c'est plus aguicheur...

En revanche, je suis complètement d'accord qu'algobox c'est de la m. Mais bon, ca me rappèle les légo mindstorm avec leur IHM à deux balles, ca fait plus convivial ... (même si on s'en arrache vite les cheveux)
Sinon, je suis également d'accord que ca devrait etre abordé en SI (cours de techno)
la vie est une fête :)

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

par Dlzlogic » 31 Oct 2012, 12:22

Bonjour,
Si j'étais prof et si je devais proposer un exercice d'algorithmie je ferais un énoncé comme ceci :
Réaliser un algorithme qui permette de calculer de résultat d'une division, quotient et reste, selon la méthode manuelle enseignée en primaire. (durée 10 minutes)
Le même algorithme sera à faire en DM avec des nombres décimaux.

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

par Spinoza » 01 Nov 2012, 19:39

Bonsoir,
J'ai refait l'expérience avec les changements que vous m'avez proposé. Merci pour l'organigramme car au niveau compréhension, cela m'a vraiment aidé ... :)
Cependant mon algorithme ne me donne pas ce dont j'ai besoin soit : La chaine des entiers et la longueur de la chaine ... :hum:

Voici l'algorithme modifié:
1 VARIABLES
2 Nombre_choisi EST_DU_TYPE NOMBRE
3 U_terme_de_la_suite EST_DU_TYPE NOMBRE
4 I EST_DU_TYPE NOMBRE
5 DEBUT_ALGORITHME
6 LIRE Nombre_choisi
7 I PREND_LA_VALEUR 0
8 U_terme_de_la_suite PREND_LA_VALEUR Nombre_choisi
9 TANT_QUE (Nombre_choisi<1) FAIRE
10 DEBUT_TANT_QUE
11 I PREND_LA_VALEUR I+1
12 SI (floor(U_terme_de_la_suite/2)==(U_terme_de_la_suite/2)) ALORS
13 DEBUT_SI
14 U_terme_de_la_suite PREND_LA_VALEUR U_terme_de_la_suite/2
15 FIN_SI
16 SINON
17 DEBUT_SINON
18 U_terme_de_la_suite PREND_LA_VALEUR 3*(U_terme_de_la_suite)+1
19 FIN_SINON
20 FIN_TANT_QUE
21 AFFICHER U_terme_de_la_suite
22 AFFICHER I
23 FIN_ALGORITHME

LeJeu
Membre Irrationnel
Messages: 1142
Enregistré le: 24 Jan 2010, 21:52

par LeJeu » 01 Nov 2012, 19:50

[quote="Spinoza"][/quote]

Quelle horreur ... il faut tabuler/ indenter !!! sinon c'est incompréhensible
Sur ce forum : les balises code conservent la mise en forme

Code: Tout sélectionner
1 VARIABLES
2     Nombre_choisi EST_DU_TYPE NOMBRE
3     U_terme_de_la_suite EST_DU_TYPE NOMBRE
4     I EST_DU_TYPE NOMBRE
5 DEBUT_ALGORITHME
6     LIRE Nombre_choisi
7     I PREND_LA_VALEUR 0
8     U_terme_de_la_suite PREND_LA_VALEUR Nombre_choisi

9     TANT_QUE (Nombre_choisi<1) FAIRE
10    DEBUT_TANT_QUE
11       I PREND_LA_VALEUR I+1
12       SI (floor(U_terme_de_la_suite/2)==(U_terme_de_la_suite/2)) ALORS
13       DEBUT_SI
14           U_terme_de_la_suite PREND_LA_VALEUR U_terme_de_la_suite/2
15       FIN_SI
16       SINON
17       DEBUT_SINON
18           U_terme_de_la_suite PREND_LA_VALEUR 3*(U_terme_de_la_suite)+1
19       FIN_SINON
20    FIN_TANT_QUE

21     AFFICHER U_terme_de_la_suite
22     AFFICHER I
23 FIN_ALGORITHME

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

par Dlzlogic » 01 Nov 2012, 19:56

Bonjour,
Dans votre boucle TANT_QUE, le test est fait sur "Nombre_choisi" et je ne vois pas où vous le modifiez.
Pourquoi le testez-vous "<1", la conjecture prévoit "égal" 1.
A part ça, comme je ne connais pas la syntaxe il y peut-être d'autres fautes que je n'ai pas vues.

LeJeu
Membre Irrationnel
Messages: 1142
Enregistré le: 24 Jan 2010, 21:52

par LeJeu » 01 Nov 2012, 19:57

9 TANT_QUE (Nombre_choisi<1) FAIRE

C'est marrant ... c'est le test
Tant que ( ???)
que je te proposais de trouver

le test n'est pas bon .. Nombre_choisi ne varie pas ....
ton algo doit boucler ?

[edit] non ton algo sort de la boucle tout de suite ...

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

par Spinoza » 01 Nov 2012, 21:03

Pardon pour la présentation ...
Je ne vois pas comment modifier Nombre_choisi pour le faire varier :hum:
C'est vrai, c'est vrai ...

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

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

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