CommencezCommencez gratuitement

Calcul des racines carrées avec une boucle for

Comme en R, les boucles for en C++ exécutent le même code un certain nombre de fois, en ne changeant que la valeur d'un index à chaque itération. La syntaxe d'une boucle for est toutefois un peu plus complexe qu'en R.

for(int i = 0, i < n, i++) {
  // Do something
}
  • int i = 0 déclare l'index comme un entier (le cas le plus courant) et lui assigne la valeur 0 à la première itération.
  • i < n définit la condition d'itération : une fois que i atteint la valeur n, cette condition échoue et la boucle s'arrête.
  • i++ signifie augmenter la valeur de i de 1 à chaque itération.

Ici, vous allez compléter la définition d'une fonction qui calcule la racine carrée à l'aide de la méthode babylonienne. (Dans du code réel, utilisez simplement sqrt(), qui repose sur un algorithme moderne plus rapide.)

Cette activité fait partie du cours

Optimiser le code R avec Rcpp

Voir le cours

Instructions de l’exercice

  • Initialisez une variable locale double x à un.
  • Spécifiez une boucle for.
    • Initialisez un entier, i, à 0.
    • Définissez la condition d'itération comme i inférieur à n.
    • Incrémentez i de un à chaque étape.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

#include 
using namespace Rcpp;

// [[Rcpp::export]]
double sqrt_approx(double value, int n) {
    // Initialize x to be one
    double x = ___;
    // Specify the for loop
    ___(int i = ___; ___; ___) {
        x = (x + value / x) / 2.0;
    }
    return x;
}

/*** R
sqrt_approx(2, 10)
*/
Modifier et exécuter le code