Exercices en Java (04-Structures de contrôle (partie2))
Ce quatrième chapitre concerne la deuxième partie des structures de contrôle : for, do/while, switch.
Les deux premiers exercices concernent le produit de nombres. Le troisième exercice porte sur la vente d'articles. Le quatrième exercice illustre le théorème de Pythagore.
Les principales notions abordées sont les suivantes :
Structure de répétitions for ;
Structure de répétition do/while ;
Structure de sélection multiple switch ;
Instructions break et continue ;
Opérateurs logiques.
Pour faire et comprendre ces exercices, vous aurez besoin d'un certain nombre de notions sur le Java en rapport avec le chapitre. Pour cela, vous pouvez consulter les tutoriels java de developpez à l'adresse suivante : https://java.developpez.com/cours/Cours en Java
Écrivez une application qui calcule le produit des entiers impairs de 1 à 15 et affiche ensuite le résultat dans une boîte de dialogue.
Utilisez une structure de contrôle for.
Note : javaws -viewer (accessible aussi dans le panneau de configuration Java) permet de voir les différentes applications JWS en cache et de les gérer.
/* * Fichier: ProduitFor.java * Crée le: 03 décembre 2006. * Modifié: 7 juillet 2007. * Auteurs: Sébastien ESTIENNE. * SiteWeb: http://www.prog-info.org/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */package chapitre4;
import javax.swing.JOptionPane;
/** * <p>Calcule le produit des entiers impairs de 1 à 15.</p> * @author Sébastien ESTIENNE. */publicclass ProduitFor
{/** * <p>Débute l'exécution de l'application.</p> * @param argsLes paramètres de la ligne de commande. */publicstaticvoidmain(String[] args)
{// Le résultat du produit.int resultat =1;
// Calcule le produit des entiers impairs de 1 à 15.for(int compteur =1; compteur <=15; compteur +=2)
{
resultat *= compteur;
}// Affiche le résultat du produit des entiers impairs de 1 à 15.
JOptionPane.showMessageDialog(null, "Le produit des entiers impairs de 1 à 15 est : "+ resultat +".");
// Termine l'application.
System.exit(0);
}}
Écrivez une application qui calcule le produit des entiers impairs de 1 à 15 et affiche ensuite le résultat dans une boîte de dialogue.
Utilisez une structure de contrôle do/while.
Note : javaws -viewer (accessible aussi dans le panneau de configuration Java) permet de voir les différentes applications JWS en cache et de les gérer.
/* * Fichier: ProduitWhile.java * Crée le: 03 décembre 2006. * Modifié: 7 juillet 2007. * Auteurs: Sébastien ESTIENNE. * SiteWeb: http://www.prog-info.org/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */package chapitre4;
import javax.swing.JOptionPane;
/** * <p>Calcule le produit des entiers impairs de 1 à 15.</p> * @author Sébastien ESTIENNE. */publicclass ProduitWhile
{/** * <p>Débute l'exécution de l'application.</p> * @param argsLes paramètres de la ligne de commande. */publicstaticvoidmain(String[] args)
{// Le compteur (sentinelle).int compteur;
// Le résultat du produit.int resultat =1;
// Calcule le produit des entiers impairs de 1 à 15.
compteur =1;
do{
resultat *= compteur;
compteur +=2;
}while(compteur <=15);
// Affiche le résultat du produit des entiers impairs de 1 à 15.
JOptionPane.showMessageDialog(null, "Le produit des entiers impairs de 1 à 15 est : "+ resultat +".");
// Termine l'application.
System.exit(0);
}}
Une entreprise de vente par correspondance vend 5 produits dont les prix sont les suivants :
- produit numéro 1 : 2.67€ ;
- produit numéro 2 : 9.65€ ;
- produit numéro 3 : 3.78€ ;
- produit numéro 4 : 5.26€ ;
- produit numéro 5 : 7.21€.
Écrivez une application qui lit une suite de paires de nombres (numéro du produit et quantité vendue dans la journée). Il faut utiliser une structure de contrôle switch pour déterminer le prix d'un produit. Ensuite calculez et affichez le détail des produits vendus en une semaine. Pour la saisie des données, utilisez un JTextField ; une boucle contrôlée par sentinelle permet d'afficher le résultat et d'arrêter le programme.
Note : javaws -viewer (accessible aussi dans le panneau de configuration Java) permet de voir les différentes applications JWS en cache et de les gérer.
/* * Fichier: Vente.java * Crée le: 03 décembre 2006. * Modifié: 7 juillet 2007. * Auteurs: Sébastien ESTIENNE. * SiteWeb: http://www.prog-info.org/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */package chapitre4;
import java.text.NumberFormat;
import java.util.Locale;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
/** * <p>Classe de simulation de vente d'articles.</p> * @author Sébastien ESTIENNE. */publicclass Vente
{/** * <p>Lance la simulation de vente d'articles.</p> * @param argsLes paramètres de la ligne de commande. */publicstaticvoidmain(String[] args)
{// Le numéro du produit entré par l'utilisateur.
String sNoProduit;
int noProduit =0;
// La quantité du produit entré par l'utilisateur.
String sQuantite;
int quantite =0;
// 1 produit * quantite.double sousTotal;
// Le total des produits.double total;
// Indique si la saisie de l'utilisateur est valide.boolean saisieValide;
// Créer un JTextArea pour afficher les résultats.
JTextArea zoneSortie =newJTextArea(10, 28);
zoneSortie.setEditable(false);
// Relier le JTextArea à un JScrollPane pour que l'utilisateur puisse faire défiler// les résultats.
JScrollPane defilant =newJScrollPane(zoneSortie);
// Le contenu du JTextArea.
StringBuilder sortie =newStringBuilder();
// Créer un decimalFormat pour mettre en forme les nombres à virgules flottantes avec// deux chiffres à droite du point décimal et un signe $.
NumberFormat dollard = NumberFormat.getCurrencyInstance(Locale.FRANCE);
// Demander le numéro du produit à l'utilisateur.do{
sNoProduit = JOptionPane.showInputDialog("Entrez le numéro du produit[1-5] "+"(0 pour terminer) :\n\n");
// Convertir sNoProduit de String en int.try{
noProduit = Integer.parseInt(sNoProduit);
saisieValide =true;
}// La valeur saisie comme numéro de produit est invalide.catch(NumberFormatException e)
{
saisieValide =false;
}}while(!saisieValide || noProduit <0|| noProduit >5);
// Continuer d'ajouter des produits tant que la valeur sentinelle n'est pas rentrée.
total =0.0;
sortie.append("Produit\t Quantite\t Total\n");
while(noProduit !=0)
{// Demander le numéro du produit à l'utilisateur.do{
sQuantite = JOptionPane.showInputDialog("Entrez la quantité du produit :\n\n");
// Convertir sNoProduit de String en int.try{
quantite = Integer.parseInt(sQuantite);
saisieValide =true;
}// La valeur saisie comme quantité est invalide.catch(NumberFormatException e)
{
saisieValide =false;
}}while(!saisieValide || quantite <0);
// Calculer le sous total pour 1 produit donné.switch(noProduit)
{case1:
sousTotal =2.67* quantite;
break;
case2:
sousTotal =9.65* quantite;
break;
case3:
sousTotal =3.78* quantite;
break;
case4:
sousTotal =5.26* quantite;
break;
case5:
sousTotal =7.21* quantite;
break;
default:
sousTotal =0.0;
break;
}// Calcul du montant total.
total += sousTotal;
// Pour ne pas afficher les produits non valides.if(noProduit >0&& noProduit <6)
{
sortie.append(noProduit).append("\t ").append(quantite).append("\t ").append(
dollard.format(sousTotal)).append("\n");
}// Demander le numéro du produit à l'utilisateur.do{
sNoProduit = JOptionPane.showInputDialog("Entrez le numéro du produit[1-5] "+"(0 pour terminer) :\n\n");
// Convertir sNoProduit de String en int.try{
noProduit = Integer.parseInt(sNoProduit);
saisieValide =true;
}// La valeur saisie comme numéro de produit est invalide.catch(NumberFormatException e)
{
saisieValide =false;
}}while(!saisieValide || noProduit <0|| noProduit >5);
}// Ajouter le total à la chaine de sortie.
sortie.append("\nTOTAL : ").append(dollard.format(total));
// Placer les résultats dans un JTextArea.
zoneSortie.setText(sortie.toString());
// Afficher le contenu de la sortie dans le JTextArea avec la barre de défilement.
JOptionPane.showMessageDialog(null, defilant, "Vente", JOptionPane.INFORMATION_MESSAGE);
// Terminer l'application.
System.exit(0);
}}
Un triangle rectangle est un triangle dont la somme des carrés de deux côtés est égale au carré du troisième côté appelé alors hypoténuse (Théorème de Pythagore).
Écrire une application qui trouve tous les triangles rectangles dont les côtés sont tous inférieurs à 500. On utilisera des valeurs entières pour les côtés du triangle. Pour faire cela, utilisez une boucle for imbriquée sur trois niveaux afin de tester toutes les possibilités. C'est ce qu'on appelle une méthode de calcul par « force brute » (brute force).
Note : javaws -viewer (accessible aussi dans le panneau de configuration Java) permet de voir les différentes applications JWS en cache et de les gérer.
/* * Fichier: Pythagore.java * Crée le: 03 décembre 2006. * Modifié: 7 juillet 2007. * Auteurs: Sébastien ESTIENNE. * SiteWeb: http://www.prog-info.org/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */package chapitre4;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
/** * <p>Calcule le produit des entiers impairs de 1 à 15.</p> * @author Sébastien ESTIENNE. */publicclass Pythagore
{/** * <p>Trouve tous les triangles droits dont les côtés sont tous inférieurs à 500.</p> * @param argsLes paramètres de la ligne de commande. */publicstaticvoidmain(String[] args)
{// Créer un JTextArea pour afficher les résultats.
JTextArea zoneSortie =newJTextArea(10, 28);
zoneSortie.setEditable(false);
// Relier le JTextArea à un JScrollPane pour que l'utilisateur puisse faire défiler// les résultats.
JScrollPane defilant =newJScrollPane(zoneSortie);
// Le contenu du JTextArea.
StringBuilder sortie =newStringBuilder();
// Initialisation de la chaine de sortie.
sortie.append("Côté 1\tCôté 2\tHypoténuse\n");
// Méthode par force brute sur la base de c1*c1+c2*c2=h*h.// Deuxième for jusqu'à cote2 pour éviter des doublets.for(int cote1 =1; cote1 <500; cote1++)
{for(int cote2 =1; cote2 <= cote1; cote2++)
{for(int hypotenuse = cote1; hypotenuse <500; hypotenuse++)
{if(cote1 * cote1 + cote2 * cote2 == hypotenuse * hypotenuse)
{
sortie.append(cote1).append("\t").append(cote2).append("\t").append(hypotenuse)
.append("\n");
}}}}// Placer les résultats dans un JTextArea.
zoneSortie.setText(sortie.toString());
// Afficher le contenu de la sortie dans le JTextArea avec la barre de défilement.
JOptionPane.showMessageDialog(null, defilant, "Pythagore", JOptionPane.INFORMATION_MESSAGE);
// Termine l'application.
System.exit(0);
}}
Je tiens à remercier Ricky81, Alp pour les conseils, remarques et relectures.
Je remercie aussi www.developpez.com me permettant de publier cet article et Nono40 pour ses outils.
Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants :