Les tableaux

Sommaire

Index

Définition

Contenu d’un tableau

Un tableau permet de stocker plusieurs valeurs d’un même type

Exemple: tableau d’entiers

0 1 2 3 4 5 6 7 8
9 22 -1 7 2 9 3 6 8

1 emplacement = 1 valeur

Chaque emplacement du tableau permet de stocker une valeur

1 valeur = 1 élément

Une valeur stockée dans le tableau est un élément du tableau

Vocabulaire: case, élément, item, emplacement

On désigne aussi ce concept par les mots suivants:

Longueur du tableau

La longueur du tableau est le nombre d’éléments du tableau

Vocabulaire: longueur, taille

On désigne aussi ce concept par les mots suivants:

Index

Chaque élément possède un index

Synonymes:

Premier index

En pseudo-code:

En C (et dans de nombreux autres langages):

Dernier index

En pseudo-code:

En C (et dans de nombreux autres langages):

(taille du tableau moins 1)

Utilisation en langage C

Déclaration

Déclaration d’un tableau de 10 entiers:

0 1 2 3 4 5 6 7 8 9
Tableau mon_tableau[10] d'entiers 

En C (et d’autres langages):

int mon_tableau[10] ;

Modification d’un élément

Modification d’un élément d’un tableau de 10 entiers:

0 1 2 3 4 5 6 7 8 9
0 0 4 0 0 0 0 0 0 0
mon_tableau[2] <-- 4

En C :

mon_tableau[2] = 4;

Accès à un élément

Affichage d’un élément d’un tableau de 10 entiers:

0 1 2 3 4 5 6 7 8 9
0 0 4 0 0 0 0 0 0 0
AFFICHER mon_tableau[2]

En C :

printf("%d, ", un_tableau[2]);

Exemple de code

Initialisation avec une boucle for

N <-- 10
POUR i ALLANT_DE 1 A N
DEBUT_POUR
    mon_tableau[i] <-- i * i
FIN_POUR

Accès avec une boucle for

Affichage

POUR i ALLANT_DE 1 A N
DEBUT_POUR
    AFFICHER mon_tableau[i]
FIN_POUR

Autres exemples en C

#include <stdio.h>

int main () {
    //Déclaration + initialisation
    int un_tableau[10] = {};
    
    //Parcours
    for(int i = 0 ; i < 10 ; i ++ ) {
        printf("%d, ", un_tableau[i]);
    }
    printf("\n");
    return 0;
}

Déclaration et initialisation de plusieurs éléments

int un_tableau[10] = {1, 2, 3};
0 1 2 3 4 5 6 7 8 9
1 2 3 0 0 0 0 0 0 0

Exemple de code

Utilisation typique avec une boucle for:

#include <stdio.h>

int main () {
    //Déclaration + initialisation
    int un_tableau[10] = {1, 2, 3};
    
    //Parcours
    for(int i = 0 ; i < 10 ; i ++ ) {
        printf("%d, ", un_tableau[i]);
    }
    printf("\n");
    return 0;
}

Chaîne de caractères

Déclaration

Une chaîne de caractères permet de représenter un texte

char chaine[10]; // DANGER: chaine non initialisée
0 1 2 3 4 5 6 7 8 9

Déclaration et initialisation

Une chaîne de caractères permet de représenter un texte

char chaine[10] = "Texte";
0 1 2 3 4 5 6 7 8 9
'T' 'e' 'x' 't' 'e' '\0' ? ? ? ?

\0 est une valeur spéciale permettant de définir la fin de la chaîne.

Initialisation après déclaration

Une chaîne de caractères permet de représenter un texte

strcpy(chaine, "Texte") ; ;
0 1 2 3 4 5 6 7 8 9
'T' 'e' 'x' 't' 'e' '\0' ? ? ? ?

\0 est une valeur spéciale permettant de définir la fin de la chaîne.

Affichage

char chaine[10] = "Texte" ;

printf("La chaîne vaut \"%s\"\n", chaine);

Longueur de la chaine

Utilisation de la fonction strlen(char*)

char chaine[10] = "Texte" ;

printf("Longueur de la chaine: %lu\n", strlen(chaine));

%lu représente ici un entier long non signé.

Exemples de code

Déclaration sous forme de tableau

#include <stdio.h>
#include <string.h>

int main () {
    //Déclaration
    char chaine[80];

    //Initialisation
    strcpy(chaine, "Ceci est une chaîne initialisée après déclaration") ;
    
    //Parcours
    for(int i = 0 ; i < strlen(chaine) ; i ++ ) {
        printf("%c, ", chaine[i]);
    }
    printf("\n");
    return 0;
}

Déclaration avec pointeur

#include <stdio.h>

int main () {
    //Déclaration + initialisation
    char *chaine = "Une chaine";
    
    //Parcours
    for(int i = 0 ; i < 10 ; i ++ ) {
        printf("%c, ", chaine[i]);
    }
    printf("\n");
    return 0;
}

Affichage

#include <stdio.h>
#include <string.h>

int main () {
    //Déclaration
    char chaine[80] = "Texte" ;

    printf("La chaîne vaut \"%s\"\n", chaine);
    printf("Longueur de la chaine: %lu\n", strlen(chaine));

    //Initialisation
    strcpy(chaine, "Ceci est une chaîne initialisée après déclaration") ;
    printf("La chaîne vaut \"%s\"\n", chaine);
    printf("Longueur de la chaine: %lu\n", strlen(chaine));
    
    return 0;
}

Affiche:

La chaîne vaut "Texte"
Longueur de la chaine: 5
La chaîne vaut "Ceci est une chaîne initialisée après déclaration"
Longueur de la chaine: 53

Création d’un tableau (ou d’une chaine) depuis une fonction

#include <stdio.h>
#include <string.h>

char* creer_chaine() {
    char fin_de_chaine = '\0' ;
    static char chaine[11] ;

    char lettre = 115;
    chaine[0] = lettre;
    chaine[1] = fin_de_chaine;

    for (int i = 0 ; i < 10 ; i ++ ) {
        chaine[i] = lettre++;
    }

    chaine[10] = fin_de_chaine;
    return chaine;

}

int main () {
    char* chaine = creer_chaine();

    printf("La chaine vaut \"%s\"\n", chaine);

    for(int i = 0 ; i < strlen(chaine) ; i ++){
        printf("Le caractère n°%d vaut: %c\n", i, chaine[i]);
    }

    return 0;
}