0% ont trouvé ce document utile (0 vote)
175 vues10 pages

Examen TPA 2022 2023

L'examen porte sur les exceptions, les collections, les flux, la concurrence et les threads en Java. Il contient quatre exercices qui demandent de définir des classes, méthodes et exceptions pour traiter des suites, trier et manipuler des listes d'objets, et implémenter un système producteur-consommateur avec des sémaphores.

Transféré par

Øthmãnę Ãckęrmãn
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
175 vues10 pages

Examen TPA 2022 2023

L'examen porte sur les exceptions, les collections, les flux, la concurrence et les threads en Java. Il contient quatre exercices qui demandent de définir des classes, méthodes et exceptions pour traiter des suites, trier et manipuler des listes d'objets, et implémenter un système producteur-consommateur avec des sémaphores.

Transféré par

Øthmãnę Ãckęrmãn
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 10

Université Abdelhamid Ibn Badis – Mostaganem 2022-2023

FSEI, Master ISI Durée : 1h30


Matière : TPA

Examen de la matière : TPA

Exercice 01 : (6 pts)
1. Qu’est ce qu’une exception Java ? Comment traiter et propager une exception en Java ?
Citer 3 types d’exceptions prédéfinies en Java.
2. Comment instancier une collection de type Set ?
3. Quel est le rôle de ces méthodes retainAll(), et containsAll() ? Donner le pseudo-code qui
correspond à ces méthodes.
4. Quels sont les principaux types de flux qu’on peut avoir sous Java ?
5. Comment remédier aux problèmes posés par les accès concurrents ? Expliquer brièvement
chaque principe.
6. Citer 2 modèles d'échange de données concurrentiel ?

Exercice 02 : (4 pts)
1. Écrire une classe Java « ShowRoomAutomobile» qui permet de créer une collection
de données nommée « ListVoituresExposees » de type ArrayList pour stocker
l’ensemble des marques de voitures suivantes :
[BMW, Renault, Mercedes, Citroën, Audi, Peugeot, Ford, Ferrari,
Volkswagen].

2. Ecrire une méthode TriMarque() qui permet de trier la liste crée précédemment par
ordre alphabétique.
Sortie prévue: Liste après le tri: [Audi, BMW, Citroën, Ferrari, Ford,
Mercedes, Peugeot, Renault, Volkswagen]

3. Écrire une méthode InverserList() pour inverser l’ensemble les éléments de la liste
triée précédemment.

4. Ecrire une méthode ElementIndiceImpairList() qui permet de retourner et d’afficher


les éléments de la liste aux indices impairs de la liste passée en argument
(ListVoituresExposees).

5. Supprimer le premier et le dernier élément de la liste qui contient les éléments à


indice pair.

6. Stocker la dernière liste manipulée dans un fichier « Marques.txt ».

Exercice 03 : (3 pts)
La suite de Fibonacci est définie par :

𝑓! = 1,
𝑓! = 1,
𝑓! = 𝑓!!! + 𝑓!!!

1. Ecrire une fonction calculant le Nième nombre de la suite.


2. L'entier saisi doit être impérativement supérieur à 0.

1
Université Abdelhamid Ibn Badis – Mostaganem 2022-2023
FSEI, Master ISI Durée : 1h30
Matière : TPA

3. Créer une classe d'exception adaptée à cette erreur pour la traiter.

Exercice 04 : (7 pts)

1. Donner le schéma qui récapitule le cycle de vie d’un thread en Java.


2. Quelles sont les politiques d’ordonnancement possibles sous Java. Donner le schéma
de la politique qui combine deux autres.
3. Utilisez les sémaphores à compteur pour implanter le système producteur-
consommateur le producteur produit 10x plus vite que le consommateur ne
consomme. Ecrire le code du producteur, et celui du consommateur.

2
Université Abdelhamid Ibn Badis – Mostaganem 2022-2023
FSEI, Master ISI Durée : 1h30
Matière : TPA

Corrigé de l’examen de la matière : TPA

