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.


Les adaptations du programme de seconde qui entrent en vigueur à la rentrée 2017 apportent des changements majeurs dans la façon d'aborder l'écriture d'algorithmes, qui se double de plus de l'écriture de programmes informatiques dans un langage textuel, concis, interprété et répandu (dixit le texte), ce qui est une assez bonne périphrase pour décrire Python3. Lire la suite