16.06.2015 Views

ForthLogic inst prog H P.1.2 120113.pdf - F&F

ForthLogic inst prog H P.1.2 120113.pdf - F&F

ForthLogic inst prog H P.1.2 120113.pdf - F&F

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Instrukcja <strong>prog</strong>ramowania w języku <strong>ForthLogic</strong> wersja <strong>P.1.2</strong><br />

FLOG A ‐‐‐> logarytm dziesiętny A log10(A)<br />

FLN A ‐‐‐> logarytm naturalny A ln(A)<br />

FEXP A ‐‐‐> eksponent A<br />

F** A,B ‐‐‐> potęgowanie A do B<br />

FSQRT A ‐‐‐> pierwiastek kwadratowy z A<br />

Wykorzystanie stosu do przechowania elementów przejściowych w sposób naturalny prowadzi do tak zwanej „odwrotnej<br />

notacji polskiej” (Reverse Polish Notation [RPN]) – jednego ze sposobów beznawiasowych obliczeń wyrażeń<br />

arytmetycznych, opracowanego przez polskiego logika Jana Łukasiewicza (1878‐1956). Pozwala to na przeprowadzanie<br />

bieżącej operacji bezpośrednio na wyniku wcześniejszej operacji, który to wynik nie wymaga adresu i odwołania do niego,<br />

ponieważ zostaje pozostawiony i jest od razu zdjęty (wykorzystany) przez następującą po nim operację (idea stosu).<br />

Sposób ten wymaga ustawienie znaku operacji po operandach. Na przykład, wyraz (A/B+C)*(D*E‐F*(G‐H)) zapisuje się w<br />

taki sposób: A B / C + D E * F G H ‐ * ‐ *. Tak, więc forth‐system można wykorzystać jako kalkulator. Aby obliczyć wartość<br />

(25 + 18+32)*5, wystarczy wprowadzić taki tekst:<br />

> 25 18 + 32 + 5 * .<br />

375 (OK)<br />

><br />

Wynikiem jest liczba 375.<br />

Dla liczb zmiennoprzecinkowych podobnie. Aby obliczyć wartość 1.2e‐2*sin(25.23+0.18*3.1415), wprowadzamy tekst:<br />

> 1.2e‐2 25.23 0.18 3.1415 F* F+ FSIN F* F.<br />

0.007383 (OK)<br />

><br />

Wynikiem jest liczba 0,007383.<br />

4.3 DEFINIOWANIE NOWYCH SŁÓW<br />

Podstawową właściwością języka FortLogic jest możliwość definiowania nowych słów, co umożliwia poszerzenie zestawu<br />

poleceń w wymaganym przez użytkownika kierunku. Definiowanie słowa zaczyna się słowem „:” (dwukropek) i kończy się<br />

słowem „;” (średnik). Po dwukropku umieszcza się nazwę nowego słowa, a za nim kolejne słowa, przez które jest ono<br />

definiowane. Na przykład, tekst<br />

> : S2 DUP * SWAP DUP * + ;<br />

(OK)<br />

><br />

definiuje słowo S2, które oblicza sumę kwadratów dwóch liczb:<br />

S2 A,B ‐‐‐> A*A+B*B<br />

Po wprowadzeniu tego opisu słowo S2 zostaje włączone do słownika forth‐systemu i można je wykonywać. Przy<br />

definiowaniu nowych słów zaleca się uważnie prześledzić wszystkie zmiany na stosie.<br />

Prześledźmy podane wyżej określenia słowa S2, podając w nawiasach stan wierzchołka stosu po wykonaniu każdego<br />

wiersza:<br />

> : S2 DUP * SWAP DUP * + ;<br />

: S2 ( A,B ‐‐‐> A*A+B*B ‐ suma kwadratów )<br />

DUP ( A,B,B )<br />

* ( A,B*B )<br />

SWAP ( B*B,A )<br />

‐ 15 ‐

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!