SlideShare a Scribd company logo
1 of 101
データ解析の基礎
           配列




2008年8月,データ解析の基礎,加藤,瀬々,金子.   1
目標

• 配列を理解する
  –   配列は多数のデータを表すのに便利
  –   データ群から統計量を求めよう
  –   配列に一気に数値を代入する方法
  –   メソッドに配列を渡すには


• 2次元配列を理解する




 2008年8月,データ解析の基礎,加藤,瀬々,金子.   2
べき乗の合計のプログラムをもっと汎用的に

     Test07a.java

public class Test07a {
  public static void main( String[] args ){
    int a, b, c, d, e, f, n;
    int pow_a, pow_b, pow_c, pow_d, pow_e, pow_f;
    int sum;
    n = 3;
    a = 3; b = 7; c = 4; d = 5; e = 9; f = 1;




    }
     sum = pow_a+pow_b+pow_c+pow_d+pow_e+pow_f;
     System.out.println(“sum=“+sum);
                                                              }
     pow_a = power(a,n); pow_b = power(b,n); pow_c = power(c,n);
     pow_d = power(d,n); pow_e = power(e,n); pow_f = power(f,n);   どこかで
                                                                   書き間違えそう
    public static int power( int x, int n ){
      int i, ret;                                                  データ数を
      ret = 1;
      for ( i = 0; i < n; i++ ){
                                                                   10000個もあったら
        ret = ret * x;                                             どうする?
      }
      return ret;
    }
}


       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                          3
配列を使って汎用的に
                 べき乗の合計を求める
                                                        int[] 型
public class Test07b {                                   int 配列を参照する型.
  public static void main( String[] args ){
    int[] a;                                             配列は複数の値を
    int[] pow_a;
    int    i, n, sum;
                                                           格納できる.
    n = 3;
                        長さ6の配列を生成                        番号でアクセスできる
    a = new int[6];
    a[0]=3; a[1]=7; a[2]=4; a[3]=5; a[4]=9; a[5]=1;

     pow_a = new int[a.length];                            a
     for ( i = 0; i < a.length; i++ ){
       pow_a[i] = power(a[i],n);
     }                                                [0]=3 [1]=7 [2]=4 [3]=5 [4]=9 [5]=1
     sum = 0;
     for ( i = 0; i < pow_a.length; i++ ){             添え字は0から始まる
       sum = sum + pow_a[i];
     }
     System.out.println(“sum=“+sum);
    }
                                                      a.length
}
    public static int power( int x, int n ){略}
                                                       a が参照している配列の
                                                       長さ

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                                    4
どのように計算されているのか
                 べき乗の合計を求める
public class Test07b {
  public static void main( String[] args ){
    int[] a;
    int[] pow_a;
    int    i, n, sum;
    n = 3;
    a = new int[6];
                        長さ6の配列を生成
    a[0]=3; a[1]=7; a[2]=4; a[3]=5; a[4]=9; a[5]=1;

     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }   べき乗の
                                             計算
     for ( i = 0; i < pow_a.length; i++ ){

     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }   合計の
                                             計算
                                                      最初 sum に 0 を入れて
                                                      一つずつ加えていっている
    }
    public static int power( int x, int n ){略}
}



       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                  5
どのように計算されているのか

Test07b.java     べき乗の合計を求める
public class Test07b {
  public static void main( String[] args ){
    int[] a;
    int[] pow_a;
    int    i, n, sum;
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;

     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算
     for ( i = 0; i < pow_a.length; i++ ){

     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }    合計の
                                              計算
                                                     最初 sum に 0 を入れて
                                                     一つずつ加えていっている
    }
    public static int power( int x, int n ){略}
}



       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                 6
どのように計算されているのか

Test07b.java     べき乗の合計を求める                             スタック          メモリの一部
public class Test07b {                                    main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                   a          pow_a
    int[] pow_a;
    int    i, n, sum;
                                                               i            n
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                                   sum
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                         ヒープ          メモリの一部
    }
    public static int power( int x, int n ){略}
}



                                                     正確には,様々なメモリ領域があり,また,スタックをヒープ領域に割り当
       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                               7
                                                     ててもよいことになっているが,ここでは簡単化のため,スタック以外のメ
                                                     モリ領域をすべてヒープと呼ぶことにする
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック      メモリの一部
public class Test07b {                                main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                               a    pow_a
    int[] pow_a;
    int    i, n, sum;
                                                           i    n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                             sum
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                     ヒープ       メモリの一部
    }
    public static int power( int x, int n ){略}
}



       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                     8
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック          メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                 a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                             i           n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                              sum
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ          メモリの一部
    }
         配列の実体はヒープ上に確保され,
    public static int power( int x, int n ){略}       [0]=0       [1]=0     [2]=0
}
         変数a自体は実体のある
         場所(アドレス)だけ保持している.
       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                              9
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック          メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                 a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                             i           n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                              sum
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ          メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3       [1]=0     [2]=0
}



       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                              10
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック          メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                 a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                             i           n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                              sum
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ          メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3       [1]=7     [2]=0
}



       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                              11
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック          メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                 a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                             i           n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                              sum
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ          メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3       [1]=7     [2]=4
}



       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                              12
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック          メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                 a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                             i           n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                              sum
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ          メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3       [1]=7     [2]=4
}
                                                     [0]=0       [1]=0     [2]=0

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                              13
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック          メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                 a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                         i=0             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                              sum
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ          メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3       [1]=7     [2]=4
}
                                                     [0]=0       [1]=0     [2]=0

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                              14
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック           メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                          i=0             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                               sum
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ           メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3        [1]=7     [2]=4
}
                                                     [0]=27       [1]=0     [2]=0

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                               15
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック           メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                          i=1             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                               sum
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ           メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3        [1]=7     [2]=4
}
                                                     [0]=27       [1]=0     [2]=0

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                               16
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック           メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                          i=1             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                               sum
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ           メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3        [1]=7     [2]=4
}
                                                     [0]=27       [1]=0     [2]=0

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                               17
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック            メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                          i=1               n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                               sum
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ            メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3        [1]=7      [2]=4
}
                                                     [0]=27       [1]=343    [2]=0

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                                 18
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック            メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                          i=2               n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                               sum
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ            メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3        [1]=7      [2]=4
}
                                                     [0]=27       [1]=343    [2]=0

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                                 19
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック            メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                          i=2               n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                               sum
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ            メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3        [1]=7      [2]=4
}
                                                     [0]=27       [1]=343    [2]=0

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                                 20
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック            メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                          i=2             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                               sum
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ            メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3        [1]=7     [2]=4
}
                                                     [0]=27       [1]=343 [2]=64

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                               21
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック            メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                          i=3             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                               sum
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ            メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3        [1]=7     [2]=4
}
                                                     [0]=27       [1]=343 [2]=64

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                               22
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック            メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                          i=3             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                               sum
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ            メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3        [1]=7     [2]=4
}
                                                     [0]=27       [1]=343 [2]=64

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                               23
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック            メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                          i=3             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                               sum
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ            メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3        [1]=7     [2]=4
}
                                                     [0]=27       [1]=343 [2]=64

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                               24
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック            メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                          i=3             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                              sum=0
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ            メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3        [1]=7     [2]=4
}
                                                     [0]=27       [1]=343 [2]=64

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                               25
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック            メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                          i=0             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                              sum=0
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ            メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3        [1]=7     [2]=4
}
                                                     [0]=27       [1]=343 [2]=64

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                               26
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック            メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                          i=0             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                             sum=27
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ            メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3        [1]=7     [2]=4
}
                                                     [0]=27       [1]=343 [2]=64

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                               27
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック            メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                          i=1             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                             sum=27
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ            メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3        [1]=7     [2]=4
}
                                                     [0]=27       [1]=343 [2]=64

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                               28
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック            メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                          i=1             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                             sum=27
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ            メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3        [1]=7     [2]=4
}
                                                     [0]=27       [1]=343 [2]=64

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                               29
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック            メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                          i=1             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                             sum=370
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ            メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3        [1]=7     [2]=4
}
                                                     [0]=27       [1]=343 [2]=64

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                               30
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック            メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                          i=2             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                             sum=370
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ            メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3        [1]=7     [2]=4
}
                                                     [0]=27       [1]=343 [2]=64

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                               31
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック           メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                 a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                         i=2             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                            sum=370
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ           メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3       [1]=7     [2]=4
}
                                                     [0]=9       [1]=343 [2]=64

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                              32
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック            メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                          i=2             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                             sum=434
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ            メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3        [1]=7     [2]=4
}
                                                     [0]=27       [1]=343 [2]=64

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                               33
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック            メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                          i=3             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                             sum=434
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ            メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3        [1]=7     [2]=4
}
                                                     [0]=27       [1]=343 [2]=64

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                               34
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック           メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                 a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                         i=3             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                            sum=434
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ           メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3       [1]=7     [2]=4
}
                                                     [0]=9       [1]=343 [2]=64

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                              35
どのように計算されているのか

Test07b.java     べき乗の合計を求める                          スタック           メモリの一部
public class Test07b {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                 a           pow_a
    int[] pow_a;
    int    i, n, sum;
                                                         i=3             n=3
    n = 3;
    a = new int[3];
                        長さ3の配列を生成
    a[0]=3; a[1]=7; a[2]=4;                            sum=434
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                         }    べき乗の
                                              計算


     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }
     for ( i = 0; i < pow_a.length; i++ ){    合計の
                                              計算
                                                      ヒープ           メモリの一部
    }
    public static int power( int x, int n ){略}       [0]=3       [1]=7     [2]=4
}
                                                     [0]=9       [1]=343 [2]=64

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                              36
練習7-b.

Test07b.java     プロジェクト名: test07
public class Test07b {
  public static void main( String[] args ){
                                            デバッガを使って
    int[] a;                                (1) pow_a および sum が
    int[] pow_a;
    int    i, n, sum;                           計算されていく様子を
    n = 3;
    a = new int[3];
                       長さ3の配列を生成                確認せよ
    a[0]=3; a[1]=7; a[2]=4;                 (2) 変数 n の値を 2 などに
                                                変更しても正しく計算
     pow_a = new int[a.length];
     for ( i = 0; i < a.length; i++ ){

     }
       pow_a[i] = power(a[i],n);

     sum = 0;
                                       べき乗の
                                       計算}      されることを確認せよ

     for ( i = 0; i < pow_a.length; i++ ){

     }
       sum = sum + pow_a[i];

     System.out.println(“sum=“+sum);
                                         }    合計の
                                              計算
    }
    public static int power( int x, int n ){略}
}



       2008年8月,データ解析の基礎,加藤,瀬々,金子.                         37
配列のまとめ

int型配列    int[]
double型配列 double[]

配列の領域確保
 double[] x;
 x = new double[3];




     x       配列は参照型          a.length
  ヒープ                         a が参照している配列の
                              長さ
[0]=10.0 [1]=10.1 [2]=10.2

 添え字は0から始まる
2008年8月,データ解析の基礎,加藤,瀬々,金子.                   38
目標

• 配列を理解する
  –   配列は多数のデータを表すのに便利
  –   データ群から統計量を求めよう
  –   配列に一気に数値を代入する方法
  –   メソッドに配列を渡すには


• 2次元配列を理解する




 2008年8月,データ解析の基礎,加藤,瀬々,金子.   39
数値データ群の統計量を計算してみよう
                       遺伝子ネットワークの場合
• 統計量の例
  – 合計
  – 平均
  – 最大値,最小値



    ネットワークの性質を調べたい

    数値データ
      遺伝子    1    2     3     4   5   6   7
      次数     2    2     1     4   3   2   2



 2008年8月,データ解析の基礎,加藤,瀬々,金子.                   40
数値データ群の統計量を計算してみよう
                       遺伝子ネットワークの場合
• 統計量の例
  – 合計
  – 平均
  – 最大値,最小値



    ネットワークの性質を調べたい

    数値データ
      遺伝子    1    2     3     4   5   6   7
      次数     2    2     1     4   3   2   2

      辺の数 = 次数の合計/2
 2008年8月,データ解析の基礎,加藤,瀬々,金子.                   41
