C言語でBINGOを作ろう #5 何度もHelloWorld!を表示するその2
C言語でBINGOを作ろう!
C言語でBINGOを作ろう!
CUI上で動くビンゴゲームの完成目指してひっそりとプログラムの勉強を始めました。前回はHelloWorld!を繰り返し表示してみました。今回はprintf関数を使って、Hello World!を100回表示してみてみましょう。
そろそろこのアイキャッチをなんとかしたいw
サンプルがほしい方は#11から読んでください。
アイキャッチ作ってみたので、良かったら使ってください!!byデザイナーC
開発環境
また、C言語の開発環境を構築したい場合は以下を参考にしてください。
コマンドプロンプトからサクラエディタを起動できるようにしてみた前編
コマンドプロンプトからサクラエディタを起動できるようにしてみた後編
本記事は以上の設定を行っている前提で説明を行います。
何度もHelloWorld!を表示するその2
何度もHelloWorld!を表示するその2
前回はHelloWorld!を10回画面に表示しました。今回は100回表示したいと思います。以下、前回の宿題部分で使っていたソースコードです。※わかりやすいように行数を入れています。
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include<stdio.h> int main( void ){ printf ( " 1:Hello World!\n" ); printf ( " 2:Hello World!\n" ); printf ( " 3:Hello World!\n" ); printf ( " 4:Hello World!\n" ); printf ( " 5:Hello World!\n" ); printf ( " 6:Hello World!\n" ); printf ( " 7:Hello World!\n" ); printf ( " 8:Hello World!\n" ); printf ( " 9:Hello World!\n" ); printf ( "10:Hello World!\n" ); } |
今回はこれを10回から100回に変えればOKですね。楽勝♪
ということで、実際に100回打ってみましょう・・・えっ?ひたすら打つだけで何が面白いかって?私もそう思います(キリッ
何かいい方法はないのでしょうか?
ソースコードを改造
ということで今回もソースコードを改造してみました。
1 2 3 4 5 6 7 | #include<stdio.h> int main( void ){ int i = 1; for (i = 1; i < 100; i++){ printf ( "Hello World!\n" ); } } |
コンパイルして実行するとあら不思議、表示がHello World!が100行出ました!でもどうして?
for文
今回はなにやら「for()」なんていう怪しい存在がいます。実は、こいつが繰り返しを行っている犯人張本人です。ということで、詳しく取り調べてみましょう。
このfor(){}はfor文と言って、繰り返し処理をする際に使うもの(構文)です。具体的には以下のようになっています。
1 2 3 4 5 | for (初期化処理;継続条件;継続処理){ 繰り返したい処理; } |
初期化処理には、for文を始めるときに1度だけ行いたい処理を書きます。今回は、「i = 1」と書いてあります。これは変数「 i を 1にする」という処理です。
継続条件には、for文を繰り返すための条件が書いてあります。今回は「i < 100」と書いてります。これは 「i が 100より小さい( i が 100未満)」という条件です。
継続処理には、for文が繰り返されるたびに行ってほしい処理を書きます。今回は「i++」と書いてあります。これは「 i をインクリメントする」という処理です。インクリメントについて詳しくはまた扱いますので、今は1増やす処理だと思っておきましょう。継続処理が動くたびに i が1増加するので、いつか継続条件のi が 100未満という条件を満たさなくなり、繰り返しが止まるという仕組みです。
繰り返したい処理には繰り返し実行したい処理を書きます。今回は「printf(“Hello World!\n”);」と書いてあります。これはおなじみ「Hello World!と改行を表示する」という処理ですね。この、繰り返したい処理には、複数の処理を組み込むこともできます。今日の宿題で問題にしてます。
流れを整理すると
1.初期化処理
↓
2.継続条件判定
↓
3.繰り返したい処理
↓
4.継続処理
↓
2.継続条件判定
↓
・・・
という順番で回っていきます。
前に書いたものを改修してみよう
では、せっかくですので以前書いたプログラムをfor文を使って改修してみましょう。改修するのはこちら↓のプログラム。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include<stdio.h> int main( void ){ char * str = "Nothing is impossible. the word itself says 'I'm possible'! - Audrey Hepburn\n" ; printf (str); printf (str); printf (str); printf (str); printf (str); printf (str); printf (str); printf (str); printf (str); printf (str); } |
変数を使って10行表示するプログラムですね。
改修後はこちら↓
1 2 3 4 5 6 7 8 | #include<stdio.h> int main( void ){ int i = 1; char * str = "Nothing is impossible. the word itself says 'I'm possible'! - Audrey Hepburn\n" ; for (i = 1; i < 10; i++){ printf (str); } } |
以前と比べてすっきりしました。
おまけ
そもそも前に手打ち全部書いた場合は↓みたいになっていたので、これと比べるとその差は歴然ですね。
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include<stdio.h> int main( void ){ printf ( "Nothing is impossible. the word itself says 'I'm possible'! - Audrey Hepburn\n" ); printf ( "Nothing is impossible. the word itself says 'I'm possible'! - Audrey Hepburn\n" ); printf ( "Nothing is impossible. the word itself says 'I'm possible'! - Audrey Hepburn\n" ); printf ( "Nothing is impossible. the word itself says 'I'm possible'! - Audrey Hepburn\n" ); printf ( "Nothing is impossible. the word itself says 'I'm possible'! - Audrey Hepburn\n" ); printf ( "Nothing is impossible. the word itself says 'I'm possible'! - Audrey Hepburn\n" ); printf ( "Nothing is impossible. the word itself says 'I'm possible'! - Audrey Hepburn\n" ); printf ( "Nothing is impossible. the word itself says 'I'm possible'! - Audrey Hepburn\n" ); printf ( "Nothing is impossible. the word itself says 'I'm possible'! - Audrey Hepburn\n" ); printf ( "Nothing is impossible. the word itself says 'I'm possible'! - Audrey Hepburn\n" ); } |
次回は更にHello World!を100回表示したいと思います。
宿題コーナー
みなさんお楽しみの宿題のコーナーです。
前回の宿題と解答例
“Hello World!”を画面に100行出力するにはどうすればいいか、考えてみましょう。
前回は考えるところが宿題だったので実際に書かなくてもOKですが、書いた場合は以下の通りです。
今回やったfor文を利用した解答例
1 2 3 4 5 6 7 | #include<stdio.h> int main( void ){ int i = 1; for (i = 1; i < 100; i++){ printf ( "Hello World!\n" ); } } |
汗と涙と気合と根性と自己責任でfor文を使わない場合の解答例※解答例ではわかりやすいように行数も表示しています
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | #include<stdio.h> int main( void ){ printf ( " 1:Hello World!\n" ); printf ( " 2:Hello World!\n" ); printf ( " 3:Hello World!\n" ); printf ( " 4:Hello World!\n" ); printf ( " 5:Hello World!\n" ); printf ( " 6:Hello World!\n" ); printf ( " 7:Hello World!\n" ); printf ( " 8:Hello World!\n" ); printf ( " 9:Hello World!\n" ); printf ( " 10:Hello World!\n" ); printf ( " 11:Hello World!\n" ); printf ( " 12:Hello World!\n" ); printf ( " 13:Hello World!\n" ); printf ( " 14:Hello World!\n" ); printf ( " 15:Hello World!\n" ); printf ( " 16:Hello World!\n" ); printf ( " 17:Hello World!\n" ); printf ( " 18:Hello World!\n" ); printf ( " 19:Hello World!\n" ); printf ( " 20:Hello World!\n" ); printf ( " 21:Hello World!\n" ); printf ( " 22:Hello World!\n" ); printf ( " 23:Hello World!\n" ); printf ( " 24:Hello World!\n" ); printf ( " 25:Hello World!\n" ); printf ( " 26:Hello World!\n" ); printf ( " 27:Hello World!\n" ); printf ( " 28:Hello World!\n" ); printf ( " 29:Hello World!\n" ); printf ( " 30:Hello World!\n" ); printf ( " 31:Hello World!\n" ); printf ( " 32:Hello World!\n" ); printf ( " 33:Hello World!\n" ); printf ( " 34:Hello World!\n" ); printf ( " 35:Hello World!\n" ); printf ( " 36:Hello World!\n" ); printf ( " 37:Hello World!\n" ); printf ( " 38:Hello World!\n" ); printf ( " 39:Hello World!\n" ); printf ( " 30:Hello World!\n" ); printf ( " 41:Hello World!\n" ); printf ( " 42:Hello World!\n" ); printf ( " 43:Hello World!\n" ); printf ( " 44:Hello World!\n" ); printf ( " 45:Hello World!\n" ); printf ( " 46:Hello World!\n" ); printf ( " 47:Hello World!\n" ); printf ( " 48:Hello World!\n" ); printf ( " 49:Hello World!\n" ); printf ( " 50:Hello World!\n" ); printf ( " 51:Hello World!\n" ); printf ( " 52:Hello World!\n" ); printf ( " 53:Hello World!\n" ); printf ( " 54:Hello World!\n" ); printf ( " 55:Hello World!\n" ); printf ( " 56:Hello World!\n" ); printf ( " 57:Hello World!\n" ); printf ( " 58:Hello World!\n" ); printf ( " 59:Hello World!\n" ); printf ( " 60:Hello World!\n" ); printf ( " 61:Hello World!\n" ); printf ( " 62:Hello World!\n" ); printf ( " 63:Hello World!\n" ); printf ( " 64:Hello World!\n" ); printf ( " 65:Hello World!\n" ); printf ( " 66:Hello World!\n" ); printf ( " 67:Hello World!\n" ); printf ( " 68:Hello World!\n" ); printf ( " 69:Hello World!\n" ); printf ( " 70:Hello World!\n" ); printf ( " 71:Hello World!\n" ); printf ( " 72:Hello World!\n" ); printf ( " 73:Hello World!\n" ); printf ( " 74:Hello World!\n" ); printf ( " 75:Hello World!\n" ); printf ( " 76:Hello World!\n" ); printf ( " 77:Hello World!\n" ); printf ( " 78:Hello World!\n" ); printf ( " 79:Hello World!\n" ); printf ( " 80:Hello World!\n" ); printf ( " 81:Hello World!\n" ); printf ( " 82:Hello World!\n" ); printf ( " 83:Hello World!\n" ); printf ( " 84:Hello World!\n" ); printf ( " 85:Hello World!\n" ); printf ( " 86:Hello World!\n" ); printf ( " 87:Hello World!\n" ); printf ( " 88:Hello World!\n" ); printf ( " 89:Hello World!\n" ); printf ( " 90:Hello World!\n" ); printf ( " 91:Hello World!\n" ); printf ( " 92:Hello World!\n" ); printf ( " 93:Hello World!\n" ); printf ( " 94:Hello World!\n" ); printf ( " 95:Hello World!\n" ); printf ( " 96:Hello World!\n" ); printf ( " 97:Hello World!\n" ); printf ( " 98:Hello World!\n" ); printf ( " 99:Hello World!\n" ); printf ( "100:Hello World!\n" ); } |
手首「な、ながかった・・・ぜ・・・(パタッ」
指 「もう、一ミリも動けな・・・ぐはっ」
目 「コンパイルエラーとか1か所見つけるのに10分・・・orz」
みなさんはこうならないようにしましょうね(^^;
今日の宿題
“Hello World!”を画面に100行出力する際に、行数を出してみましょう。こんな感じです↓
1 2 3 4 5 6 7 | 1 Hello World! 2 Hello World! |
ただし、今回の手首と指と目が大打撃を受けたやり方は無しにしましょう。
やりたかったら止めないけど、今度は挑戦は自己責任で(^^)ただし、コピペ厳禁デスヨw
実践力が身につくC言語講座 連載リンク
競技プログラミングをイメージしたライブラリ活用講座
競技プログラミング風-標準Cライブラリ入門 連載
アルゴリズムをマスターして技術力アップ!
実践アルゴリズム講座 連載
パズルゲームの解析をテーマにしたC++講座
ゲーム解析プログラミング 連載