10
4.0. Uwagi wst pne 73 4. METODYKA PROGRAMOWANIA [4.0. Uwagi wst pne, 4.1. Organizacja programu, 4.2. Programy obliczeniowe o stałym przecinku, 4.3. Programy obliczeniowe o zmiennym przecinku, 4.4. Metoda programowanego przecinka, 4.5. Organizacja biblioteki podprogramów] 4.0. UWAGI WST PNE Proces przygotowania dowolnego problemu do rozwi zywania na UPMC rozpada si na kilka etapów. 1. Stwierdzenie istnienia rozwi zania problemu,, jego jednoznaczności itp. 2. Wybór metody numerycznej., najkorzystniejszej dla rozwi zania danego problemu przy użyciu UPMC. 3. Skonstruowanie algorytmu realizuj cego metod numeryczn wybran w punkcie 2. 4. Wybór organizacji programu realizuj cego algorytm wybrany w punkcie 3, możliwie najkorzystniejszy ze wzgl du na maszyn ,, któr dysponujemy. 5. Zaprogramowanie i zakodowanie poszczególnych operatorów i predykatów, na które rozbiliśmy program w wyniku przyj tej przez nas organizacji (punkt 4). 6. Oparte na przyj tej przez nas organizacji zestawienie zakodowanego programu w jednolitym systemie adresowania rozkazów programu, analiza wykorzystania po szczególnych miejsc roboczych, rozmieszczenie programu, materiału liczbowego i miejsc roboczych w pami ci maszyny i wreszcie wydziurkowanie na taśmie programu i materiału liczbowego. 7. Sprawdzenie ułożonego programu na maszynie., przez sprawdzenie działania poszczególnych cykli i iteracji, wraz z ewentualnym próbnym wykonaniem obliczeń (np. dla tych wartości., dla których znamy wartości rozwi zania lub potrafimy dość dokładnie określić przedział, w którym powinno znajdować si rozwi zanie). Punkty 1 i 2 nie należ do programowania, obejmujemy je wspóln nazw analizy problemu. Punkt 2 pokrótce omówimy w niniejszym paragrafie. Punkt 3 i 4 omówimy w dalszych paragrafach rozdziału 4. Punkty 5 i 6 omówiliśmy w rozdz. 3. Punkt 7 omó wimy w rozdz. 5. Rozwi zanie zadań na małych maszynach cyfrowych wymaga bardzo starannej matematycznej analizy problemu. Mała pr dkość maszyny (około 100 operacji na sekund ) i mała pojemność pami ci wewn trznej (1024 słowa długie) bardzo ogranicza możliwość stosowania metod numerycznych. Warunki, jakie musi spełniać metoda numeryczna dla małej maszyny cyfrowej, dość pobieżnie i nieprecyzyjnie możemy scharakteryzować w nast puj cych punktach. 1. Metoda winna zapewniać potrzebn dokładność obliczeń. Jak wiadomo, dokład ność rozwi zania zagadnienia zależy od dokładności metody i dokładności obliczeń (dokładność arytmetyczna). 2. Wybrana metoda powinna pozwalać rozwi zać zagadnienie przy możliwie naj mniejszym nakładzie pracy i w możliwie najkrótszym czasie.

4. METODYKA PROGRAMOWANIAbcpw.bg.pw.edu.pl/Content/2186/07mgwdp_metodyka.pdf · ostatni rozkaz operatora sumowania kontrolnego sito-licznik liczący do dwóch, samo-odnawiający się:

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 4. METODYKA PROGRAMOWANIAbcpw.bg.pw.edu.pl/Content/2186/07mgwdp_metodyka.pdf · ostatni rozkaz operatora sumowania kontrolnego sito-licznik liczący do dwóch, samo-odnawiający się:

4.0. Uwagi wstępne 7 3

4. METODYKA PROGRAMOWANIA

[4.0. Uwagi wstępne, 4.1. Organizacja programu, 4.2. Programyobliczeniowe o stałym przecinku, 4.3. Programy obliczenioweo zmiennym przecinku, 4.4. Metoda programowanego przecinka,4.5. Organizacja biblioteki podprogramów]

