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 par int 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 par i <= 10 ci-dessous et exécuter; qu’est-ce qui change ?

for ( int i = 0; i < 10; i++ ) {
    cout << i << endl;
}
  • Remplacer i++ par i = 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;
      }
    
// VOTRE CODE ICI
  • Écrire des boucles for qui affichent les nombres suivants dans l’ordre donné :

0, 3, 6, 9, 12 :

// VOTRE CODE ICI

20, 21, 22, 23, 24, 25 :

// VOTRE CODE ICI

10, 9, 8, 7, 6, 5, 4, 3, 2, 1 :

// VOTRE CODE ICI

2, 4, 8, 16, 32 :

// VOTRE CODE ICI

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;
// VOTRE CODE ICI
    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
// VOTRE CODE ICI
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) {
    // VOTRE CODE ICI
    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 );

♣ Utilisation de la boucle for dans Laby

  1. ♣ É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
// VOTRE CODE ICI
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.