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

2009/09/15発行 『【櫻井です】サンプルの関数に引数をつけてみました』

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

こんにちは、メルマガ発行人の櫻井文人です。
映画「20世紀少年 最終章」を見てきましたが、
鑑賞の方法を失敗してしまいました。詳しくは編集後記で。


今回のメルマガでは、前回のメルマガで説明した、
「お菓子の個数を入力して金額を計算する関数」に引数をつけてみて、
もう少し関数の使い方の幅が広がるようにしてみたいと思います。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■■ サンプルの関数に引数をつけてみました
───────────────────────────────────

前回のメルマガまで例として説明してきました、
「お菓子の個数を入力して金額を計算する関数」の内容は以下の通りでした。

    1行目:rem **********************************************
    2行目:rem お菓子の個数を入力して金額を計算する関数
    3行目:rem **********************************************
    4行目:Function CalculateOkashi()
    5行目:   n = InputBox ("50円のお菓子をいくつ買いますか?")
    6行目:   CalculateOkashi = 50 * n
    7行目:End Function


■お菓子の金額を引数として渡すようにしてみる

 今までは、お菓子の金額は50円と固定でした。お菓子の金額は50円に限らず
 25円のものもあるかもしれませんし、100円のものもあるかもしれません。

 そこで、今回はいろいろなお菓子の金額に対応できるようにします。
 関数を呼び出す時にお菓子の金額を引数として渡すようにします。

 引数をつけた後の関数は以下の通りになりました。

    1行目:rem **********************************************
    2行目:rem お菓子の個数を入力して金額を計算する関数
    3行目:rem **********************************************
    4行目:Function CalculateOkashi(tanka)
    5行目:   n = InputBox (tanka & "円のお菓子をいくつ買いますか?")
    6行目:   CalculateOkashi = tanka * n
    7行目:End Function


 4行目の「()」の中に「tanka」と追記しました。これが引数です。
 「tanka」というのは引数の名前です。
 引数は関数の中では変数として使用できます。

 関数の呼び出し元から引数として渡されたお菓子の金額は「tanka」という
 引数に格納されます。

 5行目では「"50円」となっていたところを、「tanka & "円」と変更
 しています。
 これにより、今までの金額表示は50円で固定でしたが、引数で渡された
 金額が表示されるようになりました。

 6行目でも、「50」と固定だったところを「tanka」に変更しています。
 これにより、今までは計算で使用する金額も50円で固定でしたが、
 引数で渡された金額を使用して計算するようになりました。


■関数を呼び出す時は・・・

 引数をつけた関数を呼び出す場合は「CalculateOkashi(50)」のような
 感じで、「()」の中に引数で渡す値を記述してあげます。

 値の記述は、数字などを直接記述するほかに、変数を記述しても良いです。


■修正後のプログラム

 参考までに、修正後のプログラムを記載しておきます。

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

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

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)
   n = InputBox (tanka & "円のお菓子をいくつ買いますか?")
   CalculateOkashi = tanka * n
End Function

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

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

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

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

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

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


■久しぶりの実習です

 ここしばらく説明ばかりで退屈してきているかもしれませんので、
 久しぶりに実習をしてしましょう。

 今回の実習はサンプルのプログラムの修正です。

 以下、実習の内容です。

   今まで遠足のおやつとして持っていけるお菓子は50円の一種類でし
   たが、種類が増えることになりました。

   これからは、新しく25円と100円のお菓子が増えて、全部で
   25円と50円と100円の3種類を遠足に持っていけるようになります。

   そこで、次のようにプログラムを修正してみてください。

   今までは50円のお菓子の個数だけを入力して金額を計算していました
   が、25円と100円の個数も入力して金額を計算できるようにしましょう。


 実習の内容にこだわらず、いろいろいじってみるのも面白いと思います。

 次回のメルマガでは、プログラムの修正例を紹介してみたいと思います。


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

映画「20世紀少年 最終章」を見てきましたが、
鑑賞の方法を失敗してしまいました。

実は、前作の1章と2章を見ていませんでした。
そこで、ネットで最終章も含めた大体のあらすじを把握してから
見にいきました。

最近の映画は話が複雑なものが多く、ある程度は映画の設定などを
理解していないと途中で置いてかれてチンプンカンプンになって
しまうことが多いです。私の理解力の問題もあるのかもしれませんが・・・

というわけで、ネットで大体のあらすじを把握してから見にいったのです。

そのおかげで、今回は話を見失うことなく、
それなりに最後まで楽しむことができました。
ただ、復習の方法が甘く、肝心なところで感動が薄れてしまいました。

例えば映画の途中で主人公と敵対している側の首謀者の正体が暴かれる
という見所がありましたが、肝心の暴かれた人物の顔を知らなかった私は、

「え?誰だ?こいつ?」

みたいな状態になってしまい感動するどころか
逆にしらけてしまいました。

そんなシーンがところどころあって、その度に
なんかいまいちしっくりきませんでした。

そうなんです!
1章と2章をちゃんと見ていて、登場人物にある程度の感情移入が
できていて顔もそれなりに把握していれば、
こんなことにはならなかったのです。

せめてDVDを借りて見るくらいはやっておけば良かったと思いましたが
後の祭りでした。

というわけで、次からは話がシリーズ物の映画を見る前は、面倒でも
ちゃんと前作のDVDを見てから行こうと思いました。


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


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

●櫻井が開発したレンタル掲示板は
  コチラ ⇒ 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