8、ナンバーリング


前項のプログラムは、維持が大変です。
新規加入があるたびに、最上階の階数を書き換えなければ

「もしも階数が最上階以下だったら」の判断が間違ってしまう。

さらに、脱会者がでたら、

途中の階が「空部屋」になってしまう。

入脱会が繰り返されているうちに超高層ながら空き部屋がいっぱい という虫食いだらけの立体置場になってしまいます。

そこで
入会者はあるたびに、自動的に「1階づつ増築」され、
脱会者が出たら「だるま落し」のように抜取られ、
自動的に「ナンバーリング」で番号が再付与できればありがたい!!。

1、ナンバーリング

データが一つ増えるたびに「+1」する「ナンバーリング」は、第一項でやった
年齢を一つ増やす方法を繰り返せばできます。

ナンバー = ナンバー + 1;
ナンバー = ナンバー + 1;
ナンバー = ナンバー + 1;

のように書けばいいのです。
この一つづつ増やす「ナンバー = ナンバー + 1;
」は別な書き方があります。

ナンバー++;

と書きます。
こちらの書き方が慣例になっていますので、以後これを使います。
意味は「ナンバー = ナンバー + 1」であることを忘れないように


2、入脱会毎に自動的な整理

前ページの
kaiin[0]="宮本幸雄";
kaiin[1]="西部明郎";
kaiin[2]="やまと";
kaiin[3]="五十嵐冴子";
kaiin[4]="おかりん";
を書き直し
さらに新規加入や脱会があったらどうするかを下表にまとめると、

(1)ナンバーリング化(2)入会(追加)(3)脱会(削除)
no=0;kaiin[no]="宮本幸雄";
no++;kaiin[no]="西部明郎";
no++;kaiin[no]="やまと";
no++;kaiin[no]="五十嵐冴子";
no++;kaiin[no]="おかりん";

no=0;kaiin[no]="宮本幸雄";
no++;kaiin[no]="西部明郎";
no++;kaiin[no]="やまと";
no++;kaiin[no]="五十嵐冴子";
no++;kaiin[no]="おかりん";
no++;kaiin[no]="熊谷みきお";
no=0;kaiin[no]="宮本幸雄";
//no++;kaiin[no]="西部明郎";
no++;kaiin[no]="やまと";
no++;kaiin[no]="五十嵐冴子";
no++;kaiin[no]="おかりん";
no++;kaiin[no]="熊谷みきお";
//はコメント化です(実際は消去してもいい)

最上階は最後に実行された

no

の置場の値になりますので

(1)の時点では4階
(2)の時点では5階
(3)の時点では4階

と変化が自動的に捉えられることがお分かりいただけたでしょうか。


3、もしもの判定は

階数の変動が一つの置場に収まられたデータで解るのですから。
もしもの判定も、この置場名を使ってプログラムしておけば、いちいち書き換えなくて済む。
具体的には
先回のソース修正したソース

if(階数 > 最上階){
na=最上階+”階建てです”;
} else{
na=kaiin[階数];
}


if(階数 > no){
na= no+”階建てです”;
}else{
na=kaiin[階数];
}

と書きかえれます。

4、体験しよう

これで、この窓のプログラムは、入脱会が繰り返されても、何時までも使えることがおわかりいただけたでしょうか?

階の会員を 「はーいです。」


<html> <head> <title>javascript_no7</title> <script language="javascript"> <!-- kaiin=new Array(); // no=0;kaiin[no]="宮本幸雄"; //no++;kaiin[no]="西部明郎"; no++;kaiin[no]="やまと"; no++;kaiin[no]="五十嵐冴子"; no++;kaiin[no]="おかりん"; no++;kaiin[no]="熊谷みきお"; //呼出 function yobidasi(){ kaisu=document.kaiin_form.kai.value; kaisu=parseInt(kaisu); if(kaisu>no){ na=no+"階建てです"; }else{ na=kaiin[kaisu]; } document.kaiin_form.namae.value=na; } //--> </script> </head> <body> <form name="kaiin_form"> <input type=text name="kai" size=2>階の会員を <input type=button value="呼出" onClick="yobidasi()"> 「はーい<input type=text name="namae" size=10>です。」 </form> </body> </html>