TP 1 - Tourbillon

publicité
10/2013
MPSI 1
2013-2014
Informatique
Travaux pratiques
1 Spyder (Scientific PYthon Development EnviRonment)
Au lancement il y a trois fenêtres :
L’éditeur le lieu où lire et écrire les programmes.
L’explorateur/debogueur nous pouvons y lire la documentation, les valeurs des variables et déboguer ou parcourir l’arborescence des répertoires.
La console L’interpréteur Python vit ici.
Configuration ; préférences :
console décocher «ouvrir une console».
console IPython cocher «ouvrir une console IPython».
Menu «Affichage» → «Disposition de fenêtres personalisées» → «Basculer vers/depuis la disposition
1».
(revient à la configuration d’affichage d’origine).
Configuration MatPlotLib pour Spyder.
Menu «Outils» → «Préférences» → «console IPython» : la sortie graphique doit être mise à «Automatique». Si l’on valide «plot()» une fenêtre graphique s’ouvre car matplotlib est chargé au démarrage de
Spyder. S’assurer que les modules externes «pylab» et «numpy» sont chargés au démarrage.
Lorsqu’un programme est présent dans l’éditeur, le raccourci-clavier pour l’exécuter est F5. Il aura
fallu probablement taper F6 pour ouvrir un interpréteur dédié et éviter ainsi le recours involontaire
aux modules déjà ouverts.
Note : rappelons qu’un terminal est un périphérique delié à un ordinateur, une console est un
terminal physique. La plupart du temps le terminal est une console, qui héberge un interpréteur de
script comme bash ou zsh, qui est en relation avec un clavier.
1
2 Règles d’écriture
Bonnes manières (pas toujours respectées, même dans ces feuilles).
Quelques règles d’écriture :
— 4 espaces par niveau d’indentation.
— Pas de tabulations.
— Ne jamais mixer des tabulations et des espaces.
— Un saut de ligne entre les fonctions.
— Deux sauts de ligne entre les classes.
— Ne pas mettre trop de blancs (ne pas en mettre après ou avant des parenthèses, crochets ou
accolades)
— Oui : spam(ham[1], eggs : 2) (spam, eggs, ham : c.f. sketch Monty Python)
— Non : spam( ham[ 1 ], eggs : 2 )
Mais en mettre où il faut
— Oui : if x == 4 : print x, y ; x, y = y, x
— Non : if x == 4 : print x , y ; x , y = y , x
— Oui : x = 2*x*y − 10
— Non : x=2*x*y−10
— Mettre les noms des variables et fonctions en minuscules
— Utiliser des majuscules pour les noms des classes.
— Garder une taille de ligne inférieure à 80 caractères.
— Utilisez la continuité implicite des lignes au sein des parenthèses/crochets/accolades ; i.e. si
une parenthèse est ouverte elle doit être fermée même si ce n’est pas sur la même ligne :
(un , deux , t r o i s
quatre , cinq )
3 Exercices
Exercice 1 Effectuer divers calculs avec des entiers, des flottants ou des complexes, par exemple :
— 29 // 7 (division entière)
— 3.14**20 (3.1420 )
— (2+3j)*(1−1j) (nombres complexes)
— 2>4 et 2<3<4
Pour obtenir un résultat dans la console de Spyder il faut faire appel à print.
La vérification du code peut être effectuée par le programme pylint (dans le menu ou F8).
Exercice 2 Ouvrir un nouveau fichier (Ctrl+N). Taper dans l’éditeur : import time, puis la ligne : tictacs=time.time(),
et encore print(tictacs). Sauver le fichier sous le nom epoch_unix.py dans votre répertoire de travail.
Exécuter ces lignes avec F5.
Exercice 3 Types : déterminer les types des expressions suivantes.
1. 1>0
2. 2*3
3. "a"
4. type
5. print
2
6. sin
7. print(2)
Exercice 4 Écriture d’un programme Python.
# c a l c u l s des valeurs de la fonction l o g i s t i q u e
p r i n t ( "cette fonction calcule les valeurs de la fonction logistique" )
x = f l o a t ( input ( "Entrer un nombre compris entre 0 et 1 :" ) )
f o r i in range ( 1 0 ) :
# i v a r i e de 0 à 9
x = 3.9 * x * (1−x )
# c a l c u l de la valeur suivante de x
print ( x )
# affichage
En Python 3, input renvoie une chaîne, il faut la convertir en flottant pour effectuer les calculs dans la
boucle.
La fonction range appliquée à
— un entier n, renvoie l’intervalle ‚0, n − 1ƒ ;
— un couple d’entiers m, n, renvoie l’intervalle ‚m, n − 1ƒ ;
— à un triplet d’entiers m, n, p, renvoie les éléments de la suite arithmétique de premier terme
n, de raison p, strictement inférieurs à n.
Si m ≥ n Python ne renvoit rien.
Note : Il est possible d’avoir accès à des fonctions permettant de communiquer avec le système
d’exploitation. Plus généralement, des fonctions supplémentaires spécialisées sont regroupées dans
des fichiers appelés modules. En particulier le module os contient une fonction qui affiche le répertoire courant. Le chargement est fait avec la fonction import :
import os
rep_cour = os . getcwd ( )
# chargement de t o u t e s l e s f o n c t i o n s du module os
Il est possible de ne charger qu’une fonction du module, par exemple :
from os import getcwd
ou
from math import sin
pour la fonction sinus.
Modifier le programme de sorte que l’on puisse entrer le nombre n d’itérations.
Exercice 5 Poser r = (−1 + sqr t (3) ∗ 1 j )/2, après avoir importé la fonction sqrt et calculer r 2 + r + 1.
Exercice 6 La fonction id donne l’identifiant (le code de la place en mémoire) de son argument.
1. Faire x=2, puis comparer id(2) avec id(x).
2. Faire y=x puis x=3 et id(y), quelle est la valeur de y ?
Exercice 7 Conversions : c="2*3".
1. Quel est le type de c ?
2. Convertir c en entier. La commande int(c) donne-t-elle le résultat attendu ?
3. Et eval("c") ou eval(c) ?
Exercice 8 Écrire un programme de calcul de n ! puis un programme de calcul du produit des entiers
strictement positifs et pairs inférieurs ou égaux à n.
3
Exercice 9 La suite de Fibonacci est définie par u 0 = 1, u 1 = 1 et la relation de récurrence :
∀n ∈ N,
u n+2 = u n+1 + u n
Écrire un programme de calcul du Ne terme de la suite.
Exercice 10 Soit a un nombre réel. La suite réelle (r n )n≥0 est définie par son premier terme r 0 , non
nul et la relation de récurrence : si r n 6= 0,
µ
¶
1
a
r n+1 =
rn +
2
rn
Écrire un programme
de calcul des N premiers termes de la suite. Faire le calcul pour a = 1, a = 4,
p
a = 9 et a = 2 avec N = 10.
Exercice 11 Utilisation du «débogueur» : écrire un programme (voir plus haut) ou celui-ci
# −*− coding : utf −8 −*−
"""
N’importe␣quoi
@author:␣codeur␣masqué
"""
n = 20
k = 0
f o r i in range (n ) :
c = i*i
nk = k + c
k = nk
k = k ** 2 − 400000 * k
print ( k )
. Puis :
1. Lancement du débogueur Ctrl+F5 ou
.
2. Exécuter la ligne en cours (Ctrl+F10) ou
3. Entrer dans la fonction (ou méthode de la ligne courante : Ctrl+F11) ou
4. Exécuter la fonction ou la méthode (Ctrl+Shift+F11) ou
5. Continuer l’exécution jusqu’au prochain point d’arrêt (Ctrl+F12) ou
6. Quitter le débogage (Ctrl+Shift+F12) ou
.
La fenêtre «Explorateur de variables» permet de lire les valeurs des variables.
Bien entendu, les opérations ci-dessus ne sont jamais effectuées car nos programmes sont bien construits. . .
Tester le débogueur sur les programmes précédents.
Exercice 12 Écrire des boucles qui effectuent les actions suivantes
1. Calcul de x n ;
2. Calcul de n ! (bis) ;
3. Calcul du plus petit diviseur (strictement supérieur à 1) d’un entier (boucle while).
Exercice 13 Combien un caissier a-t-il de façons de rendre 23 eavec des pièces de 1, 2, 5 et 10 e ?
Exercice 14 Écrire un programme qui calcule le développement en binaire d’un nombre écrit en décimal (boucle while). Afficher le résultat comme une chaîne de caractères.
4
Téléchargement