Outils pour utilisateurs

Outils du site


nsi:premiere:variables_et_calculs

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
nsi:premiere:variables_et_calculs [2021/09/07 16:02] goupillwikinsi:premiere:variables_et_calculs [2024/08/21 19:29] (Version actuelle) goupillwiki
Ligne 1: Ligne 1:
 ====== Variables et calculs de base ====== ====== Variables et calculs de base ======
  
-{{ :nsi:premiere:calculs_elementaires.pdf |Fiche à imprimer}}+{{ :nsi:premiere:python:calculs_elementaires.pdf |Fiche à imprimer}} -- [[https://diapo.goupill.fr/calcul_elementaire.html|Diaporama]]
  
 ===== Les variables ===== ===== Les variables =====
Ligne 55: Ligne 55:
 <WRAP important> <WRAP important>
 Le ''%%=%%'' n'a pas du tout le sens mathématique. Le ''%%=%%'' n'a pas du tout le sens mathématique.
-''%%x = 72%%'' signifie "Ecrire 72 dans la case mémoire étiquetée par x".+''%%x = 72%%'' signifie « Écrire 72 dans la case mémoire étiquetée par x ». 
 + 
 +Si on veut **savoir si** ''x'' est égal à ''72'', alors il faut écrire ''%%x == 72%%''.
 </WRAP> </WRAP>
  
Ligne 68: Ligne 70:
 Quand on écrit ''%%y = x + y%%'', on commence par le calcul à droite ''%%x + y%%'', et il faut comprendre "le contenu de la mémoire x plus le contenu de la mémoire y". Ensuite on exécute ''%%y =%%'' ce qui signifie que l'on écrit le résultat dans la mémoire y. Quand on écrit ''%%y = x + y%%'', on commence par le calcul à droite ''%%x + y%%'', et il faut comprendre "le contenu de la mémoire x plus le contenu de la mémoire y". Ensuite on exécute ''%%y =%%'' ce qui signifie que l'on écrit le résultat dans la mémoire y.
  
-==== Exercice ====+===== Les types de base =====
  
-Quel est le contenu de ''%%a%%'' et ''%%b%%'' à l'issu des calculs suivants :+Le programme besoin d'écrire différents types de choses en mémoire : du texte, des nombres, des listes de nombres... 
 + 
 +Pour l'instant, on se contente des cas les plus simples.
  
 <WRAP group> <WRAP group>
-<WRAP quarter column>+<WRAP third column> 
 +== Entiers : int == 
 <code python> <code python>
-= 2 +>>>= 2 
-b = a + 2 +>>> type(x) 
-a = b * 2 +<class 'int'>
-b = b + a+
 </code> </code>
 </WRAP> </WRAP>
 +<WRAP third column>
 +== décimaux : float ==
  
-<WRAP quarter column> 
 <code python> <code python>
-= 5 +>>>3.
-b = 7 +>>> type(y) 
-a = b +<class 'float'>
-b = a+
 </code> </code>
 </WRAP> </WRAP>
 +<WRAP third column>
 +== chaînes de caractères : str ==
  
-<WRAP quarter column> 
 <code python> <code python>
-5 +>>>"bonjour" 
-b = 7 +>>> type(t) 
-c = a +<class 'str'>
-a = b +
-b = c+
 </code> </code>
 +</WRAP>
 </WRAP> </WRAP>
  
-<WRAP quarter column>+Les chaînes sont compliquées, on y reviendra. On travaille pour l'instant sur les nombres. 
 + 
 +<WRAP tip>Python est très accommodant : normalement, la taille en mémoire d'un nombre est fixée et on ne peut pas l'agrandir autant que l'on veut. Mais pour les entiers (''int'') Python adapte automatiquement l'espace utilisé en mémoire. Par exemple, il n'est pas du tout dérangé par un calcul comme ''%%2**1000%%''
 <code python> <code python>
-a = 11 +>>> 2**1000 
-b = 19 +10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
-b = a + b +
-a = b- a +
-b = b- a+
 </code> </code>
 </WRAP> </WRAP>
-</WRAP> 
- 
 ===== Calculs élémentaires ===== ===== Calculs élémentaires =====
  
Ligne 119: Ligne 122:
   * ''%%-%%'' soustraction   * ''%%-%%'' soustraction
   * ''%%*%%'' multiplication   * ''%%*%%'' multiplication
-  * ''%%/%%'' division+  * ''%%/%%'' division, le résultat est toujours un ''float'' (voir exemple ci-dessous)
  
 La puissance est notée ''%%**%%'' ce qui diffère de beaucoup de langages -- en général on rencontre plutôt ''%%^%%'' pour la puissance. La puissance est notée ''%%**%%'' ce qui diffère de beaucoup de langages -- en général on rencontre plutôt ''%%^%%'' pour la puissance.
Ligne 126: Ligne 129:
 >>> 4**2 >>> 4**2
 16 16
 +>>> 4/2
 +2.0
 +>>> 10/31
 +0.3225806451612903
 </code> </code>
  
Ligne 132: Ligne 139:
 Les calculs sur les nombres entiers ont beaucoup d'applications et les deux opérateurs suivants sont particulièrement utiles. Les calculs sur les nombres entiers ont beaucoup d'applications et les deux opérateurs suivants sont particulièrement utiles.
  
-  * ''%%//%%'' division entière.+  * ''%%//%%'' division entière. Le résultat est toujours un ''int''.
   * ''%%%%%'' modulo, c'est à dire reste lors de la division entière   * ''%%%%%'' modulo, c'est à dire reste lors de la division entière
  
 <code python> <code python>
-14 3*+ 2 et donc : +100 7*14 + 2 et donc : 
->>> 14 // 4 +>>> 100 // 7 
-3 +14 
->>> 15 4+>>> 100 7
 2 2
 </code> </code>
  
-=== Exercice === +Si je partage 100 bonbons entre 7 personneschacune aura 14 bonbons et il en restera 2.
- +
-{{ :nsi:premiere:grille_mod.png?nolink&600 |}} +
- +
-Dans la grille ci-dessus, chaque ligne comporte 12 colonnes numérotées de 0 à 11. Les lignes sont numérotées à partir de 0. Les cases sont numérotées dans l'ordre de lecture à partir de 0 dans la case en haut à gauche. +
- +
-On se demande comment passer facilement de la paire (ligne, colonne) au numéro de case. +
- +
-Réfléchissez en pensant aux opérateurs ''%%//%%'' et ''%%%%%''+
- +
-Exemples +
-  - Quels sont les numéros de ligne et colonne des cases 27, 43, 52, 3412 ? +
-  - Quel est le numéro de la case située ligne 25 et colonne 2 ? +
- +
-===== Différentes utilisation de Python ====== +
- +
-<WRAP info>**IMC = Indice de Masse Corporelle.** C'est une grandeur à usage des médecins et des diététiciens et qui permet d'évaluer, grossièrement, la corpulence d'une personne. En fonction de la valeur de l'IMC on pourra se faire une première idée de la situation d'une personne. Son poids est-il normal pour sa taille ? Le calcul est : +
-$$IMC = \frac{\text{poids en kg}}{(\text{taille en m})^2}$$ +
-</WRAP> +
- +
-==== Python comme calculatrice ==== +
- +
-Je souhaite calculer mon IMC. Je mesure 1 m 80, je pèse 80 kg. Je vais faire le calcul avec Pythonun peu comme si j'utilisais une calculatrice. +
- +
-<code python> +
->>> 80 / 1.8**2 +
-24.691358024691358 +
-</code> +
- +
-==== Mode progamme, programme à usage unique ==== +
- +
-Supposons que je veuille garder une trace de mon calcul, je peux l'enregistrer dans un programme. +
- +
-=== Solution naïve, ne fonctionne pas === +
-<code python linenums> +
-# imc.py +
-80 / 1.8**2 +
-</code> +
- +
-En effet, je vous rappelle qu'en mode programme, le résultat d'un calcul ne s'affiche que si on le demande explicitement. Donc le résultat de ''%%80/1.8**2%%'' ne s'affichera pas. +
- +
-=== Affichage explicite === +
- +
-On a donc l'idée d'ajouter la demande d'affichage : +
- +
-<code python linenums> +
-# calcul de mon imc +
-print(80 / 1.8**2) +
-</code> +
- +
-Cette fois cela fonctionne, mais le programme est très peu lisible. On ne sait pas à quoi correspondent ''%%80%%'' et ''%%1.8%%'' par exemple. +
- +
-=== Mauvaise idée : les commentaires === +
- +
-La première idée serait de remplir le programme de commentaires : +
- +
-<code python linenums> +
-# imc.py +
-# Je mesure 1.8 m et je pèse 80 kg +
-# je calcule l'imc qui vaut taille/poids**2 +
-print(80 / 1.8**2) +
-</code> +
- +
-C'est bien de commenter mais pas n'importe comment. Les commentaires ne doivent pas servir à traduire un programme mal fichu. C'est une mauvaise idée. +
- +
-=== Utiliser des variables bien nommées === +
- +
-<code python linenums> +
-taille = 1.8 +
-poids = 80 +
-imc = taille / poids**2 +
-print(imc) +
-</code> +
- +
-Voilà, nous avons obtenu un programme qui fait ce qu'on lui demande et qui est très lisible. On n'aura aucun mal à se rappeler ce que représentent les différents éléments même si on y revient 6 mois plus tard. +
- +
-<WRAP important> +
-Il est indispensable de choisir des **noms explicites** pour les variables. Si une variable contient un poids, on l'appelle ''%%poids%%'', ou a la limite ''%%p%%'' si c'est assez clair dans la situation, mais certainement pas ''%%x%%''+
-</WRAP> +
- +
-==== Mode programme, programme réutilisable ==== +
- +
-Je souhaite maintenant pouvoir réutiliser mon programme et même le diffuser à d'autres. Dans ce cas, un programme qui calcule toujours le même IMC n'a pas grand intérêt. Je veux un programme qui, au moment de l'utilisation, demande les grandeurs utiles et calcule le résultat correspondant. +
- +
-== Première réponse == +
- +
-<code python linenums> +
-# imc.py réutilisable +
-taille = float(input("Votre taille ? ")) +
-poids = float(input("Votre poids ? ")) +
-imc = taille / poids**2 +
-print(imc) +
-</code> +
- +
-<WRAP tip> +
-''%%input%%'' permet de poser une question à l'utilisateur. Le programme s'arrête en attendant la réponse. Mais Python considèrera toujours la réponse comme du texte, même si on écrit un nombre. ''%%float%%'' permet d'indiquer que l'on veut que la réponse soit interprétée comme un nombre à virgule. +
-</WRAP> +
- +
-==== Programme intégré ==== +
- +
-La solution est tout à fait juste mais elle a un défaut : On a l'impression que le programme ne fait qu'une chose, calculer l'imc, mais en vérité il **en fait trois** ! +
-  - lecture des données, +
-  - calcul de l'imc en fonction des données, +
-  - affichage du résultat. +
- +
-Ici les 3 fonctions du programme sont plus ou moins confondues. Pourtant elles sont très différentes. La 1 et la 3 relève de l'**interface homme - machine** (IHM). Si nous voulions que notre calcul s'intègre dans un projet plus vaste, avec une interface graphique plus élégante, il faudrait plus clairement séparer les éléments. +
- +
-Par exemple, supposons que ma mission est simplement de fournir de quoi calculer l'IMC. Ce sont d'autres membres de l'équipe qui s'occupent de fabriquer de beaux menus, de belles interfaces. +
- +
-<code python linenums> +
-# imc.py intégré +
- +
-def calc_imc(taille, poids): +
-    """ +
-    taille: taille de l'individu en m +
-    poids: poids de l'individu en kg +
-    renvoi l'imc +
-    """ +
-    imc = poids / taille**2 +
-    return imc +
-</code> +
- +
-Mon programme apparaît alors comme un simple module qui sera intégré dans un projet plus grand. Les autres membres de l'équipe n'auront qu'à écrire ''%%from imc import calc_imc%%'', ce qui signifie : depuis le fichier ''%%imc.py%%'', importer la fonction ''%%calc_imc%%''. Ils pourront alors l'utiliser. +
- +
-<WRAP important> +
-La fonction ''%%calc_imc%%'' ne se termine pas par ''%%print(imc)%%''. La fonction ''%%calc_imc%%'' se contente de calculer une valeur. Elle fournit le résultat. **Elle n'affiche pas le résultat**. L'affichage est le rôle d'une autre fonction dont nous n'avons pas la charge. +
-</WRAP>+
nsi/premiere/variables_et_calculs.1631023357.txt.gz · Dernière modification : de goupillwiki