2008-11-04 2 views
5

Как вы объяснили вложенные массивы программисту. Я думаю, что у кого-то есть понимание уровня программирования на начальном уровне, но он пытается сделать более сложное кодирование.Объяснение вложенных массивов программисту

Массив с массивом работает, но они не могут понять их идею.

Edit: пример вложенного массива:

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

Конечно, они, как правило, гораздо сложнее, чем это, и, возможно, это проблема.

+0

Пожалуйста, объясните (нам, во-первых :), что вы имеете в виду с «вложенными массивами»! Сделайте пример на C или на каком-то другом языке ... –

+1

Этот вопрос не соответствует теме, поскольку он не находится в рамках обсуждения, как описано в справочном центре. – Will

ответ

10

Сообщите им, чтобы они представляли массив в виде списка - это помогает дать им что-то менее абстрактное, например, список продуктов. Тогда вложенный массив - это просто список списков.

Возможно, у меня есть список дел, список покупок и список желаний на amazon.com. Теперь у меня есть список всех моих списков, и я могу просмотреть все эти элементы в каждом списке, пройдя через них.

2

Как вы это объяснили? Это не похоже на большой скачок для тех, кто понимает одномерные массивы, чтобы понять концепцию, что вместо int или строки, что каждый элемент массива содержит другой массив.

Возможно, аналогия сравнения каталогов поможет, одномерный массив будет аналогичен каталогу, содержащему кучу файлов, двумерный массив в каталог, который содержит несколько других каталогов, каждый из которых содержит кучу файлов, и т. д.

0

Если вы ищете тип C, не оборванные, массивы, сравнивая его с числами, базовую часть 10 и цифры могут помочь. Другим хорошим источником для этого же эффекта было бы время, поскольку оно имеет неравномерное основание 60s = 1m, 60m = 1h, 24h = 1day, 7day = 1week

1

Используйте растровое изображение в качестве примера. В C, вы можете сделать растровое изображение в X, как это:

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

Затем показать им, как использовать вложенные for петли для отображения растрового изображения.

Примеры всегда помогают, и это также заставляет их думать о вложенных массивах в виде многомерных массивов. На самом деле, вероятно, лучше понять многомерные массивы на языке C, прежде чем изучать «вложенные» массивы на таких языках, как Python, где вы можете иметь разные уровни вложенности в одном массиве.

+0

вы * можете * сделать это в C, ваш компилятор просто укажет, что, возможно, литье вашего int в int * в этом разделе кода - это не лучшая идея, с которой вы когда-либо сталкивались;) – tloach

+0

Что вы имеете в виду? Это правильный способ инициализации многомерного массива, я использую его все время, и мой компилятор ничего не говорит об этом. –

+0

Я просто посмотрел и могу подтвердить, что мой код полностью в порядке. Я могу понять, почему вы можете подумать, что «{1,0,0,0,1}» оценивается указателем на int, но на самом деле внутренние фигурные скобки в инициализации доступны только для удобства чтения. Написание его без брекетов будет иметь тот же эффект. –

1

Спорт может предоставить соответствующие аналоги для описания применения вложенных массивов. Команда - это множество людей, конкуренция - это множество команд, которые играют друг против друга.

Однако его случай найти аналогию, которая щелкает с учащимся. Найдите правильную аналогию, и вы поймете, что даже самые медленные ученики поймут. Просто убедитесь, что вы аналогичны, являются водонепроницаемыми. Подобно абстракциям, они протекают.

5

Вложенный массив - это набор внутри набора. Итак, в библиотеке есть набор книг, в книге есть набор глав. В главе есть набор параграфов, в абзаце есть набор предложений. В предложении есть набор слов.

For each book in library 

    For each chapter in book 

     For each paragraph in chapter 

etc ...

1

Конкретный пример - индекс в конце книги. Список слов, каждое слово, связанное со списком номеров страниц.

яблок - 1, 2, 3-4
медведей - 32-35, 79, 83
кошек - 14, 15

0

Что я помню, мой учитель делает, чтобы объяснить многомерные массивы должны было принести в небольшой портативный файл картотеки (в отличие от старых шкафов Dewey Decimal System, которые можно было найти в библиотеках некоторое время назад).

Каждый слот представлял собой двумерный массив (то есть каждый индекс содержал массив карточек заметок). Но сам контейнер был индексом трехмерного массива (т. Е. Каждый индекс содержал массив, в котором хранился массив notecards). Тогда оттуда теория была легкой.

Конкретные примеры очень полезны.

0

2 измерения легко объяснить. Подумай только о столе. 3 измерения просто думают о кубе или другом трехмерном изображении. 4 измерения предполагают серию изображений, подобных фильму с 4-м измерением, являющимся временем.

4+ размеры трудно визуализировать с использованием этой модели. Но подумайте об этом как о шкафу для хранения с другим файловым шкафом внутри. Вы открываете ящик и вытаскиваете подающий шкаф. Вы найдете ящик, который хотите, и откройте этот ящик и вытащите еще один шкаф для хранения .... снова и снова, пока, наконец, вы не получите свою бумагу.

2

Нарисуйте его.

Переменная - это поле
1 мерная массив - это ряд ящиков.
2 мерная решетка представляет собой сетку ящиков.
3-мерная массив - это куб коробок.

Если у них возникли проблемы с общей концепцией, не пытайтесь визуально объяснить 4 измерения.

0

Возможно, вы объясняете это из контекста того, кто понимает массив массивов. Я попытался бы обмануть их, осознав, что они уже понимают их, начиная с наименьшего (читаемого внутреннего массива) ... и медленно расширяясь, давая им много времени, чтобы задавать вопросы, пока они не будут выполнены.

Рисование помогает, но вам нужно дать студенту в этом случае некоторую информацию и идти медленно, большинство программистов, которых я знаю, склонны идти быстро и любят объяснять вещи ДАЖЕ, когда слушатель больше не отслеживает то, что говорится ,

Я парень метафоры, поэтому я бы, вероятно, приготовил что-нибудь о серии коробок с каждой пронумерованной, каждая ячейка, содержащая аналогичную (но намного меньшую серию), также пронумерована. Я бы взял это только на два уровня, чтобы понять, а затем, возможно, поговорить о трех измерениях для подтверждения. Но я бы избегал 4 измерений на том основании, что они могут зависеть от идеи, что нет такой вещи, как 4 измерения, или вы не можете измерить время или другие подобные метафорические наземные мины/отвлекающие факторы ... потому что это другая проблема , программисты, как правило, ДОБАВЛЯЮТСЯ и получают удовольствие от отслеживания.

Также почему вы не используете хэш хешей, гораздо проще ссылаться. :)

Нижняя линия, детские ступени.

0

массив - это всего лишь объект - вещь.все должно быть просто понять, как только они получат это.

Смежные вопросы