Programme

NSI (Spé) — Langages et programmation

Calculabilité, décidabilité et mise au point

Problèmes décidables et indécidables, problème de l'arrêt, tests, assertions, mise au point de programmes

Résumé synthétiqueFiche en 4 sectionsQuiz de 10 questionsGratuit, sans pub

Résumé

Un ordinateur peut-il tout résoudre, pourvu qu'on lui laisse assez de temps ? Étonnamment, non — et ce n'est pas une question de puissance. La calculabilité étudie ces limites. Un problème est décidable s'il existe un algorithme qui termine toujours et donne la bonne réponse oui/non (tester si un nombre est premier, par exemple). Mais certains problèmes sont indécidables : aucun algorithme ne peut les trancher pour tous les cas. Le plus célèbre est le problème de l'arrêt, démontré impossible par Alan Turing en 1936. Côté pratique, comme on ne peut pas tout prouver automatiquement, on met au point ses programmes : assertions, préconditions / postconditions, invariants et surtout un jeu de tests couvrant cas normaux, cas limites et cas d'erreur.

S'entraîner

Ce thème dans une autre classe

Questions fréquentes

Les points clés à retenir sur Calculabilité, décidabilité et mise au point, extraits du quiz de révision.

Le problème de l'arrêt est :
Réponse :
Indécidable
Le problème de l'arrêt est indécidable : il n'existe aucun algorithme capable de déterminer, pour tout programme et toute entrée, si le programme s'arrête ou boucle indéfiniment.
Qui a démontré l'indécidabilité du problème de l'arrêt ?
Réponse :
Alan Turing
Alan Turing a démontré en 1936, par un raisonnement par l'absurde, qu'il est impossible d'écrire un programme universel qui détermine si un programme donné s'arrête.
Que fait l'instruction 'assert x > 0' en Python ?
Réponse :
Vérifie que x > 0, sinon lève AssertionError
assert x > 0 vérifie la condition x > 0. Si elle est fausse, Python lève une AssertionError et le programme s'arrête (sauf si les assertions sont désactivées).
Une précondition est :
Réponse :
Une condition qui doit être vraie avant l'exécution d'une fonction
Une précondition est une condition qui doit être satisfaite avant l'appel d'une fonction pour garantir son bon fonctionnement. Ex : le paramètre n doit être positif.