四則演算計算機こたえ合わせ

プログラムに正解はありません。結果が良ければ正解と言えますが、どんなに良くできたと思っても改善できるところはあります。四則演算計算機の回答例を4本作成しました、改善案を考えてください。

 

ここからは見出しレベル2で回答例1から回答例4までがあります。見出しのすぐ下に回答例のプログラムが書いてあり、最後は End命令で終わっています。その下に解説が書いてあります。

 

回答例1

//回答例1:計算ボタンが押されると4種類の計算結果を表示します。

        input 数値1

        input 数値2

        button "計算", *計算と結果表示

        stop

 

*計算と結果表示

        足し算結果 = 数値1 + 数値2

        引き算結果 = 数値1 - 数値2

        掛け算結果 = 数値1 * 数値2

        割り算結果 = 数値1 / 数値2

 

        dialog 足し算結果                                    ;足し算計算機と同じ命令

        dialog 引き算結果, 1, "引き算結果"        ;1は黄信号とOKボタン

        dialog 掛け算結果, 2, "掛け算結果"        ;2は青信号とはいボタンといいえボタン

        dialog 割り算結果, 3, "割り算結果"        ;2は黄信号とはいボタンといいえボタン

 

        end


回答例1の解説

先頭行はコメントです。コメントは説明です。コメントは人間語で書きます。プログラムの処理には影響しません。dialog命令の後ろにもコメントがあります。コメントの書き方は3種類あります。

書き方1: //の後ろはコメントです。

書き方2: ;の後ろはコメントです。

書き方3: /* */で挟まれた範囲はコメントです。

 

2行目からの4行は足し算計算機と同じです。操作方法も同じです。二つの数値を入力して、計算のプッシュボタンが押されると、4種類の計算を実行し、そのあとに4種類の計算結果を表示します。

 

ゼロで割り算をしたらその場で異常終了します。したがってその場合は計算結果が表示されません。異常終了させない方法は回答例2と回答例3で説明します。

 

最初のdialog命令は足し算結果の表示です。計算結果が100のときは『のメッセージ 100』と聴こえます。

次のdialog命令は引き算結果の表示です。『引き算結果のメッセージ 100』と聴こえます。

 

dialog命令は3つのパラメーターがあります。『マルマルのメッセージ 100』と聴こえたときはマルマルが第3パラメーターで、100が第1パラメーターです。

 

dialog命令の第2パラメーターは省略すると0です。0と1はOKボタンだけを表示します。2と3ははいボタンといいえボタンを表示します。0と2は青信号を表示します。1と3は黄色信号を表示します。簡単なお知らせメッセージは青信号を表示し、警告メッセージは黄色信号を表示します。このプログラムはすべて0の青信号でいいですが、サンプルとして0から3までを使いました。

 

数値データは整数型と実数型があります。指定しないと整数型になります。二つの数値に1.5を入力して足し算結果を確認してください。実数型にする方法は回答例2で説明します。 


回答例2

//回答例2:四つのプッシュボタンで4種類の計算方式を選択します。

//二つの数値は実数型で定義する。

//割り算ではゼロで割り算しないようにチェックする。

        dialog "このプログラムは四則演算計算機です。", 0, "プログラム説明"

        dialog "手順1:二つの数値を入力します。", 0, "操作説明"

        dialog "手順2:四つのプッシュボタンでスペースキーを押すと計算結果を表示します。", 0, "操作説明"

        dialog "手順3:終了のプッシュボタンでスペースキーを押すと終了します。", 0, "操作説明"

 

        数値1=0.0 : input 数値1, 200, 50        ;実数型で定義する。

        数値2=0.0 : input 数値2, 200, 50       ;200は入力ボックスの横幅、50は高さ 

 

        button "足し算", *足し算結果表示

        button "引き算", *引き算結果表示

        button "掛け算", *掛け算結果表示

        button "割り算", *割り算結果表示

        button "終了", *終了

        stop

 

*足し算結果表示

        足し算結果 = 数値1 + 数値2

        dialog 足し算結果, 0, "足し算結果"

        stop

 

*引き算結果表示

        引き算結果 = 数値1 - 数値2

        dialog 引き算結果, 0, "引き算結果"

        stop

 

*掛け算結果表示

        掛け算結果 = 数値1 * 数値2

        dialog 掛け算結果, 0, "掛け算結果"

        stop

 

*割り算結果表示

        if 数値2 = 0 {

           dialog "ゼロで割り算できません",  1, "割り算結果"

           stop

        }

        else {

           割り算結果 = 数値1 / 数値2

           dialog 割り算結果,  0, "割り算結果"

           stop

        }

 

*終了

        end


回答例2の解説

