Le barème est donné à titre indicatif. A) QCM [5 POINTS] Choisir la

L1I1 / 12 juin 2007
Initiation à la Programmation – session 2
Durée : 2h00 – Seuls les deux polycopiés de cours sont autorisés.
Le barème est donné à titre indicatif.
A) QCM [5 POINTS] Choisir la ou les réponses correctes. Il y a toujours au moins une
réponse correcte.
1 Comment obtient-on le nombre d’éléments [longueur] d’un tableau tab ?
a) tab.longueur d) tab.length()
b) tab.length e) Array.length(tab)
c) length(tab)
2 Pour déclarer un tableau d’entiers tab dont les éléments sont dans l’ordre 3, 6, 9, 12, je
peux écrire :
a) int tab = [3,6,9,12] ;
b) int[] tab = new int({3,6,9,12}) ;
c) int[] tab; tab[0]=3; tab[1]=6; tab[2]=9; tab[3]=12;
d) int[] tab = {3,6,9,12};
e) tab[] = new int(3,6,9,12);
f) int[] tab = new int[4]; for (int i=1;i<5;i++) tab[i]=3*i ;
3 Dans la classe ArrayList :
3.1- Quel est le coût d’accès à l’élément d’indice k ?
a) constant b) linéaire c) quadratique d) ça dépend
3.2- Quel est le nom de la méthode permettant d’avoir le nombre d’éléments d’une liste ?
a) size() b) getSize() c) length() d) getLength()
3.3- Quel est le coût de la méthode d’ajout add ?
a) constant b) linéaire c) quadratique d) ça dépend
4 On considère la méthode statique suivante :
static int truc(int a, int b)
{ int tmp = a; a = b; b = tmp; return a; }
Supposons que les variables entières x et y valent respectivement 2 et 3. Quel est
l’affichage produit par l’exécution des deux instructions suivantes :
int z = truc(x,y);
System.out.println(”x=” + x + ”,y=” + y + ”,z=” + z);
a) x=2,y=3,z=2 d) x=3,y=2,z=3
b) x=3,y=2,z=2 e) Erreur de compilation dans la méthode truc
c) x=2,y=3,z=3 f) Erreur lors de l’exécution des deux instructions
5 Quelle(s) instruction(s) permet(tent) de transformer une chaîne de caractères en entier :
String chaine ;
a) int v = parseInt(chaine);
b) int v = (int)chaine ;
c) int v = java.lang.Integer.parseInt(chaine) ;
d) int v = new Integer(chaine).intValue() ;
e) int v = chaine;
B) Trois méthodes statiques sur les tableaux d’entiers [6 points]
6 Programmez une méthode sommeImpairs prenant en argument un tableau tab d’entiers,
et retournant la somme des éléments impairs de ce tableau. Par exemple, si tab contient les
éléments 0, 1, 6, -3, 9, le résultat serait 7 (Note : 7=1 + (-3) + 9).
7 On s’intéresse à la suite (un) définie par u0 = 2 et un+1 = 2un - 3 si n 0. Programmez une
méthode termes prenant un entier n 0 en argument et retournant un tableau d’entiers
contenant les n+1 premiers termes de cette suite. Par exemple, pour n=5, le résultat serait un
tableau de longueur 6 contenant les entiers 2, 1, -1, -5, -13. On n’utilisera pas et on ne
programmera pas de méthode externe calculant le terme un de rang n de cette suite.
8 Programmez une méthode verifier sans résultat, prenant en argument un tableau tab
d’entiers et affichant un message qui exprime si le tableau contient ou ne contient pas de
nombre négatif. Par exemple, si tab est constitué des éléments 0, 1, 6, -3, 9, on verrait
s’afficher un message à l’écran disant Attention, le tableau contient au moins un nombre
négatif !
C) Des objets de type Livre [7 points]
Une association prête des livres à ses membres. Le responsable décide de programmer en Java
la gestion de cette bibliothèque, il rédige pour cela une classe Livre et vous allez l’y aider.
• Un objet de cette classe est muni de deux champs privés :
o Un champ nommé titre de type String contenant le titre du livre.
o Un champ nommé emprunteur de type String, contenant le nom de
l’emprunteur si le livre est actuellement emprunté, et contenant la référence
null sinon.
• Cette classe admet un constructeur prenant en argument une chaîne de caractères ch et
construisant un livre dont le titre est ch et non emprunté.
• Cette classe comporte cinq méthodes :
o Un accesseur permettant de récupérer le contenu du champ titre
o Un accesseur permettant de récupérer le contenu du champ emprunteur
o Une méthode sans résultat sortir(String nom) exprimant que le livre
vient d’être emprunté par une personne se nommant nom.
o Une méthode sans résultat rentrer() exprimant que le livre vient d’être
rendu par son emprunteur, peu importe le nom de ce dernier.
o Une méthode toString retournant une représentation du livre sous forme de
chaîne de caractère, par exemple :
Livre[titre=”Le langage JAVA”,emprunteur=”Jean Doe”]
9 Programmez cette classe complète !
D) Fichiers et listes de livres [4 points]
Les livres de la bibliothèque sont organisés en plusieurs fichiers suivant leur thème. Un
fichier comporte un nombre pair de lignes. En effet, chaque livre est répertorié sur deux
lignes, la première donnant le titre du livre, et la seconde le nom de l’emprunteur [elle est vide
s’il n’y a pas d’emprunteur]. Par exemple, le fichier ci-dessous sur la guerre sous-marine
comprend trois livres dont le premier et le troisième sont empruntés et le second ne l’est pas :
Programmer un sonar avec JAVA
Jean Doe
Architecture des sous-marins
Le Loch Lomond
Archibald Haddock
Dans ce qui suit, le mot liste fait référence à la classe générique ArrayList<E> de Java,
E est la classe des objets de la liste.
10 Écrire une méthode lireFichier qui prend en argument une chaîne de caractères
représentant le nom d’un fichier de livres [dont on ne connaît pas à l’avance le nombre de
lignes], et qui renvoie une liste d’objets de type Livre représentant les livres de ce fichier. La
lecture du fichier ci-dessus retournerait donc une liste de 3 objets.
11 Écrire une méthode statique estDisponible qui prend en argument une chaîne de
caractères ch représentant le titre d’un livre ainsi qu’une liste list de livres, et qui renvoie le
nom de l’emprunteur s’il est emprunté, ou bien la chaîne ”### LIBRE” s’il n’est pas
emprunté.
Vous trouverez dans votre polycopié du cours les primitives utiles sur les listes et les fichiers.
Certaines sont résumées dans l’annexe de la page suivante.
Classe Math
static int abs(int x)
static double abs(double x)
static double sqrt(double x)
static double sin(double x)
static double cos(double x)
Classe String
String(char[] tab)
String substring(int i, int j) // [ i, j [
int length()
char charAt(int index)
int indexOf(String str)
int indexOf(char c)
String toLowerCase()
String toUpperCase()
char[] toCharArray()
Classe Character
boolean isUpperCase(char c)
boolean isLowerCase(char c)
boolean isLetter(char c)
boolean isDigit(char c)
Classe java.util.Random
Random()
int nextInt(int n) // dans [0,n-1]
Classe Integer
Integer(int n)
static int parseInt(String)
int intValue()
Classe java.awt.Point
Point(int x, int y)
boolean equals(Object o)
int getX()
int getY()
void translate(int x, int y)
Classe java.util.ArrayList
ArrayList()
int size()
boolean isEmpty()
Object get(int index)
Object set(int index, Object
element)
boolean add(Object obj)
Object remove(int index)
Iterator iterator()
Classe java.util.Scanner
Scanner(System.in)
Scanner(Writer flot)
Scanner(String chaine)
boolean hasNextLine()
boolean hasNextInt()
String nextLine()
int nextInt()
void close()
Classe Exception
String getMessage()
Classe java.io.FileWriter
FileWriter(String nomFichier)
Classe java.io.PrintWriter
PrintWriter(FileWriter fw)
void print(...)
void println(...)
void close()
Classe
java.io.InputStreamReader
InputStreamReader(System.in)
Classe java.io.BufferedReader
BufferedReader(InputStreamRe
ader isr)
String readLine()
void close()
assert (propriété) : "message d'erreur";
assert (propriété) ;
try
{ ...}
catch (Exception e)
{ ... }
static public void main(String[] args)
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !