Vous êtes sur la page 1sur 40

INF1035: Informatique pour les sciences: programmation,

simulation et exploitation de donnes


Cour 2: Introduction la programmation
Python
Automne 2014
Bruno Daigle
Informatique pour les sciences
Diallo & Daigle

INF1035: Informatique pour les sciences
valuation
2 TP
Examen Intra
Examen Final

Entente dvaluation
2
Informatique pour les sciences
Diallo & Daigle

INF1035: Informatique pour les sciences
Rappel
Historique de la programmation
Architecture des ordinateurs et processeurs
Caractristique des langages de programmation
Python simple
3
Introduction la programmation Python:
Diallo & Daigle

INF1035: Informatique pour les sciences
Sommaire
Rsolution de problmes, algorithmes
Programmation Python
Types de donnes de base
Dfinition de variables
Oprateurs arithmtiques, relationnels, logiques
Lecture de valeur au clavier
Affichage
4
Rsolution de problmes
Diallo & Daigle

INF1035: Informatique pour les sciences
Problme - Algorithme - Programme
Problme

Algorithme

Programme

Solution

5
Rsolution de problmes
Diallo & Daigle

INF1035: Informatique pour les sciences
Problme
Calculez la moyenne de trois distances.
Avant de programmer:
Entte de lalgorithme
Corps de lalgorithme
Ne pas oublier la partie informelle :
Contrat
Rles des donnes et des rsultats
Et autres commentaires

6
Rsolution de problmes
Diallo & Daigle

INF1035: Informatique pour les sciences
Algorithme

Commentaires
// L'algorithme calculMoy3 permet de calculer la
// moyenne de trois distances
//Donnes : d1,d2 et d3 sont les trois distances
//Rsultat : moy est la moyenne des trois distances
//Contrat : d1,d2 et d3 sont suprieures ou gales 0

Entte


Corps

(moy) calculMoy3(d1,d2,d3)

DEBUT
moy = (d1+d2+d3)/3 //formule de la moyenne
FIN

7
Rsolution de problmes
Diallo & Daigle

INF1035: Informatique pour les sciences
Programme
Supposons les trois distances: 10, 15 et 29
On peut faire:

(10 + 15 + 29)/ 3

Pas trs gnral on peut faire un peu mieux:
n1 = 10
n2 = 15
n3 = 29
moyenne = (n1 + n2 + n3)/ 3

Finalement un programme plus gnral :
8
Rsolution de problmes
Diallo & Daigle

INF1035: Informatique pour les sciences
Programme
# moyenne de trois nombres entiers saisis au clavier

#Saisie des informations
c1 = input("Entrez le premier nombre: ")
n1 = int(c1)
c2 = input("Entrez le deuxieme nombre: ")
n2 = int(c2)
c3 = input("Entrez le troisieme nombre: ")
n3 = int(c3)

#traitement
moyenne = (n1 + n2 + n3) / 3

#Sortie et affichage
print("la moyenne est: ", moyenne)


9
Rsolution de problmes
Diallo & Daigle

INF1035: Informatique pour les sciences
Problmes plus complexes
Faire la paye des employs de la compagnie
Algorithme :
coordonnes des employs
heures travailles
comptes bancaires
conventions collectives
temps supplmentaire
etc.
On ne peut pas programmer sans algorithme
10
Programmation Python
Diallo & Daigle

INF1035: Informatique pour les sciences
Premier programme (excution)
Dans linterface python
Taper le code directement dans la console

Excution en ligne de commande
Crer un fichier .py <premier.py>
appeler la commande: python premier.py
11
Programmation Python
Diallo & Daigle

INF1035: Informatique pour les sciences
Excution squentielle
partir de la premire ligne, on passe
successivement aux lignes suivantes (sauf
indication contraire).
Pas de mise jour automatique des
variables. Tout doit tre programm.

moyenne = (n1 + n2 + n3)/ 3
print("la moyenne est: ", moyenne)
n1 = 50
print("la moyenne est: ", moyenne)


12
Programmation Python
Diallo & Daigle

INF1035: Informatique pour les sciences
Types de base en python
Les entiers (3 -3 5 -1000000)
Les rels (3.0 0.5)
Les textes ou chanes de caractres (abcd)
Les boolens (True False)
On verra aussi plus tard:
Les listes ou tableaux
Les dictionnaires
Les fichiers
13
Types de donnes
Diallo & Daigle

INF1035: Informatique pour les sciences
Types entiers
Valeurs
3 10 -15 300000005

Lecture
nTexte = input("Entrez un entier: ")
n = int(nTexte)

Affichage
n = 4237
print(n) 4237
print("n est ",n) n est 4237
14
Types de donnes
Diallo & Daigle

INF1035: Informatique pour les sciences
Type rels
Valeurs
3.0 -10.51 -15 3.3e5 4.5e-5

Lecture
nTexte = input()
n = float(nTexte)

Afficher
n = 3.55
print(n) 3.55
print("{0:.3e}".format(n)) 3.550e+00
15
Types de donnes
Diallo & Daigle

INF1035: Informatique pour les sciences
Type texte



Dans dautre langage il y a le type char et ses valeurs sont notes
entre deux apostrophes. En python ce type nexiste pas
'A' 'a' 'e', les chiffres '1' '0', la pontuation ';' ']
Caractres spciaux '\n' '\'' apostrophe

Un texte est une combinaison de plusieurs caractres
'abababa' '\tabababab\ntototo\ntata

Attention
On peut aussi faire "ablababa"
'0' est diffrent de 0

16
Types de donnes
Diallo & Daigle

INF1035: Informatique pour les sciences
Type boolen



Valeurs : False et True
Cest la valeur utilise dans les conditions
boolennes.
17
Types de donnes
Diallo & Daigle

INF1035: Informatique pour les sciences
Constante ou litral



2
2.0
'2'
18
Dfinition de variables
Diallo & Daigle

INF1035: Informatique pour les sciences
Variables



Une variable est une entit qui permet de stocker une
valeur dans un programme.

Du point de vue d'un programmeur, une variable a trois
composantes: un type et un nom et une valeur
Le type est l'un des types de base, ou l'un des types prdfinis
dans Python, ou bien un type prdfini par l'utilisateur (seront vus
ultrieurement)
Le nom d'une variable est un identificateur
La valeur devrait tre compatible avec le type
19
Dfinition de variables
Diallo & Daigle

INF1035: Informatique pour les sciences
Identificateurs



Les identificateurs nomment les objets dans un programme python
comme les variables, les fonctions,...

C'est une suite de lettres ou de chiffres o
le premier caractre est obligatoirement une lettre parmi A Z, a
z ou bien le caractre _ (soulign)
Python distingue les minuscules des majuscules.
Exemple: canadiens, Canadiens, CanAdiens , CANADIENS et
_CANADIENS sont des identificateurs valides et tous diffrents.

La longueur de l'identificateur dpend de l'implmentation (30
caractres seraient un maximum raisonnable).
20
Dfinition de variables
Diallo & Daigle

INF1035: Informatique pour les sciences
Indentificateurs




Un identificateur doit tre diffrent des mots cls
(keywords) du langage python

Le choix d'un nom significatif est important pour
renseigner le programmeur sur le contenu et le rle de la
variable. Donc pour la lisibilit du programme.
salaire, salaire_net, salaireNet
Plutt que: t, a, z22



21
Dfinition de variables
Diallo & Daigle

INF1035: Informatique pour les sciences
Les mots cl en python



and def finally in print() yield
as del for is raise False
assert elif from lambda return None
break else global not try True
class except if or while nonlocal
continue exec() import pass with
22
Dfinition de variables
Diallo & Daigle

INF1035: Informatique pour les sciences
Typage dynamique, Affectation et initialisation



Dans python une variable est dfinie implicitement sa
premire utilisation
Format de la dfinition d'une variable
<NomVariable> = <valeur initiale>
<NomVariable> est un identificateur
taxe = 5
salaire = 5.0
age = int("25")
23
Oprateurs
Diallo & Daigle

INF1035: Informatique pour les sciences
Les oprateurs



Les oprateurs arithmtiques
Les oprateurs relationnels ou de
comparaison
Les oprateurs logiques
Et aussi : cast (conversion force)


24
Oprateurs
Diallo & Daigle

INF1035: Informatique pour les sciences
Arithmtiques



n=7
p=4
q=n/p #la valeur de q est 1 .75
q=n//p #la valeur de q est 1 car n//p retourne 1
q=n%p # la valeur de q est 3
% retourne le reste de la division euclidienne n par p


25
Oprateurs
Diallo & Daigle

INF1035: Informatique pour les sciences
Arithmtiques



Oprateurs arithmtiques Type
+ - * ** / % -(ngation) int
+ - * ** / -(ngation) float
n + p
int int
n, p= 3,4
L'addition +, la soustraction -, la multiplication * de type int respectivement de type
float retournent une valeur de type int respectivement de type float.
La division // est de type int et / est de type float

Exemple ( n=3; p=4)
n + p retourne 7 n - p retourne -1
n * p retourne 12 n / p retourne 0.75
-n retourne -3 n // p retourne 0

26
Oprateurs
Diallo & Daigle

INF1035: Informatique pour les sciences
Arithmtiques
(Conversion implicite)



Sens de conversion implicite (promotion)
int -> float
float
+
int
float
float
float
Dduction du type
de l'oprateur
Conversion implicite
de int en float
n x
n=3
x=3.2
27
Oprateurs
Diallo & Daigle

INF1035: Informatique pour les sciences
Arithmtiques
(Conversion implicite)
Si un oprateur binaire a deux oprandes de types
diffrents, le type plus petit des deux sera promu au type de
l'autre
Toutes les constantes dans Python ont un type
2 de type int et 2.0 de type float
Toute expression a un type qui est dtermin en valuant
l'expression
1 + 2.0 est de type float






