🎯 Les Bases du C#

Découverte du langage de programmation C#

💻 Qu'est-ce que le C# ?

🎯 Définition Fondamentale
C# (prononcé "C Sharp") est un langage de programmation orienté objet développé par Microsoft. Il fait partie de la plateforme .NET et combine la puissance du C++ avec la simplicité du Visual Basic.
🏗️
Orienté Objet
Tout est objet en C#. Le langage utilise les concepts de classes, objets, héritage et encapsulation.
🔒
Fortement Typé
Chaque variable doit avoir un type défini. Cela permet de détecter les erreurs dès la compilation.
🌐
Multiplateforme
Fonctionne sur Windows, Linux, macOS grâce à .NET Core et .NET 5+.
Géré par le CLR
Le Common Language Runtime gère automatiquement la mémoire et l'exécution.
💡 Le saviez-vous ? C# a été créé en 2000 par Anders Hejlsberg, le même développeur qui a créé Turbo Pascal et Delphi !

🔢 Types de Données Fondamentaux

🎯 Types Numériques
C# propose plusieurs types pour représenter les nombres : les entiers pour les nombres entiers et les décimaux pour les nombres à virgule.
byte
byte
8 bits - 0 à 255
byte age = 25;
int
int
32 bits - Type entier le plus courant
int score = 1500;
long
long
64 bits - Très grands nombres
long population = 7800000000L;
float
float
32 bits - ~7 chiffres de précision
float prix = 19.99f;
double
double
64 bits - ~15-17 chiffres de précision
double pi = 3.14159265359;
decimal
decimal
128 bits - Précision financière
decimal salaire = 2500.50m;
📝 Types Texte et Caractères
C# distingue les caractères individuels (char) des chaînes de caractères (string).
🔤
char
Caractère unique entre apostrophes simples.
char lettre = 'A';
📄
string
Chaîne de caractères entre guillemets doubles.
string nom = "Jean Dupont";
bool
Valeur booléenne : true ou false.
bool estMajeur = true;
💻 Exemples de Déclarations
// Types numériques
int nombre = 42;
double prix = 19.99;
decimal salaire = 2500.50m;

// Types texte
char lettre = 'A';
string message = "Bonjour le monde !";

// Type booléen
bool estVrai = true;
bool estFaux = false;

📦 Variables et Déclarations

🎯 Déclaration de Variables
En C#, chaque variable doit être déclarée avec un type avant d'être utilisée. Vous pouvez déclarer puis initialiser, ou faire les deux en même temps.
📝
Déclaration Simple
Déclarer une variable avec son type, puis l'initialiser séparément.
Déclaration + Initialisation
Déclarer et initialiser une variable en une seule instruction.
🔄
Mot-clé var
Laisser le compilateur déduire automatiquement le type.
💻 Syntaxes de Déclaration
// Déclaration puis initialisation
int nombre;
nombre = 42;

// Déclaration avec initialisation
int autreNombre = 100;

// Déclaration multiple
int a, b, c;
int x = 1, y = 2, z = 3;

// Avec le mot-clé var (type déduit)
var nom = "Alice";        // string
var age = 25;            // int
var prix = 19.99;        // double
var estActif = true;     // bool
⚠️ Attention : Avec var, l'initialisation est obligatoire car le compilateur doit pouvoir déduire le type !

🧮 Opérateurs

🎯 Opérations en C#
C# propose de nombreux opérateurs pour effectuer des calculs, des comparaisons et des opérations logiques.
+
Addition
Additionne deux nombres
-
Soustraction
Soustrait le second du premier
*
Multiplication
Multiplie deux nombres
/
Division
Divise le premier par le second
%
Modulo
Reste de la division entière
++
Incrémentation
Ajoute 1 à la variable
💻 Exemples d'Opérations Arithmétiques
int a = 10, b = 3;

int somme = a + b;        // 13
int difference = a - b;   // 7
int produit = a * b;      // 30
int quotient = a / b;     // 3 (division entière)
int reste = a % b;        // 1

// Division décimale
double quotientDecimal = (double)a / b;  // 3.333...

