Aller au contenu principal

Module C#.3 – Syntaxe & bases

Objectif

Maîtriser la syntaxe fondamentale de C# : structure Main, Console.WriteLine, déclaration de variables avec var, et premières instructions pour créer des programmes console.

Théorie

Main

Main est le point d'entrée de toute application C#.

Structure de base :

class Program
{
static void Main(string[] args)
{
// Code ici
}
}

Explication :

  • static : Méthode de classe (pas besoin d'instance)
  • void : Ne retourne rien
  • Main : Nom obligatoire
  • string[] args : Arguments de la ligne de commande

Arguments :

dotnet run arg1 arg2 arg3
static void Main(string[] args)
{
Console.WriteLine($"Nombre d'arguments : {args.Length}");
for (int i = 0; i < args.Length; i++)
{
Console.WriteLine($"Argument {i} : {args[i]}");
}
}

Top-level statements (C# 9.0+) :

// Program.cs simplifié (C# 9.0+)
Console.WriteLine("Bonjour");

// Plus besoin de class Program et Main explicites
// Le compilateur les génère automatiquement

Console.WriteLine

Affiche du texte dans la console.

Utilisation de base :

Console.WriteLine("Bonjour le monde");
Console.Write("Sans saut de ligne");

Interpolation de chaînes (string interpolation) :

string nom = "Jean";
int age = 30;

Console.WriteLine($"Bonjour {nom}"); // Bonjour Jean
Console.WriteLine($"Bonjour {nom.ToUpper()}"); // Bonjour JEAN
Console.WriteLine($"{nom} a {age} ans"); // Jean a 30 ans
Console.WriteLine($"Dans 10 ans, {nom} aura {age + 10} ans");

Formatage avec placeholders :

string nom = "Jean";
int age = 30;

Console.WriteLine("{0} a {1} ans", nom, age);
Console.WriteLine("{0} a {1} ans et habite à {2}", nom, age, "Paris");

Formatage numérique :

double prix = 19.99;
Console.WriteLine($"Prix : {prix:C}"); // Prix : 19,99 € (format monétaire)
Console.WriteLine($"Prix : {prix:F2}"); // Prix : 19.99 (2 décimales)
Console.WriteLine($"Pourcentage : {0.15:P}"); // Pourcentage : 15,00 %

Lire depuis la console :

Console.Write("Entrez votre nom : ");
string nom = Console.ReadLine();

Console.Write("Entrez votre âge : ");
string ageStr = Console.ReadLine();
int age = int.Parse(ageStr);

Gestion d'erreurs de lecture :

Console.Write("Entrez un nombre : ");
string input = Console.ReadLine();

if (int.TryParse(input, out int nombre))
{
Console.WriteLine($"Nombre : {nombre}");
}
else
{
Console.WriteLine("Nombre invalide");
}

Variables

Déclaration avec type explicite

int age = 25;
string nom = "Jean";
double prix = 19.99;
bool estActif = true;
char lettre = 'A';

var (inférence de type)

C# infère automatiquement le type (depuis C# 3.0).

var age = 25;        // Type inféré : int
var nom = "Jean"; // Type inféré : string
var prix = 19.99; // Type inféré : double
var estActif = true; // Type inféré : bool

// Une fois déclaré, le type est fixe
var nombre = 42;
// nombre = "texte"; // Erreur : ne peut pas changer de type

Quand utiliser var :

  • Type évident depuis la valeur
  • Avec LINQ (types complexes)
  • Code plus lisible

Quand ne pas utiliser var :

  • Type non évident
  • Pour la clarté pédagogique
  • Quand le type est important pour la compréhension

Constantes

const : Constante de compilation

const int MAX_USERS = 100;
const string SITE_NAME = "Mon Site";
const double PI = 3.14159;

// MAX_USERS = 200; // Erreur : ne peut pas modifier

readonly : Constante d'instance (peut être initialisée dans le constructeur)

class MaClasse
{
private readonly int valeur;

public MaClasse(int v)
{
valeur = v; // OK : initialisation dans constructeur
// valeur = 10; // Erreur : déjà initialisée
}
}

Règles de nommage

Variables et méthodes : camelCase

int nomUtilisateur = 30;
void calculerMoyenne() {}

Classes : PascalCase

class Personne {}
class GestionnaireUtilisateurs {}

Constantes : UPPER_SNAKE_CASE

const int MAX_SIZE = 100;
const string API_URL = "https://api.exemple.com";

Interfaces : I + PascalCase

interface IAffichable {}

Commentaires

// Commentaire sur une ligne

/* Commentaire
sur plusieurs
lignes */

/// Documentation XML (IntelliSense)
/// <summary>
/// Calcule la moyenne de deux nombres
/// </summary>
/// <param name="a">Premier nombre</param>
/// <param name="b">Deuxième nombre</param>
/// <returns>La moyenne des deux nombres</returns>
double Moyenne(double a, double b)
{
return (a + b) / 2;
}

Exercice

  1. Programme de base

    • Créez un programme qui affiche votre nom
    • Utilisez Console.WriteLine avec interpolation
    • Testez différents formats
  2. Variables

    • Déclarez des variables de tous les types primitifs
    • Utilisez var pour certaines
    • Affichez leurs valeurs
  3. Entrée utilisateur

    • Demandez le nom à l'utilisateur
    • Lisez avec Console.ReadLine
    • Validez avec TryParse
    • Affichez un message personnalisé
  4. Constantes

    • Définissez des constantes const
    • Utilisez readonly dans une classe
    • Testez qu'elles ne peuvent pas être modifiées
  5. Formatage

    • Utilisez l'interpolation de chaînes
    • Formatez des nombres (monétaire, décimales)
    • Créez des messages complexes

Quiz

  1. Quel est le point d'entrée en C# ?

    • Start()
    • Main()
    • Run()
  2. Comment afficher avec saut de ligne ?

    • Console.Write()
    • Console.WriteLine()
    • Console.Print()
  3. Que fait var en C# ?

    • Crée une variable globale
    • Infère le type automatiquement
    • Rend la variable constante
  4. Comment lire depuis la console ?

    • Console.Read()
    • Console.ReadLine()
    • Console.Input()
  5. Comment déclarer une constante ?

    • var CONST = "valeur"
    • const string CONST = "valeur"
    • final string CONST = "valeur"

Mini défi

Mission : Créer une application console interactive

Créez un programme Interaction.cs qui :

  1. Demande des informations

    • Demandez le nom à l'utilisateur
    • Demandez l'âge (avec validation)
    • Demandez la ville
  2. Affiche un message personnalisé

    • Utilisez l'interpolation de chaînes
    • Formatez avec Console.WriteLine
    • Ajoutez des sauts de ligne
  3. Calculs

    • Calculez l'année de naissance
    • Affichez avec formatage
  4. Constantes

    • Utilisez const pour des valeurs fixes
    • Utilisez readonly si dans une classe
    • Affichez les constantes

Exemple de sortie :

========================================
INFORMATIONS PERSONNELLES
========================================
Nom : Jean
Age : 30 ans
Ville : Paris
Année naiss. : 1996
========================================

Critères :

  • ✅ Utilisation correcte de Main()
  • ✅ Variables bien typées (var où approprié)
  • ✅ Interpolation de chaînes
  • ✅ Validation des entrées (TryParse)
  • ✅ Code propre et commenté
  • ✅ Formatage clair

Objectif : Maîtriser la syntaxe de base de C# et créer des programmes console interactifs.


Validation : Vous pouvez passer au module suivant quand vous maîtrisez Main(), Console.WriteLine, variables et pouvez créer des programmes console simples.