Author: Vincent ROBERT

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 HTPPS 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.

Tutoriels

Programmer en Python et porter son code sur la…

Ce tutoriel s’adresse à toute personne qui souhaite développer en python, et adapter ce code aux contraintes de la calculatrice NumWorks.

En octobre 2020, dans le cadre des projets de 1ère spécialité NSI, nos élèves doivent réaliser le projet suivant :

Proposer un utilitaire en python, il doit fonctionner sur la NumWorks.Retour ligne automatique
Aucune idée ? Regardez les utilitaires existants sur TI 83Retour ligne automatique
Les plus ambitieux peuvent tenter de faire un jeu.

Exploiter uniquement la console python

Si vous comptez coder un projet en python, et que vous ne prévoyez de n’exploiter que la console python pour y exécuter des scripts, appeler des fonctions, afficher du texte, vous pouvez utiliser n’importe quel IDE pour développer votre projet :

  • Thonny, Python IDE for beginners (win, mac, linux)
  • Spyder, complet et donc un peu lourd
  • PyCharm, Community Edition

Si vous choisissez un nouvel IDE, consulter un tutoriel peut vous permettre de bien démarrer et de gagner du temps ultérieurement.

Bien évidemment, il faut tenir compte de l’écran qui ne peut afficher simultanément 
que 29 caractères en largeur sur 11 lignes. test_affichage.py

Mais en exploitant au mieux ces valeurs, on peut néanmoins se débrouiller pour placer ce que l’on veut à l’écran, comme dans cet exemple polynome.py :

Coder en exploitant la couche graphique de la calculatrice

Si vous décidez d’exploiter la couche graphique de la calculatrice, vous pourrez donner libre cours à votre créativité, mais à ce jour malheureusement vous ne pourrez pas développer votre script sur l’IDE de votre choix.

L’interface de développement officielle de la calculatrice NumWorks 

Vous pouvez utiliser le workshop officiel de la NumWorks, qui est resté figé en 2018 et qui ne propose clairement pas, en octobre 2020, une interface efficace pour développer un vrai projet.

Une interface de développement alternative pour la calculatrice NumWorks 

Vous pouvez aussi utiliser l’IDE de Omega, l’OS alternatif de la NumWorks.
Il présente plusieurs avantages, comme une coloration syntaxique plus agréable, une complétion automatique des scripts, une sauvegarde en ligne sur github…

1. Se créer un compte Github
2. Se connecter sur l’IDE python Omega avec ses identifiants python
3. Se familiariser avec l’interface. Signaler les bugs sur le serveur discordde l’équipe de développement de cet OS alternatif.

C’est d’ailleurs cette dernière interface que nous utiliserons en spé NSI pour porter nos projets sur la NumWorks. Comme elle est en version alpha, elle risque d’avoir quelques bugs, cela pourrait être assez drôle …

Avis aux lecteurs : enseignant, ou développeur indépendant : 
Si vous vous sentez de porter les bibliothèques propriétaires de la NumWorks (le module kandinsky, le module ion) sur PC, cela serait avec grand plaisir que nous les diffuserions et en ferions la promotion.

L’idée serait qu’un script écrit pour la NumWorks puissent fonctionner sur PC, à l’identique.

Quelques exemples de script exploitant la couche graphique de la calculatrice NumWorks :

Une roue Chromatique : chromac.py (ne marche pas sur le workshop, fonctionne sur la calculatrice et sur Omega IDE)

Roue chromatique

Un petit jeu inspiré de Bombrun sur Casio : planeur_bombe.py

Capture d’écran de Bombrun

Un tetris, pour passer le temps en cours de maths : tetris.py

Capture d’écran de Tetris

Si les codes de ces scripts ne sont pas faciles à comprendre, des ressources proposées à la fin de cet article peuvent t’éclairer utilement.

Quelques tests graphiques très simples

test_draw.py pour comprendre comment afficher du texte, un peu n’importe où sur l’écran.

cercle.py, pour tracer un cercle, image obtenue avec un appel de la fonction cercle(120,120,42)

