Vous êtes sur la page 1sur 54

Ecole Supérieure de Technologie - Kenitra

ALGORITHMIQUE ET
PROGRAMATION C
Pr. Kenza CHARAFEDDINE

Introduction
QU'EST-CE QUE LA PROGRAMMATION ?

 La programmation consiste à écrire du code


informatique pour créer un programme, afin de résoudre
un problème.
 Les programmes consistent en une série d'instructions
indiquant à un ordinateur exactement quoi faire et
comment le faire.

Qu'est-ce qu'un langage de programmation ?

• Un langage de programmation est un langage artificiel qu'un


ordinateur comprend.
• Le langage est composé d'une série d'instructions qui s'emboîtent
pour former des instructions.
• Ces instructions indiquent à un ordinateur quoi faire.
Exemples ?
Il existe de nombreux langages de programmation différents,
certains plus compliqués et complexes que d'autres. Parmi les
langues les plus populaires, citons :
• Python
• Java
• C++
• BASIC
• Scratch

En Bref

• Les langages de programmation sont conçus pour être faciles à


comprendre et à écrire pour un humain. Cependant, un ordinateur
ne peut pas exécuter directement des programmes écrits dans
ces langages.

• La plupart des langages de programmation doivent être traduits


en code machine avant que l'ordinateur puisse exécuter les
instructions
Interpreté ou compilé?

• Un langage est dit compilé quand son implémentation


exécutable requiert un compilateur.

• Un langage interprété requiert un interprète.

• Théoriquement, un langage pourrait être aussi bien


implémenté à l'aide d'un compilateur que d'un
interprète

Interpreté ou compilé? Différence

• Le compilateur traduit une bonne fois pour toute un code


source en un fichier indépendant exécutable

• L'interprète est nécessaire à chaque lancement du


programme interprété, pour traduire au fur et à mesure
le code source en code machine.
Notions d’algorithme (1)
• Algorithme
Séquence finie d’actions permettant de résoudre un
problème donné

• Algorithmique
Ensemble des méthodes permettant de définir et/ou d’étudier
des algorithmes.

Notions d’algorithme (2)

• Les premiers algorithmes sont destinés à résoudre


certains problèmes mathématiques simples, par exemple
multiplier ou diviser des nombres.
• Ils étaient appliqués manuellement, et sont antérieurs de
plusieurs siècles (voire millénaires) à l’invention des
ordinateurs.
• Il existe également des algorithmes qui n’ont rien à voir
avec les mathématiques, comme par exemple les recettes
de cuisine.
Représentation d’un algorithme (1)
Exprimé dans un langage informel, ou incomplètement
formalisé :
• texte libre (i.e. description des différentes étapes en
français)
• organigramme (diagramme représentant les étapes),
pseudo-code (version simplifiée d’un langage informatique)
ou autres.
=> un algorithme n’est pas traité directement par un
ordinateur : il doit être formalisé, i.e. transformé en un
programme.

• Par opposition, une démonstration mathématique ou un


programme informatique sont exprimés en utilisant des
langages formels .
Représentation d’un algorithme- Organigrammes

• Les étapes sont représentées par des nœuds et les transitions par
des liens orientés entre ces nœuds ;
• Les étapes de test sont représentées par des losanges ;
• Les étapes de début et de fin sont représentées par des rectangles
aux coins arrondis ;
• Les étapes de traitement sont représentées par des rectangles ;
• Les appels à des fonctions ou procédures (aussi appelées sous-
routines) sont représentés par des rectangles dont les côtés sont
dédoublés
• Les étapes d’entrée/sortie sont représentées par des
parallélogrammes.

• Organigramme Inconvénients?

L’inconvénient de cette représentation est qu’il est difficile


de décrire des algorithmes complexes tout en gardant un
diagramme lisible.
exemple : le même algorithme représenté sous forme
d’organigramme puis de pseudo-code

