Presentation is loading. Please wait.

Presentation is loading. Please wait.

山元進.  今日 総合的な演習  来週  中間試験  期末と中間両方受けて初めて成績が付く  どちらかを欠席したら 成績表は X  期末試験:適切な理由があれば追試が受けられる  適切な理由であるかの判定のため、診断書などを持参せ よ  対外試合に参加、などの理由は基本的に認めない.

Similar presentations


Presentation on theme: "山元進.  今日 総合的な演習  来週  中間試験  期末と中間両方受けて初めて成績が付く  どちらかを欠席したら 成績表は X  期末試験:適切な理由があれば追試が受けられる  適切な理由であるかの判定のため、診断書などを持参せ よ  対外試合に参加、などの理由は基本的に認めない."— Presentation transcript:

1 山元進

2  今日 総合的な演習  来週  中間試験  期末と中間両方受けて初めて成績が付く  どちらかを欠席したら 成績表は X  期末試験:適切な理由があれば追試が受けられる  適切な理由であるかの判定のため、診断書などを持参せ よ  対外試合に参加、などの理由は基本的に認めない  中間試験:適切な理由があれば欠席を認める  再来週以降総合的な演習

3  データを記憶するメモリ領域に、名前 ( 識 別子 ) を対応づけたもの int a; どこかのメモリと対応している 対応は計算機が自動的に管理 整数のデータ 10 データ書き込み データ読み出し

4  変数をまとめて一つの名前で扱う  添字 (index) によりどの要素か指定  添字は名前の後につける [ ] の中に書く  添字は整数型の変数でも良い b[0]b[1]b[2]b[3] int[ ] b = new int[4]; b という名前で 4 つの変数をまとめて扱う b.length → 4

5  条件が成り立つかどうかで処理を変える  if ( 条件 ) {  条件成立時の処理  } else {  条件不成立時の処理  }  switch ( 変数 ) { case … } という親戚もい る

6 for( int i=0; i < 10; i++) { 繰り返す処理 ( この例では i=0, i=1, i=2, … i=9 まで 10 回繰り返す ) } while( 条件 ){ 条件が成立している間繰り返す処理 } do { … } while ( 条件 ); という親戚もいる

7  繰り返し・配列・条件分岐の組み合わせが大 事  組み合わせ方は、たくさんプログラムを書か ないと、多分覚えられない(身に付かない)  さらには、メソッドの使い方が大事になる  プログラミング基礎 II で

8  一般的にはそのクラスの性質を表すデー タを記憶する変数  プログラミング基礎 I では、クラスを本格的に 使わないので、単に変数として使うことも多 い

9  メソッドは特定の機能をはたす  メソッドには引数と戻り値がある  引数と戻り値には型がある  特別な型として void 型  ある程度まとまった機能ならメソッドに する  まとまった機能の例 素数かどうか判定 する機能  フィールドへのアクセス ( 読み・書き )  プログラミング基礎 I では、クラスを本格的に 使わないので、いまはそれほど気にしなくて よい  特別なメソッド : main メソッド  仮想マシン起動時、最初に実行される

10  p. 203 int tmp = test[t]; //1 行目 test[t] = test[s]; // 2 行目 test[s] = tmp; // 3 行目  この部分の動作を確かめよう

11  i = 1, j = 3 の例 tmp の値は関知しない tmp ? test[s] 3 test[t] 6 = 演算子 ( 代入 ) 1 行目が実行されると tmp が 6 になる

12 tmp 6 test[s] 3 test[t] 6 = 演算子 ( 代入 ) 2 行目が実行されると test[t] が 3 になる

13 tmp 6 test[s] 3 test[t] 3 = 演算子 ( 代入 ) 3 行目が実行されると test[s] が 6 になる

14 tmp 6 test[s] 6 test[t] 3 test[s] 3 test[t] 6 下の、始まる前と比べると、 test[s], test[t] の値が入れ替わっている

15 前の for 文により、 t > s であることに注意 if(test[t] > test[s]){ 「 test[t] と test[s] の値の入れ替 え」 } test[s] と test[t] を比べて後ろが大きかっ たらデータを入れ替える → 前の方に大きな値が格納される ( test[s] >= test[t] が保証される)

16 for(int t=s+1; t<test.length; t++){ 「 test[s] >= test[t] となるように入れ替 え」 } for 文で、この操作を test[s] より後の全ての test[t] に対して 行う この for 文が完了すると、 test[s] >= test[t] が、 test[s] より 後ろの全ての test[t] に対して成り立つ → test[s] が test[s] から test[test.length-1] の最大値

17 for(int s=0; s<test.length; s++){ 「 test[s] から test[test.length-1] までの 最大値が test[s] になるよう並べ替え」 } この for 文が終わると、値の大きい順に並 べ替えられる

18  ソートのような複雑な操作も、 1 ステップ 1 ステップ、全ての配列と変数の値を紙に 書いてみれば、必ず動作が理解できる。  慣れれば、全部書かなくても分かるよう になる  こういう仕組みを理解するように努力し ないと、決してプログラムが書けるよう にならない  単位を取るのに苦労するし、なにより卒研で 困る

19  Report1 : a k = a k-1 + a k -2 (k>2), a 1 = 1, a 2 = 1 とする。 a n を画面に出力するプログラム を作成せよ。 n は各自の学籍番号の各ケタの 数の和とする。ただし、 n <10 の場合、さら に 10 を足せ。  Report2 : n を引数として渡すと 戻り値とし て a n を返すメソッドを作成せよ。 メソッド 名は a とする。 a メソッドを for 文の中で呼 び出し、 a 1 から a 30 までを画面に出力する プログラムを作成せよ。  ただし、 a メソッドを main メソッドから呼び出 せるよう、 static int a(int n) と宣言すること。  注意 : このメソッドを素直に実装すると、何度も 同じ計算をすることになり効率が悪い。実用的な プログラムを書くときには工夫すべき。

20  main メソッドがあるクラス名は Report3  A, J, Q, K と書かれたカード 1 枚ずつと、 2 から 10 までの数字が書かれたカード 1 枚 ずつ、計 13 枚のカードを使ってゲームを する。ルールは以下の通りとする。  カード 2 枚を同時に引き、合計点を競う。  ただし、 A は 11 点、 J, Q, K は 10 点、数字 の札は、書かれた数字を点数とする。  ( 今回使わないが、合計点 21 点を超えたら 0 点)

21  2 枚のカードの全ての組み合わせをしらべ、点数 の頻度分布を書き出せ。  k 点となるカードの順列は N k 通りだとして、 N 0, N 1, N 2, …, N 最高点 までを全て書き出すこと  ヒント  カードを 1 ~ 13 の整数と対応させる  2 枚のカードは 2 つの変数に対応させる  for 文を使うと、 1 ~ 13 全ての場合を調べることがで きる  引くカードは 2 枚だから、 2 重にネストした for 文を 使うと …  頻度を配列に記憶する。最高点を p 点とすれば、配 列の長さは p+1 になる。  A は 11 点、 J, Q, K は 10 点であることを忘れるな。


Download ppt "山元進.  今日 総合的な演習  来週  中間試験  期末と中間両方受けて初めて成績が付く  どちらかを欠席したら 成績表は X  期末試験:適切な理由があれば追試が受けられる  適切な理由であるかの判定のため、診断書などを持参せ よ  対外試合に参加、などの理由は基本的に認めない."

Similar presentations


Ads by Google