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

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° прилоТСния с нСсколькими ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈ Ρ„Π°ΠΉΠ» ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° основС критичСской сСкции Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ частСй Ρ„Π°ΠΉΠ»Π°

Лабораторная Ρ€Π°Π±ΠΎΡ‚Π°ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π”ΠΆΠ΅Ρ„Ρ„Ρ€ΠΈ Π ΠΈΡ…Ρ‚Π΅Ρ€. Windows для профСссионалов: созданиС эффСктивных Win32 ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ спСцифики 64-разрядной Windows /ΠŸΠ΅Ρ€. с Π°Π½Π³Π». — 4-Π΅ ΠΈΠ·Π΄. — Π‘ΠΏΠ±.: ΠŸΠΈΡ‚Π΅Ρ€; М.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ «Π ΡƒΡΡΠΊΠ°Ρ рСдакция», 2008. — 722 с.: ΠΈΠ». Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прилоТСния Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ срСду Microsoft Visual Studio 2010 Express, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ являСтся соврСмСнной, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° прилоТСния с нСсколькими ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈ Ρ„Π°ΠΉΠ» ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° основС критичСской сСкции Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ частСй Ρ„Π°ΠΉΠ»Π° (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° прилоТСния с Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΠΌΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈ Ρ„Π°ΠΉΠ» ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ критичСской сСкции Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ частСй Ρ„Π°ΠΉΠ»Π°

Π—Π°Π΄Π°Π½ΠΈΠ΅

ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с Ρ‚рСмя Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ. ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ заполняСт Ρ„Π°ΠΉΠ» 10 000 — ΠΌΠΈ Ρ‚Ρ€Π΅Ρ…Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… записСй, поля ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. КаТдая запись интСрпрСтируСтся ΠΊΠ°ΠΊ Ρ†Π²Π΅Ρ‚ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ RGB ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся для закраски ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ рисунка Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния. ΠžΠ±Π»Π°ΡΡ‚ΡŒ рисунка ΠΎΠΊΠ½Π° прилоТСния разбиваСтся Π½Π° 100Π§100 ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ². Записи Ρ„Π°ΠΉΠ»Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π½Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² области рисунка построчно. ПослС создания Ρ„Π°ΠΉΠ»Π° записСй Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ прорисовываСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ рисунка. Π”Π°Π»Π΅Π΅, ΠΏΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ‚Ρ€ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠ°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΏΠΎΡ‚ΠΎΠΊ упорядочиваСт записи Ρ„Π°ΠΉΠ»Π° Π² ΠΏΠΎΡ€ΡΠ΄ΠΊΠ΅ возрастания ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ полю (ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ красного Ρ†Π²Π΅Ρ‚Π°). Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΏΠΎΡ‚ΠΎΠΊ упорядочиваСт записи ΠΏΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ полю (ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°) Π² ΠΏΠΎΡ€ΡΠ΄ΠΊΠ΅ возрастания ΠΏΡ€ΠΈ равСнствС Ρƒ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ. Π’Ρ€Π΅Ρ‚ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΏΠΎΡ‚ΠΎΠΊ упорядочиваСт записи ΠΏΠΎ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌΡƒ полю (ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ синСго Ρ†Π²Π΅Ρ‚Π°) Π² ΠΏΠΎΡ€ΡΠ΄ΠΊΠ΅ возрастания ΠΏΡ€ΠΈ равСнствС Ρƒ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ ΠΈ Π²Ρ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ. УпорядочСниС производится пСрСстановкой Π΄Π²ΡƒΡ… сосСдних записСй ΠΏΡƒΡ‚Π΅ΠΌ цикличСского продвиТСния ΠΏΠΎ Π·Π°ΠΏΠΈΡΡΠΌ Ρ„Π°ΠΉΠ»Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Для обСспСчСния Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΏΡ€ΠΈ сравнСнии ΠΈ ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ΅ сосСдних записСй ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ. Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ Ρ„Π°ΠΉΠ»Π° ΠΈ Π΅Π³ΠΎ частСй Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. ПослС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ пСрСстановки ΠΏΠ°Ρ€Ρ‹ сосСдних записСй Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ пСрСрисовка ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠ°Ρ€Ρ‹ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ рисунка ΠΎΠΊΠ½Π° прилоТСния. ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² производится ΠΏΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. ΠŸΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ элСмСнты управлСния Π² ΠΈΠ½Ρ‚СрфСйсС прилоТСния. Для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ наблюдСния Π·Π° Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² прСдусмотритС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Π΅. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ вынСситС Π² ΠΈΠ½Ρ‚СрфСйс прилоТСния.

1. Анализ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области

Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прилоТСния Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ срСду Microsoft Visual Studio 2010 Express, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ являСтся соврСмСнной, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ, ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ бСсплатной.

Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· Ρ‚СхничСского задания, Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΏΠ»Π°Π½, содСрТащий основныС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ задания ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

+ интСрфСйс

+ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий

+ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ посрСдством критичСских сСкции

+ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ всСх / ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ВсС дСйствия ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ†Π²Π΅Ρ‚ΠΎΠΌ ΠΈ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ WinAPI-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

2. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ прилоТСния

ΠŸΠ΅Ρ€Π΅Π΄ созданиСм ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π½Π° ΠΏΠ°Ρ€Ρƒ ΠΌΠΈΠ½ΡƒΡ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ красных пиксСлСй Π±Ρ‹Π»Π° вытСснСна Π² ΠΏΡ€Π°Π²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ.

1. ПанСль управлСния ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ / Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ

2. ПанСль управлСния Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ.

3. Кнопка, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ / ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ сразу всСх Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²

4. Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 100×100 ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰Π΅Π΅ Ρ…ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

5. Π˜Π½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ…ΠΎΠ΄Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠ°, производящСго сортировку ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ RGB-Ρ†Π²Π΅Ρ‚Π°.

6. Π˜Π½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ…ΠΎΠ΄Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠ°, производящСго сортировку ΠΏΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ RGB-Ρ†Π²Π΅Ρ‚Π°.

7. Π˜Π½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ…ΠΎΠ΄Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠ°, производящСго сортировку ΠΏΠΎ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ RGB-Ρ†Π²Π΅Ρ‚Π°.

3. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ модуля, Ρ‚.ΠΊ. ΠΊΠΎΠ΄ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ Π½Π΅ Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚ся Π² Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠΈ Π½Π° ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅.

// course_work027.cpp

#include «stdafx.h»

#include

#include

#include

#include «stdlib.h»;

#include «time.h»;

#define NUM 10 000 // ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ пиксСлСй

#define MAX 16 581 375 // МаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ RGB-Ρ†Π²Π΅Ρ‚Π° Π² int-прСдставлСнии

#define Randomize () srand ((unsigned) time (NULL)); // Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

const short X1 = 270; // ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ выводится Ρ…ΠΎΠ΄ сортировки

const short X2 = 370;

const short Y1 = 10;

const short Y2 = 110;

HWND hwnd;

HINSTANCE hInst; // Для сохранСния дСскриптора прилоТСния

CRITICAL_SECTION cs; // Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ критичСской сСкции

HDC hdc = NULL; // ДСскриптор ΠΏΠΎΠ»ΠΎΡ‚Π½Π° для рисования

RECT rect; // ΠŸΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ для позиционирования элСмСнтов управлСния

bool pause=0; // Π€Π»Π°Π³ ΠΏΠ°ΡƒΠ·Ρ‹

int colors[10 001]; // Π¦Π²Π΅Ρ‚ пиксСлСй

int delay=0; // Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ

// Удобная функция для Π²Ρ‹Π²ΠΎΠ΄Π° сообщСний

void ShowMessage (wchar_t* wch) {MessageBoxW (NULL, wch, wch, NULL);

}

// Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайных чисСл Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅

int Random (int range_min, int range_max)

{

return (double) rand () / (RAND_MAX + 1) * (range_max — range_min)+ range_min;

}

// Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайных чисСл ΠΎΡ‚ 0 Π΄ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ значСния

int Random (int range_max)

{

return (double) rand () / (RAND_MAX + 1) * (range_max);

}

// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ тСкст ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠΎ ID

wchar_t* getText (int hItem) {

int length = GetWindowTextLength (GetDlgItem (hwnd, hItem));

if (length > 0)

{

wchar_t* tempChar;

tempChar= (wchar_t*) GlobalAlloc (GPTR, length + 1);

GetDlgItemText (hwnd, hItem, LPWSTR (tempChar), length + 1);

return tempChar;

}

return 0;

}

// ΠŸΠΎΡ‚ΠΎΠΊΠΈ запросов

HANDLE hThread1 = NULL;

HANDLE hThread2 = NULL;

HANDLE hThread3 = NULL;

// Π€Π»Π°Π³ΠΈ активности ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²

bool bThrActive[3];

// Код Π²Ρ‹Ρ…ΠΎΠ΄Π°

DWORD dwExitCode;

APIENTRY WinMain (HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

static wchar_t szAppName[]=L «arbora_course27»;

MSG msg;

WNDCLASSEX wndclass;

hInst = hInstance;

// Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ критичСской сСкции

InitializeCriticalSection (&cs);

// Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΈ с Ρ„Π»Π°Π³ΠΎΠΌ, «Π·Π°ΠΏΡƒΡΠΊ оТидаСтся»

hThread1 = CreateThread (NULL, 0,&Thread1, NULL, CREATE_SUSPENDED, NULL);

hThread2 = CreateThread (NULL, 0,&Thread2, NULL, CREATE_SUSPENDED, NULL);

hThread3 = CreateThread (NULL, 0,&Thread3, NULL, CREATE_SUSPENDED, NULL);

// Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΎΠΊΠ½ΠΎ

wndclass.cbSize = sizeof (wndclass);

wndclass.style = CS_HREDRAW | CS_VREDRAW;

wndclass.lpfnWndProc = WndProc;

wndclass.cbClsExtra = 0;

wndclass.cbWndExtra = 0;

wndclass.hInstance = hInstance;

wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION);

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);

wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);

wndclass.lpszMenuName = NULL;

wndclass.lpszClassName = szAppName;

wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION);

// РСгистрируСм ΠΎΠΊΠ½ΠΎ

RegisterClassEx (&wndclass);

hwnd = CreateWindow (szAppName, L «ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° Арбора Π‘Π΅Ρ€Π³Π΅ΠΉ ΠŸΠ•-01Π± (Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 27)», WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, CW_USEDEFAULT,

500, 300,

NULL, NULL, hInstance, NULL);

ShowWindow (hwnd, nCmdShow);

UpdateWindow (hwnd);

// Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ†ΠΈΠΊΠ» сообщСний

while (GetMessage (&msg, NULL, 0, 0))

{

TranslateMessage (&msg);

DispatchMessage (&msg);

}

// Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ всСх ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈ ΡΠ΅ΠΌΠ°Ρ„ΠΎΡ€ΠΎΠ² ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅

TerminateThread (hThread1, dwExitCode);

TerminateThread (hThread2, dwExitCode);

TerminateThread (hThread3, dwExitCode);

CloseHandle (hThread1);

CloseHandle (hThread2);

CloseHandle (hThread3);

// Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ критичСской сСкция

DeleteCriticalSection (&cs);

return msg. wParam;

}

DWORD APIENTRY Thread1 (PVOID lpParameter)

