Menu

Différence entre expressions et instructions [Fermé]

Messages postés
14
Date d'inscription
mardi 3 janvier 2012
Statut
Membre
Dernière intervention
7 février 2013
- - Dernière réponse :  Utilisateur anonyme - 8 janv. 2012 à 23:39
Bonjour,




Voilà tout est dans le titre. En JAVA quelle est la différence entre instructions et expressions?
Merci.
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
16004
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 juillet 2019
2382
4
Merci
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.

Dire « Merci » 4

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 54631 internautes nous ont dit merci ce mois-ci

Saperlipopiette
Messages postés
14
Date d'inscription
mardi 3 janvier 2012
Statut
Membre
Dernière intervention
7 février 2013
-
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.
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 :) )
KX
Messages postés
16004
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 juillet 2019
2382 -
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));
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
Messages postés
14
Date d'inscription
mardi 3 janvier 2012
Statut
Membre
Dernière intervention
7 février 2013
0
Merci
Merci a vous 2 c'est bien plus clair maintenant.^^
Messages postés
14
Date d'inscription
mardi 3 janvier 2012
Statut
Membre
Dernière intervention
7 février 2013
0
Merci
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.(?)
Utilisateur anonyme -
re:

Tout juste.

Cdt

Lupin