Algorithmes au lycée : Python ? Vincent Tolleron Juin 2014 Table des matières 1
Algorithmes au lycée : Python ? Vincent Tolleron Juin 2014 Table des matières 1 Introduction 3 2 Présentation rapide de python 3 3 Un peu de mauvaise foi pour commencer 3 4 Niveau 1 : prise en main 5 5 Niveau 2 : maîtrisons la bête 9 6 Niveau 3 : soyons fous et allons encore plus loin ! 12 7 Tableaux de synthèse 25 1 Table des matières Table des matières Toutes les images sont la propriété de leurs auteurs respectifs. Cette œuvre est mise à dis- position selon les termes de la Licence Creative Commons Attribution - Pas d’utilisation Commerciale - Partage à l’identique 3.0 non transposé. © 2014 Vincent Tolleron Vous êtes libre de reproduire, distribuer, communiquer et adapter l’œuvre selon les condi- tions suivantes : • Vous n’avez pas le droit d’utiliser cette œuvre à des fins commerciales. • Si vous modifiez, transformez ou adaptez cette œuvre, vous n’avez le droit de distribuer votre création que sous une licence identique ou similaire à celle-ci. Ce document a été réalisé avec le système de composition L AT EX. Python au lycée 2 Stage TICE 3 UN PEU DE MAUVAISE FOI POUR COMMENCER 1 Introduction Ce document se veut une introduction au langage de programmation python. Le propos n’est pas d’être exhaustif (la documentation officielle de Python, quantité d’ouvrages ou de documents sur le net le sont), mais de proposer une première approche — destinée aux enseignants et aux élèves — d’un langage de programmation moderne. Les sections de ce document vont par niveau de « difficulté » croissante. Dans le cadre d’une utilisa- tion avec les élèves (et notamment d’une alternative à Algobox) on peut se contenter du niveau 1. Le contenu de ces page est en grande partie issu du cours dispensé aux terminales scientifiques suivant la spécialité ISN 1 du lycée Frantz Fanon, à Trinité (Martinique). Des erreurs peuvent sub- sister dans ce document, le lecteur voudra bien m’en excuser et me les signaler le cas échéant (vincent.tolleron@me.com). Je ne suis pas informaticien mais professeur de mathématiques, aussi les « professionnels de la profession » voudront bien me pardonner les quelques approxima- tions que j’ai pu commettre. 2 Présentation rapide de python La petite histoire • Date de naissance : 1990 • Père : Guido Van Rossum (Pays-Bas) • Pourquoi Python ? À cause de la série humoristique britannique Monty Python Caractéristiques de Python 2 • langage de haut niveau • portable sur tous les systèmes d’exploitation • typage dynamique : pas besoin de déclarer le type des variables ! • extensible (interfaçable avec d’autres bibliothèques et modules) • sous licence libre • syntaxe « très simple » • multiparadigme : impératif et orienté-objet • interprété et/ou pré-compilé puis interprété 3 Un peu de mauvaise foi pour commencer Comparaison C/Java/Algobox/Python Les quatre programmes suivants calculent 1000 X n=1 1 n2 et affichent le résultat. 1. Informatique et Sciences du Numérique 2. si vous ne comprenez pas tous les mots de ce petit paragraphe, ce n’est pas très grave Python au lycée 3 Stage TICE 3 UN PEU DE MAUVAISE FOI POUR COMMENCER En C # include <stdio.h> double Invsqr(double n) { return 1/(n*n); } int main(int argc, char *argv[]){ int i, start=1, end=1000; for(i=start ; i<= end; i++) sum +=Invsqr((double)i); printf("%16.14f\",sum); return 0; } En Java public class Sum{ public statif double f(double x){ return 1/(x*x); } public statif voir main(String[] args){ double start=1; double end=1000; sum=0; for(double x=start ; x<=end , x++) sum+=f(x); System.out.println(sum); } } En Algobox 1 VARIABLES 2 i EST_DU_TYPE NOMBRE 3 sum EST_DU_TYPE NOMBRE 4 DEBUT_ALGORITHME 5 sum PREND_LA_VALEUR 0 6 POUR i ALLANT_DE 1 A 1000 7 DEBUT_POUR 8 sum PREND_LA_VALEUR sum+1/(i*i) 9 FIN_POUR 10 AFFICHER sum 11 FIN_ALGORITHME En Python print (sum(1/(x*x) for x in range(1,1001))) Python au lycée 4 Stage TICE 4 NIVEAU 1 : PRISE EN MAIN 4 Niveau 1 : prise en main 4.1 Installation • On utilisera la dernière version : 3.4.1 • On peut aussi travailler avec la 2.7.7 (quelques différences, mais davantage de modules dispo- nibles). ◦Linux : c’est déjà là ! ◦Mac Os : c’est déjà là, mais on peut installer une version plus récente, et surtout l’IDLE (voir plus loin). ◦Windows : faut installer, mais vous devriez en être capable. • Pour tout cela, une seule adresse : https://www.python.org/download/ 4.2 Python comme calculette Python comme calculette : les opérations de base On lance l’application IDLE (Integrated DeveLopment Environment 3) Code >>> 15+11 26 >>> 7-3*5 -8 >>> (2-3)*4+2 -2 Jusqu’ici, tout va bien ... Code >>> 5,2-1 (5,1) >>> 3,2-1,2 (3,1,2) ? ? ? ? ? ? ? ? ? ? Never forget that most of the programming languages speak english ! Le nombre « 5 virgule 2 » s’écrira donc 5.2 en Python (et en C, Java, etc.) Code >>> 14/3 4.666666666666667 Il s’agit de la division décimale. Si on veut le quotient dans la division euclidienne de 14 par 3 : Code >>> 14//3 4 Et si on veut le reste dans cette division ? Facile ! Il suffit d’utiliser l’opérateur modulo : % 3. ou un hommage à Eric Idle, un des co-fondateurs des Monthy Python Python au lycée 5 Stage TICE 4.3 Python pour « faire tourner » des algorithmes 4 NIVEAU 1 : PRISE EN MAIN Code >>> 14 % 3 2 Pour obtenir des puissances : Code >>> 2**3 8 >>> 1.05**12.5 1.8402051355485856 Python manipule les nombres complexes : Code >>> (1+1j)**2 2j >>> 1/(1+1j) (0.5-0.5j) On veut plus de maths ! Pas de panique, tout est prévu, il suffit d’importer au début de la session (ou du programme) le module math : Code >>> from math import * Toutes les fonctions, constantes, etc. du module math seront alors disponibles : Code >>> sqrt(4) 2.0 >>> cos(pi) -1.0 >>> exp(1) 2.718281828459045 Attention le logarithme népérien se note log : Code >>> log(2) 0.6931471805599453 Pour le logarithme décimal : Code >>> log(2,10) 0.30102999566398114 4.3 Python pour « faire tourner » des algorithmes Dans IDLE, on va quitter le mode « shell » (interprété) pour le mode « compilé » : • Menu File →New Window • On tape ensuite son programme en entier. • On sauvegarde. • On compile (Menu Run →Run Module ou F5) Python au lycée 6 Stage TICE 4.3 Python pour « faire tourner » des algorithmes 4 NIVEAU 1 : PRISE EN MAIN • Toute ligne de code commençant par # est un commentaire, ignoré lors de l’exécution du pro- gramme. • Un bon programme doit être abondamment commenté ! Un premier exemple qui parle de lui même Exercice. Calculer et afficher les 20 premiers termes de la suite (un) définie pour tout n ∈N par u0 = 0 et un+1 = p1+un. Code from math import * u=0 for i in range(20): print(u) u=sqrt(1+u) Analyse de l’exemple • ligne 1 : importation du module math • ligne 2 : on affecte à une variable u la valeur 0 • ligne 3 : début de la boucle « pour » • ligne 4 : affichage du terme courant • ligne 5 : calcul du terme suivant, affectation au terme courant, et fin de la boucle Premières remarques • les variables utilisées (ici u et i) ne sont pas à déclarer • l’affectation d’une valeur à une variable se fait au moyen du symbole = • range(20) correspond à la liste des entiers naturels de 0 jusqu’à 19 (20 est donc exclu) • pas de ; à la fin des lignes • pas de « end » à la fin de la boucle Le code obtenu est ainsi plus concis que dans la plupart des autres langages de programmation. Parfait, mais ... • s’il y a une deuxième boucle après ? • s’il y a une boucle dans une boucle ? • comment fait python pour s’y retrouver ? L’indentation • En Python, les blocs d’instructions ne sont pas délimités par des mots (endIf, enfFor) ni des sym- boles ( ; en C), mais par des lignes indentées (décalées) d’un nombre fixe de caractères (4 espaces ou une tabulation en général). • On peut indenter « à la main » en appuyant 4 fois sur la barre espace, ou une fois sur la touche de tabulation. • Les bons éditeurs de code feront cela automatiquement. • Une mauvaise indentation va provoquer des erreurs. Un petit exercice Qu’affichera le programme suivant (on ne triche pas ...) ? Python au lycée 7 Stage TICE 4.3 Python pour « faire tourner » des algorithmes 4 NIVEAU 1 : PRISE EN MAIN Code for i in range(3): print(i) for j in range(2): print(i+j) Un petit exercice Déterminer le plus petit entier n à partir duquel 1,05n > 100000 Code solution n=0 while 1.05**n<= 100000: n=n+1 print("le plus petit entier cherché est: ",n) • <= signifie É • dans une boucle while, l’incrémentation n’est pas automatique Un test Code for a in range(20): if a%3 == 0: print(a,'est multiple de 3') elif a%3==1: print(a,'est congru à 1 uploads/s3/ intro-python.pdf
Documents similaires










-
31
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Oct 12, 2021
- Catégorie Creative Arts / Ar...
- Langue French
- Taille du fichier 0.6921MB