5

ネストされた配列をプログラマーにどのように説明しましたか? 初心者レベルのプログラミングを理解しているが、より複雑なコーディングを行おうとしている人を考えています。

配列を使用した配列は機能しますが、そのアイデアを理解することはできません。

編集:ネストされた配列の例:

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

もちろん、通常はこれよりも複雑で、それが問題なのかもしれません。

4

11 に答える 11

10

配列をリストと考えるように伝えます。食料品リストのように、抽象度が低いものを与えると役立ちます。次に、ネストされた配列は単なるリストのリストです。

多分私は amazon.com で todo リスト、食料品リスト、ウィッシュリストを持っています。これで、すべてのリストのリストができました。各リスト内のすべての要素をステップごとに確認できます。

于 2008-11-04T01:24:16.887 に答える
5

ネストされた配列は、セット内のセットです。つまり、図書館には一組の本があり、一冊の本には一組の章があります。章には一連の段落があり、段落には一連の文があります。文には単語の集合があります。

For each book in library

    For each chapter in book

        For each paragraph in chapter

等...

于 2008-11-04T01:36:58.577 に答える
2

どのように説明しましたか?1 次元配列を理解している人にとって、int または string の代わりに各配列要素に別の配列が含まれているという概念を理解できるようになることは、大きな飛躍のようには思えません。

おそらく、ディレクトリを比較するアナロジーが役立つでしょう。1 次元配列は、多数のファイルを含むディレクトリに類似し、2 次元配列は、それぞれが多数のファイルを含むいくつかの他のディレクトリを含むディレクトリに類似します。

于 2008-11-04T01:26:24.697 に答える
2

それを描く。

変数はボックス
1 次元配列はボックスの行です。
2 次元配列はボックスのグリッドです。
3 次元配列はボックスの立方体です。

一般的な概念に問題がある場合は、4 次元を視覚的に説明しようとしないでください。

于 2008-11-04T01:52:15.987 に答える
1

例としてビットマップを使用します。XC では、次のようなビットマップを作成できます。

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 などの言語で「ネストされた」配列について学習する前に、同じ配列内でさまざまなレベルのネストを行うことができます。

于 2008-11-04T01:28:43.210 に答える
1

スポーツは、ネストされた配列の適用を説明するための適切な類推を提供できます。チームは人々の配列であり、コンペティションは互いに対戦するチームの配列です。

ただし、それは学習者に合う類推を見つける場合です。適切な類推を見つければ、最も遅い学習者でも理解できるようになります。類推が水密であることを確認してください。抽象化のように、それらは漏れやすいです。

于 2008-11-04T01:29:12.993 に答える
1

具体的な例は、本の巻末の索引です。単語のリスト。各単語はページ番号のリストに関連付けられています。

リンゴ - 1, 2, 3-4
クマ - 32-35, 79, 83
猫 - 14, 15

于 2008-11-04T01:41:16.057 に答える
0

配列は単なるオブジェクトであり、物です。彼らがそれを手に入れたら、すべてが簡単に理解できるはずです

于 2008-11-04T05:29:30.480 に答える
0

C タイプの不規則でない配列を調べている場合、それを数値と比較すると、基数 10 の部分と数字が役立つ場合があります。これと同じ効果のもう 1 つの良いソースは時間です。ベースが均一ではないためです。60 秒 = 1 分、60 分 = 1 時間、24 時間 = 1 日、7 日 = 1 週間

于 2008-11-04T01:27:44.680 に答える
0

2次元は簡単に説明できます。テーブルを考えてみてください。3 次元は立方体やその他の 3D イメージを思い浮かべるだけです。4 次元は時間である 4 次元で映画のような一連のイメージを考えます。

そのモデルを使用して 4 次元以上を視覚化するのは困難です。しかし、ファイル キャビネットの中にもう 1 つのファイル キャビネットがあると便利だと考えてください。引き出しを開けると、ファイリング キャビネットが飛び出します。必要な引き出しを見つけて開くと、別のファイリング キャビネットが飛び出します。

于 2008-11-04T01:49:01.923 に答える
0

おそらく、配列の配列を理解している人の文脈から説明しているのでしょう。私は彼らをだまして、最小のものから始めて(内部配列を読む)...ゆっくりと拡大して、彼らが完了するまで質問する十分な時間を与えて、彼らがすでに理解していることを認識させようとします。

描画は役に立ちますが、この場合、学生に情報を与えてゆっくりと進める必要があります。私が知っているほとんどのプログラマーは、聞き手が何を言っているのかを追跡していない場合でも、速く進み、物事を説明するのが好きな傾向があります。

私は隠喩の男なので、おそらく、それぞれに番号が付けられた一連のボックスについて何かを調理し、各ボックスには同様の(ただしはるかに小さいシリーズ)にも番号が付けられています。私はこれを 2 つのレベルだけで理解してから、おそらく確認のために 3 つの次元について話します。しかし、4 次元というものは存在しない、または時間を測定できない、またはその他の比喩的な地雷 / 気晴らしなどのアイデアに引っかかる可能性があるという理由で、4 次元は避けます... なぜなら、それは別の問題だからです。 、プログラマーはADDになる傾向があり、脇道にそれることを楽しんでいます。

また、ハッシュのハッシュを使用しないのはなぜですか。参照がはるかに簡単です。:)

要するに、ベイビーステップです。

于 2008-11-04T03:35:10.617 に答える