Algorithme en Python
Algorithme en Python
warwi t h p c .b l o g s p o t .fr
… q u i seront réutilisées e n M 2
(f o u ille d e d o n n é e s / d e t e x t e s )
Algorithmique et programmation [Link] 3
Qu ’ es t - ce q u ’ u n al g o r i t h me ?
[Link]
Problème
Al-Khwârizmî
(780-850)
Données Sui t e d ’ o p é r a t i o n s
Algorithmique et programmation [Link] 4
E x e m p l e d’algorithme
1
2 étapes/opérations
3
4
Tr a d u c t i o n d ’ u n a l g o r i t h m e e n u n l a n g a g e in te r p r é ta b le
par un ordinateur
Algorithmique et programmation [Link] 6
Outil 1 : L a n g a g e a l g o r i t h m i q u e textuel
E n français
Rigour eux
F o n c t i o n n e s u r t o u s les s y s t è m e s d’ e xpl o i t a t i on
Tr è s utilisé p o u r a p p r e n d r e la p r o g r a m m a t i o n
Et second exemple
d ’ a lg o r ith m e !
44 ans 1466,62 €
Jérô me VRAI
Va r âg e :
Const N ←
Entier
10
Var salaire : Réel
Const PI ← 3,1416
Var n o m : Chaîne Const MONNAIE ← "Euro"
Initialiser u n e variable
L u i d o n n e r u n e valeur
Utiliser u n e v a r i a bl e o u c o n s t a n t e
Utiliser o u m odifier sa valeur
Algorithmique Python
âge ← 44 age = 44
Salaire =
salaire ← 1 4 6 6 , 6 2 1466.62 nom =
"Jérôme" n o m =
n o m ← "Jérôme" E n vert :
'Jérôme'
commentaires
(non exécutés)
v_f ← Vrai
{Contraire : F a u x } v_f = True
#
Contraire : False
a = b =
Algorithmique et programmation 20 15
C o n n a î t r e le t y p e d ’ u n e variable
ty p e(salaire) # f l o a t (réel)
Entrées So rties
Saisir Affiche
Algorithmique et programmation [Link]
r 18
Ent rées/ s ort i es ( 2 / 3 )
Algorithmique Python
Lire(nom) n o m = i n p u t( )
Lire(âge) a g e = int(i n p u t( ) )
Lire("Salaire :", salaire) salaire = float(input("Salaire : "))
Écrire("Hello world!") print("Hello world!")
Écrire(âge) print(age)
Algorithmique Python
É c r i r e ( "Âg e ", âge, "Salaire ", salaire) print("Âge", a ge , "Salaire", salaire)
S u i t e d’instructions e x é c u t é e s d a n s l’ordre
Algorithmique Python
Algorithme Exemple # Aucune
{Déclaration des constantes} déclaration de variable # (c’est
Const MONNAIE ← "Euros" moche)
{Déclaration des variables}
Va r salaire : Réel # La constante…
Va r n o m : Chaî ne e s t u n e v a r i a b l e # (initialisée)
Début MONNAIE =
Lire("Nom :", nom) "Euros"
Lire("Salaire :", salaire)
sa l a i r e ← sa l a i r e × 1 , 1 nom =
É c r i r e ( "No u v e a u salaire d e ", n o m , i n p u t ( " N o m :")
" : ", salaire, " ", MONNAIE) salaire =
Fin float(input("Salaire : ")) sala ire =
Algorithmique et programmation
sal a ire * 1 . 1 p r i n t ( " N o u v e a u
[Link] 21
salaire d e ", n o m ,
Exemple
F o r m u l e r la solution e n l a n g a g e al g o ri t h mi q u e, p u i s
en Python.
I n d i c a t i o n : d é t e r m i n e r l e s v a r i a b l e s , l es e n t r é e s et
l e s sorties.
Algorithme prixTTC
Début
Lire("Prix HT :", prixHT) {Entrée}
prixTTC prixHT (1 + TVA) {Traitement/calcul}
← ×
Écrire("Prix TTC :", prixTTC) {Sortie}
Fin
Expression d ’u n choix
– E x . S i le m o t d e p a s s e e s t c o r r e c t, a l o r s
l’utilisateur·trice p e u t s e c o n n e c t e r.
– E x . S i la m o y e n n e g é n é r a l e e s t s u p é r i e u r e o u é g a l e à 1 0 , a l o r s
l’ étu d ian t· e v a l i d e s o n a n n é e .
Sinon,
l’ étu d ian t· e é c h o u e .
Si condition alors
action1 S i n o n action2
Opérateurs de comparaison
Algorithmique Python
= ≠ < ≤ > ≥ == != < <= > >=
Opérateurs logiques
Algorithmique Python
et ou non and or not
S o i e n t d e u x v a r i a b l e s b o o l é e n n e s C 1 et C 2 .
– Par exemple : C 1 ← (âge ≥ 25)
C 2 ← (salaire = 0 )
âge 22 25 27
C1 Faux Vrai Vrai
Soi t la va r i a bl e b o o l é e n n e
C 3 ← ( C 1 e t ( n o n C 2 )) o u ( ( n o n C 1 ) e t C 2 ).
Quelles sont les valeurs possibles de C 3 en
f o n c t i o n d e celles d e C 1 et C 2 ?
C1 C2 non C 2 C 1 et ( n o n C 2) non C 1 ( n o n C 1) et C 2 C3
S i le l o g i n e t le m o t d e p a s s e sai sis c o r r e s p o n d e n t a u x
c onst a nt e s, a ffi c he r « c o n n e x i o n ré ussi e », s i n o n a ffic he r
« e rre ur d’a ut hent ifi ca t i on » .
F o r m u l e r la sol ut i on e n l a n g a g e a l g o r i t h m i q u e , p u i s e n P y t h o n .
Début
Lire("Login :", loginSaisi)
Lire("Mot de passe :", mdpSaisi)
Si loginSaisi = LOGIN et mdpSaisi = MDP alors
Écrire("connexion réussie")
Sinon
Écrire("erreur d’authentifiation")
Fin si
Fin
Algorithmique et programmation [Link] 36
Partie 3
Structures itératives
(bouc le s)
Ré p é t i t i o n d ’ u n e n s e m b l e d’instructions
Instruction
– E x . R é p é t e r N fois le m ê m e t r a i t e m e n t A
(plutôt q u e copier/coller N fois les instructions)
Instructi on
B
– E x . Sa i si r l e s n o t e s d e t o u · t e s l e s é t u d i a n t · e s
d’une promotion …
Instructi on
– E x . A u g m e n t e r t ou·t e s l e s salarié·es d ’ u n e Z
entreprise
O n c o n n a î t le n o m b r e d ’ itérations.
– E x . Choi sir 7 n o m b r e s a u ha sa rd (Loto).
Ta n t q u ’ u n e c o n d i t i o n n ’ est p a s réalisée, o n r é p è t e
le traitement.
– E x . Sa i si r d e s n o m s t a n t q u e d e s p e r s o n n e s s’i nsc ri ve nt .
i←1 i= 1
Répéter while True: # B o u c l e infinie
Écrire(7 x i) print(7 * i)
i← i+ 1 i += 1
Jusqu’à i > 1 0 if i > 10:
b r e a k # Tr è s i n é l é g a n t
Algorithmique et programmation [Link] 42
Exemple
A ff i c h e r l a s o m m e d e s n o m b r e s d e 1 à 1 0 0 .
Sa i si r d e s n o m s d e p e r s o n n e s t a nt q u e le m o t - c l é F I N
n’e st p a s e n t r é .
Début
somme 0
Pour i de←1 à 100 faire
somme somme + i {Cumul de la somme}
Fin pour ←
Écrire("Somme :", somme)
Fin
Algorithme motPasse2
Début
Répéter
Lire("Mot de passe :", mdpSaisi)
Jusqu’à mdpSaisi = MDP
Fin
Algorithme saisieNoms
Début
Lire("Nom :", nom)
Tant que nom "FIN" faire {On appelle FIN un drapeau ou flag}
≠
{Traitement}
Lire("Nom :", nom)
Fin tant que
Fin
E x e m p l e : c o m m e n t c a l c u l e r u n e t ab le d e
multiplication ?
1 2 3 4 5
1 1 2 3 4 5
2 2 4 6 8 10
3 3 6 9 12 15
4 4 8 12 16 20
5 5 10 15 20 25
Algorithmique Python
P o u r i d e 1 à 5 faire for i in r an g e( 1 , 6):
P o u r j d e 1 à 5 faire for j in r an g e(1 , 6):
Écrire(i x j) print(i * j)
Fin pour
Fin pour
Il est possible d ’ im b r iq u e r :
- n ’ i m p o r t e q u e l t y p e d e b o u c l e ( p o u r, tan t q u e , r é p é t e r j u s q u ’ à ) ,
- d e s t y p e s d e b o u c l e s d iff ér en ts,
- a u t a n t d e f o is q u e n é c e s s a i r e .
Algorithmique et programmation [Link] 48
Partie 4
Sous-programmes
Copier/coller le f r a g m e n t Code X
Code B
– L e c o d e d ev ien t p lu s v o l u m i n e u x , Code X
m o in s lisible. Code C
– E n ca s d e correction, il faut m o d if ie r Code X
plusieurs fois. Code D
Algorithmique et programmation [Link] 50
Q u ’ e s t - c e q u ’ u n s o u s - p r o g r a m m e ? (2/3)
Créer un sous-programme
P r o g r a m m e principal
Code A
Code B Sous-
programme
Code X
Code
Code C
D
L e p r o g r a m m e pr i nc i pal a ppe l l e le s o u s - p r o g r a m m e .
Algorithmique et programmation [Link] 51
Q u ’ e s t - c e q u ’ u n s o u s - p r o g r a m m e ? (3/3)
Programme 1 Programme 3
Sous-programme A
Programme 2 Programme 4
C o m m e to u t a l g o r i t h m e , u n s o u s -
p r o g r a m m e a des entrées et des sorties.
Sous-programme
Code X
Données
Paramètres d’entrée P a r a m è t r e s d e so r t i e
Paramètres d e sortie
Prix HT Sous-programme TVA
Calcul de TVA
Taux de TVA Prix TTC
TVA ← Prix HT × Taux de TVA
Prix TTC ← Prix HT + TVA
Prix HT TVA
Calcul de TVA
Taux de TVA Prix TTC
10 € 2 €
Calcul de TVA
20 % 12 €
Algorithmique et programmation [Link] 55
Paramètres d’entrée/sortie
Augmentation
Salaire de salaire Salaire
2000 € 2100 €
Salaire ← Salaire × 1 , 0 5
F o n c t i o n : e ff e c t ue e n g é n é r a l u n c a l cul d o n t le
r é s ul t a t e s t r e t o u r n é a u p r o g r a m m e p r i n c i p a l
– Ex. Diviser une note sur 20 par 2 pour obtenir une note sur 10.
P r o c é d u r e : e ff e c t u e t o u t t y p e d e t r a i t e m e n t
– Ex. C o u p e r une chaîne de caractères contenant u n n o m et u n
prénom en deux
– Affichages à l’écran
Algorithmique Python
Fonction tva(prixHT : Réel) : Réel def tva(prixHT):
Const TAUX ← 0,2 TAUX = 0.2
Début
Retourner prixHT x (1 + TA U X ) return prixHT * (1 + TAUX)
Fin
{ A p p e l d e la fonction # A p p e l d e la f o n c ti o n
d a n s le p r o g r a m m e p r i n c i p a l } # d a n s le p r o g r a m m e
p r i n c i p a l p r ix TTC = tva(10.5)
prixTTC ← tva(10,5)
E l l e s p e u v e n t r e t o u r n e r p l u s d ’ u n résultat.
# Exemple
d ef tv a 2 ( p r ix H T) :
TAUXPLEIN = 0.2
TAUXREDUIT = 0.055
return prixHT * (1 + TAUXPLEIN), prixHT * (1 + TAUXREDUIT)
# A p p e l d e la f o n c t i o n d a n s le p r o g r a m m e p r in c ip a l
prixTTCplein, prixTTCreduit = tva2(10.5)
Algorithmique Python
P r o c é d u r e t a b l e g e n ( n : Entier, m : En t i er) def tablegen(n, m):
Var i : Entier
Début
P o u r i d e 1 à m faire fo r i i n r a n g e ( 1 , m + 1):
Écrire(n x i) print(n * i)
Fin pour
Fin
{Appel des procédures # Appel des procédures
dans le p ro g r amme principal} # dans le p r o g r a m m e principal
table7() table7()
table(3) table(3)
max ← 15 max = 15
tablegen(3, m a x ) tablegen(3, m a x )
Algorithmique
– Paramètres d’entrée : Procédure table(Entrée n : Entier)
P r o c é d u r e table(n : Entier)
– P a r a m è t r e s d e sortie : P r o c é d u r e f ( E n t r é e x : Entier, Sorti e y : Entier)
– Paramètres d’entrée/sortie :
Pr o c é d u r e salairePlus(Entrée/sortie Salaire : Ré e l)
Python
– Uniquement des paramètres d’entrée
– L e s sort ie s s o n t r e t o u r n é e s ( r e t u r n ) c a r P y t h o n n ’ a q u e d e s f o n c t i o n s.
A p p e l e r la f o n c tio n et la p r o c é d u r e .
F o r m u l e r les s o lu tio n s e n l a n g a g e a l g o r i t h m i q u e ,
p u i s e n P y th o n .
Algorithmique et programmation [Link] 63
Ex em p l e – Algorithmique (1/2)
Algorithme programmePrincipal
Var nb1, nb2, maximum : Entiers
Var nomEtu : Chaîne
Var noteEtu : Réel
Début
Lire("1er nombre :", nb1)
Lire("2e nombre :", nb2)
maximum maxi(nb1, nb2) {ou directement}
←
Écrire("Maximum :", maximum) {Écrire("Maximum :", maxi(nb1, nb2))}
Lire("Nom :", nomEtu)
Lire("Note :", noteEtu)
afficheNote(nomEtu, noteEtu)
Fin
N o m b r e u x m o d u l e s intégrés à P y t h o n
– E x . m a t h , os, t ki nte r ( i n t e r f a c e g r a p h i q u e )
Tr è s n o m b r e u x m o d u l e s e x t e r n e s
– E x . m a t pl ot l i b ( c o u r b e s e t gra phi que s), scikits-learn (fouille
de données)
Algorithmique et programmation [Link] 66
Utiliser d e s m o d u l e s (1/2)
# M o d e d ’ e m p l o i d e s fonctions
help("os") # Li s t e et d e s c r i p t i o n d e t o u t e s les f o n c t i o n s d u m o d u l e
help("[Link]") # Descrip tio n d e la fo n ctio n « chdir » d u m o d u l e « o s »
Algorithmique Python
lettre3 ← n o m [ 3 ] lettre3 = n o m [ 2 ] # 1re
position = 0
extrait ←
e xtra it = n o m [ 2 : 5 ] #
S o u s C h a î n e ( n o m , 3 , 5) extrait ← Arrêt avant 5 extrait = n o m [ : 5] #
D e p u i s le début
S o u s C h a î n e ( n o m , 1, 5)
Algorithmique Python
longueur = len(nom)
longueur ← L o n g u e u r ( n o m )
# Fonction
n o m _ m a j ← Majuscules(nom) nom_maj =
txt ← " A b r a c a d a b r a " [Link]() # Méthode
txt ← txt = " A bra
S u p p r im e r E s p a c e s ( tx t) ca da bra "
tx t = tx [Link] ip ( )
Algorithmique Python
p o s ← ChercherPosition(txt, "b r a") p o s = [Link]("bra")
txt ← Remplacer(txt, "bra", " B R A " ) txt = [Link]("bra", " B R A " )
Algorithmique Python
Va r lst : Liste d’entiers
{Déclaration}
lst ← ( ) {Liste v id e } lst = [ ]
# L i s te v i d e
lst ← (1, 5, 7) lst = [ 1 , 5 , 7 ]
print(lst[1 ])
Écrire(lst(2)) {2e valeur} # 2e valeur
# Mu lti- ty p e !
lst2 = [1, 3 .1 4 , " o k " , [ ]]
Algorithmique Python
P o u r to u t n o m b r e d a n s lst for n o m b r e in lst:
faire print(nombre)
É cr ir e( nombre)
Fin pour
( B o u c l e p o u r t out é l é m e n t d e liste s p é c i f i q u e )
Algorithmique Python
Algorithmique Python
taille ← Longueur(lst) Trier(lst) taille = len(lst)
p os ← [Link]()
ChercherPosition(lst, 3 ) m o t s ← p o s = ls t. in d e x ( 3 )
m o t s = [Link](" ")
Découper(txt, " ") { m o t s e s t
# m o t s est u n e
u n e liste d e c h a î n e s } l is te d e c h a î n e s
C r é e r u n e liste d e n o m s .
Afficher la liste d e n o m s .
F o r m u l e r l es sol ut i ons e n l a n g a g e a l g o r i t h m i q u e , p u i s e n P y t h o n .
Fi ch i er t ex t e : fichier d o n t le c o n t e n u est u n
ensemble de lignes
Algorithmique Python
{Déclarations}
Var f : Fichier
Va r lignes : Liste d e Chaînes
Var l : Chaîne
lignes ← ("Angèle", "Bernard", "Cherifa", "Doug") lignes = ["Bernard\n", "Cherifa\n", " D o u g \n"]
# \n = passage à la ligne
f ← Ouvrir("[Link]", "écriture") f = open("[Link]", " w " ) # (w)rite
P o u r l d a n s lignes faire [Link]("Angèle\n") # Ec riture u n i q u e
Écrire(f, l) [Link](lignes) #
Fin pour Ecriture multiple
Fermer(f)
[Link]()
P o u r l d a n s lignes faire
Écrire(f, l) [Link](li gnes)
Fin pour
Fermer(f) [Link]()
lignes( ) ← l
Lire(f, l)
F i n tant q u e
Fermer(f) [Link]()
C r é e r u n e liste d e n o m s e t u n e liste d e sa l a i re s.
F o r m u l e r l es sol ut i ons e n l a n g a g e a l g o r i t h m i q u e , p u i s e n P y t h o n .
f ← Ouvrir("[Link]", "lecture")
Lire(f, l)
Tant que non FinDeFichier(f) faire
Écrire(l)
Lire(f, l)
Fin tant que
Fermer(f)
Fin
THE END