• Version pseudo-code :
• Exemple 1: Creuser un trou, reboucher un trou et placer un
arbre dans un trou sont des opérations élémentaires (des
actions simples) que toute personne (machine dans le cas
de l'informatique) est censée savoir exécuter.
• Néanmoins, si un jardinier (programmeur) veut faire planter
un arbre par une personne qui ne sait pas le faire, il doit lui
fournir "un descriptif" (un algorithme) qui lui indique les
opérations à faire ainsi que leur ordre d'exécution
(séquencement).

• Exemple 2: Pour planter et arroser un ensemble


d'arbres, on peut procéder de la manière suivante:
planter l'ensemble d'arbres et les arroser tous à la fin.
Diviser pour régner
• Plus Problème compliqué => Moins l’algorithme permettant
de le résoudre est évident à définir

• Pour cela, on utilise en général l’approche appelée diviser


pour régner.

• Cette méthode hiérarchique consiste à diviser notre


problème complexe en plusieurs sous-problèmes plus
simples à résoudre.
• L’approche s’applique récursivement aux sous-problèmes
s’ils sont eux-mêmes trop complexes
=>on les divise eux-mêmes en sous problèmes plus simples
si nécessaire.
On aboutit finalement à des sous-problèmes élémentaires,
c'est-à-dire qu’on ne peut plus les réduire à des sous-
problèmes plus simples.
Exemple : la table traçante
• Énoncé du problème :
– Une table traçante est un dispositif mécanique constitué d’une table de
dessin, d’un stylo et d’un moteur capable de déplacer le stylo.
– La table traçante possède un compteur.
– Elle est capable d’effectuer les actions suivantes :
• lever/baisser : lever le stylo, pour qu’il ne se trouve pas en contact avec la feuille
de papier posée sur la table de dessin, ou au contraire le baisser pour pouvoir
dessiner sur la feuille.
• centrer : positionner le stylo au centre de la table de dessin.
• haut/bas/gauche/droite : déplacer le stylo d’1 cm dans la direction indiquée.
• initialiser/incrémenter : initialiser/incrémenter le compteur.
Le problème est de dessiner une croix centrée sur la feuille, et dont
chaque branche mesure 10 cm.

• il est important de bien comprendre qu’un code source


et l’algorithme qu’il implémente sont deux choses bien
distinctes
• Le même algorithme peut être implémenté différemment,
en fonction de :
– La personne qui écrit le programme ;
– Le langage de programmation employé ;
– La machine et/ou le système d’exploitation utilisés ; -
– Le niveau de précision de l’algorithme ; etc.
Algorithme – Opérations de Base
• L'AFFECTATION

• symbole
• l'opération qui évalue une expression (constante ou une
expression arithmétique ou logique) et attribue la valeur
obtenue à une variable
• L'ECRITURE

• Elle communique une valeur donnée ou un résultat d'une


expression à l'organe de sortie.

• INSTRUCTIONS DE CONTROLE

Instructions de contrôle

Instructions Instructions
Sélectives Itératives
• INSTRUCTIONS SELECTIVES
• Instruction « Si »

• Elle indique le traitement à faire selon qu’une condition (expression


logique) donnée est satisfaite ou non. Il est possible d’omettre
début et fin si le bloc d’instructions à exécuter est constitué d’une
seule instruction.

Exemple
Calculer la taxe sur le chiffre d'affaire (CA) sachant qu'elle
est de :
• 10% si le CA<5000DH
• 20% si le CA >=5000DH
• Remarques:
• 1- Une instruction de contrôle peut se réduire à :

2- On peut avoir plusieurs si imbriqués comme:

Exemple:
Vérifier si un agent a droit de bénéficier du crédit de
logement ou non selon ses années d’ancienneté et sa
note d’appréciation. Peuvent bénéficier du crédit les
agents ayant une ancienneté supérieur à 5ans avec une
note supérieure ou égal à 13. Pour les employés ayant
une ancienneté de 4 et 3 ans, ils peuvent bénéficier du
crédit si leurs notes respectives sont supérieures ou
egales à 16 et 18.
• Instruction Selon

• Elle indique le traitement à faire selon la valeur d'une


variable.

• Exemple: Vérifier et Afficher si un caractère saisi est une


voyelle ou consonne
• INSTRUCTIONS ITERATIVES
• Instruction Pour

• Elle permet de répéter un traitement un nombre de fois


précis et connu en utilisant un compteur (variable à
incrémenter d'une itération à l'autre).

Exemple : Afficher la somme des entiers compris entre 0


et une valeur n saisie au clavier (n≥0).
• Instruction Tant que

Elle permet de répéter un traitement tant qu'une condition


est satisfaite.

EXERCICE 1 :
Ecrire un algorithme pour résoudre chacun des problèmes
suivants :
1. Calcul de la somme des N premiers nombres entiers.
2. Calcul du quotient et reste de la division de deux entiers A et
B sans utiliser l’opération de division.
3. Le calcul du produit de deux entiers en utilisant uniquement
l'opération d'addition '+’.
4. Détermination si A est divisible par B. Avec A et B des entiers
positifs.
5. Déterminer si un nombre entier X est premier ou non.
Exemple : Afficher la somme des entiers compris entre 0
et une valeur n saisie au clavier (n≥0).

Instruction Faire Tant que

Elle permet de répéter un traitement tant qu'une condition


est satisfaite.
Exemple : Afficher la somme des entiers compris entre 0
et une valeur n saisie au clavier (n≥0).

Programmation
Programme et compilation
• Programme : suite d’instructions qui a pour but d’être exécutées
par un ordinateur.
• Instruction : action que l’ordinateur connait et peut réaliser.
• Un langage de programmation (y compris le C) est caractérisé par
son jeu d’instructions :
– Jeu d’instructions : ensemble des instructions autorisées dans un langage
de programmation.

• Un programme est stocké dans un fichier (un ensemble de


données stockées sur un support persistant).

2 types de fichiers

Fichier source Fichier exécutable


(code source) (code binaire)
• Code source : programme exprimé dans un langage de
programmation compréhensible par un être humain, et ne
pouvant pas être exécuté directement par l’ordinateur.
• Code binaire : programme exprimé en langage machine,
pouvant être directement exécuté par l’ordinateur.

• Compilation : action de transformer un code source en code


binaire, de manière à obtenir un fichier exécutable à partir d’un
fichier source.

• Le code binaire est obtenu à partir du code source, en réalisant


un traitement appelé compilation. Ce traitement est réalisé par
un programme spécial appelé le compilateur.
• Compilation dépend du langage de programmation

Un programme: plusieurs sources de fichiers dédiés

Compilation

• Un seul fichier exécutable


• La première étape (en rouge) consiste à précompiler les
fichiers source
Intervient avant la compilation
Actions possibles :
– Inclusion d’autres fichiers dans le fichier à compiler.
– Définition des constantes symboliques et des macros.
– Compilation conditionnelle de code de programme
– Exécution conditionnelle des directives du précompilateur
Directives de précompilation :
– elles commencent par un #,
– elles ne sont pas des instructions C++,
– elles sont traitées avant la compilation.

• La deuxième étape (en bleu) est la compilation proprement


dite.
• La troisième étape (en orange) est appelée l’assemblage, et
consiste à transformer chaque fichier assembleur en un
fichier binaire.
• La quatrième et dernière étape (en vert) est l’édition des
liens. Elle consiste à rassembler dans un seul fichier binaire
tout le code binaire nécessaire à l’exécution du programme.
• Remarque : par abus de langage, on appelle compilation
l’ensemble de la procédure permettant d’obtenir un fichier
binaire à partir d’un ou plusieurs fichiers sources, alors qu’en
réalité, la compilation proprement dite n’est qu’une étape de
cette procédure (ici, la deuxième étape).

Erreurs de compilation et d’exécution


Deux types de problèmes

Erreur de compilation Erreur d’exécution


problème détecté lors erreur se produisant quand le
du processus de programme n’a pas le
comportement attendu lors de
compilation
son exécution

Erreur fatale Erreur non


fatale
Language C - historique
• développé à partir de 1972 dans les laboratoires Bell,
dans le but d’écrire le système d’exploitation Unix
• L’un des objectifs était de définir un langage portable.

• objectif non atteint car différentes versions du C sont


apparues, et ne sont pas complètement compatibles entre
elles.
• Les principales sont les suivantes :
– La version originale s’est stabilisée en 1978 et est appelée
Kernighan & Ritchie ou C K&R ;
– L’ANSI9 a défini sa propre version en 1989, basée sur le C K&R et
appelée C89 ou C ANSI ;
– L’ISO10 a défini sa version basée sur le C ANSI en 1999, qui est
appelée C99
• On qualifie parfois le C de langage bas niveau car il est
relativement proche de l’assembleur. Toutefois, il est de
plus haut niveau que ce dernier.
• parmi les trois premiers langages les plus utilisés
• Sa syntaxe a influencé plusieurs langages haut niveau:
C++, Java, C#, JavaScript ou PHP

Pourquoi le language C?
Notion de fonction (1)

