朝の10分プログラミング(8日目、2024年6月12日)解説
本日の課題、おつかれさまでした。
プログラムはきちんと動いたでしょうか。
解答例
Processing の開発環境ウィンドウを立ち上げて、そのテキストエディタ部分に 1から10までの数が偶数か奇数か判別されたうえで出力されるプログラム(ソースコード1)を書き写した状態が以下のようになります。
そして、実行ボタン(左上の ▶ ボタン)を押すと、開発環境ウィンドウ下部のコンソールに、
1は奇数
2は偶数
3は奇数
4は偶数
5は奇数
6は偶数
7は奇数
8は偶数
9は奇数
10は偶数
と出力されます(図2)。
解説
今回は、昨日、一昨日に学んだ条件分岐と繰り返し処理を組み合わせたプログラムを作成しました。forループ を利用して1から10までの数を順に選択し、if文 を利用してその数が偶数であるか奇数であるかを判別した上で、その結果をコンソールに出力しています。
println 関数の利用方法(補足)
記事『高校数学をプログラミングで解く(準備編)「1-3 データ型、変数、コメント、コンソール出力」』の「コンソール出力」の節で println 関数について解説していますが、今回のソースコード1では、この記事の解説内容よりもう少し拡張した形で利用しました。つまり、
println(i + "は偶数");
の部分や、
println(i + "は奇数");
の部分のことで、コンソール出力したい文字列を「+」演算子を利用して数字や文字を結合させたうえで出力することができます。println 関数はこのような利用方法もあることを覚えておいてください。
偶数か奇数かの判定方法
整数 i が偶数であるか奇数であるかの判定方法として、i を 2 で割ったときの余りが 0 であれば偶数、余りが 1 であれば奇数になることを利用しています。
i を 2 で割ったときの余りは「i%2」で計算することができますので、i が偶数であるかを判別するための条件式は「i%2 == 0」で表すことができます。
(割り算の余りについては、記事『高校数学をプログラミングで解く(準備編)「1-3 データ型、変数、コメント、コンソール出力」』の「データ型」の節で解説していますので、そちらもご覧ください。)
したがって、整数 i が偶数であるか奇数であるかを判定するプログラムは、
if( i%2 == 0 ){
println(i + "は偶数");
} else {
println(i + "は奇数");
}
と書くことができます。
なお、i が奇数であるかを判別するための条件式は「i%2 == 1」となりますが、整数は偶数か奇数かのどちらか、言い換えると、「偶数でなければ奇数」となりますので、今回のプログラムでは奇数であるかを判別する条件式は利用せずに、偶数でなければ else を利用して奇数とするようにしています。
3の倍数を出力するプログラム
では、最後に、もう一つの問題「1から10までの数のうち、3の倍数となる数のみをコンソールに出力するプログラム」について作成してみます。
3の倍数か判別する方法
整数 i が3の倍数かを判別する方法は、上記の偶数か奇数かの判定方法で解説した方法を応用すれば簡単です。つまり、整数 i が3の倍数かどうかは i を 3 で割ったときの余りが 0 になるかどうかを確認すればいいわけです。すなわち、条件式として「i%3 == 0」を用います。
プログラム
では、実際にプログラムを作成してみます。
void setup(){
for(int i=1; i<=10; i++){
if( i%3 == 0 ){
println(i);
}
}
}
ソースコード2 1から10までの数のうち、3の倍数となる数のみをコンソールに出力するプログラム
Processing の開発環境ウィンドウを立ち上げて、そのテキストエディタ部分にソースコード2を書いて、実行ボタンを押すと、開発環境ウィンドウ下部のコンソールに、
3
6
9
と出力されます(図3)。
明日はプログラムを作成する際に必ず発生するバグについて考えていきたいと思います。
明日もよろしくお願いします。
MK’s papa