SlideShare a Scribd company logo
1 of 61
データ解析の基礎
        Java文法,メソッド




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

• Java文法の基本,メソッドを理解する

• メソッドに対するデバッガの操作を学習する




 2008年8月,データ解析の基礎,加藤,瀬々,金子.   2
絶対値の合計を計算するプログラム

Test06a.java

public class Test06a {
  public static void main( String[] args ){
    int a, b, c, d, e, f;
    int abs_a, abs_b, abs_c, abs_d, abs_e, abs_f;
    int sum;
    a = 3; b = -1; c = 5; d = -4; e = -7; f = 6;

                                                      なが~い
                        }
        if ( a >= 0 ){
          abs_a = a;
        } else {
                              変数 a の値の絶対値を            プログラムになった
          abs_a = -a;         変数 abs_a に代入
        }
        if ( b >= 0 ){                                同じような文が多い

        }
          abs_b = b;
        } else {
          abs_b = -b;   }     変数 b の値の絶対値を
                              変数 abs_b に代入
         abs_c, abs_d, abs_e, abs_f も同様に計算する;
                                                      もっと簡潔に
        sum = abs_a+abs_b+abs_c+ abs_d+abs_e+abs_f;   書けないか?
        System.out.println(“sum=“+sum);
    }
}


          2008年8月,データ解析の基礎,加藤,瀬々,金子.                              3
メソッドを使って簡潔なプログラムに

Test06b.java

public class Test06b {
  public static void main( String[] args ){
                                                       変数 a の値の絶対値を
    int a, b, c, d, e, f;                              変数 abs_a に代入
    int abs_a, abs_b, abs_c, abs_d, abs_e, abs_f;
    int sum;
    a = 3; b = -1; c = 5; d = -4; e = -7; f = 6;
                                                       変数 b の値の絶対値を
                                                       変数 abs_b に代入
     abs_a = abs(a); abs_b = abs(b); abs_c = abs(c);
     abs_d = abs(d); abs_e = abs(e); abs_f = abs(f);
     sum = abs_a+abs_b+abs_c+ abs_d+abs_e+abs_f;
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){

      } else {

      }
        ret = n;

        ret = -n;

      return ret;
                                      }   絶対値を計算する
                                          メソッド
                                                         メソッドを使うと
                                                         同様なコードを
    }
}                                                        一つにまとめられる

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                4
メソッド,戻り値,引数

Test06b.java

public class Test06b {
  public static void main( String[] args ){
                                                変数 a の値の絶対値を
    int a, b;                                   変数 abs_a に代入
    int abs_a, abs_b;
    int sum;
    a = 3; b = -1;
                                                変数 b の値の絶対値を
                                                変数 abs_b に代入
     abs_a = abs(a);
     abs_b = abs(b);
     sum = abs_a+abs_b;
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){
        ret = n;     戻り値の型             メソッド名   引数
      } else {
        ret = -n;
      }

    }
      return ret;    メソッドabsは変数retの値を呼び出し元に返す
}


       2008年8月,データ解析の基礎,加藤,瀬々,金子.                         5
メソッドの一般形式

Test06b.java                 public static 戻り値の型 メソッド名(引数){
public class Test06b {          変数宣言;
  public static void main(
    int a, b;
                                文;
                             String[] args ){

    int abs_a, abs_b;           return 式;
    int sum;
    a = 3; b = -1;           }
     abs_a = abs(a);
     abs_b = abs(b);
     sum = abs_a+abs_b;
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){
        ret = n;     戻り値の型             メソッド名   引数
      } else {
        ret = -n;
      }

    }
      return ret;    メソッドabsは変数retの値を呼び出し元に返す
}

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

Test06b.java      プロジェクト名: test06
public class Test06b {
  public static void main( String[] args ){
                                              左のプログラムを
    int a, b;                                 実行せよ
    int abs_a, abs_b;
    int sum;
    a = 3; b = -1;

     abs_a = abs(a);                          後でデバッガを
     abs_b = abs(b);
     sum = abs_a+abs_b;                       使って動作を
    }
     System.out.println(“sum=“+sum);
                                              確認します
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){
        ret = n;
      } else {
        ret = -n;
      }
      return ret;
    }
}


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

Test06b.java                                  スタック
public class Test06b {
  public static void main( String[] args ){   メソッド main のスタックフレーム
    int a, b;
    int abs_a, abs_b;
    int sum;                                      a=3           b
    a = 3; b = -1;

     abs_a = abs(a);                            abs_a         abs_b
     abs_b = abs(b);
     sum = abs_a+abs_b;                           sum
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
                                              正確には,フレームは,局所変数配列のほかに,オペランドスタック
      if ( n >= 0 ){                          も保持する
        ret = n;
      } else {
        ret = -n;
      }
      return ret;
    }
}


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

Test06b.java                                  スタック
public class Test06b {
  public static void main( String[] args ){   メソッド main のスタックフレーム
    int a, b;
    int abs_a, abs_b;
    int sum;                                     a=3    b=-1
    a = 3; b = -1;

     abs_a = abs(a);                            abs_a   abs_b
     abs_b = abs(b);
     sum = abs_a+abs_b;                          sum
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){
        ret = n;
      } else {
        ret = -n;
      }
      return ret;
    }
}


       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                   9
メソッドabs(a)を呼び出す

Test06b.java                                  スタック
public class Test06b {
  public static void main( String[] args ){   メソッド main のスタックフレーム
    int a, b;
    int abs_a, abs_b;
    int sum;                                     a=3    b=-1
    a = 3; b = -1;

     abs_a = abs(a);                            abs_a   abs_b
     abs_b = abs(b);
     sum = abs_a+abs_b;                          sum
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){
        ret = n;
      } else {
        ret = -n;
      }
      return ret;
    }
}


       2008年8月,データ解析の基礎,加藤,瀬々,金子.                               10
メソッド呼び出しにより新たなフレームが積まれる

Test06b.java                                  スタック
public class Test06b {
  public static void main( String[] args ){   メソッド main のスタックフレーム
    int a, b;
    int abs_a, abs_b;
    int sum;                                     a=3    b=-1
    a = 3; b = -1;

     abs_a = abs(a);                            abs_a   abs_b
     abs_b = abs(b);
     sum = abs_a+abs_b;                          sum
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){
        ret = n;                              メソッド abs のスタックフレーム
      } else {
        ret = -n;
      }
                                                 n=3     ret
      return ret;
    }                                          引数を含む変数が作られる
}


       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                  11
制御がメソッド内に移る

Test06b.java                                  スタック
public class Test06b {
  public static void main( String[] args ){   メソッド main のスタックフレーム
    int a, b;
    int abs_a, abs_b;
    int sum;                                     a=3    b=-1
    a = 3; b = -1;

     abs_a = abs(a);                            abs_a   abs_b
     abs_b = abs(b);
     sum = abs_a+abs_b;                          sum
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){
        ret = n;                              メソッド abs のスタックフレーム
      } else {
        ret = -n;
      }
                                                 n=3     ret
      return ret;
    }
}


       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                  12
Test06b.java                                  スタック
public class Test06b {
  public static void main( String[] args ){   メソッド main のスタックフレーム
    int a, b;
    int abs_a, abs_b;
    int sum;                                     a=3    b=-1
    a = 3; b = -1;

     abs_a = abs(a);                            abs_a   abs_b
     abs_b = abs(b);
     sum = abs_a+abs_b;                          sum
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){
        ret = n;                              メソッド abs のスタックフレーム
      } else {
        ret = -n;
      }
                                                 n=3    ret=3
      return ret;
    }
}


       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                  13
変数 ret の値を呼び出し元に返す

Test06b.java                                  スタック
public class Test06b {
  public static void main( String[] args ){   メソッド main のスタックフレーム
    int a, b;
    int abs_a, abs_b;
    int sum;                                     a=3    b=-1
    a = 3; b = -1;

     abs_a = abs(a);                            abs_a   abs_b
     abs_b = abs(b);
     sum = abs_a+abs_b;                          sum
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){
        ret = n;                              メソッド abs のスタックフレーム
      } else {
        ret = -n;
      }
                                                 n=3    ret=3
      return ret;
    }
}


       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                  14
