Page MenuHomePhabricator

Les tableaux à une dimensions
Updated 36 Days AgoPublic

Les tableaux

Un tableau est une structure de données statiques contenant un nombre de valeurs déterminées à l'avance. Il s'agit d'une séquence finie d'éléments auxquels on peut accéder directement sur base de leurs positions. Dans un tableau, tous les éléments doivent être du même type.

Un tableau est représenté en mémoire sous la forme de cellules contiguës. Il n'est pas possible de créer une case ou d'en supprimer une. On dit qu'ils sont statiques. En raison de ces limitations, tous les langages de programmation ne permettent pas d'utiliser des variables pour concevoir des tableaux.

Il est toutefois parfois possible de créer un nouveau tableau de façon dynamique, plus grand ou plus petite, puis de recopier tous les éléments du tableau original dans le nouveau tableau. Nous verrons comment y parvenir plus tard.

Les tableaux à une seule dimension sont aussi appelés des vecteurs. On peut accéder à une case d'un vecteur en donnant le numéro d'indice. Il est important de savoir que la numérotation de l'index commence à 0. Ainsi, dans le TABLEAU t: 10 ENTIER ci-dessous, pour accéder à la valeur 23 positionné dans la case en indice 3, il faut utiliser la notation t[3].

Indices0123456789
Valeurs49139423609023-9944321
DÉBUT
CONSTANTE N <- 10

TABLEAU t: N ENTIER
VARIABLE i: ENTIER

POUR i DE 0 À N:
    t[i] <- i
FIN POUR
FIN

Il faut savoir que les tableaux sont considérés comme des types complexes. Ils doivent toujours être passés par références lorsque vous utilisez des fonctions. Tous les langages de programmations ne permettent pas de renvoyer un type complexe comme valeur de retour de fonction.

PROCEDURE FILL(t: TABLEAU ENTIER, N: ENTIER)
VARIABLE i: ENTIER

POUR i DE 0 À N:
    t[i] <- i
FIN POUR
FIN PROCEDURE

Exercices

  • Écrivez une procédure qui initialise un tableau de N cases selon les valeurs données par l'utilisateur.
Remplissage dun tableau
PROCEDURE FILL(t: TABLEAU ENTIER, N: ENTIER)
VARIABLE i: ENTIER

POUR i DE 0 À N:
    LIRE t[i]
FIN POUR
FIN PROCEDURE
  • Écrivez une fonction qui calcule la moyenne d'un tableau de N cases.
La moyenne
FONCTION AVG(t: TABLEAU ENTIER, N: ENTIER)
VARIABLE i, sum: ENTIER
VARIABLE sum: RÉEL
sum <- 0.0

POUR i DE 0 À N:
    sum <- sum + t[i]
FIN POUR

RETOURNER sum / N
FIN FONCTION
  • Écrivez une fonction qui déplace toutes les valeurs d'un tableau pour obtenir sa symétrie. Exemple : [0,1,2,3][3,2,1,0][0, 1, 2, 3] \rightarrow [3, 2, 1, 0]
Symétrie
PROCÉDURE SYM(t: TABLEAU ENTIER, N: ENTIER)
VARIABLE i, tmp: ENTIER

POUR i DE 0 À N/2:
    tmp <- t[i]
    t[i] <- t[N-i-1]
    t[N-i-1] <- tmp
FIN POUR

FIN PROCÉDURE
  • Écrivez une procédure qui décale toutes les valeurs d'un tableau d'une case vers la droite. La première case du tableau est remplie par la dernière case du tableau. Exemple: [0,1,2,3][3,0,1,2][0, 1, 2, 3] \rightarrow [3, 0, 1, 2]
Décalage par la droite V1
PROCÉDURE RSHIFT(t: TABLEAU ENTIER, N: ENTIER)
VARIABLE i, a, b: ENTIER

a <- t[0]
POUR i DE 0 À N:
    b <- t[i+1 % N]
    t[i+1 % N] <- a
    a <- b
FIN POUR

FIN PROCÉDURE
Décalage par la droite V2
PROCÉDURE RSHIFT(t: TABLEAU ENTIER, N: ENTIER)
VARIABLE i, tmp: ENTIER

tmp <- t[N-1]
POUR i DE N-1 À 1:
    t[i] <- t[i-1]
FIN POUR
t[0] <- tmp

FIN PROCÉDURE
  • Écrivez une procédure qui décale toutes les valeurs d'un tableau du nombre de cases souhaitées. Pour cet exercice, essayez de décaler le tableau directement du bon nombre de cases.

ROT_X
PROCEDURE ROT_X(t: TABLEAU ENTIER, N: ENTIER, K: ENTIER)
    VARIABLES i, j, x, y, r: ENTIER
    r <- PGCD(n, k)
    POUR i  DE 0 À r:
        x <- t[i]
        REPETER
            j <- (j+k) % n

            y <- t[j]
            t[j] <- x
            x <- y
        TANT QUE j != i
    FIN POUR
FIN PROCEDURE
  • Écrivez une fonction qui dédouble le nombre de cases disponible d'un tableau.
dédoubler tableau
Cet exercice n'est pas possible, puisqu'on ne peut utiliser que des constantes pour concevoir un tableau statique.
Last Author
Steve
Last Edited
Sep 13 2020, 10:34 AM

Event Timeline

Steve created this object.Aug 30 2020, 9:15 PM
Steve edited the content of this document. (Show Details)Aug 30 2020, 9:49 PM
Steve edited the content of this document. (Show Details)Aug 30 2020, 10:00 PM
Steve edited the content of this document. (Show Details)
Steve edited the content of this document. (Show Details)Aug 30 2020, 10:09 PM
Steve edited the content of this document. (Show Details)Aug 31 2020, 9:28 AM
Steve edited the content of this document. (Show Details)Aug 31 2020, 9:30 AM
Steve edited the content of this document. (Show Details)
Steve edited the content of this document. (Show Details)Aug 31 2020, 9:42 AM
Steve edited the content of this document. (Show Details)Aug 31 2020, 9:45 AM
Steve edited the content of this document. (Show Details)Aug 31 2020, 9:53 AM
Steve edited the content of this document. (Show Details)Sep 12 2020, 2:21 PM
Steve edited the content of this document. (Show Details)Sep 13 2020, 10:02 AM
Steve edited the content of this document. (Show Details)
Steve edited the content of this document. (Show Details)Sep 13 2020, 10:33 AM
Steve edited the content of this document. (Show Details)