「新しくプログラミング言語を覚えたいときに行うべき10の練習問」をやってみた。-第3問-

| 2008年02月13日 03:56

IDEA*IDEAさんが作ってくれた「新しくプログラミング言語を覚えたいときに行うべき10の練習問題」3問目をjavascriptの勉強にやってみた。

複数の数値を入力させ、昇順に並び替え、最大値と最小値を出す


// とりあえずフォームの取得
function getFormObj(name)
{
    var obj = document.MyForm.elements[name];
    return obj;    
}

// 入力値を配列として保存するクラス
function GoSet(){
    
    // 入力値
    var values = new Array();
    
    // 値をゲット
    this.getter = function(){
        return values;
    }
    
    // セット用
    this.setter = function(num){
        /**
         * 数字以外エラーとして
         * リセットする処理が必要だけど略(爆
         */
        values.push(num);
    }
    
    // リセット用
    this.resetter = function(){
        values = [];
    }

}

// 配列をソートするクラス
function GoSort(values){

    var value = values;
    var result;
    
    // 受け取った配列をソートしてresultに格納
    this.startSort = function(){    
        result = value.sort(this.Func);
    }
    
    // ソート比較関数
    this.Func = function(a, b) {
          return a - b;
    }
    
    // ソート結果を返す
    this.getResult = function(){
        return result;
    }

    this.getMax = function(){
        if(result == null){
            this.startSort();
        }
        return result[(result.length) - 1];
    }
    
    this.getMin = function(){
        if(result == null){
            this.startSort();
        }
        return result[0];
    }
}


function Controller(){

    var setBT = getFormObj('set');
    var sortBT = getFormObj('sort');
    var resetBT = getFormObj('reset');
    this.num = getFormObj('num');
        
    this.set = new GoSet();
        
    var self = this;
    
    // 追加ボタンクリック時の処理
    setBT.onclick = function(){
        self.set.setter(self.num.value);
        alert(self.set.getter());
        self.num.value = '';    
    }
    
    // ソートボタンクリック時の処理
    sortBT.onclick = function(){
        var lastvalue = new GoSort(self.set.getter());
        lastvalue.startSort();
        alert('ソート結果' + lastvalue.getResult());
        alert('最大値は' + lastvalue.getMax());
        alert('最小値は' + lastvalue.getMin());
    }
    
    // 追加ボタンクリック時の処理
    resetBT.onclick = function(){
        self.set.resetter();
        alert('入力値をリセットしました');    
	}
}

onload = Controller;

実行結果

ソート比較関数がよくわからない・・・ここ後で読む。

「新しくプログラミング言語を覚えたいときに行うべき10の練習問」をやってみた。-第3問-タグ:

トラックバック
  • http://www.kantenna.com/cgi-bin/mt/mt-tb.cgi/211
コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)





この情報を登録しますか?

このサイトは次のライセンスで保護されています。

Creative Commons License

IT業界、エンジニア関連の求人
Web業界に精通したエージェントなので、希望に合った仕事、プロジェクト、雇用形態を紹介してくれてしっかりと転職活動をサポートしてくれます。
初心者のみ採用!【スノーグラス】WEB系エンジニア募集
初心者のみのweb系エンジニア求人!なんでだ?そろそろ転職考えてるのでここ行ってみようかな・・・
Twitter Updates