Programmation avec Xcas ou Python



Documents pareils
Présentation du langage et premières fonctions

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Vérification de programmes et de preuves Première partie. décrire des algorithmes

TP, première séquence d exercices.

MIS 102 Initiation à l Informatique

Cours d Informatique

Statistiques à une variable

Initiation à l algorithmique

La fonction ET et la fonction OU. La Fonction ET

PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE

Scilab pour les vrais débutants

Le prototype de la fonction main()

Travaux Dirigés n 1 : chaînes de caractères

Graph 25+ Pro au lycée

Fonctions de deux variables. Mai 2011

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Compression Compression par dictionnaires

Raisonnement par récurrence Suites numériques

Plus courts chemins, programmation dynamique

FICHIERS ET DOSSIERS

Comment créer et utiliser une fonction

Effectuer une sauvegarde avec Nero BackItUp

Une introduction rapide à Coq

Algorithmique en classe de première avec AlgoBox

Chapitre 10 Lier les Données de Calc

Traitement par lot redimensionner des images

Support de Cours de Langage C. Christian Bac

Programmes des classes préparatoires aux Grandes Ecoles

Initiation aux calculatrices graphiques numériques TI en français TI-82 STATS.fr TI-83 Plus TI-83 Plus SE TI-84 Plus TI-84 Plus SE

Transcription:

Programmation avec Xcas ou Python G. Aldon - J. Germoni - J.-M. Mény IREM de Lyon Mars 2012 GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 1 / 20

Éditeur Xcas Environnement Le texte d un programme s écrit dans l éditeur de programmes de Xcas. GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 2 / 20

Environnement Éditeur Xcas Le texte d un programme s écrit dans l éditeur de programmes de Xcas. Cet éditeur s ouvre par le raccourci alt+p (ou en passant par les menus). GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 2 / 20

Environnement Éditeur Xcas Le texte d un programme s écrit dans l éditeur de programmes de Xcas. Cet éditeur s ouvre par le raccourci alt+p (ou en passant par les menus). Lorsque le texte du programme est tapé, on le valide/compile en cliquant sur la touche OK. GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 2 / 20

Éditeur Python Environnement Il existe plusieurs éditeurs de texte dédiés à Python. GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 3 / 20

Environnement Éditeur Python Il existe plusieurs éditeurs de texte dédiés à Python. Un bon choix sous windows : pythonxy avec l éditeur spyder. Sous Linux, spyder. GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 3 / 20

Environnement Éditeur Python Il existe plusieurs éditeurs de texte dédiés à Python. Un bon choix sous windows : pythonxy avec l éditeur spyder. Sous Linux, spyder. Ou pythonner avec SAGE. GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 3 / 20

Environnement Commenter ses programmes Une bonne habitude : commenter abondamment ses programmes. GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 4 / 20

Environnement Commenter ses programmes Une bonne habitude : commenter abondamment ses programmes. Avec XCAS : ligne commençant par // commentaires longs : ouverture par / et fermeture par /. GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 4 / 20

Environnement Commenter ses programmes Une bonne habitude : commenter abondamment ses programmes. Avec XCAS : ligne commençant par // commentaires longs : ouverture par / et fermeture par /. Avec Python : commencer la ligne par # : commentaire long commençant par et terminé par. GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 4 / 20

Structures de contrôle Boucles et tests Structures POUR et SI avec XCAS Entrer et tester le programme qui suit : Xcas saisir(a,b) ; d :=1 ; pour k de 2 jusque min(a,b) faire si irem(a,k)==0 et irem(b,k)==0 alors d :=k ;fsi ; fpour ; afficher(d) ; Ifékoi? GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 5 / 20

Structures de contrôle Boucles et tests Structures POUR et SI avec Python Entrer et tester le programme qui suit : Python a=input( Entrer un entier positif a ) b=input( Entrer un entier positif b ) d=1 for k in range(2,min(a,b)+1) : if a%k==0 and b%k==0 : d=k print d Ifékoi? GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 6 / 20

Structures de contrôle Fonctions et modularité Conception comme fonction, it s better XCAS Entrer : Xcas pgcd(a,b) :={ local d,k ; d :=1 ; pour k de 2 jusque min(a,b) faire si irem(a,k)==0 et irem(b,k)==0 alors d :=k ;fsi ; fpour ; retourne d ;} : ; On l utilise en entrant par exemple en ligne de commandes : pgcd(12,8). GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 7 / 20

Structures de contrôle Fonctions et modularité Conception comme fonction, it s better XCAS Entrer : Xcas pgcd(a,b) :={ local d,k ; d :=1 ; pour k de 2 jusque min(a,b) faire si irem(a,k)==0 et irem(b,k)==0 alors d :=k ;fsi ; fpour ; retourne d ;} : ; On l utilise en entrant par exemple en ligne de commandes : pgcd(12,8). local : variables connues uniquement dans le champ de calcul de la fonction. GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 7 / 20