{

while (true) {

int k=0; // ΠžΠ±Ρ…ΠΎΠ΄ массива с Ρ†Π²Π΅Ρ‚ΠΎΠΌ пиксСлСй

for (int i=0; i<100; ++i)

for (int j=0; j<100; ++j) {

Sleep (delay); // Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ°

// Если ΠΏΠΎΡ‚ΠΎΠΊ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΈΠ»ΠΈ ΠΏΠ°ΡƒΠ·Π° — пропуск ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ

if (! bThrActive[0] || pause) continue;

// Π’Ρ…ΠΎΠ΄ Π² ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ

EnterCriticalSection (&cs);

// Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ…ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π΅ΠΌΡƒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ

SetPixel (hdc, X1+110+j, Y1+i, RGB (155,0,0));

// ΠŸΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌ Ρ‚ΠΈΠΏ int ΠΊ COLORREF

COLORREF cl1 = colors[k];

COLORREF cl2 = colors [k+1];

// Если Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ пиксСль содСрТит большС Ρ†Π²Π΅Ρ‚Π° ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ сортируСт ΠΏΠΎΡ‚ΠΎΠΊ Ρ‡Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ — смСна мСстами ΠΈ ΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²ΠΊΠ°

if (GetRValue (cl1) > GetRValue (cl2))

{

SetPixel (hdc, X1+j, Y1+i, cl2);

SetPixel (hdc, X1+j+1, Y1+i, cl1);

int x = colors[k];

colors[k] = colors [k+1];

colors [k+1] = x;

}

// Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΊΡ€ΠΈΡ‚ичСской сСкции

LeaveCriticalSection (&cs);

++k;

}

// ΠŸΡ€ΠΎΡ…ΠΎΠ΄ Ρ†ΠΈΠΊΠ»Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ — стираСм Π·Π°ΠΊΡ€Π°ΡˆΠ΅Π½Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ

RECT r;

r.left = X1+110;

r.top = Y1;

r.right = X2+110;

r.bottom = Y2;

InvalidateRect (hwnd,&r, true);

}

}