現在のフレームを破棄して,
    制御を呼び出し元に戻す
Test06b.java                                  スタック
public class Test06b {
  public static void main( String[] args ){   メソッド main のスタックフレーム
    int a, b;
    int abs_a, abs_b;
    int sum;                                     a=3     b=-1
    a = 3; b = -1;

     abs_a = abs(a);                           abs_a=3   abs_b
     abs_b = abs(b);
     sum = abs_a+abs_b;                          sum
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){
        ret = n;
      } else {
        ret = -n;
      }
      return ret;
    }
}


       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                15
メソッドabs(b)を呼び出す

Test06b.java                                  スタック
public class Test06b {
  public static void main( String[] args ){   メソッド main のスタックフレーム
    int a, b;
    int abs_a, abs_b;
    int sum;                                     a=3     b=-1
    a = 3; b = -1;

     abs_a = abs(a);                           abs_a=3   abs_b
     abs_b = abs(b);
     sum = abs_a+abs_b;                          sum
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){
        ret = n;
      } else {
        ret = -n;
      }
      return ret;
    }
}


       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                16
メソッド呼び出しにより新たなフレームが積まれる

Test06b.java                                  スタック
public class Test06b {
  public static void main( String[] args ){   メソッド main のスタックフレーム
    int a, b;
    int abs_a, abs_b;
    int sum;                                     a=3     b=-1
    a = 3; b = -1;

     abs_a = abs(a);                           abs_a=3   abs_b
     abs_b = abs(b);
     sum = abs_a+abs_b;                          sum
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){
        ret = n;                              メソッド abs のスタックフレーム
      } else {
        ret = -n;
      }
                                                n=-1      ret
      return ret;
    }                                          引数を含む変数が作られる
}


       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                  17
制御がメソッド内に移る

Test06b.java                                  スタック
public class Test06b {
  public static void main( String[] args ){   メソッド main のスタックフレーム
    int a, b;
    int abs_a, abs_b;
    int sum;                                     a=3     b=-1
    a = 3; b = -1;

     abs_a = abs(a);                           abs_a=3   abs_b
     abs_b = abs(b);
     sum = abs_a+abs_b;                          sum
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){
        ret = n;                              メソッド abs のスタックフレーム
      } else {
        ret = -n;
      }
                                                n=-1      ret
      return ret;
    }
}


       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                  18
Test06b.java                                  スタック
public class Test06b {
  public static void main( String[] args ){   メソッド main のスタックフレーム
    int a, b;
    int abs_a, abs_b;
    int sum;                                     a=3     b=-1
    a = 3; b = -1;

     abs_a = abs(a);                           abs_a=3   abs_b
     abs_b = abs(b);
     sum = abs_a+abs_b;                          sum
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){
        ret = n;                              メソッド abs のスタックフレーム
      } else {
        ret = -n;
      }
                                                n=-1     ret=1
      return ret;
    }
}


       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                  19
変数 ret の値を呼び出し元に返す

Test06b.java                                  スタック
public class Test06b {
  public static void main( String[] args ){   メソッド main のスタックフレーム
    int a, b;
    int abs_a, abs_b;
    int sum;                                     a=3     b=-1
    a = 3; b = -1;

     abs_a = abs(a);                           abs_a=3   abs_b
     abs_b = abs(b);
     sum = abs_a+abs_b;                          sum
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){
        ret = n;                              メソッド abs のスタックフレーム
      } else {
        ret = -n;
      }
                                                n=-1     ret=1
      return ret;
    }
}


       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                  20
現在のフレームを破棄して,
    制御を呼び出し元に戻す
Test06b.java                                  スタック
public class Test06b {
  public static void main( String[] args ){   メソッド main のスタックフレーム
    int a, b;
    int abs_a, abs_b;
    int sum;                                     a=3      b=-1
    a = 3; b = -1;

     abs_a = abs(a);                           abs_a=3   abs_b=1
     abs_b = abs(b);
     sum = abs_a+abs_b;                          sum
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){
        ret = n;
      } else {
        ret = -n;
      }
      return ret;
    }
}


       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                  21
Test06b.java                                  スタック
public class Test06b {
  public static void main( String[] args ){   メソッド main のスタックフレーム
    int a, b;
    int abs_a, abs_b;
    int sum;                                     a=3      b=-1
    a = 3; b = -1;

     abs_a = abs(a);                           abs_a=3   abs_b=1
     abs_b = abs(b);
     sum = abs_a+abs_b;                         sum=4
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){
        ret = n;
      } else {
        ret = -n;
      }
      return ret;
    }
}


       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                  22
Test06b.java                                    スタック
public class Test06b {
  public static void main( String[] args ){     メソッド main のスタックフレーム
    int a, b;
    int abs_a, abs_b;
    int sum;                                          a=3      b=-1
    a = 3; b = -1;

     abs_a = abs(a);                              abs_a=3     abs_b=1
     abs_b = abs(b);
     sum = abs_a+abs_b;                               sum=4
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){
        ret = n;                                  画面
      } else {
        ret = -n;                             sum=4
      }
      return ret;
    }
}


       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                       23
注意点:引数は呼び出しもとと異なる箱

Test06b.java                                  スタック
public class Test06b {
  public static void main( String[] args ){   メソッド main のスタックフレーム
    int a, b;
    int abs_a, abs_b;
    int sum;                                     a=3    b=-1
    a = 3; b = -1;

     abs_a = abs(a);                            abs_a   abs_b
     abs_b = abs(b);
     sum = abs_a+abs_b;                          sum
     System.out.println(“sum=“+sum);
    }
    public static int abs( int n ){
      int ret;
      if ( n >= 0 ){
        ret = n;                              メソッド abs のスタックフレーム
      } else {
        ret = -n;       呼び出し元の箱と                 n=3     ret
      }
      return ret;       引数の箱は異なって
                                               引数を含む変数が作られる
}
    }
                        いることに注意

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

• Java文法の基本,メソッドを理解する

• メソッドに対するデバッガの操作を学習する

  – 「Step Over」ボタンは,メソッドの呼び出しも含めて
    1行ずつ動作させる

  – 「Step Into」ボタンは,メソッドの先頭のコードを実行する
    手前まで進める
       停止ボタン Step Into ボタン
                              Step Over ボタン


 2008年8月,データ解析の基礎,加藤,瀬々,金子.                   25
デバッガ:Step Over のみ使う場合




      ここをダブルクリックして
      ブレークポイントをつける


前回と同様,Step Over ボタンだけで
デバッガを使ってみる

   2008年8月,データ解析の基礎,加藤,瀬々,金子.   26
デバッガ:Step Over のみ使う場合

                           このボタンをクリックして
                           デバッガを起動する




前回と同様,Step Over ボタンだけで
デバッガを使ってみる

   2008年8月,データ解析の基礎,加藤,瀬々,金子.             27
デバッガ:Step Over のみ使う場合




「デバッガの画面に切り替えてよいか?」と聞かれている.
「Yes」をクリックする

  2008年8月,データ解析の基礎,加藤,瀬々,金子.   28
デバッガ:Step Over のみ使う場合

                              スタック


                              メソッド main のスタックフレーム


                                  a       b

                                abs_a   abs_b

                                 sum




デバッガが起動された
ステップオーバーをクリック

 2008年8月,データ解析の基礎,加藤,瀬々,金子.                     29
デバッガ:Step Over のみ使う場合

                              スタック


                              メソッド main のスタックフレーム


                                 a=3     b=-1

                                abs_a   abs_b

                                 sum




a=3, b=-1が代入された
ステップオーバーをクリック

 2008年8月,データ解析の基礎,加藤,瀬々,金子.                     30
デバッガ:Step Over のみ使う場合

                              スタック


                              メソッド main のスタックフレーム


                                 a=3      b=-1

                               abs_a=3   abs_b

                                 sum




