Pregunta

¿Cómo ha explicado las matrices anidadas a un programador? Estoy pensando en alguien que tiene un conocimiento básico de programación, pero está tratando de hacer una codificación más complicada.

La matriz con matriz funciona, pero no pueden entender la idea.

Editar: ejemplo de una matriz anidada:

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

Por supuesto, generalmente son más complicados que esto y tal vez ese sea el problema.

¿Fue útil?

Solución

Dígales que piensen en una matriz como una lista: les ayuda a darles algo menos abstracto, como una lista de compras. Entonces, una matriz anidada es simplemente una lista de listas.

Tal vez tengo una lista de tareas pendientes, una lista de compras y una lista de deseos en amazon.com. Ahora tengo una lista de todas mis listas, y puedo ver todos esos elementos en cada lista al recorrerlos.

Otros consejos

Una matriz anidada es un conjunto dentro de un conjunto. Entonces, una biblioteca tiene un conjunto de libros, un libro tiene un conjunto de capítulos. Un capítulo tiene un conjunto de párrafos, un párrafo tiene un conjunto de oraciones. Una oración tiene un conjunto de palabras.

For each book in library

    For each chapter in book

        For each paragraph in chapter

etc ...

¿Cómo lo has explicado? No parece un gran salto para alguien que entiende que las matrices unidimensionales pueden comprender el concepto de que, en lugar de un int o una cadena, cada elemento de matriz contiene otra matriz.

Quizás ayude una analogía de comparación de directorios, una matriz unidimensional sería análoga a un directorio que contiene un montón de archivos, una matriz bidimensional a un directorio que contiene varios otros directorios, cada uno con un montón de archivos, etc. .

Dibujarlo.

Una variable es un cuadro
La matriz de 1 dimensión es una fila de cuadros.
La matriz bidimensional es una cuadrícula de cuadros.
La matriz tridimensional es un cubo de cajas.

Si tienen problemas con el concepto general, no intenten explicar visualmente 4 dimensiones.

Use un mapa de bits como ejemplo. En C, puede hacer un mapa de bits de una X como esta:

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 }
};

Luego muéstreles cómo usar anidados para bucles para mostrar el mapa de bits.

Los ejemplos siempre ayudan, y esto también los hace pensar en matrices anidadas como matrices multidimensionales. En realidad, probablemente sea mejor comprender las matrices multidimensionales en un lenguaje como C antes de aprender sobre el '' anidado '' matrices en lenguajes como Python donde puede tener diferentes niveles de anidamiento en la misma matriz.

Los deportes pueden proporcionar analogías apropiadas para describir la aplicación de matrices anidadas. Un equipo es una variedad de personas, una competencia es una variedad de equipos que juegan entre sí.

Sin embargo, se trata de encontrar la analogía que hace clic con el alumno. Encuentre la analogía correcta y obtendrá la comprensión más lenta de los alumnos. Solo asegúrese de que sus analogías sean herméticas. Al igual que las abstracciones, tienen fugas.

Un ejemplo concreto es el índice al final de un libro. Una lista de palabras, cada palabra asociada con una lista de números de página.

manzanas - 1, 2, 3-4
osos - 32-35, 79, 83
gatos - 14, 15

Si está mirando tipos C, no desiguales, matrices, comparándolo con números, la parte base 10, y sus dígitos podrían ayudar. Otra buena fuente para este mismo efecto sería el tiempo, ya que tiene una base no uniforme 60s = 1m, 60m = 1h, 24h = 1 día, 7 días = 1 semana

Lo que recuerdo que mi maestro hizo para explicar las matrices multidimensionales fue traer un pequeño archivo de tarjeta de índice portátil (no muy diferente de los viejos gabinetes del Sistema Decimal Dewey que se podían encontrar en las bibliotecas hace algún tiempo).

Cada ranura era una matriz bidimensional (es decir, cada índice contenía una matriz de tarjetas de notas). Pero el contenedor en sí era un índice de una matriz tridimensional (es decir, cada índice contenía una matriz que contenía una serie de tarjetas de notas). Entonces, a partir de ahí, la teoría fue fácil.

Los ejemplos concretos son muy útiles.

2 dimensiones es fácil de explicar. Solo piensa en una mesa. 3 dimensiones solo piensa en un cubo u otra imagen 3D 4 dimensiones piensan en una serie de imágenes como una película con la 4ta dimensión siendo el tiempo.

4+ dimensiones es difícil de visualizar usando ese modelo. Pero piense en ello como un archivador con otro archivador dentro que ayuda. Abres el cajón y sale un archivador. Encuentra el cajón que deseas y abres ese cajón y sale otro archivador ... una y otra vez hasta que finalmente obtienes tu papel.

Quizás lo esté explicando desde el contexto de alguien que entiende una serie de matrices. Intentaría engañarlos para que se dieran cuenta de que ya los entienden comenzando por el más pequeño (lea la matriz interna) ... y expandiéndose lentamente, dándoles suficiente tiempo para hacer preguntas hasta que terminen.

Dibujar ayuda, pero necesita darle al alumno en este caso información e ir despacio, la mayoría de los programadores que conozco tienden a ir rápido y les gusta explicar las cosas INCLUSO cuando el oyente ya no sigue lo que se dice.

Soy un tipo de metáfora, por lo que probablemente cocinaría algo sobre una serie de cajas con cada una numerada, cada caja que contiene una similar (pero series mucho más pequeñas) también numeradas. Llevaría esto a solo dos niveles para entenderlo y luego quizás hablar sobre 3 dimensiones para su confirmación. Pero evitaría 4 dimensiones porque pueden quedar atrapados en la idea de que no existen 4 dimensiones, o que no se puede medir el tiempo u otras minas / distracciones metafóricas ... porque ese es el otro problema , los programadores tienden a AGREGAR y disfrutan de ser rastreados.

Además, ¿por qué no estás usando un hash de hash, mucho más fácil de referenciar? :)

En pocas palabras, pequeños pasos.

una matriz es solo un objeto, una cosa. todo debería ser simple de entender una vez que lo obtengan

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top