Solution avec l'instruction structurée if ... else
Solution avec l'instruction de condition ... ? ... : ...
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);
}
}
Source recopiable (cliquez sur le lien)
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 ereurs 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) );
}
}
Source recopiable (cliquez sur le lien)