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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°β€“ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ для построСния ΠœΠŸβ€“Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ‚ΠΎΡ€Π° ΠΏΠΎ Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ пСрСдаСтся Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½Ρ‹Ρ… символов, подлСТащая Ρ€Π°Π·Π±ΠΎΡ€Ρƒ, организовываСтся Ρ†ΠΈΠΊΠ» Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ осущСствляСтся ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρƒ состояниями Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ считываСмым ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° ячССк. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ Ссли Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΡΠΎΡΡ‚ояниС ошибки ΠΈΠ»ΠΈ достигаСтся максимальноС число ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ (50 000) Ρ†ΠΈΠΊΠ» прСкращаСтся ΠΈ Π²Ρ‹Π΄Π°Π΅Ρ‚ся сообщСниС ΠΎ Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ, Ρ†ΠΈΠΊΠ» продолТаСтся ΠΏΠΎΠΊΠ° Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°β€“ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ для построСния ΠœΠŸβ€“Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ‚ΠΎΡ€Π° ΠΏΠΎ Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

  • Π‘ΠžΠ”Π•Π Π–ΠΠΠ˜Π•

Π—Π°Π΄Π°Π½ΠΈΠ΅ Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

1 ВСорСтичСскиС ΠΈ ΠΏΡ€Π°ΠΊΡ‚ичСскиС основы Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Ρ‚Π΅ΠΌΡ‹

1.1 ВСория ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ²

1.2 ΠžΠ±Π»Π°ΡΡ‚ΠΈ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ примСнСния Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ²

2 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°

2.1 Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ трСбования ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°ΠΌ

2.2 ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΠ°Ρ структура Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ПП

2.3 ОбоснованиС Π²Ρ‹Π±ΠΎΡ€Π° срСдств Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

2.4 Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ схСма (Π±Π»ΠΎΠΊ-схСма)

2.5 Алгоритм Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ПП

2.6 Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ экранных Ρ„ΠΎΡ€ΠΌ

2.7 БистСму контроля Π½Π΅ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… дСйствий ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

3 Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, инструкция ΠΏΠΎ ΠΈΠ½ΡΡ‚алляции

3.1 ВрСбования ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ срСдствам

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А

РЕЀЕРАВ

ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠžΡΠ½ΠΎΠ²Ρ‹ дискрСтной ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ» Π½Π° Ρ‚Π΅ΠΌΡƒ: «ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° — конструктор для построСния МП — транслятора ΠΏΠΎ Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ»

Π’ Ρ€Π°Π±ΠΎΡ‚Π΅ рассмотрСн вопрос построСния Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ²-трансляторов с ΠΌΠ°Π³Π°Π·ΠΈΠ½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… цСлях, для построСния Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ² с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ использованиСм созданных Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… прилоТСниях, создаваСмых с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ срСды программирования Delphi.

Π Π°Π±ΠΎΡ‚Π° посвящСна ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° дискрСтной ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ, ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρ‹-трансляторы с ΠΌΠ°Π³Π°Π·ΠΈΠ½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. На ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ построСниС МП-транслятора ΠΏΡƒΡ‚Π΅ΠΌ задания ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ транслятор. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ тСорСтичСский ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ большого затруднСния. ВСорСтичСский ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» излагаСтся Π½ΠΈΠΆΠ΅ Π² Π·Π°ΠΏΠΈΡΠΊΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ справочной слуТбы ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π Π°Π±ΠΎΡ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° достаточно наглядно, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΌ для использования Π΅Π³ΠΎ Π² Ρ†Π΅Π»ΡΡ… Π±ΠΎΠ»Π΅Π΅ качСствСнного обучСния студСнтов ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π²Ρ‹ΡˆΠ΅ Ρ€Π°Π·Π΄Π΅Π»Ρƒ дискрСтной ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова:

дискрСтная ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°, МП-транслятор, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π°, входная Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ°, выходная Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ°.

Π’ Π½Π°ΡΡ‚оящСС врСмя ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ всС Ρ‡Π°Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡƒΡ‚очнСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Π½ΠΎ ΠΈ Π΄Π»Ρ постановки ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ экспСримСнта, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях ΠΏΡ€ΠΈΠ·Π²Π°Π½Π½ΠΎΠ³ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ дорогостоящий Π½Π°Ρ‚ΡƒΡ€Π½Ρ‹ΠΉ экспСримСнт. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ дальнСйшСС Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ матСматичСского модСлирования связано с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ соврСмСнных срСдств ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠΊΠ°ΠΊ инструмСнта ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ высококвалифицированных спСциалистов, построСния ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, накоплСния ΠΈ Ρ…ранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ исслСдования этих ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Ρ‚. Π΅. с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π½ΠΎΠ²Ρ‹Ρ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ для образования ΠΈ Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… исслСдований.

Π Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π½Π°ΡƒΡ‡Π½ΠΎ-тСхничСского прогрСсса Π²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ€ΠΎΡΡ‚Ρƒ потрСбности Π² Ρ‚СхничСских, матСматичСских ΠΈ ΠΈΠ½Ρ‹Ρ… расчСтах, Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°Ρ…. НС ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ мСсто Π² Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… исслСдованиях Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ матСматичСскоС ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. Π’ ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠ΅ ΠΈ ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ MathCAD для проСктирования всСвозмоТныС процСссов, ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ², сигналов.

Π’Π°ΠΊΠΆΠ΅ матСматичСскоС ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΌΠ΅Ρ‚аллургичСских направлСниях. Π’ Ρ‡Π°ΡΡ‚ности Π² Π”Π“ΠœΠ производится матСматичСскоС ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ горячСй ΠΈ Ρ…ΠΎΠ»ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠΊΠ°Ρ‚ΠΊΠΈ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ PASCAL. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡΡ матСматичСскоС ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ процСсса пСрСворачивания сталСразливочных ковшСй, расчСт мСханичСских свойств Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚Π°Π»Π»ΠΎΠ² ΠΈ ΡΠΏΠ»Π°Π²ΠΎΠ² Π² ΡƒΡΠ»ΠΎΠ²ΠΈΡΡ… Ρ…ΠΎΠ»ΠΎΠ΄Π½ΠΎΠΉ Π΄Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π°Π½Π°Π»ΠΈΠ· влияния Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² процСсса Ρ…ΠΎΠ»ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠΊΠ°Ρ‚ΠΊΠΈ Π½Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ основных энСргосиловых ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

