IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Aide exercices Java débutant


Sujet :

Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 54
    Par défaut Aide exercices Java débutant
    Bonjour,
    Comme je l'ai précisé dans la rubrique "études" je m'apprête à entamer une formation afpa de développeur informatique et je m'y prépare en apprenant les bases de certains langages histoire de ne pas être largué et prendre un peu d'avance...

    Ceci dit voilà mon problème, en ce moment j'apprends les bases de java à l'aide d'un bouquin que j'ai acheté.
    Ce bouquin propose des exercices dont l'un m'interroge.
    En effet il était question d'écrire un programme java permettant de faire une calculette, je m'exécute je tape mon code sur papier ensuite je le compile et exécute sur JDK et me rend compte qu'il marche très bien super...
    Ensuite je regarde la correction et surprise le code est tout de même différent dans sa rédaction, je me posais donc la question que même si mon programme fonctionnait il était possible qu'il soit mal rédigé tout de même?! qu'en pensez vous?

    Voilà mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    import java.util.*;
    public class machineACalculer
    {
    public static void main(String [] argument)
    {
    double premièreValeur, deuxièmeValeur, résultat;
    char typeOpération;
    Scanner lectureClavier= new Scanner(System.in);
    System.out.println("Entrer la première valeur:");
    premièreValeur= lectureClavier.nextDouble();
    System.out.println("Entrer la deuxième valeur:");
    deuxièmeValeur= lectureClavier.nextDouble();
    System.out.println("le type d'opération (+,-,*,/):");
    typeOpération= lectureClavier.next().charAt(0);
    switch(typeOpération)
    {
    case'+':
    résultat= premièreValeur+deuxièmeValeur;
    System.out.print("Cette opération a pour résultat:"+résultat);
    break;
    case'-':
    résultat= premièreValeur-deuxièmeValeur;
    System.out.print("Cette opération a pour résultat:"+résultat);
    break;
    case'*':
    résultat= premièreValeur*deuxièmeValeur;
    System.out.print("Cette opération a pour résultat:"+résultat);
    break;
    case'/':
    	if (deuxièmeValeur!=0)
    	{
    résultat= premièreValeur/deuxièmeValeur;
    System.out.print("Cette opération a pour résultat:"+résultat);
    	}
    	else
    	{
    		System.out.print("Opération impossible");
    	}
    break;
    default:
    System.out.print("Entrer une opération valide");
    System.exit(0);
    }
    }
    }
    Celui de la correction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    import java.util.*;
    public class Calculette { 
    	public static void main( String [] argument) 
    	{ 
    	int a, b; 
    	char opérateur; 
    	double calcul = 0; 
    	boolean OK = true; 
    	Scanner lectureClavier = new Scanner(System.in); 
    	System.out.print("Entrer la premiere valeur : "); 
    	a = lectureClavier.nextInt(); 
    	System.out.print("Entrer la seconde valeur : "); 
    	b = lectureClavier.nextInt(); 
    	System.out.print("Type de l'operation : (+, -, *, /) : "); 
    	opérateur = lectureClavier.next().charAt(0); 
    	switch (opérateur ) { 
    	case '+' : calcul = a + b; 
    	break; 
    	case '-' : calcul = a - b; 
    	break; 
    	case '/' : if ( b != 0) calcul = a / b; 
    	else OK = false; 
    	break; 
    	case '*' : calcul = a * b ; 
    	break; 
    	default : OK = false ;  
    	} 
    	if (OK) { 
    	System.out.print("Cette operation a pour resultat : "); 
    	System.out.println(a + " " +opérateur+ " "+ b + " = " + calcul); 
    	} 
    	else System.out.println("Operation non conforme !"); 
    	} 
    	}
    Merci pour votre aide

  2. #2
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Bah les dissemblances sont minimes.
    Le code corrigé ne gère que les calculs d'entiers, le tien essaie de gérer les calculs de double (mais fait un truc genre 0.1 + 0.2 et tu devrais avoir un résultat peu sympatique).

    Niveau rédaction le code corrigé évite la duplication du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.print("Cette operation a pour resultat : ");
    Qu'on retrouve plusieurs fois chez toi (dans un programme, plus il y a de code, plus il y a de bugs potentiels, donc c'est toujours une bonne chose d'éviter de dupliquer du code identique).

    Après il faut éviter de coder des noms de classes/variables avec des accents, il faut aussi nommer les classes avec une majuscule (MachineACalculter au lieu de machineACalculer) afin de ne pas confondre variables et classes par exemple.
    Mais ce sont des détails normaux pour un débutant.

    Sinon sur le principe, rien de particulier, le code corrigé est plus lisible, c'est tout.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 54
    Par défaut
    Il me semblait que les accents pour les variables étaient mieux supporter par java que par C par exemple???
    L'auteur du bouquin lui même utilise les accents, j'aimerais plus de précisons là dessus stp...

    Tu as raison en disant que mon code est "répétitif" dans certaines instructions que j'aurais pu éviter, mais je n'ai pas l'impression de maîtriser suffisamment pour résoudre ce problème, j'espère qu' à force de pratique ce sera plus lisible...(que ferait on sans espoir? )

    Merci de m'avoir donné ton point de vue qui est intéressant, j'apprécie les conseils que vous donnez sur ce forum, qui permet (à nous débutant) de ne pas faire fausse route trop longtemps...

  4. #4
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 111
    Par défaut
    L'auteur du bouquin lui même utilise les accents, j'aimerais plus de précisons là dessus stp...
    ce n'est tout simplement jamais recommandé de mettre des accents. Idem pour tous ce qui est table dans les base de données.

    Eviter tous les caractères "bizarre", ca evite bien des problèmes.

    La prog c'est deja assez compliqué, pas la peine d'y ajouter de la grammaire

    Et aussi en se qui concerne java, on prend l'habitude de nommer les methodes en anglais (get/set/is ...) et quitte a changer les noms, autant tous passer en anglais, javadoc et noms de variables.

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 977
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 977
    Par défaut
    Due,
    Citation Envoyé par dalil777 Voir le message
    Il me semblait que les accents pour les variables étaient mieux supporter par java que par C par exemple???
    L'auteur du bouquin lui même utilise les accents, j'aimerais plus de précisons là dessus stp...
    C ne les accepte pas du tout.

    Citation Envoyé par dalil777 Voir le message
    Tu as raison en disant que mon code est "répétitif" dans certaines instructions que j'aurais pu éviter, mais je n'ai pas l'impression de maîtriser suffisamment pour résoudre ce problème, j'espère qu' à force de pratique ce sera plus lisible...(que ferait on sans espoir? )
    C'est facile au moins quand il s'agit de code répétitif : créer une fonction pour ça.

    Sinon, prends l'habitude de :
    - bien indenter ton code = indentation régulière et cohérente
    - bien aérer le code = saut de lignes pour séparer les blocs fonctionnels
    - bien commenter = ce qu'il faut, et pas plus (comme tu n'en as mis aucun, c'est pour te rappeler que ça se fait ).

  6. #6
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Citation Envoyé par droggo Voir le message
    Due,
    ...................
    Sinon, prends l'habitude de :
    - bien indenter ton code = indentation régulière et cohérente
    - bien aérer le code = saut de lignes pour séparer les blocs fonctionnels
    - bien commenter = ce qu'il faut, et pas plus (comme tu n'en as mis aucun, c'est pour te rappeler que ça se fait ).
    J'adore comme tu dis ça à chaque fois .
    C'est facile au moins quand il s'agit de code répétitif : créer une fonction pour ça.
    euh d'accord, mais Dans ce cas precis pas la peine vu qu'il s'agit d'une seule instrucion qui est repétée, pas la peine de faire une fonction pour ça, faut juste faire une factorisation comme on dit,et comme le "resultat" est memorisé l'afficher apres les operations et le code sera plus clair .
    @+

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 54
    Par défaut
    Merci pour toutes ces précisions importantes, donc je sais ce qu'il me reste à faire: bannir les accents de mon code

    La factorisation d'une instruction, je ne connaissais pas l'expression mais elle répond bien à la situation

    Je sens que je vais beaucoup en apprendre sur ce forum, j'apprécie autant de solidarité, tous les forums ne peuvent pas s'en vanter alors merci encore

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 54
    Par défaut
    Je viens de changer le titre de mon topic pour éviter d'en créer un autre inutilement. J'aurais certainement une multitude de questions à poser je posterais donc içi pour ne pas polluer le forum de mes questions débiles

    Encore un exercice dont voici l'intitulé:

    En utilisant une boucle do...while, écrire un programme qu demande la saisie d'une valeur, tant celle-ci n'est pas comprise entre 0 et 100.

    Voilà mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    import java.util.*; 
    public class SaisieValeur 
    { 
    public static void main (String [] argument) 
    { 
    int valeur; 
    Scanner lectureClavier = new Scanner(System.in); 
    do 
    { 
    System.out.print("Entrer un entier : "); 
    valeur = lectureClavier.nextInt(); 
    } 
    while ( valeur < 0 && valeur > 100) ; 
    System.out.println("STOP chiffre compris entre 0 et 100"); 
    } 
    }
    Et le code de la correction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import java.util.*; 
    public class Exercice2 { 
    public static void main (String [] argument) { 
    int valeur; 
    Scanner lectureClavier = new Scanner(System.in); 
    do { 
    System.out.print("Entrer un entier : "); 
    valeur = lectureClavier.nextInt(); 
    } while ( valeur < 0 || valeur > 100) ; 
    System.out.println("Vous avez saisi : " + valeur); 
    } 
    }
    Le corrigé met || (ou) et moi il me semblait plus logique de mettre &&, pourquoi selon vous un || est plus approprié???
    Autre question qui me tracasse depuis le début sur la déclaration de la fonction main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static void main (String [] argument)
    J'ai remarqué que l'auteur du livre java que je potasse en ce moment utilise soit arg, argument ou parametres à la fin du code, je voulais savoir quelle est la différence vu qu'il ne l'a jamais spécifié

    J'aimerais svp avoir des explications claires puisque il ne faut pas oublier que je suis un pur débutant et que les termes techniques je ne les comprendrais pas forcément

    Merci d'avance pour votre aide

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Par défaut
    Bonjour, c'est une question de logique pour les "||"

    Quand tu écris do { ... } while(valeur < 0 && valeur > 100) tu peux le traduire par "Faire ... tant que valeur plus petite que 0 ET valeur plus grande que 100", mais si tu y réfléchi, si la valeur est plus petite que 0, elle ne pourra pas être plus grande que 100. Donc il faut écrire "Faire ... tant que la valeur est plus petite que 0 OU tant que la valeur est supérieure à 100".


    Pour le nom du paramètre dans main, tu peux écrire "String[] toto" si tu le désire, mais comme tu ne l'utilises pas tu t'en moque. En fait tu es obligé d'avoir un String[] (ou String... mais tu verras ça bine plus tard ) dans ta déclaration de main, ça correspond aux différents paramètres de la ligne de commande. Tu devrais les utiliser dans tes prochains exercices je pense

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 54
    Par défaut
    Merci beaucoup,c'est vrai qu'en regardant de plus près c'est logique, dans mon esprit je faisais fausse route et je me suis embrouillé quand je vous disais que mes questions vous sembleraient parfois débiles

    Allez je retourne à mon apprentissage et certainement pour d'autres questions dès cette nuit

Discussions similaires

  1. [Aide Exercice Java Script]
    Par nvR76 dans le forum Langage
    Réponses: 2
    Dernier message: 02/06/2010, 12h51
  2. [Aide sur logique][Débutant] algèbre de Boole en java.
    Par SirDarken dans le forum Langage
    Réponses: 6
    Dernier message: 30/08/2006, 17h38
  3. classes java [débutant]
    Par glurps dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 06/06/2003, 16h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo