Outils pour utilisateurs

Outils du site


bloc1:fichesavoirstableaux1

Fiche savoirs sur les tableaux en C#

Présentation

En informatiques un tableau est un regroupement de variables de même type mises dans des cases contigües en mémoire centrale. Voici un exemple de tableau de 4 notes en mémoire centrale :

AdresseValeur
150010
150109
150215
150312

En programmation, un nom est donné au tableau et on utilise un indice plutôt que les adresses mémoire :

Le tableau notes :

IndiceValeur
010
109
215
312

Pour accéder à une variable du tableau, il faut :

  • utiliser le nom du tableau ;
  • suivi d'un indice de case.

Tableau statique et tableau dynamique

Un tableau statique a une taille fixe déterminée à la déclaration du tableau.

Un tableau dynamique a une taille qui est définie lors de l'exécution du programme. La taille du tableau est alors définie au moment de l’exécution du programme et en fonction du déroulement de ce programme. Cela permet d'avoir une allocation dynamique de mémoire en fonction des besoins.

Déclarer un tableau statique

Pour déclarer un tableau en C# il faut que

  • le nombre de case soit fixe ;
  • et définir dès le départ le nombre de cases ;
  • précisez le type des données.
letype[] nomTableau = new letype[taille];
// exemple
int[] notes = new int[4];

Utiliser un tableau statique de données

Un tableau s’utilise comme une variable mais en précisant l’indice de la case concernée.

// exemple
notes[0] = 10;
notes[1] = 9;
notes[2] = 15;
notes[3] = 12;

Voici une manière de renseigner le tableau de notes avec les valeurs saisies par l'utilisateur :

// Déclaration du tableau
int[] notes = new int[4];
 
// Saisie des notes
for (int i = 0; i < 4; i++)
{
  Console.Write("Entrez une note  : ");
  notes[i] = int.Parse(Console.ReadLine());
}

Pour initialiser un tableau lors de sa déclaration, procédez de la manière suivante :

int[] monTableau = new int[] {1, 2, 3, 4, 5};

Exercice 1

  • Créez un nouveau projet TableauExercice1.
  • Le programme doit permettre de saisir 5 températures entières entre -20 et +40 (sans contrôler la saisie) ;
  • Le programme doit ensuite afficher combien de températures sont négatives et combien de températires sont positives

Tableau dynamique

Un tableau dynamque en C# est une liste de données qui peut changer de taille pendant l’exécution du programme.

Une liste est une collection ordonnée d’éléments. Chaque élément a un index, et il est possible d'ajouter, d'insérer, de supprimer et de trouver des éléments à n’importe quel endroit dans la liste.

Pour utiliser les listes en C#, il faut inclure le namespace en haut de ton fichier

using System.Collections.Generic;

Déclaration d’une liste

La déclaration d’une liste en C# est similaire à celle d’un tableau, mais elle utilise la classe List<T>, où T est le type de données que la liste va stocker.

List<int> maListe = new List<int>();

Dans cet exemple, <int> est le type de la liste, maListe est le nom de la liste, et new List<int>() est l’instance de la liste.

Il n'est pas nécessaire de spécifier une taille lors de la déclaration d’une liste car les sont dynamiques et peuvent changer de taille.

Par défaut, une liste nouvellement créée ne contient aucun élément.

Pour déclarer et et initialiser une liste en même temps, tout comme un tableau :

List<int> maListe = new List<int> {1, 2, 3, 4, 5};

Ajouter un élément à la fin de la liste

La méthode Add() est utilisée pour ajouter un élément à la fin de la liste.

List<int> maListe = new List<int>(); // créer une nouvelle liste vide
maListe.Add(1); // ajouter 1 à la liste
maListe.Add(2); // ajouter 2 à la liste

Ajouter plusieurs éléments à la fin de la liste

La méthode AddRange() prend une collection d’éléments et les ajoute à la fin de la liste.

List<int> maListe = new List<int>(); // créer une nouvelle liste vide
maListe.AddRange(new int[] {1, 2, 3, 4, 5}); // ajouter plusieurs éléments à la liste

