Section courante

A propos

Section administrative du site

Découpage en fonctions

Le découpage en fonctions consiste à diviser un programme en blocs indépendants, chacun ayant :

Une fonction = une seule responsabilité.

Rôle pédagogique dans la programmation structurée

Le découpage en fonctions permet de :

Fonction vs procédure

Type Description
Fonction Retourne une valeur
Procédure / Subroutine Ne retourne rien, effectue une action

Exemple de fonction (C)

  1. int carre(int x) {
  2.     return x * x;
  3. }

Exemple de procédure (Pascal)

  1. Procedure AfficherMessage(msg:String);Begin
  2.  WriteLn(msg);
  3. End;

Principe fondamental

"Une fonction = une seule responsabilité"

Avantages du découpage en fonctions

Bonnes pratiques

Taille et complexité

Nommage

Entrées et sorties

Portée et encapsulation des données

  1. int ajouter(int a, int b) {
  2.     int resultat = a + b;
  3.     return resultat;
  4. }

resultat est locale à la fonction

Pas d'effet sur le reste du programme

Passage des paramètres

Par valeur

  1. void incrementer(int x) {
  2.     x = x + 1; /* x local */
  3. }

Par référence

  1. void incrementer(int *x) {
  2.     *x = *x + 1;
  3. }

Découpage logique

Un programme doit être découpé par fonctionnalités :

  1. main()
  2.    lireDonnees()
  3.    calculerMoyenne()
  4.    afficherResultat()

Modularité et fichiers séparés

  1. calculs.c   /* fonctions de calcul */
  2. affichage.c /* fonctions d'affichage */
  3. main.c      /* programme principal */

Exemple complet en C

Problème : calculer la moyenne de 3 nombres

  1. #include <stdio.h>
  2.  
  3. int calculerMoyenne(int a, int b, int c) {
  4.     return (a + b + c) / 3;
  5. }
  6.  
  7. void afficherMoyenne(int moyenne) {
  8.     printf("Moyenne : %d\n", moyenne);
  9. }
  10.  
  11. int main() {
  12.     int n1 = 10, n2 = 20, n3 = 30;
  13.     int moyenne;
  14.  
  15.     moyenne = calculerMoyenne(n1, n2, n3);
  16.     afficherMoyenne(moyenne);
  17.  
  18.     return 0;
  19. }

Analyse :

Gestion des erreurs dans les fonctions

  1. int diviser(int a, int b, int *resultat) {
  2.     if (b == 0) return -1;
  3.     *resultat = a / b;
  4.     return 0;
  5. }

Découpage et tests unitaires

  1. assert(calculerMoyenne(10, 20, 30) == 20);

Transition vers la POO

Résumé

Règle d'or : chaque fonction doit faire une seule chose, et bien la faire.



Dernière mise à jour : Jeudi, le 1er janvier 2026