プログラミング入門Ⅰ (No.13)

Ⅰ13-1
プログラミング入門Ⅰ (No.13)
[1]前回までの復習
後判断型繰り返し
条件が Yes の間繰り返す
繰り返したい
処理
Do
繰り返したい処理
Loop While 条件
Yes
条件
No
条件が Yes になるまで繰り返す
Do
繰り返したい処理
Loop Until 条件
繰り返したい
処理
No
条件
Yes
前判断型繰り返し
条件が Yes の間繰り返す
No
条件
Yes
Do While 条件
繰り返したい処理
Loop
繰り返したい
処理
条件が Yes になるまで繰り返す
Do Until 条件
繰り返したい処理
Loop
条件
No
繰り返したい
処理
条件の書き方
条 件
等しい
等しくない
大きい
小さい(未満)
以上
以下
数学記号
=
≠
>
<
≧
≦
Yes
VB で使う記号
=
<>
>
<
>=
<=
Ⅰ13-2
[2]繰り返しの一般形
前判断や後判断に限らない、一般の繰り返しを書くには次のようにします。
(2-1) Do-Loop 命令
Do-Loop 命令は、Visual Basic における繰り返し専用の命令の一つです。
Do ~ Loop 命令
繰り返したい範囲を Do と Loop で表します。
[書き方]
Do
繰り返したい
処理
繰り返したい処理
Loop
Do ~ Loop からの脱出
Do~Loop 命令だけでは無限ループになってしまうので、そこから脱出する命令があります。
[書き方]
Exit
Do
(2-2) 繰り返しのプログラム
Do~Loop と Exit Do を組み合わせて繰り返しのプログラムを書くことができます。
[書き方]
繰り返したい
処理1
Do
繰り返したい処理1
条件
Yes
No
繰り返したい
処理2
If
条件
Then
Exit Do
繰り返したい処理2
Loop
[意 味]
 繰り返し途中で条件が Yes になったら、そこで繰り返し
を終わって、脱出する。
 この書き方では、Yes のときに繰り返しから出るように条件を書く必要があります。
 脱出の際に使っている「If 条件 Then ~」は条件判断で分岐するときの重要な命令です。
詳しい書き方については、後期に学びます。
今は Do~Loop からの脱出として、Exit Do と合わせて 1 行セットで覚えておいてください。
 このフローチャートは「中判断型」だが、処理1がなければ「前判断型(Do Until~Loop 型)」、
処理2がなければ「後判断型(Do~Loop Until 型)」と考えることもできる。
 「Do ~ Loop Until 条件」と「Do ~ Loop While 条件」は「後判断型」専用、
「Do Until 条件 ~ Loop」と「Do While 条件 ~ Loop」は「前判断型」専用の
書き方と言える。
Ⅰ13-3
[3]中判断型の繰り返し
(参考:プリント[No. 9])
試験の点数を繰り返し入力するプログラムを作ってみよう。
(3-1) 入力と合計点出力
① Excel を立ち上げる。
② Excel ワークシートが開いたら、Excel の[開発]リボン > [コード]グループ > [Visual Basic]を選んで、
VBE ウィンドウを開く。
③ さしあたり Excel は使わないので、Excel のウィンドウは邪魔にならないように最小化()しておく。
④ Visual Basic Editor の[挿入]メニュー > 「ユーザーフォーム」を選ぶ。
⑤ フォームにコマンドボタン(Command Button)を貼り付ける。
⑥ プロパティウィンドウで、そのコマンドボタンの言葉(Caption)を「合
計」に変える。
ユーザーフォーム、コマンドボタンの色やフォントの種類・色は好きにしてよい。
⑦ コマンドボタンをダブルクリックして、コードウィンドウを開く。
Ⅰ13-4
[問題]点数を繰り返し入力し、その合計点を求める。点数としてマイナスの点数が入力されたら繰り返しを終
了し、合計点を出力する。
フローチャートを書いて、さらにプログラムを書きなさい。
(ヒント)
ten を入力した後、ten の値によって繰り返しを終了させる。
変数名: 点数 ......... ten
[フローチャート]
合計点 ........ gokei
[プログラム]
Private Sub CommandButton1_Click()
Dim ten As
Dim gokei As
はじめ
ten
入力
Yes
No
gokei
出力
おわり
End Sub
 点数を色々入れて実行してみよう。
チェックポイント:正しく合計が出てきますか?(← わかりやすい点数を入れて試してみる)
入力した点数(
100, 80, 50, -10
) ⇒
出力された結果(
)←230 になるはず?
入力した点数(
) ⇒
出力された結果(
)
入力した点数(
) ⇒
出力された結果(
)
 プログラムができたら、ファイルを名前を付けて保存しておく。
