ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ языка ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования 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.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