Program  format.prg  - w języku Clipper

* Program format.prg

 

CLEAR

SET DECIMALS TO 10

 

PUBLIC  rs, rg, kst, krad, kgr, tg, siln

e=0.0000000001

pi=3.14159265358

rs=180.0/pi

rg=200.0/pi

 

k=0.000

tg=0.0000000000

 

WHILE tg<>9999

 CLS

 @ 1, 1 SAY 'Tang(kata)  (9999-koniec obl)' GET tg

 READ

 kst=arctg(tg,1)

 krad=arctg(tg,0)

 kgr=arctg(tg,2)

 @ 2, 1 SAY ' Kat [rad]            [st]             [grad]'

 ? krad

 ?? kst

 ?? kgr

 ? atn(tg)

 ?? atn(tg)*rs

 ?? atn(tg)*rg

 ?' SINUSY'

 ? sin(krad)

 ?? sin(kst/rs)

 ?? sin(kgr/rg)

 ?' Cosinusy'

 ?? cos(krad)

 ?? cos(kst/rs)

 ?? cos(kgr/rg)

 ? 'Tangensy'

 ?? tan(krad)

 ?? tan(kst/rs)

 ?? tan(kgr/rg)

  wait

ENDDO

 

tg=0.0000000000

x=0

y=1

WHILE x<>9999

 CLS

 @ 1, 1  SAY 'x (9999-koniec obl)' GET x

 @ 1, 40 SAY 'y ' GET y

 READ

 azy=atn2(x,y)

 @ 2, 1 SAY ' Az [rad]            [st]             [grad]'

 ? azy

 ?? azy*rs

 ?? azy*rg

 ? 'ATN'

 ? atn(y/x)

 ?? atn(y/x)*rs

 ?? atn(y/x)*rg

  wait

ENDDO

 

RETURN

 

******************************************************

FUNCTION arctg(t,w)

LOCAL a

suma=0

x=t

n=0

IF ABS(t)=1

  suma=0.785398163

ENDIF

IF ABS(t)<1

  a=x

  DO WHILE ABS(a)>e

    a=(-1)^n*x^(2*n+1)/(2*n+1)

    n=n+1

    suma=suma+a

  ENDDO

ENDIF

IF ABS(t)>1

  n=0

  suma=pi/2

  a=1/x

  IF t<0

     suma=-pi/2

ENDIF

 DO WHILE ABS(a)>e

    a=(-1)^(n+1)/((2*n+1)*x^(2*n+1))

    suma=suma+a

    n=n+1

  ENDDO

ENDIF

k=suma

IF w=1

  k=suma*rs

ENDIF

IF w=2

  k=suma*rg

ENDIF

RETURN k

 

******************************************************

FUNCTION atn(t)

LOCAL a

suma=0

x=t

n=0

IF ABS(t)=1

  suma=0.785398163

ENDIF

IF ABS(t)<1

  a=x

  DO WHILE ABS(a)>e

    a=(-1)^n*x^(2*n+1)/(2*n+1)

    n=n+1

    suma=suma+a

  ENDDO

ENDIF

IF ABS(t)>1

  n=0

  suma=pi/2

  a=1/x

  IF t<0

     suma=-pi/2

ENDIF

 DO WHILE ABS(a)>e

    a=(-1)^(n+1)/((2*n+1)*x^(2*n+1))

    suma=suma+a

    n=n+1

  ENDDO

ENDIF

k=suma

IF t<0

 k=-ABS(k)

ENDIF

RETURN k

 

******************************************************

FUNCTION sin(s)

LOCAL a

suma=0

x=s

n=0

a=x

DO WHILE ABS(a)>e

    a=(-1)^n*x^(2*n+1)/silnia(2*n+1)

    n=n+1

    suma=suma+a

ENDDO

k=suma

IF s=1

 k=pi/2

ENDIF

IF s=0

 k=0

ENDIF

IF s<0

 k=-ABS(k)

ENDIF

RETURN k

 

******************************************************

FUNCTION cos(c)

LOCAL a

suma=0

x=c

n=0

a=x

DO WHILE ABS(a)>e

    a=(-1)^n*x^(2*n)/silnia(2*n)

    n=n+1

    suma=suma+a

ENDDO

k=suma

IF c=0

  k=1

ENDIF

IF c=1

 k=pi/2

ENDIF

RETURN k

 

********************************************************

 

FUNCTION tan(x)

IF cos(x)<>0

  t=sin(x)/cos(x)

ELSE

 t = 10000000000

ENDIF

RETURN t

 

 

********************************************************

 

FUNCTION atn2(x,y)

LOCAL t

IF x>0 .AND. y=0

  az=0

ENDIF

IF x<0 .AND. y=0

  az=pi

ENDIF

IF x=0 .AND. y>0

  az=pi/2

ENDIF

IF x=0 .AND. y<0

  az=1.5*pi

ENDIF

IF x<>0 .AND. y<>0

   t=y/x

   az=ATN(t)

   IF x<0

     az=az+pi

   ENDIF

   IF x>0 .AND. y<0

    az=az+2*pi

   ENDIF

ENDIF

RETURN az

 

 

 

*******************************************************

FUNCTION SILNIA(n)

 PRIVATE i

 i = 1

 siln=1

 DO WHILE i<= n

  siln = siln * i

  i = i + 1

 ENDDO

RETURN siln

 

 

Opis programu  format.prg

Oto skrypt napisany w języku programowania Clipper.
wykonuje obliczenia związane z funkcjami trygonometrycznymi,
takimi jak tangens, arctangens, sinus, cosinus i inne.
Skrypt jest podzielony na dwie główne części: jedną do obliczeń związanych
z funkcjami trygonometrycznymi,
a drugą do obsługi arctangensa dla podanego zestawu współrzędnych.

Oto krótka prezentacja skryptu:

Obliczenia trygonometryczne:

Skrypt najpierw inicjalizuje stałe i zmienne.

Używa pętli do obliczenia wartości trygonometrycznych
dla kąta podanego przez użytkownika (w radianach).

Następnie wyświetla wartości trygonometryczne (sinus, cosinus, tangens) dla podanego kąta.

Obliczenia arctangensa:

Skrypt zawiera funkcję arctg(t, w), która oblicza arctangens dla podanej wartości t.
 Parametr w określa, czy wynik ma być w radianach (w=0), stopniach (w=1) lub gradach (w=2).

Inna część skryptu używa tej funkcji do obliczenia i wyświetlenia arctangensa,
kąta w radianach, stopniach i gradach dla zestawu współrzędnych (x i y)
wprowadzonych przez użytkownika.

Funkcje dla innych operacji trygonometrycznych:

Skrypt zawiera funkcje dla sinusa, cosinusa, tangensa i arctangensa (atn2).

Są również funkcje obsługujące specjalne przypadki lub warunki brzegowe.

Funkcja Silnia:

Skrypt zawiera funkcję silnia(n), która oblicza silnię dla danej liczby n.

Wejście od użytkownika:

Skrypt używa @ i SAY do wyświetlania komunikatów i odczytuje wejście od użytkownika.