IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Cobol Discussion :

[AS/400] Erreur dans une donnée décimale


Sujet :

Cobol

  1. #21
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    Je souscris à ce qui est dit au dessus : avec tes GOTO partout, ton programme, c'est un illisible plat de spaghettis. Ca n'est pas un hasard si après des années à se casser le nez sur du code illisible, nos grands anciens on banni le GO TO de leur existence. Et l'ont aussi interdit aux petits jeunes. à raison.

    Quiconque a, comme moi, eu le "privilège" de faire de la rétrodoc sur un vieux code avec 1 GOTO toutes les 5 lignes sur 4000 lignes ne peut que pousser un soupir de dégout en voyant ça. Je sais bien que tu débutes, et que tu fais au mieux avec ce que l'on t'a appris, mais franchement, évite. Tu vas te perdre toi-même(et les autres avec).
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  2. #22
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    Bon, je retravaille pour structurer tout ça.....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
           Saisi.
               if i > 5 go to FinSaisi.
               display "Donner l'élément " I.
    
               accept tab(i).
    
               add 1 TO i.
    
               GO TO Saisi.
           FinSaisi.
    à remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
           DEBUT.
               PERFORM VARYING I FROM 1 BY 1
                 UNTIL I > 5
               display "Donner l'élément " I
               accept tab(i)
               END-PERFORM
               .
    Simple, efficace, lisible. Les autres ont sans doute encore mieux, mais c'est déjà bien plus efficace.

    pour la suite, il te faut un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
               PERFORM VARYING I FROM 5 BY -1
                 UNTIL I < 1
                 PERFORM VARYING J FROM 1 BY 1
                   UNTIL J = I
                    IF TAB(J) > TAB(J+1)
                      PERFORM PERMUT
                         THRU PERMUT-FIN
                    END-IF
                 END-PERFORM
               END-PERFORM
               .
    (.../...)
           PERMUT.
               Move zero to T
               Move tab(j) to T
               Move tab(j + 1) to tab(j)
               Move T to tab(j + 1)
               .
           PERMUT-FIN.
               EXIT.
    (.../...)
    attention : code non testé non débuggé. Mais c'est le genre de format que je fais et que je vois en milieu professionel. Enfin, le meilleur de ce que je vois..... Après, reste à affiner et à debugger, mais ce genre de structure te permets :

    1) de visualiser la structure de ton raisonnement - les deux boucles imbriquées de ton algo sont imbriquées dans mon code. Dans ton code, elles sont déconnectées - ce qui le rend plus difficille à comprendre.

    2) de faire des blocs logiques de code. J'ai un paquet pour les boucles, un paquet pour la permutation..... et j'en ajouterais sans doute un pour la finc du programme.



    EDIT :

    au sujet du style
    1) je mets un seul point par paragraphe. à la fin, tout seul. Ca permet de rajouter une boucle extérieure sans avoir de surprises à l'execution. Ca a aussi plein de défauts - et tu n'est pas obligé de suivre l'exemple. Voir le standard de ta boite(si il y en a un). Mais je le fais systématiquement depuis quelques mauvaises surprises en maintenance.

    2)Je mets tout en majuscules. Là ou je bosse, c'est standard. On peut aussi tout mettre en minuscules, ou établir une règle précise(genre différencier mots-clefs et variables). Tu sembles avoir mélangé un peu tout, et ça n'aide pas à la lecture de ton code.

    j'insiste encore sur l'importance de la lisibilité du code. Parcequ'un jour ou l'autre, tu reviendras sur un de tes programmes, et que tu auras beaucoup de mal à le faire évoluer si il n'est pas parfaitement lisible.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  3. #23
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Points : 419
    Points
    419
    Par défaut
    Citation Envoyé par el_slapper Voir le message

    attention : code non testé non débuggé.
    Effectivement, car au niveau des limites de boucles, tu aurais des problèmes (justement celui qu'on soupçonnait dans le code de Mehdi501).

    Pour le reste, j'appuie complètement.

    Juste un truc ou deux :
    • éviter I, J, K comme noms de variables (pour les recherches dans le code, c'est vraiment galère) ;
    • mieux indenter le code (par exemple dans le premier PERFORM) ;
    • dans PERMUT, le 1er MOVE ne sert à rien.

  4. #24
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    ...j'ai juste repris son code, hein, j'ai pas cherché l'erreur d'algo. J'ai juste repris ce qu'il a fait pour le rendre "lisible". Après, le débogage, c'est une autre étape. Et le nommage des données, d'accord avec toi - CPT-PRIMAIRE et CPT-SECONDAIRE sonnent mieux que I et J;

    Reprenons.

    TAB est rempli de 1 à 5
    Je fais varier I de 5 à 1.
    Je fais varier J de 1 à I-1 (je sors quand J = I); donc de 1 à 4
    Je tape dans TAB(J) et TAB(J+1)
    L'erreur n'est pas là. Par contre, je ne devrais pas faire descendre I jusqu'à 1. Le deuxième perform pars sans doute dans les limbes quand I = 1.....

    *--------------------------------------------------------*

    Par contre, je viens de me relire, je ne vois pas l'erreur d'indentation que tu signales.....Je suis toujours preneur d'améliorations.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  5. #25
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Points : 419
    Points
    419
    Par défaut
    Salut El_slapper,

    Au temps pour moi en ce qui concerne les indices, j'ai lu trop vite et pas vu le "=" sur le I = J. J'ai pris l'habitude de toujours coder les fins de boucles en > ou >=, car ça permet de gérer de manière homogène les cas limites, comme par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PERFORM VARYING WS-IND1
       FROM +1 BY +1
      UNTIL WS-IND1 > NB-ELEM
    ...
    END-PERFORM
    dans le cas où NB-ELEM = 0.

    Pour ce qui est de l'indentation, c'est juste que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
           DEBUT.
               PERFORM VARYING I FROM 1 BY 1
                 UNTIL I > 5
                  display "Donner l'élément " I
                  accept tab(i)
               END-PERFORM
               .
    est à mon avis mieux que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
           DEBUT.
               PERFORM VARYING I FROM 1 BY 1
                 UNTIL I > 5
               display "Donner l'élément " I
               accept tab(i)
               END-PERFORM
               .
    Mais tout ça ne règle pas ton problème, Mehdi501. As-tu fait les DISPLAY qui permettraient de mieux localiser l'origine de l'anomalie ?

  6. #26
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Citation Envoyé par fremen167 Voir le message
    ...
    J'ai pris l'habitude de toujours coder les fins de boucles en > ou >=, car ça permet de gérer de manière homogène les cas limites, comme par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PERFORM VARYING WS-IND1
       FROM +1 BY +1
      UNTIL WS-IND1 > NB-ELEM
    ...
    END-PERFORM
    dans le cas où NB-ELEM = 0.

    Pour ce qui est de l'indentation, c'est juste que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
           DEBUT.
               PERFORM VARYING I FROM 1 BY 1
                 UNTIL I > 5
                  display "Donner l'élément " I
                  accept tab(i)
               END-PERFORM
               .
    est à mon avis mieux que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
           DEBUT.
               PERFORM VARYING I FROM 1 BY 1
                 UNTIL I > 5
               display "Donner l'élément " I
               accept tab(i)
               END-PERFORM
               .
    ...
    Bonjour à tous.

    Parfaitement d'accord. Perso c'est que j'aurais fait. Ca saute aux yeux du premier coup d'oeil. Reste le pb des majuscules/minuscules à régler.

  7. #27
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Toc toc ! Mehdi501 ! tu es là ?

    Tu n'as répondu à nos questions.

  8. #28
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 27
    Points : 23
    Points
    23
    Par défaut
    Bonjour
    J'ai tous modifié mais c'est le même message d'erreur merci pour vos aide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    DATA DIVISION.
          *==============
          *
           WORKING-STORAGE SECTION.
          *- - - - - - - - - - - -
           01 TABLEAU.
               02 TAB OCCURS 5 PIC 99 VALUE 0.
           77 I PIC 99 VALUE 0.
           77 J PIC 99 VALUE 0.
           77 T PIC 99 VALUE 0.
          *----------------------------------------------------------------
           PROCEDURE DIVISION.
           SAISI.
               PERFORM VARYING I FROM 1 BY 1
               UNTIL I > 5
               DISPLAY "Donner l'élément " I
               ACCEPT TAB(I)
               END-PERFORM.
           TRI.
               PERFORM VARYING I FROM 4 BY -1
               UNTIL I <= 1
               PERFORM VARYING J FROM 1 BY 1
               UNTIL J > I
               IF TAB(J) > TAB(J + 1)
               PERFORM PERMUT
               THRU PERMUT-FIN
               END-IF
               END-PERFORM
               END-PERFORM.
           AFFICHE.
               PERFORM VARYING I FROM 1 BY 1
               UNTIL I > 5
               DISPLAY TAB(I)
               END-PERFORM.
           FIN.
               ACCEPT I.
               STOP RUN.
           PERMUT.
               MOVE TAB(J) TO T
               MOVE TAB(J + 1) TO TAB(J)
               MOVE T TO TAB(J + 1).
           PERMUT-FIN.
               EXIT.
    Message 'MCH1202', objet programme 'ZTM006'

  9. #29
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Points : 419
    Points
    419
    Par défaut
    Citation Envoyé par mehdi501 Voir le message
    Bonjour
    J'ai tous modifié mais c'est le même message d'erreur merci pour vos aide.
    [...]
    Message 'MCH1202', objet programme 'ZTM006'
    Peux-tu essayer comme ça et nous donner les DISPLAY ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    DATA DIVISION.
          *==============
          *
           WORKING-STORAGE SECTION.
          *- - - - - - - - - - - -
           01 TABLEAU.
               02 TAB OCCURS 5 PIC 99 VALUE 0.
           77 I PIC 99 VALUE 0.
           77 J PIC 99 VALUE 0.
           77 T PIC 99 VALUE 0.
          *----------------------------------------------------------------
           PROCEDURE DIVISION.
           DEBUT.
               PERFORM SAISIE
               DISPLAY "TABLEAU : " TABLEAU
               PERFORM AFFICHE
               PERFORM TRI
               DISPLAY "TABLEAU : " TABLEAU
               PERFORM AFFICHE
               PERFORM FIN
               .
           SAISIE.
               PERFORM VARYING I FROM 1 BY 1
               UNTIL I > 5
                  DISPLAY "Donner l'élément " I
                  ACCEPT TAB(I)
               END-PERFORM.
           TRI.
               PERFORM VARYING I FROM 4 BY -1
               UNTIL I <= 1
                  PERFORM VARYING J FROM 1 BY 1
                  UNTIL J > I
                     IF TAB(J) > TAB(J + 1)
                        PERFORM PERMUT
                        THRU PERMUT-FIN
                     END-IF
                     END-PERFORM
               END-PERFORM.
           AFFICHE.
               PERFORM VARYING I FROM 1 BY 1
               UNTIL I > 5
                  DISPLAY "TAB (" I ") : " TAB(I)
               END-PERFORM.
           FIN.
               ACCEPT I.
               STOP RUN.
           PERMUT.
               MOVE TAB(J) TO T
               MOVE TAB(J + 1) TO TAB(J)
               MOVE T TO TAB(J + 1).
           PERMUT-FIN.
               EXIT.
    On pourra peut-être y voir quelque chose...

  10. #30
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 27
    Points : 23
    Points
    23
    Par défaut
    Messages du programme

    G
    Message 'MCH1202', objet programme 'ZTM006', G
    Message 'MCH1202', objet programme 'ZTM006', G
    Message 'MCH1202', objet programme 'ZTM006', G
    Message 'MCH1202', objet programme 'ZTM006', G
    40
    50
    60
    70
    80

    Comme vous remarquez le résultat est correct !

  11. #31
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Medi501, regarde la discussion précédente :

    http://www.developpez.net/forums/sho...d.php?t=550459

    Quand le message sort, mets le curseur dessus et fais "F1" et regarde sur quelle instruction tu as l'erreur, puis regarde à quelle ligne source correspond ce n° d'instruction.

    Ou alors affiche tes variables avec le debug.

  12. #32
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Mehdi501?

    Si tu es en train de saisir de l'alphanum dans tes éléments, tu auras obligatoirement le MCH1202 au moment où tu vas utiliser un de ces éléments. Dans la comparaison du tri par exemple.

  13. #33
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Points : 419
    Points
    419
    Par défaut
    Citation Envoyé par mehdi501 Voir le message
    Messages du programme

    G
    Message 'MCH1202', objet programme 'ZTM006', G
    Message 'MCH1202', objet programme 'ZTM006', G
    Message 'MCH1202', objet programme 'ZTM006', G
    Message 'MCH1202', objet programme 'ZTM006', G
    40
    50
    60
    70
    80

    Comme vous remarquez le résultat est correct !
    Mais pourquoi n'as-tu pas pris le code que je t'ai modifié ? Mes DISPLAY sont plus complets et permettraient de voir le contenu global du tableau.

  14. #34
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    J'ai eu un peu de temps libre et un accès à un AS400. Je me suis permis de tester les différentes versions et je n'ai eu aucun message MCH1202 quand je saisis bien du numérique dans les éléments du tableau et le tri marche bien dans la toute 1ère version mais pas les suivantes.
    Dans les versions proposées par mes amis fremen167 et el-slapper il faudrait remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TRI.
               PERFORM VARYING I FROM 4 BY -1
               UNTIL I <= 1
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TRI.
               PERFORM VARYING I FROM 4 BY -1
               UNTIL I <= 0

  15. #35
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 27
    Points : 23
    Points
    23
    Par défaut
    Bonjour
    Les valeurs inroduites sont des numériques.
    J'ai changé la condition until i<=1 par until i<=0 mais ce même message d'erreur.

    Message . . . . : Message 'MCH1202', objet programme 'ZTM006', bibliothèque
    'ABDENNAD' (C D F G).
    Cause . . . . . : Le message 'MCH1202' a été détecté à l'instruction COBOL 20
    du programme COBOL 'ZTM006' dans l'objet programme 'ZTM006' de la
    bibliothèque 'ABDENNAD'.
    Que faire . . . : Entrez G afin de poursuivre l'exécution du programme à
    l'instruction MI suivante, C si vous ne souhaitez pas de cliché, D si vous
    souhaitez un cliché des identificateurs COBOL ou F pour effectuer un cliché
    des identificateurs COBOL et des informations fichier en même temps. Le
    texte du message 'MCH1202' est le suivant : 'Erreur dans une donnée
    décimale.'
    Réponses possibles . . . . . . . . . . . . . . . :
    merci

  16. #36
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 27
    Points : 23
    Points
    23
    Par défaut
    Merci pour vos aides
    puisque la variable est déclaré PIC 99, il faut mettre 01 et non pas 1 seulement.
    donc j'ai exécuté le programme en mettant des valeurs sur 2 chiffres et ça marche.
    Merci

  17. #37
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    Alors merci de mettre le sujet à "résolu".

    Par contre, je cherche pourquoi il faut faire descendre I jusqu'à 1. Je suppose que c'est une subtilité de l'algorithme.....
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  18. #38
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Points : 419
    Points
    419
    Par défaut
    Citation Envoyé par el_slapper Voir le message
    Alors merci de mettre le sujet à "résolu".

    Par contre, je cherche pourquoi il faut faire descendre I jusqu'à 1. Je suppose que c'est une subtilité de l'algorithme.....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
           TRI.
               PERFORM VARYING I FROM 4 BY -1
               UNTIL I <= 1
                  PERFORM VARYING J FROM 1 BY 1
                  UNTIL J > I
                     IF TAB(J) > TAB(J + 1)
                        PERFORM PERMUT
                        THRU PERMUT-FIN
                     END-IF
                     END-PERFORM
               END-PERFORM.
    Quand I = 1, en fait, tu traites les deux premier caractères. Donc avec UNTIL I <= 1, la dernière valeur de I traitée est 2.

    Regarde avec les valeurs :

    5 4 3 2 1

    • 1ère passe : 4 3 2 1 5 (I = 4)
    • 2ème passe : 3 2 1 4 5 (I = 3)
    • 3ème passe : 2 1 3 4 5 (I = 2)


    ... et si on va jusqu'à I = 1

    • 4ème passe 1 2 3 4 5

  19. #39
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    OK, merci. Je ne m'étais pas totalement plongé dans l'algo, j'avais focalisé ma réponse sur la présentation.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  20. #40
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Points : 419
    Points
    419
    Par défaut
    Citation Envoyé par el_slapper Voir le message
    OK, merci. Je ne m'étais pas totalement plongé dans l'algo, j'avais focalisé ma réponse sur la présentation.
    Pas de quoi

    J'avoue que moi aussi, je ne l'avais pas corrigé tout de suite dans ton code car je n'avais pas vérifié en détail. Heureusement qu'Hédhili veille au grain !!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/12/2007, 11h23
  2. Réponses: 2
    Dernier message: 11/08/2004, 15h01
  3. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20
  4. recherche d'une chaine de caractère dans une données text
    Par jdeheul dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 17/06/2004, 16h35
  5. [Thread] Erreur dans une classe interne
    Par totof2308 dans le forum Général Java
    Réponses: 5
    Dernier message: 03/06/2004, 08h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo