第12講 For文以外の様々なループ文
第9話 限界値を超えない和プログラム
に対して、
Do While文の方は
であるのに対して、Do...Loop While文の方は
という結果になります。
なぜ、違いが出てくるのでしょうか。
前判断の場合は、
Function f1(m As Long, n As Long, h As Long)
Dim w As Long, i As Long
i = m
Do While i <= n
w = w + i
i = i + h
Loop
f1 = w
End Function
10 <=5 ですから、条件式は偽です。
条件式が真のときのみ処理を実行しますから、
1回も処理されずDo文は終了となってしまいます。
それに対して、後判断の場合は
Function f1(m As Long, n As Long, h As Long)
Dim w As Long, i As Long
i = m
Do
w = w + i
i = i + h
Loop While i <= n
f1 = w
End Function
判断をするのは、処理が終了してからですから、1回は処理することになります。
つまり、条件式がはじめから偽であるとき、前判断では1回も処理されないのに対して、
後判断では、条件式が偽であっても1回は処理されるのです。
ですから、偽であっても1回は処理をさせたい場合に後判断を使います。
シートを少し変更して、
合計上限値を超えない範囲で合計させるように課題を変更します。
例えば、はじめの値が1、合計上限値が100、変化の幅が1なら、
1+2+3+・・・の計算を合計が100を超えない範囲で行わせるということです。
どのようにコードを変更したらよいでしょうか。
うっかりすると、
Do While文の場合は
Function f1(m As Long, n As Long, h As Long)
Dim w As Long, i As Long
i = m
While w <= n
w = w + i
i = i + h
Wend
f1 = w
End Function
Function f2(m As Long, n As Long, h As Long)
Dim w As Long, i As Long
i = m
While w <= n
w = w + i * i
i = i + h
Wend
f2 = w
End Function
Function f3(m As Long, n As Long, h As Long)
Dim w As Long, i As Long
i = m
While w <= n
w = w + i * i * i
i = i + h
Wend
f3 = w
End Function
Function f4(m As Long, n As Long, h As Long)
Dim w As Long, i As Long
i = m
While w <= n
w = w + i * i * i * i
i = i + h
Wend
f4 = w
End Function
Do...Loop While文の場合は、
Function f1(m As Long, n As Long, h As Long)
Dim w As Long, i As Long
i = m
Do
w = w + i
i = i + h
Loop While w <= n
f1 = w
End Function
Function f2(m As Long, n As Long, h As Long)
Dim w As Long, i As Long
i = m
Do
w = w + i * i
i = i + h
Loop While w <= n
f2 = w
End Function
Function f3(m As Long, n As Long, h As Long)
Dim w As Long, i As Long
i = m
Do
w = w + i * i * i
i = i + h
Loop While w <= n
f3 = w
End Function
Function f4(m As Long, n As Long, h As Long)
Dim w As Long, i As Long
i = m
Do
w = w + i * i * i * i
i = i + h
Loop While w <= n
f4 = w
End Function
としてしまいますが、どちらも
と100を越えてしまします。
何が問題なのでしょうか。
どのように改善したらよいのでしょうか。>
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
vc++講義へ
excel 2013 2010 2007 vba入門へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
eclipse java 入門へ
excel 2016 vba 入門へ
小学生からエンジニアまでのRuby入門へ
本サイトトップへ