Domanda

Come hai spiegato le matrici nidificate a un programmatore. Sto pensando a qualcuno che abbia una conoscenza base della programmazione, ma stia cercando di fare una codifica più complicata.

L'array con array funziona, ma non riescono proprio a pensare all'idea.

Modifica: esempio di un array nidificato:

array(
    'array1' => array(
        'key1' => 'val1',
        'key2' => 'val2',
    ),
    'array2' => array(
        'key1' => 'val1',
        'key2' => 'val2',
    ), 
);

Naturalmente, di solito sono più complicati di così e forse questo è il problema.

È stato utile?

Soluzione

Dì loro di pensare a una matrice come a una lista: aiuta a dare loro qualcosa di meno astratto, come una lista della spesa. Quindi, un array nidificato è semplicemente un elenco di elenchi.

Forse ho una lista di cose da fare, una lista della spesa e una lista dei desideri su amazon.com. Ora ho un elenco di tutti i miei elenchi e posso esaminare tutti quegli elementi in ciascun elenco esaminandoli.

Altri suggerimenti

Un array nidificato è un set all'interno di un set. Quindi, una biblioteca ha una serie di libri, un libro ha una serie di capitoli. Un capitolo ha una serie di paragrafi, un paragrafo ha una serie di frasi. Una frase ha un insieme di parole.

For each book in library

    For each chapter in book

        For each paragraph in chapter

ecc ...

Come l'hai spiegato? Non sembra un grande salto per qualcuno che capisca le matrici unidimensionali essere in grado di cogliere il concetto che invece di un int o una stringa che ogni elemento dell'array contiene invece un altro array.

Forse un'analogia che confronta le directory aiuterà, un array unidimensionale sarebbe analogo a una directory che contiene un mucchio di file, un array bidimensionale ad una directory che contiene diverse altre directory, ognuna contenente un mucchio di file, ecc. .

Disegnalo.

Una variabile è una casella
La matrice 1 dimensionale è una fila di caselle.
La matrice 2 dimensionale è una griglia di caselle.
La matrice tridimensionale è un cubo di scatole.

Se hanno problemi con il concetto generale, non tentare di spiegare visivamente 4 dimensioni.

Usa una bitmap come esempio. In C, puoi creare una bitmap di un X come questo:

int x[5][5] = {
    { 1,0,0,0,1 },
    { 0,1,0,1,0 },
    { 0,0,1,0,0 },
    { 0,1,0,1,0 },
    { 1,0,0,0,1 }
};

Quindi mostra loro come usare nidificati per loop per visualizzare la bitmap.

Gli esempi aiutano sempre e anche questo fa pensare agli array nidificati come array multidimensionali. In realtà è probabilmente meglio capire le matrici multidimensionali in un linguaggio come C prima di conoscere il "nidificato" matrici in lingue come Python in cui è possibile avere diversi livelli di annidamento nello stesso array.

Gli sport possono fornire analogie appropriate per descrivere l'applicazione di array nidificati. Una squadra è una schiera di persone, una competizione è una schiera di squadre che giocano l'una contro l'altra.

Comunque è il caso di trovare l'analogia che fa clic con lo studente. Trova l'analogia giusta e otterrai anche il più lento degli studenti a capire. Assicurati solo che le tue analogie siano impermeabili. Come le astrazioni, hanno delle perdite.

Un esempio concreto è l'indice sul retro di un libro. Un elenco di parole, ogni parola associata a un elenco di numeri di pagina.

mele - 1, 2, 3-4
orsi - 32-35, 79, 83
gatti - 14, 15

Se stai guardando array di tipo C, non sfilacciati, confrontandolo con numeri, la parte di base 10 e le cifre potrebbero essere di aiuto. Un'altra buona fonte per questo stesso effetto sarebbe il tempo in quanto ha una base non uniforme 60s = 1m, 60m = 1h, 24h = 1day, 7day = 1week

Quello che ricordo che il mio insegnante stava facendo per spiegare gli array multidimensionali è stato quello di portare un piccolo file di scheda indice portatile (non diversamente dai vecchi armadi Dewey Decimal System che si potevano trovare nelle biblioteche qualche tempo fa).

Ogni slot era un array bidimensionale (cioè ogni indice conteneva un array di carte nota). Ma il contenitore stesso era un indice di un array tridimensionale (cioè ogni indice conteneva un array che conteneva un array di notecard). Quindi da lì la teoria è stata facile.

Esempi concreti sono molto utili.

2 dimensioni sono facili da spiegare. Basta pensare a un tavolo. 3 dimensioni pensano solo a un cubo o ad un'altra immagine 3d. 4 dimensioni pensano a una serie di immagini come un film con la quarta dimensione che è il tempo.

4+ dimensioni sono difficili da visualizzare usando quel modello. Ma pensalo come un classificatore con dentro un altro schedario aiuta. Si apre il cassetto e si apre un classificatore. Trovi il cassetto che desideri e apri quel cassetto e fuori fa scoppiare un altro casellario .... ancora e ancora fino a quando finalmente ottieni la tua carta.

Forse lo stai spiegando dal contesto di qualcuno che comprende una serie di array. Tenterei di indurli a rendersi conto che già li capiscono iniziando dal più piccolo (leggi l'array interno) ... e lentamente espandendosi, dando loro un sacco di tempo per porre domande fino a quando non sono state completate.

Il disegno aiuta, ma in questo caso devi dare allo studente alcune informazioni e procedere lentamente, la maggior parte dei programmatori che conosco tendono ad andare veloce e a spiegare le cose ANCHE quando l'ascoltatore non segue più ciò che viene detto.

Sono un metafora, quindi probabilmente cucinerei qualcosa su una serie di scatole con ognuna numerata, ciascuna contenente quindi una serie simile (ma molto più piccola). Vorrei portare questo a solo due livelli per capire e quindi forse parlare di 3 dimensioni per conferma. Ma eviterei 4 dimensioni per il fatto che potrebbero rimanere sospese nell'idea che non ci siano cose come 4 dimensioni, o non puoi misurare il tempo, o altre mine / distrazioni metaforiche ... perché questo è l'altro problema , i programmatori tendono ad essere ADD e godono di essere monitorati lateralmente.

Anche perché non stai usando un hash di hash, molto più facile da consultare. :)

In conclusione, piccoli passi.

un array è solo un oggetto - una cosa. tutto dovrebbe essere semplice da capire una volta ottenuto questo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top