Author: Vincent ROBERT

NumApps

Le jeu 2048, sur ta NumWorks !

2048 est un jeu vidéo de type puzzle conçu en mars 2014 par le développeur indépendant italien Gabriele Cirulli et publié en ligne sous licence libre. La version présenté ici est le portage du jeu, réalisé par Eric Schrafstetter et légèrement modifiée par nos soins pour un rendu sublimé sur la NumWorks.

Portage du jeu, en python, sur NumWorks

Eric Schrafstetter est le premier a voir porté ce jeu sur la calculatrice NumWorks, ce jeu nécessite une version Epsilon 13 ou supérieur installé sur la calculatrice. En effet, la version 13 de l’OS de cette calculatrice à permis le développement de jeux car il était désormais possible de récupérer les touches du clavier saisies.

Publié le premier avril 2020, la première version de ce programme a été suivie par une version améliorée proposée le 30 juillet 2021. Nous avons découvert ce jeu fin décembre 2021, et avons décidé de l’améliorer afin de proposer une expérience joueur améliorée.

La version 2 de Eric Schrafstetter

La version modifié par nos soins

Modifications réalisées par nos soins

  1. La grille a été centrée et la bordure épaisse réduite, on conserve l’effet « ombre » sans écraser la grille.
  2. Le score a été déplacé, il est moins visible pendant la partie, l’interface présente une symétrie visuelle et la modification du score n’attire pas l’œil.
  3. Les micros-lags ont été supprimés. Dans la version d’origine, la grille était entièrement effacée puis reconstruite ce qui générait un affichage haché avec un effet de rafraichissement pas agréable. Le jeu est du coup plus fluide, plus agréable à utiliser.
  4. Une détection de la fin de partie a été implémentée, si la grille est remplie et que 4 touches sont pressées sans que rien ne se passe, on signale au joueur que la partie est terminée.

Une vidéo de présentation du codage

Si le codage de ce jeu vous intéresse, la vidéo de son auteur est incontournable. 😍

Commandes

Le jeu se joue simplement avec les touches fléchées de la calculatrice.

Télécharger

Des liens vers les version 1 et 2 du jeu, celle de Eric Schrafstetter sont au début de cet article. Nous vous proposons de tester la version modifiée par nos soins :

Tutoriels

Débuter et découvrir python 3

Python est un langage de programmation simple d’usage qui sera utilisé en mathématiques ainsi qu’en spécialité NSI ( Numérique et Sciences Informatiques ) lors d’activités algorithmiques. Présentation d’un document exploité en classe de seconde.

Un triptyque à imprimer en couleur

Le dépliant 3 volets a été conçu pour être imprimé en couleur puis plié. Un trait de pliage discret mais présent permet de réussir le pliage roulé, c’est à dire que le document se replie sur lui même et ce dans un même sens.

Document au format natif Google Document.

Si vous avez un compte Google, vous pouvez créer une copie rapidement de ce document pour le modifier.
Fichier > Créer une copie

Pour l’impression, il est conseillé de réaliser un PDF au préalable :
Fichier > Télécharger > Document PDF (.pdf)
puis d’ouvrir ce document dans Adobe Acrobat Reader et de l’imprimer avec les paramètres suivants :
Page 1-2 | Taille réelle | Recto verso : Retourner sur les bords courts | Paysage

Scénario d’utilisation du document.

Ce document sera testé une première fois à la rentrée 2021 en classe de seconde. Autant rien ne va marcher 😅
Pour avoir un retour, il vous suffira de consulter ce compte twitter à la rentrée 2021.

Ce document parait incomplet, il y a des trous et l’un des scripts ne semble pas produire le résultat attendu.
Ce document sera accompagné de consignes, il s’inscrira dans le cadre d’un travail de groupe.
Le travail de groupe permet aux élèves de s’entraider, au lieu de gérer 38 élèves qui ont chacun un problème différent, il y a « juste » 10 groupes à superviser.

Travail préalable :
Les élèves doivent télécharger les scripts start.py et sapin.py sur leur calculatrice NumWorks.
Les élèves doivent saisir manuellement le script ce2.py dans leur calculatrice NumWorks.

Travail de groupe :
En cours de création. Ne sera pas rendu accessible via un lien public. Contactez moi si ce document vous intéresse.

  • Leur demander de tester les opérateurs mathématiques, d’affectation et de comparaison dans la console python de leur calculatrice puis compléter les tableaux proposés.
  • Tester les différentes fonctions proposées dans start.py, les exécuter avec différents paramètres.
  • Modifier le script sapin pour obtenir le rendu proposé.
  • Créer un premier script

Contributeurs

Ce document sous licence cc by sa intègre des contributions d’élèves et / ou d’enseignants.

Le script turtle est l’œuvre de Cyril D, élève de seconde en 2020 – 2021, il a été réalisé dans le cadre d’un devoir maison intitulé « Les mathématiques sont belles« . Ce script est présenté ici : Dessine moi un Open Badge

from turtle import *
liste = ["pink", "red", "orange", "yellow", "green", "blue", "purple"]
for i in range(3*42) :
  color(liste[i%7])
  pensize(10+2)
  forward(i)
  left(59)

Le sapin est un grand classique du genre, un dessin en Art ASCII, proposé initialement ainsi :

# sapin.py
ligne = 1
max = 6
while ligne < max:
    n = max - ligne
    s = 2 * ligne - 1
    print(" " * n + "#" * s)
    ligne +=1
print(" " * (max - 1) + "#")

il a été amélioré par un enseignant sur twitter, et la fusion des deux script a donné ceci :

# sapin.py
hauteur = 6
diese = 1
espace = hauteur - diese
 
while espace > 0:
    print(" " * espace + "#" * diese )
    espace -= 1
    diese += 2
 
print(" " * (hauteur - 1) + "#")

Les fonctions hypotenuse() et reponse() ont été imaginée et construite par Kevin Fedyna.

from math import sqrt

def hypothenuse(a, b):
    # Théorème de Pythagore
    c = sqrt(a ** 2 + b ** 2)
    # La fonction renvoie le résultat
    return c
 
def reponse(n):
    return n == 42 

Débogage

Merci pour les erreurs que vous m’avez signalés, elle ne peuvent pas être corrigées sur l’image diffusée ici mais elles sont prise en compte presque en temps réel dans le document final. N’hésitez pas à répondre à ce message twitter si vous constatez d’autres erreurs.

Tutoriels

Comment exécuter un script python

Que vous soyez en spécialité NSI, un lycéen français ou simplement un curieux désireux de tester un script python, voici quelques solutions simples pour exécuter un script python.

