Addressing a computational problem

Reading time5 min

En bref

Résumé de l’article

Dans cet article, vous apprendrez comment passer d’un problème, décrit en langage naturel, à un algorithme, puis à un morceau de code qui résout le problème.

Points clés

  • Pour résoudre un problème, il est préférable de le formaliser, puis de spécifier sa solution, et enfin de le coder.

  • Formaliser consiste à réexprimer le problème avec des termes et concepts plus adaptés.

  • Spécifier consiste à décrire une solution algorithmique en utilisant cette formalisation.

  • Coder traduit l’algorithme en un programme.

Contenu de l’article

1 — Vidéo

Veuillez regarder la vidéo ci-dessous. Vous pouvez aussi lire la transcription si vous préférez.

Information

Bienvenue dans cette première leçon, dans laquelle nous allons parler de la manière d’aborder un problème informatique, et des étapes nécessaires que vous devez suivre pour le résoudre.

Les trois étapes

Face à un problème informatique complexe, il est parfois tentant de commencer à programmer immédiatement.

Alors que beaucoup d’étudiants peuvent avoir l’impression de ne pas avancer s’ils n’écrivent pas des lignes et des lignes de code, ce n’est tout simplement pas vrai. Si vous vouliez construire une maison, commenceriez-vous à empiler des briques tout de suite ? Je ne pense pas.

Ainsi, chaque fois que vous êtes confronté à un problème informatique, trois étapes consécutives doivent être suivies :

  • Formaliser.
  • Spécifier.
  • Coder.

Formaliser

Formaliser signifie « exprimer un problème en utilisant une terminologie et des concepts adaptés ».

Dans ce cours, nous allons programmer une IA pour jouer à un jeu dans un labyrinthe. La première étape sera donc de comprendre comment représenter et manipuler les labyrinthes.

Pour cela, nous nous référerons à la théorie des graphes, qui est un cadre mathématique courant nous aidant à formaliser de nombreux problèmes.

Les programmeurs qui négligent cette étape de formalisation risquent de rencontrer des problèmes inattendus. Dans les cas simples, cela pourrait simplement retarder leur travail. Mais dans des cas plus graves, cela pourrait signifier que tout le travail produit jusqu’à présent est inutile, et qu’ils doivent recommencer depuis le début.

Spécifier

Une fois qu’un problème a été correctement formalisé, il est temps de spécifier une solution.

Spécifier signifie « identifier des algorithmes ou méthodes bien adaptés pour résoudre le problème formalisé ».

Par exemple, dans ce cours, l’IA que vous allez implémenter devra se déplacer dans le labyrinthe. Nous discuterons donc des méthodes pour trouver un chemin le plus court dans un graphe. Des méthodes comme celles-ci peuvent être utilisées pour identifier une solution.

La spécification est d’une importance capitale, et nous permet de faire les bons choix en tenant compte du problème à résoudre.

La spécification révèle aussi la structure globale de la solution, ce qui facilite le travail en équipe, car chaque individu sait exactement ce qu’il doit faire.

Coder

Enfin, une fois le problème spécifié, il est temps de commencer à coder. Coder doit toujours être la dernière étape dans la résolution d’un problème informatique.

Coder devrait être assez simple si les étapes de formalisation et de spécification ont été correctement réalisées, et devrait s’enchaîner naturellement après l’étape de spécification.

Mots de conclusion

Cela conclut la leçon d’aujourd’hui. Vous avez appris qu’en développement, il est préférable de ne pas commencer à coder tout de suite, mais d’abord de réfléchir un peu à la formalisation du problème, et à la spécification d’une solution.

Dans la prochaine vidéo, vous apprendrez la théorie des graphes. À bientôt !

Pour aller plus loin

Il semble que cette section soit vide !

Y a-t-il quelque chose que vous auriez aimé voir ici ? Faites-le nous savoir sur le serveur Discord ! Peut-être pourrons-nous l’ajouter rapidement. Sinon, cela nous aidera à améliorer le cours pour l’année prochaine !

Pour aller au-delà

  • Une petite présentation de Coq.

    Quelques mots sur les solutions existantes pour prouver des programmes informatiques, comme on prouverait un théorème mathématique. ```