En lisant les productions de mes étudiants, je rencontre une pratique minoritaire mais néanmoins assez répandue qui consiste à systématiquement définir toutes les variables d'une fonction au début de celle-ci. Voyons d'où peut provenir cette habitude et pourquoi elle n'est en général pas pertinente. Lire la suite


Le nouveau programme de seconde préconise de programmer en écrivant des fonctions. Un des aspects intéressants des fonctions en Python, comme dans la plupart des langages de programmation, est que les variables d'une fonction sont locales à cette fonction. Dans ce billet, j'explique ce que cela signifie et comment les choses se passent lors de l'exécution d'un appel de fonction. Lire la suite


Le document d'accompagnement pour l'algorithmique et la programmation en seconde mentionne page 13 :

Un ordinateur ne travaille pas avec des nombres réels, mais avec des flottants, c’est-à-dire un sous-ensemble des nombres décimaux dont la précision est limitée par des contraintes liées au codage en mémoire.

C’est ainsi qu’en Python, le test d’égalité 3+10**(-16)==3 s’évalue en True alors que le test 3+10**(-15)==3 s’évalue en False. On retiendra qu’il faut éviter de tester l’égalité entre deux flottants, et préférer la recherche d’une précision donnée. En revanche, bien sûr, il n’y a aucun problème à comparer deux nombres entiers.

C'est tout à fait exact et le programme de seconde ne demande pas d'enseigner les subtilités des flottants aux élèves. Cependant, au cours de leurs manipulations, les élèves peuvent obtenir des résultats qui semblent aberrants si on assimile les flottants aux réels, comme dans l'exemple cité. Également, on constate que 1.1 + 1.1 donne 2.2 mais que 1.1 + 1.1 + 1.1 donne 3.3000000000000003. Il peut être utile au professeur d'en savoir un peu plus afin de pouvoir en dire suffisamment aux élèves pour que l'informatique et les résultats qu'elle donne n'apparaissent pas comme quelque chose d'ésotérique. Cela permet aussi de comprendre pourquoi certaines façons de faire qu'on pouvait être contraint d'utiliser avec certaines calculatrices limitées sont à bannir.