0% ont trouvé ce document utile (0 vote)
40 vues88 pages

Algorithme en Python

Transféré par

Olyvier Nzighou
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
40 vues88 pages

Algorithme en Python

Transféré par

Olyvier Nzighou
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

A l g o r i t h m i q u e et p r o g r a m m a t i o n

Master 1 Humanités numériques 2022-2023


Jérôme Darmont
[Link] [Link]/jdarmont/
Actualité d u cou rs

h ttp s ://e r ic . u n iv - ly o n 2 . f r /jd a r m o n t/? p a g e _ id = 3 1 3 5

h ttp s ://e r ic. u n iv - ly o n 2 . f r /jd a r m o n t/? f e e d = r s s 2

h ttp s://tw itte r. c o m /d a r m o n t_ ly o n 2 #hnprog

Algorithmique et programmation [Link] 2


Objectifs d u cou rs
D é c o u v r i r les b a s e s d e la p r o g r a m m a t i o n i n f o r m a t i q u e …

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

Algorithmique et programmation [Link] 5


Qu’est-ce qu’un programme ?

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

Indépendant de tout langage de programmation

E n français

Rigour eux

Algorithmique et programmation [Link] 7


Ou t i l 2 : L a n g a g e d e p r o g r a m m a t i o n

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

Dispose de nombreuses bibliothèques


(notamment traitements de document textuels, machine learning… )

Algorithmique et programmation [Link] 8


Mét hodologie

Et second exemple
d ’ a lg o r ith m e !

Algorithmique et programmation [Link] 9


Plan du cours

1. Stocker et manipuler des données e n m é m o i r e


2. Structures alternatives
3. Structures itératives
4. Sous-programmes
5. Structures de données avancées
6. Stocker des données persistantes

Algorithmique et programmation [Link] 10


Partie 1
S t o c k e r et m a n i p u l e r
des données en mémoire

Algorithmique et programmation [Link] 11


S t o c k e r d e s d o n n é e s d a n s la m é m o i r e d ’ u n o r d i n a t e u r

44 ans 1466,62 €

Jérô me VRAI

Algorithmique et programmation [Link] 12


D e u x types de données à déclarer
Va r i a b l e s Constantes

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"

Var v_f : Booléen


Pas de
( Ty p e d e d o n n é e s )
déclaration dans 13
Trois étapes

Déclarer une variable o u constante


R é s e r v e r s a p l a c e d a n s la m é m o i r e

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 et programmation [Link] 14


Initialisation d e variables

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

type(age) # int (entier)

ty p e(salaire) # f l o a t (réel)

type(nom) # str (chaîne)

type(v_f) # bool (booléen)

Algorithmique et programmation [Link] 16


Calculs
Algorithmique Python
âge ← 44 + 1 age = 44 + 1
age = age + 1
âge ← âge + 1
age += 1
salaire ← salaire x salaire = salaire
1,05 quotient ← a ÷ b * 1.05 quotient = a / b
nom ← nom | " nom = nom + "
Darmont"
Darmont"
Opérateurs arithmétiques
+ - x ÷ ^ div m o d + - * / ** //
%
^ ** : exposant mod % : modulo
(reste d e d i v i s i o n entière)
Algorithmique et programmation [Link] 17
Ent rées/ s ort i es ( 1 / 3 )

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 et programmation [Link] 19


Ent rées/ s ort i es ( 3 / 3 )

Algorithmique Python
É c r i r e ( "Âg e ", âge, "Salaire ", salaire) print("Âge", a ge , "Salaire", salaire)

Algorithmique et programmation [Link] 20


Structure d’un algorithme/programme

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

Calculer le prix T T C d ’ u n article q u e l c o n q u e sachant


son prix H T et le taux de T VA (fixé à 20 %).

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.

Algorithmique et programmation [Link] 22


Ex em p l e - Algorithmique

Algorithme prixTTC

Const TVA 0,2


Var prixHT, ←
prixTTC : Réels

Début
Lire("Prix HT :", prixHT) {Entrée}
prixTTC prixHT (1 + TVA) {Traitement/calcul}
← ×
Écrire("Prix TTC :", prixTTC) {Sortie}
Fin

