Introduction à Python et Xcas/Giac



Documents pareils
Algorithmique et Programmation, IMA

Programmation avec Xcas ou Python

STAGE IREM 0- Premiers pas en Python

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Présentation du langage et premières fonctions

TP 1. Prise en main du langage Python

Initiation à la programmation en Python

Cours d algorithmique pour la classe de 2nde

Représentation d un entier en base b


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

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Cours d Algorithmique et de Langage C v 3.0

Algorithmique et programmation : les bases (VBA) Corrigé

Cours d initiation à la programmation en C++ Johann Cuenin

Programmer en JAVA. par Tama

Introduction au langage C

Découverte de Python

Introduction à l algorithmique et à la programmation M1102 CM n 3

Licence Sciences et Technologies Examen janvier 2010

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Recherche dans un tableau

Algorithmes récursifs

Introduction à MATLAB R

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

2 Comment fonctionne un ordinateur, dans les grandes lignes

Projet de programmation (IK3) : TP n 1 Correction

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Organigramme / Algorigramme Dossier élève 1 SI

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

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

L informatique en BCPST

Java Licence Professionnelle CISII,

INF 321 : mémento de la syntaxe de Java

1.6- Génération de nombres aléatoires

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Les bases du langage Python

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Utilisation d objets : String et ArrayList

Programmation C++ (débutant)/instructions for, while et do...while

TRIGONOMETRIE Algorithme : mesure principale

Programmation Web. Madalina Croitoru IUT Montpellier

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Aide - mémoire gnuplot 4.0

Corrigé des TD 1 à 5

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

ALGORITHMIQUE ET PROGRAMMATION En C

1 Recherche en table par balayage

Plan du cours. Historique du langage Nouveautés de Java 7

Chapitre 2 Devine mon nombre!

Fiche PanaMaths Calculs avec les fonctions sous Xcas

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Analyse de sécurité de logiciels système par typage statique

Feuille TD n 1 Exercices d algorithmique éléments de correction

Notions fondamentales du langage C# Version 1.0

Bases de programmation. Cours 5. Structurer les données

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

I. Introduction aux fonctions : les fonctions standards

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

SUPPORT DE COURS. Langage C

Compilation (INF 564)

Perl Orienté Objet BioPerl There is more than one way to do it

Initiation à l algorithmique

MIS 102 Initiation à l Informatique

CORRECTION EXERCICES ALGORITHME 1

Conventions d écriture et outils de mise au point

TP, première séquence d exercices.

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

UE Programmation Impérative Licence 2ème Année

Programmation système I Les entrées/sorties

ACTIVITÉ DE PROGRAMMATION

Initiation à LabView : Les exemples d applications :

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Calcul Formel et Numérique, Partie I

4. Groupement d objets

Algorithme. Table des matières

LES TOUT PREMIERS PAS

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Correction TD algorithmique

Les chaînes de caractères

Premiers Pas en Programmation Objet : les Classes et les Objets

TD3: tableaux avancées, première classe et chaînes

Cours Informatique Master STEP

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr


Cours 7 : Utilisation de modules sous python

1. Structure d'un programme FORTRAN 95

Le langage C. Séance n 4

Transcription:

