Les structures dans Octave
Au cours de cette leçon, je vais vous montrer comment manier les structures dans Octave à travers des exemples concrets.
Qu'est-ce qu'une structure? Les structures, ou les tableaux de structures, se rapprochent des tableaux. Cependant, une structure a la capacité de stocker simultanément des données de différents types, celles-ci étant organisées en champs. Chaque champ possède un nom. Un annuaire téléphonique constitue un exemple parfait d'une structure.
Création d'une structure
Imaginons que vous souhaitiez créer une structure pour conserver un annuaire téléphonique.
Appelez cette structure "annuaire". Le premier champ de la structure correspond au "nom" de l'individu.
>> annuaire.nom="Paul Red";
Le second champ de la structure est le "numéro de téléphone" de la personne.
>> annuaire.numero=123456789;
Si nécessaire, un champ peut aussi contenir un tableau de données.
>> annuaire(1).numero=[123456789, 987654321]
Le troisième champ de la structure, c'est l'adresse de la personne.
>> annuaire.adresse="Rome";
Autrement, vous pouvez tout à fait créer une nouvelle structure en ajoutant tous les champs en même temps grâce à la fonction struct().
>> annuaire = struct('nom','Paul Red','numero',123456789, 'adresse', 'Rome')
Vous venez de créer une structure (un répertoire) avec une entrée et trois champs (nom, numéro, adresse).
Notez que les champs ont des types de données variés. Deux champs sont alphanumériques (nom et adresse) alors que l'autre est numérique (numero).
Si vous le désirez, vous pouvez également générer une nouvelle structure intégrant plusieurs champs et des données.
Dans ce cas, n'oubliez pas de ne mentionner qu'une seule fois les noms des champs et d'entourer les données d'un champ avec des accolades.
C = struct('leçon',{'Maths', 'Latin', 'Science'},'note',{27,30,18})
Comment visualiser les champs d'une structure
Pour voir la liste des champs dans la structure, vous pouvez utiliser la fonction fieldnames().
>> fieldnames(annuaire)
ans =
{
[1,1] = nom
[2,1] = numero
[3,1] = adresse
}
Toutes les entrées dans la structure ont le même nombre et les mêmes noms de champs.
Dans notre cas, la structure comprend trois champs : nom, numéro et adresse.
Ajouter des données à une structure
Il est possible d'ajouter d'autres entrées à la structure.
Par exemple, pour ajouter une deuxième entrée, utilisez le nom de la structure suivi du numéro d'index entre parenthèses
>> annuaire(2).nom="Mario Blanc";
>> annuaire(2).numero=987654321;
La structure contient désormais deux entrées.
Lorsque vous ajoutez une entrée à la structure, il n'est pas obligatoire de remplir tous les champs. Vous pouvez en laisser certains vides.
Par exemple, dans la deuxième entrée de la structure, vous n'avez pas renseigné le champ adresse.
>> annuaire(2)
ans =
scalar structure containing the fields:
nom = Mario Blanc
numero = 987654321
adresse = [](0x0)
Autrement, vous pouvez ajouter une nouvelle entrée en renseignant simultanément tous les champs grâce à la fonction struct().
>> annuaire(3) = struct('nom','Joseph Vert','numero',123456789, 'adresse', 'Milan')
Accéder aux données d'une structure
Pour accéder à un élément d'une structure, vous devez indiquer le nom de la structure, suivi de l'index entre parenthèses, puis du nom du champ qui vous intéresse, précédé d'un point.
Par exemple, pour accéder au numéro de téléphone du premier enregistrement dans la structure, saisissez annuaire(1).numero.
>> annuaire(1).numero
ans = 123456789
Pour consulter le numéro de téléphone du deuxième enregistrement, saisissez annuaire(2).numero
>> annuaire(2).numero
ans = 987654321
Pour afficher toutes les données du champ numéro de téléphone, saisissez annuaire.numero
>> annuaire.numero
ans = 123456789
ans = 987654321
Pour afficher toutes les données d'un enregistrement spécifique, saisissez annuaire(1)
>> annuaire(1)
ans =
scalar structure containing the fields:
nom = Paul Red
numero = 123456789 987654321
adresse = Rome
Supprimer un champ d'une structure
Pour retirer un champ d'une structure, vous devez recourir à la fonction rmfield()
Par exemple, si vous ajoutez un champ à la structure, celle-ci compte désormais quatre champs.
>> annuaire(2).test="test";
La structure compte à présent quatre champs.
>> fieldnames(annuaire)
ans =
{
[1,1] = nom
[2,1] = numero
[3,1] = adresse
[4,1] = test
}
Pour supprimer le champ "test", tapez rmfield(annuaire,"test")
>> annuaire=rmfield(annuaire,"test");
Le champ "test" a maintenant été retiré de la structure.
>> fieldnames(annuaire)
ans =
{
[1,1] = nom
[2,1] = numero
[3,1] = adresse
}
Désormais, vous devriez être armé des informations nécessaires pour commencer à travailler avec les structures dans Octave.