BUNZIN NET ポータル / プログラムは考え方です / メルマガバックナンバーリスト
前のメルマガ / 次のメルマガ

2009/10/05発行 『【櫻井です】想定外の入力があった場合の処理を追加しました』

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
レンタル掲示板とクイズ投稿サイトを開発した櫻井文人の
プログラムの考え方が身につくメルマガ『プログラムは考え方です』
───────────────────────────────────
メルマガ発行人
櫻井文人のプロフィール ⇒ http://www.bunzin.net/program/prof.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

こんにちは、メルマガ発行人の櫻井文人です。
皆さんは、いらなくなった古いPCなどは、どのように処分していますか。
詳しくは編集後記で。


前回のメルマガでは、今までメルマガ内で扱ってきた
「おやつの金額を計算する」プログラムに、
想定外の入力があった場合の処理を追加することを考えてみました。

今回は、実際のプログラムで、どのように修正したかを説明していきます。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■■ 想定外の入力があった場合の処理を追加しました
───────────────────────────────────

■ どこをどのように修正したか?

 「おやつの金額を計算する」プログラムには、おやつの個数を
 キーボードから入力してもらう処理があります。
 ここでは当然ながら、数字を入力してもらうことを想定しています。

 そこで、数字以外の情報がキーボードから入力されたら、
 「お菓子の数は数字で指定してください。」と警告を表示した後に、
 個数の入力の処理に戻るような感じに修正しました。

 今回は、「お菓子の個数を入力して金額を計算する関数」を
 以下のように修正しました。


    1行目:rem **********************************************
    2行目:rem お菓子の個数を入力して金額を計算する関数
    3行目:rem **********************************************
    4行目:Function CalculateOkashi(tanka)
    5行目:   Do
    6行目:      n = InputBox (tanka & "円のお菓子をいくつ買いますか?")
    7行目:      If IsNumeric(n) = false Then MsgBox "お菓子の数は数字で指定してください。"
    8行目:   Loop While IsNumeric(n) = false
    9行目:   CalculateOkashi = tanka * n
  10行目:End Function


 5行目、7行目、8行目を新しく追加しました。

 それでは、関数の修正箇所について説明していきたいと思います。

  ・7行目は、警告を表示する処理です。

     入力された個数が数字でなかったら警告を表示します。

     VBScriptに標準で準備されているIsNumeric関数を使って、
     入力された個数が数字かどうかを判定しています。

     IsNumeric関数の引数に判定したい情報を渡してあげると、
     戻り値として判定結果が返ってきます。
     戻り値が「true」の場合は「数字である」と判定されたことに、
     「false」の場合は「数字ではない」と判定されたことになります。   

     今回は、IsNumeric関数の引数に入力された情報が格納されている
     変数「c」を渡して、判定結果が「false」の場合は、
     入力された情報が数字ではないので、
     「お菓子の数は数字で指定してください。」と警告を表示しています。

  ・5行目と8行目は、数字が入力されるまで入力を繰り返す処理です。

     8行目では、ここでもIsNumeric関数を使用して、
     入力された情報が数字かどうかを判定しいます。
     「数字ではない」と判定された場合は、5行目に処理が戻り、
     再度入力を求められます。
     「数字である」と判定された場合は、9行目に処理が進みます。

     つまり、正しく数字が入力されるまで、
     5行目から8行目の処理を延々と繰り返すことになります。

■ 修正後のプログラムです。

 以下が、修正後のプログラムになります。

----------------------------------------------------------------------
rem プログラムの開始

rem **********************************************
rem お菓子の個数を入力して金額を計算する
rem **********************************************
result = CalculateOkashi(25)
result = result + CalculateOkashi(50)
result = result + CalculateOkashi(100)

rem **********************************************
rem 合計金額を表示する
rem **********************************************
MsgBox "合計で" & result & "円です。"

rem **********************************************
rem 合計金額が300円を超えていたら警告を表示する
rem **********************************************
If result > 300 Then
   MsgBox "おやつは300円までですよ!"
Else
   MsgBox "予算内におさまりました。"
End If

rem **********************************************
rem お菓子の個数を入力して金額を計算する関数
rem **********************************************
Function CalculateOkashi(tanka)
   Do
      n = InputBox (tanka & "円のお菓子をいくつ買いますか?")
      If IsNumeric(n) = false Then MsgBox "お菓子の数は数字で指定してください。"
   Loop While IsNumeric(n) = false
   CalculateOkashi = tanka * n
End Function

rem プログラムの終了
----------------------------------------------------------------------

 ※実習で使用した修正前のプログラムについては、
  コチラのメルマガのバックナンバーで確認できます ⇒
     http://www.bunzin.net/program/mailmaga/backnumber/20090921.html

 途中からメルマガを読んだ方などのために、復習も兼ねて、プログラムを
 動かす方法を記述しておきます。

 【プログラムを動かす方法】

   (1)「rem プログラムの開始」から「rem プログラムの終了」までを
     コピーしてメモ帳を開いて貼り付けましょう。

   (2)そして「okashi.vbs」いうファイル名で適当な場所に保存しましょう。

   (3)保存した「okashi.vbs」をダブルクリックすると、
     すぐにプログラムが動きます。


次回からは、イベント駆動型プログラミングという考え方を
説明していこうかと思います。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■■ 編集後記
───────────────────────────────────

皆さんは、いらなくなった古いPCなどは、どのように処分していますか。

私は、とりあえずハードオフに持って行きます。
今まで、すごく古いPCやマザーボードやプリンターなどを持ち込みました。

そして全て買い取り価格は0円でした。

普通であれば「なんだ1円にもならないのかよ!」とがっくりする
するところかと思いますが、
そもそも不用品だったものを無料で引き取って
もらえるのでとても重宝しています。

むしろ、逆に引き取りにお金がかかったらどうしようとドキドキしながら
ハードオフに持ち込んでいるので、買い取り価格は0円は、
むしろ私にとってはラッキーだったりします。


最後までお読みいただき、ありがとうございました。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

●櫻井が開発したレンタル掲示板は
  コチラ ⇒ http://www.bunzin.gr.jp/m_board/

  画像のアップロードも可能なレンタル掲示板です。
  無料ですのでお気軽にどうぞ。


●櫻井が開発したクイズ投稿サイトは
  コチラ ⇒ http://www.bunzin.gr.jp/quiz/

  あなたが考えたクイズを投稿することができます。
  投稿されたクイズに回答することもできます。
  無料ですのでお気軽にどうぞ。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
メルマガ発行人 櫻井文人

メルマガ発行責任者情報は
 コチラ ⇒ http://www.bunzin.net/program/mghsinfo.html

アドレス変更と登録解除はコチラ ⇒ http://www.mag2.com/m/0000293166.html

メルマガバックナンバーは
 コチラ ⇒ http://www.bunzin.net/program/mailmaga/backnumber/

櫻井文人のプロフィール ⇒ http://www.bunzin.net/program/prof.html

ご意見・ご感想はコチラ ⇒ bunzin●bunzin.gr.jp
(メール送信の際は、●を@に置き換えてください。)
(櫻井が確実に読みますが、返信は保障できません。)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
メルマガ登録・解除
 
前のメルマガ / 次のメルマガ
企画・運営・管理 BUNZIN NET