Vous êtes sur la page 1sur 17

Objectif du cours

ƒ Introduction à la programmation orientée objet pour


pouvoir suivre le cours de POO de L3 Miage
ƒ Aucune connaissance requise en programmation
Bases de la programmation
ƒ Les grandes étapes du cours :
ƒ programmation impérative
Université de Nice - Sophia Antipolis ƒ programmation structurée
Richard Grin ƒ les objets
Version 1.2.5 – 24/9/11 ƒ Langage utilisé : Java
http://deptinfo.unice.fr/~grin

Richard Grin Bases de la programmation page 2

Plan de cette partie


ƒ Composants d’un ordinateur
ƒ Programmes et langages informatiques
ƒ Variables, instructions Composants d’un ordinateur
ƒ Premier programme en Java ; compilation, (plus de détails dans le cours sur
exécution l’architecture des ordinateurs)
ƒ Compilation, interprétation
ƒ Exécution

Richard Grin Bases de la programmation page 3 Richard Grin Bases de la programmation page 4

Processeur Mémoire centrale Utilisation des composants (1)


Programme
ƒ Un programme est entré dans la mémoire
Données centrale (tapé au clavier ou copié depuis le
disque dur)
ƒ L’utilisateur lance l’exécution du programme
ƒ Les instructions du programme sont exécutées
Unité centrale
par le processeur
Mémoire
Entrées Périphériques ƒ Le programme utilise la mémoire centrale pour
de masse
sorties conserver des données calculées qui lui seront
utiles plus tard dans l’exécution

Richard Grin Bases de la programmation Disque dur page 5 Richard Grin Bases de la programmation page 6

1
Utilisation des composants (2) Unités de mesure
ƒ L’utilisateur peut transmettre des informations à ƒ 1 bit : unité d’information de base, chiffre binaire 0
l’aide du clavier ou de la souris ou 1
ƒ Le programme peut aussi lire des informations ƒ Octet : (byte en anglais) groupement de 8 bits
sur le disque dur ƒ K = 1000 = 103 ; Kilo ; Ko = 1000 octets
ƒ Les résultats de l’exécution sont affichés à l’écran ƒ M = 1 000 000 = 106 ; Mega ; Mo = 1000 Ko
ou enregistrés dans le disque dur (pour une ƒ G = 1 000 000 000 = 109 ; Giga ; Go = 1000 Mo
session future d’utilisation)
ƒ T = 1 000 000 000 000 = 1012 ; Tera ; To = 1000 Go
ƒ Kb = Kilobyte = Ko ; Mb, Gb,…

Richard Grin Bases de la programmation page 7 Richard Grin Bases de la programmation page 8

Codage binaire (1) Codage binaire (2)


ƒ Base 2 ; pas 10 comme les nombres que l’on a ƒ 2 bits permettent de coder 2² valeurs :
l’habitude de manipuler ƒ 00, 01, 10, 11
ƒ 0:0 ƒ On pourrait par exemple coder les nombres
ƒ 1:1 décimaux 1, 2, 3, 4
ƒ 2 : 10 (1 « deuzaine ») ƒ ou alors 0, 1, 2, 3
ƒ 3 : 11 ƒ ou alors -2, -1, 0, 1
ƒ 4 : 100 (1 deuzaine de deuzaine) ƒ …
ƒ 5 : 101
ƒ …
Richard Grin Bases de la programmation page 9 Richard Grin Bases de la programmation page 10

Calculs en binaire Codage


ƒ 0+0=0 ƒ 1 octet peut coder 28 = 256 valeurs différentes
ƒ 0+1=1 ƒ Les nombres de 0 à 257
ƒ 1 + 1 = 10 (« je retiens 1 » ou « je retiens une ƒ ou de -128 à 127
deuzaine ») ƒ ou 256 signes typographiques, par exemple,
ƒ 10 + 1 = 11 lettres majuscules et minuscules, chiffres, signes
ƒ 11 + 1 = 100 de ponctuation, symboles des opérations
ƒ 11 + 11 = 110 arithmétiques,…
ƒ Exercice : démontrer que n bits peuvent coder 2n
valeurs différentes

Richard Grin Bases de la programmation page 11 Richard Grin Bases de la programmation page 12

