arrays - tipos - Explicar matrices anidadas a un programador
recorrer un array multidimensional php (12)
¿Cómo lo has explicado? No parece ser un gran salto para alguien que entiende matrices unidimensionales para poder captar el concepto de que, en lugar de una cadena int o una cadena, cada elemento de la matriz contiene otra matriz en su lugar.
Quizás una analogía comparando directorios ayude, una matriz unidimensional sería análoga a un directorio que contiene un grupo de archivos, una matriz bidimensional a un directorio que contiene varios otros directorios, cada uno conteniendo un grupo de archivos, etc.
¿Cómo ha explicado las matrices anidadas a un programador? Estoy pensando en alguien que tiene una comprensión básica de la programación, pero está tratando de hacer una codificación más complicada.
La matriz con matriz funciona, pero no pueden entender su idea.
Edición: 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 es el problema.
2 dimensiones es fácil de explicar. Solo piensa en una mesa. 3 dimensiones solo piense en un cubo u otra imagen en 3D. Las 4 dimensiones piensan en una serie de imágenes, como una película en la que la 4ª dimensión es el tiempo.
Más de 4 dimensiones es difícil de visualizar utilizando ese modelo. Pero piense en ello como un archivador con otro archivador en el interior que ayuda. Abre el cajón y saca un archivador. Encuentra el cajón que desea, abre ese cajón y saca otro archivador ... una y otra vez hasta que finalmente obtiene su papel.
Dígales que piensen en una matriz como una lista; 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 cosas 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.
Dibujalo.
Una variable es una caja
1 matriz dimensional es una fila de cajas.
2 dimensiones matriz es una cuadrícula de cajas.
3 matriz dimensional es un cubo de cajas.
Si tienen problemas con el concepto general, no intente explicar visualmente 4 dimensiones.
Lo que recuerdo que hizo mi maestra para explicar matrices multidimensionales fue traer un pequeño archivo de tarjeta de índice portátil (similar a los antiguos gabinetes del sistema decimal de 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 matriz de notecards). Luego, a partir de ahí, la teoría fue fácil.
Los ejemplos concretos son muy útiles.
Los deportes pueden proporcionar analogías apropiadas para describir la aplicación de matrices anidadas. Un equipo es un conjunto de personas, una competencia es una serie de equipos que juegan uno contra el otro.
Sin embargo, es un caso de encontrar la analogía que hace clic con el alumno. Encuentre la analogía correcta e incluso entenderá a los alumnos más lentos. Solo asegúrate de que tus analogías sean impermeables. Al igual que las abstracciones, tienen goteras.
Si está buscando matrices de tipo C, no irregulares, comparándolas con números, la parte de la 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 = 1day, 7day = 1week
Tal vez lo está explicando desde el contexto de alguien que entiende una matriz de matrices. Intentaré engañarlos para que se den cuenta de que ya los entienden comenzando por lo más pequeño (leer el conjunto interno) ... y expandiéndolos lentamente, dándoles suficiente tiempo para hacer preguntas hasta que terminen.
El dibujo ayuda, pero necesitas 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 me gusta explicar cosas AÚN cuando el oyente ya no está rastreando lo que se dice.
Soy un tipo de metáfora, así que probablemente cocinaré algo sobre una serie de cajas con cada una numerada, cada caja contiene una serie similar (pero mucho más pequeña) también numerada. Llevaría esto a solo dos niveles para entenderlo y luego quizás hablar de 3 dimensiones para confirmación. Pero evitaría 4 dimensiones con el argumento de que pueden quedar atrapados en la idea de que no existen 4 dimensiones, o que no se puede medir el tiempo, ni otras distracciones / minas terrestres metafóricas ... porque ese es el otro problema , los programadores tienden a ser TDA y disfrutan de un seguimiento lateral.
Además, ¿por qué no usas un hash de hashes, mucho más fácil de referenciar? :)
En resumen, pasos de bebé.
Un ejemplo concreto es el índice en la parte posterior 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
Use un mapa de bits como ejemplo. En C, puede hacer un mapa de bits de una X
así:
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 los bucles anidados for
mostrar el mapa de bits.
Los ejemplos siempre ayudan, y esto también les hace pensar en matrices anidadas como matrices multidimensionales. En realidad, es probable que sea mejor comprender matrices multidimensionales en un lenguaje como C antes de aprender acerca de las matrices "anidadas" en idiomas como Python, donde puede tener diferentes niveles de anidación en la misma matriz.
una matriz es solo un objeto, una cosa. todo debería ser simple de entender una vez que obtienen eso
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 ...