Cours d’Informatique Scientifique
Programmation en Python Cours 1/8
Laurent Pointal
laurent.pointal @ limsi.fr
@ laposte.net
Programme de la séance
●
Organisation de l’enseignement
●
Informatique et ordinateur
●
Types de données, opérations
●
nombres
●
valeurs logiques
●
textes
●
Variables, instruction d’affectation
●
Fonctions d’entrées / sorties
●
Séquences d’instructions, blocs composés
●
Instruction d’alternative if
aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 3 20
v2.2
Organisation de l’enseignement
Cours :
Langage d’apprentissage :
8 x 1h1/4
Prendre des notes de cours
Essayer chez soi pour comprendre
Travaux Pratiques : 8 x 4h
En binômes
Comptes-rendus fin de séance + Exercices d’approfondissement
(devoirs persos) Coef 0,5 pour les 8 TP
2h, après 4 TP
Coef 1
DS :
2h, seul
Coef 1
Partiel :
Version 3.2 ou supérieur
Outil d'édition & tests : Wing101 ou IDLE (livré avec Python)
aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 4 20
v2.2
Ressources
● Web
●
perso.limsi.fr/pointal/python:cours_prog
– liens vers diverses ressources
●
www.python.org
●
wingware.com (IDE Wing101)
● Bibliographie
●
G. Swinnen - “Apprendre à Programmer avec Python 3”
●
B.Cordeau - “Initiation à Python 3”
●
A.Martelli - “Python par l'exemple” - O'Reilly 2004
●
W.J. Chun - “Au cœur de Python” - CampuPress 2007
aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 5 20
v2.2
Joe Student in
Le monde de l’informatique
Zer o D
ivi sio
n E rro r
Syn tax Er ror Co re D um p
Comman
d not Found
fi In te ni oo L p
Too Mu ch Rec urs ion
Ordinateur : automate
déterministe programmable à
composants électroniques.
aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 6 20
v2.2
Un monde numérique binaire
01010101 10001001 11100101 10000011 11101100 00010000 11000111 01000101 11110100 00000100 00000000 00000000 00000000 11000111 01000101 11111000 00000101 00000000 00000000 00000000 10001011 01000101 11111000 10001011 01010101 11110100 10001101 00000100 00000010 10001001 01000101 11111100 10001011 01000101 11111100 11001001 11000011
Programme “x86” calculant et retournant 4 + 5 :
55 89 e5 83 ec 10 c7 45 f4 04 00 00 00 c7 45 f8 05 00 00 00 8b 45 f8 8b 55 f4 8d 04 02 89 45 fc 8b 45 fc c9 c3
En hexadécimal (base 16, un chiffre hexa = 4 bits binaires) :
Laurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 7 20
v2.2
Un monde discret et fini
3.10 100 + 1 - 3.10 100
324898732683278,94 - 324898732683278
23,156732710216738272654281532
23,156732710216737 0,9375 0
0,1 10
0,00000000010000000000000006
aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 8 20
v2.2
Se faire comprendre de l’ordinateur
Langage Commun (Python)
Joe Student
Connaître:
Syntaxe
Instructions Bibliothèques
Interpréteur Bytecode Compilateur Python
“bytecode” Python
Ordinateur
Rédiger des
programmes
toto.py
aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 9 20
v2.2
Types de données de base
Donner du sens aux 01011001…
●
qu’est-ce qu’ils représentent, quel type de données ?
●
quelles opérations peut-on leur appliquer ?
Données de base
●
entier (int)
0 1532 -73
●
flottant (float)
1.5 -67.35 12.565e-9
●
texte (chaîne de caractères) (str)
"Bonjour, Joe Student"
●
booléen (bool)
True False
●
rien, indéfini
None
aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 10 20
v2.2
Opérations sur les nombres
●
Opérateurs mathématiques
●
Addition +
●
Soustraction -
●
Multiplication *
●
Division flottante /
●
Division entière //
●
Reste de la division entière (modulo) %
●
Exponentielle **
●
Priorités usuelles
●
Groupement avec ()
●
Utilisables avec entiers, flottants, complexes
●
Librairies de fonctions mathématiques
…tests dans l'interpréteur
aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 11 20
v2.2
Opérations logiques booléennes
● Opérateurs booléens
●
et (and), ou (or), non (not)
● Opérateurs logiques de comparaison
●
égalité (==), différence (!=)
●
inférieur (<) ou égal (<=)
●
supérieur (>) ou égal (>=)
● Groupement avec ()
…tests dans l'interpréteur
Valeurs
Vrai : True
Faux : False Voir “Algèbre de Boole”
aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 12 20
v2.2
Chaînes de caractères (textes)
●
Longueur len("chaîne")
●
Concaténation +
●
Répétition *
'Il dit "ici" !' "Elle l'appela."
…tests dans l'interpréteur '''Les sanglots longs
Des violons
De l'automne'''
"""Blessent mon cœur D'une langueur
Monotone"""
Opérations sur les chaînes
Expression
\\ ➙ \
\n ➙ retour à la ligne
\t ➙ tabulation
\" ➙ "
\' ➙ '
… et il y en a d'autres …
Caractère d’échappement dans une chaîne: \
●
Indexation…
●
Méthodes…
Laurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 13 20
v2.2
Transtypage
Conversion de données entre les différents types.
"3" * 5
bool
int
str float
"33333"
int("3") * 5
15
str(3.14) + " radians"
"3.14 radians"
int(11.8)
11
float("1.602176")
1.602176
int("101",2)
5
…tests dans l'interpréteur
aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 14 20
v2.2
Des Noms
●
Pourquoi faire ?
●
Faciliter la compréhension du programme
●
Écrire des programmes réutilisables avec d'autres données
●
Variable: nom qui référence une valeur en mémoire
●
Association dynamique au cours de l’exécution du programme
●
Utilisable à la place des valeurs dans les expressions
●
Prend le type de la valeur référencée
●
Affectation: création de la liaison entre une variable et une valeur
●
Instruction = nom = expression
deux_pi = 2*3.14 qui = "Joe"+' '+nom
●
La valeur peut être résultat d’une expression (calcul)
●
On peut ré-affecter, c.a.d. lier une nouvelle valeur à une variable existante, la liaison précédente étant perdue
●
Plusieurs variables peuvent être liées à la même valeur
●
Identificateurs valides: début : a…z ou _ ensuite : a…z0…9 ou _
Exemples: page2, _post3_index, MaxCoups
aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 15 20
v2.2
L’affectation en 3 étapes
a = 3*6/4
4.5 2) Création du nom à gauche: a
(si a existait déjà, alors son ancienne liaison nom / valeur est alors supprimée!)
a
1) On calcule la partie de droite: 3*6/4 ➔ 4.5
4.5
3) Association entre le nom et la valeur
a 4.5
Laurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 16 20
v2.2
Affectations spéciales
●
Affectations multiple
x,y,nom = 1.3,4.6,"milieu"
x,y = y,x%y
●
Affectations à la même valeur a = b = c = d = 0
●
Incrément / décrément
a = a+1 a += 1 a = a-1
a -= 1
…tests dans l'interpréteur
aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 17 20
v2.2
« Fonctions » d’entrées / sorties
Attention: en mode “Calculette” (shell Python, vu en TP) la saisie et l’affichage sont fait automatiquement.
Pas dans les scripts/modules (fichiers .py) !
# monscript.py
qui = input("Qui es-tu ? ") qui = qui.upper()
print ("Bonjour",qui)
datenais = int(input("Né en ? ")) print ("Tu as",2011-datenais,"ans.")
Entrées texte au clavier:
input(indication) ➔ chaîne Sorties texte à l’écran:
print(données)
Qui es-tu ? Joe Student Bonjour JOE STUDENT
Né en ? 1991 Tu as 20 ans.
Utilisation du transtypage pour entrer des int, float…
Laurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 18 20
v2.2
Programmer de la calculatrice au script Python, le flux d'instructions
Exécution en séquence des instructions.
On parle du “flux” des instructions qui alimentent le processeur.
Certaines instructions rompent l’ordre séquentiel d’exécution.
. . 1 . 2 3 4 . 5 6 . 7 . 8 . 9
# Fichier: calcul_sphere.py
# Outils importés
from math import sqrt,pi
# Dimensions en x/y/z de l'ellipsoïde.
dx = float(input("dx = ")) dy = float(input("dy = ")) dz = float(input("dz = "))
# Calcul du volume sphérique englobant:
r = sqrt(dx**2+dy**2+dz**2) s = 4/3*pi*r**3
# Calcul du volume de l'ellipsoïde.
e = 4/3*pi*dx*dy*dz
# Rapport entre les deux:
es = e / s
# Affichage du résultat
print("ellipsoïde:",e,"sphère:",s,"rapport:",es)
aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 19 20
v2.2
Blocs d’instructions composées
Regroupement d’un ensemble d’instructions:
Syntaxe:
ligne d’en-tête : instruction 1 instruction 2 instruction 3
Source du bloc d'instructions, terminé par un caractère :
Instructions du bloc, indentées par rapport à la ligne d’en-tête (généralement 4 espaces)
●
Le retour au niveau
d'indentation de la ligne d’en-tête indique qu’on est sorti du bloc d'instructions.
●
Les blocs peuvent être imbriqués. à plusieurs niveaux
●
Avec l’indentation, le découpage est visuel.
:
:
:
aurent PointalDépartement Mesures Physiques Cours d’Informatique Scientifique 1/8 20 20
v2.2