C-SHARP - 4.10 Programmation Procédurale

Cette vidéo aborde la programmation procédurale, paradigme fondamental qui consiste à découper un programme en petites parties indépendantes appelées procédures, fonctions ou méthodes (les trois termes désignent la même chose). Jusqu'ici, tout notre code tenait dans la méthode Main. Ce n'est pas viable pour de vraies applications : il faut décomposer en fonctions, chacune responsable d'une seule chose. Plus tard, nous aborderons la programmation orientée objet ; ici, concentrons-nous sur la procédurale.

Un programme qui se répète : limite du Main

Imaginons un programme qui calcule la moyenne d'un élève. On crée un tableau de notes, on les additionne dans une boucle, puis on divise par le nombre de notes :

var notes = new int[] { 10, 12, 20, 6 };
int moyenne = 0;
for (int i = 0; i < notes.Length; i++)
{
    moyenne = moyenne + notes[i];
}
moyenne = moyenne / notes.Length;
Console.WriteLine("La moyenne est de " + moyenne);     // 12

Le code est lisible pour un élève. Mais 28 élèves ? 2000 ? Impossible de copier-coller cette logique autant de fois. C'est exactement ce que résout la programmation procédurale : on isole la logique réutilisable dans une fonction qu'on appelle avec des paramètres différents.

Définir et appeler une fonction

On définit CalculerMoyenne avec un type de retour (int), un nom explicite et un paramètre (le tableau de notes). Le mot-clé static sera détaillé plus tard avec la POO :

static int CalculerMoyenne(int[] notes)
{
    int moyenne = 0;
    for (int i = 0; i < notes.Length; i++)
    {
        moyenne = moyenne + notes[i];
    }
    moyenne = moyenne / notes.Length;
    return moyenne;
}

Dans Main, on appelle la fonction en lui passant différents tableaux et on récupère le résultat :

var eleveUn = new int[] { 10, 12, 20, 6 };
int moyenne = CalculerMoyenne(eleveUn);
Console.WriteLine(moyenne);

La variable moyenne dans la fonction est locale : elle n'existe que pendant l'exécution de la fonction et ne crée pas de conflit avec une autre variable moyenne dans Main. Chaque fonction possède son propre périmètre.

Variables globales : à utiliser avec modération

C# permet aussi de déclarer des variables globales (au niveau de la classe avec static), accessibles depuis toutes les fonctions. Tentant pour éviter les return, mais c'est une mauvaise pratique. Une fonction qui dépend d'une variable globale n'est plus indépendante : dupliquer un appel écrase l'ancienne valeur et l'on perd le résultat précédent. Règle d'or : minimiser les dépendances. Une fonction propre prend ses entrées en paramètres et renvoie son résultat via return. Si une fonction ne retourne rien, son type devient void (vide). N'hésitez pas à revisionner cette vidéo : la pratique des fonctions reviendra tout au long du cours.

En résumé

La programmation procédurale est un paradigme de programmation qui consiste à diviser un programme en petites parties appelées procédures, fonctions ou méthodes, chacune responsable d'une tâche spécifique. Plutôt que d'écrire tout le code dans la méthode principale Main, on structure l'application en fonctions réutilisables qui s'adaptent à différents contextes. La leçon illustre ce concept avec un exemple pratique : créer une fonction de calcul de moyenne qui fonctionne pour n'importe quel nombre de notes.

Points clés

  • La programmation procédurale décompose les problèmes en procédures/fonctions/méthodes exécutées étape par étape
  • Diviser le code en fonctions permet d'éviter la duplication et la rendre réutilisable (ex: une fonction de calcul de moyenne adaptable à 28 ou 2000 élèves)
  • Les fonctions centralisent la logique métier plutôt que de la répéter partout dans le programme
  • À maîtriser avant d'aborder la programmation orientée objet (POO), qui se focalise sur les objets au lieu des procédures
  • Exemple : une boucle qui additionne des notes et divise par le nombre total pour obtenir la moyenne, encapsulée dans une fonction

Questions fréquentes

Pourquoi ne pas tout écrire dans la méthode Main ?

Parce qu'une application réelle comprend de nombreuses fonctionnalités et tout mettre dans Main serait une catastrophe. Les fonctions rendent le code modulaire, réutilisable et plus facile à maintenir.

Quelle est la différence entre programmation procédurale et programmation orientée objet ?

La programmation procédurale se concentre sur les procédures et fonctions qui exécutent des étapes séquentielles, tandis que la programmation orientée objet se concentre sur les objets. La leçon se focalise d'abord sur la procédurale avant d'aborder la POO.

Quel avantage apporte une fonction dans le calcul de moyenne ?

Une fonction réutilisable pour calculer une moyenne s'adapte automatiquement à n'importe quel nombre de notes, évitant de réécrire le même code 28 fois pour une classe ou 2000 fois pour un collège entier.