Rappel : ce cours d'algorithmique et de programmation est enseigné à l'Université Paris 7, dans la spécialité PISE du Master MECI (ancien DESS AIGES) par Christophe Darmangeat |
PARTIE 9 Enoncé des Exercices
Exercice 9.1
Parmi ces affectations (considérées indépendamment les unes des autres), lesquelles provoqueront des erreurs, et pourquoi ?
Variables A, B, C en Numérique
Variable D en Caractère A ← Sin(B) A ← Sin(A + B * C) B ← Sin(A) – Sin(D) C ← Sin(A / B) C ← Cos(Sin(A)
Ecrivez un algorithme qui demande un mot à l’utilisateur et qui affiche à l’écran le
nombre de lettres de ce mot (c'est vraiment tout bête).
Ecrivez un algorithme qui demande une phrase à l’utilisateur et qui affiche à l’écran
le nombre de mots de cette phrase. On suppose que les mots ne sont séparés
que par des espaces (et c'est déjà un petit peu moins bête).
Ecrivez un algorithme qui demande une phrase à l’utilisateur et qui affiche à l’écran
le nombre de voyelles contenues dans cette phrase.
On pourra écrire deux solutions. La première déploie une condition composée bien
fastidieuse. La deuxième, en utilisant la fonction Trouve, allège considérablement
l'algorithme.
Ecrivez un algorithme qui demande une phrase à l’utilisateur. Celui-ci entrera ensuite
le rang d’un caractère à supprimer, et la nouvelle phrase doit être affichée
(on doit réellement supprimer le caractère dans la variable qui stocke la phrase, et
pas uniquement à l’écran).
Un des plus anciens systèmes de cryptographie (aisément déchiffrable) consiste à décaler
les lettres d’un message pour le rendre illisible. Ainsi, les A deviennent
des B, les B des C, etc. Ecrivez un algorithme qui demande une phrase à
l’utilisateur et qui la code selon ce principe. Comme dans le cas précédent,
le codage doit s’effectuer au niveau de la variable stockant la phrase, et
pas seulement à l’écran.
Une amélioration
(relative) du principe précédent consiste à opérer avec un décalage non de
1, mais d’un nombre quelconque de lettres. Ainsi, par exemple, si l’on
choisit un décalage de 12, les A deviennent des M, les B des N, etc.
Réalisez un
algorithme sur le même principe que le précédent, mais qui demande en plus
quel est le décalage à utiliser. Votre sens proverbial de l'élégance vous
interdira bien sûr une série de vingt-six "Si...Alors"
Une technique
ultérieure de cryptographie consista à opérer non avec un décalage
systématique, mais par une substitution aléatoire. Pour cela, on utilise un
alphabet-clé, dans lequel les lettres se succèdent de manière désordonnée,
par exemple :
HYLUJPVREAKBNDOFSQZCWMGITX
C’est cette clé
qui va servir ensuite à coder le message. Selon notre exemple, les A
deviendront des H, les B des Y, les C des L, etc.
Ecrire un
algorithme qui effectue ce cryptage (l’alphabet-clé sera saisi par
l’utilisateur, et on suppose qu'il effectue une saisie correcte).
Un système
de cryptographie beaucoup plus difficile à briser que les précédents fut inventé au XVIe
siècle par le français Vigenère. Il consistait en une combinaison de
différents chiffres de César.
On peut en effet
écrire 25 alphabets décalés par rapport à l’alphabet normal :
Le codage va s’effectuer sur le principe du chiffre de César : on remplace la lettre
d’origine par la lettre occupant la même place dans l’alphabet décalé.
Mais à la
différence du chiffre de César, un même message va utiliser non un, mais
plusieurs alphabets décalés. Pour savoir quels alphabets doivent être
utilisés, et dans quel ordre, on utilise une clé.
Si cette clé est
"VIGENERE" et le message "Il faut coder cette phrase", on procèdera
comme suit :
La première
lettre du message, I, est la 9e lettre de l’alphabet normal.
Elle doit être codée en utilisant l’alphabet commençant par la première
lettre de la clé, V. Dans cet alphabet, la 9e lettre est le
D. I devient donc D.
La deuxième
lettre du message, L, est la 12e lettre de l’alphabet normal.
Elle doit être codée en utilisant l’alphabet commençant par la deuxième
lettre de la clé, I. Dans cet alphabet, la 12e lettre est le
S. L devient donc S, etc.
Quand on arrive à
la dernière lettre de la clé, on recommence à la première.
Ecrire
l’algorithme qui effectue un cryptage de Vigenère, en demandant bien sûr au
départ la clé à l’utilisateur.
Ecrivez un algorithme qui demande un nombre entier à l’utilisateur. L’ordinateur
affiche ensuite le message "Ce nombre est pair" ou "Ce nombre est
impair" selon le cas.
Ecrivez les algorithmes qui génèrent un nombre Glup aléatoire tel que …
|