4.0. UWAGI WSTĘPNE

Proces przygotowania dowolnego problemu do rozwiązywania na UPMC rozpadasię na kilka etapów.

1. Stwierdzenie istnienia rozwiązania problemu,, jego jednoznaczności itp.2. Wybór metody numerycznej., najkorzystniejszej dla rozwiązania danego problemu

przy użyciu UPMC.3. Skonstruowanie algorytmu realizującego metodę numeryczną wybraną w punkcie 2.4. Wybór organizacji programu realizującego algorytm wybrany w punkcie 3,

możliwie najkorzystniejszy ze względu na maszynę,, którą dysponujemy.5. Zaprogramowanie i zakodowanie poszczególnych operatorów i predykatów,

na które rozbiliśmy program w wyniku przyjętej przez nas organizacji (punkt 4).6. Oparte na przyjętej przez nas organizacji zestawienie zakodowanego programu

w jednolitym systemie adresowania rozkazów programu, analiza wykorzystania po-szczególnych miejsc roboczych, rozmieszczenie programu, materiału liczbowegoi miejsc roboczych w pamięci maszyny i wreszcie wydziurkowanie na taśmie programui materiału liczbowego.

7. Sprawdzenie ułożonego programu na maszynie., przez sprawdzenie działaniaposzczególnych cykli i iteracji, wraz z ewentualnym próbnym wykonaniem obliczeń(np. dla tych wartości., dla których znamy wartości rozwiązania lub potrafimy dośćdokładnie określić przedział, w którym powinno znajdować się rozwiązanie).

Punkty 1 i 2 nie należą do programowania, obejmujemy je wspólną nazwą analizyproblemu. Punkt 2 pokrótce omówimy w niniejszym paragrafie. Punkt 3 i 4 omówimyw dalszych paragrafach rozdziału 4. Punkty 5 i 6 omówiliśmy w rozdz. 3. Punkt 7 omó-wimy w rozdz. 5.

Rozwiązanie zadań na małych maszynach cyfrowych wymaga bardzo starannejmatematycznej analizy problemu. Mała prędkość maszyny (około 100 operacji nasekundę) i mała pojemność pamięci wewnętrznej (1024 słowa długie) bardzo ograniczamożliwość stosowania metod numerycznych.

Warunki, jakie musi spełniać metoda numeryczna dla małej maszyny cyfrowej,dość pobieżnie i nieprecyzyjnie możemy scharakteryzować w następujących punktach.

1. Metoda winna zapewniać potrzebną dokładność obliczeń. Jak wiadomo, dokład-ność rozwiązania zagadnienia zależy od dokładności metody i dokładności obliczeń(dokładność arytmetyczna).

2. Wybrana metoda powinna pozwalać rozwiązać zagadnienie przy możliwie naj-mniejszym nakładzie pracy i w możliwie najkrótszym czasie.

Page 2: 4. METODYKA PROGRAMOWANIAbcpw.bg.pw.edu.pl/Content/2186/07mgwdp_metodyka.pdf · ostatni rozkaz operatora sumowania kontrolnego sito-licznik liczący do dwóch, samo-odnawiający się:

74 4. Metodyka programowania

3. Współczynnik związania algorytmu nie może być wysoki. Przez współczynnikzwiązania algorytmu rozumiemy ilość danych pośrednich (zapamiętywanych przezmaszynę) koniecznych dla przejścia od jednego etapu obliczeń do drugiego. Na przy-kład przy metodzie Runeggo-Kutta rozwiązywanie równania różniczkowegoy = f{xiy),z warunkami początkowymi x = x0, y = y0, współczynnik związania algorytmu równasię 2j przy stosowaniu zaś metody Adamsa dla tego samego równania współczynnikalgorytmu wynosi 6.

4. Metoda musi sprowadzać rozwiązanie do elementarnych operacji (bezpośredniolub przez podprograrńy),