Chapitre 1 Introduction à Python et Xcas/Giac 1.1 Présentation, Installation et documentation Sur le site du jury du capes http://capes-math.org/index.php?id=epreuves-orales, on trouve un paquet python2.7 qui contient en particulier l éditeur idle capable de trouver la documentation officielle 1 de python sans connexion internet. C est pourtant souvent plus simple de débuter avec un livre. Par exemple le début du livre de Xavier Dupré. (Une version modifiée est disponible sur sa page http://www.xavierdupre.fr/mywiki/initiationpython) Xcas est l interface graphique du logiciel et de la librairie giac (cf http://www-fourier. ujf-grenoble.fr/~parisse/giac.html). Sa documentation interne est tres importante, on peut aussi utiliser : menus par thèmes, complétion par tabulation, bulles d aide pour la saisie des arguments d une fonction 2 ou recherche par mot clef 3. 1.2 Types et affectations En python et dans xcas il existe de nombreux types différents. En revanche il n y a pas de déclaration de types ni de définition des variables. C est au moment de l affectation qu une variable obtient un type (typage dynamique). Les variables déclarées dans une fonction ont une portee locale. 1.2.1 Types élémentaires Les entiers, les entiers de taille arbitraire, les flottants, les booléens, les chaines de caractères. IDLE 2. 6. 6 >>> a=2 4 # l a v a r i a b l e a r e c o i t l a v a l e u r 2 4 >>> a 16 >>> 2 64 # 2 64 18446744073709551616L >>> 0.3 64 3.4336838202925044 e 34 >>> 5==5 # On f a i t a p p a r a i t r e l e booleen v r a i en comparant 5 e t 5 True >>> a= debut du t e x t e # on d e f i n i t une chaine de c a r a c t e r e >>> b= et l a s u i t e # on a l e choix pour d e l i m i t e r l a chaine e n t r e ou >>> a+b # on j u x t a p o s e l e s deux chaines a e t b debut du t e x t e et l a s u i t e >>> a= Dans une chaine d e l i m i t e e par \ i l e s t i n u t i l e de p r o t e g e r l e s >>> a 1. identique à celle ci http://docs.python.org/release/2.7.2 2. Ex : on tape : int( puis on attend sans bouger la souris que la bulle apparaisse 3. Ex : bien que pgcd ne soit pas un nom de fonction xcas, taper?pgcd permet de trouver la bonne instruction. 1

Dans une chaine d e l i m i t e e par i l e s t i n u t i l e de p r o t e g e r l e s \ >>> p r i n t a Dans une chaine d e l i m i t e e par i l e s t i n u t i l e de p r o t e g e r l e s Sous xcas, l affectation se fait avec := alors que pour python c est =. En revanche de nombreux opérateurs valables en python font parties des syntaxes possibles sous xcas. 0>> a :=2 64 // Dans xcas l a f f e c t a t i o n e s t d i f f e r e n t e, c e s t := 18446744073709551616 1>> 2ˆ64 //on peut a u s s i u t i l i s e r 2ˆ64 pour 2 64 18446744073709551616 2>> 5==5; / I l n y a pas de type booleen, ce sont des e n t i e r s : 1 ou 0. / 1 3>> c := ne pas u t i l i s e r l e s pour d e l i m i t e r l e s c h a i n e s dans xcas. ; type ( c ) ; DOM STRING 4>> 2+2 ; type ( 2+2 ) ; e v a l ( 2+2 ) // c e s t r e s e r v e pour ne pas e v a l u e r une e x p r e s s i o n. c f forme i n e r t e 2+2,DOM SYMBOLIC, 4 Exercice 1.2.1 En python et dans xcas, utiliser la fonction type() sur les deux entiers ci dessus. Etudier dans les deux logiciels les résultats et le type des entrées suivantes : 1/3, 1.0/3, (1.0/3)**2000? Trouver (éventuellement dans l aide) une fonction permettant de convertir un entier en un décimal. (Ex 2 en 2.0) Dans quel cas les logiciels diffèrent ils? Trouver dans xcas comment faire apparaitre une valeur approchée de 1/3 avec 100 chiffres. affectation puissance reste commentaires Python = ** 2/3 2.0/3 # giac ou Xcas := ˆ ou ** irem(2,3) 2.0/3 // ou /* */ 1.2.2 Séquences : T-uples, listes, ensembles, dictionnaires On utilisera essentiellement les listes. On retiendra juste l existence des ensembles et dictionnaires et comment s informer rapidement sur ces notions dans la documentation en cas de besoin. >>> a =(11,22, peu importe, 4 4, 1 1 ) # un t u p l e. Ses e n t r e e s ne sont pas m o d i f i a b l e s. >>> a [ 0 ] 11 >>> b =[11,22, peu importe l e type,44,11, range ( 3, 8 ) ] # une l i s t e. >>> b [ 1 ] = 2 2 2 ; b #Les e n t r e e s d une l i s t e sont m o d i f i a b l e s. [ 1 1, 222, peu importe, 44, 1 1, [ 3, 4, 5, 6, 7 ] ] >>> b [ 0 ], b [ 3 ], b [ 5 ] (11, 44, [ 3, 4, 5, 6, 7 ] ) >>> b [ 5 ] [ 0 ] #L element d i n d i c e 0 de l a l i s t e b [ 5 ]. En python b [ 5, 0 ] e s t i n c o r r e c t. 3 >>> c=s e t ( a ) ; c # on peut c r e e r un ensemble a p a r t i r d une l i s t e ou d un t u p l e s e t ( [ peu importe, 11, 44, 2 2 ] ) >>> c [ 0 ] # I l n y a pas d i n d i c e s pour l e s ensembles en python. Traceback ( most r e c e n t c a l l l a s t ) : F i l e <stdin >, l i n e 1, in <module> TypeError : s e t o b j e c t does not support indexing >>> bureau={ han : 9D11, hermann : 9D23, d a n i l a : 9D3, 1 1 2 : pas de bureau >>> bureau [ hermann ] #on a cree un d i c t i o n n a i r e. On accede aux elements 9D23 >>> bureau [ 1 1 2 ] #par des o b j e t s de type quelconque e t non par des i n d i c e s. pas de bureau Dans xcas il n y a que des listes (modifiables). On peut utiliser () ou [], c est sur la façon de traiter les emboitements que les choses diffèrent. 2

9>> a :=(11,22, t e x t e, ( 1, 2 ), 1 1 ) // I c i l e s niveaux de ( ) ne comptent pas. 11,22, t e x t e,1, 2,11 10>> b : = [ 1 1, 22, t e x t e, [ 1, 2 ], 1 1 ] // Les niveaux de [ ] comptent [ 1 1, 2 2, t e x t e, [ 1, 2 ], 1 1 ] 11>> a [ 0 ] : = 1 1 1 // Dans xcas l e s o b j e t s sont m o d i f i a b l e s 111,22, t e x t e,1,2,11 12>> b [ 0 ] : = 1 1 1 [ 1 1 1, 2 2, t e x t e, [ 1, 2 ], 1 1 ] 13>> b [ 3 ] [ 0 ] ; // ou bien b [ 3, 0 ]. 1 14>> s e t [ 1, 3, 2, 2 ] // Dans xcas, l e s ensembles sont a u s s i notes : %{1,3,2,2% s e t [ 1, 2, 3 ] 15>> bureau := t a b l e ( han = 9D11, hermann = 9D23, d a n i l a = 9D3,112= pas de bureau ) ; //NB: Dans une t a b l e tous l e s t y p e s sont a c c e p t e s. Cf d i c t i o n n a i r e en python t a b l e ( 112 = pas de bureau, d a n i l a = 9D3, han = 9D11, hermann = 9D23 ) 16>> bureau [ han ] ; bureau [ 1 1 2 ] //On accede aux elements par des o b j e t s 9D11, pas de bureau 1.2.3 Affectations : valeur ou adresse? Une première difficulté. Des questions à se poser avec chaque logiciel ou language. a=1;b=a ; b=2; print a, b l a = [ 1 1, 2 2, 3 3 ] ; lb=l a ; lb [0]= 7; print la, lb a : = 1 : ; b:=a : ; b : = 2 : ; //Dans xcas pour ne pas a f f i c h e r l a reponse on u t i l i s e : ; print ( a, b ) ; // l e ; s e r t a s e p a r e r l e s i n s t r u c t i o n s dans un programme l a : = [ 1 1, 2 2, 3 3 ] : ; lb := l a : ; lb [ 0 ] : = 7 : ; afficher ( la, lb ) // l e ; e s t f a c u l t a t i f en mode i n t e r a c t i f. Remarque 1.2.2 xcas possède une autre affectation que := appelée affectation sur place dans la documentation. Elle se fait par le symbole =< l a = <[11,22,33]:; lb=<l a : ; lb [0]= < 7:; afficher ( la, lb ) // l e ; e s t f a c u l t a t i f en mode i n t e r a c t i f. Exercice 1.2.3 Essayez lb[0]:=7 au lieu du =< 1.3 Instructions de contrôle! En python il n y a pas de délimiteurs de blocs, c est l indentation qui compte : 3

