Séance d'exercices 3, Programmation I
Sciences et Technologies du Vivant, Semestre 1

Remarques

  1. Le test d'égalité se note == et pas =
  2. Il n'y a pas de point-virgule après les parenthèses du if ( ) ni après celles du for ( )
  3. Ne modifiez jamais une variable compteur à l'intérieur d'une boucle for.

Une instruction cout ne se termine jamais par l'opérateur <<, mais toujours par un des éléments à afficher. Exemple:

  cout << "Voici un nombre: " << n << endl;  // correct
  cout << "Voici un nombre: " << n <<;       // FAUX
  cout << "Voici un nombre: " << n;          // correct

Si une boucle ne s'arrête pas, tapez Ctrl-C pour stopper le programme. Plusieurs causes sont possibles:

Exercice 1 - Génération de nombres aléatoires

Créez un programme avec le code suivant:

    #include <iostream>
    #include <stdlib.h>

    using namespace std;

    int main(int argc, char **argv)
    {
      srand(0);

      cout << rand() << endl;
      cout << rand() << endl;
      cout << rand() << endl;

      return 0;
    }

Lancez l'exécutable plusieurs fois pour vérifier que les mêmes nombres sont affichés.

Changez l'instruction srand(0); par srand(time(0)); et vérifiez que cette fois les nombres sont différents à chaque exécution.

N'oubliez pas d'ajouter #include <time.h> au début du programme pour pouvoir utiliser la fonction time().

  1. Modifiez le programme pour que les nombres soient des nombres entiers compris entre 0 et 9.
  2. Modifiez le programme pour que les nombres soient des nombres entiers compris entre 1 et 10.
  3. Modifiez le programme pour que les nombres soient des nombres flottants (réels) compris entre 0 et 10.
  4. Modifiez le programme pour que les nombres soient des nombres flottants (réels) compris entre -1 et +1.

Exercice 2 - Tests

a) Créez un programme qui lit deux valeurs entières $x$ et $y$, et qui effectue l'un après l'autre les cinq tests indiqués ci-dessous. Pour chacun des tests, afficher un texte court si le test est vrai, ne rien afficher sinon.

Tests:

b) Ajoutez maintenant le code pour indiquer si $x$ est plus grand que 50, compris entre 5 et 50, compris entre -5 et +5 ou plus petit que -5. Chaque limite fait partie de l'intervalle placé à sa droite. Par exemple, +5 fait partie de l'intervalle [+5;+50[, +50 n'en fait pas partie.

Comment écrire le programme sans utiliser d'opérateurs logiques (&& ou ||) ? Indice: utilisez des if imbriqués.

Exercice 3 - Suite et Série

a) Écrivez un programme qui calcule les 10 premiers termes de la suite $U_n$ telle que:

\begin{displaymath}
U_0 = 1, U_{n+1} = \frac{U_n}{n+1}
\end{displaymath} (1)

Vous devez trouver:

\begin{eqnarray*}
U_0 & = & 1 \\
U_1 & = & 1 \\
U_2 & = & 0.5 \\
U_3 & = & 0....
...016e-05 \\
U_9 & = & 2.75573e-06 \\
U_10 & = & 2.75573e-07 \\
\end{eqnarray*}

b) Modifiez votre programme pour qu'il calcule simultanément la suite $U_n$ et la série $V_n$, où $V_n = \sum_{i=0}^{n}U_i$. Vérifiez que $V_n$ converge vers $e
= \exp(1) = 2.71828...$.

Exercice 4 - Figures en mode texte

  1. Ecrivez un programme qui affiche les valeurs 1 à 9 en ligne, à l'aide d'une boucle for:
      123456789
    

  2. Modifiez le programme pour qu'il affiche 9 lignes similaires, à l'aide de 2 boucles for:
      123456789 
      123456789 
      . 
      . 
      .  
      123456789
    

  3. Comment modifier le programme pour qu'il affiche un triangle ?
      1 
      12 
      123 
      1234 
      12345 
      123456 
      1234567
      12345678
      123456789
    

  4. Modifiez une dernière fois votre programme, pour qu'il affiche une pyramide inversée:
              1 
             12 
            123 
           1234 
          12345 
         123456 
        1234567 
       12345678
      123456789
    

Exercice 5 - Devinette

Ecrivez un programme qui tire une valeur entière au hasard, comprise entre 0 et 10, puis demande à l'utilisateur de deviner la valeur qu'il a choisie. Le programme affichera un message indiquant alors si la valeur entrée est trop petite, trop grande, ou si l'utilisateur a trouvé la bonne valeur.

Exemple d'exécution:

J'ai choisi un nombre entre 0 et 10. Essayez de le deviner: 4
Mon nombre est plus grand.

Exercice 6 - Résolution d'équation du deuxième degré (suite)

Reprenez votre programme de la séance précédente qui calculait les racines d'une équation du second degré. Ce programme renvoyait une erreur à l'exécution au moment où il essayait de calculer la racine carrée du discriminant $\Delta$, quand $\Delta$ était négatif. L'instruction if va nous permettre d'éviter cette erreur à l'exécution.

Modifiez votre programme pour qu'il affiche le message:

    Je ne sais pas calculer les racines dans ce cas.

si $\Delta < 0$. Si $\Delta \geq 0$, le programme devra afficher les racines de l'équation.

Vérifiez que votre programme est correct:


Retour