28
Oprateurs
Diallo & Daigle

INF1035: Informatique pour les sciences
Arithmtiques
(Conversion explicite, cast() )
En indiquant entre type() le type dsir pour une
expression donn
Peut donner lieu une perte d'information
Exemple
x = -3.5
n = int (x-2) # n gal -5
x = n//2 # x gale -2
x = float(n) / 2 #x gale -2.5

L'utilisation du cast montre au compilateur que la perte
d'information est intentionnelle.



29
Oprateurs
Diallo & Daigle

INF1035: Informatique pour les sciences
Arithmtiques
Les oprateurs ont une priorit
*, / et % sont plus prioritaire que + et
a + b / c est valu par a + (b / c)
valuation de la gauche vers la droite
a+b+c est valu (a+b)+c
Placez les parenthses manquantes en utilisant les
priorits entre les oprateurs et leur associativit.
Exemple:
a+b/c*d+3-a+b # sera:
(((a+((b/c)*d))+3)-a)+b



30
Oprateurs
Diallo & Daigle

INF1035: Informatique pour les sciences
Relationnels
Lvaluation de lexpression retourne toujours False ou True


galit ou
operateur
dingalit
Exemple de
condition en
Python
signification de la
condition

==
x == y
x est gal y
!=
x != y
x nest pas gal y
>
x > y
x est strict sup y
<
x < y
x est strict inf y
>=
x >= y
x est sup ou gal y
<=
x <= y
x est inf ou gal y

31
Oprateurs
Diallo & Daigle

INF1035: Informatique pour les sciences
Relationnels
(Exemples)
3 == 2+1 # retourne True

n = 3
p = 3

cond = (n == p) # (True)
cond = (n <= p) # (True)
cond = (n != p) # (False)




32
Oprateurs
Diallo & Daigle

INF1035: Informatique pour les sciences
Logiques
Les oprateurs logiques s'appliquent des expressions du type
boolen et retournent une valeur boolenne
Trois oprateurs logiques
and reprsente et
or reprsente ou
not reprsente non
Leurs valeurs de retour (leur valuation)
and retourne True si les deux expressions boolennes sont
True et False sinon
or retourne False si les deux expressions boolennes sont
False et True sinon
not retourne True si l'expression boolenne est True et False
sinon




33
Oprateurs
Diallo & Daigle

INF1035: Informatique pour les sciences
Logiques
and
True and True #True
(1 == 1) and (2 == 1) # False
or
True or False #True
(1 == 0) or (2 == 1) # False
not
not False #True
not (1 != 0) # False





34
Programmation Python
Diallo & Daigle

INF1035: Informatique pour les sciences
Lecture au clavier

xTexte = input("Entrez un entier: ")
xEntier = int(xTexte)

Ou encore :

xEntier = int(input("Entrez un entier: "))

Lors de la conversion des types numriques les caractres
blancs(espace, Tabulation, retour la ligne, etc) sont ignors

Ce n'est pas le cas lors de la lecture du type texte.

On pourra valider le texte avant conversion (vu plus tard)






35
Programmation Python
Diallo & Daigle

INF1035: Informatique pour les sciences
Affichage lcran (terminal)
Mot cl de python : print()
(ou print dans les versions 2 et antrieures)

n = 5
K = 12.0
print (n) # 5
print(n,k) # (5,12.0)

Message en utilisant un texte
print(" La valeur de n est", n)







36
Programmation Python
Diallo & Daigle

INF1035: Informatique pour les sciences
Affichage lcran (terminal)
print ("n est gal : " )
print (n)
n est gal :
5
Mise en forme plus labore
print("n est gal : {0}".format(n))
n est gal : 5

print("n est gal {0} et k est {1}".format(n,k))
n est gal 5 et k est 12.0
Plus de dtails plus tard






Sur 2 lignes
37
Programmation Python
Diallo & Daigle

INF1035: Informatique pour les sciences
Exercices
1. Ecrire un programme qui convertit en une note sur
100 une note note sur 15.
2. On suppose quun examen est not sur une note
donne maximale. Ecrivez un programme qui
convertit une note de cet examen en une note sur 100.
3. Ecrire un programme qui calcule la distance
euclidienne entre deux points donns par leurs
coordonnes coordonnes
NB: les donnes proviendront du clavier


38
Programmation Python
Diallo & Daigle

INF1035: Informatique pour les sciences
Points cls
Algorithmes
Les types
Les variables
valuation des expressions
Conversion implicite / explicite
Priorit entre oprateurs
Lecture et affichage
39
Programmation Python
Diallo & Daigle

INF1035: Informatique pour les sciences
venir
Laboratoire ce jeudi
Prochain cours: les slections
Comment adapter le droulement dun
programme aux diffrentes conditions
dentres

40