Π’ ΡΠ²ΡΠ·ΠΈ с ΡˆΠΈΡ€ΠΎΠΊΠΈΠΌ распространСниСм Π±Ρ‹ΡΡ‚Ρ€ΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… элСктронно-Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… машин Π³Π»Π°Π²Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ матСматичСского модСлирования стала Π·Π°Π΄Π°Ρ‡Π° обСспСчСния интСрактивности взаимодСйствия исслСдоватСля с ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Π² Ρ‚ΠΎΠΌ числС, Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π’ Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… исслСдованиях это сводится ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ ΡΠΎΡΡ‚Π°Π²Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… срСдств интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ исходных Π΄Π°Π½Π½Ρ‹Ρ… с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΈΡ… Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρ‹, частотных ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… характСристик, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ, исслСдуСмым ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. НаучныС достиТСния Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… срСдств ΠΈ Ρ€ΡΠ΄ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² для обСспСчСния Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎ-машинного интСрфСйса, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… динамичСских систСм, Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚

ДискрСтная ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°— Ρ€Π°Π·Π΄Π΅Π» ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉΡΡ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π°.

ДискрСтная ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ Ρ‚Π°ΠΊΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ ΠΊΠ°ΠΊ мноТСства, Π°Π»Π³Π΅Π±Ρ€Π° высказываний, тСория ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ², тСория Π³Ρ€Π°Ρ„ΠΎΠ².

Π’ ΡΡ‚ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ прСдпринята ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡˆΠΈΡ€Π΅ понятиС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ²-трансляторов с ΠΌΠ°Π³Π°Π·ΠΈΠ½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ.

Delphi являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ быстрых срСдств для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ (написаниС ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ созданиС Π²ΠΈΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками).

Однако основная Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ прилоТСния — алгоритмичСская ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° качСствСнного интСрфСйса Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ облСгчаСтся ΠΏΡ€ΠΈ использовании срСд Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования, Π° Ρ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° тСорСтичСская Π±Π°Π·Π°.

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° использовалась интСгрированная срСда Delphi 6.

1 ВСорСтичСскиС ΠΈ ΠΏΡ€Π°ΠΊΡ‚ичСскиС основы Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Ρ‚Π΅ΠΌΡ‹

1.1 ВСория ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ²

ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ (Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ КА) — абстрактноС Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ устройство с Ρ„иксированным ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ объСмом памяти, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π° Π²Ρ…ΠΎΠ΄Π΅ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ символов Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°), Π° Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ сообщаСт ΠΎΠ± ΠΈΡ… ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ‚ΠΈ ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ мноТСству, для распознания ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½.

По ΡΡƒΡ‚ΠΈ ΠšΠ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пропускаСт «ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅» Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ. Другая Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²ΠΊΠ° КА — ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ распознания рСгулярных, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… мноТСств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ строит программист ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ кодирования (Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ языкС).

Π”Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π΄Π»Ρ всСх рСгулярных мноТСств ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ КА-Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚Π΅Π»ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠšΠ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ возмоТности ΡΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ количСство символов ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ. Для этой Ρ†Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ устройство — ΠΌΠ°Π³Π°Π·ΠΈΠ½, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ символы ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈΡ…, запоминая ΠΈΠ»ΠΈ сравнивая количСство символов Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ. Π’Π°ΠΊΠΎΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ называСтся Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠΌ распознаватСлСм с ΠΌΠ°Π³Π°Π·ΠΈΠ½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ (сокращСнно — МП-распознаватСлСм).

Но Π² Ρ€ΡΠ΄Π΅ случаСв ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ рСгулярного мноТСства Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΅Π³ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мноТСство. Π’Π°ΠΊΠΈΠ΅ дСйствия ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ МП-транслятор, Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ выходная Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ°.

МП-транслятор задаСтся :

1.ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ мноТСством Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… символов (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ символ ΠΊΠΎΠ½Ρ†Π° Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ «ΒΆ»).

2.ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ мноТСством Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… символов.

3.ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ мноТСством ΠΌΠ°Π³Π°Π·ΠΈΠ½Π½Ρ‹Ρ… символов (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ Π΄Π½Π° ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° — 'Β€').

4.ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ мноТСством состояний.

5.Π£ΠΏpΠ°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎpая ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Ρ‚Ρ€Π΅Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²: Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ символ, ΠΌΠ°Π³Π°Π·ΠΈΠ½Π½Ρ‹ΠΉ символ (Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ символ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°), состояниС — ставит Π² ΡΠΎΠΎΡ‚вСтствиС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: дСйствиС с ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠΌ, Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ символом, состояниСм ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ символом.

5.HΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ (Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ содСpΠΆΠΈΠΌΠΎΠ΅ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°).

6.ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎΠΌ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ (ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ — состояниС МП-транслятора ΠΈ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ символ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ символ «ΠΊΠΎΠ½Π΅Ρ† Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ»).

ДопускаСмыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Π²Ρ…ΠΎΠ΄ΠΎΠΌ:

1.Π”Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ символ (Π”).

2.ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΌΡƒ символу (П).

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ символ послС ΠΏΡ€ΠΈΡ…ΠΎΠ΄Π° символа «ΒΆ» («ΠΊΠΎΠ½Π΅Ρ† Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ»).

ДопускаСмыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠΌ

1.Π’Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π½Ρ‹ΠΉ символ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, А (Π’Ρ‚.А).

2.Π’Ρ‹Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ ΠΈΠ· ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ символ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, А (Π’Ρ‹Ρ‚.А).

3.ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ°Π³Π°Π·ΠΈΠ½ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (О).

Ряд ячССк ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Π΅Π· дСлСния Π½Π° ΠΏΠΎΠ»Ρ Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ символом Π• (состояниС ошибки). Если МП-транслятор ΠΏΠΎΠΏΠ°Π» Π² Ρ‚Π°ΠΊΠΎΠ΅ состояниС, Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ прСкращаСтся ΠΈ Ρ‚акая Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° отвСргаСтся.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ для МП-транслятора Π±ΡƒΠ΄Π΅Ρ‚ сообщСниС «Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ» ΠΈΠ»ΠΈ «ΠΎΡ‚Π²Π΅Ρ€Π³Π½ΡƒΡ‚ΡŒ» ΠΈ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° получаСмая Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅. Входная Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° допускаСтся МП-транслятором, Ссли ΠΏΠΎΠ΄ воздСйствиСм этой Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚, Π½Π°Ρ‡Π°Π²ΡˆΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ (Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ состоянии ΠΈ Ρ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ содСрТимым ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°) ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΊ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ послС поступлСния символа «ΠΊΠΎΠ½Π΅Ρ† Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ», ΠΈΠ½Π°Ρ‡Π΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° отвСргаСтся.

Рассмотрим строСниС ячСйки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² МП-транслятора.

Рис. 1 — Π²ΠΈΠ΄ ячСйки МП-транслятора

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ МП-транслятора для распознания Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ мноТСства Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ — процСсс творчСский ΠΈ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΉ. ВСорСтичСски для распознания ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ мноТСства Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ бСсконСчноС мноТСство ΠšΠ. ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ распознания ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΊΠΎ Π²ΡΡΠΊΠΎΠΌΡƒ рСгулярному мноТСству.

