Enseignement > Programmation orientée objet > C# > Travaux dirigés : programmation C#  

Programmation objet en C#

Travaux dirigés

Prise en main

  • Tester sans installer le SDK .NET :
    un éditeur et un compilateur en ligne
  • Vérifier si le SDK .NET est installé :
    Ouvrir une invite de commande et entrer l'instruction
    dotnet --version
    Si on n'obtient un message d'erreur, il faut télécharger le SDK .NET

    Créer un répertoire TD1 puis un répertoire Exercice1 (à un endroit judicieux de votre système de fichier), et se placer dans ce répertoire avec l'invite de commande et entrer l'instruction
    dotnet new console
    Constater que cette instruction a créé 2 fichiers Exercice1.csproj, Program.cs et un répertoire obj.
    Editer le fichier Exercice1.csproj avec un éditeur de texte standard (Notepad ou Notepad++ ou VSCode)
    Quelle est la forme de ce fichier ? Comment interprétez-vous son contenu ?
    Examiner aussi les fichiers texte qui ont été créés dans le répertoire obj.
    Comment interprétez-vous leur contenu ?

    Editer le fichier Program.cs avec un éditeur de code comme Notepad++ ou VSCode
    Observer la coloration syntaxique qui montre que votre éditeur a reconnu le format .cs
    Interpréter le contenu de ce fichier.

    Retourner dans l'invite de commande (vérifier que vous êtes bien resté dans le répertoire TD1) et entrer l'instruction suivante :
    dotnet run
    Qu'observez-vous ? Regarder le contenu du répertoire  Exercice1 : une série de répertoire a été créée  bin\Debug\netcoreappX.X a été créé, ainsi que des fichiers dont un fichier Exercice1.exe qui est un exécutable.

Structures de contrôles

Lire la documentation concernant les instructions classiques de logique conditionnelle et d'itérations

Exercice 1

Reprendre le fichier Program.cs. Écrire code C# permettant d'afficher la table de multiplication sous cette forme :

1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100

Exercice 2 : le partage du trésor des pirates

Créer un répertoire Exercice2, puis se placer dans ce répertoire avec l'invite de commande et créer un nouveau projet :
dotnet new console

Editer un programme C# permettant de résoudre le problème suivant :

Un équipage de 19 pirates possède un trésor constitué de pièces d'or. Ils décident de se les partager à parts égales et de donner le reste au cuisinier qui recevrait alors 3 pièces.

Mais lors du partage, les pirates se querellent et 6 d'entre eux sont tués dans l'altercation. Un nouveau partage entre les pirates survivants donnerait 4 pièces d'or au cuisinier.

Le navire pirate fait alors naufrage. Seuls le trésor, six pirates et le cuisinier sont rescapés.
Le partage ne donnerait plus aucune pièce au cuisinier qui décide d'empoisonner le reste des pirates pour garder le magot.

On cherche à déterminer le nombre de pièces d'or dans le trésor.
Il n'existe pas de méthode mathématique facile pour résoudre ce problème de congruences (il faut utiliser le théorème des reste chinois).
Mais on peut écrire un algorithme simple pour trouver la solution.


Exercice 3

Créer un répertoire Exercice3, puis se placer dans ce répertoire avec l'invite de commande et créer un nouveau projet :
dotnet new console

Editer le fichier Program.cs.

Les instructions suivantes permettent de lire un mot au clavier :
Console.Write("Entre une valeur en degré Celsius : ");
string mot = Console.ReadLine();
Etudier la documentation pour convertir le mot en nombre, puis écrire le code C# nécessaire pour convertir la valeur de degré Celsius en degré Fahrenheit


Exercice 4 : Dichotomie

Écrire une application C# qui permette de saisir un nombre au clavier puis de calculer une approximation de n


Exercice 5 : Nombre premier

Écrire une application C# qui permette de saisir un nombre entier au clavier puis de déterminer si ce nombre est premier


Utiliser une classe

Exercice 6

Examiner dans la documentation comment obtenir des nombres tirés au hasard.
Utiliser cette class Random pour écrire une application C# permettant de jouer au nombre mystère


Fonctions (méthodes statiques)

Exercice 7

Le code suivant permet de définir une fonction Max. Ecrire le code C# permettant de saisir 3 entiers au clavier et de déterminer lequel est le plus grand

public static int max(int a, int b) {
 if (a>b) return a;
 else return b;
}


Exceptions

Exercice 8

Lire la documentation sur l'utilisation des exceptions

  • On cherche à calculer an (sans utiliser les fonctions mathématiques existantes dans C#).
    Écrire une fonction puissance(a,n) où a est un nombre réel et n un nombre entier, en utilisant la méthode suivante.

On lèvera une exception de type ArgumentException si n est négatif

 


Récursivité

Exercice 9

  • Écrire une fonction puissanceRec(a,n) où a est un nombre réel et n un nombre entier, en utilisant la formule de récurrence suivante :

a0=1
an=a*an-1

  • Écrire la fonction factorielle n! où n est un nombre entier, en utilisant la défintion suivante :

  • Écrire une fonction factorielle(n) en utilisant la formule de récurrence suivante :

0!=1
n!=n*(n-1)!

  • Utiliser vos focntions puissance et exponentielle pour écrire une approximation de la fonction exponentielle en utilisant la série entière

  • Améliorer l'algorithme pour éviter de répéter les mêmes calculs dans cette fonction exponentielle

Tableaux en C#

Lire la documentation sur les tableaux

Exercice 10 : la suite de Fibonacci

Écrire un programme C# qui calcule dans un tableau les vingt premiers termes de la suite de Fibonacci et qui les affiche ensuite


Exercice 11 : Transposée d'une matrice

Écrire un programme C# qui possède

  • une fonction statique int[,] creerMatrice(int ligne, int colonne) qui crée et remplit une matrice avec des nombres entiers tirés au sort
  • une fonction statique int [,] transposeMatrice(int matrice[,])

  • une fonction statique void afficheMatrice(int matrice[,])

Exercice 12 : le triangle de Pascal

Écrire un programme C# qui calcule dans un tableau les 10 premières lignes du triangle de Pascal et qui affiche ensuite ce triangle.


Structures et redéfiniton des opérateurs en C#

Lire la documentation sur les structures, l'utilisation des propriétés et sur la surcharge d'opérateurs

Exercice 13 : une structure pour manipuler les nombres rationnels

Écrire un programme C# qui permette de manipuler des nombres rationnels (fractions) avec une surcharge des opérateurs de calcul


Énumérations

Lire la documentation sur les énumérations

Exercice 14 : jeu de cartes

Écrire un programme C# qui manipule un jeu de 32 cartes qui soit la combinaison de valeurs (7, 8, 9, 10, Valet, Dame, Roi, As) et de couleurs (Carreau, Pique, Coeur, Trefle).
Écrire le code permettant de mélanger un jeu de cartes et à le distribuer à 4 joueurs


Classes et objets

Lire la documentation sur les classes et objets

Exercice 15 : Généalogie

Écrire un programme C# qui permette de définir une structure de données récursive où une personne est caractérisée par son nom, son prénom, ses dates de naissance et de décès et par son père et sa mére qui sont aussi des personnes.


Collections

Lire la documentation sur les collections en C#

Exercice 16 : Polynômes

Écrire en C# des classes pour modéliser des monômes et des polynômes sous la forme de collection de monomes.


Interfaces graphiques

Lire la documentation sur la création d'une application Windows Form

Exercice 17 : Le jeu du nombre mystère sous forme graphique


SOLUTION DES EXERCICES


Projet

Une application Windows Fom pour lire les codes couleurs des résistances éléctriques

On peut voir sur les résistances électriques des anneaux de couleur.
La correspondance entre les chiffres et les couleurs des anneaux constitue ce qu'on appelle le code des couleurs et permet de déterminer la valeur en Ohms d'une résistance. 
En savoir plus

On ne s’intéresse dans cet exercice qu’aux résistances à 5 anneaux, les trois premiers anneaux donnent les chiffres significatifs, le quatrième donne le multiplicateur (la puissance de 10 avec laquelle il faut multiplier les chiffres significatifs). Le cinquième indique la tolérance (critère que l’on ne traitera pas dans ce projet)

Écrire une application Windows Fom qui permette de convertir dans les 2 sens la valeur d'une résistance dans sa correspondance en code couleurs

Quelques exemples de valeurs et de codes couleurs
850000000  gris – vert – noir – bleu
73100   violet – orange – marron – rouge
4720     jaune – violet – rouge - marron

Critères d'évaluation :

  • Ergonomie de l'interface graphique (choix et disposition des composants graphiques)
  • Algorithme de conversion
  • Lisibilité du code (commentaires, choix du nom des méthodes, des propriétés, des variables)
  • Traitement des erreurs (saisie d'une valeur qui ne soit pas numérique par exemple)