Sommaire: 1 Tutorield'Initiationàpython-1 Partie 1
Sommaire: 1 Tutorield'Initiationàpython-1 Partie 1
Sommaire: 1 Tutorield'Initiationàpython-1 Partie 1
1 Tutorield’initiationàPython—1re partie 1
1.1 Installation et premier exemple . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Installation de Python . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2 Premier exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.3 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.4 Utilisation de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Types d’objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Entiers et flottants . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.3 Nombres complexes . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.4 Booléens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.5 Chaînes de caractères . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.6 Listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.7 Polynômes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Graphes de fonctions et courbes paramétrées . . . . . . . . . . . . . . . 6
1.3.1 Le module matplotlib . . . . . . . . . . . . . . . . . . . . . . 6
1.3.2 Graphes de fonctions . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.3 Courbes paramétrées . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Algorithmique 1 9
2.1 Eléments d’architecture des ordinateurs . . . . . . . . . . . . . . . . . . 9
2.1.1 Composants d’une machine numérique . . . . . . . . . . . . . . 9
2.1.2 Le modèle de John von Neumann . . . . . . . . . . . . . . . . . 10
2.1.3 Les périphériques . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.4 Le fonctionnement de l’unité centrale . . . . . . . . . . . . . . . 11
2.1.5 La mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Représentation des nombres dans un ordinateur . . . . . . . . . . . . . 12
2.2.1 Représentation des nombres entiers dans un ordinateur . . . . 12
2.2.1.1 Représentation des nombres entiers naturels . . . . . . 12
2.2.1.2 Représentation des nombres entiers relatifs . . . . . . 13
2.2.2 Représentation des nombres réels dans un ordinateur . . . . . . 13
2.2.2.1 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . 13
vi SOMMAIRE
2.2.2.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.2.3 Approximation d’un réel . . . . . . . . . . . . . . . . . 15
2.2.2.4 Flottants en simple précision . . . . . . . . . . . . . . . 16
2.2.2.5 Flottants en double précision . . . . . . . . . . . . . . . 16
2.3 Algorithmique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.1 Définition et structure d’un algorithme . . . . . . . . . . . . . . 17
2.3.2 Procédures en Python . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.3 Variables locales et variables globales . . . . . . . . . . . . . . . 18
2.3.4 Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.5 Boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4 Récursivité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.1 Introduction à la récursivité . . . . . . . . . . . . . . . . . . . . . 20
2.4.2 Exemple prototypique de fonction récursive : la factorielle . . . 20
2.4.3 La méthode « diviser pour régner » . . . . . . . . . . . . . . . . 21
2.5 Etude d’un algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5.1 Terminaison d’un algorithme . . . . . . . . . . . . . . . . . . . . 22
2.5.1.1 Cas d’un algorithme itératif . . . . . . . . . . . . . . . 22
2.5.1.2 Cas d’un algorithme récursif . . . . . . . . . . . . . . . 22
2.5.2 Correction d’un algorithme . . . . . . . . . . . . . . . . . . . . . 23
2.5.2.1 Cas d’un algorithme itératif . . . . . . . . . . . . . . . 23
2.5.2.2 Cas d’un algorithme récursif . . . . . . . . . . . . . . . 23
2.5.3 Complexité d’un algorithme . . . . . . . . . . . . . . . . . . . . 23
2.5.3.1 Différentes classes de complexité . . . . . . . . . . . . 23
2.5.3.2 Exemple de calcul de complexité : cas d’école . . . . . 24
2.5.4 Suites récurrentes utiles en algorithmique . . . . . . . . . . . . . 25
2.6 Nombres et polynômes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.6.1 Calcul de puissances . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.6.1.1 Algorithme d’exponentiation naïve . . . . . . . . . . . 28
2.6.1.2 Algorithme d’exponentiation rapide . . . . . . . . . . 28
2.6.2 Algorithme d’Euclide . . . . . . . . . . . . . . . . . . . . . . . . 30
2.6.2.1 Principe et implémentation . . . . . . . . . . . . . . . . 30
2.6.2.2 Majorant de la complexité de l’algorithme d’Euclide . 31
2.6.2.3 Algorithme d’Euclide étendu . . . . . . . . . . . . . . 33
2.6.3 Cryptographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.6.3.1 Petit théorème de Fermat . . . . . . . . . . . . . . . . . 34
2.6.3.2 Le système RSA . . . . . . . . . . . . . . . . . . . . . . 35
2.6.4 Evaluation d’un polynôme en un point . . . . . . . . . . . . . . 36
2.6.4.1 Algorithme naïf . . . . . . . . . . . . . . . . . . . . . . 36
2.6.4.2 Algorithme de Horner . . . . . . . . . . . . . . . . . . 36
2.7 Recherche dans un tableau trié . . . . . . . . . . . . . . . . . . . . . . . 37
2.7.1 Tableaux et listes en informatique . . . . . . . . . . . . . . . . . 37
2.7.2 Recherche séquentielle . . . . . . . . . . . . . . . . . . . . . . . . 38
2.7.3 Recherche dichotomique . . . . . . . . . . . . . . . . . . . . . . . 38
2.8 Algorithmes de tri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.8.1 Tri par sélection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.8.2 Tri par insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
SOMMAIRE vii
B COMPLEXITED’ALGORITHMES 265
#JCMJPHSBQIJF 26
*OEFY 26