web-dev-qa-db-ja.com

ループ不変vsアサーション

私は今週土曜日にプログラミングの概念についての試験を行っており、いくつかの概念をよりよく理解するためにいくつかの情報を見つけるのに苦労しています。

ループ不変とアサーションの違いは何ですか?私には彼らは同じに見えます。

また、whileループ不変性定理とは正確には何ですか?

それが私なのか、アルゴリズムや疑似コードに関する特定の情報をオンラインで見つけるのが途方もなく難しいかはわかりません。

5
Vetaxili

不変 は、プログラムの実行中に真であると信頼できる条件です。たとえば、ループ不変条件は、ループのすべての実行の最初と最後でtrueになる条件です。

assertion は、プログラムに置かれる述語(true-falseステートメント)であり、その場所では述語が常に真であると開発者が考えていることを示します。プログラマは、コードでアサーションを使用して不変条件を明示的にすることがよくあります。

Whileループ不変定理
Sがループの不変量であると仮定します

While C do
 E

また、ループの最初のエントリでSがtrueであると仮定します。その後、ループのすべての反復後、Sは真のままです。特に、

  1. ループが終了すると、最後の反復の後にSは真になります。
  2. ループが終了しない場合、Sは常に真のままです。
8
Robert Harvey