16. óra: Algoritmus-leíró 'nyelvek'
Ha a feladat kicsit 'bonylódik', már nem elég pusztán az utasítások (beolvasás, kiíratás, stb.) ismerete, szükségessé válhat a program vezérlési szerkezetének elõzetes megtervezése. Végig kell gondolnunk, milyen változókat, és milyen vezérlési szerkezeteket (elágazás, ciklus) fogunk használni.
Erre a feladatra három algoritmusleíró 'nyelv' terjedt el:
- Mondatszerû leírás: Nagyjából emberi (de kötött) szavakkal, és a behúzásokkal írja le az algoritmust;
- Folyamatábra: Grafikus eszközökkel, téglalpokkal, rombuszokkal, stb. illusztrálja a program elágazásait, utasításait egy geomteriai jellegû ábrán. Szemléletes, de elég terjengõs;
- Stuktogram: Nagyjából a kettõ kombinációja, kicsit geometriai, kicsit szöveges... A legtömörebb, de gyakorlat kell az elkészítéséhez és az olvasásához.
Egy konkrét feladaton keresztül fogjuk megismerni mind a három leíró nyelvet.
A program neve legyen: lkkt.py
I. Mondatszerû leírás
Az algoritmust elõször mondatszerû leírással írjuk le. Ez talán a legjobban érthetõ, de talán a legterjengõsebb is.(A változókat az érthetség kedvéért színnel kiemeltem. A '|' az osztója jel; pl. ha x|y-t írunk, az azt jelenti, hogy 'x osztója az 'y'-nak.)
Be: b
lkkt = a*b
i = lkkt
Ciklus amíg i>=a:
Ha a|i és b|i, akkor:
lkkt=i
elágazás vége.
i = i-1
ciklus vége.
Ki: lkkt
Magyarázat:
- 1-2. sor: Beovassuk a két pozitív egészt az a ill. b
változókba.
- 3. sor: A két szám szorzatát 'kinevezzük' legkisebb közös
többszörösnek. (Nem biztos, hogy ez a legkisebb, de közös többszörös, az
biztos.)
- 4. sor: Az i változó kezdõértéke az aktuális lkkt
(vagyis az a*b).
- 5. sor: Indul egy ciklus, a bennmaradás feltétele, hogy i
nagyobb-egyenlõ-e még, mint a két szám közül az egyik - mondjuk a.
- 6. sor (a cikluson belül, amit azzal jelzünk, hogy beljebb kezdjük):
Kezdõdik egy elágazás. A feltétel, hogy az i számot
osztja-e az a is és a b is.
Ha igen, akkor új (egyre kisebb) közös többszöröst találtunk.
- 7. sor: Az i ciklusváltozót eggyel csökkentjük.
- 8. sor: A ciklus véget ér (mert a lehetséges ékkt-jelölt, az i
már kisebb, mint az egyik szám.)
- 9. sor: Kiíratjuk az lkkt változó tartalmát. (Hiszen
ott gyõjtöttük lefele menet azt, aki közös többszörös; és akkor hagytuk
abba, amikor már nincs esély...)
II. Folyamatábra
Folyt. köv.
Folyt. köv.