Bonjour et bienvenue.
Dans cette conférence, je veux parler sur les tableaux multidimensionnels.
Jusqu'à ce point, si vous pensé à un tableau, vous venez de dire qu'un
tableau est une variable qui peut stocker de nombreux types de données.
Cela peut devenir plus compliqué que cela.
Vous pouvez en avoir beaucoup dimensions d'un tableau.
Donc, si vous avez juste un tableau linéaire c'est ce dont nous avons discuté jusqu'à présent, c'est ce
qu'on appelle une dimension unique.
Et nous savons que c'est un single dimension car il
n'a qu'un seul support avec une seule taille.
Le langage c autorise les tableaux de n'importe quelle dimension pour être condamné à une amende.
C'est donc une sorte de pensée tableau imbriqué, un tableau d'un tableau.
Donc, des tableaux à deux dimensions sont les plus courants.
Mais tu peux réellement faire tableaux en trois dimensions, tableaux
en quatre dimensions, tableaux à cinq dimensions, mais il n'y a pas beaucoup
de cas d'utilisation pour 3 4 et 5.
Vraiment, vous allez soit avoir un tableau unidimensionnel que
vous utilisez dans votre programme ou tableau bidimensionnel.
les tableaux bidimensionnels sont courants car ils représentent essentiellement des
lignes et des colonnes dans une feuille de calcul, c'est ainsi que vous pouvez
en quelque sorte le visualiser ou une matrice ou un tableau.
C'est un tableau à deux dimensions, vous avez des lignes et des colonnes.
Ainsi, vous pouvez stocker plus de données qu'un tableau
à une seule dimension en spécifiant les tailles.
Mais c'est très applicable parce que cela ressemble à une matrice.
Et il y a des applications qui vous voudrez peut-être écrire qui a ce concept
de matrice, en particulier une application mathématique serait ici
la plus pertinente.
Mais vous pouvez utiliser pour faire en deux dimensions tableaux pour de nombreuses choses différentes.
Un exemple est une matrice.
Mais encore une fois, visualisez-le sous forme de tableau.
Les tableaux bidimensionnels sont déclaré de la même
manière qu'un tableau unidimensionnel.
La seule différence c'est toi maintenant avoir un autre ensemble de parenthèses.
Donc, dans cet exemple, nous déclarons un tableau nommé matrice de type
int qui a 4 lignes et 5 colonnes.
Cela signifie que vous pouvez stocker 20 éléments à l'intérieur de ce tableau à deux dimensions.
Donc, vous devriez savoir comment chacun la dimension est spécifiée
avec sa propre paire de crochets.
c'est ainsi que vous pouvez facilement repérer combien de dimensions un tableau a.
Si vous aviez 3 parenthèses, cela serait un tableau en trois dimensions.
Si vous en avez 4, ce serait quatre.
Celui-ci en a 2 donc c'est 2.
Et jusqu'au plus tôt les conférences n'en avaient qu'une, donc nous savions que
c'était une seule dimension.
Alors regardez les crochets, faites attention à cela.
Encore 4 lignes, 5 colonnes, total de 20 éléments.
Pour initialiser un tableau à deux dimensions, il va être initialisé de la
même manière qu'un unidimensionnel array, même type de syntaxe, vous allez juste
en ajouter plus.
Alors quand vous listez les éléments pour l'initialisation, les valeurs
seront répertoriées par ligne.
Et la différence ici est que lorsque
vous mettez les valeurs initiales pour chaque ligne, vous allez faire entre accolades, accolades et
ensuite vous allez enfermer toutes les lignes entre accolades.
Alors ça va regarder quelque chose comme ça.
Si nous créons un tableau de nombres, qui est de
2 dimensions, 3 lignes et 4 colonnes et nous voulons initialisez-le,
il vous suffit de mettre entre accolades le tableau entier, puis ajoutez des accolades imbriquées
internes pour chaque ligne.
Donc ici nous initialisons les valeurs 0 sub-0 à 10, 0 sub-1 à 20, 0 sub-2 à 30
et 0 sub-3 à 40.
Et c'est comme ça que vous accédez tableaux multidimensionnels aussi.
Vous y accédez avec la ligne dans la colonne.
Tu dois juste te souvenir qu'il est basé sur 0.
Donc la main supérieure gauche qui serait la ligne 1, la colonne 1 serait 00 et serait
égale à 10.
La ligne 1 colonne 2 serait égal à 20, mais vous
y accéderiez en tant que numéros 0 sous-1.
Parce que le premier tableau contient 3 lignes auxquelles vous accédez c'est le numéro que vous spécifiez pour le numéro de ligne
et alors le numéro de colonne est la prochaine
spécification pour accéder au tableau.
Mais l'individualisation est jolie simple, séparez simplement les
choses par des commentaires entre crochets.
Et en y accédant, vous accéderiez tout comme vous accédez à un tableau normal sauf
que vous accédez maintenant ce concept d'une ligne dans une colonne.
Donc, l'utilisation des paires internes de les accolades sont en fait facultatives, mais vous devez
les utiliser pour plus de lisibilité.
Si vous n'avez pas fourni ces accolades, vous pourriez
en fait simplement fournir 10 20 30 40 15 25 35, tout simplement consécutivement, mais il est très difficile de visualiser
ce que vous initialisez.
En tant que programmeur, la lisibilité est très, très important car cela augmente la qualité
du code il est plus facile de maintenir le code.
Quand je regarde ça ici, Je peux facilement identifier, en
particulier avec les commentaires, ce que je suis initialisation vers, quelles valeurs et
quelles lignes vont s'initialiser.
Si j'avais ça comme une seule ligne juste des nombres consécutifs, je
me perdrais très vite.
Donc, bien que les crochets intérieurs ne sont pas nécessaires, utilisez-les.
Comme avec un tableau unidimensionnel, il n'est pas nécessaire que le
tableau entier soit initialisé.
Vous pouvez simplement initialiser certaines zones.
Donc, dans cet exemple, nous sommes création d'un tableau à deux dimensions
avec 4 lignes et 5 colonnes.
Nous initialisons uniquement le 3 premiers éléments de chaque ligne.
Donc, ligne 1 colonne 1 est 10, ligne 1 colonne 2 est 5 et ligne 1 colonne 3 est négatif 3, et
de même pour la deuxième colonne
et ainsi de suite 900 32 31 008.
Pour ceux que nous n'avons pas mis les 4e et 5e valeurs de
chaque ligne, celles-ci vont en fait pour être mis à 0 automatiquement parce que nous les avons
laissés de côté.
Et dans ce cas, vous en fait doivent fournir les
accolades, celles de l'intérieur.
Parce qu'ici si nous le faisions il,
l'initialisation serait tout foutu.
Parce que si tu n'avais pas les accolades, il
le ferait simplement consécutivement.
Alors ce qui se passerait
est ceci initialiserait en fait les 12 premiers éléments.
Donc, il initialiserait tous les éléments de la première ligne, tous les éléments de la
deuxième ligne, puis les 2 premiers éléments de la troisième rangée puis
le reste des éléments dans la troisième rangée, le reste des éléments
de la quatrième rangée serait 0.
Encore une fois, il s'agit d'un tableau de 4 lignes et 5 colonnes.
Cela les ferait simplement consécutivement.
Alors n'oubliez pas les accolades si vous êtes si
vous souhaitez uniquement spécifier certains éléments d'initialisation.
Vous pouvez aussi faire initialiseurs désignés.
N'oubliez pas que c'est le concept C99.
C'est facultatif dans C11 où vous pouvez
spécifier des index spécifiques à initialiser.
Vous pouvez donc utiliser des indices dans le liste d'initialisation, comme dans un
tableau unidimensionnel si vous le souhaitez pour faire un initialiseur désigné, vous feriez juste
quelque chose comme ceci.
Donc ici nous déclarons notre matrice tableau de 4 lignes et 3 colonnes, mais nous spécifions en fait que
0 0 est égal à 1, 1 1 est égal à 5 et 2 2
est égal à 9.
Donc, quand nous répétons 2 2, qu'est-ce nous disons que c'est la ligne 2 qui est vraiment la
ligne 3 parce que nous commençons à 0, colonne 2 qui est vraiment la colonne 3.
Encore une fois, visualisez ceci comme un tableau ou une feuille de calcul.
Et l'accès aux éléments commence dans le coin supérieur gauche.
Mais si vous comprenez que le 4 représente les lignes et le
3 représente les colonnes, c'est assez intuitif après ça.
Donc, ce que cela fait, c'est initialiser les 3 éléments indiqués de
la matrice aux valeurs spécifiées.
Mais qu'est-ce que tu devrais remarquez ici est la syntaxe.
Toutes les valeurs non spécifiées ici vont être 0 par défaut.
Donc ça va seulement pour initialiser 3 valeurs.
Chaque ensemble de valeurs que vous do initialize vont être
les éléments dans une ligne entre accolades.
Et puis toute l'initialisation passe entre une autre paire d'accolades.
Donc vous voyez que nous avons le accolades sur les externes tout
comme l'initialisation normale et puis nous avons les crochets
pour accéder au tableau à l'intérieur.
Et puis nous avons des virgules pour séparer chaque ligne et chaque ensemble de valeurs
de ligne est séparé du prochain ensemble par une virgule.
Donc les valeurs sont séparées et aussi les indices de ligne.
Maintenant juste parce que nous avons dit ça nous avons 2 dimensions
et nous en avons parlé; vous pouvez ont en fait de nombreuses autres dimensions.
Tout ce dont j'ai parlé 2 dimensions s'applique également aux
3 dimensions 4 dimensions 5 dimensions.
Donc, si vous vouliez déclarer un
Tableau en 3 dimensions, vous le feriez avec 3 crochets.
Voici donc un tableau nommé box de type int de 10 20 et 30.
Vous voudrez peut-être utiliser un tableau
en trois dimensions peut-être si vous stockiez des valeurs xyz d'une certaine sorte, vous n'aurez probablement pas besoin de faire cela.
Tableaux tridimensionnels et up ne sont vraiment pas courants.
En résumé, vous pouvez visualiser un tableau unidimensionnel sous forme
de ligne de données, ligne unique, bidimensionnel tableau sous forme de tableau une
matrice ou une feuille de calcul, en trois dimensions array, vous pouvez visualiser comme une pile de
tables de données, donc une pile de tables.
Si vous aviez besoin d'autant de données, il va être très
difficile d'y accéder et probablement déroutant.
Et quiconque maintient ça programme pour un tableau tridimensionnel ou
supérieur, il va probablement se perdre en essayant de comprendre
ce qui se passe, mais tu peux le faire encore une fois et si jamais vous avez
besoin d'itérer à travers l'un de ces un, deux, des tableaux tridimensionnels, vous allez
probablement utiliser une boucle.
Et plus vous avez de dimensions dans la boucle, plus vous aurez
de boucles imbriquées.
Donc, si vous souhaitez traiter un tableau en trois dimensions, vous
allez avoir 3 boucles imbriquées.
Et si vous souhaitez traiter un tableau à quatre dimensions, vous
allez avoir 4 boucles imbriquées.
Donc en ce qui concerne l'initialisation d'un tableau c'est supérieur à 2 dimensions, encore une fois, vous
allez appliquer le même type de chose, vous allez
juste l'étendre un peu.
Donc un tableau en trois dimensions aura
3 niveaux d'accolades imbriquées avec le niveau interne contenant un ensemble de valeurs d'initialisation
pour chaque ligne, donc il serait ressemble à quelque chose comme ça.
Ici, nous avons un tridimensionnel array, 2 3 et 4, une pile de tableaux
de données essentiellement.
Et le premier bloc de 3 rangées, nous
allons initialiser et le deuxième bloc de 3 lignes nous allons initialiser.
Donc, ce que cela dit est à nouveau premier bloc et deuxième bloc parce que nous n'avons pas
initialisé le troisième et le quatrième bloc, juste le premier
et le deuxième.
Nous avons donc 4 blocs et vous peut considérer comme chaque bloc une pile
de tables de données, chacune bloc ayant des lignes et des colonnes.
Donc le premier bloc va être initialiser uniquement les 3 premières lignes, nous
n'avons que 3 lignes.
Et puis le deuxième bloc va pour initialiser les 3 lignes suivantes, mais les troisième
et quatrième blocs ne seront pas initialisés.
Si vous souhaitez initialiser le troisième
et quatrième blocs, vous auriez plus d'accolades intérieures, accolades et ainsi de suite.
La même chose s'applique cependant pour le ceux que vous n'initialisez
pas, ils seront initialisés à 0.
Mais encore une fois, vous pouvez voir comment cela devient très fastidieux
et aussi très difficile à suivre.
Lorsque vous souhaitez traiter les éléments dans un tableau dimensionnel, j'ai mentionné,
vous allez utiliser des boucles imbriquées.
Encore une fois, ça va correspondre directement au nombre de dimensions.
Et chaque boucle va itérer sur une dimension de tableau.
Alors ça va regarder quelque chose comme ça.
Ceci est un exemple de tableau en trois dimensions.
Vous avez une boucle extérieure et alors vous avez 2 boucles intérieures.
La boucle extérieure sera le premier tableau externe, donc la boucle externe passerait essentiellement par les lignes, la seconde
passera par les colonnes et la troisième
on passera par les blocs.
Encore une fois, ce que vous devriez remarquer C'est wow, ça
devient vraiment poilu et vraiment fastidieux, vraiment rapide.
Alors essayez d'éviter les tridimensionnels tableaux à quatre dimensions et je ne vois même
pas beaucoup d'utilité cas pour cela, un et deux sont vraiment tout
ce que vous allez utiliser.
Mais comprendre multi-dimensionnel les tableaux sont une possibilité en c, un moyen de stocker plus de données et
d'accéder le même nom avec de nombreux éléments de données. Merci.