SIG/GI Module : Développement .
Net
Langage C#
Série N°2 : Notions avancées
Exercice 1 : String & StringBuilder
1- Créer un nouveau projet
2- Insérez le code suivant dans le main puis exécuter l’application
string returnNumber = "";
for (long i = 0; i < 100000; i++)
{
returnNumber = returnNumber + [Link]();
}
[Link]("ok !!");
3- Remplacer le code précédant par le suivant puis ré-exécuter l’application
StringBuilder returnNumber = new StringBuilder();
for (int i = 0; i < 100000; i++)
{
[Link]([Link]());
}
[Link]("ok !!");
4- Quesque vous remarquez ?!
Exercice 2 : for, foreach, var (déclarations implicites)
1- Implémenter une fonction static Join simulant [Link]:
public static string Join(string[] list)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < [Link]; i++)
{
[Link](list[i]);
}
return [Link]();
}
2- Testez le fonctionnement de la méthode :
public static void Main()
{
string[] list = {"a","b","c","d"};
[Link](Join(list));
}
3- Compactez le code de la méthode Join en utilisant l’instruction foreach:
public static string Join(string[] list)
{
StringBuilder sb = new StringBuilder();
foreach (string s in list)
F. BARRAMOU P a g e 1|6
SIG/GI Module : Développement .Net
Langage C#
{
[Link](s);
}
return [Link]();
}
4- Compacter le code en entier en utilisant le mot clé var :
public static string Join(string[] list)
{
var sb = new StringBuilder();
foreach (var s in list) [Link](s);
return [Link]();
Exercice 3 : Parse
Ecrire une application console servant à calculer la valeur absolue d'un nombre reel saisie par
l’utilisateur.
Exercice 4 : String & Array
1- Créer un nouveau projet
2- Définir un string et utiliser [Link] pour séparer le string en tableau de caractères
string s = "Microsoft .NET Framework Application Development
Foundation";
string[] sa = [Link](' ');
3- Trier le tableau résultant
4- Joindre le tableau de nouveau dans un string et l’afficher
Exercice 5 : Enum
1- Dans un programme console boucler sur les jours de la semaine (en utilisant
l’énumération DayOfWeek) et afficher leurs valeurs string équivalentes
static void Main(string[] args)
{
foreach (string item in [Link](typeof(DayOfWeek)))
{
[Link](item);
}
}
2- Dans un programme console boucler sur les jours de la semaine (en utilisant
l’énumération DayOfWeek) et afficher leurs valeurs entière équivalentes
F. BARRAMOU P a g e 2|6
SIG/GI Module : Développement .Net
Langage C#
3- Ecrire un programme console qui propose à l’utilisateur de saisir un chiffre,
comme résultat il faut lui afficher le jour de la semaine correspondant (en utilisant
l’énumération DayOfWeek)
Exercice 6 : Structure
1- Ajouter un nouveau projet « Application Console »
2- Créer une nouvelle structure Personne
3- Définir 3 membres public dans la structure
public string nom;
public string prenom;
public int age;
4- Créer un constructeur pour pouvoir initialiser tous les membres
5- Dans le main créer une instance de la structure Personne et la passer comme paramètre
à la méthode [Link]
6- Exécutez votre programme. Quesque vous remarquez ?
7- Redéfinir la méthode ToString() pour afficher le nom, prénom et âge séparé par des
espaces
8- Dans le main créer une instance de la structure Personne et la passer comme paramètre
à la méthode [Link]
9- Exécutez votre programme. Quesque vous remarquez ?
10- Dans votre programme déclarer une énumération
public enum Civilite { Homme, Femme };
11- Ajouter à la structure un membre Civilité
public Civilite civilite;
12- Modifier le constructeur pour prendre en charge le nouveau membre.
13- Modifier ToString() pour prendre en charge le nouveau membre.
14- Modifier l’instanciation de Personne dans le main pour prendre en charge le nouveau
membre.
Exercice 7 : Calculatrice
1) Dans Visual Studio, créer un programme CSharpCalculatrice, en utilisant une
énumération « operation » contenant les types d'opération « plus », « moins »,
« multiplication » et « division ».
Exercice 8 : List & indexeur
1- Soit la classe suivante ListePersonne permettant d’agréger une liste de type
List<personne> :
public class personne
{
public string nom { get; set; }
F. BARRAMOU P a g e 3|6
SIG/GI Module : Développement .Net
Langage C#
public int age { get; set; }
}
public class ListePersonne
{
List<personne> _list = new List<personne>();
public void Ajouter(personne p)
{
_list.Add(p);
}
}
2- Afin de pouvoir extraire un élément de liste, ajouter un indexeur permettant d’extraire
une personne de la liste par sa position
public personne this[int index] {
get { return _list[index]; }
set { _list[index] = value; } }
3- Ajouter un indexeur permettant d’extraire une personne de la liste par le nom de la
personne
Exécutez et testez l’application (Ajouter trois personnes à Listepersonne)
Exercice 9 : Exception
1- Créer les 2 exceptions suivantes dont l’instanciation nécessite le passage du message
d’erreur en paramètre:
class GreaterThan42Exception : Exception
{
public GreaterThan42Exception(string msg)
: base(msg) { }
}
class LessThan12Exception : Exception
{
public LessThan12Exception(string msg)
: base(msg) { }
}
2- Créer la classe de test :
public class UserInputTest
{
public static void Main()
{
try
{
int x;
[Link]("Enter an integer between 12 and 42 : ");
x = [Link]([Link]());
if (x > 42)
throw new GreaterThan42Exception("Please enter a smaller number"); //home-
grown exception
else if (x < 12)
throw new LessThan12Exception("Please enter a bigger number"); // home-
grown exception
}
catch (GreaterThan42Exception g)
{
[Link]([Link]);
}
F. BARRAMOU P a g e 4|6
SIG/GI Module : Développement .Net
Langage C#
catch (LessThan12Exception l)
{
[Link]([Link]);
[Link]();
}
catch (Exception e)
{
[Link]([Link]);
[Link]();
}
}
}
3- Factoriser la répétition de [Link]() en utilisant un bloc finally
4- Quesque vous remarquez sur l’ordre des blocs catch ?
Exercice 10 : Delegate
1- Créer un nouveau projet console C#, remplacer le code de la classe [Link] par :
using System;
using [Link];
using [Link];
namespace exoDelegate
{
class Calcul
{
public static int somme(int a, int b)
{
return a + b;
}
public static int produit(int a, int b)
{
return a * b;
}
}
class Program
{
static void Main(string[] args)
{
int result = 0;
[Link]("premier nb svp:");
int n1 = Convert.ToInt32([Link]());
[Link]("deuxième nb svp:");
int n2 = Convert.ToInt32([Link]());
[Link]("quelle opération '+' ou '*' : ");
char choix = (char)[Link]();
switch (choix)
{
case '+':
{ result = [Link](n1, n2); break; }
case '*':
{ result = [Link](n1, n2); break; }
}
[Link]("resultat:" + [Link]());
}
}
}
2- Sans modifier la classe Calcul, mettre en oeuvre un delegate pour effectuer le même
traitement.
F. BARRAMOU P a g e 5|6
SIG/GI Module : Développement .Net
Langage C#
Exercice 11 : expression Lambda
Modifier le code suivant afin de permettre l’affichage des entiers multiples de 7 :
class Program
{
//methode pour filtrer une array list
static ArrayList filtre(ArrayList liste, Func<int, bool> f)
{
ArrayList uneListe = new ArrayList();
foreach (int i in liste)
//appel de la fonction delegate (f) pou chaque valeur de la liste
if (f((int)i))
[Link](i);
return uneListe;
}
// methode pour afficher les élements d'une arraylist
static void afficher(ArrayList ar)
{
foreach (int i in ar)
[Link](i);
}
static void Main(string[] args)
{
ArrayList maListe = new ArrayList();
for (int i = 1; i < 100; i++)
[Link](i);
afficher(filtre(maListe, a => a % 9 == 0));
}
}
F. BARRAMOU P a g e 6|6