Chapitre 3 -- Tableaux à plusieurs dimensions
Transcription
Chapitre 3 -- Tableaux à plusieurs dimensions
Chapitre 3 – Tableaux à plusieurs dimensions Pascal Lando Faculté de mathématiques et d’informatique Amiens http://www.laria.u-picardie.fr/~lando [email protected] 19 février 2007 Plan du cours 1 Introduction 2 Manipulation 3 Tableaux en Java 4 Bibliothèque MatricesReelles Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Domaines d’application Des tableaux à n dimensions, pour quoi faire ? Gestion des matrices 3 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Domaines d’application Des tableaux à n dimensions, pour quoi faire ? Gestion des matrices Statistiques 3 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Domaines d’application Des tableaux à n dimensions, pour quoi faire ? Gestion des matrices Statistiques Mots croisés 3 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Domaines d’application Des tableaux à n dimensions, pour quoi faire ? Gestion des matrices Statistiques Mots croisés Bataille navale 3 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Domaines d’application Des tableaux à n dimensions, pour quoi faire ? Gestion des matrices Statistiques Mots croisés Bataille navale Tableur 3 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Domaines d’application Des tableaux à n dimensions, pour quoi faire ? Gestion des matrices Statistiques Mots croisés Bataille navale Tableur Sudoku 3 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Domaines d’application Des tableaux à n dimensions, pour quoi faire ? Gestion des matrices Statistiques Mots croisés Bataille navale Tableur Sudoku ... 3 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Définition Tableau de tableaux. . . ~ ~ Remarque Un tableau à plusieurs dimensions peut être considéré comme un tableau de tableaux. 5 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Déclaration Remarques La déclaration d’un tableau à plusieurs dimensions précise et fixe : le nombre de dimensions du tableau ; 6 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Déclaration Syntaxe Deux possibilités de syntaxes, au choix : <type> <Nom> []...[] 7 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Déclaration Syntaxe Deux possibilités de syntaxes, au choix : <type> <Nom> []...[] <type> []...[] <Nom> 7 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Instanciation Remarques L’instanciation a plusieurs objectifs : préciser la taille de chaque dimension ; 8 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Instanciation Syntaxe Syntaxe créer <type> [<valeur>]...[<valeur>] 9 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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. Exemple réel monTab[][][] ; monTab ← créer réel[5][3][7] ; 9 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Manipulation Accès aux longueurs Soit tab un tableau à plusieurs dimensions. 10 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 6= 0. 10 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 6= 0. tab[0][0].longueur représente la taille de la troisième dimension : suppose que tab[0].longueur 6= 0. 10 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Manipulation Désignation d’une case Syntaxe <Nom>[<indice>]...[<indice>] 11 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Manipulation Désignation d’une case Syntaxe <Nom>[<indice>]...[<indice>] Il y a autant de [<indice>] que de dimensions. 11 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 6 i 6 t.longueur-1 0 6 j 6 [0].longueur-1 11 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Traduction en Java Syntaxe Java En java, créer se traduit par new ; 13 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Traduction en Java Syntaxe Java En java, créer se traduit par new ; longueur se traduit par length. 13 / 18 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Traduction en Java Syntaxe Java En java, créer se traduit par new ; longueur se traduit par length. Exemple //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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles n Exercices Initialisation t x x t 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles 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 Introduction Manipulation Tableaux en Java Bibliothèque MatricesReelles Exercices Recherche (2) 18 / 18