Les capacités de la calculatrice

Qui a volé la mémoire de la calculatrice ? 

Avant d’attaquer le cœur du sujet à savoir le développement du projet python sur la calculatrice, il convient de lister les forces et faiblesses de cette calculatrice.

Si son ergonomie est admirable, son écran IPS lumineux et bien contrasté, son design moderne et convivial, l’application python est fort limitée.

32 Ko, c’est la taille totale et maximale de la somme des poids des scripts que vous pourrez stocker sur cette calculatrice. Il est impossible d’exploiter, pleinement la puce de 8 Mo soudée sur sa carte mère, la mémoire de stockage est gérée de manière non optimale. Espérons que cela changera.

32 ko, c’est la taille du tas python disponible pour exécuter les scripts. Si la calculatrice est dotée d’un CPU parfaitement dimensionné en terme de puissance, malheureusement seulement 32 Ko des 256 Ko de RAM de la puce ARM seront exploitables par votre script python. Là encore, le problème est lié à la jeunesse de cette calculatrice, et à la gestion de sa mémoire.

Pour que cela change plus vite, tu peux toi aussi contacter la société NumWorks.

Conséquences immédiates : 

  • Il va falloir coder intelligemment, et si votre script dépasse les 8 Ko il y a de fortes chances qu’il refuse de s’exécuter.
  • Il ne va pas falloir oublier que tout objet créé par le programme va occuper bien plus de place en mémoire que la sommes des poids en octets de ses caractères ACSII…

Des ressources et des exemples à exploiter

La documentation officielle de la calculatrice

Les tutoriels vidéos de Eric SCHRAFSTETTER

Plus de 63 tutoriels vidéos sur la NumWorks et l’utilisation des couches graphiques. Très didactiques, ces vidéos peuvent mettre vous aider dans la compréhension du langage python et des bonnes pratiques.

Quelques vidéos incontournables 

  • Exercice « Machine à sous »
  • Jeu pour apprendre les drapeaux
  • Plateau et pièces d’un jeu d’échecs
  • Le jeu Mastermind en Python
  • Programmons le jeu Snake en Python sur la Numworks !
  • Programmons le jeu 2048 en Python sur la Numworks !
  • Jeu du Pendu sur Numworks et Ti 83 Edition Python
  • Transformez votre Numworks en panneau LED défilant
  • Jeu de réflexion « Carré magique » pour la NUMWORKS
  • Programmons un jeu Démineur en Python sur la Numworks !

Les bibliothèques de scripts python

Voici quelques bibliothèques de scripts python optimisés pour la NumWorks.
La plupart des scripts fonctionneront sur le Workshop de NumWorks, pour certains scripts il faudra les tester sur la calculatrice.

La page d’accueil référençant certains scripts : https://workshop.numworks.com/python

Quelques dossiers à parcourir :

Nom du dossier Lien Auteurs 
numworkshttps://workshop.numworks.com/python/numworksDépôt officiel
schrafhttps://workshop.numworks.com/python/schrafEric Schrafstetter, enseignant & youtubeur
andreanxhttps://workshop.numworks.com/python/andreanxXavier Andréani, , enseignant & tiplanet.org
florian-allardhttps://workshop.numworks.com/python/florian-allardFlorian Allard, enseignant
ph-moutouhttps://workshop.numworks.com/python/ph-moutouPhilippe Moutou, enseignant, site web
telpe51https://workshop.numworks.com/python/telpe51 ?, Outils graphiques
nicolas-patroishttps://workshop.numworks.com/python/telpe51Enseignant, site web

Vous pouvez aussi retrouver quelques scripts publiés conçu pour NumWorks et parfois publié sur nsi.xyz sur les espaces workshop de Vincent ROBERTKévin Fedyna et Arthur Jacquin.

Le site https://tiplanet.org/, qui contient plus grosse bibliothèques de scripts toutes calculatrices confondues, il y a une section dédié à la NumWorks et des idées ou concepts dont on peut s’inspirer dans les dossiers TI 83 PCE ou TI 82+/83+/4

