ΠΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Borland Delphi ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°Π΄Π°Π½ΠΈΠΉ
ΠΠΎ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π° ΡΠ·ΡΠΊΠ° Simula 67 Π±ΡΠ»ΠΈ Π·Π°ΠΌΠ΅ΡΠ΅Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌΠΈ, ΠΈ Π² 70-Π΅ Π³ΠΎΠ΄Ρ Π±ΡΠ»ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ·ΡΠΊΠΈ CLU, Alphard, Concurrent Pascal ΠΈ Π΄Ρ. ΠΡΠΈ ΡΠ·ΡΠΊΠΈ ΡΠ°ΠΊ ΠΈ ΠΎΡΡΠ°Π»ΠΈΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΌΠΈ, Π½ΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΈΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ: C… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Borland Delphi ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°Π΄Π°Π½ΠΈΠΉ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° delphi ΡΠΎΡΠΊΠ° ΠΊΠ²Π°Π΄ΡΠ°Ρ Π€ΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Π½ΠΈΡ ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
1. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
2. ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ
3. Π‘ΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ
4. ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠΎΡΠ΅ΠΊ
5. Π ΡΡΠ½ΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΡΠ΅ΠΊ
6. ΠΠΎΠΈΡΠΊ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ²
7. Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
Π€ΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Π½ΠΈΡ ΠΠΌΠ΅Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΠ΅ΠΊ Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ. ΠΡΡΠ²ΠΈΡΡ Π²ΡΠ΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Ρ ΡΡΠΈΠΌΠΈ ΡΠΎΡΠΊΠ°ΠΌΠΈ.
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π¦Π΅Π»ΡΡ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Borland Delphi ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°Π΄Π°Π½ΠΈΠΉ. ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠ΅Π΄ΡΡΠΎΠΈΡ:
— ΠΈΠ·ΡΡΠΈΡΡ ΡΠ΅ΠΎΡΠΈΡ ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΠ΅Π΄ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Delphi;
— ΠΈΠ·ΡΡΠΈΡΡ ΠΈ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ;
ΠΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡΡ ΡΡΠ΅Π΄ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ², ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΡΠ°ΠΏΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, Π½ΠΎ ΠΈ Π½Π° ΡΡΠ°ΠΏΠ°Ρ ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ.
ΠΠ΅ΡΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Simula 67 Π±ΡΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ Π² ΠΊΠΎΠ½ΡΠ΅ 60-Ρ Π³ΠΎΠ΄ΠΎΠ² Π² ΠΠΎΡΠ²Π΅Π³ΠΈΠΈ. ΠΠ²ΡΠΎΡΡ ΡΡΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΎΡΠ΅Π½Ρ ΡΠΎΡΠ½ΠΎ ΡΠ³Π°Π΄Π°Π»ΠΈ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Ρ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ: ΠΈΡ ΡΠ·ΡΠΊ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ΅Π΄ΠΈΠ» ΡΠ²ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΠΊΠΈ (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ 60-Ρ Π³ΠΎΠ΄ΠΎΠ²) ΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ Π½Π΅ Π³ΠΎΡΠΎΠ²Ρ Π²ΠΎΡΠΏΡΠΈΠ½ΡΡΡ ΡΠ΅Π½Π½ΠΎΡΡΠΈ ΡΠ·ΡΠΊΠ° Simula 67, ΠΈ ΠΎΠ½ Π½Π΅ Π²ΡΠ΄Π΅ΡΠΆΠ°Π» ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΈΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, Ρ ΡΠ·ΡΠΊΠΎΠΌ Fortran).
ΠΡΠΎΡ Π»Π°Π΄Π½ΠΎΠΌΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ·ΡΠΊΡ Simula 67 ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΠΎΠ²Π°Π»ΠΎ ΠΈ ΡΠΎ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²ΠΎ, ΡΡΠΎ ΠΎΠ½ Π±ΡΠ» ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ (Π° Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΠΉ) ΡΠ·ΡΠΊ, ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΠΌ Π² 60-Π΅ Π³ΠΎΠ΄Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ ΡΠ²ΡΠ·Π°Π½Π° ΡΠΎ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ (ΡΠΊΠΎΡΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ) ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΠΎ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π° ΡΠ·ΡΠΊΠ° Simula 67 Π±ΡΠ»ΠΈ Π·Π°ΠΌΠ΅ΡΠ΅Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌΠΈ, ΠΈ Π² 70-Π΅ Π³ΠΎΠ΄Ρ Π±ΡΠ»ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ·ΡΠΊΠΈ CLU, Alphard, Concurrent Pascal ΠΈ Π΄Ρ. ΠΡΠΈ ΡΠ·ΡΠΊΠΈ ΡΠ°ΠΊ ΠΈ ΠΎΡΡΠ°Π»ΠΈΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΌΠΈ, Π½ΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΈΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ: C++, Smalltalk, Delphi ΠΈ Π΄Ρ.
ΠΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Delphi Π½Π΅ ΠΌΠΎΠ³Π»ΠΎ ΠΏΡΠΎΠΉΡΠΈ Π½Π΅Π·Π°ΠΌΠ΅ΡΠ΅Π½Π½ΡΠΌ ΡΡΠ΅Π΄ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°. ΠΡΠ΅Π½ΠΊΠΈ ΡΠΊΡΠΏΠ΅ΡΡΠΎΠ², ΠΈΠ·ΡΡΠ°ΡΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΡΠΈΡΠΌΡ Borland, ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠΊΡΠ°ΡΠ΅Π½Ρ Π² Π²ΠΎΡΡΠΎΡΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΎΠ½Π°. ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²ΠΎ Delphi ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π·Π΄Π΅ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΈΠ΄Π΅ΠΈ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π‘ΡΠ΅Π΄Π° Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΠΏΡΠΈΡΡΠ½ΠΎΠ΅ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ· Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈ ΡΡΡΡΠΊΡΡΡΠ½ΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ².
Delphi — ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ Π±ΡΡΡΡΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠ°ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠ΅ΡΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ — Delphi 1. 0 Π±ΡΠ»Π° Π²ΡΠΏΡΡΠ΅Π½Π° Π² ΡΠ΅Π²ΡΠ°Π»Π΅ 1995 Π³. Π Π·Π°ΡΠ΅ΠΌ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π²ΡΠΏΡΡΠΊΠ°Π»ΠΈΡΡ Π΅ΠΆΠ΅Π³ΠΎΠ΄Π½ΠΎ.
ΠΠ°ΠΆΠ΄Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ°Ρ Π²Π΅ΡΡΠΈΡ Delphi Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ»Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΡΡ.
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π²Π΅ΡΡΠΈΠΉ Delphi Π²ΡΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΠ°Ρ : Standart — ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ, Professional ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ, Client/Server — ΠΊΠ»ΠΈΠ΅Π½Ρ/ΡΠ΅ΡΠ²Π΅Ρ, Enterprise — ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π±Π°Π· Π΄Π°Π½Π½ΡΡ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ. Π Π°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠ°Π·Π½ΡΠΌ ΡΡΠΎΠ²Π½Π΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ . ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ — Client/Server ΠΈ Enterprise, Π² ΡΡΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡΠ½ΡΠ΅.
1. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΠ½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ 1.
ΠΠΊΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
— ΠΏΠΎΠ»Π΅ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° (Timage);
— ΠΏΠΎΠ»Π΅, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΡΠ΅ΠΊ (TListBox);
— ΠΏΠΎΠ»Ρ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΡΠΎΡΠΊΠΈ (TEdit);
— ΠΊΠ½ΠΎΠΏΠΊΠ° Π΄Π»Ρ ΡΡΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΠΊΠΈ (TButon);
— ΠΏΠΎΠ»Π΅ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠΎΡΠ΅ΠΊ Π΄Π»Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΎΡΠ΅ΠΊ (TEdit);
— ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΎΡΠ΅ΠΊ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ°ΡΡΠ΅ΡΠ° (TButon).
2. ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ ΠΡΠΎΡΠ΅ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°Π³ΠΎΠ²:
1. ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²ΠΎΠ΄ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΠ΅ΠΊ (N), ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ ΠΊΠ½ΠΎΠΏΠΊΡ «Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ» ΠΈΠ»ΠΈ Π²ΡΡΡΠ½ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠΎΡΠΊΠΈ;
2. ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ «Π Π°ΡΡΡΠΈΡΠ°ΡΡ» ;
3. ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π°Ρ ΠΎΠ΄ΠΈΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΡ, ΡΠΈΡΡΠ΅Ρ ΠΈΡ Π½Π° ΠΏΠΎΠ»Π΅ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ.
3. Π‘ΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΎ ΡΠΎΡΠΊΠ°Ρ Π²Π²Π΅Π΄Π΅ΠΌ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ tmypoint:
1. type
2. tmypoint = record
3. x: Integer;
4. y: Integer;
5. end;
Π’ΠΈΠΏ tmypoint ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π·Π°ΠΏΠΈΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠΌΠ΅Π΅Ρ 2 ΠΏΠΎΠ»Ρ: x ΠΈ y, Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΡΠΎΡΠ΅ΠΊ.
ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΏΠΎΠ»Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΡΠΈΠΏ tfield. ΠΠ³ΠΎ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.
tfield = object
points: array [0.100 000] of tmypoint;
cnt: Integer;
function is_digit (s: string):Boolean;
procedure update_list ();
procedure add_point_str (_x, _y: string);
procedure add_point_int (x, y: integer);
function distance (p1, p2: tmypoint): Double;
function is_bar (p1, p2, p3, p4: tmypoint):
Boolean;
procedure drawbar (p1, p2, p3, p4: tmypoint);
procedure gen_bars ();
end;
4. ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠΎΡΠ΅ΠΊ ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ «Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ» .
1. procedure TForm1. genClick (Sender: TObject);
2. var
3. i: Integer;
4. begin
5. Randomize;
6. if not field. is_digit (n_gen.Text)
7. then
8. begin
9. ShowMessage ('ΠΠ΅ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ');
10. Exit;
11. end;
12. for i := 1 to StrToInt (n_gen.Text) do
13. field. add_point_int (Random (img1.Width), Random (img1.Height));
14. field. update_list;
15. end;
Π ΡΡΡΠΎΠΊΠ΅ 5 ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π» ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ Randomize. ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²Π΅Π» Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΈ Π²ΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ· ΠΏΡΠΎΡΠ΅Π΄ΡΡ (ΡΡΡΠΎΠΊΠΈ 6−11). Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²Π΅Π» ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ N, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ 2*N ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ»Π°, Ρ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ ΡΠΎΡΠ΅ΠΊ. Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ add_point_int ΠΎΠ±ΡΠ΅ΠΊΡΠ° tfield (ΡΡΡΠΎΠΊΠΈ 12−13), ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ update_list.
ΠΠΈΡΡΠΈΠ½Π³ ΠΌΠ΅ΡΠΎΠ΄Π° add_point_int ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.
1. procedure tfield. add_point_int (x, y: integer);
2. begin
3. if (x > form1. img1.Width) or (y > Form1. img1.Height) or (x < 0) or (y < 0)
4. then
5. begin
6. ShowMessage ('ΠΠ΅ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ');
7. Exit;
8. end;
9. points[cnt]. x := x;
10. points[cnt]. y := y;
11. Inc (cnt);
12. end;
ΠΡΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΡΠ΅ΠΊ ΡΠΎΡΠΊΡ Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ (x, y), ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π½Π° 1 ΡΡΠ΅ΡΡΠΈΠΊ ΡΠΎΡΠ΅ΠΊ.
ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ update_list ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.
1. procedure tfield. update_list ();
2. var i: integer;
3. canvas: tcanvas;
4. begin
5. Form1. lst1.Clear;
6. canvas := Form1. img1.Canvas;
7. canvas.Brush.Color:=clWhite;
8. canvas. Rectangle (0, 0, Form1. img1.Width, Form1. img1.Height);
9. canvas.Brush.Color:=clBlack;
10. for i := 0 to cnt-1 do
11. begin
12. Form1. lst1.Items.add (IntToStr (points[i]. x)+ ', '+IntToStr (points[i]. y));
13. canvas. Ellipse (points[i]. x-2, Form1. img1.Height — points[i]. y-2, points[i]. x+2, Form1. img1.Height — points[i]. y+2);
14. end;
15. end;
Π ΡΡΡΠΎΠΊΠ΅ 5 ΠΎΡΠΈΡΠ°Π΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΡΠ΅ΠΊ.
Π ΡΡΡΠΎΠΊΠ΅ 6 ΡΡΡΠ»ΠΊΠ° Π½Π° canvas ΠΏΠΎΠ»Ρ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ.
Π ΡΡΡΠΎΠΊΠ°Ρ 6−7 ΡΠΎΠ½ ΠΏΠΎΠ»Ρ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° Π±Π΅Π»ΡΠΉ.
Π ΡΡΡΠΎΠΊΠ°Ρ 8−12 ΡΠΈΡΡΡΡΡΡ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΡΠ΅ΠΊ ΡΠ°ΠΌΠΈ ΡΠΎΡΠΊΠΈ.
5. Π ΡΡΠ½ΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΡΠ΅ΠΊ ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ «ΠΠΎΠ±Π°Π²ΠΈΡΡ» ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.
1. procedure TForm1. addClick (Sender: TObject);
2. var
3. x, y: Integer;
4. begin
5. field. add_point_str (point_x.Text, point_y.text);
6. field. update_list;
7. end;
ΠΠ΄Π΅ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΡΠ·ΠΎΠ² ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΠΊΠΈ Π² ΡΠΏΠΈΡΠΎΠΊ (add_point_str) ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΡΠΎΡΠ΅ΠΊ.
ΠΠΈΡΡΠΈΠ½Π³ ΠΌΠ΅ΡΠΎΠ΄Π° add_point_str ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.
1. procedure tfield. add_point_str (_x, _y: string);
2. var
3. x, y: Integer;
4. begin
5. if not is_digit (_x) or not is_digit (_y)
6. then
7. begin
8. ShowMessage ('ΠΡΠΈΠ±ΠΊΠ° Π²Π²ΠΎΠ΄Π°');
9. Exit;
10. end;
11. x := StrToInt (_x);
12. y := StrToInt (_y);
13. add_point_int (x, y);
14. end;
ΠΠ΄Π΅ΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ Π²Π²Π΅Π΄Π΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ (ΡΡΡΠΎΠΊΠΈ 5−10), ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π² ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ add_point_int.
6. ΠΠΎΠΈΡΠΊ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΠ»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π²ΡΠ΅Ρ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² Π²Π²Π΅Π΄Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ° Ρ Π²Π΅ΡΡΠΈΠ½Π°ΠΌΠΈ Π² ΡΠΎΡΠΊΠ°Ρ p1, p2, p3, p4.
1. function tfield. is_bar (p1, p2, p3, p4: tmypoint): Boolean;
2. var d1, d2, d3, d4: double;
3. begin
4. d1 := distance (p1, p2);
5. d2 := distance (p2, p3);
6. d3 := distance (p3, p4);
7. d4 := distance (p4, p1);
8. Result := (d1 = d2) and (d2 = d3) and (d3 = d4) and (d4 = d1) and (d1 <> 0);
9. end;
Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΊΠ²Π°Π΄ΡΠ°Ρ Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ Π² ΡΠΎΡΠΊΠ°Ρ p1, p2, p3, p4 ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ: ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ p1 ΠΈ p2 ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ p2 ΠΈ p3, p3 ΠΈ p4, p4 ΠΈ p1.
ΠΡΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΡΠΎ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π΅ ΡΠ°Π²Π½ΠΎ 0, ΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΊΠ²Π°Π΄ΡΠ°Ρ Ρ Π²Π΅ΡΡΠΈΠ½Π°ΠΌΠΈ Π² ΡΠΎΡΠΊΠ°Ρ p1, p2, p3, p4, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
ΠΠ΅ΡΠΎΠ΄ distance Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
1. function tfield. distance (p1, p2: tmypoint): Double;
2. begin
3. Result := (Sqrt (Sqr (p2.x — p1. x) + Sqr (p2.y — p1. y)));
4. end;
ΠΠ΅ΡΠΎΠ΄, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠΈΠΉ ΠΏΠΎΠΈΡΠΊ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ².
1. procedure tfield. gen_bars ();
2. var
3. i1, i2, i3, i4, acnt: Integer;
4. begin
5. acnt := 0;
6. for i1 := 0 to cnt-1 do
7. for i2 := i1+1 to cnt-1 do
8. for i3 := i2+1 to cnt-1 do
9. for i4 := i3+1 to cnt-1 do
10. if is_bar (points[i1], points[i2], points[i3], points[i4])
11. then
12. begin
13. drawbar (points[i1], points[i2], points[i3], points[i4]);
14. inc (acnt);
15. end;
16. ShowMessage (IntToStr (acnt)+' ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² Π½Π°ΠΉΠ΄Π΅Π½ΠΎ');
17. end;
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½ ΡΠΈΡΠ»ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² Ρ Π²Π΅ΡΡΠΈΠ½Π°ΠΌΠΈ Π² Π΄Π°Π½Π½ΡΡ ΡΠΎΡΠΊΠ°Ρ , Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΈΡΡΠ΅Ρ ΠΈΡ Π½Π° ΠΏΠΎΠ»Π΅ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π°.
Π ΡΡΡΠΎΠΊΠ΅ 5 ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ².
Π ΡΡΡΠΎΠΊΠ°Ρ 6−9 ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π±ΠΎΡ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΊ ΡΠΎΡΠ΅ΠΊ.
Π ΡΡΡΠΎΠΊΠ΅ 10 ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ° Ρ Π²Π΅ΡΡΠΈΠ½Π°ΠΌΠΈ Π² ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°Ρ .
Π ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠ²Π°Π΄ΡΠ°Ρ ΡΠΈΡΡΠ΅ΡΡΡ Π½Π° ΠΏΠΎΠ»Π΅ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° (ΡΡΡΠΎΠΊΠ° 13) ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΡΡΠ΅ΡΡΠΈΠΊ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² (ΡΡΡΠΎΠΊΠ° 14).
Π ΡΡΡΠΎΠΊΠ΅ 16 Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΠ²Π΅Ρ.
ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ «Π Π°ΡΡΡΠΈΡΠ°ΡΡ» Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
1. procedure TForm1. btn1Click (Sender: TObject);
2. begin
3. field. gen_bars;
4. end;
7. Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
1. procedure tfield. drawbar (p1, p2, p3, p4: tmypoint);
2. begin
3. Form1. img1.Canvas.MoveTo (p1.x, Form1. img1.Height — p1. y);
4. Form1. img1.Canvas.LineTo (p2.x, Form1. img1.Height — p2. y);
5. Form1. img1.Canvas.LineTo (p3.x, Form1. img1.Height — p3. y);
6. Form1. img1.Canvas.LineTo (p4.x, Form1. img1.Height — p4. y);
7. Form1. img1.Canvas.LineTo (p1.x, Form1. img1.Height — p1. y);
8. end;
ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΈΡΡΡΡΡΡ Π»ΠΈΠ½ΠΈΠΈ ΠΎΡ 1 ΡΠΎΡΠΊΠΈ ΠΊ 2, ΠΎΡ 2 ΠΊ 3, ΠΎΡ 3 ΠΊ 4 ΠΈ ΠΎΡ 4 ΠΊ 1.
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΈΠ·-Π·Π° ΡΠ°Π·Π»ΠΈΡΠΈΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π² Canvas ΠΈ ΠΎΡ ΠΏΡΠΈΠ²ΡΡΠ½ΠΎΠΉ Π΄Π΅ΠΊΠ°ΡΡΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ «ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ» Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡΠ΄ΠΈΠ½Π°Ρ ΡΠΎΡΠ΅ΠΊ.
Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ
1. ΠΠ°Π» Π£., ΠΡΠΉΠΊΡΡΡΠ° Π., Π₯ΠΎΠΎΡ Π. Π‘ΡΡΡΠΊΡΡΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
2. ΠΠ»Π°Ρ Π . Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
3. Π₯ΡΡΠ· ΠΠΆ., ΠΠΈΡΡΠΎΠΌ ΠΠΆ. Π‘ΡΡΡΠΊΡΡΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
4. ΠΠΎΡΠΌ Π. ΠΈ Π΄Ρ. Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class (TForm)
img1: TImage;
lst1: TListBox;
point_x: TEdit;
lbl1: TLabel;
point_y: TEdit;
lbl2: TLabel;
add: TButton;
btn1: TButton;
n_gen: TEdit;
gen: TButton;
lbl3: TLabel;
procedure addClick (Sender: TObject);
procedure FormShow (Sender: TObject);
procedure genClick (Sender: TObject);
procedure btn1Click (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type
tmypoint = record
x: Integer;
y: Integer;
end;
var
points: array [0.100 000] of tmypoint;
cnt: Integer;
// ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ s ΡΠΈΡΠ»ΠΎΠΌ
function is_digit (s: string):Boolean;
var i: integer;
f: boolean;
begin
f := true;
if s = '' then f := false;
for i := 1 to length (s) do
if (Ord (s[i]) < Ord ('0')) or (Ord (s[i]) > Ord ('9'))
then
f := false;
Result := f;
end;
// ΡΠΈΡΡΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΡΠ΅ΠΊ
procedure update_list ();
var i: integer;
canvas: tcanvas;
begin
Form1.lst1.Clear;
canvas := Form1. img1.Canvas;
canvas.Brush.Color:=clWhite;
canvas.Rectangle (0, 0, Form1. img1.Width, Form1. img1.Height);
canvas.Brush.Color:=clBlack;
for i := 0 to cnt-1 do
begin
Form1.lst1.Items.add (IntToStr (points[i]. x)+ ', '+IntToStr (points[i]. y));
canvas.Ellipse (points[i].x-2, Form1. img1.Height — points[i]. y-2, points[i]. x+2, Form1. img1.Height — points[i]. y+2);
end;
end;
// Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠΎΡΠΊΠΈ Π² ΡΠΏΠΈΡΠΎΠΊ
procedure add_point_int (x, y: integer);
begin
if (x > form1. img1.Width) or (y > Form1. img1.Height) or (x < 0) or (y < 0)
then
begin
ShowMessage ('ΠΠ΅ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ');
Exit;
end;
points[cnt]. x := x;
points[cnt]. y := y;
Inc (cnt);
end;
// Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠΎΡΠΊΠΈ Π² ΡΠΏΠΈΡΠΎΠΊ
procedure add_point_str (_x, _y: string);
var
x, y: Integer;
begin
if not is_digit (_x) or not is_digit (_y)
then
begin
ShowMessage ('ΠΠ΅ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ');
Exit;
end;
x := StrToInt (_x);
y := StrToInt (_y);
add_point_int (x, y);
end;
procedure TForm1. addClick (Sender: TObject);
var
x, y: Integer;
begin
add_point_str (point_x.Text, point_y.text);
update_list;
end;
procedure TForm1. FormShow (Sender: TObject);
begin
cnt := 0;
update_list;
end;
procedure TForm1. genClick (Sender: TObject);
var
i: Integer;
begin
Randomize;
if not is_digit (n_gen.Text)
then
begin
ShowMessage ('ΠΠ΅ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ');
Exit;
end;
for i := 1 to StrToInt (n_gen.Text) do
add_point_int (Random (img1.Width), Random (img1.Height));
update_list;
end;
function distance (p1, p2: tmypoint): Double;
begin
Result := (Sqrt (Sqr (p2.x — p1. x) + Sqr (p2.y — p1. y)));
end;
function is_bar (p1, p2, p3, p4: tmypoint): Boolean;
var d1, d2, d3, d4: double;
begin
d1 := distance (p1, p2);
d2 := distance (p2, p3);
d3 := distance (p3, p4);
d4 := distance (p4, p1);
Result := (d1 = d2) and (d2 = d3) and (d3 = d4) and (d4 = d1) and (d1 <> 0);
end;
procedure drawbar (p1, p2, p3, p4: tmypoint);
begin
Form1.img1.Canvas.MoveTo (p1.x, Form1. img1.Height — p1. y);
Form1.img1.Canvas.LineTo (p2.x, Form1. img1.Height — p2. y);
Form1.img1.Canvas.LineTo (p3.x, Form1. img1.Height — p3. y);
Form1.img1.Canvas.LineTo (p4.x, Form1. img1.Height — p4. y);
Form1.img1.Canvas.LineTo (p1.x, Form1. img1.Height — p1. y);
end;
procedure gen_bars ();
var
i1, i2, i3, i4, acnt: Integer;
begin
acnt := 0;
for i1 := 0 to cnt-1 do
for i2 := i1+1 to cnt-1 do
for i3 := i2+1 to cnt-1 do
for i4 := i3+1 to cnt-1 do
if is_bar (points[i1], points[i2], points[i3], points[i4])
then
begin
drawbar (points[i1], points[i2], points[i3], points[i4]);
inc (acnt);
end;
ShowMessage (IntToStr (acnt)+' ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² Π½Π°ΠΉΠ΄Π΅Π½ΠΎ');
end;
procedure TForm1. btn1Click (Sender: TObject);
begin
gen_bars ();
end;
end.