Mise à niveau Lycée Faidherbe 2014-2015 Table des matières 1 Maple et Python 2 2 Présentation de Python 2.1 Premiers pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Éditeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 3 3 Syntaxe de Python 3.1 Fonctions . . . . . . . . . 3.2 Tests . . . . . . . . . . . . 3.3 Boucles conditionnelles . 3.4 Boucles for . . . . . . . . 4 4 5 6 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Informatique commune, deuxième année 1 Lycée Faidherbe Maple et Python L’ancien programme demandait l’utilisation de Maple. Dans le nouveau programme la partie informatique est plus développée et utilise Python. Nous allons faire la transition. Différences • Maple est fait avant tout pour faire des calculs : – calculs numériques – calculs formels alors que Python est un langage de programmation. Il peut faire en partie les mêmes calculs mais il faut charger des modules externes. Par contre Python peut faire beaucoup de choses que Maple ne fera pas • Maple est payant Similitudes On écrit dans Maple et Python des fonctions avec un langage de programmation impératifs : ces langages sont proches dans leur principes mais ont des différences. Les différence que nous verrons sont surtout d’ordre syntactique. Ces deux langages : • permettent des branchements par test : if • permettent de faire des boucles : for ou while • permettent l’écriture de fonctions qui évitent de ré-écrire les mêmes instructions • utilisent des données sous forme d’un tableau rassemblant plusieurs données et accessibles une par une • peuvent être enrichis par l’ajout de modules supplémentaires 2 2.1 Présentation de Python Premiers pas Ouvrir un éditeur adapté à Python : Spyder (ou Pyzo). On y voit plusieurs fenêtres : • la console, [A], c’est l’interpréteur où sont entrés les commandes python et affichés les résultats • l’éditeur, [B], qui permet d’écrire les programmes et de les modifier • des fenêtres d’utilitaires qui nous n’utiliserons pas pour l’instant. Exercice 1 Entrer dans la console diverses commandes : • 1+1 2 Mise à niveau Lycée Faidherbe • • • • • • Informatique commune, deuxième année sin(2) a=1 a a=a+1 nom = ’****’ (écrivez votre nom) print(’Bonjour’ + nom) 2.2 Éditeur Dans la fenêtre de l’éditeur ajouter la ligne : print(’Hello world’) Sauver le fichier, toujours même si Spyder sauve à chaque envoi Pour sauver créer un répertoire dans votre emplacement sur le réseau Il faut maintenant envoyer le fichier dans la console : pour cela • l’icône du bonhomme qui court • ou l’item exécuter du menu exécuter • ou le raccourci clavier (F5) Notre premier script Python ! Il se peut que spyder vous pose alors des renseignements sur le mode d’execution. Il faut alors cocher la première ligne des choix de l’interpéteur : Exécuter dans l’interpréteur Python ou iPython actif. Dans la pratique dès que l’on veut faire exécuter plus d’une ligne il faut écrire nos instructions dans l’éditeur puis sauvegarder puis faire exécuter. Tout se passe comme si on avait écrit les instructions dans la console. Tout ? Presque ... Essayer dans la console puis dans l’éditeur >>> a = 1 >>> a L’invocation d’une fonction (une variable est une fonction dont le résultat est la valeur) fait toujours effectuer le calcul mais n’affiche le résultat que si l’on est dans la console. Nous verrons un autre exemple plus tard. 2.3 Variables L’essentiel du travail effectué par un programme consiste à manipuler des données. Ces données sont stockées dans la mémoire et sont connues de l’ordinateur par l’adresse de stockage. La langages de programmation permettent de les manipuler par un nom. Il faut choisir un nom de préférence assez court mais aussi explicite que possible. Il ne peut contenir que des lettres (minuscules ou majuscule, python fait la différence, des chiffres (pas en première place) ou le caractères _ L’affectation est l’opération qui associe une valeur à une variable. a = b+c Mise à niveau 3 Informatique commune, deuxième année Lycée Faidherbe • Le résultat du membre de droite est calculé. Il faut que les variables utilisées aient déjà été définies. Le résultat est alors stocké dans un emplacement mémoire à l’adresse ad. • Si la chaîne de caractère de gauche est un nom légitime de variable, le logiciel examine si ce nom existe déjà. S’il ne l’est pas il est ajouté à la liste des noms. • ad est associé au nom de la variable et remplace éventuellement l’ancienne adresse. Les variables python ont un type déterminé lors de l’affectation. • float : ce sont des réels (en fait des décimaux). Ils sont combinables avec les opérations usuelles +, -, *, /, ** (exponentiation) et python contient beaucoup de fonctions usuelles (dans le module math : import math) • int : ce sont les entiers. Il n’y a pas de limite en python. La division entière se note //, le reste de la division (modulo) se note % • bool : ce sont les booléens qui peuvent prendre la valeur True ou False (noter la majuscule). Types composés Python définit d’autres types de variables qui sont des assemblages de variables (qui ellesmêmes peuvent être composées). Les variables composées que nous étudierons permettent un accès direct à chaque composante : cela se fait toujours de la même façon sous la forme x[i] avec i décrivant l’ensemble {0, 1, . . . , n − 1} où n est le nombre d’éléments assemblés. Ce nombre n est la longueur de la variable, accessible avec la fonction len(x). • Les chaînes de caractères sont des assemblages non modifiables de caractères. On peut les combiner par + nom = "Eric Détrez" • Les listes sont des tableaux de taille variable. On peut modifier chaque élément. On peut ajouter un élément à la fin par append. >>> l = [4,5,3] >>> l[1] = 7 >>> l [4,7,3] >>> l.append(2) >>> l [4,7,3,2] 3 Syntaxe de Python 3.1 Fonctions Une fonction est un assemblage d’instructions qui peut être appelé avec des paramètres et qui peut renvoyer un résultat. Même si elle ne renvoie pas de résultat une fonction peut avoir une action : • imprimer à l’écran • enregistrer un fichier • modifier une liste . . . Par contre le résultat d’une fonction n’est pas affecté a-priori à une variable : c’est l’utilisateur qui doit le faire. L’écriture d’une fonction est : def nom_fonction(param1,param2,...): """Documentation de la fonction qui peut etre sur plusieurs lignes""" instruction1 instruction2 ... 4 Mise à niveau Lycée Faidherbe Informatique commune, deuxième année instructionk return resultat Exemples def somme(a,b): return a+b def echange(liste,i,j): """ Echange, dans la liste l, les termes d’indices i et j. On doit avoir 0 <= i,j < len(liste)""" tampon = l[i] l[i] = l[j] l[j] = tampon Exercice 2 • Écrire une fonction qui calcule la norme d’un vecteur rentré sous la forme x,y,z. Racine carrée : math.sqrt • Transformer pour un vecteur écrit sous une forme de liste de longueur 3 • Écrire une fonction qui transforme un temps en secondes en jours, heures, minutes, secondes 3.2 Tests L’instruction if permet de vérifier des conditions avant d’exécuter un bloc. Sa forme la plus simple est : if condition: instruction1 ... instructionk instructions Les instructions 1 à k ne sont effectuées que si la condition est vérifiée. Les autres instructions sont toujours effectuées. Noter qu’il n’y a pas de then Bien entendu on souhaitera souvent traiter les deux cas d’un test : il y a donc la possibilité d’un else if condition: instructions_a else: instructions_b instructions Il faut respecter les positions horizontales : if et else au même niveau, blocs indentés. Si on veut inclure d’autres tests on peut utiliser un elif qui simplifie else: if condition2 if condition1: instructions_a elif condition2: instructions_b elif condition3: Mise à niveau 5 Informatique commune, deuxième année Lycée Faidherbe instructions_c else: instructions_d instructions Exemple def resultatBac(note): if note < 8: print("Recale") elif note < 10: print("Admis a passer l’oral") elif note < 12: print("Admis") elif note < 14: print("Mention assez bien") elif note < 16: print("Mention bien") else: print("Mention tres bien") Exercice 3 • Écrire une fonction qui détermine les racines réelles d’un polynôme de degré 2 donné sous la forme des coefficients a, b et c avec P (X) = aX 2 + bX + c. • Écrire une fonction max2 qui renvoie le maximum de deux entiers puis l’utiliser pour écrire une fonction max3 qui renvoie le maximum de trois entiers. • Écrire une fonction qui trie une liste de 4 entiers. 3.3 Boucles conditionnelles Une condition peut aussi être un indicateur qui décide si on répète une suite d’instruction : "Tant que le clou n’est pas enfoncé on tape avec le marteau" while condition: instructions C’est une instruction dangereuse car il est difficile parfois de prouver qu’elle s’arrête. Exemple def collatz(n): while n > 1: if n % 2 == 0: n = n//2 else: n = 3*n + 1 print(n) 6 Mise à niveau Lycée Faidherbe Informatique commune, deuxième année Exemple important def dichotomie(f,a,b,epsilon): """ Recherche du zero de f entre a et b f est continue et f(a).f(b)<0 On renvoie c tel que f s’annule entre c - epsilon/2 et c + epsilon/2""" min = a max = b while max- min > epsilon c = (min + max)/2 if f(min)*f(c) < 0: max = c else: min = c return (min + max) /2 Exercice 4 • En modifiant le programme collatz écrire une fonction hauteur qui calcule la valeur maximale qu’atteint la suite des entiers à partir de n dans le calcul. hauteur(30) = 160, hauteur(27) = 9232 • Écrire une fonction qui calcule, pour un entier n > 0, l’entier p tel que 2p à n < 2p+1 : on ne le calculera pas par la partie entière de log2 (n). p • Écrire une fonction qui simplifie une fraction q . Par exemple simplifie(3,12) devra renvoyer (1,4). 3.4 Boucles for L’autre type de boucle est celle que l’on fait en sachant à l’avance combien de fois on va la faire. Classiquement un indice entier prend les valeurs entre a et b, éventuellement avec un pas différent de 1. L’écriture en python est particulière : for i in range(a,b,k): instructions Si k est omis il prend la valeur 1 (valeur par défaut) ; dans ce cas a peut être omis aussi (la valeur par défaut est 0. Dans cette instruction range va donner à i les valeurs a, a + k, . . ., a + pk successivement avec a + pk < b à a + (p + 1)k : la valeur b n’est jamais attribuée. Par exemple for i in range(5): print(i) imprimera à l’écran tous les entiers de 0 à 4. Mise à niveau 7 Informatique commune, deuxième année Lycée Faidherbe Cette construction, spécifique à Python, permet un usage plus général de la boucle for. En effet on peut faire parcourir à la variable de boucles tous les élément d’une liste, d’une chaîne de caractères, d’un type composé Exemple def maximum(liste): """Donne le maximum d’une liste supposee non vide""" m = liste[0] for x in liste: if x > m: m = x return m Exercice 5 • Écrire une fonction qui calcule le tableau des hauteurs définie à l’exercice 3 des entiers de 1 à n. On pourra tracer les valeurs : import matplotlib.pyplot as plt plt.plt(hauteurs) • Écrire une fonction qui calcule l’augmentation maximale entre deux valeurs consécutives d’une liste. Par exemple pour l = [10,12,4,7,5,9,3] le résultat doit être 5 = 9-4. 8 Mise à niveau