Académique Documents
Professionnel Documents
Culture Documents
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
1 2
mirfaces.com
Découvrir les bases de la programmation informatique…
Problème
Al-Khwârizmî
warwithpc.blogspot.fr
(780-850)
3 4
1
24/08/2019
1
2 étapes/opérations
3
4 Traduction d’un algorithme en un langage interprétable par un ordinateur
5 6
7 8
2
24/08/2019
9 10
Plan du cours
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
15 16
4
24/08/2019
17 18
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
21 22
Exemple
23 24
6
24/08/2019
25 26
27 28
7
24/08/2019
29 30
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
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)
33 34
Exemple
35 36
9
24/08/2019
– 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
39 40
10
24/08/2019
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
43 44
11
24/08/2019
45 46
Sous-programme A Code X
47 48
12
24/08/2019
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
51 52
13
24/08/2019
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
53 54
55 56
14
24/08/2019
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
61 62
Définitions
63 64
16
24/08/2019
65 66
Blockly Blockly
67 68
17
24/08/2019
Blockly Blockly
69 70
71 72
18
24/08/2019
73 74
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()
75 76
19
24/08/2019
Exemple
77 78
20