IFT1015, Hiver 2008

Professeur: Pascal Vincent

Examen Intra

Lundi 18 février 2008

Durée: 1h45

Documentation papier permise

Prénom:

Nom:


Code permanent:


Veuillez répondre aux questions dans les zones de blanc laissées à cet effet.

Lorsque l'énoncé vous demande d'écrire un programme, vous devez écrire un programme complet compilable (qui comporte une déclaration de classe et une méthode main).

Lorsque l'énoncé vous demande d'écrire une fonction ou une méthode,  contentez-vous d'écrire cette fonction ou méthode seulement.

Si vous voulez, vous pouvez abréger
System.out.println  en s.o.p

1) Qu'affichent les extraits de programme suivants: (20 pts)

(remarque: il n'y a aucune erreur de syntaxe dans les extraits de cette question).
System.out.println(354/100.0);



-------------------------------------------------
System.out.println(25/10);



-------------------------------------------------
System.out.println( 2 + 4 % 3 );



-------------------------------------------------
System.out.println(("3"+2)+2*4+"0");




-------------------------------------------------
int i = 3; System.out.println(i-1+i*Math.pow(2,i/2+1));




-------------------------------------------------
System.out.println( 2+2 > 3*2 );




-------------------------------------------------
boolean a = false;
int b = 5;
int c = 10;
if (b>c || b<7)
System.out.println("Chat");
else if(b<c)
System.out.println("Chien");
if(a || !a)
System.out.println("Cheval");
if(a || (false || !"Chien".equals("CHIEN")))
System.out.println("Tortue");
else
System.out.println("Lapin");





2) Trouvez l'erreur dans les extraits de programmes suivants. (20 pts) 

Indiquez l'endroit qui pose problème en le cerclant, et expliquez en une courte phrase pourquoi ça constitue une erreur. 

(Je vous garantis que chaque extrait a une erreur qui pose probléme!)



Premier extrait

int a = 3;
while(a<1000);
  {
  System.out.println("a="+a);
  a = a*10;
  }
   

Deuxième extrait

int a;
String b;
a = 5;
b = "2";
System.out.println(a+b);
a = 2*a+b;
System.out.println(a);


Troisième extrait

double x = 3.5;
double y = 2.1;
if(x>y)
{
double max = x;
}
else
{
double max = y;
}
System.out.println("Le plus grand de x et y est: "+max);





3) Puissance (20 pts)

On rappelle qu'un nombre x à la puissance entière n correspond à  x*x*x*...*x et ceci avec n facteurs x.
Ainsi 2 à la puissance 3 correspond à 2*2*2 c.a.d. 8.
Le présent exercice consiste à écrire un programme Puissance qui pourra s'utiliser comme suit:
Ex:
java Puissance 2.0 3
Ce qui devra écrire à l'écran:
2.0 à la puissance 3 vaut 8.0

a) Comment allez vous nommer le fichier contenant le code source du programme?


b) Comment allez-vous compiler ce programme? (écrivez la ligne que vous taperiez)



c) Écrivez le programme correspondant, qui devra comporter:
Le programme ne doit pas utiliser Math.pow ni aucune autre fonction Math.xxx Bref vous devez écrire le calcul de la puissance vous-même.










































4) Appel de fonctions et passage de paramètres (20 pts)

Écrivez ce qu'affiche le programme suivant (écrivez-le à côté de chaque System.out.println).

public class Essai
{

   public static int g(int x, int y)
   {
       x = 100*x+y;
       y = x;
       return y;
   }

   public static void main(String[] args)
   {
      int x = 2;
      int y = 3;
      System.out.println(g(y,x));
      System.out.println(y);
      x = 2;
      y = 3;
      System.out.println(g(x+x, 1+2*y));
      System.out.println(g(y-x, g(x+x, 1+2*y)));
   }
}


5) Chaînes de caractères (String) versus tableau de caractères (char[])  (20 pts)

Dans un programme on suppose qu'on a déclaré deux variables, une variable a de type String et une variable b de type tableau de caractère char[]
Par exemple:
String a = "Bonjour";
char[] b = {'S','a','l','u','t'};
(mais ce que vous écrirez ci-dessous devra pouvoir fonctionner aussi si le texte dans a et dans b était différent)
Ecrivez ci-dessous les instructions pour:
 
a) afficher la longueur de la chaîne a


b) afficher la longueur du tableau b


c) afficher le premier caractère de a


d) afficher le premier caractère de b


e) afficher le dernier caractère de a


f) afficher le dernier caractère de b


g) changer le troisième caractère de b en un point d'interrogation (?)


h) intervertir le premier et le deuxième caractère de b (ainsi Salut devientrait aSlut )





i) afficher les caractères de b dans l'ordre inverse (en partant du dernier jusqu'au premier)
on demande de ne pas utiliser un for mais un plutôt un while.