1.2 ΠžΠ±Π»Π°ΡΡ‚ΠΈ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ примСнСния Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ²

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΡˆΠΈΡ€ΠΎΠΊΠΎ примСняСтся Π² Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… устройствах, ΠΊΠ°ΠΊ Π½Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΌ, Ρ‚Π°ΠΊ ΠΈ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ уровнях: это компиляторы, трансляторы ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΈ, антивирусныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ‚. ΠΏ. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ любой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ слоТности.

2 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°

2.1 Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ трСбования ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°ΠΌ

К ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°ΠΌ (Π΄Π°Π»Π΅Π΅ ПП) ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ряд Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ПП Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ друТСствСнным интСрфСйсом, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ просто Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π° Π½Π΅ Ρ‚Π΅Ρ€ΡΡ‚ΡŒΡΡ Π² Π΄ΠΎΠ³Π°Π΄ΠΊΠ°Ρ… ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ элСмСнта управлСния. Π’ ΠΈΠ΄Π΅Π°Π»Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ «ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎΡ‚ ΡΡ‚Π°ΠΏΠ° Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ Ρ€Π°Π·Π²ΠΈΡ‚ΠΎΠΉ систСмой ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ справочной подсистСмой, Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ руководством ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Для обСспСчСния этих ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ стандартизованный ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятный интСрфСйс, принятый Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… графичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах, Ρ‡Ρ‚ΠΎ позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ Ρ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΅Π³ΠΎ элСмСнтов управлСния, Π° Π½Π΅ΠΏΠΎΡΡ€Π΅Π΄ΡΡ‚Π²Π΅Π½Π½ΠΎ с ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сразу послС этого ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

2.2 ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΠ°Ρ структура Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ПП

ΠŸΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ прилоТСния, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ структуру Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

Выбранная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ основана Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ языкС (Object Pascal), Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠŸΠŸ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹:

TMyStack — инкапсулируСт свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Ρ„ункционирования стСка.

