Cours Algo Programmation Python
Cours Algo Programmation Python
Algorithmique et Programmation en
Python
Dr Sibiri TIEMOUNOU
1
Plan du cours
3. Structures de données
4. Procédures et fonctions
2
05/03/2021
Sommaire
Objectifs de ce cours
Evaluation
Rapport de TP
Mini projet (en Python)
3
0. Généralités sur l’Algorithmique et la programmation
4
05/03/2021
0.1 Algorithmique
Définition
L’algorithmique est un terme d’origine arabe, comme algèbre, amiral ou zénith.
5
0.1 Algorithmique
Exemples d’algorithmes
Recettes de cuisine
6
0.1 Algorithmique
Informations
en entrée
Algorithme informatique
=
procédure de calcul
7
0.1 Algorithmique
Calculabilité
Existe-t-il des tâches pour lesquelles il n'existe aucun algorithme ?
Etant donnée une tâche, peut-on dire s'il existe un algorithme qui la résolve ?
Correction
Peut-on être sûr qu'un algorithme réponde au problème pour lequel il a été conçu ?
8
0.2 Langage de programmation
9
05/03/2021
0.2 Langage de programmation
Exemple :
Affiche « A » à l’écran
Affiche une zone où l’utilisateur pourra saisir son nom
Si l’utilisateur clique sur le bouton « fermer », alors le programme se ferme
10
0.3 Type de langages de programmation
Langages compilés
Le code écrit par le développeur est d’abord compilé (conversion du code source
en langage machine) avant d’être exécuter
11
0.3 Type de langages de programmation
Langages interprétés
Ces langages n’ont pas besoin de compilation. Le code source est lu et traduite
pour être exécuté
12
0.3 Type de langages de programmation
Langages Type
Python Interprété
C++ Compilé
C Compilé
Java Compilé
HTML/CSS Interprété
PHP Interprété
Javascript Interprété
SQL Interprété
13
0.4 Algorithmie et programmation
L’algorithmique sert à résoudre les problèmes de monde des vivants grâçe à la logique et surtout de mettre en place
un système d’automisation
15
0.5 Présentation du langage Python
16
0.5 Présentation du langage Python
Langage portable
fonctionne sous de nombreux systèmes d'exploitation
Linux, MacOS, Windows
17
0.5 Présentation du langage Python
18
0.5 Présentation du langage Python
19
0.5 Présentation du langage Python
21
0.5 Présentation du langage Python
22
0.5 Présentation du langage Python
from A import B
A partir de la librairie A
importer la sous libraire (ou
fonctions) B
23
0.5 Présentation du langage Python
Utilisation de variable
Pas besoin de spécifier son type
Déclaration et initialisation de
tableau
Appel de fonctions
24
0.5 Présentation du langage Python
Python : How to program, par Deitel, Liperi & Wiedermann, Prentice Hall, Upper
Saddle River – NJ 07458, 2002, 1300 p., ISBN 0-13-092361-3,
25
0.6 A propos de la programmation
Réponses:
Non, non et non
un super-niveau en maths n'est pas nécessaire
La connaissance en maths dépend du type de logiciels (cryptage, jeux 3D, …)
• Le programme ne marche • Pas besoin d’être fort en • Non, on ne tape pas son
jamais du premier cours Maths mais besoin de ordinateur avec un marteau
réfléchir
27
1. Rappel sur les notions de base
28
05/03/2021
1.1 Retour sur l’algorithmique
Le pseudo-code n’est pas un langage de programmation mais un moyen d’être très proche
de la programmation, sans être noyé sous la syntaxe d’un langage de programmation.
29
1.1 Retour sur l’algorithmique
Langage algorithmique
L’un des éléments fondamentaux en Algorithmique est la manipulation des des données à l’aide
des variables 30
1.2 Les variables
Définition
Lors de l’exécution d’un algorithme, on va avoir besoin de stocker des données, voire des
résultats. Pour cela, on utilise des variables. On attribue un nom à chaque variable.
Une variable est donc une zone mémoire qui associe un nom à une valeur qui peut
éventuellement varier au cours du temps
31
1.2 Les variables
Déclaration
Dans le format LDA, Il faut faire précéder la description de l'algorithme par une partie dite
déclarative où l'on regroupe les caractéristiques des variables manipulées
type variables.
Instruction d’affectation
L’affectation est l’opération qui consiste à attribuer une valeur à une variable.
Variable ← expression
32
1.2 Les variables
Type de variable
Lorsqu’on déclare une variable, il faut préciser ce que l’on voudra mettre dedans c’est le
type
33
1.2. Les variables
Lire variable
affiche variable
Exemple
Exprimer un nombre de secondes sous forme d'heures, minutes, secondes. La seule
donnée est le nombre total de secondes que nous appellerons nsec ; les résultats
consistent en 3 nombres : h, m, s
34
1.2. Les variables
Exemple
35
1.2. Les variables
Remarques
Contrairement au langage C, une instruction, en Python, ne se termine pas par un point virgule « ; »
Même si la déclaration d’une variable ne requiert pas son type, une variable est en réalité typée en
Python :
type Type en Python Exemple
Les entiers int x=2
Les réels float, double a = 5.0
Les chaines de caractères string (str) my flowers are beautiful
Les booléens bool (True, False) is_rich = True
Pour connaitre le type d’une variable :
type (ma_variable) 36
1.2 Les variables
les caractères spéciaux tels que $, #, @, etc. sont interdits, à l’exception du caractère
« _ » (souligné).
37
1.2 Les variables
Exemple :
print("my flowers are beautiful ")
nbEtudiant = 15
print("le nombre d’étudiant dans la classe est: ", nbEtudiant)
Pour récupérer les informations saisies par l’utilisateur sur le clavier, on utilise la fonction
« input(…) ». Pour ce faire, une fois l’information saisie, on va le récupérer et le stocker
dans une variable
# Programme testant si une année, saisie par l'utilisateur, est bissextile ou non
annee = input("Saisissez une année : ") # On attend que l'utilisateur saisisse l'année qu'il désire tester
annee = int(annee) # Risque d'erreur si l'utilisateur n'a pas saisi un nombre
L’addition : +
La soustraction : -
La multiplication : *
La division : /
39
1.3 Les opérations de bases
40
1.3 Les opérations de bases
Exemple
Traduction en Python de l’algorithme convertissant un nombre de secondes sous forme
d’heure, minutes et seconde
41
1.4 Structures de contrôle et boucles
Structure de contrôles
Les structures conditionnelles ou alternatives permettent d'écrire dans le programme des
règles comme « Si ceci arrive, alors fais cela » ;
Elles désignent toute situation n’offrant que deux (ou plusieurs) issues possibles s’excluant
mutuellement
Syntaxe
Où « condition logique » peut être soit « VRAI » soit « FAUX ». Il s’agit généralement d’une
comparaison d’une variable à une valeur ou une autre variable
Exemple :
43
1.4 Structures de contrôle et boucles
Structure de contrôles
Exemple : En LDA, on obtient
44
1.4 Structures de contrôle et boucles
Structure de contrôles
Remarques :
Le bloc « sinon » est facultatif dans certains cas
45
1.4 Structures de contrôle et boucles
Structure de contrôles en Python
Syntaxe
Remarques :
Il n’ y a d’accolades (à la différence du C)
46
1.4 Structures de contrôle et boucles
Structure de contrôles en Python
Remarques :
Il est également possible d’avoir des conditions imbriquées. En Python, on peut
utiliser le « elif » pour signifier le « sinon si »
if condition :
# bloc d’instruction 1
elif condition :
#bloc d’instruction 2
else :
#bloc d’instruction 3
47
1.4 Structures de contrôle et boucles
Les boucles
Exemple introductif :
Problème: On souhaiterait remplir un fossé. Pour cela on dispose d’un tas de sable et
d’une pelle. Le volume du tas de sable est supposé supérieur au volume du trou à
combler.
Analyse: Jeter une pelletée de sable dans le fossé tant que le fosse n’est pas plein.
Une boucle est une exécution répétée d’une ou plusieurs des actions et ayant un
mécanisme pour l’arrêter.
48
1.4 Structures de contrôle et boucles
Les boucles
On distingue types de boucles :
La boucle « pour »
Nous verrons uniquement les 2 premières car la dernière n’existe pas en Python
49
1.4 Structures de contrôle et boucles
Syntaxe : (LDA)
50
1.4 Structures de contrôle et boucles
51
1.4 Structures de contrôle et boucles
Syntaxe :
Au moment du premier passage dans la boucle la condition est évaluée; si elle est vérifiée,
la séquence d’instructions est exécutée
53
1.4 Structures de contrôle et boucles
La variable « iterateur » n’a pas besoin d’être initialiser. Elle prendra successivement chacune
des valeurs figurant la « séquence » parcourue
Pour créer une séquence d’entier entre deux valeurs a et b, on utilise la fonction « range »
range (a, b, pas) : pas correspond à l’incrémention. Si non spécifier alors « pas = 1 »
54
1.4 Structures de contrôle et boucles
55
1.4 Structures de contrôle et boucles
while condition :
# Instructions 1
# instruction 2
# ….
# instruction N
Exemple :
56
2. Structure de données
05/03/2021
57
2.1 Introduction
Que se passe t-il si on devait stocker plusieurs valeurs du même type? Et de types différents ?
Dans ce chapitre, nous verrons particulièrement deux types de variables permettant de stocker
plusieurs valeurs :
Les dictionnaires
Notion d’objet
Un objet est une variable, pouvant elle-même contenir d’autres variables et fonctions
C’est une notion fondamentale en Python
En réalité, toutes les variables utilisées jusqu’ici sont des objets (idem pour les fonctions)
Garder à l’esprit qu’en python, tout est objet
58
2.2 Tableaux
Définition
Un tableau (encore appelé table ou variable indicée) est un ensemble de données, qui sont
toutes de même type, désigné par un identificateur unique (le nom du tableau), et qui se
distinguent les une des autres par leur numéro d’indice
Déclaration de tableau
Trois éléments définissent un tableau:
Son nom : identificateur respectant les règles classiques des identificateurs d’un
programme
Notation LDA
Un tableau à plusieurs dimensions est un tableau pour lequel l’accès à un élément se fait en
utilisant plusieurs indices 60
2.2 Tableaux
Exemple
On souhaiterait calculer la température moyenne de la semaine, les températures étant
stockés dans un tableau « temperature »
61
2.2 Tableaux
Mais on peut aussi avoir besoin de manipuler des matrices, i.e. des structures possédant
plus de deux dimensions.
62
2.3 Tableaux en Python
Tableau initialisé
>>> nom_liste = [1, 5, 10, 15, 20, 25]
Méthode « enumerate »
Elle prend en paramètre une liste et renvoie une liste d’objets contenant deux valeurs
par élément : l'indice et l'élément de la liste parcouru
Exemple :
>>> ma_liste = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
>>> for elt in enumerate(ma_liste):
... print(elt)
64
2.3 Tableaux en Python
Suppression d’éléments
Méthode « del » : Permet de supprimer définitivement une variable donnée
>>> ma_liste = [-5, -2, 1, 4, 7, 10]
>>> del ma_liste[0] # On supprime le premier élément de la liste
>>> ma_liste
[-2, 1, 4, 7, 10]
>>> del ma_liste[2] # On supprime le troisième élément de la liste
>>> ma_liste
[-2, 1, 7, 10]
>>>
Remarque : la méthode « del » n’est une méthode de l’objet « Liste » mais une
fonctionnalité de python
Méthode « remove() »
Méthode appartenant à l’objet « Liste » : elle prend en paramètre non pas l’indice de
l’élément à supprimer mais plutôt l’élément lui-même
>>> ma_liste = [31, 32, 33, 34, 35]
>>> ma_liste.remove(32)
66
2.3 Tableaux en Python
Les tuples
Ils sont vus comme des liste, sauf qu'on utilise comme délimiteur des parenthèses au lieu
des crochets
Ils sont très utiles lorsqu’une fonction doit renvoyer plusieurs variables
Exemple
tuple_vide = ()
tuple_non_vide = (1,)
tuple_non_vide = (1, 3, 5)
67
2.4 Les chaines de caractères (Python)
En python, les chaines de caractères sont gérés par un objet (ou classe) appelé « str »
Prenons un exemple:
Ecrire une fonction prenant en paramètre un chaine de caractère et renvoyant cette
chaîne en minuscule
On s’attendrait à un code de la sorte :
C’est tout là, l’importance des objets : l’objet « str » contient des méthodes prédéfinies
permettant de manipuler les chaines de caractères.
69
2.4 Les chaines de caractères (Python)
Méthode « format(…) »
>>> prenom = "Paul"
>>> nom = "Dupont"
>>> age = 21
>>> print( "Je m'appelle {0} {1} et j'ai {2} ans.".format(prenom, nom, age) )
Je m'appelle Paul Dupont et j'ai 21 ans.
La méthode « format » prend en paramètres les variables à afficher, dans un ordre bien précis ;
quand Python exécute cette méthode, il remplace dans notre chaîne {0} par la première variable
passée à la méthode format (soit le prénom), {1} par la deuxième variable… et ainsi de suite.
71
2.4 Les chaines de caractères (Python)
Exemple
72
2.4 Les chaines de caractères (Python)
Exemple
>>> age = 21
>>> message = "J'ai " + age + " ans."
>>> age = 21
>>> message = "J'ai " + str(age) + " ans."
>>> print(message)
J'ai 21 ans.
>>> 73
2.4 Les chaines de caractères (Python)
ma_chaine[indice_debut : indice_fin]
Exemple
>>> presentation = "salut"
>>> presentation[0:2] # On sélectionne les deux premières lettres
'sa'
>>> presentation[2:len(presentation)] # On sélectionne la chaîne sauf les deux premières lettres
'lut‘
74
2.4 Les chaines de caractères (Python)
Exemple
75
2.5 Les dictionnaires
Chaque élément d’une liste est rangé dans un ordre bien précis
Pour accéder à un élément, on passe toujours par son indice (entier naturel)
Il existe une autre structure de données plus élaborée n’utilisant pas la notion d’indice mais
plutôt de clé
Les dictionnaires est l’une des structures de données les plus utilisées en Python
76
2.5 Les dictionnaires
Définition
Un dictionnaire est un objet pouvant en contenir d'autres, à l'instar des listes
Ces clés peuvent être des chaines de caractères (c’est le cas la plupart du temps) ou des objets
Dans les listes, la clé est l’indice de l’élément
Les données d’un dictionnaire ne sont pas ordonnées contrairement aux listes
77
2.5 Les dictionnaires
78
2.5 Les dictionnaires
>>> mon_dictionnaire = {}
>>> mon_dictionnaire["pseudo"] = "Prolixe"
>>> mon_dictionnaire["mot de passe"] = "*"
>>> mon_dictionnaire
{'mot de passe': '*', 'pseudo': 'Prolixe'}
>>>
Procédure
On spécifie la clé entre crochets
Si la clé n'existe pas dans le dictionnaire, elle y est ajoutée avec la valeur spécifiée
après le signe =
79
2.5 Les dictionnaires
Remarques
Un dictionnaire ne peut naturellement pas contenir deux clés identiques
La seconde valeur écrase la première
Les clés peuvent être de tout type (cependant le type doit être unique)
80
2.5 Les dictionnaires
echiquier = {}
echiquier['a', 1] = "tour blanche" # En bas à gauche de l'échiquier
echiquier['b', 1] = "cavalier blanc" # À droite de la tour
echiquier['c', 1] = "fou blanc" # À droite du cavalier
echiquier['d', 1] = "reine blanche" # À droite du fou
# ... Première ligne des blancs
echiquier['a', 2] = "pion blanc" # Devant la tour
echiquier['b', 2] = "pion blanc" # Devant le cavalier, à droite du
pion
# ... Seconde ligne des blancs
82
2.5 Les dictionnaires
Cette méthode supprime non seulement la clé mais aussi la valeur associée. Elle
retourne cette valeur.
83
2.5 Les dictionnaires
2 méthodes de parcours:
Parcours des clés
84
2.5 Les dictionnaires
Remarque :
L’ordre d’apparition des clés ne suit pas l’ordre de l’initialisation
85
2.5 Les dictionnaires
86
2.5 Les dictionnaires
Exemple
87
2.5 Les dictionnaires
Exemple
88
3. Procédures et fonctions
05/03/2021
89
3.1 Généralités
Définition et utilité
Les procédures et fonctions permettent de décomposer un programme complexe en
plusieurs parties plus simple et relativement indépendantes (aussi appelées sous-
programmes)
Les avantages:
Une même fonction (ou procédure) peut être utilisée dans plusieurs programmes
différents, grâce au concept de bibliothèque
Les aspects les plus importantes des fonctions et procédures sont leur création et leur
appel dans des programmes 90
3.1 Généralités
Les variables globales : elles sont définies dans le programme appelant et ont donc
une portée globale
Les variables formels : Il s’agit des variables d’entrées servant d’échanges entre les
programmes appelant et appelé
92
3.2 Les procédures
Définition
Une procédure est un sous-programme représentant une ou plusieurs actions, et ne
retournant aucune valeur, sauf en paramètre.
Déclaration
93
3.2 Les procédures
Exemple :
Ecrire une procédure « Age » prenant en paramètre l’année de naissance d’un utilisateur
puis affiche son âge
94
3.3 Les fonctions
Définition
Une fonction est un sous-programme à l’image d’une procédure mais qui retourne des
valeurs
Déclaration
95
3.3 Les fonctions
Exemple :
Ecrire une fonction prenant en 2 entiers puis retournant le plus des 2
96
3.4 Appel de fonction (ou procédure)
Méthodologie
Pour utiliser une fonction (ou procédure), on fait un appel en lui passant des expressions
correspondant aux paramètres dont elle a besoin
Age( 1901)
X Maximum(45, 1)
Remarque : lors de l’appel d’une fonction (ou procédure), un paramètre formel (ou
argument) d’une fonction (ou procédure) peut être une variable ou une valeur mais doit 97
3.4 Appel de fonction (ou procédure)
Remarque
Une fonction (ou procédure) avant d’être appelée doit être préalablement définie (et
implémentée)
Etant donnée qu’une fonction retourne une valeur, il est possible d’affecter cette valeur à
une variable ou peut être utilisée dans une autre fonction ou expression
Fonction Puissance(données x : réel, n : entier) : réel
Variables :
Exemple réel : resultat
Debut:
resultat 1
pour i allant de 0 à n-1 faire:
resultat resultat*x
finPour
retour resultat
FinFonction
Algorithme ProgrammePrincipal
réel : x, y
entier : m
Debut:
lire (x)
lire(m)
y Puissance(x, m) + 2*Puissance(x, m-1)
afficher(y)
afficher(Puissance(x,m))
Fin 98
3.5 Fonctions et procédures en Python
Syntaxe de déclaration
def nom_del_la_fonction(param1, param2,
paramN):
# Instructions 1
# instruction 2
# ….
# instruction N
Attention : N'utilisez pas un nom de variable déjà instanciée pour nommer une fonction
Exemple
Reprenons les exemples précédent
x = float(input("saisir x"))
m = float(input("saisir m"))
100
3.6 Fonctions recursives
Définition
On appelle fonction récursive toute fonction qui s’appelle elle-même
• n! = 1 * 2 * 3 * 4 * … * n
o 2ème définition:
101
3.6 Fonctions récursives
Définition
Exemple : calcul du factoriel d’un nombre entier
102
3.6 Fonctions récursives
Définition
Dérouler cet algorithme pour factoriel(5)
103
3.7 Les modules
Un module python fait généralement appel à des éléments qui sont présents dans d'autres
modules python
Il existe un grand nombre de modules disponibles sous Python notamment math, cmath,
random, turtle, matplotlib, numpy, pandas, etc…
Généralement, soit ces modules font déjà partie du langage python (ex. random, numpy)
soit on peut les trouver sur internet (ex. pandas librairie très utile science de données)
3.8 Les modules
import math
Pour appeler une fonction contenue dans un module, il faut taper le nom du module suivi
de « . »
>>> math.sqrt(16)
4>
>>
105
3.8 Les modules
>>> help("math")
Help on built-in module math:
NAME
math
FILE
(built-in)
DESCRIPTION
This module is always available. It provides access to the
mathematical functions defined by the C standard.
FUNCTIONS
acos(...)
acos(x)
Return the arc cosine (measured in radians) of x.
acosh(...)
acosh(x)
Return the hyperbolic arc cosine (measured in radians) of x.
asin(...)
-- Suite --
106
3.8 Les modules
Exemple
mathematiques.sqrt(25)
Très utile pour « retrouver ses repaires » dans la liste interminable des modules
proposés par python
107
3.8 Les modules
Il est donc possible d’importer une partie des fonctionnalités contenues dans un module.
Pour cela, il suffit d’utiliser la méthode suivante :
from … import …
Exemple
>>> from math import fabs
>>> fabs(-5)
5>
>> fabs(2)
2>
>>
Exercice 1 :
Ecrire l’algorithme de la fonction « Moyenne » prenant en paramètre un tableau « T » de N
éléments puis effectue la moyenne des nombres pairs
Exercice 2 (Algorithme et traduction en Langage Python):
On souhaiterait calculer la somme d’ordre n de Sn défini comme suit :
(−1)𝑖+1
𝑆𝑛 = σ𝑛𝑖=0 𝑋𝑖 (1) avec X ≠0
𝑖!
Exercice 3 :
On souhaiterait calculer les indicateurs statistiques des notes des étudiants en 2ème des
CPGE. Il s’agit de calculer les indicateurs suivants:
La moyenne générale
L’écart-type
La moyenne géométrique
Les meilleures notes (note > 15) et les pires notes (note < 5)
Dans la fonction principale, demander à l’utilisateur saisir le nombre total de notes puis de
remplir les notes et d’afficher les statistiques des notes
110
4. Algorithmes de tri
05/03/2021
111
4.1 Introduction
Définition:
Un tableau T est dit « trié en ordre croissant » si tous les éléments consécutifs du tableau
vérifient :
D’où la définition:
112
4.2 Tri d’un tableau
Principe:
Soit un vecteur (tableau à une dimension) T[1..n] à valeurs dans un ensemble E de valeurs
muni d’une relation d’ordre notée <
T‘ soit trié,
Le plus souvent T et T‘ sont le même vecteur ; T‘ est construit en permutant entre eux les
éléments de T
Principe :
114
4.2 Tri d’un tableau
115
4.2 Tri d’un tableau
Pour chaque élément rangé dans le tableau Ttrié, il faut parcourir tout le tableau T et
non une partie du tableau T
116
4.2 Tri d’un tableau
Après l'étape i, tous les éléments entre la première et la ième position sont triés.
Il existe plusieurs méthode de tri par insertion selon le principe qui est utilisé pour
rechercher le rang de l’élément à insérer parmi les éléments du début de la liste déjà triés
117
4.2 Tri d’un tableau
118
4.2 Tri d’un tableau
Au ième passage, on sélectionne l’élément ayant la plus petite valeur parmi les positions i..n
et on l'échange avec T[i].
119
4.2 Tri d’un tableau
120
4.2 Tri d’un tableau
Tri à bulles
Le principe du tri à bulles (bubble sort) est de :
121
4.2 Tri d’un tableau
Tri à bulles
122
Fin