PTSI − 2012-2013 Algorithmique Lycée Benjamin Franklin D. Blottière TD n˚2 Boucle itérative non conditionnelle 1. Un exemple d’algorithme utilisant une boucle itérative non conditionnelle On définit les variables suivantes : – variable i contenant un entier ; – variable somme contenant un entier. On se donne un entier naturel non nul n fixé, puis on considère l’algorithme suivant. Algorithme 1 1 2 3 4 5 6 7 somme ← 0 Pour i allant de 1 à n, par pas de 1, Faire somme ← somme + i Fin du Faire Afficher(somme) Question 1 1. On suppose que n = 4. Donner les valeurs des variables i et n, ligne après ligne, lorsqu’on exécute l’algorithme. On recopiera et on complètera le tableau suivant. Numéro de ligne Valeur de i Valeur de somme 1 ? 0 2 ? 0 .. . .. . .. . 2. Décrire le problème auquel répond cet algorithme, à l’aide d’une phrase. 3. Proposer un algorithme, sans boucle itérative non conditionnelle, qui réponde également au problème énoncé en 2. 1 2. Qu’est-ce qu’une boucle itérative non conditionnelle ? Une boucle itérative non conditionnelle permet de répéter un nombre de fois défini à l’avance une même suite d’instructions. Par exemple, dans l’agorithme n˚1, on répète n fois l’affectation somme ← somme + i avec une valeur de i qui vaut 1 au début, puis qui augmente de 1 à chaque itération (répétition), jusqu’à ce qu’elle atteigne la valeur n. Une boucle itérative non conditionnelle a la structure suivante Structure d’une boucle itérative non conditionnelle Pour i allant de v init à v f in par pas de v pas, Faire suite d’instructions à répéter ou corps de la boucle Fin du Faire où – i désigne l’indice d’itération (le numéro de l’itération) ; – v init désigne la valeur de départ de l’indice d’itération ; – v f in désigne la valeur de fin de l’indice d’itération ; – v pas désigne la valeur du pas (incrément) de laquelle est augmenté l’indice à chaque nouvelle itération. Remarque Comme indiqué ci-dessus, la valeur de i est le numéro de l’itération. Elle est une variable de l’algorithme (avec une valeur assignée dès qu’on rentre dans la boucle) et peut, à ce titre, être utilisée dans le corps de la boucle (cf. algorithme 1). 3. Exercices Exercice 5 Soit n un entier naturel non nul. Écrire un algorithme qui affiche n fois Bonjour ! avec un retour à la ligne, après chaque affichage de la chaı̂ne de caractères Bonjour ! . Exercice 6 Soit n un entier naturel non nul. Écrire un algorithme qui affiche la liste des n premiers multiples de 7 (le premier étant 0), avec un retour à la ligne, après chaque affichage d’un des multiples. Exercice 7 Soit n un entier naturel non nul. 1. Écrire un algorithme, utilisant une boucle itérative non conditionnelle, qui affiche la valeur de la somme des n premiers entiers impairs (le premier entier impair étant 1). 2. Proposer un algorithme affichant la somme des n premiers entiers impairs, qui n’utilise pas de boucle itérative non conditionnelle. 2 Exercice 8 Soit q ∈ R \ {1} et soit n ∈ N∗ . On note S(n, q) la somme définie par : S(n, q) = n X qk . k=0 1. Écrire un algorithme, utilisant une boucle itérative non conditionnelle, qui affiche la valeur de S(n, q). 2. Discuter la complexité (e.g. du nombre de multiplications) de l’algorithme écrit en 1.. 3. Proposer un algorithme affichant la valeur de S(n, q), qui n’utilise pas de boucle itérative non conditionnelle. Exercice 9 On rappelle que pour tout n ∈ N∗ , la factorielle de n, notée n!, est le nombre entier naturel défini par : n! = 1 × 2 × 3 × . . . × (n − 1) × n. On a donc 1! = 1 et la relation de récurrence : (n + 1)! = (n + 1) × n! valable pour tout n ∈ N∗ . 1. Soit n ∈ N∗ . Écrire un algorithme qui affiche la valeur de n!. 2. Soit n ∈ N∗ . Écrire un algorithme qui affiche les n premières factorielles (la première étant 1!), avec un retour à la ligne après chaque affichage d’une factorielle. Exercice 10 Soit (un )n∈N la suite définie par u0 = 1 et la relation de récurrence : un+1 = 3un − 1 valable pour tout n ∈ N. Soit n ∈ N. 1. Écrire un algorithme qui affiche la valeur de un . 2. Écrire un algorithme qui affiche la valeur de la somme Sn définie par : Sn = n X uk . k=0 Exercice 11 Soit n ∈ N∗ . On note Sn la double somme définie par : n X i X ij. i=1 j=1 1. Écrire un algorithme, utilisant deux boucles itératives non conditionnelles imbriquées, qui affiche la valeur de Sn . 2. Proposer un algorithme affichant la valeur de Sn , qui n’utilise aucune boucle itérative non conditionnelle. 3