数値データ群の統計量を計算してみよう
                       遺伝子ネットワークの場合
• 統計量の例
  – 合計
  – 平均
  – 最大値,最小値



    ネットワークの性質を調べたい

    数値データ
      遺伝子    1    2     3     4   5   6   7
      次数     2    2     1     4   3   2   2

      次数の平均から,ネットワークがどれくらい密か分かる
 2008年8月,データ解析の基礎,加藤,瀬々,金子.                   42
数値データ群の統計量を計算してみよう
                       遺伝子ネットワークの場合
• 統計量の例
  – 合計
  – 平均
  – 最大値,最小値



    ネットワークの性質を調べたい

    数値データ
      遺伝子    1    2     3     4   5   6   7
      次数     2    2     1     4   3   2   2

      最大次数を持つ遺伝子はハブと呼ばれる重要な遺伝子である
 2008年8月,データ解析の基礎,加藤,瀬々,金子.                   43
配列データの最大値を探すには
                     配列データ中,最大の数値を見つけるプログラム
Test07c.java

public class Test07c {                               計算方法:
  public static void main( String[] args ){
    int[] a;
                                                     データを一つずつみて
    int   i;                                         新記録なら記録を更新する
    int   max_a;
    a = new int[3];
    a[0]=3; a[1]=7; a[2]=4;                    計算機で表現できる最小の整数を
        max_a = Integer.MIN_VALUE;             変数 max_a に代入
        for ( i = 0; i < a.length; i++ ){
          if ( max_a < a[i] ){


        }
          }
            max_a = a[i];
                                              }変数a[i]の値がmax_aより大きいなら
                                               max_a に a[i] を代入する
        System.out.println(“max_a=“+max_a);
    }
}




         2008年8月,データ解析の基礎,加藤,瀬々,金子.                              44
最大値計算の過程

Test07c.java
                                                      スタック      メモリの一部
public class Test07c {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                a     i
    int
    int
          i;
          max_a;     長さ3の配列を生成
    a = new int[3];                                     max_a
    a[0]=3; a[1]=7; a[2]=4;

        max_a = java.lang.Integer.MIN_VALUE;
        for ( i = 0; i < a.length; i++ ){



        }
          if ( max_a < a[i] ){

          }
            max_a = a[i];                  }   最大値の
                                               計算

        System.out.println(“max_a=“+max_a);
    }
}
                                                      ヒープ       メモリの一部



         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                   45
最大値計算の過程

Test07c.java
                                                      スタック           メモリの一部
public class Test07c {                                 main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                 a            i
    int
    int
          i;
          max_a;     長さ3の配列を生成
    a = new int[3];                                         max_a
    a[0]=3; a[1]=7; a[2]=4;

        max_a = java.lang.Integer.MIN_VALUE;
        for ( i = 0; i < a.length; i++ ){



        }
          if ( max_a < a[i] ){

          }
            max_a = a[i];                  }   最大値の
                                               計算

        System.out.println(“max_a=“+max_a);
    }
}
                                                      ヒープ            メモリの一部
                                                      [0]           [1]       [2]



         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                            46
最大値計算の過程

Test07c.java
                                                      スタック          メモリの一部
public class Test07c {                                  main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           i
    int
    int
          i;
          max_a;     長さ3の配列を生成
    a = new int[3];                                       max_a
    a[0]=3; a[1]=7; a[2]=4;

        max_a = java.lang.Integer.MIN_VALUE;
        for ( i = 0; i < a.length; i++ ){



        }
          if ( max_a < a[i] ){

          }
            max_a = a[i];                  }   最大値の
                                               計算

        System.out.println(“max_a=“+max_a);
    }
}
                                                       ヒープ          メモリの一部
                                                      [0]=3       [1]=7   [2]=4



         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                           47
最大値計算の過程

Test07c.java
                                                      スタック           メモリの一部
public class Test07c {                                  main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           i
    int
    int
          i;
          max_a;     長さ3の配列を生成
    a = new int[3];                                     max_a=最小整数
    a[0]=3; a[1]=7; a[2]=4;

        max_a = java.lang.Integer.MIN_VALUE;
        for ( i = 0; i < a.length; i++ ){



        }
          if ( max_a < a[i] ){

          }
            max_a = a[i];                  }   最大値の
                                               計算

        System.out.println(“max_a=“+max_a);
    }
}
                                                       ヒープ           メモリの一部
                                                      [0]=3       [1]=7   [2]=4



         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                           48
最大値計算の過程

Test07c.java
                                                      スタック           メモリの一部
public class Test07c {                                  main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           i=0
    int
    int
          i;
          max_a;     長さ3の配列を生成
    a = new int[3];                                     max_a=最小整数
    a[0]=3; a[1]=7; a[2]=4;

        max_a = java.lang.Integer.MIN_VALUE;
        for ( i = 0; i < a.length; i++ ){



        }
          if ( max_a < a[i] ){

          }
            max_a = a[i];                  }   最大値の
                                               計算

        System.out.println(“max_a=“+max_a);
    }
}
                                                       ヒープ           メモリの一部
                                                      [0]=3       [1]=7    [2]=4



         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                             49
最大値計算の過程

Test07c.java
                                                      スタック           メモリの一部
public class Test07c {                                  main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           i=0
    int
    int
          i;
          max_a;     長さ3の配列を生成
    a = new int[3];                                     max_a=最小整数
    a[0]=3; a[1]=7; a[2]=4;

        max_a = java.lang.Integer.MIN_VALUE;
        for ( i = 0; i < a.length; i++ ){



        }
          if ( max_a < a[i] ){

          }
            max_a = a[i];                  }   最大値の
                                               計算

        System.out.println(“max_a=“+max_a);
    }
}
                                                       ヒープ           メモリの一部
                                                      [0]=3       [1]=7    [2]=4



         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                             50
最大値計算の過程

Test07c.java
                                                      スタック           メモリの一部
public class Test07c {                                  main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           i=0
    int
    int
          i;
          max_a;     長さ3の配列を生成
    a = new int[3];                                     max_a=最小整数
    a[0]=3; a[1]=7; a[2]=4;

        max_a = java.lang.Integer.MIN_VALUE;
        for ( i = 0; i < a.length; i++ ){



        }
          if ( max_a < a[i] ){

          }
            max_a = a[i];                  }   最大値の
                                               計算

        System.out.println(“max_a=“+max_a);
    }
}
                                                       ヒープ           メモリの一部
                                                      [0]=3       [1]=7    [2]=4



         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                             51
最大値計算の過程

Test07c.java
                                                      スタック          メモリの一部
public class Test07c {                                  main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           i=0
    int
    int
          i;
          max_a;     長さ3の配列を生成
    a = new int[3];                                     max_a=3
    a[0]=3; a[1]=7; a[2]=4;

        max_a = java.lang.Integer.MIN_VALUE;
        for ( i = 0; i < a.length; i++ ){



        }
          if ( max_a < a[i] ){

          }
            max_a = a[i];                  }   最大値の
                                               計算

        System.out.println(“max_a=“+max_a);
    }
}
                                                       ヒープ          メモリの一部
                                                      [0]=3       [1]=7    [2]=4



         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                             52
最大値計算の過程

Test07c.java
                                                      スタック          メモリの一部
public class Test07c {                                  main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           i=1
    int
    int
          i;
          max_a;     長さ3の配列を生成
    a = new int[3];                                     max_a=3
    a[0]=3; a[1]=7; a[2]=4;

        max_a = java.lang.Integer.MIN_VALUE;
        for ( i = 0; i < a.length; i++ ){



        }
          if ( max_a < a[i] ){

          }
            max_a = a[i];                  }   最大値の
                                               計算

        System.out.println(“max_a=“+max_a);
    }
}
                                                       ヒープ          メモリの一部
                                                      [0]=3       [1]=7    [2]=4



         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                             53
最大値計算の過程

Test07c.java
                                                      スタック          メモリの一部
public class Test07c {                                  main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           i=1
    int
    int
          i;
          max_a;     長さ3の配列を生成
    a = new int[3];                                     max_a=3
    a[0]=3; a[1]=7; a[2]=4;

        max_a = java.lang.Integer.MIN_VALUE;
        for ( i = 0; i < a.length; i++ ){



        }
          if ( max_a < a[i] ){

          }
            max_a = a[i];                  }   最大値の
                                               計算

        System.out.println(“max_a=“+max_a);
    }
}
                                                       ヒープ          メモリの一部
                                                      [0]=3       [1]=7    [2]=4



         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                             54
最大値計算の過程

Test07c.java
                                                      スタック          メモリの一部
public class Test07c {                                  main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           i=1
    int
    int
          i;
          max_a;     長さ3の配列を生成
    a = new int[3];                                     max_a=3
    a[0]=3; a[1]=7; a[2]=4;

        max_a = java.lang.Integer.MIN_VALUE;
        for ( i = 0; i < a.length; i++ ){



        }
          if ( max_a < a[i] ){

          }
            max_a = a[i];                  }   最大値の
                                               計算

        System.out.println(“max_a=“+max_a);
    }
}
                                                       ヒープ          メモリの一部
                                                      [0]=3       [1]=7    [2]=4



         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                             55
最大値計算の過程

Test07c.java
                                                      スタック          メモリの一部
public class Test07c {                                  main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           i=1
    int
    int
          i;
          max_a;     長さ3の配列を生成
    a = new int[3];                                     max_a=7
    a[0]=3; a[1]=7; a[2]=4;

        max_a = java.lang.Integer.MIN_VALUE;
        for ( i = 0; i < a.length; i++ ){



        }
          if ( max_a < a[i] ){

          }
            max_a = a[i];                  }   最大値の
                                               計算

        System.out.println(“max_a=“+max_a);
    }
}
                                                       ヒープ          メモリの一部
                                                      [0]=3       [1]=7    [2]=4



         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                             56
最大値計算の過程

Test07c.java
                                                      スタック          メモリの一部
public class Test07c {                                  main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           i=2
    int
    int
          i;
          max_a;     長さ3の配列を生成
    a = new int[3];                                     max_a=7
    a[0]=3; a[1]=7; a[2]=4;

        max_a = java.lang.Integer.MIN_VALUE;
        for ( i = 0; i < a.length; i++ ){



        }
          if ( max_a < a[i] ){

          }
            max_a = a[i];                  }   最大値の
                                               計算

        System.out.println(“max_a=“+max_a);
    }
}
                                                       ヒープ          メモリの一部
                                                      [0]=3       [1]=7    [2]=4



         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                             57
最大値計算の過程

Test07c.java
                                                      スタック          メモリの一部
public class Test07c {                                  main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           i=2
    int
    int
          i;
          max_a;     長さ3の配列を生成
    a = new int[3];                                     max_a=7
    a[0]=3; a[1]=7; a[2]=4;

        max_a = java.lang.Integer.MIN_VALUE;
        for ( i = 0; i < a.length; i++ ){



        }
          if ( max_a < a[i] ){

          }
            max_a = a[i];                  }   最大値の
                                               計算

        System.out.println(“max_a=“+max_a);
    }
}
                                                       ヒープ          メモリの一部
                                                      [0]=3       [1]=7    [2]=4



         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                             58
最大値計算の過程

Test07c.java
                                                      スタック          メモリの一部
public class Test07c {                                  main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           i=2
    int
    int
          i;
          max_a;     長さ3の配列を生成
    a = new int[3];                                     max_a=7
    a[0]=3; a[1]=7; a[2]=4;

        max_a = java.lang.Integer.MIN_VALUE;
        for ( i = 0; i < a.length; i++ ){



        }
          if ( max_a < a[i] ){

          }
            max_a = a[i];                  }   最大値の
                                               計算

        System.out.println(“max_a=“+max_a);
    }
}
                                                       ヒープ          メモリの一部
                                                      [0]=3       [1]=7    [2]=4



         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                             59
最大値計算の過程

Test07c.java
                                                      スタック          メモリの一部