2
Principales caractéristiques Principales caractéristiques
des composants des composants
ƒ Processeur : « intelligence » de l’ordinateur, il sait
ƒ Mémoire centrale : rapide (accès en nanosecondes,
calculer et faire des choix (exécuter une instruction
10-9) mais volatile (valeurs perdues entre 2 sessions
ou une autre suivant le contexte : si une valeur vaut
de travail) ; capacités moyennes de quelques Go
0, faire ceci, sinon faire cela)
ƒ Mémoire périphérique : pas vraiment rapide (accès
ƒ Appelé aussi CPU (Central Process Unit)
en millisecondes) mais non volatile ; appelée
ƒ Vitesse de quelques GHz (Hz = Hertz = nombre mémoire de masse car grosses capacités de
d’opérations élémentaires par seconde) centaines de Go à quelques To
ƒ Calculs avec des entiers ou « en virgule flottante » ƒ Question : combien de fois plus lent que la mémoire
ƒ Peut contenir plusieurs cœurs pour faire des calculs centrale ?
en parallèle
Richard Grin Bases de la programmation page 13 Richard Grin Bases de la programmation page 14

Programme informatique

ƒ Il sert à résoudre un problème (faire un calcul,


exécuter des actions, aider à la prise de décision,
Programmes et langages dessiner,…)
ƒ Il est écrit dans un langage qui contient des ordres
informatiques que l’ordinateur peut « comprendre »
ƒ Ce langage contient des instructions élémentaires
qui disent à l’ordinateur ce qu’il doit faire

Richard Grin Bases de la programmation page 15 Richard Grin Bases de la programmation 16

Langages informatiques Code source – code exécutable


ƒ Un ordinateur sans aucune logiciel ne comprend ƒ Le code source est constitué des instructions d’un
que le langage implanté dans son processeur programme écrit dans un langage de haut niveau
ƒ Ce langage est de très bas niveau ƒ La traduction dans le langage de l’ordinateur
ƒ Les informaticiens écrivent des programmes en s’appelle le code exécutable
utilisant des langages de plus haut niveau (plus
proches du langage humain)
ƒ Des programmes, appelés compilateurs ou
interpréteurs, traduisent ensuite ces programmes
dans le langage du processeur

Richard Grin Bases de la programmation page 17 Richard Grin Bases de la programmation page 18

3
Langages informatiques Programmation impérative
ƒ Il existe de très nombreux langages informatiques ƒ La programmation impérative consiste à écrire un
ƒ Ces langages peuvent être regroupés en programme en donnant des instructions qui
quelques catégories principales, appelées des modifient l’état du programme (les données
paradigmes de programmation manipulées par le programme rangées dans des
ƒ Un paradigme est une façon de représenter, de variables identifiées par des noms)
modéliser une réalité ƒ Exemple :
lire x;
si (x > max)
max = x;

Richard Grin Bases de la programmation page 19 Richard Grin Bases de la programmation page 20

Programmation (orientée) objet


ƒ Manipule des objets qui s’envoient des messages ƒ Le but final de ce cours est d’introduire au
ƒ Les messages envoyés aux objets peuvent être paradigme objet
décrits en partie en utilisant la programmation ƒ Pour apprendre les bases de la programmation, il
impérative (variables et « si ») est plus simple d’étudier tout d’abord le
ƒ Exemple de code de l’objet « employé » : paradigme impératif
[comptable], quel sera mon salaire le mois prochain ?
si (salaire < maDemande -100)
[entreprise], je démissionne

Les objets entre [ ] Les messages en italiques


Richard Grin Bases de la programmation page 21 Richard Grin Bases de la programmation page 22

Instructions
ƒ Les unités de programmation d’un programme
informatique sont les instructions
ƒ Les instructions sont regroupées en modules pour
Instructions, variables gérer la complexité et pour représenter les
concepts utilisés par le langage (fonctions, objets
ou messages par exemple)
ƒ Dans le langage Java que nous allons utiliser, les
instructions sont regroupées dans des blocs
(délimités par des accolades), des méthodes (pour
les messages) et des classes (pour les objets)
Richard Grin Bases de la programmation page 23 Richard Grin Bases de la programmation page 24

4
Instruction Types d’instructions
ƒ Pour les langages habituels (langage C par
ƒ Une instruction comporte des mots-clés ou
exemple) de type impératif les grands types
symboles définis par le langage et des
d’instructions sont :
expressions qui ont une valeur au moment de
l’exécution ƒ déclaration du type d’une variable
ƒ Exemple : ƒ affectation d’une valeur à une variable
if (x == 0) ƒ alternative : selon la valeur d’une expression,
y = 5 * x; une séquence d’instructions est exécutée, ou
ƒ Les types d’instruction dépendent du langage une autre
qu’on utilise, en particulier du niveau d’abstraction ƒ répétition : une séquence d’instructions est
du langage par rapport au processeur répétée un certain nombre de fois
Richard Grin Bases de la programmation page 25 Richard Grin Bases de la programmation page 26