メソッド abs が呼び出され,結果が
変数 abs_aに代入された
ステップオーバーをクリック
 2008年8月,データ解析の基礎,加藤,瀬々,金子.                      31
デバッガ:Step Over のみ使う場合

                              スタック


                              メソッド main のスタックフレーム


                                 a=3       b=-1

                               abs_a=3   abs_b=1

                                 sum




メソッド abs が呼び出され,結果が
変数 abs_bに代入された
ステップオーバーをクリック
 2008年8月,データ解析の基礎,加藤,瀬々,金子.                        32
デバッガ:Step Over のみ使う場合

                               スタック


                               メソッド main のスタックフレーム


                                  a=3       b=-1

                                abs_a=3   abs_b=1

                                 sum=4




式 abs_a+abs_b の値が計算され,
結果が変数 sum に代入された
ステップオーバーをクリック
  2008年8月,データ解析の基礎,加藤,瀬々,金子.                        33
終わったらデバッガを終了させる

                              スタック


                              メソッド main のスタックフレーム


                                 a=3       b=-1

                               abs_a=3   abs_b=1

                                sum=4




結果が画面に出力された

停止ボタンをクリック
 2008年8月,データ解析の基礎,加藤,瀬々,金子.                        34
終わったらデバッガを終了させる

                              スタック


                              メソッド main のスタックフレーム


                                 a=3       b=-1

                               abs_a=3   abs_b=1

                                sum=4




結果が画面に出力された
これをクリックすると,デバッガの画面から
通常の画面に戻る
 2008年8月,データ解析の基礎,加藤,瀬々,金子.                        35
終わったらデバッガを終了させる

                              スタック


                              メソッド main のスタックフレーム


                                 a=3       b=-1

                               abs_a=3   abs_b=1

                                sum=4




通常の画面に戻った


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

• Java文法の基本,メソッドを理解する

• メソッドに対するデバッガの操作を学習する

  – 「Step Over」ボタンは,メソッドの呼び出しも含めて
    1行ずつ動作させる

  – 「Step Into」ボタンは,メソッドの先頭のコードを実行する
    手前まで進める
       停止ボタン Step Into ボタン
                              Step Over ボタン


 2008年8月,データ解析の基礎,加藤,瀬々,金子.                   37
デバッガ:Step Into ボタンを使うと




      ここをダブルクリックしてブレークポイントを作る



前回と同様,Step Over ボタンだけで
デバッガを使ってみる
                            前回と同じ作業
   2008年8月,データ解析の基礎,加藤,瀬々,金子.         38
デバッガ:Step Into ボタンを使うと

                           このボタンをクリックして
                           デバッガを起動する




前回と同様,Step Over ボタンだけで
デバッガを使ってみる
                            前回と同じ作業
   2008年8月,データ解析の基礎,加藤,瀬々,金子.             39
デバッガ:Step Into ボタンを使うと




「デバッガの画面に切り替えてよいか?」と聞かれている.
「Yes」をクリックする
                           前回と同じ作業
  2008年8月,データ解析の基礎,加藤,瀬々,金子.         40
デバッガ:Step Over のみ使う場合

                              スタック


                              メソッド main のスタックフレーム


                                  a       b

                                abs_a   abs_b

                                 sum




デバッガが起動され,最初のブレーク
ポイントまで処理が進んだ
ステップオーバーをクリック
 2008年8月,データ解析の基礎,加藤,瀬々,金子.                     41
デバッガ:Step Into ボタンを使うと

                               スタック


                               メソッド main のスタックフレーム


                                  a=3     b=-1

                                 abs_a   abs_b

                                  sum




a=3, b=-1が代入された
Step Intoをクリック

  2008年8月,データ解析の基礎,加藤,瀬々,金子.                     42
デバッガ:Step Into ボタンを使うと

                              スタック


                              メソッド main のスタックフレーム


                                  a       b

                                abs_a   abs_b

                                 sum




メソッド abs の最初のステップまで
進んだ
ステップオーバーをクリック
 2008年8月,データ解析の基礎,加藤,瀬々,金子.                     43
デバッガ:Step Into ボタンを使うと

                              スタック


                              メソッド main のスタックフレーム


                                 a=3     b=-1

                                abs_a   abs_b

                                 sum



                              メソッド abs のスタックフレーム

                                 n=3     ret
n>=0 なので
                               引数を含む変数が作られる
ステップオーバーをクリック

 2008年8月,データ解析の基礎,加藤,瀬々,金子.                        44
デバッガ:Step Into ボタンを使うと

                              スタック


                              メソッド main のスタックフレーム


                                 a=3     b=-1

                                abs_a   abs_b

                                 sum



                              メソッド abs のスタックフレーム

                                 n=3    ret=3
変数 ret に n の値が代入された
                               引数を含む変数が作られる
ステップオーバーをクリック

 2008年8月,データ解析の基礎,加藤,瀬々,金子.                        45
デバッガ:Step Into ボタンを使うと

                              スタック


                              メソッド main のスタックフレーム


                                 a=3     b=-1

                                abs_a   abs_b

                                 sum




戻り値を3としてメソッド abs が
終了して,呼び出し元に戻ってきた
ステップオーバーをクリック
 2008年8月,データ解析の基礎,加藤,瀬々,金子.                     46
デバッガ:Step Into ボタンを使うと

                               スタック


                               メソッド main のスタックフレーム


                                  a=3      b=-1

                                abs_a=3   abs_b

                                  sum




変数 abs_a にメソッド abs の
戻り値3が代入された
            もう一度Step Intoの動きをみてみましょう
  2008年8月,データ解析の基礎,加藤,瀬々,金子.                      47
デバッガ:Step Into ボタンを使うと

                              スタック


                              メソッド main のスタックフレーム


                                 a=3      b=-1

                               abs_a=3   abs_b

                                 sum



                              メソッド abs のスタックフレーム

                                n=-1      ret
メソッド abs の最初のステップまで
                               引数を含む変数が作られる
進んだ
ステップオーバーをクリック
 2008年8月,データ解析の基礎,加藤,瀬々,金子.                        48
デバッガ:Step Into ボタンを使うと

                              スタック


                              メソッド main のスタックフレーム


                                 a=3      b=-1

                               abs_a=3   abs_b

                                 sum



                              メソッド abs のスタックフレーム

                                n=-1      ret
n>=0 の条件は満たさないので
                               引数を含む変数が作られる
ステップオーバーをクリック
 2008年8月,データ解析の基礎,加藤,瀬々,金子.                        49
デバッガ:Step Into ボタンを使うと

                              スタック


                              メソッド main のスタックフレーム


                                 a=3      b=-1

                               abs_a=3   abs_b

                                 sum



                              メソッド abs のスタックフレーム

                                n=-1      ret
n>=0 の条件は満たさないので
                               引数を含む変数が作られる
ステップオーバーをクリック
 2008年8月,データ解析の基礎,加藤,瀬々,金子.                        50
デバッガ:Step Into ボタンを使うと

                              スタック


                              メソッド main のスタックフレーム


                                 a=3      b=-1

                               abs_a=3   abs_b

                                 sum



                              メソッド abs のスタックフレーム

                                n=-1     ret=1
変数 ret に –n の値が代入された
                               引数を含む変数が作られる
ステップオーバーをクリック
 2008年8月,データ解析の基礎,加藤,瀬々,金子.                        51
デバッガ:Step Into ボタンを使うと

                              スタック


                              メソッド main のスタックフレーム


                                 a=3      b=-1

                               abs_a=3   abs_b

                                 sum




戻り値を1としてメソッド abs が
終了して,呼び出し元に戻ってきた
ステップオーバーをクリック
 2008年8月,データ解析の基礎,加藤,瀬々,金子.                      52
デバッガ:Step Into ボタンを使うと

                               スタック


                               メソッド main のスタックフレーム


                                  a=3       b=-1

                                abs_a=3   abs_b=1

                                  sum




