Aller au contenu principal

Module 01 · Leçon 3

Tableaux à une dimension

180 minanalyse · pascal
Affichage du code

Ce que vous saurez faire

  • Déclarer et initialiser un tableau à 1 dimension
  • Accéder à un élément par son indice
  • Parcourir un tableau avec une boucle Pour

Avant de commencer

Pour stocker les notes des 30 élèves d'une classe, on n'a pas envie de déclarer 30 variables note1, note2, …, note30. Quelle structure permet de regrouper plusieurs valeurs du même type sous un seul nom ?


1. Définition

Visuellement, un tableau de 5 entiers :

indice :   1     2     3     4     5
        ┌─────┬─────┬─────┬─────┬─────┐
   T =  │  12 │  -3 │   7 │  20 │   0 │
        └─────┴─────┴─────┴─────┴─────┘

T[1] vaut 12. T[3] vaut 7. T[6] provoque une erreur (hors borne).


2. Déclaration

T.D.N.T
─────────────────────────────────────
Type
  Tab = Tableau de 30 entiers
─────────────────────────────────────

T.D.O
─────────────────────────────────
N    │ constante=30 (entier)
T    │ variable Tab
i    │ variable entier
─────────────────────────────────

3. Parcours classique : remplir et afficher

T.D.O
─────────────────────────────────
N    │ constante=5 (entier)
T    │ variable Tableau de N entiers
i    │ variable entier
─────────────────────────────────

Algorithme Remplir_Afficher
Début
  { Saisie }
  Pour i de 1 à N Faire
    T[i] ← Donnée("Élément " + i + " : ")
  FinPour

  { Affichage }
  Pour i de 1 à N Faire
    Ecrire(T[i])
  FinPour
Fin

En Pascal :

PROGRAM RemplirAfficher;
CONST
  N = 5;
TYPE
  Tab = ARRAY[1..N] OF integer;
VAR
  T : Tab;
  i : integer;
BEGIN
  FOR i := 1 TO N DO
  BEGIN
    Write('Élément ', i, ' : ');
    Readln(T[i]);
  END;

  FOR i := 1 TO N DO
    Write(T[i]:4);
  Writeln;
END.
Trace d'exécution
0 / 3
InstructioniT[1]T[2]T[3]
01···????
02···????
03···????

4. Opérations courantes sur un tableau

Somme des éléments

somme ← 0
Pour i de 1 à N Faire
  somme ← somme + T[i]
FinPour

Recherche du maximum

max ← T[1]
Pour i de 2 à N Faire
  Si T[i] > max Alors
    max ← T[i]
  FinSi
FinPour

5. Exercices

Exercice 1facile
Compter les pairs

Écrire un algorithme qui, étant donné un tableau T de N entiers, compte le nombre d'éléments pairs qu'il contient.

Voir le corrigé
T.D.O
─────────────────────────────────
T    │ Tableau de N entiers
i    │ entier
nb   │ entier
─────────────────────────────────

Début
  nb ← 0
  Pour i de 1 à N Faire
    Si T[i] mod 2 = 0 Alors
      nb ← nb + 1
    FinSi
  FinPour
  Ecrire("Nombre de pairs : ", nb)
Fin

En Pascal : IF T[i] MOD 2 = 0 THEN nb := nb + 1;

Exercice 2moyen
Moyenne et écart au max (type bac courant)

Soit un tableau T de N réels. Écrire un programme qui calcule :

  1. La moyenne des éléments.
  2. L'écart entre le maximum et la moyenne.
Voir le corrigé
PROGRAM MoyEcart;
CONST
  N = 10;
VAR
  T : ARRAY[1..N] OF real;
  i : integer;
  somme, moyenne, max : real;
BEGIN
  FOR i := 1 TO N DO
  BEGIN
    Write('T[', i, '] = ');
    Readln(T[i]);
  END;

  somme := 0;
  max := T[1];
  FOR i := 1 TO N DO
  BEGIN
    somme := somme + T[i];
    IF T[i] > max THEN
      max := T[i];
  END;
  moyenne := somme / N;

  Writeln('Moyenne = ', moyenne:5:2);
  Writeln('Max − Moyenne = ', (max - moyenne):5:2);
END.
Exercice 3difficile
Inversion en place (hors bac, bonus)

Inverser un tableau T de N entiers en place (sans utiliser de tableau auxiliaire). Exemple : [1, 2, 3, 4, 5] doit devenir [5, 4, 3, 2, 1].

Voir le corrigé
Pour i de 1 à N div 2 Faire
  temp ← T[i]
  T[i] ← T[N - i + 1]
  T[N - i + 1] ← temp
FinPour

On échange l'élément 1 avec le dernier, le 2ème avec l'avant-dernier, etc. On s'arrête à N div 2 car au-delà on commencerait à défaire les échanges déjà faits.


6. Erreurs fréquentes au bac

  • Confondre T[i] (l'élément) et T (le tableau entier).
  • Indice hors borne : T[0] ou T[N+1] → erreur d'exécution.
  • Initialiser le max à 0 au lieu de T[1] (faux pour des valeurs négatives).
  • Oublier que la taille est fixée à la compilation : pas de tableau redimensionnable en Pascal standard.

7. Quiz

Quiz (5 questions)

1

Pour un tableau `T : ARRAY[1..N] OF integer`, quel accès est invalide ?

2

Comment initialiser correctement la variable `max` lors d'une recherche dans un tableau ?

3

Que fait `Pour i de 1 à N div 2 Faire` ?

4

Pour compter les éléments négatifs d'un tableau, on utilise :

5

Quelle est la principale différence entre tableau et chaîne en Pascal ?

Bravo d'être arrivé jusqu'ici. Marquez la leçon terminée pour ancrer le progrès.