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