DWORD APIENTRY Thread2 (PVOID lpParameter)

{

while (true) {

int k=0;

for (int i=0; i<100; ++i) {

for (int j=0; j<100; ++j) {

Sleep (delay);

if (! bThrActive[1]) continue;

EnterCriticalSection (&cs);

SetPixel (hdc, X1+j, Y1+110+i, RGB (0,155,0));

if (! pause) {

COLORREF cl1 = colors[k];

COLORREF cl2 = colors [k+1];

if (GetGValue (cl1) > GetGValue (cl2)) {

SetPixel (hdc, X1+j, Y1+i, cl2);

SetPixel (hdc, X1+j+1, Y1+i, cl1);

int x = colors[k];

colors[k] = colors [k+1];

colors [k+1] = x;

}

}

LeaveCriticalSection (&cs);

++k;

}

}

RECT r;

r.left = X1;

r.top = Y1+110;

r.right = X2;

r.bottom = Y2+110;

InvalidateRect (hwnd,&r, true);

}

}

DWORD APIENTRY Thread3 (PVOID lpParameter)

{

while (true) {

int k=0;

for (int i=0; i<100; ++i) {

for (int j=0; j<100; ++j) {

Sleep (delay);

if (! bThrActive[2]) continue;

EnterCriticalSection (&cs);

SetPixel (hdc, X1+110+j, Y1+110+i, RGB (0,0,155));

if (! pause) {

COLORREF cl1 = colors[k];

COLORREF cl2 = colors [k+1];

if (GetBValue (cl1) > GetBValue (cl2))

{

SetPixel (hdc, X1+j, Y1+i, cl2);

SetPixel (hdc, X1+j+1, Y1+i, cl1);

int x = colors[k];

colors[k] = colors [k+1];

colors [k+1] = x;

}

}

LeaveCriticalSection (&cs);

++k;

}

}

RECT r;

r.left = X1+110;

r.top = Y1+110;

r.right = X2+110;

r.bottom = Y2+110;

InvalidateRect (hwnd,&r, true);

}

}

LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)

