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

C# Discussion :

[débutant] sortir d'une fonction sans donner de resultat


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de CompuTux
    Homme Profil pro
    Développeur Python et Django
    Inscrit en
    Juillet 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Python et Django
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 82
    Par défaut [débutant] sortir d'une fonction sans donner de resultat
    Bonjour,

    Dans une application console, je dois implémenter une sorte de menu càd choisir entre 4 carburants en tapant 1 pour le carburant 1, 2 pour le 2ème, etc.

    Je considère l'utilisateur non intelligent càd qu'il peut taper 5 ou 56,45745745 pour choisir le carburant. J'aimerais donc que mon programme revienne au menu de choix du carburant lorsque l'on tape n'importe quoi.

    Mon code est :

    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
    // définition de la fonction choix du prix du carburant
     
            public static double prix_carburant(int choix_carburant)
            {
                double prix; 
     
                if (choix_carburant == 1)
                {
                    prix = 1.309;
                    return prix;
                }
                else if (choix_carburant == 2)
                {
                    prix = 1.287;
                    return prix;
                }
                else if (choix_carburant == 3)
                {
                    prix = 1.049;
                    return prix;
                }
                else 
                {
                    prix = 0.57;
                    return prix;
                }
     
            }
    Pour l'instant le prix du carburant est 0,57 losque l'on tape autre chose que 1 ou 2 ou 3.

    J'ai essayé avec un Environnement.Exit() mais ça ne marche pas.

    Quelqu'un peut-il m'aider svp ?

  2. #2
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut
    Pour pour commencer un peu de ménage dans ton 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
     
     
    // définition de la fonction choix du prix du carburant
     
            public static double prix_carburant(int choix_carburant)
            {
                double prix;
                switch(choix_carburant)
                {
                      case 1:
                        prix = 1.309;
                        break;
                      case 2:
                        prix = 1.287;
                        break;
                      case 3:
                        prix = 1.049;
                        break;
                      default:           
                        prix = -1; // erreur de frapppe         
                        break;
                }
                return prix;       
            }

    Pour alors ici utilise plutot un switch. Pour le reste tu test chacun des cas prévu, si l'entrée choix_carburant ne correspond pas le switch saute à default: ici j'ai mis -1 qui te permettra de savoir qu'une erreur de frappe a eu lieu

  3. #3
    Membre actif Avatar de CompuTux
    Homme Profil pro
    Développeur Python et Django
    Inscrit en
    Juillet 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Python et Django
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 82
    Par défaut
    Le prof veut qu'on utilise uniquement les conditionnels if else. Dans ce cas comment faire ?

  4. #4
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut
    Ton prof est relou
    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
     
     
    // définition de la fonction choix du prix du carburant
     
            public static double prix_carburant(int choix_carburant)
            {
                double prix;
     
                if (choix_carburant == 1)
                    prix = 1.309;
                else if (choix_carburant == 2)
                    prix = 1.287;
                else if (choix_carburant == 3)
                    prix = 1.049;
                else 
                    prix = -1; // problème
     
                return prix;
            }

    Evite autant que possible de mettre des return dans tout les sens, parce que ça donne mal au crâne

  5. #5
    Membre actif Avatar de CompuTux
    Homme Profil pro
    Développeur Python et Django
    Inscrit en
    Juillet 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Python et Django
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 82
    Par défaut
    Merci teddyalbina !

    Est il possible de mettre une phrase comme "Votre choix est incorrect ! Veuillez rechoisir :" et faire recommencer la fonction prix_carburant au début ?

    Genre avec un goto... ça existe ?

  6. #6
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut
    OUlala non pas de GOTO oublie de suite.

    Ce qu'il te faut c'est boucler tant que la condition prix != -1 n'est pas remplie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TANT QUE prix == -1
       AFFICHER MESSAGE
       RECUPERER SAISIE UTILISATEUR
          prix = prix_carburant(SAISIE);
    FIN TANT QUE

  7. #7
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Citation Envoyé par teddyalbina Voir le message
    Ton prof est relou
    Si c'est pour l'experience academique du else if je peux peut-etre comprendre....

    Mais pour ma part, j'ai toujours trouvé que les cascade de else if etaient un piege pour la compréhension logique car souvent au bout du 3eme else if on a du mal a savoir d'ou on vient et le chemin eventuel qui reste a parcourir

    Dans ton cas effectivement le switch case serait plus approprié et plus lisible

    Ou meme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if (condition a)
    {
      // traitement 
      return;
    }
    if (condition b)
    {
      // traitement 
      return;
    }

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 99
    Par défaut
    Citation Envoyé par olibara Voir le message
    Si c'est pour l'experience academique du else if je peux peut-etre comprendre....

    Mais pour ma part, j'ai toujours trouvé que les cascade de else if etaient un piege pour la compréhension logique car souvent au bout du 3eme else if on a du mal a savoir d'ou on vient et le chemin eventuel qui reste a parcourir

    Dans ton cas effectivement le switch case serait plus approprié et plus lisible

    Ou meme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if (condition a)
    {
      // traitement 
      return;
    }
    if (condition b)
    {
      // traitement 
      return;
    }
    Je partage cet avis.

    Le param de fonction ne devrait pas être int mais une énumeration de Carburant. Et aucun prix n'existe sans devise.

    Si input est invalide il faut "lancer" une exception (ArgumentException ?).

    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
     
    // Generalement on travaille en unité indivisible de la devise
    // car _amount reste entier et on a pas d'arrondis et plus
    class Price{ int _amout; Devise _devise; ...
     
    Price PrixCarburant(Carburant carburant)
    {
     
    if( Carburant.SansPlomb95 == carburant)
    return( new Price(1.095, Devise.Euro) );
     
    ...
    // connait pas ce carburant
    throw new ArgumentException("carburant non pris en charge", "carburant");
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void Main(...
    {
    try
    {
    ...
    }
    catch(ArgumentException ex)
    {
     ... //Saisie incorrecte
    }
    }
    et une classe carburant ?

    Pascal

Discussions similaires

  1. Sortir d'une fonction sans recharger la page
    Par alfouine dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 10/03/2011, 11h36
  2. Lancer une fonction sans widget ( débutant )
    Par LM_programme dans le forum GTK+
    Réponses: 5
    Dernier message: 17/03/2010, 13h07
  3. Comment sortir d'une fonction sans nom ?
    Par kriekbellevue dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/11/2007, 15h00
  4. Création d'une fonction sans paramètre?
    Par falcon dans le forum Oracle
    Réponses: 3
    Dernier message: 13/12/2004, 11h32
  5. [Threads] Sortir d'une fonction bloquante
    Par guejo dans le forum MFC
    Réponses: 19
    Dernier message: 17/08/2004, 14h12

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