Mise à niveau

publicité
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
Téléchargement