Variable Convention sur les noms


de variable en Java
ƒ Une variable correspond à un emplacement dans
la mémoire centrale ƒ Peut contenir des lettres et des chiffres : x12
ƒ Une variable est utilisée par le programme pour ƒ Commence par une lettre minuscule : total
enregistrer une valeur qu’il réutilisera dans la ƒ Si composé de plusieurs mots, les mots internes
suite de son exécution commencent par une lettre majuscule :
ƒ Une variable est identifiée par son nom totalDesValeurs
ƒ Affectation : enregistrer une nouvelle valeur dans
une variable ; par exemple « x = 8; »

Richard Grin Bases de la programmation page 27 Richard Grin Bases de la programmation page 28

Affectation Exemple
ƒ x = expression; x = 5;
ƒ 2 étapes bien distinctes : y = x * 3;
1. calcul de l’expression if (y >= 15) {
2. rangement de la valeur calculée à y = y + 10;
l’emplacement mémoire désigné par la variable }
ƒ Exemple :
x = x + 1; Quelle valeur aura y à la fin de ce code ?

Richard Grin Bases de la programmation page 29 Richard Grin Bases de la programmation page 30

5
Echanger la valeur de 2 variables
x = 10; x y
x = 10;
y = 15; 10 15 y = 15;
x = y;
y = x;

Quelles valeurs auront x et y à la fin de ce code ?

Richard Grin Bases de la programmation page 31 Richard Grin Bases de la programmation page 32

x y x y
10 15 x = y; ?? 15 15 x = y;

Richard Grin Bases de la programmation page 33 Richard Grin Bases de la programmation page 34

x y x y
x = 10;
15 15 10 15 y = 15;
t
ƒ La valeur 10 est perdue ! Par quelle instruction continuer ?
ƒ Il aurait fallu la conserver avant d’exécuter « x = y »
ƒ Comment conserver une valeur qui sera utilisée
ƒ Nouvelle variable t pour ranger la valeur de x qui
plus tard ?
va être « écrasée » par 15
ƒ En conservant cette valeur en mémoire centrale
ƒ Donc en l’affectant à une variable
Richard Grin Bases de la programmation page 35 Richard Grin Bases de la programmation page 36

6
x y x y
t = x; x = y;
10 15 15 15

t t
10 Et ensuite ? 10 Et ensuite ?

Richard Grin Bases de la programmation page 37 Richard Grin Bases de la programmation page 38

« = » en Java et en mathématiques
x y ƒ Ne pas confondre le « = » de l’affectation avec le
y = t;
15 10 « = » mathématique
t ƒ Il n’est pas symétrique :
10 ƒ à gauche doit se trouver un nom de variable
qui désigne un emplacement mémoire
ƒ la droite peut contenir n’importe quelle
expression qui calcule une valeur qui peut être
rangée dans l’emplacement mémoire désigné
par la gauche

Richard Grin Bases de la programmation page 39 Richard Grin Bases de la programmation page 40

Exemples Déclaration d’une variable


ƒ a = a + 1 est une équation mathématique qui n’a ƒ En Java, toute variable doit être déclarée avant
pas de solution d’être utilisée
ƒ a = a + 1, en Java, incrémente de 1 la valeur de ƒ La déclaration d’une variable indique le type des
la variable a données qu’elle contiendra
ƒ a + 5 = 25 n’a aucun sens en Java car « a + 5 » ƒ Une valeur entière est déclarée de type « int »
ne désigne aucun emplacement mémoire (integer = entier en anglais)

Richard Grin Bases de la programmation page 41 Richard Grin Bases de la programmation page 42

7
Code pour échanger les valeurs de x et y Déclaration d’une variable
int x; int x;
int y; int y;
x = 10; Qu’est-ce qu’il manque ? int t;
y = 15; x = 10;
x = y; y = 15;
y = x; t = x;
x = y;
y = t;

Richard Grin Bases de la programmation page 43 Richard Grin Bases de la programmation page 44

Initialisation dans la déclaration Déclaration/initialisation


de plusieurs variables
ƒ Il est possible d’affecter une valeur initiale à une
variable lors de sa déclaration : ƒ Plusieurs variables de même type peuvent être
int x = 10; déclarées (et même initialisées) dans une seule
int y = 15; instruction :
int t = x; int x, y;
x = y; int m = 5, n = 10;
y = t;

Richard Grin Bases de la programmation page 45 Richard Grin Bases de la programmation page 46

Le type ne peut être changé Bloc d’instructions


ƒ En Java, le type d’une variable ne peut être ƒ Presque tous les langages ont besoin de
changé regrouper des instructions
ƒ Ce code est interdit : ƒ En Java les accolades permettent de regrouper
int x; plusieurs instructions en un bloc d’instructions

double x;

Richard Grin Bases de la programmation page 47 Richard Grin Bases de la programmation page 48

8
Exemple Portée d’une variable
int x = z + 3; ƒ La portée d’une variable désigne la portion du
int y = w * 2; programme où la variable peut être utilisée
int t; ƒ Portée d’une variable en Java :
if (x < y) { ƒ de l’endroit où elle a été déclarée
t = x; ƒ jusqu’à la fin du bloc où elle a été déclarée
x = y;
y = t;
} Que fait ce code ?

Richard Grin Bases de la programmation page 49 Richard Grin Bases de la programmation page 50

Exemple Langages typés


int x = …; ƒ Java est un langage typé : on doit déclarer le type
int y = …; d’une variable avant de l’utiliser
if (x < y) { ƒ Il existe d’autres langage non typés (Javascript,
int t = x; par exemple, pour programmer les clients Web)
x = y; Portée de t dans lesquels les types des variables ne sont pas
y = t; indiqués dans le programme
}
ƒ Les langages typés sont moins souples mais plus
int z = t + 2;
sûrs car davantage d’erreurs du développeur
Erreur !
peuvent être détectées par le langage (par
exemple une erreur dans le nom de la variable)
Richard Grin Bases de la programmation page 51 Richard Grin Bases de la programmation page 52

Afficher la valeur d’une variable (1) Afficher la valeur d’une variable (2)
ƒ La « formule magique » (sera expliquée plus tard) ƒ System.out.print(x);
pour faire afficher sur l’écran la valeur d’une affiche la valeur de la variable, sans passer
variable x est ensuite à la ligne
System.out.println(x);
ƒ Exemple :
ƒ Exemple : x = 10;
x = 10; y = 20;
System.out.println(x); System.out.print(x);
affichera 10 sur l’écran, suivi d’un passage à la System.out.println(y);
ligne affiche 1020 sur l’écran, suivi d’un passage à la
ligne

Richard Grin Bases de la programmation page 53 Richard Grin Bases de la programmation page 54

9
Afficher un texte Variable de type texte
ƒ System.out.print("Hello world"); ƒ Une variable peut contenir un texte
affiche « Hello world » sur l’écran ƒ Il faut la déclarer de type String :
ƒ System.out.println("Hello world"); String nom = "Dupond";
affiche « Hello world » sur l’écran, et passe à la
ligne ensuite

Richard Grin Bases de la programmation page 55 Richard Grin Bases de la programmation page 56

Nombres à virgule Affichage texte et nombre


ƒ Le type double indique une variable qui peut ƒ Soit la ligne de code
contenir un nombre à virgule (remplacée par un int x = 10;
« . ») : ƒ Comment faire afficher « Valeur de x = 10 »
double largeur = 12.5; en utilisant la variable x ?
ƒ Le nombre de chiffres après la virgule n’est pas ƒ System.out.print("Valeur de x = ");
fixé ; le type double désigne des nombres à System.out.println(x);
« virgule flottante » ƒ En fait on peut aussi utiliser la concaténation des
chaînes de caractères de Java :
System.out.println("Valeur de x = " + x);
(le nombre entier 10 est traduit par Java en String)

Richard Grin Bases de la programmation page 57 Richard Grin Bases de la programmation page 58

Commentaires en Java (1) Commentaires en Java (2)


