Aperçu de la structure

La pensée informatique : de l’intuition à la précision des algorithmes

Du regard à la procédure : 17 exemples sur les chiffres, trois applications résolues et une méthode pour concevoir, vérifier et réutiliser les algorithmes.

Section: Pensée informatique Mis à jour:
Articles /pensee-informatique-intuition-algorithmes
Des blocs de bois épars deviennent un parcours ordonné de pièces reliées, près d’une loupe et d’un crayon
De l’intuition à une procédure : organiser, relier et vérifier les étapes.

18 min

Introduction : le résultat n’est pas encore la procédure

On associe souvent la pensée informatique à la programmation. Elle désigne en réalité la capacité d’aborder un problème, de l’analyser et de construire une suite d’instructions précises pour le résoudre. Nous utilisons nos yeux, notre expérience et des connaissances implicites ; une procédure exécutable doit au contraire expliciter les opérations à effectuer.

Il n’existe pas nécessairement une seule méthode : plusieurs représentations des données et plusieurs algorithmes sont souvent possibles. Nous partirons ici d’opérations sur les chiffres qui semblent immédiates, les transformerons en procédures arithmétiques, puis appliquerons la même démarche à des problèmes concrets. Aucune connaissance d’un langage de programmation n’est nécessaire.

Avant de commencer : données, DIV, MOD et affectations

Sauf indication contraire, nous travaillons avec des entiers positifs ou nuls écrits en base dix. Un nombre et le texte qui le représente sont deux choses différentes : comme nombre, 05 vaut 5 ; comme texte, « 05 » conserve deux caractères. Si les zéros initiaux comptent, il faut le préciser avant de choisir l’algorithme.

DIV désigne le quotient entier et MOD le reste. La division de 1234 par 100 donne le quotient 12 et le reste 34 : ce ne sont pas deux règles à mémoriser sans comprendre, mais deux informations issues de la même division.

1234 = 12 × 100 + 34
0 ≤ 34 < 100

Dans les blocs d’instructions, le signe = signifie « affecter à la variable la valeur calculée à droite ». Ainsi S = S + C met S à jour : ce n’est pas une équation à résoudre. Les lignes s’exécutent de haut en bas et l’indentation indique les instructions à répéter. Dans une condition, en revanche, = compare deux valeurs sans les modifier.

Il s’agit de procédures arithmétiques : nous ne demandons pas à la machine de reconnaître une photographie des chiffres. On pourrait aussi utiliser des chaînes de caractères ou d’autres méthodes ; l’essentiel est d’indiquer les données et les opérations disponibles.

Première partie — Sept exemples fondamentaux

Les tableaux comparent une solution intuitive, souvent visuelle, à une procédure explicite et exécutable. Ces capacités ne sont pas exclusives : une personne peut aussi exécuter l’algorithme et un même problème peut admettre plusieurs algorithmes valides.

1. Séparer les deux derniers chiffres

Problème. Séparer 1234 en la partie qui précède les deux derniers chiffres et ces deux derniers chiffres.

Solution humaineSolution machine

Regardons l’écriture et imaginons une coupure avant les deux derniers chiffres : 12 | 34.

Calculer le quotient entier de la division par 100 pour obtenir A, et le reste pour obtenir B. La reconnaissance visuelle des chiffres n’est pas nécessaire.

A = 1234 DIV 100 = 12
B = 1234 MOD 100 = 34

En général : A = N DIV 100; B = N MOD 100. Avec 987654, on obtient 9876 et 54. Avec 1205, on obtient 12 et 5 : pour afficher 12 | 05, il faut formater B sur deux chiffres ou le traiter comme du texte. Si N est inférieur à 100, A vaut 0.

2. Échanger deux variables

Problème. Échanger A = 5 et B = 8 pour obtenir A = 8 et B = 5.

Solution humaineSolution machine

Imaginons deux cartons portant 5 et 8 et échangeons leur place. Les deux valeurs restent disponibles.

Les affectations sont successives : A = B effacerait à elle seule l’ancien A. Conserver d’abord A dans la variable temporaire T, puis effectuer l’échange.

T = A
A = B
B = T

