This shows you the differences between two versions of the page.
alf:laboratoare:01_fr_java [2023/03/05 17:14] alexandra.negoita02 [Exercices] |
alf:laboratoare:01_fr_java [2023/03/07 02:51] (current) alexandra.negoita02 [Assignment] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== TP 1 - Structures de données en Java ====== | ====== TP 1 - Structures de données en Java ====== | ||
+ | |||
+ | ====== Assignment ====== | ||
+ | <note warning> | ||
+ | Vous devez **accepter** l'assignment d'ici est travailler avec ce **repository**: [[https://classroom.github.com/a/_ydXjvmv|Lab 1]] | ||
+ | </note> | ||
===== Tableaux ===== | ===== Tableaux ===== | ||
Un tableau (**array**) est une collection homogène qui stocke des valeurs avec le même type de données. | Un tableau (**array**) est une collection homogène qui stocke des valeurs avec le même type de données. | ||
- | * ils sont //statiques//: une fois initialisés, leur dimension ne peut pas être modifiée | + | * Ils sont //statiques//: une fois initialisés, leur dimension ne peut pas être modifiée; |
- | * chaque élément est identifié par un entier unique appelé //index// | + | * Chaque élément est identifié par un entier unique appelé //index//; |
- | * ils doivent être déclarés avant l'utilisation | + | * Ils doivent être déclarés avant l'utilisation; |
- | * l'initialisation fait référence au remplissage du tableau avec des éléments | + | * L'initialisation fait référence au remplissage du tableau avec des éléments; |
<code java> | <code java> | ||
String[] values = {"1", "2", "3", "4"}; | String[] values = {"1", "2", "3", "4"}; | ||
Line 13: | Line 18: | ||
</code> | </code> | ||
- | * il y a aussi la classe [[https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/util/ArrayList.html|ArrayList]]. Ce classe n'a pas besoin de donner une dimension concrete comme dans le cas d'un array simple, et les elements peuvent etre ajoutees et eliminees sans limites. | + | * Il y a aussi la classe [[https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/util/ArrayList.html|ArrayList]]. Ce classe n'a pas besoin de donner une dimension concrète comme dans le cas d'un array simple, et les éléments peuvent être ajoutées et éliminées sans limites. |
<code java> | <code java> | ||
ArrayList<Integer> numbers = new ArrayList<Integer>(); | ArrayList<Integer> numbers = new ArrayList<Integer>(); | ||
Line 19: | Line 24: | ||
numbers.add(8); | numbers.add(8); | ||
numbers.add(10); | numbers.add(10); | ||
- | System.out.println(numbers); //[3, 8, 10] | + | System.out.println(numbers); // [3, 8, 10] |
</code> | </code> | ||
| | ||
Line 26: | Line 31: | ||
== Pour ArrayList == | == Pour ArrayList == | ||
* //[[https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#size--|list.size()]]// - numéro d'éléments du tableau; | * //[[https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#size--|list.size()]]// - numéro d'éléments du tableau; | ||
- | * //[[https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#get-int-|list.get(index)]]// - l'objet situe sur la position //index//; | + | * //[[https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#get-int-|list.get(index)]]// - l'objet situé sur la position //index//; |
* //[[https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#indexOf-java.lang.Object-|list.indexOf(Object o)]]// - numéro de l'indice correspondant à la premiere occurence de l'objet //element//; | * //[[https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#indexOf-java.lang.Object-|list.indexOf(Object o)]]// - numéro de l'indice correspondant à la premiere occurence de l'objet //element//; | ||
- | * //[[https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#lastIndexOf-java.lang.Object-|list.lastIndexOf(element)]]// - indice pour la derniere occurence de l'objet //element//; | + | * //[[https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#lastIndexOf-java.lang.Object-|list.lastIndexOf(element)]]// - indice pour la dernière occurence de l'objet //element//; |
* //[[https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#add-E-|list.add(element)]]// - ajouter la variable //element// au tableau; | * //[[https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#add-E-|list.add(element)]]// - ajouter la variable //element// au tableau; | ||
* //[[https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#remove-int-|list.remove(index)]]// - supprimer et retourner l'élément sur la position //index//; | * //[[https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#remove-int-|list.remove(index)]]// - supprimer et retourner l'élément sur la position //index//; | ||
- | * //[[https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#contains-java.lang.Object-|list.contains(element)]]// - retourne **vrai** si l'objet //element// est present dans la liste; | + | * //[[https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#contains-java.lang.Object-|list.contains(element)]]// - retourne **vrai** si l'objet //element// est présent dans la liste; |
- | * //[[https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#set-int-E-|list.set(index, element)]]// - remplace l'objet situe sur la position //index// de la liste avec //element//; | + | * //[[https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#set-int-E-|list.set(index, element)]]// - remplace l'objet situé sur la position //index// de la liste avec //element//; |
- | * [[https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#toArray--|list.toArray()]] - retourne un array qui contient tous les element de la liste; | + | * [[https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#toArray--|list.toArray()]] - retourne un array qui contient tous les éléments de la liste; |
===== String ===== | ===== String ===== | ||
La classe **[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html|String]]** est un constructeur de chaînes de caractères. | La classe **[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html|String]]** est un constructeur de chaînes de caractères. | ||
- | Les littéraux de chaînes de caractères peuvent avoir l'une des formes suivantes : | + | Les chaînes de caractères peuvent avoir l'une des formes suivantes : |
<code java> | <code java> | ||
- | String a = "text"; // un chaine de characteres | + | String a = "text"; // un chaine de caractères |
String b = "'text' in text"; | String b = "'text' in text"; | ||
char c = 't'; // un seul charactere | char c = 't'; // un seul charactere | ||
Line 49: | Line 54: | ||
=== Fonctions prédéfinies pour les chaînes de caractères === | === Fonctions prédéfinies pour les chaînes de caractères === | ||
- | * //[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#length()|str.length]]// - la longueur d'une chaîne de characteres | + | * //[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#length()|str.length]]// - la longueur d'une chaîne de caractères |
* //[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#charAt(int)|str.charAt(index)]]// - retourne le caractère qui se trouve a la position //index// | * //[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#charAt(int)|str.charAt(index)]]// - retourne le caractère qui se trouve a la position //index// | ||
* //[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#substring(int,%20int)|str.substring(start, end)]]// - retourne le sous-string à partir de la position //start// jusqu'à la position //end// (si le dernier paramètre manque - jusqu'a le fin du chaine) | * //[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#substring(int,%20int)|str.substring(start, end)]]// - retourne le sous-string à partir de la position //start// jusqu'à la position //end// (si le dernier paramètre manque - jusqu'a le fin du chaine) | ||
Line 55: | Line 60: | ||
* //[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#toUpperCase()|str.toUpperCase()]]// - retourne un nouveau string avec toutes les lettres majuscules | * //[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#toUpperCase()|str.toUpperCase()]]// - retourne un nouveau string avec toutes les lettres majuscules | ||
* //[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#toLowerCase()|str.toLowerCase()]]// - retourne un nouveau string avec toutes les lettres minuscules | * //[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#toLowerCase()|str.toLowerCase()]]// - retourne un nouveau string avec toutes les lettres minuscules | ||
- | * //[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(int)|str.indexOf(chr)]]// - retourne l'index de la premiere occurence du charactere //chr// | + | * //[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(int)|str.indexOf(chr)]]// - retourne l'index de la premiere occurence du caractère //chr// |
- | * //[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#lastIndexOf(int)|str.lastIndexOf(chr)]]// - retourne l'index de la derniere occurence du charactere //chr// | + | * //[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#lastIndexOf(int)|str.lastIndexOf(chr)]]// - retourne l'index de la dernière occurence du caractères //chr// |
* //[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim()|str.trim()]]// - on supprime tous les espaces du début et de la fin du string | * //[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim()|str.trim()]]// - on supprime tous les espaces du début et de la fin du string | ||
* //[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#startsWith(java.lang.String)|str.startsWith(search, index)]]// - détermine si une chaîne commence par les caractères de //search// | * //[[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#startsWith(java.lang.String)|str.startsWith(search, index)]]// - détermine si une chaîne commence par les caractères de //search// | ||
Line 63: | Line 68: | ||
===== Fonctions ===== | ===== Fonctions ===== | ||
- | En Java, toutes les methodes (ausi nommees //fonctions// doivent etre dans classes. | + | En Java, toutes les méthodes (ausi nommées //fonctions// doivent être dans classes. |
<code java> | <code java> | ||
public class Main { | public class Main { | ||
Line 76: | Line 81: | ||
===== Arguments de la ligne de commande ===== | ===== Arguments de la ligne de commande ===== | ||
- | Les arguments de la ligne de commande pour Java sont passes au programme dans un array **args**. Le tableau est un parametre pour la fonction //main//. | + | Les arguments de la ligne de commande pour Java sont passés au programme dans un array **args**. Le tableau est un paramètre pour la fonction //main//. |
<code java> | <code java> | ||
class Main { | class Main { | ||
Line 87: | Line 92: | ||
</code> | </code> | ||
| | ||
- | Pour donner des arguments dans la ligne de commande, on doit compiler (avec la commande **javac**) et executer (avec la commande **java**) le programme Java dans le **Terminal**. Pour l'exemple precedent, apres execution, le programme affichera les arguments donnees. | + | Pour donner des arguments dans la ligne de commande, on doit compiler (avec la commande **javac**) et executer (avec la commande **java**) le programme Java dans le **Terminal**. Pour l'exemple précèdent, après execution, le programme affichera les arguments données. |
<code bash> | <code bash> | ||
> javac Main.java | > javac Main.java | ||
Line 120: | Line 125: | ||
===== Exercices ===== | ===== Exercices ===== | ||
+ | |||
+ | <note warning> | ||
+ | N’oubliez pas de **télécharger sur GitHub** ce que vous avez résolu jusqu'à la **fin** du TP! | ||
+ | </note> | ||
- | - Créez un programme et exécutez-le avec des paramètres dans la ligne de commande. Sauvegardez la liste des parametres dans une variable. Affichez : (**1p**) | + | - Créez un programme et exécutez-le avec des paramètres dans la ligne de commande. Affichez : (**1p**) |
- la liste des paramètres avec //System.out.println()//; | - la liste des paramètres avec //System.out.println()//; | ||
- le nombre de paramètres; | - le nombre de paramètres; | ||
- | - les paramètres avec un //for//; | + | - les paramètres indexés, affichés avec un //for//; |
- Faites un programme qui contient une fonction //power// qui reçoit deux nombres comme paramètres, qui calcule la puissance et qui : (**1p**) | - Faites un programme qui contient une fonction //power// qui reçoit deux nombres comme paramètres, qui calcule la puissance et qui : (**1p**) | ||
- affiche le résultat | - affiche le résultat | ||
- retourne le résultat | - retourne le résultat | ||
- stocke le résultat dans une variable et l'affiche | - stocke le résultat dans une variable et l'affiche | ||
- | - A l'aide des interfaces, créez un nouveau type de données nommé Employé, qui contienne les champs suivants: //nom//, //prénom//, //département//, //expérience// (numéro) (**2p**) | + | - A l'aide des classes, créez un nouveau type de données nommé Employé, qui contienne les champs : //nom//, //prénom//, //département//, //expérience// (numéro) et les méthodes suivantes: (**2p**) |
- Créez un objet de type Employée qui recoit ses paramètres de la ligne de commande (''java Main.java NomEmp PrenomEmp ALF 3'') | - Créez un objet de type Employée qui recoit ses paramètres de la ligne de commande (''java Main.java NomEmp PrenomEmp ALF 3'') | ||
- Affichez chaque attribut de l'objet | - Affichez chaque attribut de l'objet | ||
Line 137: | Line 146: | ||
- Affichez la personne avec le prénom le plus longue | - Affichez la personne avec le prénom le plus longue | ||
- Affichez tous les objets en ordre alphabétique apres le nom de famille | - Affichez tous les objets en ordre alphabétique apres le nom de famille | ||
- | - Créez une classe Employé ayant les memes propriétés définies pour l'interface de l'exercice précedent (**1.5p**) | + | - Utilisez la même classe Employé de l'exercice précedent (**1.5p**) |
- Créez une sous-classe Manager, dérivée de la classe Employé, qui contient un champ supplémentaire //noSubordonnés// (number) | - Créez une sous-classe Manager, dérivée de la classe Employé, qui contient un champ supplémentaire //noSubordonnés// (number) | ||
- Créez un objet de type Manager | - Créez un objet de type Manager |