変数 abs_b にメソッド abs の
戻り値1が代入された
ステップオーバーをクリック
  2008年8月,データ解析の基礎,加藤,瀬々,金子.                        53
デバッガ:Step Into ボタンを使うと

                               スタック


                               メソッド main のスタックフレーム


                                  a=3       b=-1

                                abs_a=3   abs_b=1

                                 sum=4




変数 sum に abs_a+abs_b の
値が代入された
ステップオーバーをクリック
  2008年8月,データ解析の基礎,加藤,瀬々,金子.                        54
練習6-b. つづき

Test06b.java      プロジェクト名: test06
                                              (1) デバッガを使って
public class Test06b {
  public static void main( String[] args ){
                                                  この2つの呼び出し
    int a, b;                                     に対して,Step Into
    int abs_a, abs_b;
    int sum;                                      を使って
    a = 3; b = -1;
                                                   n と ret の値が
     abs_a = abs(a);                              それぞれどうなって
     abs_b = abs(b);
     sum = abs_a+abs_b;                           いるのか調べよ
    }
     System.out.println(“sum=“+sum);
                                              (2) 変数 c と abs_c を
    public static int abs( int n ){               追加し,
      int ret;
      if ( n >= 0 ){                              a=-3; b=7; c=-5;
        ret = n;
      } else {
                                                  としたときに,
        ret = -n;                                 n と ret の値がどう
      }
      return ret;                                 なるか,デバッガを
}
    }
                                                  使って調べよ

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                            55
練習6-c. べき乗の合計を計算せよ

Test06c.java      プロジェクト名: test06
public class Test06c {
  public static void main( String[] args ){
                                               べき乗の合計を
    int a, b, c, n;                            計算するプログラム
    int pow_a, pow_b, pow_c;
    int sum;                                   を完成させよ
    a = 3; b = 7; c = 4; n = 3;

     pow_a = power(a,n);
     pow_b = power(b,n);
     pow_c = power(c,n);
     sum = pow_a+pow_b+pow_c;
     System.out.println(“sum=“+sum);
    }
    public static int power( int x, int n ){
      int i, ret;
      ret = 1;
      for ( i = 0; i < n; i++ ){
         xのn乗を計算して ret に代入せよ
        ret = ret * x;
      }
      return ret;
    }
}


       2008年8月,データ解析の基礎,加藤,瀬々,金子.                      56
練習6-d. 階乗の合計を計算せよ

Test06d.java      プロジェクト名: test06
public class Test06d {
  public static void main( String[] args ){
                                              階乗の合計を
    int a, b, c;                              計算するプログラム
    int facto_a, facto_b, facto_c;
    int sum;                                  を完成させよ
    a = 3; b = 7; c = 4;

     facto_a = factorial(a);
     facto_b = factorial(b);
     facto_c = factorial(c);
     sum = facto_a+facto_b+facto_c;
     System.out.println(“sum=“+sum);
    }
    public static int factorial( int n ){
      int ret;
      ret = 1;
      while ( n > 0 ){
            階乗n!を計算し ret に代入せよ
        ret = ret * n;
        n = n – 1;
      }
      return ret;
    }
}

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

•   Java文法の基本,メソッド                    スタック

     public static 戻り値の型 メソッド名(引数){
                                      メソッド main のスタックフレーム
       文;
       return 式;
     }                                   a=3    b=-1

                                        abs_a   abs_b
     – mainメソッド内の変数はス
       タックにあるmainメソッドの                   sum
       フレーム内に格納されている
     – メソッドを呼び出すと新たな
       フレームができて
       スタックに積まれる                      メソッド abs のスタックフレーム

     – メソッドを抜けるときスタック                   n=-1     ret
       からそのフレームが取り除か
       れる                              引数を含む変数が作られる


    2008年8月,データ解析の基礎,加藤,瀬々,金子.                             58
補足:Java の命名規則
よく使われている命名規則
識別子のタイプ
                    1文字目大文字,2文字目以降は小文字,
クラス名                単語の区切り目は大文字で
                                             SpliteSiteClassifier
                    1文字目小文字,2文字目以降は小文字,
変数名,メソッド名           単語の区切り目は大文字で
                                             setVisible(boolean),
                                             readSeqs(),
                                             dotMat

http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html

本講義で示す例は,別の規則にしたがっている




 2008年8月,データ解析の基礎,加藤,瀬々,金子.                                        59
補足:デバッガの使い方
Resumeボタン 停止ボタン      Step Into ボタン
                                 Step Over ボタン
                                 Step Return ボタン

  Resumeボタン         次のブレークポイントまで進める
  停止ボタン             プログラムを終了させる
  Step Into ボタン     メソッドの先頭コードの手前まで進める
  Step Over ボタン     1ステップ進める
  Step Return ボタン   現在のメソッドが終了して呼び出し元に戻る




   2008年8月,データ解析の基礎,加藤,瀬々,金子.                      60
補足:assert のすすめ




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

More Related Content

Similar to Ohp Seijoen H20 04 Method

Ohp Seijoen H20 06 Mojiretsu
Ohp Seijoen H20 06 MojiretsuOhp Seijoen H20 06 Mojiretsu
Ohp Seijoen H20 06 Mojiretsusesejun
 
JSplash - Adobe MAX 2009
JSplash - Adobe MAX 2009JSplash - Adobe MAX 2009
JSplash - Adobe MAX 2009gyuque
 
Shibuya.abc - Gnashで遊ぼう
Shibuya.abc - Gnashで遊ぼうShibuya.abc - Gnashで遊ぼう
Shibuya.abc - Gnashで遊ぼうgyuque
 
アジャイル事例紹介 —夜のおしごと編—
アジャイル事例紹介 —夜のおしごと編—アジャイル事例紹介 —夜のおしごと編—
アジャイル事例紹介 —夜のおしごと編—Fumihiko Kinoshita
 
樽家昌也 (日本Rubyの会)
樽家昌也 (日本Rubyの会) 樽家昌也 (日本Rubyの会)
樽家昌也 (日本Rubyの会) toRuby
 
081210 Idcon 04 Itoh Peopleservice
081210 Idcon 04 Itoh Peopleservice081210 Idcon 04 Itoh Peopleservice
081210 Idcon 04 Itoh PeopleserviceHiroki Itoh
 
技術トレンディセミナー フレームワークとしてのTrac
技術トレンディセミナー フレームワークとしてのTrac技術トレンディセミナー フレームワークとしてのTrac
技術トレンディセミナー フレームワークとしてのTracterada
 
QM-076-六標準差管理方法的解題邏輯與策略
QM-076-六標準差管理方法的解題邏輯與策略QM-076-六標準差管理方法的解題邏輯與策略
QM-076-六標準差管理方法的解題邏輯與策略handbook
 
Sc2009autumn 次世代Daoフレームワーク Doma
Sc2009autumn 次世代Daoフレームワーク DomaSc2009autumn 次世代Daoフレームワーク Doma
Sc2009autumn 次世代Daoフレームワーク DomaToshihiro Nakamura
 
A practical practice of structured fund pricing
A practical practice of structured fund pricingA practical practice of structured fund pricing
A practical practice of structured fund pricing?? ?
 
Cloud Computing - クラウドコンピューティング(会津産学懇話会)
Cloud Computing - クラウドコンピューティング(会津産学懇話会)Cloud Computing - クラウドコンピューティング(会津産学懇話会)
Cloud Computing - クラウドコンピューティング(会津産学懇話会)Yusuke Kawasaki
 
GAE/J 開発環境でJDO入門
GAE/J 開発環境でJDO入門GAE/J 開発環境でJDO入門
GAE/J 開発環境でJDO入門bose999
 
とちぎRuby会議01(原)
とちぎRuby会議01(原)とちぎRuby会議01(原)
とちぎRuby会議01(原)Shin-ichiro HARA
 