Voici un code python très simple. Quel est le résultat produit par l’exécution de ce code ?

''' python3 Hello World ! '''
message = [72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33] 
for nb in message:
    print(chr(nb), end="")
print("\n"+" " * 42, ord("*"))
#spé nsi

Thonny, un IDE simple à utiliser.

Sur Windows, Mac ou Linux il existe un IDE très simple et facile à utiliser. On le télécharge depuis le site officiel thonny.org, on peut l’installer sur un compte utilisateur sur Windows et on peut le personnaliser avec des thèmes pour obtenir une coloration syntaxique à son goût.

Thonny avec le thème Clean Dark Blue et la coloration syntaxique Dracula.

Il suffit de copier / coller le script dans l’éditeur de script, de l’enregistrer, puis de cliquer sur le bouton d’exécution du script (ou sur son raccourci clavier [F5]) pour obtenir le résultat de l’exécution dans la console.

On peut bien évidemment utiliser la console pour tester rapidement du code python ou interroger le contenu des variables.

Thonny est un logiciel libre, gratuit, sous licence MIT.

Basthon, un IDE en ligne respectueux de votre vie privée

Basthon est l’acronyme de « Bac À Sable pour pyTHON« . Il s’agit un IDE en ligne, accessible sans aucune installation préalable, donc utilisable si vous disposez d’un navigateur internet. Vous pouvez l’utiliser en ligne, en étant connecté à internet ou simplement en téléchargeant et décompressant une archive zip.

Basthon est :

Tester le mode console de Basthon

Depuis le site officiel ou depuis notre site. Seul le premier lien vous garanti de disposer de la dernier version de Basthon.

NumApps

Des simulateurs web pour la NumWorks

Le logiciel de la NumWorks est sous licence Creative Commons, ce qui autorise la modification du code de la calculatrice et sa redistribution en respectant quelques règles.

Le simulateur officiel de la NumWorks

Un simulateur web construit sur du HTML, CSS et Javascript est proposé en ligne, gratuitement sur le site officiel de la calculatrice, il est présenté comme un outil idéal pour les démonstrations en classe et c’est une réalité.

  • Il est gratuit,
  • Il est accessible en ligne et hors ligne (téléchargeable gratuitement),
  • Il gère le mode plein écran pour un usage au vidéoprojecteur,
  • il est responsive et s’adapte à la taille de votre écran,
  • il gère l’enregistrement de la session et le partage de celle-ci par lien
    (cette dernière fonctionnalités n’est pas encore parfaitement stable à la date du 27 avril 2021)

En ligne : https://www.numworks.com/fr/simulateur/

Les simulateurs modifiés de la NumWorks

Nous vous proposons 3 simulateurs web légèrement modifiés de la NumWorks.

Pour un usage en ligne, nous les avons hébergé sur des sous domaines de ce site web.

Epsilon simulateurOmega simulateurPsi simulateur
epsilon.nsi.xyzomega.nsi.xyzpsi.nsi.xyz
Image modifiée par nos soins
Patché par Joachim Le Fournis
Simulateur officiel de Omega
https://getomega.dev/releases
Dérivé du projet NSIos
Gabin P. et Raphaël C.

Et parce que vous souhaitez peut-être changer d’ambiance un menu de navigation vous permet de passer de l’un des simulateurs à l’autre.

Patchs sur le simulateur epsilon

Quelques modifications ont été apportées au simulateur epsilon.nsi.xyz par rapport au simulateur officiel du constructeur de la calculatrice.

  1. L’image de la calculatrice a été modifiée pour avoir un rendu plus flat, pas parfait mais suffisant pour nous permettre de faire les captures d’écran que nous utilisons pour notre sélection NumApps.
  2. Le fond d’écran à été modifié pour la même raison.
  3. Les scripts natifs ont été effacés, il ne doivent donc pas être désactivés ou supprimés manuellement à chaque fois
  4. La taille des copiés / collés de scripts python externe à été porté à 16 ko contre environ 8 ko pour la version officielle.

Ces modifications codées par Jaochim Le Fournis nous permettent d’importer via un simple CTRL + V un script python rapidement et facilement, et ce sans se soucier des scripts python déjà présents, ni de la taille du script.

Design non flat / Design flat

DS

Banque des sujets de spécialité NSI

Les épreuves communes de spécialités NSI, qu’il s’agisse des épreuves écrites et des épreuves pratiques sont publiées sous une licence libre. Vous pouvez donc librement les télécharger pour vous entrainer et préparer au mieux ses examens.

Le site officiel quandjepasselebac

Vous pouvez trouver les sujets de NSI sur le site officiel du gouvernement :
http://quandjepasselebac.education.fr/revisions-la-banque-nationale-de-sujets/

En date du 26 avril 2021, ce site refuse une connexion HTTPS et il n’est pas possible de faire une lien direct stable vers les sujets d’une matière en particulier, aussi vous devrez trouver les sujets par vous même :

Bac général > Sujet de première > Enseignements de spécialité > …
Bac général > Sujet de terminale > Enseignements de spécialité > …

Le site officiel Eduscol

Vous y trouverez la banque des sujets des épreuves pratiques de spécialité NSI (Numérique et Sciences Informatiques) de la session 2021.

https://eduscol.education.fr/2661/banque-des-epreuves-pratiques-de-specialite-nsi

Le site ccbac.fr

CCBac.fr est le site gratuit de référence sur les épreuves de Contrôle Continu E3C du Baccalauréat, il n’est pas affilié à l’Éducation Nationale. Il a l’avantage de proposer des adresses web stables et un bouton pour télécharger rapidement tous les sujets pour l’année 2021.

ClasseExamenannéeLien
1èreEC22020https://ccbac.fr/list.php?session=2&voie=1&mat=26&opt=0&an=2020
1èreEC22021https://ccbac.fr/list.php?session=2&voie=1&mat=26&opt=0&an=2021

Ce site ne contient par contre pas les épreuves pratiques de spé NSI ni les épreuves de bac. Le sujet 0 de l’épreuve de baccalauréat de spé NSI est ci-dessous au format PDF.

Et les corrigés ?

Des élèves ont rédigé sur ce site le corrigé de l’épreuve 42 des E3C de l’année 2020 : Correction du sujet n°42 de la BNS des E3C de NSI, pour le reste il va falloir faire chauffer votre moteur de recherche favoris, quel qu’il soit.

DS

Correction du sujet n°42 de la BNS des E3C…

Dans le cadre de l’évaluation en contrôle continu, les élèves étudiant la spécialité NSI passent des épreuves de de contrôle continu lors du troisième trimestre de leur année de première. Annulée en 2020, les E3C ont été renommées EC en 2021 et également annulées.

