Vous êtes sur la page 1sur 20

24/08/2019

Actualité du cours

http://eric.univ-lyon2.fr/jdarmont/?page_id=3135
Algorithmique et programmation
Master 1 Humanités numériques
2019-2020 http://eric.univ-lyon2.fr/jdarmont/?feed=rss2
Jérôme Darmont
http://eric.univ-lyon2.fr/jdarmont/

https://twitter.com/darmont_lyon2 #hnprog

Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 2

1 2

Objectifs du cours Qu’est-ce qu’un algorithme ?

mirfaces.com
Découvrir les bases de la programmation informatique…
Problème
Al-Khwârizmî
warwithpc.blogspot.fr

(780-850)

…qui seront réutilisées en M2 (fouille de données/de textes) Données Suite d’opérations


Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 3 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 4

3 4

1
24/08/2019

Exemple d’algorithme Qu’est-ce qu’un programme ?

1
2 étapes/opérations
3
4 Traduction d’un algorithme en un langage interprétable par un ordinateur

Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 5 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 6

5 6

Outil 1 : Langage algorithmique textuel Outil 2 : Langage algorithmique visuel

Indépendant de tout langage de programmation Langage graphique

En français Disponible en ligne developers.google.com/blockly/

Le plus rigoureux Génération de code dans différents langages

Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 7 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 8

7 8

2
24/08/2019

Outil 3 : Langage de programmation Méthodologie

Fonctionne sur tous les systèmes d’exploitation

Très utilisé pour apprendre la programmation Et second exemple


d’algorithme !

Dispose de nombreuses librairies


(notamment traitements de document textuels, data mining…)

Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 9 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 10

9 10

Plan du cours

1. Stocker et manipuler des données en mémoire


2. Structures alternatives
3. Structures itératives Partie 1
4. Sous-programmes Stocker et manipuler
5. Structures de données avancées des données en mémoire
6. Stocker des données persistantes
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 11 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 12

11 12

3
24/08/2019

Stocker des données dans la mémoire d’un ordinateur Deux types de données à déclarer

Variables Constantes
1466,62 € Var âge : Entier
46 ans Const N ← 10
Var salaire : Réel
Const PI ← 3,1416
Var nom : Chaîne
Const MONNAIE ← "Euro"
Jérôme Var v_f : Booléen
VRAI
(Type de données) Pas de déclaration
dans Blockly et Python
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 13 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 14

13 14

Trois étapes Initialisation de variables

Algorithme Blockly Python


Déclarer une variable ou constante
âge ← 44 age = 44
Réserver sa place dans la mémoire salaire ← 1466,62 salaire = 1466.62
nom ← "Jérôme" nom = "Jérôme"
Initialiser une variable nom = 'Jérôme'
Lui donner une valeur v_f ← Vrai v_f = True
{Contraire : Faux} # Contraire : False
Utiliser une variable ou constante a = b = 20
x, y = 30, 40
Utiliser ou modifier sa valeur
Commentaires (non exécutés)
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 15 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 16

15 16

4
24/08/2019

Connaître le type d’une variable Calculs

Algorithme Blockly Python


âge ← 44 + 1 age = 44 + 1
type(age) # int (entier) âge ← âge + 1 age = age + 1
age += 1
type(salaire) # float (réel) salaire ← salaire x 1,05 salaire = salaire * 1.05
quotient ← a ÷ b quotient = a / b
type(nom) # str (chaîne) nom ← nom | " Darmont" nom = nom + " Darmont"
Opérateurs arithmétiques
type(v_f) # bool (booléen)
+ - x ÷ ^ div mod + - x ÷ ^ + - * / ** // %
^ ** : exposant div // : division entière mod % : modulo
(reste de division entière)
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 17 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 18

17 18

Entrées/sorties (1/3) Entrées/sorties (2/3)


Algorithme Python
Entrées Sorties Lire(nom) nom = input()
Lire(âge) age = int(input())
Lire("Salaire :", salaire) salaire = float(input("Salaire : "))
Écrire("Hello world!") print("Hello world!")
Écrire(âge) print(age)
Blockly

Saisir Afficher
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 19 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 20