Après T = A, nous avons T = 5, A = 5, B = 8. Après A = B, nous avons T = 5, A = 8, B = 8. Enfin B = T produit A = 8, B = 5. La variable temporaire conserve l’information nécessaire : un algorithme doit suivre l’état de la mémoire à chaque étape.

3. Trouver le plus grand de trois nombres

Problème. Trouver le plus grand de 17, 42 et 29.

Solution humaineSolution machine

Comparons mentalement les trois valeurs et reconnaissons 42 comme la plus grande.

Conserver la première valeur dans M. Comparer les autres à M une par une et ne le mettre à jour que si une valeur supérieure est trouvée.

M = 17
Si 42 > M, alors M = 42
Si 29 > M, alors M = 29
Résultat: 42

La première comparaison met M à 42 ; la seconde ne le modifie pas, car 29 n’est pas supérieur à 42. Il n’est pas nécessaire de prévoir chaque ordre possible séparément. Pour une liste non vide, on initialise M avec le premier élément et on le compare successivement à tous les autres.

4. Compter les chiffres

Problème. Déterminer le nombre de chiffres de 72845.

Solution humaineSolution machine

Lisons l’écriture et comptons cinq positions : 7, 2, 8, 4, 5.

Diviser successivement N par 10 avec une division entière et compter les divisions nécessaires pour atteindre zéro.

72845 → 7284 → 728 → 72 → 7 → 0
Nombre de divisions: 5

Il y a cinq divisions. Il faut toutefois prévoir que zéro possède un chiffre : une boucle qui démarre uniquement lorsque N > 0 en compterait zéro à elle seule. Pour les nombres négatifs, on peut d’abord prendre la valeur absolue, sans compter le signe moins comme un chiffre.

5. Inverser les chiffres

Problème. Transformer 1234 en 4321 sans traiter le nombre comme une chaîne de caractères.

Solution humaineSolution machine

Lisons les chiffres de droite à gauche : 4, 3, 2, 1, ce qui donne 4321.

Extraire le dernier chiffre C avec MOD 10, l’ajouter à R après avoir multiplié R par 10, puis supprimer ce chiffre de N avec DIV 10. Répéter jusqu’à ce que N soit nul.

N = 1234; R = 0
Tant que N > 0:
    C = N MOD 10
    R = R × 10 + C
    N = N DIV 10
ÉtapeChiffre extraitRN après DIV 10
144123
234312
324321
4143210

Les valeurs successives de R sont 4, 43, 432, 4321. Chaque division entière raccourcit N d’un chiffre : nous savons ainsi pourquoi la boucle se termine. Les zéros finaux du nombre initial ne restent pas visibles dans le nombre inversé : 120 devient 21, et non une écriture sur trois chiffres.

6. Reconnaître un palindrome

Problème. Vérifier si 12321 est un palindrome.

Solution humaineSolution machine

Lisons de gauche à droite et de droite à gauche : nous remarquons la même séquence, 12321.

Conserver l’original, calculer R avec l’algorithme d’inversion et comparer les deux valeurs. Elles sont égales : le nombre est un palindrome.

Original = 12321
R = 12321

12321 est égal à son inverse : c’est un palindrome. 1234 et 4321 diffèrent : 1234 n’en est pas un. Le nombre 0 est un palindrome. Voilà l’intérêt de la réutilisation : un algorithme existant résout un autre problème. Conserver l’original est indispensable, car la boucle d’inversion consomme N.

7. Les principes de la pensée informatique

Les exemples font apparaître six outils qui travaillent ensemble, et non une suite rigide à appliquer mécaniquement.

  • Décomposition : diviser le problème en parties ; pour reconnaître un palindrome, séparer l’inversion et la comparaison.
  • Abstraction : conserver les caractéristiques pertinentes ; pour trouver le maximum, les valeurs comptent, pas la couleur de leur écriture.
  • Reconnaissance de motifs : remarquer que MOD 10 isole un chiffre et que DIV 10 permet de passer au suivant.
  • Généralisation : transformer le calcul sur 1234 en une méthode valable pour N.
  • Conception algorithmique : préciser les instructions, les conditions, les répétitions et l’arrêt.
  • Vérification : essayer des cas normaux et des cas limites, en cherchant aussi des situations susceptibles de réfuter la méthode.