public class Test07c {                                  main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           i=3
    int
    int
          i;
          max_a;     長さ3の配列を生成
    a = new int[3];                                     max_a=7
    a[0]=3; a[1]=7; a[2]=4;

        max_a = java.lang.Integer.MIN_VALUE;
        for ( i = 0; i < a.length; i++ ){



        }
          if ( max_a < a[i] ){

          }
            max_a = a[i];                  }   最大値の
                                               計算

        System.out.println(“max_a=“+max_a);
    }
}
                                                       ヒープ          メモリの一部
                                                      [0]=3       [1]=7    [2]=4



         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                             60
最大値計算の過程

Test07c.java
                                                      スタック          メモリの一部
public class Test07c {                                  main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           i=3
    int
    int
          i;
          max_a;     長さ3の配列を生成
    a = new int[3];                                     max_a=7
    a[0]=3; a[1]=7; a[2]=4;

        max_a = java.lang.Integer.MIN_VALUE;
        for ( i = 0; i < a.length; i++ ){



        }
          if ( max_a < a[i] ){

          }
            max_a = a[i];                  }   最大値の
                                               計算

        System.out.println(“max_a=“+max_a);
    }
}
                                                       ヒープ          メモリの一部
                                                      [0]=3       [1]=7    [2]=4



         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                             61
最大値計算の過程

Test07c.java
                                                      スタック          メモリの一部
public class Test07c {                                  main のスタックフレーム
  public static void main( String[] args ){
    int[] a;                                                  a           i=3
    int
    int
          i;
          max_a;     長さ3の配列を生成
    a = new int[3];                                     max_a=7
    a[0]=3; a[1]=7; a[2]=4;

        max_a = java.lang.Integer.MIN_VALUE;
        for ( i = 0; i < a.length; i++ ){



        }
          if ( max_a < a[i] ){

          }
            max_a = a[i];                  }   最大値の
                                               計算

        System.out.println(“max_a=“+max_a);
    }
}
                                                       ヒープ          メモリの一部
                                                      [0]=3       [1]=7    [2]=4



         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                             62
練習7-c.

Test07c.java       プロジェクト名: test07
public class Test07c {
  public static void main( String[] args ){
                                               デバッガを使って
    int[] a;                                   (1) max_a が正しく
    int   i;
    int   max_a;                                   更新されていく過程
    a = new int[3];
    a[0]=3; a[1]=7; a[2]=4;
                                                   を観測せよ
                                               (2) 配列データの数値を
        max_a = java.lang.Integer.MIN_VALUE;
        for ( i = 0; i < a.length; i++ ){          適当に変更しても
          if ( max_a < a[i] ){
            max_a = a[i];
                                                   正しく最大値が
          }                                        計算されることを
        }
        System.out.println(“max_a=“+max_a);        確認せよ
    }
}




         2008年8月,データ解析の基礎,加藤,瀬々,金子.                        63
練習7-d.

Test07d.java       プロジェクト名: test07
public class Test07c {
  public static void main( String[] args ){
                                               最小値を求める
    int[] a;                                   プログラムを完成させよ
    int
    int
          i;
          min_a;
                       最小値をこの変数に入れる
    a = new int[3];
    a[0]=3; a[1]=7; a[2]=4;

        min_a = java.lang.Integer.MAX_VALUE;
        for ( i = 0; i < a.length; i++ ){
          if ( min_a > a[i] ){
                   この部分を埋めよ
            min_a = a[i];
                                               int型の最大値
          }                                    java.lang.Integer.MAX_VALUE;
        }
        System.out.println(“min_a=“+min_a);
    }
}




         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                    64
練習7-e.

Test07e.java       プロジェクト名: test07             このプログラムは最小値
                                               を求め,何番目のデータ
public class Test07c {
  public static void main( String[] args ){    が最小値をとるか計算す
    int[] a;
    int   i, i_min;
                                               るプログラムである
    int   min_a;
    a = new int[3];
                                               この場合,
    a[0]=7; a[1]=3; a[2]=4;                    以下のような出力となる
        i_min = -1;                                画面
        min_a = java.lang.Integer.MAX_VALUE;   min_a=3
        for ( i = 0; i < a.length; i++ ){      i_min=1
          if ( min_a > a[i] ){
            min_a = a[i];

          }
            i_min = i;
                                               (1) 数値を適当に変更して
        }                                          みて,それでも正しく
        System.out.println(“min_a=“+min_a);
        System.out.println(“i_min=“+i_min);        計算されることを確認
    }
}                                                  せよ
                                               (2) なぜ最小データの番号
                                                   が計算できるか考えよ
         2008年8月,データ解析の基礎,加藤,瀬々,金子.                       65
練習7-e0.

Test07e0.java      プロジェクト名: test07                このプログラムは最大値
                                                  を求め,何番目のデータ
public class Test07c {
  public static void main( String[] args ){       が最大値をとるか計算す
    int[] a;
    int   i, i_max;
                                                  るプログラムを完成させよ
    int   max_a;
    a = new int[3];
    a[0]=7; a[1]=3; a[2]=4;

    // Compute the maximal number and its index

        System.out.println(“max_a=“+max_a);
        System.out.println(“i_max=“+i_max);
    }
}




         2008年8月,データ解析の基礎,加藤,瀬々,金子.                        66
目標

• 配列を理解する
  –   配列は多数のデータを表すのに便利
  –   データ群から統計量を求めよう
  –   配列に一気に数値を代入する方法
  –   メソッドに配列を渡すには


• 2次元配列を理解する




 2008年8月,データ解析の基礎,加藤,瀬々,金子.   67
最小値計算プログラム再考

Test07d.java       プロジェクト名: test07
public class Test07f {                         下の2つのコードは等価
  public static void main( String[] args ){
    int[] a;
    int   i;
                                               a = new int[3];
    int   min_a;                               a[0]=3; a[1]=7; a[2]=4;
    a = new int[3];
    a[0]=3; a[1]=7; a[2]=4;                     長さ3の配列を確保し
        min_a = java.lang.Integer.MAX_VALUE;
                                                それから値を代入
        for ( i = 0; i < a.length; i++ ){
          if ( min_a > a[i] ){
            min_a = a[i];                      a = new int[]{3,7,4};
          }
        }                                       初期値{3,7,4} の配列を確保
        System.out.println(“min_a=“+min_a);
    }
}




         2008年8月,データ解析の基礎,加藤,瀬々,金子.                                    68
「配列の初期化」を使うと2行が1行に

Test07f.java       プロジェクト名: test07
public class Test07f {
  public static void main( String[] args ){
    int[] a;
    int   i;
    int   min_a;
    a = new int[]{3,7,4};

        min_a = java.lang.Integer.MAX_VALUE;
        for ( i = 0; i < a.length; i++ ){
          if ( min_a > a[i] ){
            min_a = a[i];
          }
        }
        System.out.println(“min_a=“+min_a);
    }
}




         2008年8月,データ解析の基礎,加藤,瀬々,金子.            69
目標

• 配列を理解する
  –   配列は多数のデータを表すのに便利
  –   データ群から統計量を求めよう
  –   配列に一気に数値を代入する方法
  –   メソッドに配列を渡すには


• 2次元配列を理解する




 2008年8月,データ解析の基礎,加藤,瀬々,金子.   70
最小値計算部分をメソッドに

                  プロジェクト名: test07
Test07g.java

 public class Test07g {
   public static void main( String[] args ){
     int[] a;
     int   min_a;                              これでmainメソッドは
     a = new int[]{3,7,4};
                                               スッキリ
      min_a = min(a);
      System.out.println(“min_a=“+min_a);
     }
     public static int min( int[] a ){
       int i, ret;
                                            配列を引数にするメソッド
       ret = java.lang.Integer.MAX_VALUE;
       for ( i = 0; i < a.length; i++ ){
         if ( ret > a[i] ){
           ret = a[i];
         }
       }
       return ret;
     }
 }


      2008年8月,データ解析の基礎,加藤,瀬々,金子.                              71
どのように計算されているか

                  プロジェクト名: test07              スタック      メモリの一部
Test07g.java
                                                main のスタックフレーム
 public class Test07g {
   public static void main( String[] args ){         a
     int[] a;
     int   min_a;
     a = new int[]{3,7,4};                       min_a

      min_a = min(a);
      System.out.println(“min_a=“+min_a);
     }
     public static int min( int[] a ){
       int i, ret;
       ret = java.lang.Integer.MAX_VALUE;
       for ( i = 0; i < a.length; i++ ){
         if ( ret > a[i] ){
           ret = a[i];
         }
       }                                       ヒープ       メモリの一部
       return ret;
     }
 }


      2008年8月,データ解析の基礎,加藤,瀬々,金子.                                 72
どのように計算されているか

                  プロジェクト名: test07              スタック          メモリの一部
Test07g.java
                                                main のスタックフレーム
 public class Test07g {
   public static void main( String[] args ){           a
     int[] a;
     int   min_a;
     a = new int[]{3,7,4};                        min_a

      min_a = min(a);
      System.out.println(“min_a=“+min_a);
     }
     public static int min( int[] a ){
       int i, ret;
       ret = java.lang.Integer.MAX_VALUE;
       for ( i = 0; i < a.length; i++ ){
         if ( ret > a[i] ){
           ret = a[i];
         }
       }                                        ヒープ          メモリの一部
       return ret;
     }                                         [0]=3       [1]=7   [2]=4
 }


      2008年8月,データ解析の基礎,加藤,瀬々,金子.                                      73
min(a)を呼び出す
 すると新たなスタックフレームが作られる

                  プロジェクト名: test07              スタック          メモリの一部
Test07g.java
                                                main のスタックフレーム
 public class Test07g {
   public static void main( String[] args ){           a
     int[] a;
     int   min_a;
     a = new int[]{3,7,4};                        min_a

      min_a = min(a);
      System.out.println(“min_a=“+min_a);        min のスタックフレーム
     }
     public static int min( int[] a ){
       int i, ret;
                                                       a           i
       ret = java.lang.Integer.MAX_VALUE;
       for ( i = 0; i < a.length; i++ ){           ret
         if ( ret > a[i] ){
           ret = a[i];
         }          引数には,配列全体がコ
       }
                    ピーされるのではなくて
                                                ヒープ          メモリの一部
       return ret;
                                               [0]=3       [1]=7   [2]=4
 }
     }              参照のみがコピーされて
                    いることに注意.
      2008年8月,データ解析の基礎,加藤,瀬々,金子.                                       74
どのように計算されているか

                  プロジェクト名: test07              スタック          メモリの一部
Test07g.java
                                                main のスタックフレーム
 public class Test07g {
   public static void main( String[] args ){           a
     int[] a;
     int   min_a;
     a = new int[]{3,7,4};                        min_a

      min_a = min(a);
      System.out.println(“min_a=“+min_a);        min のスタックフレーム
     }
     public static int min( int[] a ){
       int i, ret;
                                                       a           i
       ret = java.lang.Integer.MAX_VALUE;
       for ( i = 0; i < a.length; i++ ){         ret=最大整数
         if ( ret > a[i] ){
           ret = a[i];
         }
       }                                        ヒープ          メモリの一部
       return ret;
     }                                         [0]=3       [1]=7   [2]=4
 }


      2008年8月,データ解析の基礎,加藤,瀬々,金子.                                       75
どのように計算されているか

                  プロジェクト名: test07              スタック          メモリの一部
Test07g.java
                                                main のスタックフレーム
 public class Test07g {
   public static void main( String[] args ){           a
     int[] a;
     int   min_a;
     a = new int[]{3,7,4};                        min_a

      min_a = min(a);
      System.out.println(“min_a=“+min_a);        min のスタックフレーム
     }
     public static int min( int[] a ){
       int i, ret;
                                                       a           i=0
       ret = java.lang.Integer.MAX_VALUE;
       for ( i = 0; i < a.length; i++ ){         ret=最大整数
         if ( ret > a[i] ){
           ret = a[i];
         }
       }                                        ヒープ          メモリの一部
       return ret;
     }                                         [0]=3       [1]=7    [2]=4
 }


      2008年8月,データ解析の基礎,加藤,瀬々,金子.                                         76
