TP 1 - Structures de données en Java
Assignment
Vous devez
accepter l'assignment d'ici est travailler avec ce
repository:
Lab 1
Tableaux
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;
Chaque élément est identifié par un entier unique appelé index;
Ils doivent être déclarés avant l'utilisation;
L'initialisation fait référence au remplissage du tableau avec des éléments;
String[] values = {"1", "2", "3", "4"};
System.out.println(values[0]); // 1
System.out.println(values[1]); // 2
Il y a aussi la classe
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.
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(3);
numbers.add(8);
numbers.add(10);
System.out.println(numbers); // [3, 8, 10]
Fonctions prédéfinies pour les tableaux
Pour ArrayList
-
-
-
-
-
-
-
-
list.toArray() - retourne un array qui contient tous les éléments de la liste;
String
La classe String est un constructeur de chaînes de caractères.
Les chaînes de caractères peuvent avoir l'une des formes suivantes :
String a = "text"; // un chaine de caractères
String b = "'text' in text";
char c = 't'; // un seul charactere
String d = "He said \"Hello World\"!"; // character escaping
Fonctions prédéfinies pour les chaînes de caractères
str.length - la longueur d'une chaîne de caractères
-
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)
str.split(regex) - divise le string dans un array avec des éléments séparés correspondant a l'expression reguliere
regex
-
-
-
-
str.trim() - on supprime tous les espaces du début et de la fin du string
-
-
-
Fonctions
En Java, toutes les méthodes (ausi nommées fonctions doivent être dans classes.
public class Main {
static void print() {
System.out.println("Hello World!");
}
public static void main(String[] args) {
print();
}
}
Arguments de la ligne de commande
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.
class Main {
public static void main(String[] args) {
for(int i = 0; i < args.length; i++){
System.out.println(args[i]);
}
}
}
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.
> javac Main.java
> java Main.java A B 23 C
A
B
23
C
Fonctions parseInt et parseFloat
parseInt()
La fonction parseInt() analyse une chaîne de caractère fournie comme parametre et renvoie un entier.
String a = "42";
int b = Integer.parseInt(a);
System.out.println(b); // 42
parseFloat()
La fonction parseFloat() permet de transformer une chaîne de caractères en un nombre réel.
String a = "42.93";
float b = Float.parseFloat(a);
System.out.println(b); // 42.93
Exercices
N’oubliez pas de télécharger sur GitHub ce que vous avez résolu jusqu'à la fin du TP!
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();
le nombre de paramètres;
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)
affiche le résultat
retourne le résultat
stocke le résultat dans une variable et l'affiche
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
)
Affichez chaque attribut de l'objet
Faites un array avec 3 objets de type Employee
Affichez l'étudiant avec la plus grande expérience
Affichez la moyenne géométrique des années d'expérience de tous les employés
Affichez la personne avec le prénom le plus longue
Affichez tous les objets en ordre alphabétique apres le nom de famille
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 un objet de type Manager
Créez une fonction qui recoit comme paramètre un string (nom d'une propriété) et qui vérifie si l'objet de type Manager a la propriété indiquée
Écrivez un programme qui retourne un tableaux avec les sous-strings d'un string donnée. (ex: ['c', 'co', 'cod', 'o', 'od', 'd'] pour le string cod) (1p)
Soit un objet de type Manager. Ecrivez un programme pour le convertir dans une liste de paires [key, value]. Par example: (
1.5p)
Manager newManager = new Manager("LastName", "FirstName", "Departement", 10, 30);
// Implementez la methode toMap()
System.out.println(newManager.toMap()); // {nom=LastName, prenom=FirstName, departement=Departement, experience=10, noSubordonnes=30}
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)
// User.java
public interface User {
public void logPerson();
}
// Admin.java
public abstract class Admin {
public String name;
public int age;
public String role;
}
// Person.java
/* TODO */
// Main.java
public static void main(String[] args) {
Person[] persons = {
new Person("John Doe", 25, "Administrator"),
new Person("Jane Doe", 32, "Manager")
};
for (Person p : persons)
{
p.logPerson(); // Name: John Doe, Age: 25, Role: Administrator; Name: Jane Doe, Age: 32, Role: Manager
}
}
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)
public class Pangram {
private String alphabet = "abcdefghijklmnopqrstuvwxyz";
private String phrase;
public Pangram(String phrase){
/* TODO */
}
public boolean isPangram(){
/* TODO */
return true;
}
}