La pensée informatique ne signifie pas simplement « penser comme une machine » : c’est formuler des solutions exécutables systématiquement, explicables, vérifiables et réutilisables.

Deuxième partie — Dix problèmes résolus avec les yeux et les mathématiques

Dans les dix exemples suivants, nous utilisons surtout des entiers positifs ou nuls. Le but est d’obtenir par des opérations explicites ce que nous reconnaissons d’un coup d’œil.

8. Extraire le dernier chiffre

Problème. Extraire le dernier chiffre de 5837.

Solution humaineSolution machine

Regardons la position la plus à droite et lisons 7.

Calculer le reste de la division par 10 : ce reste est le dernier chiffre.

5837 MOD 10 = 7

En général, ultima = N MOD 10. Le reste est toujours un chiffre entre 0 et 9. Avec N = 0, le résultat est également 0.

9. Supprimer le dernier chiffre

Problème. Supprimer le dernier chiffre de 5837.

Solution humaineSolution machine

Cachons mentalement le 7 final et lisons 583.

Calculer le quotient entier de la division par 10, sans conserver le reste.

5837 DIV 10 = 583

Répéter l’opération supprime plusieurs chiffres. Un nombre à un seul chiffre devient 0.

10. Extraire les trois derniers chiffres

Problème. Extraire les trois derniers chiffres de 123456.

Solution humaineSolution machine

Isolons visuellement les trois dernières positions : 456.

Calculer le reste de la division par 1000. Il contient la valeur des trois derniers chiffres.

123456 MOD 1000 = 456

La même idée s’applique aux k derniers chiffres en utilisant MOD 10^k, avec k entier strictement positif. Si l’on demande exactement trois positions, un reste de 7 doit s’afficher 007 : la valeur numérique et sa mise en forme restent deux problèmes distincts.

11. Séparer un nombre en groupes de trois chiffres

Problème. Séparer 1234567 en groupes de trois chiffres.

Solution humaineSolution machine

Partons de la droite et regroupons les chiffres : 1 | 234 | 567.

Extraire un groupe avec MOD 1000 et continuer sur le quotient obtenu avec DIV 1000. Conserver les groupes et les afficher dans l’ordre inverse de l’extraction.

1234567 MOD 1000 = 567
1234567 DIV 1000 = 1234
1234 MOD 1000 = 234
1234 DIV 1000 = 1

On obtient d’abord 567, puis 234, enfin 1 : pour afficher le nombre initial, il faut lire les groupes dans l’ordre inverse de leur extraction. On répète jusqu’à ce que le quotient soit nul ; le nombre 0 nécessite un seul groupe 0. Chaque groupe suivant le premier dans l’écriture finale doit comporter trois chiffres : 1002003 devient 1 | 002 | 003.

12. Déterminer si un nombre est pair

Problème. Déterminer si 2468 est pair.

Solution humaineSolution machine

Reconnaissons 8 comme un dernier chiffre pair et concluons que le nombre est pair.

Vérifier si le reste de la division du nombre par 2 est nul.

2468 MOD 2 = 0

Si le reste est nul, le nombre est pair ; sinon, il est impair. Zéro est également pair, car sa division par 2 donne un reste nul.

13. Additionner les chiffres

Problème. Calculer la somme des chiffres de 472.

Solution humaineSolution machine

Lisons les chiffres et additionnons 4 + 7 + 2 = 13.

Partir de S = 0 ; extraire chaque dernier chiffre avec MOD 10, l’ajouter à S et poursuivre avec DIV 10.

N = 472; S = 0
Tant que N > 0:
    S = S + (N MOD 10)
    N = N DIV 10
Résultat: S = 13

Les chiffres arrivent dans l’ordre 2, 7, 4 ; S devient 2, puis 9, puis 13. L’ordre ne change pas la somme. Avec N = 0, S reste bien égal à 0.

14. Trouver le chiffre des dizaines

Problème. Trouver le chiffre des dizaines de 5837.

Solution humaineSolution machine

Repérons la deuxième position en partant de la droite et lisons 3.

Supprimer les unités avec DIV 10, puis isoler le dernier chiffre restant avec MOD 10.

(5837 DIV 10) MOD 10 = 3

La première étape donne 583 et la seconde 3. Si N ne possède qu’un chiffre, son chiffre des dizaines est 0.

