Ligne de commande avec Visual Studio 2013 Ultimate

Fermé
Tupac900 Messages postés 43 Date d'inscription mardi 11 décembre 2012 Statut Membre Dernière intervention 14 mars 2017 - Modifié par Tupac900 le 3/08/2014 à 04:08
Tupac900 Messages postés 43 Date d'inscription mardi 11 décembre 2012 Statut Membre Dernière intervention 14 mars 2017 - 3 août 2014 à 23:53
Bonjour
Je suis actuellement en train d'apprendre le C# avec le tuto d'Openclassroom pour ceux qui connaissent.
Voila j'était sur un TP sur la pratique de la ligne de commande avec Visual Studio 2013 Ultimate, vu que je n'arrivais pas à faire passer les arguments, j'ai été aidé par un gars du Forum. On nous apprend (dans le tuto) que pour qu'un argument soit valable il ne faut pas qu'il y ait d'espace dans celui-ci par exemple :
argument1 : OK
si on veut mettre des espaces il faut mettre des guillemets :
argument 1 : invalide
"argument 1" : OK
Avec cette manip, le code n'a pas marché.
Et ensuite le gars du forum me donne l'info qu'il ne faut pas mettre de guillemet même quand on met des espaces sinon l'argument est invalide. Et là la manip marche et le code fonctionne.

Donc du coup je ne comprends plus rien, on nous mets en garde pour finalement nous dire l'inverse, est-ce que ma version de Visual Studio joue là dedans, quel est le problème ? Et comment faire d'ailleurs si on veut faire passer plusieurs arguments dans la ligne de commande.

Pour ceux qui veulent en savoir un peu plus, voici le code en question :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MonProgramme
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ReadLine();
            if (args.Length == 0)
            {
                AfficherAide();
            }
            else
            {
                string operateur = args[0];
                switch (operateur)
                {
                    case "addition":
                        Addition(args);
                        break;
                    case "multiplication":
                        Multiplication(args);
                        break;
                    case "moyenne":
                        Moyenne(args);
                        break;
                    default:
                        AfficherAide();
                        break;
                        
                }
            }
           
            
        }

        static void AfficherAide()
        {
            Console.WriteLine("Utilisez l'application de la manière suivante :");
            Console.WriteLine("MonProgamme addition 2 5");
            Console.WriteLine("MonProgamme multiplication 2 5");
            Console.WriteLine("MonProgamme moyenne 2 5 10 11");
        }

        static void Addition(string[] args)
        {
            if (args.Length != 3)
            {
                AfficherAide();
            }
            else
            {
                double somme = 0;
                for (int i = 1; i < args.Length; i++)
                {
                    double valeur;
                    if (!double.TryParse(args[i], out valeur))
                    {
                        AfficherAide();
                        return;
                    }
                    somme += valeur;
                }
                Console.WriteLine("Résultat de l'addition : " + somme);
            }
        }

        static void Multiplication(string[] args)
        {
            if (args.Length != 3)
            {
                AfficherAide();
            }
            else
            {
                double resultat = 1;
                for (int i = 1; i < args.Length; i++)
                {
                    double valeur;
                    if (!double.TryParse(args[i], out valeur))
                    {
                        AfficherAide();
                        return;
                    }
                    resultat *= valeur;
                }
                Console.WriteLine("Résultat de la multiplication : " + resultat);
            }
        }

        static void Moyenne(string[] args)
        {
            double total = 0;
            for (int i = 1; i < args.Length; i++)
            {
                double valeur;
                if (!double.TryParse(args[i], out valeur))
                {
                    AfficherAide();
                    return;
                }
                total += valeur;
            }
            total = total / (args.Length - 1);
            Console.WriteLine("Résultat de la moyenne : " + total);
        }
    }
}


Si vous ne comprenez pas le code, ça dit en fait de mettre en argument dans la ligne de commande soit "addition 2 5" pour faire une addition de 2 + 5 par exemple, "multiplication 2 5" pour une multiplication de 2 x 5 ou encore "moyenne 2 5 10 11" pour faire la moyenne de ces quatre nombres.

Donc du coup comment marche cette ligne de commande ? Les guillemets sont-ils en fait invalides ? Comment faire passer plusieurs arguments ?
Merci à vous !
A voir également:

2 réponses

Booniak Messages postés 11 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 29 août 2014 5
3 août 2014 à 23:01
Je ne suis pas sur de bien comprendre le problème, commente ton code avant de le poster sur un forum:
static void Main(string[] args)
{ 
Console.WriteLine("Ca c'est des trucs que le programme exécute");
// Ca c'est des trucs que tu dis par les amigos du forums!
}

Pour créer des variables du genre: Manuel Sanchez écrit Manuel_Sanchez à la place. Les guillemets c'est pour écrire du texte qui n'est pas traité par le programme.
Pour passer plusieurs arguments (pour le coup on dira paramètre) dans une méthode il faut les séparer avec une virgule :
methode_du_schnapps(parametre1, parametre2)
Bon j'espère que j'ai pas répondu à coté de la plaque...a+ dans le bus!
1
Tupac900 Messages postés 43 Date d'inscription mardi 11 décembre 2012 Statut Membre Dernière intervention 14 mars 2017 16
Modifié par Tupac900 le 4/08/2014 à 00:01
Bah en fait le code je l'ai mis juste comme ça, il n'est pas du tout important, ce qui m'intéressait c'était comment mettre plusieurs arguments dans la ligne de commande et tu y a répondu avec ta petit touche d'humour :). Le problème c'est que je n'ai pas pour l'instant de Visual Studio sous la main donc du coup tu parles des paramètres directement dans le code ou des paramètres dans la ligne de commande ?

Une petite dernière question : pourquoi dans ce tuto on nous dit de mettre des guillemets quand il y a des espaces ? Est-ce ça marchait comme ça pour les versions antérieurs de Visual Studio ?

Merci de ton aide précieuse amigos.
0