Vous êtes sur la page 1sur 36

Programmation en langage

Chapitre 5 : Tableaux et pointeurs

Promotion : L3 Automatique (S5)


Année universitaire : 2023/2024
Introduction

Une variable, de type int par exemple, ne peut contenir qu'une seule
valeur. Si on veut stocker en mémoire un ensemble de valeurs, il faut
utiliser des tableaux.

Un tableau est
 Une structure de données,
 permettant de sauvegarder simultanément plusieurs valeurs de même
type,
 chaque élément a un indice (ou une position).

2
Introduction

Il existe deux types de tableaux en C++

 Les tableaux statiques : Ceux dont la taille est fixe.


 Les tableaux dynamiques : Ceux dont la taille peut varier en
permanence.

3
Tableaux statiques
Déclaration d’un tableau statique
type nomTableau [Taille];

 type: définit le type des éléments que contient le tableau.


 nomTableau: le nom que l'on décide de donner au tableau.
 taille: nombre entier qui détermine le nombre de cases que le tableau
doit comporter.
 Chaque élément du tableau est accessible via son indice.
 Le premier élément est d’indice 0 et le dernier élément est d’indice
Taille-1

4
Tableaux statiques

Exemples

int tab[3]; // tableau tab de trois entiers


char mot[10], s[256]; /* Deux tableaux de, respectivement, 10 et
256 caractères */
double TAB[5]; // tableau TAB de cinq nombres réels

Le nom du tableau suit les mêmes règles qu'un nom de variable.

5
Tableaux statiques
Accès au tableau
Pour accéder à une case ou un élément du tableau on utilise la syntaxe
nomTableau[indiceCase]
Rappel : La première case possède l’indice 0 et pas 1.
Tout est en quelque sorte décalé de 1.
Exemples
int tab[3]; // tableau tab de trois entiers

Pour accéder à la deuxième case de tab et y écrire une valeur (5 par


exemple), il faudra écrire :
tab[1]=5; // On affecte la valeur 5 au 2ème élément de tab
Pour affecter au 3ème élément le résultat de l'addition des éléments 1
et 2, on écrira
tab[2]=tab[0]+tab[1]; 6
Tableaux statiques
Initialisation d’un tableau
Le tableau peut être initialisé lors de la déclaration en plaçant entre
accolades les valeurs, séparées par des virgules.
Exemple
int tab[10] = {1, 2, 6, 5, 2, 1, 9, 8, 1, 5}; // tableau tab de 10 entiers

On peut aussi omettre la taille


int tab[] = {1, 2, 6, 5, 2, 1, 9, 8, 1, 5}; // tableau tab de 10 entiers
ou aussi
int tab[] {1, 2, 6, 5, 2, 1, 9, 8, 1, 5}; // tableau tab de 10 entiers
Le nombre de valeurs entre accolades ne doit pas être supérieur au
nombre d'éléments du tableau.
Les valeurs entre accolades doivent être des constantes, l'utilisation de
variables provoquera une erreur du compilateur.
7
Tableaux statiques
Initialisation d’un tableau (suite)
Si le nombre de valeurs entre accolades est inférieur au nombre
d'éléments du tableau, les derniers éléments sont initialisés à 0.
Exemple

int TAB[5] {3,7};

Si le nombre de valeur entre accolades est nul, alors tous les éléments
du tableau s’initialisent à zéro.
Exemple
int TAB[5] {};

Ou bien
int TAB[5] {0}; 8
Tableaux statiques
Initialisation d’un tableau

Initialisation basique Initialisation sans taille


int TAB[5] {3,7,2,1,6}; int TAB[] {3,7,2,1,6};

TAB 3 7 2 1 6 TAB 3 7 2 1 6

Initialisation partielle Initialisation à zéro


int TAB[5] {3,7}; int TAB[5] {};

TAB 3 7 0 0 0 int TAB[5] {0};

TAB 0 0 0 0 0 9
Tableaux statiques
Parcours d’un tableau et manipulation d’éléments

Un élément du tableau (repéré par le nom du tableau et son indice)


