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.