Les sujets des années précédentes sont publics

Parmi ces 51 sujets de 42 questions, nous vous proposons la correction du sujet n°42. Cette correction a été entièrement préparé et rédigé sur ce site web par nos élèves de la spécialité NSI du lycée Louis Pasteur.
Les sujets sont sous licence CC BY-NC-SA 3.0 FR, le présent corrigé est sous la même licence.
Chaque sujet comporte donc 42 questions. (Pourquoi 42 ? Il faut faire spé NSI pour comprendre )

Modalités pratiques

L’épreuve consiste en 42 questions, rangées en 7 thèmes. Le candidat :

  • gagne 3 points s’il choisit la bonne réponse, 
  • perd 1 point s’il choisit une réponse fausse,
  • ne gagne ni ne perd aucun point s’il ne répond pas ou choisit plusieurs réponses.

Le total sur chacun des 7 thèmes est ramené à 0 s’il est négatif.

La note finale s’obtient en divisant le total des points par 6,3 et en arrondissant à l’entier supérieur.

Thème A : types de base

Question A.1

Olivier visite son site préféré pour relire le programme de NSI.
Il devrait lire le texte ci-dessous :

L’enseignement de spécialité de numérique et sciences informatiques du cycle terminal de la voieRetour ligne automatique
générale vise l’appropriation des fondements de l’informatique pour préparer les élèves à uneRetour ligne automatique
poursuite d’études dans l’enseignement supérieur, en les formant à la pratique d’une démarcheRetour ligne automatique
scientifique et en développant leur appétence pour des activités de recherche.

Le paramétrage de son navigateur lui donne l’affichage ci-dessous :

L’enseignement de spécialité de numérique et sciences informatiques du cycle terminalRetour ligne automatique
de la voie générale vise l’appropriation des fondements de l’informatique pourRetour ligne automatique
préparer les élèves à une poursuite d’études dans l’enseignement supérieur, enRetour ligne automatique
les formant à la pratique d’une démarche scientifique et en développant leur appétenceRetour ligne automatique
pour des activités de recherche.

Quel type d’encodage Olivier doit-il choisir dans les paramètres de son navigateur pour afficher correctement le texte ?

Réponses

A ANSI
B LATIN-1
C UTF-8
D ASCII

Correction : Réponse C

L’auteur de cette question travaillait peut-être à l’Agence Nationale de la Sécurité des Systèmes d’Information (ANSI), il surement du au préalable étudier le codage ASCII qui date de 1963 et ne concerne donc pas le codage des caractères d’une page web. Seul les standards ISO 8859-1 (autre nom de LATIN-1) ou UTF-8 sont utilisés sur le web. C’est désormais en UTF-8 que sont désormais codés les pages web.

Question A.2

Quel est le nombre maximal de bits du produit de deux entiers positifs codés sur 8 bits ?

Réponses

A 8
B 16
C 32
D 64

Correction : Réponse B

Sachant que sur le maximum codé peut être de 8, 8 x 8 = 64. Ingenious ?
Sur 8 bits, le plus grand entier en base 10 est 2^8-1 = 255.
255 x 255 = 65 025‬
Sur 16 bits, le plus grand entier en base 10 est 2^16-1 = 65 535
Ainsi, 16 bits suffiront.

Question A.3

À quelle affectation sont équivalentes les instructions suivantes, où a, b sont des variables entières et c une
variable booléenne ?

c = False
if a==b:
c = True
if a > b+10:
c = True

Réponses

c = (a==b) or (a > b+10)
c = (a==b) and (a > b+10)
c = not(a==b)
c = not(a > b+10)

Correction : Réponse A

Car si a est égal à b, alors le booléen c devient True et si a est supérieur à b+10, le booléen c devient également True. Or ces deux conditions ne sont pas dépendent l’une de l’autre, de plus la porte or est true si les deux condition sont vrai mais si l’une des deux devient fausse, le booléen aussi.

Question A.4

Quelle est la représentation binaire de l’entier 152 ?

Réponses

A 0001 1001
B 0011 1010
C 0100 0100
D 1001 1000

Correction : Réponse D

Le premier 1 vaut 128, vous enlevez donc 128 à 152, il vous reste donc 24, ensuite il y a 64 et 32 qui sont 0, ensuit un 1 qui vaut 16, 24 – 16 = 8. Pile la valeur du 3ème 1 : magique non ?

Question A.5

Soient P et Q deux formules logiques telles que P est vraie et Q est fausse. Quelle est la valeur de l’expression (P ET Q) OU (NON(P) OU Q) ?

Réponses

A vraie
B fausse
C ni vraie, ni fausse
D vraie et fausse en même temps

Correction : Réponse B

Ici et P est donc True et Q est False, or la premiere porte ET prend le « plus fort », donc False car si l’un des deux est False l’ensemble aussi, pour la troisième porte qui est OU, elle prend le False comme plus fort et comme NON(P) est False, alors l’ensemble aussi. La deuxième porte qui est OU on refait le même raisonnement. CQFD.

Question A.6

On rappelle que le nombre entier 12 s’écrit 1100 en base 2. Quelle est le codage en complément à 2 sur un octet du nombre entier −12 ?

Réponses

A -0000 1100
B 1000 1100
C 1111 0100
D 1111 0011

Correction : Réponse C

Ici nous pouvons déjà supprimer A car l’ordinateur ne comprend pas les -… Pour un nombre négatif, nous devons placer un 1 en première positions (à gauche pour les lecteurs de manga), nous pouvons également supprimer D car le dernier 1 signifie que c’est un nombre impaire. Il nous reste B et C 
Il est d’ailleurs conseillé par vos professeurs de NSI d’apprendre par coeur les entiers compris entre [-127 ; 127] en binaire pour l’examen de fin d’année.
Si vous ne les avez pas appris, il suffit d’appliquer la méthode : 
0000 1100 = 12
1111 0011 On inverse les bits
1111 0100 Plus 1 !

Thème B : types construits

Question B.1

On considère le code suivant :
D = ["a" : "1", "2" : "a", "b" : "a", "c" : "3"]
Que vaut D["a"] à la fin de l’exécution ?

Réponses

"1"
2
["2", "b"]
["1", "3"]

Correction : Réponse A

ici nous faisons une recherche dans le tableau grâce à la clé « a » qui est associé à « 1 ».

Question B.2
Quelle expression Python a pour valeur la liste [1,3,5,7,9,11] ?
Réponses
 