19 20

5
24/08/2019

Entrées/sorties (3/3) Structure d’un algorithme/programme


Algorithme Python
Algorithme Exemple

Suite d’instructions exécutées dans l’ordre


{Déclaration des constantes} # Aucune déclaration de variable (c’est moche)
Algorithme Python
Const MONNAIE ← "Euros"
Écrire("Âge ", âge, "Salaire ", salaire) print("Âge", age, "Salaire", salaire) {Déclaration des variables} # La constante… est une variable (initialisée)
Blockly Var salaire : Réel MONNAIE = "Euros"
Var nom : Chaîne
Début
Lire("Nom :", nom) nom = input("Nom :")
Lire("Salaire :", salaire) salaire = float(input("Salaire : "))
salaire ← salaire × 1,1 salaire = salaire * 1.1
Écrire("Nouveau salaire de ", nom, print("Nouveau salaire de ", nom,
" : ", salaire, " ", MONNAIE) " : ", salaire, " ", MONNAIE)
Fin
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 21 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 22

21 22

Exemple

Calculer le prix TTC d’un article quelconque


sachant son prix HT et le taux de TVA (fixé à 20 %).

Formuler la solution en langage algorithmique, en Partie 2


Blockly, puis en Python. Structures alternatives
Indication : déterminer les variables, les entrées et (tests)
les sorties.

Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 23 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 24

23 24

6
24/08/2019

Qu’est-ce qu’un test ? Exemple


