Vous êtes sur la page 1sur 77

Chapitre 2:Le Langage C

 Introduction au langage C
 Structure d’un programme en langage C
 Composants élémentaires du C
 Les types de base du langage C
 Les entrées-sorties conversationnelles
 Les instructions de contrôle
 Les traitements Répétitifs
 Les instructions de branchement inconditionnel : break, Continue
et goto
 Les tableaux et les pointeurs
 Les chaînes de caractères

1 Mme widad A.HISSEINE 24/11/2019


1. Introduction au langage C

Le langage C fût créé en 1970 par Denis Ritchie et a été


conçu pour l'écriture de systèmes d'exploitation et du
logiciel de base.
 Les avantages du C sont nombreux:
 La portabilité
 Une grande bibliothèque de fonctions
 Proche de la machine
 Très rapide

2 Mme widad A.HISSEINE 24/11/2019


1. Introduction au langage C:Un
Programme en C
Tout programme est toujours constitué de trois phases, à
savoir:
Lecture des données.
Traitement des données (suite d'actions élémentaires).
Affichage des résultats.

3 Mme widad A.HISSEINE 24/11/2019


1. Introduction au langage C:La
compilation
Le C est un langage compilé. La compilation se décompose en fait en 4 phases
successives :
1. Le traitement par le préprocesseur : le fichier source est analysé par
le préprocesseur qui effectue des transformations purement textuelles.
2. La compilation : traduit le fichier généré par le préprocesseur en
assembleur.
3. L'assemblage : transforme le code assembleur en un fichier binaire, c'est-
à-dire en instructions directement compréhensibles par le processeur.
4. L'édition de liens : un programme est souvent séparé en plusieurs
fichiers source, pour des raisons de clarté mais aussi parce qu'il fait
généralement appel à des librairies de fonctions standard déjà écrites. Une
fois chaque code source assemblé, il faut donc lier entre eux les différents
fichiers objets. L'édition de liens produit alors un fichier dit exécutable.

4 Mme widad A.HISSEINE 24/11/2019


2. Structure d’un programme en langage C
Un programme C est constitué de plusieurs lignes de texte et se présente de la façon suivante :

5 Mme widad A.HISSEINE 24/11/2019


2. Structure d’un programme en langage C

6 Mme widad A.HISSEINE 24/11/2019


2. Structure d’un programme en langage C

 * Règles de bases:
 • Toutes instructions ou actions se terminent par un point
virgule;
 • Un bloc d'instructions commence par {et se termine par }.
 • Le langage C est sensible à la « casse » : les mots du langage
doivent être écrits en minuscules ; les noms de variables,
constantes, fonctions doivent toujours être écrits de la même
façon : Ma_Fonction ≠ma_fonction ≠MA_FONCTION.

7 Mme widad A.HISSEINE 24/11/2019


3. Composants élémentaires du C

Le langage comprend 6 types d'unités lexicales : les mots- clés,


les identificateurs, les constantes, les chaines, les opérateurs
et les signes de ponctuation.
On peut ajouter à ces six groupes les commentaires, qui sont
enlevés par le pré processeur.

8 Mme widad A.HISSEINE 24/11/2019


3. Composants élémentaires du C:Les
mots-clés
 Le langage C est un langage à mots-clés, ce qui signifie qu'un
certain nombre de mots sont réservées pour le langage lui-
même et ne peuvent donc pas être utilisés comme
identificateurs. La liste exhaustive des mots-clés est la
suivante :

9 Mme widad A.HISSEINE 24/11/2019


3. Composants élémentaires du C:Les
identificateurs
Le but d'un identificateur est de donner un nom à une entité du
programme (variable, procédure, etc.) Les identificateurs
sont formés d'une suite de lettres, de chiffres et du signe
souligné, suite dont le premier caractère ne peut pas être un
chiffre.

Les lettres formant les identificateurs peuvent être


majuscules ou minuscules, mais doivent faire partie
de l'alphabet anglais : les lettres accentuées sont
interdites.

10 Mme widad A.HISSEINE 24/11/2019


3. Les Composants élémentaires du
C:Les commentaires
 Syntaxe :
Les commentaires débutent par/*et se terminent par*/.
Exemple :
/* Ceci est un commentaire */

Toute occurrence de/*est interprétée comme le début d'un


commentaire sauf dans une chaine littérale, ou un
commentaire (les commentaires ne peuvent donc pas être
imbriquées).

11 Mme widad A.HISSEINE 24/11/2019


3. Les Composants élémentaires du
C:Les opérateurs
 L’affectation :
En C, l'affectation est un opérateur à part entière. Elle est
symbolisée par le signe =.
 Sa syntaxe est la suivante : variable= expression;
Le terme de gauche de l'affectation peut être une variable
simple, un élément de tableau mais pas une constante. Cette
écriture a pour effet d'évaluer expression et d'affecter la
valeur obtenue à variable. De plus, cette expression possède
une valeur, qui est celle de expression.

12 Mme widad A.HISSEINE 24/11/2019


3. Les Composants élémentaires du
C:Les opérateurs
 Les opérateurs arithmétiques
Les opérateurs arithmétiques classiques sont l'opérateur unaire-
(changement de signe) ainsi que les opérateurs binaires:
♦Addition (+)
♦Soustraction (-)
♦Multiplication (*)
Division (/)
♦Reste de la division (%)
 Ces opérateurs agissent de la façon attendue sur les entiers comme
sur les flottants.
 Notons enfin qu'il n'y a pas en C d'opérateur effectuant l'élévation
à la puissance. De façon générale, il faut utiliser la fonction
pow(x,y) de la librairie math.h pour calculer xy.

13 Mme widad A.HISSEINE 24/11/2019


3. Les Composants élémentaires du
C:Les opérateurs
 Les opérateurs relationnels
Ils permettent d’effectuer des comparaisons entre deux valeurs :
♦ Strictement supérieur >
♦Supérieur ou égal >=
♦Strictement inférieur <
♦Inférieur ou égal <=
♦Egal ==
♦Différent !=

14 Mme widad A.HISSEINE 24/11/2019


3. Les Composants élémentaires du
C:Les opérateurs
Leur syntaxe est : expression1 opérateur expression2
Les deux expressions sont évaluées puis comparées.
Attention! ne pas confondre l'opérateur de test d'égalité ==
avec l'opérateur d'affection =.
 Les opérateurs logiques booléens
Permettent d’évaluer des expressions dont la valeur est soit
VRAI (1) soit FAUX (0) :
♦Le ET logique &&
♦Le OU logique ||
♦La négation logique !

15 Mme widad A.HISSEINE 24/11/2019


3. Les Composants élémentaires du
C:Les opérateurs
 Les opérateurs d'incrémentation et de
décrémentation
Les opérateurs d'incrémentation ++ et de décrémentation --
s'utilisent aussi bien en suffixe (i++) qu'en préfixe (++i).
 Ex: C = B++ ;
 L'opérateur virgule
Une expression peut être constituée d'une suite d'expressions
séparées par des virgules :
expression-1, expression-2, ... , expression-n
Cette expression est évaluée de gauche à droite. Sa valeur sera
la valeur de l'expression le plus à droite.

16 Mme widad A.HISSEINE 24/11/2019


4. Les types de base du langage C

Le C est un langage typé. Cela signifie en particulier que toute


variable, constante ou fonction est d'un type précis. Le type
d'un objet définit la façon dont il est représenté en mémoire.
 Les types de base en C se répartissent en 3 grandes catégories
:
♦Les entiers (int)
♦Les flottants (float ou double)
♦Les caractères (char)

17 Mme widad A.HISSEINE 24/11/2019


4. Les types de base du langage C:Le
type caractère
Le mot clé char désigne un objet de type caractère. Un char
peut contenir n'importe quel élément du jeu de caractères
de la machine utilisée.
Déclaration : char nom_variable
 Exemple :

18 Mme widad A.HISSEINE 24/11/2019


4. Les types de base du langage C:Le
type entier
Le mot clé désignant le type entier est int. Le type int peut être
précédé d'un attribut de précision (short ou long) et/ou
d'un attribut de représentation (unsigned).
 Déclaration :
int nom_variable
 Exemple :

19 Mme widad A.HISSEINE 24/11/2019


4. Les types de base du langage C:Le
type entier
Le C prévoit que, sur une machine donnée, on puisse trouver jusqu’à trois
tailles différentes d’entiers, désignées par les mots-clés suivants :
● short int(qu’on peut abréger en short),
● int
● long int(qu’on peut abréger en long).
Chaque taille impose naturellement ses limites.
Fréquemment, deux des trois mots-clés correspondent à une même taille
(par exemple, sur PC, short et int correspondent à 16 bits, tandis que
long
correspond à 32 bits).
À titre indicatif, avec 16 bits, on représente des entiers s’étendant de -32
768à 32 767; avec
32 bits, on peut couvrir les valeurs allant de -2 147 483 648à 2 147 483
647.

20 Mme widad A.HISSEINE 24/11/2019


4. Les types de base du langage Le
type flottant
Les types float, double et longdouble servent à représenter des
nombres en virgule flottante.
 Déclaration :
float nom_variable OU double nom_variable
 Exemple :

21 Mme widad A.HISSEINE 24/11/2019


4. Les types de base du langage Le
type flottant
 Exemple :
float a;
printf("Saisie de a :");
scanf("%f",&a);
printf("\n a vaut : %f\n",a);

22 Mme widad A.HISSEINE 24/11/2019


4. Les types de base du langage: EXEMPLE
 #include <stdio.h>
 main()
 {
 char op ;
 int n1, n2 ;
 printf ("opération souhaitée (+ ou *) ? ") ;
 scanf ("%c", &op) ;
 printf ("donnez 2 nombres entiers : ") ;
 scanf ("%d %d", &n1, &n2) ;
 if (op == '+') printf ("leur somme est : %d ", n1+n2) ;
 else printf ("leur produit est : %d ", n1*n2) ;
 }

23 Mme widad A.HISSEINE 24/11/2019


5. Les entrées-sorties conversationnelles :
Quelques fonctions de Sortie (Affichage)
En C, il existe plusieurs fonctions de sortie. Nous en citons 3 :
♦La fonction printf
♦La fonction puts
♦La fonction putchar

24 Mme widad A.HISSEINE 24/11/2019


5. Les entrées-sorties conversationnelles :
Quelques fonctions de Sortie (Affichage)
 Fonction printf
Cette fonction joue un rôle prépondérant dans l’affichage des messages. La fonction
prédéfinie printf est déclarée dans le fichier inclus stdio.h.
Ex :
#include <stdio.h>
int main () {
/* Affiche Coucou c'est moi à l'écran puis saute une ligne */
printf ("Coucou c'est moi\n");
return 0;

 printf ("i vaut %d/n", i); : %d signifie que l’on attend une valeur entière et qu’il
faut l’afficher en décimal (base 10). Le %d sera remplacé par la valeur de i.
 printf ("i+j vaut %d/n", i+j); : dans ce cas, %d est remplacé par la valeur de
l’expression i+j.

25 Mme widad A.HISSEINE 24/11/2019


5. Les entrées-sorties conversationnelles :
Quelques fonctions de Sortie (Affichage)
 Fonction printf
 Utilisation de % dans printf
À l’intérieur du premier paramètre d’un printf (appelé le format),
l’emploi de « %x » signifie qu’à l’exécution, %x doit être remplacé
par la valeur correspondante qui figure dans les paramètres
suivants, après transformation de ce paramètre dans le type puis le
format désigné par x. Nous avons à notre disposition plusieurs
formats d’affichage, comme : %d, %x…

26 Mme widad A.HISSEINE 24/11/2019


5. Les entrées-sorties conversationnelles :
Quelques fonctions de Sortie (Affichage)
 Caractères spéciaux
Certains caractères (« % » par exemple) nécessitent d’être
précédés par le caractère \ pour pouvoir être affichés ou utilisés

27 Mme widad A.HISSEINE 24/11/2019


5. Les entrées-sorties conversationnelles
: Quelques fonctions de Sortie
 Exercice d’application — Somme
écrivez le programme somme en :
– déclarant 2 variables a et b de type int (entier) ;
– assignant à ces deux variables les valeurs 36 et 54 ;
– faisant afficher le résultat de la somme de a+b (attention,
n’écrivez pas le résultat 90 dans votre programme !).

28 Mme widad A.HISSEINE 24/11/2019


5. Les entrées-sorties conversationnelles :
Quelques fonctions de Sortie (Affichage)
 Fonction puts
L’expression puts () joue le même rôle que: printf(''%s'' , chaine).
Sa syntaxe est la suivante :
int puts (char * chaine)
 Fonction putchar
L’expression putchar() joue le même rôle que: printf (''%c'' , c).
Sa syntaxe est la suivante :
int putchar (char caractere)

29 Mme widad A.HISSEINE 24/11/2019


5.Les entrées-sorties conversationnelles
:Quelques fonctions d’Entrée (Lecture)
 Fonction scanf
Pour saisir une variable, il est possible d’utiliser la fonction
scanf. La fonction scanf s’utilise de la façon suivante :
 Comme pour printf, nous reconnaissons le %d pour la saisie
d’un nombre entier. Le & devant le a signifie que nous allons
écrire dans la variable a. En fait &a signifie « l’adresse
mémoire de a ». La fonction scanf va donc écrire dans
l’emplacement mémoire de a. Si nous oublions le &, nous
écrirons chez quelqu’un d’autre, à une autre adresse.

30 Mme widad A.HISSEINE 24/11/2019


5. Les entrées-sorties conversationnelles
:Quelques fonctions d’Entrée (Lecture)
 Exemple :

31 Mme widad A.HISSEINE 24/11/2019


5. Les entrées-sorties
conversationnelles :Quelques fonctions
d’Entrée (Lecture)
 Exercice— Obtenir des résultats
-Réalisez deux petits programmes qui font :
– la soustraction de deux nombres ;
– la multiplication de deux nombres.

32 Mme widad A.HISSEINE 24/11/2019


5. Les entrées-sorties conversationnelles
:Quelques fonctions d’Entrée (Lecture)
 Fonction getchar
La fonction getchar () permet de saisir un caractère à l’écran.
Sa syntaxe est la suivante :
int getchar (void)
Elle n’admet pas de paramètres (void) et a pour valeur de
retour le caractère lu.

33 Mme widad A.HISSEINE 24/11/2019


5. Les entrées-sorties conversationnelles
:Quelques fonctions d’Entrée (Lecture)

 Fonctions getch et getche


Ces deux fonctions permettent de lire un caractère à l’écran et
retourne le caractère lu. Leur seule différence est getch ()
n’affiche pas le caractère lu, alors que getche () l’affiche. La
syntaxe est la suivante :
int getch()
int getche()

34 Mme widad A.HISSEINE 24/11/2019


5. Les entrées-sorties conversationnelles
:Quelques fonctions d’Entrée (Lecture)

35 Mme widad A.HISSEINE 24/11/2019


6. Les instructions de contrôle:
L’instruction If
 Il s’agit de l’instruction conditionnelle Si définie en algorithme ;Cette
instruction se traduit en C par :
if (condition) {
/* Bloc_instruction1 */
}
else {
/* Bloc_instruction2 */ }
 Notons que :
♦La clause else est optionnelle (s’il n’y a pas d’alternative)
♦Les { } ne sont obligatoires que quand le bloc d’instructions (aussi bien pour le
if que pour le else) contient au moins deux instructions.
♦Les if peuvent être imbriquées (les uns à l’intérieur d’autres).
♦Un else doit toujours correspondre à un if.

36 Mme widad A.HISSEINE 24/11/2019


6. Les instructions de contrôle:
L’instruction If

37 Mme widad A.HISSEINE 24/11/2019


6. Les instructions de contrôle:
L’instruction If
#include <stdio.h>
#define TAUX_TVA 18.6
main()
{
double ht, ttc, net, tauxr, remise ;
printf("donnez le prix hors taxes : ") ;
scanf ("%lf", &ht) ;
ttc = ht * ( 1. + TAUX_TVA/100.) ;
if ( ttc < 1000.) tauxr = 0 ;
else if ( ttc < 2000 ) tauxr = 1. ;
else if ( ttc < 5000 ) tauxr = 3. ;
else tauxr = 5. ;
remise = ttc * tauxr / 100. ;
net = ttc - remise ;
printf ("prix ttc %10.2lf\n", ttc) ;
printf ("remise %10.2lf\n", remise) ;
printf ("net à payer %10.2lf\n", net) ;
}
38 Mme widad A.HISSEINE 24/11/2019
6. Les instructions de contrôle:
L’instruction d’aiguillage switch
Il s’agit du choix multiple Cas vu en algorithme. La syntaxe en C est la
suivante :
switch (expression) {
case valeur1 :
Bloc_instruction1 ;
break ;

case valeurN :
Bloc_instructionN ;
break;
default :
Bloc_Defaut;
}

39 Mme widad A.HISSEINE 24/11/2019


6. Les instructions de contrôle:
L’instruction d’aiguillage switch
 Lorsque expression vaut valeur1, seul le bloc instruction
Bloc_instruction1 est exécuté.
 Lorsque expression vaut valeur2, seul le bloc instruction
Bloc_instruction2 est exécuté. Et ainsi de suite …
 Le mot clé break est une instruction d’échappement qui
permet de sortir du bloc exécuté.
 La clause default n’est pas obligatoire. Toutefois, si expression
ne correspond à aucune de valeurs valeur1, valeur2, …
valeur N alors c’est le bloc d’instructions Bloc_Defaut qui
est exécuté.

40 Mme widad A.HISSEINE 24/11/2019


6. Les instructions de contrôle:
L’instruction d’aiguillage switch

41 Mme widad A.HISSEINE 24/11/2019


6. Les instructions de contrôle:
L’instruction d’aiguillage switch

42 Mme widad A.HISSEINE 24/11/2019


6. Les instructions de contrôle:
L’instruction d’aiguillage switch

43 Mme widad A.HISSEINE 24/11/2019


Exercice
 Réalisez un petit jeu qui :
1. Initialise un nombre entre 0 et 99.
2. Tente de faire deviner ce nombre à l’utilisateur en lui
indiquant si le nombre à trouver est plus petit ou plus grand
que sa proposition.

44 Mme widad A.HISSEINE 24/11/2019


Exercice

45 Mme widad A.HISSEINE 24/11/2019


7.Traitement Répétitif
En C, il existe des structures permettant d’effectuer des
traitements répétitifs : les boucles conditionnelles. Elles sont
au nombre de 3 :
La boucle while
La boucle do - while
La boucle for

46 Mme widad A.HISSEINE 24/11/2019


7. Traitement Répétitif: La boucle for

La boucle for est équivalente à la boucle Pour vu en algorithme. Sa syntaxe est la


suivante:
for ( expression1 ; expression2 ; expression3 )
{
Bloc_instructions ;
}
 Expression 1 est évaluée une fois avant le passage de la boucle. Elle est utilisée pour
initialiser les données de la boucle.
 Expression 2 est évaluée avant chaque passage de la boucle. Elle est utilisée pour
décider si la boucle doit se poursuivre ou non.
 Expression 3 est évaluée à la fin de chaque passage de la boucle. Elle est utilisée
pour réinitialiser les données de la boucle
 Bloc_ instructions est exécuté chaque fois que expression 2 est vérifiée. Les { } ne
sont obligatoires que si Bloc _instructions contient au moins deux instructions.
47 Mme widad A.HISSEINE 24/11/2019
7. Traitement Répétitif: La boucle for

48 Mme widad A.HISSEINE 24/11/2019


7. Traitement Répétitif: La boucle for

49 Mme widad A.HISSEINE 24/11/2019


7. Traitement Répétitif: La boucle
while
La boucle while est l’équivalent de la boucle Tant que vue en
algorithme. Sa syntaxe est la suivante :
while (condition)
{ Bloc_instructions ;
}
 Condition est évaluée avant chaque passage de la boucle. Elle
est utilisée pour décider si la boucle doit se poursuivre ou
non.
 Bloc_instructions est exécuté chaque fois que condition est
vérifiée. Les { } ne sont obligatoires que si Bloc_instructions
contient au moins deux instructions.

50 Mme widad A.HISSEINE 24/11/2019


7.Traitement Répétitif: La boucle
while

51 Mme widad A.HISSEINE 24/11/2019


7.Traitement Répétitif: La boucle
while

52 Mme widad A.HISSEINE 24/11/2019


7.Traitement Répétitif: La boucle
while

53 Mme widad A.HISSEINE 24/11/2019


7. Traitement Répétitif: La boucle do
… while
La boucle do … while est l’équivalent de la boucle Repeter … tant que vue en
algorithme. Sa syntaxe est la suivante :
do
{ Bloc_instructions ;
}
while (condition) ;
 Condition est évaluée après chaque passage de la boucle (contrairement à la
boucle while). Elle est utilisée pour décider si la boucle doit se poursuivre ou
non.
 Bloc_ instructions est exécuté au moins une fois et chaque fois que condition
est vérifiée.
 Les { } ne sont obligatoires que si Bloc_ instructions contient au moins deux
instructions.
 Le « ;» après le while (condition) est obligatoire pour marquer la fin de
l’instruction.

54 Mme widad A.HISSEINE 24/11/2019


7. Traitement Répétitif: La boucle do
… while

55 Mme widad A.HISSEINE 24/11/2019


7. Traitement Répétitif: La boucle do
… while

56 Mme widad A.HISSEINE 24/11/2019


7. Traitement Répétitif: La boucle do
… while
Le carré d’un nombre
main()
{
int n ;
do
{ printf ("donnez un nombre : ") ;
scanf ("%d", &n) ;
printf ("voici son carré : %d\n", n*n) ;
}
while (n) ;
}

57 Mme widad A.HISSEINE 24/11/2019


8. Les instructions de branchement
inconditionnel : break, continue et
goto
 Ces trois instructions fournissent des possibilités diverses de
branchement inconditionnel.
 Les deux premières s’emploient principalement au sein de
boucles tandis que la dernière est d’un usage libre mais peu
répandu

58 Mme widad A.HISSEINE 24/11/2019


8. Les instructions de branchement
inconditionnel : break

Le langage C autorise l’emploi de cette instruction dans une


boucle.Elle sert à interrompre le déroulement de la boucle,
en passant à l’instruction qui suit cette boucle. Bien entendu,
cette instruction n’a d’intérêt que si son exécution est
conditionnée par un choix ;

59 Mme widad A.HISSEINE 24/11/2019


8. Les instructions de branchement
inconditionnel : break

60 Mme widad A.HISSEINE 24/11/2019


8. Les instructions de branchement
inconditionnel : continue
L’instruction continue, quant à elle, permet de passer
prématurément au tour de boucle suivant. En voici un
premier exemple avec for:

61 Mme widad A.HISSEINE 24/11/2019


8. Les instructions de branchement
inconditionnel : continue

62 Mme widad A.HISSEINE 24/11/2019


8. Les instructions de branchement
inconditionnel : continue

63 Mme widad A.HISSEINE 24/11/2019


8. Les instructions de branchement
inconditionnel : goto
Elle permet classiquement le branchement en un emplacement
quelconque du programme. Voyez cet exemple qui simule,
dans une boucle for, l’instruction break à l’aide de
l’instruction goto. (ce programme fournit les mêmes
résultats que celui présenté comme exemple de
l’instruction break).

64 Mme widad A.HISSEINE 24/11/2019


8. Les instructions de branchement
inconditionnel : goto

65 Mme widad A.HISSEINE 24/11/2019


9. Les tableaux et les pointeurs

Comme tous les langages, C permet d’utiliser des tableaux. On


nomme ainsi un ensemble d’éléments de même type désignés
par un identificateur unique ; chaque élément est repéré par
un indice précisant sa position au sein de l’ensemble.
Par ailleurs, le langage C dispose de pointeurs, c’est-à-dire de
variables destinées à contenir des adresses d’autres
objets(variables, fonctions...).

66 Mme widad A.HISSEINE 24/11/2019


9. Les tableaux et les pointeurs

o Les tableaux à un indice

67 Mme widad A.HISSEINE 24/11/2019


9. Les tableaux et les pointeurs
Les tableaux à un indice
La déclaration : int t[20]
réserve l’emplacement pour 20éléments de type int. Chaque
élément est repéré par sa position dans le tableau, nommée indice.
Conventionnellement, en langage C, la première position
porte le numéro 0. Ici, donc, nos indices vont de 0à 19. Le premier
élément du tableau sera désigné par t[0], le troisième par t[2], le
dernier par t[19].
Plus généralement, une notation telle que t[i]désigne un élément
dont la position dans le tableau est fournie par la valeur de i.
La notation &t[i] désigne l’adresse de cet élément t[i] de même que
&n désignait l’adresse de n.

68 Mme widad A.HISSEINE 24/11/2019


9. Les tableaux et les pointeurs
Quelques règles: Les éléments de tableau
Un élément de tableau est une lvalue. Il peut donc apparaître à
gauche d’un opérateur d’affectation comme dans : t[2] = 5
Il peut aussi apparaître comme opérande d’un opérateur
d’incrémentation, comme dans :
t[3]++ --t[i]

69 Mme widad A.HISSEINE 24/11/2019


9. Les tableaux et les pointeurs

 Les tableaux à plusieurs indices: déclaration


Par exemple, la déclaration :
int t[5][3] réserve un tableau de 15 (5 x 3)éléments. Un
élément quelconque de ce tableau se trouve alors repéré par
deux indices comme dans ces notations : t[3][2] t[i][j]

70 Mme widad A.HISSEINE 24/11/2019


9. Les tableaux et les pointeurs

 Les tableaux à plusieurs indices: Arrangement en mémoire des tableaux à


plusieurs indices
Les éléments d’un tableau sont rangés suivant l’ordre obtenu en faisant varier le dernier
indice en premier. Ainsi, le tableau t
déclaré précédemment verrait ses éléments ordonnés comme suit :
 t[0][0]
 t[0][1]
 t[0][2]
 t[1][0]
 t[1][1]
 t[1][2]
 ....
 t[4][0]
 t[4][1]
 t[4][2]

71 Mme widad A.HISSEINE 24/11/2019


9. Les tableaux et les pointeurs

 Initialisation de tableaux à un indice


La déclaration :
int tab[5] = { 10, 20, 5, 0, 3 } ;
place les valeurs 10, 20, 5, 0 et 3 dans chacun des cinq éléments du
tableau tab.
Il est possible de ne mentionner dans les accolades que les premières
valeurs, comme dans ces
exemples :
int tab[5] = { 10, 20, 5 } ;
Les valeurs manquantes seront, suivant la classe d’allocation du
tableau, initialisées à zéro
(statique) ou aléatoires (automatique).

72 Mme widad A.HISSEINE 24/11/2019


9. Les tableaux et les pointeurs

 Initialisation de tableaux à plusieurs indices


Voyez ces deux exemples équivalents (nous avons volontairement
choisi des valeurs consécutives pour qu’il soit plus facile de
comparer les deux formulations) :
 int tab [3] [4] = { { 1, 2, 3, 4 } , { 5, 6, 7, 8 }, { 9,10,11,12 } }
 int tab [3] [4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 } ;
 La première forme revient à considérer notre tableau comme
formé de trois tableaux de quatre éléments chacun. La seconde,
elle, exploite la manière dont les éléments sont effectivement
rangés en mémoire et elle se contente d’énumérer les valeurs du
tableau suivant cet ordre.

73 Mme widad A.HISSEINE 24/11/2019


9. Les tableaux et les pointeurs

 Initialisation de tableaux à plusieurs indices


Voyez ces deux exemples équivalents (nous avons volontairement
choisi des valeurs consécutives pour qu’il soit plus facile de
comparer les deux formulations) :
 int tab [3] [4] = { { 1, 2, 3, 4 } , { 5, 6, 7, 8 }, { 9,10,11,12 } }
 int tab [3] [4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 } ;
 La première forme revient à considérer notre tableau comme
formé de trois tableaux de quatre éléments chacun. La seconde,
elle, exploite la manière dont les éléments sont effectivement
rangés en mémoire et elle se contente d’énumérer les valeurs du
tableau suivant cet ordre.

74 Mme widad A.HISSEINE 24/11/2019


Exercice
1) Écrire un programme qui lit 10 nombres entiers dans un
tableau avant d’en rechercher le plus grand et le plus petit.

75 Mme widad A.HISSEINE 24/11/2019


Exercice

76 Mme widad A.HISSEINE 24/11/2019


9. Les tableaux et les pointeurs

Notion de pointeur – Les opérateurs * et &

77 Mme widad A.HISSEINE 24/11/2019