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