Vraagstelling Bepaal k faculteit met k>=0 Strategie Als k groter of gelijk is aan 0 worden alle getallen van 1 t/m k met elkaar vermenigvuldigd door gebruik te maken van een iteratie. Als k gelijk is aan 0 dan is de uitkomst 1. Formele probleemspecificatie pre: k >= 0 post: fact = (Pi : 1 <= i <= k : i) (De productkwantor) * Eindrelatie R: fact = (Pi : 1 <= i <= k : i) * Invariant I(p): fact = (Pi : 1 <= i <= p : i) ^ 0 <= p <= k * Stopcriterium p==k Initialisatie int p = 0; int fact = 1; // Eigenschap productkwantor bij leeg domein Stap richting stopcriterium k++; Actie herstel invariant fact = (Pi : 1 <= i <= p-1 : i) * (Pi : i = p : i) Algoritme public int faculteit(int k){ // pre: k >= 0 // Initialisatie int p = 0; int fact = 1; // I(0) ^ p = 0 ^ fact = 1 while (p != k){ p++; // I(p - 1) fact = fact * p; // I(p) } // I(p) ^ not B => R return p; // post : fact = (Pi : 1 <= i <= k : i) }