La fonction suivante renvoie un tableau dont les éléments sont les sommes cumulées des éléments d'un tableau reçu en paramètre.
def cum_sum(t):
"""
pre: `t` un tableau d'entiers
post: `t_cum` un tableau d'entiers de taille len(t) dont les éléments sont les sommes cumulées de `t`
"""
cum_sum_i = 0
t_cum = [0] * len(t)
for i in range(len(t)):
cum_sum_i += t[i]
t_cum[i] = cum_sum_i
return t_cum
Vérifiez la correction de la fonction. Pour prouver la correction d'un algorithme itératif, il faut montrer trois choses :
- l'invariant est vérifié après l'initialisation de toutes les variables de la boucle, juste avant la première itération
- l'invariant est vérifié à chaque itération, après que toutes les instructions de la boucle ont été exécutées
- vu la condition d'arrêt de la boucle, la post-condition découle de l'invariant.
Pour cela, vous aurez besoin de réécrire la boucle en utilisant un while.
INGInious