Académique Documents
Professionnel Documents
Culture Documents
Dr Komi SODOGA
antoinekomisodoga@gmail.com, UL
15 février 2024
1 / 34
Plan
1 Définitions
Ordre des éléments dans un tableau
2 II-Manipulations de tableaux (constructeur, section,...)
II.1- Constructeur de tableaux
II.2- Initialisation, affectation de tableaux
II.3- Sections de tableaux
Instruction et bloc where
3 III- Tableau dynamique
4 IV. Fonctions intrinsèques particulières aux tableaux
IV.1- Fonctions d’interrogation
IV.2 Fonctions de réductions
IV.3 Fonctions de transformation
IV.4 Fonctions ALL, ANY, COUNT et FORALL
2 / 34
Définitions
I- Définitions
Notions générales
Un tableau est un ensemble d’éléments du même type.
Les tableaux englobent les notions de
o vecteur (tableau 1-D)
o matrice (tableau 2-D)
o grille (tableau 3-D et plus)
3 / 34
Définitions
Matrices
real (8), dimension (3 ,4) :: mat
real, dimension ( -1:3 ,2 ,0:5) :: a
Tableau à 3, 4 dimensions
integer, parameter :: n=3
real, dimension(1:n,-n:n,0:2*n) :: tab1
real, dimension(1:n,1:n,-n:n,0:2*n) :: tab2
4 / 34
Définitions
Remarques
Les éléments des tableaux sont
o utilisés comme n’importe qu’elle autre variable de son type (expression ou
affectation)
n = t(3)*5 + 3
t(1) = 2*k + 5
o de n’importe quel type ( INTEGER, LOGICAL, REAL, COMPLEX,
CHARACTER)
Les indices peuvent prendre la forme de n’importe quelle expression arithmétique de type
INTEGER.
Terminologie (1/2)
Le rang (rank) d’un tableau est son nombre de dimensions.
Le nombre d’éléments dans une dimension s’appelle l’étendue (extent) du tableau dans cette
dimension.
Le profil (shape) d’un tableau est un vecteur dont chaque élément est l’étendue du tableau
dans la dimension correspondante.
La taille (size) d’un tableau est le produit des éléments du vecteur correspondant à son profil.
5 / 34
Définitions
Terminologie (2/2)
Deux tableaux seront dits conformants s’ils ont même profil.
Deux tableaux peuvent avoir la même taille mais avoir des profils différents ; si c’est le cas,
ils ne sont pas conformants !
Exemple 1
real, dimension (-5:4,0:2) :: x
real, dimension (0:9,-1:1) :: y
real, dimension (2,3,0:5) :: z
o Les tableaux x et y sont de rang 2, tandis que le tableau z est de rang 3 ;
o L’étendue des tableaux x et y est 10 dans la 1re dimension et 3 dans la 2e. Ils ont même
profil : (/ 10, 3 /), ils sont donc conformants. Leur taille est égale à 30 ;
o Le profil du tableau z est le vecteur (/ 2, 3, 6 /), sa taille est égale à 36.
Exemple 2
real,dimension(-1:1,10,0:4) :: t
real,dimension(-1:5,0:9) :: tab1
real,dimension(7,2:11) :: tab2
o Le tableau t a pour caractéristiques :
rang 3 ; étendue 3, 10, 5 ; taille 150 ; profil (/3,10,5/)
o Tab1 et Tab2 sont des tableaux de même profil (/7,10/)
6 / 34
Définitions Ordre des éléments dans un tableau
I-Définitions
7 / 34
Définitions Ordre des éléments dans un tableau
Une lecture globale de matrice dans un fichier par un seul ordre READ (sans boucle
implicite) stockera les éléments sur une même ligne en incrémentant l’indice le plus
à gauche du tableau de rang 2, c’est-à-dire... celui des lignes
Exemple
INTEGER, DIMENSION(2,2) :: mat
...
OPEN(10, file=’mat2x2.dat’, STATUS=’old’)
READ(10, *) mat(:,:)
CLOSE(10)
WRITE(*, *) mat(:,:)
Exercice 1 : Écrire un programme permettant de réaliser le test ci-dessus !
8 / 34
Définitions Ordre des éléments dans un tableau
9 / 34
II-Manipulations de tableaux (constructeur, section,...) II.1- Constructeur de tableaux
II-Manipulations de tableaux
Constructeur de tableaux
11 / 34
II-Manipulations de tableaux (constructeur, section,...) II.1- Constructeur de tableaux
12 / 34
II-Manipulations de tableaux (constructeur, section,...) II.2- Initialisation, affectation de tableaux
Autre exemple
real, dimension(6,7) :: a,b
real, dimension(2:7,5:11) :: c
logical, dimension(-2:3,0:6) :: l
b(:,:) = 1.5
c(:,:) = b(:,:)
a(:,:) = b(:,:) + c(:,:) + 4.
l(:,:) = c(:,:) == b(:,:)
14 / 34
II-Manipulations de tableaux (constructeur, section,...) II.2- Initialisation, affectation de tableaux
Rappel : dans les “boucles implicites”, il faut autant de “blocs parenthésés” (séparés
par des virgules) qu’il y a d’indices : (((i+j+k,i=1,3),j=1,4),k=8,24,2)
À noter que chaque indice est défini par un triplet dont le troisième élément (option-
nel) représente le pas.
15 / 34
II-Manipulations de tableaux (constructeur, section,...) II.3- Sections de tableaux
17 / 34
II-Manipulations de tableaux (constructeur, section,...) II.3- Sections de tableaux
tab(:) = tab(20:1:-1)
18 / 34
II-Manipulations de tableaux (constructeur, section,...) II.3- Sections de tableaux
19 / 34
II-Manipulations de tableaux (constructeur, section,...) Instruction et bloc where
20 / 34
II-Manipulations de tableaux (constructeur, section,...) Instruction et bloc where
END WHERE
21 / 34
II-Manipulations de tableaux (constructeur, section,...) Instruction et bloc where
22 / 34
III- Tableau dynamique
24 / 34
IV. Fonctions intrinsèques particulières aux tableaux IV.1- Fonctions d’interrogation
Fonctions d’interrogation
Les fonctions d’interrogation renseignent sur un tableau
SIZE(array [, dim]) donne l’étendue d’un tableau selon la dimension dim si cet argument
optionnel est fourni, et le nombre total d’éléments sinon ;
SHAPE donne le vecteur profil d’un tableau (son étendue est le rang du tableau) ;
LBOUND et UBOUND fournissent un vecteur constitué des bornes respectivement inférieures
et supérieures des indices selon chacune des dimensions du tableau. Si une dimension est
précisée comme argument optionnel, elles fournissent un scalaire indiquant les bornes des
indices selon cette dimension.
MINLOC et MAXLOC fournissent le vecteur des indices du premier élément respectivement mi-
nimum ou maximum du tableau, mais en indexant le tableau à partir d’une borne inférieure
égale à 1 selon chaque dimension, quelles que soient les bornes déclarées.
25 / 34
IV. Fonctions intrinsèques particulières aux tableaux IV.1- Fonctions d’interrogation
Fonctions d’interrogation
Exercice 1 :
On considère le vecteur Vec = (/ 2,-1,10,3,-1 /) et le tableau tab de
dimension (-2 :27, 0 :49),
Écrire un programme qui retourne :
1 les bornes supérieures de tab
2 la borne supérieure de tab selon la 2e dimension
3 les bornes inférieures de tab
4 la borne inférieure de tab selon la 1ere dimension
5 Le profil et la taille de tab
6 La taille de tab selon la dimension 1
7 les positions du plus grand et du plus petit élements de Vec
26 / 34
IV. Fonctions intrinsèques particulières aux tableaux IV.1- Fonctions d’interrogation
Fonctions d’interrogation
Exercice 2 :
On considère la matrice :
0 −5 8 −3
A= 3 4 −1 2
1 5 6 −4
27 / 34
IV. Fonctions intrinsèques particulières aux tableaux IV.2 Fonctions de réductions
Fonctions de réductions
Les fonctions de réduction renvoient un tableau de rang inférieur (éventuellement un scalaire)
à celui passé en argument.
Si on spécifie une dimension, seule cette dimension sera affectée par l’opération de réduction
et le tableau rendu sera de rang r - 1, où r est le rang du tableau initial.
28 / 34
IV. Fonctions intrinsèques particulières aux tableaux IV.2 Fonctions de réductions
Fonctions de réductions
5. MATMUL effectue le produit matriciel de deux tableaux. Elle suppose que les profils de ses
arguments permettent l’opération :
- produit d’une matrice de n lignes et p colonnes par une matrice de p lignes et q colonnes
donnant une matrice de n lignes et q colonnes
- produit d’une matrice de n lignes et p colonnes par un vecteur de taille p donnant un
vecteur de taille n
- produit d’un vecteur de taille n par une matrice de n lignes et p colonnes donnant un
vecteur de taille p.
Par exemple, les calculs de moments d’une série statistique stockée dans un tableau mono-
dimensionnel peuvent s’exprimer de façon très concise à l’aide de ces fonctions.
INTEGER, PARAMETER :: n = 1000
REAL, DIMENSION(n) :: x, y
REAL :: moyenne_x, moyenne_y, variance_x, covariance
29 / 34
IV. Fonctions intrinsèques particulières aux tableaux IV.2 Fonctions de réductions
Fonctions de réductions
Exercice 1 :
Écrire un programme permettant de faire les tests de la diapo précédente ! ! On
remplira les vecteurs
et
avec des variables aléatoires Exercice 2 :
On considère la matrice :
0 −5 8 −3
A = 3 4 −1 2
1 5 6 −4
Fonctions de réductions
Exercice 3 : Soient les vecteurs
2 6 2
v 1 = −3 , v 2 = 3 , et v = −4
−1 3 1
et les matrices
3 −6 −1 1 −2 −2
A= 2 3 1 et = 3 2 1
−1 −2 4 2 −2 3
31 / 34
IV. Fonctions intrinsèques particulières aux tableaux IV.3 Fonctions de transformation
Fonctions de transformation
32 / 34
IV. Fonctions intrinsèques particulières aux tableaux IV.3 Fonctions de transformation
Fonctions de transformation
33 / 34
IV. Fonctions intrinsèques particulières aux tableaux IV.4 Fonctions ALL, ANY, COUNT et FORALL
34 / 34