Indications sur les exercices

Des indications sur les exercices 3 et 4 du TD 3.

Exercice 3 : Suite de Syracuse

Question 1.

Il s'agit d'écrire un programme qui calcule la suite de Syracuse d'un entier \((n\)) donné tant que1 l'on m'a pas atteint la valeur 1.

Ainsi, on initialise une variable u à \(n\), puis itérativement on met à jour sa valeur pour qu'elle contienne successivement \(u_0, u_1, u_2, \ldots \). On sort de la boucle quand u vaut 1.

Question 2.

C'est comme les deux premiers exercices du TD, sauf :

  • À l'intérieur de la boucle, il faudra un saut conditionnel car la définition du prochain terme de la suite de Syracuse a deux cas, et donc il y aura un if dans la boucle à traduire.

  • Il s'agit de traduire une boucle while au lieu d'une boucle for, mais le principe est le même car

    while (Cond) { ... }
    

    est la même chose que

    for ( ; Cond; ) { ... }
    

Exercice 4 : Partiel 2011

Il y a deux possibilités.

  • Si on ne veut utiliser qu'un seul tableau mem dans la traduction, en s'interdisant d'avoir autant de variables dans la traduction que dans le programme source, alors il faut fixer une convention pour faire cohabiter i et t. Par exemple, dire que i correspond à mem[0] et que la case j de t correspond à mem[1+j].

  • Sinon, on peut simplement avoir deux variables statiques de classe i et t. Notez que dans la suite du cours on s'interdira de faire cela.

  • 1

    On remarquera que tant que se traduit par while en anglais.