Exercice 01 : (6 pts)
1. Les exceptions représentent le mécanisme de gestion des erreurs intégré au langage Java.
Ø Il se compose d'objets représentant les erreurs et d'un ensemble de trois mots clés qui
permettent de détecter et de traiter ces erreurs (try, catch et finally ) mais aussi de les
lever ou les propager (throw et throws).
Ø Parmi les exceptions prédéfinies dans Java :
o ArithmeticException : par exemple, division d’un nombre par 0.
o ClassCastException : par exemple, tentative de transformer un objet String en
Integer.
o IndexOutOfBoundsException : par exemple, appeler un index de tableau qui
n’existe. tab[10] alors que la variable tab n’a que 9 éléments par exemple.
o NullPointerException : appel d’une variable non-existante ou d’un fichier non-
existant par exemple.
o FileNotFoundException : exemple, tentative d’ouverture d’un fichier inexistant
en lecture
2. Une collection de type Set peut être instanciée comme suit :
• Set <Type> s1 = new HashSet<Type>();
• Set <Type> s2 = new LinkedHashSet<Type>();
• Set <Type> s3 = new TreeSet<Type>();

3. Le rôle des méthodes retainAll(), et containsAll() :

Ø retainAll(Collection<? extends T> collection) : permet de retirer tous les


éléments de la collection qui ne se trouvent pas dans la collection passée en
paramètre. Cette opération réalise l'intersection des deux collections.

Ø ContainsAll(Collection<? extends T> collection) : retourne true si tous les


éléments de la collection passée en paramètre se trouvent dans la collection
courante. Cette opération teste l'inclusion.

4. Les principaux types de flux qu’on peut avoir sous Java sont :
Ø Des flux basés sur des caractères : XxxReader/XxxWriter
Ø Des flux basés sur des octets : XxxInputStream/XxxOutputStream

5. On peut traiter les problèmes posés par les accès concurrents en utilisant soit :
a. Les sémaphores : Un sémaphore est constitué d'un entier s signé pouvant
prendre des valeurs positives, négatives ou nulles et d'une file d'attente
mémorisant les contextes des tâches suspendues. L'accès à la variable s est
atomique.
b. Les verrous : Les verrous sont implémentés via l'interface Lock. Cette
dernière fournit les méthodes permettant de verrouiller une section critique.

6. Parmi les modèles d'échange de données concurrentiel, on a :


Ø Le modèle producteur-consommateur.
Ø Le modèle lecteur-rédacteur.

3
Université Abdelhamid Ibn Badis – Mostaganem 2022-2023
FSEI, Master ISI Durée : 1h30
Matière : TPA

Exercice 02 : (4 pts)

import java.util.* ;