1.3.1 Tests i f ( a <7): print a i n f e r i e u r a 7 print a i n f e r i e u r a 7 else : print a vaut au moins 7 print a vaut au moins 7 Xcas possède une syntaxe proche du C (Les boucles et tests coïncident à part l affectation qui est := sous xcas et = en C) : i f ( a<7){ print ( a<7 ) else { print ( a>=7 ) On peut aussi utiliser un syntaxe de type algorithmique. s i ( a<7) alors afficher ( a<7 ) sinon print ( a>=7 ) f s i Les instructions de comparaison en python et xcas sont les mêmes : x == y x!= y x > y x < y x >= y x <= y # x est \ egal \ a y # x est diff\ erent de y. NB <> est obsolete en python. # x est plus grand que y # x est plus petit que y # x est plus grand que, ou \ egal \ a y # x est plus petit que, ou \ egal \ a y 1.3.2 Boucles >>> a = 0 >>> while ( a < 7 ) : # (n o u b l i e z pas l e double p o i n t! )... a = a + 1 # (n o u b l i e z pas l i n d e n t a t i o n! )... p r i n t ( a ) a :=0; while ( a<7) // f a i r e s h i f t e n t r e e pour a l l e r a l a l i g n e sans e v a l u e r { a:=a+1; // ou bien a++ ou bien a+=1 print ( a ) ; tantque a<17 f a i r e a:=a +2; print ( a ) ; ftantque ; //en f a i t xcas t o l e r e l absence de ; mais pas g i a c 4

En python il faut créer une liste pour pouvoir faire une boucle for. >>> range (10) # on peut u t i l i s e r range ou xrange pour c r e e r une l i s t e [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] >>> range ( 3, 1 0, 2 ) # h e l p ( range ) donne l e s o p t i o n s de range [ 3, 5, 7, 9 ] 9 On calcule donc 3 i ainsi : i=0 s=0 for i in range ( 1 0 ) : s=s +3 i // l e corps de l a boucle e s t donne par l i n d e n t a t i o n. p r i n t s Sous xcas 4 la lettre i est réservée au nombre complexe. for ( j :=0; j <10; j ++){ pour j de 0 jusque 9 f a i r e fpour pour j de 0 jusque 9 pas 2 f a i r e // pour a l l e r de 2 en 2 fpour pour j de 0 jusque 9 f a i r e fpour Exercice 1.3.1 En utilisant dans xcas la syntaxe for( ; ; ) créez une bouble de type while. On peut aussi utiliser des listes avec xcas. L analogue python de range est seq 2>> s := seq ( j ˆ2, j, 1, 1 0 ) // seq donne une s u i t e e n t r e ( ) ( 1, 4, 9, 1 6, 2 5, 3 6, 4 9, 6 4, 8 1, 1 0 0 ) 3>> seq ( j ˆ2, j =1..10) 1, 4, 9, 1 6, 2 5, 3 6, 4 9, 6 4, 8 1, 1 0 0 4>> seq ( j ˆ2, j = 1.. 1 0, 2 ) // pour a l l e r de 2 en 2 on a j o u t e un argument 1,9,25,49,81 5>>[s ] // pour p a s s e r d une s u i t e e n t r e ( ) a une l i s t e e n t r e [ ] 4. sauf en mode maple 5

L:= seq ( t, t, 0, 9 ) ; for j in L do //ne marche pas en f r a n c a i s end ; 1.4 Fonctions 1.4.1 Définition et type de variables En python et xcas il n y a pas de déclaration de type pour les arguments d une fonction, ni pour les valeurs de retour. On peut retourner n importe quel objet ( même une liste) def d i s c r i ( a, b, c ) : Cette f o n c t i o n c a l c u l e l e d i s c r i m i n a n t de axˆ2+bx+c # aide f a c u l t a t i v e d=b 2 4 a c #En python, v a r i a b l e s l o c a l e s par d e f a u t. ( Sinon u t i s e r g l o b a l ) return d >>> d i s c r i ( 1, 2, 1 ) 0 >>> help ( d i s c r i ) Help on f u n c t i o n d i s c r i in module m a i n : d i s c r i ( a, b, c ) Cette f o n c t i o n c a l c u l e l e d i s c r i m i n a n t de axˆ2+bx+c d i s c r i ( a, b, c ):={ l o c a l d ; // par d e f a u t l e s v a r i a b l e s sont g l o b a l e s mais un warning s a f f i c h e d:=bˆ2 4 a c ; return ( d ) ; // ou bien : d ; l e r e t o u r e s t l a d e r n i e r e e v a l u a t i o n fonction d i s c r i ( a, b, c ) l o c a l d ; // par d e f a u t l e s v a r i a b l e s sont g l o b a l e s mais un warning s a f f i c h e d:=bˆ2 4 a c ; //ou bien b 2 4 a c retourne ( d ) ; //ou bien : d; ou bien : retourne d; ffonction 1.4.2 Arguments des fonctions et affectations en Python def t e s t 1 ( b ) : b=b+1 print ( b dans l a f o n c t i o n, b ) return b >>> a=1 >>> t e s t 1 ( a ) 6

( b dans l a f o n c t i o n, 2) 2 >>> p r i n t a 1 def t e s t 2 ( b ) : b =[0] print ( b dans l a f o n c t i o n, b ) return b >>> a =[1] >>> t e s t 2 ( a ) ( b dans l a f o n c t i o n, [ 0 ] ) [ 0 ] >>> p r i n t a [ 1 ] >>> a=1 def t e s t 3 ( b ) : b [0]= b [0]+1 print ( b dans l a f o n c t i o n, b ) return b >>> a =[1] >>> t e s t 3 ( a ) ( b dans l a f o n c t i o n, [ 2 ] ) [ 2 ] >>> p r i n t a [ 2 ] 1.4.3 Arguments des fonctions et affectations sous Xcas t e s t 1 ( b):={ b:=b+1; ; t e s t 2 ( b):={ b : = [ 2 ] ; // i l y a r e c o p i e l o c a l e de b t e s t 3 ( b):={ b [ 0 ] : = b [ 0 ] + 1 ; // i l y a t o u t de meme r e c o p i e l o c a l e de b 7

En utilisant l affectation sur place =< on obtient le même comportement qu en Python. (ie que les listes sont des pointeurs, mais que l argument d une fonction est recopié localement et donc non modifié.) t e s t 4 ( b):={ b= <[2]; // a f f e c t a t i o n sur p l a c e t e s t 5 ( b):={ b[0]=<b [ 0 ] + 1 ; // a f f e c t a t i o n sur p l a c e 4>> ( a :=1), t e s t 1 ( a ), a ; b dans l a f o n c t i o n,2 1,2,1 5>> ( a : = [ 1 ] ), t e s t 2 ( a ), a ; b dans l a f o n c t i o n, [ 1 ] [ 1 ], [ 2 ], [ 1 ] 6>> ( a : = [ 1 ] ), t e s t 3 ( a ), a ; b dans l a f o n c t i o n, [ 2 ] [ 1 ], [ 2 ], [ 1 ] 7>> ( a : = [ 1 ] ), t e s t 4 ( a ), a ; b dans l a f o n c t i o n, [ 2 ] [ 1 ], [ 2 ], [ 1 ] //a n e s t pas modifie car c e t a i t l argument. 8>> ( a : = [ 1 ] ) ; t e s t 5 ( a ) ; a ; b dans l a f o n c t i o n, [ 2 ] [ 2 ], [ 2 ], [ 2 ] // l a f f i c h a g e a l i e u apres e v a l u a t i o n de t o u t e l a l i g n e ce qui e x p l i q u e l e premier 2. Le contenu de l a l i s t e a e s t m o difie car on a m o difie une e n t r e e de l a l i s t e a l o r s que l argument de l a f o n c t i o n e t a i t l a l i s t e. 8