SlideShare une entreprise Scribd logo
1  sur  138
Télécharger pour lire hors ligne
Info1A - Licence 1 - Année 2022/2023
Initiation à la programmation JAVA
Jean-Luc Baril
Université de Bourgogne
Labo. LIB
http://jl.baril.u-bourgogne.fr
September 12, 2022
Jean-Luc Baril Initiation à la programmation JAVA
Informations éventuellement utiles
Site web Module Info1A:
http://jl.baril.u-bourgogne.fr/Licence1.html
CM=14 TD=18 TP=18
Jean-Luc Baril Initiation à la programmation JAVA
Informations éventuellement utiles
Modalités de contrôle:
- Partiel écrit (en amphi) en milieu de semestre (coeff 1)
- Examen écrit (en amphi) en fin de semestre (coeff 2)
Planning:
Jean-Luc Baril Initiation à la programmation JAVA
Informations éventuellement utiles
Plages de TD et TPS selon groupes:
Jean-Luc Baril Initiation à la programmation JAVA
Informations éventuellement utiles
Bibliographie:
Jean-Luc Baril Initiation à la programmation JAVA
L’informatique?
Informatique - Computing science - Informatics
L’informatique est la science du traitement automatique de
l’information (1957 - Informatik - Karl Steinbuch).
Ordinateur - Computer
L’ordinateur est un ensemble de dispositifs physiques utilisés
pour traiter automatiquement des informations
(Microprocesseur, mémoire, écran, clavier, disques durs, ...).
Logiciel
Le logiciel est un ensemble structuré d’instructions décrivant un
traitement d’informations à faire réaliser par un ordinateur
(contraction de logique et matériel - 1972 - software )
Jean-Luc Baril Initiation à la programmation JAVA
L’informatique? Rapide historique
Les bouliers sont les plus anciennes machines à calculer.
Le principe du boulier est déjà en germe chez les
Babyloniens vers 2000 avant J.-C. ; à cette époque, on
utilise des cailloux pour compter. Puis, au cours du Ier
millénaire avant J.-C. naı̂t en Chine l’idée de fabriquer un
instrument qui faciliterait le calcul : le boulier.
Jean-Luc Baril Initiation à la programmation JAVA
L’informatique? Rapide historique
Les batons de John Napier (1614) : Système de baquettes
coulissantes permettant de faire des multiplications.
Jean-Luc Baril Initiation à la programmation JAVA
L’informatique? Rapide historique
En 1642, Blaise Pascal construit la Pascaline
Jean-Luc Baril Initiation à la programmation JAVA
L’informatique? Rapide historique
En 1694, le mathématicien Gottfried Wilhelm Leibniz
construit la première machine à calculer utilisant des
cylindres cannelés
Jean-Luc Baril Initiation à la programmation JAVA
L’informatique? Rapide historique
Vers 1800, le Français Joseph-Marie Jacquard met au point
un métier à tisser qui utilise des cartons perforés pour
commander les mouvements des aiguilles
Jean-Luc Baril Initiation à la programmation JAVA
L’informatique? Rapide historique
Vers 1849, Charles babbage donne les plans de la machine
analytique, mais n’arrive pas à la construire
Jean-Luc Baril Initiation à la programmation JAVA
L’informatique? Rapide historique
De 1939 à 1942, Alan Turing conçoit la ’Bombe’ qui permet
de décrypter Enigma
En 1945, il conçoit les plans du premier ordinateur
moderne, mais n’a pas les moyens de le réaliser
Jean-Luc Baril Initiation à la programmation JAVA
L’informatique? Rapide historique
En 1945, aux Etats-Unis, naı̂t l’ENIAC (Electronic
Numerator Integrator and Computer), le premier véritable
ordinateur de l’histoire.
- il s’agit d’une machine électronique. Il n’y a plus de
rouages mécaniques ; l’information est transportée par
des électrons, des particules chargées d’électricité, qui se
déplacent très vite
- c’est une machine programmable. Cela signifie qu’on
peut enregistrer des instructions qui s’exécuteront sans
intervention de l’homme.
Jean-Luc Baril Initiation à la programmation JAVA
L’informatique? Rapide historique
30 tonnes, 100m2, 17000 tubes à vides, des cafards
s’introduisent dans les tubes faussant les résultats, d’ou le
terme ’bug informatique’.
Jean-Luc Baril Initiation à la programmation JAVA
L’informatique? Rapide historique
1953 : IBM lance son premier ordinateur commercial en
série : l’IBM 650.
........................ l’ère numérique commence .........
Jean-Luc Baril Initiation à la programmation JAVA
L’informatique? Rapide historique
Ordinateur quantique:
1 qbit : α PILE + β FACE
Billet de loterie:
- Avant le tirage, billet de loterie = α GAIN + β PERTE
- Après le tirage, billet de loterie = GAIN ou PERTE
Jean-Luc Baril Initiation à la programmation JAVA
L’informatique et les mathématiques?
+ Calculateur puissant (simulation météo (équations
différentielles), traitement du signal (image-vidéo) transformée
de Fourier, bioinformatique (théorie des mots, combinatoire),
...)
+ Cryptographie (paiement sécurisé sur internet, carte
bancaire, système RSA issu de l’arithmétique)
+ Animation et reconstruction 3D (géométrie)
+ Quantique (matrice )
+ ...............
Jean-Luc Baril Initiation à la programmation JAVA
L’informatique? Algorithme
Algorithme (M. al-Khwarizmi - 780:850)
Un algorithme est une suite ordonnée d’instructions qui indique
la démarche à suivre pour résoudre un problème.
Exemple: Faire cuire un oeuf sur le plat
Acheter un oeuf; mettre de l’huile dans la poele; faire chauffer;
casser l’oeuf dans la poele; attendre 2 minutes.
Algorithmique
L’algorithmique est la science des algorithmes. (construction
d’algorithme, vérification de la validité, la robustesse, leur
réutilisabilité, la complexité et leur efficacité)
Jean-Luc Baril Initiation à la programmation JAVA
L’informatique? Programme
Programme
Il s’agit de la traduction d’un algorithme dans un langage
particulier. Un programme dépend donc du langage, et
également de la plateforme d’éxécution.
Programmation
C’est l’action qui consiste à rédiger un programme dans un
langage donné.
Jean-Luc Baril Initiation à la programmation JAVA
L’informatique? Compilation et Exécution
Compilation
C’est l’action qui consiste à traduire le programme en langage
compréhensible par l’ordinateur.
Interpréteur (en JAVA)
Un outil ayant pour tâche d’éxécuter un programme qui a été
compilé.
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
Installation de Java
http://www.oracle.com
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
La structure d’un programme java
public class monpremierprogramme // Nom du programme
{
public static void main (String[] args) //Programme principal
{
//declaration de variables
//instructions //commentaires
}
}
Comment Faire?
- Dans un fichier texte, taper le code ci-dessus
- Sauvegarder le fichier texte dans un fichier
monpremierprogramme.java
- Compiler le fichier: javac monpremierprogramme.java
(création du fichier monpremierprogramme.class)
- Exécuter le programme: java monpremierprogramme
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
Bit (binary digit)
0 ou 1: il s’agit de la plus petite unité d’information manipulable
par une machine
Octet (Byte en anglais)
Unité d’information composée de 8 bits
Unités standardisées
- 1 kilooctet (ko) = 1000 octets
- 1 megaoctet (Mo) = 106 octets
- 1 gigaoctet (Go) = 109 octets
- 1 tetraoctet (To) = 1012 octets
- 1 pétaoctet (Po) = 1015 octets
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
Représentation des entiers en binaire (division entière par
2)
1001101
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
Du binaire au décimal
Code binaire: 1001101
77 = 1.20
+ 0.21
+ 1.22
+ 1.23
+ 0.24
+ 0.25
+ 1.26
Avec 1, 2 ou 3 bits
- Avec un bit, on code les entiers 0 et 1
- Avec deux bits, on code les entiers 0, 1, 2 et 3
- Avec 3 bits, on code les entiers 0,1,2,3,4,5,6,7
- Avec n bits, on code les entiers compris entre 0 et 2n − 1
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
Comment coder un réels???? Exemple de 77,3
- Codage partie entière : 77 ←→ 1001101
- Codage partie non entière : 0.3←→ ????
0.3 ∗ 2 = 0.6
0.6 ∗ 2 = 1.2
0.2 ∗ 2 = 0.4
0.4 ∗ 2 = 0.8
0.8 ∗ 2 = 1.6
0.6 ∗ 2 = 1.2
... = ...
0.3 ←→ 0.0 1001 1001 1001 ...
Codage de 77.3
77.3 ←→ 1001101.0 1001 1001 1001 ...
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
Les types de données simples en Java
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
Les variables
Une variable est un contenant ayant un nom (identificateur) et
pouvant contenir une information des types précédents (int,
double, char, ...)
- C’est une boite ayant un nom et pouvant contenir une valeur
d’un seul type de données.
- Toute variable d’un programme doit être déclarée avant son
utilisation (en début de programme par exemple)
Déclaration d’une variable
Type de données Identificateur ;
Déclaration de la variable toto pouvant contenir un entier
int toto ;
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
Les opérateurs
L’addition, la soustraction, la multiplication, la division :
+, −, ∗, /
La division entière et le reste de la division entière : /, %
Les comparaisons : <, >, ==, <=, >=, ! =
Affectation : =
Le Non : !
Le ET logique : &&
Le Ou (exclusif) : ∧
Le Ou (Inclusif) : ||
Jean-Luc Baril Initiation à la programmation JAVA
Les opérations classiques
Une expression mathématique:
2x + 3y−1
5x+1
4x
ENJAVA
=⇒ (2 ∗ x + (3 ∗ y − 1)/(5 ∗ x + 1))/(4 ∗ x)
Reste de la division entière:
x mod 10
ENJAVA
=⇒ x%10
Division entière d’une variable entière a:
a
2
ENJAVA
=⇒ a/2
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
Affectation
C’est placer une valeur dans une variable
Comment faire:
Indiquer la valeur exacte à placer dans la variable toto de la
façon suivante:
toto = valeur à placer;
Examples
titi= 8 ; // place 8 dans la variable titi
toto= titi ; // place le contenu de titi dans la variable toto
toto= titi+5 ; // place la somme du contenu de titi avec 5 dans
toto
toto= toto+4 ; // place la somme du contenu de toto avec 4
dans toto
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
Les opérateurs booléens
Non : !
Ou exclusif : ∧ (Correspond au OU BIEN )
Ou inclusif : ||
Et : &&
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
Le type boolean
Le type boolean permet uniquement deux valeurs: true, false
Exercice: Donner une expression java
a = b
ENJAVA
=⇒ a == b
a ≥ b
ENJAVA
=⇒ a >= b
x ∈ [a, b]
ENJAVA
=⇒ x >= a && x <= b
x ∈]a, b]
ENJAVA
=⇒ x > a && x <= b
x ∈]a, b]∩[c, d[
ENJAVA
=⇒ (x > a&&x <= b) && (x >= c&&x < d)
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
Exercice: Donner une expression java
x ∈]a, b] ∪ [c, d[
ENJAVA
=⇒ (x > a&&x <= b) || (x >= c&&x < d)
[a, b] ⊂ [c, d]
ENJAVA
=⇒ a >= c && b <= d
x est une année bissextile lorsque x est un multiple de 4
mais pas de 100 OU BIEN x est un multiple de 400.
ENJAVA
=⇒ (x%4 == 0 && x%100! = 0) ∧ (x%400 == 0)
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
La négation d’une expression
* négation (Je fais un CM ET il fait beau) ↔ (je ne fais pas un
CM OU il ne fait pas beau)
* !(A && B) ↔ !A || !B
* négation (Je fais un CM OU je suis dans mon bureau) ↔ (je
ne fais pas un CM ET je ne suis pas dans mon bureau)
* !(A || B) ↔ !A && !B
Donner l’expression de la négation
On a vu que:
x ∈]a, b] ∪ [c, d[
ENJAVA
=⇒ (x > a&&x <= b) || (x >= c&&x < d)
x /
∈]a, b] ∪ [c, d[
ENJAVA
=⇒ (x ≤ a || x > b)&&(x < c || x >= d)
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
public class monpremierprogramme //Nom du programme
{
public static void main (String[] args) //Programme principal
{
// Déclaration des variables
int toto, titi, tutu; // Déclare trois variables
boolean tyty; // Déclare une variable booléenne
// Instructions
toto= 4; // Met la valeur 4 dans toto
toto= toto+1; // Ajoute 1 au contenu de toto
titi= toto*4; // Met 4*5 dans titi
tutu= titi/3; // Met 20/3 dans tutu
tutu= titi % 3; // Met 20 % 3 dans tutu
tyty= false; // Met false dans tyty
tyty= tutu>=2 && tutu < 4; // Met true dans tyty
}
}
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
Echange du contenu de deux variables:
=⇒
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
Echange du contenu de deux variables:
=⇒
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
Echange du contenu de deux variables:
=⇒
Etape 1: V = N
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
Echange du contenu de deux variables:
=⇒
Etape 1: V = N Etape 2: N = G
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
Echange du contenu de deux variables:
=⇒
Etape 1: V = N Etape 2: N = G Etape 3: G = V
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
public class echange //Nom du programme
{
public static void main (String[] args) //Programme principal
{
// Déclaration des variables
int Nuits, Gevrey, Temp ; // Déclare trois variables
// Remplissage des verres
Nuits=4; // Remplit le verre de Nuits
Gevrey=8; // Remplit le verre de Gevrey
// Echange le contenu des deux verres
Temp=Nuits; // Verse le contenu de Nuits dans Temp
Nuits=Gevrey; // Verse le contenu de Gevrey dans Nuits
Gevrey=Temp; // Verse le contenu de Temp dans Gevrey
}
}
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java
Communiquer avec l’ordinateur pendant l’éxécution du
programme
Affichage des résultats à l’écran (sortie)
Saisie d’informations au clavier (entrée)
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java - Les sorties
Affichage à l’écran d’un texte
System.out.print("texte a afficher");
// Affiche le texte
System.out.println("texte a afficher");
// Affiche le texte puis revient à la ligne
Affichage à l’écran du contenu d’une variable
System.out.print(variable);
// Affiche le contenu de la variable
System.out.println(variable);
// Affiche le contenu de la variable puis revient à la ligne
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java - Les sorties
Affichage à l’écran d’un texte et du contenu d’une variable
System.out.print("texte a afficher"+variable);
// Affiche le texte puis le contenu de la variable
System.out.println("texte a afficher"+variable);
// Affiche le texte puis le contenu de la variable et
// revient à la ligne
System.out.println("toto= "+toto);
//Affiche toto= 8
System.out.println("toto= "+toto+" et titi= "+titi);
// Affiche toto= 8 et titi= 4
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java - Les sorties
public class echange //Nom du programme
{
public static void main (String[] args) //Programme principal
{
int Nuits, Gevrey, Temp ;
System.out.println("Bonjour");
Nuits=4;
Gevrey=8;
Temp=Nuits;
Nuits=Gevrey;
Gevrey=Temp;
System.out.println("Le contenu de Nuits est:"+Nuits);
System.out.println("Le contenu de Gevrey est:"+Gevrey);
}
}
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java - Les sorties
Un joli dessin!!!
public class jolidessin //Nom du programme
{
public static void main (String[] args) //Programme principal
{
System.out.println("*******");
System.out.println(" ***** ");
System.out.println(" *** ");
System.out.println(" * ");
}
}
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java - Les entrées
La saisie d’un entier dans la variable toto
int toto;
toto=Lire.i();
// attend que l’utilisateur saisisse un entier
La saisie d’un réel dans la variable titi
double titi;
titi=Lire.d();
// attend que l’utilisateur saisisse un réel
La saisie d’un texte dans une variable tutu
String tutu;
tutu=Lire.S();
// attend que l’utilisateur saisisse un texte
Jean-Luc Baril Initiation à la programmation JAVA
La programmation en Java - Les Entrées/Sorties
public class echange //Nom du programme
{
public static void main (String[] args) //Programme principal
{
int Nuits, Gevrey, Temp ;
System.out.println("Saisir le contenu de Nuits");
Nuits=Lire.i();
System.out.println("Saisir le contenu de Gevrey");
Gevrey=Lire.i();
Temp=Nuits;
Nuits=Gevrey;
Gevrey=Temp;
System.out.println("Le contenu de Nuits est:"+Nuits);
System.out.println("Le contenu de Gevrey est:"+Gevrey);
}
}
Jean-Luc Baril Initiation à la programmation JAVA
Exercice - Les Entrées/Sorties
Moyenne de deux réels
Ecrire un programme Java permettant de faire la moyenne de
deux réels saisis par l’utilisateur.
public class moyenne //Nom du programme
{
public static void main (String[] args) //Programme principal
{
double x, y, moyenne;
System.out.println("Saisir x");
x=Lire.d();
System.out.println("Saisir y");
y=Lire.d();
moyenne=(x+y)/2;
System.out.println("La moyenne est:"+moyenne);
}
}
Jean-Luc Baril Initiation à la programmation JAVA
Fiche Memo CM1- Les Entrées/Sorties
Le minimum à savoir!!!!
public class nomprog //Nom du programme
{
public static void main (String[] args) //Programme principal
{
// Déclaration des variables utiles
}
}
Le minimum à savoir!!!!
1 ; à la fin de chaque instruction
2 Affectation: x=3;
3 Opérateurs booléen: &&, ||, ==,
x>= 1 && x<= 5, x==7 || y==8
4 Affichage à l’écran: System.out.println(”Bonjour”+variable);
5 Saisie au clavier: x=Lire.i(); y=Lire.d();
Jean-Luc Baril Initiation à la programmation JAVA
Exercice - Les Entrées/Sorties
Résolution de a ∗ x = b lorsque a 6= 0
Ecrire un programme Java permettant la saisie de a et b par
l’utilisateur, puis d’afficher la solution de l’équation.
public class moyenne //Nom du programme
{
public static void main (String[] args) //Programme principal
{
// Déclaration des variables utiles
// Saisie de a et b
// Calcul de la solution
// Affichage de la solution
}
}
Jean-Luc Baril Initiation à la programmation JAVA
Les conditionnelles
Structures permettant de réaliser des aiguillages
if ...
if(condition)
{
// Bloc d’instructions
}
- Si la condition est vraie, le programme exécute les
instructions situées entre accolades
- Si la condition est fausse, le programme ne considère pas les
instructions et passe à la suite
Es-tu adulte?
// Déclaration et saisie d’un age
if(age>=18)
{System.out.println("Vous etes adultes");}
Jean-Luc Baril Initiation à la programmation JAVA
Les conditionnelles
x ∈ [1, 100]?
// Déclaration et saisie de $x$
if(x>=1 && x<=100)
{System.out.println(" x est entre 1 et 100");}
x ∈ [1, 100]?
// Déclaration et saisie de $x$
if(x>=1 && x<=100)
{System.out.println(" x est entre 1 et 100");
x=x+1;
}
Si le bloc d’instructions dans le IF contient une seule instruction
alors les accolades sont facultatives
Jean-Luc Baril Initiation à la programmation JAVA
Les conditionnelles
if ... else ...
if(condition)
{
// Bloc d’instructions 1
}
else
{
// Bloc d’instructions 2
}
- Si la condition est vraie, le programme exécute les
instructions du bloc 1
- Si la condition est fausse, le programme exécute les
instructions du bloc 2
Jean-Luc Baril Initiation à la programmation JAVA
Les conditionnelles
x ∈ [1, 100]?
// Déclaration et saisie de $x$
if(x>=1 && x<=100)
{System.out.println(" x est entre 1 et 100");}
else
{System.out.println(" x n est pas entre 1 et 100");}
x ∈ [1, 100]?
// Déclaration et saisie de $x$
if(x>=1 && x<=100)
System.out.println(" x est entre 1 et 100");
else
System.out.println(" x n est pas entre 1 et 100");
Si le bloc d’instructions dans le IF contient une seule instruction
alors les accolades sont facultatives
Jean-Luc Baril Initiation à la programmation JAVA
Les conditionnelles
Maximum de deux entiers
public class maximum
{
public static void main (String[] args)
{
int x, y, maxi;
System.out.println("Saisir x");
x=Lire.i();
System.out.println("Saisir y");
y=Lire.i(); // Déclaration et saisie de x et y
if(x>y)
{maxi=x;}
else
{maxi=y;}
System.out.println("Le maximum est:"+maxi);
}
}
Jean-Luc Baril Initiation à la programmation JAVA
Les conditionnelles
Résolution équation ax+b=0
double a, b, x;
System.out.println("Saisir a");
a=Lire.d();
System.out.println("Saisir b");
b=Lire.d();
if(a!=0)
{ x=-b/a;
System.out.println("La solution est :"+x);
}
else
if(b==0)
System.out.println("Il y a une infinité de solutions");
else
System.out.println("Il n’y a pas de solution");
Le if ... else ... est considérée comme une seule instruction
Jean-Luc Baril Initiation à la programmation JAVA
Les conditionnelles
Classement par ordre croissant de trois entiers
//Déclaration et saisie de a, b et c
if(a<=b && b<=c)
System.out.println(a+"<="+b+"<="+c);
if(a<=c && c<=b)
System.out.println(a+"<="+c+"<="+b);
if(b<=a && a<=c)
System.out.println(b+"<="+a+"<="+c);
if(b<=c && c<=a)
System.out.println(b+"<="+c+"<="+a);
if(c<=a && a<=b)
System.out.println(c+"<="+a+"<="+b);
if(c<=b && b<=a)
System.out.println(c+"<="+b+"<="+a);
Jean-Luc Baril Initiation à la programmation JAVA
Les conditionnelles
Classement par ordre croissant de trois entiers
//Déclaration et saisie de a, b et c
if(a<=b)
if(b<=c)
System.out.println(a+"<="+b+"<="+c);
else
if(c<=a)
System.out.println(c+"<="+a+"<="+b);
else
System.out.println(a+"<="+c+"<="+b);
else
if(a<=c)
System.out.println(b+"<="+a+"<="+c);
else
if(c<=b)
System.out.println(c+"<="+b+"<="+a);
else
System.out.println(b+"<="+c+"<="+a);
Jean-Luc Baril Initiation à la programmation JAVA
Les conditionnelles
switch ...
switch(valeur)
{
case val1: { /*Bloc d’instructions B1*/ }
case val2: { /*Bloc d’instructions B2*/ }
...
case valn: { /*Bloc d’instructions Bn*/ }
}
- Si valeur vaut val1, le programme exécute B1, B2, ..., Bn
- Si valeur vaut val2, le programme exécute B2, ..., Bn
- ...
- Si valeur vaut valn, le programme exécute Bn
Attention
La variable valeur du switch doit être de type int ou char (pour
l’instant!!!)
Jean-Luc Baril Initiation à la programmation JAVA
Les conditionnelles
Affichage des derniers jours de la semaine
int jour;
System.out.println("Numéro de jour de la semaine?");
jour=Lire.i();
switch(jour)
{
case 1: { System.out.println("Lundi"); }
case 2: { System.out.println("Mardi"); }
case 3: { System.out.println("Mercredi"); }
case 4: { System.out.println("Jeudi"); }
case 5: { System.out.println("Vendredi"); }
case 6: { System.out.println("Samedi"); }
case 7: { System.out.println("Dimanche"); }
}
Si jour=5, alors le programme affiche Vendredi, Samedi et
Dimanche
Jean-Luc Baril Initiation à la programmation JAVA
Les conditionnelles
switch ...
switch(valeur)
{
case val1: { /*Instructions B1*/ break;}
case val2: { /*Instructions B2*/ break;}
...
case valn: { /*Instructions Bn*/ break;}
}
- Si valeur vaut val1, le programme exécute seulement B1
- Si valeur vaut val2, le programme exécute seulement B2
- ...
- Si valeur vaut valn, le programme exécute seulement Bn
L’instruction break permet d’arrêter l’exécution dans une
structure. Cette instruction sera permise UNIQUEMENT dans
un switch.
Jean-Luc Baril Initiation à la programmation JAVA
Les conditionnelles
Affichage du jour de la semaine
int jour;
System.out.println("Saisir le numéro de jour de la semaine");
jour=Lire.i();
switch(jour)
{
case 1: { System.out.println("Lundi"); break; }
case 2: { System.out.println("Mardi"); break; }
case 3: { System.out.println("Mercredi"); break; }
case 4: { System.out.println("Jeudi"); break; }
case 5: { System.out.println("Vendredi"); break; }
case 6: { System.out.println("Samedi"); break; }
case 7: { System.out.println("Dimanche"); break; }
}
Si jour=5, le programme affiche uniquement Vendredi
Jean-Luc Baril Initiation à la programmation JAVA
Les conditionnelles
Un mélange des deux syntaxes
int jour;
System.out.println("Saisir le numéro de jour de la semaine");
jour=Lire.i();
switch(jour)
{
case 1: { System.out.println("Lundi"); break; }
case 2: { System.out.println("Mardi"); break; }
case 3: { System.out.println("Mercredi"); break; }
case 4: { System.out.println("Jeudi"); }
case 5: { System.out.println("Vendredi"); }
case 6: { System.out.println("Samedi"); break; }
case 7: { System.out.println("Dimanche"); break; }
}
Si jour=4, le programme affiche Jeudi, Vendredi et Samedi
Jean-Luc Baril Initiation à la programmation JAVA
Les conditionnelles
Deux exercices!!!
Jean-Luc Baril Initiation à la programmation JAVA
Fiche Memo CM2- Les conditionnelles
Le minimum à savoir!!!!
if(condition)
{ ....}
if(condition)
{ ....}
else
{ ....}
switch(variable)
{
case val1: { ....; break;}
case val2: { ....; break;}
....
case valn: { ....; break;}
}
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions
Structures permettant de répéter des instructions
La boucle for(...)
for(initialisation; condition; incrémentation)
{ /* Instructions */ }
- L’initialisation permet de donner une valeur de départ à la
variable de boucle. C’est la première instruction exécutée.
- Condition est le test à vérifier pour pouvoir exécuter les
instructions de la boucle
- L’incrémentation est une instruction qui permet de modifier le
résultat de la condition ( i + +, ou i − −).
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions
Exemple : Afficher les 100 premiers entiers
for(i=1; i<=100; i++)
{ System.out.println(i); }
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions
Affichage de la somme des n premiers entiers
public class somme
{
public static void main (String[] args)
{
int i, n, somme=0;
System.out.println("Saisir l’entier n");
n=Lire.i();
for(i=1; i<=n; i++)
somme=somme+i;
System.out.println("La somme est: "+somme);
}
}
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions
La boucle while(...)
while(condition)
{ /* Instructions */ }
- Tant que la condition est vraie (true), le programme exécute
les instructions de la boucle
* La condition est vérifiée avant d’exécuter les instructions
* Il est nécessaire de modifier la condition à l’intérieur de la
boucle pour que la boucle puisse s’arrêter
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions
Afficher les 100 premiers entiers
i=1;
while(i<=100)
{ System.out.println(i);
i=i+1; }
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions
Affichage de la somme des n premiers entiers
public class somme
{
public static void main (String[] args)
{
int i, n, somme=0;
System.out.println("Saisir l’entier n");
n=Lire.i();
i=1;
while(i<=n)
{
somme=somme+i;
i=i+1;
}
System.out.println("La somme est: "+somme);
}
}
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions
La boucle do ...while
do
{ /* Instructions */ }
while(conditions);
- Le programme exécute les instructions de la boucle, puis
vérifie ensuite la condition pour éventuellement continuer
* La condition est vérifiée après avoir exécuté les instructions
* Il est nécessaire de modifier la conditions à l’intérieur de la
boucle pour que la boucle puisse s’arreter
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions
Afficher les 100 premiers entiers
i=1;
do
{ System.out.println(i);
i=i+1; }
while(i<=100);
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions
Affichage de la somme des n premiers entiers
public class somme
{
public static void main (String[] args)
{
int i, n, somme=0;
System.out.println("Saisir l’entier n");
n=Lire.i();
i=1;
do
{
somme=somme+i;
i=i+1;
}
while(i<=n);
System.out.println("La somme est: "+somme);
}
}
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions
Saisie d’un entier positif ou nul
public class saisie
{
public static void main (String[] args)
{
int n;
do
{
System.out.println("Saisir un entier positif ou nul");
n=Lire.i();
}
while(n<0);
}
}
Jean-Luc Baril Initiation à la programmation JAVA
Fiche Memo CM3- Les répétitions
Le minimum à savoir!!!!
for(i=1;i<=100;i++) // Pour i allant de 1
{ ....} // jusqu’à 100 faire ....
for(i=100;i>=1;i--) // Pour i allant de 100
{ ....} // jusqu’à 1 faire ....
while(condition) // Tant que la condition
{ ....} // est vraie faire ....
do // Faire .... jusqu’à ce que
{....} // la condition soit fausse
while(condition);
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions
Affichage du produit des n premiers entiers positifs
public class produit
{
public static void main (String[] args)
{
int i, n, produit=1;
System.out.println("Saisir l’entier n");
n=Lire.i();
for(i=1; i<=n; i++)
produit=produit*i;
System.out.println("Le produit est: "+produit);
}
}
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions
Affichage du produit des n premiers entiers positifs
public class produit
{
public static void main (String[] args)
{
int i, n, produit=1;
System.out.println("Saisir l’entier n");
n=Lire.i();
i=1;
while(i<=n)
{
produit=produit*i;
i=i+1;
}
System.out.println("Le produit est: "+produit);
}
}
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions
Affichage du produit des n premiers entiers positifs
public class produit
{
public static void main (String[] args)
{
int i, n, produit=1;
System.out.println("Saisir l’entier n");
n=Lire.i();
i=1;
do
{
produit=produit*i;
i=i+1;
}
while(i<=n);
System.out.println("Le produit est: "+produit);
}
}
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions - Exercice
Somme d’une suite de notes
Programme qui calcule la somme d’une suite de notes saisies
au clavier jusqu’à ce que la note -1 soit entrée.
public class moyenne
{
public static void main (String[] args)
{
int note, somme=0;
do
{
System.out.println("Saisir une note ou -1");
note=Lire.i();
if(note!=-1)
somme=somme+note;
}
while(note!=-1);
System.out.println("La somme des notes est: "+somme);
}
}
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions - Exercice
Un joli dessin!!!
Afficher le motif suivant dont la taille est saisie par l’utilisateur.
Pour taile=3 Pour taille=4 Pour taille=5
* * *
** ** **
*** *** ***
**** ****
*****
int i,j,taille;
System.out.println("Saisir la taille du dessin");
taille=Lire.i(); // Saisie de la taille
for(i=1;i<=taille;i++) // Boucle décrivant les lignes
{ for(j=1;j<=i;j++) // Boucle décrivant les colonnes
System.out.print("*"); // Affichage *
System.out.println(); // Retour à la ligne
}
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions - Exercice
Un joli dessin!!!
Afficher le motif suivant dont la taille est saisie par l’utilisateur.
Pour taile=3 Pour taille=4 Pour taille=5
*** **** *****
** *** ****
* ** ***
* **
*
int i,j,taille;
//Saisie de la taille
for(i=1;i<=taille;i++) //Boucle décrivant les lignes
{ for(j=1;j<=taille;j++) //Boucle décrivant les colonnes
if(j<i)
System.out.print(" "); // Affichage espaces
else
System.out.print("*"); // Affichage étoiles
System.out.println(); // Retour à la ligne
}
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions - Exercice
Exemple de menu
int x,y,z,choix;
char op;
do
{
System.out.println("1. Saisir x");
System.out.println("2. Saisir y");
System.out.println("3. Calculer la somme");
System.out.println("4. Quitter");
System.out.println("Quel est votre choix");
choix=Lire.i();
switch(choix)
{
case 1: { x=Lire.i(); break;}
case 2: { y=Lire.i(); break;}
case 3: { z=x+y; break;}
}
}
while(choix!=4);
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions - Exercice
L’algorithme d’Euclide - Calcul du PGCD
Méthode:
Si a ≥ b alors PGCD(a, b) =
- b si b divise a (a%b == 0),
- PGCD(b, r) où r est le reste de la division de a par b
(r = a%b)
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions - Exercice
L’algorithme d’Euclide - Calcul du PGCD
// Déclaration et saisie de a et b
// Echange de a et b si b>a
while(b>0)
{
r=a% b;
a=b;
b=r;
}
System.out.println("Le PGCD est "+a);
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions - Exercice
L’algorithme d’Euclide - Calcul du PGCD
// Déclaration et saisie de a et b
// Echange de a et b si b>a
do
{
r=a% b;
a=b;
b=r;
}
while(b>0);
System.out.println("Le PGCD est "+a);
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions - Exercice
Recherche d’un entier entre 1 et 100
Ecrire un prog permettant de rechercher un nombre aléatoire
entre 1 et 100 généré par l’ordinateur.
Réel aléatoire entre 0 inclu et 1 exclu: Math.random()
Réel aléatoire entre 0 inclu et b exclu: b*Math.random()
Réel aléatoire entre a inclu et b exclu:
a+(b-a)*Math.random()
Entier aléatoire entre a inclu et b-1 inclu:
(int)(a+(b-a)*Math.random())
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions - Exercice
Recherche d’un entier entre 1 et 100
Idée: Saisir un nombre tant que le nombre saisi n’est pas celui
de l’ordinateur
int ordi, joueur;
ordi=(int)(1+100*Math.random());
do
{
System.out.println("Proposer votre nombre");
joueur=Lire.i();
}
while(joueur!=ordi);
System.out.println("Bravo, vous avez trouvé");
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions - Exercice
Recherche d’un entier entre 1 et 100
Une amélioration du jeu: A chaque étape l’ordinateur devra
dire si votre nombre est trop grand ou trop petit
int ordi, joueur;
ordi=(int)(1+100*Math.random());
do
{
System.out.println("Proposer votre nombre");
joueur=Lire.i();
if(joueur>ordi)
System.out.println("Votre nbre est trop grand");
if(joueur<ordi)
System.out.println("Votre nbre est trop petit");
}
while(joueur!=ordi);
System.out.println("Bravo, vous avez trouvé");
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions - Exercice
Recherche d’un entier entre 1 et 100
Encore une amélioration: Indiquer le nbre de coups utilisés
pour gagner
int ordi, joueur, coups;
ordi=(int)(1+100*Math.random());
coups=0;
do
{
System.out.println("Proposer votre nombre");
joueur=Lire.i();
coups=coups+1;
if(joueur>ordi)
System.out.println("Votre nbre est trop grand");
if(joueur<ordi)
System.out.println("Votre nbre est trop petit");
}
while(joueur!=ordi);
System.out.println("Bravo, vous avez trouvé en "+coups+"coups")
Jean-Luc Baril Initiation à la programmation JAVA
Les répétitions - Exercice
Recherche d’un entier entre 1 et 100
Encore une amélioration: Limiter le nbre de coups à 7 coups
int ordi, joueur, coups;
ordi=(int)(1+100*Math.random());
coups=0;
do
{System.out.println("Proposer votre nombre");
joueur=Lire.i();
coups=coups+1;
if(joueur>ordi)
System.out.println("Votre nbre est trop grand");
if(joueur<ordi)
System.out.println("Votre nbre est trop petit");
}
while(joueur!=ordi && coups<7);
if(joueur==ordi)
System.out.println("Bravo, vous avez trouvé en "+coups+"coups"
else
System.out.println("Perdu");
Jean-Luc Baril Initiation à la programmation JAVA
Exercice
Jean-Luc Baril Initiation à la programmation JAVA
Les tableaux
Un tableau est une structure qui peut contenir plusieurs
éléments du même type
Le nombre d’éléments du tableau est la taille du tableau
Les éléments sont repérés par un ou plusieurs indices de
type int (ou char)
Le nombre d’indices est la dimension du tableau
Tableau à 1 dimension de taille 10 contenant des entiers
1 3 5 7 9 0 2 4 6 8
0 1 2 3 4 5 6 7 8 9 Indices du tableau
Tableau à 2 dimensions à 2 lignes et 10 colonnes
1 3 5 7 9 0 2 4 6 8
0 2 4 6 8 1 3 5 7 9
0
1
0 1 2 3 4 5 6 7 8 9 Indices du tableau
Jean-Luc Baril Initiation à la programmation JAVA
Les tableaux
Déclaration d’un tableau
Réserve une adresse mémoire
Tableau 1D: Type des éléments tab[];
Tableau 2D: Type des éléments tab[][];
Création d’un tableau
Définit la taille du tableau
Tableau 1D: tab=new Type des éléments[Nbre cases];
Tableau 2D: tab=new Type des éléments[nblig][nbcol];
Déclaration et allocation de tableaux
int tab[]; // Déclaration tableau 1D d’entiers
tab= new int[10]; // Définition de la taille du tableau
//*************************************
double tab[][]; // Déclaration tableau 2D
tab= new double[2][10]; // Définition de la taille
Jean-Luc Baril Initiation à la programmation JAVA
Les tableaux
Accès à la i-ième case d’un tableau 1D: tab[i-1]
1 3 5 7 9 0 2 4 6 8
0 1 2 3 4 5 6 7 8 9 Indices i
Remplissage d’un tableau 1D
int tab[]; // Déclaration tableau 1D d’entiers
tab= new int[10]; // Définition de la taille du tableau
tab[0]=1;
tab[1]=3;
tab[2]=5;
...
tab[9]=8;
Jean-Luc Baril Initiation à la programmation JAVA
Les tableaux
Remplissage d’un tableau 1D
int tab[]; // Déclaration tableau 1D d’entiers
tab= new int[10]; // Définition de la taille du tableau
for(i=0;i<=9;i++) //Boucle pour parcourir les cases
{ System.out.println("Saisir la case "+i);
tab[i]=Lire.i();
}
Affichage d’un tableau 1D
for(i=0;i<=9;i++)
System.out.print(tab[i]+" ");
System.out.println();
Jean-Luc Baril Initiation à la programmation JAVA
Les tableaux
Accès à la case d’un tableau 2D sur la i-ième ligne et j-ième
colonne : tab[i-1][j-1]
1 3 5 7 9 0 2 4 6 8
0 2 4 6 8 1 3 5 7 9
0
1
0 1 2 3 4 5 6 7 8 9 Indices du tableau
Remplissage d’un tableau 2D
int tab[][]; // Déclaration tableau 2D d’entiers
tab= new int[2][10]; // Définition de la taille du tableau
tab[0][0]=1; tab[1][0]=0;
tab[0][1]=3; tab[1][1]=2;
tab[0][2]=5; tab[1][2]=4;
........ ........
tab[0][9]=8; tab[1][9]=9;
Jean-Luc Baril Initiation à la programmation JAVA
Les tableaux
Remplissage d’un tableau 2D
int tab[][]; // Déclaration tableau 1D d’entiers
tab= new int[2][10]; // Définition de la taille du tableau
for(i=0;i<=1;i++) // Boucle pour décrire les 2 lignes
for(j=0;j<=9;j++) // Boucle pour décrire les 10 colonnes
{ System.out.println("Saisir ligne "+i+" et colonne "+j);
tab[i][j]=Lire.i();
}
Affichage d’un tableau 2D
for(i=0;i<=1;i++) // Boucle pour décrire les 2 lignes
{ for(j=0;j<=9;j++) // Boucle pour décrire les 10 colonnes
System.out.print(tab[i][j]+" ");
System.out.println(); // Retour à la ligne
}
Jean-Luc Baril Initiation à la programmation JAVA
Les tableaux
1 3 5 7 9 .... 2 4 6 8
Recherche d’un élément dans un tableau 1D
int i,element,tab[];
// Déclaration tableau 1D d’entiers
tab= new int[100]; // Définition de la taille du tableau
.......... // Remplissage du tableau
System.out.println("Entrer l’élément à rechercher");
element=Lire.i();
for(i=0;i<=99;i++) // Boucle pour décrire les 100 cases
if(tab[i]==element)
System.out.println("Trouvé");
Jean-Luc Baril Initiation à la programmation JAVA
Les tableaux
Recherche d’un élément dans un tableau 1D
boolean trouve;
int i,element,tab[]; // Déclaration tableau 1D d’entiers
tab= new int[100]; // Définition de la taille du tableau
.......... // Remplissage du tableau
System.out.println("Entrer l’élément à rechercher");
element=Lire.i();
trouve=false;
i=0;
while(i<=99 && trouve==false)
{ if(tab[i]==element)
trouve=true;
else
i=i+1;
}
if(trouve==true)
System.out.println(element+" est trouvé en position "+i);
else
System.out.println(element+" n est pas dans le tableau");
Jean-Luc Baril Initiation à la programmation JAVA
Les tableaux
1 3 5 7 9 .... 2 4 6 8
Recherche du maximum d’un tableau 1D
int i,maxi,tab[];
// Déclaration tableau 1D d’entiers
tab= new int[100]; // Définition de la taille du tableau
.......... // Remplissage du tableau
maxi=tab[0];
for(i=1;i<=99;i++) // Boucle pour décrire le tableau
if(tab[i]>maxi)
maxi=tab[i];
System.out.println("Le maximum du tableau est "+maxi);
Jean-Luc Baril Initiation à la programmation JAVA
Les tableaux
1 3 5 7 9 .... 2 4 6 8
Recherche de la position du maximum d’un tableau 1D
int i,maxi,posi,tab[];
// Déclaration tableau 1D d’entiers
tab= new int[100]; // Définition de la taille du tableau
.......... // Remplissage du tableau
maxi=tab[0];
posi=0;
for(i=1;i<=99;i++) // Boucle pour décrire le tableau
if(tab[i]>maxi)
{maxi=tab[i]; posi=i;}
System.out.println("La position du maximum du tableau est "+p
Jean-Luc Baril Initiation à la programmation JAVA
Les tableaux
Tri à bulles d’un tableau 1D
Video.Tri.à.bulles.mp4
Jean-Luc Baril Initiation à la programmation JAVA
Les tableaux
Tri à bulles d’un tableau 1D
bool tab_en_ordre = false;
int taille = tab.length; //donne le nbre de cases du tablea
while(!tab_en_ordre)
{
tab_en_ordre = true;
for(int i=0 ; i < taille-1 ; i++)
if(tab[i] > tab[i+1])
{ //échange de tab[i] et tab[i+1]
tab_en_ordre = false;
}
taille--;
}
Jean-Luc Baril Initiation à la programmation JAVA
Les tableaux
Tri à bulles d’un tableau 1D
bool tab_en_ordre;
int taille = tab.length;
do
{
tab_en_ordre = true;
for(int i=0 ; i < taille-1 ; i++)
if(tab[i] > tab[i+1])
{ //échange de tab[i] et tab[i+1]
tab_en_ordre = false;
}
taille--;
}
while(!tab_en_ordre);
Jean-Luc Baril Initiation à la programmation JAVA
Les tableaux
Tri par insertion d’un tableau 1D
Video.Tri.par.insertion.mp4
Jean-Luc Baril Initiation à la programmation JAVA
Les tableaux
Tri par insertion d’un tableau 1D
int taille = tab.length; //donne le nbre de cases du tablea
for(int i=0 ; i < taille-1 ; i++)
{ k=i;
while(k>=0 && tab[k]>tab[k+1])
{
//échanger tab[k] et tab[k+1]
k=k-1;
}
}
Jean-Luc Baril Initiation à la programmation JAVA
Fiche Memo CM5- Les tableaux
Le minimum à savoir!!!!
int tab[],i;
tab=new int[100]; // Déclaration tableau 1D d’entiers
for(i=0;i<=99;i++) // Affichage
System.out.print(tab[i]+" ");
System.out.println();
int tab[][],i,j;
tab=new int[100][50]; // Déclaration tableau 2D d’entiers
for(i=0;i<=99;i++) // Affichage
{ for(j=0;j<=49;j++)
System.out.print(tab[i][j]+" ");
System.out.println();
}
Jean-Luc Baril Initiation à la programmation JAVA
Les chaı̂nes de caractères
Une chaı̂ne de caractères (de type String) est une suite
ordonnée de caractères (de type char): Exemple:
”abcdefghijk000lmnopqrst123uvwxyz” est une chaı̂ne de
caractères (entourée de guillemets ”...”)
Rappel:
- Un caractère est stocké dans une variable de type char.
Exemple: char car=’e’; (entouré de ’...’) - les caractères sont
classés par le code ASCII
Déclaration d’une chaı̂ne de caractères
String nom variable;
Déclaration
String chaine;
Jean-Luc Baril Initiation à la programmation JAVA
La table ASCII
Jean-Luc Baril Initiation à la programmation JAVA
Les chaı̂nes de caractères
Une chaı̂ne de caractères (de type String) est une suite
ordonnée de caractères (de type char): Exemple:
”abcdefghijk000lmnopqrst123uvwxyz” est une chaı̂ne de
caractères (entourée de guillemets ”...”)
Déclaration d’une chaı̂ne de caractères
String nom variable;
Déclaration
String chaine;
Déclaration d’une chaı̂ne vide
String chaine=""; // Deux guillements consécutifs
// (sans espace)
Jean-Luc Baril Initiation à la programmation JAVA
Les chaı̂nes de caractères
Affectation
variable=”texte”;
Affectation
String chaine1,chaine2,chaine3;
chaine1="Bonjour";
chaine2=""; // Chaine vide
chaine3=chaine1;
Affichage d’une chaı̂ne
String chaine1;
chaine1="Bonjour";
System.out.printl(chaine1);
Jean-Luc Baril Initiation à la programmation JAVA
Les chaı̂nes de caractères
nombre de caractères d’une chaı̂ne (ou longueur)
variable.length()
Longueur d’une chaine
int longueur;
String chaine;
chaine="Bonjour";
longueur=chaine.length(); //Nombre de caractères
System.out.println("Il y a "+longueur+" caractères dans la ch
Jean-Luc Baril Initiation à la programmation JAVA
Les chaı̂nes de caractères
i-ième caractère d’une chaı̂ne
variable.charAt(i-1) (de type char)
variable.charAt(0) est le premier caractère de la chaı̂ne variable
variable.charAt(1) est le second caractère de la chaı̂ne variable
i-ième caractère d’une chaı̂ne
char c;
String chaine;
chaine="Bonjour";
c=chaine.charAt(3);
System.out.println("le 4-ième caractère est"+c);
Jean-Luc Baril Initiation à la programmation JAVA
Les chaı̂nes de caractères
Juxtaposition de deux chaı̂nes (concaténation)
chaine1+chaine2
Juxtaposition de deux chaı̂nes
String chaine1,chaine2,chaine3,chaine4;
chaine1="Bonjour";
chaine2=" jourBon";
chaine3=chaine1+chaine2;
System.out.println(chaine3);// Affiche Bonjour jourBon
chaine4=chaine2+chaine1;
System.out.println(chaine4);// Affiche jourBonBonjour
Jean-Luc Baril Initiation à la programmation JAVA
Les chaı̂nes de caractères
Test d’égalité de deux chaı̂nes
chaine1.equals(chaine2) renvoie true si les contenus sont
égaux, et false sinon
Test d’égalité de deux chaı̂nes
String chaine1,chaine2;
chaine1="Bonjour";
chaine2="Bonjour";
// A NE PAS FAIRE
if(chaine1==chaine2)
System.out.println("les adresses sont égales");
// A FAIRE
if(chaine1.equals(chaine2))
System.out.println("les contenus des chaines sont égaux");
Jean-Luc Baril Initiation à la programmation JAVA
Les chaı̂nes de caractères
Les méthodes
Jean-Luc Baril Initiation à la programmation JAVA
Les chaı̂nes de caractères
Suppression des ’a’ dans une chaı̂ne
String chaine1,chaine2;
int i, longueur;
longueur=chaine1.length();
chaine2="";
for(i=0;i<=longueur-1;i++)
if(chaine1.charAt(i)!=’a’)
chaine2=chaine2+chaine1.charAt(i);
System.out.println(chaine2);
Jean-Luc Baril Initiation à la programmation JAVA
Les chaı̂nes de caractères
Remplacement des ’a’ par des ’o’ dans une chaı̂ne
String chaine1,chaine2;
int i, longueur;
longueur=chaine1.length();
chaine2="";
for(i=0;i<=longueur-1;i++)
if(chaine1.charAt(i)!=’a’)
chaine2=chaine2+chaine1.charAt(i);
else
chaine2=chaine2+’o’;
System.out.println(chaine2);
Jean-Luc Baril Initiation à la programmation JAVA
Les fonctions
Une fonction est un bout de code qui a un nom et qui peut
être appelée depuis le reste du programme.
Exemples de fonctions prédéfinies: Math.pow(a,b),
Math.abs(a), Math.random(), Math.sqrt(a), ...
Intérêts des fonctions
Meilleure lisibilité et concision (évite d’écrire plusieurs fois
le même code
Niveau d’abstraction plus élevé (un nom remplace une
partie complexe du programme)
Gain de place mémoire
Modification plus aisée
Partage de fonctions (biibliothèque de fonction)
Récursivité
Jean-Luc Baril Initiation à la programmation JAVA
Déclaration d’une fonction
On déclare une fonction à l’extérieur du main mais à l’intérieur
de class. Je conseille de les déclarer juste après le programme
principal.
public class programme
{
public static void main(String args[])
{
// Programme principal
}
// Déclaration des fonctions
}
Jean-Luc Baril Initiation à la programmation JAVA
Deux types de fonction
Fonction qui renvoie une valeur (Math.sqrt(),
Math.random(), périmètre(), moyenne(),...)
Fonction qui ne renvoie pas une valeur (affichage d’un
tableau, ...)
Jean-Luc Baril Initiation à la programmation JAVA
Déclaration d’une fonction qui renvoie une valeur
public static type Nomfonction(paramètres formels)
{ //instructions de la fonction
return valeurrenvoyée; }
* type est le type de la valeur renvoyée
* Nomfonction est le nom de la fonction
* Paramètres formels sont les données nécessaires pour la
déclaration de la fonction (ils restent donc sans valeur)
Appel de la fonction
variable=Nomfonction(parametres effectifs);
//renvoie la valeur de la fonction
* Les paramères effectifs sont les paramètres sur lesquels la
fonction est exécutée
* Lors de l’exécution les paramètres formels sont
remplacés par les paramètres effectifs
Jean-Luc Baril Initiation à la programmation JAVA
Les fonctions
Fonction qui renvoie le maximum de deux entiers
public static int maximum(int a, int b)
{int maxi; // Variable locale
if(a>b)
maxi=a;
else
maxi=b;
return maxi; // Renvoie le maximum de a et b
}
Les variables locales sont connues seulement dans la
fonction
Appel de la fonction qui renvoie le maximum de deux entiers
int x=1,y=2,max;
max=maximum(x,y); // Appel de la fonction sur x et y
System.out.println(max); // affichage de 2
Jean-Luc Baril Initiation à la programmation JAVA
Les fonctions
Fonction qui renvoie la moyenne de 2 réèls
public static double moyenne(double a, double b)
{double moy; // Variable locale
moy=(a+b)/2;
return moy; // Renvoie la moyenne de a et b
}
Appel de la fonction qui renvoie la moyenne
double x=1.5,y=2.5,moy;
moy=moyenne(x,y); // Appel de la fonction sur x et y
System.out.println(moy); // affichage la moyenne
Il y a ici deux variables moy !!!!!!!!!!!
Jean-Luc Baril Initiation à la programmation JAVA
Les fonctions
Déclaration d’une fonction qui ne renvoie pas de valeur
public static void Nomfonction(paramètres formels)
{
//instructions de la fonction
//il n’y a pas le return
}
Appel de la fonction
Nomfonction(parametres effectifs);
// C’est une instruction qui ne renvoie pas de valeur
// Elle se contente d’exécuter les instructions de la fonction
Jean-Luc Baril Initiation à la programmation JAVA
Les fonctions
Fonction qui affiche le maximum de deux entiers (sans le
renvoyer)
public static void maximum(int a, int b)
{int maxi; // Variable locale
if(a>b)
maxi=a;
else
maxi=b;
System.out.println("Le max de "+a+" et "+b+" est: "+maxi);
// Affiche le maximum de a et b
}
Appel de la fonction qui affiche le maximum de deux entiers
int x,y;
x=1;
y=2;
maximum(x,y); // Appel de la fonction sur x et y
Jean-Luc Baril Initiation à la programmation JAVA
Les fonctions
Peut-on modifier un paramètre de fonction?
-Les paramètres de types int, char, double, boolean, String
ne peuvent pas être modifiés au cours de l’exécution d’une
fonction.
On dit que les paramètres sont passés par valeur.
-Les paramètres de types tableaux 1D ou 2D peuvent être
modifiés.
On dit que les paramètres sont passés par références (ou
variable).
Jean-Luc Baril Initiation à la programmation JAVA
Les fonctions
Tentative de modification d’un paramètre passé par valeur
public static int ajoutun(int a)
{ a=a+1;
return a;
}
Appel de la fonction
int x;
x=1;
y=ajoutun(x); // Appel de la fonction sur x
// A la fin, y=2 et x=1
Jean-Luc Baril Initiation à la programmation JAVA
Les fonctions
Tentative de modification d’un paramètre passé par valeur
public static int ajoutun(int a)
{ a=a+1;
return a;
}
Appel de la fonction
int x;
x=1;
x=ajoutun(x); // Appel de la fonction sur x
// A la fin, x=2 Ici la modification est réalisée
// (mais c’est en trichant!!!)
Jean-Luc Baril Initiation à la programmation JAVA
Les fonctions
Modification d’un paramètre passé par référence
public static void modif(int tab[])
{ tab[0]=1;
tab[1]=2;
tab[2]=3;
}
Appel de la fonction
int T[];
T=new int[3];
T[0]=0;T[1]=1;T[2]=2;
modif(T); // Appel de la fonction sur T
// A la fin, T[0]=1 et T[1]=2 et T[2]=3
Jean-Luc Baril Initiation à la programmation JAVA
Les fonctions - La récursivité
Une fonction est récursive si elle s’appelle elle même.
Il y a toujours un cas de base sans appel récursif, et le cas
général où intervient la récursivité.
Fonction récursive pour calculer n! = (n-1)! * n
public static int facto(int n)
{
if(n==0)
return 1; // Cas de base
else
return n*facto(n-1); // Cas général de la récursivité
}
Appel de facto
int n,resu;
n=10;
resu=facto(n); // Appel de la fonction récursive facto
Jean-Luc Baril Initiation à la programmation JAVA
Les fonctions - La récursivité
Partant d’un couple de lapins, combien de couples obtiendrons-nous après un nombre donné de mois sachant que
chaque couple produit chaque mois un nouveau couple, lequel ne devient productif qu’après deux mois.
Fonction récursive pour calculer les nombres de Fibonacci
f0 = 1, f1 = 1, fn = fn−1 + fn−2
public static int fibo(int n)
{
if(n==0 || n==1)
return 1; // Cas de base
else
return fibo(n-1)+fibo(n-2); // Cas général
}
Appel de fibo
int n,resu;
n=10;
resu=fibo(n); // Appel de la fonction récursive fibo
Jean-Luc Baril Initiation à la programmation JAVA
Les fonctions - La récursivité
Fonction récursive pour calculer les coefficients binomiaux
Ck
n = Ck−1
n−1 + Ck
n−1
public static int coeff(int n,int k)
{
if(k==0 || k==n)
return 1; // Cas de base
else
return coeff(n-1,k-1)+coeff(n-1,k); // Cas général
}
Appel de coeff
int n,k,resu;
n=10;k=3;
resu=fibo(n,k); // Appel de la fonction récursive coeff
Jean-Luc Baril Initiation à la programmation JAVA
Jean-Luc Baril Initiation à la programmation JAVA

Contenu connexe

Similaire à coursjavaDiapo.pdf

C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzlesMicrosoft
 
Cours sur les circuits logiques câblés www.cours-online.com
Cours sur les circuits logiques câblés www.cours-online.comCours sur les circuits logiques câblés www.cours-online.com
Cours sur les circuits logiques câblés www.cours-online.commorin moli
 
Technologies du Web - Architectures matérielles et logicielles
Technologies du Web - Architectures matérielles et logiciellesTechnologies du Web - Architectures matérielles et logicielles
Technologies du Web - Architectures matérielles et logiciellesFrédéric Simonet
 
TP Fouille de données (Data Mining) et Apprentissage Machine
TP Fouille de données (Data Mining) et Apprentissage MachineTP Fouille de données (Data Mining) et Apprentissage Machine
TP Fouille de données (Data Mining) et Apprentissage MachineBoubaker KHMILI
 
Barbie explique IEEE754 : pourquoi les calculs informatiques sont faux!
Barbie explique IEEE754 : pourquoi les calculs informatiques sont faux!Barbie explique IEEE754 : pourquoi les calculs informatiques sont faux!
Barbie explique IEEE754 : pourquoi les calculs informatiques sont faux!Ruau Mickael
 
Barbie explique IEEE754 : pourquoi les calculs informatiques sont faux?
Barbie explique IEEE754 : pourquoi les calculs informatiques sont faux?Barbie explique IEEE754 : pourquoi les calculs informatiques sont faux?
Barbie explique IEEE754 : pourquoi les calculs informatiques sont faux?Ruau Mickael
 
Javascript : que fait ce code?
Javascript : que fait ce code?Javascript : que fait ce code?
Javascript : que fait ce code?Ruau Mickael
 
Slides octave1
Slides octave1Slides octave1
Slides octave1issaslide
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la rechercheJohan Moreau
 
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Microsoft
 
C++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in ParisC++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in Parischristophep21
 
TD Grappes d'innovation
TD Grappes d'innovationTD Grappes d'innovation
TD Grappes d'innovationBoris Adam
 
Owf 2013 rii panorama leroy
Owf 2013 rii panorama leroyOwf 2013 rii panorama leroy
Owf 2013 rii panorama leroyPatrick MOREAU
 
Rapport de mini projet java
Rapport de mini projet javaRapport de mini projet java
Rapport de mini projet javaAyoub BAHTAT
 

Similaire à coursjavaDiapo.pdf (20)

Cours algorithmique02
Cours algorithmique02Cours algorithmique02
Cours algorithmique02
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzles
 
Cours sur les circuits logiques câblés www.cours-online.com
Cours sur les circuits logiques câblés www.cours-online.comCours sur les circuits logiques câblés www.cours-online.com
Cours sur les circuits logiques câblés www.cours-online.com
 
Technologies du Web - Architectures matérielles et logicielles
Technologies du Web - Architectures matérielles et logiciellesTechnologies du Web - Architectures matérielles et logicielles
Technologies du Web - Architectures matérielles et logicielles
 
Mathématiques et Python
Mathématiques et PythonMathématiques et Python
Mathématiques et Python
 
Td pascal tdD
Td pascal tdDTd pascal tdD
Td pascal tdD
 
C1_AlgoSdd.pdf
C1_AlgoSdd.pdfC1_AlgoSdd.pdf
C1_AlgoSdd.pdf
 
TP Fouille de données (Data Mining) et Apprentissage Machine
TP Fouille de données (Data Mining) et Apprentissage MachineTP Fouille de données (Data Mining) et Apprentissage Machine
TP Fouille de données (Data Mining) et Apprentissage Machine
 
Barbie explique IEEE754 : pourquoi les calculs informatiques sont faux!
Barbie explique IEEE754 : pourquoi les calculs informatiques sont faux!Barbie explique IEEE754 : pourquoi les calculs informatiques sont faux!
Barbie explique IEEE754 : pourquoi les calculs informatiques sont faux!
 
Barbie explique IEEE754 : pourquoi les calculs informatiques sont faux?
Barbie explique IEEE754 : pourquoi les calculs informatiques sont faux?Barbie explique IEEE754 : pourquoi les calculs informatiques sont faux?
Barbie explique IEEE754 : pourquoi les calculs informatiques sont faux?
 
Javascript : que fait ce code?
Javascript : que fait ce code?Javascript : que fait ce code?
Javascript : que fait ce code?
 
Slides octave1
Slides octave1Slides octave1
Slides octave1
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la recherche
 
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
 
C++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in ParisC++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in Paris
 
TD Grappes d'innovation
TD Grappes d'innovationTD Grappes d'innovation
TD Grappes d'innovation
 
Owf 2013 rii panorama leroy
Owf 2013 rii panorama leroyOwf 2013 rii panorama leroy
Owf 2013 rii panorama leroy
 
JavaCours1.ppt
JavaCours1.pptJavaCours1.ppt
JavaCours1.ppt
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
Rapport de mini projet java
Rapport de mini projet javaRapport de mini projet java
Rapport de mini projet java
 

coursjavaDiapo.pdf

  • 1. Info1A - Licence 1 - Année 2022/2023 Initiation à la programmation JAVA Jean-Luc Baril Université de Bourgogne Labo. LIB http://jl.baril.u-bourgogne.fr September 12, 2022 Jean-Luc Baril Initiation à la programmation JAVA
  • 2. Informations éventuellement utiles Site web Module Info1A: http://jl.baril.u-bourgogne.fr/Licence1.html CM=14 TD=18 TP=18 Jean-Luc Baril Initiation à la programmation JAVA
  • 3. Informations éventuellement utiles Modalités de contrôle: - Partiel écrit (en amphi) en milieu de semestre (coeff 1) - Examen écrit (en amphi) en fin de semestre (coeff 2) Planning: Jean-Luc Baril Initiation à la programmation JAVA
  • 4. Informations éventuellement utiles Plages de TD et TPS selon groupes: Jean-Luc Baril Initiation à la programmation JAVA
  • 5. Informations éventuellement utiles Bibliographie: Jean-Luc Baril Initiation à la programmation JAVA
  • 6. L’informatique? Informatique - Computing science - Informatics L’informatique est la science du traitement automatique de l’information (1957 - Informatik - Karl Steinbuch). Ordinateur - Computer L’ordinateur est un ensemble de dispositifs physiques utilisés pour traiter automatiquement des informations (Microprocesseur, mémoire, écran, clavier, disques durs, ...). Logiciel Le logiciel est un ensemble structuré d’instructions décrivant un traitement d’informations à faire réaliser par un ordinateur (contraction de logique et matériel - 1972 - software ) Jean-Luc Baril Initiation à la programmation JAVA
  • 7. L’informatique? Rapide historique Les bouliers sont les plus anciennes machines à calculer. Le principe du boulier est déjà en germe chez les Babyloniens vers 2000 avant J.-C. ; à cette époque, on utilise des cailloux pour compter. Puis, au cours du Ier millénaire avant J.-C. naı̂t en Chine l’idée de fabriquer un instrument qui faciliterait le calcul : le boulier. Jean-Luc Baril Initiation à la programmation JAVA
  • 8. L’informatique? Rapide historique Les batons de John Napier (1614) : Système de baquettes coulissantes permettant de faire des multiplications. Jean-Luc Baril Initiation à la programmation JAVA
  • 9. L’informatique? Rapide historique En 1642, Blaise Pascal construit la Pascaline Jean-Luc Baril Initiation à la programmation JAVA
  • 10. L’informatique? Rapide historique En 1694, le mathématicien Gottfried Wilhelm Leibniz construit la première machine à calculer utilisant des cylindres cannelés Jean-Luc Baril Initiation à la programmation JAVA
  • 11. L’informatique? Rapide historique Vers 1800, le Français Joseph-Marie Jacquard met au point un métier à tisser qui utilise des cartons perforés pour commander les mouvements des aiguilles Jean-Luc Baril Initiation à la programmation JAVA
  • 12. L’informatique? Rapide historique Vers 1849, Charles babbage donne les plans de la machine analytique, mais n’arrive pas à la construire Jean-Luc Baril Initiation à la programmation JAVA
  • 13. L’informatique? Rapide historique De 1939 à 1942, Alan Turing conçoit la ’Bombe’ qui permet de décrypter Enigma En 1945, il conçoit les plans du premier ordinateur moderne, mais n’a pas les moyens de le réaliser Jean-Luc Baril Initiation à la programmation JAVA
  • 14. L’informatique? Rapide historique En 1945, aux Etats-Unis, naı̂t l’ENIAC (Electronic Numerator Integrator and Computer), le premier véritable ordinateur de l’histoire. - il s’agit d’une machine électronique. Il n’y a plus de rouages mécaniques ; l’information est transportée par des électrons, des particules chargées d’électricité, qui se déplacent très vite - c’est une machine programmable. Cela signifie qu’on peut enregistrer des instructions qui s’exécuteront sans intervention de l’homme. Jean-Luc Baril Initiation à la programmation JAVA
  • 15. L’informatique? Rapide historique 30 tonnes, 100m2, 17000 tubes à vides, des cafards s’introduisent dans les tubes faussant les résultats, d’ou le terme ’bug informatique’. Jean-Luc Baril Initiation à la programmation JAVA
  • 16. L’informatique? Rapide historique 1953 : IBM lance son premier ordinateur commercial en série : l’IBM 650. ........................ l’ère numérique commence ......... Jean-Luc Baril Initiation à la programmation JAVA
  • 17. L’informatique? Rapide historique Ordinateur quantique: 1 qbit : α PILE + β FACE Billet de loterie: - Avant le tirage, billet de loterie = α GAIN + β PERTE - Après le tirage, billet de loterie = GAIN ou PERTE Jean-Luc Baril Initiation à la programmation JAVA
  • 18. L’informatique et les mathématiques? + Calculateur puissant (simulation météo (équations différentielles), traitement du signal (image-vidéo) transformée de Fourier, bioinformatique (théorie des mots, combinatoire), ...) + Cryptographie (paiement sécurisé sur internet, carte bancaire, système RSA issu de l’arithmétique) + Animation et reconstruction 3D (géométrie) + Quantique (matrice ) + ............... Jean-Luc Baril Initiation à la programmation JAVA
  • 19. L’informatique? Algorithme Algorithme (M. al-Khwarizmi - 780:850) Un algorithme est une suite ordonnée d’instructions qui indique la démarche à suivre pour résoudre un problème. Exemple: Faire cuire un oeuf sur le plat Acheter un oeuf; mettre de l’huile dans la poele; faire chauffer; casser l’oeuf dans la poele; attendre 2 minutes. Algorithmique L’algorithmique est la science des algorithmes. (construction d’algorithme, vérification de la validité, la robustesse, leur réutilisabilité, la complexité et leur efficacité) Jean-Luc Baril Initiation à la programmation JAVA
  • 20. L’informatique? Programme Programme Il s’agit de la traduction d’un algorithme dans un langage particulier. Un programme dépend donc du langage, et également de la plateforme d’éxécution. Programmation C’est l’action qui consiste à rédiger un programme dans un langage donné. Jean-Luc Baril Initiation à la programmation JAVA
  • 21. L’informatique? Compilation et Exécution Compilation C’est l’action qui consiste à traduire le programme en langage compréhensible par l’ordinateur. Interpréteur (en JAVA) Un outil ayant pour tâche d’éxécuter un programme qui a été compilé. Jean-Luc Baril Initiation à la programmation JAVA
  • 22. La programmation en Java Installation de Java http://www.oracle.com Jean-Luc Baril Initiation à la programmation JAVA
  • 23. La programmation en Java La structure d’un programme java public class monpremierprogramme // Nom du programme { public static void main (String[] args) //Programme principal { //declaration de variables //instructions //commentaires } } Comment Faire? - Dans un fichier texte, taper le code ci-dessus - Sauvegarder le fichier texte dans un fichier monpremierprogramme.java - Compiler le fichier: javac monpremierprogramme.java (création du fichier monpremierprogramme.class) - Exécuter le programme: java monpremierprogramme Jean-Luc Baril Initiation à la programmation JAVA
  • 24. La programmation en Java Bit (binary digit) 0 ou 1: il s’agit de la plus petite unité d’information manipulable par une machine Octet (Byte en anglais) Unité d’information composée de 8 bits Unités standardisées - 1 kilooctet (ko) = 1000 octets - 1 megaoctet (Mo) = 106 octets - 1 gigaoctet (Go) = 109 octets - 1 tetraoctet (To) = 1012 octets - 1 pétaoctet (Po) = 1015 octets Jean-Luc Baril Initiation à la programmation JAVA
  • 25. La programmation en Java Représentation des entiers en binaire (division entière par 2) 1001101 Jean-Luc Baril Initiation à la programmation JAVA
  • 26. La programmation en Java Du binaire au décimal Code binaire: 1001101 77 = 1.20 + 0.21 + 1.22 + 1.23 + 0.24 + 0.25 + 1.26 Avec 1, 2 ou 3 bits - Avec un bit, on code les entiers 0 et 1 - Avec deux bits, on code les entiers 0, 1, 2 et 3 - Avec 3 bits, on code les entiers 0,1,2,3,4,5,6,7 - Avec n bits, on code les entiers compris entre 0 et 2n − 1 Jean-Luc Baril Initiation à la programmation JAVA
  • 27. La programmation en Java Comment coder un réels???? Exemple de 77,3 - Codage partie entière : 77 ←→ 1001101 - Codage partie non entière : 0.3←→ ???? 0.3 ∗ 2 = 0.6 0.6 ∗ 2 = 1.2 0.2 ∗ 2 = 0.4 0.4 ∗ 2 = 0.8 0.8 ∗ 2 = 1.6 0.6 ∗ 2 = 1.2 ... = ... 0.3 ←→ 0.0 1001 1001 1001 ... Codage de 77.3 77.3 ←→ 1001101.0 1001 1001 1001 ... Jean-Luc Baril Initiation à la programmation JAVA
  • 28. La programmation en Java Les types de données simples en Java Jean-Luc Baril Initiation à la programmation JAVA
  • 29. La programmation en Java Les variables Une variable est un contenant ayant un nom (identificateur) et pouvant contenir une information des types précédents (int, double, char, ...) - C’est une boite ayant un nom et pouvant contenir une valeur d’un seul type de données. - Toute variable d’un programme doit être déclarée avant son utilisation (en début de programme par exemple) Déclaration d’une variable Type de données Identificateur ; Déclaration de la variable toto pouvant contenir un entier int toto ; Jean-Luc Baril Initiation à la programmation JAVA
  • 30. La programmation en Java Les opérateurs L’addition, la soustraction, la multiplication, la division : +, −, ∗, / La division entière et le reste de la division entière : /, % Les comparaisons : <, >, ==, <=, >=, ! = Affectation : = Le Non : ! Le ET logique : && Le Ou (exclusif) : ∧ Le Ou (Inclusif) : || Jean-Luc Baril Initiation à la programmation JAVA
  • 31. Les opérations classiques Une expression mathématique: 2x + 3y−1 5x+1 4x ENJAVA =⇒ (2 ∗ x + (3 ∗ y − 1)/(5 ∗ x + 1))/(4 ∗ x) Reste de la division entière: x mod 10 ENJAVA =⇒ x%10 Division entière d’une variable entière a: a 2 ENJAVA =⇒ a/2 Jean-Luc Baril Initiation à la programmation JAVA
  • 32. La programmation en Java Affectation C’est placer une valeur dans une variable Comment faire: Indiquer la valeur exacte à placer dans la variable toto de la façon suivante: toto = valeur à placer; Examples titi= 8 ; // place 8 dans la variable titi toto= titi ; // place le contenu de titi dans la variable toto toto= titi+5 ; // place la somme du contenu de titi avec 5 dans toto toto= toto+4 ; // place la somme du contenu de toto avec 4 dans toto Jean-Luc Baril Initiation à la programmation JAVA
  • 33. La programmation en Java Les opérateurs booléens Non : ! Ou exclusif : ∧ (Correspond au OU BIEN ) Ou inclusif : || Et : && Jean-Luc Baril Initiation à la programmation JAVA
  • 34. La programmation en Java Le type boolean Le type boolean permet uniquement deux valeurs: true, false Exercice: Donner une expression java a = b ENJAVA =⇒ a == b a ≥ b ENJAVA =⇒ a >= b x ∈ [a, b] ENJAVA =⇒ x >= a && x <= b x ∈]a, b] ENJAVA =⇒ x > a && x <= b x ∈]a, b]∩[c, d[ ENJAVA =⇒ (x > a&&x <= b) && (x >= c&&x < d) Jean-Luc Baril Initiation à la programmation JAVA
  • 35. La programmation en Java Exercice: Donner une expression java x ∈]a, b] ∪ [c, d[ ENJAVA =⇒ (x > a&&x <= b) || (x >= c&&x < d) [a, b] ⊂ [c, d] ENJAVA =⇒ a >= c && b <= d x est une année bissextile lorsque x est un multiple de 4 mais pas de 100 OU BIEN x est un multiple de 400. ENJAVA =⇒ (x%4 == 0 && x%100! = 0) ∧ (x%400 == 0) Jean-Luc Baril Initiation à la programmation JAVA
  • 36. La programmation en Java La négation d’une expression * négation (Je fais un CM ET il fait beau) ↔ (je ne fais pas un CM OU il ne fait pas beau) * !(A && B) ↔ !A || !B * négation (Je fais un CM OU je suis dans mon bureau) ↔ (je ne fais pas un CM ET je ne suis pas dans mon bureau) * !(A || B) ↔ !A && !B Donner l’expression de la négation On a vu que: x ∈]a, b] ∪ [c, d[ ENJAVA =⇒ (x > a&&x <= b) || (x >= c&&x < d) x / ∈]a, b] ∪ [c, d[ ENJAVA =⇒ (x ≤ a || x > b)&&(x < c || x >= d) Jean-Luc Baril Initiation à la programmation JAVA
  • 37. La programmation en Java public class monpremierprogramme //Nom du programme { public static void main (String[] args) //Programme principal { // Déclaration des variables int toto, titi, tutu; // Déclare trois variables boolean tyty; // Déclare une variable booléenne // Instructions toto= 4; // Met la valeur 4 dans toto toto= toto+1; // Ajoute 1 au contenu de toto titi= toto*4; // Met 4*5 dans titi tutu= titi/3; // Met 20/3 dans tutu tutu= titi % 3; // Met 20 % 3 dans tutu tyty= false; // Met false dans tyty tyty= tutu>=2 && tutu < 4; // Met true dans tyty } } Jean-Luc Baril Initiation à la programmation JAVA
  • 38. La programmation en Java Echange du contenu de deux variables: =⇒ Jean-Luc Baril Initiation à la programmation JAVA
  • 39. La programmation en Java Echange du contenu de deux variables: =⇒ Jean-Luc Baril Initiation à la programmation JAVA
  • 40. La programmation en Java Echange du contenu de deux variables: =⇒ Etape 1: V = N Jean-Luc Baril Initiation à la programmation JAVA
  • 41. La programmation en Java Echange du contenu de deux variables: =⇒ Etape 1: V = N Etape 2: N = G Jean-Luc Baril Initiation à la programmation JAVA
  • 42. La programmation en Java Echange du contenu de deux variables: =⇒ Etape 1: V = N Etape 2: N = G Etape 3: G = V Jean-Luc Baril Initiation à la programmation JAVA
  • 43. La programmation en Java public class echange //Nom du programme { public static void main (String[] args) //Programme principal { // Déclaration des variables int Nuits, Gevrey, Temp ; // Déclare trois variables // Remplissage des verres Nuits=4; // Remplit le verre de Nuits Gevrey=8; // Remplit le verre de Gevrey // Echange le contenu des deux verres Temp=Nuits; // Verse le contenu de Nuits dans Temp Nuits=Gevrey; // Verse le contenu de Gevrey dans Nuits Gevrey=Temp; // Verse le contenu de Temp dans Gevrey } } Jean-Luc Baril Initiation à la programmation JAVA
  • 44. La programmation en Java Communiquer avec l’ordinateur pendant l’éxécution du programme Affichage des résultats à l’écran (sortie) Saisie d’informations au clavier (entrée) Jean-Luc Baril Initiation à la programmation JAVA
  • 45. La programmation en Java - Les sorties Affichage à l’écran d’un texte System.out.print("texte a afficher"); // Affiche le texte System.out.println("texte a afficher"); // Affiche le texte puis revient à la ligne Affichage à l’écran du contenu d’une variable System.out.print(variable); // Affiche le contenu de la variable System.out.println(variable); // Affiche le contenu de la variable puis revient à la ligne Jean-Luc Baril Initiation à la programmation JAVA
  • 46. La programmation en Java - Les sorties Affichage à l’écran d’un texte et du contenu d’une variable System.out.print("texte a afficher"+variable); // Affiche le texte puis le contenu de la variable System.out.println("texte a afficher"+variable); // Affiche le texte puis le contenu de la variable et // revient à la ligne System.out.println("toto= "+toto); //Affiche toto= 8 System.out.println("toto= "+toto+" et titi= "+titi); // Affiche toto= 8 et titi= 4 Jean-Luc Baril Initiation à la programmation JAVA
  • 47. La programmation en Java - Les sorties public class echange //Nom du programme { public static void main (String[] args) //Programme principal { int Nuits, Gevrey, Temp ; System.out.println("Bonjour"); Nuits=4; Gevrey=8; Temp=Nuits; Nuits=Gevrey; Gevrey=Temp; System.out.println("Le contenu de Nuits est:"+Nuits); System.out.println("Le contenu de Gevrey est:"+Gevrey); } } Jean-Luc Baril Initiation à la programmation JAVA
  • 48. La programmation en Java - Les sorties Un joli dessin!!! public class jolidessin //Nom du programme { public static void main (String[] args) //Programme principal { System.out.println("*******"); System.out.println(" ***** "); System.out.println(" *** "); System.out.println(" * "); } } Jean-Luc Baril Initiation à la programmation JAVA
  • 49. La programmation en Java - Les entrées La saisie d’un entier dans la variable toto int toto; toto=Lire.i(); // attend que l’utilisateur saisisse un entier La saisie d’un réel dans la variable titi double titi; titi=Lire.d(); // attend que l’utilisateur saisisse un réel La saisie d’un texte dans une variable tutu String tutu; tutu=Lire.S(); // attend que l’utilisateur saisisse un texte Jean-Luc Baril Initiation à la programmation JAVA
  • 50. La programmation en Java - Les Entrées/Sorties public class echange //Nom du programme { public static void main (String[] args) //Programme principal { int Nuits, Gevrey, Temp ; System.out.println("Saisir le contenu de Nuits"); Nuits=Lire.i(); System.out.println("Saisir le contenu de Gevrey"); Gevrey=Lire.i(); Temp=Nuits; Nuits=Gevrey; Gevrey=Temp; System.out.println("Le contenu de Nuits est:"+Nuits); System.out.println("Le contenu de Gevrey est:"+Gevrey); } } Jean-Luc Baril Initiation à la programmation JAVA
  • 51. Exercice - Les Entrées/Sorties Moyenne de deux réels Ecrire un programme Java permettant de faire la moyenne de deux réels saisis par l’utilisateur. public class moyenne //Nom du programme { public static void main (String[] args) //Programme principal { double x, y, moyenne; System.out.println("Saisir x"); x=Lire.d(); System.out.println("Saisir y"); y=Lire.d(); moyenne=(x+y)/2; System.out.println("La moyenne est:"+moyenne); } } Jean-Luc Baril Initiation à la programmation JAVA
  • 52. Fiche Memo CM1- Les Entrées/Sorties Le minimum à savoir!!!! public class nomprog //Nom du programme { public static void main (String[] args) //Programme principal { // Déclaration des variables utiles } } Le minimum à savoir!!!! 1 ; à la fin de chaque instruction 2 Affectation: x=3; 3 Opérateurs booléen: &&, ||, ==, x>= 1 && x<= 5, x==7 || y==8 4 Affichage à l’écran: System.out.println(”Bonjour”+variable); 5 Saisie au clavier: x=Lire.i(); y=Lire.d(); Jean-Luc Baril Initiation à la programmation JAVA
  • 53. Exercice - Les Entrées/Sorties Résolution de a ∗ x = b lorsque a 6= 0 Ecrire un programme Java permettant la saisie de a et b par l’utilisateur, puis d’afficher la solution de l’équation. public class moyenne //Nom du programme { public static void main (String[] args) //Programme principal { // Déclaration des variables utiles // Saisie de a et b // Calcul de la solution // Affichage de la solution } } Jean-Luc Baril Initiation à la programmation JAVA
  • 54. Les conditionnelles Structures permettant de réaliser des aiguillages if ... if(condition) { // Bloc d’instructions } - Si la condition est vraie, le programme exécute les instructions situées entre accolades - Si la condition est fausse, le programme ne considère pas les instructions et passe à la suite Es-tu adulte? // Déclaration et saisie d’un age if(age>=18) {System.out.println("Vous etes adultes");} Jean-Luc Baril Initiation à la programmation JAVA
  • 55. Les conditionnelles x ∈ [1, 100]? // Déclaration et saisie de $x$ if(x>=1 && x<=100) {System.out.println(" x est entre 1 et 100");} x ∈ [1, 100]? // Déclaration et saisie de $x$ if(x>=1 && x<=100) {System.out.println(" x est entre 1 et 100"); x=x+1; } Si le bloc d’instructions dans le IF contient une seule instruction alors les accolades sont facultatives Jean-Luc Baril Initiation à la programmation JAVA
  • 56. Les conditionnelles if ... else ... if(condition) { // Bloc d’instructions 1 } else { // Bloc d’instructions 2 } - Si la condition est vraie, le programme exécute les instructions du bloc 1 - Si la condition est fausse, le programme exécute les instructions du bloc 2 Jean-Luc Baril Initiation à la programmation JAVA
  • 57. Les conditionnelles x ∈ [1, 100]? // Déclaration et saisie de $x$ if(x>=1 && x<=100) {System.out.println(" x est entre 1 et 100");} else {System.out.println(" x n est pas entre 1 et 100");} x ∈ [1, 100]? // Déclaration et saisie de $x$ if(x>=1 && x<=100) System.out.println(" x est entre 1 et 100"); else System.out.println(" x n est pas entre 1 et 100"); Si le bloc d’instructions dans le IF contient une seule instruction alors les accolades sont facultatives Jean-Luc Baril Initiation à la programmation JAVA
  • 58. Les conditionnelles Maximum de deux entiers public class maximum { public static void main (String[] args) { int x, y, maxi; System.out.println("Saisir x"); x=Lire.i(); System.out.println("Saisir y"); y=Lire.i(); // Déclaration et saisie de x et y if(x>y) {maxi=x;} else {maxi=y;} System.out.println("Le maximum est:"+maxi); } } Jean-Luc Baril Initiation à la programmation JAVA
  • 59. Les conditionnelles Résolution équation ax+b=0 double a, b, x; System.out.println("Saisir a"); a=Lire.d(); System.out.println("Saisir b"); b=Lire.d(); if(a!=0) { x=-b/a; System.out.println("La solution est :"+x); } else if(b==0) System.out.println("Il y a une infinité de solutions"); else System.out.println("Il n’y a pas de solution"); Le if ... else ... est considérée comme une seule instruction Jean-Luc Baril Initiation à la programmation JAVA
  • 60. Les conditionnelles Classement par ordre croissant de trois entiers //Déclaration et saisie de a, b et c if(a<=b && b<=c) System.out.println(a+"<="+b+"<="+c); if(a<=c && c<=b) System.out.println(a+"<="+c+"<="+b); if(b<=a && a<=c) System.out.println(b+"<="+a+"<="+c); if(b<=c && c<=a) System.out.println(b+"<="+c+"<="+a); if(c<=a && a<=b) System.out.println(c+"<="+a+"<="+b); if(c<=b && b<=a) System.out.println(c+"<="+b+"<="+a); Jean-Luc Baril Initiation à la programmation JAVA
  • 61. Les conditionnelles Classement par ordre croissant de trois entiers //Déclaration et saisie de a, b et c if(a<=b) if(b<=c) System.out.println(a+"<="+b+"<="+c); else if(c<=a) System.out.println(c+"<="+a+"<="+b); else System.out.println(a+"<="+c+"<="+b); else if(a<=c) System.out.println(b+"<="+a+"<="+c); else if(c<=b) System.out.println(c+"<="+b+"<="+a); else System.out.println(b+"<="+c+"<="+a); Jean-Luc Baril Initiation à la programmation JAVA
  • 62. Les conditionnelles switch ... switch(valeur) { case val1: { /*Bloc d’instructions B1*/ } case val2: { /*Bloc d’instructions B2*/ } ... case valn: { /*Bloc d’instructions Bn*/ } } - Si valeur vaut val1, le programme exécute B1, B2, ..., Bn - Si valeur vaut val2, le programme exécute B2, ..., Bn - ... - Si valeur vaut valn, le programme exécute Bn Attention La variable valeur du switch doit être de type int ou char (pour l’instant!!!) Jean-Luc Baril Initiation à la programmation JAVA
  • 63. Les conditionnelles Affichage des derniers jours de la semaine int jour; System.out.println("Numéro de jour de la semaine?"); jour=Lire.i(); switch(jour) { case 1: { System.out.println("Lundi"); } case 2: { System.out.println("Mardi"); } case 3: { System.out.println("Mercredi"); } case 4: { System.out.println("Jeudi"); } case 5: { System.out.println("Vendredi"); } case 6: { System.out.println("Samedi"); } case 7: { System.out.println("Dimanche"); } } Si jour=5, alors le programme affiche Vendredi, Samedi et Dimanche Jean-Luc Baril Initiation à la programmation JAVA
  • 64. Les conditionnelles switch ... switch(valeur) { case val1: { /*Instructions B1*/ break;} case val2: { /*Instructions B2*/ break;} ... case valn: { /*Instructions Bn*/ break;} } - Si valeur vaut val1, le programme exécute seulement B1 - Si valeur vaut val2, le programme exécute seulement B2 - ... - Si valeur vaut valn, le programme exécute seulement Bn L’instruction break permet d’arrêter l’exécution dans une structure. Cette instruction sera permise UNIQUEMENT dans un switch. Jean-Luc Baril Initiation à la programmation JAVA
  • 65. Les conditionnelles Affichage du jour de la semaine int jour; System.out.println("Saisir le numéro de jour de la semaine"); jour=Lire.i(); switch(jour) { case 1: { System.out.println("Lundi"); break; } case 2: { System.out.println("Mardi"); break; } case 3: { System.out.println("Mercredi"); break; } case 4: { System.out.println("Jeudi"); break; } case 5: { System.out.println("Vendredi"); break; } case 6: { System.out.println("Samedi"); break; } case 7: { System.out.println("Dimanche"); break; } } Si jour=5, le programme affiche uniquement Vendredi Jean-Luc Baril Initiation à la programmation JAVA
  • 66. Les conditionnelles Un mélange des deux syntaxes int jour; System.out.println("Saisir le numéro de jour de la semaine"); jour=Lire.i(); switch(jour) { case 1: { System.out.println("Lundi"); break; } case 2: { System.out.println("Mardi"); break; } case 3: { System.out.println("Mercredi"); break; } case 4: { System.out.println("Jeudi"); } case 5: { System.out.println("Vendredi"); } case 6: { System.out.println("Samedi"); break; } case 7: { System.out.println("Dimanche"); break; } } Si jour=4, le programme affiche Jeudi, Vendredi et Samedi Jean-Luc Baril Initiation à la programmation JAVA
  • 67. Les conditionnelles Deux exercices!!! Jean-Luc Baril Initiation à la programmation JAVA
  • 68. Fiche Memo CM2- Les conditionnelles Le minimum à savoir!!!! if(condition) { ....} if(condition) { ....} else { ....} switch(variable) { case val1: { ....; break;} case val2: { ....; break;} .... case valn: { ....; break;} } Jean-Luc Baril Initiation à la programmation JAVA
  • 69. Les répétitions Structures permettant de répéter des instructions La boucle for(...) for(initialisation; condition; incrémentation) { /* Instructions */ } - L’initialisation permet de donner une valeur de départ à la variable de boucle. C’est la première instruction exécutée. - Condition est le test à vérifier pour pouvoir exécuter les instructions de la boucle - L’incrémentation est une instruction qui permet de modifier le résultat de la condition ( i + +, ou i − −). Jean-Luc Baril Initiation à la programmation JAVA
  • 70. Les répétitions Exemple : Afficher les 100 premiers entiers for(i=1; i<=100; i++) { System.out.println(i); } Jean-Luc Baril Initiation à la programmation JAVA
  • 71. Les répétitions Affichage de la somme des n premiers entiers public class somme { public static void main (String[] args) { int i, n, somme=0; System.out.println("Saisir l’entier n"); n=Lire.i(); for(i=1; i<=n; i++) somme=somme+i; System.out.println("La somme est: "+somme); } } Jean-Luc Baril Initiation à la programmation JAVA
  • 72. Les répétitions La boucle while(...) while(condition) { /* Instructions */ } - Tant que la condition est vraie (true), le programme exécute les instructions de la boucle * La condition est vérifiée avant d’exécuter les instructions * Il est nécessaire de modifier la condition à l’intérieur de la boucle pour que la boucle puisse s’arrêter Jean-Luc Baril Initiation à la programmation JAVA
  • 73. Les répétitions Afficher les 100 premiers entiers i=1; while(i<=100) { System.out.println(i); i=i+1; } Jean-Luc Baril Initiation à la programmation JAVA
  • 74. Les répétitions Affichage de la somme des n premiers entiers public class somme { public static void main (String[] args) { int i, n, somme=0; System.out.println("Saisir l’entier n"); n=Lire.i(); i=1; while(i<=n) { somme=somme+i; i=i+1; } System.out.println("La somme est: "+somme); } } Jean-Luc Baril Initiation à la programmation JAVA
  • 75. Les répétitions La boucle do ...while do { /* Instructions */ } while(conditions); - Le programme exécute les instructions de la boucle, puis vérifie ensuite la condition pour éventuellement continuer * La condition est vérifiée après avoir exécuté les instructions * Il est nécessaire de modifier la conditions à l’intérieur de la boucle pour que la boucle puisse s’arreter Jean-Luc Baril Initiation à la programmation JAVA
  • 76. Les répétitions Afficher les 100 premiers entiers i=1; do { System.out.println(i); i=i+1; } while(i<=100); Jean-Luc Baril Initiation à la programmation JAVA
  • 77. Les répétitions Affichage de la somme des n premiers entiers public class somme { public static void main (String[] args) { int i, n, somme=0; System.out.println("Saisir l’entier n"); n=Lire.i(); i=1; do { somme=somme+i; i=i+1; } while(i<=n); System.out.println("La somme est: "+somme); } } Jean-Luc Baril Initiation à la programmation JAVA
  • 78. Les répétitions Saisie d’un entier positif ou nul public class saisie { public static void main (String[] args) { int n; do { System.out.println("Saisir un entier positif ou nul"); n=Lire.i(); } while(n<0); } } Jean-Luc Baril Initiation à la programmation JAVA
  • 79. Fiche Memo CM3- Les répétitions Le minimum à savoir!!!! for(i=1;i<=100;i++) // Pour i allant de 1 { ....} // jusqu’à 100 faire .... for(i=100;i>=1;i--) // Pour i allant de 100 { ....} // jusqu’à 1 faire .... while(condition) // Tant que la condition { ....} // est vraie faire .... do // Faire .... jusqu’à ce que {....} // la condition soit fausse while(condition); Jean-Luc Baril Initiation à la programmation JAVA
  • 80. Les répétitions Affichage du produit des n premiers entiers positifs public class produit { public static void main (String[] args) { int i, n, produit=1; System.out.println("Saisir l’entier n"); n=Lire.i(); for(i=1; i<=n; i++) produit=produit*i; System.out.println("Le produit est: "+produit); } } Jean-Luc Baril Initiation à la programmation JAVA
  • 81. Les répétitions Affichage du produit des n premiers entiers positifs public class produit { public static void main (String[] args) { int i, n, produit=1; System.out.println("Saisir l’entier n"); n=Lire.i(); i=1; while(i<=n) { produit=produit*i; i=i+1; } System.out.println("Le produit est: "+produit); } } Jean-Luc Baril Initiation à la programmation JAVA
  • 82. Les répétitions Affichage du produit des n premiers entiers positifs public class produit { public static void main (String[] args) { int i, n, produit=1; System.out.println("Saisir l’entier n"); n=Lire.i(); i=1; do { produit=produit*i; i=i+1; } while(i<=n); System.out.println("Le produit est: "+produit); } } Jean-Luc Baril Initiation à la programmation JAVA
  • 83. Les répétitions - Exercice Somme d’une suite de notes Programme qui calcule la somme d’une suite de notes saisies au clavier jusqu’à ce que la note -1 soit entrée. public class moyenne { public static void main (String[] args) { int note, somme=0; do { System.out.println("Saisir une note ou -1"); note=Lire.i(); if(note!=-1) somme=somme+note; } while(note!=-1); System.out.println("La somme des notes est: "+somme); } } Jean-Luc Baril Initiation à la programmation JAVA
  • 84. Les répétitions - Exercice Un joli dessin!!! Afficher le motif suivant dont la taille est saisie par l’utilisateur. Pour taile=3 Pour taille=4 Pour taille=5 * * * ** ** ** *** *** *** **** **** ***** int i,j,taille; System.out.println("Saisir la taille du dessin"); taille=Lire.i(); // Saisie de la taille for(i=1;i<=taille;i++) // Boucle décrivant les lignes { for(j=1;j<=i;j++) // Boucle décrivant les colonnes System.out.print("*"); // Affichage * System.out.println(); // Retour à la ligne } Jean-Luc Baril Initiation à la programmation JAVA
  • 85. Les répétitions - Exercice Un joli dessin!!! Afficher le motif suivant dont la taille est saisie par l’utilisateur. Pour taile=3 Pour taille=4 Pour taille=5 *** **** ***** ** *** **** * ** *** * ** * int i,j,taille; //Saisie de la taille for(i=1;i<=taille;i++) //Boucle décrivant les lignes { for(j=1;j<=taille;j++) //Boucle décrivant les colonnes if(j<i) System.out.print(" "); // Affichage espaces else System.out.print("*"); // Affichage étoiles System.out.println(); // Retour à la ligne } Jean-Luc Baril Initiation à la programmation JAVA
  • 86. Les répétitions - Exercice Exemple de menu int x,y,z,choix; char op; do { System.out.println("1. Saisir x"); System.out.println("2. Saisir y"); System.out.println("3. Calculer la somme"); System.out.println("4. Quitter"); System.out.println("Quel est votre choix"); choix=Lire.i(); switch(choix) { case 1: { x=Lire.i(); break;} case 2: { y=Lire.i(); break;} case 3: { z=x+y; break;} } } while(choix!=4); Jean-Luc Baril Initiation à la programmation JAVA
  • 87. Les répétitions - Exercice L’algorithme d’Euclide - Calcul du PGCD Méthode: Si a ≥ b alors PGCD(a, b) = - b si b divise a (a%b == 0), - PGCD(b, r) où r est le reste de la division de a par b (r = a%b) Jean-Luc Baril Initiation à la programmation JAVA
  • 88. Les répétitions - Exercice L’algorithme d’Euclide - Calcul du PGCD // Déclaration et saisie de a et b // Echange de a et b si b>a while(b>0) { r=a% b; a=b; b=r; } System.out.println("Le PGCD est "+a); Jean-Luc Baril Initiation à la programmation JAVA
  • 89. Les répétitions - Exercice L’algorithme d’Euclide - Calcul du PGCD // Déclaration et saisie de a et b // Echange de a et b si b>a do { r=a% b; a=b; b=r; } while(b>0); System.out.println("Le PGCD est "+a); Jean-Luc Baril Initiation à la programmation JAVA
  • 90. Les répétitions - Exercice Recherche d’un entier entre 1 et 100 Ecrire un prog permettant de rechercher un nombre aléatoire entre 1 et 100 généré par l’ordinateur. Réel aléatoire entre 0 inclu et 1 exclu: Math.random() Réel aléatoire entre 0 inclu et b exclu: b*Math.random() Réel aléatoire entre a inclu et b exclu: a+(b-a)*Math.random() Entier aléatoire entre a inclu et b-1 inclu: (int)(a+(b-a)*Math.random()) Jean-Luc Baril Initiation à la programmation JAVA
  • 91. Les répétitions - Exercice Recherche d’un entier entre 1 et 100 Idée: Saisir un nombre tant que le nombre saisi n’est pas celui de l’ordinateur int ordi, joueur; ordi=(int)(1+100*Math.random()); do { System.out.println("Proposer votre nombre"); joueur=Lire.i(); } while(joueur!=ordi); System.out.println("Bravo, vous avez trouvé"); Jean-Luc Baril Initiation à la programmation JAVA
  • 92. Les répétitions - Exercice Recherche d’un entier entre 1 et 100 Une amélioration du jeu: A chaque étape l’ordinateur devra dire si votre nombre est trop grand ou trop petit int ordi, joueur; ordi=(int)(1+100*Math.random()); do { System.out.println("Proposer votre nombre"); joueur=Lire.i(); if(joueur>ordi) System.out.println("Votre nbre est trop grand"); if(joueur<ordi) System.out.println("Votre nbre est trop petit"); } while(joueur!=ordi); System.out.println("Bravo, vous avez trouvé"); Jean-Luc Baril Initiation à la programmation JAVA
  • 93. Les répétitions - Exercice Recherche d’un entier entre 1 et 100 Encore une amélioration: Indiquer le nbre de coups utilisés pour gagner int ordi, joueur, coups; ordi=(int)(1+100*Math.random()); coups=0; do { System.out.println("Proposer votre nombre"); joueur=Lire.i(); coups=coups+1; if(joueur>ordi) System.out.println("Votre nbre est trop grand"); if(joueur<ordi) System.out.println("Votre nbre est trop petit"); } while(joueur!=ordi); System.out.println("Bravo, vous avez trouvé en "+coups+"coups") Jean-Luc Baril Initiation à la programmation JAVA
  • 94. Les répétitions - Exercice Recherche d’un entier entre 1 et 100 Encore une amélioration: Limiter le nbre de coups à 7 coups int ordi, joueur, coups; ordi=(int)(1+100*Math.random()); coups=0; do {System.out.println("Proposer votre nombre"); joueur=Lire.i(); coups=coups+1; if(joueur>ordi) System.out.println("Votre nbre est trop grand"); if(joueur<ordi) System.out.println("Votre nbre est trop petit"); } while(joueur!=ordi && coups<7); if(joueur==ordi) System.out.println("Bravo, vous avez trouvé en "+coups+"coups" else System.out.println("Perdu"); Jean-Luc Baril Initiation à la programmation JAVA
  • 95. Exercice Jean-Luc Baril Initiation à la programmation JAVA
  • 96. Les tableaux Un tableau est une structure qui peut contenir plusieurs éléments du même type Le nombre d’éléments du tableau est la taille du tableau Les éléments sont repérés par un ou plusieurs indices de type int (ou char) Le nombre d’indices est la dimension du tableau Tableau à 1 dimension de taille 10 contenant des entiers 1 3 5 7 9 0 2 4 6 8 0 1 2 3 4 5 6 7 8 9 Indices du tableau Tableau à 2 dimensions à 2 lignes et 10 colonnes 1 3 5 7 9 0 2 4 6 8 0 2 4 6 8 1 3 5 7 9 0 1 0 1 2 3 4 5 6 7 8 9 Indices du tableau Jean-Luc Baril Initiation à la programmation JAVA
  • 97. Les tableaux Déclaration d’un tableau Réserve une adresse mémoire Tableau 1D: Type des éléments tab[]; Tableau 2D: Type des éléments tab[][]; Création d’un tableau Définit la taille du tableau Tableau 1D: tab=new Type des éléments[Nbre cases]; Tableau 2D: tab=new Type des éléments[nblig][nbcol]; Déclaration et allocation de tableaux int tab[]; // Déclaration tableau 1D d’entiers tab= new int[10]; // Définition de la taille du tableau //************************************* double tab[][]; // Déclaration tableau 2D tab= new double[2][10]; // Définition de la taille Jean-Luc Baril Initiation à la programmation JAVA
  • 98. Les tableaux Accès à la i-ième case d’un tableau 1D: tab[i-1] 1 3 5 7 9 0 2 4 6 8 0 1 2 3 4 5 6 7 8 9 Indices i Remplissage d’un tableau 1D int tab[]; // Déclaration tableau 1D d’entiers tab= new int[10]; // Définition de la taille du tableau tab[0]=1; tab[1]=3; tab[2]=5; ... tab[9]=8; Jean-Luc Baril Initiation à la programmation JAVA
  • 99. Les tableaux Remplissage d’un tableau 1D int tab[]; // Déclaration tableau 1D d’entiers tab= new int[10]; // Définition de la taille du tableau for(i=0;i<=9;i++) //Boucle pour parcourir les cases { System.out.println("Saisir la case "+i); tab[i]=Lire.i(); } Affichage d’un tableau 1D for(i=0;i<=9;i++) System.out.print(tab[i]+" "); System.out.println(); Jean-Luc Baril Initiation à la programmation JAVA
  • 100. Les tableaux Accès à la case d’un tableau 2D sur la i-ième ligne et j-ième colonne : tab[i-1][j-1] 1 3 5 7 9 0 2 4 6 8 0 2 4 6 8 1 3 5 7 9 0 1 0 1 2 3 4 5 6 7 8 9 Indices du tableau Remplissage d’un tableau 2D int tab[][]; // Déclaration tableau 2D d’entiers tab= new int[2][10]; // Définition de la taille du tableau tab[0][0]=1; tab[1][0]=0; tab[0][1]=3; tab[1][1]=2; tab[0][2]=5; tab[1][2]=4; ........ ........ tab[0][9]=8; tab[1][9]=9; Jean-Luc Baril Initiation à la programmation JAVA
  • 101. Les tableaux Remplissage d’un tableau 2D int tab[][]; // Déclaration tableau 1D d’entiers tab= new int[2][10]; // Définition de la taille du tableau for(i=0;i<=1;i++) // Boucle pour décrire les 2 lignes for(j=0;j<=9;j++) // Boucle pour décrire les 10 colonnes { System.out.println("Saisir ligne "+i+" et colonne "+j); tab[i][j]=Lire.i(); } Affichage d’un tableau 2D for(i=0;i<=1;i++) // Boucle pour décrire les 2 lignes { for(j=0;j<=9;j++) // Boucle pour décrire les 10 colonnes System.out.print(tab[i][j]+" "); System.out.println(); // Retour à la ligne } Jean-Luc Baril Initiation à la programmation JAVA
  • 102. Les tableaux 1 3 5 7 9 .... 2 4 6 8 Recherche d’un élément dans un tableau 1D int i,element,tab[]; // Déclaration tableau 1D d’entiers tab= new int[100]; // Définition de la taille du tableau .......... // Remplissage du tableau System.out.println("Entrer l’élément à rechercher"); element=Lire.i(); for(i=0;i<=99;i++) // Boucle pour décrire les 100 cases if(tab[i]==element) System.out.println("Trouvé"); Jean-Luc Baril Initiation à la programmation JAVA
  • 103. Les tableaux Recherche d’un élément dans un tableau 1D boolean trouve; int i,element,tab[]; // Déclaration tableau 1D d’entiers tab= new int[100]; // Définition de la taille du tableau .......... // Remplissage du tableau System.out.println("Entrer l’élément à rechercher"); element=Lire.i(); trouve=false; i=0; while(i<=99 && trouve==false) { if(tab[i]==element) trouve=true; else i=i+1; } if(trouve==true) System.out.println(element+" est trouvé en position "+i); else System.out.println(element+" n est pas dans le tableau"); Jean-Luc Baril Initiation à la programmation JAVA
  • 104. Les tableaux 1 3 5 7 9 .... 2 4 6 8 Recherche du maximum d’un tableau 1D int i,maxi,tab[]; // Déclaration tableau 1D d’entiers tab= new int[100]; // Définition de la taille du tableau .......... // Remplissage du tableau maxi=tab[0]; for(i=1;i<=99;i++) // Boucle pour décrire le tableau if(tab[i]>maxi) maxi=tab[i]; System.out.println("Le maximum du tableau est "+maxi); Jean-Luc Baril Initiation à la programmation JAVA
  • 105. Les tableaux 1 3 5 7 9 .... 2 4 6 8 Recherche de la position du maximum d’un tableau 1D int i,maxi,posi,tab[]; // Déclaration tableau 1D d’entiers tab= new int[100]; // Définition de la taille du tableau .......... // Remplissage du tableau maxi=tab[0]; posi=0; for(i=1;i<=99;i++) // Boucle pour décrire le tableau if(tab[i]>maxi) {maxi=tab[i]; posi=i;} System.out.println("La position du maximum du tableau est "+p Jean-Luc Baril Initiation à la programmation JAVA
  • 106. Les tableaux Tri à bulles d’un tableau 1D Video.Tri.à.bulles.mp4 Jean-Luc Baril Initiation à la programmation JAVA
  • 107. Les tableaux Tri à bulles d’un tableau 1D bool tab_en_ordre = false; int taille = tab.length; //donne le nbre de cases du tablea while(!tab_en_ordre) { tab_en_ordre = true; for(int i=0 ; i < taille-1 ; i++) if(tab[i] > tab[i+1]) { //échange de tab[i] et tab[i+1] tab_en_ordre = false; } taille--; } Jean-Luc Baril Initiation à la programmation JAVA
  • 108. Les tableaux Tri à bulles d’un tableau 1D bool tab_en_ordre; int taille = tab.length; do { tab_en_ordre = true; for(int i=0 ; i < taille-1 ; i++) if(tab[i] > tab[i+1]) { //échange de tab[i] et tab[i+1] tab_en_ordre = false; } taille--; } while(!tab_en_ordre); Jean-Luc Baril Initiation à la programmation JAVA
  • 109. Les tableaux Tri par insertion d’un tableau 1D Video.Tri.par.insertion.mp4 Jean-Luc Baril Initiation à la programmation JAVA
  • 110. Les tableaux Tri par insertion d’un tableau 1D int taille = tab.length; //donne le nbre de cases du tablea for(int i=0 ; i < taille-1 ; i++) { k=i; while(k>=0 && tab[k]>tab[k+1]) { //échanger tab[k] et tab[k+1] k=k-1; } } Jean-Luc Baril Initiation à la programmation JAVA
  • 111. Fiche Memo CM5- Les tableaux Le minimum à savoir!!!! int tab[],i; tab=new int[100]; // Déclaration tableau 1D d’entiers for(i=0;i<=99;i++) // Affichage System.out.print(tab[i]+" "); System.out.println(); int tab[][],i,j; tab=new int[100][50]; // Déclaration tableau 2D d’entiers for(i=0;i<=99;i++) // Affichage { for(j=0;j<=49;j++) System.out.print(tab[i][j]+" "); System.out.println(); } Jean-Luc Baril Initiation à la programmation JAVA
  • 112. Les chaı̂nes de caractères Une chaı̂ne de caractères (de type String) est une suite ordonnée de caractères (de type char): Exemple: ”abcdefghijk000lmnopqrst123uvwxyz” est une chaı̂ne de caractères (entourée de guillemets ”...”) Rappel: - Un caractère est stocké dans une variable de type char. Exemple: char car=’e’; (entouré de ’...’) - les caractères sont classés par le code ASCII Déclaration d’une chaı̂ne de caractères String nom variable; Déclaration String chaine; Jean-Luc Baril Initiation à la programmation JAVA
  • 113. La table ASCII Jean-Luc Baril Initiation à la programmation JAVA
  • 114. Les chaı̂nes de caractères Une chaı̂ne de caractères (de type String) est une suite ordonnée de caractères (de type char): Exemple: ”abcdefghijk000lmnopqrst123uvwxyz” est une chaı̂ne de caractères (entourée de guillemets ”...”) Déclaration d’une chaı̂ne de caractères String nom variable; Déclaration String chaine; Déclaration d’une chaı̂ne vide String chaine=""; // Deux guillements consécutifs // (sans espace) Jean-Luc Baril Initiation à la programmation JAVA
  • 115. Les chaı̂nes de caractères Affectation variable=”texte”; Affectation String chaine1,chaine2,chaine3; chaine1="Bonjour"; chaine2=""; // Chaine vide chaine3=chaine1; Affichage d’une chaı̂ne String chaine1; chaine1="Bonjour"; System.out.printl(chaine1); Jean-Luc Baril Initiation à la programmation JAVA
  • 116. Les chaı̂nes de caractères nombre de caractères d’une chaı̂ne (ou longueur) variable.length() Longueur d’une chaine int longueur; String chaine; chaine="Bonjour"; longueur=chaine.length(); //Nombre de caractères System.out.println("Il y a "+longueur+" caractères dans la ch Jean-Luc Baril Initiation à la programmation JAVA
  • 117. Les chaı̂nes de caractères i-ième caractère d’une chaı̂ne variable.charAt(i-1) (de type char) variable.charAt(0) est le premier caractère de la chaı̂ne variable variable.charAt(1) est le second caractère de la chaı̂ne variable i-ième caractère d’une chaı̂ne char c; String chaine; chaine="Bonjour"; c=chaine.charAt(3); System.out.println("le 4-ième caractère est"+c); Jean-Luc Baril Initiation à la programmation JAVA
  • 118. Les chaı̂nes de caractères Juxtaposition de deux chaı̂nes (concaténation) chaine1+chaine2 Juxtaposition de deux chaı̂nes String chaine1,chaine2,chaine3,chaine4; chaine1="Bonjour"; chaine2=" jourBon"; chaine3=chaine1+chaine2; System.out.println(chaine3);// Affiche Bonjour jourBon chaine4=chaine2+chaine1; System.out.println(chaine4);// Affiche jourBonBonjour Jean-Luc Baril Initiation à la programmation JAVA
  • 119. Les chaı̂nes de caractères Test d’égalité de deux chaı̂nes chaine1.equals(chaine2) renvoie true si les contenus sont égaux, et false sinon Test d’égalité de deux chaı̂nes String chaine1,chaine2; chaine1="Bonjour"; chaine2="Bonjour"; // A NE PAS FAIRE if(chaine1==chaine2) System.out.println("les adresses sont égales"); // A FAIRE if(chaine1.equals(chaine2)) System.out.println("les contenus des chaines sont égaux"); Jean-Luc Baril Initiation à la programmation JAVA
  • 120. Les chaı̂nes de caractères Les méthodes Jean-Luc Baril Initiation à la programmation JAVA
  • 121. Les chaı̂nes de caractères Suppression des ’a’ dans une chaı̂ne String chaine1,chaine2; int i, longueur; longueur=chaine1.length(); chaine2=""; for(i=0;i<=longueur-1;i++) if(chaine1.charAt(i)!=’a’) chaine2=chaine2+chaine1.charAt(i); System.out.println(chaine2); Jean-Luc Baril Initiation à la programmation JAVA
  • 122. Les chaı̂nes de caractères Remplacement des ’a’ par des ’o’ dans une chaı̂ne String chaine1,chaine2; int i, longueur; longueur=chaine1.length(); chaine2=""; for(i=0;i<=longueur-1;i++) if(chaine1.charAt(i)!=’a’) chaine2=chaine2+chaine1.charAt(i); else chaine2=chaine2+’o’; System.out.println(chaine2); Jean-Luc Baril Initiation à la programmation JAVA
  • 123. Les fonctions Une fonction est un bout de code qui a un nom et qui peut être appelée depuis le reste du programme. Exemples de fonctions prédéfinies: Math.pow(a,b), Math.abs(a), Math.random(), Math.sqrt(a), ... Intérêts des fonctions Meilleure lisibilité et concision (évite d’écrire plusieurs fois le même code Niveau d’abstraction plus élevé (un nom remplace une partie complexe du programme) Gain de place mémoire Modification plus aisée Partage de fonctions (biibliothèque de fonction) Récursivité Jean-Luc Baril Initiation à la programmation JAVA
  • 124. Déclaration d’une fonction On déclare une fonction à l’extérieur du main mais à l’intérieur de class. Je conseille de les déclarer juste après le programme principal. public class programme { public static void main(String args[]) { // Programme principal } // Déclaration des fonctions } Jean-Luc Baril Initiation à la programmation JAVA
  • 125. Deux types de fonction Fonction qui renvoie une valeur (Math.sqrt(), Math.random(), périmètre(), moyenne(),...) Fonction qui ne renvoie pas une valeur (affichage d’un tableau, ...) Jean-Luc Baril Initiation à la programmation JAVA
  • 126. Déclaration d’une fonction qui renvoie une valeur public static type Nomfonction(paramètres formels) { //instructions de la fonction return valeurrenvoyée; } * type est le type de la valeur renvoyée * Nomfonction est le nom de la fonction * Paramètres formels sont les données nécessaires pour la déclaration de la fonction (ils restent donc sans valeur) Appel de la fonction variable=Nomfonction(parametres effectifs); //renvoie la valeur de la fonction * Les paramères effectifs sont les paramètres sur lesquels la fonction est exécutée * Lors de l’exécution les paramètres formels sont remplacés par les paramètres effectifs Jean-Luc Baril Initiation à la programmation JAVA
  • 127. Les fonctions Fonction qui renvoie le maximum de deux entiers public static int maximum(int a, int b) {int maxi; // Variable locale if(a>b) maxi=a; else maxi=b; return maxi; // Renvoie le maximum de a et b } Les variables locales sont connues seulement dans la fonction Appel de la fonction qui renvoie le maximum de deux entiers int x=1,y=2,max; max=maximum(x,y); // Appel de la fonction sur x et y System.out.println(max); // affichage de 2 Jean-Luc Baril Initiation à la programmation JAVA
  • 128. Les fonctions Fonction qui renvoie la moyenne de 2 réèls public static double moyenne(double a, double b) {double moy; // Variable locale moy=(a+b)/2; return moy; // Renvoie la moyenne de a et b } Appel de la fonction qui renvoie la moyenne double x=1.5,y=2.5,moy; moy=moyenne(x,y); // Appel de la fonction sur x et y System.out.println(moy); // affichage la moyenne Il y a ici deux variables moy !!!!!!!!!!! Jean-Luc Baril Initiation à la programmation JAVA
  • 129. Les fonctions Déclaration d’une fonction qui ne renvoie pas de valeur public static void Nomfonction(paramètres formels) { //instructions de la fonction //il n’y a pas le return } Appel de la fonction Nomfonction(parametres effectifs); // C’est une instruction qui ne renvoie pas de valeur // Elle se contente d’exécuter les instructions de la fonction Jean-Luc Baril Initiation à la programmation JAVA
  • 130. Les fonctions Fonction qui affiche le maximum de deux entiers (sans le renvoyer) public static void maximum(int a, int b) {int maxi; // Variable locale if(a>b) maxi=a; else maxi=b; System.out.println("Le max de "+a+" et "+b+" est: "+maxi); // Affiche le maximum de a et b } Appel de la fonction qui affiche le maximum de deux entiers int x,y; x=1; y=2; maximum(x,y); // Appel de la fonction sur x et y Jean-Luc Baril Initiation à la programmation JAVA
  • 131. Les fonctions Peut-on modifier un paramètre de fonction? -Les paramètres de types int, char, double, boolean, String ne peuvent pas être modifiés au cours de l’exécution d’une fonction. On dit que les paramètres sont passés par valeur. -Les paramètres de types tableaux 1D ou 2D peuvent être modifiés. On dit que les paramètres sont passés par références (ou variable). Jean-Luc Baril Initiation à la programmation JAVA
  • 132. Les fonctions Tentative de modification d’un paramètre passé par valeur public static int ajoutun(int a) { a=a+1; return a; } Appel de la fonction int x; x=1; y=ajoutun(x); // Appel de la fonction sur x // A la fin, y=2 et x=1 Jean-Luc Baril Initiation à la programmation JAVA
  • 133. Les fonctions Tentative de modification d’un paramètre passé par valeur public static int ajoutun(int a) { a=a+1; return a; } Appel de la fonction int x; x=1; x=ajoutun(x); // Appel de la fonction sur x // A la fin, x=2 Ici la modification est réalisée // (mais c’est en trichant!!!) Jean-Luc Baril Initiation à la programmation JAVA
  • 134. Les fonctions Modification d’un paramètre passé par référence public static void modif(int tab[]) { tab[0]=1; tab[1]=2; tab[2]=3; } Appel de la fonction int T[]; T=new int[3]; T[0]=0;T[1]=1;T[2]=2; modif(T); // Appel de la fonction sur T // A la fin, T[0]=1 et T[1]=2 et T[2]=3 Jean-Luc Baril Initiation à la programmation JAVA
  • 135. Les fonctions - La récursivité Une fonction est récursive si elle s’appelle elle même. Il y a toujours un cas de base sans appel récursif, et le cas général où intervient la récursivité. Fonction récursive pour calculer n! = (n-1)! * n public static int facto(int n) { if(n==0) return 1; // Cas de base else return n*facto(n-1); // Cas général de la récursivité } Appel de facto int n,resu; n=10; resu=facto(n); // Appel de la fonction récursive facto Jean-Luc Baril Initiation à la programmation JAVA
  • 136. Les fonctions - La récursivité Partant d’un couple de lapins, combien de couples obtiendrons-nous après un nombre donné de mois sachant que chaque couple produit chaque mois un nouveau couple, lequel ne devient productif qu’après deux mois. Fonction récursive pour calculer les nombres de Fibonacci f0 = 1, f1 = 1, fn = fn−1 + fn−2 public static int fibo(int n) { if(n==0 || n==1) return 1; // Cas de base else return fibo(n-1)+fibo(n-2); // Cas général } Appel de fibo int n,resu; n=10; resu=fibo(n); // Appel de la fonction récursive fibo Jean-Luc Baril Initiation à la programmation JAVA
  • 137. Les fonctions - La récursivité Fonction récursive pour calculer les coefficients binomiaux Ck n = Ck−1 n−1 + Ck n−1 public static int coeff(int n,int k) { if(k==0 || k==n) return 1; // Cas de base else return coeff(n-1,k-1)+coeff(n-1,k); // Cas général } Appel de coeff int n,k,resu; n=10;k=3; resu=fibo(n,k); // Appel de la fonction récursive coeff Jean-Luc Baril Initiation à la programmation JAVA
  • 138. Jean-Luc Baril Initiation à la programmation JAVA