Sie sind auf Seite 1von 10

Introduction la programmation Java

Objectifs du cours daujourdhui


Introduire les bases de la programmation Dveloppement de programmes en Java Bases du langage Java
Variables Expressions et oprateurs (arithmtiques)

Redouane EZZAHIR red.ezzahir@gmail.com

R. EZZAHIR

R. EZZAHIR

Programme
Une fois que lon a un algorithme, on pourrait par exemple limplmenter en langage machine Assembleur :

Langage volu
Langage se rapprochant dune langue naturelle

plus proche de notre faon de conceptualiser le programme ! Example(JAVA)

class Salut { public static void main (String[] args) { System.out.println("Salut!"); } }


00000100000010100000010100000000000010100000000000000011 000000110000000100001010000000111000001100000010
R. EZZAHIR 3 R. EZZAHIR 4

Interprteur/Compilateur

Interprteur/Compilateur (2)
Compilateur et Interprteur sont des traducteurs de langage de programmation de haut niveau en sries dinstructionsmachine directement excutables par lordinateur.

Comment rendre les instructions plus sophistiques comprhensibles par lordinateur ?


traduire les squences dinstructions de haut niveau en instructions-machine directement excutables par le microprocesseur Selon ses caractristiques, un tel traducteur est appel compilateur ou interprteur. L'ensemble des instructions de plus haut niveau quun compilateur ou un interprteur est capable de traiter constitue un langage de programmation.

La diffrence rside dans la manire dont la traduction est ralise :


le compilateur traduit les programmes dans leur ensemble : tout le programme doit tre fourni en bloc au compilateur pour la traduction linterprteur traduit les programmes instruction par instruction dans le cadre dune interaction continue avec lutilisateur

Java utilise les deux !


5 R. EZZAHIR 6

R. EZZAHIR

Plan
Introduire les bases de la programmation Dveloppement de programmes en Java Bases du langage Java
Variables Expressions et oprateurs (arithmtiques)

Compilation dun programme: Architecture en C


Code en Ascii Compilateur

010 010

010 010

Le code est compil sous forme objet relogeable L'diteur de liens lie les diffrentes bibliothques entre elles pour crer l'excutable

Editeur de lien
010

Plateforme + OS
7 8

R. EZZAHIR

R. EZZAHIR

Compilation dun programme: Architecture en Java


Code en Unicode Compilateur

0xCaf 0xCaf 0xCaf 0xCaf 0xCaf 0xCaf

Compilation dun programme Java


fichier source compilation Byte code commande : javac Salut.java excutable interprtation

Le code est compil dans un code intermdiaire (byte-code) La Machine Virtuelle charge les classes et interprte le code VM

API

Salut.class b- ! p qs tu twxy<iit>b()

salut.java class Salut { public static void main (String[] args) { System.out.println("Salut!"); } }
commande : java Salut Salut!

Plateforme + OS
R. EZZAHIR 9

Linterprteur Java sappelle la machine virtuelle Java (Java Virtual Machine (JVM))
R. EZZAHIR

10

Notion de bytecode
Bytecodes Java langage intermdiaire entre compilation et excution :

Indpendance de la plateforme
Le bytecode rend le programme indpendant de la plateforme
Possibilit de dmarrer le programme sur un autre processeur sans recompilation

Langage dans lequel est compil un programme Java :


javac Salut.java produit Salut.class contenant des bytecodes.

Lide de la platform independence (et de Java) :


Write once, run anywhere

Le terme bytecode vient de byte car chaque instruction de la JVM est code laide dun byte chaque instruction correspond un opcode de 8 bits. Exemple : laddition de deux entiers est reprsent par lopcode IADD et correspond 60 en hexadcimal.

Salut.java autre processeur

Compilation + interprtation ncessaire La compilation est lente Le compilateur est un gros programme

Salut.class autre processeur Seulement linterprtation est ncessaire Linterprtation est rapide La JVM est petite

R. EZZAHIR

11

R. EZZAHIR

12

Indpendance de la plateforme (2)


JVM

Indpendance de la plateforme (3)


Le byte-code assure la portabilit entre diffrents environnements (machine/OS)

Atari JVM Macintosh

JVM Sun Sparc JVM DEC Alpha JVM PC Pentium

javac

0xCaf 0xCaf

0xCaf 0xCaf

JVM EPFL:Sun Sparc Java Salut.class Salut.java C++ Salut.o Salut.cc

bytecode VM MacOS VM Linux VM Windows

