Introduction à la programmation (420-PK2-SL) cours 8 Gestion des applications Technologie de l’information (LEA.BW)
Plan Devoir #1 Utilisation de constante Instruction itérative (boucle) Remise 17/02/2011 Version papier au début du cours Version électronique avant 13:00 Utilisation de constante Instruction itérative (boucle) do...while while for Sera vu la semaine prochaine Laboratoire
Utilisation de constante Une constante est une variable qui ne varie pas. Taxe Nombre d’heure maximum de travail par semaine Nombre de sorte de carte de jeu Nombre de type de carte de jeu Nombre de face sur un dés lors d’une partie Plutôt que « hardcoder » une valeur dans le code, il est préférable d’utiliser une variable constante pour facilité la modification du code.
Utilisation de constante import java.util.Scanner; public class calcul_salaire { public static void main(String args[]){ double nombre_heures,taux_horaire,salaire; Scanner clavier = new Scanner(System.in); System.out.println("Combien d'heure travailler vous par semaine?"); nombre_heures = clavier.nextDouble(); System.out.println("Quel est votre taux horaires?"); taux_horaire = clavier.nextDouble(); clavier.close(); if(nombre_heures <= 40){ salaire=nombre_heures*taux_horaire; }else{ salaire=40*taux_horaire+((nombre_heures-40)*taux_horaire*1.5); } System.out.println("Votre salaire est de : " + salaire + " par semaine");
Utilisation de constante import java.util.Scanner; public class calcul_salaire_constante { public static final int NB_HEURES_MAX = 40; public static final double MAJORATION = 1.5; public static void main(String args[]){ double nombre_heures,taux_horaire,salaire; Scanner clavier = new Scanner(System.in); System.out.println("Combien d'heure travailler vous par semaine?"); nombre_heures = clavier.nextDouble(); System.out.println("Quel est votre taux horaires?"); taux_horaire = clavier.nextDouble(); clavier.close(); if(nombre_heures <= NB_HEURES_MAX){ salaire=nombre_heures*taux_horaire; }else{ salaire=40*taux_horaire+((nombre_heures-NB_HEURES_MAX)*taux_horaire*MAJORATION); } System.out.println("Votre salaire est de : " + salaire + " par semaine");
Utilisation de constante Les constantes doivent avoir un type comme pour les variables. Les identificateurs des constantes sont toujours en MAJUSCULE. public static final précède toujours le type de la constante et doit être inscrit avant le programme principal (main).
Instruction itérative Répétition ou boucle Instruction qui permet de répéter du code à exécuter selon l’évaluation d’une condition. Tant que Cette instruction permet de répéter les tâches à exécuter si l’évaluation d’une expression donne vraie
Instruction itérative Forme générale Tant que expression booléenne Tâches à répéter tant que l’expression est vraie Fin Exemple Tant qu’il vente fort Je fais de la planche à voile
Instruction itérative En Java while(expression){ instruction à répéter tant que l’expression est différente de zéro. } Les parenthèse sont obligatoires Les accolades délimitent ce qu’on appelle un bloc de code Comme pour le if Le code d’un bloc doit être indenté (décalé) vers la droite Si les accolades sont manquantes, seule la première instruction est calculée comme faisant partie du while.
Instruction itérative Exemple int x = 5; while (x > 0){ System.out.println(x); x--; } Condition d’entrée : x > 0 Condition d’arrêt : x <= 0 Résultat de la boucle 5 4 3 2 1
Instruction itérative Mise en garde Il faut toujours au moins une instruction à l’intérieur de la boucle qui permette de converger vers la condition d’arrêt de la boucle sinon ce sera une boucle infinie. Exemple int x = 5; while (x > 0){ System.out.println(x); x++; } Résultat de la boucle 5 6 7 8 9 … ∞
Instruction itérative Dites ce que vaudront les valeurs de x,y et z après l’exécution de cette boucle int x=5; int y=3; int z=3; while(y != 0){ x %= z++; y--; } Équivalent à : x = x % z z = z + 1; y = y – 1;
Instruction itérative Solution DEBUT WHILE x = 5 ,y = 3 ,z = 3 FIN WHILE x = 2 ,y = 2 ,z = 4 DEBUT WHILE x = 2 ,y = 2 ,z = 4 FIN WHILE x = 2 ,y = 1 ,z = 5 DEBUT WHILE x = 2 ,y = 1 ,z = 5 FIN WHILE x = 2 ,y = 0 ,z = 6 while(y != 0){ System.out.println("DEBUT WHILE x = " + x + " ,y = " + y + " ,z = " + z); x %= z++; y--; System.out.println("FIN WHILE x = " + x + " ,y = " + y + " ,z = " + z); }
Instruction itérative Écrivez un programme qui saisit un nombre entier et qui affiche tous les nombres de 1 jusqu’à la valeur entrée. import java.util.Scanner; public class exemple_while{ public static void main(String args[]){ int nombre; int tour; Scanner clavier = new Scanner(System.in); System.out.println("Entrez un nombre svp : "); nombre = clavier.nextInt(); tour = 1; while(tour <= nombre){ System.out.println(tour); tour++; } Que se passe t’il si le nombre entré est négatif ? initialisation Analyse de la condition d’arrêt de la boucle Convergence vers la condition d’arrêt
Instruction itérative Il n’y a pas de restriction sur ce que peut contenir un bloc d’instructions Affectation, affichage, lecture, opérations if, if-else, if-else-if While En d’autres termes on peut imbriquer des instructions de sélection et d’itération à l’intérieur d’autres instructions de sélection et/ou d’itération.
Instruction itérative import java.util.Scanner; public class validation_nombre_while{ public static final int MIN = 1; public static final int MAX = 10; public static void main(String args[]){ int nombre; Scanner clavier = new Scanner(System.in); System.out.println("Entrez un nombre entre " + MIN + " et " + MAX + ":"); nombre = clavier.nextInt(); while(nombre < MIN || nombre > MAX){ if(nombre < MIN){ System.out.println("Votre nombre doit être plus grand que " + MIN); }else{ System.out.println("Votre nombre doit être plus petit que " + MAX); } System.out.println("Votre nombre est valide"); Conditions d’entrée multiples Structure if imbriquée Convergence vers la condition d’arrêt
Instruction itérative while … do do … while
Instruction itérative while… La condition de répétition est évaluée au début du bloc Si la condition est fausse, le bloc n’est pas exécuté do…while La condition de répétition est évaluée à la fin du bloc Le bloc est exécuté au moins une fois même si la condition est fausse Forme générale do{ instructions à répéter tant que l’expression est différente de zéro } while (expression);
Instruction itérative import java.util.Scanner; public class validation_nombre_dowhile{ public static final int MIN = 1; public static final int MAX = 10; public static void main(String args[]){ int nombre; Scanner clavier = new Scanner(System.in); do{ System.out.println("Entrez un nombre entre " + MIN + " et " + MAX + ":"); nombre = clavier.nextInt(); if(nombre < MIN){ System.out.println("Votre nombre doit être plus grand que " + MIN); }else{ System.out.println("Votre nombre doit être plus petit que " + MAX); } }while(nombre < MIN || nombre > MAX); System.out.println("Votre nombre est valide");
Instruction itérative Dans l’exemple, l’utilisation du do…while est plus optimale que l’utilisation du while car certaines ligne ne sont pas doublée Par contre, le résultat est le même!
Laboratoire Modifier le programme loterie.java pour qu’il affiche NOMBRE_COMBINAISON combinaison. Modifier le programme generer_carte.java pour qu’ils génère des cartes tant que la personne n’entre pas le mots quitter au clavier. Tout autres mots entrer au clavier résultera à la génération d’une autre carte.
Laboratoire Écrivez un programme qui demande des nombres entiers à un utilisateur. La saisie des nombres se termine si l’utilisateur entre -1. Vous affichez ensuite: Combien de ces nombres étaient pairs et impairs Le plus grand Le plus petit La somme des nombres entrés La moyenne des nombres entrés
Laboratoire Créez un programme qui saisit une valeur entière (n) au clavier et affiche à l’écran n! (n! = 1 x 2 x … x n). Pour ce faire il suffit d’affecter une variable (factoriel) avec la valeur 1 et de multiplier à factoriel successivement toutes les valeurs de 2 à n. Par exemple, le factoriel de 5 = 5*4*3*2*1 = 120! Si vous obtenez 24 c’est qu’il manque un tour de boucle!