0% ont trouvé ce document utile (0 vote)
2 vues56 pages

Introduction au langage Java

Transféré par

Karim Boudaouch
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues56 pages

Introduction au langage Java

Transféré par

Karim Boudaouch
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

USSI1R – Algorithmique et programmation

Présentation du
langage JAVA
Nada Mimouni
2

Plan
¡ Rappel
¡ La programmation procédurale
¡ La programmation objet

¡ Le langage JAVA
¡ Instructions
¡ Variables, types et codage
¡ Opérateurs
¡ Les entrées sorties
¡ Un premier programme
3

Références papier

¡ Programmer en Java de Claude Delannoy


¡ Eyrolles

¡ Le livre de Java premier langage de Anne Tasso


¡ Eyrolles

¡ Java - Tête la première, de Kathy Sierra , Bert


Bates
¡ O'Reilly
¡ Très bien, mais plus en vente
4

Références électroniques

¡ Programmation en Java (anciennement site du zéro, désormais


openclassrooms)
¡ [Link]
programmer-en-java

¡ Apprendre Java - Cours et exercices (Irène Charon)


¡ [Link]

¡ Et plein d’autres
5

Programmation procédurale

¡ le programme est conçu comme une suite de procédures à réaliser pour


répondre au problème considéré

¡ Principe :
¡ Un programme principal fait appel à des fonctions en mémoire, qui peuvent être
réutilisées n’importe où avec différentes variables

¡ Principe
¡ Chaque procédure peut appeler une ou plusieurs autres procédures

¡ Exemple
¡ Une procédure principale (main)
¡ Début
¡ main appelle une procédure 1 (P1)
¡ main appelle une procédure 2 (P2)
¡ P2 appelle une procédure 3 (P3)
¡ main appelle une procédure 4 (P4)
¡ Fin
USSI1R
6

Programmation objet
¡ Un programme est composé d’objets

¡ Un objet est une instance d’une classe

¡ Une classe
¡ a des attributs (décrivent l’état)
¡ a des méthodes : procédures concernant les attributs (décrivent le
comportement)

¡ Exemple
¡ Classe Carré
¡ Attributs : largeur et couleur
¡ Méthodes : périmètre(), surface (), agrandir(coef), constructeur (largeur,
couleur)
¡ Objets Instance de Carré
¡ c1 : carré rouge de largeur 10
USSI1R
¡ c2 : carré bleu de largeur 5
7

Introduction

¡ Java est un langage


¡ Développé par Sun Microsystems (racheté par Oracle)
¡ Portable (compatible avec tous les systèmes ayant une
machine virtuelle Java) avec Windows, Mac, Linux, etc.
¡ Très utilisé
¡ De nombreuses sortes de programmes Java existent :
¡ des applications, sous forme de fenêtre ou de console ;
¡ des applets, qui sont des programmes Java incorporés à des
pages web ;
¡ des applications pour appareils mobiles (téléphones, PDA, …) ;
¡ ...

¡ Attention
¡ Ne pas confondre avec Javascript (langage de scripts utilisé sur
les sites web)
8

Java

¡ Développer en java des codes sources


¡ Utiliser uniquement JDK
¡ Le Java Development Kit (JDK)
¡ Pour compiler le code source Java en bytecode afin que la
machine virtuelle Java (JVM) puisse l'interpréter.
¡ Utiliser un environnement de développement (IDE : Integrated
Development Environment)
¡ Compilateur + éditeur de code + outils d’aide pour retrouver les
bugs + …
¡ Nous utiliserons l’IDE Eclipse
¡ [Link]
9

9
10

Java

¡ Exécuter en java des bytecodes nécessite un


environnement d'exécution Java dit JRE (Java Runtime
Environment)
¡ Constitué d'une JVM (Java Virtual Machine)
¡ Des bibliothèques standards dites API (Application
Programming Interface) à partir desquelles doivent être
développés tous les programmes en Java

¡ Les distributions Java


