class: center, middle # Première NSI ## Quelques rappels avant le DS --- # Instructions, Affectations ```python a = 1 # une affectation sans valeur a # une instruction dont la valeur est 1 ``` --- # Types * Toutes les instructions ont un type sont évaluées * Les types courants sont `int, float, bool, str` * Chaque type dispose de ses opérations et fonctions. Les résultats varient ```python 1 + 1 # l'entier 2 "1" + "1" # la chaîne de caractères "11" ``` * Opérations non courantes : * `/` division réelle (`float`) * `//` division entière (`int`) * `%` reste dans la division (`int`) * `**` exposant * Les lignes d'un programme sont exécutées une à une... jusqu'à rencontrer un bloc de code. --- # Structure On a étudié 4 structures différentes : 1. Les conditions avec `if condition:` 2. Les boucles bornées avec `for truc in collection:` 3. Les boucles non bornées avec `while condition:` 4. Les fonctions avec `def func(a):` ## Indentation * Toutes les structures commencent par un mot clé (def, for etc.) et ":" * L'indentation (les espaces en début de ligne) indiquent qu'un code est dans une structure * Quand on revient au niveau d'indentation précédent on quitte la structure --- # if ```python a = 4 if a > 2: b = 3 elif a == 2: b = 4 else: b = 5 ``` Ici, `b` vaut... 3 parce que la condition "`a > 2`" est vraie. --- # for ```python for lettre in "Marcel": print(lettre) ``` Va afficher les lettres, une par ligne ```python somme = 0 for nombre in range(1, 19, 3): somme = somme + nombre ``` `somme` vaut `1 + 4 + 7 + 10 + 13 + 16 = 51` --- # while ```python capital = 1000 nb_mois = 0 while capital <= 2000: capital = capital + 250 nb_mois = nb_mois + 1 ``` Tant qu'on n'a pas atteint 2000, augmente capital de 250 et compte les mois. On aura le nombre de mois nécessaires pour que le capital atteigne 2000. --- # fonctions 1. Une fonction doit être définie (parfois dans python, comme `len`, parfois par nous) 2. Pour faire quelque chose, une fonction doit être appelée 3. Une fonction sans `return` renvoie `None` (rien). 4. _Effet de bord_ : `print` dans une fonction ne fait qu'afficher, c'est différent de **renvoyer**. ```python # définition de la fonction def nom_de_la_fonction(parametre): """ Documentation @param parametre: (int) un entier @return: (int) le triple de cet entier """ return 3 * parametre # on exécute la fonction valeur = nom_de_la_fonction(5) # valeur = 3 * 5 = 15 ```