Π§Π°ΡΡΠΎ Π΄Π»Ρ ΡΡΠΈΠ»Π΅Π½ΠΈΡ ΡΠΊΡΡΡΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² ΡΠ·ΡΠΊΠ°Ρ Ρ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΠ΅ΠΉ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΏΠ°ΠΊΠ΅Ρ, ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· Π΄Π²ΡΡ ΡΠ°ΡΡΠ΅ΠΉ, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (interface) ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (implementation)(Π‘ΠΌ. Π»Π΅ΠΊΡΠΈΡ 11 ΠΈ Π»Π΅ΠΊΡΠΈΡ 5 ΠΊΡΡΡΠ° "ΠΡΠ½ΠΎΠ²Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ"). ΠΠ°ΠΊΡΡΡΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΈΠ»ΠΈ ΡΠ΅Π»ΠΎ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π²ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² ΡΠ°Π·Π΄Π΅Π» ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π΄ΠΎΠ±Π°Π²ΠΎΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, Π·Π°ΡΡΠ°Π²Π»ΡΡ ΠΈΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΡΠΈ Π³Π»ΡΠ±ΠΎΠΊΠΎΠΌ ΠΎΡΠΌΡΡΠ»Π΅Π½ΠΈΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Π‘ΠΊΡΡΡΠΈΡ ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π²ΡΠ΅ ΡΡΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π»Π΅ΠΊΡΠΈΡΡ .
ΠΠ°ΠΊΠ΅ΡΡ: ΠΎΡΠ΅Π½ΠΊΠ°
ΠΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ, ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΠ Π½Π° Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ. Π‘ΠΎΠ±ΡΠ°ΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ "ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΡΡΡΠ΅ΠΉ" ΠΊΡΠ°ΠΉΠ½Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠ², ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²:
[x]. ΠΠ²ΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ-ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ½ΡΡΠΈΡ. ΠΡΠΎ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ ΠΎΡΠ»Π°Π΄ΠΊΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΠΎΠ³ΠΎ, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π²ΡΠ΅Π³Π΄Π° Π΅ΡΡΡ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π·Π°Π±ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ; Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ new, put ΠΈ has, Π½ΠΎ Π·Π°Π±ΡΡΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ remove.
[x]. ΠΠ»Ρ Π°Π²ΡΠΎΡΠΎΠ² ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ-ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Π½Π΅ΡΠΎΠΌΠ½Π΅Π½Π½ΠΎ Π»Π΅Π³ΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², Π΅ΡΠ»ΠΈ Π²ΡΠ΅ ΠΎΠ½ΠΈ ΡΠΎΠ±ΡΠ°Π½Ρ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ Π² ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠΉ Π·Π΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ, Π³Π΄Π΅ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ ΡΠΎΠ±ΡΠ°Π½Ρ Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡΠ΅ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠ΅ Π΄Π°Π½Π½ΡΡ .
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠ°ΠΊΠ΅ΡΡ Π²ΡΠ΅ ΠΆΠ΅ Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΊ ΡΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΎΡΡ, ΠΎΠ½ΠΈ ΠΎΡΠ²Π΅ΡΠ°ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π½ΠΎ Π½Π΅ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡ Π²ΡΠ΅ΠΌ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΎΠ½ΠΈ Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ - "Π²ΡΠ½Π΅ΡΠ΅Π½ΠΈΡ Π·Π° ΡΠΊΠΎΠ±ΠΊΠΈ" ΠΎΠ±ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ INTEGER_TABLE_HANDLING Π² Π½Π°ΡΠ΅ΠΌ Π½Π°Π±ΡΠΎΡΠΊΠ΅ ΡΠ΅ΠΊΡΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΡΡΠ½ΠΎΠΌ Π²ΡΠ±ΠΎΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, - Π΄Π²ΠΎΠΈΡΠ½ΡΡ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π² ΠΏΠΎΠΈΡΠΊΠ°. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠΊΡΡΡΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ Π½Π΅Π·Π°ΡΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°ΡΡΡΡ ΡΡΠΈΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ. ΠΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ. ΠΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΈΡΡΠ°ΡΠΈΡ Π½Π΅ΡΡΡΠ΄Π½ΠΎ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅ΡΡ: ΡΠΈΠΏΠΈΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΌΠ°ΡΡΡ ΠΏΠΎΡ ΠΎΠΆΠΈΡ , Π½ΠΎ Π²ΠΎΠ²ΡΠ΅ Π½Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΡ , ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π΄Π»Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ, Π½ΠΎ Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΡΡΠ΅ΡΠ° ΠΈΡ ΠΎΠ±ΡΠ½ΠΎΡΡΠΈ. ΠΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΡΠ°ΠΊΠ°Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠ° ΠΏΡΠΈΠ½ΠΎΡΠΈΡ Π² ΠΆΠ΅ΡΡΠ²Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠ².
ΠΠΎ Π΄Π°ΠΆΠ΅ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΡΠΈΡΡΠ°ΡΠΈΡ ΠΎΡΡΠ°Π΅ΡΡΡ Π½Π΅ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠ³ΠΎ Π²ΡΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π²ΠΈΠ΄Π°:
t: INTEGER_TABLE_HANDLING$INTBINTREE
ΠΠ»ΠΈΠ΅Π½Ρ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΡΠΈΠΌ Π½Π°ΡΡΡΠ°Π΅ΡΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ: Π°Π²ΡΠΎΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ-ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ΄ΡΡ Π·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ-ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ°, ΡΠ΅ΠΌ ΡΡΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ.
ΠΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° ΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ
ΠΠ²Π° ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠ΅ΠΌΠ° - ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° (overloading) ΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ (genericity) ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π½Π° Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π²ΡΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ². Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΆΠ΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π΄Π°ΡΡ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ°
ΠΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° - ΡΡΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ. ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°ΡΡΡΡ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ : ΠΏΠΎΡΡΠΈ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΠΎ ΡΠΌΡΡΠ»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΠΈΠΌΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΌΠΎΠ΄ΡΠ»ΡΠΌ (ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ Π±Π»ΠΎΠΊΠ°ΠΌ - Π² ΡΠ·ΡΠΊΠ΅ Algol ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ Π΅ΠΌΡ).
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΠ°ΡΡΠ½ΡΠΌ ΡΠ»ΡΡΠ°Π΅ΠΌ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΠΈΠΌΠ΅Π½Π° Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π’Π°ΠΊΠ°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²: ΠΎΠ΄Π½Π° ΠΈ ΡΠ° ΠΆΠ΅ Π·Π°ΠΏΠΈΡΡ, a +b, ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²ΠΈΠ΄Ρ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠΎΠ² a ΠΈ b (ΡΠ΅Π»ΡΠ΅, Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Ρ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ, Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Ρ ΡΠ΄Π²ΠΎΠ΅Π½Π½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ). ΠΠ°ΡΠΈΠ½Π°Ρ Ρ ΡΠ·ΡΠΊΠ° Algol 68, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΄ΠΎΠΏΡΡΠΊΠ°Π»Π°ΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, ΠΈ Π½Π° ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ·ΡΠΊΠ΅ Ada ΠΏΠ°ΠΊΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π½ΠΎ Ρ ΡΠ°Π·Π½ΠΎΠΉ ΡΠΈΠ³Π½Π°ΡΡΡΠΎΠΉ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ Π·Π΄Π΅ΡΡ ΡΠΈΡΠ»ΠΎΠΌ ΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². Π ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΈΠ³Π½Π°ΡΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΈΠΏ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, Π½ΠΎ ΡΠ·ΡΠΊ Ada ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΡ, ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ°ΠΊΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ square:4.5)
square (x: INTEGER): INTEGER is do ... end
square (x: REAL): REAL is do ... end
square (x: DOUBLE): DOUBLE is do ... end
square (x: COMPLEX): COMPLEX is do ... end
Π’ΠΎΠ³Π΄Π° ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ square (y) ΡΠΈΠΏ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° y ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡ, ΠΊΠ°ΠΊΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠΌΠ΅Π»ΡΡ Π² Π²ΠΈΠ΄Ρ.
ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠ°ΠΊΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠΎΠΈΡΠΊΠ° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°:
has (t: "SOME_TABLE_TYPE"; x: ELEMENT) is do ... end
ΠΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· Π½ΠΈΡ Π·Π°Π΄Π°Π΅Ρ ΡΠ²ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠΈΠΏΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ Π²ΠΌΠ΅ΡΡΠΎ "SOME_TABLE_TYPE". Π’ΠΈΠΏ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, Π² Π»ΡΠ±ΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ has, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠ°Ρ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈΠΌΠ΅Π»Π°ΡΡ Π² Π²ΠΈΠ΄Ρ.
ΠΠ· ΡΡΠΈΡ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠ±ΡΠ°Ρ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ·ΠΆΠ΅ ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Ρ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΡΡΡΡ:
Π ΠΎΠ»Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ
ΠΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΌ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ². ΠΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅ΠΊΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΠΎΠ½ΡΡΠΈΡ.
Π’Π°ΠΊ ΡΡΠΎ ΠΆΠ΅ Π΄Π°Π΅Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ? ΠΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ. ΠΡΠΎ - ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ, ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡΠ΅Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΈΠ΄ΡΠΌΡΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ, ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²Ρ, ΠΏΠ΅ΡΠ΅ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΡΡΡ Π½ΠΎΡΡ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ. ΠΠΎ ΡΡΠΎ Π½Π΅ ΡΠ΅ΡΠ°Π΅Ρ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ Π·Π°Π΄Π°Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° Π½Π΅ Π΄Π°Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ. ΠΠΎΠ³Π΄Π° Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π²ΡΠ·ΠΎΠ²
has (t, x)
ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΡΠ²ΠΈΡΡ t, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ (Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠΊΡΡΡΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ Π²Π°Ρ ΠΎΡ Π·Π°Π±ΠΎΡΡ ΠΎ Π΄Π΅ΡΠ°Π»ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΏΠΎΠΈΡΠΊΠ°) Π½ΡΠΆΠ½ΠΎ ΡΠΎΡΠ½ΠΎ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠ² Π²ΠΈΠ΄ ΡΠ°Π±Π»ΠΈΡΡ t! ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²ΠΎΠΌ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ. ΠΠ΅Π· ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄ΡΡΠ³ΠΎΠ΅ ΠΈΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
has_binary_tree (t, x)
has_hash (t, x)
has_linked (t, x)
ΠΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠ°ΠΊΠΈ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΈΠΌΠ΅Π½? ΠΠ°Π²Π΅ΡΠ½ΠΎΠ΅ Π½Π΅Ρ. ΠΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΠΎΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΠ, ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΠ½ΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ΅ΡΡΠ½ΠΎΡΡΠΈ (non-deception): ΡΠ°Π·Π»ΠΈΡΠΈΡ Π² ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΡΡΠ°ΠΆΠ°ΡΡΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ»ΡΡΡΠΈΡΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎΡΡΡ ΠΠ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΡΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ has ΡΠ²Π»ΡΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ Π½ΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²Π²ΠΎΠ΄ΠΈΡΡ Π² Π·Π°Π±Π»ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ - ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ ΡΠ΅ΠΊΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΡΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠ²Π½ΡΠΉ ΡΠ΅ΠΊΡΡ (ΠΊΠ°ΠΊ Π² ΡΠ»ΡΡΠ°Π΅ Π²Π²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΠ΅ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΡ ΠΈΠΌΠ΅Π½) ΠΈ ΡΡΡΡΠ°Π½ΠΈΡΡ ΠΊΠ°ΠΊΡΡ-Π»ΠΈΠ±ΠΎ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΏΡΡΠ°Π½ΠΈΡΡ.
Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΡ, ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠΉ ΠΎΠ½Π° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ.
ΠΡΠΈΡΠ΅ΡΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠΈ Π²ΡΠ·ΠΎΠ²ΠΎΠ² - ΡΠΈΠ³Π½Π°ΡΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠ² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² - Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌΠΈ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π°ΠΌΠΈ. ΠΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ , Π³Π΄Π΅ Π²ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°Π΅ΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ square ΠΈ has ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠ³Π½Π°ΡΡΡΡ, Π½ΠΎ Π½Π΅ΡΡΡΠ΄Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΡΠ΅Π±Π΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠ³Π΄Π° Ρ ΡΠ°Π·Π½ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠΈΠ³Π½Π°ΡΡΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΡΠΎΡΠ΅ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Π΅:
p1 := new_point (u, v)
Π’ΠΎΡΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ: Π΄Π΅ΠΊΠ°ΡΡΠΎΠ²ΡΠΌΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ x ΠΈ y; ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ r ΠΈ q (ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΎΡ Π½Π°ΡΠ°Π»Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΈ ΡΠ³Π»ΠΎΠΌ, ΠΎΡΡΡΠΈΡΡΠ²Π°Π΅ΠΌΡΠΌ ΠΎΡ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΡΠΈ). ΠΠΎ Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ new_point, ΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ Π·Π°ΡΡΡΠ΄Π½Π΅Π½ΠΈΠ΅, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ΅ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΎΠ±Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΡΠΈΠ³Π½Π°ΡΡΡΡ: