This shows you the differences between two versions of the page.
|
alf:laboratoare:01_fr_java [2023/03/05 17:03] 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 | ||
| Line 158: | Line 167: | ||
| public String role; | public String role; | ||
| } | } | ||
| + | | ||
| + | // Person.java | ||
| + | /* TODO */ | ||
| - | //Main.java | + | // Main.java |
| public static void main(String[] args) { | public static void main(String[] args) { | ||
| Person[] persons = { | Person[] persons = { | ||
| Line 167: | Line 179: | ||
| for (Person p : persons) | for (Person p : persons) | ||
| { | { | ||
| - | p.logPerson(); | + | p.logPerson(); // Name: John Doe, Age: 25, Role: Administrator; Name: Jane Doe, Age: 32, Role: Manager |
| } | } | ||
| }</code> | }</code> | ||
| - | - On dit qu'une phrase est //pangram// si elle utilise toutes les lettres d'un alphabet donné. En utilisant la classe ci-dessous, définissez les éléments manquants afin de vérifier si une phrase choisie par vous est //pangram//. (**1.5p**) <code javascript>class Pangram { | + | - On dit qu'une phrase est //pangram// si elle utilise toutes les lettres d'un alphabet donné. En utilisant la classe ci-dessous, définissez les éléments manquants afin de vérifier si une phrase choisie par vous est //pangram//. Testez aussi le code dans //main//. (**1.5p**) <code java> |
| - | private alphabet: string = 'abcdefghijklmnopqrstuvwxyz'; | + | public class Pangram { |
| - | + | private String alphabet = "abcdefghijklmnopqrstuvwxyz"; | |
| - | constructor(private phrase: string) { | + | private String phrase; |
| - | /* TODO */ | + | |
| - | } | + | public Pangram(String phrase){ |
| - | | + | /* TODO */ |
| - | isPangram(): boolean { | + | } |
| - | /* TODO */ | + | |
| - | return true; | + | public boolean isPangram(){ |
| - | } | + | /* TODO */ |
| - | }</code> | + | return true; |
| + | } | ||
| + | } | ||
| + | </code> | ||