IPS: Chapitre 1: Introduction

Exercice 1: afficher bonjour

toto.c

/* Mon premier programme */
#include `<stdio.h>`   /* ligne qui sert pour utiliser printf */

#include `<stdlib.h>`  /* ligne qui sert pour utiliser EXIT_SUCCESS */

/* Algorithme:

debut
 | affiche("Bonjour")
 | ------------------
fin

 */

int main()           /* debut du programme principal */
{
   printf("Bonjour\n\nAu revoir\n\n");  /* printf = affiche (en algorithme) */
   return EXIT_SUCCESS;  /* cette ligne est indispensable pour dire que le programme
                            s'est bien effectuee */

/* Commentaire:
    un commentaire
    peut etre ecrit
    sur 
    plusieurs lignes !

 */
}

Exercice 2: calculer l'aire d'un cercle

aire.c

#include `<stdio.h>`  /* printf */

#include `<stdlib.h>` /* EXIT_SUCCESS */
#include `<math.h>`

/*
fonction aire(rayon: reel):reel
debut
 | retourner pi*rayon*rayon
 | ------------------------
fin

 */

double aire(double rayon)
{
    return M_PI*rayon*rayon; /* M_PI: la valeur de PI dans `<math.h>` */
}

int main()
{
    printf("aire d'un cercle de rayon %f = %f \n", 2.0, aire(2.));
    printf("aire d'un cercle de rayon %f = %f \n", 5.0, aire(5.));
    printf("aire d'un cercle de rayon %f = %f \n", 2.50, aire(2.5));
    printf("aire d'un cercle de rayon %f = %f \n", 52.0, aire(52.));
    return EXIT_SUCCESS;
}

Exercice 3: périmètre d'un rectangle

perimetre.c

/*                                                                                                   
 Algorithme:                                                                                         

 fonction perimetre(longueur: reel, largeur: reel): reel                                             
 debut
 | retourner 2*(longueur+largeur)
 | ------------------------------
 fin

 debut
 | afficher(perimetre(10, 3.5))
 | ----------------------------
 fin

*/

#include `<stdio.h>` /* pour le printf */

#include `<stdlib.h>` /* pour EXIT_SUCCESS */

double perimetre(double longueur, double largeur)
{
    return 2*(longueur + largeur);
}

int main()
{
    double L;
    double l;
    L = 10.0;
    l =  3.5;
    printf("Le perimetre d'un rectangle de longueur %f et de largueur %f vaut %f\n",
     L, l, perimetre(L, l) );
    L = 0.;
    l = 1.;
    printf("Le perimetre d'un rectangle de longueur %f et de largueur %f vaut %f\n",
     L, l, perimetre(L, l) );
    return EXIT_SUCCESS;
}

Exercice 4: Factoriel d'un entier naturel

Version récursive

factoriel.c

#include `<stdio.h>`

#include `<stdlib.h>`

/*
    fonction factoriel(n: entier_nat): entier_nat
    debut
 | si (n = 0)
 | ----------
 |            | alors retourner 1               
 |            | sinon retourner n*factoriel(n-1)
 | finsi     
    fin

 */

int factoriel(int n)
{
    if (n == 0)
    { /* alors */
     return 1;
    }
    else /* sinon */
    {
     return n*factoriel(n-1);
    }
}
/* la syntaxe:
   si (CONDITION)
 | alors EXPRESSION1
 | -----------------
 | sinon EXPRESSION2
   finsi

   se traduit en C par:

   if (CONDITION)
   {
     EXPRESSION1
   }
   else
   {
     EXPRESSION2
   }

 */

int main()
{
   printf("%d! = %d\n", 0, factoriel(0));
   printf("%d! = %d\n", 5, factoriel(5));
   return EXIT_SUCCESS;
}

Version avec boucle (itérative)

factoriel2.c

#include `<stdio.h>`

#include `<stdlib.h>`


int factoriel(int n)
{
   int f;
   int i;

   f = 1;
   for (i = 1; i <= n; i = i+1)
   {
      f = f*i;
   }
   return f;
}


int main()
{
   printf("%d! = %d\n", 0, factoriel(0));
   printf("%d! = %d\n", 5, factoriel(5));
   return EXIT_SUCCESS;
}

Exercice 5: Carré

Ecrire un algorithme et un programme C qui calcule 22, 24, 28, 216. Pour cela, vous utiliserez une fonction "carre" que vous definirez

Exercice 6: Série d'entiers

Ecrire un algorithme et un programme C qui calcule la somme des entiers naturels de 0 à n. Idem avec la somme des carrés des entiers naturels de 0 à n.