FAV-ZCU/KIV TI/Cvičení/Cviceni03.md

2.4 KiB

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'})