This is an old revision of the document!
TP 1 - Structures de données en Java
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 concrete comme dans le cas d'un array simple, et les elements peuvent etre ajoutees et eliminees 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 element de la liste;
String
La classe 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 :
String a = "text"; // un chaine de characteres
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 characteres
-
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 methodes (ausi nommees fonctions doivent etre 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 passes au programme dans un array args. Le tableau est un parametre 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 precedent, apres execution, le programme affichera les arguments donnees.
> 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
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)
la liste des paramètres avec console.log
le nombre de paramètres
les paramètres avec un for(à votre choix)
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 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)
Créez un objet de type Employée qui recoit ses paramètres de la ligne de commande (node index.js 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
Créez une classe Employé ayant les memes propriétés définies pour l'interface 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)
let newManager = new Manager("LastName", "FirstName", "Departement", 10, 30);
let keyValueList: (string|number)[][];
/* Here goes your code */
console.log(keyValueList); // [["nom", "LastName"], ["prenom", "FirstName"], ["department", "Departement"], ["experience", 10], ["noSubordonnes", 30]]
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)
interface User {
name: string;
age: number;
occupation: string;
}
interface Admin {
name: string;
age: number;
role: string;
}
export type Person = unknown; /* TODO: Definissez ici le type */
export const persons: User[] /* TODO: Modifiez en Person[] */ = [
{
name: 'John Doe',
age: 25,
occupation: 'Chimney sweep'
},
{
name: 'Jane Doe',
age: 32,
role: 'Administrator'
}
];
export function logPerson(user: User) { /* TODO: Modifiez pour afficher la liste des objets Person */
console.log(` - ${user.name}, ${user.age}`);
}
persons.forEach(logPerson);
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)
class Pangram {
private alphabet: string = 'abcdefghijklmnopqrstuvwxyz';
constructor(private phrase: string) {
/* TODO */
}
isPangram(): boolean {
/* TODO */
return true;
}
}