É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.

Exercice

Nicolas invite Rachel au cinéma. Le film est jeudi prochain à 19h30 et une entrée au prix courant coûte 12 $. S'il achète les billets en pair, il va faire une économie de 2 $ sur le total après taxe (15%), mais pour pouvoir faire ça il doit aller les acheter sur place et arriver jeudi avant 19h00 pour s'assurer qu'il reste des billets. Mon boy Nick va évidemment payer pour sa chérie. Par conscience écologique Nicolas n'a pas de voiture. Il peut y aller aujourd'hui en autobus pour s'assurer du meilleur tarif par contre son billet d'autobus lui coûtera 2,50 $. Nous sommes présentement mardi. Jeudi soir il va prendre un Über pour se rendre au cinéma en passant par la demeure de Rachel. Le taux de Über est de 0,25 $ plus cher par kilomètre avant 19h00 puisque c'est en période de pointe. Le trajet aller-retour est d'une distance de 12 kilomètres et lui prendra 20 minutes. Quel stratégie doit-il adopter pour payer le plus bas tarif et Nicolas peut-il leur acheter un popcorn ?

Ce qui est demandé

  • Lisez chacune des prochaines sections.

  • Pour chaque section, répondez aux questions en vert.

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.

Que comprenez vous du problème de l'exercice introductif ?

Nicolas va au cinéma avec sa chérie. Il a différentes options pour se rendre au cinéma avant le film afin d’économiser 2$ sur l’achat de deux billets et il doit prendre la meilleure décision qui lui fasse un maximum d’économies.

Quel est l'objectif du problème de l'exercice introductif ?
  • Quelle stratégie doit-il adopter pour payer le plus bas tarif?

  • Est-ce que Nicolas peut acheter du popcorn?

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.

Découpez le problème de l'exercice introductif en sous-problèmes.
  • Informations sur le prix du cinéma incluant l'économie : Nicolas invite Rachel au cinéma. Le film est jeudi prochain à 19h30 et une entrée au prix courant coûte 12 $. S'il achète les billets en pair, il va faire une économie de 2 $ sur le total après taxe (15%), mais pour pouvoir faire ça il doit aller les acheter sur place et arriver jeudi avant 19h00 pour s'assurer qu'il reste des billets.

  • Informations sur le prix de l'autobus (s'il y va aujourd'hui ou avant jeudi) : Mon boy Nick va évidemment payer pour sa chérie. Par conscience écologique Nicolas n'a pas de voiture. Il peut y aller aujourd'hui en autobus pour s'assurer du meilleur tarif par contre son billet d'autobus lui coûtera 2,50 $.

  • Informations sur le tarif extra du Über (pour un départ jeudi avant 19h00) : Nous sommes présentement mardi. Jeudi soir il va prendre un Über pour se rendre au cinéma en passant par la demeure de Rachel. Le taux de Über est de 0,25 $ plus cher par kilomètre avant 19h00 puisque c'est en période de pointe.

  • Informations sur le trajet aller-retour : Le trajet aller-retour est d'une distance de 12 kilomètres et lui prendra 20 minutes.

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.

Déterminez les données d'entrée et de sortie pour l'exercice introductif
  • Les entrées :

    • Nombre de personnes : 2

    • Prix du billet : 12$

    • Économie s'il achète deux billets sur place : 2$

    • Taxes: 15%

    • Prix de l'autobus : 2.5$ (avant jeudi)

    • Tarif extra du Über: 0.25$/km (jeudi avant 19h00)

    • Distance trajet aller-retour : 12km

  • Les sortie :

    • Quelle stratégie doit-il adopter pour payer le plus bas tarif?

      Est-ce moins cher.

    • Est-ce que Nicolas peut acheter du popcorn?

      • Nous n'avons pas suffisamment d'informations pour répndre à cette question.

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.

Déterminez les étapes de résolution de l'exercice introductif en utilisant vos propres mots.

Quelle stratégie doit-il adopter pour payer le plus bas tarif?

Est-ce que c'est moins cher :

  • d'aller en autobus avant jeudi et économiser 2$ sur les billets?

    • Prix de l'allée en autobus = 2.5$

  • d'aller en Über le jeudi avant 19h00 et économiser 2$ sur les billets?

    • Distance aller = distance aller-retour / 2 = 12km / 2 = 6km

    • Prix extra de l'aller avec Über = distance aller * tarif extra Über = 6km * 0.25$ = 1.5$

  • de ne pas aller d'avance pour acheter les billets sur place (ne pas économiser 2$). Pourquoi ce choix : si le coût du déplacement >= l'économie ==> On ne fera pas d'économie.

    • économie sur le billet = 2$

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

Créez l'organigramme correspondant à l'exercice introductif. Vous pouvez utiliser l'outil de votre choix (suggestion draw.io)


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

Pseudo code pour 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

Exemple avec des TODO :

Pseudo code pour faire deviner un nombre à un joueur (avec 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
Créez le pseudo-code correspondant à l'exercice introductif.

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.

Traduisez l'algorithme (organigramme ou pseudo-code) de l'exercice introductif en un programme Python.

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.

Quels sont les tests que vous devez faire pour tester votre programme ?

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