C言語でBINGOを作ろう #4 何度もHelloWorld!を表示するその1
C言語でBINGOを作ろう!
C言語でBINGOを作ろう!
CUI上で動くビンゴゲームの完成目指してひっそりとプログラムの勉強を始めました。前回はprintf関数の中身をざっくり紹介しました。今回はprintf関数を使って、Hello World!を繰り返し表示してみてみましょう。
何度見ても安定のアイキャッチw
開発環境
また、C言語の開発環境を構築したい場合は以下を参考にしてください。
コマンドプロンプトからサクラエディタを起動できるようにしてみた前編
コマンドプロンプトからサクラエディタを起動できるようにしてみた後編
本記事は以上の設定を行っている前提で説明を行います。
何度もHelloWorld!を表示するその1
何度もHelloWorld!を表示するその1
前回までで、「Hello World!」と画面に表示したり、行を変えたりするプログラムを書きました。サンプルソースコードは以下の通りです。
#include<stdio.h> int main(void){ printf("Hello World!\n"); }
今回も引き続きちょっとずつコードを書き換えて挙動を確かめましょう。
ソースコードを改造
今回もソースコードを改造してみました。
#include<stdio.h> int main(void){ printf("Hello World!\n"); printf("Hello World!\n"); printf("Hello World!\n"); }
コンパイルして実行するとあら不思議、表示がHello World!が3行出ました!って、不思議でも何でもないw
前回やった通り、\nで改行が可能なので改行込みでHello World!\nと3回書けば改行されますね。
もっと長い文章を3行出力したい
では、「Nothing is impossible. the word itself says ‘I’m possible’! – Audrey Hepburn※」を3行出力したい場合はどうすればよいでしょうか。※~名言はジャンルを超える~ 【心に響く 名言集】より
答えは簡単、コピペで3行書けばいいですね。
#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"); }
では、コピペを封印して10回表示できるように改造してみましょう。まじかよ。。。!!
変数
こ、コピペ抜きで10行書くとか正気じゃないぜ
コピペ抜きで書こうとすると、文章も長いしタイプミスもしそうだしで大変です。そこで、変数の登場です。
以下のように書いてみましょう。(以下のソースコードはコピペしてもいいですよ。)
※今回の例ではポインタというものを利用していますが、ポインタの説明はまだ先です。ここでは、変数の雰囲気だけ味わってください。
#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と指定しているのに、実際にはNothing is impossible. the word itself says ‘I’m possible’! – Audrey Hepburn\nと表示されました。
上の行で
char* str = "Nothing is impossible. the word itself says 'I'm possible'! - Audrey Hepburn\n";
と書いています。ここで”Nothing~Audrey Hepburn\n”をstrという入れ物(変数)にしまっています。そのあとで
printf(str);
としていますが、表示されているのは”Nothing~”となっています。strが” “で囲まれていないため、コンピュータは「strと表示しろ」という命令ではなく「変数strの中身を表示しろ」という命令だと解釈したためです。そして、strの中身には先ほどの”Nothing~”が入っているため、実行した際には”Nothing~”と表示されたのです。
このstrのように、何かを入れる入れ物のことを変数と言います。なお、char*には触れていませんが、そのうち扱うので今は無視しましょう。
あらためて10行書いてみよう
改めて、10行表示するプログラムを書いてみましょう。
#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行書いた場合
#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!”を画面に10行出力してみましょう。
解答例※解答例ではわかりやすいように行数も表示しています
#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"); }
今日の宿題
“Hello World!”を画面に100行出力するにはどうすればいいか、考えてみましょう。
汗と涙と気合と根性と自己責任で挑戦してもいいですよ(^^)ただし、コピペ厳禁デスヨw
実践力が身につくC言語講座 連載リンク
競技プログラミングをイメージしたライブラリ活用講座
競技プログラミング風-標準Cライブラリ入門 連載
アルゴリズムをマスターして技術力アップ!
実践アルゴリズム講座 連載
パズルゲームの解析をテーマにしたC++講座
ゲーム解析プログラミング 連載