{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Rappels de première année\n\n"},{"metadata":{"slideshow":{"slide_type":""}},"cell_type":"markdown","source":"## II. Rappels des principales commandes vues en première année "},{"metadata":{},"cell_type":"markdown","source":"###                   II.1 Ce que dit le programme        "},{"metadata":{},"cell_type":"markdown","source":"Toute la richesse du langage Python ne peut pas être entièrement maîtrisée par un étudiant, aussi le paragraphe ci-dessous liste limitativement les éléments du langage Python (version 3 ou supérieure) dont la connaissance est exigible des étudiants.\n\nIl s’agit de la liste des commandes utiles pour les travaux pratiques des deux années de formation.                     "},{"metadata":{},"cell_type":"markdown","source":"####                     Compétences attendues"},{"metadata":{},"cell_type":"markdown","source":"    —  Connaître et savoir manipuler les différents objets de base du langage Python (les entiers, les nombres flottants, \n    les booléens, les chaînes de caractères, les variables). \n\n    —  Savoir programmer en Python : fonctions d’entrée et de sortie, boucles if, … \n\n    —  Savoir définir une fonction en Python. "},{"metadata":{},"cell_type":"markdown","source":"#### Liste des commandes Python exigibles aux concours. "},{"metadata":{},"cell_type":"markdown","source":"    —  Opérations sur les entiers et les flottants : + , -, *, /, ** \n\n    —  Comparaison et connecteurs logiques pour les booléens : ==, >, <, >=, <=,  !=, True, False, and, or, not \n\n    —  Programmation : =, input, print, if, elif, else, def, return, … "},{"metadata":{},"cell_type":"markdown","source":"#### Liste des commandes Python exigibles aux concours"},{"metadata":{},"cell_type":"markdown","source":"     —  Opérations sur les entiers et les flottants : + , -, *, /, **\n     —  Comparaison et connecteurs logiques pour les booléens : ==, >, <, >=, <=,  !=, True, False, and, or, not \n     —  Programmation : =, input, print, if, elif, else, def, return, … "},{"metadata":{},"cell_type":"markdown","source":"### II.2 Les affectations\n\nLa notion de variable est essentielle en informatique. Elle s'articule autour de 3 principes:\n    - stockage d'une information,\n    - accès au contenu du stockage,\n    - modification de l'information stockée.\nDans la pratique, une variable est repérée par son nom auquel on associe une valeur \\pyv{val}. Ce mécanisme d'association nom = val est appelé affectation."},{"metadata":{"trusted":true},"cell_type":"code","source":"a=4\t# crée la variable a et lui affecte la valeur 4\na,b=1,2\t# a vaut 1 et b vaut 2","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"##### Définition - Portée d'une variable:\nLa portée d'une variable est la zone de code dans laquelle la variable vit (on peut récupérer sa valeur, la mettre à jour).\n\n\nIllustrons cette notion, plus subtile qu'il n'y parait, sur des exemples.\n\n#### Exercice I.1:\n1. On considère tout d'abord le programme suivant."},{"metadata":{"trusted":true},"cell_type":"code","source":"a = 1\nb = 1\nfor i in range (3):\n    print(a)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Quel est le résultat produit par ce programme? Commenter."},{"metadata":{},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"2. On ajoute alors les instructions suivantes."},{"metadata":{"trusted":true},"cell_type":"code","source":"def f():\n    b = 2\n    c = 3\n    print(a, b, c)\n    \nprint(b)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Quel est la valeur de b affichée par ce programme? Commenter."},{"metadata":{},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"### II.3 Les Types"},{"metadata":{},"cell_type":"raw","source":"entier | nombres à vigules | booléens | Chaines de caractère | objets matriciels\n int   |      float        |  bool    |         str          |     np.array"},{"metadata":{"trusted":true},"cell_type":"code","source":"type(a)\t# affiche le type de la variable a","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"#### Exemples:"},{"metadata":{"trusted":true},"cell_type":"code","source":"type(45)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"type('Hello there')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"type(3.14159)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"type(['world',24,15.78,[57]])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"type(True)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### II.4 Les fonctions d'entrée et de sortie"},{"metadata":{},"cell_type":"markdown","source":"##### Définition:\nInstructions d'affichage :\n    L'instruction print('Mon message') écrit le message Mon message dans la console.\n    L'instruction print(x) affiche le contenu de la variable x.\n\nInstructions de saisie :\n    L'instruction x=input('Mon message') écrit le message Mon message dans la console puis donne la main à l'utilisateur pour qu'il rentre la valeur à affecter à la variable x.\n    \n######  Remarques:\n    - L'instruction print(x,y,z) provoque l'affichage des contenus des variables x,y,z dans cet ordre sur une même ligne. Il est aussi possible de combiner affichage de messages et affichage de contenus de variables."},{"metadata":{},"cell_type":"markdown","source":"#### Exemple:"},{"metadata":{"trusted":true},"cell_type":"code","source":"print('Hello there')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"n = int(input('Entrer n :'))\nprint('Le nombre qui suit ',n,' est ',n+1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"markdown","source":"    - Attention : en faisant x=input ('Mon message'), la valeur entrée par l'utilisateur et affectée à la variable x est systématiquement de type chaîne de caractères str. Si on veut un entier ou un nombre flottant, il faudra utiliser les commandes int et float."},{"metadata":{"trusted":false},"cell_type":"markdown","source":"#### Exercice I.2: \n1.a Exécuter l'instruction ci-dessous:    "},{"metadata":{"trusted":true},"cell_type":"code","source":"a=input('Entrer un nombre: ')\ntype(a)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"markdown","source":"1.b Que remarquez-vous?"},{"metadata":{"trusted":false},"cell_type":"raw","source":""},{"metadata":{"trusted":false},"cell_type":"markdown","source":"2.a Exécuter les instructions ci-dessous:"},{"metadata":{"trusted":true},"cell_type":"code","source":"a=int(input('Entrer un entier: '))\ntype(a)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"a=float(input('Entrer un nombre: '))\ntype(a)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"a=eval(input('Entrer un contenu de type quelconque: '))\ntype(a)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"markdown","source":"    2.b Commenter chaque résultat. (Pour la dernière instruction, on fera varier le type du contenu)."},{"metadata":{},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"### II.5 – Instructions conditionnelles\n\n##### Définition:\nPour effectuer un bloc d’instructions sous certaines conditions, on utilise une boucle if.\nVoici la syntaxe :"},{"metadata":{"trusted":true},"cell_type":"code","source":"if condition1 :\n    instructions1\nelif condition2\n    instructions2\n...\nelif condition𝑘−1\n    instructions𝑘−1\nelse :\n    instructions𝑘","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Si la condition1 est vraie, le premier bloc d’instructions (instructions1) est effectué.\nSi la 𝑐𝑜𝑛𝑑𝑖𝑡𝑖𝑜𝑛1 est fausse, on fait un deuxième test.\n    Si la condition2 est vraie, le deuxième bloc d’instructions (instruction2) est effectué.\n    \n    Ce procédé est répété jusqu’à la condition𝑘−1.\n\n        Si la condition𝑘−1 est vraie, le bloc d’instructions (instructions𝑘−1) est effectué.\n        Si la condition𝑘−1 est fausse, le dernier bloc d’instructions (instructions𝑘) est effectué.\n\nRemarques :\n— Il faut penser aux deux points après chaque condition et après le else.\n— Bien respecter l’indentation : c’est elle qui permet à Python de reconnaître le bloc d’instructions à exécuter et où se termine la structure conditionnelle. Une fois les instructions écrites, si l’on doit poursuivre le script, on revient au même niveau d’indentation que le if"},{"metadata":{},"cell_type":"markdown","source":"#### Exemple:\nTaper dans l'éditeur de texte le script suivant puis l'exécuter. Que calcule-t-il ?"},{"metadata":{"trusted":true},"cell_type":"code","source":"a = float(input('Entrer un réel a : '))\nif a >= 0 :\n    print(a)\nelse :\n    print(-a)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"#### Exercice I.3:\n1. Décrire le déroulement du programme ci-dessous."},{"metadata":{"trusted":true},"cell_type":"code","source":"k=int(input('Quel est votre age ?'))\nif k<=12 :\n    print('vous avez droit au menu enfant !')\nelif k>12 and k<= 18 :\n    print('vous avez droit au menu spécial jeune !')\nelse :\n    print(\"vous n'avez droit à rien !\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"    2. Que se passe-t-il si l'utilisateur entre la valeur 10 ? la valeur 18 ? la valeur 25 ?"},{"metadata":{},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"#### Exercice I.4:\nCompléter le programme ci-dessous qui demande trois réels $a, b$ et $c$ et qui affiche le nombre de racines réelles du polynôme du second degré $$P: x \\longmapsto a x^{2}+b x+c.$$ \n\nSelon les cas, le programme devra afficher le message « $P$ n'admet pas de racine », « $P$ admet une racine » ou « $P$ admet deux racines »."},{"metadata":{"trusted":true},"cell_type":"code","source":"a = float(input('Donner une valeur non nulle pour a : '))\nb = ... ... 'Donner une valeur pour b : '\nc = ... ... 'Donner une valeur pour c : '\nd = b^2-4*a*c\nif ... :\n    print('P admet deux racines racines réelles.')\nelif ... :\n    print('P admet une racine réelle.')\nelse :\n    print('P admet zero racine réelle.')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### II.6 Les fonctions\n##### Définition:\n    - La commande"},{"metadata":{"trusted":true},"cell_type":"code","source":"def nom(x) :\n    instructions\n    return ...","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"permet de créer une fonction, nommée ici \\pyv{nom}, qui à chaque variable \\pyv{x} associe la quantité définie après le return.\n    \n    - Une fonction peut posséder plusieurs variables. L'en-tête est alors def nom(x1,x2,...,xn) :\n\n#### Exemple:\nPour définir la fonction $f: x \\in \\mathbb{R} \\longmapsto x^{2}+2 x+1$, recopier le script suivant dans l'éditeur de texte :"},{"metadata":{"trusted":true},"cell_type":"code","source":"def f(x) :\n    return x**2 + 2*x + 1","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Après avoir exécuté, on peut alors utiliser cette fonction dans la console. Taper par exemple :"},{"metadata":{"trusted":true},"cell_type":"code","source":"f(1), f(0), f(-1)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"##### Remarques:"},{"metadata":{},"cell_type":"markdown","source":"    - Toujours la même remarque : attention aux deux points et à l'indentation !\n    \n    - Les fonctions seront systématiquement à définir dans l'éditeur de texte. Une fois qu'une fonction a été chargée (le script qui la contient a été sauvegardé et exécuté), elle est disponible jusqu'à la fin de la session. Elle peut donc être appelée par son nom dans la console ou dans une autre fonction. L'appel de la fonction dans la console provoque l'affichage de la valeur retournée.\n    \n    - Les variables utilisées dans le corps d'une fonction sont des variables locales : elles n'existent pas à l'extérieur de la fonction.\n    \n    - Lorsqu'on définit une fonction, inutile d'ajouter les fonctions d'entrée et de sortie input et print à celle-ci. L'utilisateur est censé connaitre l'argument à rentrer pour la fonction. Python renverra le contenu des variables placées après le return.\n\nDans l'exemple précédent, l'utilisateur rentre donc un entier ou un flottant à la fonction f , et Python renvoie le résultat du calcul donné après le return en sortie.\n\n    - L'instruction return arrête le déroulement de la fonction. Si cette instruction est rencontrée, le programme s'arrête donc (en affichant le contenu de la variable à retourner) et le code situé après le return ne s'exécutera pas."},{"metadata":{},"cell_type":"markdown","source":"#### Exemple:\nRecopier la fonction suivante dans l'éditeur de texte :"},{"metadata":{"trusted":true},"cell_type":"code","source":"def minimum(x,y) :\n    if x<=y :\n        return x\n    else :\n        return y","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Enregistrer et exécuter cette fonction puis tester la sur quelques exemples."},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"#### Exercice I.5 - (La valeur absolue):\nDéfinir une fonction valabs, qui prend en entrée un flottant et qui renvoie sa valeur absolue."},{"metadata":{"trusted":true},"cell_type":"code","source":"def valabs(x) :\n    if ... :\n        return ...\n    else :\n        return ...","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"#### Exercice I.6 - Fonctions et fonction:"},{"metadata":{},"cell_type":"markdown","source":"1. Compléter la fonction $f$ suivante sur Python qui définit la fonction : $$f: x \\mapsto\\left\\{\\begin{array}{cl} \\dfrac1x & \\text{ si } x \\neq 0, \\\\ 0 & \\text{ sinon.}\\end{array}\\right.$$"},{"metadata":{"trusted":true},"cell_type":"code","source":"def f(x) :\n    if ... :\n        return ...\n    else :\n        return ...","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"2. On donne le script suivant :"},{"metadata":{"trusted":true},"cell_type":"code","source":"def g(x) :\n    if x<-1 :\n        y=-2\n    if x>=-1 and x<=1 :\n        y=2 * x\n    if x>1 :\n        y=2\n    return y","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"    2.a Déterminer l'expression mathématique de la fonction $g$ ainsi définie."},{"metadata":{},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"    2.b Proposer un script analogue au précédent qui utilise elif."},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"}},"nbformat":4,"nbformat_minor":2}