Algorithmique et programmation [Link] 23


Partie 2
Structures alternatives
(tests)

Algorithmique et programmation [Link] 24


Q u ’ e s t - c e q u ’ u n test ?

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 .

Algorithmique et programmation [Link] 25


Exemple
Calculer
moyenn
e

Moyenne Moyenne Moyenne Moyenne
< 10 ∈ [10,12[ ∈ [12,14[ ∈ [14,16[

Mention Mention Mention


Ajourné
passabl assez bien
e bien
… … … …
Algorithmique et programmation [Link] 26
Ty p e s d e tests (1/2)

Si condition alors action

Si condition alors
action1 S i n o n action2

Algorithmique et programmation [Link] 27


Ty p e s d e tests (2/2)

Si con di t i o n1 alors action1


S i n o n si con di t ion2 alors action2
Les « Sinon si »
Si con di t i o n1 alors action1 peuvent se
r é p é t e r.
S i n o n si con di t i on2 alors action2
S i n o n action3

Algorithmique et programmation [Link] 28


É c r i t u r e d e s tests ( 1 / 2 )
Algorithmique Python
Si n o m = " J é r ô m e " alors if n o m = = " J é r ô m e " :
Écrire("Bravo") print("Bravo")
Fin si

Si âge < 1 8 alors if a g e < 1 8 :


Écrire("Mineur") print("Mineur")
Sin on else:
Écrire("Majeur") print("Majeur")
Fin si
S i s al ai re < 1 4 6 6 , 6 2 if s al ai re <
alors 1466.62:
Écrire("Pauvre") print("Pauvre")
S i n o n si s al ai re ≤ 3 0 0 0 elif s a l a i r e < =
alors 3000:
Écrire("Moyen") print("Moyen")
Sin on else:
print("Riche")
A l g o r i t h m i q u e e t p r o g r a m m a t i oÉcrire("Riche")
n [Link] 29
Fin si
É c r i t u r e d e s tests ( 2 / 2 )
Algorithmique Python
Si âge < 1 8 alors if a g e < 1 8 :
S i salaire > 0 alo r s if salair e > 0 :
salarie_mineur ← Vrai salar ie_ min eu r = Tr u e
Sinon else:
salarie_mineur ← F a u x salarie_mineur = False
Fin si
Fin si
Si âg e ≥ 2 5 et salaire = 0 if a g e > = 2 5 a n d s a l a i r e = = 0 :
a l ors print("Droit au RSA")
Écrire("Droit au RSA")
Fin si
Algorithmique et programmation [Link] 30
O p é r a t e u r s ut i l i sés d a n s l e s t es t s

Opérateurs de comparaison
Algorithmique Python
= ≠ < ≤ > ≥ == != < <= > >=

Opérateurs logiques
Algorithmique Python
et ou non and or not

Algorithmique et programmation [Link] 31


Tab l es d e vérité (1/3)

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

salaire 0 1000 2000


C2 Vrai Faux Faux

Algorithmique et programmation [Link] 32


Tab l es d e vérité (2/3)

Q u e l est le résultat de s tests : Si n o n C 1


Si C 1 et C 2
Si C 1 ou C 2 ?
C1 C2 non C 1 C 1 et C 2 C 1 o u C 2

Vrai Vrai Faux Vrai Vrai


Vrai Faux Faux Faux Vrai
Faux Vrai Vrai Faux Vrai
Faux Faux Vrai Faux Faux
Algorithmique et programmation [Link] 33
( â g e ≥ 2 5 e t sa l a i r e ≠ 0 ) o u
Tab l es d e vérité (3/3) (âge < 2 5 et salaire = 0)

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

Vrai Vrai Faux Faux Faux Faux Faux


Vrai Faux Vrai Vrai Faux Faux Vrai
Faux Vrai Faux Faux Vrai Vrai Vrai
Faux Faux Vrai Faux vrai
[Link] Faux Faux
Exemple

Définir des constantes login et m o t de passe.

Fa i r e saisir à u n · e utilisateur·trice u n l o g i n et u n m o t d e p a sse .

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 .

Algorithmique et programmation [Link] 35


Ex em p l e - Algorithmique
Algorithme motPasse
Const LOGIN "jerome"

Const MDP "p@p@oute"
← mdpSaisi : Chaînes
Var loginSaisi,

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)

Algorithmique et programmation [Link] 37


Qu ’ es t - ce q u ’ u n e b o u c l e ?

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

Algorithmique et programmation [Link] 38


Ty p e s d e boucles

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 .

O n répète le traitement jusqu’à ce qu’une


c o n d i t i o n s e réalise.

Algorithmique et programmation [Link] 39


Ta n t q u e o ù répéter j u s q u ’ à ?
Ta n t q u e … répéter R é p é t e r … jusqu’à

Condition Faux Instruc tions


de à répéter
poursuite
Vrai …
Condition Vrai
Instruc tions
d ’ arrêt
à répéter
Faux …
L e s inst ruct i ons p e u v e n t L e s i nst ruct i ons s o n t f o r c é m e n t
ne pas être exécutées. exécutées u n e fois.
Algorithmique et programmation [Link] 40
Ta n t q u e o ù répéter j u s q u ’ à ?

Algorithmique et programmation [Link] 41


Écri t ure d e s b o u c l e s
Algorithmique Python
P o u r i d e 1 à 1 0 faire for i in range(1, 11):
Écrire(7 x i) print(7 * i)
Fin pour
i←1 i= 1
Ta n t q u e i ≤ 1 0 faire while i < = 10:
Écrire(7 x i) print(7 * i)
i← i+ 1 i += 1
F i n tant q u e

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 .

Stocker un m o t de passe dans une constante. Faire en


saisir u n à u n · e utilisateur·trice j u s q u ’ à c e qu’il soit i d e n t i q u e
au mot de passe constant.

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 é .

F o r m u l e r les 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


Pyt ho n.

Algorithmique et programmation [Link] 43


E x e m p l e 1 - Algorithmique
Algorithme unCent

Var i, somme : Entiers

Début
somme 0
Pour i de←1 à 100 faire
somme somme + i {Cumul de la somme}
Fin pour ←
Écrire("Somme :", somme)
Fin

{Si on est matheux, somme n × (n + 1) 2


← ÷
100 × 101 2 = 5050}
Algorithmique et programmation [Link]
÷ 44
E x e m p l e 2 - Algorithmique

Algorithme motPasse2

Const MDP "All0M@m@nB0b0"



Var mdpSaisi : Chaîne

Début
Répéter
Lire("Mot de passe :", mdpSaisi)
Jusqu’à mdpSaisi = MDP
Fin

Algorithmique et programmation [Link] 45


E x e m p l e 3 - Algorithmique

Algorithme saisieNoms

Var nom : Chaîne

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

Algorithmique et programmation [Link] 46


B o u c l e s i m b r i q u é e s (1/2)

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 et programmation [Link] 47


B o u c l e s i m b r i q u é e s (2/2)

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

Algorithmique et programmation [Link] 49


Q u ’ e s t - c e q u ’ u n s o u s - p r o g r a m m e ? (1/3)

Q u e faire q u a n d u n m ê m e fragment de code se


répète dans un programme ?
Code A

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)

U n m ê m e sous-programme peut-être appelé par


plusieurs programmes.

Programme 1 Programme 3

Sous-programme A

Programme 2 Programme 4

Algorithmique et programmation [Link] 52


Paramètres

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

Algorithmique et programmation [Link] 53


Exemple de paramètres
Paramètres d’entré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

Algorithmique et programmation [Link] 54


P a r a m è t r e s f o r m e l s /P a r a m è t r e s r éel s

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

Algorithmique et programmation [Link] 56


Ty p e s d e s o u s - p r o g r a m m e s

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 et programmation [Link] 57


Écriture d e s fonctions

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)

Algorithmique et programmation [Link] 58


Spécificité d e s fonctions P y t h o n

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 et programmation [Link] 59


Écr i t u r e d e s p r o c é d u r e s (1/2)
Algorithmique Python
P r o c é d u r e table7() d e f table7():
Var i : Entier
Début
P o u r i d e 1 à 1 0 faire for i in range(1, 11):
Écrire(7 x i) print(7 * i)
Fin pour
Fin
P r o c é d u r e table(n : Entier) d e f table(n):
Var i : Entier
Début
P o u r i d e 1 à 1 0 faire for i in range(1, 11):
Écrire(n x i) print(n * i)
Fin pour
Fin
Algorithmique et programmation [Link] 60
Écr i t u r e d e s p r o c é d u r e s (2/2)

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 et programmation [Link] 61


Ty p e s d e p a r a m è t r e s

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.

Algorithmique et programmation [Link] 62


Exemple
C r é e r u n e f o n c t i o n p r e n a n t d e u x n o m b r e s e n t ie r s e n
paramètres d’entrée et retournant le plus grand.

Créer une procédure prenant en paramètres d’entrée un


n o m d ’ é t u d i a n t · e e t u n e n o t e , e t a ff i c h a n t « n o m a
obtenu note / 2 0 » à l’écran.

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)

Fonction maxi(n1, n2 : Entiers) : Entier


Début
Si n1 > n2 alors
Retourner n1
Sinon
Retourner n2
Fin si
Fin

Procédure afficheNote(nom : Chaîne,


note : Réel) Début
Écrire(nom, " a obtenu ", note, " / 20")
Fin

Algorithmique et programmation [Link] 64


Ex em p l e – Algorithmique (2/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

Algorithmique et programmation [Link] 65


Modules
M o d u l e (o u bibliothèque ) :
E n s e m b l e d e p r o c é d u r e s et d e f o n c t i o n s
– liées thématiquement
– pouvant être appelées depuis plusieurs p r o g r a m m e s

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)

# Importer u n o u plusieurs m odul e s


import os # M o d u l e « o s » ( s y s t è m e d’e xploitation)
i m p o r t o s, m a t h # Mo d u l e s « os » et « m a t h »

# Utiliser les fonctions d ’ u n m o d u l e


[Link]("~/jerome") # Fonction changement de dossier (module « os »)
racineCarree = [Link](4) # F o n c t i o n r a c i n e c a rré e ( m o d u l e « m a t h » )

Algorithmique et programmation [Link] 67


Utiliser d e s m o d u l e s (2/2)
# I m p o r t e r les f o n c t i o n s d ’ u n m o d u l e
f r o m o s imp o rt chdir # Fonction changement de dossier (module « os »)
f r o m m a t h i mp o rt * # To u t e s les fo n c t i o n s d u m o d u l e « m a t h »

# Utiliser les fonctions


ch d ir("~/jero m e") # P l u s b e s o i n d e préfixer la fo n ctio n
r a c i n e C a r r e e = sq rt(4 ) # p a r le n o m d u m o d u l e

# 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 et programmation [Link] 68


Partie 5
Structures de données
a v a n c é e s ( c h a î n e s e t liste s)

Algorithmique et programmation [Link] 69


Définitions

Chaîne de caractères : texte (court) c o m p o s é d’une suite


ordonnée de caractères
– E x. U n m e s s a g e : He l lo worl d!
1 2 3 4 5 6 7 8 9
– Ex. U n n u m é r o d’immatriculation : O P 565 W X
– Ex. U n m o t de passe : V 9 = 2 4 g E w Y: : 7 4 p F p / p H &

Liste : ensemble ordonné de données


– E x . D e s n o t e s : 11 8 , 5 1 6 1 4 , 3 11 , 6 1 0
– E x . D e s contacts : A g n i e s z k a B r u n o Isabel Jean-Philippe S a b i n e

Algorithmique et programmation [Link] 70


Extraire des parties d e chaînes

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 et programmation [Link] 71


Tr a n s f o r m e r d e s c h a î n e s

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 et programmation [Link] 72


Rechercher/remplacer dans des chaînes

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 et programmation [Link] 73


C r é e r d e s listes

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 et programmation [Link] 74


M e m e informatique

Algorithmique et programmation [Link] 75


Parcourir u n e liste

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 et programmation [Link] 76


M e t t r e u n e liste à jour

Algorithmique Python

lst( ) ← 9 {Aj o u t e n fin} [Link](9) # Ajout en fin


Ajouter(lst, 2 , 4 ) { A j o u t 2 e position} [Link](1, 4 ) # A j o u t e n 2 e p o s i t i o n

lst(2) ← 3 {Mo d i fi c at i o n 2 e pos.} l s t [1 ] = 3 # Modification 2e pos.

Suppr(lst, 3 ) {Suppression 3 e pos.} l s t .p op(2) # Suppression 3e pos.

Algorithmique et programmation [Link] 77


M a n i p u l e r u n e liste

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

Algorithmique et programmation [Link] 78


Exemple

C r é e r u n e liste d e n o m s .

Afficher la liste d e n o m s .

Av a n t l ’a ffi chage, m e t t r e t o u s les n o m s d e la liste e n m a j u s c u l e s .

Av a n t l’affichage, trier 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 .

Algorithmique et programmation [Link] 79


Ex em p l e - Algorithmique
Algorithme listeNoms
Var liste : Liste de Chaînes
Var i : Entier
Var nom : Chaîne
Début
liste ("ba", "bo", "be", "bu", "bi")

Pour i de 1 à Longueur(liste) faire
liste(i) Majuscule(liste(i))
Fin pour ←
Trier(liste)
Pour tout nom dans liste faire
Écrire(nom)
Fin pour
Fin
Algorithmique et programmation [Link] 80
Partie 6
Stocker des données
p e rs i st a n t e s (fichiers)

Algorithmique et programmation [Link] 81


Qu’est-ce q u ’ u n fichier ?

Fichier : ensemble n o m m é de données enregistrées


sur un support de stockage permanent (disque dur
o u S S D , clé U S B , carte m é m o i r e , etc.)

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 et programmation [Link] 82


Créer u n fichier

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]()

Algorithmique et programmation [Link] 83


Manipuler u n fichier
Algorithme Python

lignes ← ("Ekaterina", "Fali") lignes = ["Ekaterina\n", "Fali\n"]


f ← Ouvrir("[Link]", "ajout") f = open("[Link]", " a " ) # (a)ppend
Ajout

P o u r l d a n s lignes faire
Écrire(f, l) [Link](li gnes)
Fin pour
Fermer(f) [Link]()

f ← Ouvrir("[Link]", "lecture") f = open("[Link]", "r") # (r)ead


Lire(f, l) l i g n e s = [Link]()
Tant que n o n FinDeFichier(f) faire # lignes est u n e liste d e chaînes
Lecture

lignes( ) ← l
Lire(f, l)
F i n tant q u e
Fermer(f) [Link]()

Algorithmique et programmation [Link] 84


Exemple

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.

S t o c k e r l es n o m s et les salaires d a n s u n fichier. U n n o m et le


sala ire c o r r e s p o n d a n t d o i v e n t ê t r e s é p a r é s p a r u n e v i rg u l e (fic hie r
C S V – c o m m a - s e p a r a t e d values).

Lire le fichier et afficher les valeurs qu’il contient.

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 .

Algorithmique et programmation [Link] 85


Ex em p l e - Algorithmique
Algorithme créerCSV
Var f : Fichier
Var listeNoms : Liste de Chaînes
Var listeSal : Liste de Réels
Var i : Entier
Var ligne : Chaîne
Début
listeNoms ("Aïcha", "Boris","Cécile")

listeSal (2500, 1500, 2250)

f Ouvrir("[Link]", "écriture")
← i de 1 à Longueur(listeNoms) faire {Il faut que les deux listes aient la même longueur.}
Pour
Écrire(f, listeNoms(i) | "," | convChaîne(listeSal(i))) {| est l’opérateur de concaténation}
Fin pour
Fermer(f)
Algorithmique et programmation [Link] 86
E x e m p l e – Algorithmique (suite)

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

Algorithmique et h tt p s:/ /eri c.u n iv -ly o n 2 .fr/ jd a rmont/ 88


programmation

Vous aimerez peut-être aussi