Π ΠΎΠ΄ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ
Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ, ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠ΅ΠΊΠ°, ΡΡΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ:
[x]. ΠΠ±ΡΡΠ²ΠΈΡΡ ΡΠΈΠΏ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎΡΠ²Π»ΡΡΡΠ΅ΠΉΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ ΡΡΠ΅ΠΊΠ°, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΠ΅ΠΊΠ°.
[x]. ΠΠ°ΠΏΠΈΡΠ°ΡΡ ΠΊΠ»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π» Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π½Π°ΠΌΠ΅ΠΊΠΎΠ² Π½Π° ΡΠΈΠΏ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΡΠ΅ΠΊΠ°, ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΠΎΠ³ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΡΠ΅ΠΊΠΎΠ² Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ².
ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΡΡΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΠΆΡΡΡΡ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΌΠΈ, Π½ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ. ΠΠ΅ΡΠ²ΠΎΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°Ρ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΡΠΈΠΏ. ΠΠΎ Π²ΠΎΠ²ΡΠ΅ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠΈΠΏ Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π±ΡΠ» ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ! ΠΠ°Π·Π²Π°Π² ΠΈΠΌΡ ΡΠΈΠΏΠ°, ΠΌΡ ΡΠΌΠΈΡΠΎΡΠ²ΠΎΡΠΈΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ. ("ΠΠ°Π·ΠΎΠ²ΠΈ ΡΠ²ΠΎΠΉ ΡΡΡΠ°Ρ - ΠΈ ΠΎΠ½ ΡΠΉΠ΄Π΅Ρ"). Π ΡΡΠΎΠΌ ΠΈΠ΄Π΅Ρ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ: ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠ»Π°ΡΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ, Π·Π°Π΄Π°ΡΡΠΈΠΌ ΡΠΈΠΏ, ΡΠ½Π°Π±Π΄ΠΈΡΡ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π½Π°Π·Π²Π°Π² Π΅Π³ΠΎ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΠΎΠ΄ΠΎΠ²ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ.
ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°
ΠΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΎΠ±ΡΡΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΠΌΡ G (ΠΎΡ Generic). ΠΡΠΎ Π½Π΅ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ. ΠΡΠ»ΠΈ Π½ΡΠΆΠ½Ρ Π΅ΡΠ΅ ΡΠΎΠ΄ΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π½Π°Π·Π²Π°Π½Ρ H, I ΠΈ Ρ.Π΄.
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ, ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠ΅ ΡΠΎΠ΄ΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π° ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ»Π°ΡΡΠ°, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΠ’Π Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π»Π΅ΠΊΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
indexing
description: "Π‘ΡΠ΅ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° G"
class STACK [G] feature
count: INTEGER
-- ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΡΠ΅ΠΊΠ΅
empty: BOOLEAN is
-- ΠΡΡΡ Π»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ?
do ... end
full: BOOLEAN is
-- Π‘ΡΠ΅ΠΊ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½?
do ... end
item: G is
-- ΠΠ΅ΡΡΠΈΠ½Π° ΡΡΠ΅ΠΊΠ°
do ... end
put (x: G) is
-- ΠΡΠΎΠ»ΠΊΠ½ΡΡΡ x Π² ΡΡΠ΅ΠΊ.
do ... end
remove is
-- ΠΡΡΠΎΠ»ΠΊΠ½ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΡΡΠ΅ΠΊΠ°.
do ... end
end -- class STACK
Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ G ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡΡ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΉ (ΠΊΠ°ΠΊ Π² item) ΠΈ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (ΠΊΠ°ΠΊ Π² put), Π½ΠΎ ΠΈ Π΄Π»Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΊΠ»Π°ΡΡΠ°.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°
ΠΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ, Π·Π°Π΄Π°ΡΡΠΈΡ ΡΡΠ΅ΠΊ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°Π΄Π°ΡΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΈΠΏ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ΅ΠΊΠ° - ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
sp: STACK [POINT]
ΠΡΠ»ΠΈ Ρ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ΄ΠΎΠ²ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΡΡΠΎΠ»ΡΠΊΠΎ ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°ΡΡ ΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΠ΄ΠΎΠ²ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠΎΠ΄ΠΎΠ²ΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΈΠΏΠ° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ΄ΠΎΠ²ΡΠΌ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ (generic derivation), Π° ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠ»Π°ΡΡ, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ STACK [POINT], Π½Π°Π·ΡΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½Π½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ.
Π ΠΎΠ΄ΠΎΠ²ΠΎΠΌΡ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΈΠΏ, ΡΠΎΠ΄ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΏ:
[x]. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ STACK [POINT] ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏΠΎΠΌ.
[x]. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΡΠΈΠΏ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° (POINT Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅).
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ. ΠΠΈΡΡΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π²ΡΠ±ΡΠ°ΡΡ ΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΊΠ»Π°ΡΡ LIST [G], ΡΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠ΅ΠΊ, ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΡΡΡΡ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ΡΠΎΡΠ΅ΠΊ:
slp: STACK [LIST [POINT]]
ΠΈΠ»ΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ STACK [POINT] ΠΊΠ°ΠΊ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, - ΡΡΠ΅ΠΊ ΡΡΠ΅ΠΊΠΎΠ² ΡΠΎΡΠ΅ΠΊ:
ssp: STACK [STACK [POINT]]
ΠΠ΅Ρ ΠΏΡΠ΅Π΄Π΅Π»Π° Π³Π»ΡΠ±ΠΈΠ½Ρ ΡΠ°ΠΊΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΡΠΎΠΌΠ΅ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΏΡΠΎΡΡΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°.
Π’Π΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ
ΠΠ±ΡΡΠΆΠ΄Π°Ρ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΎΡΠ½ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Ρ.
[x]. ΠΡΠΎΡΠ΅ΡΡ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ STACK [POINT], ΠΈΠ· ΡΠΈΠΏΠΎΠ² POINT ΠΈ STACK, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π½Π°Π·ΡΠ²Π°ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΡΠΈΠΏΠ° "generic instantiation". ΠΠΎ ΡΡΠΎΡ ΡΠ΅ΡΠΌΠΈΠ½ ΠΌΠΎΠ³ Π±Ρ Π²Π²Π΅ΡΡΠΈ Π² Π·Π°Π±Π»ΡΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ Π½Π΅ΡΠ²Π½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΠ. ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΠΎΠ΄ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ - ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠΉ Π½Π° ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π° Π½Π΅ Π½Π° Π΅Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
[x]. Π ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΡΠ΅ΡΠΌΠΈΠ½ "ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ" ΠΈ "Π°ΡΠ³ΡΠΌΠ΅Π½Ρ" ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ. ΠΠ΅ΡΠ²ΡΠΉ Π΄Π»Ρ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ², Π²ΡΠΎΡΠΎΠΉ - Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡΠΊΠΎΠΉ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΡ.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠΎΠ²
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΊΠ»Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ:
sc: STACK [CIRCLE]; sa: STACK [ACCOUNT]; c: CIRCLE; a: ACCOUNT.
Π’ΠΎΠ³Π΄Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ:
sc.put (c) -- ΠΡΠΎΠ»ΠΊΠ½ΡΡΡ ΠΊΡΡΠ³ Π² ΡΡΠ΅ΠΊ ΠΊΡΡΠ³ΠΎΠ²
sa.put (a) -- ΠΡΠΎΠ»ΠΊΠ½ΡΡΡ ΡΡΠ΅Ρ Π² ΡΡΠ΅ΠΊ ΡΡΠ΅ΡΠΎΠ²
c := sc.item -- Π‘ΡΡΠ½ΠΎΡΡΠΈ ΠΊΡΡΠ³ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π²Π΅ΡΡΠΈΠ½Ρ ΡΡΠ΅ΠΊΠ° ΠΊΡΡΠ³ΠΎΠ².
ΠΠΎ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ° ΠΈ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²Π΅ΡΠ³Π½ΡΡΠ°:
sc.put (a); -- ΠΠΎΠΏΡΡΠΊΠ°: ΠΡΠΎΠ»ΠΊΠ½ΡΡΡ ΡΡΠ΅Ρ Π² ΡΡΠ΅ΠΊ ΠΊΡΡΠ³ΠΎΠ².
sa.put (c); -- ΠΠΎΠΏΡΡΠΊΠ°: ΠΡΠΎΠ»ΠΊΠ½ΡΡΡ ΠΊΡΡΠ³ Π² ΡΡΠ΅ΠΊ ΡΡΠ΅ΡΠΎΠ².
c:= sa.item -- ΠΠΎΠΏΡΡΠΊΠ°: ΠΠ°ΡΡ ΠΊΡΡΠ³Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ°.
ΠΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΏΠΎΠΏΡΡΠΊΠ΅ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ Π΄Π΅Π½Π΅Π³ ΠΈΠ· ΠΊΡΡΠ³Π°.
ΠΡΠ°Π²ΠΈΠ»ΠΎ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ
ΠΡΠ°Π²ΠΈΠ»ΠΎ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ, Π΄Π΅Π»Π°ΡΡΠ΅Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ Π½Π°Π±ΠΎΡ ΠΈ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌ Π²ΡΠΎΡΠΎΠΉ, ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, Π½ΠΎ Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΡΡΠΎΡΠ½ΠΈΡΡ.
ΠΠ½Π°ΡΠ°Π»Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΠ±ΡΡΠ½ΡΠ΅, Π½Π΅ ΡΠΎΠ΄ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ. ΠΡΡΡΡ C ΡΠ°ΠΊΠΎΠΉ ΠΊΠ»Π°ΡΡ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π΅, Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΡΠΎΠ΄ΠΎΠ²ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²:
f(a:T):U is ...
Π’ΠΎΠ³Π΄Π° Π²ΡΠ·ΠΎΠ² Π²ΠΈΠ΄Π° x.f(d), ΠΏΠΎΡΠ²Π»ΡΡΡΠΈΠΉΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ B, Π³Π΄Π΅ x ΡΠΈΠΏΠ° C, Π±ΡΠ΄Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ΅Π½ ΠΏΠΎ ΡΠΈΠΏΡ, ΡΠΎΠ³Π΄Π° ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π°:
[x]. f Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΊΠ»Π°ΡΡΡ B, - ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ Π²ΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ°ΠΌ ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Ρ ΠΊΠ»Π°ΡΡΠΎΠ², Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΡ B;
[x]. d ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΡΠΈΠΏΡ T. ΠΡΠ»ΠΈ ΡΡΠΈΡΡΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎ d ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΡ ΠΏΠΎΡΠΎΠΌΠΊΠ°ΠΌ T.
[x]. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ U. Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ f ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ C ΡΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΊΠ»Π°ΡΡ Ρ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΠΎΠ΄ΠΎΠ²ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ G ΠΈΠΌΠ΅Π΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ:
h (a: G): G is...
ΠΡΠ·ΠΎΠ² h ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄ y.h(e), Π³Π΄Π΅ y ΡΡΡΠ½ΠΎΡΡΡ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½Π°Ρ ΠΊΠ°ΠΊ
y: C [V]
Π’ΠΈΠΏ V - Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π½Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ. Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ - Π΄Π²ΠΎΠΉΠ½ΠΈΠΊ Π½Π΅ΡΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° - ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ e ΠΈΠΌΠ΅Π»ΠΎ ΡΠΈΠΏ V ΠΈΠ»ΠΈ ΠΏΡΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ Π±ΡΠ»ΠΎ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠΌ V. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ h.
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΏΠΎΠ½ΡΡΠ½Ρ: V - ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, Π·Π°ΠΌΠ΅Π½ΡΡΡΠΈΠΉ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ G ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° C, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ Π²ΡΠ΅ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ G ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π»ΠΈ ΡΡΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ: Π²ΡΠ·ΠΎΠ² s.put(z) ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° z ΡΠΈΠΏΠ° POINT, Π΅ΡΠ»ΠΈ s ΡΠΈΠΏΠ° STACK [POINT]; INTEGER Π΅ΡΠ»ΠΈ s ΡΠΈΠΏΠ° STACK [INTEGER]; ΠΈ s.item Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΈΠΏΠ° POINT Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈ ΡΠΈΠΏΠ° INTEGER Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ.
ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΡΡΡΠ½ΠΎΡΡΡΠΌΠΈ ΡΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°
Π ΡΠΎΠ΄ΠΎΠ²ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ C [G, H, ...] ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΡΠ½ΠΎΡΡΡ, ΡΠ΅ΠΉ ΡΠΈΠΏ - ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΡΠΎΠ΄ΠΎΠ²ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ x ΡΠΈΠΏΠ° G. ΠΠΎΠ³Π΄Π° ΠΊΠ»Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ, G, ΡΠ°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΏ. ΠΠΎΡΡΠΎΠΌΡ Π»ΡΠ±Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ C Π½Π°Π΄ x, Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠΈΠΏΠ°ΠΌ. ΠΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΡΡ Π²ΠΈΠ΄ΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ:
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°
ΠΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ½ΠΎΡΡΡ x, ΡΠ΅ΠΉ ΡΠΈΠΏ Π·Π°Π΄Π°Π½ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΠΎΠ΄ΠΎΠ²ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ G, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
1 Π‘Π»Π΅Π²Π° ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ x := y, Π³Π΄Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ y ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ G.