Module 101 --- Partiel --- IUP1 --- 7 décembre 1994
2 pages --
Responsable : Emmanuel Waller --
Durée : 2 heures --
Tous documents autorisés
Exercice 1
-
Ecrire un programme Pascal qui lit 1000 réels au clavier, écrit
la somme des éléments négatifs, écrit le minimum, et écrit
ces nombres dans l'ordre inverse.
-
Tracer à la main soigneusement en utilisant la méthode vue en
cours une exécution de votre programme pour 5 nombres
intéressants (au lieu de 1000).
Exercice 2
-
Ecrire une fonction qui prend en entrée un caractère compris entre
'0' et '9' et renvoie le chifffre correspondant. (Vous ne ferez pas de
vérification.) Le nom de cette fonction sera c2i
char-t(w)o-integer).
-
Ecrire une fonction qui prend en entrée un chiffre et renvoie le
caractère correspondant (sans vérification). Le nom de cette
fonction sera i2c (pour integer-t(w)o-char).
Exercice 3
On se propose de concevoir puis d'écrire un programme de multiplication de
deux entiers positifs (en base dix) lus sur l'entrée . L'un est de
taille n, l'autre n'a qu'un chiffre.
Le nombre mille deux cent trente-quatre est tapé au clavier
1234 (et non 4321).
L'algorithme utilisé doit être l'algorithme appris à
l'école primaire pour multiplier deux nombres à la main. (Dans
l'exemple plus général (b) ci-dessous les deux nombres sont de même
taille n=3.)
(a) 527 (b) 127
x 2 x 542
------- -------
= 1054 254
508
635
-------
= 68834
Les variables Pascal utilisées dans le programme ne doivent pas
être numériques (integer, real, etc., y compris les composantes
de tableau). (Cela correspond à ne pré-supposer que les tables
d'addition et de multiplication.)
La taille n devra être déclarée en constante
Pascal.
-
Donner un algorithme en français uniquement pour la
multiplication, décomposant éventuellement le probème en
sous-problèmes traités eux aussi, mais sans aborder les détails
de la programmation, comme vu en cours. (Le dialogue avec
l'utilisateur sera traité plus loin dans ce partiel.)
-
Ecrire un programme complet traitant la multiplication comme décrit
ci-dessus.
Exercice 4
-
Proposer un jeu de tests pour le programme de l'Exercice 3.
-
Choisir dans ce jeu un test correspondant à un cas général et
tracer l'exécution du programme dessus pour n=4.
Exercice 5
Peut-on choisir n dans le programme de l'Exercice 3 pour gagner
quelque chose par rapport à Maxint ? Expliquer.
Exercice 6
Intégrer au programme de l'Exercice 3 un dialogue convivial avec
l'utilisateur comme celui vu en cours : ``répéter l'opération
tant que l'utilisateur le souhaite''. (Il sera possible
éventuellement de ne pas recopier le programme de l'Exercice 3 en
entier, mais le programme répondant à la question présente devra
finalement être indiqué exactement.)
Exercice 7
Reprendre l'Exercice 3 en considérant la multiplication
de deux nombres de même taille n.
Exercice 8
On se propose maintenant de traiter le cas général de la
multiplication d'entiers.
-
Proposer une liste des restrictions à relaxer par rapport à
l'Exercice 7.
-
Donner l'algorithme en français correspondant comme dans
l'Exercice 3.