Java : La JVM pour processeurs Intel ou AMD peut interprter du bytecode gnr sur Sparc. C++ : le code sur Pentium est inutilisable sur Sparc (sauf ventuelle cross-compilation)
R. EZZAHIR 13 R. EZZAHIR

Et Solaris, HP-UX, BSD etc...


14

Cycle de dveloppement
1. criture Code source Salut.java 2. Compilation commande javac Byte code Salut.class 3.Interprtation commande java 5.Correction

Cycle de dveloppement (2)


Les phases dcriture et de Correction sont effectues laide dun diteur de texte (emacs, Xemacs, gedit, notepad, . . . ).
Exemple : gedit Salut.java

La phase de Compilation se fait laide de la commande javac. Exemple : javac Salut.java


La compilation produit un fichier .class. Exemple : le fichier Salut.class est gnr par le compilateur

Code Machine Excution directe 4.test


R. EZZAHIR 15

La phase dInterprtation se fait laide de la commande java.


Exemple : java Salut
R. EZZAHIR 16

Plan
Introduire les bases de la programmation Dveloppement de programmes en Java Bases du langage Java
Variables Expressions et oprateurs (arithmtiques)

Le langage Java
Le langage Java est un langage orient objet un des langages objets les plus utiliss ! Parmi les avantages de Java, on peut citer :
langage populaire, une grande bibliothque de fonctionnalits prdfinies, un typage fort, ce qui permet au compilateur d'effectuer de nombreuses vrifications lors de la compilation ) moins de bugs... , langage indpendant de la plateforme, langage adapt aux systmes de communications (programmation distribue).

R. EZZAHIR

17

R. EZZAHIR

18

Structure gnrale dun programme Java


Le programme Java le plus simple... et le plus inutile (car il ne fait rien !) est le suivant : class Rien { public static void main(String[] args){} } Ce programme dclare la classe Rien contenant la mthode main, qui est ncessaire pour produire du bytecode interprtable par la JVM. De plus il dclare que :
cette mthode est vide : son corps (dlimit par { et }) est vide, cette mthode ne retourne rien : cst le void devant le nom de la mthode.

Classes, mots-cls et identificateurs


class
Marque le dbut dune classe Mot-cl = mot rserv de la syntaxe

Classe = brique de base (description dun type de donnes)


Un programme possde souvent plusieurs classes Pour commencer : 1 classe/programme

Rien
Nom de la classe (du programme) Identificateur = nom choisi (presque) librement par le programmeur

R. EZZAHIR

19

R. EZZAHIR

20

Fichiers, blocs et mthodes


Convention (obligatoire !) :

La mthode main
En-tte de la mthode main :
public static void main(String[] args)

Rutilisation de lidentificateur qui dcrit le nom de la classe Nom du fichier qui stocke le programme = Nom de la classe + .java Rien.java (quon dite dans Eclipse, par exemple) Premire et dernire accolade Bloc { } Marque les limites de la classe Contenu dune classe : Diverses instructions Pour commencer : 1 mthode/classe Mthode : En-tte spcifiant lidentit de la mthode Bloc dinstructions excuter
R. EZZAHIR 21

Pour commencer :
En-tte standard apprendre par coeur Chaque programme possde une mthode main

Lors du dmarrage du programme :


La mthode main est recherche Son bloc dinstructions est excut Sil ny a pas de mthode main, le programme ne dmarre pas
R. EZZAHIR 22

Plan
Introduire les bases de la programmation Dveloppement de programmes en Java Bases du langage Java
Variables Expressions et oprateurs (arithmtiques)

Variables : Dfinition
Une variable est dcrite laide de trois caractristiques :
Son identificateur qui est le nom par lequel la donne est dsigne. Exemples : b, delta, myWindow, ... Son type qui dfinit de quel genre est la donne associe la variable, en particulier, quels traitements elle peut (et ne peut pas) subir. Cette caractristique sera gnralise plus tard en la notion de classe. Exemples : double, int, String, ... Sa valeur littrale qui permet de dfinir sa valeur. Par exemple, si la donne est un nombre, sa reprsentation pourra tre (selon les conventions de reprsentation) : 123, -18, 3.1415, 2e-13, . . .

R. EZZAHIR

23

R. EZZAHIR

24

Variable = zone mmoire

Dclaration et initialisation de variables


En Java, une variable doit tre dclare avant dtre utilise. La syntaxe de la dclaration dune variable est : type identificateur ; o type est lidentificateur de type de la variable dclare et identificateur est une chane de caractres permettant de rfrer la variable cre et donc de lutiliser dans un programme.

int i = 121; char car = C; double x = 12.98705;

Exemples :

int val ; double delta ;

R. EZZAHIR

