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 :

Interpreteur et compilateur les différencier


Sujet :

avec Java

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Points : 41
    Points
    41
    Par défaut Interpreteur et compilateur les différencier
    Bonjour, j'aimerai bien comprendre comment différencier les erreurs détecter par le compilateur et par l’interpréteur

    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
     
    public class Test {
    				static void show(int i){
    				System.out.println(" méthode 1 " + i);
    				}
     
    				static void show(char c){
    				System.out.println("méthode 2 " + c));
    				}
     
    				static void show(double d){
    				System.out.println("méthode 3 " + d);
    				}
     
    				static void show(String s){
    				System.out.println("méthode 4 " + s);
    				}
     
    				static void show(Participante b){
    				System.out.println("méthode 5 " + s);
    				}
     
    		public static void main(String[] args){
     				Object x = "Natacha";
    				String y = "Natacha";
    				int i = 4;
    				show('0'+i);
    				show(x);
    				show(y + i + 2);
    				show(i + 2 + y);
    				show((Participante)y);
    				show((Participante)x);
    				show(2.5F /2);
    				show((int) 2.5F /2F);
    				show(x.equal("") + y);
    				show(y == "Natacha" + y);
    				}
    }
    Voici un des exercices de mon dernier examen (que j'ai rater) j'aimerais comprendre comment le faire.

    Je ne comprend pas certaine ligne qui me semble impossible (note que le but de l'exercice est de trouver les erreurs pour le compilateur et l’interpréteur.

    je ne comprend pas

    Object x="Natacha"; (Oui Natacha objet et x en une ligne ça fait réfléchir)

    les show qui additione des variables divers entre elle. C'est possible?

    on peut caster objet et string en un autre objet?

    show((int) 2.5F /2F diviser par 2F?

    ..

    Autant dire que je ne comprend rien du programme..

    Merci de m'éclairer

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Bonjour,

    Pour commencer, ne serait-il pas plus simple d'essayer dans Eclipse ou NetBeans ?

    Je constate aussi qu'il manque plusieurs parenthèses, mais ça n'a pas l'air de faire partie de l'exercice. Erreur de copie ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Points : 41
    Points
    41
    Par défaut
    passer par eclipse me poserai problème au niveau de la classe Participante je ne l'ai pas, et puis comment voir si c'est interpréteur et le compilateur?

    Au prochain examen je n'aurai pas eclipse donc j'essaye de voir comment repérer les erreurs

  4. #4
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    La classe java.lang.String hérite directement de la classe java.lang.Object, donc on peut effectivement écrire
    Dans ce cas, ta variable x sera de type object mais contiendra une String, et le code
    te renverra TRUE.


    Pour le show('0'+i) c'est un peu fourbe mais oui c'est possible.En fait, l'appel à l'opérateur + appliqué à une String ("toto"+...) va implicitement créer un objet de type StringBuilder et va utiliser la fonction append() pour la concaténation. Donc il va être possible de concaténer des int,double,float etc.. avec une String de façon implicite.
    Au final tu aura une chaine de caractère (ici "04") et donc tu appellera la fonction show(String s)
    L'instruction show(y + i + 2) renverra donc "Natasha42"
    Par contre show(i + 2 + y) va renvoyer "6Natacha"

    Pour les cast en Java, il y a deux cas.
    - Si il s'agit d'un cast ascendant (de String vers Object comme ici) celui ci est fait implicitement, donc pas besoin de l'écrire.
    - Si il s'agit d'un cast descendant (de Object vers String ) il faut le spécifier en précisant la classe vers laquelle on veut que le cast soit effectué.
    Ici pour utiliser les fonctions propre à la classe String de l'objet x, il faut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((String)x).maMethode()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    show((int) 2.5F /2F diviser par 2F?
    Le F signifie Float, donc a mon avis, le résultat de ta division va être casté en (int).

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par Linquisiteur Voir le message
    passer par eclipse me poserai problème au niveau de la classe Participante je ne l'ai pas,
    Ce n'est pas important, il suffit d'en inventer une qui ne contient rien. (Peut-être un petit toString() à la rigueur pour que les tests soient plus faciles à comprendre.)

    Citation Envoyé par Linquisiteur Voir le message
    et puis comment voir si c'est interpréteur et le compilateur?
    Ben si Eclipse t'affiche une erreur dans la page de ton fichier .java, c'est une erreur de compilation. S'il te l'affiche dans la console au moment où tu exécutes le programme, c'est une erreur d'exécution (pour l'interpréteur donc.)
    Bien sûr, on ne peut pas exécuter un programme avant d'avoir résolu toutes ses erreurs de compilation, mais c'est un bon exercice.

    Citation Envoyé par Linquisiteur Voir le message
    Au prochain examen je n'aurai pas eclipse donc j'essaye de voir comment repérer les erreurs
    À terme, oui. Mais j'ai dit "pour commencer."
    Si tu n'y arrives pas avec Eclipse, tu n'y arriveras certainement pas tout seul. D'abord le niveau zéro, et après seulement le niveau 1.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par Nico02 Voir le message
    Pour le show('0'+i) c'est un peu fourbe mais oui c'est possible.En fait, l'appel à l'opérateur + appliqué à une String ("toto"+...) va implicitement créer un objet de type StringBuilder et va utiliser la fonction append() pour la concaténation. Donc il va être possible de concaténer des int,double,float etc.. avec une String de façon implicite.
    Au final tu aura une chaine de caractère (ici "04") et donc tu appellera la fonction show(String s)
    Cette ligne est encore plus fourbe que ça. '0' est un char, pas une String. L'opérateur + entre char et int est valable, mais ce n'est pas une concaténation. Le char est pris comme une valeur numérique, implicitement converti en int, et le résultat est de type int, l'addition des deux.
    '0' converti en int c'est le code ASCII de '0', donc 48. En y additionnant i ça fait 52.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Cette ligne est encore plus fourbe que ça. '0' est un char, pas une String. L'opérateur + entre char et int est valable, mais ce n'est pas une concaténation. Le char est pris comme une valeur numérique, implicitement converti en int, et le résultat est de type int, l'addition des deux.
    '0' converti en int c'est le code ASCII de '0', donc 48. En y additionnant i ça fait 52.
    Effectivement je suis allé un peu vite en besogne.

    C'est quand même bien tordu comme exam

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Points : 41
    Points
    41
    Par défaut
    donc x est un string de type object?

    Sans tester le programme l'output sera:

    méthode 4 52
    - - - - - - - - // erreur à la compilation
    méthode 4 Natacha42
    méthode 4 42Natacha
    méthode 5 Natacha
    - - - - - - - - // erreur à la compilation
    méthode 3 1,25000000
    méthode 1 1
    méthode 4 trueNatacha
    méthode 4 1Natacha


    Mais j'ai de sérieux doute sur mes réponse..

  9. #9
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Alors, de tête je pense plutot à ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Object x = "Natacha";
    String y = "Natacha";
    int i = 4;
    show('0'+i);  // "Methode 1 52"
    show(x);     // "Mehtode 4 Natacha"
    show(y + i + 2); // "Methode 4 Natacha42"
    show(i + 2 + y);  // "Methode 4 6Natacha"
    show((Participante)y);  // "Methode 5 Natacha" 
    show((Participante)x);  // "Methode 5 Natacha"   Pas sur de celui la
    show(2.5F /2);           //  Erreur pas de méthode show(Float)
    show((int) 2.5F /2F);   // <s>"Methode 1 1"</s> Correction, ici erreur pas de show(float)
    show(x.equal("") + y);  // Erreur  boolean+String n'a aucun sens
    show(y == "Natacha" + y);  // Erreur pas de méthode show(boolean)
    EDIT :

    Pour ces 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    show((Participante)y);  // "Methode 5 Natacha" 
    show((Participante)x);  // "Methode 5 Natacha"   Pas sur de celui la
    Cela va dépendre de comment est définie la classe Participante, mais je pense que ça ne marcher pas

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Points : 41
    Points
    41
    Par défaut
    Merci

    J'ai tester et voici mon résultat

    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
     
    public static void main(String[] args){
    				Object x = "Natacha";
    				String y = "Natacha";
    				int i = 4;
    				show('0'+i);
    				//show(x);
    				show(y + i + 2);
    				show(i + 2 + y);
    				//show((Participante)y);
    				//show((Participante)x);   compile mais crash
    				show(2.5F /2);
    				show((int) 2.5F /2F);
    				//show(x.equal("") + y);
    				//show(y == ("Natacha" + y);
    				}
     
     
     
     
     méthode 1 52
    méthode 4 Natacha42
    méthode 4 6Natacha
    méthode 3 1.25
    méthode 3 1.0

  11. #11
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Enfin si tu veux mon avis, ce n'est pas x.equal("") mais x.equals("").
    Sinon c'est pas juste fourbe, mais tout simplement insensé.

    Et sinon, c'est une chose de tester, c'en est une autre de savoir ce qui ne va pas, et de là être capable de répondre tout seul à des exercices similaires.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    Citation Envoyé par Nico02 Voir le message
    C'est quand même bien tordu comme exam
    bien d'accord. Un tel exam ne mérite pas d'être passé car il ne teste pas les capacités à programmer en Java (juste la capacité à déjouer des pièges obscurs).
    Mon message pour l'auteur de cet exam: tu t'es fait plaisir mais ce n'est pas sérieux. Concevoir des tests est un métier extrèmement difficile qui demande un très grand niveau d'expertise pédagogique.
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  13. #13
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    On est d'accord, mais bon les certifications officielles Java ont pas mal de questions testant ce genre de choses, juste plus difficiles. (Bon, elles exigent quand même pas qu'on connaisse la table ASCII par cœur.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Citation Envoyé par thelvin Voir le message
    On est d'accord, mais bon les certifications officielles Java ont pas mal de questions testant ce genre de choses, juste plus difficiles.
    Oui enfin là c'est un examen pour des étudiants

  15. #15
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Débutant ou senior, je vois pas l'intérêt de demander à un programmeur de faire le boulot d'un compilateur. À la limite, lui demander de fabriquer son propre compilateur, je dirais pas...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    Citation Envoyé par thelvin Voir le message
    On est d'accord, mais bon les certifications officielles Java ont pas mal de questions testant ce genre de choses, juste plus difficiles.
    C'est bien le problème. (et ,soit dit en passant, ça a été une source inépuisable d'échanges amers à l'intérieur même de feu SUN microsystems: il a existé, mais sous le manteau, un jeu de tests avec une démarche totalement différente mais la "ligne du parti" l'a emporté )
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  17. #17
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Points : 41
    Points
    41
    Par défaut
    Vous inquiétez pas la majorité des gens doivent repasser au moins 3 examens. (Les siens )

    Bon après elles comme ça pour toute les années d'info. Ce qui m'ennerve est que une grosse partie des pièges ne sont écrit nul part dans le bouquin. J'ai encore 1 exercice de java que je ne poste même pas car je ne suis nul part..

    edit: oui c'était equals ^^'

Discussions similaires

  1. Côté serveur - Côté client : comment les différencier ?
    Par Sophie 2015 dans le forum Général Java
    Réponses: 5
    Dernier message: 06/07/2015, 12h21
  2. Recherches sans résultat-comment les différencier?
    Par daniel64 dans le forum VBA Word
    Réponses: 2
    Dernier message: 23/05/2012, 03h41
  3. Compilateurs les plus utilisés
    Par ehmicky dans le forum Langage
    Réponses: 9
    Dernier message: 06/11/2011, 09h05
  4. Plusieurs feuilles de style IE /FF, mais les différencier
    Par Askental dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 27/07/2010, 19h41
  5. Réponses: 3
    Dernier message: 01/01/2009, 04h18

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