Étapes d'analyse et de résolution de problèmes
Introduction
Une bonne méthode de travail facilite grandement la tâche de programmation d’une solution informatique efficace et sans erreur, de problèmes moindrement complexes. Nous verrons dans ce qui suit les principales étapes de résolution d’un problème.
Analyse et compréhension du problème
Dans cette première étape, il est essentiel de bien lire et comprendre la demande ou le problème que vous cherchez à résoudre. Il est important de clarifier les exigences et les objectifs du problème et définir les contraintes.
Cette étape peut nécessiter des discussions avec le client (ou l'enseignant) dans le but de collecter des informations pertinentes.
Algorithmique : l'art de trouver une solution à un problème
L'algorithmique est une discipline de l'informatique qui se consacre à la conception de solutions pour des problèmes donnés. Un algorithme est une séquence d'étapes bien définies pour résoudre un problème ou accomplir une tâche spécifique.
C'est ce que nous allons voir dans ce qui suit.
Décomposition du problème en sous-problèmes
Cela implique de décomposer le problème en éléments plus petits, d'identifier les relations entre eux et de comprendre les différentes variables ou données qui influent sur le problème. L'analyse vous aidera à avoir une vue d'ensemble de la situation.
Une bonne analyse passe souvent par le découpage du problème principal en plusieurs sous-problèmes, notamment lorsque celui est long ou complexe à résoudre.
Cela simplifie le processus de résolution en le rendant plus modulaire. Chaque sous-problème peut être abordé individuellement, ce qui facilite la résolution du problème global.
Données d'entrée et de sortie (E/S ou I/O)
Identifiez pour chaque problème ou sous-problème :
Les données d'entrée nécessaires (les informations ou les données que le programme a besoin d'utiliser).
Les données de sortie attendues (l'information ou les données qu'on cherche et qui sont produites par le programme).
Il s'agit d'information pertinente qui nous aidera à définir les paramètres de fonctionnement de chaque composant de la solution.
Résolution du problème : étapes des opérations
Déterminez l'ordre dans lequel chaque problème ou sous-problème doit être résolu, en tenant compte des dépendances entre eux.
Le séquencement des opérations est essentiel pour garantir que la solution globale fonctionne correctement.
Les étapes doivent être les plus simples possibles.
La solution ne doit contenir que les étapes importantes qui contribuent à la résolution du problème.
Dans le séquencement des opérations, nous allons retrouver les traitements séquentiels, les traitements conditionnels et les traitements répétitifs.
Présentation de la solution
Une fois que vous avez trouvé des solutions aux sous-problèmes, vous devez les représenter de manière claire et précise. Cela peut inclure la création de diagrammes, de schémas, d'organigrammes ou d'autres outils de visualisation pour expliquer la logique derrière chaque solution.
Dans ce cours, nous verrons les deux méthodes suivantes :
Les organigrammes (flowchart)
Un organigramme est une représentation visuelle et schématique d'un processus ou d'une solution à un problème. Il utilise des symboles graphiques et des connexions pour représenter les étapes, les relations ou les fonctions d'un système de manière claire et concise.
Définition des symboles
Début ou fin de la solution
Une entrée ou une sortie
Une instruction (une étape du traitement)
Condition avec branchements selon si la condition est vérifiée ou non (vrai ou faux)
Connecteur montrant le sens du déroulement de la solution
Exemple : Faire deviner un nombre à un joueur
Le pseudo-code
Le pseudo-code est une description d'une solution en langage naturel de haut niveau qui représente la logique de l'algorithme sans se soucier des détails de syntaxe d'un langage de programmation particulier.
Exemple : Faire deviner un nombre à un joueur
# Choisir un nombre aléatoire à deviner (le programme)
# Tant que le joueur n'a pas trouvé le nombre aléatoire
# Le joueur doit entrer une proposition de nombre nb_propose
# Si le nombre aléatoire == nombre proposé alors
# Ecrire le message: Félicitation! Vous avez gagné!
# Sinon
# Retourner à la ligne 2
Ajoutez le mot clé TODO à chacune des étapes du pseudo code. À chaque fois que vous avez terminé avec une étape, enlevez le TODO (ou tout commentaire quand celui-ci n'est pas pertinent) pour garder un suivi des étapes faites et à faire.
Exemple avec des TODO :
# TODO: Choisir un nombre aléatoire à deviner (le programme)
# TODO: Tant que le joueur n'a pas trouvé le nombre aléatoire
# TODO: Le joueur doit entrer une proposition de nombre nb_propose
# TODO: Si le nombre aléatoire == nombre proposé alors
# TODO: Ecrire le message: Félicitation! Vous avez gagné!
# TODO: Sinon
# TODO: Retourner à la ligne 2
Implémentation
Une fois que vous avez planifié la solution, vous pouvez passer à l'implémentation. Cela consiste à écrire le code source en utilisant un langage de programmation spécifique.
Vous devez vous assurer de
suivre les bonnes pratiques de programmation,
maintenir une structure modulaire et
documenter correctement votre programme.
Tests et résultats
Les tests sont une partie cruciale du processus de développement. Ils visent à garantir que la solution fonctionne comme prévu et à identifier les éventuels problèmes ou bogues. Cette étape inclut le débogage du programme avec des outils de débogage.
Il existe plusieurs types de tests, dans ce cours nous verrons les tests suivants :
Tests manuels
Ce sont des tests réalisés manuellement sur le programme afin de vérifier le bon fonctionnement de la solution. Les tests doivent être variés et complets de façon à s'assurer que le programme fonctionne dans tous les cas possibles. Un plan de tests est requis.
Tests unitaires
Ce sont des tests automatisés qui vérifient le bon fonctionnement des composants individuels de la solution (les fonctions). Les tests doivent être variés et complets de façon à s'assurer que le programme fonctionne dans tous les cas possibles. Un plan de tests est requis.
Nous verrons les tests unitaires dans quelques semaines.
Last updated