○分岐の例題

分岐IF文を利用する例題をプログラミングしてみよう。
またランダムも使ってより面白い例題も是非。

(1)あなたは「子供」、それとも「青年」、それとも「大人」

子供、青年、大人の区別は年齢で言うとどこで別れるでしょうか?15歳と20歳でしょうか?この値については皆さん各自で適当に考えてみてください。
さて、生まれた年から年齢を計算し、「子供」「青年」「大人」の区別を表示させてみましょう。

ヒント;生まれた年から年齢を計算するプログラムは問題ないですよね。またお酒が飲めるかどうかを判定して表示するプログラムも大丈夫ですよね。
これを改良していくとよいでしょう。
IF文による分岐はYes/Noの二手にしか分かれません。三つにするにはどうしたらよいかを考えましょう。
Then部もしくはElse部にはどんなプログラムがかけるのか覚えていますか?
そう何でも書けます。たとえIF文であっても。
慣れない内は、きちんとフローチャートを描いて見ることが間違いのないプログラムを書くコツです。

(2)結婚できる年齢か?

日本では結婚できる年齢は、男性18歳以上、女性16歳以上となっている。
それでは生まれた年から年齢を計算し、更に男性か女性かを入力してもらって、その人が法令上結婚できるのかどうかを判断して表示させてみよう。

ヒント;生まれた年から年齢の計算は既にやっていますよね。
次に男性か女性かを入力してもらいましょう。ここでちょっとした工夫をするとよいでしょう。
「男」「女」と入力してもらうようにすると、プログラムがちょっと複雑になります。
そこで、男性なら「0」を、女性なら「1」を入力してもらうようにします。
このようにすると、If文の条件で x = 0 ならばなどとすることができます。
この問題では比較する対象が二つあります。男女の判別と、年齢の判別です。
はやりじっくりと考えフローチャートを描いてみましょう。

(3)さいころを振って大小を判定しよう

プログラムでさいころ(一つ)を振り、その目が大きいか小さいかを判定しよう。
さいころの目の大小は、3以下かそれ以外で分けましょう。

(4)さいころを二つ振って合計の大小を判定しよう

プログラムでさいころを二つ振り、それらの目の合計が大きいか小さいかを判定しよう。
合計の数値は2から12のどれかになるので、 大小は、7以下(未満でもOK)かそれ以外で分けましょう。
7はちょうど真ん中の値になるので、ここでは大小どちらに含めても構わないとしましょう。

(5)さいころを二つ振って合計の大中小を判定しよう

プログラムでさいころを二つ振り、それらの目の合計が大きいか、中くらいか、小さいかを判定しよう。
合計の数値は2から12のどれかになり、大中小の区別は皆さんが適当に考えていただいて結構です。
ほぼ均等に割って、小:2〜5、中:6〜8、大:9〜12でもOKです。また中を7のみとしても結構です。

(6)さいころを二つを使った丁半ばくちの準備

丁半ばくちとは、「壺、はいります」と言いながら壺に二つのさいころを入れて振り、出た目が丁か半かを当てるゲームです。
丁か半かは、合計の目の数が、「偶数」か「奇数」かです。
つまり、プログラムでさいころを二つ振り、それらの目の合計をまず求める必要があります。
次にこの目の合計の数が偶数か奇数かを判定し、偶数ならば「丁」、奇数ならば「半」となります。
まずは、これを表示させて見ましょう。

ヒント;偶数・奇数ってどうすれば判定できるでしょうか?数学的な性質を思い出してみましょう。
例えば奇数は、1,3,5,7,9,11ですよね。IF文の条件でこれらをずらずら並べるのはお徳ではありません。
もっとスマートにできます。1,3,5...とそれ以外を簡単に区別できないか考えて見ましょう。
偶数は2の倍数です。奇数は2の倍数ではなく2の倍数に1を足したものです。
つまり、ある数を2で割って余りが、、、、、、、、もうわかりましたか?

(7)丁半ばくち、予想しましょう

丁半ばくちは丁か半かを当てるゲームです。上の例では単に丁か半かを表示していただけですが、ユーザがどちらかを予想し当たりか外れかを表示するようにしてみましょう。
ユーザが丁か半かどちらを予想したのか入力してもらわなければいけませんが、言葉で入力してもらうのではなく、適当な数字で入力してもらうようにしてみましょう。

なお、実際に賭けをする(どちらかにいくらか賭ける)こともできますが、現時点での知識ではうまく行きません。もうしばらくお待ちください。
またさいころを絵として表示することもかなり簡単にできるようになります。これもしばらくお待ちください。

IF文を複雑に組み合わせ、後は単純な計算や入出力で結構そこそこのプログラムができます。
皆さんも自分で問題を考えて色々とプログラムしてみましょう。


[「A班」プログラミング基礎のTopに戻る]