さて、今回は演習です。
これまでの内容を元にプログラムを考えてみてください。
では、まず0以上10以下の数値の中で偶数だけ表示するプログラムを考えてみましょう。
前にも書きましたが、0以上10以下の偶数というと「0、2、4、6、8、10」といった具合にすぐ分かりますよね。
そこで、このようなプログラムを考えてみます。
<sample program 033-01>
#include <stdio.h> int main(void) { printf("0 2 4 6 8 10\n"); return 0; } |
<実行結果>
0 2 4 6 8 10 続行するには何かキーを押してください・・・
出来ましたね。
きちんと0以上10以下の偶数が表示されています。
しかし、これまで繰り返しを勉強してきたのに、これで良いのでしょうか?
この書き方では「0以上100以下の偶数を全て表示する」プログラムの場合だと「0、2、4、6・・・・98、100」全部書かないと完成しません。
面倒ですよね・・・
基本制御文(while3)で10回繰り返すプログラムを28回繰り返すプログラムに変えたり、100回繰り返すプログラムに変えたりしました。
リンクを見てもらえれば分かりますが、繰り返し条件を少し変えるだけで繰り返し回数が変わっています。
これと同じで、繰り返しを使えば楽にプログラムを作ることが出来ます。
方法は色々ありますので、繰り返しを使った形に変えてみてください。
解答例です。
<sample program 033-02>
#include <stdio.h> int main(void) { int counter; counter = 0; while (counter < 11) { if (counter % 2 == 0) { printf("%d\n", counter); } counter = counter + 1; } return 0; } |
<実行結果>
0 2 4 6 8 10 続行するには何かキーを押してください・・・
あくまでも1つの例ですが、まずは0以上10以下の間繰り返すことを考えます。
カウンタを使って、初期値は0、繰り返し条件は11より小さい間、増分は1と設定しています。
これで、0から始まって1ずつ増えながら11になると繰り返しを終了します。
その繰り返しの中で、if文の時に作った「偶数かどうか調べる」プログラムを書いています。
偶数(2で割った余りが0)であれば、その数値(counter)を表示します。
「偶数」という言葉を見た時に、前のプログラムが思い出せましたでしょうか?
プログラムは積み重ねが大事ですから、しっかりと覚えておきましょう。
※whileの条件は ( counter <= 10 ) でもOKですよ。
では、別の例を見てみます。
<sample program 033-03>
#include <stdio.h> int main(void) { int counter; counter = 0; while (counter < 11) { printf("%d\n", counter); counter = counter + 2; } return 0; } |
<実行結果>
0 2 4 6 8 10 続行するには何かキーを押してください・・・
if文がありません。
代わりに増分が2になっています。
0から2ずつ増やせば必ず偶数になりますので、これでも同じ結果が表示されます。
他にも様々な方法がありますが全てを網羅することは出来ませんので、皆さん自身で試してみてください。
さて、繰り返しを使って「0以上10以下の偶数を表示」することが出来ましたが、このプログラムを「0以上100以下の偶数を表示」するプログラムに変更するにはどうすれば良いのでしょうか?
考えてみてください。
解答例です。
<sample program 033-04>
#include <stdio.h> int main(void) { int counter; counter = 0; while (counter < 101) { printf("%d\n", counter); counter = counter + 2; } return 0; } |
<実行結果>
0 2 4 6 8 10 ・ ・(途中省略) ・ 96 98 100 続行するには何かキーを押してください・・・
プログラム<sample program 033-02>でも<sample program 033-03>でも 繰り返し条件の数値を101にすれば出来ます。
繰り返しを使わなければ「0、2、4・・・98、100」と全て書かなければならないことと比べれば、非常に楽に変更できましたね。
このように、繰り返しを使うと楽が出来るのです。
※whileの条件は ( counter <= 100 ) でもOKです。
では、もう少し練習してみましょう。
「0以上100以下の奇数を表示」するプログラムを作ってみてください。
解答例です。
<sample program 033-05>
#include <stdio.h> int main(void) { int counter; counter = 0; while (counter < 101) { if (counter % 2) { printf("%d\n", counter); } counter = counter + 1; } return 0; } |
<実行結果>
1 3 5 7 9 ・ ・(途中省略) ・ 97 99 続行するには何かキーを押してください・・・
「奇数」とは2で割った余りが1の数値でしたね。
このプログラムのif文、覚えてますか?
if (counter % 2 ) { |
2で割った余りが1であれば、if文は「成立」します。
2で割った余りが0であれば、if文は「不成立」になります。
忘れている方は、前に戻って確認してください。
では、最後です。
「0以上100以下の数値で7の倍数だけを表示」するプログラムを作ってみてください。
解答例です。
<sample program 033-06>
#include <stdio.h> int main(void) { int counter; counter = 0; while (counter < 101) { if (counter % 7 == 0) { printf("%d\n", counter); } counter = counter + 1; } return 0; } |
<実行結果>
0 7 14 21 28 ・ ・(途中省略) ・ 91 98 続行するには何かキーを押してください・・・
7の倍数とは、7で割った余りが0の数値です。
他の方法もありますので、色々と試してください。
次回は、入力と組み合わせた繰り返しを考えてみます。