Enoncé du TD et TP sur les tableaux bi-dimensionnels - IUT
Enoncé du TD et TP sur les tableaux bi-dimensionnels - IUT
Enoncé du TD et TP sur les tableaux bi-dimensionnels - IUT
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Cours 6. Les <strong>tableaux</strong> <strong>bi</strong>-<strong>dimensionnels</strong><br />
Définition<br />
Un tableau <strong>bi</strong>dimensionnel est une structure de taille fixée perm<strong>et</strong>tant d'accèder de manière<br />
indépendante à un ensemble de valeurs de même type, valeurs repérées par deux coordonnées.<br />
Déclaration<br />
Tableau Nom (nbre de_colonnes, nbre_de_lignes ) en type des éléments<br />
exemple:<br />
Tableau Note(12,10) en Entier<br />
effectue la déclaration d'un tableau <strong>bi</strong>-dimensionnel de 13 colonnes <strong>et</strong> 10 lignes.<br />
On peut alors accèder de l'élément Note (0,0) à l'élément Note (13,11)<br />
Exemple:<br />
Tableau Note(12,10) en Entiers<br />
Variab<strong>les</strong> i, j, Moy, Som en Entiers<br />
Début<br />
Pour j ← 0 à 11<br />
Pour i ← 0 à 13<br />
Ecrire ("Entrez la note n°", i,j)<br />
Lire Note(i,j)<br />
i Suivant<br />
j Suivant<br />
Som ← 0<br />
Pour j ← 0 à 11<br />
Pour i ← 0 à 13<br />
Som ← Som + Note(i)<br />
i Suivant<br />
j Suivant<br />
Moy ← Som / (13*10)<br />
Fin<br />
Page 1/6 - LP VI – Contrôle In<strong>du</strong>striel – Cours 6 – Les <strong>tableaux</strong> <strong>bi</strong>-<strong>dimensionnels</strong>
Exercice 1:<br />
Quel résultat pro<strong>du</strong>ira c<strong>et</strong> algorithme ?<br />
Tableau X(1, 2) en Entier<br />
Variab<strong>les</strong> i, j, val en Entier<br />
Début<br />
Val ← 1<br />
Pour i ← 0 à 1<br />
Pour j ← 0 à 2<br />
X(i, j) ← Val<br />
Val ← Val + 1<br />
j Suivant<br />
i Suivant<br />
Pour i ← 0 à 1<br />
Pour j ← 0 à 2<br />
Ecrire X(i, j)<br />
j Suivant<br />
i Suivant<br />
Fin<br />
Exercice 2:<br />
Quel résultat pro<strong>du</strong>ira c<strong>et</strong> algorithme ?<br />
Tableau X(1, 2) en Entier<br />
Variab<strong>les</strong> i, j, val en Entier<br />
Début<br />
Val ← 1<br />
Pour j ← 0 à 2<br />
Pour i ← 0 à 1<br />
X(i, j) ← Val<br />
Val ← Val + 1<br />
i Suivant<br />
j Suivant<br />
Pour i ← 0 à 1<br />
Pour j ← 0 à 2<br />
Ecrire X(i, j)<br />
j Suivant<br />
i Suivant<br />
Fin<br />
Exercice 3:<br />
Quel résultat pro<strong>du</strong>ira c<strong>et</strong> algorithme ?<br />
Tableau T(3, 1) en Entier<br />
Variab<strong>les</strong> k, m, en Entier<br />
Début<br />
Pour k ← 0 à 3<br />
Pour m ← 0 à 1<br />
T(k, m) ← k + m<br />
m Suivant<br />
k Suivant<br />
Page 2/6 - LP VI – Contrôle In<strong>du</strong>striel – Cours 6 – Les <strong>tableaux</strong> <strong>bi</strong>-<strong>dimensionnels</strong>
Pour k ← 0 à 3<br />
Pour m ← 0 à 1<br />
Ecrire T(k, m)<br />
m Suivant<br />
k Suivant<br />
Fin<br />
Exercice 4:<br />
Ecrire un algorithme qui remplit un tableau de 3 lignes <strong>et</strong> 2 colonnes avec des entiers compris entre<br />
0 <strong>et</strong> 9. La saisie de chaque valeur doit être réitérée si l'entier saisi n'est pas un nombre. L'algorithme<br />
doit calculer <strong>et</strong> afficher le max <strong>du</strong> tableau. L'algorithme doit également déterminer l'entier dont le<br />
nombre d'apparitions est le plus élevé. Si le nombre d'apparitions le plus élevé correspond à deux<br />
entiers différents, le programme affiche l'entier le plus faible.<br />
Exemple:<br />
8 2<br />
2 5<br />
1 3<br />
Le programme doit afficher que la valeur 8 est la plus grande <strong>et</strong> que la valeur 2 est la plus présente<br />
dans le tableau.<br />
<strong>TP</strong> Gestion de données dans une feuille d'un tableur<br />
L'objectif de ce <strong>TP</strong> est de manipuler des <strong>tableaux</strong> 2D (appelés source <strong>et</strong> destination) ainsi que la<br />
constitution de l'histogramme des valeurs de chacun de ces <strong>tableaux</strong>.<br />
A/ : Ouverture <strong>du</strong> classeur <strong>TP</strong>INFO_2 <strong>et</strong> de la feuille de travail<br />
1 / Ouvrir le classeur “tp_tab2D_exemple.ods” présent dans le répertoire commun.<br />
2/ Ouvrir la seuille “<strong>TP</strong>1_tab2D” . C'est dans c<strong>et</strong>te feuille que nous allons travailler<br />
3/ Enregistrer le classeur dans votre répertoire de travail sous le nom « <strong>TP</strong>INFO_2 » (Fichier-Enregistrer)<br />
B/ : Lecture-Ecriture de données dans la feuille « <strong>TP</strong>2a »<br />
1/ Ouvrir la fenêtre de programmation en « Basic Obj<strong>et</strong> » :<br />
Sélectionner Outils – Macro – Macro..... puis dans la liste « macro de » , sélectionner « Standard » dans<br />
votre classeur « <strong>TP</strong>INFO_2.sxc » - Sélectionner le mo<strong>du</strong>le 1.<br />
La fenêtre de programmation en Basic apparaît avec des lignes déjà écrites.<br />
Pour manipuler des données dans une feuille, le tableur doit connaître l'arborescence qui con<strong>du</strong>it <strong>du</strong><br />
classeur à la case élémentaire (Cellule). Une case peut être repérée par une l<strong>et</strong>tre <strong>et</strong> un chiffre (ex.<br />
B3 ), un groupe rectangulaire de cases par deux cases en diagonale ( ex A1 : C12 ).<br />
Page 3/6 - LP VI – Contrôle In<strong>du</strong>striel – Cours 6 – Les <strong>tableaux</strong> <strong>bi</strong>-<strong>dimensionnels</strong>
Les variab<strong>les</strong> globa<strong>les</strong> de type « Obj<strong>et</strong> » sont utilisées avec l’option « explicit » soit :<br />
Option explicit<br />
Dim MonClasseur As Object<br />
Dim MesFeuil<strong>les</strong> As Object<br />
Dim MaFeuilleEnCours<br />
REM *** Tableau source<br />
Dim MesCases_source As Object<br />
Dim UneCase_source As Object<br />
REM *** Tableau destination<br />
Dim MesCases_destination As Object<br />
Dim UneCase_destination As Object<br />
REM *** Histogramme<br />
Dim MesCases_histogramme As Object<br />
Dim UneCase_histogramme As Object<br />
Un classeur est un obj<strong>et</strong> qui contient plusieurs feuil<strong>les</strong> identifiées par leur nom ( par ex. <strong>TP</strong>2a ) ou<br />
par un numéro. Chaque feuille contient des cellu<strong>les</strong> identifiab<strong>les</strong> par zone (par ex. "a2:d11") ou<br />
indivi<strong>du</strong>ellement (par ex 0,0 qui correspond à la case A2 )<br />
Le sous-programme suivant perm<strong>et</strong> d'associer des données de la feuille , à savoir <strong>les</strong> 3 <strong>tableaux</strong>, aux<br />
variab<strong>les</strong> globa<strong>les</strong><br />
Sub DefEspaceTravail<br />
REM *** on prend le classeur actuel<br />
MonClasseur = ThisComponent<br />
REM *** on considère la feuille "<strong>TP</strong>1_tab2D"<br />
MesFeuil<strong>les</strong> = MonClasseur.She<strong>et</strong>s<br />
MaFeuilleEnCours = MesFeuil<strong>les</strong>.g<strong>et</strong>ByName("<strong>TP</strong>1_tab2D")<br />
REM *** Tableau Source<br />
REM *** selection de la zone de cellu<strong>les</strong> considérées a2:d11<br />
MesCases_source = MaFeuilleEnCours.g<strong>et</strong>CellRangeByName("a2:d11")<br />
REM *** Tableau Destination<br />
REM *** selection de la zone de cellu<strong>les</strong> considérées f2:i11<br />
MesCases_destination = MaFeuilleEnCours.g<strong>et</strong>CellRangeByName("f2:i11")<br />
REM *** Tableau Histogramme<br />
REM *** selection de la zone de cellu<strong>les</strong> considérées a14:j15<br />
MesCases_histogramme = MaFeuilleEnCours.g<strong>et</strong>CellRangeByName("a14:j15")<br />
end sub<br />
Le sous-programme suivant perm<strong>et</strong> d'initialiser <strong>les</strong> 3 <strong>tableaux</strong> avec des valeurs dépendant des<br />
coordonnées des cellu<strong>les</strong>.<br />
Page 4/6 - LP VI – Contrôle In<strong>du</strong>striel – Cours 6 – Les <strong>tableaux</strong> <strong>bi</strong>-<strong>dimensionnels</strong>
Sub Res<strong>et</strong>_tableau<br />
REM *** définition des variab<strong>les</strong> loca<strong>les</strong> à la procé<strong>du</strong>re<br />
REM *** indice des bouc<strong>les</strong><br />
Dim i,j as integer<br />
REM *** nombre de colonnes <strong>et</strong> de lignes des différents <strong>tableaux</strong><br />
Dim nCols, nLignes as integer<br />
REM **** définition de l'espace de travail<br />
DefEspaceTravail<br />
REM *** initialisation <strong>du</strong> tableau source<br />
REM ***Calcul <strong>du</strong> nombre de colonnes <strong>du</strong> tableau source<br />
nCols = MesCases_source.Columns.Count<br />
REM *** Calcul <strong>du</strong> nombre de lignes <strong>du</strong> tableau source<br />
nLignes = MesCases_source.Rows.Count<br />
REM *** parcours <strong>du</strong> tableau<br />
For j = 0 To nLignes - 1<br />
For i = 0 To nCols - 1<br />
UneCase_source = MesCases_source.g<strong>et</strong>CellByPosition(i,j)<br />
UneCase_source.Value = j* nCols + i<br />
Next i<br />
Next j<br />
REM *** initialisation <strong>du</strong> tableau destination<br />
REM ***Calcul <strong>du</strong> nombre de colonnes <strong>du</strong> tableau source<br />
nCols = MesCases_destination.Columns.Count<br />
REM *** Calcul <strong>du</strong> nombre de lignes <strong>du</strong> tableau source<br />
nLignes = MesCases_destination.Rows.Count<br />
REM *** parcours <strong>du</strong> tableau<br />
For j = 0 To nLignes - 1<br />
For i = 0 To nCols - 1<br />
UneCase_destination = MesCases_destination.g<strong>et</strong>CellByPosition(i,j)<br />
UneCase_destination.Value = 0<br />
Next i<br />
Next j<br />
REM *** initialisation de l'histogramme<br />
REM ***Calcul <strong>du</strong> nombre de colonnes de l'histogramme<br />
nCols = MesCases_histogramme.Columns.Count<br />
REM *** parcours <strong>du</strong> tableau<br />
For i = 0 To nCols - 1<br />
UneCase_histogramme = MesCases_histogramme.g<strong>et</strong>CellByPosition(i,0)<br />
UneCase_histogramme.Value = i<br />
UneCase_histogramme = MesCases_histogramme.g<strong>et</strong>CellByPosition(i,1)<br />
UneCase_histogramme.Value = 0<br />
end sub<br />
Next i<br />
Page 5/6 - LP VI – Contrôle In<strong>du</strong>striel – Cours 6 – Les <strong>tableaux</strong> <strong>bi</strong>-<strong>dimensionnels</strong>
Ce sous-programme est associé au bouton intitulé “initialisation” de la feuille courante.<br />
Travail à faire:<br />
Bouton RAZ<br />
Ecrire un sous-programme dans le mo<strong>du</strong>le1 qui remplit le tableau source avec des valeurs<br />
comprises entre 0 <strong>et</strong> 9 <strong>et</strong> dépendantes des coordonnées des cellu<strong>les</strong>. Pour cela, il faut utiliser<br />
l'instruction x mod y qui calcule le mo<strong>du</strong>lo de x par rapport à y.<br />
Bouton Saisie<br />
Ecrire un sous-programme dans le mo<strong>du</strong>le1 qui vérifie que <strong>les</strong> valeurs <strong>du</strong> tableau source sont<br />
comprises entre 0 <strong>et</strong> 9. Quand c<strong>et</strong>te condition n'est pas respectée, le programme saisit une nouvelle<br />
valeur avec la fonction inputbox.<br />
Bouton Copie Src->Dest<br />
Bouton Saisie<br />
Ecrire un sous-programme dans le mo<strong>du</strong>le1 qui recopie le contenu <strong>du</strong> tableau source vers le tableau<br />
destination.<br />
Bouton Max<br />
Ecrire un sous-programme dans le mo<strong>du</strong>le1 qui calcule <strong>et</strong> affiche la valeur max <strong>du</strong> tableau source.<br />
Bouton Seuillage<br />
Ecrire un sous-programme dans le mo<strong>du</strong>le1 qui saisit un seuil compris entre 0 <strong>et</strong> 9. Le programme<br />
recopie alors le tableau source vers le tableau destination avec la règle suivante:<br />
Si la source > seuil alors affecter la destination à 100 sinon affecter la destination à 0.<br />
Bouton Histogramme<br />
Ecrire un sous-programme dans le mo<strong>du</strong>le1 qui construit l'histogramme des valeurs <strong>du</strong> tableau<br />
source, <strong>et</strong> ce pour <strong>les</strong> valeurs comprises entre 0 <strong>et</strong> 9. Le programme doit ensuite r<strong>et</strong>rouver la valeur<br />
<strong>du</strong> tableau source avec le nombre d'apparitions le plus élevé. Si le nombre d'apparitions le plus<br />
élevé correspond à deux valeurs différentes, le programme affiche la valeur le plus faible.<br />
Page 6/6 - LP VI – Contrôle In<strong>du</strong>striel – Cours 6 – Les <strong>tableaux</strong> <strong>bi</strong>-<strong>dimensionnels</strong>