Académique Documents
Professionnel Documents
Culture Documents
Richard Grin Bases de la programmation page 3 Richard Grin Bases de la programmation page 4
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
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
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
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
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;
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
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
Richard Grin Bases de la programmation page 45 Richard Grin Bases de la programmation page 46
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
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
Richard Grin Bases de la programmation page 57 Richard Grin Bases de la programmation page 58
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;
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 page 69 Richard Grin Bases de la programmation page 70
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
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
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
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)
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
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)
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
17