第4回目-2003/10/27

Java文法の基本(制御構造)


文字列を扱う

テキストのp80〜84を自分でやってみてください。

テキストについては話題がたくさんあるのですが、おいおい学習することにして、ここでは単純に、数値と同じような雰囲気で文字列も扱えると理解してくれればOKです。

配列

テキストp85〜86を自分でやってみてください。

配列は便利なのですが、実は理解するのが大変な概念でもあります。ここではいちばん単純なところだけを理解してくれるのでOKです。

ところで、プログラミングの本などでは初心者レベルで配列の話がけっこう掲載されているのですが、実はJavaでは配列を完全に理解するというのはかなり高度な知識が必要になります。特に、2次元以上の配列というものは、オブジェクト指向が理解していないとわからないと思います。ここでは、1次元のものだけの理解でかまいません。また、こうした集合的なデータを扱う方法は配列以外に実に多彩な機能をJavaでは利用できますし、実用的なプログラミングではむしろそうした配列以外の方法を使うことの方が多いでしょう。

繰り返しと条件判断

p87〜94を自力でやってみましょう。

p95〜97の話は自分で読んでおいてください。ただ、理解はしにくいかと思います。ここでは、同じ文字列かどうかの判断って、とっても難しい・・・ということを覚えておいてくれればそれでOKです。


練習問題

4-1:ある整数を変数numberに入力する。その数が奇数か偶数かを標準出力に表示せよ。そのとき、たとえば、ある数値が13なら、「13は奇数です」といった風に表示されるようにすること。

ヒント:10 + "は数値です" の結果はStringになる。つまり、10を、文字列の"10"として処理してくれる。

検討課題:numberに代入する数をいろいろ変更して、結果を見てみること。

4-2:フラグというテクニック。以下のようなプログラムを作ること。目的は「奇数で、5の倍数でないものなら、ビンゴ!と表示し、そうでないならはずれー!と表示する」ということにする。(数学的な意味はほとんどないので、単なる練習問題として深く考えないように)

補足:どこかで判断した結果を別のところで使いたい場合、こうしたフラグ変数は便利である。一般にフラグはbooleanを使うが、これだとtrue/falseの2通りのみである。たとえば、3通りの結果をある変数に記録したい場合には、byteやshortなどの整数型を使う。ただ、3通りだと、byteでいいが、条件式で使うことを考えれば、効率的ではなくてもint型を使ったほうが悩まなくてすむということにもつながる。

4-3:4-2のプログラムをフラグ変数を使わないで作成してみること。

ヒント:条件文で&&を使うと・・・

4-4:ある整数を変数numberに入力する。その数が素数かどうかを判断して、判断結果を表示すること。

ヒント:素数とは、1とその数以外に割り切れる整数がない数のこと。たとえば、3,5,7,11...。ということは、たとえば、13が素数かどうかを判断するには、2,3,4,5,6....12までの数値で順番に剰余を求めてみて、もし、剰余が0になる数字があれば、その数は素数ではないと言える。ただ、効率の上では、2で割り切れないのに、4で割り切れるはずはない。また、13の場合だと、7以上の数値で割り切れるわけではないので、その意味では、2〜(その数の半分)までをチェックするということでことは足りる。ただ、そこまでの機能を組み込んでもいいし、組み込まなくてもいい。まずは正しい結果が得られるようにがんばってみよう。

ヒント:フラグを使う。