Langage C

Séance 2 : Fonctions, Itérations


EXERCICE 1 - Rappels du cours

1-  Quelle est la différence entre "une fonction f qui affiche la valeur 1" et "une fonction g qui retourne la valeur 1 ?
Écrire le code de ces deux fonctions.

2-  Qu'affiche le programme suivant ?
    #include <stdio.h>
    void aff1( int x ) {
        printf("%d\n", x+1 );
    }
    void aff2( int x ) {
        x = x + 1;
        printf("%d\n", x );
    }
    int aff3( int x ) {
        x = x + 1;
        printf("%d\n", x  );
        return x;
    }

    int main(void) {
        int x = 9;
        aff1(x);
        aff2(x);
        printf("x=%d\n", x );
        x = aff3(x);
        printf("x=%d\n", x );
        return 0;
    }


3-  Qu'affiche le programme suivant ?
    #include <stdio.h>
    int main(void) {
        int x;
        printf("x=%d\n", x );
        return 0;
    }


EXERCICE 2 - Écrire une fonction AfficheTable( n ) qui affiche la table de multiplication pour n.
Quelle instrucion de répétition vous semble la plus adaptée ? Pourquoi ?
Par exemple, l'expression AfficheTable(6) affichera à l'écran :
     1 x 6 = 6
     2 x 6 = 12
     3 x 6 = 18
     4 x 6 = 24
     5 x 6 = 30
     6 x 6 = 36


EXERCICE 3 - Calcul de la factorielle d'un nombre

1-  Écrire une fonction factorielle(n) qui affiche la factorielle du nombre n.
Rappel : factorielle(n) = n! = n (n-1) (n-2) ¼1.

2-  Déterminez expérimentalement (en TP) la plus grande valeur que peut prendre l'argument de factorielle.

EXERCICE 4 -
1-  Écrire une fonction EstDivisible( a, b ) qui retourne 1 si a est divisible par b, et 0 sinon.

2-  On rappelle qu'un nombre entier n est dit "premier" s'il n'existe aucun entier d dans l'intervalle [2,n-1] tel que n soit divisible par d.
Écrire une fonction EstPremier(n) qui retourne 1 si n est premier, 0 sinon. On utilisera la fonction EstDivisible.

EXERCICE 5 - Nombres d'Armstrong
On appelle nombres d'Armstrong les nombres entiers tels que la somme des cubes de leurs chiffres (en base 10) est égale au nombre lui même. Exemple :
13 + 53 + 33 = 153
Écrire un programme qui affiche tous les nombres d'Armstrong inférieurs à 1000000.


Note pour les Travaux Pratiques
Utilisation du débugueur
Pour la mise au point de vos programmes, vous utiliserez fréquement un "débuggueur" (angliscisme assumé).
Sous linux, nous vous conseillons "gdb"et "ddd". Ils ont à peu près les mêmes fonctionnalités, mais gdb travaille en mode texte, et "ddd" ouvre une fenêtre graphique.
Pour utiliser un débugueur, il faut avoir compilé son programme avec l'option -g, afin que le compilateur laisse dans le code exécutable des informations (noms des fonctions, numéros de lignes etc) utiles au débugueur.
Rappel des principales commandes de gdb :
Commande Nom complet
l list affiche le code source.
r run lance l'exécution à partir du début.
n next exécute une instruction, sans détailler les fonctions.
s step exécute une instruction, entre dans les fonctions
b xxx break positionne un point d'arrêt.
xxx est un numéro de ligne ou un nom de fonction.
p expr print affiche la valeur de l'expression expr.



File translated from TEX by TTH, version 3.70.
On 21 Sep 2005, 09:37.