25

R. EZZAHIR

26

Dclaration (2)
Les principaux types lmentaires dfinis en Java sont : int : les nombres entiers double : les nombres rels char : les caractres boolean : les valeurs logiques vrai (true) et faux (false) Note : nous verrons plus tard dautres types : les types composs et la gnralisation des types par la notion de classe Un identificateur de variable peut tre nimporte quelle squence compose de lettres, de chiffres ou du caractre et commenant par une lettre ou par _. Remarque : un identificateur ne peut pas correspondre un mot rserv du langage (if, else, while, ..., voir plus tard au long du cours).
R. EZZAHIR 27

Conventions de nommage en Java


Nom de classe :
Commencez chaque mot par une majuscule HelloWorld MonPremierProgramme

Nom de variable ou mthode :


Commencez chaque mot par une majuscule, sauf le premier
maPremiereVariable maPremiereMethode nb1 main

Usage non recommand :


mapremierevariable ma_premiere_variable
R. EZZAHIR 28

Le type int
Une variable de type int peut contenir un nombre entier :

Le type double
Une variable de type double peut contenir un nombre dcimal :
max 8 octets = 64 bits

max 4 octets (bytes) = 32 bits [-2147483648, +2147483647] [-231, 231-1] Dautres types pour les nombres entiers : (pas utiliss dans ce cours) byte (1 octet) short (2 octets) long (8 octets) Plusieurs variables de mme type peuvent tre dclares ensemble : int maPremiereVariable, x; int y; short nb1, nb2; . . . mais il est conseill de ne dclarer quune variable par ligne.
R. EZZAHIR 29

[ 1.79769313482631570 10308 ] criture dune valeur double :


Point au lieu de virgule, e au lieu de 10 en notation scientifique

Exemples : double x = 4.712; double y = 53.17e15; Autre type pour les nombres dcimaux : (pas utilis dans ce cours)
float (4 octets)
R. EZZAHIR 30

Initialisation
En mme temps qu'elle est dclare, une variable peut tre initialise, c'est--dire quon lui donne une premire valeur avant mme toute utilisation. Note : Java ne vous laissera pas utiliser une variable non initialise. La syntaxe de la dclaration/initialisation dune variable est : type identificateur = valeur dinitialisation ; o valeur dinitialisation est nimporte quelle constante (i.e., valeur littrale) ou expression du type indiqu. Exemples : int val = 2 ; double pi = 3.1415 ; char c = a ; int j = 2*val+5 ;
R. EZZAHIR

Valeurs Littrales

Valeurs littrales de type entier : 1, 12, ... Valeurs littrales de type rel : 1.23, ...
Remarque :
12.3e4 correspond 12.3 104 (soit 123000) 12.3e-4 correspond 12.3 104 (soit 0.00123)

Valeurs littrales de type caractre : a, !, ... Valeurs littrales de type boolen : true, false

int val ; double pi = 3.1415 ; char c = a ; int j = 2*val+5 ;


31

R. EZZAHIR

32

Donnes modifiables/non modifiables

Affectation
Lopration daffectation affecte une valeur une variable. En Java, la syntaxe dune affection est :
identificateur = valeur ; o valeur est une constante ou une expression (voir plus loin) du mme type que la variable rfrence par identificateur .

Par dfaut les variables en Java sont modifiables. Mais on peut vouloir imposer que certaines variables ne le soient pas : dfinir des constantes La nature modifiable ou non modifiable dune donne peut tre dfinie lors de la dclaration par lindication du mot rserv final. Elle ne pourra donc plus tre modifie par le programme (toute tentative de modification produira un message d'erreur lors de la compilation). Exemple : final double PI = 3.141592653 ; Convention de nommage pour les constantes : on utilise des lettres majuscules, au besoin spare par les _.

Exemple : i = 3 ; On peut aussi dire quon assigne une valeur une variable.

R. EZZAHIR

33

R. EZZAHIR

34

Bien comprendre laffectation


Exemple : x=x+1; C'est une instruction qui dcrit un processus dynamique :
1. lire le contenu de la case mmoire correspondant x 2. ajouter 1 ce contenu (sans modifier x ici) ; 3. mettre le rsultat dans la case mmoire correspondant x

Rutilisation dune variable


Que se passe-t-il si lon rutilise une variable ?
Laffectation remplace lancienne valeur Comme vu prcdemment, la partie droite est value avant laffectation
int x; int y; x = 1; // x vaut 1 y = 2; // y vaut 2 x = 3; // x vaut 3 y = x; // y vaut 3 x = x + 1; // x vaut 4 x = x - y; // x vaut 1

Notez bien quil ny a pas de cycle ! L'expression n'est value quune seule fois. Pour rsumer :
si la valeur de la variable x est 4 avant linstruction x = x + 1 ;

sa valeur aprs cette instruction est 5.


R. EZZAHIR 35 R. EZZAHIR

36

Typage fort
Pourquoi des types diffrents ? Vrification de la logique du programme Utilisation efficace de la mmoire Java est un langage typage fort : Chaque variable a un type La valeur doit tre du mme type que la variable On ne peut (normalement) pas mlanger des variables de type diffrent Les rgles pour int et double sont plus souples : Transtypage automatique : int ) double Transtypage explicite (explicit cast) : double ) int
R. EZZAHIR 37