Calculer
moyenne
Expression d’un choix
– Ex. Si le mot de passe est correct, …
alors l’utilisateur·trice peut se connecter. Moyenne Moyenne Moyenne Moyenne
< 10 ∈[10, 12[ ∈[12, 14[ ∈[14, 16[
– Ex. Si la moyenne générale est supérieure ou égale à 10,
alors l’étudiant·e valide son année.
Sinon, Mention Mention Mention
Ajourné
passable assez bien bien
l’étudiant·e échoue.

Crée des voies alternatives dans l’algorithme


… … … …
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 25 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 26

25 26

Types de tests (1/2) Types de tests (2/2)

Si condition1 alors action1


Si condition alors action
Sinon si condition2 alors action2
Les « Sinon si »
Si condition alors action1 Si condition1 alors action1 peuvent se répéter.

Sinon action2 Sinon si condition2 alors action2


Sinon action3
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 27 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 28

27 28

7
24/08/2019

Écriture des tests (1/2) Écriture des tests (2/2)


Algorithme Blockly Python
Si nom = "Jérôme" alors if nom == "Jérôme":
Écrire("Bravo") print("Bravo") Algorithme Blockly Python
Fin si
Si âge < 18 alors if age < 18:
Si âge < 18 alors if age < 18: Si salaire > 0 alors if salaire > 0:
Écrire("Mineur") print("Majeur") salarie_mineur ← Vrai salarie_mineur = True
Sinon else: Sinon else:
Écrire("Majeur") print("Mineur") salarie_mineur ← Faux salarie_mineur = False
Fin si Fin si
Fin si
Si salaire < 1466,62 alors if salaire < 1466.62:
Écrire("Pauvre") print("Pauvre") Si âge ≥ 25 et salaire = 0 alors if age >=25 and salaire == 0:
Sinon si salaire ≤ 3000 alors elif salaire <= 3000: Écrire("Droit au RSA") print("Droit au RSA")
Écrire("Moyen") print("Moyen") Fin si
Sinon else:
Écrire("Riche") print("Riche")
Fin si
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 29 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 30

29 30

Opérateurs utilisés dans les tests Tables de vérité (1/3)

Opérateurs de comparaison
Soient deux variables booléennes C1 et C2.
– Par exemple : C1 ← (âge ≥ 25)
Algorithmique Blockly Python
C2 ← (salaire = 0)
= ≠ < ≤ > ≥ = ≠ < ≤ > ≥ == != < <= > >=

âge 22 25 27
Opérateurs logiques C1 Faux Vrai Vrai
Algorithmique Blockly Python
et ou non and or and or not salaire 0 1000 2000
C2 Vrai Faux Faux

Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 31 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 32

31 32

8
24/08/2019

Tables de vérité (2/3) Tables de vérité (3/3) (âge ≥ 25 et salaire ≠ 0) ou (âge < 25 et salaire = 0)

Quel est le résultat des tests : Si non C1 Soit la variable booléenne


Si C1 et C2 C3 ← (C1 et (non C2)) ou ((non C1) et C2).
Si C1 ou C2 ? Quelles sont les valeurs possibles de C3 en fonction de
celles de C1 et C2 ?
C1 C2 non C1 C1 et C2 C1 ou C2
C1 C2 non C2 C1 et (non C2) non C1 (non C1) et C2 C3
Vrai Vrai Faux Vrai Vrai
Vrai Vrai Faux Faux Faux Faux Faux
Vrai Faux Faux Faux Vrai
Vrai Faux Vrai Vrai Faux Faux Vrai
Faux Vrai Vrai Faux Vrai
Faux Vrai Faux Faux Vrai Vrai Vrai
Faux Faux Vrai Faux Faux
Faux Faux Vrai Faux vrai Faux Faux
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 33 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 34

33 34

Exemple

Définir des constantes login et mot de passe.


Faire saisir à un·e utilisateur·trice un login et un mot
de passe.
Partie 3
Si le login et le mot de passe saisis correspondent aux
constantes, afficher « connexion réussie », sinon Structures itératives
afficher « erreur d’authentification ». (boucles)
Formuler la solution en langage algorithmique, en
Blockly, puis en Python.
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 35 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 36

35 36

9
24/08/2019

Qu’est-ce qu’une boucle ? Types de boucles

Répétition d’un ensemble d’instructions 1. On connaît le nombre d’itérations.


– Ex. Choisir 7 nombres au hasard (Loto).
– Ex. Répéter N fois le même traitement Instruction A
(plutôt que copier/coller N fois les instructions) 2. Tant qu’une condition n’est pas réalisée, on répète le
traitement.
– Ex. Saisir les notes de tou·tes les étudiant·es Instruction B
d’une promotion … – Ex. Saisir des noms tant que des personnes s’inscrivent.

– Ex. Augmenter tou·tes les salarié·es d’une entreprise Instruction Z 3. On répète le traitement jusqu’à ce qu’une condition
de 3 % se réalise.
– Ex. Demander un mot de passe jusqu’à ce qu’il soit valide.
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 37 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 38

37 38

Tant que où jusqu’à ? Écriture des boucles


Algorithme Blockly Python
Tant que… répéter Répéter… jusqu’à
Pour i de 1 à 10 faire for i in range(1, 11):
Écrire(7 x i) print(7 * i)
Fin pour
Faux Instructions à
Condition i ←1 i=1
répéter Tant que i ≤ 10 faire while i <= 10:
de poursuite
Vrai … Écrire(7 x i)
i ←i+1
print(7 * i)
i += 1
Condition Vrai Fin tant que
Instructions à
répéter d’arrêt i ←1
Faux … Répéter
i=1
while True: # Boucle infinie
Écrire(7 x i) print(7 * i)
i ←i+1 i += 1
Les instructions peuvent Les instructions sont forcément
Jusqu’à i > 10 if i > 10:
ne pas être exécutées. exécutées une fois. Fonctionne comme un while break # Très inélégant
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 39 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 40

39 40

10
24/08/2019

Exemple Boucles imbriquées (1/2)

Afficher la somme des nombres de 1 à 100. Exemple : comment calculer une table de multiplication ?
Stocker un mot de passe dans une constante. Faire en
saisir un à un·e utilisateur·trice jusqu’à ce qu’il soit 1 2 3 4 5
identique au mot de passe constant. 1 1 2 3 4 5
2 2 4 6 8 10
Saisir des noms de personnes tant que le mot-clé FIN
3 3 6 9 12 15
n’est pas entré.
4 4 8 12 16 20
Formuler les solutions en langage algorithmique, en 5 5 10 15 20 25
Blockly, puis en Python.
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 41 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 42

41 42

Boucles imbriquées (2/2)

Algorithme Blockly Python


Pour i de 1 à 5 faire for i in range(1, 6):
Pour j de 1 à 5 faire for j in range(1, 6):
Écrire(i x j) print(i * j)
Fin pour
Fin pour
Partie 4
Sous-programmes
Il est possible d’imbriquer :
- n’importe quel type de boucle (pour, tant que, répéter jusqu’à),
- des types de boucles différents,
- autant de fois que nécessaire.
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 43 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 44

43 44

11
24/08/2019

Qu’est-ce qu’un sous-programme ? (1/3) Qu’est-ce qu’un sous-programme ? (2/3)

Que faire quand un même fragment de code se 2. Créer un sous-programme


répète dans un programme ?
Programme principal
Code A
Code A
Code X
1. Copier/coller le fragment Sous-programme
Code B Code B
Code X
– Le code devient plus volumineux, Code X Code C
moins lisible
Code C Code D
– En cas de correction, il faut modifier Code X
toutes les copies (source d’erreurs)
Code D Le programme principal appelle le sous-programme.
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 45 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 46

45 46

Qu’est-ce qu’un sous-programme ? (3/3) Paramètres

Un même sous-programme peut-être appelé par Comme tout algorithme, un sous-programme a


plusieurs programmes.
des entrées et des sorties.

Programme 1 Programme 3 Sous-programme

Sous-programme A Code X

Programme 2 Programme 4 Données


Paramètres d’entrée Paramètres de sortie

Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 47 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 48

47 48

12
24/08/2019

Exemple de paramètres Paramètres formels/Paramètres réels

Prix HT TVA
Paramètres d’entrée

Paramètres de sortie
Prix HT Sous-programme TVA Calcul de TVA
Taux de TVA Prix TTC
Calcul de TVA
Taux de TVA Prix TTC
TVA ← Prix HT × Taux de TVA 10 € 2€
Prix TTC ← Prix HT + TVA
Calcul de TVA
20 % 22 €
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 49 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 50

49 50

Paramètres d’entrée/sortie Types de sous-programmes

Fonction : effectue en général un calcul dont le


résultat est retourné au programme principal
– Ex. Diviser une note sur 20 par 2 pour obtenir une note sur 10.
Augmentation
Salaire Salaire
de salaire
2000 € Salaire ← Salaire × 1,05 2100 € Procédure : effectue tout type de traitement
– Ex. Couper une chaîne de caractères contenant un nom et un
prénom en deux chaînes distinctes, une pour le nom et une
pour le prénom.

Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 51 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 52

51 52

13
24/08/2019

Écriture des fonctions (1/2) Écriture des fonctions (2/2)

Algorithme Python
Blockly
Fonction tva(prixHT : Réel) : Réel def tva(prixHT):
Const TAUX ← 0,2 TAUX = 0.2
Début return prixHT * (1 + TAUX)
Retourner prixHT x (1 + TAUX)
Fin

{Appel de la fonction # Appel de la fonction


dans le programme principal} # dans le programme principal
prixTTC ← tva(10,5) prixTTC = tva(10.5)

Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 53 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 54

53 54

Spécificité des fonctions Python Écriture des procédures (1/2)


Algorithme Blockly Python
Elles peuvent retourner plus d’un résultat. Procédure table7() def table7():
Var i : Entier
Début
# Exemple Pour i de 1 à 10 faire for i in range(1, 11):
def tva2(prixHT): Écrire(7 x i) print(7 * i)
TAUXPLEIN = 0.2 Fin pour
Fin
TAUXREDUIT = 0.055
Procédure table(n : Entier) def table(n):
return prixHT * (1 + TAUXPLEIN), prixHT * (1 + TAUXREDUIT)
Var i : Entier
Début
# Appel de la fonction dans le programme principal Pour i de 1 à 10 faire for i in range(1, 11):
prixTTCplein, prixTTCreduit = tva2(10.5) Écrire(n x i) print(n * i)
Fin pour
Fin
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 55 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 56

55 56

14
24/08/2019

Écriture des procédures (2/2) Types de paramètres


Algorithme Blockly Python
Procédure tablegen( n : Entier, def tablegen(n, m): Algorithmique
m : Entier)
Var i : Entier – Paramètres d’entrée : Procédure table(Entrée n : Entier)
Début Procédure table(n : Entier)
Pour i de 1 à m faire for i in range(1, m + 1):
Écrire(n x i) print(n * i) – Paramètres de sortie : Procédure f(Entrée x : Entier, Sortie y : Entier)
Fin pour – Paramètres d’entrée/sortie :
Fin Procédure salairePlus(Entrée/sortie Salaire : Réel)
{Appel des procédures # Appel des procédures
dans le programme principal} # dans le programme principal
table7() table7() Blockly et Python
table(3) table(3)
max ← 15 max = 15 – Uniquement des paramètres d’entrée
tablegen(3, max) tablegen(3, max)
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 57 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 58

57 58

Exemple Modules

Créer une fonction prenant deux nombres entiers en Module (ou bibliothèque) :
paramètres d’entrée et retournant le plus grand. Ensemble de procédures et de fonctions
– liées thématiquement
Créer une procédure prenant en paramètres d’entrée – pouvant être appelées depuis plusieurs programmes
un nom d’étudiant·e et une note, et affichant « nom a
obtenu note / 20 » à l’écran. Nombreux modules intégrés à Python
– Ex. math, os, tkinter (interface graphique)
Appeler la fonction et la procédure.
Formuler les solutions en langage algorithmique, en Très nombreux modules externes
– Ex. matplotlib (courbes et graphiques), scikits-learn (fouille de
Blockly, puis en Python.
données), NLTK (traitement automatique de la langue)
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 59 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 60

59 60

15
24/08/2019

Utiliser des modules (1/2) Utiliser des modules (2/2)

# Importer les fonctions d’un module


from os import chdir # Fonction changement de dossier (module « os »)
# Importer un ou plusieurs modules from math import * # Toutes les fonctions du module « math »
import os # Module « os » (système d’exploitation)
import os, math # Modules « os » et « math »
# Utiliser les fonctions
chdir("D:/Jérôme") # Plus besoin de préfixer la fonction
# Utiliser les fonctions d’un module racine_carree = sqrt(4) # par le nom du module
os.chdir("D:/Jérôme") # Fonction changement de dossier (module « os »)
racine_carree = math.sqrt(4) # Fonction racine carrée (module « math ») # Mode d’emploi des fonctions
help("os") # Liste et description de toutes les fonctions du module
help("os.chdir") # Description de la fonction « chdir » du module « os »

Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 61 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 62

61 62

Définitions

Chaîne de caractères : texte (court) composé d’une


suite ordonnée de caractères
– Ex. Un message : Hello world! 1 2 34 5 6 7 8 9

– Ex. Un numéro d’immatriculation : OP 565 WX


Partie 5
– Ex. Un mot de passe : V9=24gEwY::74pFp/pH&
Structures de données
avancées (chaînes et listes) Liste : ensemble ordonné de données
– Ex. Des notes : 11 8,5 16 14,3 11,6 10
– Ex. Des contacts : coco67@yahoo.fr jdarmont@univ-lyon2.fr

Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 63 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 64

63 64

16
24/08/2019

Extraire des parties de chaînes Transformer des chaînes


Algorithme Python
Algorithme Python
lettre3 ← nom[3] lettre3 = nom[2] # 1re position = 0
longueur ← Longueur(nom) longueur = len(nom) # Fonction
extrait ← SousChaîne(nom, 3, 5) extrait = nom[2 : 5] # Arrêt avant 5 nom_maj ← Majuscules(nom) nom_maj = nom.upper() # Méthode
extrait ← SousChaîne(nom, 1, 5) extrait = nom[: 5] # Depuis le début txt ← " A bra ca da bra " txt = " A bra ca da bra "
txt ← SupprimerEspaces(txt) txt = txt.strip()
Blockly
Blockly

Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 65 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 66

65 66

Rechercher/remplacer dans des chaînes Créer des listes


Algorithme Python
Algorithme Python Var lst : Liste d’entiers {Déclaration}
lst ← ( ) {Liste vide} lst = [ ] # Liste vide
pos ← ChercherPosition(txt, "bra") pos = txt.find("bra")
lst ← (1, 5, 7) lst = [1, 5, 7]
txt ← Remplacer(txt, "bra", "BRA") txt = txt.replace("bra", "BRA") Écrire(lst(2)) {2e valeur} print(lst[1]) # 2e valeur
lst2 = [1, 3.14, "ok", [ ]] # Multi-type !

Blockly Blockly

Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 67 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 68

67 68

17
24/08/2019

Parcourir une liste Mettre une liste à jour


Algorithme Python
Algorithme Python
lst( ) ← 9 {Ajout en fin} lst.append(9) # Ajout en fin
Pour tout nombre dans lst faire for nombre in lst: Ajouter(lst, 2, 4) {Ajout 2e position} lst.insert(1, 4) # Ajout en 2e position
Écrire(nombre) print(nombre) lst(2) ← 3 {Modification} lst[1] = 3 # Modification
Fin pour Suppr(lst, 3) {Suppression 3e pos.} lst.pop(2) # Suppression 3e pos.

Blockly Blockly

(Boucle pour tout élément de liste spécifique)

Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 69 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 70

69 70

Manipuler une liste Exemple


Algorithme Python
taille ← Longueur(lst) taille = len(lst) Créer une liste de noms.
Trier(lst) lst.sort()
pos ← ChercherPosition(lst, 3) pos = lst.index(3)
mots ← Découper(txt, " ") mots = txt.split(" ")
Mettre tous les noms de la liste en majuscules.
{mots est une liste de chaînes} # mots est une liste de chaînes
Trier la liste de noms.
Blockly
Afficher la liste de noms.
Formuler les solutions en langage algorithmique, en
Blockly, puis en Python.

Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 71 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 72

71 72

18
24/08/2019

Qu’est-ce qu’un fichier ?

Fichier : ensemble nommé de données enregistrées


sur un support de stockage permanent (disque dur
ou SSD, clé USB, etc.)
Partie 6
Stocker des données Fichier texte : fichier dont le contenu est un ensemble
persistantes (fichiers) de lignes de caractères

Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 73 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 74

73 74

Créer un fichier Manipuler un fichier


Algorithme Python
Algorithme Python lignes ← ("Ekaterina", "Fali") lignes = ["Ekaterina\n", "Fali\n"]
{Déclarations} f ← Ouvrir("fichier.txt", "ajout") f = open("fichier.txt", "a") # (a)ppend

Ajout
Var f : Fichier Pour l dans lignes faire
Var lignes : Liste de Chaînes Écrire(f, l) f.writelines(lignes)
Var l : Chaîne Fin pour
Fermer(f) f.close()
lignes ← ("Angèle", "Bernard", "Cherifa", "Doug") lignes = ["Bernard\n", "Cherifa\n", "Doug\n"]
# \n = passage à la ligne f ← Ouvrir("fichier.txt", "lecture") f = open("fichier.txt", "r") # (r)ead
f ← Ouvrir("fichier.txt", "écriture") f = open("fichier.txt", "w") # (w)rite Lire(f, l) lignes = f.readlines()
Pour l dans lignes faire f.write("Angèle\n") # Ecriture unique Lecture Tant que non FinDeFichier(f) faire # lignes est une liste de chaînes
Écrire(f, l) f.writelines(lignes) # Ecriture multiple lignes( ) ← l
Fin pour Lire(f, l)
Fermer(f) f.close() Fin tant que
Fermer(f) f.close()

Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 75 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 76

75 76

19
24/08/2019

Exemple

Créer une liste de noms et une liste de salaires.


Stocker les noms et les salaires dans un fichier. Un nom
et le salaire correspondant doivent être séparés par une
virgule (fichier CSV – comma-separated values).
Lire le fichier et afficher les valeurs qu’il contient.
Formuler les solutions en langage algorithmique puis THE END
en Python. Blockly ne prend pas en charge la gestion de
fichiers.
Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 77 Algorithmique et programmation http://eric.univ-lyon2.fr/jdarmont/ 78

77 78

20