c#:Tableaux et matrices

c#:Tableaux et matrices

tableau et matrice
 



Généralités


  • c#:Tableaux et matrices
  • Un tableau est une structure regroupant plusieurs valeurs de même type, appelées composantes du tableau.
  • tableau_indice

  • On peut traiter un tableau comme un tout, ou composante par composante. Traité comme un tout, on pourra le stocker dans une variable, le passer en paramètre ou le donner en résultat d’un calcul.
  • Chaque composante est désignée individuellement via son indice, qui correspond à sa position dans le tableau, et peut être traitée comme variable individuelle : on pourra consulter sa valeur, la modifier, etc.
  • Les tableaux sont des séquences de données de même type. Vous pouvez accéder à un élément individuel d’un tableau en utilisant sa position d’entier, qui s’appelle un index.
  • Les éléments d’un tableau sont situés dans la mémoire contiguë. Cela signifie qu’un programme peut accéder aussi rapidement à tous les éléments d’un tableau.
  • Dès que l’on travaille avec de nombreuses données homogènes ( de même type) la première structure de base permettant le regroupement de ces données est le tableau.
  • C# comme tous les langages algorithmiques propose cette structure au programmeur.
  • Les tableaux C# sont indexés uniquement par des entiers (char, int, long,…) et sur un intervalle fixe à partir de zéro.
  • Un tableau (“array” en anglais) est un objet permettant de rassembler sous un même identificateur des données de même type.
  • Un tableau C# peut avoir de une ou à plusieurs dimensions, nous avons donc les variétés suivantes de tableaux dans le CLR :
    1. Tableaux à une dimension.
    2. Tableaux à plusieurs dimensions (matrices,…).
    3. Tableaux déchiquetés.
  • Chaque dimension d’un tableau en C# est définie par une valeur ou longueur, qui est un nombre ou une variable N entier (char, int, long,…) dont la valeur est supérieur ou égal à zéro.
  • Lorsqu’une dimension a une longueur N, l’indice associé varie dans l’intervalle [ 0 , N – 1 ].
Déclaration et création


  • Vous utilisez la même notation pour déclarer un tableau ou une simple variable.
    1. Spécifiez d’abord le type
    2. Puis le nom de la variable suivi d’un point-virgule.
    3. Vous déclarez le type de la variable comme un tableau à l’aide de crochets.
  • Pour déclarer un tableau en C#, il faut utiliser la syntaxe « [] » associée à un type.
  • Il faudra aussi allouer l’espace mémoire nécessaire pour le tableau avant de l’utiliser.

  • type[ ]nom_tab;

    1. Déclaration d’une variable de tableau, référence seule:
    2. Exemple

      type[ ]nom_tab;

      Exmples:
      int [ ] table1;
      char [ ] table2;
      float [ ] table3;

      string [ ] tableStr;
      Image de ce qui est présent en mémoire centrale après ces déclarations
      tableau_image_mem

    3. Déclaration d’une variable de tableau avec définition explicite de taille :


    4. type[] nom = new type[n];

      ===>n est le nombre de données que peut contenir le tableau.

      Exemple
      int [ ] table1 = new int [4];
      char [ ] table2 = new char [4];
      float [ ] table3 = new float [4];

      string [ ] tableStr = new String [4];
      Image de ce qui est présent en mémoire centrale après ces déclarations
      tableau_image
      • Chaque variable de reférence pointe vers un tableau de longueur 4, chaque cellule d’un tableau contient la valeur null.
      • Le mot clef new correspond à la création d’un nouvel objet (un nouveau tableau) dont la taille est fixée par la valeur indiquée entre les crochets. Ici 3 tableaux sont crées et prêts à être utilisés :
        • table1 contiendra 4 entiers 32 bits
        • table2 contiendra 4 caractères
        • table3 contiendra 4 réels en simple précision
        • tableStr contiendra 4 chaînes de type string.
      • On peut aussi déclarer un tableau sous la forme de deux instructions :
        • une instruction de déclaration et une instruction de définition de taille avec le mot clef new
        • la seconde pouvant être mise n’importe où dans le corps d’instruction, mais elle doit être utilisée avant toute manipulation du tableau.
        • Cette dernière instruction de définition peut être répétée plusieurs fois dans le
          programme
        • Il s’agira alors à chaque fois de la création d’un nouvel objet (donc un nouveau
          tableau), l’ancien étant détruit et désalloué automatiquement par le ramasse-miettes (garbage
          collector) de C#.

      int [ ] table1;
      char [ ] table2;
      float [ ] table3;
      string [ ] tableStr;
      ….
      table1 = new int [4];
      table2 = new char [11];
      table3 = new float [7];
      tableStr = new string [8];

    5. Déclaration et initialisation avec définition implicite de taille :
    6. Exemple

      int [ ] table1= {13,-19,24,33,54,-97};
      char [ ] table2= {‘a’,’p’,’c’,’p’,’e’,’d’,’a’,’g’,’o’,’g’,’i’,’e’};
      float [ ] table3= {-13.2, 35, -52.03, 3.543 ,57.57 };

      string [ ] tableStr= {“apc”,”pedagogie”,”chemin”,”éclairant”,”cours”};


      Dans cette éventualité C# crée le tableau, calcule sa taille et l’initialise avec les valeurs fournies.

      Image de ce qui est présent en mémoire centrale après ces déclarations
      tableau_dim


