Vous êtes sur la page 1sur 13

18/08/2023 15:43 Cours de C++

Introduction au C++
Cours n°3
(chap 4 du poly)

Mathis Petrovich

https://mathis.petrovich.fr/cours-cpp/cours3.html 1/13
18/08/2023 15:43 Cours de C++

Les tableaux
Pourquoi en a-t-on besoin?

1 int x1, y1, u1, v1; // Balle 1


2 int x2, y2, u2, v2; // Balle 2
3 int x3, y3, u3, v3; // Balle 3
4 int x4, y4, u4, v4; // Balle 4
5
6 BougeBalle(x1, y1, u1, v1);
7 BougeBalle(x2, y2, u2, v2);
8 BougeBalle(x3, y3, u3, v3);
9 BougeBalle(x4, y4, u4, v4);

https://mathis.petrovich.fr/cours-cpp/cours3.html 2/13
18/08/2023 15:43 Cours de C++

Les tableaux
Premier exemple

1 int x[4], y[4], u[4], v[4]; // Balles


2
3 for (int i=0; i<4; i++)
4 BougeBalle(x[i], y[i], u[i], v[i]);

https://mathis.petrovich.fr/cours-cpp/cours3.html 3/13
18/08/2023 15:43 Cours de C++

Utilisations
Utiliser quand on peut "regrouper" les variables de
manière sensé
Moins fatiguant à écrire (+1000 balles..)
Plus simple à maintenir le code
Plus clair

https://mathis.petrovich.fr/cours-cpp/cours3.html 4/13
18/08/2023 15:43 Cours de C++

Syntaxe
Définition

// Déclare un tableau de type double de


taille 4
double montableau[4];

Affectation (de 0 à n-1)

// Assigne à la 1ère case de mon tableau la


valeur 8.6;
montableau[0] = 8.6;
// Assigne à la 3ème case mon tableau la
valeur 3.4
montableau[2] = 3.4;

Une des erreurs les plus fréquentes en C++

montableau[4] = 2.0;

https://mathis.petrovich.fr/cours-cpp/cours3.html 5/13
18/08/2023 15:43 Cours de C++

Cas pratique
Stocker l'addition de deux tableaux

1 double x[100], y[100], z[100];


2
3 ... // ici x[i] et y[i] prennent des
valeurs
4
5 for (int i=0; i<100; i++)
6 z[i] = x[i] + y[i]

https://mathis.petrovich.fr/cours-cpp/cours3.html 6/13
18/08/2023 15:43 Cours de C++

Taille d'un tableau


La taille d'un tableau doit être fixe et connue à la
compilation !

1 double x[10]; // OK
2
3 const int n=5;
4 int tab[n]; // OK
5
6 int n2;
7 n2 = 10;
8 int tab2[n2]; // ERREUR!

https://mathis.petrovich.fr/cours-cpp/cours3.html 7/13
18/08/2023 15:43 Cours de C++

Initialisation

int t[4] = {1, 2, 3, 4};


string s[2] = {"hip", "hop"};

Attention : pas pour une affectation

int t[2];
t = {1, 2}; // Erreur !

Il faut les traiter un par un

t[0] = 1;
t[1] = 2;

https://mathis.petrovich.fr/cours-cpp/cours3.html 8/13
18/08/2023 15:43 Cours de C++

Tableaux et fonctions

1 void affiche(int s[4]) {


2 for (int i = 0; i < 4; i++) {
3 cout << s[i] << endl;
4 }
5 }
6
7 int main() {
8 int t[4] = {1, 2, 3, 4};
9 affiche(t);
10 return 0;
11 }

https://mathis.petrovich.fr/cours-cpp/cours3.html 9/13
18/08/2023 15:43 Cours de C++

Un tableau est toujours passé par référence

1 // Rappel: c'est ceci qui marche


2 void affectation(int &x, int val) {
3 x = val;
4 }
5
6 // Une fonctione qui marche sans '&'
7 void remplit(int s[4], int val) {
8 for (int i = 0; i < 4; i++) {
9 s[i] = val;
10 }
11 }

https://mathis.petrovich.fr/cours-cpp/cours3.html 10/13
18/08/2023 15:43 Cours de C++

Une fonction ne peut pas retourner un tableau en


C++
Par conception
Pour des soucis d'efficacité
En pratique : passage par référence

1 void somme(const int x[4], const int y[4],


int z[4]) {
2 for (int i=0; i<4; i++)
3 z[i] = x[i] + y[i]
4 }

https://mathis.petrovich.fr/cours-cpp/cours3.html 11/13
18/08/2023 15:43 Cours de C++

Argument de tableau à taille variable

// Preciser en argument la taille du tableau


void remplit(int s[], int n, int val) {
for (int i = 0; i < n; i++) {
s[i] = val;
}
}

https://mathis.petrovich.fr/cours-cpp/cours3.html 12/13
18/08/2023 15:43 Cours de C++

Page du cours
http://imagine.enpc.fr/~monasse/Info/
Fiche de référence du cours
Poly : page 69

https://mathis.petrovich.fr/cours-cpp/cours3.html 13/13

Vous aimerez peut-être aussi