Structures de contrôle Fonctions et modularité Conception comme fonction, it s better XCAS Entrer : Xcas pgcd(a,b) :={ local d,k ; d :=1 ; pour k de 2 jusque min(a,b) faire si irem(a,k)==0 et irem(b,k)==0 alors d :=k ;fsi ; fpour ; retourne d ;} : ; On l utilise en entrant par exemple en ligne de commandes : pgcd(12,8). local : variables connues uniquement dans le champ de calcul de la fonction. Différence entre retourne et afficher. GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 7 / 20

Structures de contrôle Fonctions et modularité Conception comme fonction, it s better Python Entrer : Python def pgcd(a,b) : d=1 for k in range(2,min(a,b)+1) : if a%k==0 and b%k==0 : d=k return d On l utilise par exemple en exécutant : print pgcd(132,8) D = pgcd(132,8) (intérêt : réutiliser le résultat!) GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 8 / 20

Structures de contrôle Fonctions et modularité Conception comme fonction, it s better Python Entrer : Python def pgcd(a,b) : d=1 for k in range(2,min(a,b)+1) : if a%k==0 and b%k==0 : d=k return d On l utilise par exemple en exécutant : print pgcd(132,8) D = pgcd(132,8) (intérêt : réutiliser le résultat!) Localité : une variable affectée dans une fonction est locale. GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 8 / 20

Structures de contrôle Fonctions et modularité Conception comme fonction, it s better Python Entrer : Python def pgcd(a,b) : d=1 for k in range(2,min(a,b)+1) : if a%k==0 and b%k==0 : d=k return d On l utilise par exemple en exécutant : print pgcd(132,8) D = pgcd(132,8) (intérêt : réutiliser le résultat!) Localité : une variable affectée dans une fonction est locale. Différence entre return et print. GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 8 / 20

Structures de contrôle Boucles (suites) Bogue, Structure TANT QUE Xcas Pour détecter un bug dans un programme, on affiche en général des valeurs intermédiaires des variables. Exemple. Tester : Xcas ifekoi2(a,b) :={ tantque b!=0 faire si a>b alors a :=a-b ; sinon b :=b-a ; fsi ; afficher(a,b) ; ftantque ; retourne a ;} : ; GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 9 / 20

Structures de contrôle Boucles (suites) Bogue, Structure TANT QUE Python Pour détecter un bug dans un programme, on affiche en général des valeurs intermédiaires des variables. Exemple. Tester : Python def ifekoi2(a,b) : while b!=0 : if a>b : a -= b else : b -= a print a,b return a GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 10 / 20

