Informatique pour tous premiŁre annØe Reichert Julien 2018/2019 2 Table des matiŁres I Cours 7 1 ReprØsentation des nombres 9 1.1 Introduction aux bases numØriques . . . . . . . . . . . . . . . . . . . 9 1.2 ReprØsentation des entiers . . . . . . . . . . . . . . . . . . . . . . . . 11 1.2.1 Entiers naturels . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.2.2 Entiers relatifs . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.3 ReprØsentation des rØels . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.4 ConsØquences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Annexe : technique de conversion de rØels . . . . . . . . . . . . . . . . . . . 16 1.5 L’essentiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 TD 1 : Calculs avec des bases numØriques . . . . . . . . . . . . . . . . . . 19 TD 2 : ReprØsentation des nombres . . . . . . . . . . . . . . . . . . . . . . 21 2 Algorithmique et programmation I 23 2.1 Bases de la programmation . . . . . . . . . . . . . . . . . . . . . . . . 23 2.1.1 Les donnØes et leurs types . . . . . . . . . . . . . . . . . . . . 23 2.1.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.1.3 SØquences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.1.4 Instructions composØes . . . . . . . . . . . . . . . . . . . . . . 29 2.1.5 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.1.6 EntrØes et sorties . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.2 Preuves de programmes et d’algorithmes . . . . . . . . . . . . . . . . 36 2.2.1 Preuves de terminaison . . . . . . . . . . . . . . . . . . . . . . 36 2.2.2 Preuves de correction . . . . . . . . . . . . . . . . . . . . . . . 38 2.3 ComplexitØ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.4 Algorithmes de base . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.4.1 Algorithmes sur les listes . . . . . . . . . . . . . . . . . . . . . 45 3 4 TABLE DES MATI¨RES 2.4.2 Dichotomie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 2.4.3 Calcul approchØ d’une intØgrale . . . . . . . . . . . . . . . . . 50 2.4.4 Recherche d’un motif dans une cha(cid:238)ne de caractŁres . . . . . . 52 2.5 ComplØments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 2.5.1 Variables globales et variables locales, etc. . . . . . . . . . . . 54 2.5.2 Fonctions locales, fonctions anonymes . . . . . . . . . . . . . . 58 2.5.3 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Annexe : Turing-complØtude . . . . . . . . . . . . . . . . . . . . . . . . . . 62 2.6 L’essentiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 TD 3 : Penser la programmation en Python . . . . . . . . . . . . . . . . . 65 TD 4 : Terminaison, correction et complexitØ . . . . . . . . . . . . . . . . . 67 3 IngØniØrie numØrique et simulation 69 3.1 ComplØments de programmation : Python pour les scienti(cid:28)ques . . . 69 3.1.1 Petit dØtour par les bibliothŁques . . . . . . . . . . . . . . . . 70 3.1.2 La bibliothŁque numpy . . . . . . . . . . . . . . . . . . . . . . 71 3.1.3 La bibliothŁque scipy . . . . . . . . . . . . . . . . . . . . . . 75 3.2 RØsolution de systŁmes linØaires (Gauss) . . . . . . . . . . . . . . . . 76 3.3 RØsolution d’Øquations f(x) = 0 (Newton) . . . . . . . . . . . . . . . 83 3.4 Autour des Øquations di(cid:27)Ørentielles (Euler) . . . . . . . . . . . . . . . 85 3.5 L’essentiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 4 Bases de donnØes 89 4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 4.2 AlgŁbre relationnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.3 Bases de donnØes relationnelles . . . . . . . . . . . . . . . . . . . . . 93 4.3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.3.2 ClØs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 4.3.3 Le langage SQL . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.3.4 Correspondance avec l’algŁbre relationnelle . . . . . . . . . . . 98 4.3.5 Encore un peu d’architecture . . . . . . . . . . . . . . . . . . 100 4.4 L’essentiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 TD 5 : Une base de donnØes sommaire . . . . . . . . . . . . . . . . . . . . 103 Lexique 105 TABLE DES MATI¨RES 5 II Travaux pratiques 109 TP 0 : Introduction 111 TP 1 : Familiarisation avec Python 115 TP 2 : EntrØes et sorties 119 TP 3 : ReprØsentation des nombres - manipulations 123 TP 4 : Gagner un peu d’indØpendance 125 TP 5 : Listes (et boucles) 131 TP 6 : Algorithmes de base 133 TP 7 : Introduction (cid:224) numpy 135 TP 7bis : Introduction (cid:224) Scilab 139 TP 8 : Autour du pivot de Gauss 143 TP 9 : Graphismes 147 TP 10 : Autour de la mØthode de Newton 151 TP 11 : Autour de la mØthode d’Euler 153 TP 12 : Bases de donnØes 157 6 TABLE DES MATI¨RES PremiŁre partie Cours 7 Chapitre 1 ReprØsentation des nombres 1.1 Introduction aux bases numØriques DØ(cid:28)nition Soit b un entier naturel ≥ 2. On considŁre un ensemble C de b caractŁres, usuel- lement des chi(cid:27)res (cid:224) partir de 0, en complØtant avec des lettres dans l’ordre alpha- bØtique, donnØs dans l’ordre croissant. On reprØsente un entier naturel en base b en Øcrivant des caractŁres de l’ensemble C en sØquence, en prØcisant la valeur de b pour lever toute ambigu(cid:239)tØ. La notation proposØe dans ce cours, qui n’est pas uniformisØe, est a a ...a a b, n−1 n−2 1 0 pour reprØsenter le nombre (cid:80)n a bi. Dans le nombre en question, le caractŁre dit i=0 i de poids fort est le plus (cid:224) gauche et le caractŁre dit de poids faible est le plus (cid:224) droite. Les bases usuelles sont 10 (base dØcimale, utilisØe de fa(cid:231)on naturelle actuellement), 2 (le binaire, fondement de l’informatique) et 16 (les nombres hexadØcimaux, utilisØs en informatique pour Øviter d’avoir trop de chi(cid:27)res). On trouve Øgalement les bases 8 et 12 de maniŁre cependant moins prononcØe. Toutes les opØrations arithmØtiques apprises au primaire se font de maniŁre similaire 8 8 8 dans n’importe quelle base. Par exemple, en base 8, 35 +56 = 113 car 5+6, qui 8 correspond au nombre 11, s’Øcrit 13 . On note donc 3 et on retient 1, de mŒme qu’on a une retenue pour les (cid:19) huitaines (cid:20), qui devient la (cid:19) soixante-quatraine (cid:20). 9 10 CHAPITRE 1. REPR(cid:201)SENTATION DES NOMBRES Exercice 8 8 8 8 Calculer en base 8 les sommes 146 + 334 et 357 + 464 , ainsi que le produit 8 8 54 ×465 . La reprØsentation en base b s’Øtend aux entiers relatifs en prØcisant le signe. Proposition Soit b un entier naturel ≥ 2. On peut reprØsenter un nombre rationnel en base b de maniŁre exacte, c’est-(cid:224)-dire avec un nombre (cid:28)ni de caractŁres, si et seulement si le nombre en question est le quotient d’un entier relatif par une puissance de b. Une autre formulation : le nombre en question a pour fraction la plus simpli(cid:28)Øe p, oø q tous les diviseurs premiers de q sont des diviseurs de b. La reprØsentation comporte alors Øventuellement une virgule, et on Øcrit a a ...a a ,a a ...a b = n−1 n−2 1 0 −1 −2 −m (cid:80)n−1 a bi. i=−m i Remarque : En base 10, on retrouve la notion de nombres dØcimaux. Bien entendu, quelle que soit la valeur de b, un nombre irrationnel aura toujours un nombre in(cid:28)ni de caractŁres aprŁs la virgule dans sa reprØsentation en base b. Exemple : Le nombre 13 s’Øcrit de maniŁre exacte dans toute base multiple de 3. 3 Proposition [Pour la culture] Quelle que soit la valeur de b, tout nombre rationnel r a une Øcriture en base b ultimement pØriodique, c’est-(cid:224)-dire qu’(cid:224) partir d’un certain rang (cid:28)ni, un mŒme motif se rØpŁte. Cettepropositionseprouvesimplement(cid:224)l’aidedupetitthØorŁmedeFermatquandb estpremier(sinon,c’estdel’arithmØtiqueavancØe).Onpeutl’illustrerenconsidØrant les fractions 1 en base b. Si p divise b, alors l’Øcriture de 1 est exacte : 1 = 0,ab, oø p p p a est le caractŁre correspondant (cid:224) l’entier b, la pØriode Øtant alors de 1 et le motif p Øtant 0. Sinon, le petit thØorŁme de Fermat dit que bp−1 est congru (cid:224) 1 modulo p, donc diviser 1 par p laisse entrevoir une rØpØtition aprŁs p−1 Øtapes. La pØriode est donc p−1 ou un de ses diviseurs.
Description: