# Calculs élémentaires --- ## Données --- ### Mémoire Un calcul après l'autre → garder résultat en mémoire ![mémoire](./medias/calculs/allocation_memoire.svg) OS met à disposition un espace au programme pour stocker ses données --- ### Données en mémoire ![mémoire](./medias/calculs/allocation_memoire.svg) ``` écrire 3 à l'adresse 0x4564 ``` Utiliser l'adresse d'une case mémoire serait peu pratique. De plus, les cases disponibles ne sont pas toujours les mêmes. --- ### Données en mémoire ![mémoire](./medias/calculs/allocation_memoire.svg) ``` a = 3 ``` On préfère donner un nom. Peu nous importe que `a` soit stocker en `0x4564` ou ailleurs. --- ### Affectation ``` a = 3 ``` * signifie que l'on écrit la valeur 3 dans la case mémoire étiquetée `a`. C'est une **affectation** * la première affectation, la variable est crée : l'interpréteur réserve pour elle une case mémoire. --- **Attention !** * Si j'ai `a = 3`, alors j'écris la valeur `3` dans `a`. * Mais si je veux **savoir si** `a` est égal à `3`, je dois écrire : ```python a == 3 ``` --- ### Variable Puisque le contenu de `a` est susceptible de changer, on qualifie `a` de **variable**. --- ### Constante Si `a` ne peut pas / ne doit pas changer, ce sera une **constante**. On convient de nommer les constantes avec des majuscules. Par exemple : ```python WIDTH = 50 ``` --- ### Programmation impérative Les différents langages ont des styles différents. On parle de **paradigme**. Python est **impératif** : on agit sur des variables et les instructions s'enchaînent l'une après l'autre. ```python a = 5 b = 3 a = b b = a ``` Dans cet exemple, `a` et `b` ne sont pas échangés !!! --- ### Les types de base Il existe différents types de données qui sont stockées de façons différentes en mémoire. En effet, dans la mémoire, il n'y a que des `0` et des `1` et il faut faire des choix pour stocker les quantités de cette façon. --- ##### Entier : `int` ```python >>> x = 2 >>> type(x) ``` --- ##### Décimal : `float` ```python >>> x = 2.5 >>> type(x) ``` À noter que `2.0` est un `float` mais `2` est un `int` ! --- ##### Texte : `str` ```python >>> x = "bonjour" >>> type(x) ``` --- ## Calculs --- ### Les opérateurs élémentaires * Les élémentaires : `+`, `-` pour plus et moins * L'astérisque `*` pour la multiplication * Le slash `/` pour la division dont le résultat est **toujours** un `float`. * La puissance `**` ```python >>> 10/31 0.3225806451612903 >>> 4/2 2.0 >>> 2**3 8 ``` --- ### Les opérateurs entiers * La division entière `//` * Le modulo, ou reste de division entière : `%` ```python >>> 100 // 7 14 >>> 100 % 17 2 ``` Si je veux découper 100 bonbons entre 7 personnes, chacune aura 14 bonbons et il en restera 2. --- ### Raccourcis Il est très fréquent que l'on doive écrire des choses comme : ```python x = x + 1 ``` On dispose d'un opérateur `+=` qui fait la même chose : ```python x += 1 ``` On dispose de la même façon de `*=`, `-=`; `/=`, `//=`...