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

Langage Java Discussion :

La syntaxe de goto en Java


Sujet :

Langage Java

  1. #1
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 38
    Par défaut La syntaxe de goto en Java
    Bonjour,

    J'aimerais connaître la syntaxe de "goto" en Java ?

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Il n'y en a pas... Et tu ne devrait pas en avoir besoin

    Le goto c'est le mal

    a++

  3. #3
    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
    Citation Envoyé par adiGuba Voir le message
    Le goto c'est le mal
    adiGuba (Bush ???)

    Pour le reste, il a raison...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre expérimenté
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Par défaut revival goto
    Noter que c'est un mot-clef réservé, qu'il ne faut pas l'utiliser, et qu'il n'a jamais été utilisé (en java 1.2 du moins)

    Il passe en "gras" sous Eclipse, et appeler une fonction ou une variable goto planterait à la compilation.

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Citation Envoyé par deltree Voir le message
    Noter que c'est un mot-clef réservé, qu'il ne faut pas l'utiliser, et qu'il n'a jamais été utilisé (en java 1.2 du moins)

    Il passe en "gras" sous Eclipse, et appeler une fonction ou une variable goto planterait à la compilation.
    Justement, 'goto' a été défini comme mot-clé pour qu'il soit réservé et surtout pour qu'il ne soit pas utilisé.
    Avec une conception objet correcte, il n'y a pas besoin d'utiliser de 'goto'. Il "s'uffit" d'appeller la méthode adéquate.

  6. #6
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Par contre il y a moyen de sauter a un label défini au niveau d'une boucle, parfois utile pour 'breaker' ou 'continuer' alors qu'il y a des boucles imbriquées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    MonLabel: while (true)
    {
      //...
      for ( ... )
      {
        //...
        continue MonLabel;
      }
    }
    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  7. #7
    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
    On peut faire ça sans etiquette aussi...
    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
     
    ...
    while (true)
    {
       if ( ! maBoucleImbriqueeDitDeContinuer() ) break;
    }
    ...
     
    public boolean maBoucleImbriqueeDitDeContinuer()
    {
       for (...)
       {
           if ( conditionArret ) return false;
       }
       return true;
    }
    Ou utiliser judiscieusement une exception pour sortir d'une pile de boucle...
    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
     
    try
    {
       while (true)
       {
          for (...)
          {
             throw new StopIterate();
          }
       }
    }
    catch (StopIterate s)
    {
       // A priori, on ne fait rien
    }
    Bref, il y a de quoi faire sans goto...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Oui mais bonjour la lisibilité, si c'est pour refaire ce que fait cette instruction pour respecter a la lettre le mantra " le goto saymal" je vois pas trop l'intérêt.

    De toute façon le besoin de cette écriture se rencontre rarement et elle couvre parfois des cas particuliers que ta méthode ne facilitera pas ..

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  9. #9
    Rédacteur/Modérateur
    Avatar de Laurent.B
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    3 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3 468
    Par défaut
    Perso, je dirais que sortir avec une exception c'est super cracra !! et consommateur de ressources.
    Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
    Gardons toujours à l'esprit que le forum constitue une base documentaire, dont l'utilité et la qualité dépendent du soin apporté à nos questions et nos réponses. Soyons polis, précis (dans le titre et dans le corps des questions), concis, constructifs et faisons de notre mieux pour respecter la langue française et sa grammaire. Merci pour nous (les modérateurs) mais aussi et surtout, merci pour vous.
    Problème solutionné => je vais au bas de la page et je clique sur le bouton (qui suite à mise à jour du forum, a légèrement changé d'aspect).

  10. #10
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par Laurent.B Voir le message
    Perso, je dirais que sortir avec une exception c'est super cracra !! et consommateur de ressources.
    +1, le remplissage de la stacktrace, ça va prendre un temps fou par rapport au continue...

  11. #11
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Le label sert si tu veux sortir d'une imbrication de boucles et non juste de ta boucle courante.

  12. #12
    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
    Citation Envoyé par denisC Voir le message
    +1, le remplissage de la stacktrace, ça va prendre un temps fou par rapport au continue...
    Pour ce qui est du temps fou, ça me fait rigoler quand même...

    Mais bon, si vous préférez un "goto", rien ne vous empêche de l'utiliser (que ce soit sur un continue ou un break), le but était de montrer qu'on peut faire sans...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre éclairé Avatar de keub51
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut
    ...ou que l'on doit faire sans ...

  14. #14
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Le goto c'est le mal

    a++

    Malgré tout, un certain Donald Knuth (de l'université de Stanford tout de même) a donné un cours dont le titre est Structured Programming With Goto Statements.

    Ce monsieur est-il l'incarnation du mal?

  15. #15
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Pour ce qui est du temps fou, ça me fait rigoler quand même...

    Mais bon, si vous préférez un "goto", rien ne vous empêche de l'utiliser (que ce soit sur un continue ou un break), le but était de montrer qu'on peut faire sans...
    C'est déconseillé par Sun en tout cas dans une utilisation autre qu'exceptionnelle.

    La procédure pour remplir la stack trace est loin d'être anodine et en terme de perfs on est très loin d'un continue sur un label.

    C'est comme les gens qui prônent un seul return par méthode ou des méthodes de moins de 15 lignes, dans l'absolu c'est parfait, en pratique c'est du n'importe quoi.

    Une écriture propre ou pas ne doit pas avoir d'impact sur les perfs du programme, et faire 5 méthodes de 15 lignes au lieu d'une grande...

    1 - C'est plus long a écrire et la logique est plus dure a suivre car répartie sur 5 méthodes
    2 - Ca oblige a des âneries genre utilisation de paramètres de méthodes (assez pénalisant quand même par rapport a une seule variable ou utilisation de champ privé qui en terme de design sont bien pire qu'une grosse méthode.
    3 - 5 appels de méthodes ca restera toujours plus long qu'un seul.

    Pour un seul return, sur une méthode de 5 lignes ok, sur une grand méthode, je préfère avoir des cas de sortie clairement identifiés dés le début que de me trimballer tout au long de l'algo pour savoir ce qui finalement se passe.

    Voilou mon avis a 2 balles venant de mon expérience de développeur perso,

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  16. #16
    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
    Bon, je l'avoue, c'est NETTEMENT plus simple avec un continue (ou break) -> label...
    D'ailleurs, je ne savais même pas qu'on pouvait le faire (des années de programmation où le goto était tabou)...
    Il faut bien sortir du dogme "ma religion me l'interdit"

    (j'ai commencé à lire l'article de Donald Knuth mais c'est un peu pénible, on dirait que c'est une image, (un scan ?)... J'essayerai de trouver une autre référence)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Pour ce qui est du temps fou, ça me fait rigoler quand même...
    Si c'est destiné à être exécuté dans une boucle assez importante cela peu se faire sentir...
    Mais de toute manière les exceptions sont destiné à la gestion d'erreur et non pas pour "simuler" un goto...

    Citation Envoyé par Deadpool Voir le message
    Malgré tout, un certain Donald Knuth (de l'université de Stanford tout de même) a donné un cours dont le titre est Structured Programming With Goto Statements.

    Ce monsieur est-il l'incarnation du mal?
    Non...

    J'ai quand même deux remarques :
    • Ce document date de 1974...
    • Le goto est toujours utiliser "implicitement" lorsqu'on utilise les structures de contrôles du langage (for, if, while, break, continue, try/catch/finally...), qui permettent une bien meilleur lisibilité.


    Alors oui c'est possible de faire des programmes structuré avec des goto, mais cela n'apporte rien par rapport aux structures existantes dans le langage il n'y a aucun intérêt à utiliser directement le goto (en Java en tout cas)!

    A moins que tu ne me trouves un exemple où l'utilisation du goto apporte un réel plus je resterais sur cette position

    a++

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 12
    Par défaut
    Bulbo tu t'éloignes du sujet là mais puisque tu en parles :

    Le fait de dire pas plus de 15 lignes par méthode ce n'est pas juste pour le fun ou pour faire chic, c'est parce que dès lors que tu atteinds 100 lignes dans 1 méthode celà veut simplement dire que tu dois revoir ta conception.

    Tu ne programme plus en objet mais en ligne ! Rien de bien grave mais alors il Java n'est pas le language le plus approprié

  19. #19
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Non...

    J'ai quand même deux remarques :
    • Ce document date de 1974...
    • Le goto est toujours utiliser "implicitement" lorsqu'on utilise les structures de contrôles du langage (for, if, while, break, continue, try/catch/finally...), qui permettent une bien meilleur lisibilité.


    Alors oui c'est possible de faire des programmes structuré avec des goto, mais cela n'apporte rien par rapport aux structures existantes dans le langage il n'y a aucun intérêt à utiliser directement le goto (en Java en tout cas)!

    A moins que tu ne me trouves un exemple où l'utilisation du goto apporte un réel plus je resterais sur cette position
    Non, non, c'était plus une boutade qu'autre chose, en fait j'ignorais même que c'étais si vieux.

    Je suis plutôt du même avis que toi.

  20. #20
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Citation Envoyé par ghervouin Voir le message
    Bulbo tu t'éloignes du sujet là mais puisque tu en parles :

    Le fait de dire pas plus de 15 lignes par méthode ce n'est pas juste pour le fun ou pour faire chic, c'est parce que dès lors que tu atteinds 100 lignes dans 1 méthode celà veut simplement dire que tu dois revoir ta conception.

    Tu ne programme plus en objet mais en ligne ! Rien de bien grave mais alors il Java n'est pas le language le plus approprié
    C'est bien ce que je dis, tu n'as jamais eu un algo de plus de 100 lignes ? Moi j'en ai un que je serais bien en peine de factoriser et si je devais créer des méthodes pour réduire la taille du code, ce serait complètement artificiel et absolument pas une meilleure conception.

    Il faut arrêter de rester braquer sur ce que vous avez appris a l'école (sauf si vous y êtes encore, le prof apprécie qu'on se souvienne de ce qu'il dit )

    Il y a des algos qui sont long c'est comme ça, et un algo long n'a rien a voir avec la conception.

    Mon algo de 30 km (je pense que ça doit être le plus long de ma carrière) je ne l'ai pas écrit pour me pourrir la vie (je ne sais pas combien il me fait de pages écran mais c'est sur qu'on a vu mieux niveau maintenance).

    Je dois récupérer une donnée pour une position, si cette donnée n'est pas dispo pour cette position, je peux utiliser (si défini) une position proche, si enfin la position proche non plus n'arrive pas a me fournir l'info je retourne une valeur par défaut pour les x prochaines requetes ou durant un temps donné.

    J'ai un objet qui gère l'état d'une position, j'ai un objet qui correspond a la position (avec la fallback position) qui vient de ma DB, j'ai une hashtable pour stocker mes états par connection ...
    J'ai un objet CORBA que j'utilise pour faire les requêtes pour les positions.

    Rien que la description de l'algo (abrégée en plus, je dois tenir compte des messages d'erreur, certains messages ne nécessitant pas l'appel sur la position proche) fait déjà 4 lignes.. pas sur que le "casser" sur plusieurs méthodes va relever d'une meilleure conception

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

Discussions similaires

  1. un goto en java!
    Par moon5 dans le forum Langage
    Réponses: 14
    Dernier message: 26/08/2007, 12h11
  2. utilisation de jump ou de goto dans java
    Par dracula2000 dans le forum Langage
    Réponses: 5
    Dernier message: 06/03/2006, 11h27
  3. [Info]Copie un code java en gardant les couleur des syntaxes
    Par Thzith dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 17/01/2006, 20h51
  4. [JDBC]problème de syntaxe dans une requête en java...
    Par chti_juanito dans le forum JDBC
    Réponses: 60
    Dernier message: 04/11/2005, 16h47
  5. [langage] Pb de syntaxe avec GOTO
    Par BEAUJAULT dans le forum Langage
    Réponses: 2
    Dernier message: 14/10/2004, 16h02

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