II.1.d
Ciklusok átírása
Elöltesztelő ciklusból hátultesztelőbe:
Eredeti:
...
amíg feltétel
| utasítások
[]
...
Átírva:
...
ha felt. akkor
| végezd el
| | uasítások
| |amíg feltétel
| []
[]
...
Vagy:
...
ha felt. akkor
| ismételd
| | ...
| |ameddig !(feltétel)
| []
[]
...
A d) alpont egy lehetséges megoldása:
beolvas x,y (különböző term. számok)
cx <- 0; cy <- 0
┌ha x≥10 vagy y≥10 akkor
| ┌végezd el
| │ ┌amíg x+y≠0 végezd el
| │ │ cx <- cx+x%10; x <- [x/10]
| │ │ cy <- cy+y%10; y <- [y/10]
| │ └■
| │ x <- cx; cx <- 0; y <- cy; cy <- 0
| │
| │amíg x≥10 vagy y≥10
| └■
└■
┌ha x=y akkor kiír "DA ",x
│különben kiír "NU ",x," ",y
└■
Hátultesztelő ciklusból elöltesztelőbe:
Eredeti:
végezd el
| utasítások
|amíg feltétel
[]
Átírva (a belső utasításokat elvégezzük a ciklus előtt is):
utasítások
amíg feltétel v.e.
| utasítások
[]
II.3.
| |
III.3.b.
| |