i
i
“ProgrammationExos” — 2015/8/12 — 14:37 — page 45 — #51 i
i
i
i
i
i
CHAPITRE 2
Approche de programmation modulaire
La conception modulaire est une technique de conception de logiciel qui s’appuie sur
la composition du logiciel en parties séparées. Dans la phase d’analyse du problème,
une analyse du découpage du problème en sous-problèmes s’impose. Cette analyse
devrait déceler la fonctionnalité d’un algorithme, ses données d’entrée, ses données en
sortie ou les données, en entrée, à modifier.
La section suivante présente les principes génériques de la modularité. Les trois
autres sections abordent la mise en place de ces principes dans le langage algorithmique,
ainsi que dans les langages C et Python.
2.1 Fonctions : paramètres et appels
La modularité fait partie des bonnes pratiques de la conception logicielle. Il s’agit
de définir des parties de code, appelées génériquement fonctions, répondant à une
fonctionnalité précise, pouvant à la fois apporter de la généricité
1
et de la réutilisation.
Une conception modulaire facilite la lisibilité du code et sa maintenance.
Les fonctions doivent pouvoir être reliées les unes aux autres. Par conséquent,
deux notions les caractérisent : le paramétrage (les fonctions peuvent prendre des
paramètres, afin d’échanger des données entre elles) et l’appel (ces fonctions doivent
pouvoir être appelées et peuvent en appeler d’autres). Afin que l’appel puisse être
réalisé, une fonction doit être déclarée.
La définition d’une fonction précise, d’un point de vue syntaxique :
–
son entête (appelée aussi dans les langages de programmation signature ou proto-
type), nécessaire pour la fonction qui l’appelle. Ceci constitue ainsi l’interfaçage
entre la fonction appelante et la fonction appelée. L’entête précise : le nom de la
fonction et les paramètres, notés par des identificateurs de paramètres séparés
par des virgules ;
–
son corps, qui comprend la partie de déclaration de variables locales et les
instructions liées au traitement.
1
La généricité (ou la programmation générique) consiste à définir des algorithmes/programmes iden-
tiques opérant sur des données différentes.