1: 2011-02-17 (木) 10:42:06 k-tan[5] [6] | 現: 2024-01-08 (月) 12:58:54 lina[7] [8] | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | TITLE:x | ||
* (5) gotoで繰り返し [#ba387db8] | * (5) gotoで繰り返し [#ba387db8] | ||
-(by [[K]], 2011.02.17) | -(by [[K]], 2011.02.17) | ||
- | *** (1) [#dab6f4a9] | + | *** (1) rei0017.c~rei0019.c [#dab6f4a9] |
- | -(以下書き途中) | + | -次のプログラムは、画面に1から5までの数字をひとつずつ出すプログラムです。 |
+ | printf("1 2 3 4 5"); | ||
+ | -これを1から10までに改造しなさいといわれたらどうしますか?・・・そうですね、こうしますよね。 | ||
+ | printf("1 2 3 4 5 6 7 8 9 10"); | ||
+ | -でも1から100までといわれたらどうしますか?・・・まあ100までせっせと書いてもいいですが、書き間違えるかもしれません。それに1000になったりしたらさすがにもう書く気はおきません。 | ||
+ | -そんなときはこうします。新しい命令を使う必要なんてありません。もうここまでで十分に勉強できているのです。 | ||
+ | int a; | ||
+ | a = 1; | ||
+ | b: | ||
+ | printf("%d ", a); | ||
+ | if (a == 100) { goto c; } | ||
+ | a = a + 1; | ||
+ | goto b; | ||
+ | c: | ||
+ | -これで100まで出ます。やったね! | ||
+ | -新しい命令はないですが、 a = a + 1; について説明しておくほうがいいかもしれません。これは、aに覚えていた数字に1を加えてそれを覚えなおすということです。 | ||
+ | -変数とifとgotoがあれば、本当にいろいろなことができるのです。 | ||
+ | *** (2) rei0020.c~rei0021.c waitで時間をかける [#z1186686] | ||
+ | -前回の rei0016.c みたいなゲームを作っていると、文字をもっとゆっくり書きたいなと思うことがあります。たとえば「あなたは...しんでしまった!」とか。そういうときはwait命令を使ってこうします。 | ||
+ | printf("あなたは..."); | ||
+ | wait(1000); | ||
+ | printf("しんでしまった!"); | ||
+ | -これで「あなたは...」のあと1秒待ってから「しんでしまった!」が表示されます。1000というのが1秒を表します。100なら0.1秒ですし、3000なら3秒です。 | ||
+ | -もっとじれったくするのなら、こんなのはどうでしょうか? | ||
+ | printf("あなたは"); | ||
+ | wait(500); | ||
+ | printf("."); | ||
+ | wait(500); | ||
+ | printf("."); | ||
+ | wait(500); | ||
+ | printf("."); | ||
+ | wait(500); | ||
+ | printf("しんでしまった!"); | ||
+ | -これだと全文が表示されるまで合計2秒かかることになります。・・・でも、やりすぎるとかえって嫌われるかもしれないので、演出はほどほどに(笑)。 | ||
+ | *** (3) rei0022.c [#hc0d088f] | ||
+ | -おふろにはいってゆっくり100まで数えます。 | ||
+ | int a; | ||
+ | a = 1; | ||
+ | b: | ||
+ | printf("%d ", a); | ||
+ | if (a == 100) { goto c; } | ||
+ | a = a + 1; | ||
+ | wait(1000); | ||
+ | goto b; | ||
+ | c: | ||
+ | *** (4) rei0023.c [#vb6d914c] | ||
+ | -逆に100から減らしていってカウントダウンです。 | ||
+ | int a; | ||
+ | a = 100; | ||
+ | b: | ||
+ | printf("%d ", a); | ||
+ | if (a == 0) { goto c; } | ||
+ | a = a - 1; | ||
+ | wait(1000); | ||
+ | goto b; | ||
+ | c: | ||
+ | *** (5) まとめ [#sff6342b] | ||
+ | -今回は新しい命令の紹介としてwaitを、そして命令は新しくないもののこんなこともできるよという例としてifとgotoを使った繰り返し処理をやりました。 | ||
+ | -奇数だけ数える、偶数だけ数える、二倍ずつになっていく、逆に半分ずつになっていく、などいろいろ改造できます。減らす早さも自由自在です。 |
(This host) = http://osask.net