Japanese subtitles

← 05-46 Break Solution

05-46 Break Solution

Get Embed Code
8 Languages

Showing Revision 1 created 07/21/2014 by osawakjvta.

  1. 1つ目の選択肢は同等です
  2. if Falseのあるコードがここにあるからです
  3. FalseはTrueにならず
    breakを実際に実行することはありません
  4. このコードに達することはありません
  5. もう一度文を実行しても
    開始時と同じものを得るでしょう
  6. テストがTrueになる時は常に文を実行します
  7. breakがループを止めるため
    2つ目の選択肢は同等ではありません
  8. このループを1回以上実行するとします
  9. 元のバージョンでループを2度行う場合
  10. こちらでは文を一度しか通過しません
  11. 一度通過したらbreakに達して終了します
  12. 3つ目の選択肢は同等ではありません
    ここにwhile Trueがありますが
  13. breakで停止する場合を除いて延々に実行します
  14. 問題はbreakのテスト条件が
    whileのテスト条件と同じであることです
  15. 本来は正反対のものになるはずです
  16. whileでテスト条件がTrueになる限り継続します
  17. このコードに書いたように
    テスト条件がTrueの場合に停止します
  18. これを同等にするためには正反対のもの
  19. つまりif notを書くべきでした
  20. TureからFalseにそしてFalseからTrueに変わります
  21. そしてbreakと書きます
    これで元のループと同等になります
  22. notがありますね
  23. 最後の選択肢は最も複雑でした
  24. これは常に元のループと同等になります
  25. 理由は元のループの実行を考えた場合
  26. テスト条件がTrueならSを実行し
    そのあと継続します
  27. 2回目のテスト条件がTrueなら
    もう一度Sを実行し継続します
  28. つまりテスト条件がTrueならSを実行します
  29. そしてもう一度テスト条件がTrueになる時に
    Sを実行し継続します
  30. これも同じ働きをします テスト条件が
    Trueでない場合トレースしなければなりません
  31. テスト条件がTrueならSを実行します
  32. 2回目がTrueでなかった場合
    ループを終了して続けます
  33. この場合1回目のテスト条件がTrueの場合
    Sを実行します
  34. 2回目がTrueでない場合はelseに進みます
  35. そしてbreakに移りループから抜け出します
  36. Tを実行したあとSを実行し
  37. さらにTを実行したらまったく同じ動作になりました
  38. 再度Sを実行せずに
    継続するためにループから抜け出しました
  39. つまり同等だった選択肢は2つでした