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

avec Java Discussion :

L'équivalence de la fonction goto en java


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 32
    Par défaut L'équivalence de la fonction goto en java
    Bonjour,

    J'ai l'habitude de programmer en delphi, c'est mon premier programme en Java.
    Je veux savoir s'il y a une fonction qui permet d'arrêter à une condition donné et revenir à une instruction précis, comme la fonction goto en delphi.

    Merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 156
    Par défaut
    Aie... L'instruction "goto" c'est le mal absolu dans un langage de programmation et à ma connaissance Java ne l'implémente pas. Ce n'est pas pour rien que la plupart des langages ne le proposent pas: le risque c'est de se retrouver avec des programmes illisibles ou dont il est très difficile de suivre le fil. Et il y a toujours moyen de faire autrement (par un appel de méthode par exemple).

  3. #3
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 32
    Par défaut
    Merci neuromencien pour la réponse.
    Dans mon programme, je suis obligé de sortir du boucle à une certaine condition.
    Quel est donc cette méthode qui peut le faire?

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Tu peux sortir d'une boucle avec l'instruction break, tout simplement. Quoi qu'en général il est préférable pour la lecture de garder ta condition de sortie dans la condition de la boucle.

    Le goto est une vieille instruction qui date de l'époque spaghetti où on s'en foutais de faire sauter le programme dans tous les sens. Sur des paradigmes comme la programmation object, ce genre d'instruction n'a aucun sens car il ne serait pas possible de définir comment cette instruction marcherait tout en respectant l'objet. Quand on a besoin d'un goto, c'est qu'on a mal réfléchi sa logique . J'ai programmé quelques années en pascal puis delphi. Jamais eu besoin de goto.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 156
    Par défaut
    Pour les boucles, il est existe tout de même une notion de label, afin de pouvoir contrôler de quel niveau d'imbrication on souhaite sortir (le break arrête la boucle courante).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    loop1: for (int i=0; i<10; i++) {
       //[du code ici]
       for (int j=0; j<50;j++) {
          //[encore du code]
          if (test() == 1) {     
             break;   //ici on sort de la boucle for j
          }
          else if (test() == 2) {
               break loop1;           //ici on sort de la boucle for i
          }
       }
    }

    Il est cependant très très rare d'en avoir besoin (on peut régler ça en vérifiant les conditions de sortie dans la boucle et en jouant dessus à l'endroit où on veut sortir). Mais ça à le mérite d'exister pour le cas où le code est court et ou on à un peu la flemme

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Comme dit précédemment, il n'y a aucun besoin de "goto", quelque soit les langages d'ailleurs (même en RPG je n'en utilisais pas... pour dire ! ), et comme le dit tchize_, quand on met des "goto", c'est qu'on a mal pensé son programme.

    Si on prend l'exemple ci-dessus, il suffirait de mettre les 2 boucles imbriquées dans une fonction et d'utiliser tout simplement un "return" pour quitter.
    On peut garder le break pour sortir de la deuxième boucle et passer à l'occurrence suivante de la boucle principale.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction eval en java ?
    Par ramislebob dans le forum Langage
    Réponses: 2
    Dernier message: 12/01/2006, 00h22
  2. Réponses: 16
    Dernier message: 20/12/2005, 14h54
  3. [Info] Appeler une fonction Ada95 depuis Java
    Par mmathieu dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 15/09/2005, 09h42
  4. [FLASH MX2004] - Fonction GOTO...
    Par Neutrino- dans le forum Flash
    Réponses: 3
    Dernier message: 12/05/2005, 00h29
  5. [String] équivalent de la fonction eval() en javascript
    Par jeyce dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 01/09/2004, 08h42

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