• Un programme = une série d’instructions

• En language C, chaque instruction se finit par ‘‘;’’

Notion de fonction
• Pour une meilleure lisibilité du code source et sa gestion
Il est divisé en plusieurs parties relativement indépendantes
Grâce à la notion de BLOC
Bloc d’instructions : sous-séquence d’instructions, délimitée par
des accolades (i.e. { et }).
Exemple: les instructions 2, 3 et 4 suivantes sont contenues dans un bloc distinct
Notion de fonction
• Il est aussi possible de définir un bloc à l’intérieur d’un autre
bloc, et de répéter cela récursivement. On peut alors parler de
sous-bloc
exemple : les instructions 3 et 4 sont maintenant dans un sous-
bloc

Notion de fonction
• Le bloc peut avoir à être utilisé à plusieurs reprise
• On peut lui donner un nom (afin de le désigner
facilement)
=> Notion de fonction
Fonction : bloc d’instructions identifié par
un nom, des entrées et des sorties.

les informations qu’elle reçoit pour effectuer son traitement


(entrées)
celles qu’elle renvoie à la fin de ce traitement (sorties).
Notion de fonction
Fonction

Corps de fonction : En-tête de fonction : type de


bloc d’instructions retour, identificateur (nom) et
paramètres de la fonction.
implémentant le
traitement réalisé par la
fonction.

• Exemple : une fonction appelée ma_fonction, dont le type de


retour est type_r et qui possède trois paramètres p1 à p3 de
types respectifs type_p1 à type_p3. Les couleurs sont destinées
à faciliter l’identification de ces différentes composantes.
Fonctions principales et secondaires
• Un programme en langage C prend essentiellement la
forme d’une séquence de fonctions … (pas que!)
• Le programme doit obligatoirement contenir une fonction
principale, dont le nom est obligatoirement ‘‘main’’.

• un programme ne peut pas contenir plusieurs fonctions


portant le même nom
Commentaires et lisibilité (1)
• A l’image de la majorité des langages de programmation, il est
possible de définir des commentaires en langage C.
Commentaire : un texte exprimé en langage naturel (par exemple en français ou
en anglais) et dont le but est d’expliquer le fonctionnement du programme à un
programmeur.

• En C, un commentaire est délimité par /* et */, et peut occuper


plusieurs lignes. On peut aussi faire des commentaires d’une
seule ligne en insérant // en début de ligne.

Commentaires et lisibilité (2)


• exemples :
– Commentaire de plusieurs lignes

– Commentaire d’une seule ligne (seulement à partir de la


version C99) :

De manière générale, il est très important de mettre des commentaires lorsqu’on


programme, car cela améliore la lisibilité du code.
Commentaires et lisibilité (3)
• Indentation : décalage introduit en début de ligne pour
aligner horizontalement certaines lignes du code source.
• Différentes conventions existent en ce qui concerne
l’indentation.
De manière générale:
• Toute accolade fermante } doit être alignée avec
l’accolade ouvrante { correspondante ;
• Toute instruction doit être alignée avec la première
instruction appartenant au même bloc.

• Exemple

• Lisibilité du code source : propriété d’un code source à être


facilement compris par une personne qui ne l’a pas forcément
écrit.
Structure of C Language program

Identificateurs et mots-clés
1 ) Comment line
2) Preprocessor directive
3 ) Global variable declaration
4) main function( )
{
Local variables;
Statements;
}
User defined function } }
Types et opérateurs de base(1)
Types entiers - Integer Types
• Les types "integer" en C forment une famille de types
entiers.
• Ils se comportent tous comme des entiers et peuvent être
mélangés et utilisés de manière similaire.
• Les différences sont dues au nombre différent de bits
("largeurs") utilisés pour implémenter chaque type - les
types plus larges peuvent stocker une plus grande plage
de valeurs.

Types et opérateurs de base(2)


Types entiers - Integer Types

• short – Small Integer (Petit entier) -- au moins 16 bits qui


fournit une plage signée de -32768..32767.
• La taille typique est de 16 bits.
• Pas tellement utilisé.
There are special case char constants, such as
• '\t' for tab, for characters which are not convenient to
type on a keyboard.
• 'A' uppercase 'A' character
• '\n' newline character
• '\t' tab character
• '\0' the "null" character -- integer value 0 (different from
the char digit '0')

Types et opérateurs de base(3)