// Incrémentation
int compteur = 5;
compteur++;              // compteur = 6
++compteur;              // compteur = 7
==
Égal à
Compare l'égalité
!=
Différent de
Compare la différence
>
Supérieur à
Compare la supériorité
<
Inférieur à
Compare l'infériorité
&&
ET logique
Vrai si les deux sont vrais
||
OU logique
Vrai si au moins un est vrai
💻 Exemples de Comparaisons et Logique
int age = 20;
bool permis = true;

// Comparaisons
bool estMajeur = age >= 18;           // true
bool estMineur = age < 18;            // false

// Opérateurs logiques
bool peutConduire = age >= 18 && permis;  // true
bool besoinFormation = age < 18 || !permis;  // false

💬 Entrées et Sorties Console

🎯 Interaction avec l'Utilisateur
C# utilise la classe Console pour afficher des informations et récupérer les saisies de l'utilisateur.
📤
Console.WriteLine
Affiche du texte suivi d'un retour à la ligne. Méthode principale pour l'affichage.
📥
Console.ReadLine
Lit une ligne de texte saisie par l'utilisateur. Retourne toujours une chaîne.
🔄
Conversion de Types
Utilise Parse() ou TryParse() pour convertir les chaînes en nombres.
💻 Affichage avec Console.WriteLine
// Affichage simple
Console.WriteLine("Bonjour le monde !");

// Affichage de variables
string nom = "Alice";
int age = 25;
Console.WriteLine("Nom : " + nom);
Console.WriteLine("Age : " + age);

// Interpolation de chaînes (moderne)
Console.WriteLine($"Je m'appelle {nom} et j'ai {age} ans.");

// Formatage avec placeholders
Console.WriteLine("Nom : {0}, Age : {1}", nom, age);
💻 Saisie avec Console.ReadLine
// Saisie de texte
Console.Write("Entrez votre nom : ");
string nom = Console.ReadLine();

// Saisie de nombres
Console.Write("Entrez votre age : ");
string ageTexte = Console.ReadLine();
int age = int.Parse(ageTexte);

// Méthode plus sûre avec TryParse
Console.Write("Entrez un nombre : ");
string input = Console.ReadLine();
if (int.TryParse(input, out int nombre))
{
    Console.WriteLine($"Vous avez saisi : {nombre}");
}
else
{
    Console.WriteLine("Ce n'est pas un nombre valide !");
}
⚠️ Important : Console.ReadLine() retourne toujours une chaîne de caractères. Pour traiter des nombres, il faut convertir avec int.Parse() ou int.TryParse().

🎯 Programme Complet

🎯 Structure d'un Programme C#
Voici un exemple complet qui utilise tous les concepts vus dans ce cours.
💻 Calculatrice Simple
using System;

class Program
{
    static void Main()
    {
        // Affichage du titre
        Console.WriteLine("=== Calculatrice Simple ===");

        // Saisie du premier nombre
        Console.Write("Entrez le premier nombre : ");
        string input1 = Console.ReadLine();
        double nombre1 = double.Parse(input1);

        // Saisie du second nombre
        Console.Write("Entrez le second nombre : ");
        string input2 = Console.ReadLine();
        double nombre2 = double.Parse(input2);

        // Calculs
        double somme = nombre1 + nombre2;
        double difference = nombre1 - nombre2;
        double produit = nombre1 * nombre2;

        // Affichage des résultats
        Console.WriteLine($"\nRésultats :");
        Console.WriteLine($"{nombre1} + {nombre2} = {somme}");
        Console.WriteLine($"{nombre1} - {nombre2} = {difference}");
        Console.WriteLine($"{nombre1} × {nombre2} = {produit}");

        // Gestion de la division par zéro
        if (nombre2 != 0)
        {
            double quotient = nombre1 / nombre2;
            Console.WriteLine($"{nombre1} ÷ {nombre2} = {quotient:F2}");
        }
        else
        {
            Console.WriteLine("Division par zéro impossible !");
        }

        Console.WriteLine("\nAppuyez sur une touche pour quitter...");
        Console.ReadKey();
    }
}
🎯 Points clés à retenir :
Types de base : int, double, string, bool, char
Variables : Déclaration avec type explicite ou var
Opérateurs : Arithmétiques, comparaison, logiques
Console : WriteLine pour afficher, ReadLine pour saisir
Conversion : Parse() et TryParse() pour convertir les types