Différence entre expressions et instructions

Fermé
Saperlipopiette Messages postés 14 Date d'inscription mardi 3 janvier 2012 Statut Membre Dernière intervention 7 février 2013 - 3 janv. 2012 à 21:55
 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.

3 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
3 janv. 2012 à 22:15
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
Saperlipopiette Messages postés 14 Date d'inscription mardi 3 janvier 2012 Statut Membre Dernière intervention 7 février 2013 15
3 janv. 2012 à 22:46
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
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
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
4 janv. 2012 à 08:37
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
Utilisateur anonyme
5 janv. 2012 à 13:56
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
Saperlipopiette Messages postés 14 Date d'inscription mardi 3 janvier 2012 Statut Membre Dernière intervention 7 février 2013 15
5 janv. 2012 à 13:12
Merci a vous 2 c'est bien plus clair maintenant.^^
0
Saperlipopiette Messages postés 14 Date d'inscription mardi 3 janvier 2012 Statut Membre Dernière intervention 7 février 2013 15
7 janv. 2012 à 17:20
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
Utilisateur anonyme
8 janv. 2012 à 23:39
re:

Tout juste.

Cdt

Lupin
0