ƒ Lorsqu’un programme contient du code qui n’est ƒ 3 façons d’ajouter des commentaires
pas complètement évident il est important ƒ En fin de ligne (ne peut couvrir plusieurs lignes) :
d’ajouter des commentaires pour l’expliquer x = 12; // pour indiquer que ….
ƒ En effet, un programme utile sera souvent modifié ƒ Juste avant le code (une ou plusieurs lignes) :
pour l’adapter à un changement de contexte ou /* Pour indiquer que … */
pour corriger des erreurs ; le code doit donc être x = 12;
facilement compris par les développeurs futurs ƒ Idem /* mais pour la javadoc (avant déclarations
qui le modifieront ou définitions) :
/** Pour indiquer que … */
int x = 12;

Richard Grin Bases de la programmation page 59 Richard Grin Bases de la programmation page 60

10
Commentaires en Java (3)
ƒ Pour faire plus joli et pour la lisibilité :
/**
* Pour indiquer que … Premier programme en Java ;
*
*/ compilation,
ƒ « // » Peut aussi s’utiliser sur une seule ligne exécution
avant l’instruction ou le bloc d’instructions à
commenter :
// Pour indiquer que ….
x = 12;

Richard Grin Bases de la programmation page 61 Richard Grin Bases de la programmation 62

Le code source du premier programme Le code source du premier programme


classe HelloWorld
méthode main
public class HelloWorld { public class HelloWorld {
public static void main(String[] args){ public static void main(String[] args){
System.out.println("Hello world"); System.out.println("Hello world");
} }
} }
ƒ La classe Helloworld contient une seule méthode :
ƒ La classe Helloworld est public, donc le fichier qui
main
la contient doit s’appeler
HelloWorld.java ƒ Signature de la méthode main : String[] args
Un seul paramètre de type « tableau de chaînes de
caractères » (étudié plus tard dans le cours)
Richard Grin Bases de la programmation 63 Richard Grin Bases de la programmation 64

Méthode
ƒ Une méthode static, comme la méthode main,
correspond à un message que la classe peut
recevoir
ƒ Si une classe reçoit un message, elle exécute le
code contenu dans la méthode correspondante
Compilation, interprétation
ƒ La méthode qui s’appelle main est particulière :
c’est le message qui est envoyé à la classe si on
lance son exécution
ƒ Si on lance l’exécution de la classe HelloWorld,
celle-ci va afficher « Hello World » sur l’écran
Richard Grin Bases de la programmation page 65 Richard Grin Bases de la programmation page 66

11
Compilation d’un code source La compilation
Programme écrit par
ƒ Un code source ne peut être exécuté directement Code source
un développeur
par un ordinateur
ƒ Il faut traduire ce code source dans un langage que
l’ordinateur (le processeur de l’ordinateur) peut
Compilateur
comprendre
ƒ Un compilateur est un programme qui effectue cette
traduction
Programme dans le
Code exécutable
langage de la machine

Richard Grin Bases de la programmation 67 Richard Grin Bases de la programmation 68

Exécution Maintenance d’un programme


ƒ Lorsqu’un programme a été compilé, on peut faire ƒ En fait, il faut garder le code source pour le cas
exécuter le code exécutable (certain) où le développeur voudrait modifier le
ƒ Le code source n’est pas utilisé pour l’exécution ; programme
on pourrait très bien le supprimer ƒ Un programme est très souvent modifié
ƒ pour corriger les erreurs (son comportement
n’est pas correct ou les résultats sont faux)
ƒ pour ajouter des fonctionnalités

Richard Grin Bases de la programmation page 69 Richard Grin Bases de la programmation page 70

JDK Compilation avec javac


ƒ Le JDK fournit le compilateur javac (java compiler)
ƒ Lorsqu’on télécharge Java pour écrire des
programmes, on récupère le JDK (Java ƒ javac HelloWorld.java
Development Kit) crée un fichier « HelloWorld.class » qui contient le
code exécutable, et le place dans le même répertoire
ƒ Le JDK contient : que le fichier « .java »
ƒ Des outils de développement (javac, java,
ƒ Le fichier à compiler peut être désigné par un chemin
javadoc,…)
absolu ou relatif :
ƒ De très nombreuses classes déjà écrites et javac util/Liste.java
que l’on peut utiliser quand on écrit des
programmes ; par exemple la classe System
(System.out.println("Hello world"))
Richard Grin Bases de la programmation page 71 Richard Grin Bases de la programmation 72

12
Exécution du programme Exécution du programme
ƒ Pour exécuter le programme exécutable ƒ Attention ! pas
(HelloWorld.class) on utilise la commande java HelloWorld.class
« java » fournie par le JDK mais
ƒ java HelloWorld java HelloWorld
exécute le code de la méthode main de la classe ƒ HelloWorld est un nom de classe et pas un
HelloWorld nom de fichier. Donc
ƒ on ne peut pas donner un chemin
ƒ pas de suffixe .class

