0このプログラムを走らせて色々なキーを押してみたところ、特定のキーを同時に押すとキーコードが1桁になることを発見しました。取扱説明書には、1桁のキーコードについては説明がありません。言うことは、秘密のキー入力ができるわけです。ここで、こうして書いてしまっては秘密も何もあったモンじゃありませんが、まあ取扱説明書にない動作を使えば、秘密のキー入力です。秘密のキー入力(複数キーを同時に押す)により、1桁キーコードが取得された時、ゲーム開始前に答えが分かるように作りました。これは、プログラムのデバッグ用に設定したのですが、面白いので完成版にも残しました。ところで、最近の携帯機器や家電の操作系は、少ないボタンに複数の機能を持たせるために、複数のキーの同時押しや、長押しによって別の機能を割り当てるものが結構多いように思います。関数電卓のプログラムにも同じことが言えると思います。複数キーの同時押しを認識できることが分かったので、今度は長押しを認識できればプログラムの操作系の幅が広がるはずです。ゲームを作る時に使えるかも知れません。締めくくりとして、キーの長押しを認識させる機能を追加しようと思います。1-8DoループとWhileループ再びキーを長押しした時、押されている時間をキーカウントとして表示する機能を追加します。なり、キーを押し続けるとキーカウントの表示がリアルタイムでどんどん増えるようにします。今回の改造ポイントは、以下の赤文字で示した部分です。今回はプログラムの説明は後にします。このプログラムを入力して、動作を確認してみてください。0プログラム起動時は、キーカウントは0(ゼロ)ですから、表示もゼロとします。"で、今回追加する新機能に関する初期表示です。(カウント)の略です。Locateコマンドの表示位置は、1桁目、4行目になっています。続いてキーカウントの数値を表示させる作戦です。Whileループを使います。Whileループについては、Doループとの違いを既に説明しています。繰り返し処理の最初で繰返条件の判断を行うのでしたね。Isz命令も使います。Basic独特のコマンドなので命令と呼ぶことにしています。Cは、変数Cを1つ増やすします。C+1→Cと同じことを行います。変数を1や2など決まった分だけ増やすことを、インクリメントと呼びます。これは、ループが回った回数をカウントしていることになります。変数Cはキーカウントを代入する変数です。残りの複数のLocateコマンドは、キーカウントを適切に表示させるためのものです。以上をヒントにして、もう一度プログラムを読み解いてみてください。0キーカウント取得以外の既に作った部分を簡単な説明に置き換えると、着目すべきところが明確になります。作られるループが基本構造です。これは今まで作った部分です。ならなければなりません。より、キーカウント変数Cを1に初期化します。コマンド2つは、以下の仕事をします。これは、Locateを使った典型的な表示方法で、既にお分かりのことです。ここでも同じ方法を使えば良いのです。プログラムは、上から下へ止まらずに進みます。Whileループに入ります。5,4,CWhileEndWhileループは、ループ継続条件による判定を、ループに入ろうとする時点で行う点が、Doループと異なることは、以前一度触れました。ここれは、Getkeyの結果が0でない時にループを継続すると言う条件になっています。何かキーが押された時はループを継続するわけです。0を返しますので、Whileループには入らず、一気にWhileEndまでジャンプします。これは、キーが1回だけ押された時の動作ですね。キーコード取得と表示を再度行います。以外のキーコードを返します。キーが長押しされていると、Whileループの中に入ってゆきます。実行され、キーカウント変数Cを1つ増やす動作をします。よりキーカウントを表示します。ここではキーカウントは1つ増えて2になっているので、CNT:2と表示されます。ジャンプし、2回目の繰り返しの判定を行います。キーが押されたままだと、Whileループに再び入ります。お分かりのように、キーが長押しされた状態が続けば、Whileループがまわり続けます。よりキーカウントが1つづつ増えてゆき、それが即座に表示されます。Doループが回り続け、キー入力待ちの状態になります。ジャンプしてループを終了します。これが、Whileループのループ判定条件の本質的な意味です。判定すると書きましたが、「真」か「偽(真でない)」かで判定するのが、本質的な意味になります。この本質的な意味は重要なので、少し解説します。関係演算子で、右と左が等しくないとき、「真」となります。「真」ならループを継続するわけです。戻り値が「真」か「偽」かを判定した結果、それが「真」ならループを継続すると言う意味になります。Basicでは、コマンドの戻り値や変数が、0でなければ「真」で、0の時は「偽」であると、決められています。Basicなどの他の多くのBasic言語やC言語系言語(C、C++、C#)などの多くのプログラミング言語でも採用されている、基本的なものです。省略形などではありません。「真」であるかどうかで判定するのです。これは、多くのプログラミング言語で適用される重要な考え方なので、覚えておくと良いでしょう。Doループを使うとどうなるでしょうか?Doループは必ず1回ループがまわります。すると上のままだと、キーが長押しされていないのにキーカウントが1つ増えてしまい、おかしなことになります。次回は、WhileループをDoループに置き換える場合のプログラムを紹介します。応援クリックをお願いします。2013プログラム電卓は、プログラムを作って、使ってナンボ!実際に触って気づいたこと、自作プログラム、電卓プログラミングについて書いています。Basicが面白いと感じる1ユーザーです。