プログラミング超初心者のための講座
 第6回 BASIC編「電子計算機 その3」(判断)


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

はじめに

では前回作ったプログラムをLOADしてください。

10 INPUT "INPUT NUMBER1";A
20 INPUT "INPUT NUMBER2";B
25 C=A+B
30 PRINT C
40 END

わかりやすくなりましたね。もうすこしなおしてみましょう。

日本語について

ここで少し本題と離れますが、なぜINPUT NUMBERなのでしょうか?
日本語で書きたいのが日本人です。
ところがBASICが全盛期の頃はワープロなんてありませんでしたから
キーボード上にあるカナキーをつかって直接入力していました。
NECのPC9800シリーズにはかならず「カナ」と書かれたキーがあります。
DOS/V(当時はそんな風に呼びませんでしたけど)では日本語なんてカナですら
表示できませんでした。当たり前ですよね外国のコンピュータなんですから。

現在はDOS/Vでも日本語が出せるようになっています。
(というか日本語の出せるようになった外国のDOSのバージョンをDOS/Vと呼ぶようになったんです。)

ですから人によって環境が違いますからここではほんとは日本語を使いたくないんですが
何も考えずに日本語が使える環境の人がほとんどでしょうからこの後から日本語を使用します。
もしかなしか使えない人はカタカナに読み替えてください。
{余談ですがかな入力の方が入力時間は半分ですみますからかな入力も練習しても見てください
 ベストセラーの特打シリーズの特打proで鍛えるもいいでしょう。パソコン検定(P検)ではかな入力ですから}

おぼえていますか?セミコロン

話戻りまして、日本語を使うとこうなります。

10 INPUT "1つ目の数字を入れてください";A
20 INPUT "2つ目の数字を入れてください";B
25 C=A+B
30 PRINT "答えは";C;"です。"
40 END

あれれ?30行も変わってますね
おぼえていますか?セミコロンの役割を。
PRINT文にセミコロンをつけると、続けて表示しなさいと言う意味でした。
練習の時はHELLOのあとにTHANKYOUが続けて表示されましたね。
今回はそれの応用技です。

"答えは"のあとに続けてCつまり変数Cの値を表示、さらにつづけて"です。"と表示しなさいと言う意味です。

RUNしてみましょう。
実行結果
1つ目の数字を入れてください?8
2つ目の数字を入れてください?15
答えは 23 です。
OK

いかがですか?
わかりやすくなりました。

計算機になる

いよいよ計算機に仕上げます。
今の段階では足し算しかできませんよね。
そこで、前回の応用で使う人が加減乗除を選べるように作り替えます。

ここで今回の目玉です。これまたプログラムの基礎中の基礎のとうじょうです。

判断しよう IF文

では使う人つまり に足すのか引くのかかけるのか割るのか尋ねる必要があります。
きくのは簡単ですねINPUT文です。ではその答えに応じて計算を変えなくてはいけません。
が足したいというば足さなくてはいけません。引きたいと言えば引かなくてはいけません。
そこで新しい命令の登場です。判断して結果によって処理を変える命令IF文です。
いったん今のプログラムをSAVEしておいてください。

たとえばこんなプログラムがあったとしましょう。
10 INPUT A
20 IF A=5 THEN PRINT "5です。"
30 END

RUNしてみてください。

?のあとに好きな数字を入れてください

?3
OK

なにもおこりません

では5を入力してみましょう。

?5
5です。
OK

おわかりでしょうか?
LISTを見てください。
20行がIF文です。20行はこう読みます「もし、Aが5ならば「5です」と表示しなさい」
つまりAというのは が入力した数ですから、もしそれが5かどうかを判断しているのです

IF文の書式はこうです。IF 条件 THEN 真の時の処理
難しく見えますが簡単です。
そのまま読んでください。もし 条件 ならば 真の時の処理をしろ
真というのは条件を満たしたという意味です。満たさなければ偽となります。
英語表記ではTRUEとFALSEです。しかしこんな教科書みたいな呼び方を覚えなくてもかまいません。
ようは条件を満たすか満たさないかそれだけです。

逆を言えば条件を満たさなければTHENより右の命令は無視されます。
ですから今回の例では5以外の数字を入れた場合THENより右のPRINT文は無視されて
次の行へ行きます。そしてENDでプログラム終了となります。

ちなみに条件を満たしてPRINT文を実行した後は通常通次の行へ行くので
条件を満たしても満たさなくても30行は実行されるわけです。

わからない人は会議室へ書き込んでください。

計算機

では話戻りまして
さっきの計算機のプログラムをLOADしてください。

今の新しい知識と今までの知識をすべてつかって次のプログラムに書き直してください。
一気に書き直しましたのでじっくり理解してください

10 INPUT "1つ目の数字を入れてください";A
20 INPUT "2つ目の数字を入れてください";B
30 INPUT "どうしますか?(1:+ 2:− 3:* 4:/)";C
40 IF C=1 THEN D=A+B
50 IF C=2 THEN D=A-B
60 IF C=3 THEN D=A*B
70 IF C=4 THEN D=A/B
80 PRINT "こたえは";D;"です。"
90 END

ちょっと難しいかな?
じっくり理解してください。ある程度理解したらRUNしてみましょう。

実行結果
1つ目の数字を入れてください?8
2つ目の数字を入れてください?2
どうしますか?(1:+ 2:− 3:* 4:/)?2
答えは 6 です。
OK

いかがですか?

解説

30行は足すのか引くのか聞いています。+なら1 −なら2 *なら3 /なら4で答えます。
今回は2と答えました。
40行でIF文です。判断しています。Cが1かどうかを判断しています。
結果はFALSEです。Cは1ではないので条件は満たしません。
ですからTHENより後のD=A+Bは実行されず次の行へ行きます。

次にC=2を判断しています。Cは2なのでTHENの次へ行きます。そしてD=A-Bを実行します。
結果Dという変数にA-Bの値、今回なら8-2で6が代入されます。

同様に60行70行は満たしませんのでそのまま80行へ行きます。
PRINT文で答えを表示しておしまいです。

わかりましたか?
わかるまで試して必ず理解してください
重要なポイントです。

うまくいった人もそうでない人も4パターンとも試しておいてください。
作ったプログラムは必ず全パターン動作確認をすることを習慣にしてください。

「きっとうまくいくだろう」ではなく「きっとうまくいかないだろう」という目で
試してください。

まとめ

IF 条件 THEN 真の処理
もし 〜ならば 〜せよ と読んでください。

完成!!

これでついに計算機が完成しました。
今回はちょっと難しかったかな

これで極簡単な計算機ですが完成しました。
そしてこれは世界でたった1つの の著作権を持つプログラムなんです。
どうですか?簡単とはいえ自分で作れるわけですから、もう980円払って
カード電卓なんて買うのがばかばかしいでしょう?
 

今回はちょっとややこしかったですね

十分休息をとってアタマを休めてくださいね
 

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

もどる



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