Types entiers - Integer Types

int « Default Integer » (Entier par défaut)


• au moins 16 bits, 32 bits étant typiques.
• Défini comme étant la taille "la plus confortable" pour
l'ordinateur.
• Si vous ne vous souciez pas vraiment de la plage d'une
variable entière, déclarez-la int
Types et opérateurs de base(4)
Types entiers - Integer Types

Long - Large integer (Grand entier)


• au moins 32 bits
• La taille typique est de 32 bits, ce qui donne une plage
signée d'environ -2 milliards ..+2 milliards
• Certains compilateurs prennent en charge "long long"
pour les entiers 64 bits.

Types et opérateurs de base(5)


Types entiers - Integer Types

• char Caractère ASCII -- au moins 8 bits.


• Prononcez « car".
• En pratique, char est fondamentalement toujours un octet
de 8 bits, ce qui est suffisant pour stocker un seul caractère
ASCII.
• 8 bits fournit une plage signée de -128..127 ou une plage
non signée de 0..255.
• char doit également être la "plus petite unité adressable"
pour la machine -- chaque octet en mémoire a sa propre
adresse.
Variables (1)
• Une déclaration de variable réserve et nomme une zone
en mémoire au moment de l'exécution pour contenir une
valeur d'un type particulier.
• Syntaxiquement, C place le type en premier suivi du
nom de la variable.
• Ci-dessous la déclaration d’une variable int nommée
"num" et la 2ème ligne stocke la valeur 42 dans num
Variables (2)
• Note: Les variables commencent par des valeurs
aléatoires, et c'est au programme de les définir.
• Les noms en C sont sensibles aux majuscules et
minuscules, donc "x" et "X" font référence à des variables
différentes.
• Les noms peuvent contenir des chiffres et des traits de
soulignement (_), mais ne peuvent pas commencer par un
chiffre.
• Plusieurs variables peuvent être déclarées après le type en
les séparant par des virgules: float x, y, z, X;

INITIALISATION DE VARIABLES (1)


• Une valeur initiale peut être affectée à une variable dès
la déclaration sous forme :
INITIALISATION DE VARIABLES (1)
• Exemple

INITIALISATION DE VARIABLES (3)


• Remarque : Des caractères spéciaux sont représentés à
l'aide du métacaractère \.
Exemples:
INITIALISATION DE VARIABLES (4)

L’AFFECTATION (ASSIGNATION)
• L'affectation est l'opération qui attribue à une variable, au
moyen de l'opérateur =, une valeur constante ou résultat
d'une expression.
L’AFFECTATION (ASSIGNATION) -
Exemple

L’AFFECTATION (ASSIGNATION)
• Remarque : C permet de faire des assignations entre des variables
de types différents. Des conversions de types sont alors
automatiquement réalisées.
LES ENTREES/SORTIES -L’AFFICHAGE
• L’instruction printf permet d'obtenir un affichage formaté
à l'écran.

LES ENTREES/SORTIES -L’AFFICHAGE


• Exemples :
LES ENTREES/SORTIES -L’AFFICHAGE
• Exemple

LA LECTURE DE DONNEES (1)


• L’instruction scanf effectue la lecture des variables
LA LECTURE DE DONNEES (2)
• Exemples :

Opérateurs arithmétiques (1)


• C inclut les opérateurs arithmétiques binaires et unaires
habituels.
• + Addition
• - Soustraction
• / Division
• * Multiplication
• % Reste (mod)
Opérateurs arithmétiques (2)
– La division entre entier donne un coefficient entier
Ex: int n ;
n = 7/2 ;
le résultat est entier: 3
– Pour avoir 3.5, faire la conversion
float x ;
x = (float) 7/2 ;
la division est une division réelle.

Liste de comparaisons
• <,
• >,
• <= pour ≤
• >= pour ≥
• = = pour l’égalité
• ! pour la négation
• ! = pour la différence
Expressions logiques
• ou : II
• et : &&
• non: ! (placé avant l’expression à nier)
– Exemple:
int a ;
if ((a<3) && (a>1))
• Toute expression possède une valeur.
• Toute valeur non nulle est logiquement assimilée à « vrai »
• La valeur nulle (0) est assimilée a « faux »
– Exemple: l’affectation n=3, possède la valeur 3

Opération unaire

• En mathématiques et en programmation informatique, une


