CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Programmation] Vérification de mon programme.

start-place
start-place
Niveau 9
08 septembre 2016 à 16:41:59

Yo les gars !
Pour m'entrainer j'ai récemment du coder un programme en langage java, que je ne connais pas du tout, et j'aimerais savoir si ce que j'ai codé et exactement bien codé (if you see what i mean :hap:)
Bref, le voici avec l'énoncé du problème (que j'ai créé) :

Exercice :
On entre un numéro entre 1 et 6 dans le programme. celui ci simule le lancement d'un dé à 6 faces et nous donne le chiffre correspondant. Le programme nous dit que l'on a gagné si le numéro entré est strictement inférieur au numéro affiché par le dé. Dans le cas contraire, on a perdu.

public class Comparaison {
public static void main(String[] args){
//Déclarations des variables
byte A,B;
float C;

//Saisie des données
Ecran.afficher("Entrez un nombre entier entre 1 et 6 : ");
A=Clavier.saisirByte();
C=Math.random();

//Traitements et affichage du résultat
switch (C) {
case (C>=0.0)&&(C<1.0/6):{
B=1}
break;
case (C>=1.0/6)&&(C<1.0/3):{
B=2}
break;
case (C>=1.0/3)&&(C<0.5):{
B=3}
break;
case (C>=0.5)&&(C<2.0/3):{
B=4}
break;
case (C>=2.0/3)&&(C<5.0/6):{
B=5}
break;
case (C>=5.0/6)&&(C<1):{
B=6}
break;
}
if (A>=1)&&( A<=6) {
Ecran.afficher ("Le dé a donné la valeur ", B);
if (A<B) {
Ecran.afficher ("Vous avez gagné !");
Ecran.sautDeLigne();
}
else
Ecran.afficher ("Vous avez perdu.");
Ecran.sautDeLigne();
}
else
Ecran.afficher ("Votre chiffre n'est pas entre 1 et 6");
Ecran.sautDeLigne();
}
}

Voilà ! juste pour info, je ne savais pas comment tirer au hasard directement un nombre entier (ici entre 1 et 6), c'est pour ça que j'ai utilisé cette alternative !
Merci de corriger si nécessaire mon programme, je vous en serais grandement reconnaissant !

Morphisme
Morphisme
Niveau 10
08 septembre 2016 à 16:50:13

Déjà regarde si ça s'exécute correctement...
Ensuite j'ai pas regardé ton usine à gaz en détail mais un truc du genre int(6*math.random())+1 fait en une ligne ce que ton switch fait en 36 fois trop de lignes :hap:

start-place
start-place
Niveau 9
08 septembre 2016 à 17:10:38

blue -> De quoi tu parles ? j'ai pas compris ton histoire de balise code :(
Morphisme -> J'ai cru remarquer qu'il fallait installer java et je préfère attendre que notre prof nous dise quuele version il faut installer. Mais si il existe un simple site pour ça, je le veux bien ! :) Et je ne connais pas encore cette "fonction", comment marche t-elle ?

Morphisme
Morphisme
Niveau 10
08 septembre 2016 à 17:15:52

Ah tu dois faire un programme sans pouvoir le tester ? C'est pas terrible... Bref.
J'ai jamais fait de Java donc j'ai écrit en pseudo-code mais en gros il doit y avoir une fonction pour tronquer un float et le transformer en int. Et du coup au lieu de faire plein de comparaisons tu calcules 6*(ton float random entre 0 et 1), ce qui te donne un float entre 0 et 6, puis tu le transformes en int, ce qui te donne directement ton résultat de dé.

Grimmys
Grimmys
Niveau 19
08 septembre 2016 à 17:20:18

Le 08 septembre 2016 à 16:50:13 Morphisme a écrit :
Déjà regarde si ça s'exécute correctement...
Ensuite j'ai pas regardé ton usine à gaz en détail mais un truc du genre int(6*math.random())+1 fait en une ligne ce que ton switch fait en 36 fois trop de lignes :hap:

Lis la fin de son message : " Voilà ! juste pour info, je ne savais pas comment tirer au hasard directement un nombre entier (ici entre 1 et 6), c'est pour ça que j'ai utilisé cette alternative ! "
Mais bon effectivement, son utilisation de switch est horrible. :hap:

Sinon, déjà, évite vraiment les noms de variables dénués de sens : " A ", " B ", " C ", ça ne veut rien dire....

Tu pourrais par exemple remplacer " A " par " nombre_utilisateur " et " B " par " nombre_machine ".
Bon ok, mes noms ne sont pas très cools non plus ( j'ai du mal à trouver les bons :noel: ), mais déjà plus explicites. Il faut arriver à trouver des noms courts, mais qui renseignent sur le contenu de la variable. :)

Autre point : la logique de conception de ton programme.

Voilà d'un point de vue algorithmique ce que fait ton programme :

- Demande d'entrée d'une valeur par l'utilisateur ( comprise entre 1 et 6 )
- Lire valeur
- Simuler aléatoirement un lancé d'un D6
- Si l'entrée de l'utilisateur est bien comprise entre 1 et 6 : vérifier si elle est supérieure ou non à celui réalisé aléatoirement, annoncé le résultat.
- Sinon : annoncer à l'utilisateur que son choix ne correspond pas.
- Fin du programme

En gros, si le choix de l'utilisateur est mauvais, on va tout de même simuler un lancé de dé ( complètement inutile ), puis finalement quitter le programme ( du coup l'utilisateur est obligé de relancer le programme ).

Je te propose donc plutôt ceci :

- Demande d'entrée d'une valeur par l'utilisateur
- Lire valeur
- Tant que l'entrée n'est pas comprise entre 1 et 6 : redemander une entrée valide, lire valeur
- Simuler lancé
- Si l'entrée de l'utilisateur est supérieure : annoncer qu'il a gagné.
- Sinon : annoncer qu'il a perdu.

Ce n'est pas compliqué à mettre en place.

et sinon, amélioration possible du truc : demander à l'utilisateur si il veut faire une nouvelle partie, plutôt que de fermer le programme une fois le résultat annoncé ; pas si compliqué à mettre en place non plus ( exactement le même principe en fait ).

Voilà, bonne chance.

Grimmys
Grimmys
Niveau 19
08 septembre 2016 à 17:27:34

En java tu peux utiliser :

 nombre_aléatoire  = (int) ( 6*Math.random() + 1 ) 
start-place
start-place
Niveau 9
08 septembre 2016 à 18:06:20

Merci pour tout vos conseils ! Il me sont très précieux ! :)
Du coup si j'entre le programme ainsi, il exécuteras correctement ? Où il y a une faute de syntaxe peut-être ?

Grimmys
Grimmys
Niveau 19
08 septembre 2016 à 18:23:12

A priori, non, il n'y a pas de faute de syntaxe, mais cela ne veut pas dire que ton programme est bon... :(

Enfin sans l'indentation on peut pas trop voir de toute façon.

Sous forums
  • Cours et Devoirs
  • Histoire
  • Métiers & Orientation
  • Environnement & Nature
  • Politique
  • Philosophie