for, if, while et accumulateurs

Lien sur le cours.

Remarques.

Exercice 1

Vous devez compléter le corps de la fonction suivante qui prend en entrée un entier naturel n et qui renvoie en sortie la somme des entiers compris entre 0 et n (au sens large) qui sont multiples de 3 et de 11.

Il s'agit d'appliquer le principe d'accumulateur avec filtre.

fonction f(n):
    somme ← 0
    Pour chaque entier k de 0 à n:
        si k est à la fois multiple de 3 et multiple de 11:
            on ajoute la valeur de k à somme
    renvoyer somme

Ceux qui connaissaient and depuis la classe de seconde pouvaient écrire ce qui suit (pour ceux qui ne connaissaient pas: "and" sera travaillé dans le chapitre sur les booléens plus tard).

Les lignes suivantes contiennent des assertions qui doivent être validées lrosqu'on exécute votre fonction.

Exercice 2

Vous devez compléter le corps de la fonction ci-dessous. Elle prend en entrée un nombre réel strictement positif A et renvoie en sortie le plus grand entier impair $n$ tel que le produit de tous les entiers impairs $1\times 3\times 5 \times \dots \times n$ soit inférieur ou égal à A.

Pour l'entier $n$ donné en sortie, on doit donc avoir:

Il s'agit là encore du principe d'accumulateur.

fonction g(A):
    produit ← 1
    n ← 1  # n est intialisé à la valeur du premier entier impair
    Tant que produit est inférieur ou égal à A:
        n prend la valeur impaire suivante
        produit est multiplié par n
    renvoyer l'avant dernière valeur de n (c'est à dire la dernière valeur de n qui rendait vrai le test du tant que)

Remarquez bien qu'on renvoie $n-2$: en sortant de la boucle, la condition produit <= A est devenue fausse, on a donc dépassé le dernier $n$ qui satisfait cette condition...

Les assertions qui suivent doivent être valides.