--Autore: Luigi Treppiedi --Data creazione: 19.01.2001 --Esercizio 4.1 With Ada.Text_Io, Ada.Float_Text_Io, Ada.Numerics.Elementary_Functions; Use Ada.Text_Io, Ada.Float_Text_Io, Ada.Numerics.Elementary_Functions; procedure sin is Val_iniziale : float := 0.0; Val_finale : Constant float := 1.05; Passo : Constant float := 0.05; r1, r2, r3, r4 : float := 0.0; function f(x : float) return float is begin return x-(x**3)/6.0+(x**5)/120.0; end f; function errore_relativo(x :float) return float is begin return (sin(x)-f(x))/sin(x); end errore_relativo; begin Put(" x"); Put(" sin(x)"); Put(" f(x)"); Put(" |sin(x)-f(x)|"); Put(" +Errore relativo"); New_line; while val_iniziale <= val_finale loop New_line; Put(val_iniziale,exp => 0,aft => 2); Put(" "); Put(sin(val_iniziale),exp => 0,aft => 8); Put(" "); Put(f(val_iniziale),exp => 0,aft => 8); Put(" "); Put(abs(sin(val_iniziale)-f(val_iniziale)),exp => 0,aft => 8); Put(" "); If sin(val_iniziale) = 0.0 then Put("indefinito"); Else Put(errore_relativo(val_iniziale),exp => 0,aft => 8); End If; Val_iniziale := Val_iniziale + passo; End Loop; end sin;