Différence entre expressions et instructions

Saperlipopiette Messages postés 15 Statut Membre -  
 Utilisateur anonyme -
Bonjour,


Voilà tout est dans le titre. En JAVA quelle est la différence entre instructions et expressions?
Merci.
--
Mon fils, au jour de ta naissance, même les forêts de Lordaeron ont murmuré ton nom...Arthas (...). Je te confie cela car lorsque ma vie s'achèvera, toi tu sera roi

3 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Les instructions ce sont les opérations que tu fais dans ton code, les déclarations initialisations, et affectations, l'appel d'une méthodes etc... sont des instructions.
    Mais je ne suis pas sûr que "expression" soit vraiment un terme informatique, on parle plutôt d'"expression mathématique", d'"expression régulière" etc... mais expression tout seul je ne sais pas ce que tu mets derrière ce mot.
    4
    1. Saperlipopiette Messages postés 15 Statut Membre 15
       
      merci KX. je cite cet exemple de la boucle do...while

      Do
      une seule instruction ;
      while (expression conditionnelle) ;

      En fait une chose m'est venue, je me demande si une expression (booléenne, arithmétique..) peut être à la fois expression ET instructions. Si je demande de renvoyer la valeur par exemple d'une expression comme un calcul simple 2+5 via l'écran. y a t-il 2 instructions? (affichage à l'écran ET renvoie de la valeur) ou n'y a t-il qu'une seule instruction?
      Pardon c'est très con.
      0
    2. Jip
       
      C'est pas très con, j'ai eu un petit topo la dessus au debut d'un cours de C++, mais j'imagine que ca s'applique au JAVA.
      D'apres ce que j'en ai retenu une expression RENVOIE une valeur(dans le sens "est évaluée")
      2+5 
      1<2 
      false

      sont des expressions.
      Les expressions peuvent éventuellement avoir un effet de bord, par exemple
      i++ 
      x=5 // dans le cas du C++ c'est vrai car = stock la valeur 5 dans x mais renvoie aussi la valeur 5, pour java je suis moins sur mais l'idée est toujours que ca renvoie une valeur

      Une instruction elle va demander a l'ordinateur de FAIRE quelque chose
      x=5; // affecte la valeur 5 à x 
      2+5; // calcule 2+5, meme si ton programme n'en fait rien il l'aura quand meme calculé

      Dans ton exemple je dirais que tu as une seule instruction
      System.out.println(5+2);

      5+2 n'est que l'expression a évaluer.

      (à confirmer quand meme :) )
      1
    3. KX Messages postés 19031 Statut Modérateur 3 020
       
      Donc ce n'est pas une expression tout court, mais une "expression conditionnelle", c'est donc bien une "expression booléenne", son évaluation doit être vraie ou fausse.

      J'aurais tendance à penser comme Jip, System.out.println(5+2); ne serait qu'une seule instruction, même si au final le programme Java doit faire plusieurs opérations : calculer 5+2, charger la classe System, récupérer la variable System.out, lui appliquer la méthode println avec le paramètre 7.
      Remarque : la méthode println est également composé de plusieurs instructions mais on ne les compte pas et pourtant elles existent, donc la définition de Jip me convient plutôt bien, "une instruction va demander a l'ordinateur de faire quelque chose", même si par ordinateur j'entendrai plutôt le programme Java, plus que le système hôte.

      Cependant on peut effectivement combiner instructions et expressions conditionnelles, mais cela donne des exemples tout à fait différents :

      String str = "abaabababbbbabab";
      int n=-1;
      while ((n=str.indexOf('a',n+1))!=-1)
          System.out.println(str.substring(n));
      0
    4. Utilisateur anonyme
       
      Bonjour,

      Une tierce opignon, [ System.out.println(5+2) ] contient 2 instructions du langage.

      L'instruction [ printIn ] et l'instruction d'addition [ + ],

      bien que ( 5 + 2 ) soit une expression mathématique, l'opération d'addition
      est une instruction machine au même titre que l'instruction printIn.

      ( 5 x 2 ) est aussi une expression, mais au niveau machine elle s'effectue
      par un décalage d'un seul registre vers la gauche, alors que ( 5 + 2 ) s'effectue
      sur deux registre distinct. Ce concept est de niveau assembleur, mais ramené
      au niveau des langages de bas et haut niveau, on considère que ces instructions sont pur,
      soit [ + ] et [ x ] (addition et multiplication) sont des instructions simples (pur) pour tous
      les langages de programmation que je connaisse à ce jour.

      Au niveau des langages évolués, on considère une instruction comme étant
      un signe mnémonique (ex.: +, *, =, ...) , ou mot réservé, faisant appel au processeur
      pour une ou plusieurs opération(s), même un [ Sleep ] ( attente ) est une instruction
      significative qui fait appel au processeur.

      Réf.: Système à Micro-Processeur (Électrotechnique 243.03) 1983

      Cdt

      Lupin
      0
  2. Saperlipopiette Messages postés 15 Statut Membre 15
     
    Merci a vous 2 c'est bien plus clair maintenant.^^
    0
  3. Saperlipopiette Messages postés 15 Statut Membre 15
     
    Merci Lupin.
    Ce qui rejoindrai mon idée que même si on désigne 2+3 en premier comme expression, il n'en est pas moins aussi une instruction à sa façon.(?)
    0
    1. Utilisateur anonyme
       
      re:

      Tout juste.

      Cdt

      Lupin
      0