Les listes avec Xcas. Structures de contrôle Listes Tester : Xcas ifekoi3(a,b) :={ local R,r ; R :=[ ] ; // R est une liste vide tantque b!=0 faire r :=irem(a,b) ; R :=append(r,r) ; // on ajoute r à la liste R a :=b ;b :=r ; ftantque ; retourne R ;} : ; GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 11 / 20

Les listes avec Python. Structures de contrôle Listes Tester : Python def ifekoi3(a,b) : R=[ ] while b!=0 : r=a%b R.append(r) a,b=b,r return R GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 12 / 20

Structures de contrôle Listes Et avec une liste de listes Xcas Écrire une fonction Euclide(a,b) (a et b entiers naturels non nuls) renvoyant une liste T dont les éléments sont des listes contenant les valeurs [ a, b, quotient, reste] de chaque étape de l algorithme. GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 13 / 20

Structures de contrôle Listes Et avec une liste de listes Xcas Écrire une fonction Euclide(a,b) (a et b entiers naturels non nuls) renvoyant une liste T dont les éléments sont des listes contenant les valeurs [ a, b, quotient, reste] de chaque étape de l algorithme. Xcas euclide(a,b) :={ local q,r,t ; T :=[[ a, b, q, r ]] ; tantque b!=0 faire (q,r) :=iquorem(a,b) ; T :=append(t,[a,b,q,r]) ; a :=b ;b :=r ; ftantque ; retourne T ;} : ; GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 13 / 20

Structures de contrôle Listes Et avec une liste de listes Python Écrire une fonction Euclide(a,b) (a et b entiers naturels non nuls) renvoyant une liste T dont les éléments sont des listes contenant les valeurs [ a, b, quotient, reste] de chaque étape de l algorithme. GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 14 / 20

Structures de contrôle Listes Et avec une liste de listes Python Écrire une fonction Euclide(a,b) (a et b entiers naturels non nuls) renvoyant une liste T dont les éléments sont des listes contenant les valeurs [ a, b, quotient, reste] de chaque étape de l algorithme. Python def euclide(a,b) : T=[[ a, b, q, r ]] while b!=0 : q,r=a//b,a%b T.append([a,b,q,r]) a,b=b,r return T GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 14 / 20

Structures de contrôle Récursivité Récursivité Xcas Une fonction récursive est une fonction qui fait un appel à elle-même. Exemple Tester (a et b entiers positifs non nuls) : Xcas polezzi(a,b,n) :={ si n<=0 alors retourne 0 ;fsi ; retourne polezzi(a,b,n-1)+floor(n*b/a) ;} : ; ifekoi(a,b) :={retourne polezzi(a,b,a-1)*2+a+b-a*b ; } : ; GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 15 / 20

Structures de contrôle Récursivité Récursivité Xcas Une fonction récursive est une fonction qui fait un appel à elle-même. Exemple Tester (a et b entiers positifs non nuls) : Xcas polezzi(a,b,n) :={ si n<=0 alors retourne 0 ;fsi ; retourne polezzi(a,b,n-1)+floor(n*b/a) ;} : ; ifekoi(a,b) :={retourne polezzi(a,b,a-1)*2+a+b-a*b ; } : ; Formule de Marcelo Polezzi polezzi(a,b,a 1) calcule b a + 2 b a + 3 b a + + (a 1) b a. ifekoi(a,b) renvoie le pgcd des entiers naturels a et b. GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 15 / 20

Récursivité Python Structures de contrôle Récursivité Une fonction récursive est une fonction qui fait un appel à elle-même. Exemple Tester (a et b entiers naturels) : Python def polezzi(a,b,n) : if n<=0 : return 0 return polezzi(a,b,n-1) + n*b//a def ifekoi(a,b) : return polezzi(a,b,a-1)*2+a+b-a*b GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 16 / 20

Structures de contrôle Récursivité Récursivité Python Une fonction récursive est une fonction qui fait un appel à elle-même. Exemple Tester (a et b entiers naturels) : Python def polezzi(a,b,n) : if n<=0 : return 0 return polezzi(a,b,n-1) + n*b//a def ifekoi(a,b) : return polezzi(a,b,a-1)*2+a+b-a*b Formule de Marcelo Polezzi polezzi(a,b,a 1) calcule b a + 2 b a + 3 b a + + (a 1) b a. ifekoi(a,b) renvoie le pgcd des entiers naturels a et b. GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 16 / 20

Récursivité Structures de contrôle Récursivité Exercice. Donner une version récursive du calcul du pgcd par l algorithme d Euclide. GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 17 / 20

Récursivité Structures de contrôle Récursivité Exercice. Donner une version récursive du calcul du pgcd par l algorithme d Euclide. Xcas pgcd(a,b) :={ si b==0 alors retourne a ;fsi ; retourne pgcd(b,irem(a,b)) ;} : ; Python def PGCD(a,b) : if b==0 : return a return PGCD(b,a%b) GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 17 / 20

Récursivité Structures de contrôle Récursivité Exercice Donner une version récursive du calcul du pgcd d une liste d entiers positifs non nuls (présentant au moins deux éléments). GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 18 / 20

Structures de contrôle Récursivité Récursivité Exercice Donner une version récursive du calcul du pgcd d une liste d entiers positifs non nuls (présentant au moins deux éléments). Xcas pgc(l) :={ si dim(l)==2 alors si L[1]==0 alors retourne L[0] ; sinon retourne pgc([l[1],irem(l[0],l[1])]) ;fsi ; sinon retourne pgc([l[0],pgc(tail(l))]) ; fsi ;} : ; Exemple d utilisation : pgc ([120,3,9]). GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 18 / 20

Récursivité Structures de contrôle Récursivité Exercice Donner une version récursive du calcul du pgcd d une liste d entiers positifs non nuls (présentant au moins deux éléments). Python def pgc(l) : if len(l)==2 : if L[1]==0 : return L[0] else : return pgc([l[1],l[0]%l[1]]) else : return pgc([l[0],pgc(l[1 :])]) Exemple d utilisation : print pgc ([120,3,6]). GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 19 / 20

Récursivité Structures de contrôle Récursivité Et avec les coefficients de Bachet-Bézout : Xcas bezout(a,b) :={ local d,x,y ; si b==0 alors retourne [a,1,0] ;fsi ; [d,x,y] :=bezout(b,irem(a,b)) ; [x,y] :=[y,x-iquo(a,b)*y] ; retourne [d,x,y] ;} : ; Python def bezout(a,b) : if b==0 : return (a,1,0) (d,x,y)=bezout(b,a%b) x,y=y,x-a//b*y return (d,x,y) GA, JG, JMM (IREM de Lyon) programmer xcas python Mars 2012 20 / 20