Tableaux à deux dimensions(ou plus)


  • C # permet des tableaux multidimensionnels. Tableaux multi-dimensionnels sont également appelés tableau rectangulaire.
  • La forme la plus simple du tableau multidimensionnel est le tableau à 2 dimensions .
  • Un tableau à 2 dimensions peut être considéré comme une table , qui a x nombre de lignes et y nombre de colonnes.
  • Un tableau à deux dimensions se déclare de la manière suivante :
  • type[ , ]nom_tab= new type[n, m];

  • Où n est le nombre de lignes et m le nombre de colonnes.
  • Voici un tableau à 2 dimensions , qui contient 3 lignes et 4 colonnes :
    tableau_deux_dim

  • Les tableaux C# peuvent avoir plusieurs dimensions, ceux qui ont deux dimensions sont dénommés matrices (vocabulaire scientifique).
  • Tous ce que nous allons dire sur les matrices s’étend ipso facto aux tableaux de dimensions trois, quatre et plus.
  • Ce sont aussi des objets et ils se comportent comme les tableaux à une dimension tant au niveau des déclarations qu’au niveau des utilisations.
  • La déclaration s’effectue avec un opérateur crochet et des virgules,exemples d’une syntaxe de déclaration d’un tableau à trois dimension : [ , , ].


Tableaux de tableaux (en escalier)



tableau_des_tableau

  • Un tableau en escalier est un tableau dont les éléments sont des tableaux .
  • Les éléments d’un tableau en dents de scie peuvent être de différentes dimensions et de tailles.
  • Un tableau en escalier est parfois appelé un « tableau de tableaux .
  • Un tableau en escalier est un tableau dont les éléments sont des tableaux.Les éléments d’un tableau en escalier peuvent être de dimensions et de tailles différentes.Un tableau en escalier est parfois appelé « tableau de tableaux ».
  • En C# un tableau déchiqueté ou en escalier est composé de plusieurs tableaux unidimensionnels de taille variable.
  • La déclaration s’effectue avec des opérateurs crochets [ ] [ ]… : autant de crochets que de dimensions.
  • C# autorise comme Java, des tailles différentes pour chacun des sous-tableaux.
  • Les données proviennent de diverses formes . Parfois, la forme est inégale . Avec des tableaux déchiquetées , nous pouvons stocker efficacement de nombreuses lignes de différentes longueurs .


Travaux pratiques

  • Exécuter dans un projet de console le programme suivant.
    • Créez un tableau en escalier d’éléments int .
    • Définissez des valeurs dans le tableau.
    • Imprimez ensuite le résultat à la fin.

  • Cet exemple déclare un tableau en escalier .
  • Le mot Jagged n’existe pas dans le langage C #. Cela signifie que vous ne devez pas utiliser ce mot dans votre code.

  1. Déclarer et initialiser le tableau déchiquetée:

  2. int[][] tab_escalier= new int[5][];

    Dans la déclaration ci-dessus les lignes sont fixées dans la taille. Mais les colonnes ne sont pas spécifiés , car ils peuvent varier.

    tab_escalier[0] =new int[3];
    tab_escalier[1] = new int[5];
    tab_escalier[2] = new int[2];
    tab_escalier[3] = new int[8];
    tab_escalier[4] = new int[10];

    tab_escalier[0] = new int[] { 3, 5, 7};
    tab_escalier[1] =new int[] { 1, 0, 2, 4, 6 };
    tab_escalier[2] = new int[] { 1, 6 };
    tab_escalier[3] = new int[] { 1, 0, 2, 4, 6, 45, 67, 78 };
    tab_escalier[4] = new int[] { 1, 0, 2, 4, 6, 34, 54, 67, 87, 78 };

  3. Vous pouvez également initialiser le tableau lors de la déclaration comme ceci:

  4. int[][] tab_escalier= new int[][]
    {
    tab_escalier[0] = new int[] { 3, 5, 7},
    tab_escalier[1] =new int[] { 1, 0, 2, 4, 6 },
    tab_escalier[2] = new int[] { 1, 6 },
    tab_escalier[3] = new int[] { 1, 0, 2, 4, 6, 45, 67, 78 }
    };

        Vous pouvez envisager de tableau en escalier comme un compteur de billets de cinéma où la vente de billets compteurs sont fixes ( lignes sont fixes ), mais vous ne savez pas combien de personnes seront debout dans chaque compteur dans une file d’attente ( numéros de colonne ne sont pas fixes peuvent varier en fonction des différentes lignes ) .



Exercices




Sommaire du cours c#