Correction du TD n°3

Exercice 1

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

ValeurMinimale.lda

Exercice 2

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

TestNumeroSecu.lda

Auteur: Nicolas JANEY
UFR Sciences et Techniques
Université de Besançon
16 Route de Gray, 25030 Besançon
nicolas.janey@univ-fcomte.fr