SmileBASIC

簡易電子説明書

26入力と条件判断

キーボードから文字を入力したり、条件に応じて自動的に処理が変わったりするプログラムを考えてみましょう。

文字を入力する…INPUT

前ページの円の面積を求めるプログラムは、半径の変数の値がプログラムの中で固定されていました。これではプログラムを書き換えない限り、他の半径の面積を計算できません。

そこで、1行目のRを内部に固定せず、外部(キーボード)から好きな数字を入力できるようにすれば便利です。そのための命令がINPUT(インプット)です。

INPUT R↵ PI=3.14↵ S=R*R*PI↵ PRINT "メンセキハ";S

これを実行すると、次のようになります。

INPUT命令は、画面に「?」マークを表示し、キーボードから数値が入力されるのを待ちます。入力されたら、その値を変数(ここではR)に代入します。

半径3の円の面積を出すために、3と入力してENTERキーを押してみます。

RUN

◆ガイドメッセージを表示して入力

実行するといきなり「?」だけが表示されるのでは、知らない人には何をすればいいのかわかりません。INPUT命令にはガイドメッセージを表示する機能があります。

次のプログラムは、「ハンケイハ?」と画面に表示してから、変数Rの入力待ちになります。

INPUT "ハンケイハ";R↵ PI=3.14↵ S=R*R*PI↵ PRINT "メンセキハ";S

◆INPUT命令 まとめ

書式 INPUT "ガイドメッセージ"; 変数
  • ガイドメッセージは省略可(省略のときはセミコロンも不要)
  • 変数には文字変数も使用可能
使用例 INPUT "ネンレイハ"; AGE

キーボードから数値が入力されるのを待ち、変数AGEに代入


指定場所にジャンプする…GOTOとラベル

先ほどのプログラムは、一度円の面積を表示したら終了してしまいました。

繰り返し計算を行うには、最後の行に達したら、再びプログラムの先頭に戻ってくれたほうが便利です。そのための命令が「GOTO(ゴートゥー)」です。

書式 GOTO ジャンプ先ラベル名
  • ラベル名は、@から始まる任意の英数字(例:@TOP)
使用例 GOTO @TOP

「@TOP」というラベルのついた行に強制ジャンプする

プログラムは先頭の行から順に命令を実行しますが、GOTOを使うと指定した行に強制ジャンプ可能です。
ジャンプ先の行には、あらかじめ「ラベル」という名前を付けておきます。先頭に@(アットマーク)を付けると、その行はGOTOのラベルとして扱われます。

@TOP↵ INPUT "ハンケイハ";R↵ PI=3.14↵ S=R*R*PI↵ PRINT "メンセキハ";S↵ GOTO @TOP

1行目にジャンプ先ラベル「@TOP」を用意しています。この行は単なる目印であり、これ自体では何もしません。
2~5行目で半径を入力し、結果を表示したら、6行目のGOTO命令で、ラベル「@TOP」にジャンプします。これにより、プログラムは先頭から繰り返します。

実行結果(実行中)

◆強制停止はSTARTボタン

このブログラムは、常にGOTO命令で先頭に戻ってしまうため、強制的に止めるにはSTARTボタンを押してください。


次に、入力に応じて自動的にプログラムが止まるようにしてみましょう。そのためには条件判断を使います。


条件判断…IF~THEN

BASICでは変数の値を調べて、条件が合うときに限り命令を実行させることができます。そのときに使うのがIF(イフ)~THEN(ゼン)命令です。

書式 IF 条件式 THEN 実行する命令
  • 条件式は、A==0、A>4などの比較
      == 等しい  != 等しくない
      > より大きい < より小さい
      >= 以上    <= 以下
  • THEN以下は、条件を満たしたときに実行する命令
使用例 IF A$=="YES" THEN PRINT "アタリ"

もし変数A$が「YES」なら、「アタリ」と表示してから次の行に進む。そうでなければ何もせずに次の行に進む。

前のプログラムを改造し、「ハンケイハ?」に対してゼロが入力されたら終了するようにしてみます。
半径の入力後に、条件判断命令を挿入します。

@TOP↵ INPUT "ハンケイハ";R↵ IF R==0 THEN END↵…

「IF R==0 THEN END」は、「もしRが0と等しければ、END命令(プログラム終了)を実行しなさい」という意味になります。

比較の場合、「R=0」ではなく「R==0」になる点に注意してください。従来のBASICとも異なります。

実行結果


プログラムの終了…END命令

上のプログラムで使いましたが、プログラムを途中で終了させる命令として、「END命令」があります。
プログラムは最後の行に達すると終了するので、条件分岐のないプログラムでは必要ないことがあります。

書式 END

プログラムを終了する。


補足:IF~THEN ~ELSE~ENDIF

●プログラムに詳しい方へ

本製品ではIF~THEN~ELSEも使用できます。
またENDIFを使用することにより、条件成立時・不成立時に、複数行にわたる命令も記述できます。

書式 IF 条件式 THEN
 成立時命令
 成立時命令…
[ELSE
 不成立時命令
 不成立時命令…]
ENDIF
PDFファイル

e-manual.pdf(3.0 MB)

ソフト本体に付属する電子説明書とほぼ同内容の記事がご覧いただけます。
ページトップへ