T.P. 5 : tableaux bi-dimensionnels, binomiaux, triangle de Pascal Un point important de terminologie : ce que nous appelons liste en python est plus souvent appelé tableau en informatique. Une liste de nombres par exemple T = [1, 3, 4] sera pour nous aussi appelée tableau . En réalité du point de vue informatique, la structure de donnée tableau et la structure de donnée liste ont des différences, suivant la façon dont elles sont codées en machine, pour savoir notamment si on accède à toutes les entrées avec le même temps ou pas. Vous reviendrez à ce problèmes en Option Info. notamment, mais pour nous, on emploiera les mots listes ou tableaux pour parler des listes Python. En revanche ce qu’on appelle tableau dans le langage courant est un objet ≪ bidimensiona b c nel ≫ comme une matrice, par exemple ( ). Comment coder de tels tableaux dits bidid e f mensionnels en informatique ? 1 Tableaux bidimensionnels vus comme liste double : première approche Une façon rudimentaire pour fabriquer un tableau bidimensionnel en Python est d’utiliser une liste de listes. Par exemple L=[[1,2],[3,4]] est ce qu’on appelle en informatique un tableau bidimensionnel qui code ce que les humains ont envie de voir comme le tableau pour humain : 1 2 ( ). 3 4 a) Comment afficher ce tableau L sur deux lignes ? b) Fabriquer une fonction affiche_tableau_pour_humain qui est une fonction d’affichage : elle prend en argument un tableau informatique (liste de listes) et l’affiche ligne par ligne sans crochet ni virgules. c) Comment modifier L pour obtenir dans L [[1,2],[3,5]]. d) Ecrire une fonction Tzeros(m,n) qui prend en arguments deux entiers m et n et retourne un tableau à m lignes et n colonnes rempli de zéros. e) Soit L=Tzeros(3,3). Modifier la première entrée de la première ligne de L pour y mettre un 1. f) Fabriquer une fonction qui transforme une liste en un tableau qui va à la ligne toutes les dix entrées : attention, on veut que cette fonction retourne un tableau informatique bidimensionnel (liste de listes). A l’aide de cette fonction et de affiche_tableau_pour_humain on peut alors afficher tous les nombres entiers jusqu’à 100 à partir de L=list(range(101)) sous la forme d’un tableau pour humain. 2 Calcul des binomiaux par la formule explicite a) Ecrire une fonction factorielle(n) qui prend en argument un entier n et renvoie sa factorielle. b) Ecrire une fonction binomial(m,n) qui prend en argument deux entiers m et n et retourne (m ) qui doit être de type integer, grâce à la formule explicite. n 3 Le tableau du triangle de Pascal a) Fabriquer une fonction qui prend comme argument un entier naturel n et renvoie une liste double qui correspond au triangle de Pascal jusqu’à la ligne n. N.B. On n’utilisera pas la formule explicite, mais la formule du triangle de Pascal. 1 b) Appliquer la fonction d’affichage précédent pour obtenir le tableau du triangle de Pascal aligné à gauche. c) Modifier la fonction d’affichage précédent pour obtenir le tableau du triangle de Pascal centré. Indication : utiliser la méthode center sur les chaı̂nes de caractères. d) A partir d’un tableau obtenu par la question précédente, obtenir le tableau où l’on remplace chaque entrée par un O si elle est paire et un ∗ si elle est impaire. Commentez le dessin obtenu pour une valeur de n assez grande. 4 Crible d’Eratosthène Le célèbre crible d’Eratosthène pour trouver tous les nombres premiers inférieurs à un entier n consiste à écrire tous les entiers inférieurs ou égaux à n, puis rayer les multiples de 2, ceux de 3 et ensuite de chaque nombre non rayé qui est premier. A la fin il ne reste que les nombres premiers. Programmez le crible d’Eratosthène pour le nombres premiers à partir d’une liste en remplaçant au fur et à mesure tous les nombres non premiers par des *. Affichez le résultat sous la forme d’un tableau grâce à la fonction précédente. 2