15. Comparer les premiers chiffres de deux nombres

Problème. Vérifier si 7824 et 7910 commencent par le même chiffre.

Solution humaineSolution machine

Regardons la première position de chacun : nous lisons 7 et 7, donc elles coïncident.

Diviser chaque nombre par 10 avec une division entière jusqu’à ne conserver qu’un chiffre, puis comparer les résultats.

7824 → 782 → 78 → 7; 7910 → 791 → 79 → 7. Les premiers chiffres sont identiques. La méthode fonctionne aussi pour des longueurs différentes : 7824 et 73 commencent tous deux par 7. Si la donnée est 0, le premier chiffre est 0 et aucune division n’est nécessaire.

16. Compter les occurrences d’un chiffre

Problème. Compter les occurrences du chiffre 7 dans 727272.

Solution humaineSolution machine

Parcourons l’écriture et marquons chaque 7 : nous en trouvons trois.

Extraire un chiffre à la fois avec MOD 10, augmenter CONT uniquement si ce chiffre est 7 et poursuivre avec DIV 10.

N = 727272; CONT = 0
Tant que N > 0:
    Si N MOD 10 = 7, alors CONT = CONT + 1
    N = N DIV 10
Résultat: CONT = 3

Pour compter un chiffre choisi, on remplace 7 par un paramètre C compris entre 0 et 9. Attention au nombre 0 : le chiffre 0 y apparaît une fois, et non zéro. On le traite séparément avant la boucle ; pour tout autre chiffre, le compte dans 0 est nul.

17. Vérifier que tous les chiffres sont identiques

Problème. Vérifier si tous les chiffres sont identiques dans 5555 et dans 5553.

Solution humaineSolution machine

Reconnaissons quatre 5 dans le premier nombre ; dans le second, remarquons le 3 différent des autres.

Conserver le premier chiffre extrait avec MOD 10 et le comparer aux suivants. S’arrêter dès la première différence.

Pour 5555, le chiffre de référence est 5 et toutes les comparaisons confirment l’égalité. Pour 5553, la référence est 3 et le 5 suivant la réfute : inutile de continuer. Il n’est pas nécessaire de connaître à l’avance le nombre de chiffres. Un nombre à un seul chiffre, y compris 0, satisfait cette propriété.

Troisième partie — Trois applications significatives

Les mêmes idées ne servent pas seulement à manipuler des chiffres. Transférons-les aux horaires, aux recherches et au contrôle des erreurs : chaque fois, nous préciserons les données, la procédure et la vérification.

18. Horaires : quand une division décrit une situation réelle

Problème. Un cours commence à 09:50 et dure 95 minutes. À quelle heure finit-il ?

Solution humaineSolution machine

Décomposons 95 minutes en 60 + 35 : une heure plus tard, il est 10:50 ; 35 minutes de plus nous amènent à 11:25.

Convertir le début en minutes depuis le commencement de la journée, ajouter la durée, puis reconvertir avec DIV 60 et MOD 60. Admettre des heures de 0 à 23, des minutes de 0 à 59 et une durée entière positive ou nulle.

9 × 60 + 50 = 590
590 + 95 = 685
685 DIV 60 = 11
685 MOD 60 = 25

Le cours finit à 11:25. DIV 60 compte les heures complètes et MOD 60 les minutes restantes : c’est la même idée que pour les chiffres, mais avec des groupes de 60.

Cas limite : 23:50 plus 30 minutes donne 1460 minutes. Le quotient de la division par 1440 indique le nombre de jours écoulés ; le reste indique les minutes de la nouvelle journée. On obtient le lendemain à 00:20. Préciser le changement de jour fait partie de la solution, ce n’est pas un détail graphique.

23 × 60 + 50 + 30 = 1460
1460 DIV 1440 = 1
1460 MOD 1440 = 20
20 DIV 60 = 0
20 MOD 60 = 20

19. Chercher un nombre : pourquoi la représentation change la méthode

Problème. Chercher 42 dans la liste triée [3, 8, 12, 17, 23, 31, 42, 58].

Solution humaineSolution machine

Parcourons la liste depuis la gauche et reconnaissons 42 à la septième position : cette stratégie examine sept éléments.

