Cours Syntaxe-Nup
Cours Syntaxe-Nup
Info 211a
Présentation de Java
Guillaume Wisniewski
[Link]@[Link]
septembre 2017
Université Paris Sud & LIMSI
1 ⇒ langage de programmation 1
Machine virtuelle
• le compilateur Java génère du byte code et non de
• un langage de programmation libre l’assembleur (langage machine)
• développé en 1995 par Sun puis racheté • le byte code est exécuté sur une machine virtuelle : la JVM
par Oracle (2009) • approche adoptée par la plupart des langages récents (.NET,
• syntaxe proche de celle du C et du C++ python, ...)
• aujourd’hui le langage le plus utilisé dans
Intérêt
le monde de l’entreprise
• objectif : multi-plateforme write once, • programmation de plus au niveau ([Link]. plus de gestion
run everywhere manuelle de la mémoire)
• indépendance de la plate-forme : windows, linux, mac, web,
téléphone, ...
2 3
Les avantages de Java Les inconvénients
• multi-plateforme
• facilité de programmation (gestion de la mémoire)
• verbeux (beaucoup de lignes pour des choses simples)
• bonnes performances
• peu de souplesse (peut-être considéré comme un avantage)
• beaucoup d’outils pour aider le développement/débugage
• coût d’entrée élevé
• beaucoup de bibliothèques ⇒ couvre tous les besoins courants
• langage universel : tous les informaticiens ont déjà fait du java
4 5
7 8
Élément d’un langage informatique Un premier programme (1)
des primitives : entités/instruction la plus simple qu’un langage 3 public static void main(String[] args) {
permette de décrire ; 4 [Link]("Hello world !");
un moyen de combiner des primitives : pour construire des 5 }
actions complexes à partir des primitives ; 6
7 }
un moyen d’abstraction : qui permet de nommer ces
combinaisons et de les manipuler compilation (javac [Link])
10 }
• seule partie utile : [Link]
• instruction pour afficher une chaine de caractères • convertie une température de degré Fahrenheit en Kelvin
• tout le reste = particularités de java que l’on verra plus tard • même instruction pour afficher
• variables
11 12
Principe
1. décomposer le problème en une suite d’instruction
2. traduire cette séquence d’instructions en java
paradigme impératif :
⇒ instructions exécutées de Exemple
manière séquentielle Pour trier un tableau :
13 14
Les variables (1) Les variables (2)
17 18
Variables Valeurs
• un type définie :
• un ensemble de valeurs
moon • un ensemble d’opérations possibles
1 String planete = "Pluton"; “Charon”
• exemple :
2 String moon = "Charon";
• int i : i peut prendre toutes les valeurs de N + définition de
3 String p = moon;
l’addition, de la soustraction, ...
4 moon = "Nix"; planet “pluton”
• String s : s est une chaı̂ne de caractères + définition de
l’addition (concaténation) et interdiction de la multiplication :
19 20
Types : exemples Les tableaux
1 String s1 = "bonjour";
2 String s2 = "tout le monde"; • ensemble de valeurs de taille fixe + ordonné
3 • déclaration :
4 String s3 = s1 + " " + s2; 1 int[] t2;
5 // s3 = "bonjour tout le monde" 2 String[] t3;
6
• création :
7 s3 = s1 - s2;
1 t = new int[5]; // t est un tableau de 5 int
8 // erreur de compilation : opération interdite
2 int[] ti = {1, n, 4};
9
Exemples Exemples
1 int a = 10;
2 for (int i = 0; i < 10; i++) {
1 int a = 10; 3 int b = 12;
2 for (int i = 0; i < 10; i++) { 4 if (b % i == 0) {
3 int b = 12; 5 [Link]("ok");
4 if (b % i == 0) { 6 int c = b % i;
5 [Link]("ok"); 7 [Link](c);
6 int c = b % i; 8 }
7 [Link](c); 9 }
8 }
Portée :
9 }
• a : 1–10
• b : 2–9
• c : 5–8
25 26
• i : 2–9
Structures de contrôle
Sélection Répétition
Structure de contrôle
Par exemple :
1 public class TestFor {
2
9 }
Exemple plus réaliste Le code
L’exemple 1 int[] temp = {20, 21, 22, 25, 26, 25, 21};
Étant donné un ensemble/une population x = (xi )ni=1 , calculez :
2
3 // calcul de la moyenne
P
• sa moyenne : x̄ = n1 × ni=1 xi 4 double acc = 0.0;
q P 5 for (int i = 0; i < [Link]; i++) {
• sa variance : σx = N1 × ni=1 (xi − x̄)2 6 acc = acc + temp[i];
7 }
Le contexte 8 double moyenne = acc / [Link];
9
• population (statistique) = ensemble (mathématique) = 10 // calcul de la déviation standard
tableau (informatique) 11 acc = 0.0;
• exemple : température de le semaine dernière : 12 for (int i = 0; i < [Link]; i++) {
lundi mardi mercredi jeudi vendredi samedi dimanche 13 acc = acc + [Link](temp[i] - moyenne, 2);
20 21 22 25 26 25 21 14 }
15 double stddev = [Link](1.0 / [Link] * acc;);
16
32 33
17 [Link]("moyenne = " + moyenne + " stddev = " + stddev);
36
Techniquement En java
37 38
39 40
41 42
Exemple no 2 : maximum d’un tableau i Exemple no 2 : maximum d’un tableau ii
12 return m;
43 44
En général
• passage par valeur : copie locale de la valeur, impossible de
modifier le paramètre
• passage par référence : les modifications des paramètres sont À quoi ça sert ?
visibles dans la méthode mère qui a appelé la méthode
En java
45 46
47 48
Exemple : intérêt de l’abstraction Et comme ça ?
49 50
Ce que l’on a vu
Lorsque l’on écrit :
Deux rôles :
1 double res = 3 * 3 * 3;
1. programmeur concepteur : concoit une fonction → doit
ou connaitre parfaitement le fonctionnement de celle-ci et
garantir l’exactitude de celle-ci
1 double res = x * x * x;
2. programmeur utilisateur : utilise une fonction → n’a besoin
notre programme est capable de calculer des cubes mais notre que de connaitre l’entête de la fonction
langage n’a pas accès au concept de élever un nombre à la
puissance 3 . Programmer c’est communiquer !
• définition d’une API (Application Programming Interface) = liste des services
La notion de fonction permet de construire des abstractions en
(fonctions) fournis par un concepteur à un utilisateur
nommant des motifs (c.-à-d. des séquences d’instructions)fréquents et de
manipuler directement ces abstractions. • programmation orientée objet = faciliter la communication
entre concepteurs et utliisateurs
51 52
Définition
Les objets
53
Définition Définition
une classe est un type de données abstrait une classe est un type de données abstrait
53 53
Définition Définition
une classe est un type de données abstrait une classe est un type de données abstrait
53 53
55 56
classe objet/instance
• 2 étapes :
1. déclaration MP3Song mySong
2. définition new MP3Song(...)
• comme pour les variables (presque)
• normal ! une classe est un type
• mySong est une référence
• initialisation par un constructeur et ses paramètres
• constructeur = même nom que la classe
57 58
59 60
Remarque préliminaire : chaine de caractères
1 public class StringExtract {
2
Attention
15 int pos = [Link] - 1;
16 String winnerLastName = elements[pos];
17
18 res[i] = [Link]();
19 i += 1;
20 }
21
63 64
a un résultat indéterminé.
65 66
Comment trouver la classe qui nous intéresse ? Utiliser une classe existante
67 68
Question préliminaire
69
10
lignes de code par jour
[Link]
[Link]
74
ou : google + java + code + conventions 75
• nom de classe : MonNomDeClasse • les signes binaires (+, = , ...) sont précédés et suivis d’un
espace
• les signes unaires (++) sont suivis d’un espace, mais pas
d’espace avant
• pas d’espaces autour des parenthèses
76 77
Exceptions
78
Exemple
79
• inconvénient :
• il faut connaitre la taille à la création
• impossible d’ajouter ou de supprimer un élément
• peu de méthodes de manipulation
• remarque : représentation directement liée à la manière dont
On veut représenter une collection d’objets les données sont stockées en mémoire
80 81
Changement de point de vue Nouvelle vision
82 83
84 85
16 [Link](taChanson);
Un autre objet : les HashMap Un peu de vocabulaire
88 89
Exemple
1 // création de l'objet
2 HashMap<String, String> annuaire = new HashMap<String, Strin
3
Remarque
92