opération unaire, aussi appelée une fonction monadique, est
une opération à une opérande ou une fonction a un seul
argument.
• Dans la famille des langages C, voici des exemples
d’opérations suivantes sont unaires :
– Incrément : ++x, x++, Décrément : −−x, x−−
– Adresse ou référence : &x, Opposé : −x, Complément à un : ~x
– Négation : !x, Sizeof : sizeof x, sizeof(type), Conversion de type :
(type) cible
Opération unaire: l’incrémentation
• Soient i=3 et j=5,

Types de données
• notion de type de données est fondamentale en
programmation
• liée à la façon dont l’information est représentée dans la
mémoire d’un ordinateur
Structures de contrôle
• Si déclaration: If
L'<expression> peut être n'importe quelle expression valide.
Les parenthèses autour de l'expression sont obligatoires,
même s'il ne s'agit que d'une seule variable.

Boucle « While »
La boucle while évalue l'expression de test avant chaque
boucle, elle peut donc s'exécuter zéro fois si la condition
est initialement fausse. Il nécessite la parenthèse comme
le si.
Boucle « Do-While »
• Comme la boucle while, mais avec la condition de test
au bas de la boucle. Le corps de la boucle s'exécutera
toujours au moins une fois. Le do-while est un domaine
impopulaire de la langue, presque tout le monde essaie
d'utiliser la boucle while ‘normale’ si possible.
do {
<statement>
} while (<expression>)

Boucle « for » (1)


• La boucle for en C est la construction de bouclage la
plus générale. L'en-tête de la boucle contient trois
parties : une initialisation, une condition de continuation
et une action.
for (<initialization>; <continuation>; <action>) {
<statement>
}
Boucle « for » (2)
• L'initialisation est exécutée une fois avant d'entrer dans
le corps de la boucle.
• La boucle continue de s'exécuter tant que la condition
de continuation reste vraie (comme un moment). Après
chaque exécution de la boucle, l'action est exécutée.
• L'exemple suivant s'exécute 10 fois en comptant 0..9.
De nombreuses boucles ressemblent beaucoup à ce qui
suit...
for (i = 0; i < 10; i++) {
<statement>
}

« Break » (1)
• L'instruction break déplacera le contrôle en dehors d'une
boucle ou d'une instruction switch.
• Rq: Il est préférable d'utiliser un « while »en ayant un
seul essai si possible.
• Parfois, il faut utiliser « break » car le test ne peut se
produire qu'au milieu des instructions dans le corps de la
boucle.
« Break » (2)

L'opérateur conditionnel
• L’opérateur conditionnel ou opérateur ternaire est un
opérateur particulier dont le résultat dépend de la
réalisation d’une condition. Son deuxième nom lui vient
du fait qu’il est le seul opérateur du langage C à requérir
trois opérandes : une condition et deux expressions.

(condition) ? expression si vrai : expression si faux


Type de données complexes
• Les variables, telles que nous les avons vues, ne permettent de
stocker qu'une seule donnée à la fois.
• Le langage C propose deux types de structures:
– les tableaux: permettant de stocker plusieurs données de
même type.
– les structures: pouvant contenir des données hétérogènes.

Tableaux statiques (1)


• Un tableau est une collection de variables de même type
rangées consécutivement (pour nous) dans l’espace mémoire.

• Pour réserver la place mémoire nécessaire


pour un tableau (statique) de 10 caractères:

i
0 9
int tableau [10] ;
accès directe à la
type de case nombre de cases souhaitées place mémoire
Tableaux statiques (2)
• Un tableau statique est une entité constante: il ne peut pas
apparaître (seul) à gauche d’un signe d’affectation.

– Ex: int tableau 1[10] ;


int tableau 2 [10] ;
On ne peut pas écrire: tableau 1 = tableau 2, car tableau est une entité constante.

• Les cases d’un tableau de 10 cases sont numérotés de 0 à 9.

• On accède à la case d’indice i (i≥0) par tableau [i].

Tableaux statiques multidimensionnels


• Un tableau (de réels) à 2 dimensions est en fait un tableau à 1
dimension dont les cases contient des tableaux à 1 dimension.

– Ex: float matrice [10] [10] ; 0 9

• Accéder à la case ligne i colonne j:

matrice [ i ] [ j ] ; // donne élément de ligne i et colonne j

Vous aimerez peut-être aussi