¡ JSE (Java Standard Edition) = JDK + JRE + …
¡ JEE (Java Enterprise Edition) = JDK + JRE + +++
¡ JME (Java Micro Edition destiné à des systèmes légers
(téléphone mobile, PDA, …), quelques variantes
¡ …
11

Les instructions en Java


¡ Un programme est une suite d’instructions
¡ Chaque instruction se termine par un « ; »
¡ Les instructions sont regroupées dans des blocs délimités par des { }
¡ Indentation pour faire ressortir les blocs

¡ Les commentaires {
¡ Il est possible d’ajouter des commentaires Instructions
¡ Deux syntaxes différentes {
¡ // commentaire sur une ligne Instructions
¡ /* }
commentaire sur plusieurs lignes
Instructions
*/
¡ Indispensables pour comprendre {
le code et le reprendre plus tard Instructions
}
¡ Un langage de programmation à donc }
une syntaxe à respecter
12

Les variables simples et


opérateurs

¡ Nombres entiers

¡ Nombres à virgule flottante

¡ Caractère

¡ Booléen

USSI1R
13

Les variables
¡ Une variable
¡ est caractérisée par un nom
¡ Attention : les noms sont sans accent, sans caractère blanc
¡ Majuscule ≠ minuscule
¡ renvoie à une position de la mémoire de l’ordinateur
¡ a un type qui définit la taille réservée en mémoire et les opérations possibles
¡ peut prendre successivement différentes valeurs pendant l'exécution d'un
programme.

Nom : X

¡ Syntaxe : type nom; Valeur actuelle :


¡ Exemples :
¡ int a; //déclarer a de type entier
Adresse : 10FFA3
¡ int a,b,c; //déclare a, b et c de type entier

¡ int a = 0; //déclare a de type entier et lui affecte la valeur 0


14

Le codage des variables

¡ L’ordinateur d’un point de vue physique ne connait que :


¡ Un bit (binary digit)
¡ Valeurs possibles
¡ 0 («le courant ne passe pas») ou 1 («le courant passe»)
¡ binaires
¡ Plus petite unité théorique
¡ Regroupé en octet (plus petite unité pratique)
¡ Un octet (synonyme byte)
¡ 8 bits adjacents

1 0 0 1 0 0 1 0
15

Codage d’un entier positif

¡ Utilisation d’un octet 0 0 0 0 1 1 0 1


¡ exemple
27 26 25 24 23 22 21 20
¡ 1101
¡ (1 x 23)+(1 x 22)+(0 x 21)+(1 x 20)
¡ (1 x 8)+(1 x 4)+(0 x 2)+(1 x 1)
¡ 8+4+0+1 = 13
¡ Le plus petit entier 0 0 0 0 0 0 0 0
« codable »
27 26 25 24 23 22 21 20
¡ 0

¡ Le plus grand entier « codable »


¡ 27+26+…+20
¡ 28-1 1 1 1 1 1 1 1 1
¡ 256 entiers possibles 27 26 25 24 23 22 21 20
¡ De 0 à 255
16

Codage d’un entier positif

¡ Notation avec la base en indice

¡ Exercices
¡ Décoder 10012
¡ Coder 1210

¡ addition
¡ 102 + 12 = 112
¡ 1102 + 12 = 1112
¡ 102 + 11 = 1012

¡ Adition avec retenu classique en base 2

¡ Problème
¡ Taille limité et débordement
¡ Exemple Octet
¡ 111111112 + 12 = 000000002
Codage Octet et
17

Hexadécimal
¡ Remarques
¡ 8 « 0 ou 1 » c’est long
¡ Pour réduire il est possible de changer de base
¡ Utilisation d’une puissance de 2 comme base

¡ Autre écriture possible


¡ Base Hexadécimale (base 16)
¡ Valeurs
¡ 0,1 … 9, A, B … F
¡ Remarque
¡ 28 = 162
¡ 1 octet = 2 chiffres Hexadécimaux
¡ 00000000 = 00 (en Hexadécimal)
¡ Notation avec la base en indice
¡ 000000002 = 0016
¡ 111111112 = FF16
¡ Exemple
¡ Les nuances de couleurs sont souvent codé en Hexadécimal sur 226 valeurs
18

Autres codages

¡ Entiers positifs et négatifs (un octet) : pour coder les nombres


positifs et négatifs
¡ Représentation 1 :
¡ 1 bit est réservé pour le signe
¡ 7 bits pour la valeur absolue
¡ Exemple :
¡ 000000102 = 210 et 100000102 = -210
¡ Représentation 2 :
¡ Complément à 2
¡ On prend le nombre positif
¡ Exemple : 410 = 000001002
¡ On inverse les bits :
¡ 11111011
¡ On ajoute 1 :
¡ 11111100
19

Autres codages

¡ Nombre à virgule (nombre flottant)


¡ Pour coder les nombres en binaire
¡ Représentation sous la forme
¡ SM2e
¡ S est le signe
¡ M la mantisse
¡ e l'exposant
20
Autres codages

¡ Caractères
¡ Sur un octets : norme ASCII
¡ Les 128 sont commun
¡ Les 128 suivant sont différents
¡ Spécifique à un groupe de langue
¡ Différentes tables ASCII (US, latin …)
¡ Exemple
¡ Latin
¡ Commun
¡ A à 4116
¡ Spécifique
¡ é à E916
21

Autre codage

¡ Caractère sur un octet (ASCII)


¡ Plusieurs variantes
¡ 127 premiers sont communs
¡ La suite appartient à une famille de langue
¡ Exemple latin
¡ Il n’est pas possible de mélanger
¡ Caractères latin + Caractères cyrillique impossible

¡ Caractères sur une longueur variables


¡ Unicode et UTF-8
¡ de 1 à 4 octets (compliqué) largeur variable
¡ Les premiers bits traduisent le fait qu’il y a d’autres octets
¡ Exemple
¡ 0XXXXXXX à pas d’autres octets
¡ Même codage que pour les 127 premiers ASCII
¡ 10XXXXXX à un autre octet (codage sur 2 octets)
22
Les types simples de variables
en Java

¡ Les nombres entiers


¡ Le type byte (1 octet) peut contenir les entiers entre -128 et
+127.
¡ Exemple :
¡ byte temperature; // instruction de déclaration d’une variable
// temperature type de la variable byte
temperature = 20 ; // en degré
¡ Le type short (2 octets) contient les entiers compris entre -32 768
et +32 767.
¡ Exemple :
¡ short vitesseMax;
vitesseMax = 32000;
23
Les types simples de variables
en Java

¡ Les nombres entiers (suite)


¡ Le type int (4 octets) va de -231 (» -2,147x109) à 231
¡ Exemple :
¡ int temperatureSoleil;
temperatureSoleil = 15600000; // en kelvins
¡ Le type long (8 octets) de -9*1018 à 9*1018
¡ Exemple :
¡ long anneeLumiere;
anneeLumiere = 9460700000000000;
Les types simples de variables 24

en Java

¡ Nombre à virgule flottante


¡ Le type float (4 octets)
¡ 7 chiffres significatifs
¡ Exemple
¡ float pi;
¡ pi = 3.1415927 et non 3.141592653…;
¡ Attention c’est un point pas une virgule (notation anglo-saxonne)
¡ Le type double (8 octets)
¡ 15 chiffres significatifs
¡ Exemple :
¡ Pi = 3.141592653589793
¡ double division;
division = 0.333333333333333333333333333333333333333333334;
Les types simples de variables 25

en Java
¡ Caractère
¡ Le type char contient UN caractère (par défaut 2 octets
Unicode)
¡ Pour affecter une valeur, il faut écrire le caractère entre de
simples quottes ' '
¡ 'a' est le caractère a
¡ a est la variable de nom a
¡ Exemple :
¡ char caractere;
caractere = ‘a';

¡ Les booléens (vrai, faux)


¡ Le type boolean contient true (vrai) ou false (faux)
¡ Exemple
¡ boolean question;
question = true;
26

L’affectation

¡ Affectation :
¡ attribution d’une valeur à une variable :
¡ a = 4;
¡ b = 2 + a; //affectation résultant du calcul d’une expression
¡ Possibilité de déclarer et d’affecter dans la même instruction
¡ int a = 4;
¡ Déclaration simultanée de plusieurs variables de même type
¡ int a, b, c; // séparation des variables par des virgules
¡ int a = 5, b = 10, c = 3; // déclaration et affectation

¡ Remarque
¡ La première affectation d’une valeur à une variable s’appelle
¡ L’initialisation
27

Les opérateurs simples

¡ Les opérateurs arithmétiques (pour les nombres)


¡ Adition : a = b+c;
¡ Soustraction : a = b-c;
¡ Multiplication : a = b*c;
¡ Division (div) : a = b/c;
¡ Si b et sont des entiers, la variable « a » a pour valeur
le résultat de la division entière
¡ Modulo (mod) : a = b%c;
¡ le reste de la division entière

¡ Expression:
¡ une suite de variables (opérandes) et d’opérateurs
respectant la syntaxe
28

Les opérateurs

¡ Exercise
¡ Si a vaut 10, b vaut 2, c vaut 3 et d vaut 0
¡ Que vaut a/b ?
¡ Que vaut a/d ?
¡ Que vaut a/c ?
¡ Que vaut a%b ?
¡ Que vaut a%c ?
¡ Comment tester qu’un nombre est pair ?
29

Les opérateurs moins simples

¡ Il est courant d’ajouter à une variable une quantité


¡ Exemple
¡ a = a + 10;
¡ a = a + b;
¡ Syntaxe abrégée
¡ a += 10;
¡ a += b;

¡ Cette syntaxe abrégée existe aussi pour - * /

¡ Exercice
¡ Réécrire si possible
¡ a = a - 3;
¡ a = 10 + a;
¡ a = a / b;
¡ a = b/a ;
¡ a = a % 2;
30

Les opérateurs moins simples

¡ Incrémentation
¡ Il est courant d’ajouter à une variable une unité
¡ a = a+1;
¡ Syntaxe abrégée
¡ a++;
¡ ++a;
¡ Question : pourquoi a++ et ++a ?
¡ b = a++; équivaut à
¡ b = a;
¡ a = a+1;
¡ b = ++a; équivaut à
¡ a = a+1;
¡ b = a;
31

Les opérateurs moins simples

¡ Décrémentation
¡ a = a-1;
¡ Syntaxe abrégée
¡ a--;
¡ --a;

¡ Exercice
¡ int a = 5, b = 10, c = 3;
¡ a++;
¡ a = c++;
¡ a /= --c;
¡ Que valent a, b et c ?
32

Conversion de type
¡ Remarque très importante
¡ Les opérateurs doivent avoir des opérandes de même type

¡ Comment changer de type ?


¡ Il faut faire une conversion (cast)
¡ Syntaxe :
¡ nouveau type entre parenthèses suivi du nom de la variable
¡ Exemple
¡ float a = (float) 10.3; // java considère 10.3 comme un double
¡ // possible aussi d’écrire 10.3f ou 10.3F
¡ double b = 10.235689;
¡ // nous voulons un résultat de type float pour l’opération a/b
¡ float c = (float) b;
¡ float resultat = a/ c; // resultat = a/ c;
33

Conversion implicite
¡ Java sait écrire une variable de petite taille dans
une variable de plus grande taille
¡ Exemple
¡ int i=10;
¡ long j = i;
¡ float x =10; // 10 est un entier mis dans un float
¡ double y = x;

¡ Conversion d’ajustement de type


char

byte short int long Conversions sans perte d'information


Celles pouvant souffrir d'une perte.

float double
34

Conversion de type

¡ Exercice
¡ Corriger les instructions suivantes si nécessaires :
¡ int i = 1;
¡ long j = 1;
¡ byte k = 2;
¡ int r1 = i + j;
¡ long r2 = i + k;
35

Opérateurs booléens

¡ Opérateur qui compare deux opérandes et renvoie vrai ou faux


¡ Tester l'égalité : a == b
¡ Test l’inégalité : a != b
¡ Strictement inférieur : a < b
¡ Inférieur ou égal : a <= b
¡ Strictement supérieur : a > b
¡ supérieur ou égale : a >= b

¡ La négation
¡ ! a

¡ Opérateur qui combine deux booléens


¡ ET : &&
¡ OU : ||
36

Opérateurs booléens

¡ Exercice
¡ Que valent a, b, c et d
¡ int i = 2, j = 3;
¡ boolean a, b, c, d;
¡ a = (i<j);
¡ b = (i+1==j);
¡ c = a && b ;
¡ c = a || (! b ) ;
37

Les constantes

¡ Il est possible d’interdire de modifier la valeur


d’une variable une fois initialisée

¡ Syntaxe
¡ final int I = 10;
¡ final float PI = 3.14;

¡ Convention d’écriture
¡ Les constantes sont écrites en majuscule
38

Les entrées sorties

¡ Opérations de bases
¡ Ecriture :
¡ depuis la mémoire vers périphérique de sortie (par
défaut, l’écran)

¡ Lecture :
¡ depuis un périphérique d'entrée (par défaut, le
clavier) vers mémoire
39

Ecriture

¡ Pour écrire, nous utilisons l’instruction :


[Link]();
¡ Exemple
int a = 10;
[Link](a);

¡ Explication rapide :
¡ La méthode print() va écrire la valeur de la variable a en utilisant
l'objet out de la classe System
¡ La variable a est le paramètre de cette méthode
40

Ecriture

¡ Explication un peu plus détaillée


¡ System : classe qui permet surtout d'utiliser l'entrée et la sortie standard
¡ out : objet de la classe System qui gère la sortie standard
¡ print : méthode qui écrit dans la console le paramètre
¡ Les méthodes se terminent toute par des ( ) avec des paramètres si
nécessaire
¡ Entre le nom de l’objet et la méthode, il y a un point
¡ Entre le nom de la classe et le nom de l’objet, il y a un point
41

Ecriture

¡ Pour écrire et passer à la ligne, nous utilisons l’instruction:


[Link]();
¡ Exemple
int a = 10;
[Link](a);
¡ Exercice
¡ Que vont écrire les instructions suivantes :
int a = 10;
int b = 5;
[Link](a);
[Link](b);
[Link](a+b);
Lecture de valeurs entrées 42

au clavier

¡ La classe Scanner
¡ Pour lire, il faut utiliser un objet de la classe Scanner
¡ Pour dire qu’il faut lire ce qui est tapé au clavier (entrée
standard)
¡ [Link] en paramètre
¡ Ce qui donne une déclaration d’un objet du type :
Scanner sc = new Scanner([Link]);
¡ Pour utiliser cette classe, il faut importer au préalable le
package (bibliothèque) qui contient la classe Scanner
¡ Elle se trouve dans le package [Link]
¡ Donc cela donne l’instruction
import [Link]; // première ligne du programme
¡ Remarque :
¡ Un package est une liste de dossiers et sous-dossiers contenant des
classes Java
Lecture de valeurs entrées 43

au clavier

¡ Saisie d’un entier de type int : nextInt();


int i = [Link]();
[Link]("i vaut "+i);

¡ Saisie d’un double nextDouble();

¡ Idem pour float, byte, long, boolean, …

¡ Le type char n’est pas pris en compte

¡ Remarque :
¡ Standard de notation : notation dite dromadaire
¡ les mots se touchent
¡ Le premier mot commence par une majuscule uniquement si c’est une classe
¡ Les autres commencent par une majuscule
Lecture de valeurs entrées 44

au clavier

¡ La saisie d’une chaîne de caractères


¡ Emploie de la méthode nextLine()
¡ Lit la chaîne de caractères tapée au clavier jusqu’à la touche
retour
¡ Renvoie une chaîne de caractères, qu’il faut stocker dans un
objet de la classe String

¡ Exemple
Scanner sc = new Scanner([Link]);
[Link]("Veuillez saisir un mot :");
String str = [Link]();
[Link]("Vous avez saisi : " + str);
Lecture de valeurs entrées 45

au clavier

Exercice
Écrire les instructions pour
¡ afficher un message pour demander de saisir un entier,
¡ lire l’entrée de type double,
¡ le stocker dans une variable d,
¡ puis afficher le message « d vaut … »
46

Premier programme (1)

¡ Objectif écrire dans la console


« Mon premier programme »

¡ Pas à pas
¡ Java est orienté objet
¡ Besoin d’au moins une classe que vous nommez comme vous le voulez
¡ Une classe
¡ Une entête : public class NomDeLaClasse
¡ public :
¡ les autres classes ont le droit d’accéder à cette méthode
¡ Un corps entre accolades
¡ Dans le corps de la classe, création de la fonction principale : main
47

Premier programme (2)

¡ La méthode main
¡ a une entête (signature)
¡ a un corps (un bloc d’instructions)
48

Premier programme (3)


¡ Entête de main
public static void main(String[] args)

¡ Détail de l’entête
¡ public :
¡ les autres classes ont le droit d’accéder à cette méthode
¡ static :
¡ veut dire que la méthode main n’est pas associé à une instance de
cette classe
¡ void
¡ Ne renvoie pas de résultat, que des affichages dans la consoles
¡ (String[] args)
¡ Permet de passer des paramètres si nécessaire (ici c’est inutile)

¡ L’entête de la méthode main est toujours celle-ci (obligatoire)


49

Premier programme (4)

¡ Le corps de main
¡ C’est un bloc d’instructions
¡ Entre accolades
¡ Contient la suite d’instructions
50

Premier programme (5)


¡ Le code dans Eclipse

¡ Puis exécuter
¡ à l’aide du bouton

¡ Affichage dans la console (en bas)


51

Les erreurs (bugs)

¡ Icône dans la colonne à la ligne de l’erreur

¡ Message d’erreur dans la console en anglais simple


52

Exercices 1

¡ Ajouter des instructions pour


¡ Définir deux variables
¡ x (un double) qui vaut 10.256
¡ i (un int) qui vaut 3
¡ Afficher le résultat de x * i
53

Exercices 2

¡ Ajouter des instructions pour


¡ Définir deux variables
¡ x (un double)
¡ i (un int)
¡ Afficher dans la console un texte pour demander à
l’utilisateur d’entrer des valeurs pour x et i
¡ Lire les valeurs de x et i
¡ Afficher le résultat de x * i

¡ Attention pour les lectures, il faut importer avant de


définir la classe, la classe Scanner
import [Link];
54

Fonctions mathématiques
¡ Constante
¡ [Link]

¡ Fonctions générales
¡ [Link](nombre) // double float, int et long sont supportés
¡ [Link](x) //double
¡ [Link](x,p) // xP en double
¡ [Link](x) // racine carrée
¡ [Link](x,y) // min, double float, int et long sont supportés
¡ [Link](x) // arrondi, ceil pour arrondi sup, floor pour arrondi inf

¡ Fonctions trigonométriques
¡ [Link](angleEnRadian) //de même sin, tan
¡ [Link] // conversion de radian en degrés l’inverse est toRadians

¡ Aléatoire
¡ [Link]() // renvoie un double dans l’intervalle [0,1]
55

Résumé
¡ Rappel
¡ La programmation procédurale
¡ La programmation objet

¡ Java
¡ Introduction
¡ Syntaxe et structure de programmes
¡ Variables et codage de caractères
¡ Types et opérateurs
¡ Les entrées sorties
56

¡ Questions ?

Vous aimerez peut-être aussi