Differences

This shows you the differences between two versions of the page.

Link to this comparison view

alf:laboratoare:01_fr_java [2023/03/05 16:37]
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 ​precedentapres 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èdentaprè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 146: Line 155:
         // Implementez la methode toMap()         // Implementez la methode toMap()
         System.out.println(newManager.toMap());​ // {nom=LastName,​ prenom=FirstName,​ departement=Departement,​ experience=10,​ noSubordonnes=30}</​code>​         System.out.println(newManager.toMap());​ // {nom=LastName,​ prenom=FirstName,​ departement=Departement,​ experience=10,​ noSubordonnes=30}</​code>​
-  - Soit le code suivant. Définissez ​le type Person et apportez les modifications nécessaires de sorte que le programme affiche la liste des objets de type Person (**1.5p**) <​code ​javascript>​interface User { +  - Soit les classes suivantes. Définissez ​la classe ​Person et apportez les modifications nécessaires de sorte que le programme affiche la liste des objets de type Person (**1.5p**) <​code ​java> 
-    name: string; +        // User.java 
-    age: number; +        public ​interface User { 
-    occupation: string+           public void logPerson()
-}+        }
  
-interface ​Admin { +        // Admin.java 
-    name: string+        public abstract class Admin { 
-    age: number+           public String ​name; 
-    role: string+           public int age; 
-}+           public String ​role; 
 +        } 
 +         
 +        // Person.java 
 +        /* TODO */
  
-export type Person = unknown; ​/* TODO: Definissez ici le type *+        ​// Main.java 
- +        ​public static void main(String[] args) { 
-export const persons: User[] /* TODO: Modifiez en Person[] ​*/ +            ​Person[] ​persons ​= { 
-    ​+                new Person("​John Doe", 25, "​Administrator"​)
-        name: 'John Doe', +                new Person("​Jane Doe", 32, "​Manager"​) 
-        age: 25, +            }; 
-        occupation: '​Chimney sweep'​ +            ​for ​(Person p persons) 
-    }+            ​
-    { +                p.logPerson(); // Name: John Doe, Age: 25, Role: Administrator;​ Name: Jane Doe, Age: 32, Role: Manager 
-        name: 'Jane Doe', +            
-        age: 32, +        }</​code>​ 
-        role: '​Administrator'​ +  - 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> 
-    ​} +   ​public ​class Pangram { 
-]+       ​private ​String ​alphabet = "abcdefghijklmnopqrstuvwxyz"
- +       private String phrase; 
-export function logPerson(userUser) {   /* TODO: Modifiez pour afficher la liste des objets Person */ +    ​ 
-    ​console.log(` - ${user.name},​ ${user.age}`); +       ​public Pangram(String ​phrase){ 
-+            /* TODO */ 
- +       ​
-persons.forEach(logPerson);​</​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 { +       public boolean ​isPangram(){ 
-    private alphabet: string ​'abcdefghijklmnopqrstuvwxyz'+            /* TODO */ 
-   +            return true; 
-    ​constructor(private ​phrase: string) { +       ​
-      /* TODO */ +   ​} 
-    +</​code>​
-   +
-    isPangram(): boolean ​+
-      /* TODO */ +
-      return true; +
-    +
-}</​code>​+
  
  
  
alf/laboratoare/01_fr_java.1678027030.txt.gz · Last modified: 2023/03/05 16:37 by alexandra.negoita02
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0