QUESTION 1 : écrire la procédure EFFACE qui éteint toute la fenêtre.
QUESTION 2 : écrire la procédure DROITE_HORIZ(xa,xb,y:integer) qui trace une droite horizontale entre les points (xa,y) et (xb,y). On ne doit tracer QUE la partie visible (dans le fenêtre). Faites tous les tests nécessaires.
QUESTION 3 : écrire une procédure traçant une droite inclinée, dans le cas où l'angle de la droite à tracer avec l'horizontale compris entre -45° et +45°.Pour simplifier le problème, on suppose les droites à tracer totalement visibles.
QUESTION 4 : en supposant déjà écrite la procédure traitant les droites entre45° et 135°, écrire la procédure DROITE traçant n'importe quelle droite reliant(xa,ya) à (xb,yb), à condition que les extrémités soient visibles. On ne calculera pas d'angle mais on comparera xa-xb à ya-yb.
QUESTION 5 : Ce programme est (ou devrait être) un mini programme de dessin. Trouvez ses possibilités ainsi que les erreurs de programmation.
Program Dessin(input,output);
var ax,bx,ay,by:real;
procedure prepare;
var x0,x1,y0,y1:real;
begin
get_window;
write('les X varieront entre ? );readln(x0);
write('et ? ');readln(x1);
write('les Y varieront entre ? );readln(y0);
write('et ? ');readln(y1);
ax:=(xmax-xmin)/(x1-x0); bx:=xmin-ax*x0;
ay:=(ymax-ymin)/(y1-y0); by:=ymin-ay*y0;
efface
end;
procedure echelle(x,y:real;var xp,yp:integer);
begin
xp:=ax*x + bx; yp:=ay*y + by
end;
procédure droite(xa,ya,xb,yb:real);
var ixa,ixb,iya,iyb:real;
begin
echelle(xa,ya,ixa,iya); echelle(ya,ya,iya,iya);
droite(ixa,iya,ixb,iyb)
end;
procedure dessin;
var x,y,xavant,yavant:real;
c:char;
begin
repeat
writeln('entrer Premier point ou Autre point d'une ligne brisée');
write('ou Quitter le programme (P/A/Q) ?');
readln(c);
case c of
'P':entre(xavant,yavant);
'A':entre(x,y);
droite(xavant,yavant,x,y);
xavant:=x;yavant:=y
until c='Q'
end
begin prepare;dessin end