{

PAINTSTRUCT ps;

static HWND hCBThread[3]; // ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²

static HWND hEditDelay; // ПолС Π²Π²ΠΎΠ΄Π° Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ

static HWND hBtnDelay; // Кнопка установки Π½ΠΎΠ²ΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ

static HWND hBtnPause; // Кнопка ΠΏΠ°ΡƒΠ·Ρ‹

wchar_t szBuffer[100];

switch (iMsg)

{

case WM_CREATE:

GetClientRect (hwnd,&rect); // Установка Padding (отступ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠΊΠ½Π°)

rect.top+=10;

rect.bottom-=10;

rect.left+=10;

rect.right-=10;

// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ элСмСнтов интСрфСйса

hCBThread[0] = CreateWindow (L «BUTTON», L «ΠŸΠΎΡ‚ΠΎΠΊ 1», BS_AUTOCHECKBOX|WS_CHILD|WS_VISIBLE, rect. left, rect. top, 230, 30, hwnd, (HMENU) 1, hInst, NULL);

hCBThread[1] = CreateWindow (L «BUTTON», L «ΠŸΠΎΡ‚ΠΎΠΊ 2», BS_AUTOCHECKBOX|WS_CHILD|WS_VISIBLE, rect. left, rect. top+25, 230, 30, hwnd, (HMENU) 2, hInst, NULL);

hCBThread[2] = CreateWindow (L «BUTTON», L «ΠŸΠΎΡ‚ΠΎΠΊ 3», BS_AUTOCHECKBOX|WS_CHILD|WS_VISIBLE, rect. left, rect. top+50, 230, 30, hwnd, (HMENU) 3, hInst, NULL);

hEditDelay = CreateWindow (L «EDIT», NULL, WS_CHILD|WS_VISIBLE|WS_BORDER|ES_AUTOHSCROLL|ES_LEFT, rect. left, rect. top+100, 60, 30, hwnd, (HMENU) 12, hInst, NULL);

hBtnDelay = CreateWindow (L «BUTTON», L «Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ», WS_CHILD|WS_VISIBLE, rect. left+70, rect. top+100, 160, 30, hwnd, (HMENU) 13, hInst, NULL);

hBtnPause = CreateWindow (L «BUTTON», L «ΠŸΠ°ΡƒΠ·Π°», WS_CHILD|WS_VISIBLE, rect. left, rect. top+145, 230, 30, hwnd, (HMENU) 14, hInst, NULL);

// Активация ΠΊΠ½ΠΎΠΏΠΎΠΊ

SendMessage (hCBThread[0], BM_SETCHECK, 1, 0);

SendMessage (hCBThread[1], BM_SETCHECK, 1, 0);

SendMessage (hCBThread[2], BM_SETCHECK, 1, 0);

for (int i=0; i<3; ++i) bThrActive[i] = true;

for (int i=0; i

colors[10 000]=0;

ResumeThread (hThread1);

ResumeThread (hThread2);

ResumeThread (hThread3);

return 0;

case WM_PAINT:

GetClientRect (hwnd, &rect);

hdc = BeginPaint (hwnd, &ps);

HBRUSH hBrush;

HDC hdc;

hdc = GetDC (hwnd);

hBrush = CreateSolidBrush (RGB (0, 0, 0));

// ΠŸΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ исходя ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ отсортированного массива Ρ†Π²Π΅Ρ‚Π°

SelectObject (hdc, hBrush);

{

int k=0;

for (int i=0; i<100; ++i)

for (int j=0; j<100; ++j) {

SetPixel (hdc, X1+i, Y1+j, colors [k++]);

}

}

ReleaseDC (hwnd, hdc);

DeleteObject (hBrush);

return 0;

case WM_SIZE:

return 0;

case WM_COMMAND:

switch (LOWORD (wParam)) {

case 1: case 2: case 3:

// Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ / ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°

bThrActive [wParam-1] = (SendMessage (GetDlgItem (hwnd, wParam), BM_GETCHECK, 0, 0) == BST_CHECKED);

break;

case 13: // Установка Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ

delay = _wtoi (getText (12));

break;

case 14:

pause=! pause;

break;

}

return 0;

case WM_DESTROY:

PostQuitMessage (0);

return 0;

}

return DefWindowProc (hwnd, iMsg, wParam, lParam);

}

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

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

Β· Π£ΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях, Π·Π° ΡΡ‡Π΅Ρ‚ использования ΠΎΠ±Ρ‰Π΅Π³ΠΎ адрСсного пространства.

Β· Быстрота создания ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΠΌ, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² 100 Ρ€Π°Π·.

Β· ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ самой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚.ΠΊ. Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ вычислСния Π½Π° ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π΅ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π²Π²ΠΎΠ΄Π° / Π²Ρ‹Π²ΠΎΠ΄Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с Ρ‚рСмя ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСкст ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π° Π΄ΠΈΡΠΊ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию.

Π’ΠΎ Π²Ρ€Π΅ΠΌΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° я ΠΈΠ·ΡƒΡ‡ΠΈΠ» ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ» Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ использованиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ быстродСйствиС прилоТСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ….

Π’Π°ΠΊΠΆΠ΅ я ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΡΡ ΠΈ Π½Π°ΡƒΡ‡ΠΈΠ»ΡΡ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ WinAPI для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ быстродСйствиС ΠΈ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ доступ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ осущСствлялся Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· Windows.

Π’ ΠΈΡ‚ΠΎΠ³Π΅ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, наглядно Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ прилоТСния. Π£Π²Π΅Ρ€Π΅Π½, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ знания ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±ΠΎΠ»Π΅Π΅ слоТных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

1. А. Π’. Π“ΠΎΡ€Π΄Π΅Π΅Π². ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы: Π£Ρ‡Π΅Π±Π½ΠΈΠΊ для Π²ΡƒΠ·ΠΎΠ². 2-Π΅ ΠΈΠ·Π΄. — Π‘Пб.: ΠŸΠΈΡ‚Π΅Ρ€, 2007. — 416 с.: ΠΈΠ».

2. Π‘. Π’. Назаров. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ срСды, систСмы ΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ. ΠžΡΠ½ΠΎΠ²Ρ‹ структурной ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ: Π£Ρ‡Π΅Π±.пособиС. — Πœ.: ΠšΠ£Π”Π˜Π¦-ΠŸΠ Π•Π‘Π‘, 2007. — 504 с., ΠΈΠ»Π».

3. Π‘. Π’. Назаров, Π›. П. Π“ΡƒΠ΄Ρ‹Π½ΠΎ, А. А. ΠšΠΈΡ€ΠΈΡ‡Π΅Π½ΠΊΠΎ. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы. ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΌ. Под Ρ€Π΅Π΄. Π‘. Π’. Назарова — М.: ΠšΠ£Π”Π˜Π¦-ΠŸΠ Π•Π‘Π‘, 2008. — 464 с., ΠΈΠ»Π».

4. Π’. Π“. ΠžΠ»ΠΈΡ„Π΅Ρ€, Н. А. ΠžΠ»ΠΈΡ„Π΅Ρ€. Π‘Π΅Ρ‚Π΅Π²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы: Π£Ρ‡Π΅Π±Π½ΠΈΠΊ для Π²ΡƒΠ·ΠΎΠ². 2-Π΅ ΠΈΠ·Π΄. — Π‘Пб.: ΠŸΠΈΡ‚Π΅Ρ€, 2008. — 669 с.: ΠΈΠ».

5. Π”. Π’. Π˜Ρ€Ρ‚Π΅Π³ΠΎΠ².

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы. — 2-Π΅ ΠΈΠ·Π΄., ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±. ΠΈ Π΄ΠΎΠΏ. — Π‘Пб.: Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2008. — 1040 с.: ΠΈΠ». — (Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС)

6. Π₯. М. Π”Π΅ΠΉΡ‚Π΅Π», П.Π”ΠΆ. Π”Π΅ΠΉΡ‚Π΅Π», Π”. Π . ЧофнСс. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы. ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹: Π’Ρ€Π΅Ρ‚ΡŒΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π». — Πœ.: ООО «Π‘ΠΈΠ½ΠΎΠΌ-ΠŸΡ€Π΅ΡΡ», 2006 Π³. — 1024 с.: ΠΈΠ».

7. Π₯. М. Π”Π΅ΠΉΡ‚Π΅Π», П.Π”ΠΆ. Π”Π΅ΠΉΡ‚Π΅Π», Π”. Π . ЧофнСс. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы. РаспрСдСлСнныС систСмы, сСти, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ: Π’Ρ€Π΅Ρ‚ΡŒΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π». — Πœ.: ООО «Π‘ΠΈΠ½ΠΎΠΌ-ΠŸΡ€Π΅ΡΡ», 2006 Π³. — 704 с.: ΠΈΠ».

8. Π­. Π’Π°Π½Π΅Π½Π±Π°ΡƒΠΌ. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы. 2-Π΅ ΠΈΠ·Π΄. — Π‘Пб.: ΠŸΠΈΡ‚Π΅Ρ€, 2006. — 1038 с.: ΠΈΠ».

9. Π”. Бэкон, Π’. Π₯аррис. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы. — Π‘Пб.: ΠŸΠΈΡ‚Π΅Ρ€; КиСв: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ Π³Ρ€ΡƒΠΏΠΏΠ° BHV, 2004. — 800 с.: ΠΈΠ».

10. Π”ΠΆΠ΅Ρ„Ρ„Ρ€ΠΈ Π ΠΈΡ…Ρ‚Π΅Ρ€. Windows для профСссионалов (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Win32 API для WindowsNT 3.5 ΠΈ Windows 95) /ΠŸΠ΅Ρ€. с Π°Π½Π³Π». — Πœ.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΡ‚Π΄Π΅Π» «Π ΡƒΡΡΠΊΠ°Ρ рСдакция» ВОО «ChannelTradingLtd.», 1995. — 720 с.: ΠΈΠ».

11. Π”ΠΆΠ΅Ρ„Ρ„Ρ€ΠΈ Π ΠΈΡ…Ρ‚Π΅Ρ€. Windows для профСссионалов: созданиС эффСктивных Win32 ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ спСцифики 64-разрядной Windows /ΠŸΠ΅Ρ€. с Π°Π½Π³Π». — 4-Π΅ ΠΈΠ·Π΄. — Π‘ΠΏΠ±.: ΠŸΠΈΡ‚Π΅Ρ€; М.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ «Π ΡƒΡΡΠΊΠ°Ρ рСдакция», 2008. — 722 с.: ΠΈΠ».

12. Π§. ΠŸΠ΅Ρ‚Π·ΠΎΠ»Π΄. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для Windows 95. Π’ΠΎΠΌ 1: ΠΏΠ΅Ρ€. Ρ Π°Π½Π³Π». — Π‘Пб.: BHV — Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 1997. — 752 с., ΠΈΠ».

13. Π§. ΠŸΠ΅Ρ‚Π·ΠΎΠ»Π΄. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для Windows 95. Π’ΠΎΠΌ 2: ΠΏΠ΅Ρ€. Ρ Π°Π½Π³Π». — Π‘Пб.: BHV — Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 1997. — 368 с., ΠΈΠ».

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