Exercices: les boucles for
¶
Exercice: comptons!¶
Exécuter les cellules suivantes et observer l’affichage produit.
#include <iostream>
using namespace std;
for ( int i = 0; i < 10; i++ ) {
cout << i << endl;
}
Remplacer
int i = 0
parint i = 5
ci-dessous et exécuter; qu’est-ce qui change ?
for ( int i = 0; i < 10; i++ ) {
cout << i << endl;
}
Remplacer
i < 10
pari <= 10
ci-dessous et exécuter; qu’est-ce qui change ?
for ( int i = 0; i < 10; i++ ) {
cout << i << endl;
}
Remplacer
i++
pari = i + 2
ci-dessous et exécuter; qu’est-ce qui change ?
for ( int i = 0; i < 10; i++ ) {
cout << i << endl;
}
Rappel : l’instruction i++
est une écriture simplifiée pour i = i + 1
.
Copier l’instruction
for
ci-dessous dans la cellule suivante, et remplacer les trois « ? » par les valeurs appropriées pour afficher les entiers pairs entre 0 et 20 (0,2,4,…,20):for (int i = ?; i <= ?; i = ? ) { cout << i << endl; }
/// BEGIN SOLUTION
for (int i = 0; i <= 20; i = i + 2 ) {
cout << i << endl;
}
/// END SOLUTION
Écrire des boucles
for
qui affichent les nombres suivants dans l’ordre donné :
0, 3, 6, 9, 12
:
/// BEGIN SOLUTION
for (int i = 0; i < 13; i+=3) {
cout << i << endl;
}
/// END SOLUTION
20, 21, 22, 23, 24, 25
:
/// BEGIN SOLUTION
for (int i = 20; i < 26; i++) {
cout << i << endl;
}
/// END SOLUTION
10, 9, 8, 7, 6, 5, 4, 3, 2, 1
:
/// BEGIN SOLUTION
for (int i = 10; i > 0; i--) {
cout << i << endl;
}
/// END SOLUTION
2, 4, 8, 16, 32
:
/// BEGIN SOLUTION
for (int i = 2; i < 33; i = i*2) {
cout << i << endl;
}
/// END SOLUTION
Exercice: accumulons !¶
Observer les cellules suivantes et deviner la valeur finale de la variable
c
; puis exécuter pour vérifier.
int c;
c = 0;
for (int i = 0; i < 6; i++) {
c = i + c;
}
c
Recopier la boucle ci-dessous puis modifier la condition d’arrêt pour que la variable
c
soit égale à \(36\) après l’exécution.
c = 0;
/// BEGIN SOLUTION
for (int i = 0; i < 9; i++) {
/// END SOLUTION
c = i + c;
}
c // doit valoir 36
La cellule suivante contient des tests automatisés; nous reviendrons dessus plus en détails par la suite; pour le moment, vous pouvez juste exécuter la cellule et vérifier qu’il n’y a pas de message d’erreur.
CHECK( c == 36 )
Écrire ci-dessous un programme qui calcule la valeur de \(n! = 1\times 2 \times \cdots \times n\) dans la variable
f
:
int f,n;
n = 5
/// BEGIN SOLUTION
f = 1;
for (int i = 1; i <= n; i++) {
f = f * i;
}
/// END SOLUTION
f // 120 pour n = 5
CHECK( f == 120 )
Reprendre votre programme pour le mettre sous la forme d’une fonction qui calcule \(n!\):
int factorielle(int n) {
/// BEGIN SOLUTION
int f = 1;
for (int i = 1; i <= n; i++) {
f = f * i;
}
/// END SOLUTION
return f;
}
L’appel suivant à votre fonction devrait renvoyer 120:
factorielle(5)
Vérifiez votre fonction grâce aux tests suivants (ils doivent tous afficher true
) :
factorielle(5) == 120
factorielle(6) == 720
factorielle(10) == 3628800
factorielle(1) == 1
factorielle(0) == 1 // convention mathématique
La cellule suivante contient des tests automatisés; nous reviendrons dessus plus en détails par la suite; pour le moment, vous pouvez juste exécuter la cellule et vérifier qu’il n’y a pas de message d’erreur.
CHECK( factorielle(0) == 1 );
CHECK( factorielle(1) == 1 );
CHECK( factorielle(2) == 2 );
CHECK( factorielle(3) == 6 );
CHECK( factorielle(4) == 24 );
CHECK( factorielle(5) == 120 );
/// BEGIN HIDDEN TESTS
CHECK( factorielle(8) == 40320);
/// END HIDDEN TESTS
♣ Utilisation de la boucle for dans Laby¶
♣ Écrivez une fonction
carre(int L)
qui prend en paramètre un entier L, et qui fait faire à la fourmi une trajectoire carrée de côté L cases. La fourmi doit revenir à la case de départ à la fin de la fonction.
#include <laby/global_fr.hpp>
LABY_BAR(
u8"o o o o o o o o o o o o\n"
u8"o . . . . . . . . . . o\n"
u8"o . . . . . . . . . . o\n"
u8"o . . . . . . . . . . o\n"
u8"o . . . . . . . . . . o\n"
u8"o . . . . . . . . . . o\n"
u8"o . . . . . . . . . . o\n"
u8"o . . . . . . . . . . o\n"
u8"o . . . . . . . . . . o\n"
u8"o . . . . . . . . . . o\n"
u8"o ↑ . . . . . . . . . o\n"
u8"o o o o o o o o o o o o\n"
)
// Entrée : un entier L, correspondant à la longeur d'un côté de la trajectoire.
// Sortie : aucune, déplace la fourmi selon un carré de longueur L
//BEGIN SOLUTION
void carre(int L){
if (L > 0) {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < L-1; j++) {
avance();
}
droite();
}
}
}
//END SOLUTION
carre(0) // La fourmi ne fait rien
carre(1) // La fourmi doit faire un tour sur elle-même
carre(5) // Parcourt un carré de longueur 5 cases
Fin de cette feuille¶
Dans cette feuille, vous avez mis en pratique la boucle for
pour
compter et accumuler. Vous avez maintenant les outils pour passer
à la suite du TP.