LOOP program

LOOP programok vannak programok a programozási nyelv LOOP , erősen korlátozott, a modell-szerű nyelv, amely csak lehetővé teszi a készítmény kiegészítései , érték-hozzárendelések és hurkok, hogy végigmenni egy véges számú alkalommal . A LOOP programok szerepet játszanak az elméleti számítástechnikában , különösen a kiszámíthatóság kapcsán . A függvényt LOOP-kalkulálhatónak nevezzük, ha LOOP programként megfogalmazható. Az összes LOOP program halmazát a jelöli.

jellemzők

Meghatározásuk miatt a LOOP programok minden bemenetnél megszűnnek , ezért meghatározzák a teljes függvényeket . Ez ellentétben áll a GOTO és a WHILE programokkal , amelyekben a program megszüntetése nem garantált.

A LOOP programokkal kiszámítható függvénykészlet a teljes kiszámítható függvény valós részhalmaza (és ezáltal a WHILE vagy a GOTO programok segítségével kiszámítható funkciók részhalmaza is). Az Ackermann függvény egy teljes függvény példája, amely kiszámítható, de nem számítható LOOP-ként .

A LOOP által kiszámítható függvények halmaza megfelel a primitív-rekurzív függvények halmazának .

Formális meghatározás

szintaxis

LOOP programok állnak a szimbólumokat LOOP, DO, END, :=, +, -és ;, valamint tetszőleges számú változók és konstansok. A LOOP programok a következő szintaxissal rendelkeznek módosított Backus-Naur formában :

Itt vannak a változó nevek és konstansok.

szemantika

A forma kifejezése

x0 := x1 + c

a változó megnövelt értékének a változóhoz való hozzárendelését jelenti . A megengedett nulla értékre vonatkozik, majd az érték közvetlen hozzárendelésével megfogalmazható egy változó egy másik változóval ezzel a szintaktikai konstrukcióval:

x0 := x1 + 0

A forma kifejezése

x0 := x1 - c

a változó által csökkentett érték hozzárendelését jelenti . A hozzárendelések végrehajtásakor a negatív értékeket implicit módon nullákkal helyettesítik.

A változók egyszerre jelenhetnek meg a szimbólum bal és jobb oldalán lévő hozzárendelési kifejezésekben :=. A forma kifejezése

x := x + c

például növeli a változó értékét által .

A LOOP programban használt változókat a program indítása előtt előre meghatározott értékekkel rendeljük hozzá.

A forma kifejezése

P1; P2

azt jelenti, hogy egymás utáni végrehajtását a program egységek és ebben a sorrendben. A forma kifejezése

LOOP x DO P END

a programegység többszörös végrehajtását jelenti , amely a feldolgozás kezdetén értéket képvisel . (Még ha változás történik a végrehajtó, végrehajtás van csak elvégezni olyan gyakran, mint volt az elején.) Ha ez az értéke nulla, a program egység a hurkon belül kifejezést nem kerül végrehajtásra egyáltalán. Ez a tény lehetővé teszi az ágak megfogalmazását a LOOP programokban a programegységek feltételes végrehajtásával a változó értékétől függően.

Minta programok

kiegészítés

Az alábbi LOOP program hozzárendeli a változók értékeinek összegét és a változóhoz .

x0 := x1 + 0;
LOOP x2 DO
   x0 := x0 + 1
END

A jelenlegi értékét kezdetben hozzárendelik, majd növeli a .

Ez a program mint a szubrutin használható más LOOP programokban. Az ilyen felhasználásokat az eredeti LOOP szintaxis egyszerű kiterjesztése teszi lehetővé a formában

x0 := x1 + x2

leírták.

Meg kell jegyezni, hogy a LOOP programok nem hívhatnak alprogramokat, de ezek az alprogramok be vannak vonva, és így a fő program részévé válnak. Ellenkező esetben fennáll a körfüggőség és a LOOP programok véges futási idejének elvesztésének lehetősége.

szorzás

A következő ciklus programot növeli a változó értékét a termék értékét a változók értékét és .

LOOP x1 DO
  x0 := x0 + x2
END

A program az első példában definiált szubrutint használja. A végrehajtott szorzást úgy valósítjuk meg, hogy hozzáadjuk a (z) értékét a (z) értékéhez .

A LOOP program hozzáadásával megkapja az egyenértékű programot az eredeti LOOP szintaxisban.

LOOP x1 DO
  x0 := x0 + 0;
  LOOP x2 DO
    x0 := x0 + 1
  END
END

HA AKKOR EGYÉB

A következő LOOP program egy if x 1 > c, majd P1 else P2 utasítást szimulál , ahol x 1 változó, c konstans és P1, P2 bármely LOOP program. Három új változót használunk: x n1 , x n2 , x n3 .

xn1:=x1-c; xn2:=0; xn3:=1;
LOOP xn1 DO
  xn2 := 1
  xn3 := 0
END;
LOOP xn2 DO
  P1
END;
LOOP xn3 DO
  P2
END;

Az alábbi LOOP program egy if x 1 = c, majd P1 else P2 utasítás szimulálását jelenti , ahol x 1 változó, c állandó és P1, P2 bármely LOOP program. Négy új változót használunk: x n1 , x n2 , x n3 , x n4 .

xn1:=x1-(c-1); xn2:=x1-c; xn3:=1; xn4:=1;
LOOP xn1 DO
  LOOP xn2 DO
     xn3:=0;
  END;
  LOOP xn3 DO
     P1;
     xn4:=0;
  END
END;
LOOP xn4 DO
  P2
END

A LOOP programok szimulálása a WHILE program segítségével

Minden LOOP program

LOOP x DO P END

szimulálható a következő WHILE programmal

y := x
WHILE y != 0 DO y := y-1; P END

Lásd még

Egyéni bizonyíték

  1. Uwe Schöning : Elméleti számítástechnika - röviden . 5. kiadás. Spektrum Akademischer Verlag, Heidelberg 2008, ISBN 978-3-8274-1824-1 , p. 93 .
  2. a b Uwe Schöning : Elméleti számítástechnika - röviden . 5. kiadás. Spektrum Akademischer Verlag, Heidelberg 2008, ISBN 978-3-8274-1824-1 , p. 93,94 .
  3. Uwe Schöning : Elméleti számítástechnika - röviden . 5. kiadás. Spektrum Akademischer Verlag, Heidelberg 2008, ISBN 978-3-8274-1824-1 , p. 94.112 .
  4. Uwe Schöning : Elméleti számítástechnika - röviden . 5. kiadás. Spektrum Akademischer Verlag, Heidelberg 2008, ISBN 978-3-8274-1824-1 , p. 105 .
  5. Prof. Dr. Till Tantau: Elméleti informatikai előadási jegyzetek. In: Elméleti Számítástudományi Intézet - Lübecki Egyetem. 2010. február 12., 154–156. Oldal , hozzáférés : 2019. január 23 .: "Az alprogramok nem engedélyezettek."
  6. Uwe Schöning: Elméleti számítástechnika - röviden . 5. kiadás. Spektrum Akademisch Verlag, p. 102 : "A g (...) függvény formálisan meghatározható egy megfelelő helyettesítéssel (...)"

irodalom