Semaine 7

Transcription

Semaine 7
Sujets abordés et exemples – semaine 7
Constantes
Une constante contient une valeur (de la même manière qu’une variable), mais cette
valeur ne peut être modifiée en cours d’exécution.
Une constante est déclarée avec le mot réservée final.
final String CHAINE_1 = "Bonjour";
La nomenclature est différente de celle des variables :
MOTS_EN_MAJUSCULES_SEPARES_PAR_DES_SOULIGNES
Portée des variables et des constantes.
Une variable ou une constante peut être visible à l’intérieur d’une classe ou à l’intérieur
d’une méthode seulement.
Une variable ou une constante déclarée pour l’ensemble de la classe est précédée par le
mot réservé static.
/**
* Exemple de portée des variables et constantes
*
* @author Stéphane Lévesque
*/
public class ProgrammeMethode2 {
/**
* Constante Bonjour, définie dans la classe
*/
static final String CHAINE_1 = "Bonjour";
/**
* Variable visible dans toute la classe
*/
static String chaine_2 = "Coucou";
public static void methodeBidon() {
final String CHAINE_3 = "Salut";
String chaine_4 = "Tourlou";
System.out.println("Méthode : " + CHAINE_1 + ' ' + chaine_2 + '
' + CHAINE_3 + ' ' + chaine_4);
}
public static void main(String[] args) {
System.out.println("Programme principal : " + CHAINE_1 + ' ' +
chaine_2);
methodeBidon();
}
}
Exécution :
Programme principal : Bonjour Coucou
Méthode : Bonjour Coucou Salut Tourlou
En général, on déclare les constantes de classe, puis les variables de classe, ensuite les
méthodes, et on termine par le programme principal.
/**
* Exemple de programme sans méthodes pour calculer la monnaie à rendre
*
* @author Stéphane Lévesque
*/
public class ProgrammeChangeSansMethode {
static final int CENT_DOLLARS = 10000;
static final int CINQUANTE_DOLLARS = 5000;
static final int VINGT_DOLLARS = 2000;
static final int DIX_DOLLARS = 1000;
static final int CINQ_DOLLARS = 500;
static final int DEUX_DOLLARS = 200;
static final int UN_DOLLAR = 100;
static final int VINGT_CINQ_CENTS = 25;
static final int DIX_CENTS = 10;
static final int CINQ_CENTS = 5;
static final int UN_CENT = 1;
public static void main(String[] args) {
int montant;
int nombreUnites;
System.out.print("Entrez le montant: ");
montant = (int)(Clavier.lireFloat() * 100);
nombreUnites = montant / CENT_DOLLARS;
System.out.println("nombre de 100$: " + nombreUnites);
montant = montant - (nombreUnites * CENT_DOLLARS);
nombreUnites = montant / CINQUANTE_DOLLARS;
System.out.println("nombre de 50$: " + nombreUnites);
montant = montant - (nombreUnites * CINQUANTE_DOLLARS);
nombreUnites = montant / VINGT_DOLLARS;
System.out.println("nombre de 20$: " + nombreUnites);
montant = montant - (nombreUnites * VINGT_DOLLARS);
nombreUnites = montant / DIX_DOLLARS;
System.out.println("nombre de 10$: " + nombreUnites);
montant = montant - (nombreUnites * DIX_DOLLARS);
nombreUnites = montant / CINQ_DOLLARS;
System.out.println("nombre de 5$: " + nombreUnites);
montant = montant - (nombreUnites * CINQ_DOLLARS);
nombreUnites = montant / DEUX_DOLLARS;
System.out.println("nombre de 2$: " + nombreUnites);
montant = montant - (nombreUnites * DEUX_DOLLARS);
nombreUnites = montant / UN_DOLLAR;
System.out.println("nombre de 1$: " + nombreUnites);
montant = montant - (nombreUnites * UN_DOLLAR);
nombreUnites = montant / VINGT_CINQ_CENTS;
System.out.println("nombre de 0,25$: " + nombreUnites);
montant = montant - (nombreUnites * VINGT_CINQ_CENTS);
nombreUnites = montant / DIX_CENTS;
System.out.println("nombre de 0,1$: " + nombreUnites);
montant = montant - (nombreUnites * DIX_CENTS);
nombreUnites = montant / CINQ_CENTS;
System.out.println("nombre de 0,05$: " + nombreUnites);
montant = montant - (nombreUnites * CINQ_CENTS);
nombreUnites = montant / UN_CENT;
System.out.println("nombre de 0,01$: " + nombreUnites);
montant = montant - (nombreUnites * UN_CENT);
}
}
Exécution :
Entrez
nombre
nombre
nombre
nombre
nombre
nombre
nombre
nombre
nombre
nombre
nombre
le
de
de
de
de
de
de
de
de
de
de
de
montant: 9187.87
100$: 91
50$: 1
20$: 1
10$: 1
5$: 1
2$: 1
1$: 0
0,25$: 3
0,1$: 1
0,05$: 0
0,01$: 2
Le même programme avec méthodes :
/**
* Exemple de méthodes
*
* @author Stéphane Lévesque
*/
public class ProgrammeMethode3 {
static final int CENT_DOLLARS = 10000;
static final int CINQUANTE_DOLLARS = 5000;
static final int VINGT_DOLLARS = 2000;
static final int DIX_DOLLARS = 1000;
static final int CINQ_DOLLARS = 500;
static final int DEUX_DOLLARS = 200;
static final int UN_DOLLAR = 100;
static
static
static
static
final
final
final
final
int
int
int
int
VINGT_CINQ_CENTS = 25;
DIX_CENTS = 10;
CINQ_CENTS = 5;
UN_CENT = 1;
/**
* Détermine le nombre d'unités monétaires comprises dans le
* montant
*
* @param montant montant de départ
* @param unite unité monétaire
*
* @return le nombre d'unités qui entrent dans le montant
*/
public static int nombreDUnitesMonetaires(int montant, int unite) {
return montant / unite;
}
/**
* Enlève le nombre maximal d'unités monétaires comprises dans le
* montant et affiche les détails sur le retranchement des unités
*
* @param montant montant de départ
* @param unite unité monétaire
*
* @return le montant duquel on a retranché les unités.
*/
public static int traiterUnite(int montant, int unite) {
int nombreUnites;
nombreUnites = nombreDUnitesMonetaires(montant, unite);
System.out.println("nombre de " + unite/100.0 + "$: " +
nombreUnites);
return montant - (nombreUnites * unite);
}
public static void main(String[] args) {
int montant;
System.out.print("Entrez le montant: ");
montant = (int)(Clavier.lireFloat() * 100);
montant
montant
montant
montant
montant
montant
montant
montant
montant
montant
}
}
Exécution :
=
=
=
=
=
=
=
=
=
=
traiterUnite(montant,
traiterUnite(montant,
traiterUnite(montant,
traiterUnite(montant,
traiterUnite(montant,
traiterUnite(montant,
traiterUnite(montant,
traiterUnite(montant,
traiterUnite(montant,
traiterUnite(montant,
CENT_DOLLARS);
CINQUANTE_DOLLARS);
VINGT_DOLLARS);
DIX_DOLLARS);
CINQ_DOLLARS);
UN_DOLLAR);
VINGT_CINQ_CENTS);
DIX_CENTS);
CINQ_CENTS);
UN_CENT);
Entrez
nombre
nombre
nombre
nombre
nombre
nombre
nombre
nombre
nombre
nombre
le
de
de
de
de
de
de
de
de
de
de
montant: 9187.87
100.0$: 91
50.0$: 1
20.0$: 1
10.0$: 1
5.0$: 1
1.0$: 2
0.25$: 3
0.1$: 1
0.05$: 0
0.01$: 2
Classe Math
Classe fournie avec Java qui offre des fonctions mathématiques pratiques. Méthodes
intéressantes :
abs
ceil
floor
max
min
pow
round
sqrt
Retourne la valeur absolue d’un nombre
Retourne le plafond (arrondissement à l’entier supérieur)
Retourne le plancher (arrondissement à l’entier inférieur (troncation))
Retourne le maximum de deux nombres
Retourne le minimum de deux nombres
Retourne un nombre élevé à une puissance
Retourne l’arrondissement d’une valeur
Retourne la racine carrée d’un nombre