(ファイル名は ⇒
prog1-13.xlsm)
Ⅰ13-5
(3-2) 人数カウントと平均点計算
[問題]上の処理に、人数と平均点も出力するように付け加える。
フローチャートを書いて、さらにプログラムを書き変えなさい。
① フォームに、コマンドボタン(Command Button)を1つ付け加える。
② そのコマンドボタンの言葉(Caption)を「人数と平均」に変える。
③ コマンドボタンをダブルクリックして、コードウィンドウを開く。
④ (3-1) で作ったプログラム部分をコピーして貼り付け、それに書き加える。
(ヒント) 初期値設定を忘れないように。
合計点と人数から平均点は計算できる。平均点を計算するのは、繰り返しが終わってからでよい。
変数名:
点数 ........... ten
合計点 ............ gokei
人数 ........... nin
平均点 ............ heikin
[フローチャート]
[プログラム]
Private Sub CommandButton2_Click()
Dim ten As
Dim gokei As
Dim nin As
Dim heikin As
はじめ
ten
入力
Yes
No
gokei, nin
heikin
End Sub
出力
おわり
 点数を色々入れて実行してみよう。
チェックポイント1: 正しく人数が出てきますか?
チェックポイント2: 正しく平均点が出てきますか?(小数点以下も表示されていますか?)
入力した点数(
100, 80, 50, -10
⇒ 出力結果:合計点(
入力した点数(
⇒
3
)、平均点(
)
76.666… になるはず?
出力結果:合計点(
)
)、人数(
)、平均点(
)
出力結果:合計点(
)
)、人数(
)、平均点(
)
入力した点数(
⇒
230
)
)、人数(
 プログラムができたら、ファイルを上書き保存しておく。(ファイル名 ⇒ prog1-13.xlsm)
Ⅰ13-6
(3-3) 発展問題
(3-2) の処理に、さらに付け加えてみよう。
[発展問題1]最後の結果を少しかっこよく出力する。
① 最後の答を、それぞれ、
「全部で ○○ 人です。」
「合計点は △△ 点です。」
「平均点は ◇◇ 点です。」と説明の言葉を付けて出力させる。
(○○や△△・◇◇は数字)
《変更部分》
[発展問題2]繰り返しの途中経過を出力する。
② 点数を入力するたびに(繰り返しの中で)、
「○○ 人目は ××点、現在の合計は ◇◇点」 と出力させる。
(○○や××・◇◇は数字)
《変更部分》
Memo
出力を工夫する・・・
MsgBox 関数で、2 つ以上の変数の値や言葉を出力したいときは、&でつなげる。
(例)
MsgBox ( ○○ & △△ & ××)
 変数の値を出力したいときは、○○や△△や××に変数名を指定する。
言葉を出力したいときは、その言葉を " " (ダブルクォーテーション)ではさんで指定する。
 &の両側は半角空白で空けておく。
[プログラム例と出力結果]
a = 10、b = 20、c = 30 のとき
MsgBox (a & b & c) ····················· → 102030 (変数の値はくっついて出力される)
MsgBox (a & " " & b) ·················· → 10 20
↑ "空白"を入れると
↑空白が空く
MsgBox ("a の値は" & a) ················· → a の値は 10
MsgBox ("a の値は" & a & "です。") ······· → a の値は 10 です。
MsgBox ("a の値は" & a & "b の値は" & b) ·· → a の値は 10b の値は 20
MsgBox ("a の値は" & a & " b の値は" & b) · → a の値は 10 b の値は 20
↑空白を入れると
↑空白が空く
締切: Ⅰ13-7
7/11 (土)
プログラミング入門Ⅰ (No.13) 宿題
学籍番号:
[4]宿
氏 名:
井芹研究室前の箱へ
クラス:
題
[問題]以下の処理をするプログラムを作りなさい。(中判断型繰り返し)
ある商品の金額を 1 つずつ繰り返し入力し、その合計を計算する。入力した件数も数えておく。
金額として 9999 より大きい値が入力されたら繰り返しを終了し、全部の件数・合計金額・平均金額を出力する。
入力する金額 .......... KIN
入力した件数 .......... KENSU
【使う変数】
[フローチャート]
金額の合計 ......... KINGOU
金額の平均 ......... KINHEI
[プログラムコード]
Private Sub CommandButton1_Click()
End Sub
100, 800, 500, 11111
)
)、合計金額(
)、平均金額(
)
3
1400
466.666… になるはず?
 チェック2: 入力した金額(
)
⇒ 出力結果:件数(
)、合計金額(
)、平均金額(
)
 チェック3: 入力した金額(
)
⇒ 出力結果:件数(
)、合計金額(
)、平均金額(
)
 チェック1: 入力する金額(
⇒

出力結果:件数(
今日の授業の内容に関する質問・感想を書いてください。