TP n°8 d'informatique  DEUG S1 MIAS+MASS  2000-2001
(sous-programmes)

EXERCICE 1 :
On rappelle que l'écran de votre ordinateur peut afficher 24 lignes de 80 caractères, l'écriture du 80 ième provoquant un passage à la ligne.
On se propose d'écrire un programme permettant l'affichage d'un cadre composé de caractères au centre de cet écran (la taille du cadre et le caractère qui le compose seront au choix de l'utilisateur).

a) Ecrire une procédure SAUT(n:integer) permettant de sauter n lignes.

b) Ecrire une procédure ECRIRE(n:integer; c:char) permettant d'écrire n fois sur une même ligne le caractère c.

c) Ecrire une procédure CADRE(long,haut:integer; motif:char) permettant l'affichage au centre de l'écran du cadre de longueur long, de hauteur haut et composé de motif.
Cette procédure devra utiliser les procédures précédentes.

d) Ecrire le programme priincipal permettant à l'utilisateur de tracer le cadre de son choix. Prévoir des contrôles pour que le cadre rentre bien dans l'écran.


EXERCICE 2 :
On se propose d'écrire un programme de calcul vectoriel dans R3. Les objets qu'on est amené à utiliser sont des scalaires et des vecteurs. Pour ces derniers on introduit le type :

        type vecteur = array [1..3] of real;

Les différentes tâches qu'il est naturel d'isoler et de décrire formellement par des sous-programmes sont :

- saisie d'un vecteur V
- affichage d'un vecteur V
- calcul du produit d'un vecteur par un scalaire noté : s V
- calcul de la somme de deux vecteurs notée : U+V
- calcul du produit scalaire de deux vecteurs noté : U.V
- calcul du carré du module d'un vecteur noté : |V|2 = V.V
- calcul du produit vectoriel de deux vecteurs noté : U^V
- calcul du produit mixte de trois vecteurs noté : (U,V,X) = U^V.W

a) Préciser les données et les résultats de chacune des tâches précédentes ainsi que leur nature (scalaire ou vecteur).

b) En déduire le type (procédure ou fonction) des sous-programmes permettant de les décrire.

c) Ecrire les sous-programmes corrrespondants.

d) Les utiliser pour les calculs suivants (au choix de l'utilisateur).

-1- calculer et afficher les deux membres de la formule du double produit vectoriel pour trois vecteurs quelconques donnés par l'utilisateur:

        A^(B^C) = (A.C) B - (A.B) C

-2- calculer et afficher les deux membres de la formule suivante pour quatre vecteurs quelconques donnés par l'utilisateur:

        (A,B,C) D = (D,B,C) A + (D,C,A) B + (D,A,B) C

-3- division euclidienne : soit à résoudre :

        A^Y = B        A et B donnés et Y inconnu.

Une condition nécessaire et suffisante pour qu'il y ait des solutions est que :

        A.B = 0

Alors les vecteurs sont de la forme :

        Y = Y1 + s A    avec    Y1 = - (A^B) / |A|2    et s réel quelconque

Calculer la solution lorsqu'elle existe, correspondant à une valeur de s choisie par l'utilisateur.