Auteur Sujet: Programmation : Le GOTO c'est le maaaaaaal  (Lu 51228 fois)

0 Membres et 1 Invité sur ce sujet

corrector

  • Invité
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #120 le: 09 mars 2015 à 17:47:26 »
Comment TOI tu ferais ça?

tontonrobert

  • Abonné Bbox adsl
  • *
  • Messages: 188
  • VDSL2 - Bbox
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #121 le: 09 mars 2015 à 18:31:18 »
Avec un clavier.

corrector

  • Invité
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #122 le: 09 mars 2015 à 19:35:54 »
C'est avec le cerveau qu'il faut réfléchir tonton!

Normal que tu n'arrives à rien si tu penses avec le clavier!

Macharius

  • Réseau FTTH Europ' Essonne (91)
  • Abonné Bbox adsl
  • *
  • Messages: 183
  • La Membrolle sur Choisille (37)
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #123 le: 09 mars 2015 à 19:38:46 »
Avec un clavier.

Exactement ! Je ne réinvente pas la roue quand d'autres l'ont fait avant moi et souvent d'une meilleure façon que je ne l'aurais fait moi-même !

Je ne vois pas en quoi mon implèmentation changerait quoi que ce soit si ce n'est de risquer d'être moins performant ! Et sinon au passage une bête boucle for sur le tableau avec un If pour tester et un break pour stopper les itérations une fois un élèment trouvé marcherait très bien (ce qui ne doit pas être tres éloigné de l'implementation réelle de la chose et qui doit être de mémoire ce que kgersen a proposé en C)

corrector

  • Invité
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #124 le: 09 mars 2015 à 19:48:35 »
Avec un break, on retombe sur le problème du goto!

Macharius

  • Réseau FTTH Europ' Essonne (91)
  • Abonné Bbox adsl
  • *
  • Messages: 183
  • La Membrolle sur Choisille (37)
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #125 le: 09 mars 2015 à 19:51:50 »
Quel problème ?

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 480
  • Malissard (26)
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #126 le: 09 mars 2015 à 20:17:35 »


C'est sale car tu sors de la boucle avant la condition de fin.

En gros, tu devrais faire un while et intégrer ton test dans la condition.

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 104
  • Paris (75)
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #127 le: 09 mars 2015 à 20:39:45 »
Effectivement d'ou le 'crado' (j'ai mis le 'break' pour faire de la provoc:))

    for (idx = 0 ; idx < size; idx++ )
    {
        if (monTableau[idx] < 0)
        {
            trouve = true;
            break;
        }
    }

alors que, dogmatiquement on ferais:

    idx = 0;
    while((idx <size) && (monTableau[idx] >= 0)) idx++;
    // si idx == size on a pas trouvé de negatif

ce qui  est plus propre (ca "se lit" presqu'en francais et il n'y a pas le booléen) et plus optimisable (certains optimiseur n'essaient même pas  quand ils rencontrent un break ou un goto).

corrector

  • Invité
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #128 le: 09 mars 2015 à 20:49:27 »
Quel problème ?
Ce n'est pas SESE (Single Entry Single Exit).

Ce n'est pas "structuré".

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 480
  • Malissard (26)
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #129 le: 09 mars 2015 à 20:51:38 »
Et sortir d'un for comme un malpropre casse le prédicteur de boucle : https://fr.wikipedia.org/wiki/Pr%C3%A9diction_de_branchement#Pr.C3.A9dicteur_de_boucle

corrector

  • Invité
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #130 le: 09 mars 2015 à 20:58:31 »
Effectivement d'ou le 'crado' (j'ai mis le 'break' pour faire de la provoc:))

    for (idx = 0 ; idx < size; idx++ )
    {
        if (monTableau[idx] < 0)
        {
            trouve = true;
            break;
        }
    }

alors que, dogmatiquement on ferais:

    idx = 0;
    while((idx <size) && (monTableau[idx] >= 0)) idx++;
    // si idx == size on a pas trouvé de negatif

ce qui  est plus propre (ca "se lit" presqu'en francais et il n'y a pas le booléen) et plus optimisable (certains optimiseur n'essaient même pas  quand ils rencontrent un break ou un goto).
Quelles optimisations deviennent impossibles avec un break ou un goto?

Macharius

  • Réseau FTTH Europ' Essonne (91)
  • Abonné Bbox adsl
  • *
  • Messages: 183
  • La Membrolle sur Choisille (37)
Programmation : Le GOTO c'est le maaaaaaal
« Réponse #131 le: 09 mars 2015 à 21:47:06 »
Ah oui le while ne m'est pas venu a l'esprit tout de suite... C'est bien pour ça que j'utilise ce qui existe déjà plutot que de faire des trucs moches ;)