Cours 8 : retour sur le while et indécidabilité de l’arrêt

, par Pierre

Les deux programmes vus au sujet du while.

  1. /* Declaration de fonctionnalites supplementaires */
  2. #include <stdlib.h> /* pour EXIT_SUCCESS */
  3. #include <stdio.h> /* pour printf() */
  4.  
  5. /* Declaration des constantes et types utilisateur */
  6. #define N 5
  7. #define FALSE 0
  8. #define TRUE 1
  9.  
  10. /* Declaration des fonctions utilisateur */
  11.  
  12. /* Fonction principale */
  13. int main()
  14. {
  15.     /* Declaration et initialisation des variables */
  16.     int x; /* saisie utilisateur */
  17.     double somme = 0;
  18.     int n = 0; /* nombre d'elements positifs */
  19.  
  20.     /* mode d'emploi */
  21.     printf("Saisir une série d'entiers positifs, entrer un nombre négatif ou nul pour terminer la saisie.");
  22.  
  23.     /* demander un nombre */
  24.     printf("Donner le premier nombre\n");
  25.     scanf("%d", &x);
  26.  
  27.     /* tant que le nombre saisie est positif */
  28.     while (x > 0)
  29.     {
  30.         /* ajout à la somme */
  31.         somme = somme + x;
  32.        
  33.         /* incremente le nombre d'elements positifs */
  34.         n = n + 1;
  35.  
  36.         /* demander un nouveau nombre */
  37.         printf("Donner le nombre suivant\n");
  38.         scanf("%d", &x);
  39.     }
  40.  
  41.     if (n > 0) /* il y a des elements */
  42.     {
  43.         /* calcul de la moyenne */
  44.         printf("moyenne des nombres positifs saisis : %g\n", somme / n);
  45.     }
  46.     else /* pas d'elements */
  47.     {
  48.         printf("Il n'y a pas d'elements positifs dans la serie saisie\n");
  49.     }
  50.  
  51.     /* Valeur fonction */
  52.     return EXIT_SUCCESS;
  53. }
  54.  
  55. /* Definition des fonctions utilisateur */

Télécharger

  1. /* Declaration de fonctionnalites supplementaires */
  2. #include <stdlib.h> /* pour EXIT_SUCCESS */
  3. #include <stdio.h> /* pour printf() */
  4.  
  5. /* Declaration des constantes et types utilisateur */
  6. #define N 5
  7. #define FALSE 0
  8. #define TRUE 1
  9.  
  10. /* Declaration des fonctions utilisateur */
  11.  
  12. /* Fonction principale */
  13. int main()
  14. {
  15.     /* Declaration et initialisation des variables */
  16.     int t[N]={1,3,4,190,-34};
  17.     int pas_trouve = TRUE;
  18.     int x; /* nombre recherche */
  19.     int i = 0; /* var. de boucle */
  20.  
  21.     /* Demander le nombre recherche a l'utilisateur */
  22.     printf("Donner un nombre entier\n");
  23.     scanf("%d", &x);
  24.    
  25.     /* parcourir le tableau tant qu'une case contenant ce nombre n'est
  26.      * pas trouvée */
  27.     while( (i < N) && pas_trouve )
  28.     {
  29.         if (t[i] == x) /* la case contient x */
  30.         {          
  31.             pas_trouve = FALSE;
  32.         }
  33.         i = i + 1;
  34.     }
  35.  
  36.     /* Afficher le resultat de la recherche */
  37.     if (pas_trouve)
  38.     {
  39.         printf("Le nombre %d n'est pas dans le tableau\n", x);
  40.     }
  41.     else
  42.     {
  43.         printf("Le nombre %d est dans le tableau\n", x);
  44.     }
  45.  
  46.     /* Valeur fonction */
  47.     return EXIT_SUCCESS;
  48. }
  49.  
  50. /* Definition des fonctions utilisateur */

Télécharger

La preuve de l’indécidabilité de la terminaison des programmes a été présentée à l’aide des transparents en document annexe.

Documents joints

Revenu et logement, Je livre ici quelques éléments de comparaison concernant mon niveau de vie, pour couper court à quelques idées reçues, et un condensé de nombreuses (...)
Revenu et travail d’un enseignant-chercheur, Cet article complète l'article Revenu et logement, en détaillant un peu le budget de mon ménage, mon parcours d'enseignant-chercheur en terme de (...)
Cybersyn (el systemo synco), Au café, mardi 5 avril 2011, j'ai bien vu que, mis à part Antoine Allombert, personne ne connaissait l'histoire de l'extraordinaire projet chilien (...) [jpg, jpg, png]