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