[2*i - 1 for i in range(6)]
[2*i + 1 for i in range(6)]
[2*i + 1 for i in range(5)]
[2*i - 1 for i in range(7)]
 
Correction : Réponse B
 
Question sérieuse ! On génère un tableau contenant 6 valeurs, données par 2*i + 1 avec i un entier entre 0 et 5 ! Oui oui, entre 0 et 5 il y a 6 valeurs.

Question B.3
 
On exécute l’instruction suivante :

T = [ [12,13,14,15], [24,25,26,27],[35,36,49,33], [61,53,55,58] ]

Quelle expression parmi les quatre suivantes a pour valeur 26 ?
 
Réponses
 
T[1][2]
T[2][1]
T[2][3]
T[3][2]
 
Correction : Réponse A
 
En premier temps nous cherchons la valeur 26 dans le tableau. Une fois trouvé, nous constatons qu’il se trouve dans le deuxième « sous tableau », et qu’il est en troisième position, comme la Croatie en 98… Or les tableau indexés commencent par le valeur 0, donc deuxième position devient la première et la troisième position devient 2ème, comme cette fois ci en 2018 pour nos Kockasti… la réponse est donc T[1][2].

Question B.4
 
Quelle expression permet d’accéder à la valeur 'hello' après qu’on a défini L = [['a','b','c'],['bonjour','hello']]
 
Réponses
 
L[5]
L[1][1]
L[2][2]
L['hello']
 
Correction : Réponse B
 
Idem question précédente, le « hello » – à prononcer absolument avec l’accent British sinon vous ne progresserez jamais en NSI – se trouve dans le deuxième tableau en deuxième position, sachant qu’il est indexé à partir de 0, l’expression pour retrouver « hello » est L[1][1].

Question B.5

On exécute le script suivant :

inventaire = {'pommes': 430, 'bananes': 312,
 'oranges' : 274, 'poires' : 137}
stock = 0
for fruit in inventaire.keys():
 if fruit != 'bananes':
 stock = stock + inventaire[fruit]

Que contient la variable stock à la fin de cette exécution ?

Réponses

{430, 274, 137}
312
841
{ 'pommes', 'oranges', 'poires' }

Correction : Réponse C

Dans le dictionnaire inventaire, le script va récupérer les valeurs, c’est a dire les éléments attitrés aux clés (soit ici 430, 312, 274 et 137). Il va ensuite les « analyser » une par une grâce à la boucle for. Si l’élément pris est différent (par l’opérateur != ) est différent de banane, il est stocké dans stock. Donc, dans les élément pris seul 312 n’et pas compté, en effet il correspond a la valeur banane (la légende dis que l’éducation nationale nous transmet grâce a ce script la véritable longueur de la coupe de cheveux du fameux Elvis Presley). On a donc, dans stock, l’addition de 430 + 274 + 137 = 42 (non je déconne ça fait bien 841 même si 42 est la réponse a tout).

Question B.6

On définit : T = [7*n for n in range(10)].
Quelle est la valeur de l’expression T[7] ?

Réponses

A 42
B 49
C 56
D 70

Correction : Réponse B

T va faire une simple multiplication (7*n) de n=0 à n=9 (for n inrange(10)). Donc quand T = T[7], n = 7 donc on a 7 * 7 = 49, soit le numéro du magnifique département de la Maine-et-Loire. Donc on était a 2 doigt d’avoir 42….Les créateur de ce QCM sont vraiment des tortionnaires !

Thème C : traitement de données en tables

Question C.1

On définit :

contacts = { 'Toto': 'toto@nsi.fr', 'Chloé': 'chloe@nsi.com',
'Paul': 'paul@nsi.net', 'Clémence': 'clemence@nsi.org' }

Parmi les propositions suivantes, laquelle est exacte ?

Réponses

A ’Chloé’ est une valeur de la variable contacts
B ’Chloé’ est une clé de la variable contacts
C ’Chloé’ est un attribut de la variable contacts
D ’Chloé’ est un champ de la variable contacts

Correction : Réponse B

Ici, il faut procéder par élimination. Comme le dirait un grand sage : « Ce soir, il n’en restera qu’un ! ». Donc je pense que nous sommes d’accord pour dire que ’Chloé’ n’est ni un champs (j’ai vu auprès d’agriculteurs pro et aucun ne donne de nom a ses champs, sauf une fois au chalet) ni un attribut. En effet ces 2 éléments ne peuvent pas se retrouver dans le dictionnaire contacts. La variable contacts possède donc des clés et des valeurs, comme tout les dictionnaire. Ça tombe bien, c’est les 2 réponses qu’il reste ! Or on voit ici que ’Chloé’ est bien une clé de la variable contacts, et par conséquent, si c’est un clé, ce n’est pas un valeur. Tout est bien qui finit bien. La réponse B a gagné Koh-Lanta.

Question C.2

Qu’est-ce que le format de fichier CSV ?

Réponses

A un format de fichier mis au point par Microsoft pour Excel
B un format de fichier pour décrire une base de données
C un format de fichier où les données sont séparées par un caractère tel qu’une virgule
D un format de fichier décrivant une page Web

Correction : Réponse C

Un fichier CSV signifie Comma-Separated Values (les bilingues ont déjà la réponse). Il est de type tableur et ses valeurs (pour ceux qui ne l’aurai pas deviné) sont séparés par une virgule.

Question C.3

On définit ainsi une liste t :

t = [ {'id':1, 'age':23, 'sejour':'PEKIN'},
 {'id':2, 'age':27, 'sejour':'ISTANBUL'},
 {'id':3, 'age':53, 'sejour':'LONDRES'},
 {'id':4, 'age':41, 'sejour':'ISTANBUL'},
 {'id':5, 'age':62, 'sejour':'RIO'},
 {'id':6, 'age':28, 'sejour':'ALGER'}]

Quelle expression vaut-elle ’RIO’ parmi les suivantes ?

Réponses

A t[4][’sejour’]
B t[5][’sejour’]
C t(’id’=5)
D t.[’id’=5].[’sejour’]

Correction : Réponse A

Ici nous avons affaire a une « matrice-dictionnaire » (il doit y avoir un nom et je pense que le prof va me le donner quand il va faire un AVC en lisant ceci). Ayant parfaitement suivi les cours de NSI vous saurez effectuer les code ci-dessus. Nous savons donc que si on met l’expression  t[5]['sejour'], cela va nous renvoyer ALGER, si on met  t('id'=5), votre estime envers Spyder va chuter gravement et ce dernier va vous sermonner d’un SyntaxError: keyword can't be an expression, si on rentre t.['id'=5].['sejour'] ,ça sera la même chose mais vous vous prendrez un sale SyntaxError: invalid syntax qui fait toujours plaisir. Seul la réponse a qui ira chercher la valeurs de ’sejour’ dans le « dico numéro » 4 (soit le 5e car on part de 0) vous octroiera le plaisir de voir ce magnifique RIO apparaître.

Question C.4 Picasso, la question explosive (j’assume pas cette blague alors je la cache (edit du migreur : c’est plus caché 😁)

On utilise habituellement un fichier d’extension csv pour quel type de données ?

Réponses

A des données structurées graphiquement
B des données sonores
C des données compressées
D des données structurées en tableau

Correction : Réponse D

On a vu plus haut que le fichier csv est de type tableur. Tableur étant issu du latin tabula (qui signifie planche), il est de la même famille que tableau (je met a contribution mes acquis de français que je ne pourrait malheureusement pas ressortir pour le BAC de Français cette année…). Un fichier csv de type TABLEUR va donc être utilisé pour des données structurées en TABLEAU.

Question C.5

Soit la table de données suivante :

nom prenom date_naissance
Dupont Pierre 17/05/1987
Dupond Catherine 18/07/1981
Haddock Archibald 23/04/1998

Quels sont les descripteurs de ce tableau ?

Réponses

A nom, prenom et date_naissance
B Dupont, Pierre et 17/05/1987
C Dupont, Dupond et Haddock
D il n’y en a pas

Correction : Réponse A

Les proposition A sont des descripteur et les autres propositions sont des valeurs des descripteurs. Je n’ai vraiment pas de quoi argumenter plus, il fallait apprendre sa leçon les loulous.

Question C.6

Qu’est-ce qu’un fichier CSV ?

Réponses

A une librairie Python permettant l’affichage des images
B un utilitaire de traitement d’image
C un format d’image
D un format de données

Correction : Réponse D

Bon la, clairement, si j ai encore des choses a vous apprendre sur le format csv après les réponses précédentes, c’est vraiment que je dois me reconvertir totalement dans le sauvetage des ours polaire… Mai bon reprenons ! Donc un fichier CSV est un fichier qui représente des données sous forme de tableau. Donc pas des images. Vraiment pas. Non.

Thème D : interactions entre l’homme et la machine sur le Web

Question D.1

Un élément form (un formulaire) d’une page HTML contient un élément button de type submit. Un clic sur ce bouton :

Réponses

A envoie les données du formulaire vers la page définie par l’attribut action de l’élément formRetour ligne automatique
B efface les données entrées par l’utilisateur dans le formulaireRetour ligne automatique
C envoie les données du formulaire vers la page définie par l’attribut method de l’élément formRetour ligne automatique
D ne fait rien du tout si un script javascript n’est pas associé au bouton

Correction : Réponse A

Si un bouton possède le type submit, cela veut dire que lorsque le bouton sera sollicité, le formulaire va être soumis au serveur en utilisant l’attribut action (qui sert a indiquer une action a exécuter lors de l’envoi de données). Du coup c’est un peu comme si vous rendiez un devoir sauf qu’il n’y a aucun risque que vos parents sortent de l’ordinateur si ça ne va pas.

Question D.2

Quelle méthode est utilisée via une requête HTTP pour envoyer une image via un formulaire HTML ?

Réponses
 
A HEAD
B PUT
C POST
D GET

Correction : Réponse C

Reprenons chaque requête proposé ici : 

  • HEAD sert notamment a économiser de la bande passant en demandant seulement les en-têtes de la même manière que la méthode GET. C’est comme si vous commandiez seulement le capuchon d’un stylo au lieu du stylo sur Internet pour payer moins. Si c’est le cas vous êtes non seulement radin, mais également très bizarre. 
  • PUT remplace une représentation de la ressource ciblée par le contenu de la requête. Pour imager, on va faire un carré sur le sol et dire « Ici il y aura Thierry Beccaro ». Notre pote PUT va alors nous chercher Thierry Beccaro et le mettre dans le carré (Note : la spécialité NSI de Louis Pasteur rejette toute responsabilité dans le cas ou des élèves tenterai de faire des invocation sataniste de Thierry Beccaro). 
  • POST envoie des données au serveur. Il est important que POST ne soit pas un forceur sinon le serveur peut faire un Burn-Out. 
  • GET demande une représentation de la ressource spécifiée. Ils servent donc a récupérer des données ( Note : aucun serveur n’est maltraité pendant l’interrogatoire de GET).
  • La requête la plus couramment utilisé pour un envoi d’image est donc la requête POST car il effectue un envoi de donnés.

Question D.3

Les pages HTML sont affichées par …

Réponses

A le compilateur 
B le serveur 
C l’interpréteur
D le navigateur Web

Correction : Réponse D

Votre navigateur web, qui est probablement Google Chrome (Safari si vous êtes riche et Yahoo si vous êtes un vieillard), affichera les pages HTML qui sont stocké sur un serveur.

Question D.4

Dans le code HTML les délimiteurs tels que <body> et </body> s’appellent ?

Réponses

A des bornes
B des balises
C des paragraphes
D des liens

Correction : Réponse B

Si vous avez suivi les cours d’NSI vous aurait eu juste à cette question.

Question D.5

Un fichier HTML contient la ligne suivante.
<p>Coucou ! Ca va?</p>
Quelle commande CSS écrire pour que le texte apparaisse en rose sur fond jaune ?

Réponses

A p { couleur: rose ; fond: jaune;}
<p> { color = pink background-color = yellow}
C <p> { color = pink ; background-color: yellow} </p>
p { color: pink ; background-color: yellow ;}

Correction : Réponse D
Si on respecte la syntaxe du css on peut déduire que c’est la réponse D.

Question D.6

Un élève a écrit une fonction javascript qui détermine la moyenne des valeurs entrées par l’utilisateur dans un formulaire de sa page HTML.
Il place sa fonction javascript

Réponses

A entre la balise <js> et la balise </js>
B entre la balise <code> et la balise 
C entre la balise <script> et la balise </script>
D entre la balise <javascript> et la balise </javascript>

Correction : Réponse C
Encore une question en rapport avec la syntaxe d’un language de programmation. Si tu avais répondu autre chose que la C ce n’est pas grave puisque le JavaScript c’est PAS(édit du migreur) nul !

Thème E : architectures matérielles et systèmes d’exploitation

Question E.1

Le répertoire personnel de l’utilisateur contient deux répertoires tempo et sauve.
On souhaite déplacer le fichier bac.txt du repertoire tempo vers le répertoire sauve.
Quelle commande permet de réaliser ce déplacement ?

Réponses

A mkdir /tempo/bac.txt /sauve
B mkdir /sauve /tempo/bac.txt
C mv /tempo/bac.txt /sauve
D mv /sauve /tempo/bac.txt

Correction : Réponse C
La commande mv qui veut dire move (« bouger », pour ceux qui sont nul en anglais). On déplace le fichier bac.txt qui était dans le repertoire tempo dans le repertoire sauve.

Question E.2

Dans la console Linux, quelle commande faut-il exécuter pour effacer le fichier test0.csv ?

Réponses

A rm test0.cvs
B cp test0.csv
C ls test0.csv
D mv test0.csv

Correction : Réponse A
rm —>remove
cp —>copy
ls—>list
mv —>move
Si vous etes nul en anglais copier coller ces mots dans Google traduction.

Question E.3

Quel est le rôle de la commande shell ls ?

Réponses

A basculer en mode administrateur
B lister le contenu du répertoire courant
C donner un accès complet à un fichier
D effacer le contenu du répertoire courant

Correction : Réponse B
ls est une abreviation de « lister » en anglais. Vous l’auriez si vous avez eu une bonne note aux EC3.

Question E.4

L’adresse IP du site www.education.gouv.fr est 185.75.143.24.
Quel dispositif permet d’associer l’adresse IP et l’URL www.education.gouv.fr ?

Réponses

A un routeur
B un serveur DNS
C un serveur de temps
D un serveur Web

Correction : Réponse B
Le serveur DNS (Domain Name System, ou Système de noms de domaine en français) est un service dont la principale fonction est de traduire un nom de domaine en adresse IP. Maintenant que vous avez l’adresse IP du serveur du ministère vous pouvez surement le hacker et modifier les notes du BAC !

Question E.5

Que peut-on dire du système de fichiers, suite à l’exécution des commandes suivantes ?
% ls
entier.py flottant.py readme.md
% mkdir foo
% mv *.py foo

Réponses

A les fichiers entier.py, flottant.py, et foo ont été déplacés dans le répertoire de l’utilisateur
B l’utilisateur foo est propriétaire des fichiers entier.py et flottant.py
C le répertoire foo contient le résultat de l’exécution des deux fichiers entier.py et flottant.py
D le répertoire foo contient deux fichiers d’extension .py

Correction : Réponse D
Le *.py représente tous les fichiers python qu’on déplace (commande mv) vers le répertoire foo.

Question E.6

Dans un terminal sous Linux, à quoi sert la commande traceroute ?

Réponses

A à afficher un itinéraire routier entre deux villes
B c’est un synonyme pour la commande ping
C à afficher le chemin suivi par des paquets à travers un protocole IP
D à suivre pas à pas l’exécution d’un programme

Correction : Réponse C
Y’a vraiement trop de mots anglais… Ce QCM est plus un cours d’anglais que d’NSI.
Si vous avez choisi la réponse A je crois que vous devriez retourner en section L.

Thème F : Langages et Programmation

Question F.1
 
La fonction Python suivante ne calcule pas toujours correctement le résultat de 𝑥^y pour des arguments entiers.

def puissance (x,y):
 p = x
 for i in range (y - 1):
 p = p * x
 return p

Parmi les tests suivants, lequel va permettre de détecter l’erreur ?
 
Réponses
 
puissance(2,0)
puissance(2,1)
puissance(2,2)
puissance(2,10)
 
Correction : Réponse A
 
C’est reparti pour du Python ! Ce programme est censé calculer l’exposant d’un nombre : x est le nombre, et y est l’exposant. 
Comme on le sait depuis la quatrième, un nombre exposant 0 est TOUJOURS égal à 1.
Sauf, que il y a un problème, car si on entre puissance(2,0), le programme va nous renvoyer 0. Pourquoi ?

La ligne 4 du programme, p = p * x, revient à faire 2*2, dans le cas de la réponse A.

Et devinez quoi, 2*2 n’est pas égal à 1, mais bien à 4. Il faudrait donc rajouter une ligne à ce programme, permettant de renvoyer automatiquement 1 quand y=0.

Question F.2
 
On considère le code suivant :

def puiss(y,x):
 res = y
 for i in range(x):
 res = res*y
 return res

Quelles sont les préconditions sur les arguments ?
 
Réponses
 
A Les arguments doivent être obligatoirement de type entier
B Les arguments peuvent être de type entier ou flottant
C Le type des arguments n’a pas d’importance
D Il n’y a pas de préconditions dans ce cas
 
Correction : Réponse A 

Pour répondre à cette question, il faut bien comprendre le programme :

Ce programme est le même que le précédent, sauf que 1 est ajouté à l’exposant (Par exemple, si vous entrez puiss(2,3), le programme ne vous donnera pas 2^3, mais 2^4)

Ce code ne fonctionne donc pas avec du texte, mais marche parfaitement avec des entier.

Question F.3
 
On considère l’instruction suivante :

  1. resultat=[0]*7

Que contient la variable resultat après son exécution ?
 
Réponses
 
0
[0]
[[0],[0],[0],[0],[0],[0],[0]]
[0,0,0,0,0,0,0]
 
Correction : Réponse D

Cette question, toute droit sortie des enfers, est infâme.

Tout d’abord, la réponse A et B sont fausses : La A car ce n’est pas une liste, et la B car il n’y a qu’un seul 0, alors qu’il devrait en avoir sept.

La réponse C est assez bizarre. C’est une liste de liste, mais elle n’a rien a faire là, car on veut juste une liste simple

La réponse D est donc la bonne réponse.

Question F.4
 
On définit une fonction f de la façon suivante :

def f(L,m):
R = []
for i in range(len(L)):
if L[i] > m:
R.append(L[i])
return R

On définit L = [1, 7, 3, 4, 8, 2, 0, 3, 5].
Que vaut f(L,4) ?
 
Réponses
 
[0, 7, 0, 0, 8, 0, 0, 0, 5]
[0, 0, 0, 5]
[7, 8, 5]
[]
 
Correction : Réponse C

Enfin une question simple !

Le programme sert a relever les éléments d’une liste qui sont plus grands que m.
Ici, m=4, donc le programme doit renvoyer tous les éléments de L qui sont plus grands que 4, soit 7,8 et 5.

Question F.5
 
Un programme Python commence par la ligne :

import os

À quoi sert cette ligne ?
 
Réponses
 
A C’est le début du squelette de tout programme Python
B C’est la déclaration du système d’exploitation (operating system)
C Python 3.6 exige cette ligne au début de tout programme
D C’est la déclaration d’une bibliothèque (ou module) que le programme compte utiliser
 
Correction : Réponse D

Quand une ligne de code commence par « import », c’est que une bibliothèque va être utilisée.

C’est un peu court comme explication, mais il y a Affaire Conclue sur France 2 qui vient de commencer, et c’est vraiment très IMPORTant pour moi (humour).

Question F.6
 
On exécute le script Python suivant :

def cube(a):
a = a*a*a
return a
a = 2
b = cube(a)

Que vaut le couple (a, b) à la fin de l’exécution
 
Réponses
 
A  (8, 8)
B  (8, 2)
C  (2, 2)
D  (2, 8)


Correction : Réponse D

Dans cette question, l’académie a décidé de nous faire voyager.
Nous avons, dans l’ordre, les Vosges, le Tarn et Garonne, les Cotes d’Armor, et l’Eure-et-Loire, avec son fameux musée du caoutchouc.

Premièrement, on sait que dans tout les cas, a=2.
Pour b, on sait que b=cube(a).
Le nom de la fonction est assez explicite, et il n’y a pas de piège, même la porte parole du gouvernement pourrait y arriver.

2 au cube est égale à 8, c’est donc le couple (2,8) et l’Eure-et-Loire qui remporte cette question.

Thème G : Algorithmique

Question G.1
 
On dispose en quantité illimité de pièces de 1 euro, 2 euros et 5 euros. On veut totaliser une somme de 18 euros.
Quelle est la solution donnée par l’algorithme glouton ?

Réponses
 
A  [5, 5, 5, 2, 1]
B  [5, 5, 5, 2, 2, 1]
C  [5, 5, 2, 2, 2, 1, 1]
D  [5, 2, 2, 2, 2, 1, 1, 1, 1, 1]

Correction : Réponse A

Ah, le tri. Comme dans la vraie vie, le tri c’est dur à faire, mais c’est bien utile.
La solution donnée par l’algorithme glouton doit être la plus optimisée possible :
Ici, la réponse la plus optimisée est celle ou le moins de pièces possible sont utilisées pour former 18€ en tout.Retour ligne automatique
La bonne réponse est donc la A.

Question G.2
 
Quel est l’ordre de grandeur du coût du tri par insertion (dans le pire des cas) ?

Réponses
 
A L’ordre de grandeur du coût dépend de l’ordinateur utilisé
B Linéaire en la taille du tableau à trier
C Quadratique en la taille du tableau à trier
D Indépendant de la taille du tableau à trier

Correction : Réponse C

Dans le meilleur des cas, l’ordre de grandeur sera linéaire, dans le pire des cas quadratiques. Cette question est…. bizarre.
Et surtout, c »est à la frontière du programme de Première …

Décidément, ce sujet 42 nous réserve des surprises.

Question G.3
 
Quelle est la valeur de « element » à la fin de l’exécution du code suivant :

L = [1,2,3,4,1,2,3,4,0,2]
element = L[0]
for k in L:
if k > element:
element = k

Réponses
 
A 0
B 1
C 4
D 10

Correction : Réponse C

Ce type de question, on commence a avoir l’habitude. Ici, element va toujours prendre la valeur de l’élément le plus grand de la liste. C’est du tri par insertion.
La bonne réponse est donc la C, car 4 est le plus grand nombre de la liste.

Question G.4
 
La fonction ci-dessous permet d’effectuer une recherche par dichotomie de l’index m de l’élément x dans un tableau L de valeurs distinctes et triées.

L = [1,2,3,4,1,2,3,4,0,2]
def dicho(x,L):
g = 0
d = len(L)-1
while g <= d:
m = (g+d)//2
if L[m] == x:
return m
elif L[m] < x:
g = m+1
else:
d = m-1
return None

Combien de fois la cinquième ligne du code de la fonction (m = (g+d)//2) sera-t-elle exécutée dans l’appelRetour ligne automatique
dicho(32, [4, 5, 7, 25, 32, 50, 51, 60] ?

Réponses
 
A 1 fois
B 2 fois
C 3 fois
D 4 fois

Correction : Réponse C

Pour répondre à cette question, j’avoue que j’ai du recopier le script, et le modifier un peu, pour trouver le résultat.Retour ligne automatique
Pour trouver la solution, on a qu’a rajouter une variable compteur=0 à la ligne 2, et rajouter compteur=compteur+1 dans la boucle qui nous intéresse. On rajoute un return compteur aprés le return m, et le tour est joué ! Ma variable compteur=3, donc la bonne réponse est la C.

Non, ce n’est pas de la triche. C’est une aide, comme dirait une famille célèbre de 
Levallois Perret.

Question G.5
 
Quelle est la valeur de c à la fin de l’exécution du code suivant :

L = [1,2,3,4,1,2,3,4,0,2]
c = 0
for k in L:
 if k == L[1]:
  c = c+1

Réponses
 
A 0
B 2
C 3
D 10

Correction : Réponse C

Courage, c’est la dernière ligne droite ! Pour souffler un peu, voila une question faisable : ce programme renvoie le nombre de fois qu’un nombre est dans une liste. Ici, il faut trouver le nombre de fois que L[1], ou 2, est dans la liste L.

Je pense que vous l’avez compris, pour répondre à cette question, il va falloir COMPTER.

Si on compte le nombre de fois ou 2 apparait dans la liste L, on trouve le chiffre 666, qui correspond à la réponse… Hein ? 
Oups, je me suis surement trompé dans le compte. En fait, on compte 3 deux, ce qui correspond à la réponse C

Question G.6
 
La fonction suivante doit déterminer la valeur maximale d’un tableau de nombres passé en argument. Avec quelles expressions faut-il remplacer les pointillés du script suivant pour que la fonction soit correcte ?

def maximum(T):
 maxi = T[0]
 n = len(T)
 for i in range(i, .....):
 	if T[i] > maxi:
      maxi = ......
 return maxi

Réponses
 
A n puis T[i]
B n puis T[i-1]
C n-1 puis T[i]
D n-1 puis T[i-1]

Correction : Réponse C

On y est. La question 42. La réponse de la vie. Ce doit surement être une question incroyable, unique, sensationnelle…

Et bien non, c’est encore du Python et des listes. Dommage.

C’est encore un programme qui permet de trouver le maximum d’une liste qu’il faut décortiquer.Retour ligne automatique
Premièrement, le premier blanc se complète obligatoirement par n-1, sinon, la boucle ne s’arrêterait jamais, et ferait planter le logiciel (ça sent le vécu). Ensuite, la variable maxi est égale au plus grand élément de la liste, donc si T[i ]> maxi, alors maxi = T[i]

La bonne réponse est donc la C.

Outro

Voici donc la fin de ce sujet 42. Si vous lisez ses lignes, vous n’êtes peut être pas prêt pour hacker la NASA, ni pour coder Google, mais vous pouvez vous vanter d’avoir compris le sujet 42.

Et ça, c’est inestimable.

Mission accomplished, jeune padawan.

Vous pouvez réagir ici :

NumApps

Treasure en python, NumWorks

Un trésor a été caché. Déplace-toi et pars à sa recherche. Évite les rochers et les trous. Il te suffit d’appuyer sur OK pour creuser un trou. Un sonar peut t’aider, enfin uniquement si tu sais l’utiliser !

Captures d’écran du jeux

Commandes

FlèchesOK
Se déplacer sur la grille du jeuCreuser un trou pour trouver le trésor

Télécharger

Nous vous proposons 2 liens distincts, le premier est le lien vers la source du créateur de l’application, le deuxième est un lien alternatif en cas de problème. Seul le premier lien garanti de disposer de la dernière version de l’application.

NumApps

Tetris en python, NumWorks

Un incontournable de la Gameboy des années 90. Un jeu de puzzle dans lequel la patience fini par payer ou couter cher. Dans cette version, on peut commencer directement au niveau 42 !

Captures d’écran du jeux

Commandes

FlèchesClearOK
Déplacer les TetrominosRetournerLancer la partie

Un peu de technique

Si vous souhaitez en savoir plus sur les aspects techniques de ce jeu, lisez l’article de présentation :
Un Tetris en python pour la NumWorks

Télécharger

Nous vous proposons 2 liens distincts, le premier est le lien vers la source du créateur de l’application, le deuxième est un lien alternatif en cas de problème. Seul le premier lien garanti de disposer de la dernière version de l’application.

NumApps

Démineur en python, NumWorks

Ce jeu a eu son heure de gloire sur Windows à la fin des années 90. Il s’agit d’un jeu de réflexion qui nécessitera parfois de compter un peu sur sa chance. Attention, il peut y avoir 42 mines à trouver !

Captures d’écran du jeux

Commandes

FlèchesMaisonOKClearShift
Se déplacer sur la grille du jeuRevenir au menuDécouvrir une caseSignaler une bombeActive la triche

Un peu de technique

Si vous souhaitez en savoir plus sur les aspects techniques de ce jeu, lisez l’article de présentation :
Un démineur en python sur la NumWorks

Télécharger

Nous vous proposons 2 liens distincts, le premier est le lien vers la source du créateur de l’application, le deuxième est un lien alternatif en cas de problème. Seul le premier lien garanti de disposer de la dernière version de l’application.

Tutoriels

Découverte de la programmation en Python sur la NumWorks

A partir de la rentrée 2019, le langage imposé pour les algorithmes en lycée est le Python. Les programmes des diverses matières scientifiques incluent des algorithme à étudier avec les élèves, il y en a bien évidemment dans le programme de spécialité NSI mais aussi dans le programme de mathématiques ou celui de physique.

Les calculatrices et leurs langages de programmation non standard

Jusqu’à présent le marché des calculatrices graphique était partagé entre deux marques commerciales : Casio et Texas Instrument. Chacune de ces marques a utilisé pendant près de 30 ans des langages de programmation semi propriétaire, dérivé du Basic mais pas compatibles entre eux, ce qui a durablement ralenti l’enseignement de l’algorithmique en lycée.

A partir de la rentrée 2019, le langage imposé pour les algorithmes en lycée est le Python.

Un langage de programmation simple d’usage est nécessaire pour l’écriture des programmes informatiques. Le langage choisi est Python, langage interprété, concis, largement répandu et pouvant fonctionner dans une diversité d’environnements. Les élèves sont entraînés à passer du langage naturel à Python et inversement.

Programme de mathématiques de seconde générale et technologique, 2019

Les calculatrices vont donc devoir se mettre à jour ou plus précisément les vieilles calculatrices utilisées par les aînés ne seront plus utilisables…

Les calculatrices compatibles Python

Cet article a pour objectif de vous présenter la programmation en Python sur la calculatrice Numworks.

Premier pas avec Python sur la NumWorks

Le site officiel de NumWorks propose un petit tutoriel, plutôt très bien fait intitulé Premiers pas avec Python.

Il propose surtout gratuitement 3 émulateurs, un émulateur sur le web vidéo-projetable en classe devant les élèves, une application android et une application IOS ce qui est remarquable, appréciable et devrait-être le cas de tous ces concurrents…

On peut même télécharger sur son ordinateur personnel cet émulateur !
Et comme tout ces logiciels sont sous licence CC-BY-NC-SA, vous pouvez les télécharger, les modifier, les redistribuer.

On peut toutefois regretter que l’algorithme proposé pour faire ces premiers pas en Python avec NumWorks soit une fonction Python récursive, cela n’est ni intuitif, ni adapté à un un public débutant.

Le code du script python proposé (la fonction récursive) est ci-dessous, vous pouvez copier / coller et tester ce script dans un autre environnement de développement Python. Ce programme très simple calcule la factorielle d’un nombre entier naturel.

from math import *
def factorial(n):
    if n==0:
        return 1
    else:
        return n*factorial(n-1)

Sur la calculatrice cela donne ceci en mode édition :

Et en exécution en mode console :

Aléas de la programmation fonctionnelle

Le paradigme programmation fonctionnelle a été créé explicitement afin de prendre en charge une approche fonctionnelle pure de la résolution des problèmes. Mais ce qui est déstabilisant avec la programmation fonctionnelle, c’est que quand on exécute un algorithme, il ne se passe rien à priori à l’écran.

Une fois le script précédent saisi dans la calculatrice,

Il faut l’exécuter

et on obtient ceci :

On arrive donc dans la console d’exécution de Python, mais le script ne semble avoir produit aucun effet, du moins on ne voit rien à l’écran.

L’utilisateur doit donc saisir  factorial(10) pour calculer 10 ! c’est à dire 10 x 9 x 8 x 7 x 6 x 5 x 4 x 3 x 2 x 1.

Il est alors tentant de réécrire le srcipt ainsi :

def factorial(n):
    if n==0:
        return 1
    else:
        return n*factorial(n-1)
 
print("Calcule la factorielle d un entier n")
m = int(input("n="))
print(factorial(m))

Mais cette pratique est a éviter avec les élèves, l’abus de print() et de input() peut perturber l’apprentissage de la programmation fonctionnelle.

Formation python sur la NumWorks en vidéo

La société NumWorks réalise régulièrement des vidéos très simple présentant la programmation python sur sa calculatrice. Voici la vidéo de la formation du 25 mars 2020.