Si vous ne trouverez pas beaucoup de script pour la NumWorks sur le site https://tiplanet.org/, vous y trouverez par contre une source d’inspiration sur ce qui a déjà été fait, et ce qu’il est possible de faire…

Tester, tester, tester

Il convient lors du développement d’un projet de le tester régulièrement sur l’appareil sur lequel il doit finalement tourner.

Pour cela il faudra transférer le script sur la calculatrice.

Ce tutoriel vous guidera pour faire ceci depuis le workshop. Il est également possible de le faire depuis l’IDE Omega. Dans les deux cas, il faudra le faire depuis le navigateur Google Chrome.

Quelques petits scripts bien utiles

Lorsqu’une flèche est pressée, déclencher une action

from ion import keydown
 
def move():
    while not keydown(5):
        if keydown(0):
            pass #appeler ici une fonction
        elif keydown(3):
            pass #appeler ici une fonction
        elif  keydown(1):
            pass #appeler ici une fonction
        elif keydown(2):
            pass #appeler ici une fonction
        sleep(0.120)

Une coloration qui respecte l’OS

Ce code vérifie si votre calculatrice NumWorks utilise Epsilon, l’OS officiel de la NumWorks ou Omega, l’OS amélioré.

try:
    get_keys()
    os = (192,53,53)
except:
    os = (255,183,52)

La variable os contiendra désormais la couleur par défaut l’OS.
Ceci permet de colorer l’interface de l’application python en respectant le code couleur de la calculatrice. Nous utilisons cet astuce sur le Tetris.

Un menu simple à adapter

# Script Menu simple sans appel à une fonction
 
choix = 0 # Il est toujours utile d'initialiser une variable
 
# Le menu à afficher
print("Vous aimez la spé NSI ?")
print("1. Non (deconseille)")
print("2. Oui")
print("9. Quitter le programme")
 
# Le choix a faire
while choix > 2 or choix < 1 or choix != 9:
    choix = int(input("\n=>"))
 
# Le test conditionnel pour le menu
if choix == 0:
    print("Mauvaise reponse")
elif choix == 1:
    print("Bonne reponse")
else:
    print("Au revoir")


Un menu qui appelle des fonctions python

#version 2020
def fonction1(): # def définie une fonction.
    print("="*20)
    print("Vous avez fait le choix 1, excellent choix")
    print("="*20)
    return True
 
def fonction2(): 
    print("="*20)
    print("Vous avez fait le choix 2, vous allez rater votre vie")
    print("="*20)
    return True
 
def menu():
    choix = 0
    while choix!=9:
        print("Vous aimez la spé NSI ?")
        print("1. Oui")
        print("2. Non")  # ** Si vous ajoutez un choix au menu 
        print("9. Quitter le programme")    
        choix=int(input())
        if choix==1:
            fonction1()
        elif choix==2: # ** Vous devrez ajouter un elif comparable à celui-ci
            fonction2()
        elif choix==9:
            print("="*20)
            print("Au revoir !")

Découvrir

nsi42.net : Les projets web crées par nos élèves

Le site https://nsi42.net/ héberge les projets web de nos élèves.

En classe de première

En classe de première, les élèves réalise un premier site web de quelques pages en février, et ils s’initient aux protocoles HTTP, HTTPS, FTP à travers ces projets.

C’est l’occasion de leur faire découvrir les langages HTML et CSS.

En classe de terminale

En classe de terminale, les élèves réalisent un premier site web dans lequel ils doivent intégrer des modules imposés et des modules librement choisis en octobre.

L’objectif est alors d’approfondir leurs connaissances en JAVASCRIPT.

Plus tard dans l’année, ils peuvent utiliser cet espace web pour mener à bien un projet centré sur les bases de données, et ce frotter ainsi aux langages PHP et SQL.

Découvrir le site nsi42.net 

Le site https://nsi42.net/ sera peut-être pour vous une découverte de l’ASCII Art et qui sait, peut-être que la console accepte les commandes Linux !