プログラミング超初心者のための講座
 第7回 BASIC編「数当てゲームに挑戦 その1」(コロン)


さて第6回が始まりましたよ。 忘れ物はないですか?

はじめに

今回からまた新しいものを作っていきます。
用意はいいですか?
基本的にこの講座は前回までやったことを理解していることが前提ですすめていきますので
わからないことは些細なことでもかまいませんので会議室の方へ書き込んでくださいね。

対話的プログラム

そのまえに

ちょっとインターミッション

まずは次のようにプログラムしてください

10 CLS
20 A=10
30 INPUT "数を入れてください(1-10)";B
40 IF B=A THEN PRINT "当たりです。":GOTO 60
50 PRINT "はずれです。"
60 END

一見今までやったことのように見えますがちょっと違いますね。
まず10行。CLSとありますがこんなのは使ったことないですか?
物覚えのいい なら気がついたのではないかと思いますが
1倍最初にやりましたね。クリアスクリーンです。

画面をきれいに消す命令です。じつはちゃんとこの命令もLISTの中で
使えるのです。習慣として常に1番最初にCLSを書いておくことによって
いつRUNしても画面がきれいな状態から始まりますのでとてもGOODですよね。

  余談ですが当然NEWもつかえます。これはプログラムを消去する命令です。
  こんなのいったい何に使うかというと、こんなんです。昔BASICが全盛期に
  いたずらするのに使っていました。
  当時パソコンを覚えると言うことはBASICを覚えると言うことでしたから
  パソコンを持っている人はまず例外なくBASICが使えました。
  ですから、かならず人のLISTが見たくなるのでした。勉強になりますからね。

  そこでいかにLISTを見られなくするかというのが一時期のはやりでした。
  たとえば友だちのパソコンにあるプログラムを入れておき、RUNさせておきます。
  一定時間たつと画面中友だちの嫌いな食べ物の名前が表示されるとか
  何かキーを押すと突然画面中の色が変わるとかそういうものをしかけておきます。
  もちろん友だちの言う前ですました顔をして待っているのですが、、、

  そこで「びっくりした?!」とかいっておどかすのでした。(今考えればかわいい時代でした)
  そこで、うっかりプログラムを消さないでいると、忘れた頃に同じプログラムかちょっと改造した
  プログラムを使ってやり返されるのでした。(^^;)

  そして考え出した方法が「このプログラムは自動的に消滅する・・・・」と、どこかの洋画にありような感じですが
  いたずらプログラムの1番最後にNEWと入れておきます。

  もうおわかりですね。いたずらを実行した後プログラムはきれいさっぱり消えているという訳です。

  と、まあそんなことにしか使わなかったので、何に役に立つかは自分で考えてみてください

話が戻ってきまして、他に変わったところは40行ですね。
40 IF B=A THEN PRINT "当たりです。":GOTO 60
前回やったIF文ですがよくみるとPRINT文の後にGOTO文が書いてあります。
なんじゃこりゃ?
更によく見るとGOTの前にコロンがあるのがわかりますか?

これは「つづけて処理しろ」「続けて次の命令を実行しろ」という意味です。

たとえば

10 PRINT "HELLO"
20 PRINT "WORLD"

これと、

10 PRINT "HELLO":PRINT "WORLD"

これで、実行すると全く同じ結果になります。
つまり1つの命令で1行使う必要はないということです。

この例だとどちらでもいけますが、今回の40行ではどうでしょう。もしGOTOがなかったら。
40行は当たったときの処理ですから当たらなかった場合は50行へ行きますよね。
では当たった場合はどうでしょうか?40行の「当たりです」を表示した後
通常通次の行へ行きますから「はずれ」を表示してしまいます。

つまりここで次の行へ行かれては困るわけです。
そこでGOTO文を使って強制的に60行へとばしているわけです。
ところが、ここでコロンを使わずに次の行にGOTOを書いてしまうと
はずれた場合にも60行へいってしまいます。わかりますか?

もう1回書いておきます

10 CLS
20 A=10
30 INPUT "数を入れてください(1-10)";B
40 IF B=A THEN PRINT "当たりです。":GOTO 60
50 PRINT "はずれです。"
60 END

ですからこの場合はコロンを使って連続的に処理させているのです。

普通こんなことしませんがひどい話こんな書き方でも動きます。
 10 CLS:A=10:INPUT "数を入れてください(1-10)";B:IF B=A THEN PRINT "当たりです。":GOTO 30
  20 PRINT "はずれです。"
  30 END

まあ、わかりにくいだけですから普通はしませんけどね。
ヤルとしたら
10 CLS:A=10
30 INPUT "数を入れてください(1-10)";B
40 IF B=A THEN PRINT "当たりです。":GOTO 60
50 PRINT "はずれです。"
60 END

これくらいでしょう。

ずいぶん脱線しましたが、実際に実行してみましょう。

RUIN
数を入れてください(1-10)?5
はずれです。
OK

もう1回やってみましょう

数を入れてください(1-10)?10
当たりです。
OK

わかりますか?ここでわからないひとは理解するまで見直してください。

当たりの変化

この例では当たりである10が入力されれば当たりと表示しますが
自分が作ったのですから10が当たりだと知っていますので、
ちっともおもしろくありません。

そこでこう変えてみましょう

10 CLS
20 INPUT "当たりを入れてください(1-10)";A
25 CLS
30 INPUT "数を入れてください(1-10)";B
40 IF B=A THEN PRINT "当たりです。":GOTO 60
50 PRINT "はずれです。"
60 END

まず当たりを20行で決めます。もし私が今 のとなりにいたら
私が入れるんですが、今 のほかに誰かいたら入力してもらってください。
もちろんそのときはあっちむいていてくださいよ。
しかいない場合はしかたないので、寂しく一人でお願いします。おもしろさ半減しますけど)

ではふたたび画面を見ると25行のCLSのおかげで入力した当たりが見えなくなっています。

さあ画面には
数を入れてください(1-10)
と表示されています。

いくつか入力してください。(1-10)というのは1から10までの数という意味ですが
別に100でも1000でも入力できます。しかし、そんな数字当てるのは人間業ではないので
1から10に限定しているわけです。 

いかがですか?
当たりでしたか?
はずれでしたか?

どちらにせよ当たりがわからない時っていうのは
楽しいですよね。

それでは今日はこれでおしまい

まとめ

CLSやNEWもリストの中で使える
コロンを使うと続けて次の命令を書ける。(もちろんPRINT文以外でもOK)
 
 

では次回の講義をお楽しみに
さいなら

もどる



このページはNetscapeNavigator or Netscape Communicator 4.6で
きれいに見えるように作られています。そちらをお使いください。