TD3 : tableaux avanc´ees, premi`ere classe et chaınes de caract`eres

TD3 : tableaux avanc´
ees, premi`
ere classe et chaˆ
ınes
de caract`
eres
1 Les tableaux
1.1 ´
El´
ements th´
eoriques
D´
eclaration des tableaux Pour la d´eclaration des tableaux, deux notations sont
possibles. La premi`ere notation, place une paire de crochet par dimension du ta-
bleau juste apr`es un type :
int[] unTableau;
double[][] unTableauBidimensionnel;
La seconde d´eclaration place la (ou les) paire(s) de crochets apr`es le nom de la
variable li´ee.
int unTableau[];
double unTableauBidimensionnel[][];
Construction des tableaux La construction se fait en utilisant l’op´erateur new
suivi du type de donn´ee contenues dans le tableau puis de la taille voulue pour
chaque dimensions entre crochets.
unTableau = new int[10];
unTableauBidimensionnel = new double[5][23];
Les tableaux peuvent aussi ˆetre construit en plusieurs ´etapes. Les dimensions
doivent ˆetre sp´ecifi´ees de “la gauche vers la droite”. Chaque “sous tableau” est alors
un tableau de dimension inf´erieure. L’exemple ci dessous pr´esente la construction
d’un tableau bidimensionnel triangulaire : src/TableauBidim.java
Chaque ligne est expliqu´ee ci dessous :
Le tableau donnees est d´eclar´e bidimensionnel.
Le tableau est partiellement construit, seule la premi`ere dimension est fix´ee `a
10. tableau[i] est un tableau mono-dimensionnel (dimension 21) dont la
taille n’est pour l’instant pas fix´ee.
La boucle cr´ee un tableau mono-dimensionnel pour chaque tableau[i] dont
la taille vaut [i+1]
Deux affectations sont ensuite effectu´ees.
Le tableau obtenu est donc triangulaire compos´e de 1 ´el´ement sur la premi`ere ligne,
2 sur la deuxi`eme,. . .
Tableaux contenant des objets Les tableaux peuvent aussi contenir des objets.
La d´eclaration du tableaux est la mˆeme, un type (dans ce cas une classe) suivit du
1
nom du tableau :
String unTableau[];
String unTableauBidimensionnel[][];
La construction du tableau fait appel au mot cl´e new suivit du nom de la classe
et de (ou des) paire(s) de crochets contenant les dimensions.
unTableau = new String[10];
unTableauBidimensionnel = new String[5][23];
A la suite de la construction du tableau, les ´el´ements contenus doivent ˆetre cr´ees
un `a un, souvent `a l’aide d’une boucle. L’exemple suivant pr´esente la construction
d’un tableau de chaˆıne de caract`eres :
String tab[];
tab = new String[10];
for (int i = 0; i < 10; i++) {
tab[i] = new String();
}
Remarque Souvent, la d´eclaration et la construction du tableau sont faites en
une seule ligne :
int unTableau[] = new int[10];
double unTableauBidimensionnel[][] = new double[5][23]
1.2 Initialisation al´
eatoire d’une matrice
´
Ecrivez un programme qui initialise une matrice de taille 10 par 5 avec des
valeurs al´eatoires comprises entre 0 et 10.
Correction :
import java.util.Random;
public class InitialisationAleatoire {
public static void main(String[] args) {
int[][] matrice = new int[5][10];
Random gen = new Random();
// Remplissage de la matrice
for (int i = 0; i < matrice.length; i++) {
for (int j = 0; j < matrice[0].length; j++) {
matrice[i][j] = gen.nextInt(10);
}
}
// Affichage de la matrice
for (int i = 0; i < matrice.length; i++) {
2
for (int j = 0; j < matrice[0].length; j++) {
System.out.print(matrice[i][j]+" " );
}
System.out.println();
}
}
}
1.3 Somme de matrices
A partir du programme pr´ec´edent, ´ecrivez un programme qui calcule la somme
de deux matrices remplies al´eatoirement.
Correction :
import java.util.Random;
public class SommeMatrices {
public static void main(String[] args) {
int[][] matrice1 = new int[5][10];
int[][] matrice2 = new int[5][10];
int[][] somme = new int[5][10];
Random gen = new Random();
// Remplissage de la matrice
for (int i = 0; i < matrice1.length; i++) {
for (int j = 0; j < matrice1[0].length; j++) {
matrice1[i][j] = gen.nextInt(10);
matrice2[i][j] = gen.nextInt(10);
}
}
// Calcul de la somme
for (int i = 0; i < matrice1.length; i++) {
for (int j = 0; j < matrice1[0].length; j++) {
somme[i][j] = matrice1[i][j] + matrice2[i][j] ;
}
}
// Affichage du resultat
for (int i = 0; i < somme.length; i++) {
for (int j = 0; j < somme[0].length; j++) {
System.out.print(somme[i][j]+" " );
}
System.out.println();
}
3
}
}
1.4 Produit de matrices
´
Ecrivez un programme qui initialise al´eatoirement deux matrices, l’une de 5×3et
l’autre de 3×5´el´ements. A partir du programme pr´ec´edent, ´ecrivez un programme
qui calcule le produit des deux matrices.
Correction :
import java.util.Random;
public class ProduitMatrices {
public static void main(String[] args) {
int[][] matrice1 = new int[5][3];
int[][] matrice2 = new int[3][5];
int[][] produit = new int[5][5];
Random gen = new Random();
// Remplissage de la matrice
for (int i = 0; i < matrice1.length; i++) {
for (int j = 0; j < matrice1[0].length; j++) {
matrice1[i][j] = gen.nextInt(10);
matrice2[j][i] = gen.nextInt(10);
}
}
// Calcul du produit
for (int ligne = 0; ligne < matrice1.length ; ligne++) {
for (int colonne = 0; colonne < matrice2[0].length;
colonne++) {
produit[ligne][colonne] = 0 ;
for (int m = 0; m < matrice1[0].length; m++) {
produit[ligne][colonne] = produit[ligne][colonne] +
( matrice1[ligne][m] *matrice2[m][colonne]);
}
}
}
// Affichage du resultat
for (int i = 0; i < produit.length; i++) {
for (int j = 0; j < produit[0].length; j++) {
System.out.print(produit[i][j]+" " );
}
System.out.println();
}
4
}
}
1.5 Classe matrice
Vous allez construire une classe Matrice dont le sch´ema UML est pr´esent´e dans
la figure ci dessous.
Matrice
- donn´ees : entier[][]
+ Matrice()
+ Matrice(Matrice uneMatrice)
+ Matrice(entier[][] unTableau)
+ Matrice(entier nbLignes,entier nbColonnes)
+ getNombreLignes() : entier
+ getNombreColonnes() : entier
+ getDonn´ees(entier ligne,entier colonne) : entier
+ setDonn´ees(entier ligne, entier colonne, entier uneValeur) :
+ RemplirMatriceAl´eatoirement() :
+ AfficherMatrice() :
+ CalculSomme(Matrice uneMatrice) : Matrice
+ CalculProduit(Matrice uneMatrice) : Matrice
+ CalculDeterminant() : entier
FIG. 1 – Sch´ema UML de la classe Matrice
1.5.1 Attributs
La classe matrice a un seul attribut, un tableau bidimensionnel qui contient les
valeurs de la matrice.
1.5.2 M´
ethodes
Les constructeurs La classe comporte quatre constructeurs :
le premier constructeur ne rec¸oit aucun param`etre, il est vide.
le second constructeur rec¸oit une matrice en param`etre et en construit une
copie.
le troisi`eme constructeur rec¸oit un tableau d’entiers et construit une matrice
`a partir des valeurs contenues dans le tableau.
le quatri`eme constructeur construit une matrice `a partir du nombre de lignes
et du nombre de colonnes pass´es en param`etre.
5
1 / 15 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !