Chapitre 3 Tableaux à plusieurs dimensions Pascal Lando Faculté de mathématiques et d informatique Amiens http://www.laria.u-picardie.fr/~lando pascal.lando@u-picardie.fr 19 février 2007
Plan du cours 1 Introduction 2 Manipulation 3 Tableaux en Java 4 Bibliothèque MatricesReelles
Domaines d application Des tableaux à n dimensions, pour quoi faire? Gestion des matrices 3 / 18
Domaines d application Des tableaux à n dimensions, pour quoi faire? Gestion des matrices Statistiques 3 / 18
Domaines d application Des tableaux à n dimensions, pour quoi faire? Gestion des matrices Statistiques Mots croisés 3 / 18
Domaines d application Des tableaux à n dimensions, pour quoi faire? Gestion des matrices Statistiques Mots croisés Bataille navale 3 / 18
Domaines d application Des tableaux à n dimensions, pour quoi faire? Gestion des matrices Statistiques Mots croisés Bataille navale Tableur 3 / 18
Domaines d application Des tableaux à n dimensions, pour quoi faire? Gestion des matrices Statistiques Mots croisés Bataille navale Tableur Sudoku 3 / 18
Domaines d application Des tableaux à n dimensions, pour quoi faire? Gestion des matrices Statistiques Mots croisés Bataille navale Tableur Sudoku... 3 / 18
Définition Rappels... Définition Un tableau est une collection de variables (appelées cellules ou cases) accessibles directement à partir de leurs positions (indice ou suite d indices) dans le tableau. 4 / 18
Définition Rappels... Définition Un tableau est une collection de variables (appelées cellules ou cases) accessibles directement à partir de leurs positions (indice ou suite d indices) dans le tableau. Si un tableau est de dimension n, le i e indice se réfère à la i e dimension 4 / 18
Définition Rappels... Définition Un tableau est une collection de variables (appelées cellules ou cases) accessibles directement à partir de leurs positions (indice ou suite d indices) dans le tableau. Si un tableau est de dimension n, le i e indice se réfère à la i e dimension Le nombre de valeurs que peut prendre un indice dans une dimension = longueur (ou taille) de la dimension 4 / 18
Définition Rappels... Définition Un tableau est une collection de variables (appelées cellules ou cases) accessibles directement à partir de leurs positions (indice ou suite d indices) dans le tableau. Si un tableau est de dimension n, le i e indice se réfère à la i e dimension Le nombre de valeurs que peut prendre un indice dans une dimension = longueur (ou taille) de la dimension Attention! L indice d une dimension peut prendre des valeurs entre 0 et longueur 1... 4 / 18
Définition Tableau de tableaux... ~ ~ Remarque Un tableau à plusieurs dimensions peut être considéré comme un tableau de tableaux. 5 / 18
Déclaration Remarques La déclaration d un tableau à plusieurs dimensions précise et fixe : le nombre de dimensions du tableau ; 6 / 18
Déclaration Remarques La déclaration d un tableau à plusieurs dimensions précise et fixe : le nombre de dimensions du tableau ; le type des éléments à stocker dans le tableau. 6 / 18
Déclaration Remarques La déclaration d un tableau à plusieurs dimensions précise et fixe : le nombre de dimensions du tableau ; le type des éléments à stocker dans le tableau. Attention! Une fois définies, ces informations ne peuvent pas être modifiées. 6 / 18
Déclaration Syntaxe Deux possibilités de syntaxes, au choix : <type> <Nom> []...[] 7 / 18
Déclaration Syntaxe Deux possibilités de syntaxes, au choix : <type> <Nom> []...[] <type> []...[] <Nom> 7 / 18
Déclaration Syntaxe Deux possibilités de syntaxes, au choix : <type> <Nom> []...[] <type> []...[] <Nom> Dans tous les cas, la déclaration nécessite autant de [] qu il y a de dimensions... Exemples entier t[][] ; réel montab[][][] ; booléen [][]toto ; 7 / 18
Instanciation Remarques L instanciation a plusieurs objectifs : préciser la taille de chaque dimension ; 8 / 18
Instanciation Remarques L instanciation a plusieurs objectifs : préciser la taille de chaque dimension ; réserver de la mémoire dans l ordinateur pour «stocker» le tableau ; 8 / 18
Instanciation Remarques L instanciation a plusieurs objectifs : préciser la taille de chaque dimension ; réserver de la mémoire dans l ordinateur pour «stocker» le tableau ; fournir l endroit où est «placée» la mémoire réservée. 8 / 18
Instanciation Syntaxe Syntaxe créer <type> [<valeur>]...[<valeur>] 9 / 18
Instanciation Syntaxe Syntaxe créer <type> [<valeur>]...[<valeur>] La création (instanciation) doit mentionner autant de [<valeur>] qu il y en a dans la déclaration préalable du tableau. 9 / 18
Instanciation Syntaxe Syntaxe créer <type> [<valeur>]...[<valeur>] La création (instanciation) doit mentionner autant de [<valeur>] qu il y en a dans la déclaration préalable du tableau. L opération créer «retourne» un tableau qu il convient de stocker. 9 / 18
Instanciation Syntaxe Syntaxe créer <type> [<valeur>]...[<valeur>] Exemple La création (instanciation) doit mentionner autant de [<valeur>] qu il y en a dans la déclaration préalable du tableau. L opération créer «retourne» un tableau qu il convient de stocker. réel montab[][][] ; montab créer réel[5][3][7] ; 9 / 18
Manipulation Accès aux longueurs Soit tab un tableau à plusieurs dimensions. 10 / 18
Manipulation Accès aux longueurs Soit tab un tableau à plusieurs dimensions. tab.longueur représente la taille de la première dimension (nombre de lignes pour un tableau à deux dimensions). 10 / 18
Manipulation Accès aux longueurs Soit tab un tableau à plusieurs dimensions. tab.longueur représente la taille de la première dimension (nombre de lignes pour un tableau à deux dimensions). tab[0].longueur représente la taille de la deuxième dimension (nombre de colonnes pour un tableau à deux dimensions) : suppose que tab.longueur 0. 10 / 18
Manipulation Accès aux longueurs Soit tab un tableau à plusieurs dimensions. tab.longueur représente la taille de la première dimension (nombre de lignes pour un tableau à deux dimensions). tab[0].longueur représente la taille de la deuxième dimension (nombre de colonnes pour un tableau à deux dimensions) : suppose que tab.longueur 0. tab[0][0].longueur représente la taille de la troisième dimension : suppose que tab[0].longueur 0. 10 / 18
Manipulation Désignation d une case Syntaxe <Nom>[<indice>]...[<indice>] 11 / 18
Manipulation Désignation d une case Syntaxe <Nom>[<indice>]...[<indice>] Il y a autant de [<indice>] que de dimensions. 11 / 18
Manipulation Désignation d une case Syntaxe <Nom>[<indice>]...[<indice>] Il y a autant de [<indice>] que de dimensions. La valeur d un indice est comprise entre 0 et la longueur-1 de la dimension concernée. 11 / 18
Manipulation Désignation d une case Syntaxe <Nom>[<indice>]...[<indice>] Il y a autant de [<indice>] que de dimensions. La valeur d un indice est comprise entre 0 et la longueur-1 de la dimension concernée. Pour un tableau t à deux dimensions, on a donc t[i][j] avec : 0 i t.longueur-1 0 j [0].longueur-1 11 / 18
Manipulation Initialisation par extension Fonctionnement analogue à celui des tableaux à une dimension. Syntaxe <nomtab> créer <typetab>[][] { {val 1.1,...,val 1.m}, {val 2.1,...,val 2.m},... {val n.1,...,val n.m} } 12 / 18
Manipulation Initialisation par extension Fonctionnement analogue à celui des tableaux à une dimension. Syntaxe <nomtab> créer <typetab>[][] { {val 1.1,...,val 1.m}, {val 2.1,...,val 2.m},... {val n.1,...,val n.m} } Exemple matrice créer entier[][] { { 12, 0, 4, 6 }, //tableau [0] de int { 2, 4, 1, 1, 3, 5, 2 } //tableau [1] de int } 12 / 18
Traduction en Java Syntaxe Java En java, créer se traduit par new ; 13 / 18
Traduction en Java Syntaxe Java En java, créer se traduit par new ; longueur se traduit par length. 13 / 18
Traduction en Java Syntaxe Java En java, Exemple créer se traduit par new ; longueur se traduit par length. //Déclaration d un tableau de cha^ınes : String tableaudechaines[] ; //Initialisation du tableau : tableaudechaines = new String[3] ; tableaudechaines[0] = "janvier" ; tableaudechaines[1] = "février" ; tableaudechaines[2] = "mars" ; 13 / 18
Présentation La bibliothèque MatricesReelles Objectif : se créer une «boite à outils», à laquelle on pourra faire appel dès que le besoin de manipuler des matrices de nombres réels se manifestera. 14 / 18
Présentation La bibliothèque MatricesReelles Objectif : se créer une «boite à outils», à laquelle on pourra faire appel dès que le besoin de manipuler des matrices de nombres réels se manifestera. Quelques exemples de fonctions utiles : sans résultat affichage(réel[][] t) 14 / 18
Présentation La bibliothèque MatricesReelles Objectif : se créer une «boite à outils», à laquelle on pourra faire appel dès que le besoin de manipuler des matrices de nombres réels se manifestera. Quelques exemples de fonctions utiles : sans résultat affichage(réel[][] t) réel [][] saisie() 14 / 18
Présentation La bibliothèque MatricesReelles Objectif : se créer une «boite à outils», à laquelle on pourra faire appel dès que le besoin de manipuler des matrices de nombres réels se manifestera. Quelques exemples de fonctions utiles : sans résultat affichage(réel[][] t) réel [][] saisie() sans résultat remplaceparconstante(réel t[][], réel c) 14 / 18
Présentation La bibliothèque MatricesReelles Objectif : se créer une «boite à outils», à laquelle on pourra faire appel dès que le besoin de manipuler des matrices de nombres réels se manifestera. Quelques exemples de fonctions utiles : sans résultat affichage(réel[][] t) réel [][] saisie() sans résultat remplaceparconstante(réel t[][], réel c) réel [][] identité(entier n) (rappel : matrice carrée avec des 1 sur la diagonale et des 0 partout ailleurs) 14 / 18
Présentation La bibliothèque MatricesReelles Objectif : se créer une «boite à outils», à laquelle on pourra faire appel dès que le besoin de manipuler des matrices de nombres réels se manifestera. Quelques exemples de fonctions utiles : sans résultat affichage(réel[][] t) réel [][] saisie() sans résultat remplaceparconstante(réel t[][], réel c) réel [][] identité(entier n) (rappel : matrice carrée avec des 1 sur la diagonale et des 0 partout ailleurs) booléen recherche(réel t[][], réel x) 14 / 18
Exercices Initialisation Question Écrire une fonction qui permet d initialiser un tableau à deux dimensions t déjà instancié en mettant une même valeur donnée c dans toutes les cases. 15 / 18
Exercices Initialisation Question t x x t Écrire une fonction qui permet d initialiser un tableau à deux dimensions t déjà instancié en mettant une même valeur donnée c dans toutes les cases. n 15 / 18
Exercices Matrice identité Question Écrire une fonction qui, étant donné un entier n, retourne une matrice carrée n n égale à la matrice identité. 16 / 18
Exercices Matrice identité Question Écrire une fonction qui, étant donné un entier n, retourne une matrice carrée n n égale à la matrice identité. > 16 / 18
Exercices Recherche (1) Question Écrire une fonction qui, étant donné un tableau t à deux dimensions et un réel x, indique si la valeur x est présente ou non dans t. 17 / 18
Exercices Recherche (2) 18 / 18