【13-C-7】 Developers [Media] Summit InfoQ のコンセプト
【13-C-7】 Developers [Media] Summit InfoQ のコンセプト【13-C-7】 Developers [Media] Summit InfoQ のコンセプト
【13-C-7】 Developers [Media] Summit InfoQ のコンセプトdevsumi2009
 
20090418 イケテルRails勉強会 第1部Rails編
20090418 イケテルRails勉強会 第1部Rails編20090418 イケテルRails勉強会 第1部Rails編
20090418 イケテルRails勉強会 第1部Rails編mochiko AsTech
 
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信Yusuke Kawasaki
 

Similar to Ohp Seijoen H20 04 Method (20)

Ohp Seijoen H20 06 Mojiretsu
Ohp Seijoen H20 06 MojiretsuOhp Seijoen H20 06 Mojiretsu
Ohp Seijoen H20 06 Mojiretsu
 
Reloaded
ReloadedReloaded
Reloaded
 
JSplash - Adobe MAX 2009
JSplash - Adobe MAX 2009JSplash - Adobe MAX 2009
JSplash - Adobe MAX 2009
 
Shibuya.abc - Gnashで遊ぼう
Shibuya.abc - Gnashで遊ぼうShibuya.abc - Gnashで遊ぼう
Shibuya.abc - Gnashで遊ぼう
 
アジャイル事例紹介 —夜のおしごと編—
アジャイル事例紹介 —夜のおしごと編—アジャイル事例紹介 —夜のおしごと編—
アジャイル事例紹介 —夜のおしごと編—
 
object-shapes
object-shapesobject-shapes
object-shapes
 
dRuby
dRubydRuby
dRuby
 
樽家昌也 (日本Rubyの会)
樽家昌也 (日本Rubyの会) 樽家昌也 (日本Rubyの会)
樽家昌也 (日本Rubyの会)
 
081210 Idcon 04 Itoh Peopleservice
081210 Idcon 04 Itoh Peopleservice081210 Idcon 04 Itoh Peopleservice
081210 Idcon 04 Itoh Peopleservice
 
技術トレンディセミナー フレームワークとしてのTrac
技術トレンディセミナー フレームワークとしてのTrac技術トレンディセミナー フレームワークとしてのTrac
技術トレンディセミナー フレームワークとしてのTrac
 
QM-076-六標準差管理方法的解題邏輯與策略
QM-076-六標準差管理方法的解題邏輯與策略QM-076-六標準差管理方法的解題邏輯與策略
QM-076-六標準差管理方法的解題邏輯與策略
 
Sc2009autumn 次世代Daoフレームワーク Doma
Sc2009autumn 次世代Daoフレームワーク DomaSc2009autumn 次世代Daoフレームワーク Doma
Sc2009autumn 次世代Daoフレームワーク Doma
 
A practical practice of structured fund pricing
A practical practice of structured fund pricingA practical practice of structured fund pricing
A practical practice of structured fund pricing
 
Cloud Computing - クラウドコンピューティング(会津産学懇話会)
Cloud Computing - クラウドコンピューティング(会津産学懇話会)Cloud Computing - クラウドコンピューティング(会津産学懇話会)
Cloud Computing - クラウドコンピューティング(会津産学懇話会)
 
Iir 08 ver.1.0
Iir 08 ver.1.0Iir 08 ver.1.0
Iir 08 ver.1.0
 
GAE/J 開発環境でJDO入門
GAE/J 開発環境でJDO入門GAE/J 開発環境でJDO入門
GAE/J 開発環境でJDO入門
 
とちぎRuby会議01(原)
とちぎRuby会議01(原)とちぎRuby会議01(原)
とちぎRuby会議01(原)
 
【13-C-7】 Developers [Media] Summit InfoQ のコンセプト
【13-C-7】 Developers [Media] Summit InfoQ のコンセプト【13-C-7】 Developers [Media] Summit InfoQ のコンセプト
【13-C-7】 Developers [Media] Summit InfoQ のコンセプト
 
20090418 イケテルRails勉強会 第1部Rails編
20090418 イケテルRails勉強会 第1部Rails編20090418 イケテルRails勉強会 第1部Rails編
20090418 イケテルRails勉強会 第1部Rails編
 
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
 

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

Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Jisc
 
AmericanHighSchoolsprezentacijaoskolama.
AmericanHighSchoolsprezentacijaoskolama.AmericanHighSchoolsprezentacijaoskolama.
AmericanHighSchoolsprezentacijaoskolama.arsicmarija21
 
Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Celine George
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17Celine George
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxmanuelaromero2013
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatYousafMalik24
 
Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...jaredbarbolino94
 
Gas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxGas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxDr.Ibrahim Hassaan
 
Meghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media ComponentMeghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media ComponentInMediaRes1
 
Capitol Tech U Doctoral Presentation - April 2024.pptx
Capitol Tech U Doctoral Presentation - April 2024.pptxCapitol Tech U Doctoral Presentation - April 2024.pptx
Capitol Tech U Doctoral Presentation - April 2024.pptxCapitolTechU
 
Types of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptxTypes of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptxEyham Joco
 
Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxOH TEIK BIN
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxpboyjonauth
 
Pharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdfPharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdfMahmoud M. Sallam
 
MICROBIOLOGY biochemical test detailed.pptx
MICROBIOLOGY biochemical test detailed.pptxMICROBIOLOGY biochemical test detailed.pptx
MICROBIOLOGY biochemical test detailed.pptxabhijeetpadhi001
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxiammrhaywood
 
Hierarchy of management that covers different levels of management
Hierarchy of management that covers different levels of managementHierarchy of management that covers different levels of management
Hierarchy of management that covers different levels of managementmkooblal
 

Recently uploaded (20)

Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
AmericanHighSchoolsprezentacijaoskolama.
AmericanHighSchoolsprezentacijaoskolama.AmericanHighSchoolsprezentacijaoskolama.
AmericanHighSchoolsprezentacijaoskolama.
 
Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptx
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice great
 
Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...
 
Gas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxGas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptx
 
Meghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media ComponentMeghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media Component
 
Capitol Tech U Doctoral Presentation - April 2024.pptx
Capitol Tech U Doctoral Presentation - April 2024.pptxCapitol Tech U Doctoral Presentation - April 2024.pptx
Capitol Tech U Doctoral Presentation - April 2024.pptx
 
ESSENTIAL of (CS/IT/IS) class 06 (database)
ESSENTIAL of (CS/IT/IS) class 06 (database)ESSENTIAL of (CS/IT/IS) class 06 (database)
ESSENTIAL of (CS/IT/IS) class 06 (database)
 
Types of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptxTypes of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptx
 
Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptx
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptx
 
Pharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdfPharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdf
 
OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...
 
MICROBIOLOGY biochemical test detailed.pptx
MICROBIOLOGY biochemical test detailed.pptxMICROBIOLOGY biochemical test detailed.pptx
MICROBIOLOGY biochemical test detailed.pptx
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
 
Hierarchy of management that covers different levels of management
Hierarchy of management that covers different levels of managementHierarchy of management that covers different levels of management
Hierarchy of management that covers different levels of management
 

Ohp Seijoen H20 04 Method

  • 1. データ解析の基礎 Java文法,メソッド 2008年8月,データ解析の基礎,加藤,瀬々,金子. 1
  • 3. 絶対値の合計を計算するプログラム Test06a.java public class Test06a { public static void main( String[] args ){ int a, b, c, d, e, f; int abs_a, abs_b, abs_c, abs_d, abs_e, abs_f; int sum; a = 3; b = -1; c = 5; d = -4; e = -7; f = 6; なが~い } if ( a >= 0 ){ abs_a = a; } else { 変数 a の値の絶対値を プログラムになった abs_a = -a; 変数 abs_a に代入 } if ( b >= 0 ){ 同じような文が多い } abs_b = b; } else { abs_b = -b; } 変数 b の値の絶対値を 変数 abs_b に代入 abs_c, abs_d, abs_e, abs_f も同様に計算する; もっと簡潔に sum = abs_a+abs_b+abs_c+ abs_d+abs_e+abs_f; 書けないか? System.out.println(“sum=“+sum); } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 3
  • 4. メソッドを使って簡潔なプログラムに Test06b.java public class Test06b { public static void main( String[] args ){ 変数 a の値の絶対値を int a, b, c, d, e, f; 変数 abs_a に代入 int abs_a, abs_b, abs_c, abs_d, abs_e, abs_f; int sum; a = 3; b = -1; c = 5; d = -4; e = -7; f = 6; 変数 b の値の絶対値を 変数 abs_b に代入 abs_a = abs(a); abs_b = abs(b); abs_c = abs(c); abs_d = abs(d); abs_e = abs(e); abs_f = abs(f); sum = abs_a+abs_b+abs_c+ abs_d+abs_e+abs_f; System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; if ( n >= 0 ){ } else { } ret = n; ret = -n; return ret; } 絶対値を計算する メソッド メソッドを使うと 同様なコードを } } 一つにまとめられる 2008年8月,データ解析の基礎,加藤,瀬々,金子. 4
  • 5. メソッド,戻り値,引数 Test06b.java public class Test06b { public static void main( String[] args ){ 変数 a の値の絶対値を int a, b; 変数 abs_a に代入 int abs_a, abs_b; int sum; a = 3; b = -1; 変数 b の値の絶対値を 変数 abs_b に代入 abs_a = abs(a); abs_b = abs(b); sum = abs_a+abs_b; System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; if ( n >= 0 ){ ret = n; 戻り値の型 メソッド名 引数 } else { ret = -n; } } return ret; メソッドabsは変数retの値を呼び出し元に返す } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 5
  • 6. メソッドの一般形式 Test06b.java public static 戻り値の型 メソッド名(引数){ public class Test06b { 変数宣言; public static void main( int a, b; 文; String[] args ){ int abs_a, abs_b; return 式; int sum; a = 3; b = -1; } abs_a = abs(a); abs_b = abs(b); sum = abs_a+abs_b; System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; if ( n >= 0 ){ ret = n; 戻り値の型 メソッド名 引数 } else { ret = -n; } } return ret; メソッドabsは変数retの値を呼び出し元に返す } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 6
  • 7. 練習6-b. Test06b.java プロジェクト名: test06 public class Test06b { public static void main( String[] args ){ 左のプログラムを int a, b; 実行せよ int abs_a, abs_b; int sum; a = 3; b = -1; abs_a = abs(a); 後でデバッガを abs_b = abs(b); sum = abs_a+abs_b; 使って動作を } System.out.println(“sum=“+sum); 確認します public static int abs( int n ){ int ret; if ( n >= 0 ){ ret = n; } else { ret = -n; } return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 7
  • 8. どのように計算しているのか? Test06b.java スタック public class Test06b { public static void main( String[] args ){ メソッド main のスタックフレーム int a, b; int abs_a, abs_b; int sum; a=3 b a = 3; b = -1; abs_a = abs(a); abs_a abs_b abs_b = abs(b); sum = abs_a+abs_b; sum System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; 正確には,フレームは,局所変数配列のほかに,オペランドスタック if ( n >= 0 ){ も保持する ret = n; } else { ret = -n; } return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 8
  • 9. どのように計算しているのか? Test06b.java スタック public class Test06b { public static void main( String[] args ){ メソッド main のスタックフレーム int a, b; int abs_a, abs_b; int sum; a=3 b=-1 a = 3; b = -1; abs_a = abs(a); abs_a abs_b abs_b = abs(b); sum = abs_a+abs_b; sum System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; if ( n >= 0 ){ ret = n; } else { ret = -n; } return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 9
  • 10. メソッドabs(a)を呼び出す Test06b.java スタック public class Test06b { public static void main( String[] args ){ メソッド main のスタックフレーム int a, b; int abs_a, abs_b; int sum; a=3 b=-1 a = 3; b = -1; abs_a = abs(a); abs_a abs_b abs_b = abs(b); sum = abs_a+abs_b; sum System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; if ( n >= 0 ){ ret = n; } else { ret = -n; } return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 10
  • 11. メソッド呼び出しにより新たなフレームが積まれる Test06b.java スタック public class Test06b { public static void main( String[] args ){ メソッド main のスタックフレーム int a, b; int abs_a, abs_b; int sum; a=3 b=-1 a = 3; b = -1; abs_a = abs(a); abs_a abs_b abs_b = abs(b); sum = abs_a+abs_b; sum System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; if ( n >= 0 ){ ret = n; メソッド abs のスタックフレーム } else { ret = -n; } n=3 ret return ret; } 引数を含む変数が作られる } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 11
  • 12. 制御がメソッド内に移る Test06b.java スタック public class Test06b { public static void main( String[] args ){ メソッド main のスタックフレーム int a, b; int abs_a, abs_b; int sum; a=3 b=-1 a = 3; b = -1; abs_a = abs(a); abs_a abs_b abs_b = abs(b); sum = abs_a+abs_b; sum System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; if ( n >= 0 ){ ret = n; メソッド abs のスタックフレーム } else { ret = -n; } n=3 ret return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 12
  • 13. Test06b.java スタック public class Test06b { public static void main( String[] args ){ メソッド main のスタックフレーム int a, b; int abs_a, abs_b; int sum; a=3 b=-1 a = 3; b = -1; abs_a = abs(a); abs_a abs_b abs_b = abs(b); sum = abs_a+abs_b; sum System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; if ( n >= 0 ){ ret = n; メソッド abs のスタックフレーム } else { ret = -n; } n=3 ret=3 return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 13
  • 14. 変数 ret の値を呼び出し元に返す Test06b.java スタック public class Test06b { public static void main( String[] args ){ メソッド main のスタックフレーム int a, b; int abs_a, abs_b; int sum; a=3 b=-1 a = 3; b = -1; abs_a = abs(a); abs_a abs_b abs_b = abs(b); sum = abs_a+abs_b; sum System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; if ( n >= 0 ){ ret = n; メソッド abs のスタックフレーム } else { ret = -n; } n=3 ret=3 return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 14
  • 15. 現在のフレームを破棄して, 制御を呼び出し元に戻す Test06b.java スタック public class Test06b { public static void main( String[] args ){ メソッド main のスタックフレーム int a, b; int abs_a, abs_b; int sum; a=3 b=-1 a = 3; b = -1; abs_a = abs(a); abs_a=3 abs_b abs_b = abs(b); sum = abs_a+abs_b; sum System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; if ( n >= 0 ){ ret = n; } else { ret = -n; } return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 15
  • 16. メソッドabs(b)を呼び出す Test06b.java スタック public class Test06b { public static void main( String[] args ){ メソッド main のスタックフレーム int a, b; int abs_a, abs_b; int sum; a=3 b=-1 a = 3; b = -1; abs_a = abs(a); abs_a=3 abs_b abs_b = abs(b); sum = abs_a+abs_b; sum System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; if ( n >= 0 ){ ret = n; } else { ret = -n; } return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 16
  • 17. メソッド呼び出しにより新たなフレームが積まれる Test06b.java スタック public class Test06b { public static void main( String[] args ){ メソッド main のスタックフレーム int a, b; int abs_a, abs_b; int sum; a=3 b=-1 a = 3; b = -1; abs_a = abs(a); abs_a=3 abs_b abs_b = abs(b); sum = abs_a+abs_b; sum System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; if ( n >= 0 ){ ret = n; メソッド abs のスタックフレーム } else { ret = -n; } n=-1 ret return ret; } 引数を含む変数が作られる } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 17
  • 18. 制御がメソッド内に移る Test06b.java スタック public class Test06b { public static void main( String[] args ){ メソッド main のスタックフレーム int a, b; int abs_a, abs_b; int sum; a=3 b=-1 a = 3; b = -1; abs_a = abs(a); abs_a=3 abs_b abs_b = abs(b); sum = abs_a+abs_b; sum System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; if ( n >= 0 ){ ret = n; メソッド abs のスタックフレーム } else { ret = -n; } n=-1 ret return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 18
  • 19. Test06b.java スタック public class Test06b { public static void main( String[] args ){ メソッド main のスタックフレーム int a, b; int abs_a, abs_b; int sum; a=3 b=-1 a = 3; b = -1; abs_a = abs(a); abs_a=3 abs_b abs_b = abs(b); sum = abs_a+abs_b; sum System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; if ( n >= 0 ){ ret = n; メソッド abs のスタックフレーム } else { ret = -n; } n=-1 ret=1 return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 19
  • 20. 変数 ret の値を呼び出し元に返す Test06b.java スタック public class Test06b { public static void main( String[] args ){ メソッド main のスタックフレーム int a, b; int abs_a, abs_b; int sum; a=3 b=-1 a = 3; b = -1; abs_a = abs(a); abs_a=3 abs_b abs_b = abs(b); sum = abs_a+abs_b; sum System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; if ( n >= 0 ){ ret = n; メソッド abs のスタックフレーム } else { ret = -n; } n=-1 ret=1 return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 20
  • 21. 現在のフレームを破棄して, 制御を呼び出し元に戻す Test06b.java スタック public class Test06b { public static void main( String[] args ){ メソッド main のスタックフレーム int a, b; int abs_a, abs_b; int sum; a=3 b=-1 a = 3; b = -1; abs_a = abs(a); abs_a=3 abs_b=1 abs_b = abs(b); sum = abs_a+abs_b; sum System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; if ( n >= 0 ){ ret = n; } else { ret = -n; } return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 21
  • 22. Test06b.java スタック public class Test06b { public static void main( String[] args ){ メソッド main のスタックフレーム int a, b; int abs_a, abs_b; int sum; a=3 b=-1 a = 3; b = -1; abs_a = abs(a); abs_a=3 abs_b=1 abs_b = abs(b); sum = abs_a+abs_b; sum=4 System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; if ( n >= 0 ){ ret = n; } else { ret = -n; } return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 22
  • 23. Test06b.java スタック public class Test06b { public static void main( String[] args ){ メソッド main のスタックフレーム int a, b; int abs_a, abs_b; int sum; a=3 b=-1 a = 3; b = -1; abs_a = abs(a); abs_a=3 abs_b=1 abs_b = abs(b); sum = abs_a+abs_b; sum=4 System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; if ( n >= 0 ){ ret = n; 画面 } else { ret = -n; sum=4 } return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 23
  • 24. 注意点:引数は呼び出しもとと異なる箱 Test06b.java スタック public class Test06b { public static void main( String[] args ){ メソッド main のスタックフレーム int a, b; int abs_a, abs_b; int sum; a=3 b=-1 a = 3; b = -1; abs_a = abs(a); abs_a abs_b abs_b = abs(b); sum = abs_a+abs_b; sum System.out.println(“sum=“+sum); } public static int abs( int n ){ int ret; if ( n >= 0 ){ ret = n; メソッド abs のスタックフレーム } else { ret = -n; 呼び出し元の箱と n=3 ret } return ret; 引数の箱は異なって 引数を含む変数が作られる } } いることに注意 2008年8月,データ解析の基礎,加藤,瀬々,金子. 24
  • 25. まとめ • Java文法の基本,メソッドを理解する • メソッドに対するデバッガの操作を学習する – 「Step Over」ボタンは,メソッドの呼び出しも含めて 1行ずつ動作させる – 「Step Into」ボタンは,メソッドの先頭のコードを実行する 手前まで進める 停止ボタン Step Into ボタン Step Over ボタン 2008年8月,データ解析の基礎,加藤,瀬々,金子. 25
  • 26. デバッガ:Step Over のみ使う場合 ここをダブルクリックして ブレークポイントをつける 前回と同様,Step Over ボタンだけで デバッガを使ってみる 2008年8月,データ解析の基礎,加藤,瀬々,金子. 26
  • 27. デバッガ:Step Over のみ使う場合 このボタンをクリックして デバッガを起動する 前回と同様,Step Over ボタンだけで デバッガを使ってみる 2008年8月,データ解析の基礎,加藤,瀬々,金子. 27
  • 29. デバッガ:Step Over のみ使う場合 スタック メソッド main のスタックフレーム a b abs_a abs_b sum デバッガが起動された ステップオーバーをクリック 2008年8月,データ解析の基礎,加藤,瀬々,金子. 29
  • 30. デバッガ:Step Over のみ使う場合 スタック メソッド main のスタックフレーム a=3 b=-1 abs_a abs_b sum a=3, b=-1が代入された ステップオーバーをクリック 2008年8月,データ解析の基礎,加藤,瀬々,金子. 30
  • 31. デバッガ:Step Over のみ使う場合 スタック メソッド main のスタックフレーム a=3 b=-1 abs_a=3 abs_b sum メソッド abs が呼び出され,結果が 変数 abs_aに代入された ステップオーバーをクリック 2008年8月,データ解析の基礎,加藤,瀬々,金子. 31
  • 32. デバッガ:Step Over のみ使う場合 スタック メソッド main のスタックフレーム a=3 b=-1 abs_a=3 abs_b=1 sum メソッド abs が呼び出され,結果が 変数 abs_bに代入された ステップオーバーをクリック 2008年8月,データ解析の基礎,加藤,瀬々,金子. 32
  • 33. デバッガ:Step Over のみ使う場合 スタック メソッド main のスタックフレーム a=3 b=-1 abs_a=3 abs_b=1 sum=4 式 abs_a+abs_b の値が計算され, 結果が変数 sum に代入された ステップオーバーをクリック 2008年8月,データ解析の基礎,加藤,瀬々,金子. 33
  • 34. 終わったらデバッガを終了させる スタック メソッド main のスタックフレーム a=3 b=-1 abs_a=3 abs_b=1 sum=4 結果が画面に出力された 停止ボタンをクリック 2008年8月,データ解析の基礎,加藤,瀬々,金子. 34
  • 35. 終わったらデバッガを終了させる スタック メソッド main のスタックフレーム a=3 b=-1 abs_a=3 abs_b=1 sum=4 結果が画面に出力された これをクリックすると,デバッガの画面から 通常の画面に戻る 2008年8月,データ解析の基礎,加藤,瀬々,金子. 35
  • 36. 終わったらデバッガを終了させる スタック メソッド main のスタックフレーム a=3 b=-1 abs_a=3 abs_b=1 sum=4 通常の画面に戻った 2008年8月,データ解析の基礎,加藤,瀬々,金子. 36
  • 37. まとめ • Java文法の基本,メソッドを理解する • メソッドに対するデバッガの操作を学習する – 「Step Over」ボタンは,メソッドの呼び出しも含めて 1行ずつ動作させる – 「Step Into」ボタンは,メソッドの先頭のコードを実行する 手前まで進める 停止ボタン Step Into ボタン Step Over ボタン 2008年8月,データ解析の基礎,加藤,瀬々,金子. 37
  • 38. デバッガ:Step Into ボタンを使うと ここをダブルクリックしてブレークポイントを作る 前回と同様,Step Over ボタンだけで デバッガを使ってみる 前回と同じ作業 2008年8月,データ解析の基礎,加藤,瀬々,金子. 38
  • 39. デバッガ:Step Into ボタンを使うと このボタンをクリックして デバッガを起動する 前回と同様,Step Over ボタンだけで デバッガを使ってみる 前回と同じ作業 2008年8月,データ解析の基礎,加藤,瀬々,金子. 39
  • 41. デバッガ:Step Over のみ使う場合 スタック メソッド main のスタックフレーム a b abs_a abs_b sum デバッガが起動され,最初のブレーク ポイントまで処理が進んだ ステップオーバーをクリック 2008年8月,データ解析の基礎,加藤,瀬々,金子. 41
  • 42. デバッガ:Step Into ボタンを使うと スタック メソッド main のスタックフレーム a=3 b=-1 abs_a abs_b sum a=3, b=-1が代入された Step Intoをクリック 2008年8月,データ解析の基礎,加藤,瀬々,金子. 42
  • 43. デバッガ:Step Into ボタンを使うと スタック メソッド main のスタックフレーム a b abs_a abs_b sum メソッド abs の最初のステップまで 進んだ ステップオーバーをクリック 2008年8月,データ解析の基礎,加藤,瀬々,金子. 43
  • 44. デバッガ:Step Into ボタンを使うと スタック メソッド main のスタックフレーム a=3 b=-1 abs_a abs_b sum メソッド abs のスタックフレーム n=3 ret n>=0 なので 引数を含む変数が作られる ステップオーバーをクリック 2008年8月,データ解析の基礎,加藤,瀬々,金子. 44
  • 45. デバッガ:Step Into ボタンを使うと スタック メソッド main のスタックフレーム a=3 b=-1 abs_a abs_b sum メソッド abs のスタックフレーム n=3 ret=3 変数 ret に n の値が代入された 引数を含む変数が作られる ステップオーバーをクリック 2008年8月,データ解析の基礎,加藤,瀬々,金子. 45
  • 46. デバッガ:Step Into ボタンを使うと スタック メソッド main のスタックフレーム a=3 b=-1 abs_a abs_b sum 戻り値を3としてメソッド abs が 終了して,呼び出し元に戻ってきた ステップオーバーをクリック 2008年8月,データ解析の基礎,加藤,瀬々,金子. 46
  • 47. デバッガ:Step Into ボタンを使うと スタック メソッド main のスタックフレーム a=3 b=-1 abs_a=3 abs_b sum 変数 abs_a にメソッド abs の 戻り値3が代入された もう一度Step Intoの動きをみてみましょう 2008年8月,データ解析の基礎,加藤,瀬々,金子. 47
  • 48. デバッガ:Step Into ボタンを使うと スタック メソッド main のスタックフレーム a=3 b=-1 abs_a=3 abs_b sum メソッド abs のスタックフレーム n=-1 ret メソッド abs の最初のステップまで 引数を含む変数が作られる 進んだ ステップオーバーをクリック 2008年8月,データ解析の基礎,加藤,瀬々,金子. 48
  • 49. デバッガ:Step Into ボタンを使うと スタック メソッド main のスタックフレーム a=3 b=-1 abs_a=3 abs_b sum メソッド abs のスタックフレーム n=-1 ret n>=0 の条件は満たさないので 引数を含む変数が作られる ステップオーバーをクリック 2008年8月,データ解析の基礎,加藤,瀬々,金子. 49
  • 50. デバッガ:Step Into ボタンを使うと スタック メソッド main のスタックフレーム a=3 b=-1 abs_a=3 abs_b sum メソッド abs のスタックフレーム n=-1 ret n>=0 の条件は満たさないので 引数を含む変数が作られる ステップオーバーをクリック 2008年8月,データ解析の基礎,加藤,瀬々,金子. 50
  • 51. デバッガ:Step Into ボタンを使うと スタック メソッド main のスタックフレーム a=3 b=-1 abs_a=3 abs_b sum メソッド abs のスタックフレーム n=-1 ret=1 変数 ret に –n の値が代入された 引数を含む変数が作られる ステップオーバーをクリック 2008年8月,データ解析の基礎,加藤,瀬々,金子. 51
  • 52. デバッガ:Step Into ボタンを使うと スタック メソッド main のスタックフレーム a=3 b=-1 abs_a=3 abs_b sum 戻り値を1としてメソッド abs が 終了して,呼び出し元に戻ってきた ステップオーバーをクリック 2008年8月,データ解析の基礎,加藤,瀬々,金子. 52
  • 53. デバッガ:Step Into ボタンを使うと スタック メソッド main のスタックフレーム a=3 b=-1 abs_a=3 abs_b=1 sum 変数 abs_b にメソッド abs の 戻り値1が代入された ステップオーバーをクリック 2008年8月,データ解析の基礎,加藤,瀬々,金子. 53
  • 54. デバッガ:Step Into ボタンを使うと スタック メソッド main のスタックフレーム a=3 b=-1 abs_a=3 abs_b=1 sum=4 変数 sum に abs_a+abs_b の 値が代入された ステップオーバーをクリック 2008年8月,データ解析の基礎,加藤,瀬々,金子. 54
  • 55. 練習6-b. つづき Test06b.java プロジェクト名: test06 (1) デバッガを使って public class Test06b { public static void main( String[] args ){ この2つの呼び出し int a, b; に対して,Step Into int abs_a, abs_b; int sum; を使って a = 3; b = -1; n と ret の値が abs_a = abs(a); それぞれどうなって abs_b = abs(b); sum = abs_a+abs_b; いるのか調べよ } System.out.println(“sum=“+sum); (2) 変数 c と abs_c を public static int abs( int n ){ 追加し, int ret; if ( n >= 0 ){ a=-3; b=7; c=-5; ret = n; } else { としたときに, ret = -n; n と ret の値がどう } return ret; なるか,デバッガを } } 使って調べよ 2008年8月,データ解析の基礎,加藤,瀬々,金子. 55
  • 56. 練習6-c. べき乗の合計を計算せよ Test06c.java プロジェクト名: test06 public class Test06c { public static void main( String[] args ){ べき乗の合計を int a, b, c, n; 計算するプログラム int pow_a, pow_b, pow_c; int sum; を完成させよ a = 3; b = 7; c = 4; n = 3; pow_a = power(a,n); pow_b = power(b,n); pow_c = power(c,n); sum = pow_a+pow_b+pow_c; System.out.println(“sum=“+sum); } public static int power( int x, int n ){ int i, ret; ret = 1; for ( i = 0; i < n; i++ ){ xのn乗を計算して ret に代入せよ ret = ret * x; } return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 56
  • 57. 練習6-d. 階乗の合計を計算せよ Test06d.java プロジェクト名: test06 public class Test06d { public static void main( String[] args ){ 階乗の合計を int a, b, c; 計算するプログラム int facto_a, facto_b, facto_c; int sum; を完成させよ a = 3; b = 7; c = 4; facto_a = factorial(a); facto_b = factorial(b); facto_c = factorial(c); sum = facto_a+facto_b+facto_c; System.out.println(“sum=“+sum); } public static int factorial( int n ){ int ret; ret = 1; while ( n > 0 ){ 階乗n!を計算し ret に代入せよ ret = ret * n; n = n – 1; } return ret; } } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 57
  • 58. まとめ • Java文法の基本,メソッド スタック public static 戻り値の型 メソッド名(引数){ メソッド main のスタックフレーム 文; return 式; } a=3 b=-1 abs_a abs_b – mainメソッド内の変数はス タックにあるmainメソッドの sum フレーム内に格納されている – メソッドを呼び出すと新たな フレームができて スタックに積まれる メソッド abs のスタックフレーム – メソッドを抜けるときスタック n=-1 ret からそのフレームが取り除か れる 引数を含む変数が作られる 2008年8月,データ解析の基礎,加藤,瀬々,金子. 58
  • 59. 補足:Java の命名規則 よく使われている命名規則 識別子のタイプ 1文字目大文字,2文字目以降は小文字, クラス名 単語の区切り目は大文字で SpliteSiteClassifier 1文字目小文字,2文字目以降は小文字, 変数名,メソッド名 単語の区切り目は大文字で setVisible(boolean), readSeqs(), dotMat http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html 本講義で示す例は,別の規則にしたがっている 2008年8月,データ解析の基礎,加藤,瀬々,金子. 59
  • 60. 補足:デバッガの使い方 Resumeボタン 停止ボタン Step Into ボタン Step Over ボタン Step Return ボタン Resumeボタン 次のブレークポイントまで進める 停止ボタン プログラムを終了させる Step Into ボタン メソッドの先頭コードの手前まで進める Step Over ボタン 1ステップ進める Step Return ボタン 現在のメソッドが終了して呼び出し元に戻る 2008年8月,データ解析の基礎,加藤,瀬々,金子. 60