public class ShowRoomAutomobile {

static ArrayList TriMarque(ArrayList L)


{
Collections.sort(L);
System.out.println("Le contenu de la liste des marques après le tri: "+L);
return L;
}

ArrayList InverserList(ArrayList L)
{
Collections.reverse(L);
return L;
}

static ArrayList ElementIndiceImpairList(ArrayList L)


{
ArrayList ListIndImpair = new ArrayList<String>();
for (int i = 0; i < L.size(); i++)
{
if (i % 2 != 0)
{
ListIndImpair.add(L.get(i));

}
System.out.println("La liste des éléments à indice impair est : "+ListIndImpair);
return ListIndImpair;
}

static LinkedList ElementIndiceImpairList(LinkedList L)


{
LinkedList ListIndImpair = new LinkedList<String>();
for (int i = 0; i < L.size(); i++)
{
if (i % 2 != 0)
{
ListIndImpair.add(L.get(i));

4
Université Abdelhamid Ibn Badis – Mostaganem 2022-2023
FSEI, Master ISI Durée : 1h30
Matière : TPA

System.out.println("La liste des éléments à indice impair est : "+ListIndImpair);


return ListIndImpair;
}

public static void main(String[] args) {

ArrayList<String> ListVoituresExposees = new ArrayList<String>();


//[BMW, Renault, Mercedes, Citroën, Audi, Peugeot, Ford, Ferrari, Volkswagen]
ListVoituresExposees.add("BMW");
ListVoituresExposees.add("Renault");
ListVoituresExposees.add("Mercedes");
ListVoituresExposees.add("Citroën");
ListVoituresExposees.add("Audi");
ListVoituresExposees.add("Peugeot");
ListVoituresExposees.add("Ford");
ListVoituresExposees.add("Ferrari");
ListVoituresExposees.add("Volkswagen");

System.out.println("Le contenu de la liste des marques avant le tri:


"+ListVoituresExposees);

ArrayList<String> ListMarquesTriee = new ArrayList<String>


(ListVoituresExposees);
ListMarquesTriee = TriMarque(ListMarquesTriee);

LinkedList<String> ListIndImpair = new LinkedList<String>();


ListIndImpair.addAll(ListVoituresExposees);
ListIndImpair = ElementIndiceImpairList(ListIndImpair);

// supprimer le premier et le dernier élément de ListIndPair


ListIndImpair.removeFirst();
ListIndImpair.removeLast();
System.out.println("Le contenu de la liste des marques après la suppression du premier
et dernier élément : "+ListIndImpair);

try {
PrintWriter File = new PrintWriter("Marques.txt");
File.println(ListIndImpair);
File.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(ShowRoomAutomobile.class.getName()).log(Level.SEVERE,
null, ex);
}
}
}

5
Université Abdelhamid Ibn Badis – Mostaganem 2022-2023
FSEI, Master ISI Durée : 1h30
Matière : TPA

Exercice 03 : (3 pts)

import java.util.Scanner;

public class FiboException extends Exception {

public FiboException(String msg) {


super(msg);
}
}

class Fibo {
public static int fibo(int n) throws FiboException {
if (n < 0)
throw new FiboException("n < 0");
if (n == 0 || n == 1)
return 1;
return fibo(n - 1) + fibo(n - 2);

public static void main(String[] args) {


Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("Donner un entier");
int n = sc.nextInt();
try {
System.out.println("fibo(" + n + ") = " + fibo(n));
break;
} catch (FiboException e) {
System.out.println(e.getMessage());
System.out.println("Donnez une valeur supérieure à 0");
}
}
}

6
Université Abdelhamid Ibn Badis – Mostaganem 2022-2023
FSEI, Master ISI Durée : 1h30
Matière : TPA

Exercice 04 : (7 pts)

1. le schéma qui récapitule le cycle de vie d’un thread en Java.

2. Les politiques d’ordonnancement possibles sous Java sont :


Ø Politiques d'ordonnancement à priorité circulaire.
Ø Politiques d'ordonnancement à priorité pure
Ø Politiques d'ordonnancement à priorité mixte
Ø Politiques d'ordonnancement à priorité mixte et vieillissement des tâches.

Politiques d'ordonnancement à priorité mixte

7
Université Abdelhamid Ibn Badis – Mostaganem 2022-2023
FSEI, Master ISI Durée : 1h30
Matière : TPA

3. Code du système producteur-consommateur :

public class Consumer extends Thread {

Tampon zone;

public Consumer(Tampon t) {
zone = t;
}

public void run() {


int i = 0;
while (true) {
zone.consomme();
try {
System.out.println("C(message " + i + ")");
this.sleep(50);
} catch (InterruptedException e) {
};
}
}
}

class Producer extends Thread {

Tampon zone;

public Producer(Tampon t) {
zone = t;
}

public void run() {


int i = 0;
while (true) {
zone.produit("message " + i);
try {
this.sleep(5);
} catch (InterruptedException e) {
};
i++;
}
}
}

class Tampon {

8
Université Abdelhamid Ibn Badis – Mostaganem 2022-2023
FSEI, Master ISI Durée : 1h30
Matière : TPA

int taille;
int free = 0;
int n;
int next = 0;
Object[] values;

public Tampon(int max) {


n = max;
taille = max;
values = new Object[n];
}

public synchronized void produit(Object b) {


if (n == 0) {
try {
wait();
} catch (InterruptedException ex) {
};
}
values[free] = b;
free = (free + 1) % taille;
n--;
System.out.println("P(" + b + ")");
notify();
}

public synchronized Object consomme() {


if (n == taille) {
try {
wait();
} catch (InterruptedException ex) {
};
}
Object o = values[next];
next = (next + 1) % taille;
n++;
System.out.println("P(" + o + ")");
notify();
return o;
}
}

class test {

public static void main(String[] argv) {


Tampon t = new Tampon(5);
Producer p = new Producer(t);

9
Université Abdelhamid Ibn Badis – Mostaganem 2022-2023
FSEI, Master ISI Durée : 1h30
Matière : TPA

Consumer c = new Consumer(t);


p.start();
c.start();

}
}

10

Vous aimerez peut-être aussi