ライティング実習1B 6組

2023年度 後期 木02 11:00-12:30 瀬田2-208

配列

複数の値をまとめて扱うときには配列を用いる。

ABCD
1nums出力
25=nums
32
43
54
62
76
87
9

この例では7つの値を1つの変数numsで扱える。

配列numsの中身
0123456
A2
5
A3
2
A4
3
A5
4
A6
2
A7
6
A8
7

配列要素には0から連番が振られる。たとえば前から4番目の値を指示したいときにはnums[3]とする。

  • 配列の初期化…const 配列名 = [配列の中身1,配列の中身2,…]
  • 配列の箱の数(長さ)は配列名.lengthで取得できる。
htmlテンプレート
<script>
const nums = [5, 2, 3, 4, 2, 6, 7];
document.write('出力:');
for(let i = 0; i < nums.length; i++){
document.write('[' + i + ':' + nums[i] + ']');
}
</script>
<script>
nums[3] = 10000;
document.write('出力:');
for(let i = 0; i < nums.length; i++){
document.write('[' + i + ':' + nums[i] + ']');
}
</script>

課題:配列の反転

実習用ファイル
ABCD
1elements反転
9
input_elements

A2:A8…<input name="rev">

document.getElementsByName('rev')

elements
input_elementsの値配列
const elements = [];
const input_elements = document.getElementsByName('rev');
for(let i=0;i<input_elements.length; i++){
  if(input_elements[i].value!=""){
    elements[i]=input_elements[i].value;
  }
}

ダウンロードしたhtmlファイルの「//配列が反転する用にプログラムを記せ。」の後に得られた配列が反転されるように足りないコードを記せ。

elements
01234567
abcdefgh
アルゴリズム
  1. elements[0]とelements[配列の最後]を交換する
  2. elements[1]とelements[配列の最後 - 1]を交換する
  3. elements[2]とelements[配列の最後 - 2]を交換する
  4. elements[3]とelements[配列の最後 - 3]を交換する

ただし実際にはループを回して実行する。

  • elements[ i ]とelements[配列の最後 - i ]を交換する
値の交換
  1. 2つの箱(変数)は詰まっている
    a
    値1
    b
    値2
  2. 空の箱(tmp)を用意する
    tmp
    a
    値1
    b
    値2
  3. 箱tmpに箱aの中身(値1)を詰める。
    tmp
    値1
    a
    値1
    b
    値2
  4. 箱aに箱bの中身(値2)を詰める。
    tmp
    値1
    a
    値2
    b
    値2
  5. 箱bに箱tmpの中身(値1)を詰める。
    a
    値2
    b
    値1
    tmp
    値1
  6. 箱aと箱bの中身が入れ替わった。
    a
    値2
    b
    値1

課題:ミーティング

実習用ファイル

ミーティングの予定を立てたい。そこで予定表に出席可能な日に「○」を付けることにした。ミーティング開催可能な日に「可」と表示されるようにせよ。

ミーティング開催条件
  • 部長が出席し、それ以外に出席可能である人が2人以上いること
  • 部長がいない場合、4人以上出席者がいること
ABCD
1名前役職出欠
2小片副部長
3山岸部長
4新沼
5谷本
6岸本
7浅倉
8小野
9小野田
10秋山
11開催可否
12
input_elements

C2:C10…<select name="yes"></select>

document.getElementsByName('yes')

const input_elements = document.getElementsByName('yes');
部長の出欠manager
  • = parseInt(input_elements[1].value);
それ以外の部員出席者数members
  • = parseInt(input_elements[0].value);
  • += parseInt(input_elements[2].value);
  • += parseInt(input_elements[3].value);
  • 出席…1,欠席…0
  • parseInt(char_num)…文字を数値に変換する(cf.ExcelのVALUE関数)