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.
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
À 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 :
10dansa5dansb
6. Le principe d'appel
Principe
Quand on appelle une fonction :
- on lui donne des valeurs
- elle travaille
- elle retourne un résultat
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 :
carreest une fonction- elle retourne un
int afficher_resultatest une procédure- elle ne retourne rien, car son type est
void mainappellecarre(4)puisafficher_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