Richard Grin Bases de la programmation page 73 Richard Grin Bases de la programmation page 74

Où doit se trouver le fichier .class ? Classpath


ƒ java HelloWorld ƒ L’option –classpath de java (et de javac)
HelloWorld.class doit se trouver dans le classpath permet d’indiquer où la commande doit aller
ƒ Le classpath peut recevoir une valeur avec l’option chercher les classes dont elle a besoin
-classpath de la commande java : ƒ Cette option permet d’indiquer un ou plusieurs
java –classpath rep1/rep2 HelloWorld emplacements dans l’arborescence des fichiers
ƒ Par défaut le classpath est le répertoire courant ƒ Le séparateur entre plusieurs emplacements est
« : » en Linux et « ; » en Windows

Richard Grin Bases de la programmation 75 Richard Grin Bases de la programmation page 76

Exemples de classpath Programme Java


ƒ Sous Unix : ƒ Il peut être composé d’une ou de plusieurs
.:~/java/mesclasses1:~/mesclasses2 classes
ƒ Sous Windows : ƒ Toutes les classes qui se trouvent dans le
.;c:\java\mesclasses1;c:\mesclasses2 classpath peuvent être utilisées par le programme
(en plus des classes fournies par le JDK)

Richard Grin Bases de la programmation page 77 Richard Grin Bases de la programmation page 78

13
Exemple Conventions pour les identificateurs Java
ƒ Dans le TP 2, une classe Console sera fournie ƒ Les noms de classes commencent par une
ƒ Cette classe contient la méthode readInt() majuscule :
Cercle, Object
pour lire la valeur d’un entier au clavier
ƒ Il suffira de mettre le fichier Console.class ƒ Les noms de variable commencent par une
minuscule
dans le répertoire courant pour pouvoir utiliser la
ƒ Les mots contenus dans un identificateur
classe Console :
commencent par une majuscule :
int x = Console.readInt();
UneClasse, uneMethode,
met dans la variable x la valeur tapée au clavier uneAutreVariable
par l’utilisateur

Richard Grin Bases de la programmation page 79 Richard Grin Bases de la programmation page 80

Compilation en Java → bytecode La compilation fournit du bytecode

ƒ En Java, le code source n’est pas traduit directement Programme écrit en Java Programme source
UneClasse.java
dans le langage de l’ordinateur
ƒ Il est d’abord traduit dans un langage appelé
« bytecode », langage d’une machine virtuelle (JVM ;
Java Virtual Machine) définie par Sun Compilateur

ƒ Ce langage est indépendant de l’ordinateur qui va


exécuter le programme
Programme en bytecode, Bytecode
indépendant de l’ordinateur UneClasse.class

Richard Grin Bases de la programmation 81 Richard Grin Bases de la programmation 82

Exécution du bytecode Utilité de la JVM

ƒ Le bytecode doit être exécuté par une JVM ƒ Du code exécutable Java (fichier .class) peut
facilement être transportable d’un ordinateur à
ƒ Cette JVM n’existe pas ; elle est simulée par le
l’autre, même s’ils ne possèdent pas le même
programme java qui interprète le bytecode :
type de processeur
ƒ lit les instructions (en bytecode) du programme
ƒ Très utile pour exécuter du code récupéré sur le
.class,
Web
ƒ les traduit dans le langage natif du processeur
ƒ Sans cette JVM il faudrait récupérer le code
de l’ordinateur
source et le recompiler (opération lourde si le
ƒ lance leur exécution programme contient beaucoup de code)

Richard Grin Bases de la programmation 83 Richard Grin Bases de la programmation page 84

14
Langages compilés ou interprétés Langages interprétés
ƒ Java est un langage compilé : un programme ƒ L’interpréteur est présent pendant l’exécution
Java doit être traduit en entier par un compilateur ƒ Il lit d’abord une instruction, puis la traduit dans le
avant d’être exécuté langage du processeur pour la faire exécuter
ƒ Des langages n’ont pas d’étape de compilation ; ƒ Il lit ensuite l’instruction suivante pour la traduire
on les appelle des langages interprétés et la faire exécuter et ainsi de suite…
ƒ Le code source est interprété pendant l’exécution ƒ Comme un interprète qui traduit un discours au
par un interpréteur fur et à mesure qu’il est prononcé