peut être manipulé exactement comme une variable
on peut donc effectuer des opérations avec (ou sur) des éléments de
tableau.
Le point fort des tableaux, c'est qu'on peut les parcourir en utilisant
une boucle.
On peut ainsi effectuer une action sur chacune des cases d'un tableau,
l'une après l'autre. Par exemple :
 Afficher le contenu.
 Affecter une valeur.

10
Tableaux statiques
Parcours d’un tableau et manipulation d’éléments
Exemple

#include <iostream>
using namespace std;
int main()
{
int tableau[10]; //déclaration d’un tableau de 10 éléments entiers
for (int i=0; i<10; i++ )
{ tableau[i]=i*i;
cout<<"La case ["<<i<<"] contient la valeur
"<<tableau[i]<<endl; }
return 0;}

11
Tableaux statiques
Parcours d’un tableau et manipulation d’éléments
Résultat

12
Tableaux statiques
Parcours d’un tableau et manipulation d’éléments
On peut aussi utiliser une boucle pour initialiser les éléments d’un
tableau à un même élément.
Exemple

#include <iostream>
using namespace std;
int main()
{
int Tab[5];
int Indice;
for (Indice = 0; Indice < =4; Indice++) {
Tab[Indice] = 0; }
return 0;
}
13
Tableaux statiques
Quiz
Qu’affiche le programme suivant en sortie ?

14
Tableaux statiques

Quiz
Qu’affiche le programme suivant en sortie ?

Résultat

Réponse : Il remplit le tableau avec les valeurs 0 (0+0), 2 (1+1) et


4 (2+2) puis affiche classiquement les valeurs du tableau t, dans l’ordre
naturel.
15
Tableaux statiques

Quiz
Qu’affiche le programme suivant en sortie ?

Résultat

Réponse : Il remplit le tableau avec les valeurs 0 (0+0), 2 (1+1) et 4


(2+2) puis affiche classiquement les valeurs du tableau t, dans l’ordre
naturel.
on obtiendrait plus simplement le même résultat avec l’expression 2*i.
16
Tableaux statiques

Exercice

Écrire un programme qui lit 10 nombres entiers dans un tableau avant


d’en rechercher le plus grand et le plus petit.

17
Tableaux statiques

Solution
1- Saisie des éléments du tableaux

18
Tableaux statiques

Solution
2- On suppose le premier élément du tableau comme maximum et
comme minimum

19
Tableaux statiques
Solution
3- On parcourt le tableau à la recherche d’un éventuel nouveau
maximum et nouveau minimum

20
Tableaux statiques
Solution
4-Affichage des valeurs du maximum et du minimum

21
Tableaux statiques
Résultat

22
Tableaux statiques
Tableaux et fonctions

Au même titre que les autres types de variables, on peut passer un


tableau comme argument d'une fonction.

Exemple : Fonction qui reçoit un tableau en argument

void afficheTableau(int tableau[], int n)


{
for(int i = 0; i < n; i++)
cout << tableau[i] << endl;
}

23
Tableaux statiques
Tableaux et fonctions

Exercice 1

Écrire une fonction qui fournit en valeur de retour la somme des


éléments d’un tableau de flottants transmis, ainsi que sa dimension, en
argument.
Écrire un petit programme d’essai qui fait appel à cette fonction.

24
Tableaux statiques
Tableaux multidimensionnels
En C++ on peut créer des tableaux de
 d’entiers,
 de réels,
 de caractères,
 de tableaux : On parle alors de tableaux multidimensionnels

Un tableau multidimensionnel est un tableau qui contient des


tableaux.

25
Tableaux statiques
Tableaux multidimensionnels
Exemple :
Le tableau à deux dimensions contenant 3 tableaux contenant chacun 4
entiers.
T[0][0] T[0][1] T[0][2] T[0][3]

T[1][0] T[1][1] T[1][2] T[1][3]

T[2][0] T[2][1] T[2][2] T[2][3]

En mémoire RAM, toutes les cellules d’un tableau bidimensionnel


sont stockées côte à côte, les lignes les unes après les autres.
Tableau sera donc stocké comme suit

T[0][0] T[0][1] T[0][2] T[0][3] T[1][0] T[1][1] T[1][2] T[1][3] T[2][0] T[2][1] T[2][2] T[2][3]

26
Tableaux statiques
Tableaux multidimensionnels
En C++, on définit un tableau multidimensionnel en indiquant les
dimensions les unes après les autres entre crochets :

Type NomTableau [Taille1][Taille2]……[TailleN];

Chaque valeur entre crochets désigne le nombre d'éléments dans


chaque dimension
Exemple : Pour reproduire le tableau d’entiers bidimensionnel de 3
lignes et de 4 colonnes précédent, en C++, il faut écrire
int T [3][4];

Ou bien:
const int M=3 ;
const int N=4;
27
int T [M][N]; // T comprend au total M*N=12 entiers
Tableaux statiques
Tableaux multidimensionnels : Initialisation

Comme pour les tableaux monodimensionnels, les éléments


d’un tableau multidimensionnel peuvent être initialisés de trois
différentes façons.
1.Initialisation lors de la déclaration
2.Initialisations (affectations) individuelles
3.Initialisation à l’aide d’une boucle

28
Tableaux statiques
Tableaux multidimensionnels : Initialisation
Reprenons l’exemple d’un tableau de trois éléments (tableaux)
contenant chacun quatre entiers.
 Initialisation lors de la déclaration
On peut initialiser les éléments du tableau lors de la
déclaration comme suit :
int T [3][4] {{1,2,3,4},{5,6,7,8},{9,10,11,12}};

29
Tableaux statiques
Tableaux multidimensionnels : Initialisation
Reprenons l’exemple d’un tableau de trois éléments (tableaux)
contenant chacun quatre entiers.
 Initialisation lors de la déclaration
On peut initialiser les éléments du tableau lors de la
déclaration comme suit :
int T [3][4] {{1,1,1,1},{1,1,1,1},{1,1,1,1}};

 Initialisation individuelles

30
Tableaux statiques
Tableaux multidimensionnels : Initialisation
 Initialisation par boucle
On peut initialiser les éléments du tableau à une valeur (1par
exemple) à l’aide d’une boucle

int T [3][4]
int i,j;
for (i=0; i<3; i++){
for (j=0; j<4; j++){
T [i][j] = 1;
}
}

31
Tableaux statiques
Tableaux multidimensionnels

On crée des tableaux à 3 dimensions ou plus suivant une technique


analogue à celle utilisée pour les tableaux bidimensionnels.
Exemple : Dans la ligne du code suivante,

double a[5][10][8];
On crée un tableau à 3 dimensions contenant au total 5 ∗ 10 ∗ 8 = 400
éléments réels.

32
Tableaux statiques
Tableaux multidimensionnels : Exercice

Écrire un programme qui demande à l'utilisateur de taper le


contenu d'un tableau de réels de trois lignes et trois colonnes et
qui affiche ce tableau, la moyenne des éléments de chaque ligne,
de chaque colonne et la moyenne globale.

33
Tableaux statiques
Chaîne de caractères
En C++, une chaîne de caractères est considérée comme un tableau de
caractères dont le dernier élément est le caractère '\0‘ marquant la fin
de la chaîne.
Quand on travaille sur un tableau, on a le choix d’utiliser un indice ou
bien travailler avec un pointeur. .
Exemple : Un tableau de chaîne de caractères peut être initialisé
comme suit :
char msg[] = "Bonjour" ; // première façon

Ou bien
char msg[] = {'B', 'o', 'n', 'j', 'o', 'u', 'r', '\0'} ;// deuxième façon ;

34
Tableaux statiques
Notez bien !

Il ne faut pas confondre les éléments d’un tableau avec le tableau lui-
même.
Ainsi, t[2] = 3, tab[i]++ sont des écritures valides.
Mais t1 = t2, si t1 et t2 sont des tableaux, n’est pas possible.
Il n’existe pas en C++ de mécanisme d’affectation globale pour les
tableaux.

35
Tableaux statiques
Notez bien !

Les indices peuvent prendre la forme de n’importe quelle expression


arithmétique d’un type entier.
Par exemple:
Si n, p, k et j sont de type int, il est valide d’écrire :
t[n-3],
t[3*p-2*k+j%1] .

En C++, la dimension d’un tableau (son nombre d’éléments) ne peut


être qu’une constante, ou une expression constante. Certains
compilateurs l’acceptent néanmoins en tant qu’extension du langage.

36

Vous aimerez peut-être aussi