TMPrasp — инкапсулируСт свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Ρ„ункционирования МП-транслятора.

ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, созданы (с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° (IDE Delphi).

ΠœΠΎΠ΄ΡƒΠ»ΠΈ :

DMKurs — Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠŸΠŸ (отрисовку, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, сохранСниС, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…)

Mpunit — созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° МП-транслятора ΠΈ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

AddUn — Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… элСмСнтов МП-транслятора

EditUn — Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ячСйки.

ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, созданы (с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° (IDE Delphi). Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ПП, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ согласно Π²Ρ‹Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… курсовой прСдставлСна Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.

Рис. 2 — Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°

ПослС Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ прСдлагаСтся Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ МП-транслятора; Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ячСйки; Ρ€Π°Π·Π±ΠΎΡ€ Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° (прСдусмотрСн ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ ΠΈ Π°Π²Ρ‚оматичСский Ρ€Π°Π·Π±ΠΎΡ€, ΠΏΡ€ΠΈ пошаговом Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° отобраТаСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ).

ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠŸΠŸ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ трСбования. БСгодня прилоТСния, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ достаточной наглядности. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹Π±ΠΎΡ€ срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния возмоТностСй Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡ наглядности ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, прСдоставляСмых Ρ‚Π΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹ΠΌ срСдством Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

2.3 ОбоснованиС Π²Ρ‹Π±ΠΎΡ€Π° срСдств Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ мною Π²Ρ‹Π±Ρ€Π°Π½ΠΎ срСдство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Delphi вСрсии 6.0. Π­Ρ‚ΠΎ срСдство ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΈ ΡƒΡΠΊΠΎΡ€ΡΠ΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ графичСского ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ усилия Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ΅ срСдство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ отличаСтся ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ΠΎΠ² алгоритмичСских языков высокого уровня класса Pascal 6.0−7.0, Π‘ 3.0 ΠΈ Ρ‚. Π΄.

Π‘Ρ€Π΅Π΄ΠΈ соврСмСнных срСдств Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования (Visual Basic, Visual C++ ΠΈ Ρ‚. Π΄.) Delphi Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ отличаСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ позволяСт быстро ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΌΠΎΡ‰Π½Ρ‹Π΅ прилоТСния. Π₯отя Visual Basic нашСл ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спрос ΠΈ ΠΏΠΎΠΌΠΎΠ³ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΌΠΈΡ€ программирования для нСпрофСссионалов, ΠΎΠ½ Π½Π΅ Π»ΠΈΡˆΠ΅Π½ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… — низкая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ, нСдостаточная ΡΡ‚Ρ€ΠΎΠ³ΠΎΡΡ‚ΡŒ языка. Π’.ΠΊ. Delphi Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° ΠΏΠΎΠ·ΠΆΠ΅ Visual Basic, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ нСдостатки послСднСго срСдства Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±Ρ‹Π»ΠΈ устранСны.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π½Π° ΠΌΠΎΠΉ взгляд, Delphi являСтся ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ для создания ΠΌΠΎΡ‰Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

2.4 Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ схСма (Π±Π»ΠΎΠΊ-схСма)

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ схСма Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3.

Π½Π΅Ρ‚

Π΄Π°

Рис. 3 — Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ схСма ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°

2.5 Алгоритм Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ПП

Основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠŸΠŸ являСтся функция CheckChain, находящаяся Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Mpunit, которая Π²Ρ‹Π΄Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π·Π±ΠΎΡ€Π° Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ («Π”опуск», «ΠΠ΅Ρ‚ допуска»).

Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° допускаСтся Ссли ΠΏΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄Ρƒ символа «ΠΊΠΎΠ½Π΅Ρ† Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ» ΠΏΠ°Ρ€Π°

«Π‘остояниС — ΠΌΠ°Π³Π°Π·ΠΈΠ½Π½Ρ‹ΠΉ символ» находится Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅ допустимых состояний.

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ пСрСдаСтся Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½Ρ‹Ρ… символов, подлСТащая Ρ€Π°Π·Π±ΠΎΡ€Ρƒ, организовываСтся Ρ†ΠΈΠΊΠ» Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ осущСствляСтся ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρƒ состояниями Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ считываСмым ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° ячССк. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ Ссли Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΡΠΎΡΡ‚ояниС ошибки ΠΈΠ»ΠΈ достигаСтся максимальноС число ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ (50 000) Ρ†ΠΈΠΊΠ» прСкращаСтся ΠΈ Π²Ρ‹Π΄Π°Π΅Ρ‚ся сообщСниС ΠΎ Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ, Ρ†ΠΈΠΊΠ» продолТаСтся ΠΏΠΎΠΊΠ° Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ символом Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ символ ΠΊΠΎΠ½Ρ†Π° Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ, Ссли Ρ†ΠΈΠΊΠ» Π±Ρ‹Π» Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ‚ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΠ΅Ρ‚ся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, находится Π»ΠΈ состояниС Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ» Ρ€Π°Π±ΠΎΡ‚Ρƒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ срСди допустимых, ΠΈ Π²Ρ‹Π΄Π°Π΅Ρ‚ся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° TmyStack, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π½Ρ‹Ρ… символов, Π²Ρ‹Ρ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ символ, Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ символ Π½Π° Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ, Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ символ.

2.6 Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ экранных Ρ„ΠΎΡ€ΠΌ

Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ

Для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ МП-транслятора Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· ΠΌΠ΅Π½ΡŽ Ρ„Π°ΠΉΠ» Новый. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ символы, состояния, ΠΌΠ°Π³Π°Π·ΠΈΠ½Π½Ρ‹Π΅ символы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ этих дСйствий ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π·Π°Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ΠŸΠΎΡ‚ΠΎΠΌ слСдуСт Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ячСйки, для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΏΠΎ ΡΡ‡Π΅ΠΉΠΊΠ΅. ПослС этого появится ΠΎΠΊΠ½ΠΎ рСдактирования ячСйки.

Окно рСдактирования ячСйки

Π—Π°ΠΏΠΎΠ»Π½ΠΈΠ² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ Π½Π° ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠΌΡƒ мноТСству для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ построСн ΠœΠŸΡ‚Ρ€Π°Π½ΡΠ»ΡΡ‚ΠΎΡ€. Для этого Π½ΡƒΠΆΠ½ΠΎ Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π ΠΠ—Π‘ΠžΠ  Π¦Π•ΠŸΠžΠ§ΠšΠ˜ ΠΈ Π² ΠΎΠΊΠ½ΠΎ Π ΠΠ—Π‘ΠžΠ  ввСсти Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ. Вводимая Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ символы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΈ построСнии транслятора, ΠΈΠ½Π°Ρ‡Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ сообщСниС

Если Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚:

Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Π΄ΠΎΠΏΡƒΡ‰Π΅Π½Π° ΠΈΠ»ΠΈ Π½Π΅Ρ‚ ΠΈ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄.

2.7 БистСма контроля Π½Π΅ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… дСйствий ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Для Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠŸΠŸ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв организовываСтся Π²Ρ‹Π±ΠΎΡ€ Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ…. На ΡΠΊΡ€Π°Π½ выводится Ρ„ΠΎΡ€ΠΌΠ° содСрТаниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ зависит ΠΎΡ‚ Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Сю Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ список, содСрТащий Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΠ΅Ρ€Π΅Π΄ занСсСниСм этих Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚Π΅Π»ΡŒ организуСтся прСдпроцСссор ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π»ΠΈ Π²Π²ΠΎΠ΄. Π’Π°ΠΊΠΈΠΌ способом осущСствляСтся Π²Π²ΠΎΠ΄ Π½ΠΎΠ²Ρ‹Ρ… символов, ΠΌΠ°Π³Π°Π·ΠΈΠ½Π½Ρ‹Ρ… символов (ΠΎΠ½ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Ссли Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ся Π² Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π΅), Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ состояния Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° (символы Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π΅). Π’ ΡΠ»ΡƒΡ‡Π°Π΅ Ρ€Π°Π·Π±ΠΎΡ€Π° Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ, Ρ‚Π°ΠΊΠΆΠ΅ организовываСтся прСдпроцСссор Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ происходит ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° принадлСТности Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… символов. Π’ΠΎ Π²ΡΠ΅Ρ… случаях возникновСния ошибок появляСтся ΠΎΠΊΠ½ΠΎ содСрТащСС сообщСниС ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅.

3 Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, инструкция ΠΏΠΎ ΠΈΠ½ΡΡ‚алляции

3.1 ВрСбования ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ срСдствам

Для эффСктивной Ρ€Π°Π±ΠΎΡ‚Ρ‹ спроСктированного ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ комплСкса Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΌΡƒ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ:

CPU Π½Π΅ Π½ΠΈΠΆΠ΅ Pentium-133

8 Mb ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти (ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ 32 Mb)

ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 1Mb свободного дискового пространства

1 Mb Π²ΠΈΠ΄Π΅ΠΎΠΏΠ°ΠΌΡΡ‚ΠΈ опСрационная систСма Windows 95/98/2000/NT.

ΠœΠ°Π½ΠΈΠΏΡƒΠ»ΡΡ‚ΠΎΡ€ ΠΌΡ‹ΡˆΡŒ.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ тСстировано Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… конфигурациях:

Β· Intel Celeron 400, 32 Mb RAM, Windows 98

Β· Intel Pentium || Celeron 266, 64 Mb RAM, Windows 98

Β· AMD K6 || 333, 64 Mb RAM, Windows NT 4.0

Β· Intel Pentium 166, 16 Mb RAM, Windows 95

Π’Ρ‹Π²ΠΎΠ΄

Π’ Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° я Π±Π»ΠΈΠΆΠ΅ ознакомился с Ρ‚Π΅ΠΎΡ€ΠΈΠ΅ΠΉ ΠœΠŸΡ‚Ρ€Π°Π½ΡΠ»ΡΡ‚ΠΎΡ€ΠΎΠ², научился ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ — конструкторы для построСния МП — транслятора ΠΏΠΎ Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ, Π·Π°ΠΊΡ€Π΅ΠΏΠΈΠ» знания ΠΏΠΎ ΡΠΈΡΡ‚Π΅ΠΌΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. Разрабатывая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, я Π½Π°ΡƒΡ‡ΠΈΠ»ΡΡ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ знания дискрСтной ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ программиста.

Π’ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ интСрфСйс.

Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

unit DmKurs;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

MPunit, ComCtrls, ToolWin, Menus, StdCtrls, ExtCtrls, Grids, Addun,

ActnList, ImgList, ExtDlgs, Buttons, ButtonComps, RunText;

type

TMainPr = class (TForm)

StatusBar1: TStatusBar;

MainMenu1: TMainMenu;

pc1: TPageControl;

File1: TMenuItem;

Help1: TMenuItem;

New1: TMenuItem;

Save1: TMenuItem;

Load1: TMenuItem;

N1: TMenuItem;

Exit1: TMenuItem;

tsEdit: TTabSheet;

ActionList1: TActionList;

alCreateNew: TAction;

ImageList1: TImageList;

tsCheck: TTabSheet;

dgMP: TDrawGrid;

alRepaint: TAction;

ToolBar1: TToolBar;

tbNew: TToolButton;

alSave: TAction;

sd1: TSaveDialog;

ToolButton1: TToolButton;

ToolButton2: TToolButton;

alLoad: TAction;

od1: TOpenDialog;

pm: TPopupMenu;

New2: TMenuItem;

Save2: TMenuItem;

Load2: TMenuItem;

N2: TMenuItem;

Exit2: TMenuItem;

spd1: TSavePictureDialog;

tsAdd: TTabSheet;

alExit: TAction;

tlSavePicture: TToolButton;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

alHelp: TAction;

ToolButton3: TToolButton;

N6: TMenuItem;

N7: TMenuItem;

GroupBox2: TGroupBox;

buSymbAdd: TButton;

buDelSymb: TButton;

buClear: TButton;

Panel6: TPanel;

Label15: TLabel;

buNextStep: TButton;

lbStep: TListBox;

rgCheck: TRadioGroup;

buCheck: TButton;

plStData: TPanel;

buStopTrace: TBitBtn;

Panel1: TPanel;

lbResult: TLabel;

plChain: TEdit;

GroupBox1: TGroupBox;

mmNotes: TMemo;

Panel3: TPanel;

Label9: TLabel;

sgStartMag: TStringGrid;

buStartAdd: TButton;

buStartDel: TButton;

Panel4: TPanel;

Label10: TLabel;

cbStartingSt: TComboBox;

Panel5: TPanel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

cbStEd: TComboBox;

cbMagStEd: TComboBox;

cbSymbEd: TComboBox;

buCellEdit: TButton;

Panel2: TPanel;

Panel7: TPanel;

Label1: TLabel;

Label4: TLabel;

Label6: TLabel;

Label8: TLabel;

lbStNum: TLabel;

lbFirstSt: TLabel;

Label7: TLabel;

sgMagList: TStringGrid;

sgSymbList: TStringGrid;

sgMagStart: TStringGrid;

Panel8: TPanel;

sgGood: TStringGrid;

Label5: TLabel;

rgWhatAdd: TRadioGroup;

Panel9: TPanel;

Button1: TButton;

procedure FormClose (Sender: TObject; var Action: TCloseAction);

procedure tsAddShow (Sender: TObject);

procedure tsEditShow (Sender: TObject);

procedure buStartAddClick (Sender: TObject);

procedure buStartDelClick (Sender: TObject);

procedure alCreateNewExecute (Sender: TObject);

procedure cbStartingStChange (Sender: TObject);

procedure buCellEditClick (Sender: TObject);

procedure sgGoodSelectCell (Sender: TObject; ACol, ARow: Integer;

var CanSelect: Boolean);

procedure buSymbAddClick (Sender: TObject);

procedure buDelSymbClick (Sender: TObject);

procedure buClearClick (Sender: TObject);

procedure buCheckClick (Sender: TObject);

procedure PaintMP;

procedure ChangeGood (i, j: integer);

procedure dgMPDrawCell (Sender: TObject; ACol, ARow: Integer;

Rect: TRect; State: TGridDrawState);

procedure alRepaintExecute (Sender: TObject);

procedure dgMPTopLeftChanged (Sender: TObject);

procedure dgMPSelectCell (Sender: TObject; ACol, ARow: Integer;

var CanSelect: Boolean);

procedure alSaveExecute (Sender: TObject);

procedure alLoadExecute (Sender: TObject);

procedure FormCreate (Sender: TObject);

procedure buStopTraceClick (Sender: TObject);

procedure FormResize (Sender: TObject);

procedure Step;

procedure SetTrace;

procedure buNextStepClick (Sender: TObject);

procedure alExitExecute (Sender: TObject);

procedure alHelpExecute (Sender: TObject);

procedure N5Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

MainPr: TMainPr;

MP:TMPRasp;

Color1:Integer=clRed;

Color2:Integer=clWhite;

Color3:Integer=clYellow;

Color4:Integer=clFuchsia;

implementation

uses EditUn, AboutUn;

const CellSize=60;

LineEnd='ΒΆ';

drx=4;

dry=4;

Ready:boolean=false;

StepOver:boolean=false;

Num1=4;

TracePar:array [1.Num1] of String=

('НомСр символа Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅: ',

'Π‘ΠΈΠΌΠ²ΠΎΠ»: ',

'Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС: ',

'Π’Π΅Ρ€Ρ…Π½ΠΈΠΉ символ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°: ');

SaveDir='Save';

PicturesDir='Pictures';

var DrawSt, DrawMg, DrawSmb: boolean;

tmp:TBitmap;

TempParams:TSaveMP;

initialdir:string;

St, tt, ss: word;

TraceResult:boolean;

SymbI:integer;

Chain:string;

{$R *.DFM}

procedure TMainPr. FormClose (Sender: TObject; var Action: TCloseAction);

var MDR: integer;

begin

if Ready then begin

MDR:=MessageDlg ('Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ МП-транслятор?', mtConfirmation,[mbYes, mbNo, mbCancel], 0);

if MDR<>MrCancel then begin

if MDR=mrYes then alSaveExecute (Sender);

Mp.Del;

Mp.Free;

TMP.free;

Ready:=false;

end

else Action:=caNone;

end;

end;

procedure TMainPr. tsAddShow (Sender: TObject);

var i, j: byte;

begin

if Ready then begin

with mp. params do begin

sgGood.ColCount:=MagSymbNum+1;

sgGood.RowCount:=StateNum+1;

for j:=1 to StateNum do

sgGood.cells[0,j]: ='S'+inttostr (j);

for i:=1 to MagSymbNum do begin

sgGood.cells[i, 0]: =MagSymbols[i];

for j:=1 to StateNum do begin

if MP. Good[j, i] then

sgGood.Cells[i, j]: ='Π”ΠΎΠΏ.'

else

sgGood.Cells[i, j]:='ΠžΡ‚Π².'

end;

end;

end;

lbStNum.caption:=inttostr (Mp.Params.StateNum);

lbFirstSt.caption:=inttostr (Mp.Params.StartingState);

sgMagList.colcount:=mp.Params.MagSymbNum;

sgSymbList.colcount:=mp.Params.SymbNum+1;

sgMagStart.ColCount:=length (mp.params.StartingMagState);

for i:=1 to mp.Params.MagSymbNum do begin

sgMagList.Cells[i-1,0]: =mp.Params.MagSymbols[i];

end;

if Mp.Params.SymbNum=0 then sgSymbList. Cells[0,0]: =LineEnd

else

for i:=1 to mp.Params.SymbNum do begin

sgSymbList.Cells[i, 0]: =mp.Params.Symbols[i];

end;

for i:=1 to Length (mp.Params.StartingMagState) do begin

sgMagStart.Cells[i-1,0]: =mp.Params.StartingMagState[i];

end;

end;

end;

procedure TMainPr. tsEditShow (Sender: TObject);

var i: byte;

begin

if Ready then begin

With MP. Params do begin

sgStartMag.ColCount:=length (StartingMagState);

for i:=1 to Length (StartingMagState) do begin

sgStartMag.Cells[i-1,0]: =StartingMagState[i];

end;

if DrawSt then begin

cbStartingSt.items.clear;

for i:=1 to StateNum do begin

cbStartingst.items.add ('S'+inttostr (i));

end;

cbStEd.items.clear;

cbStartingst.ItemIndex:=StartingState-1;

cbStartingst.text:=cbStartingst.items[cbStartingst.ItemIndex];

for i:=1 to StateNum do begin

cbStEd.items.add ('S'+inttostr (i));

end;

cbStEd.ItemIndex:=StartingState-1;

cbStEd.text:=cbStEd.items[cbStEd.ItemIndex];

end;

if DrawMg then begin

cbMagStEd.items.clear;

for i:=1 to MagSymbNum do begin

cbMagStEd.items.add (MagSymbols[i]);

end;

cbMagStEd.text:=cbMagStEd.items[0];

end;

if DrawSmb then begin

cbSymbEd.items.clear;

for i:=1 to SymbNum do begin

cbSymbEd.items.add (Symbols[i]);

end;

cbSymbEd.text:=cbSymbEd.items[0];

end;

end;

DrawSt:=false;

DrawMg:=false;

DrawSmb:=false;

end;

end;

procedure TMainPr. buStartAddClick (Sender: TObject);

var MR: word;

begin

if ready then begin

WhatAdd:=MgA;

Send:=copy (Mp.Params.MagSymbols, 2, Length (Mp.Params.MagSymbols));

MR:=Adding.ShowModal;

if MR=100 then begin

MP.Params.StartingMagState:=Mp.Params.StartingMagState+res;

end;

tsEdit.Hide;

tsEdit.Show;

end;

end;

procedure TMainPr. buStartDelClick (Sender: TObject);

begin

if ready then begin

if length (Mp.Params.StartingMagState)>1 then begin

Mp.Params.StartingMagState:=

copy (Mp.Params.StartingMagState, 1, Length (Mp.Params.StartingMagState)-1);

end;

tsEdit.Hide;

tsEdit.Show;

end;

end;

procedure TMainPr. alCreateNewExecute (Sender: TObject);

label 1;

var c: word;

begin

if not ready then begin

Ready:=true;

1: MP:=TMPRasp.Create;

lbResult.Caption:='';

mmNotes.Clear;

Mp.Init;

tsAdd.Hide;

tsAdd.show;

DrawSt:=true;

DrawMg:=true;

DrawSmb:=true;

TMP:=TBitmap.create;

mmNotes.text :='';

plChain.Text:='';

dgMP.DefaultColWidth:=CellSize;

dgMP.DefaultRowHeight:=CellSize;

paintMP;

end

else begin

c:=MessageDlg ('Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»?', mtConfirmation,[mbYes, mbNo, mbCancel], 0);

case c of

mrYes: begin

alSaveExecute (Sender);

goto 1;

end;

mrNo: begin

goto 1;

end;

mrCancel: begin

;

end;

end;

end;

end;

procedure TMainPr. cbStartingStChange (Sender: TObject);

begin

if ready then begin

if cbStartingSt. ItemIndex<>-1 then

Mp.Params.StartingState:=cbStartingSt.ItemIndex+1;

end;

end;

procedure TMainPr. buCellEditClick (Sender: TObject);

var MR: integer;

begin

if ready then begin

ii:=cbStEd.ItemIndex+1;

if length (trim (cbMagStEd.text))=1 then

jj:=mp.MagSymbPos (cbMagStEd.text[1]);

if length (trim (cbSymbEd.text))=1 then

kk:=mp.SymbPos (cbSymbEd.text[1]);

if (ii>0) and (jj>0) and (kk>0) then begin

Mr:=Editing.ShowModal;

if mr=111 then begin

PaintMP;

mp.cell[ii, jj, kk]: =temp;

end;

end

else

MessageDlg ('НСвСрно ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ячСйка!'

mtWarning,[mbOk], 0);

end;

end;

procedure TMainPr. sgGoodSelectCell (Sender: TObject; ACol, ARow: Integer;

var CanSelect: Boolean);

begin

ChangeGood (ARow, ACol);

sgGood.Hide;

sgGood.Show;

end;

procedure TMainPr. buSymbAddClick (Sender: TObject);

var MR: Integer;

begin

if ready then begin

WhatAdd:=SmbA;

Send:=copy (Mp.Params.Symbols, 1, Length (Mp.Params.Symbols));

MR:=Adding.ShowModal;

if MR=100 then begin

plChain.Text:=plChain.Text+res;

lbResult.Caption:='';

end;

tsCheck.Hide;

tsCheck.Show;

end;

end;

procedure TMainPr. buDelSymbClick (Sender: TObject);

begin

plChain.Text:=copy (plChain.Text, 1, Length (plChain.Text)-1);

lbResult.Caption:='';

end;

procedure TMainPr. buClearClick (Sender: TObject);

begin

plChain.Text:='';

lbResult.Caption:='';

end;

procedure TMainPr. buCheckClick (Sender: TObject);

var s: string;

i:integer;

ok:boolean;

begin

if Ready then begin

s:=plChain.Text;

if Length (s)=0 then begin

MessageDlg ('НС Π²Π²Π΅Π΄Π΅Π½Π° Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ°', mtWarning,[mbOk], 0);

plChain.SetFocus;

end

else begin

ok:=true;

for i:=1 to length (s) do begin

if pos (s[i], MP.Params.Symbols)=0 then ok:=false;

end;

if ok then begin

case rgCheck. ItemIndex of

0: begin

if Mp. CheckChain (s) then

s:='Π”ΠžΠŸΠ£Π‘Πš '

else

s:='НЕВ Π”ΠžΠŸΠ£Π‘ΠšΠ';

MessageDlg (s+' Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ', mtinformation,[mbOk], 0);

lbResult.Caption:=S;

end;

1: begin

if plChain. Text<>'' then begin

tsEdit.enabled:=false;

bucheck.Enabled:=false;

buSymbAdd.Enabled:=false;

buDelSymb.Enabled:=false;

buClear.Enabled:=false;

buNextStep.Enabled:=True;

buStopTrace.Enabled:=True;

plChain.enabled:=false;

StepOver:=True;

plStData.Caption:='';

TempParams.Params:=Mp.Params;

TempParams.Good:=Mp.Good;

TempParams.cell:=Mp.Cell;

lbStep.Items.Clear;

With MP do begin

SymbI:=1;

TraceResult:=false;

State:=Params.StartingState;

Chain:=plChain.Text;

Stack.Init (Params.StartingMagState);

Ss:=SymbPos (Chain[SymbI]);

tt:=MagSymbPos (Stack.Top);

St:=State;

end;

SetTrace;

PaintMP;

end;

end;

end;

end

else begin

MessageDlg ('НСкоторыС символы строки Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ', mtWarning,[mbOk], 0);

plChain.SetFocus;

end;

end;

end;

end;

procedure TMainPr. PaintMP;

begin

if Ready then

with MP. Params do begin

dgMP.ColCount:=SymbNum+3;

dgMp.RowCount:=StateNum*MagSymbNum+1;

dgMP.hide;

dgMP.Show;

end;

end;

procedure TMainPr. dgMPDrawCell (Sender: TObject; ACol, ARow: Integer;

Rect: TRect; State: TGridDrawState);

var a: trect;

x, y, y1,y2:word;

s, D: string;

TC:TMPCell;

begin

if ready then begin

a.Left:=1;

a.Top:=1;

a.Right:=CellSize;

a.Bottom:=CellSize;

tmp.Height:=Cellsize;

tmp.width:=Cellsize;

x:=Acol-1;

y:=ARow;

with mp. params do begin

if y mod MagSymbNum = 0 then

y1:=y div MagSymbNum

else y1:=(y div MagSymbNum)+1;

if y mod MagSymbNum = 0 then

y2:=MagSymbNum

else y2:=y mod MagSymbNum;

with tmp. canvas do begin

if (Acol<2) or (Arow=0) then

Brush.Color:=Color1

else

if (x=Symbnum+1) then

Brush.Color:=Color4

else

Brush.Color:=Color2;

Rectangle (a);

if StepOver and (((y1=st) and (y2=tt) and (x=ss) and (x>0))

or ((y1=st) and (y2=tt) and (ss=0) and (x=Length (Symbols)+1)))

then begin

Brush.Color:=Color3;

Rectangle (a);

end;

if (Arow=0) and (acol>1) then begin

if (x<=SymbNum) then

TextOut ((tmp.Width-TextWidth (Symbols[x])) div 2,

(tmp.Height-TextHeight (Symbols[x])) div 2, Symbols[x])

else TextOut ((tmp.Width-TextWidth (LineEnd)) div 2,

(tmp.Height-TextHeight (LineEnd)) div 2, LineEnd);

end;

if (Acol=0) and (arow>0) then begin

TextOut ((tmp.Width-TextWidth ('S'+inttostr (y1))) div 2,

(tmp.Height-TextHeight ('S')) div 2,'S'+inttostr (y1));

end;

if (Acol=1) and (arow>0) then begin

TextOut ((tmp.Width-TextWidth (MagSymbols[y2])) div 2,

(tmp.Height-TextHeight (MagSymbols[y2])) div 2, MagSymbols[y2]);

end;

if (Acol>1) and (arow>0) then begin

if (x>SymbNum) then begin

if MP. Good[y1,y2] then s:='Π”ΠΎΠΏ.'

else s:='ΠžΡ‚Π².';

TextOut ((tmp.Width-TextWidth (s)) div 2,

(tmp.Height-TextHeight (s)) div 2, s);

end

else begin

TC:=MP.Cell[y1,y2,x];

if tc. NextState=Err then begin

s:='Ошибка';

TextOut ((tmp.Width-TextWidth (s)) div 2,

(tmp.Height-TextHeight (s)) div 2, s);

end

else begin

MoveTo (0,tmp.height div 3);

Lineto (tmp.width div 2,2*tmp.height div 3);

LineTo (tmp.width, tmp. height div 3);

Moveto (tmp.width div 2,2*tmp.height div 3);

Lineto (tmp.width div 2, tmp. height-14);

Moveto (0,tmp.height-14);

Lineto (tmp.width, tmp. height-14);

if MP. Cell[y1,y2,x]. WithSymb then s:='П'

else s:='Π”';

TextOut (tmp.Width-(TextWidth (s)+drx),

tmp.Height-(TextHeight (s)+dry)-14,s);

s:='S'+inttostr (TC.NextState);

TextOut (drx, tmp. Height-(TextHeight (s)+dry)-12,s);

s:=editing.cbWhatDo.Items[tc.mag];

if length (s)>1 then s:=copy (editing.cbWhatDo.Items[tc.mag], 1,3)+'.';

TextOut ((tmp.Width-(TextWidth (s)))div 2, dry+TextHeight (s), s);

s:=tc.Pushing;

TextOut ((tmp.Width-(TextWidth (s)))div 2, dry, s);

D:=tc.Vihod;

TextOut ((tmp.Width-TextWidth (D)) div 2, tmp. Height-14,D);

end;

end;

end;

end;

end;

dgMp.canvas.CopyRect (Rect, tmp. canvas, a);

end;

end;

procedure TMainPr. alRepaintExecute (Sender: TObject);

begin

if ready then begin

dgMP.Hide;

dgMp.Show;

end;

end;

procedure TMainPr. dgMPTopLeftChanged (Sender: TObject);

begin

PaintMP;

end;

procedure TMainPr. dgMPSelectCell (Sender: TObject; ACol, ARow: Integer;

var CanSelect: Boolean);

var x, y, y1,y2:word;

Mr:integer;

begin

if not StepOver and Ready then begin

x:=Acol-1;

y:=ARow;

with mp. params do begin

if y mod MagSymbNum = 0 then

y1:=y div MagSymbNum

else y1:=(y div MagSymbNum)+1;

if y mod MagSymbNum = 0 then

y2:=MagSymbNum

else y2:=y mod MagSymbNum;

if (x>0) and (x<=SymbNum) and (Arow>0) then begin

ii:=y1;

jj:=y2;

kk:=x;

cbStEd.ItemIndex:=y1;

cbMagStEd.ItemIndex:=y2;

cbSymbEd.ItemIndex:=x;

cbStEd.text:=cbStEd.items[y1];

cbMagStEd.text:=cbMagStEd.items[y2];

cbSymbEd.text:=cbSymbEd.items[x];

Mr:=Editing.ShowModal;

if mr=111 then begin

mp.cell[ii, jj, kk]: =Result;

PaintMP;

end;

end

else

if (y>0) and (x=SymbNum+1) then begin

changeGood (y1,y2);

if pc1. ActivePageIndex=0 then begin

tsAdd.Hide;

tsAdd.Show;

end;

end;

end;

end;

end;

procedure TMainPr. ChangeGood (i, j: integer);

begin

if MessageDlg ('Π’Ρ‹Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ состояниС ячСйки', mtConfirmation,[mbOk, mbCancel], 0)=mrOk

then mp. SetGood (i, j);

PaintMP;

end;

procedure TMainPr. alSaveExecute (Sender: TObject);

var tmp: Shortstring;

begin

if ready then begin

TMP := mmNotes. text;

sd1.initialdir:=initialdir+SaveDir;

if sd1. execute then begin

mp.savetofile (tmp, sd1. filename);

end;

end;

end;

procedure TMainPr. alLoadExecute (Sender: TObject);

label 1;

var c: integer;

note:string;

begin

od1.initialdir:=initialdir+savedir;

if ready then begin

c:=MessageDlg ('Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ МП-транслятор?', mtConfirmation,[mbYes, mbNo, mbCancel], 0);

case c of

mrYes: begin

alSaveExecute (Sender);

end;

mrNo: begin

;

end;

mrCancel: begin

goto 1;

end;

end;

end;

if od1. Execute then begin

pc1.Enabled:=true;

Ready:=true;

MP:=TMPRasp.Create;

MP.LoadFromFile (od1.FileName, note);

mmNotes.text :=note;

plChain.Text:='';

tsAdd.Hide;

tsAdd.show;

tsEdit.Hide;

tsEdit.show;

tsCheck.hide;

tsCheck.show;

DrawSt:=true;

DrawMg:=true;

DrawSmb:=true;

TMP:=TBitmap.create;

dgMP.DefaultColWidth:=CellSize;

dgMP.DefaultRowHeight:=CellSize;

paintMP;

end;

1: end;

procedure TMainPr. FormCreate (Sender: TObject);

var s: string;

i:integer;

begin

Application.Title:='ΠžΠ”Πœ. МП-транслятор';

s:=paramstr (0);

i:=length (s);

while s[i]<>'' do

i:=i-1;

initialdir:=copy (s, 1, i);

end;

procedure TMainPr. buStopTraceClick (Sender: TObject);

begin

if ready then begin

tsEdit.enabled:=true;

bucheck.Enabled:=true;

buSymbAdd.Enabled:=true;

buDelSymb.Enabled:=true;

buClear.Enabled:=true;

buNextStep.Enabled:=False;

buStopTrace.Enabled:=False;

plChain.enabled:=true;

StepOver:=False;

MP.Params:=TempParams.Params;

MP.Good:=TempParams.Good;

MP.cell:=TempParams.Cell;

if TraceResult then lbResult. caption:='Π”ΠžΠŸΠ£Π‘Πš'

else lbResult. caption:='НЕВ Π”ΠžΠŸΠ£Π‘ΠšΠ';

PaintMP;

end;

end;

procedure TMainPr. FormResize (Sender: TObject);

begin

PaintMp;

end;

procedure TMainPr. SetTrace;

var i: integer;

s:string;

begin

plStData.caption:=MP.Stack.Data;

lbStep.Items.clear;

for i:=1 to Num1 do begin

case i of

1: begin

s:=inttostr (SymbI);

end;

2: begin

if SymbI>Length (Chain) then s:=LineEnd

else s:=Mp.Params.Symbols[ss];

end;

3: begin

s:='S'+inttostr (St);

end;

4: begin

s:=MP.Stack.Top;

end;

end;

lbStep.Items.Add (TracePar[i]+s);

end;

end;

procedure TMainPr. Step;

begin

With mp do begin

if (State<>Err) and (SymbI<=Length (Chain)) then begin

Ss:=SymbPos (Chain[SymbI]);

if Ss>0 then begin

tt:=MagSymbPos (Stack.Top);

St:=State;

With Cell[St, Tt, Ss] do begin

SetMag (Mag, Pushing);

State:=NextState;

if WithSymb then SymbI:=SymbI+1;

end;

Ss:=SymbPos (Chain[SymbI]);

tt:=MagSymbPos (Stack.Top);

St:=State;

end

Else State:=Err;

end;

If (State<>Err) and (SymbI=Length (Chain)+1) then begin

tt:=MagSymbPos (Stack.Top);

TraceResult:=Good[State, tt];

buNextStep.Enabled:=False;

end

else if State=Err then begin

lbResult.caption:='НЕВ Π”ΠžΠŸΠ£Π‘ΠšΠ';

buNextStep.Enabled:=False;

end;

end;

end;

procedure TMainPr. buNextStepClick (Sender: TObject);

var s: string;

begin

Step;

SetTrace;

PaintMp;

if buNextStep. Enabled=False then begin

if TraceResult then

s:='Π”ΠžΠŸΠ£Π‘Πš '

else

s:='НЕВ Π”ΠžΠŸΠ£Π‘ΠšΠ';

MessageDlg (s+' Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ', mtinformation,[mbOk], 0);

lbResult.Caption:=S;

end;

end;

procedure TMainPr. alExitExecute (Sender: TObject);

begin

MainPr.Close;

end;

procedure TMainPr. alHelpExecute (Sender: TObject);

begin

Application.HelpCommand (HELP_finder, 0);

end;

procedure TMainPr. N5Click (Sender: TObject);

begin

About.ShowModal;

end;

procedure TMainPr. Button1Click (Sender: TObject);

var MR: word;

begin

if ready then begin

with rgWhatAdd do begin

case ItemIndex of

0: begin WhatAdd:=St; Send:=''; end;

1: begin WhatAdd:=MgS; Send:=Mp.Params.MagSymbols; end;

2: begin WhatAdd:=Smb; Send:=Mp.Params.Symbols; end;

end;

end;

MR:=Adding.ShowModal;

if MR=100 then begin

with rgWhatAdd do begin

case ItemIndex of

0: begin

if not mp. AddState

then MessageDlg ('НСвозмоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ состояниС!'

mtWarning,[mbOk], 0);

DrawSt:=True;

end;

1: begin

if not mp. AddMagState (res)

then MessageDlg ('НСвозмоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π½Ρ‹ΠΉ символ!'

mtWarning,[mbOk], 0);

DrawMg:=True;

end;

2: begin

if not mp. AddSymb (res)

then MessageDlg ('НСвозмоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ символ!'

mtWarning,[mbOk], 0);

DrawSmb:=True;

end;

end;

PaintMp;

end;

end;

tsEdit.Hide;

tsEdit.Show;

end;

end;

end.

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