Lameth7
Messages postés8Date d'inscriptionsamedi 8 janvier 2011StatutMembreDernière intervention30 mai 2012
-
15 janv. 2011 à 23:03
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 2017
-
21 janv. 2011 à 20:26
Bonjour,
J'ai un problème avec un code que notre professeur nous a envoyé. Je n'arrive pas à le reproduire. Pouvez-vous m'expliquez ce qui manque pour le lancer?
Encore merci.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace testing
{
class Program{
static void Main(string[] args)
{
switch (args[2].ToUpper())
{
case "/ADD":
Console.WriteLine(
(
System.Convert.ToInt32(args[0])
+
System.Convert.ToInt32(args[1])
).ToString()
);
break;
case "/DEL":
bool b;
int a , c ;
b = int.TryParse(args[0], out a );
b = int.TryParse(args[1], out c );
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 16 janv. 2011 à 13:09
Re
args[] est un tableau de chaine de caracteres reçu en parametre (Main(string[] args))
L'expression "args[2]" indique que le programme attend au moins 3 arguments
args[0], args[1], args[2]
Vu le code, les deux autres arguments doivent être des nombres entiers
System.Convert.ToInt32(args[0]) et System.Convert.ToInt32(args[1]) indique le le programme veut convertir les arguments en "int"
Ton programme doit donc etre lancé en mode console avec des arguments
Ouvre une console de commande sur ton ordi (Démarrer->executer->Cmd)
Place toi à l'endroit ou se trouve ton programme (cd le-chemin-complet)
Lance le programme avec ses arguments
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 16 janv. 2011 à 18:31
Re...
OK, mais revenons au probleme de base, on verra le switch apres.
je pense que tu confonds le code et l'execution.
1) Reglons le probleme de l'execution
Supposons que ton programme, une fois compilé, s'appelle "testing .exe"
comme il est en mode console, pour l'executer tu dois ouvrir une fenetre de commande et tapper la commande "Testing.exe"
jusque là tu suis ?
Ton programme attend des arguments ou parametres, ce sont des informations qu'on lui passe à l'execution.
donc si tu ne lui en passes pas tu as une belle exception (index out of range exeption)
pour lui passer des arguments, il faut les ajouter à la commande, dans ton cas il a besoin de 3 parametres, 2 entiers et un ordre
exemples:
Testing.exe 12 25 /ADD
Testing.exe 25 12 /DEL
tu suis toujours ?
Autre question, quel est ton environnement de developpement ?
utilise-tu un environnement integré avec un debugger, genre visual studio, ou compile-tu en ligne de commande ?
Bob.
C# is amazing, enjoy it!
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 21 janv. 2011 à 20:26
Bonsoir
oui tu peux utiliser directement le debugger
Ouvre les proprietes de ton projet, dans l'oglet DEBUG il y a une zone de texte (Command line arguments) ou tu peux entrer les argument de la commande
Mets y uniquement les arguments sans guillemets ex: 12 25 /ADD
ensuite tu peux debugger.
pour revenir sur le "switch case"
c'est une facilité qui permet d'éviter une cascade de If then else...
example
if (chaine == "A")
{
//code pour "A"
}
else if (chaine == "B")
{
//code pour "B"
}
else if (chaine == "C")
{
//code pour "C"
}
else
{
// Code pour les autres valeurs
}
Peux se remplacer par
switch (chaine)
{
case "A":
//code pour "A"
break;
case "B":
//code pour "B"
break;
case "C":
//code pour "C"
break;
default:
// Code pour les autres valeurs
break;
}
De plus à l'execution c'est plus rapide car le complitateur ne fait qu'une seule évaluation puis is saute directement au bon endroit
alors qu'avec les if...then...else les conditions sont évaluées jusqu'à trouver la bonne.
Lameth7
Messages postés8Date d'inscriptionsamedi 8 janvier 2011StatutMembreDernière intervention30 mai 2012 16 janv. 2011 à 12:19
Bonjour,
Merci de me répondre. Je le fais bien en mode console, quand je lance ce code il me dit:
switch (args[2].ToUpper()) : indexoutofrangeexeption was unhandled.
Pourrais-je te demander également de m'expliquer le code s'il te plaît?
Lameth7
Messages postés8Date d'inscriptionsamedi 8 janvier 2011StatutMembreDernière intervention30 mai 2012 16 janv. 2011 à 12:53
Salut, je suis débutant en c#, quand tu dis qu'il manque des arguments sur la ligne de commande, tu pourrais m'expliquer s'il te plait.
J'étais absent à ce cours et j'ai demandé au prof qu'il m'envoie le code. Donc c'est de la nouvelle matière et je ne sais pas vraiment ce qui se passe.
Merci
yohan49
Messages postés380Date d'inscriptionsamedi 22 janvier 2005StatutMembreDernière intervention13 août 20117 16 janv. 2011 à 13:27
et puis on n'est quand même en janvier , ca fait 6 mois que tu code, et tu ne sais toujours pas ce que c'est que les argument de ligne de commandes, ca fait peur , soit change d'ecole, soit arrete de secher les cours
:)
Lameth7
Messages postés8Date d'inscriptionsamedi 8 janvier 2011StatutMembreDernière intervention30 mai 2012 16 janv. 2011 à 18:02
:) je ne vois pas à quel moment j'ai dit que je faisais du code depuis 6 mois (5 mois pcq'on commence les cours en septembre).
De plus, le cours de c# a commencé en décembre (je n'ai eu que 5 cours jusqu'à présent et j'ai raté le dernier, celui pour lequel je pose des questions). Ce sont des cours du soir(je travaille en journée) et nos profs ne sont en général pas des vrais professeurs, ils connaissent juste très bien leur domaine. Donc ils se contentent de montrer du code et à toi de comprendre, il ne nous a jamais parlé du terme argument ni de quoi que ce soit d'autre. Pour lui la base on doit se débrouiller seul...Donc on doit plus travailler par nous-mêmes, et pour çà il faut du temps et j'en ai pas beaucoup.
C'est pour çà que ma question est simple pour vous mais pas pour moi. Donc j'ai encore une question:
Je dois mettre le : où 10 args[0], 20 args[1] et /ADD = args[2] ou précisément s'il te plaît. Parce que je ne comprend pas vraiment (c'est la première fois que je vois un switch)
Encore merci,
Lameth
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace testing
{
class Program
{
static void Main(string[] args)
{
switch (args[2].ToUpper())
{
case "/ADD":
Console.WriteLine(
(
System.Convert.ToInt32(args[0])
+
System.Convert.ToInt32(args[1])
).ToString()
);
break;
case "/DEL":
bool b;
int a, c;
b = int.TryParse(args[0], out a);
b = int.TryParse(args[1], out c);