5. Metoda powinna być optymalna ze względu na czas liczenia przy ustalonej po-jemności pamięci.

6. Metoda powinna zabezpieczyć prosty wybór przedziału zmienności wynikówpośrednich i ostatecznych.

7. Metoda powinna dawać łatwość automatycznego wyboru przedziału w czasierozwiązywania zagadnienia.

Dla pełniejszego omówienia punktu 1 należy zwrócić uwagę na pewną klasyfikacjęmetod numerycznych. Przy założeniu, że opieramy się w naszych rozważaniach nateorii błędu maksymalnego (Bibliografia [12]), musimy wyróżnić dwie klasy metodnumerycznych, a mianowicie:

1. Klasa metod., w których istnieje taka ilość kroków (na które dzielimy przedziałyi w których rozwiązujemy nasze zadania), przy której licząc ze stałą dokładnością mamynajmniejszy błąd maksymalny wyniku. Postaramy się zilustrować to zjawisko na wy-kresie. Sporządźmy wykres, na którym na osi poziomej będziemy odkładali ilość kro-ków n, na osi pionowej zaś będziemy odkładali błąd maksymalny (rys. 4-la). Prosta

a)

IIIIII

"o "-'opl n

Rys. 4-1. Zależność błędu maksymalnego wyniku od liczby kroków

a) przy wzrastającym maksymalnym błędzie rachunkowym, b) przy stałym maksymalnym błędzie rachunkowym

// na rys. 4-la pokazuje, że maksymalny błąd arytmetyczny, przy liczeniu na słowacho ustalonej długości, jest w przybliżeniu proporcjonalny do ilości operacji, czyli doilości kroków. Krzywa / na rys. 4-la pokazuje, że błąd metody dąży asymptotycznie dozera wraz ze wzrostem ilości-kroków. Krzywa III na rys. 4-la jest wynikiem nakładaniasię maksymalnego błędu arytmetycznego i maksymalnego błędu metody.

Page 3: 4. METODYKA PROGRAMOWANIAbcpw.bg.pw.edu.pl/Content/2186/07mgwdp_metodyka.pdf · ostatni rozkaz operatora sumowania kontrolnego sito-licznik liczący do dwóch, samo-odnawiający się:

4.0. Uwagi wstępne 75

Do powyższej klasy należą np. metody rozwiązywania równań różniczkowych zwy-czajnych (z warunkami początkowymi) Eulera., Adamsa, Rungego-Kutty, metodynumerycznych kwadratur jak metoda Simpsona i inne.

2. Klasa metod iteracyjnych, w których wraz ze zwiększeniem ilości kroków,, liczącze stałą dokładnością; błąd maksymalny rozwiązania (o ile postępowanie jest zbieżne)dąży do pewnej wartości asymptotycznej. Zilustrujemy to zjawisko na wykresie. Spo-rządźmy wykres., na którym na osi poziomej będziemy odkładali ilość kroków n (krot-ność iteracji), na osi pionowej zaś będziemy odkładali błąd maksymalny (rys. 4-lb).Prosta // na rys. 4-lb pokazujej że przy stosowaniu formuły iteracyjnej maksymalnybłąd arytmetyczny jest stały. Krzywa / na rys. 4-lb pokazujej że błąd metody asympto-tycznie dąży do zera wraz ze wzrostem ilości iteracji n. Krzywa /// na rys. 4-lb jestwynikiem nakładania się maksymalnego błędu arytmetycznego i maksymalnego błędumetody.

Do powyższej klasy metod iteracyjnych należy np. metoda Gaussa-Seidla rozwią-zywania układów równań algebraicznych liniowych.

Po dokonaniu wyboru metody numerycznej musimy oszacować potrzebną namdokładność wyników pośrednich i w zależności od tego podjąć decyzję, jaką arytmetykębędziemy stosowali w naszym programie (przecinek stały czy zmienny lub przecinekprogramowy). Czasami może się zdarzyć, że dokładność uzyskiwana dla każdej z wy-mienionych arytmetyk jest za małaj wówczas możemy stosować arytmetykę podwójną(rzadkie przypadki).

