Maszyna Pawlaka – teoretyczny automat wykonujący obliczenia podane liniowo zaprojektowany przez Zdzisława Pawlaka.

Maszyna Pawlaka; F - taśma, A i S - głowica, D - dane, W - wyniki cząstkowe

Budowa automatu

edytuj

Automat posiada głowicę (A i S) przesuwającą się po taśmie F, która to taśma zawiera informacje o danych (czy dana jest podana na wejściu, czy też jest wynikiem cząstkowym). Poza tym składa się na pamięć danych (D) oraz pamięć wyników cząstkowych (W).

Opis języka

edytuj

Język uproszczony

edytuj

Język uproszczony symbolizuje jakie działania mają zostać przez automat kolejno wykonane, bez konieczności wpisywania poszczególnych danych. Δ oznacza daną początkową. * symbolizuje wynik cząstkowy, otrzymany z wcześniejszych obliczeń. +,-,•,/ reprezentują działania, które mają być wykonane przez automat.

Kolejność obliczeń

edytuj

Zdzisław Pawlak obliczenia przedstawił w formie drzewa, którego węzły reprezentują działania, zaś gałęzie dane i wyniki cząstkowe. Proponowane są dwa porządki przejścia przez drzewo, które nazwane zostały W i P.

porządek W (wzdłużny)

edytuj

Działania wykonujemy poruszając się wzdłuż gałęzi. Rozpoczynamy od najniższej gałęzi po prawej stronie drzewa i wykonujemy obliczenia. Następnie przesuwamy się w górę drzewa. Jeżeli nie możemy wykonać obliczeń, ponieważ brakuje nam danych, przesuwamy się do dołu gałęzi z lewej strony. Wykonujemy obliczenia aż do uzyskania wyniku końcowego.

porządek P (poprzeczny)

edytuj

Działania wykonujemy poruszając się poziomami drzewa, zaczynając od najniższego. W wypadku wystąpienia na jednym poziomie drzewa większej ilości zadań rozpoczynamy od lewej strony drzewa. Następnie przechodzimy do poziomu wyższego aż osiągniemy wynik końcowy.

Działanie maszyny

edytuj
 
Przykład obliczeń maszyny Pawlaka zapisanych w formie drzewa.

Schemat maszyny jest niezmienny zależnie od porządku obliczeń, jednakże sposób umieszczania i wykorzystywania wyników cząstkowych jest różny.

Działanie dla porządku P

edytuj

Na początku analizowany jest symbol wykonywanego działania oraz symbole obu argumentów. Kolejne argumenty są pobierane z pamięci danych D lub pamięci wyników częściowych W, w zależności jakim symbolem jest oznaczony argument. Następnie przeprowadzane jest działanie, a wynik zapisywany jest na końcu pamięci wyników częściowych W. Ostatnim uzyskanym wynikiem jest wynik końcowy.

Działanie dla porządku W

edytuj

Działanie dla porządku W różni się od porządku P jedynie innym sposobem pobierania i zapisywania wyników częściowych. Jeżeli oba argumenty są danymi początkowymi to pobierane są kolejne dane z pamięci danych D, a wynik działania zapisywany jest na pierwszym wolnym miejscu w pamięci wyników częściowych W. Jeżeli jednym argumentem jest dana początkowa, a drugim wynik częściowy, to dana jest pobierana z kolejnego miejsca pamięci danych D, a drugim argumentem jest ostatnio zapisany wynik częściowy. Liczba odczytana z pamięci wyników częściowych jest po odczytaniu zawsze usuwana, więc wynik działania jest zapisywany na miejscu uprzednio odczytanego argumentu. Jeżeli oba argumenty są pobierane z pamięci wyników częściowych W, to pobierane są ostatnie dwie liczby, a wynik zapisywany jest na miejscu przedostatniej.

Przykłady działania

edytuj

Przykład dla porządku P

edytuj

10 – 3 = 7

2 • 3 = 6

7 + 7 = 14

1 • 2 = 2

9 – 6 = 3

4 • 8 = 32

14 / 2 = 7

3 + 32 = 35

7 + 35 = 42

Zakładając, że symbol operacji zapiszemy po odpowiadających mu argumentach, obliczenia można zapisać za pomocą liniowego przedstawienia: 10,3,-,2,3,•,7,7,+,1,2,•,9,6,-,4,8,•,14,2/,3,32,+,7,35,+,42 Co w języku uproszczonym ma postać: ΔΔ-ΔΔ•*Δ+ΔΔ•Δ*-ΔΔ•**/**+**+*

Przykład dla porządku W

edytuj

4 • 8 = 32

2 • 3 = 6

9 – 6 = 3

3 + 32 = 35

1 •2 = 2

10 – 3 = 7

7 + 7 = 14

14 / 2 = 7

7 + 35 = 42

Zakładając, że symbol operacji zapiszemy po odpowiadających mu argumentach, obliczenia można zapisać za pomocą liniowego przedstawienia: 4,8,•,2,3,•,9,6,-,3,32,+,1,2,•,10,3,-,7,7,+,14,2,/,7,35,+,42 Co w języku uproszczonym ma postać: ΔΔ•ΔΔ•Δ*-**+ΔΔ•ΔΔ-*Δ+**/**+*

Bibliografia

edytuj

Linki zewnętrzne

edytuj