どのように計算されているか

                  プロジェクト名: test07              スタック          メモリの一部
Test07g.java
                                                main のスタックフレーム
 public class Test07g {
   public static void main( String[] args ){           a
     int[] a;
     int   min_a;
     a = new int[]{3,7,4};                        min_a

      min_a = min(a);
      System.out.println(“min_a=“+min_a);        min のスタックフレーム
     }
     public static int min( int[] a ){
       int i, ret;
                                                       a           i=0
       ret = java.lang.Integer.MAX_VALUE;
       for ( i = 0; i < a.length; i++ ){         ret=最大整数
         if ( ret > a[i] ){
           ret = a[i];
         }
       }                                        ヒープ          メモリの一部
       return ret;
     }                                         [0]=3       [1]=7    [2]=4
 }


      2008年8月,データ解析の基礎,加藤,瀬々,金子.                                         77
どのように計算されているか

                  プロジェクト名: test07              スタック          メモリの一部
Test07g.java
                                                main のスタックフレーム
 public class Test07g {
   public static void main( String[] args ){           a
     int[] a;
     int   min_a;
     a = new int[]{3,7,4};                        min_a

      min_a = min(a);
      System.out.println(“min_a=“+min_a);        min のスタックフレーム
     }
     public static int min( int[] a ){
       int i, ret;
                                                       a           i=0
       ret = java.lang.Integer.MAX_VALUE;
       for ( i = 0; i < a.length; i++ ){          ret=3
         if ( ret > a[i] ){
           ret = a[i];
         }
       }                                        ヒープ          メモリの一部
       return ret;
     }                                         [0]=3       [1]=7    [2]=4
 }


      2008年8月,データ解析の基礎,加藤,瀬々,金子.                                         78
どのように計算されているか

                  プロジェクト名: test07              スタック          メモリの一部
Test07g.java
                                                main のスタックフレーム
 public class Test07g {
   public static void main( String[] args ){           a
     int[] a;
     int   min_a;
     a = new int[]{3,7,4};                        min_a

      min_a = min(a);
      System.out.println(“min_a=“+min_a);        min のスタックフレーム
     }
     public static int min( int[] a ){
       int i, ret;
                                                       a           i=1
       ret = java.lang.Integer.MAX_VALUE;
       for ( i = 0; i < a.length; i++ ){          ret=3
         if ( ret > a[i] ){
           ret = a[i];
         }
       }                                        ヒープ          メモリの一部
       return ret;
     }                                         [0]=3       [1]=7    [2]=4
 }


      2008年8月,データ解析の基礎,加藤,瀬々,金子.                                         79
どのように計算されているか

                  プロジェクト名: test07              スタック          メモリの一部
Test07g.java
                                                main のスタックフレーム
 public class Test07g {
   public static void main( String[] args ){           a
     int[] a;
     int   min_a;
     a = new int[]{3,7,4};                        min_a

      min_a = min(a);
      System.out.println(“min_a=“+min_a);        min のスタックフレーム
     }
     public static int min( int[] a ){
       int i, ret;
                                                       a           i=1
       ret = java.lang.Integer.MAX_VALUE;
       for ( i = 0; i < a.length; i++ ){          ret=3
         if ( ret > a[i] ){
           ret = a[i];
         }
       }                                        ヒープ          メモリの一部
       return ret;
     }                                         [0]=3       [1]=7    [2]=4
 }


      2008年8月,データ解析の基礎,加藤,瀬々,金子.                                         80
どのように計算されているか

                  プロジェクト名: test07              スタック          メモリの一部
Test07g.java
                                                main のスタックフレーム
 public class Test07g {
   public static void main( String[] args ){           a
     int[] a;
     int   min_a;
     a = new int[]{3,7,4};                        min_a

      min_a = min(a);
      System.out.println(“min_a=“+min_a);        min のスタックフレーム
     }
     public static int min( int[] a ){
       int i, ret;
                                                       a           i=1
       ret = java.lang.Integer.MAX_VALUE;
       for ( i = 0; i < a.length; i++ ){          ret=3
         if ( ret > a[i] ){
           ret = a[i];
         }
       }                                        ヒープ          メモリの一部
       return ret;
     }                                         [0]=3       [1]=7    [2]=4
 }


      2008年8月,データ解析の基礎,加藤,瀬々,金子.                                         81
どのように計算されているか

                  プロジェクト名: test07              スタック          メモリの一部
Test07g.java
                                                main のスタックフレーム
 public class Test07g {
   public static void main( String[] args ){           a
     int[] a;
     int   min_a;
     a = new int[]{3,7,4};                        min_a

      min_a = min(a);
      System.out.println(“min_a=“+min_a);        min のスタックフレーム
     }
     public static int min( int[] a ){
       int i, ret;
                                                       a           i=1
       ret = java.lang.Integer.MAX_VALUE;
       for ( i = 0; i < a.length; i++ ){          ret=3
         if ( ret > a[i] ){
           ret = a[i];
         }
       }                                        ヒープ          メモリの一部
       return ret;
     }                                         [0]=3       [1]=7    [2]=4
 }


      2008年8月,データ解析の基礎,加藤,瀬々,金子.                                         82
どのように計算されているか

                  プロジェクト名: test07              スタック          メモリの一部
Test07g.java
                                                main のスタックフレーム
 public class Test07g {
   public static void main( String[] args ){           a
     int[] a;
     int   min_a;
     a = new int[]{3,7,4};                        min_a

      min_a = min(a);
      System.out.println(“min_a=“+min_a);        min のスタックフレーム
     }
     public static int min( int[] a ){
       int i, ret;
                                                       a           i=2
       ret = java.lang.Integer.MAX_VALUE;
       for ( i = 0; i < a.length; i++ ){          ret=3
         if ( ret > a[i] ){
           ret = a[i];
         }
       }                                        ヒープ          メモリの一部
       return ret;
     }                                         [0]=3       [1]=7    [2]=4
 }


      2008年8月,データ解析の基礎,加藤,瀬々,金子.                                         83
どのように計算されているか

                  プロジェクト名: test07              スタック          メモリの一部
Test07g.java
                                                main のスタックフレーム
 public class Test07g {
   public static void main( String[] args ){           a
     int[] a;
     int   min_a;
     a = new int[]{3,7,4};                        min_a

      min_a = min(a);
      System.out.println(“min_a=“+min_a);        min のスタックフレーム
     }
     public static int min( int[] a ){
       int i, ret;
                                                       a           i=2
       ret = java.lang.Integer.MAX_VALUE;
       for ( i = 0; i < a.length; i++ ){          ret=3
         if ( ret > a[i] ){
           ret = a[i];
         }
       }                                        ヒープ          メモリの一部
       return ret;
     }                                         [0]=3       [1]=7    [2]=4
 }


      2008年8月,データ解析の基礎,加藤,瀬々,金子.                                         84
Ohp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 Hairetsu

More Related Content

What's hot

Hadaiqe bakhshish
Hadaiqe bakhshishHadaiqe bakhshish
Hadaiqe bakhshishsunninews92
 
Al Fazl International - 29th January 2016 Weekly UK
Al Fazl International - 29th  January  2016 Weekly UKAl Fazl International - 29th  January  2016 Weekly UK
Al Fazl International - 29th January 2016 Weekly UKmuzaffertahir9
 
Иван Аржанцев - Системы уравнений, базисы Грёбнера и алгоритм Бухбергера
Иван Аржанцев - Системы уравнений, базисы Грёбнера и алгоритм БухбергераИван Аржанцев - Системы уравнений, базисы Грёбнера и алгоритм Бухбергера
Иван Аржанцев - Системы уравнений, базисы Грёбнера и алгоритм БухбергераYandex
 
مصلحت پسندی یا شیطان کا دھوکہ؟ | Maslahat pasandi ya shaitan ka dhoka maqdisi
مصلحت پسندی یا شیطان کا دھوکہ؟ | Maslahat pasandi ya shaitan ka dhoka maqdisiمصلحت پسندی یا شیطان کا دھوکہ؟ | Maslahat pasandi ya shaitan ka dhoka maqdisi
مصلحت پسندی یا شیطان کا دھوکہ؟ | Maslahat pasandi ya shaitan ka dhoka maqdisiQuran Juz (Para)
 
3 klas matematika_bogdanovich_2014_ros
3 klas matematika_bogdanovich_2014_ros3 klas matematika_bogdanovich_2014_ros
3 klas matematika_bogdanovich_2014_rosSvinka Pepa
 

What's hot (7)

Shikshapatri
ShikshapatriShikshapatri
Shikshapatri
 
Hadaiqe bakhshish
Hadaiqe bakhshishHadaiqe bakhshish
Hadaiqe bakhshish
 
Al Fazl International - 29th January 2016 Weekly UK
Al Fazl International - 29th  January  2016 Weekly UKAl Fazl International - 29th  January  2016 Weekly UK
Al Fazl International - 29th January 2016 Weekly UK
 
Иван Аржанцев - Системы уравнений, базисы Грёбнера и алгоритм Бухбергера
Иван Аржанцев - Системы уравнений, базисы Грёбнера и алгоритм БухбергераИван Аржанцев - Системы уравнений, базисы Грёбнера и алгоритм Бухбергера
Иван Аржанцев - Системы уравнений, базисы Грёбнера и алгоритм Бухбергера
 
10th social science
10th social science10th social science
10th social science
 
مصلحت پسندی یا شیطان کا دھوکہ؟ | Maslahat pasandi ya shaitan ka dhoka maqdisi
مصلحت پسندی یا شیطان کا دھوکہ؟ | Maslahat pasandi ya shaitan ka dhoka maqdisiمصلحت پسندی یا شیطان کا دھوکہ؟ | Maslahat pasandi ya shaitan ka dhoka maqdisi
مصلحت پسندی یا شیطان کا دھوکہ؟ | Maslahat pasandi ya shaitan ka dhoka maqdisi
 
3 klas matematika_bogdanovich_2014_ros
3 klas matematika_bogdanovich_2014_ros3 klas matematika_bogdanovich_2014_ros
3 klas matematika_bogdanovich_2014_ros
 

Viewers also liked

Elegance Freguesia - Comercialização: 55 (21) 99219-0640 WhatsApp ou (21) 781...
Elegance Freguesia - Comercialização: 55 (21) 99219-0640 WhatsApp ou (21) 781...Elegance Freguesia - Comercialização: 55 (21) 99219-0640 WhatsApp ou (21) 781...
Elegance Freguesia - Comercialização: 55 (21) 99219-0640 WhatsApp ou (21) 781...Marcelo Silva
 
MHTSEP15_pg66-68_Cendol for Soul
MHTSEP15_pg66-68_Cendol for SoulMHTSEP15_pg66-68_Cendol for Soul
MHTSEP15_pg66-68_Cendol for SoulLim Teck Choon
 
Connect Life - Work - Trade - Taquara - Comercialização: 55 (21) 99219-0640...
Connect  Life - Work - Trade - Taquara  - Comercialização: 55 (21) 99219-0640...Connect  Life - Work - Trade - Taquara  - Comercialização: 55 (21) 99219-0640...
Connect Life - Work - Trade - Taquara - Comercialização: 55 (21) 99219-0640...Marcelo Silva
 
PRE: Datamining 2nd R
PRE: Datamining 2nd RPRE: Datamining 2nd R
PRE: Datamining 2nd Rsesejun
 
National Council Magazine 2015 Coleman article
National Council Magazine 2015 Coleman articleNational Council Magazine 2015 Coleman article
National Council Magazine 2015 Coleman articleCarol McCullough
 
Vila das Fontes Residencial - Vila da Penha - 55 (21) 99219-0640 WhatsApp | 7...
Vila das Fontes Residencial - Vila da Penha - 55 (21) 99219-0640 WhatsApp | 7...Vila das Fontes Residencial - Vila da Penha - 55 (21) 99219-0640 WhatsApp | 7...
Vila das Fontes Residencial - Vila da Penha - 55 (21) 99219-0640 WhatsApp | 7...Marcelo Silva
 
SQL Server Data Synchronization with Office 365
SQL Server Data Synchronization with Office 365SQL Server Data Synchronization with Office 365
SQL Server Data Synchronization with Office 365Layer2
 