Richard Grin Bases de la programmation page 85 Richard Grin Bases de la programmation page 86

Avantages et inconvénients Question


de la compilation
ƒ Les langages interprétés sont souvent plus ƒ A quel moment avons-nous déjà rencontré un
souples mais moins sûrs que les langages interpréteur dans ce cours ?
compilés
ƒ En effet, un grand nombre d’erreurs de
programmation peuvent être détectées dans
l’étape de la compilation, ce qui évite des erreurs
pendant l’exécution
ƒ L’exécution avec un langage interprété est sont
souvent moins rapide, car elle est ralentie par la
traduction pendant l’exécution
Richard Grin Bases de la programmation page 87 Richard Grin Bases de la programmation page 88

Erreurs détectées à la compilation (1) Erreurs détectées à la compilation (2)


ƒ La compilation vérifie que les instructions du ƒ Le compilateur vérifie aussi que le type des
programme ont bien un sens (en accord avec la expressions est correct ; par exemple,
définition du langage utilisé) ; elle vérifie la l’instruction suivante provoquera une erreur à la
syntaxe du programme compilation :
int x = "La valeur est " + y;
ƒ Par exemple, le compilateur indiquera une erreur
s’il manque un « ; » à la fin d’une instruction ƒ Le code exécutable ne sera produit que si le code
source ne contient aucune erreur (de syntaxe ou
de typage)

Richard Grin Bases de la programmation page 89 Richard Grin Bases de la programmation page 90

15
Erreurs à l’exécution Tests
ƒ Le compilateur ne peut pas tout vérifier ; il vérifie ƒ Il est difficile d’écrire un grand nombre de lignes
que le programme a un sens mais il ne peut pas correctement du premier coup
vérifier que ce sens est bien celui que le ƒ Des méthodes de programmation donnent des
programmeur voulait lui donner recettes pour éviter au maximum les erreurs mais
ƒ L’exécution du programme peut donc ne pas l’écriture de tests est indispensable pour éliminer
donner le résultat prévu le plus d’erreurs possibles avant l’utilisation en
ƒ Des erreurs peuvent même empêcher le production du code
programme de fonctionner, par exemple si une
valeur saisie par l’utilisateur provoque le calcul de
la racine carrée d’un nombre négatif
Richard Grin Bases de la programmation page 91 Richard Grin Bases de la programmation page 92

Votre environnement de
développement
ƒ Éditeur de texte pour taper le code source (emacs ou
un autre, mais avec indentation automatique en java) ;
il doit fournir du texte pur, pas du texte formaté
comme le fait Word
Complément sur les variables :
ƒ Compilateur pour transformer le code source en les constantes en Java
bytecode (javac)
ƒ Interpréteur de bytecode pour exécuter le programme
(java)

Richard Grin Bases de la programmation 93 Richard Grin Bases de la programmation page 94

Déclaration d’une constante Exemple


ƒ Lorsqu’un programme utilise la même valeur public class Cercle {
constante à plusieurs endroits, il est bon de créer public static final double PI = 3.14;
une constante nommée pour la désigner
ƒ Exemple : public static void main(String[] args) {
final static double PI = 3.14; double rayon = …;
double surface = PI * rayon * rayon;
ƒ Cette déclaration doit être mise en dehors de

toute méthode ; il est d’usage de la mettre au
}
début de la classe
}
ƒ En Java la convention est de mettre le nom d’une
constante en majuscule : UNE_CONSTANTE
Richard Grin Bases de la programmation page 95 Richard Grin Bases de la programmation page 96

16
Utilisation d’une constante Visibilité d’une constante
ƒ Le programme ne pourra la modifier ƒ Si la définition de la constante est précédée de
ƒ PI = PI + 1.2; private, elle n’est utilisable que dans la classe
provoquera une erreur à la compilation ƒ Si elle est précédée de public, la constante est
utilisable en dehors de la classe, en préfixant son
nom par le nom de la classe ; par exemple :
x = 2 * Cercle.PI;

Richard Grin Bases de la programmation page 97 Richard Grin Bases de la programmation page 98

Avantages de la
déclaration d’une constante
ƒ Le nom de la constante et les éventuels
commentaires documentent la valeur
ƒ Il est facile de changer la valeur en ne modifiant
qu’une seule instruction

Richard Grin Bases de la programmation page 99

17

Vous aimerez peut-être aussi