{************************************************
                 Hugo Etivant
     http://www.multimania.com/cyberzoide/
      e-mail : cyberzoide@multimania.com
      (pour une aide en Turbo Pascal 7.0)
*************************************************

TP 4, EXERCICE 3 }



{unit du programme : le mtre !}

program lentille ;
uses crt ;
var distfocale, objet, image, limite : real ;
    i, j : integer ;
    k : char ;
const distinit = -2 ; { = -200 cm, position initiale de l'objet}
      pas = 0.1 ;   { = 10 cm, c'est le pas}

procedure entree ;
begin
write('Entrez la valeur algbrique (en cm) de la distance focale : ') ;
readln(distfocale) ;
distfocale:=distfocale*100 ; {convertion des cm en mtre !}
end ;

procedure calculs ;
begin
textcolor(14) ; {selection du jaune comme couleur de texte}
writeln('  Relation de conjugaison des lentilles minces         | cran nĝ1') ;
textcolor(15);  {couleur blanche, voir le tableau sur mon site Web...}
writeln('  POSITION DE L''OBJET A   |    POSITION DE L''IMAGE A''  |   NATURE DE L''IMAGE ') ;
textcolor(7) ;{retour  la couleur gis normale}
repeat    {dbut de boucle}
inc(i) ; {i est incrmente de 1}
image:=(objet*distfocale)/(objet+distfocale) ; {formule de conjugaison des lentiles}
limite:=abs(objet+distfocale) ;
if (limite>=0.001) and (objet<0) then    {exclusion du cas < 1E-03}
   begin
   write('   ', image, ' m          ') ;
   write(objet, ' m          ') ;
   if image<0 then
      begin
      textcolor(4) ;
      writeln('virtuelle') ;
      textcolor(7) ;
      end ;
   if image>0 then
      begin
      textcolor(2) ;
      writeln('relle') ;
      textcolor(7) ;
      end ;
   if i=22 then       {pause de fin d'cran}
      begin
      textcolor(8) ;
      write('--tapez sur [ESC] pour quitter ou sur une autre touche pour continuer--') ;
      textcolor(7) ;
      k:=readkey ;
      clrscr ;
      i:=0 ;
      textcolor(14) ;
      inc(j,1) ;
      writeln('  Relation de conjugaison des lentilles minces         | cran nĝ1') ;
      textcolor(15);
      writeln('  POSITION DE L''OBJET A   |    POSITION DE L''IMAGE A''  |   NATURE DE L''IMAGE ') ;
      textcolor(7) ;
      end ;
    end ;
objet:=objet+pas ;
until (ord(k)=27) or (objet>=0) ; {fin de boucle conditionnelle}
end ;

BEGIN    {programme principal}
j:=1 ;
objet:=distinit ;
entree ;
calculs ;
readln ;  {pause, appuyez sur <ENTREE>}
END.   {fin du programme}