Terug Naar De Kust Grontmij Juni 2008
Terug Naar De Kust Grontmij Juni 2008Terug Naar De Kust Grontmij Juni 2008
Terug Naar De Kust Grontmij Juni 2008Astrid_2010
 
Sql Server Analysis Server SSAS OLAP Integration Office 365
Sql Server Analysis Server SSAS OLAP Integration Office 365Sql Server Analysis Server SSAS OLAP Integration Office 365
Sql Server Analysis Server SSAS OLAP Integration Office 365Layer2
 
To a wild rose - Edward Mac Dowell
To a wild rose -  Edward Mac DowellTo a wild rose -  Edward Mac Dowell
To a wild rose - Edward Mac Dowelldavid bonnin
 

Viewers also liked (15)

Elegance Freguesia - Comercialização: 55 (21) 99219-0640 WhatsApp ou (21) 781...
Elegance Freguesia - Comercialização: 55 (21) 99219-0640 WhatsApp ou (21) 781...Elegance Freguesia - Comercialização: 55 (21) 99219-0640 WhatsApp ou (21) 781...
Elegance Freguesia - Comercialização: 55 (21) 99219-0640 WhatsApp ou (21) 781...
 
MHTSEP15_pg66-68_Cendol for Soul
MHTSEP15_pg66-68_Cendol for SoulMHTSEP15_pg66-68_Cendol for Soul
MHTSEP15_pg66-68_Cendol for Soul
 
Plezier 2
Plezier 2Plezier 2
Plezier 2
 
K9 Handler
K9 HandlerK9 Handler
K9 Handler
 
Connect Life - Work - Trade - Taquara - Comercialização: 55 (21) 99219-0640...
Connect  Life - Work - Trade - Taquara  - Comercialização: 55 (21) 99219-0640...Connect  Life - Work - Trade - Taquara  - Comercialização: 55 (21) 99219-0640...
Connect Life - Work - Trade - Taquara - Comercialização: 55 (21) 99219-0640...
 
Now Vila da Penha
Now Vila da PenhaNow Vila da Penha
Now Vila da Penha
 
PRE: Datamining 2nd R
PRE: Datamining 2nd RPRE: Datamining 2nd R
PRE: Datamining 2nd R
 
PSS
PSSPSS
PSS
 
National Council Magazine 2015 Coleman article
National Council Magazine 2015 Coleman articleNational Council Magazine 2015 Coleman article
National Council Magazine 2015 Coleman article
 
Vila das Fontes Residencial - Vila da Penha - 55 (21) 99219-0640 WhatsApp | 7...
Vila das Fontes Residencial - Vila da Penha - 55 (21) 99219-0640 WhatsApp | 7...Vila das Fontes Residencial - Vila da Penha - 55 (21) 99219-0640 WhatsApp | 7...
Vila das Fontes Residencial - Vila da Penha - 55 (21) 99219-0640 WhatsApp | 7...
 
SQL Server Data Synchronization with Office 365
SQL Server Data Synchronization with Office 365SQL Server Data Synchronization with Office 365
SQL Server Data Synchronization with Office 365
 
Terug Naar De Kust Grontmij Juni 2008
Terug Naar De Kust Grontmij Juni 2008Terug Naar De Kust Grontmij Juni 2008
Terug Naar De Kust Grontmij Juni 2008
 
Sql Server Analysis Server SSAS OLAP Integration Office 365
Sql Server Analysis Server SSAS OLAP Integration Office 365Sql Server Analysis Server SSAS OLAP Integration Office 365
Sql Server Analysis Server SSAS OLAP Integration Office 365
 
Resultados del proyecto Valencia SmartCity y retos en el ámbito de la seguridad
Resultados del proyecto Valencia SmartCity y retos en el ámbito de la seguridadResultados del proyecto Valencia SmartCity y retos en el ámbito de la seguridad
Resultados del proyecto Valencia SmartCity y retos en el ámbito de la seguridad
 
To a wild rose - Edward Mac Dowell
To a wild rose -  Edward Mac DowellTo a wild rose -  Edward Mac Dowell
To a wild rose - Edward Mac Dowell
 

More from sesejun

RNAseqによる変動遺伝子抽出の統計: A Review
RNAseqによる変動遺伝子抽出の統計: A ReviewRNAseqによる変動遺伝子抽出の統計: A Review
RNAseqによる変動遺伝子抽出の統計: A Reviewsesejun
 
バイオインフォマティクスによる遺伝子発現解析
バイオインフォマティクスによる遺伝子発現解析バイオインフォマティクスによる遺伝子発現解析
バイオインフォマティクスによる遺伝子発現解析sesejun
 
次世代シーケンサが求める機械学習
次世代シーケンサが求める機械学習次世代シーケンサが求める機械学習
次世代シーケンサが求める機械学習sesejun
 
20110602labseminar pub
20110602labseminar pub20110602labseminar pub
20110602labseminar pubsesejun
 
20110524zurichngs 2nd pub
20110524zurichngs 2nd pub20110524zurichngs 2nd pub
20110524zurichngs 2nd pubsesejun
 
20110524zurichngs 1st pub
20110524zurichngs 1st pub20110524zurichngs 1st pub
20110524zurichngs 1st pubsesejun
 
20110214nips2010 read
20110214nips2010 read20110214nips2010 read
20110214nips2010 readsesejun
 
Datamining 9th association_rule.key
Datamining 9th association_rule.keyDatamining 9th association_rule.key
Datamining 9th association_rule.keysesejun
 
Datamining 8th hclustering
Datamining 8th hclusteringDatamining 8th hclustering
Datamining 8th hclusteringsesejun
 
Datamining r 4th
Datamining r 4thDatamining r 4th
Datamining r 4thsesejun
 
Datamining r 3rd
Datamining r 3rdDatamining r 3rd
Datamining r 3rdsesejun
 
Datamining r 2nd
Datamining r 2ndDatamining r 2nd
Datamining r 2ndsesejun
 
Datamining r 1st
Datamining r 1stDatamining r 1st
Datamining r 1stsesejun
 
Datamining 6th svm
Datamining 6th svmDatamining 6th svm
Datamining 6th svmsesejun
 
Datamining 5th knn
Datamining 5th knnDatamining 5th knn
Datamining 5th knnsesejun
 
Datamining 4th adaboost
Datamining 4th adaboostDatamining 4th adaboost
Datamining 4th adaboostsesejun
 
Datamining 3rd naivebayes
Datamining 3rd naivebayesDatamining 3rd naivebayes
Datamining 3rd naivebayessesejun
 
Datamining 2nd decisiontree
Datamining 2nd decisiontreeDatamining 2nd decisiontree
Datamining 2nd decisiontreesesejun
 
Datamining 7th kmeans
Datamining 7th kmeansDatamining 7th kmeans
Datamining 7th kmeanssesejun
 
100401 Bioinfoinfra
100401 Bioinfoinfra100401 Bioinfoinfra
100401 Bioinfoinfrasesejun
 

More from sesejun (20)

RNAseqによる変動遺伝子抽出の統計: A Review
RNAseqによる変動遺伝子抽出の統計: A ReviewRNAseqによる変動遺伝子抽出の統計: A Review
RNAseqによる変動遺伝子抽出の統計: A Review
 
バイオインフォマティクスによる遺伝子発現解析
バイオインフォマティクスによる遺伝子発現解析バイオインフォマティクスによる遺伝子発現解析
バイオインフォマティクスによる遺伝子発現解析
 
次世代シーケンサが求める機械学習
次世代シーケンサが求める機械学習次世代シーケンサが求める機械学習
次世代シーケンサが求める機械学習
 
20110602labseminar pub
20110602labseminar pub20110602labseminar pub
20110602labseminar pub
 
20110524zurichngs 2nd pub
20110524zurichngs 2nd pub20110524zurichngs 2nd pub
20110524zurichngs 2nd pub
 
20110524zurichngs 1st pub
20110524zurichngs 1st pub20110524zurichngs 1st pub
20110524zurichngs 1st pub
 
20110214nips2010 read
20110214nips2010 read20110214nips2010 read
20110214nips2010 read
 
Datamining 9th association_rule.key
Datamining 9th association_rule.keyDatamining 9th association_rule.key
Datamining 9th association_rule.key
 
Datamining 8th hclustering
Datamining 8th hclusteringDatamining 8th hclustering
Datamining 8th hclustering
 
Datamining r 4th
Datamining r 4thDatamining r 4th
Datamining r 4th
 
Datamining r 3rd
Datamining r 3rdDatamining r 3rd
Datamining r 3rd
 
Datamining r 2nd
Datamining r 2ndDatamining r 2nd
Datamining r 2nd
 
Datamining r 1st
Datamining r 1stDatamining r 1st
Datamining r 1st
 
Datamining 6th svm
Datamining 6th svmDatamining 6th svm
Datamining 6th svm
 
Datamining 5th knn
Datamining 5th knnDatamining 5th knn
Datamining 5th knn
 
Datamining 4th adaboost
Datamining 4th adaboostDatamining 4th adaboost
Datamining 4th adaboost
 
Datamining 3rd naivebayes
Datamining 3rd naivebayesDatamining 3rd naivebayes
Datamining 3rd naivebayes
 
Datamining 2nd decisiontree
Datamining 2nd decisiontreeDatamining 2nd decisiontree
Datamining 2nd decisiontree
 
Datamining 7th kmeans
Datamining 7th kmeansDatamining 7th kmeans
Datamining 7th kmeans
 
100401 Bioinfoinfra
100401 Bioinfoinfra100401 Bioinfoinfra
100401 Bioinfoinfra
 

Recently uploaded

FAIL REKOD PENGAJARAN.pptx fail rekod pengajaran
FAIL REKOD PENGAJARAN.pptx fail rekod pengajaranFAIL REKOD PENGAJARAN.pptx fail rekod pengajaran
FAIL REKOD PENGAJARAN.pptx fail rekod pengajaransekolah233
 
Bahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali Azmibookbahareshariat
 
Bahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali Azmibookbahareshariat
 
Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...
Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...
Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...Eesti Loodusturism
 
Bahare Shariat Jild 3 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 3 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 3 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 3 By SadurshSharia Mufti Amjad Ali Azmibookbahareshariat
 
Bahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali Azmibookbahareshariat
 
محاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdf
محاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdfمحاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdf
محاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdfKhaled Elbattawy
 

Recently uploaded (8)

FAIL REKOD PENGAJARAN.pptx fail rekod pengajaran
FAIL REKOD PENGAJARAN.pptx fail rekod pengajaranFAIL REKOD PENGAJARAN.pptx fail rekod pengajaran
FAIL REKOD PENGAJARAN.pptx fail rekod pengajaran
 
Energy drink .
Energy drink                           .Energy drink                           .
Energy drink .
 
Bahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali Azmi
 
Bahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali Azmi
 
Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...
Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...
Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...
 
Bahare Shariat Jild 3 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 3 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 3 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 3 By SadurshSharia Mufti Amjad Ali Azmi
 
Bahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali Azmi
 
محاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdf
محاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdfمحاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdf
محاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdf
 