最初の3行はコメントです。アプリを作る人向けに人間語で書きます。

 

次の4行はdialog命令でプログラムの機能説明と操作説明があります。パソコン語で書いた説明はアプリを使う人向けの説明です。

 

次は二つの入力ボックスを設置します。数値1と数値2は実数型で定義しました。命令文を「:」でつなぐと一行に二つ以上の命令文を書くことができます。二つの数値に1.5を入力して足し算結果を確認してください。

 

五つのプッシュボタンを設置します。四つの計算方式と終了ボタンがあります。各計算のプッシュボタンを押したら、dialog命令で計算結果を表示します。次に進むとstop命令で停止し、人の操作を待ちます。終了ボタンを押したら*終了ラベルに飛んでいきend命令で終了します。

 

割り算では数値2がゼロの時は黄色信号の警告メッセージを表示します。 


回答例3

//回答例3:コンボボックスで4種類の計算方式を選択します。

//実行時のエラーが発生したときは*エラー処理ラベルに飛んで行く。

        onerror goto *エラー処理

 

//タイトルバーの見出し表示。

        title "四則演算計算機"

 

//二つの数値の入力ボックス設置する。

        数値1=0.0 : input 数値1, 200, 50        ;実数型で定義する。

        数値2=0.0 : input 数値2, 200, 50       ;200は入力ボックスの横幅、50は高さ 

 

//加減乗除の4択コンボボックスを設置する。

        combox index,100,"足し算\n引き算\n掛け算\n割り算"

 

//三つのプッシュボタンを設置する。

        button "計算", *計算結果表示

        button "説明", *説明表示

        button "終了", *終了

        stop

 

*エラー処理

        //wparamにエラーコードが設定されている。エラーコード19はゼロで割り算をした。 

        if wparam = 19 {

            dialog "ゼロで割り算できません。入力した数値を確認してください。", 1, "四則演算計算機"

            stop

        }

        else {

            メッセージ = "エラーコードは" + str(wparam) + "です。終了します。"

            dialog メッセージ, 1, "四則演算計算機"

            end

        }

 

*計算結果表示

        if index = 0 {

           dialog 数値1 + 数値2, 0, "足し算結果"

           stop

        }

 

        if index = 1 {

           dialog 数値1 - 数値2, 0, "引き算結果"

           stop

        }

 

        if index = 2 {

           dialog 数値1 * 数値2, 0, "掛け算結果"

           stop

        }

 

        if index = 3 {

           dialog 数値1 / 数値2, 0, "割り算結果"

           stop

        }

 

        stop

 

*説明表示

        説明文= "手順1.二つの数字を入力します。"

        説明文= 説明文+ "\n手順2.コンボボックスで加減乗除を選択します。"

        説明文= 説明文+ "\n手順3.計算のプッシュボタンでスペースキーを押すと計算結果を表示します。"

        説明文= 説明文+ "\n\nもう一度聞きますか?"

 

*説明再表示

        //第2パラメーターの2は 青信号で、はいボタンといいえボタン

        dialog 説明文, 2, "操作説明・四則演算計算機"

        //stat = 6は、はいボタンが押された。stat = 7は、いいえボタンが押された。

        if stat = 6 { goto *説明再表示 }

        stop

 

*終了

        //第2パラメーターの3は 黄色信号で、はいボタンといいえボタン

        dialog "本当に終了しますか?", 3, "修了確認・四則演算計算機"

        //stat=6は、はいボタンが押された。stat=7は、いいえボタンが押された。

        if stat = 7 { stop } 

        end


回答例3の解説

プログラムが複雑になってきたのでコメントも増やしました。

 

コンボボックスで計算方式を選択し、計算ボタンを押したら選択された計算結果を表示します。割り算では事前のゼロチェックをしません。ゼロで割り算をしたらそのことを検知してエラー処理をします。

 

プッシュボタンは計算、説明、終了があります。回答例2では毎回説明メッセージを表示するが、回答例3では説明ボタンを押したときだけ説明メッセージを表示します。

 

onerror命令は実行中にエラーを検知したら、*エラー判定ラベルに飛びます。*エラー判定ラベルに飛んで来たらゼロで割り算したかを判定します。

 

title命令はタイトルバーにタイトルを表示します。実行中にCtrl+Alt+5キーを押したらタイトルバーの内容が読み上げられます。

 

input命令の200と50は入力ボックスの横幅と高さです。単位はピクセルです。

 

combox命令はコンボボックスで4種類の計算方式が選択できるように表示します。\nは項目間の区切記号で改行記号でもあります。\nで区切られた項目名が縦に並んで表示されます。

 

