MagPI 5 Page 20

De Le French MagPi
Aller à : Navigation, rechercher

Tutoriel 3 - Fonctions, pointeurs et fichiers.

Comment vous en êtes-vous sortis avec le défi ? Voyons rapidement la solution avant de continuer.

Solution du défi

(début de code)

  • #include <stdio. h>
  • int main()
  • {
  • int nterms, term = 0, i ;
  • printf("Combien de termes ? " ); /* Demande à l'utilisateur d'effectuer une saisie */
  • scanf("%d" , &nterms); /* Lit le nombre entier */
  • for(i=1; i<=nterms; i++) /* Boucle sur les termes de la série */
  • {
  • term += i ; /* Ajoute le compteur pour produire chaque terme */
  • printf("%d " , term); /* Affiche le terme */
  • }
  • printf("\n" ); /* Affiche un caractère de nouvelle ligne avant de sortir du programme */
  • return 0;
  • }

(fin de code)

Fonctions

C'est une bonne idée d'écrire un programme comme un ensemble de fonctions clairement définies, appelées une ou plusieurs fois. Cela peut améliorer la robustesse du code ainsi que la lisibilité. Une fonction doit être déclarée avant qu'elle ne puisse être appelée dans le programme. Cela est vrai aussi bien pour les fonctions standards que pour toute autre fonction. La déclaration peut être placée soit à l'intérieur d'un fichier d'en-tête, soit dans le même fichier source, à condition qu'elle soit placée avant l'utilisation de la fonction. Par exemple, une fonction simple qui retourne un entier non signé et qui prend comme argument un autre entier non signé peut être déclarée ainsi :

(début de code)

  • unsigned int factorial(unsigned int x); /* Déclare la fonction */

(fin de code)

Le nom de la variable en entrée n'est pas strictement requis, mais il peut aider le lecteur à se souvenir de l'utilité de la variable. La déclaration d'une fonction est obligatoire pour pouvoir compiler le programme. Cependant, pour créer l'exécutable à partir du programme final par liaison, la fonction doit être implémentée dans un fichier source ou dans une bibliothèque. Dans ce cas, l'implémentation de la fonction est

(début de code)

  • unsigned int factorial(unsigned int x)
  • {
  • /* 0! vaut un. */
  • unsigned int result = 1; /* Déclare une variable pour stocker la valeur de retour */
  • while(x>0) /* Boucle tant que x est supérieur à zéro */
  • {
  • result *= x; /* multiplie x par result et affecte le produit à result */
  • x--; /* Décrémente x de un */
  • }
  • return result; /* Retourne x! quand x est différent de zéro. */
  • }

(fin de code)

La variable x et le type de retour sont définis comme des entiers non signés (unsigned int) car la fonction ne peut pas calculer la factorielle d'un nombre négatif. La fonction utilise également un autre des types de boucles, la boucle while (tant que). La boucle while exécute

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Boîte à outils