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:
- une fonction nommée puissance prenant en paramètre un double et un entier (la puissance) et effectue le calcul sans rien afficher
- une fonciton main
qui traite les arguments passés sur la ligne de commande,
appelle la fonction puissance, et affiche le résultat tel que
demandé.
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.