Cours 8 : retour sur le while et indécidabilité de l’arrêt
, par
Les deux programmes vus au sujet du while.
- /* Declaration de fonctionnalites supplementaires */
- #include <stdlib.h> /* pour EXIT_SUCCESS */
- #include <stdio.h> /* pour printf() */
- /* Declaration des constantes et types utilisateur */
- #define N 5
- #define FALSE 0
- #define TRUE 1
- /* Declaration des fonctions utilisateur */
- /* Fonction principale */
- int main()
- {
- /* Declaration et initialisation des variables */
- int x; /* saisie utilisateur */
- double somme = 0;
- int n = 0; /* nombre d'elements positifs */
- /* mode d'emploi */
- printf("Saisir une série d'entiers positifs, entrer un nombre négatif ou nul pour terminer la saisie.");
- /* demander un nombre */
- /* tant que le nombre saisie est positif */
- while (x > 0)
- {
- /* ajout à la somme */
- somme = somme + x;
- /* incremente le nombre d'elements positifs */
- n = n + 1;
- /* demander un nouveau nombre */
- }
- if (n > 0) /* il y a des elements */
- {
- /* calcul de la moyenne */
- }
- else /* pas d'elements */
- {
- }
- /* Valeur fonction */
- return EXIT_SUCCESS;
- }
- /* Definition des fonctions utilisateur */
- /* Declaration de fonctionnalites supplementaires */
- #include <stdlib.h> /* pour EXIT_SUCCESS */
- #include <stdio.h> /* pour printf() */
- /* Declaration des constantes et types utilisateur */
- #define N 5
- #define FALSE 0
- #define TRUE 1
- /* Declaration des fonctions utilisateur */
- /* Fonction principale */
- int main()
- {
- /* Declaration et initialisation des variables */
- int t[N]={1,3,4,190,-34};
- int pas_trouve = TRUE;
- int x; /* nombre recherche */
- int i = 0; /* var. de boucle */
- /* Demander le nombre recherche a l'utilisateur */
- /* parcourir le tableau tant qu'une case contenant ce nombre n'est
- * pas trouvée */
- while( (i < N) && pas_trouve )
- {
- if (t[i] == x) /* la case contient x */
- {
- pas_trouve = FALSE;
- }
- i = i + 1;
- }
- /* Afficher le resultat de la recherche */
- if (pas_trouve)
- {
- }
- else
- {
- }
- /* Valeur fonction */
- return EXIT_SUCCESS;
- }
- /* Definition des fonctions utilisateur */
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
- indécidabilité de l’arrêt (PDF – 103.6 ko)