# Découverte du Developpement 1. Explication d un mini jeu "pierre, feuille, ciseaux" 2. Modification du mini jeu pour découvirir des concepts de développement, ça s'appelle le "refactoring" * Ajout de tests (on va trouvé des bugs !) * Ajout de classe, interface * Pourquoi utiliser les injections de dépendance. * Pourquoi utiliser le polymorphisme. 3. Ajout d un mini jeu "le pendu" (si il nous reste du temps) # Prérequis `Fonctionne sur Win, unix, Mac` * [VsCode](https://code.visualstudio.com/download) * [Sdk .net](https://dotnet.microsoft.com/fr-fr/download/dotnet/10.0) * Les Extensions C# * [.NET Install Tool](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.vscode-dotnet-runtime) * [C#](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) # Introduction aux Concepts Fondamentaux ## 📝 Les Variables : Les Boîtes de votre Programme csharp ``` csharp // Les variables sont comme des boîtes étiquetées // Boîte "age" contient le nombre 25 int age = 25; // Boîte "nom" contient du texte string nom = "Alice"; // Boîte "prix" contient un nombre décimal double prix = 19.99; // Boîte "estActif" contient VRAI ou FAUX bool estActif = true; // Boîte "lettre" contient un seul caractère char lettre = 'A'; Console.WriteLine($"Bonjour {nom}, tu as {age} ans."); // Affiche : Bonjour Alice, tu as 25 ans. ``` Pense à : Une variable = une étiquette + une valeur dans une boîte en mémoire. ___ ## 🔀 Les Conditions : Les Carrefours de votre Programme ``` csharp // IF/ELSE : Prendre des décisions comme dans la vie int temperature = 22; if (temperature > 30) { Console.WriteLine("🌡️ Il fait très chaud !"); } else if (temperature > 20) { Console.WriteLine("😊 Il fait bon !"); // Celle-ci s'exécutera } else { Console.WriteLine("🧥 Il fait frais, prends un manteau"); } // SWITCH : Pour plusieurs chemins précis string jour = "Lundi"; switch (jour) { case "Lundi": Console.WriteLine("📅 Début de semaine !"); break; case "Vendredi": Console.WriteLine("🎉 Bientôt le week-end !"); break; default: Console.WriteLine("📆 Un jour quelconque..."); break; } ``` Pense à : if = "Si... alors..." comme dans un livre dont vous êtes le héros. ___ ## 🔁 Les Boucles : Les Répétitions Intelligentes ### WHILE : "Tant que..." ``` csharp // Comme un gardien qui dit "Tant que la condition est vraie, continue !" int compteur = 0; // Tant que compteur est inférieur à 5 while (compteur < 5) { Console.WriteLine($"Tour numéro {compteur + 1}"); compteur++; // On augmente le compteur à chaque tour } // Résultat : Affiche "Tour numéro 1" à "Tour numéro 5" ``` ### FOR : Le Compteur Automatique ``` csharp // Parfait quand on sait combien de fois on veut répéter // for(initialisation; condition; incrémentation) for (int i = 0; i < 3; i++) // i part de 0, continue tant que i<3, augmente de 1 { Console.WriteLine($"Message {i + 1}"); } // Résultat : Message 1, Message 2, Message 3 ``` ___ ### 📦 Les Tableaux : Les Rangements Organisés ```csharp // Un tableau = une étagère avec plusieurs cases numérotées int[] scores = new int[3]; // Étiquette "scores" avec 3 cases scores[0] = 95; // Case numéro 0 (première case) scores[1] = 87; // Case numéro 1 scores[2] = 72; // Case numéro 2 // Plus simple : initialisation directe string[] fruits = { "Pomme", "Banane", "Orange" }; Console.WriteLine($"Mon fruit préféré : {fruits[0]}"); // Pomme Console.WriteLine($"J'ai {fruits.Length} fruits"); // 3 ``` Pense à : Les indices commencent à 0 ! Première case = [0], deuxième = [1], etc. ### 📦 Les listes : Rangements "Empilé" ```csharp // Une liste List scores = new List(); // Étiquette "scores" avec 3 cases scores.Add(95); // Element numéro 0 (première case) scores.Add(87); // Element numéro 1 scores.Add(72); // Element numéro 2 ``` ___ ## 📊 Résumé des Concepts | Concept | Analogie | Exemple C# | À retenir | | ------- | -------- | ---------- | --------- | |Variable| Une boîte étiquetée| int age = 25;| Stocke une valeur | |Condition | Un carrefour | if (x > 10) { ... } | Prend une décision | |Boucle| Un disque qui tourne | for (int i=0; i<5; i++) | Répète des actions | |Tableau| Une étagère à cases | string[] noms = {"A","B"}; | Stocke plusieurs valeurs du meme type | ## Les Méthodes * `void`: Ne retourne rien (pas de `return`) * `int`: Retourne un entier (`return` obligatoire) * `string`: Retourne une chaine (`return` obligatoire) * etc... (`return` obligatoire*) * \* sauf quelques cas. ### Exemple: ```csharp private void Write(string value){ Console.WriteLine(value); } private int Write(int value){ return value + 1; } ```