• Aucun résultat trouvé

Programmation avanc´ee et r´epartie en Java, TP 1

N/A
N/A
Protected

Academic year: 2022

Partager "Programmation avanc´ee et r´epartie en Java, TP 1"

Copied!
2
0
0

Texte intégral

(1)

Programmation avanc´ee et r´epartie en Java, TP 1

Fr´ed´eric Gava [email protected]

Liens utiles

— Les outils de d´eveloppement en ligne de commande JDK se trouvent sur https://www.oracle.com/java/technologies/downloads/

— La documentation de r´ef´erence de l’API se trouve sur le site

https://docs.oracle.com/en/java/javase/17/docs/api/index.html

Consignes g´ en´ erales pour les TPs

— Les TPs seront r´ealis´es sous Linux.

— Pour ´ecrire le code source, on utilisera un ´editeur tel que gedit, kate, emacs, sublim- Text . . . qui proposent tous la coloration syntaxique. Pour ce module, vous pouvez aussi utiliser un IDE tel que Eclipse ou Netbeans. Plutˆot une compilation en ligne de commande !

— Il est recommand´e de cr´eer dans son r´epertoire personnel un dossier qui contiendra tous les TPs. A la racine de ce dossier, on cr´eera un dossier pour les codes sources src, et un dossier pour les codes compil´es,build. Dans le dossiersrc, on utilisera un dossier par TP (tp1,tp2,etc.) Ce dossier correspondra `a unpackage, qui contiendra les diff´erentes classes des exercices du TP.

— En suivant l’organisation d´ecrite ci-dessus, la compilation des sources d’une s´eance de TP peut se faire avec la commande suivante, en se pla¸cant `a la racine de l’arbo- rescence de travail (qui contient les dossier srcetbuild) :

javac -d build src/tp1/*.java

L’ex´ecution d’une classe, par exempleExo1, se fait alors avec la commande suivante : java -cp build tp1.Exo1

— Il est demand´e de respecter au maximum les conventions de style Java. En particulier,

— Les noms de classe doivent commencer par une majuscule (ex :class MaClasseTresImportante {)

— Les noms de variables et de m´ethodes doivent commencer par une minuscule (ex : variable int unNombre, m´ethode void faireQuelqueChose())

— Le code doit ˆetrecorrectement indent´e!

Exercices

Exercice 1 (Des listes g´en´eriques)

R´e´ecrire le code des listes afin qu’il soit g´en´erique.

Exercice 2 ((facultatif ) Des listes circulaires)

Ecrire une classe g´´ en´erique des listes circulaires (voir explication au tableau) qui contrien- dra les m´ethodes suivantes :

— Lire l’´el´ement en cours

— Se d´ecaler sur l’´el´ement suivant (sur sois-mˆeme si la liste ne contient qu’un seul

1

(2)

´

el´ement)

— Ajout/Suppression d’un ´el´ement

— Calcul de la longueur de la liste

— Recherche de la pr´esence d’un ´el´ement dans la liste

Rappel :

sealedinterface Expr permits ConstantExpr, PlusExpr, TimesExpr{ public inteval();

}

final classConstantExpr implementsExpr { inti;

ConstantExpr(inti){ this.i = i; } public inteval(){returni;} }

//Expr e = new PlusExpr(new ConstantExpr(1), new ConstantExpr(2));

//System.out.println(e.eval());

Exercice 3 (Evaluateur)

Compl´etez le code de cette mini-calculatrice. Testez. Pour les courageux (`a la maison) rajoutez une petite interface graphique.

Exercice 4 (Avec des bool)

Rajoutez une conditionnelle (if-then-else) dans les expression de votre mini-calculatrice

Voici une autre mani`ere d’avoir des arbres binaires contenant soit des feuilles avec un entier soit un String :

sealedinterface Arbre permits BinNode, LeafInt, LeafString{ public intsize() ;

}

Chaque composante est dot´e de la m´ethode sizeet qui calcul le nombre de noeuds/feuilles de l’arbre (1 pour une feuille).

Exercice 5 (Arbre)

Codez ces composantes de 2 mani`eres diff´erentes. L’une avec des classes. L’autre avec des record. Comparez !

Exercice 6 (Arbre statique)

Rajoutez une m´ethode statique static int size(Arbre)et qui calcul le nombre de noeuds/- feuilles de l’arbre (1 pour une feuille).

Exercice 7 (Arbre bis)

Rajoutez des m´ethodes pour la hauteur de l’arbre et pour le plus grand entier.

Exercice 8 (Arbre Ternaire)

Rajoutez le cas o`u nous aurions aussi des noeuds ternaires !

2

Références

Documents relatifs

Ajoutez et testez la fonction suivante au code d´ evelopp´ e lors du TP pr´ ec´ edent : void copie(MatriceAdjacence m1, MatriceAdjacence &m2). qui recopie le contenu de la matice

I en stockant dans une variable du Makefile la description de l’OS, on peut alors donner des instructions d ´edi ´ees pour chaque OS (-fPIC est inutile sous Windows pour les

Il faut des classes final (ou record) pour maintenir la restriction de hi´ erarchie (branche) ou non−selead (mais cela limitera le

dans le cas d’un mono-processeur/coeur, c’est le Thread demandeur qui ex´ ecute le code qui est actif. sinon, le temps de r´ ecup´ erer le bool´ een d’un (imaginaire) isActif(),

Le thread qui ex´ ecute wait() est mis dans un pool d’attente ; quand il en sort il “revient” dans le bloc synchronized et entre en comp´ etition avec d’autres threads pour

1 M´ ethodes sp´ ecifiques aux Applets et qui leur permettent de demander au navigateur des informations ou des actions li´ ees au contexte : informations sur la page HTML

Une fois revenu dans votre répertoire, vous allez déplacer le fichier info.c (par exemple) vers le sous-répertoire TP que vous aurez créé auparavant, en tapant la commande :.

La méthode sleep de la classe Thread permet de suspendre un thread (le place dans l'état sleeping).. L'utilisation de la méthode sleep implique de traiter