84 lines
2.4 KiB
Markdown
84 lines
2.4 KiB
Markdown
|
Příklad z minulého cvičení
|
||
|
|
||
|
| | 0 | 1 |
|
||
|
| ----- | --- | --- |
|
||
|
| <-> A | B | A |
|
||
|
| <-- B | C | A |
|
||
|
| <-- C | C | D |
|
||
|
| D | D | D |
|
||
|
|
||
|
| | 0 | 1 |
|
||
|
| ----- | --- | --- |
|
||
|
| --> 0 | 0 | 1 |
|
||
|
| 1 | 0 | 2 |
|
||
|
| 2 | 3 | 2 |
|
||
|
| 3 | 0 | 4 |
|
||
|
| <-- 4 | 4 | 4 |
|
||
|
|
||
|
| | 0 | 1 |
|
||
|
| ---------- | --- | --- |
|
||
|
| **A0** | B0 | A1 |
|
||
|
| **B0** | C0 | A1 |
|
||
|
| **A1** | B0 | A2 |
|
||
|
| **C0** | C0 | D1 |
|
||
|
| **A2** | B3 | A2 |
|
||
|
| **D1** | D0 | D2 |
|
||
|
| **B3** | C0 | A4 |
|
||
|
| **D0** | D0 | D1 |
|
||
|
| **D2** | D3 | D2 |
|
||
|
| <-- **A4** | B4 | A4 |
|
||
|
| **D3** | D0 | D4 |
|
||
|
| <-- **B4** | C4 | A4 |
|
||
|
| **D4** | D4 | D4 |
|
||
|
| <-- **C4** | C4 | D4 |
|
||
|
|
||
|
**Př. 1**: L je množina všech řetězců, které splňují právě jednu z podmínek:
|
||
|
- $w$ obsahuje $-babb-$
|
||
|
- počet znaků $b$ ve $w$ je dělitelný 3
|
||
|
|
||
|
viz. excalidraw
|
||
|
|
||
|
**Př. 2**: Navrhněte konečně automatový model algoritmu pro softwarovou implementaci vstupní konverze textového řetězce reprezentujícího zápis konstanty typu integer do vnitřní reprezentace PC. (formát v pevné řádové čárce)
|
||
|
|
||
|
| | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|
||
|
| --- | --- | --- | --- | --- | --- | --- | --- | --- | ---- |
|
||
|
| MAX | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 127 |
|
||
|
| MIN | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -128 |
|
||
|
|
||
|
314 = 256 + 32 + 16 + 8 + 2
|
||
|
|
||
|
`0000 0001 0011 1010`
|
||
|
|
||
|
| číslo | zobrazení |
|
||
|
| ----- | ------------- |
|
||
|
| 314 | `00 00 01 3A` |
|
||
|
| | `33 31 34 20` |
|
||
|
| -314 | `FF FF FE C6` |
|
||
|
|
||
|
**Př. 3**: Navrhněte RKA akceptující syntakticky správné řetězce reprezentující konstantu integer.
|
||
|
- správné: 0, 121, -15, +6, ...
|
||
|
- nesprávné: +-3
|
||
|
- $\sum = \{D, +, -, x\}$
|
||
|
- \\ je koncový znak
|
||
|
|
||
|
Pomocné stavové proměnné
|
||
|
|
||
|
| | počáteční hodnota |
|
||
|
| ----------- | ----------------- |
|
||
|
| znam. INT | 1 |
|
||
|
| hodnota INT | 0 |
|
||
|
|
||
|
transformace PSP
|
||
|
- 0: nic
|
||
|
- 1: $\text{znam} \leftarrow 1$
|
||
|
- 2: $\text{hodnota} \leftarrow \text{hodnota} \cdot 10 + \text{cislice}$
|
||
|
- znak je v ASCII kódu $\to$ odečíst '0' (30)
|
||
|
- 3: $\text{hodnota} \leftarrow \text{znak} \cdot \text{hodnota}$
|
||
|
|
||
|
$(3x^2 + x + 4) x = 10$
|
||
|
- 314
|
||
|
|
||
|
viz. excalidrawPř. 1
|
||
|
|
||
|
1: $\text{hodnota} \leftarrow \text{hodnota} \cdot 10 + (\text{vstup} - \text{'0'})$
|
||
|
2: $\text{hodnota} \leftarrow \text{hodnota} \cdot 10 - (\text{vstup} - \text{'0'})$
|