Come usare le strutture su Octave

In questa lezione ti spiego come usare le strutture su Octave con alcuni esempi pratici.

Cosa sono le strutture? Le strutture o di array di strutture (structure) sono simili agli array. A differenza di un array, una struttura può archiviare contemporaneamente dei dati di diverso tipo e i dati sono organizzati per campi. Ogni campo ha un nome. Un esempio tipico di struttura è la rubrica telefonica.

Come creare una struttura

Crea una struttura dove registrare la rubrica telefonica.

Chiama la struttura "rubrica". Il primo campo della struttura è il "nome" della persona.

>> rubrica.nome="Paolo Rossi";

Il secondo campo della struttura è il "telefono" della persona.

>> rubrica.telefono=123456789;

Eventualmente il dato in un campo può essere anche un array

>> rubrica(1).telefono=[123456789, 987654321]

Il terzo campo della struttura è l'indirizzo della persona

rubrica.indirizzo="Roma";

In alternativa, puoi creare la nuova struttura inserendo contemporaneamente tutti i campi tramite la funzione struct()

>> rubrica = struct('nome','Paolo Rossi','telefono',123456789, 'indirizzo', 'Roma')

Hai appena creato una struttura (rubrica) con un record e tre campi (nome, telefono, indirizzo).

Nota. I campi hanno un tipo di dato diverso. Due campi sono alfanumerici (nome e indirizzo) mentre un campo è numerico (telefono).

Volendo puoi anche creare una nuova struttura con più campi e dati al suo interno.

In questo caso ricorda di scrivere i nomi dei campi una sola volta e racchiudere i dati di un campo tra parentesi graffe.

C = struct('materia',{'Matematica', 'Latino', 'Scienze'},'voto',{27,30,18})

Come visualizzare i campi di una struttura

Per visualizzare la lista dei campi della struttura puoi usare la funzione fieldnames().

>> fieldnames(rubrica)
ans =
{
[1,1] = nome
[2,1] = telefono
[3,1] = indirizzo
}

Tutti i record nella struttura hanno lo stesso numero e gli stessi nomi dei campi.

In questo caso la struttura ha tre campi: nome, telefono, indirizzo.

Come aggiungere dati alla struttura

Nella struttura puoi aggiungere anche altri record.

Ad esempio, per aggiungere un secondo record usa il nome della struttura mettendo l'indice 2 tra parentesi tonde.

>> rubrica(2).nome="Mario Bianchi";
>> rubrica(2).telefono="987654321";

Ora la struttura contiene due record.

Quando aggiungi un record nella struttura non occorre compilare tutti i campi. Puoi lasciare anche alcuni campi vuoti.

Ad esempio, nel secondo record della struttura non hai documentato nulla nell'indirizzo.

>> rubrica(2)
ans =

scalar structure containing the fields:

nome = Mario Bianchi
telefono = 987654321
indirizzo = [](0x0)

In alternativa, puoi aggiungere un nuovo record inserendo contemporaneamente tutti i campi tramite la funzione struct()

>> rubrica(3) = struct('nome','Giuseppe Verdi','telefono',123456789, 'indirizzo', 'Milano')

Come accedere ai dati della struttura

Per accedere a un dato della struttura devi scrivere il nome della struttura con l'indice tra parentesi tonde, seguita dopo un punto dal nome del campo che ti interessa.

Ad esempio, per accedere al telefono del primo record della struttura digita rubrica(1).telefono.

>> rubrica(1).telefono
ans = 123456789

Per leggere il telefono del secondo record digita rubrica(2).telefono

>> rubrica(2).telefono
ans = 987654321

Per visualizzare tutti i dati del campo telefono digita rubrica.telefono

>> rubrica.telefono
ans = 123456789
ans = 987654321

Per visualizzare tutti i dati di un record specifico digita rubrica(1)

>> rubrica(1)
ans =

scalar structure containing the fields:

nome = Paolo Rossi
telefono = 123456789 987654321
indirizzo = Roma

Come cancellare un campo della struttura

Per cancellare un campo della struttura devi usare la funzione rmfield()

Ad esempio, aggiungi un campo alla struttura

>> rubrica(2).test="prova";

Ora la struttura ha quattro campi

>> fieldnames(rubrica)
ans =
{
[1,1] = nome
[2,1] = telefono
[3,1] = indirizzo
[4,1] = test
}

Per cancellare il campo "test" digita rmfield(rubrica,"test")

>> rubrica=rmfield(rubrica,"test");

Il campo test è stato cancellato dalla struttura.

>> fieldnames(rubrica)
ans =
{
[1,1] = nome
[2,1] = telefono
[3,1] = indirizzo
}

A questo punto dovresti avere tutte le informazioni necessarie per cominciare a lavorare con le strutture su Octave.




Non hai risolto il tuo problema? Scrivi una domanda




FacebookTwitterLinkedinLinkedin