Programmation impérative : TP 2

Fonctions, procédures et boucles simples

Toutes les fonctions et procédures doivent être testées dans main.

On rappelle que toutes les fonctions et procédures devront être commentées (@requires, @assigns, @ensures au minimum).

  1. Proposer une fonction qui retourne le plus grand de ses deux paramètres de type int.
  2. Proposer une fonction qui retourne 1 si son paramètre est pair et 0 sinon.
  3. Proposer une fonction int puiss(int, int) qui retourne la valeur de son premier argument à la puissance de son deuxième argument.
  4. Écrire une procédure dont l'effet est d'afficher un triangle d'étoiles sur un nombre de lignes passé en paramètre. Exemple pour 4 lignes :
    *
    **
    ***
    ****
  5. Écrire une procédure dont l'effet est d'afficher un triangle d'étoiles sur un nombre de lignes passé en paramètre. Exemple pour 4 lignes :
    ****
    ***
    **
    *
  6. Écrire une procédure dont l'effet est d'afficher la table de multiplication des entiers de 1 à 10 sous la forme d'une matrice telle que :
           I   1   2   3   4   5   6   7   8   9  10
    ------------------------------------------------------------------
       1   I   1   2   3   4   5   6   7   8   9  10
       2   I   2   4   6   8  10  12  14  16  18  20
       3   I   3   6   9  12  15  18  21  24  27  30
       4   I   4   8  12  16  20  24  28  32  36  40
       5   I   5  10  15  20  25  30  35  40  45  50
       6   I   6  12  18  24  30  36  42  48  54  60
       7   I   7  14  21  28  35  42  49  56  63  70
       8   I   8  16  24  32  40  48  56  64  72  80
       9   I   9  18  27  36  45  54  63  72  81  90
      10   I  10  20  30  40  50  60  70  80  90 100
    
    Indication — Vous pourrez avoir besoin du format "%4d" dans vos appels à printf.
  7. Proposer une fonction qui retourne le pgcd de ses deux paramètres. Question subsidiaire : afficher également le nombre d'itérations.
  8. Reprendre l'exercice de permutation de variables du TP 1 en le faisant cette fois-ci à l'aide d'une procédure.
  9. Proposer une version de la fonction puiss qui prend cette fois trois paramètres, le troisième représentant le résultat.
  10. Proposer une procédure qui prend quatre paramètres, le troisième et le quatrième étant utilisés pour retourner le pgcd et le ppcm des deux premiers.

Fonctions récursives

Étude du calcul d'une puissance

  1. Proposer une fonction, qui étant donnés deux entiers x et p (p > 0), retourne l'entier xp en utilisant l'équation
    ∀ x,   x0 = 1
    ∀ x, ∀ p > 0,   xp = x × x(p-1)
  2. Tester cette fonction sur différentes valeurs de x et p, dont au moins une grande valeur pour p (p > 300000).
  3. Proposer une fonction, qui étant donnés deux entiers x et p, retourne l'entier xp en utilisant l'équation
    ∀ x,   x0 = 1
    ∀ x, ∀ p > 0, p pair,   xp = (x(p/2))2
    ∀ x, ∀ p > 0, p impair,   xp = x × (x((p-1)/2))2
  4. Tester cette fonction sur les mêmes valeurs que précédemment.