|
Contrôle des Enoncés Conditionnels |
|
|
Emboîtement d'un énoncé conditionnel |
|
Considérez le programme suivant : using System;
class Program
{
static void Main()
{
int TypeOfHome;
do
{
Console.WriteLine("What Type of House Would you Like to Purchase?");
Console.WriteLine("1 - Single Family");
Console.WriteLine("2 - Town House");
Console.WriteLine("3 - Condominium");
Console.Write("Your Choice? ");
TypeOfHome = int.Parse(Console.ReadLine());
} while ((TypeOfHome < 1) || (TypeOfHome > 3));
if (TypeOfHome == 1)
Console.WriteLine("\nType of Home: Single Family");
else if (TypeOfHome == 2)
Console.WriteLine("\nType of Home: Town House");
else if (TypeOfHome == 3)
Console.WriteLine("\nType of Home: Condominium");
Console.WriteLine();
}
}
|
|
Ceci est utilisé pour demander un des numéros 1, 2, ou 3 à l'utilisateur. Aucun nombre en-dessous de 1 ou au-dessus de 3 n'est accepté. Voici un exemple d'exécution du programme : What Type of House Would you Like to Purchase? 1 - Single Family 2 - Town House 3 - Condominium Your Choice? 8 What Type of House Would you Like to Purchase? 1 - Single Family 2 - Town House 3 - Condominium Your Choice? 6 What Type of House Would you Like to Purchase? 1 - Single Family 2 - Town House 3 - Condominium Your Choice? 3 Type of Home: Condominium Press any key to continue . . . Si l'utilisateur écrit une valeur inadmissible, on pose encore simplement la question. Il serait professionnelle de faire savoir à l'utilisateur pourquoi la demande est réitérée quoique ce qui apparaît comme un nombre normal a été écrit. Pour résoudre ceci et d'autres types de problèmes, vous pouvez écrire un énoncé conditionnel à l'intérieur des autres. Ceci est désigné sous le nom de l'emboîtement. Pour créer un énoncé conditionnel à l'intérieur des autres, procédez simplement comme nous avons fait jusqu'ici pour les créer. Voici un exemple : using System;
class Program
{
static void Main()
{
int TypeOfHome;
do
{
Console.WriteLine("What Type of House Would you Like to Purchase?");
Console.WriteLine("1 - Single Family");
Console.WriteLine("2 - Town House");
Console.WriteLine("3 - Condominium");
Console.Write("Your Choice? ");
TypeOfHome = int.Parse(Console.ReadLine());
if ((TypeOfHome < 1) || (TypeOfHome > 3))
Console.WriteLine("Invalid Choice: Please try againe");
} while ((TypeOfHome < 1) || (TypeOfHome > 3));
if (TypeOfHome == 1)
Console.WriteLine("\nType of Home: Single Family");
else if (TypeOfHome == 2)
Console.WriteLine("\nType of Home: Town House");
else if (TypeOfHome == 3)
Console.WriteLine("\nType of Home: Condominium");
Console.WriteLine();
}
}
Voici un autre exemple d'exécution du programme : What Type of House Would you Like to Purchase? 1 - Single Family 2 - Town House 3 - Condominium Your Choice? 0 Invalid Choice: Please try againe What Type of House Would you Like to Purchase? 1 - Single Family 2 - Town House 3 - Condominium Your Choice? 6 Invalid Choice: Please try againe What Type of House Would you Like to Purchase? 1 - Single Family 2 - Town House 3 - Condominium Your Choice? 2 Type of Home: Town House Press any key to continue . . .
|
|
L'énoncé de rupture break est utilisé pour arrêter une boucle pour n'importe quelle raison ou condition si nécessaire. La formule de l'énoncé break est : break; Bien que fait de seulement un mot, l'énoncé break est un énoncé complet; donc, il peut (et deit toujours) rester sur sa propre ligne (ceci rend le programme facile à lire). L'énoncé break s'applique à l'énoncé conditionnel qui le précéde immédiatement; à condition que l'énoncé précédent soit applicable. L'énoncé break peut être utilisé dans une condition while, dans do… while ou dans des boucles for pour arrêter une action continue. Voici un exemple qui est utilisé pour compter les niveaux d'une maison de 1 à 12 mais on l'invite à s'arrêter à 3 : using System;
class Program
{
static void Main()
{
for (int Stories = 1; Stories <= 12; Stories++)
{
Console.WriteLine("Story {0}", Stories);
if (Stories == 3)
break;
}
Console.WriteLine();
}
}
Ceci produirait : Story 1 Story 2 Story 3 Press any key to continue . . . L'énoncé continue utilise la formule suivante : continue; En traitant une boucle, si l'énoncé trouve une valeur fausse, vous pouvez utiliser l'énoncé continue à l'intérieur des énoncés conditionnels while, do… while ou for pour ignorer l'énoncé suivant ou sauter d'une valeur booléenne fausse à la valeur valide suivante, à la différence du break qui sortirait de la boucle. Comme l'énoncé break, le mot-clé continue s'applique à l'énoncé conditionnel le plus précédent et devrait rester sur sa propre ligne. Voici un exemple d'un programme censé compter les niveaux d'une maison de 1 à 6 : using System;
class Program
{
static void Main()
{
for (int Stories = 1; Stories <= 6; Stories++)
{
if (Stories == 3)
continue;
Console.WriteLine("Story {0}", Stories);
}
Console.WriteLine();
}
}
Ceci produirait : Story 1 Story 2 Story 4 Story 5 Story 6 Press any key to continue . . . Notez que, quand le compilateur arrive à 3, il l'ignore. L'énoncé goto permet à une exécution du programme de sauter à une autre section de la fonction dans laquelle elle est utilisée. Afin d'utiliser l'énoncé goto, insérez un nom sur une section particulière de votre fonction ainsi vous pouvez vous référer à ce nom. Le nom, également appelé étiquette, est constitué d'un mot et suit les règles que nous avons étudiées à propos des noms dans C++ (le nom peut être n'importe quoi), puis suivi de deux points. Voici un exemple où le programme est censé compter les niveaux d'un bâtiment de 14 étages : using System;
class Program
{
static void Main()
{
for (int Stories = 1; Stories <= 14; Stories++)
{
if (Stories == 4)
goto CountUpTo3;
Console.WriteLine("Story {0}", Stories);
}
CountUpTo3:
Console.WriteLine("Our homes have only up to 3 levels\n");
}
}
Ceci produirait : Story 1 Story 2 Story 3 Our homes have only up to 3 levels Press any key to continue . . .
Quelques fonctions sont censées renvoyer une valeur dont le traitement est conditionnel. Le fait qu'une fonction indique le type de valeur qu'il retournerait peut ne pas être clair alors que la fonction est fermée mais une fonction définie autre que le vide void doit toujours renvoyer une valeur. Vous pouvez écrire un énoncé conditionnel, tel que if, à l'intérieur d'une fonction et renvoyez une valeur de cette condition. Voici un exemple : using namespace System;
enum HouseType { Unknown, SingleFamily, TownHouse, Condominium };
HouseType GetHouseType();
int main()
{
HouseType TypeOfHouse;
TypeOfHouse = GetHouseType();
switch(TypeOfHouse)
{
case SingleFamily:
Console.WriteLine("\nType of Home: Single Family");
break;
case TownHouse:
Console.WriteLine("\nType of Home: Town House");
break;
case Condominium:
Console.WriteLine("\nType of Home: Condominium");
break;
case Unknown:
Console.WriteLine("\nType of Home. Unknown");
break;
}
Console.WriteLine();
return 0;
}
HouseType GetHouseType()
{
int type;
Console.WriteLine("What Type of House Would you Like to Purchase?");
Console.WriteLine("1 - Single Family");
Console.WriteLine("2 - Town House");
Console.WriteLine("3 - Condominium");
Console.Write("Your Choice? ");
type = int.Parse(Console.ReadLine());
if( type == 1 )
return SingleFamily;
else if( type == 2 )
return TownHouse;
else if( type == 3 )
return Condominium;
}
Cette méthode GetHouseType() indique quand une des trois valeurs est retournée. En réalité, cette méthode pourrait obtenir une valeur autre que les trois qui sont considérés. Si l'utilisateur écrit une telle valeur, la version en cours de la méthode ne saurait pas quoi faire. Pour cette raison, le programme ne compilera pas. Dans Microsoft Visual C#, vous recevriez l'erreur suivante : 'Program.GetHouseType()': not all code paths return a value Pour résoudre ce problème, vous devez fournir un énoncé qui inclurait n'importe quelle valeur autre que ceux considérés. Vous pouvez faire ceci en écrivant un return final qui a sa propre valeur. Voici un exemple : using System;
enum HouseType { Unknown, SingleFamily, TownHouse, Condominium };
class Program
{
static HouseType GetHouseType()
{
int type;
Console.WriteLine("What Type of House Would you Like to Purchase?");
Console.WriteLine("1 - Single Family");
Console.WriteLine("2 - Town House");
Console.WriteLine("3 - Condominium");
Console.Write("Your Choice? ");
type = int.Parse(Console.ReadLine());
if( type == 1 )
return HouseType.SingleFamily;
else if( type == 2 )
return HouseType.TownHouse;
else if( type == 3 )
return HouseType.Condominium;
return HouseType.Unknown;
}
static void Main()
{
. . .
}
}
|
|
|
||
| Précédent | Copyright © 2007, Yevol | |
|
|
||