Musimy pamiętać o tym., że główne trudności obliczeniowe na maszynach cyfrowychnie są związane z programowaniem., ale z doborem odpowiedniej metody numerycznej.

4.1. ORGANIZACJA PROGRAMU

4.1.0. Zanim przejdziemy do omówienia organizacji programu, wprowadźmy kilkapomocniczych pojęć.

Definicja 1. Przez podprogram będziemy rozumieli zespół operatorów i predyka-tów., przeznaczony do wykonania zamkniętego fragmentu obliczeń (gdzie przez zamk-nięty fragment obliczeń rozumiemy fragment obliczeń wykonywanych według ustalo-nego lub nastawionego uprzednio algorytmu).

Definicja 2. Przez podprogram zamknięty będziemy rozumieli taki i tylko takipodprogranij który wywołujemy rozkazami programu głównego z zostawieniemw odpowiednim ustalonym miejscu „śladu"., który umożliwia z kolei powrót do pro-gramu głównego.

Definicja 3. Prz;z podprogram otwarty będziemy rozumieli taki i tylko taki pod-program., którego operatory i predykaty umieszczamy bezpośrednio w sekwencji ope-ratorów i predykatów programu głównego.

4.1.1. Kontrola wyników pośrednich. W wielu programach dla zapewnieniapoprawności wyników musimy kontrolować poszczególne etapy obliczeń. Jedynąuniwersalną metodą kontroli,, stosowaną obecnie., jest metoda sum kontrolnych. Przy-

Page 4: 4. METODYKA PROGRAMOWANIAbcpw.bg.pw.edu.pl/Content/2186/07mgwdp_metodyka.pdf · ostatni rozkaz operatora sumowania kontrolnego sito-licznik liczący do dwóch, samo-odnawiający się:

76 4. Metodyka programowania

kładowo metodę sumowań kontrolnych możemy zrealizować następująco: przypuśćmy,że chcemy zastosować metodę sumowań kontrolnych dla sprawdzenia prawidłowościpracy pewnego operatora arytmetycznego A, wówczas umieszczamy za operatoremarytmetycznym A operator sumowania kontrolnego., który wszystkie wyniki obliczeń

operator 1arytmetyczny

A

noperator

sumowaniakontrolnegowynik —*• I

i

k = 2 3

0

operator 4przesyłania

i

1 1