Typage fort (2)


Un int droite peut devenir un double gauche mais pas vice versa : int i; double d; d = 1.7; Oui d = 1; Oui, .0 ajout i = 1; Oui i = 1.7; Non !!! On peut forcer une conversion double ) int :
i = (int)1.7; Oui, valeur tronque, i vaut 1 i = (int)d; Oui, idem

Attention : Valeur tronque ne veut pas dire valeur arrondie !


R. EZZAHIR 38

Typage fort (3)

Variables

Si des int et double interviennent dans un calcul, les int deviennent des double : i = 5 / 2; Oui, 2 d = 5.0 / 2.0; Oui, 2.5 d = 5.0 / 2; Oui, 2.5 d = 5 / 2.0; Oui, 2.5 d = 5 / 2; Oui, 2.0 i = 5 / 2.0; Non i = (int)(5 / 2.0); Oui, 2 Cet icne sera utilise pour indiquer les transparents rsum, cest--dire reprenant les point principaux dun aspect du langage.

R. EZZAHIR

39

R. EZZAHIR

40

Variables
En Java, une donne est stocke dans une variable caractrise par : son type et son identificateur (dfinis lors de la dclaration), sa valeur, dfinie la premire fois lors de linitialisation puis ventuellement modifie par la suite.

Plan
Introduire les bases de la programmation Dveloppement de programmes en Java Bases du langage Java Variables
Expressions et oprateurs (arithmtiques)

Rappels de syntaxe : type id ; type id = valeur ; id = expression ; int val = 2 ;

Types lmentaires : Int double Char boolean

Exemples :

final double PI = 3.141592653 ; i = j+3 ;


R. EZZAHIR 41 R. EZZAHIR 42

Oprateurs et expressions
Tout langage de programmation fournit des oprateurs permettant de manipuler les objets prdfinis. Les oprateurs sont associs au type des objets sur lesquels ils peuvent oprer. Ainsi, les oprateurs arithmtiques (+, -, *, /, ...) sont dfinis pour les types numriques (entiers et rels), les oprateurs logiques (&&,||, !, ...) pour les types boolens, etc... Les expressions sont des squences (bien formes au sens de la syntaxe) combinant des oprateurs et des arguments (variables ou valeurs). Exemple d'expression numrique : (2*(13-i)/(1+4))

Oprateurs et expressions (2)


Les oprateurs arithmtiques sont :

Lvaluation dune expression conduit (naturellement) sa valeur. Exemple : lvaluation de l'expression (2*(13-3)/(1+4)) correspond la valeur 4 Note : nous avons dj prcdemment rencontre loprateur =, loprateur daffection, qui est universel : sapplique tout type

R. EZZAHIR

43

R. EZZAHIR

44

Notations abrges
Opration trs courante : Additionner/soustraire 1 dune variable

Priorit entre Oprateurs


Il est largement prfrable de parenthser ses expressions (ce ne serait que pour la lisibilit !). Par exemple crire (a * b) % c plutt que a* b % c En labsence de parenthse, lvaluation des oprateurs sera dans lordre suivant :
*/%+-

int x = 1, y = 1; x = x + 1; y++; y--;

Tous ces oprateurs sont associatifs gauche : a + b + c = (a + b) + c En cas dambigut entre oprateurs de mme ordre de priorit, cest la rgle dassociativit qui sapplique Exemples : a * b % c = (a * b) % c

Ne pas utiliser ++ et -- dans des formules : z = x++ * y--;


R. EZZAHIR

a % b * c = (a % b) * c a + b * c % d = a + ((b * c) % d)
45 R. EZZAHIR 46

Mauvais style !

Entres-Sorties
Un minimum dinteractivit...
Affichage : System.out.print(...) / System.out.println(...) : prdfinis dans Java

