22 octobre 2002, 16:00-18:00, salle E-310 du pavillon principal Directives: 1. Toute documentation est permise. 2. Calculatrices électroniques ne sont pas permises. 3. Inscrivez tout de suite votre nom, votre code permanent et le numéro de votre place. 4. Répondez sur le questionnaire, dans l espace libre qui suit chaque question. BONNE CHANCE!! 1. /20 2. /10 3. /15 4. /10 5. /15 6. /15 7. /15 Total / 100 Nom: Code permanent: Numéro de votre place: page 1/6
1. (20 points) Qu est-ce que les segments de programmes suivants afficheront? (a) (5 points) int i = 3, j = 6; double a = 1.5, b = 4.2; a += i++; b /= i; a += b + --j; System.out.println(i + " " + j + " " + a + " " + b); 4 5 10.55 1.05 (b) (5 points) n = 0, a = 2 (c) (5 points) Ne compile pas. int n = 0,a = 1; if ((n < 1 n++ < 2) && (a < 1 a++ < 2)) System.out.println("n = " + n + ", a = " + a); else System.out.println("a = " + a + ", n = " + n); String str = "abracadabra"; int nba = 0; for(int i = 0;i < str.length();i++) if (str.charat(i).equals( a )) nba++; System.out.println("Le nombre de a dans " + str + " est " + nba); (d) (5 points) int i = 0, j = 0, k = 0; /* boucle exterieure */ while(i++ < 3); { /* boucle au milieu for(j = 0;j < 2;j++) /* boucle interieure */ for(k = j;k < 2;k++) System.out.println(i + " " + j + " " + k); 4 0 0 4 0 1 page 2/6
2. (10 points) Qu est-ce que le programme if (r) if (q) System.out.println("alpha"); else System.out.println("beta"); else if (p) System.out.println("delta"); else System.out.println("gamma"); if (q) if (r) System.out.println("beta"); else { System.out.println("gamma"); System.out.println("beta"); affichera si (a) (5 points) p q true, r false, delta gamma beta (b) (5 points) p r true, q false? beta beta 3. (15 points) Qu est-ce que la méthode double f(double a, int n) { double b = 1; while (n > 0) { if (n % 2 == 1) { b *= a; n -= 1; a *= a; n /= 2; return b; retournera pour (a) (5 points) a 3 n 2, 9 page 3/6
(b) (5 points) a 2 n 7, 128 (c) (5 points) a 0 et n 0 en général? a n 4. (10 points) Ecrivez la méthode boolean triangle(double a, double b, double c) qui retourne true si et seulement si a, b et c peuvent être les longueurs des trois côtés d un triangle. (Indice: pour les trois côtés d un triangle, la somme des longueurs de deux côtés quelconques est plus grande que la longueur du troisième côté.) public static boolean triangle(double a,double b, double c) { return a >= 0 && b >= 0 && c >= 0 && a + b >= c && a + c >= b && b + c >= a; 5. (15 points) Un nombre entier positif n est parfait si la somme de ses diviseurs propres égale le nombre lui-même. (Les diviseurs propres incluent 1 mais pas le nombre lui-même.) Par exemple, 6 est un nombre parfait, puisque les diviseurs propres de 6 sont 1, 2 et 3, et en outre, 6 1 2 3. Les premiers quatre nombres parfaits sont 6, 28, 496 et 8128. (a) (10 points) Ecrivez la méthode boolean parfait(int n) qui retourne true si n est un nombre parfait et false sinon. boolean parfait(int n) { double somme = 0; for(int i = 1;i < n;i++) if (n % i == 0) somme += i; return somme == n; (b) (5 points) Ecrivez une boucle qui appelle la méthode boolean parfait(int n) afin d afficher les nombres parfaits à partir de 2 jusqu au nombre entier maximal Integer.MAX VALUE. for(int i = 2;i < Integer.MAX_VALUE;i++) if (parfait(i)) System.out.println(i + " est parfait"); 6. (15 points) Ecrivez les instructions de la méthode void ImprimeTriangle(int nblignes) pour qu elle affiche un triangle de la forme spécifiée ci-dessous pour toute valeur positive de nblignes. page 4/6
IFT 1010 A02, Programmation I EXAMEN INTRA Balázs Kégl, Pierre Poulin nblignes = 1: 2: 3: 4: 5:... ** **** ****** ******** ********** ** * * * * * * forme: ** * * * *... ** * * ** void ImprimeTriangle(int nblignes) { for(int i = 0;i < nblignes;i++) { for(int j = 0;j < 2 * nblignes;j++) System.out.print((i == 0) (i == j) (i == 2 * nblignes - j - 1)? "*" : " "); System.out.println(); 7. (15 points) Ecrivez la classe Personne pour stocker et manipuler le nom d une personne. L usager de la classe veut initialiser le nom pendant la construction d un objet Personne, accéder au nom en appelant la méthode getnom et compter les voyelles (a,e,i,o,u,y,a,e,i,o,u,y) dans le nom en appelant la méthode nombredevoyelles. Le programme de test affichera public static void main(string [] args) { Personne personne = new Personne("Emmanuelle"); System.out.println(personne.getNom() + " a " + personne.nombredevoyelles() + " voyelles."); Emmanuelle a 5 voyelles. page 5/6
public class Personne { private String nom; public Personne(String innom) { nom = new String(inNom); public int nombredevoyelles() { int nombre = 0; for(int i = 0;i < nom.length();i++) { char c = nom.charat(i); if (c == a c == e c == i c == o c == u c == y c == A c == E c == I c == O c == U c == Y ) nombre++; return nombre; public String getnom() { return nom; page 6/6