(/)=(//) 5

0 i

Rys. 4-2. Schemat blokowy metody sum kontrolnych

wykonywanych przez operator A i ewentualnie zmienne rozkazy operatora A kolejnosumuje ze sobą (odrzucając części całkowitej inaczej mówiąc,, gubiąc wszystkie nad-miary)^ a następnie otrzymaną w ten sposób liczbę umieszcza pod pierwszym adresemroboczym sumowania kontrolnego. Za operatorem sumowania kontrolnego umieszczamypredykat zwany sitem [licznik samoodnawiający się., liczący do dwóch — wzór (3-13)].Po pierwszym wykonaniu operatora sumowania kontrolnego sito przekazuje sterowanieoperatorowi przesyłania zawartości pierwszego miejsca roboczego do drugiego miejscaroboczego sumowania kontrolnego^ operator ten przekazuje z kolei sterowanie opera-torowi A. Po drugim wykonaniu operatora sumowania kontrolnego sito przekazujesterowanie predykatowi porównania sum kontrolnych zapisanych pod pierwszym i dru-gim adresem roboczym sumowania kontrolnego. W przypadku gdy obie sumy kontrolne

Page 5: 4. METODYKA PROGRAMOWANIAbcpw.bg.pw.edu.pl/Content/2186/07mgwdp_metodyka.pdf · ostatni rozkaz operatora sumowania kontrolnego sito-licznik liczący do dwóch, samo-odnawiający się:

4.1. Organizacja programu 77

są zgodne, predykat porównania sum kontrolnych, przekaże sterowanie kolejnemuoperatorowi programu., w przypadku zaś., gdy obie sumy kontrolne nie są identyczne^powoduje zatrzymanie maszyny. Na rysunku 4-2 pokazany jest schemat blokowymetody sum kontrolnych.

W tablicy 4-1 podajemy kolejne rozkazy tej części schematu blokowego z rys. 4-2jktóra została otoczona przerywaną linią.

Tablica 4-1

Operatorlub predykat

2

3

4

Kolejnyadres

s + 0000

1

3

4

5

61 7

Kolejny rozkaz

14 6+4000

13 6-| 0004

11 < p >

14 6 + 0004

06 s + 0010

12 6 + 4000

14 6+4002

02 < wejście operatora A >

Objaśnienia

ostatni rozkaz operatora sumowaniakontrolnego

sito-licznik liczący do dwóch, samo-odnawiający się: początkowa zawar-tość adresu 6 + 0004—zero /3 — do-wolna liczba krótka liczba dodatnia

operator przesłania zawartości pierw-szego adresu roboczego operatorasumowania kontrolnego pod drugiadres roboczy

Sumowanie kontrolne można przeprowadzić korzystając zamiast z predykatu typu„sita" z metody dwukrotnego wywołania operatora A. Podana przykładowo organizacjasumowania kontrolnego daje się łatwo stosować na wszystkich UPMC.

Jak widać z powyższego rozważania., metoda sumowania kontrolnego pochłania dużoczasu i zajmuje dużo miejsca w pamięci maszyny. Dlatego też staramy się rozwiązać kon-trolę na innej drodze. Rozwiązanie takie dopasowujemy indywidualnie do rozwiązywane-go zagadnienia. Na przykład jeśli rozwiązujemy układ równań różniczkowych zwyczaj-nych z warunkami początkowymi, to dołączamy do tego układu jeszcze jedno równanie,,mianowicie równanie na długość wektora wodzącego funkcji rozwiązujących zadanyukład (oczywiście,, nie zawsze takie postępowanie jest możliwe). Po wykonaniu każdegokroku obliczeń, obliczamy pierwiastek z sum kwadratów rozwiązań poszczególnychrównań i porównujemy otrzymaną wielkość z rozwiązaniem równania na wektor wodzący.Jeśli liczby te nie różnią się o więcej niż z góry zadaną liczbę £>0_, to prowadzimy obli-czenia dalej, jeśli zaś różnica między nimi nie jest większa lub równa z góry zadanemue>0, to program spowoduje zatrzymanie maszyny. Przykładów takich metod możnapodać wiele, programista mający wprawę bez większej trudności potrafi zbudować tegotypu metody kontrolne.

4.1.2. Manipulacje ręczne. Czasami zamiast zatrzymywać maszynę., wygodniejjest stosować tzw. podprogram dzwonka. To znaczy po zakończeniu pewnego etapuobliczeń lub w przypadku powstania błędu w obliczeniach zamiast zatrzymania maszynywywołujemy pewien podprogram, który powoduje uruchomienie dzwonka dalekopisu

Page 6: 4. METODYKA PROGRAMOWANIAbcpw.bg.pw.edu.pl/Content/2186/07mgwdp_metodyka.pdf · ostatni rozkaz operatora sumowania kontrolnego sito-licznik liczący do dwóch, samo-odnawiający się:

78 4. Metodyka programowania

sygnalizującego obsłudze maszyny że musi ona wykonywać pewne dodatkowe czynności.Dzwonek dalekopisu będzie dzwonił tak długo., dopóki obsługujący maszynę nie przed-stawi odpowiedniego przełącznika na pulpicie sterowania, co spowoduje przerwaniepętli podprogramu i zatrzymanie maszyny. W tablicy 4-2 omawiamy pokrótce budowęi działanie takiego podprogramu.

Tablica 4-2

Kolejnyadres

k + 000012345

6

7k + 0010

Kolejny rozkaz

miejsce na ślad12 <16 0000>25 000013 <02 0000>25 000006 A+ 0000

05 £ + 0010

01 £ + 000002 < program druk. liczników >

Objaśnienia

nastawienie dalekopisu na drukowanie cyfr (ponie-waż dzwonek znajduje się w grupie cyfr)

przesłanie kodu dzwonkapętla dzwonka po włączeniu warunku Y na którąśz pierwszych czterech pozycji, pętla zostaje przer-wana

„stop" z pobraniem po uruchomieniu do wyko-nania I taktu pracy maszyna wykona rozkaz£ + 0007 i poprzez ślad powróci do podprogramugłównego, po uruchomieniu do wykonania IItaktu pracy maszyna wykona rozkaz & + 0010,a następnie przejdzie do drukowania zawartościlicznika cykli

Podprogram podany w tabl. 4-2 możemy skrócić o dwa rozkazy, przyjmując nastę-pującą konwencję: stanem normalnym dalekopisu jest nastawienie go na drukowaniecyfr i znaków., po każdorazowym drukowaniu liter sprowadzamy dalekopis do stanunormalnego.

4.1.3. Drukowanie zawartości liczników cykli i licznika rozkazów. W przypadkuzatrzymania się maszyny na skutek przekroczenia zakresu czy też na skutek błędu w obli-czeniach,, obsługujący maszynę musi mieć możliwość zorientowania się, w którym miej-scu realizacji programu maszyna zatrzymała się., co było przyczyną tego zatrzymania.Stan wykonania programu charakteryzuje zawartość wszystkich liczników cykli, jakieznajdują się w programie. Dlatego też do programu dołączamy podprogram drukującyzawartość liczników cykli. Gdy maszyna zostaje ponownie uruchomiona., po zatrzymaniu,zostaje wywołany podprogram drukowania zawartości liczników cykli.

Po skonstruowaniu algorytmu realizującego wybraną metodę numeryczną, rozbijamyten algorytm na poszczególne kroki obliczeniowe — operatory i predykaty; otrzymanyw ten sposób schemat obliczeń uzupełniony operatorami i predykatami typowymi dlaobliczeń automatycznych i rysujemy schemat blokowy .programu. Otrzymany w tensposób schemat blokowy przekształcamy do możliwie najprostszej postaci. Należyzwrócić tu uwagę na fakt nieistnienia jakiejś ogólnej i łatwej do formalizacji metodyuproszczenia schematu blokowego. Pewne wyniki w uproszczeniu algorytmów zostałyuzyskane przez Janowa, wyniki te zostały szczegółowo omówione w książce Kitowai Krynickiego (Bibliografia [9]). Jednakże wyniki te nie dają jeszcze praktycznie opła-

Page 7: 4. METODYKA PROGRAMOWANIAbcpw.bg.pw.edu.pl/Content/2186/07mgwdp_metodyka.pdf · ostatni rozkaz operatora sumowania kontrolnego sito-licznik liczący do dwóch, samo-odnawiający się:

4.1. Organizacja programu

O—l0 = > i

oraz P ; „

calnych metod uproszczenia schematów blokowych i właściwie sprawę tę należy nadaluważać za otwartą.

4.1.4. Przykład programu. Niech będzie dany układ » + l liczb stałoprzecinko-wych 17 B umieszczonych pod kolejnymi adresami a-h-aĄ-n. Przypuśćmy* że dla pew-nego celu musimy uporządkować te liczbyw kolejności od większej do mniejszej. Jakoalgorytm postępowania wybierzemy algorytm,który porównuje dwie sąsiednie liczby z'-tąoraz (iĄ- l)-szą, gdzie i = 0,1,..., n— 1; w przy-padku gdy z-ta liczba jest mniejsza od liczby(z+ l)-szej zamieniamy je miejscami, w przy-padku zaś gdy z-ta liczba jest większa bądźrówna liczbie (z+l)-szej, pozostawiamy obieliczby na swoich miejscach, po czym zastępu-jemy i przez i+1, z+1 przez i+2 i postępu-jemy jak wyżej. Porządkowanie zakończymywówczas, gdy w wyniku porównania wszy-stkich kolejnych par, w naszym ciągu n-\-lliczb, nie dokonamy żadnego przestawienia.Na rysunku 4-3 pokazany jest schemat blo-kowy takiego programu.

Kodowanie zaczniemy od predykatu nr 2;w tablicy 4-3 podajemy zakodowane operatoryi predykaty nr 2, 3, 4.

Porównując z sobą operatory nr 1 i 5możemy wydzielić z nich wspólną część,przeadresowującą, którą nazwiemy operatoremP. Zakładając, że w akumulatorze znajduje

się I2<po> w przypadku operatora nr 1 albo\2<pi+l > w przypadku operatora nr 5 przyjmie-my, że operator P ma postać podaną w tabl. 4-4.

Korzystając z operatora P możemy zako-dować operator nr 1 za pomocą czterechrozkazów (tabl. 4-5).

Operator nr 5 będzie się składał z dwóchrozkazów. Możemy obecnie zakodować operatornr 5, predykat nr 6 i predykat nr 7 (tabl. 4-6).

Możemy wypisać wszystkie rozkazy progra-mu głównego, a następnie umieścić pro-gram główny, podprogram i parametry w pa-mięci maszyny. Kolejne rozkazy programu głównego podajemy w tabl. 4-7.

W naszym programie korzystamy z następujących parametrów (w kodzie rozkazo-wym):

(+1=> it+2=> i

Rys. 4-3. Schemat blokowy pierwszej me-tody porządkowania liczb

Page 8: 4. METODYKA PROGRAMOWANIAbcpw.bg.pw.edu.pl/Content/2186/07mgwdp_metodyka.pdf · ostatni rozkaz operatora sumowania kontrolnego sito-licznik liczący do dwóch, samo-odnawiający się:

80 4. Metodyka programowania

1)2)3)4)5)

