Correction du TD n°3
Ecrire un algorithme qui réalise la saisie clavier d'une suite de nombres entiers jusqu'à la saisie du nombre 0 et qui rend la valeur minimale saisie.
001 { Calcul du minimum de deux entiers }
002
003 fonction minimum(a,b) : entier
004 Donnees a : entier { premier entier }
005 b : entier { deuxieme entier }
006 Locales min : entier { minimum calcule et rendu }
007 si a < b alors
008 min := a
009 sinon
010 min := b
011 fsi
012 Resultat : min
013 fin fonction
014
015 { Saisie clavier d'une suite d'entiers }
016 { jusqu'a saisir 0 }
017
018 action saisieSuiteEntiers()
019 Locales v : entier { variable support des entiers saisis }
020 { successivement }
021 v := lire()
022 tantque v <> 0 faire
023 v := lire()
024 fait
025 fin action
026
027 { Saisie clavier d'une suite d'entiers }
028 { jusqu'a saisir 0 }
029 { Calcul concourant et retour de la valeur }
030 { minimale saisie, 0 exclu }
031
032 fonction saisieSuiteEntiers() : entier
033 Locales v : entier { variable support des entiers saisis }
034 { successivement }
035 min : entier { minimum calcule et rendu }
036 v := lire()
037 min := v
038 tantque v <> 0 faire
039 min := minimum(v,min)
040 v := lire()
041 fait
042 Resultat : min
043 fin fonction
Ecrire un algorithme qui teste si un nombre entier donné est un bon numéro de sécurité sociale (test sur le sexe de la personne et le mois de naissance).
001 { Test de validite d'un entier comme numero }
002 { de securite sociale par test du sexe }
003
004 fonction testSexeNumeroSecuriteSociale(nb) : booleen
005 Donnees nb : entier { numero de securite sociale teste }
006 Locales sexe : entier { variable de stockage du code sexe }
007 sexe := nb / 1000000000000
008 Resultat : ((sexe = 1) ou (sexe = 2))
009 fin fonction
010
011 { Test de validite d'un entier comme numero }
012 { de securite sociale par test du mois }
013
014 fonction testMoisNumeroSecuriteSociale(nb) : booleen
015 Donnees nb : entier { numero de securite sociale teste }
016 Locales mois : entier { variable de stockage du code mois }
017 mois := (nb / 100000000) modulo 100
018 Resultat : ((mois >= 1) et (mois <= 12))
019 fin fonction
020
021 { Test de validite d'un entier comme }
022 { numero de securite sociale par validation }
023 { du sexe et du mois }
024
025 fonction testNumeroSecuriteSociale(nb) : booleen
026 Donnees nb : entier { numero de securite sociale teste }
027 Resultat : (testSexeNumeroSecuriteSociale(nb) et
028 testMoisNumeroSecuriteSociale(nb))
029 fin fonction
Auteur: Nicolas JANEY
UFR Sciences et Techniques
Université de Besançon
16 Route de Gray, 25030 Besançon
nicolas.janey@univ-fcomte.fr