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
![]() |