Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Officiels > Programmation > Programmation en Java > Bien commencer en Java > TP n°1 : un tableau de conversion Celsius - Fahrenheit ! > Lecture du tutoriel

TP n°1 : un tableau de conversion Celsius - Fahrenheit !

Avatar
Auteur : cysboy
Note : 15 / 20 (10 votes)
Visualisations : 39 291

Plus d'informations Plus d'informations
Voilà un très bon petit TP qui va mettre en oeuvre tout ce que vous avez vu jusqu'ici. Mais vraiment tout !
Accrochez-vous, car là je vais vous demander de penser à des tonnes de choses, et vous serez tout seuls. Lâchés dans la nature... non, je plaisante. Oui, je sais, je déconne beaucoup, tout de même !
Mais je pense que nous apprendrons mieux dans la bonne humeur.

Bon : trêve de bavardage, au boulot. :soleil:
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Élaboration

Euh... Avant de foncer têtes baissées sur Eclipse, et commencer à coder, nous allons d'abord essayer de structurer notre futur programme. En plus, je ne vous ai même pas dit ce que j'attendais de vous... :-°

Cahier des charges



Alors je veux :
Je vous avais prévenus que je serais exigeant ! Mais croyez-moi, vous êtes capables de le faire.
Je sais que vous y arriverez !

Élaboration



Comme je vous l'ai dit, essayez de réfléchir sur papier avant... Ce qu'il vous faut comme nombre de variables, les types de variables, comment va se dérouler le programme, les conditions et les boucles utilisées...

Pour info, voici la formule de conversion pour passer des degrés Celsius en degrés Fahrenheit :
F = 9/5 * C + 32

Je vais vous aiguiller un peu :



Voici un aperçu de ce que je vous demande :

Image utilisateur


Vous voyez bien que tous mes chiffres sont alignés, malgré leur taille. Lors de l'affichage, il faudra donc utiliser une condition en fonction de la taille des chiffres (if Celsius < 100){.........} else{.........}).
Je vais également vous donner une fonction toute faite, qui vous permettra d'arrondir vos résultats. Je vous expliquerai le fonctionnement des fonctions exactement 2 chapitres plus loin. Mais en attendant, c'est facultatif. Vous pouvez très bien ne pas vous en servir. Pour ceux qui souhaitent tout de même l'utiliser, la voici :
Code : Java
1
2
3
public static double arrondi(double A, int B) {
     return (double) ( (int) (A * Math.pow(10, B) + .5)) / Math.pow(10, B);
}

Elle est à placer entre les deux accolades fermantes de votre classe, comme ceci :

Image utilisateur


Vous pouvez l'utiliser de cette manière : imaginez que vous avez la variable Faren à arrondir, et que le résultat obtenu soit enregistré dans une variable arrond_Faren, vous procéderez comme suit :
Code : Java
1
2
arrondFaren = arrondi(faren,1); // pour un chiffre après la virgule
arrondFaren = arrondi(faren, 2);// pour 2 chiffres après la virgule... etc.


Bon : Je vous ai déjà assez aidés ! Place à la conception.

Conception

Dernière recommandation



Essayez de bien INDENTER votre code ! Prenez votre temps. Essayez de penser à tous les cas de figures...

Maintenant à vos papiers, crayons, neurones et claviers, ...et bon courage !

Correction

STOP !!! C'est fini ! Passons maintenant à la correction de ce premier TP.
Ça va ? Pas trop mal à la tête ? Je me doute qu'il a dû y avoir quelques tubes d'aspirine d'utilisés...
Mais vous allez voir qu'en définitive, ce TP n'était pas si compliqué.
Surtout, n'allez pas croire que ma correction est parole d'évangile... Il y avait différentes manières d'obtenir le même résultat. Voici tout de même une des corrections possibles.

Code : Java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
class Sdz1 {
    public static void main(String[] args) {
       //Notre objet Scanner
Scanner sc = new Scanner(System.in);
 
//initialisation des variables
        double c, f=0;
int i,j=0;
char reponse=' ';
 
System.out.println(" ------------------------------------------------------------------------");
System.out.println("|             CONVERSION DEGRES CELSIUS ET DEGRES FARENHEIT                |");
System.out.println(" ------------------------------------------------------------------------");
 
do{//tant que reponse = O//boucle principale
        
    do{//tant que l'imprimante n'est pas prête//boucle de test pour savoir si l'utilisateur est prêt
        
        do {// tant que valeur impossible rentrée
 
//saisie des valeurs
            System.out.println("A partir de :");//affichage des directives et récupération des données
            c = sc.nextDouble();
 
            System.out.println("jusqu' à:");
            i = sc.nextInt();
 
            System.out.println("Par pas de :");
            j = sc.nextInt();
 
            if (c > i || j > i || j == 0)
                System.out.println("Traitement impossible");
 
        }while(c > i || j > i || j == 0);
 
        do {//tant que la reponse n'est pas O ou N
                
            System.out.println("Assurez-vous que l'imprimante est prête");
            System.out.println("Si vous êtes prêt, tapez O, sinon tapez N");
            //sc.reset();
            reponse = sc.next().charAt(0);
            
        }while (reponse != 'O' && reponse != 'N');
        
    }while (reponse == 'N');
 
//                                                                    Traitement des valeurs
    System.out.println("TABLE DE CONVERSION CELSIUS / FARENHEIT");
    System.out.println("---------------------------------------------");
    System.out.println("       Celsius      |       Farenheit       ");
    System.out.println("---------------------------------------------");
    
    do{//tant que l'affichage n'est pas fini, on boucle les données et les calculs
        
        f = ((9.0/5.0) * c) + 32.0;
        if (c < 10)//si le Celsius n'a qu'un chiffre, on affiche un certain nombre d'espaces
            System.out.println("         "+c+"        |         "+arrondi(f,1));
        
        else
        {
            if(c < 100)//S'il y a un chiffre en plus, on enlève un espace blanc...
                System.out.println("        "+c+"        |         "+arrondi(f,1));
            else
                System.out.println("        "+c+"       |         "+arrondi(f,1));
        }
 
        c = c + j;//On incrémente le degré Celsius avec le pas
        
    }while (c <= i);
 
    do{
        
        System.out.println("Souhaitez-vous éditer une autre table ?(O/N)");
        reponse = sc.next().charAt(0);
        
    }while(reponse != 'O' && reponse != 'N');
    
}while(reponse == 'O');
 
System.out.println("Au revoir !");
 
//Fin de programme
}
        
public static double arrondi(double A, int B) {
        return (double) ( (int) (A * Math.pow(10, B) + .5)) / Math.pow(10, B);
}
 
 
 
}


Expliquons un peu ce code





Ce programme n'est pas parfait, loin de là... La vocation de celui-ci était de vous faire utiliser ce que vous avez appris et je pense qu'il remplit bien sa fonction. ^^

J'espère que vous avez apprécié ce TP.
Je sais qu'il n'était pas facile, mais avouez-le : il vous a bien fait utiliser tout ce que vous avez vu jusqu'ici ! :D

Voilà : votre premier TP est fait, et bien fait !!
Je vous conseille de vous reposer un peu, parce que ça a dû fumer dans votre boite crânienne...
Je viens de vous faire afficher un tableau (rudimentaire à l'affichage), mais maintenant nous allons travailler avec des tableaux en Java ! C'est parti...
Chapitre précédent Sommaire Chapitre suivant
Retour en haut Retour en haut


Créé : le 21/06/2006 à 15:02:22
Modifié : le 22/08/2008 à 15:54:13
Avancement : 0%
Licence : Copie non autorisée

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 610 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.2459s (0.2307s)