Comment devenir un développeur C# grâce à la pratique

Mise en situation
Le meilleur moyen d’apprendre et d’acquérir une compétence est la pratique. C’est ce que j’ai retenu en suivant quelques youtubeurs C# sur la roadmap pour obtenir son premier emploi dans un langage ou une technologie. La plupart des « bons » recruteurs ne s’attendent pas à ce qu’un dev junior ait un CV impressionnant listant plus de 5 langages backend, 2 mobiles et 4 frontend. De même, ils ne s’attendent pas forcément à voir des projets de e-commerce complets, de blogs, de messagerie (si vous le faites, c’est très bien).
Ils s’attendent à voir un langage bien maîtrisé à travers des projets pratiques couvrant la complexité du langage et les concepts clés de développement.
Dans le cas de la roadmap pour un développeur junior C# (entre 1 mois et 3 ans d’expérience sur un projet), il faudrait à la fin des 3 ans:
Maîtriser les concepts essentiels du langage ;
Savoir utiliser les principes de base de la POO ;
Connaître un langage de base de données ;
Faire du JS pour le front ;
Connaître les principes SOLID et les appliquer ;
Commencer par s’intéresser aux concepts de TDD et DDD.
Tout ceci est bien beau, mais la réelle question est comment décrocher un job comme développeur junior C# ? Une des solutions serait d'apprendre, de pratiquer tout en publiant ses travaux sur GitHub, son portfolio, et surtout, de trouver et résoudre un petit problème qu'on rencontre en tant que dev avec ce même langage de programmation afin de retenir l'attention des recruteurs.
Ma proposition ? Une TodoApp évolutive
Aujourd'hui, je souhaite commencer avec vous une petite application console pour maîtriser les concepts essentiels du langage C# dans sa version 13. J'avoue que je n'ai pas une liste exhaustive des étapes de la roadmap, mais le plus important est de poser le premier pas. On va considérer la TodoApp comme notre plateforme de jeu que nous allons améliorer et étoffer au fur et à mesure.
Aujourd'hui, nous allons explorer les concepts suivants :
Les variables et types de données ;
Le tableau de chaîne de caractères ;
Les boucles while et for;
La condition if ;
La méthode d’affichage Console.WriteLine() ;
La méthode de lecture Console.ReadLine().
Les fonctionnalités que nous aurons à implémenter permettront :
D’ajouter une tâche ;
D’afficher les tâches ;
De marquer une tâche comme terminée ;
De quitter l'application.
Implémentation
J’aime bien l’éditeur de code vscode, mais je préfère utiliser Microsoft Visual Studio pour des raisons pratiques. Il est fourni par Microsoft spécifiquement pour le développement en C# et .Net, offrant un ensemble complet d’outils. Vous trouverez une multitude d’articles pour vous aider à installer l’IDE.
Prêt(e)s ? embarquons !
Pseudocode
Avant de commencer à coder en C#, nous allons décrire les étapes d’implémentation de notre algorithme en pseudocode :
Début
Initialiser un tableau de tâches vide
Initialiser une boucle infinie
Afficher le menu :
1. Ajouter une tâche
2. Afficher les tâches
3. Marquer une tâche comme terminée
4. Quitter
Demander à l'utilisateur de faire un choix
Si choix == 1 :
Demander le nom de la nouvelle tâche
Ajouter la tâche au tableau avec le statut "Non terminée"
Si choix == 2 :
Si le tableau est vide :
Afficher "Pas de tâches disponibles"
Sinon :
Parcourir et afficher chaque tâche avec son statut
Si choix == 3 :
Demander à l'utilisateur de saisir l'index de la tâche à terminer
Si l'index est valide :
Marquer la tâche comme "Terminée"
Sinon :
Afficher un message d'erreur
Si choix == 4 :
Quitter la boucle
Fin
Explorons les concepts
Nous allons créer un nouveau projet que nous nommerons KinopioConsole.
Pour ceux qui connaissent la référence, je l’ai peut-être mentionnée, Kinopio est le nom japonais de Toad, un personnage de Mario. Je l’aime bien parce que, bien qu’il occupe un rôle secondaire, il est indispensable car il assiste le personnage principal, il aide à organiser et suivre les parties, un peu comme une TodoApp.
Kinopio sera donc le projet qui nous aidera à grandir tout au long de notre parcours dans le monde du développement.
Les Types de données et variables en C# : Stocker les informations sur les tâches
Les types de données les plus courants sont int, long, float, double, bool, char et string. Pour cette première approche, nous utiliserons string, bool et int. Voici donc leurs spécifications que vous devez connaître :
Types de données | Taille | Description |
int | 4 bits | Nombres entiers de -2.147.483.648 à 2.147.483.647 |
bool | 1 bit | true pour la valeur positive ou false pour la valeur négative |
string | 2 bits par caractère | Séquence de caractères |
Les variables nous permettent de stocker les valeurs de ces types de données dans la mémoire de l'ordinateur. Pour déclarer ou créer une variable, nous utilisons cette syntaxe en C# :
Type variableName = value;
Note: le camelCase est la convention pour le nommage des variables locales en C#.
Le tableau de chaîne de caractères : Stocker plusieurs tâches
Les tableaux permettent d’enregistrer plusieurs valeurs dans une seule variable, au lieu de les déclarer dans des variables séparées.
Dans notre code, nous avons besoin de créer deux tableaux : l’un pouvant contenir 10 tâches et l’autre pouvant contenir les statuts des 10 potentielles tâches.
Pour déclarer une variable en C#, voici la syntaxe de base :
DataType[] variableName;
Pour déclarer une variable en l’initialisant :
DataType[] variableName = new DataType[length];
Exemple de code c# :
string[] tasks = new string[10];
bool[] tasksStatus = new bool[10];
Les boucles for et while
Les boucles nous permettront de parcourir les éléments du tableau et de répéter une action comme l’affichage des tâches.
Voici leurs syntaxes en C# :
- Boucle for
for (déclaration 1; déclaration 2; déclaration 3)
{
// code à exécuter
}
déclaration 1 : permet de déclarer une variable de type entier qui marque le point de départ du nombre de tours de la boucle. Elle s’exécute une seule fois.
déclaration 2 : définit la condition sous laquelle la boucle doit continuer à s’exécuter.
déclaration 3 : elle s’exécute à chaque tour pour mettre à jour l’entier de la déclaration 1.
- Boucle while
while (condition)
{
// code à exécuter
}
« condition » est la condition sous laquelle le code doit continuer à s'exécuter. Dans notre cas, elle permettra d'exécuter notre code jusqu'au choix de l'utilisateur de quitter le programme.
La condition if pour faire des choix
La condition if nous permettra de prendre des décisions dans notre programme, comme savoir quoi faire en fonction du choix de l’utilisateur.
Exemple d’utilisation dans notre code :
if (choice == "1")
{
// Ajouter une tâche
}
else if (choice == "2")
{
// Quitter
}
else
{
//afficher un message
}
Capturer et afficher des informations
Le langage C# nous offre la méthode Console.ReadLine pour récupérer ce que l’utilisateur saisit au clavier et la méthode Console.WriteLine pour lui afficher un texte.
Voici quelques exemples de leur utilisation :
Console.WriteLine("\n1. Ajouter une tâche\n2. Afficher les tâches\n3. Marquer une tâche comme terminée\n4. Quitter");
string choice = Console.ReadLine();
Avec ces différents concepts, nous allons présenter le code complet. N'hésitez pas à essayer par vous-même et prenez votre temps pour comprendre.
Code complet
string[] tasks = new string[10];
bool[] tasksStatus = new bool[10]; // true = terminée, false = non terminée
bool running = true;
while (running)
{
Console.WriteLine("\n1. Ajouter une tâche\n2. Afficher les tâches\n3. Marquer une tâche comme terminée\n4. Quitter\n");
string choice = Console.ReadLine();
if (choice == "1")
{
Console.WriteLine("Entrez le nom de la nouvelle tâche :");
string newTask = Console.ReadLine();
// Ajouter la nouvelle tâche au tableau
for (int i = 0; i < 10; i++)
{
if (tasks[i] == null)
{
tasks[i] = newTask;
tasksStatus[i] = false; // Tâche non terminée
break;
}
}
Console.WriteLine("info : Tâche ajoutée avec succès");
}
else if (choice == "2")
{
Console.WriteLine("\nListe des tâches :");
for (int i = 0; i < 10; i++)
{
if (tasks[i] != null)
{
Console.WriteLine((i + 1) + ". " + tasks[i] + " - " + (tasksStatus[i] ? "Terminée" : "Non terminée"));
}
}
}
else if (choice == "3")
{
Console.WriteLine("Entrez le numéro de la tâche à marquer comme terminée :");
int taskNumber = int.Parse(Console.ReadLine()) - 1;
if (tasks[taskNumber] != null)
{
tasksStatus[taskNumber] = true; // Marque la tâche comme terminée
Console.WriteLine("Tâche " + (taskNumber + 1) + " marquée comme terminée.");
}
}
else if (choice == "4")
{
running = false;
Console.WriteLine("Application terminée.");
}
else
{
Console.WriteLine("Choix invalide. Veuillez réessayer.");
}
}
Prochaines étapes
Cette première version de Kinopio est assez simple, mais son but premier est atteint : nous permettre de connaître quelques concepts basiques.
Je vous propose, dans les prochaines versions, de lui permettre de nous proposer d’ajouter des tâches pour apprendre à programmer en C#. Il pourrait nous aider à maîtriser des algorithmes populaires (fizzbuzz, palindrome, tri à bulles, recherche dichotomique, etc.), enregistrer notre progression sur la roadmap jusqu’à avoir un assez bon niveau. On pourrait aussi imaginer une évaluation par intelligence artificielle pour permettre à Kinopio de mieux nous assister, nous corriger et nous suivre.
Nous aurons forcément à migrer vers d'autres types de projets Dotnet. Les possibilités sont infinies, et j’ai hâte de faire de Kinopio, avec vous, une application extraordinaire et réellement utile tout en appliquant les bonnes règles de programmation.
La section des commentaires reste ouverte pour vos apports ou suggestions.
Made with ❤️ by me
Subscribe to my newsletter
Read articles from Lucas Kouami directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Lucas Kouami
Lucas Kouami
I am a software developer from Togo.