Play audio slide show -- Keyboard shortcut: 'x'  Lecture overview -- Keyboard shortcut: 'u'  Previous page: Andre anvendelser af assertions [Section] -- Keyboard shortcut: 'p'    Lecture notes - all slides and notes together  Annotated slide -- Keyboard shortcut: 't'  Alphabetic index  Help page about these notes  Course home  Play sound for this slide -- Keyboard shortcut: 'y'    Designkontrakter og ansvarsfordeling - slide 31 : 31

Løkkeinvarianter 

Assertions finder anvendelse i andre sammenhænge end kontrakter

Løkkeinvarianter er en primær 'mekanisme' som tillader os at styre og ræsonnere om en løkke

 

  static int div(int x, int y){
    // require x > 0 && y > 0;   

    int rest = x;
    int quotient = 0;
    
    while (rest >= y) {
      // invariant rest + quotient * y = x;   
      // System.out.println(rest + quotient * y == x);   
      rest = rest - y;
      quotient = quotient + 1;
    }
    return (quotient);
    // ensure  rest + quotient * y = x && rest < y && rest >= 0;   
  } // end div