Last Modified: 2009/07/03 09:45:24

Sc283(1) 情報科学応用演習I 資料 (Part 10) 

[解説] 多次元配列

配列の要素に,さらに配列オブジェクトを代入することで, 多次元の配列を作ることができる.(下図参照)

2次元配列

上図の場合,x[i] の各々が値として配列オブジェクトを持つことになるので, i 番目の配列オブジェクトの j 番目の変数は x[i][j] と表現される. これは,(x[i])[j] という意味で,x[i]y に代入 (y = x[i];) すると,y[j] と同じになる.(下図)

2次元配列

通常の (1次元の) 配列では,配列オブジェクトを生成して,変数に代入して用いるが, 2次元の配列の場合,「1次元目」の配列オブジェクトの各々の変数ごとに, 個別の配列オブジェクトを生成して代入する必要がある. したがって,例えば 10x10 の2次元配列の定義 (配列オブジェクトの生成) は,以下のようになる.

var i;
var x = new Array(10);      // x[0] 〜 x[9]
for(i=0; i<10; i++) {
    x[i] = new Array(10);   // x[i][0] 〜 x[i][9]
}

なお,最初に配列オブジェクトをすべて生成しておこうとすれば,上のようになるが, 通常は,プログラムの進行に合わせて,流れの中で生成することも多い.

式の中での配列要素の使用や,配列要素への代入には,x[i][j] のような表現を用いる.


[タスク] 九九表 (2)

概要

先の Part 8 のタスクの 九九表 のプログラムと同様のプログラムを, 2次元配列を用いて書き換える.

方法

以下に Part 8 のタスクの例のコードをもとにした雛形を参考に付けておく. (流れ図の例

<title>JavaScript Sample 10-1</title>
<script type="text/javascript">
<!--
var n, m;   // for の制御変数,兼,乗数

// ここで配列を用意する.

// 下の for の2重ループは,Part 8 のタスクと同じものを2つ並べてある.
// 1つは九九を計算して配列に格納するように直し,
// もう1つは配列のデータを画面に表示するように直す.

// 九九を計算して配列に格納する.画面への表示は不要.
// document.writeln('<table border>');    // これは不要
for(n=1; n<10; n++){
    // document.write('<tr>');            // これは不要
    for(m=1; m<10; m++){
        // document.write('<td>' + (n*m) + '</td>');
        // ここでは,画面表示のかわりに計算結果を配列に格納する.
    }
    // document.writeln('</tr>');         // これは不要
}
// document.writeln('</table>');          // これは不要

// 配列のデータを画面に表示する
document.writeln('<table border>');
for(n=1; n<10; n++){
    document.write('<tr>');
    for(m=1; m<10; m++){
        // document.write('<td>' + (n*m) + '</td>');
        // ここでは,n*m のかわりに配列のデータを画面に表示する.
    }
    document.writeln('</tr>');
}
document.writeln('</table>');
// -->
</script>

以下に例を示す.リンクをクリックすれば実行できる.(別ウィンドウで実行される)

js10-1a.html雛形,例のコードと流れ図


[タスク] パスカルの三角形

概要

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
... ...

パスカルの三角形の上から10段を計算して表示する. パスカルの三角形のi段目は,i個の数 Pi,1Pi,i から成り, 各 Pi, j は,以下の漸化式にしたがう.

{
Pi,1 = Pi,i = 1
Pi, j = Pi-1, j-1 + Pi-1, j , (1 < j < i)

ヒント

以下に例を示す.リンクをクリックすれば実行できる.(別ウィンドウで実行される)

js10-2a.html雛形,例のコードと流れ図


[課題] 計算練習プログラム (3)

課題番号: 10-1
課題名: 計算練習プログラム(3)
ファイル名:task10-1.html
締切: 次回の演習の前日の18:00まで

内容

課題9-1 (参考) のプログラムに手を加え,一度に出題される10問が全て異なる問題となるようにする.

ヒント

報告について

Moodleの課題ページからファイルを提出すること.ファイル名はすべて半角文字とする.


[解説] フォーム(その2) - 種々のフォーム部品

※ 汎用ボタンとテキストフィールドについては(その1)とその 例のページ を参照してください.