PROGRAM biseccion;

VAR
  a,b,tol,p : Real;
  i,NumIte : Word;

FUNCTION f(x:Real):Real;
  BEGIN
    f:=x-cos(x)
  END;

PROCEDURE PideDatos(VAR x,y,z:Real;VAR n:Word);
  BEGIN
    WriteLn;
    REPEAT
      Write('Dame el l¡mite inferior: ');
      ReadLn(x);
      Write('Dame el l¡mite superior: ');
      ReadLn(y)
    UNTIL y>x;
    REPEAT
      Write('Dame la tolerancia: ');
      ReadLn(z);
    UNTIL z<1;
    Write('Dame el n£mero de iteraciones: ');
    ReadLn(n);
    WriteLn
  END;

PROCEDURE Busca(tol:Real;Numite:Word;VAR a,b:Real);

  VAR
    encontrada:Boolean;

  BEGIN
    encontrada:=False;
    i:=1;
    WHILE (i<=NumIte)AND(NOT encontrada) DO
    BEGIN
      p:=(a+b)/2;
      IF (Abs(a-b)<=Tol)OR(f(p)=0) THEN
      BEGIN
        WriteLn('La ra¡z es ',p:12:12);
        encontrada:=True
      END;
      IF f(a)*f(p)<0 THEN
        b:=p
      ELSE
        a:=p;
      i:=i+1
    END;
    IF NOT encontrada THEN
      WriteLn('El m‚todo fracas¢')
  END;

BEGIN
  PideDatos(a,b,tol,NumIte);
  IF f(a)*f(b)<0 THEN
    Busca(tol,NumIte,a,b);
  ReadLn
END.

    Source: geocities.com/v.iniestra/apuntes/ana_num

               ( geocities.com/v.iniestra/apuntes)                   ( geocities.com/v.iniestra)