7. gyakorlat
Szekvencia
Először az elsőt hatja végre és, ha az terminált, akkor hajtódik végre a második.
Gergó tipp: Húzzuk alá azt, ami után vált a program.
Mi az a szekvencia?
- 2 programot egymás után végzünk el
- Ha az első program végrehajtésa adott állapotból nem véges vagy hibásan terminál, akkor a második nem tudja folytatni a végrehajtást a végpontból
- Az első program által generált végrehajtás egy lehetséges végrehajtása lesz a szekvenciának is
- Csatlakozási pont: Az az állapot egy végrehajtási sorozatban, ahol az egyik progi terminál és a második progi elindul onnan
- Fontos: nem kompozícióról van szó
Szekvencia jelölése
\((S_1; \; S_2)\)
Példa feladat
$(S_1; S_2) = \ { \ 1 \to <1,4,\underline{3},4>, 1 \to <1,2,\underline{4},fail>, 1 \to <1,2,\underline{4},5,1> \ 2 \to <2,2,\ldots>, 2 \to <2,1,4,\underline{6},4,3,2>, \ 3 \to <3,5,\underline{1},3,2>, 3 \to <3,5,\underline{1},2,4> \ 4 \to {4,5,\underline{3},4} \ 5 \to {5, 1, \text{fail}} \ 6 \to <6,3,1,\underline{5}> \ } $
Fontos:
\((S_1; S_2) \neq S_2 \circ S_1\)
\(p(S_1;S_2) \neq p(S_2) \circ p(S_1)\)
Elágazás
\(n\) db program, mindegyikhez egy feltétel (logikai függvény)
\(IF(\pi_1:S_1; \pi_2:S_2)\) - \(\pi_1\) feltételhet köti az \(S_1\) programot és \(\pi_2\) feltételhet köti az \(S_2\) programot
Elágazás példa
\(S_1 = \{1 \to <1,4,3>, 1 \to <1,2,4> \\ 2 \to <2,2,\ldots>, 2 \to <2,1,4,6> \\ 3 \to <3,5,1>, \\ 4 \to <4,5,3>, \\ 5 \to <5,1, fail>, \\ 6 \to <6,3,1,5>\}\)
\(S_2 = \{1 \to <1,3,2>, 1 \to <1,2,4>, \\ 2 \to <2,6>, \\ 3 \to <3,4>, \\ 4 \to <4, fail>, 4 \to <4,5,1>, \\ 5 \to <5>, \\ 6 \to <6,4,3,2>\}\)
Adjuk meg az \(IF(\pi_1:S_1, \pi_2:S_2)\) elágazást, ahol \([\pi_1]= \{1,2,4\}\), \([\pi_2]=\{1,3,4\}\)
Mi a helyzet, ha több, mint egy feltétel teljesül?
Nem lesz determinisztikus az elágazás, több "irány" lehetséges Mi a helyzet, ha egyik feltétel sem teljesül?
\(fail\)
\(\text{IF} (\pi_1: S_1, \; \pi_2: S_2) = \\ \{\)
\(1 \to <1,4,3>, 1 \to <1,3,2>, 1 \to <1,2,4>,\)
\(2 \to <2,2,\ldots>, 2 \to <2,1,4,6>,\)
\(3 \to <3, 4>,\)
\(4 \to <4, 5, 3>, 4 \to <4,fail>, 4 \to <4,5,1>,\)
\(5 \to <5,fail>,\)
\(6 \to <6,fail>\)
\(\}\)
Elágazás random kérdések
(Megjegyzés: A táblázatokat itt vegyük if-else struktogramnak, csak nincs jobb módszer megjeleníteni md-ben (per pillanat))
Ekvivalensek az alábbiak a \(\text{IF}(\pi_1: S_1, \pi_2: S_2)\) elágazással?
| \(\pi_1\) | \(\pi_2\) |
|---|---|
| \(S_1\) | \(S_2\) |
-
\(\text{IF}(\pi_1:S_1, \lnot\pi_1\land\pi_2:S_2, \lnot\pi_1\land\lnot\pi_2:SKIP)\)
\(\pi_1\) \(\lnot \pi_1 \land \pi_2\) \(\neg \pi_1 \land \neg \pi_2\) \(S_1\) \(S_2\) SKIP Nem azonos
-
\(\text{IF}(\pi_1\land\lnot\pi_2:S_1, \lnot\pi_1\land\pi_2:S_2, \pi_1\land\pi_2:S_1\cup S_2, \lnot\pi_1\land\lnot\pi_2:ABORT)\)
\(\pi_1 \land \lnot \pi_2\) \(\lnot\pi_1 \land \pi_2\) \(\pi_1\land\pi_2\) \(\lnot\pi_1\land\lnot\pi_2\) \(S_1\) \(S_2\) SKIP ABORT Azonos
-
\(\text{IF}(\pi_1:S_1, \pi_2:S_2, \pi_1\land\pi_2:S_1\cup S_2)\)
\(\pi_1\) \(\pi_2\) \(\pi_1 \land \pi_2\) \(S_1\) \(S_2\) \(S_1 \cup S_2\) Azonos
Ciklus
Adja meg a \(\text{DO}(\pi_0: S_0)\), ahol \(\pi\) olyan logikai függvény, hogy \([\pi_0] = \{1, 2, 3\}\)
Ciklus feladat
\(S_0 = \{\)
\(1 \to <1,2,3>, 1 \to <1,2,3, \ldots>,\)
\(2 \to <2>, 2 \to <2,4>,\)
\(3 \to <3,4,1>,\)
\(4 \to <4,3,2>\)
\(\}\)
\(\text{DO}(\pi_0:S_0) = \{\)
\(1 \to <1,(2,\underline{3},4,1)^{\infin}\ldots>\}\)
\(1 \to <1,(2,\underline{3},4,1)^*,2,3>\)
\(2 \to <\underline{2}, \underline{2}, \underline{2}, \ldots>\)
\(2 \to <(\underline{2})^*, 4>\)
\(3 \to <3,4,\underline{1},(2,\underline{3},4,\underline{1}^\infin)\ldots>\)
\(3 \to <3,4,\underline{1},(2,\underline{3},4,\underline{1}^*), 2, 3 \ldots>\)
\(4 \to <4>\)
\(\}\)
Új fogalmak
- Szekvencia
- Elágazás
- Ciklus
TODO: Fogalomtár frissítése