0201000011

0000,0000;0000,0001A + i •

< + 2 " I O > J

Należy podkreślić, że przedstawiona powyżej metoda postępowania przy porządko-waniu liczb nie ma znaczenia praktycznego. W praktyce wygodniejszą metodą jest me-

T a b l i c a 4-3

Operator lubpredykat

2

3

4

Kolejny adres

f+00001234567

.s+001012

Kolejny rozkaz

12 <pf>11 <2H.i>06 r+000012 <pi>14 A+ 000012 < £ ; + i >14 <£,•>12 * + 000014 <Pi+i>12 < 2 - 1 6 >14 i + 0001

Objaśnienia

i} skok przy p; > pt+1

1i+0000 adres roboczy£;—» 6 + 0000

Pi+l = > *f.(6+0000) = > A - + l

6 + 0001 wskaźnikprzestawienia

T a b l i c a 4-4

Operatorlub predykat

P

Kolejny adres

£ + 00001234567

£ + 0010123

Kolejny rozkaz

77 777714 s+000014 j + 000310 < 02 0000 >14 <r+000610 < 2 - i C >14 s+001011 < 02 0000 >14 i+000511 <010000>14 s+000101 jp + OOOO

Objaśnienia

miejsce na ślad

sformowanie rozkazu 14

powrót poprzez ślad do pro-gramu głównego

