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

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

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

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

javascript

  1. // とりあえずフォームの取得
  2. function getFormObj(name)
  3. {
  4.     var obj = document.MyForm.elements[name];
  5.     return obj;
  6. }
  7.  
  8. // 入力値を配列として保存するクラス
  9. function GoSet(){
  10.  
  11.     // 入力値
  12.     var values = new Array();
  13.  
  14.     // 値をゲット
  15.     this.getter = function(){
  16.         return values;
  17.     };
  18.  
  19.     // セット用
  20.     this.setter = function(num){
  21.         /**
  22.          * 数字以外エラーとして
  23.          * リセットする処理が必要だけど略(爆
  24.          */
  25.         values.push(num);
  26.     };
  27.  
  28.     // リセット用
  29.     this.resetter = function(){
  30.         values = [];
  31.     };
  32.  
  33. }
  34.  
  35. // 配列をソートするクラス
  36. function GoSort(values){
  37.  
  38.     var value = values;
  39.     var result;
  40.  
  41.     // 受け取った配列をソートしてresultに格納
  42.     this.startSort = function(){
  43.         result = value.sort(this.Func);
  44.     }
  45.  
  46.     // ソート比較関数
  47.     this.Func = function(a, b) {
  48.           return a - b;
  49.     }
  50.  
  51.     // ソート結果を返す
  52.     this.getResult = function(){
  53.         return result;
  54.     }
  55.  
  56.     this.getMax = function(){
  57.         if(result == null){
  58.             this.startSort();
  59.         }
  60.         return result[(result.length) - 1];
  61.     }
  62.  
  63.     this.getMin = function(){
  64.         if(result == null){
  65.             this.startSort();
  66.         }
  67.         return result[0];
  68.     }
  69. }
  70.  
  71.  
  72. function Controller(){
  73.  
  74.     var setBT = getFormObj('set');
  75.     var sortBT = getFormObj('sort');
  76.     var resetBT = getFormObj('reset');
  77.     this.num = getFormObj('num');
  78.  
  79.     this.set = new GoSet();
  80.  
  81.     var self = this;
  82.  
  83.     // 追加ボタンクリック時の処理
  84.     setBT.onclick = function(){
  85.         self.set.setter(self.num.value);
  86.         alert(self.set.getter());
  87.         self.num.value = '';
  88.     }
  89.  
  90.     // ソートボタンクリック時の処理
  91.     sortBT.onclick = function(){
  92.         var lastvalue = new GoSort(self.set.getter());
  93.         lastvalue.startSort();
  94.         alert('ソート結果' + lastvalue.getResult());
  95.         alert('最大値は' + lastvalue.getMax());
  96.         alert('最小値は' + lastvalue.getMin());
  97.     }
  98.  
  99.     // 追加ボタンクリック時の処理
  100.     resetBT.onclick = function(){
  101.         self.set.resetter();
  102.         alert('入力値をリセットしました');
  103.     }
  104. }
  105.  
  106. onload = Controller;
  107.  

実行結果

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

投稿日 2008年2月13日 03:56
カテゴリ JavaScript
タグ サンプルコード | 練習問題
トラックバック URL http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1137

コメント

コメントする
Name
Email Address
URL