combox命令の第1パラメーターはコンボボックスで選択した項目番号が設定されます。4択の場合は0から3が設定されます。ここでの第1パラメーターはindexです。

 

計算ボタンを押すと、コンボボックスで選択した計算結果を表示し、stop命令で停止します。割り算の場合はゼロで割り算をしたらonerror命令で指定された*エラー判定ラベルに飛んでいきます。

 

*エラー判定ラベルに飛んで来たらエラーコードが19とそれ以外でメッセージの表示を変えます。エラーコード19はゼロで割り算したエラーです。

 

メッセージ = "エラーコードは" + str(wparam) + "です。終了します。" について。

wparamは数値型データです。str(wparam)で文字型データに変換されます。文字型データーの足し算は二つの文字データが前後につながります。strはプログラムです。関数という特別なプログラムです。

例えば『三角形の面積 = sankaku(底辺, 高さ)』の場合、sankakuが関数プログラムの名前で、底辺と高さを入れたら三角形の面積が出てきます。

 

説明ボタンを押すと、dialog命令で説明文を表示し、もう一度説明文を表示するか確認します。はいボタンが押されたことを調べています。

終了ボタンを押すと、dialog命令で説明文を表示し、本当に終了するか確認します。いいえボタンが押されたことを調べています。 


回答例4

//回答例4:リストボックスで4種類の計算方式を選択します。

//見出し文字を表示するためのモジュール

        #include "hsp3util.as"

 

//キーボードのキーが押されるたびにキー入力判定に飛んで行く。

//Escキーが連続3回押されたら終了。

//リストボックス内で項目を選択しエンターキーが押されたらそれぞれの処理をする。

        ESC3=0    ;Escキーが連続して押された回数をカウントする

        onkey gosub *キー入力判定

 

//タイトルバーの見出し表示

        Title "四則演算計算機"

 

//二つの数値の入力ボックス設置する。

        statictext "数値1" : 数値1=0.0 : input 数値1

        statictext "数値2" : 数値2=0.0 : input 数値2

 

//リストボックスを設置する。加減乗除と説明、終了の6項目。

        statictext "処理選択"

        listbox index,100,"足し算\n引き算\n掛け算\n割り算\n説明\n終了"

        stop

 

*キー入力判定

        //キーボードのキーが押されるたびに飛んで来る。gosub命令で飛んできた場合はreturn命令で戻る。

        //wparamにキーコードが設定されている。13はエンターキー、27はEscキー

 

        //どこにいてもEscキーが連続3回押されたら終了する。

        if wparam=27  {ESC3=ESC3+1}  else  {ESC3=0}

        if ESC3=3  { end }

 

        //リストボックス内でエンターキーが押されたら*計算結果表示ラベルに飛んでいく。

        objsel -1               ;現在どのオブジェクトにカーソルがあるか調べる

        if stat = 5 {           ;0番目は数値1の見出し、1番目はその入力ボックス、5番目ならリストボックス

            if wparam = 13  {goto  *計算結果表示}

        }

        return

 

*計算結果表示

        //indexはリストボックスで選択した項目番号で0から5。

        if index=4  {goto  *説明表示}

        if index=5  {goto  *終了}

 

        dialog "計算結果の表示は省略します。"

        stop

 

*説明表示

        dialog "説明文の表示は省略します。"

        stop

 

*終了

        end 


回答例4の解説

リストボックスで計算方式と説明および終了を選択します。計算や終了のプッシュボタンはありません。リストボックス内で項目を選択してエンターキーを押すとそれぞれの処理を実行します。

 

input命令の行は1行が3つの命令文に増えました。追加された先頭のstatictext命令は見出し文字を配置します。プログラムの先頭に書いてある #include "hsp3util.as" はそのためのお約束です。実行時にTabキーを数回押して音声ガイドが回答例3までと違うことを確認してください。

 

onkey命令はキーボードのキーが押されるたびに*キー入力判定ラベルに飛んで行きます。

 

*キー入力判定ラベルに飛んで来たら、どのキーが押されたかを調べます。どこにいてもEscキーが連続3回押された場合は終了します。リストボックス内でエンターキーが押されたときは*計算結果表示ラベルに飛んで行きます。その他の場合はreturn命令で飛んでくる前に位置に戻ります。

 

*計算結果表示ラベルに飛んで来たら、リストボックスで選択された項目番号を調べます。6択なので0から5までを調べます。項目番号が0から3までの計算結果表示と、4の説明表示のプログラムは簡略化しました。

 

この回答例では*計算結果表示ラベル内で説明と終了の判定をしました。ラベル名とやっていることが一致していません。*キー入力判定ラベル内でも説明と終了の判定ができます。プログラムは分かり易く書くことが重要です。