toda wyszukiwania maksymalnej z n+l liczb i przesyłanie jej na miejsce pierwszej liczby,pierwszą liczbę zaś przesyłamy na miejsce maksymalnej, po czym powtarzamy proceswyszukując maksymalną liczbę spośród ra-liczb (pierwszej liczby nie będziemy brali pod

Page 9: 4. METODYKA PROGRAMOWANIAbcpw.bg.pw.edu.pl/Content/2186/07mgwdp_metodyka.pdf · ostatni rozkaz operatora sumowania kontrolnego sito-licznik liczący do dwóch, samo-odnawiający się:

4.1 Organizacja programu 81

Tablica 4-5

OperatorItib predykat

1

Kolejny adres

As+OOOO123

Kolejny rozkaz

12 <zero>14 6+000112 < 1 2 < £ 0 > >04 p + 0000

Objaśnienia

wyzerowanie wskaźnika przestawień

wywołanie podprogramu przeadresowania

Tablica 4-6

Operatorlub predykat

5

6

7

Kolejny adres

r+0000I2345

Kolejny rozkaz

12 H-000504 £+000011 <U<prm»03 s+000012 6 + 000103 £ + 0000

Objaśnienia

1 wywołanie podprogramu przeadresowania

[• sprawdzenie warunku i skok przy i + l > n1 sprawdzenie zawartości wskaźnikaj przestawień

Tablica 4-7

Operatorlub predykat

1

.

2

3

4

5

Kolejny adrea

£+00001234

3

67

£+00101234567

£+00201234

Kolejny rozkaz

12 <zero>14 6 + 000112 <12 <p0 > >04 p + 000012 <Pi>

06 fe+001712 <p;>14 6 + 0000

14 <Pi>12 6 + 000014 <ipj+±>12 <2- 1 0 >14 6 + 000112 £+001104 p + 000011 <U<pn+i>>03 &+00O412 6+000103 /e+0000

Objaśnienia

wyzerowanie licznika Z

wywołanie podprogramu P

sprawdzenie warunku pi—pj+i<0

przesłanie „jedynki" do licznika 1

wywołanie podprogramu P

sprawdzeniej czy nie porównywaliśmyjuż ostatniej parysprawdzenie zawartości licznika i

C Wstąp do programowania

Page 10: 4. METODYKA PROGRAMOWANIAbcpw.bg.pw.edu.pl/Content/2186/07mgwdp_metodyka.pdf · ostatni rozkaz operatora sumowania kontrolnego sito-licznik liczący do dwóch, samo-odnawiający się:

82 4. Metodyka programowania

uwagę) itd. aż zostanie nam tylko jednaliczba, wówczas kończymy nasz proces. Narysunku 4-4 podany jest schemat blokowyprogramu realizującego powyższy algorytmpostępowania.

4.2. PROGRAMY OBLICZENIOWE O STA-ŁYM PRZECINKU

4.2.0, Omawiana przez nas UPMC, jakwiemy, wykonuje operacje arytmetycznena liczbach z przedziału < — 1 , 1 —2~3 3>,jednak w większości problemów fizycznychi technicznych argumenty wartości funkcjiprzebiegają znacznie szersze przedziały., jeśliwięc chcemy korzystać bezpośrednio z dzia-łań arytmetycznych maszyny, musimy wpro-wadzić nowe zmienne przebiegające prze-dział < —lj 1—2"33>. Oczywiście., nie wy-starczy tylko sprowadzanie danych począt-kowych do wyżej wymienionego przedziału,musimy ponadto zapewnić sobie mieszcze-nie się w tym przedziale wszystkich wynikówpośrednich. Taką metodę prowadzenia o-bliczeń będziemy nazywali metodą stałegoprzecinka.

W czasie analizy problemu, w przypad-ku programowania ze stałym przecinkiem,wyróżniamy następujące etapy:

1) analiza równań i formuł zadania., w ce-lu określenia granic przedziałów., zmiennościargumentów i wartości funkq'i,

2) wybór mnożników dla każdej z wiel-kości zmiennych, zapewniających mieszcze-nie się w przedziale < — 1, 1—2~33> ilo-czynu mnożnika i danej wielkości zmiennej,

3) wprowadzenie nowych zmiennych,przebiegających już przedział < — 1, 1—2"33>.

Należy w tym miejscu bardzo mocno podkreślić trudności związane z określeniemgranic przedziałów zmienności argumentów i wartości funkcji, nie istnieje bowiem żadnauniwersalna metoda dokładnego określenia przedziałów zmienności. W praktyce ogra-

Rys. 4-4. Schemat blokowy drugiej metodyporządkowania liczb

Linią przerywaną ujęto szukanie maksymalnej liczby w ciąguAT-HJ gdzie k = 0, 1, ..., n — 1 oraz » = A, h + 1 ...,

n, przy czym k =C P < "•