Module 101 --- Partiel --- IUP1 --- 7 décembre 1994

2 pages -- Responsable : Emmanuel Waller -- Durée : 2 heures -- Tous documents autorisés

Exercice 1

  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.
  2. 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

  1. 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).
  2. 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.
  1. 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.)
  2. Ecrire un programme complet traitant la multiplication comme décrit ci-dessus.

Exercice 4

  1. Proposer un jeu de tests pour le programme de l'Exercice 3.
  2. 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.
  1. Proposer une liste des restrictions à relaxer par rapport à l'Exercice 7.
  2. Donner l'algorithme en français correspondant comme dans l'Exercice 3.