Aller au contenu principal

Apprendre les algo – Jour 5


Introduction

Aujourd'hui, nous découvrons deux nouvelles idées très importantes :

  • la procédure
  • la fonction

Jusqu'ici, pour tester vos algorithmes à l'école par exemple, vous avez souvent pris l'habitude de tout écrire dans le programme principal, souvent appelé main() en C, en Java ou en C#.

Au début, cela semble pratique. Mais au fil du temps, le programme principal devient trop chargé :

  • on mélange tout
  • on relit moins facilement
  • on finit par ne plus bien voir le rôle de chaque partie

L'objectif du jour est justement d'apprendre à découper ce grand bloc en petits morceaux plus clairs.

L'idée générale est simple :

  • on découpe un problème en petits blocs
  • chaque bloc fait une tâche précise

Cela rend l'algorithme plus clair, plus propre et plus facile à relire.

Illustration du découpage d'un problème en petits blocs


1. Pourquoi créer une fonction ou une procédure ?

Définition

Une fonction ou une procédure sert à mettre à part un morceau d'algorithme.

Principe

Au lieu de laisser tout dans le programme principal, on extrait un petit bloc avec un rôle précis.

Cela permet de :

  • mieux lire l'algorithme
  • éviter de tout mélanger
  • réutiliser le même bloc si besoin

Exemple

Par exemple, au lieu d'avoir un gros bloc qui fait tout, on peut séparer un bloc pour afficher, un bloc pour calculer et un bloc pour vérifier.

Chaque bloc a alors une tâche claire.


2. La procédure

Définition

Une procédure est un bloc d'instructions qui fait une action.

En général, elle :

  • affiche quelque chose
  • modifie une donnée
  • exécute un traitement

Mais elle ne retourne pas de valeur.

Syntaxe

Procédure AfficherBonjour()
Début
Écrire "Bonjour"
Fin

Exemple

Procédure AfficherBonjour()
Début
Écrire "Bonjour"
Fin

AfficherBonjour()

À retenir

Une procédure agit, mais elle ne renvoie pas de résultat.


3. La fonction

Définition

Une fonction est un bloc d'instructions qui calcule puis retourne une valeur.

C'est pour cela qu'une fonction possède un type de retour.

Par exemple, une fonction peut retourner :

  • un entier
  • un réel
  • un booléen
  • un texte

Syntaxe

Fonction Addition(a, b) : entier
Début
Retourner a + b
Fin

Exemple

Fonction Addition(a, b) : entier
Début
Retourner a + b
Fin

resultat ← Addition(10, 5)
Écrire resultat

Résultat :

15

À retenir

Une fonction retourne une valeur.


4. Différence entre procédure et fonction

Principe

La différence la plus importante est la suivante :

  • la procédure fait quelque chose
  • la fonction retourne quelque chose

Illustration de la différence entre procédure et fonction

À retenir simplement

  • une procédure peut afficher ou traiter
  • une fonction retourne une valeur
  • comme elle retourne une valeur, elle a un type

Exemple 1 : procédure

Procédure AfficherNom(nom)
Début
Écrire nom
Fin

Ici, on affiche seulement. Il n'y a pas de valeur retournée.

Exemple 2 : fonction

Fonction Carre(x) : entier
Début
Retourner x * x
Fin

Ici, on calcule puis on retourne un entier.


5. Les paramètres

Définition

Les paramètres sont les valeurs qu'on envoie à une procédure ou à une fonction.

Ils permettent au bloc de travailler avec des données.

Exemple

Dans cet exemple :

Fonction Addition(a, b) : entier
Début
Retourner a + b
Fin

a et b sont des paramètres.

Quand on écrit :

resultat ← Addition(10, 5)

on envoie :

  • 10 dans a
  • 5 dans b

6. Le principe d'appel

Principe

Quand on appelle une fonction :

  • on lui donne des valeurs
  • elle travaille
  • elle retourne un résultat

Illustration d'un appel de fonction

Où peut-on appeler une fonction ?

On peut appeler une fonction :

  • dans le programme principal
  • dans une autre fonction

Exemple 1 : appel dans le programme principal

Fonction Carre(x) : entier
Début
Retourner x * x
Fin

// programme principal
Début
resultat ← Carre(4)
Écrire resultat
Fin

Exemple 2 : appel dans une autre fonction

Fonction Carre(x) : entier
Début
Retourner x * x
Fin

Fonction SommeDesCarres(a, b) : entier
Début
Retourner Carre(a) + Carre(b)
Fin

Exemple

Fonction Soustraction(a, b) : entier
Début
Retourner a - b
Fin

resultat ← Soustraction(9, 4)
Écrire resultat

Résultat :

5

7. Bon réflexe

Quand vous écrivez un algorithme, posez-vous cette question :

  • est-ce que ce bloc doit seulement faire une action ?
  • ou est-ce qu'il doit retourner une valeur ?

Si le bloc fait une action, on pense à une procédure. Si le bloc doit renvoyer un résultat, on pense à une fonction.


8. Mini résumé

  • une procédure fait une action
  • une fonction retourne une valeur
  • une fonction a donc un type de retour
  • les paramètres sont les valeurs envoyées au bloc

Prenez le temps de relire cela calmement sur papier. Si cette différence devient claire maintenant, elle vous servira partout en programmation.


9. Petit exemple en C

Juste pour faire le lien avec le langage C, voici un exemple très simple :

#include <stdio.h>

int carre(int x)
{
return x * x;
}

void afficher_resultat(int valeur)
{
printf("%d\n", valeur);
}

int main(void)
{
int resultat = carre(4);
afficher_resultat(resultat);
return 0;
}

Ici :

  • carre est une fonction
  • elle retourne un int
  • afficher_resultat est une procédure
  • elle ne retourne rien, car son type est void
  • main appelle carre(4) puis afficher_resultat(resultat)

Le principe reste le même dans les autres langages de programmation, comme C#, Java ou C++ :

  • on écrit une fonction
  • on lui passe des paramètres
  • elle retourne une valeur