
Programmer objet .Net avec C# - ( rév. 17.10.2007 ) EXERCICES page exos - 5
Classe C# solution
Une classe C# solution du problème avec un if...else :
using System;
namespace CsExosAlgo1 {
class ApplicationValAbsolue1 {
static void Main(string[ ] args) {
double x;
System.Console.Write("Entrez un nombre x = ");
x = Double.Parse( System.Console.ReadLine( ) ) ;
if (x<0) System.Console.WriteLine("|x| = "+(-x));
else System.Console.WriteLine("|x| = "+x);
}
}
}
Explication sur l'instruction :
x = Double.Parse ( System.Console.ReadLine( ) ) ;
Le gestionnaire d'entrée sortie C# à partir de la classe Console renvoie à travers la méthode
ReadLine() une valeur saisie au clavier de type string. Il est donc obligatoire si l'on veut
récuperer un nombre réel au clavier (ici double x;) de transtyper le réel tapé correctement sous
forme de chaîne au clavier, et de le convertir en un réel de type double ici, grâce à la méthode
Parse de la classe enveloppe Double du type double.
Remarquons que cette version simple ne protège pas des erreurs de saisie. Pour être plus
robuste le programme devrait intercepter l'exception levée par une éventuelle erreur de saisie
signalée par une exception du type FormatException :
try {
x = Double.Parse( System.Console.ReadLine( ) ) ;
}
catch ( FormatException ) { //...traitement de l'erreur de saisie }
Une classe C# solution du problème avec un "... ? ... : ..." :
using System;
namespace CsExosAlgo1
{
class ApplicationValAbsolue2 {
static void Main(string[ ] args) {
double x;
System.Console.Write("Entrez un nombre x = ");
x = Double.Parse( System.Console.ReadLine( ) ) ;
System.Console.WriteLine("|x| = "+ (x < 0 ? -x : x) );
}
}
}