classe Scanner
import java.util.Scanner ; On importe la classe Scanner pour la rendre visible. Scanner keyb = new Scanner(System.in) ; On cre un objet Scanner et on laffecte la variable keyb. int i = keyb.nextInt() ; On lit un entier et on le stocke dans la variable i. La mthode nextInt() :

Lecture (dun entier) : import java.util.Scanner ; Scanner keyb = new Scanner(System.in) ; int i = keyb.nextInt() ;

Arrte le programme momentanment Lutilisateur peut entrer un nombre entier Affectation active par la touche return Utilisation courante : Afficher un texte avec System.out.print() Lire une valeur avec nextInt() Affecter la valeur lue `a une variable

R. EZZAHIR

47

R. EZZAHIR

48

classe Scanner (2)


Idem pour nextDouble(), qui lit un double
nextFloat(), nextLong(), . . .

classe Scanner (3)

Attention avec nextLine() ! int i = keyb.nextInt() ; String s1 = keyb.nextLine() ;

next() retourne une String (sarrte au premier dlimiteur)


dlimiteurs : espace / retour la ligne / tabulation / . . .

String s2 = keyb.nextLine() ;

Une String est une chane de caractres. Un caractre char est dlimit par des apostrophes, comme i, par exemple. Une String est dlimite par des guillemets, comme test, par exemple nextLine() retourne le reste de la ligne courante (String) jusquau terminateur de ligne ("\n").
R. EZZAHIR 49

input 1 : i 25, s1 "francs", s2 "23 francs" input 2 : i 14, s1 "", s2 "euros"

Pourquoi s1 est vide ("") ? Parce que le nextLine() lit la String vide qui suit lentier jusquau terminateur. . .

R. EZZAHIR

50

System.out.println
Lors de lexcution dune mthode :
Recherche de la dfinition de la mthode Mise disposition des arguments Excution du bloc dinstructions Retour au point initial Excution de la prochaine instruction

Exemples...
Mettre une variable dans largument de la mthode laide de loprateur de concatnation + :

System.out.println ("Le rsultat est : " + z);


Plusieurs + sont possibles :

System.out.println("x vaut " + x + " et y vaut " + y);


On peut mettre le calcul directement dans linstruction daffichage :

La mthode System.out.println(...) :
Affichage de largument lcran Affichage dun saut de ligne Si pas dargument, seulement saut de ligne

System.out.println("Le produit est : " + x * y);


Utiliser des parenthses si le calcul est une addition :

System.out.println("La somme est : " + (x + y));


51 R. EZZAHIR 52

R. EZZAHIR

Commentaires
Code complexe = commentaires indispensables Deux types de commentaires :
// rend le reste de la ligne non-excutable 2 /* .. */ rend le code entour non-excutable

Premier exemple de programme (qui fasse q.q chose)


On veut raliser un programme qui rsout (dans IR) une quation du second degr de type :

x2 + b x + c = 0
Pour b et c fix2s, les solutions relles dune telle quation sont :

/* Ce programme calcule les notes du semestre. La moyenne est 4.0 et la note maximale 6.0. */ // nextInt() permet de lire un entier. Commenter est un devoir du programmeur.
R. EZZAHIR 53 R. EZZAHIR 54

Premier exemple de programme :


Formalisation des traitements
Algorithme facile dans un cas aussi simple (dj bien formalis au dpart) mais peut devenir (trs) complexe

Premier exemple de programme :

R. EZZAHIR

55

R. EZZAHIR

56

Premier exemple de programme en Java


import java.util.Scanner; class Degre2 { public static void main (String[] args) { Scanner keyb = new Scanner(System.in); double b=0.0; donnes double c=0.0; double delta=0.0; traitements b = keyb.nextDouble(); structures de contrle c = keyb.nextDouble(); delta = b*b - 4.0*c; if (delta < 0.0) { System.out.println( "Pas de solutions relles"); } else if (delta == 0.0) { System.out.println ("Une solution unique : " + -b/2.0); } else { System.out.println("2 solutions: " + (-b-Math.sqrt(delta))/2.0 + " et " + (-b+Math.sqrt(delta))/2.0); } } }
R. EZZAHIR 57

Premire base Java (rsum)

prsentation du langage, les variables, expressions et oprateurs arithmtiques, entre-sorties de base. Je peux commencer crire mon premier programme Java

R. EZZAHIR

58

La suite

Exercices :
Nouveaux tutoriels Eclipse criture de vos premiers programmes

Le prochain cours :
Expressions logiques Structures de contrle en Java

Les cours suivants :


Suite de la programmation en Java

R. EZZAHIR

59

10

Das könnte Ihnen auch gefallen