Ohp Seijoen H20 05 Hairetsu

  • 1. データ解析の基礎 配列 2008年8月,データ解析の基礎,加藤,瀬々,金子. 1
  • 2. 目標 • 配列を理解する – 配列は多数のデータを表すのに便利 – データ群から統計量を求めよう – 配列に一気に数値を代入する方法 – メソッドに配列を渡すには • 2次元配列を理解する 2008年8月,データ解析の基礎,加藤,瀬々,金子. 2
  • 3. べき乗の合計のプログラムをもっと汎用的に Test07a.java public class Test07a { public static void main( String[] args ){ int a, b, c, d, e, f, n; int pow_a, pow_b, pow_c, pow_d, pow_e, pow_f; int sum; n = 3; a = 3; b = 7; c = 4; d = 5; e = 9; f = 1; } sum = pow_a+pow_b+pow_c+pow_d+pow_e+pow_f; System.out.println(“sum=“+sum); } pow_a = power(a,n); pow_b = power(b,n); pow_c = power(c,n); pow_d = power(d,n); pow_e = power(e,n); pow_f = power(f,n); どこかで 書き間違えそう public static int power( int x, int n ){ int i, ret; データ数を ret = 1; for ( i = 0; i < n; i++ ){ 10000個もあったら ret = ret * x; どうする? } return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 3
  • 4. 配列を使って汎用的に べき乗の合計を求める int[] 型 public class Test07b { int 配列を参照する型. public static void main( String[] args ){ int[] a; 配列は複数の値を int[] pow_a; int i, n, sum; 格納できる. n = 3; 長さ6の配列を生成 番号でアクセスできる a = new int[6]; a[0]=3; a[1]=7; a[2]=4; a[3]=5; a[4]=9; a[5]=1; pow_a = new int[a.length]; a for ( i = 0; i < a.length; i++ ){ pow_a[i] = power(a[i],n); } [0]=3 [1]=7 [2]=4 [3]=5 [4]=9 [5]=1 sum = 0; for ( i = 0; i < pow_a.length; i++ ){ 添え字は0から始まる sum = sum + pow_a[i]; } System.out.println(“sum=“+sum); } a.length } public static int power( int x, int n ){略} a が参照している配列の 長さ 2008年8月,データ解析の基礎,加藤,瀬々,金子. 4
  • 5. どのように計算されているのか べき乗の合計を求める public class Test07b { public static void main( String[] args ){ int[] a; int[] pow_a; int i, n, sum; n = 3; a = new int[6]; 長さ6の配列を生成 a[0]=3; a[1]=7; a[2]=4; a[3]=5; a[4]=9; a[5]=1; pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 for ( i = 0; i < pow_a.length; i++ ){ } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } 合計の 計算 最初 sum に 0 を入れて 一つずつ加えていっている } public static int power( int x, int n ){略} } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 5
  • 6. どのように計算されているのか Test07b.java べき乗の合計を求める public class Test07b { public static void main( String[] args ){ int[] a; int[] pow_a; int i, n, sum; n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 for ( i = 0; i < pow_a.length; i++ ){ } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } 合計の 計算 最初 sum に 0 を入れて 一つずつ加えていっている } public static int power( int x, int n ){略} } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 6
  • 7. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i n n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} } 正確には,様々なメモリ領域があり,また,スタックをヒープ領域に割り当 2008年8月,データ解析の基礎,加藤,瀬々,金子. 7 ててもよいことになっているが,ここでは簡単化のため,スタック以外のメ モリ領域をすべてヒープと呼ぶことにする
  • 8. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 8
  • 9. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } 配列の実体はヒープ上に確保され, public static int power( int x, int n ){略} [0]=0 [1]=0 [2]=0 } 変数a自体は実体のある 場所(アドレス)だけ保持している. 2008年8月,データ解析の基礎,加藤,瀬々,金子. 9
  • 10. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=0 [2]=0 } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 10
  • 11. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=0 } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 11
  • 12. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 12
  • 13. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=0 [1]=0 [2]=0 2008年8月,データ解析の基礎,加藤,瀬々,金子. 13
  • 14. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=0 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=0 [1]=0 [2]=0 2008年8月,データ解析の基礎,加藤,瀬々,金子. 14
  • 15. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=0 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=27 [1]=0 [2]=0 2008年8月,データ解析の基礎,加藤,瀬々,金子. 15
  • 16. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=1 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=27 [1]=0 [2]=0 2008年8月,データ解析の基礎,加藤,瀬々,金子. 16
  • 17. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=1 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=27 [1]=0 [2]=0 2008年8月,データ解析の基礎,加藤,瀬々,金子. 17
  • 18. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=1 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=27 [1]=343 [2]=0 2008年8月,データ解析の基礎,加藤,瀬々,金子. 18
  • 19. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=2 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=27 [1]=343 [2]=0 2008年8月,データ解析の基礎,加藤,瀬々,金子. 19
  • 20. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=2 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=27 [1]=343 [2]=0 2008年8月,データ解析の基礎,加藤,瀬々,金子. 20
  • 21. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=2 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=27 [1]=343 [2]=64 2008年8月,データ解析の基礎,加藤,瀬々,金子. 21
  • 22. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=3 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=27 [1]=343 [2]=64 2008年8月,データ解析の基礎,加藤,瀬々,金子. 22
  • 23. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=3 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=27 [1]=343 [2]=64 2008年8月,データ解析の基礎,加藤,瀬々,金子. 23
  • 24. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=3 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=27 [1]=343 [2]=64 2008年8月,データ解析の基礎,加藤,瀬々,金子. 24
  • 25. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=3 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum=0 pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=27 [1]=343 [2]=64 2008年8月,データ解析の基礎,加藤,瀬々,金子. 25
  • 26. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=0 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum=0 pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=27 [1]=343 [2]=64 2008年8月,データ解析の基礎,加藤,瀬々,金子. 26
  • 27. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=0 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum=27 pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=27 [1]=343 [2]=64 2008年8月,データ解析の基礎,加藤,瀬々,金子. 27
  • 28. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=1 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum=27 pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=27 [1]=343 [2]=64 2008年8月,データ解析の基礎,加藤,瀬々,金子. 28
  • 29. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=1 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum=27 pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=27 [1]=343 [2]=64 2008年8月,データ解析の基礎,加藤,瀬々,金子. 29
  • 30. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=1 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum=370 pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=27 [1]=343 [2]=64 2008年8月,データ解析の基礎,加藤,瀬々,金子. 30
  • 31. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=2 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum=370 pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=27 [1]=343 [2]=64 2008年8月,データ解析の基礎,加藤,瀬々,金子. 31
  • 32. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=2 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum=370 pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=9 [1]=343 [2]=64 2008年8月,データ解析の基礎,加藤,瀬々,金子. 32
  • 33. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=2 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum=434 pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=27 [1]=343 [2]=64 2008年8月,データ解析の基礎,加藤,瀬々,金子. 33
  • 34. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=3 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum=434 pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=27 [1]=343 [2]=64 2008年8月,データ解析の基礎,加藤,瀬々,金子. 34
  • 35. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=3 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum=434 pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=9 [1]=343 [2]=64 2008年8月,データ解析の基礎,加藤,瀬々,金子. 35
  • 36. どのように計算されているのか Test07b.java べき乗の合計を求める スタック メモリの一部 public class Test07b { main のスタックフレーム public static void main( String[] args ){ int[] a; a pow_a int[] pow_a; int i, n, sum; i=3 n=3 n = 3; a = new int[3]; 長さ3の配列を生成 a[0]=3; a[1]=7; a[2]=4; sum=434 pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; } べき乗の 計算 } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } for ( i = 0; i < pow_a.length; i++ ){ 合計の 計算 ヒープ メモリの一部 } public static int power( int x, int n ){略} [0]=3 [1]=7 [2]=4 } [0]=9 [1]=343 [2]=64 2008年8月,データ解析の基礎,加藤,瀬々,金子. 36
  • 37. 練習7-b. Test07b.java プロジェクト名: test07 public class Test07b { public static void main( String[] args ){ デバッガを使って int[] a; (1) pow_a および sum が int[] pow_a; int i, n, sum; 計算されていく様子を n = 3; a = new int[3]; 長さ3の配列を生成 確認せよ a[0]=3; a[1]=7; a[2]=4; (2) 変数 n の値を 2 などに 変更しても正しく計算 pow_a = new int[a.length]; for ( i = 0; i < a.length; i++ ){ } pow_a[i] = power(a[i],n); sum = 0; べき乗の 計算} されることを確認せよ for ( i = 0; i < pow_a.length; i++ ){ } sum = sum + pow_a[i]; System.out.println(“sum=“+sum); } 合計の 計算 } public static int power( int x, int n ){略} } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 37
  • 38. 配列のまとめ int型配列 int[] double型配列 double[] 配列の領域確保 double[] x; x = new double[3]; x 配列は参照型 a.length ヒープ a が参照している配列の 長さ [0]=10.0 [1]=10.1 [2]=10.2 添え字は0から始まる 2008年8月,データ解析の基礎,加藤,瀬々,金子. 38
  • 39. 目標 • 配列を理解する – 配列は多数のデータを表すのに便利 – データ群から統計量を求めよう – 配列に一気に数値を代入する方法 – メソッドに配列を渡すには • 2次元配列を理解する 2008年8月,データ解析の基礎,加藤,瀬々,金子. 39
  • 40. 数値データ群の統計量を計算してみよう 遺伝子ネットワークの場合 • 統計量の例 – 合計 – 平均 – 最大値,最小値 ネットワークの性質を調べたい 数値データ 遺伝子 1 2 3 4 5 6 7 次数 2 2 1 4 3 2 2 2008年8月,データ解析の基礎,加藤,瀬々,金子. 40
  • 41. 数値データ群の統計量を計算してみよう 遺伝子ネットワークの場合 • 統計量の例 – 合計 – 平均 – 最大値,最小値 ネットワークの性質を調べたい 数値データ 遺伝子 1 2 3 4 5 6 7 次数 2 2 1 4 3 2 2 辺の数 = 次数の合計/2 2008年8月,データ解析の基礎,加藤,瀬々,金子. 41
  • 42. 数値データ群の統計量を計算してみよう 遺伝子ネットワークの場合 • 統計量の例 – 合計 – 平均 – 最大値,最小値 ネットワークの性質を調べたい 数値データ 遺伝子 1 2 3 4 5 6 7 次数 2 2 1 4 3 2 2 次数の平均から,ネットワークがどれくらい密か分かる 2008年8月,データ解析の基礎,加藤,瀬々,金子. 42
  • 43. 数値データ群の統計量を計算してみよう 遺伝子ネットワークの場合 • 統計量の例 – 合計 – 平均 – 最大値,最小値 ネットワークの性質を調べたい 数値データ 遺伝子 1 2 3 4 5 6 7 次数 2 2 1 4 3 2 2 最大次数を持つ遺伝子はハブと呼ばれる重要な遺伝子である 2008年8月,データ解析の基礎,加藤,瀬々,金子. 43
  • 44. 配列データの最大値を探すには 配列データ中,最大の数値を見つけるプログラム Test07c.java public class Test07c { 計算方法: public static void main( String[] args ){ int[] a; データを一つずつみて int i; 新記録なら記録を更新する int max_a; a = new int[3]; a[0]=3; a[1]=7; a[2]=4; 計算機で表現できる最小の整数を max_a = Integer.MIN_VALUE; 変数 max_a に代入 for ( i = 0; i < a.length; i++ ){ if ( max_a < a[i] ){ } } max_a = a[i]; }変数a[i]の値がmax_aより大きいなら max_a に a[i] を代入する System.out.println(“max_a=“+max_a); } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 44
  • 45. 最大値計算の過程 Test07c.java スタック メモリの一部 public class Test07c { main のスタックフレーム public static void main( String[] args ){ int[] a; a i int int i; max_a; 長さ3の配列を生成 a = new int[3]; max_a a[0]=3; a[1]=7; a[2]=4; max_a = java.lang.Integer.MIN_VALUE; for ( i = 0; i < a.length; i++ ){ } if ( max_a < a[i] ){ } max_a = a[i]; } 最大値の 計算 System.out.println(“max_a=“+max_a); } } ヒープ メモリの一部 2008年8月,データ解析の基礎,加藤,瀬々,金子. 45
  • 46. 最大値計算の過程 Test07c.java スタック メモリの一部 public class Test07c { main のスタックフレーム public static void main( String[] args ){ int[] a; a i int int i; max_a; 長さ3の配列を生成 a = new int[3]; max_a a[0]=3; a[1]=7; a[2]=4; max_a = java.lang.Integer.MIN_VALUE; for ( i = 0; i < a.length; i++ ){ } if ( max_a < a[i] ){ } max_a = a[i]; } 最大値の 計算 System.out.println(“max_a=“+max_a); } } ヒープ メモリの一部 [0] [1] [2] 2008年8月,データ解析の基礎,加藤,瀬々,金子. 46
  • 47. 最大値計算の過程 Test07c.java スタック メモリの一部 public class Test07c { main のスタックフレーム public static void main( String[] args ){ int[] a; a i int int i; max_a; 長さ3の配列を生成 a = new int[3]; max_a a[0]=3; a[1]=7; a[2]=4; max_a = java.lang.Integer.MIN_VALUE; for ( i = 0; i < a.length; i++ ){ } if ( max_a < a[i] ){ } max_a = a[i]; } 最大値の 計算 System.out.println(“max_a=“+max_a); } } ヒープ メモリの一部 [0]=3 [1]=7 [2]=4 2008年8月,データ解析の基礎,加藤,瀬々,金子. 47
  • 48. 最大値計算の過程 Test07c.java スタック メモリの一部 public class Test07c { main のスタックフレーム public static void main( String[] args ){ int[] a; a i int int i; max_a; 長さ3の配列を生成 a = new int[3]; max_a=最小整数 a[0]=3; a[1]=7; a[2]=4; max_a = java.lang.Integer.MIN_VALUE; for ( i = 0; i < a.length; i++ ){ } if ( max_a < a[i] ){ } max_a = a[i]; } 最大値の 計算 System.out.println(“max_a=“+max_a); } } ヒープ メモリの一部 [0]=3 [1]=7 [2]=4 2008年8月,データ解析の基礎,加藤,瀬々,金子. 48
  • 49. 最大値計算の過程 Test07c.java スタック メモリの一部 public class Test07c { main のスタックフレーム public static void main( String[] args ){ int[] a; a i=0 int int i; max_a; 長さ3の配列を生成 a = new int[3]; max_a=最小整数 a[0]=3; a[1]=7; a[2]=4; max_a = java.lang.Integer.MIN_VALUE; for ( i = 0; i < a.length; i++ ){ } if ( max_a < a[i] ){ } max_a = a[i]; } 最大値の 計算 System.out.println(“max_a=“+max_a); } } ヒープ メモリの一部 [0]=3 [1]=7 [2]=4 2008年8月,データ解析の基礎,加藤,瀬々,金子. 49
  • 50. 最大値計算の過程 Test07c.java スタック メモリの一部 public class Test07c { main のスタックフレーム public static void main( String[] args ){ int[] a; a i=0 int int i; max_a; 長さ3の配列を生成 a = new int[3]; max_a=最小整数 a[0]=3; a[1]=7; a[2]=4; max_a = java.lang.Integer.MIN_VALUE; for ( i = 0; i < a.length; i++ ){ } if ( max_a < a[i] ){ } max_a = a[i]; } 最大値の 計算 System.out.println(“max_a=“+max_a); } } ヒープ メモリの一部 [0]=3 [1]=7 [2]=4 2008年8月,データ解析の基礎,加藤,瀬々,金子. 50
  • 51. 最大値計算の過程 Test07c.java スタック メモリの一部 public class Test07c { main のスタックフレーム public static void main( String[] args ){ int[] a; a i=0 int int i; max_a; 長さ3の配列を生成 a = new int[3]; max_a=最小整数 a[0]=3; a[1]=7; a[2]=4; max_a = java.lang.Integer.MIN_VALUE; for ( i = 0; i < a.length; i++ ){ } if ( max_a < a[i] ){ } max_a = a[i]; } 最大値の 計算 System.out.println(“max_a=“+max_a); } } ヒープ メモリの一部 [0]=3 [1]=7 [2]=4 2008年8月,データ解析の基礎,加藤,瀬々,金子. 51
  • 52. 最大値計算の過程 Test07c.java スタック メモリの一部 public class Test07c { main のスタックフレーム public static void main( String[] args ){ int[] a; a i=0 int int i; max_a; 長さ3の配列を生成 a = new int[3]; max_a=3 a[0]=3; a[1]=7; a[2]=4; max_a = java.lang.Integer.MIN_VALUE; for ( i = 0; i < a.length; i++ ){ } if ( max_a < a[i] ){ } max_a = a[i]; } 最大値の 計算 System.out.println(“max_a=“+max_a); } } ヒープ メモリの一部 [0]=3 [1]=7 [2]=4 2008年8月,データ解析の基礎,加藤,瀬々,金子. 52
  • 53. 最大値計算の過程 Test07c.java スタック メモリの一部 public class Test07c { main のスタックフレーム public static void main( String[] args ){ int[] a; a i=1 int int i; max_a; 長さ3の配列を生成 a = new int[3]; max_a=3 a[0]=3; a[1]=7; a[2]=4; max_a = java.lang.Integer.MIN_VALUE; for ( i = 0; i < a.length; i++ ){ } if ( max_a < a[i] ){ } max_a = a[i]; } 最大値の 計算 System.out.println(“max_a=“+max_a); } } ヒープ メモリの一部 [0]=3 [1]=7 [2]=4 2008年8月,データ解析の基礎,加藤,瀬々,金子. 53
  • 54. 最大値計算の過程 Test07c.java スタック メモリの一部 public class Test07c { main のスタックフレーム public static void main( String[] args ){ int[] a; a i=1 int int i; max_a; 長さ3の配列を生成 a = new int[3]; max_a=3 a[0]=3; a[1]=7; a[2]=4; max_a = java.lang.Integer.MIN_VALUE; for ( i = 0; i < a.length; i++ ){ } if ( max_a < a[i] ){ } max_a = a[i]; } 最大値の 計算 System.out.println(“max_a=“+max_a); } } ヒープ メモリの一部 [0]=3 [1]=7 [2]=4 2008年8月,データ解析の基礎,加藤,瀬々,金子. 54
  • 55. 最大値計算の過程 Test07c.java スタック メモリの一部 public class Test07c { main のスタックフレーム public static void main( String[] args ){ int[] a; a i=1 int int i; max_a; 長さ3の配列を生成 a = new int[3]; max_a=3 a[0]=3; a[1]=7; a[2]=4; max_a = java.lang.Integer.MIN_VALUE; for ( i = 0; i < a.length; i++ ){ } if ( max_a < a[i] ){ } max_a = a[i]; } 最大値の 計算 System.out.println(“max_a=“+max_a); } } ヒープ メモリの一部 [0]=3 [1]=7 [2]=4 2008年8月,データ解析の基礎,加藤,瀬々,金子. 55
  • 56. 最大値計算の過程 Test07c.java スタック メモリの一部 public class Test07c { main のスタックフレーム public static void main( String[] args ){ int[] a; a i=1 int int i; max_a; 長さ3の配列を生成 a = new int[3]; max_a=7 a[0]=3; a[1]=7; a[2]=4; max_a = java.lang.Integer.MIN_VALUE; for ( i = 0; i < a.length; i++ ){ } if ( max_a < a[i] ){ } max_a = a[i]; } 最大値の 計算 System.out.println(“max_a=“+max_a); } } ヒープ メモリの一部 [0]=3 [1]=7 [2]=4 2008年8月,データ解析の基礎,加藤,瀬々,金子. 56
  • 57. 最大値計算の過程 Test07c.java スタック メモリの一部 public class Test07c { main のスタックフレーム public static void main( String[] args ){ int[] a; a i=2 int int i; max_a; 長さ3の配列を生成 a = new int[3]; max_a=7 a[0]=3; a[1]=7; a[2]=4; max_a = java.lang.Integer.MIN_VALUE; for ( i = 0; i < a.length; i++ ){ } if ( max_a < a[i] ){ } max_a = a[i]; } 最大値の 計算 System.out.println(“max_a=“+max_a); } } ヒープ メモリの一部 [0]=3 [1]=7 [2]=4 2008年8月,データ解析の基礎,加藤,瀬々,金子. 57
  • 58. 最大値計算の過程 Test07c.java スタック メモリの一部 public class Test07c { main のスタックフレーム public static void main( String[] args ){ int[] a; a i=2 int int i; max_a; 長さ3の配列を生成 a = new int[3]; max_a=7 a[0]=3; a[1]=7; a[2]=4; max_a = java.lang.Integer.MIN_VALUE; for ( i = 0; i < a.length; i++ ){ } if ( max_a < a[i] ){ } max_a = a[i]; } 最大値の 計算 System.out.println(“max_a=“+max_a); } } ヒープ メモリの一部 [0]=3 [1]=7 [2]=4 2008年8月,データ解析の基礎,加藤,瀬々,金子. 58
  • 59. 最大値計算の過程 Test07c.java スタック メモリの一部 public class Test07c { main のスタックフレーム public static void main( String[] args ){ int[] a; a i=2 int int i; max_a; 長さ3の配列を生成 a = new int[3]; max_a=7 a[0]=3; a[1]=7; a[2]=4; max_a = java.lang.Integer.MIN_VALUE; for ( i = 0; i < a.length; i++ ){ } if ( max_a < a[i] ){ } max_a = a[i]; } 最大値の 計算 System.out.println(“max_a=“+max_a); } } ヒープ メモリの一部 [0]=3 [1]=7 [2]=4 2008年8月,データ解析の基礎,加藤,瀬々,金子. 59
  • 60. 最大値計算の過程 Test07c.java スタック メモリの一部 public class Test07c { main のスタックフレーム public static void main( String[] args ){ int[] a; a i=3 int int i; max_a; 長さ3の配列を生成 a = new int[3]; max_a=7 a[0]=3; a[1]=7; a[2]=4; max_a = java.lang.Integer.MIN_VALUE; for ( i = 0; i < a.length; i++ ){ } if ( max_a < a[i] ){ } max_a = a[i]; } 最大値の 計算 System.out.println(“max_a=“+max_a); } } ヒープ メモリの一部 [0]=3 [1]=7 [2]=4 2008年8月,データ解析の基礎,加藤,瀬々,金子. 60
  • 61. 最大値計算の過程 Test07c.java スタック メモリの一部 public class Test07c { main のスタックフレーム public static void main( String[] args ){ int[] a; a i=3 int int i; max_a; 長さ3の配列を生成 a = new int[3]; max_a=7 a[0]=3; a[1]=7; a[2]=4; max_a = java.lang.Integer.MIN_VALUE; for ( i = 0; i < a.length; i++ ){ } if ( max_a < a[i] ){ } max_a = a[i]; } 最大値の 計算 System.out.println(“max_a=“+max_a); } } ヒープ メモリの一部 [0]=3 [1]=7 [2]=4 2008年8月,データ解析の基礎,加藤,瀬々,金子. 61
  • 62. 最大値計算の過程 Test07c.java スタック メモリの一部 public class Test07c { main のスタックフレーム public static void main( String[] args ){ int[] a; a i=3 int int i; max_a; 長さ3の配列を生成 a = new int[3]; max_a=7 a[0]=3; a[1]=7; a[2]=4; max_a = java.lang.Integer.MIN_VALUE; for ( i = 0; i < a.length; i++ ){ } if ( max_a < a[i] ){ } max_a = a[i]; } 最大値の 計算 System.out.println(“max_a=“+max_a); } } ヒープ メモリの一部 [0]=3 [1]=7 [2]=4 2008年8月,データ解析の基礎,加藤,瀬々,金子. 62
  • 63. 練習7-c. Test07c.java プロジェクト名: test07 public class Test07c { public static void main( String[] args ){ デバッガを使って int[] a; (1) max_a が正しく int i; int max_a; 更新されていく過程 a = new int[3]; a[0]=3; a[1]=7; a[2]=4; を観測せよ (2) 配列データの数値を max_a = java.lang.Integer.MIN_VALUE; for ( i = 0; i < a.length; i++ ){ 適当に変更しても if ( max_a < a[i] ){ max_a = a[i]; 正しく最大値が } 計算されることを } System.out.println(“max_a=“+max_a); 確認せよ } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 63
  • 64. 練習7-d. Test07d.java プロジェクト名: test07 public class Test07c { public static void main( String[] args ){ 最小値を求める int[] a; プログラムを完成させよ int int i; min_a; 最小値をこの変数に入れる a = new int[3]; a[0]=3; a[1]=7; a[2]=4; min_a = java.lang.Integer.MAX_VALUE; for ( i = 0; i < a.length; i++ ){ if ( min_a > a[i] ){ この部分を埋めよ min_a = a[i]; int型の最大値 } java.lang.Integer.MAX_VALUE; } System.out.println(“min_a=“+min_a); } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 64
  • 65. 練習7-e. Test07e.java プロジェクト名: test07 このプログラムは最小値 を求め,何番目のデータ public class Test07c { public static void main( String[] args ){ が最小値をとるか計算す int[] a; int i, i_min; るプログラムである int min_a; a = new int[3]; この場合, a[0]=7; a[1]=3; a[2]=4; 以下のような出力となる i_min = -1; 画面 min_a = java.lang.Integer.MAX_VALUE; min_a=3 for ( i = 0; i < a.length; i++ ){ i_min=1 if ( min_a > a[i] ){ min_a = a[i]; } i_min = i; (1) 数値を適当に変更して } みて,それでも正しく System.out.println(“min_a=“+min_a); System.out.println(“i_min=“+i_min); 計算されることを確認 } } せよ (2) なぜ最小データの番号 が計算できるか考えよ 2008年8月,データ解析の基礎,加藤,瀬々,金子. 65
  • 66. 練習7-e0. Test07e0.java プロジェクト名: test07 このプログラムは最大値 を求め,何番目のデータ public class Test07c { public static void main( String[] args ){ が最大値をとるか計算す int[] a; int i, i_max; るプログラムを完成させよ int max_a; a = new int[3]; a[0]=7; a[1]=3; a[2]=4; // Compute the maximal number and its index System.out.println(“max_a=“+max_a); System.out.println(“i_max=“+i_max); } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 66
  • 67. 目標 • 配列を理解する – 配列は多数のデータを表すのに便利 – データ群から統計量を求めよう – 配列に一気に数値を代入する方法 – メソッドに配列を渡すには • 2次元配列を理解する 2008年8月,データ解析の基礎,加藤,瀬々,金子. 67
  • 68. 最小値計算プログラム再考 Test07d.java プロジェクト名: test07 public class Test07f { 下の2つのコードは等価 public static void main( String[] args ){ int[] a; int i; a = new int[3]; int min_a; a[0]=3; a[1]=7; a[2]=4; a = new int[3]; a[0]=3; a[1]=7; a[2]=4; 長さ3の配列を確保し min_a = java.lang.Integer.MAX_VALUE; それから値を代入 for ( i = 0; i < a.length; i++ ){ if ( min_a > a[i] ){ min_a = a[i]; a = new int[]{3,7,4}; } } 初期値{3,7,4} の配列を確保 System.out.println(“min_a=“+min_a); } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 68
  • 69. 「配列の初期化」を使うと2行が1行に Test07f.java プロジェクト名: test07 public class Test07f { public static void main( String[] args ){ int[] a; int i; int min_a; a = new int[]{3,7,4}; min_a = java.lang.Integer.MAX_VALUE; for ( i = 0; i < a.length; i++ ){ if ( min_a > a[i] ){ min_a = a[i]; } } System.out.println(“min_a=“+min_a); } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 69
  • 70. 目標 • 配列を理解する – 配列は多数のデータを表すのに便利 – データ群から統計量を求めよう – 配列に一気に数値を代入する方法 – メソッドに配列を渡すには • 2次元配列を理解する 2008年8月,データ解析の基礎,加藤,瀬々,金子. 70
  • 71. 最小値計算部分をメソッドに プロジェクト名: test07 Test07g.java public class Test07g { public static void main( String[] args ){ int[] a; int min_a; これでmainメソッドは a = new int[]{3,7,4}; スッキリ min_a = min(a); System.out.println(“min_a=“+min_a); } public static int min( int[] a ){ int i, ret; 配列を引数にするメソッド ret = java.lang.Integer.MAX_VALUE; for ( i = 0; i < a.length; i++ ){ if ( ret > a[i] ){ ret = a[i]; } } return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 71
  • 72. どのように計算されているか プロジェクト名: test07 スタック メモリの一部 Test07g.java main のスタックフレーム public class Test07g { public static void main( String[] args ){ a int[] a; int min_a; a = new int[]{3,7,4}; min_a min_a = min(a); System.out.println(“min_a=“+min_a); } public static int min( int[] a ){ int i, ret; ret = java.lang.Integer.MAX_VALUE; for ( i = 0; i < a.length; i++ ){ if ( ret > a[i] ){ ret = a[i]; } } ヒープ メモリの一部 return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 72
  • 73. どのように計算されているか プロジェクト名: test07 スタック メモリの一部 Test07g.java main のスタックフレーム public class Test07g { public static void main( String[] args ){ a int[] a; int min_a; a = new int[]{3,7,4}; min_a min_a = min(a); System.out.println(“min_a=“+min_a); } public static int min( int[] a ){ int i, ret; ret = java.lang.Integer.MAX_VALUE; for ( i = 0; i < a.length; i++ ){ if ( ret > a[i] ){ ret = a[i]; } } ヒープ メモリの一部 return ret; } [0]=3 [1]=7 [2]=4 } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 73
  • 74. min(a)を呼び出す すると新たなスタックフレームが作られる プロジェクト名: test07 スタック メモリの一部 Test07g.java main のスタックフレーム public class Test07g { public static void main( String[] args ){ a int[] a; int min_a; a = new int[]{3,7,4}; min_a min_a = min(a); System.out.println(“min_a=“+min_a); min のスタックフレーム } public static int min( int[] a ){ int i, ret; a i ret = java.lang.Integer.MAX_VALUE; for ( i = 0; i < a.length; i++ ){ ret if ( ret > a[i] ){ ret = a[i]; } 引数には,配列全体がコ } ピーされるのではなくて ヒープ メモリの一部 return ret; [0]=3 [1]=7 [2]=4 } } 参照のみがコピーされて いることに注意. 2008年8月,データ解析の基礎,加藤,瀬々,金子. 74
  • 75. どのように計算されているか プロジェクト名: test07 スタック メモリの一部 Test07g.java main のスタックフレーム public class Test07g { public static void main( String[] args ){ a int[] a; int min_a; a = new int[]{3,7,4}; min_a min_a = min(a); System.out.println(“min_a=“+min_a); min のスタックフレーム } public static int min( int[] a ){ int i, ret; a i ret = java.lang.Integer.MAX_VALUE; for ( i = 0; i < a.length; i++ ){ ret=最大整数 if ( ret > a[i] ){ ret = a[i]; } } ヒープ メモリの一部 return ret; } [0]=3 [1]=7 [2]=4 } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 75
  • 76. どのように計算されているか プロジェクト名: test07 スタック メモリの一部 Test07g.java main のスタックフレーム public class Test07g { public static void main( String[] args ){ a int[] a; int min_a; a = new int[]{3,7,4}; min_a min_a = min(a); System.out.println(“min_a=“+min_a); min のスタックフレーム } public static int min( int[] a ){ int i, ret; a i=0 ret = java.lang.Integer.MAX_VALUE; for ( i = 0; i < a.length; i++ ){ ret=最大整数 if ( ret > a[i] ){ ret = a[i]; } } ヒープ メモリの一部 return ret; } [0]=3 [1]=7 [2]=4 } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 76
  • 77. どのように計算されているか プロジェクト名: test07 スタック メモリの一部 Test07g.java main のスタックフレーム public class Test07g { public static void main( String[] args ){ a int[] a; int min_a; a = new int[]{3,7,4}; min_a min_a = min(a); System.out.println(“min_a=“+min_a); min のスタックフレーム } public static int min( int[] a ){ int i, ret; a i=0 ret = java.lang.Integer.MAX_VALUE; for ( i = 0; i < a.length; i++ ){ ret=最大整数 if ( ret > a[i] ){ ret = a[i]; } } ヒープ メモリの一部 return ret; } [0]=3 [1]=7 [2]=4 } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 77
  • 78. どのように計算されているか プロジェクト名: test07 スタック メモリの一部 Test07g.java main のスタックフレーム public class Test07g { public static void main( String[] args ){ a int[] a; int min_a; a = new int[]{3,7,4}; min_a min_a = min(a); System.out.println(“min_a=“+min_a); min のスタックフレーム } public static int min( int[] a ){ int i, ret; a i=0 ret = java.lang.Integer.MAX_VALUE; for ( i = 0; i < a.length; i++ ){ ret=3 if ( ret > a[i] ){ ret = a[i]; } } ヒープ メモリの一部 return ret; } [0]=3 [1]=7 [2]=4 } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 78
  • 79. どのように計算されているか プロジェクト名: test07 スタック メモリの一部 Test07g.java main のスタックフレーム public class Test07g { public static void main( String[] args ){ a int[] a; int min_a; a = new int[]{3,7,4}; min_a min_a = min(a); System.out.println(“min_a=“+min_a); min のスタックフレーム } public static int min( int[] a ){ int i, ret; a i=1 ret = java.lang.Integer.MAX_VALUE; for ( i = 0; i < a.length; i++ ){ ret=3 if ( ret > a[i] ){ ret = a[i]; } } ヒープ メモリの一部 return ret; } [0]=3 [1]=7 [2]=4 } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 79
  • 80. どのように計算されているか プロジェクト名: test07 スタック メモリの一部 Test07g.java main のスタックフレーム public class Test07g { public static void main( String[] args ){ a int[] a; int min_a; a = new int[]{3,7,4}; min_a min_a = min(a); System.out.println(“min_a=“+min_a); min のスタックフレーム } public static int min( int[] a ){ int i, ret; a i=1 ret = java.lang.Integer.MAX_VALUE; for ( i = 0; i < a.length; i++ ){ ret=3 if ( ret > a[i] ){ ret = a[i]; } } ヒープ メモリの一部 return ret; } [0]=3 [1]=7 [2]=4 } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 80
  • 81. どのように計算されているか プロジェクト名: test07 スタック メモリの一部 Test07g.java main のスタックフレーム public class Test07g { public static void main( String[] args ){ a int[] a; int min_a; a = new int[]{3,7,4}; min_a min_a = min(a); System.out.println(“min_a=“+min_a); min のスタックフレーム } public static int min( int[] a ){ int i, ret; a i=1 ret = java.lang.Integer.MAX_VALUE; for ( i = 0; i < a.length; i++ ){ ret=3 if ( ret > a[i] ){ ret = a[i]; } } ヒープ メモリの一部 return ret; } [0]=3 [1]=7 [2]=4 } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 81
  • 82. どのように計算されているか プロジェクト名: test07 スタック メモリの一部 Test07g.java main のスタックフレーム public class Test07g { public static void main( String[] args ){ a int[] a; int min_a; a = new int[]{3,7,4}; min_a min_a = min(a); System.out.println(“min_a=“+min_a); min のスタックフレーム } public static int min( int[] a ){ int i, ret; a i=1 ret = java.lang.Integer.MAX_VALUE; for ( i = 0; i < a.length; i++ ){ ret=3 if ( ret > a[i] ){ ret = a[i]; } } ヒープ メモリの一部 return ret; } [0]=3 [1]=7 [2]=4 } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 82
  • 83. どのように計算されているか プロジェクト名: test07 スタック メモリの一部 Test07g.java main のスタックフレーム public class Test07g { public static void main( String[] args ){ a int[] a; int min_a; a = new int[]{3,7,4}; min_a min_a = min(a); System.out.println(“min_a=“+min_a); min のスタックフレーム } public static int min( int[] a ){ int i, ret; a i=2 ret = java.lang.Integer.MAX_VALUE; for ( i = 0; i < a.length; i++ ){ ret=3 if ( ret > a[i] ){ ret = a[i]; } } ヒープ メモリの一部 return ret; } [0]=3 [1]=7 [2]=4 } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 83
  • 84. どのように計算されているか プロジェクト名: test07 スタック メモリの一部 Test07g.java main のスタックフレーム public class Test07g { public static void main( String[] args ){ a int[] a; int min_a; a = new int[]{3,7,4}; min_a min_a = min(a); System.out.println(“min_a=“+min_a); min のスタックフレーム } public static int min( int[] a ){ int i, ret; a i=2 ret = java.lang.Integer.MAX_VALUE; for ( i = 0; i < a.length; i++ ){ ret=3 if ( ret > a[i] ){ ret = a[i]; } } ヒープ メモリの一部 return ret; } [0]=3 [1]=7 [2]=4 } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 84