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
- ↑ 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 .
- ↑ 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 .
- ↑ 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 .
- ↑ 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 .
- ↑ 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."
- ↑ 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
- Uwe Schöning : Elméleti számítástechnika - dióhéjban . 4. kiadás. Spectrum Akadémiai Kiadó, 2001, ISBN 3-8274-1099-1 .