TP java avec solution les bases de la programmation JAVA Exercices Corriges JAVA : Niveau debutant partie 2

Exercice 1 : Opérateurs logiques à "court circuit"

Quels résultats fournit ce programme ?

public class CourCir
{ public static void main (String args[])
  { int i=10, j=5 ;
    
    if (i<5 && j++<10)  System.out.println ("&&1 vrai") ;
                   else System.out.println ("&&1 faux") ;
    System.out.println ("i = " + i + "  j = " + j) ;
    
    if (i<5 & j++<10)   System.out.println ("& vrai") ;
                   else System.out.println ("& faux") ;
    System.out.println ("i = " + i + "  j = " + j) ;
    
    if (i<15 && j++<10) System.out.println ("&&2 vrai") ;
                   else System.out.println ("&&2 faux") ;
    System.out.println ("i = " + i + "  j = " + j) ;
    
    if (i<15 || j++<10) System.out.println ("|| vrai") ;
                   else System.out.println ("|| faux") ;
    System.out.println ("i = " + i + "  j = " + j) ;
  }
}

Exercice 2 : Priorités des opérateurs

Éliminer les parenthèses superflues dans les expressions suivantes :

  • a = (x+5)          // 1
  • a = (x=y)+ 2       // 2
  • a = (x = (y+2))    // 3 
  • (a<b) && (c<d)     // 4
  • (i++) * (n+p)      // 5
  • x += (n%p)         // 6 
  • n = (p+=5)         // 7

Exercice 3 : Affectation et conversion

Soit ces déclarations :

  • byte b ;  short p ;  int n ; long q ;
  • final int N=10 ;
  • float x ;  double y ;

Parmi les expressions suivantes, lesquelles sont incorrectes et pourquoi ? Lorsque l’expression est correcte, citer les conversions éventuellement mises en jeu.

  • b = n      // 1
  • b = 25     // 2
  • b = 500    // 3
  • x = 2*q    // 4
  • y = b*b    // 5
  • p = b*b    // 6
  • b = b+5    // 7
  • p = 5*N-3  // 8
------------------------------------------------------------------------------------------

Correction des Exercices - Solution des TP JAVA

------------------------------------------------------------------------------------------


Solution Exercice 1 : 




&&1 faux
i = 10  j = 5
& faux
i = 10  j = 6
&&2 vrai
i = 10  j = 7
|| vrai
i = 10  j = 7

Il faut simplement tenir compte de la proprité particulière dont bénéficient les opérateurs && et || dits à court-circuit. Ils n’évaluent leur second opérande que lorsque cela est nécessaire.


Solution Exercice 1 : 




a = x+5           // 1
a = (x=y)+ 2      // 2
a = x = y+2       // 3 
a<b && c<d        // 4
i++ * (n+p)       // 5
x += n%p          // 6 
n = (p+=5)        // 7








Solution Exercice 3 : 




  • b = n ;      // 1   Erreur

La conversion de int en byte n’est pas autorisée par affectation.
  • b = 25 ;     // 2   OK 

D’une manière générale, la conversion de int en byte n’est pas acceptée par affectation. Mais une exception a lieu pour les expressions constantes (calculables à la compilation), à condition que leur valeur soit représentable dans le type d’arrivée, ce qui est manifestement le cas ici.
  • b = 500 ;    // 3   Erreur

On est dans la même situation que précédemment, avec cette différence que la valeur 500 n’est pas représentable dans le type byte.
  • x = 2*q ;    // 4   OK

Ici, l’expression 2*q est évaluée en effectuant la conversion d’ajustement de type de 2 en long. Puis le résultat, de type long, est converti dans le type float avant d’être affecté à x.
  • y = b*b ;    // 5   OK

La valeur de l’expression b*b est évaluée en effectuant la promotion numérique de b en int. Le résultat, de type int, est converti dans le type double avant d’être affecté à y.
  • p = b*b ;    // 6   Erreur

Là encore, la valeur de l’expression b*b est de type int. La conversion de int en short est illégale par affectation.
  • b = b+5 ;    // 7   Erreur

La valeur de l’expression b+5 est de type  int. La conversion de  int en short est illégale par affectation.
  • p = 5*N-3 ;  // 8   OK

L’expression 5*N-3 est de type int. Mais comme il s’agit d’une expression constante (calculable à la compilation), sa conversion en short est légale par affectation pour peu que sa valeur soit représentable dans ce type, ce qui est le cas ici.




Article plus récent Article plus ancien

Leave a Reply

Telechargement