Exploiter l’ordre par une recherche dichotomique : numéroter les positions à partir de 1, choisir le milieu arrondi vers le bas et écarter la moitié incompatible avec la comparaison. Visiter les positions 4, 6 et 7.

ComparaisonIntervalle suivant
Position 4 : 17 < 42Positions 5–8
Position 6 : 31 < 42Positions 7–8
Position 7 : 42 = 42Trouvé : position 7

Trois comparaisons ont suffi. Si l’on cherchait 40, après la comparaison avec 42 il resterait un intervalle vide : on pourrait déclarer le nombre absent. La condition d’arrêt comprend donc « trouvé » et « plus aucune position restante ».

Cette recherche fonctionne parce que la liste est triée et que l’on peut accéder aux positions centrales. Dans une liste désordonnée, écarter la moitié des valeurs serait injustifié. Trier a un coût : pour une seule recherche, cela peut ne pas être rentable ; pour de nombreuses recherches, les mêmes données triées sont réutilisables. Un bon algorithme dépend aussi des hypothèses et du contexte.

20. Trouver une erreur : le maximum de nombres négatifs

Problème. Pourquoi initialiser le maximum à M = 0 fonctionne-t-il sur [17, 42, 29], mais échoue-t-il sur [−8, −3, −12] ? Comment corriger la procédure ?

Solution humaineSolution machine

Reconnaissons −3 comme le plus grand des trois nombres négatifs. Remarquons que 0 n’appartient pas à la liste et ne peut pas en être le maximum.

Avec M = 0, aucun nombre négatif ne modifie le maximum : le résultat reste faussement 0. Pour une liste non vide, initialiser plutôt M avec le premier élément, puis comparer les autres.

M = −8
Si −3 > M, alors M = −3
Si −12 > M, alors M = −12
Résultat: −3

Le bon résultat est −3. Un test sur des nombres positifs ne suffisait pas à établir la validité de la procédure. Essayons aussi une liste à un élément, des valeurs toutes égales et une liste vide : dans ce dernier cas, le maximum n’est pas défini et il faut signaler l’absence de données, pas inventer un zéro.

C’est une bonne habitude également avec l’IA : ne pas demander uniquement une solution, mais aussi ses hypothèses, un contre-exemple et des cas de test. Une réponse convaincante doit encore réussir des vérifications indépendantes.

Pourquoi en parler dans « IA et pensée » ?

Savoir formuler une procédure aide aussi à utiliser l’intelligence artificielle sans confondre une réponse plausible et une réponse vérifiée. On peut lui demander une stratégie, mais il faut savoir quelles données elle utilise, quelles hypothèses elle exige et comment contrôler le résultat.

Une demande utile serait : « Je dois compter les chiffres d’un entier, y compris zéro. Montre les étapes sur 72845, explique la condition d’arrêt et teste aussi 0 et −10, en comptant uniquement les chiffres et non le signe ». La demande précise l’entrée, le résultat attendu, le mode d’explication et les cas limites. Cela ne garantit pas à soi seul la correction, mais nous permet de la vérifier.

Une courte liste de contrôle

  1. Quelles sont les données d’entrée et quelles valeurs sont admises ?
  2. Quel résultat est attendu, dans quelle représentation ?
  3. Quelles opérations puis-je utiliser et quelles informations dois-je conserver ?
  4. Quelles instructions se répètent et pourquoi la répétition se termine-t-elle ?
  5. Que se passe-t-il avec zéro, des données minimales, absentes ou inattendues ?
  6. Puis-je exécuter la procédure à la main et la vérifier par une autre méthode ?

Conclusion — Du résultat à la procédure

De nombreuses opérations nous semblent immédiates parce que nous voyons la représentation écrite d’un nombre. Pour chercher une procédure, il faut expliciter les données à utiliser, les opérations à effectuer, leurs répétitions et leur arrêt.

Le but éducatif n’est pas de renoncer à l’intuition, mais de la transformer en méthode : « Comment as-tu trouvé le résultat ? La procédure fonctionne-t-elle toujours ? Peux-tu l’expliquer à quelqu’un qui ne peut pas se fier à tes yeux ? ». Ces questions relient mathématiques, logique et informatique et peuvent être abordées bien avant l’apprentissage d’un langage de programmation.

Tous les articles de Pensée informatique