Après cette instruction, maListe contient les valeurs {1, 2, 3, 4, 5}.

Insérer un élément à une position spécifique

Pour insérer un élément à une position spécifique de la liste, plutôt qu’à la fin, on utilise la méthode Insert() qui prend deux paramètres :

  • l’index à laquelle l’élément doit être inséré
  • et l’élément à insérer :
List<int> maListe = new List<int>() {1, 2, 3, 4, 5}; // créer et initialiser une liste
maListe.Insert(2, 10); // insérer 10 à l’index 2

Supprimer un élément de la liste

La méthode Remove() permet de supprimer des éléments d'une liste.

Exercice 2

  • Créez un nouveau projet TableauExercice2.
  • Reprenez le code de l'exercice 1 et utilisez un tableau dynamique en lieu et place du tableau statique

Rechercher dans un tableau

Il est parfois nécessaire de trier les tableaux ou de faire des recherches dans les tableaux.

Pour information, voici les vidéos sur 3 solutions possible de tris, en C# :

Recherche séquentielle dans un tableau non trié

La recherche se fait

  • à partir de la première case du tableau,
  • en comparant chaque case avec la valeur cherchée,
  • et la recherche s’arrête dès que la valeur est trouvée, ou en fin de tableau si la valeur n’est pas présente.

C’est la méthode de recherche la plus simple et qui fonctionne que le tableau soit trié ou non. Cependant, cette méthode est peu performante dans le cas d’un tableau trié.

Le nombre d’itérations n’est pas fixe.

  • au minimum : 1 fois (si la valeur se trouve dans la 1re case)
  • au maximum : n fois (si la valeur n’est pas trouvée)

Exercice 2

  • Créez un nouveau projet TableauExercice2.
  • Le programme doit permettre de saisir un tableau de températures de n cases (il faut saisir la taille du tableau au préalable) puis de saisir une valeur à chercher.
  • La recherche se fait séquentiellement.
  • Un message doit préciser si la valeur a été trouvée ou non.
  • Dans le cas où elle a été trouvée, il faut préciser la position dans le vecteur. On ne s'inquiètera pas du problème lié à une saisie erronée au niveau du type d'une variable.

Exercice 3

  • Créez une nouveau projet à partir de ce dépôt Git https://github.com/ctecher/TableauExercice3.git
  • Le programme doit permettre de saisir le nombre de notes à gérer ;
  • Puis vous permettre des saisir les notes en les rangeant dans un tableau à une dimension pouvant contenir le nombre de notes voulus.
  • Le programme doit alors calculer la moyenne des notes et l'afficher.

En C#, pour obtenir la taille d’un tableau, il faut utiliser Length sur le tableau. Par exemple, si le tableau s’appelle notes, alors notes.Length donne sa taille.

Les tableaux à deux dimensions

  • Les tableaux qui ont été présentés étaient à une dimension.
  • Il est possible de déclarer des tableaux à plusieurs dimensions.
  • Les tableaux à 2 dimensions peuvent aussi être appelés matrices.

Déclaration et utilisation d'un tableau à 2 dimensions

// Syntaxe de la déclaration
letype[,] nomTableau = new letype[nbColonnes,nbLignes];
 
// Syntaxe d’accès à une case
nomTableau[indiceColonne, indiceLigne]
 
// Exemple de déclaration
int[,] distance = new int[10,20];
 
/* Affichage de la case d’indices (i, j)
* avec i forcément entre 0 et 9
* avec j forcément entre 0 et 19 */
Console.WriteLine(distance[i, j]);
 
// boucles pour remplir chaque case de la matrice
for (int x = 0; x < 10; x++)
{
  for (int y = 0; y < 20; y++)
  {
    distance[x, y] = int.Parse(Console.ReadLine());
  }
}

Pour parcourir une matrice complète, il faut 2 boucles imbriquées.

bloc1/fichesavoirstableaux1.txt · Dernière modification : 2024/10/13 23:20 de techer.charles_educ-valadon-limoges.fr