Page 1

Ïàðòíåðñòâî â íàâ÷àíí³

Îñíîâè ïðîãðàìóâàííÿ

Êè¿â Âèäàâíè÷à ãðóïà BHV 2004


ÓÄÊ ÁÁÊ O-75

373.5:004](075.3) 32.973-018ÿ73

Ðåöåíçåíò: Ì. ². Æàëäàê, àêàä. ÀÏÍ Óêðà¿íè, ä-ð ïåä. íàóê, ïðîô.

O-75 Îñíîâè ïðîãðàìóâàííÿ. — Ê.: Âèäàâíè÷à ãðóïà BHV, 2004. — 288 ñ. ISBN 966-552-149-7 Ó êíèæö³ â ëåãê³é ³ äîñòóïí³é ôîðì³ âèêëàäàþòüñÿ îñíîâè ñòâîðåííÿ Windows-ïðîãðàì ó ñåðåäîâèù³ Visual Studio .NET. Ïî÷èíàþ÷è ç³ ñòâîðåííÿ ïðîãðàì çà äîïîìîãîþ ãðàô³÷íîãî ³íòåðôåéñó, ÷èòà÷ ïîñë³äîâíî çíàéîìèòüñÿ ç òàêèìè áàçîâèìè êîíöåïö³ÿìè ïðîãðàìóâàííÿ, ÿê çì³íí³, òèïè äàíèõ, îïåðàö³¿, îïåðàòîðè, ï³äïðîãðàìè òîùî. Ðîáî÷îþ ìîâîþ ïðîãðàìóâàííÿ â ïîñ³áíèêó º Visual Basic .NET. Âèäàííÿ ðîçðàõîâàíå íà ä³òåé ñåðåäíüîãî òà ñòàðøîãî øê³ëüíîãî â³êó, ó÷èòåë³â ³íôîðìàòèêè çàãàëüíîîñâ³òí³õ øê³ë, ë³öå¿â òà ã³ìíàç³é, à òàêîæ íà âñ³õ, õòî çíàéîìèòüñÿ ³ç ïðîãðàìóâàííÿì óïåðøå.

ÓÄÊ 373.5:004](075.3) ÁÁÊ 32.973-018ÿ73

Ðîçïîâñþäæóºòüñÿ áåçêîøòîâíî.

²íôîðìàö³ÿ, ùî ì³ñòèòüñÿ â öüîìó âèäàíí³, îòðèìàíà ç íàä³éíèõ äæåðåë ³ â³äïîâ³äຠòî÷ö³ çîðó êîðïîðàö³¿ Microsoft íà îáãîâîðþâàí³ ïèòàííÿ íà ïîòî÷íèé ìîìåíò. Ïðîòå âèäàâíèöòâî íå ìîæå ãàðàíòóâàòè àáñîëþòíó òî÷í³ñòü òà ïîâíîòó â³äîìîñòåé, íàâåäåíèõ ó ö³é êíèæö³, ³ íå íåñå â³äïîâ³äàëüíîñò³ çà ìîæëèâ³ ïîìèëêè, ïîâ’ÿçàí³ ç ¿õ âèêîðèñòàííÿì. Âèõîäÿ÷è ç óìîâ ðèíêîâî¿ êîí’þíêòóðè, ùî çì³íþºòüñÿ ³ âèìàãຠâ³äïîâ³äíîãî êîðèãóâàííÿ ðîçðîáîê, äàíó ³íôîðìàö³þ íå ñë³ä ðîçö³íþâàòè ÿê ïåâí³ çîáîâ’ÿçàííÿ ç áîêó êîðïîðàö³¿ Microsoft; êîðïîðàö³ÿ íå ìîæå ãàðàíòóâàòè òî÷íîñò³ ³íôîðìàö³¿, ùî áóäå íàäàíà ï³ñëÿ äàòè ïóáë³êàö³¿. ÊÎÐÏÎÐÀÖ²ß MICROSOFT ÍÅ ÍÀÄÀª ÆÎÄÍÈÕ ÃÀÐÀÍÒ²É, ÀͲ ßÂÍÈÕ, ÀͲ ÒÈÕ, ÙÎ ÌÀÞÒÜÑß ÍÀ ÓÂÀDz, Ó Ç’ßÇÊÓ Ç ²ÍÔÎÐÌÀÖ²ªÞ, ßÊÀ ̲ÑÒÈÒÜÑß Ó ÖÜÎÌÓ ÂÈÄÀÍͲ. Microsoft, Windows, Windows NT, Visual Studio, Visual Basic, Visual C#, Visual j#, IntellSense, åìáëåìà Office, åìáëåìà Windows, åìáëåìà Visual Studio, åìáëåìà Visual Basic, åìáëåìà .NET º òîâàðíèìè çíàêàìè êîðïîðàö³¿ Microsoft, ùî îõîðîíÿþòüñÿ â ÑØÀ òà ³íøèõ êðà¿íàõ. Íàâåäåí³ ó êíèæö³ íàçâè ³íøèõ ïðîäóêò³â àáî îðãàí³çàö³é ìîæóòü áóòè òîâàðíèìè çíàêàìè â³äïîâ³äíèõ âëàñíèê³â.

© Microsoft Corporation, 2004 ISBN 966-552-149-7

© Âèäàâíè÷à ãðóïà BHV, 2004


Ñòèñëèé çì³ñò Ðàë³ „Ïðàâèëà êîäóâàííÿ” Ìîäóëü 1. Âñþäè, ³ñêîíñèí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Ìîäóëü 2. ²äåàë, ²ëë³íîéñ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Ìîäóëü 3. Ïñåâäî, Ïåíñ³ëüâàí³ÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Ìîäóëü 4. Ôîðìàâ³ëü, ³ðäæèí³ÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Ìîäóëü 5. Àòðèáóòè, Äæîðäæ³ÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Ìîäóëü 6. XY, Àðêàíçàñ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Ìîäóëü 7. Îïåðàö, Îêëàõîìà. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Ìîäóëü 8. Ùî-ßêùî, Òåõàñ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Ìîäóëü 9. ßêùî-²íàêøå, Íüþ-Ìåêñèêî . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Ìîäóëü 10. Äîëèíà ïîâòîðåíü, Êàë³ôîðí³ÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Ìîäóëü 11. Öèêëîïîë³ñ, Êîëîðàäî . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Ìîäóëü 12. Ôóíêö³ÿ, ϳâäåííà Äàêîòà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

Ìàòåð³àëè äëÿ ³íñòðóêòîð³â Îãëÿä êóðñó . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 Ðîçâ’ÿçàííÿ âïðàâ ³ çàâäàíü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Äîäàòêîâ³ ïðîåêòè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 Ðåñóðñè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277


Çì³ñò Ðàë³ „Ïðàâèëà êîäóâàííÿ” Ìîäóëü 1. Âñþäè, ³ñêîíñèí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Ïðîãðàìè ó ïîâñÿêäåííîìó æèòò³ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Âïðàâà 1.1. Êîìï’þòåðè ó ïîâñÿêäåííîìó æèòò³ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Ùî ðîáëÿòü ïðîãðàì³ñòè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Âïðàâà 1.2. Ðîáîòà ó ñôåð³ ³íôîðìàö³éíèõ òåõíîëîã³é . . . . . . . . . . . . . . . . . . . . . . . . . 23 Ùî òàêå ïðîãðàìà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Ìîâè ïðîãðàìóâàííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Ñèíòàêñèñ ìîâ ïðîãðàìóâàííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Ñèíòàêñèñ Visual Basic .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Ïðèáóòòÿ äî ì³ñòà Âñþäè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Ìîäóëü 2. ²äåàë, ²ëë³íîéñ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Visual Studio .NET ÿê ³íòåãðîâàíå ñåðåäîâèùå ðîçðîáêè ïðîãðàì . . . . . . . . . . . . . . . . . 31 Ïåðøå çíàéîìñòâî ç Visual Studio .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Çàïóñê Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Êîðèñòóâàííÿ Visual Studio .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Ñòàðòîâà ñòîð³íêà ³íòåãðîâàíîãî ñåðåäîâèùà ðîçðîáêè. . . . . . . . . . . . . . . . . . . . . . . . 32 Âêëàäêà My Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Ñòâîðåííÿ íîâîãî ïðîåêòó . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 ³êíî New Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 ³êíî ðîçðîáêè ôîðìè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 ³êíî Toolbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Ïåðåì³ùåííÿ òà çì³íà ðîçì³ðó êíîïêè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Äîäàâàííÿ êîäó äî êíîïêè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Ïîáóäîâà âëàñíîãî ðîçâ’ÿçàííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Óñï³øíà ïîáóäîâà ðîçâ’ÿçàííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Íåâäàëà ïîáóäîâà ðîçâ’ÿçàííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Çàïóñê ïðîãðàìè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39


Âèâåäåííÿ íà åêðàí â³êíà ïîâ³äîìëåííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 ³êíî Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Çáåðåæåííÿ ïðîåêòó . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Âïðàâà 2.1. Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Ôàéëè òà ïàïêè ðîçâ’ÿçàííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Ïðèáóòòÿ äî ²äåàëó. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Âïðàâà 2.2. Ìîº ³ì'ÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Çàâäàííÿ 2. Çàêëàä øâèäêîãî õàð÷óâàííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Äîäàòêîâå çàâäàííÿ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Ìîäóëü 3. Ïñåâäî, Ïåíñ³ëüâàí³ÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Òèïè îïåðàòîð³â . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Ùî òàêå ïñåâäîêîä . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Âïðàâà 3.1. Çáèðàºìîñü ó ïîäîðîæ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Êîìåíòàð³ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Ïñåâäîêîä ÿê êîìåíòàð³ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 ³äñòóïè òà ïðîá³ëè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Âïðàâà 3.2. Ìèòòÿ ïîñóäó . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Çàâäàííÿ 3. Àêâàð³óì . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Äîäàòêîâå çàâäàííÿ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Ïðèáóòòÿ äî Ïñåâäî . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Ìîäóëü 4. Ôîðìàâ³ëü, ³ðäæèí³ÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Windows-ïðîãðàìè. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Ðîçðîáêà ôîðì . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Çàñòîñóâàííÿ ôîðì . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Àòðèáóòè ôîðì. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Åëåìåíòè óïðàâë³ííÿ òà ¿õ àòðèáóòè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Íàïèñ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Òåêñòîâå ïîëå . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Ïåðåìèêà÷ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Ïðàïîðåöü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Ïîëå ç³ ñïèñêîì . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Êîìàíäíà êíîïêà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Âïðàâà 4.1. Õòî º õòî . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Àêòèâàö³ÿ ïîä³é . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 ³êíà ïîâ³äîìëåíü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Ïðèáóòòÿ äî Ôîðìàâ³ëÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Âïðàâà 4.2. Âàðò³ñòü ï³öè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Äîäàòêîâå çàâäàííÿ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Çàâäàííÿ 4. Ãðà ó õðåñòèêè-íóëèêè. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Äîäàòêîâå çàâäàííÿ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

5


Ìîäóëü 5. Àòðèáóòè, Äæîðäæ³ÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Àòðèáóòè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Äå ïî÷èíàºòüñÿ êîä . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Ç÷èòóâàííÿ çíà÷åíü ïàðàìåòð³â ó êîä³ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Óñòàíîâëåííÿ çíà÷åíü àòðèáóò³â ó êîä³ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Âïðàâà 5.1. Áàðâèñòà âåñåëêà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Äîäàòêîâå çàâäàííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 IntelliSense òà êðàïêîâå ïîçíà÷åííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Ìåòîäè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Âèêëèê ìåòîä³â ó êîä³ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Ïðèáóòòÿ äî ì³ñòà Àòðèáóòè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Âïðàâà 5.2. Âèì³ðþâà÷ äèñòàíö³¿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Çàâäàííÿ 5. Êâ³òè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Äîäàòêîâå çàâäàííÿ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Ìîäóëü 6. XY, Àðêàíçàñ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 XY, Àðêàíçàñ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Îïåðàòîðè ïðèñâîþâàííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Òèïè. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Ïðèì³òèâí³ òèïè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Ùî òàêå çì³íí³? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Äëÿ ÷îãî âèêîðèñòîâóþòüñÿ çì³íí³? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Îãîëîøåííÿ çì³ííèõ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Äå îãîëîøóþòüñÿ çì³íí³ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Âïðàâà 6.1. ×èñëî p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 ²í³ö³àë³çàö³ÿ çì³ííèõ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Çàñòîñóâàííÿ çì³ííèõ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Ðîçïî÷èíàºìî ðîáîòó ç³ çì³ííèìè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 ²íø³ òèïè çì³ííèõ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Ïðèáóòòÿ äî XY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Âïðàâà 6.2. Ñòðèáîê æàáè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Çàâäàííÿ 6. Âèïðàâëåííÿ ïîìèëîê . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Äîäàòêîâå çàâäàííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Ìîäóëü 7. Îïåðàö, Îêëàõîìà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Îïåðàö, Îêëàõîìà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Îïåðàö³¿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Àðèôìåòè÷í³ îïåðàö³¿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Ðÿäêîâ³ îïåðàö³¿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Îïåðàö³ÿ Not . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Îïåðàö³¿ ó ïðèñâîþâàííÿõ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

6


Îïåðàö³¿ ó âèðàçàõ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Îïåðàö³¿ ïîð³âíÿííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Îïåðàö³ÿ Not òà îïåðàö³ÿ êîíêàòåíàö³¿ â 䳿 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Âïðàâà 7.1. Âàðò³ñòü áåíçèíó . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Äîäàòêîâå çàâäàííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Íàëàãîäæåííÿ êîäó . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Âèêîíàííÿ ïðîãðàìè ó ïîêðîêîâîìó ðåæèì³ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Ïðèáóòòÿ äî Îïåðàöó . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Âïðàâà 7.2. Íàëàãîäæåííÿ ïðîãðàìè. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Çàâäàííÿ 7. Îá÷èñëåííÿ îᒺìó . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Äîäàòêîâå çàâäàííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Ìîäóëü 8. Ùî-ßêùî, Òåõàñ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Ùî-ßêùî, Òåõàñ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Ïðèéíÿòòÿ ð³øåíü. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Áóëåâà ëîã³êà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Áóëåâ³ îïåðàö³¿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Îïåðàö³¿ ïîð³âíÿííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Óìîâíèé êîä. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Îïåðàòîð If...Then . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Á³ëüøå îäíîãî îïåðàòîðà If . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Âïðàâà 8.1. Ïîäàðóíêè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Á³ëüøå îäíîãî îïåðàòîðà âñåðåäèí³ If...End If . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Ìíîæèííèé âèá³ð . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Áóëåâ³ îïåðàö³¿ â êîä³ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Ïðèáóòòÿ äî Ùî-ßêùî . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Âïðàâà 8.2. Îö³íþâàííÿ âì³ííÿ ïðîãðàìóâàòè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Çàâäàííÿ 8. Ãðà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Äîäàòêîâå çàâäàííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Ìîäóëü 9. ßêùî-²íàêøå, Íüþ-Ìåêñèêî . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 ßêùî-²íàêøå, Íüþ-Ìåêñèêî . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Ðîçøèðþºìî îïåðàòîð If...Then . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Âêëàäåí³ îïåðàòîðè If...Then. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Ïðîòèëåæí³ óìîâè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 If...Then...Else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Âèêîíàííÿ îïåðàòîðà If ó ïîêðîêîâîìó ðåæèì³ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Âïðàâà 9.1. Ðàõóíîê ó ãîëüô³. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Îïåðàòîðè If ó ìîâàõ J# òà C#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Îïåðàö³¿ â ìîâàõ J# òà C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Ïðèáóòòÿ äî ßêùî-²íàêøå, Íüþ-Ìåêñèêî . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

7


Âðïàâà 9.2. Ìàã³÷íèé êâàäðàò . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Çàâäàííÿ 9. Îðåë ÷è ðåøêà. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Äîäàòêîâå çàâäàííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Ìîäóëü 10. Äîëèíà ïîâòîðåíü, Êàë³ôîðí³ÿ . . . . . . . . . . . . . . . . . . . . . . . . 149 Äîëèíà ïîâòîðåíü, Êàë³ôîðí³ÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Öèêëè. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 For…Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Âèêîíàííÿ öèêëó For…Next ó ïîêðîêîâîìó ðåæèì³ . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 1000 äîäàâàíü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Âèíîñèìî ñì³òòÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Âïðàâà 10.1. Ðàõóºìî êðîëèê³â . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Öèêëè ó öèêëàõ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Îïåðàòîð âèõîäó ç öèêëó . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Öèêë For…Next ó C# òà J# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Ïðèáóòòÿ äî Äîëèíè ïîâòîðåíü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Âïðàâà 10.2. Ïðîñò³ ÷èñëà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Çàâäàííÿ 10. Îñîáèñòèé ïåíñ³éíèé ðàõóíîê Ðîòà . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Äîäàòêîâå çàâäàííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Ìîäóëü 11. Öèêëîïîë³ñ, Êîëîðàäî . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Öèêëîïîë³ñ, Êîëîðàäî . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Íåâèçíà÷åí³ öèêëè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Do While…Loop — öèêë „âèêîíóâàòè, ïîêè” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Âèêîíàííÿ öèêëó Do While…Loop ó ïîêðîêîâîìó ðåæèì³ . . . . . . . . . . . . . . . . . . . . . . . 171 Do Until…Loop — öèêë „âèêîíóâàòè, äîêè íå”. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Íåâèçíà÷åí³ öèêëè â 䳿 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Âïðàâà 11.1. ̳øåíü. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Àëüòåðíàòèâí³ ôîðìè öèêë³â. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 Exit Do . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Íåâèçíà÷åí³ öèêëè ó C# òà J# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Ïðèáóòòÿ äî Öèêëîïîë³ñó . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Âïðàâà 11.2. Ïîñï³ëü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Çàâäàííÿ 11. Îá÷èñëåííÿ ñåðåäíüîãî áàëà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 Äîäàòêîâå çàâäàííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Ìîäóëü 12. Ôóíêö³ÿ, ϳâäåííà Äàêîòà. . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Ôóíêö³ÿ, ϳâäåííà Äàêîòà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Ùî òàêå ï³äïðîãðàìè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Ñòâîðåííÿ âëàñíèõ ï³äïðîãðàì . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 Âèêëèê âëàñíèõ ï³äïðîãðàì . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Ñòâîðåííÿ òà âèêëèê ï³äïðîãðàì ç àðãóìåíòàìè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

8


Ñòâîðåííÿ âëàñíèõ ôóíêö³é . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Âèêëèê âëàñíèõ ôóíêö³é . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 Âïðàâà 12.1. Ïåðåòâîðåííÿ îäèíèöü âèì³ðþâàííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 Âáóäîâàí³ ï³äïðîãðàìè òà ôóíêö³¿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Ðÿäêîâ³ ôóíêö³¿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Ãåíåðàòîð âèïàäêîâèõ ÷èñåë . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Ôóíêö³¿ ïåðåòâîðåííÿ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 ϳäïðîãðàìè òà ôóíêö³¿ ó J# òà C#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Ïðèáóòòÿ äî Ôóíêö³¿, ϳâäåííà Äàêîòà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Âïðàâà 12.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Çàâäàííÿ 12. ʳò òà ìèøà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 Äîäàòêîâå çàâäàííÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

Ìàòåð³àëè äëÿ ³íñòðóêòîð³â Îãëÿä êóðñó . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 Ðîçâ’ÿçàííÿ âïðàâ ³ çàâäàíü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Äîäàòêîâ³ ïðîåêòè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 Ðåñóðñè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

9


Øàíîâíèé ÷èòà÷ó! Êîðïîðàö³ÿ Microsoft ïðåäñòàâëÿº âñåñâ³òíþ ïðîãðàìó „Ïàðòíåðñòâî â íàâ÷àíí³”, ùî ìຠíà ìåò³ äîïîìîãòè îñâ³òÿíàì òà øêîëÿðàì ïîâíîþ ì³ðîþ ðåàë³çóâàòè ñâ³é ïîòåíö³àë ÷åðåç âèêîðèñòàííÿ òåõíîëîã³é òà äîñâ³äó Microsoft.  ìåæàõ ïðîãðàìè „Ïàðòíåðñòâî â íàâ÷àíí³” Microsoft ñï³âïðàöþº ç ïðîâ³äíèìè ñïåö³àë³ñòàìè ó ñôåð³ îñâ³òè òà ðîçðîáêè ó÷áîâèõ ïðîãðàì ç ìåòîþ ðîçïîâñþäæåííÿ ïåðåäîâîãî äîñâ³äó, âèñîêîÿê³ñíèõ çíàíü ³ íàâè÷îê, íàäàííÿ ðåñóðñ³â, ïðèçíà÷åíèõ äëÿ ï³äòðèìêè íàâ÷àëüíîãî ïðîöåñó òà ñòâîðåííÿ óìîâ äëÿ ñï³ëêóâàííÿ â÷èòåë³â. Äàíèé ïîñ³áíèê — öå çàïðîøåííÿ çä³éñíèòè ö³êàâó ïîäîðîæ äî êðà¿íè Visual Studio .NET. Âïðîäîâæ ö³º¿ ïîäîðîæ³ Âè îäåðæèòå ìîæëèâ³ñòü âèâ÷èòè ñó÷àñíó ³ ïîòóæíó ìîâó ïðîãðàìóâàííÿ Visual Basic .NET, ÿêîþ êîðèñòóþòüñÿ ïðîôåñ³éí³ ðîçðîáíèêè ïðîãðàìíîãî çàáåçïå÷åííÿ â óñüîìó ñâ³ò³. Ñïîä³âàºìîñÿ, ùî ïðåäñòàâëåí³ â ïîñ³áíèêó ìàòåð³àëè äîïîìîæóòü âèêëàäà÷åâ³ âäîñêîíàëèòè íàâ÷àëüí³ ìåòîäèêè òà ï³äâèùèòè ð³âåíü ï³äãîòîâêè øêîëÿð³â, à ó÷íåâ³ — øâèäêî ³ áåç îñîáëèâèõ çóñèëü çàñâî¿òè îñíîâè ö³º¿ ìîâè ïðîãðàìóâàííÿ. Õî÷åìî ùèðî ïîäÿêóâàòè Âàì çà â³ääàí³ñòü îñâ³òí³é ñïðàâ³ òà ïîñò³éíå ïðàãíåííÿ äî ïðîôåñ³éíîãî ðîñòó.

Ç ïîâàãîþ, Îëüãà Áóíÿòÿí, Ìåíåäæåð ïðîãðàì ó ñôåð³ îñâ³òè, „Ìàéêðîñîôò Óêðà¿íà”


Ïåðåäìîâà äî óêðà¿íñüêîãî âèäàííÿ Ïîñ³áíèê, ÿêèé Âè òðèìàºòå â ðóêàõ, âõîäèòü äî ñå𳿠êíèæîê, ùî âèïóñêàºòüñÿ êîðïîðàö³ºþ Microsoft â ìåæàõ ïðîãðàìè „Ïàðòíåðñòâî â íàâ÷àíí³”. ³í îäíî÷àñíî ïðèçíà÷àºòüñÿ ³ äëÿ â÷èòåë³â, ³ äëÿ ó÷í³â, ÿê³ ïðàöþâàòèìóòü íàä ðåàë³çàö³ºþ ð³çíîìàí³òíèõ êîìï’þòåðíèõ ïðîåêò³â. Ö³êàâèì ³ àêòóàëüíèì äëÿ óêðà¿íñüêî¿ øêîëè ïåäàãîã³÷íèì àñïåêòîì ö³º¿ ïðîãðàìè º òå, ùî âîíà â³äïîâ³äຠñèñòåì³ íàâ÷àííÿ, ÿêà çàñåðåäæóº óâàãó íà ó÷íåâ³ òà ïåðåäáà÷ຠéîãî ñàìîñò³éíó äîñë³äíèöüêó ä³ÿëüí³ñòü ï³ä êåð³âíèöòâîì ó÷èòåëÿ. Õî÷à ï³äãîòîâêà ïðîãðàì³ñò³â íå º ìåòîþ ñó÷àñíî¿ çàãàëüíîîñâ³òíüî¿ øêîëè, ðîçóì³ííÿ îñíîâíèõ ïðèíöèï³â ïðîãðàìóâàííÿ ìຠñòàòè îäí³ºþ ç ö³ëåé çàãàëüíî¿ îñâ³òè, ùî ³ çàçíà÷åíî ó äåðæàâíîìó îñâ³òíüîìó ñòàíäàðò³. Ç ³íøîãî áîêó, íå ñåêðåò, ùî íå âñ³ øêîëÿð³ çàõîïëþþòüñÿ ïðîãðàìóâàííÿì, àëå, íàïåâíî, â êîæíîìó êëàñ³ º ó÷í³, ÿê³ ö³êàâëÿòüñÿ ìåòîäàìè òà çàñîáàìè ñòâîðåííÿ âëàñíèõ êîìï’þòåðíèõ ïðîãðàì. Îñê³ëüêè ó áàçîâîìó êóðñ³ ³íôîðìàòèêè ñòàâèòüñÿ çà ìåòó ëèøå îçíàéîìëåííÿ ³ç çàãàëüíèìè ïðèíöèïàìè ðîçðîáêè ïðîãðàì, òî ïåðåä â÷èòåëÿìè íå ñòî¿òü çàâäàííÿ íàâ÷èòè ó÷í³â ñèíòàêñèñó ïåâíî¿ ìîâè ïðîãðàìóâàííÿ. Îñíîâíèé ìåòîä íàâ÷àííÿ — äåìîíñòðàö³ÿ îñîáëèâîñòåé ìîâè íà ïðèêëàäàõ ïðîñòèõ ïðîãðàì ³ç ñòèñëèìè êîìåíòàðÿìè; ïðè öüîìó äåÿê³ ïîíÿòòÿ ó÷íÿì äîñòàòíüî çðîçóì³òè íà „³íòó¿òèâíîìó” ð³âí³. Âèð³øåííþ òàêèõ çàâäàíü áàçîâîãî êóðñó ³íôîðìàòèêè äîïîìîæå âèá³ð ìîâè ïðîãðàìóâàííÿ Visual Basic ÿê íàî÷íî¿ òà ïðîñòî¿. Äëÿ âèêîíàííÿ ó÷íÿìè íåñêëàäíèõ ñàìîñò³éíèõ çàâäàíü â÷èòåëþ äîñòàòíüî âèêîðèñòîâóâàòè ìåòîä „çà çðàçêîì”, äîáèðàþ÷è ö³êàâ³ é ð³çíîïëàíîâ³ ïðèêëàäè. Êíèæêó „Îñíîâè ïðîãðàìóâàííÿ” ïðèçíà÷åíî äëÿ ïðîãðàì³ñò³â-ïî÷àòê³âö³â. Íà â³äì³íó â³ä á³ëüøîñò³ ïîä³áíèõ ïîñ³áíèê³â, ùî ì³ñòÿòü ñóõ³ òåîðåòè÷í³ âèêëàäêè, âîíà äîçâîëÿº íàâ÷àòèñÿ ïðîãðàìóâàòè íà ðåàëüíèõ, æèâèõ ïðèêëàäàõ. ßêùî ëþäèíà áà÷èòü, ÿê ñàìå ïðàöþº ãîòîâà ïðîãðàìà, ¿é íàáàãàòî ëåãøå çðîçóì³òè òåîðåòè÷í³ ïðèíöèïè, ïîêëàäåí³ â ¿¿ îñíîâó. „Íàâ÷àòèñÿ ï³ä ÷àñ ðîáîòè” — äåâ³ç öüîãî ïîñ³áíèêà. Ñïî÷àòêó ó÷í³ ä³çíàþòüñÿ, ÿê ïîáóäóâàòè âëàñíó Windows-ïðîãðàìó, äàë³ ïîñë³äîâíî â÷àòüñÿ çàñòîñîâóâàòè ó ñâî¿õ ïðîåêòàõ òàê³ áàçîâ³ ïîíÿòòÿ ïðîãðàìóâàííÿ, ÿê çì³íí³, òèïè äàíèõ, îïåðàòîðè, ï³äïðîãðàìè òîùî. Ó ïîñ³áíèêó, äî ÿêîãî äîäàíî êîìïàêò-äèñê, âäàëî âèêîðèñòîâóºòüñÿ ³äåÿ çàñòîñóâàííÿ øàáëîí³â ïðîãðàìíèõ ïðîåêò³â äëÿ íàñòóïíîãî äîîïðàöþâàííÿ òà äîñë³äæåííÿ ¿õ ó÷íÿìè. Öèì ìåòîäè÷íèì ïðèéîìîì ó÷èòåëü ìîæå ñêîðèñòàòèñÿ íå ëèøå ïðè íàâ÷àíí³ ïðîãðàìóâàííÿ. Êð³ì òîãî, ó ïîñ³áíèêó íàâåäåíî ðåêîìåíäàö³¿ äëÿ â÷èòåë³â ùîäî ìåòîäèêè íàâ÷àííÿ ³ îïèñàíî ï’ÿòü ïðîåêò³â ï³äâèùåíî¿ ñêëàäíîñò³. Íèí³ º àêñ³îìîþ òâåðäæåííÿ ïðî òå, ùî íàâ÷àííÿ ïðîãðàìóâàííÿ ñë³ä áóäóâàòè íà ñèñòåì³ ðîçâ’ÿçóâàííÿ çàäà÷, ïîñë³äîâí³ñòü ÿêèõ âèçíà÷àºòüñÿ çà òàêèìè ïðèíöèïàìè: â³ä ïðîñòîãî äî ñêëàäíîãî (ïîñòóïîâå óñêëàäíåííÿ çàäà÷); íîâèçíà (ó êîæí³é çàäà÷³ âèêîðèñòîâóºòüñÿ íîâå ïîíÿòòÿ — êîìàíäà, âëàñòèâ³ñòü, ïàðàìåòð, ìåòîä àáî ïðèéîì ïðîãðàìóâàííÿ); óñïàäêóâàííÿ (êîæíà íàñòóïíà çàäà÷à âèìàãຠâèêîðèñòàííÿ çíàíü, ÿê³ áóëè îäåðæàí³ ïðè ðîçâ’ÿçóâàíí³ ïîïåðåäí³õ çàäà÷). Öåé ïîñ³áíèê ì³ñòèòü íàá³ð ñàìå òàêèõ çàäà÷ ç â³äïîâ³äÿìè ³ ïðîêîìåíòîâàíèìè ðîçâ’ÿçêàìè — òåêñòàìè êîäó ðåàëüíèõ ïðîåêò³â, ùî âèêîíóâàòèìóòüñÿ íà êîìï’þòåð³. ³í áóäå êîðèñíèì äëÿ òèõ, õòî âèð³øèâ íàâ÷èòèñÿ ïðîãðàìóâàòè, òîáòî íå ëèøå êîðèñòóâàòèñÿ ãîòîâèìè

11


ïðîãðàìàìè, àëå ³ ñòâîðþâàòè ñâî¿ âëàñí³ ïðîãðàìè íà íàéñó÷àñí³øîìó ä³àëåêò³ òàêî¿ ðîçïîâñþäæåíî¿ ó ñâ³ò³ ìîâè ïðîãðàìóâàííÿ, ÿê Basic. Âåëèêà ïîïóëÿðí³ñòü Basic ïîÿñíþºòüñÿ íå ëèøå òèì, ùî ¿¿ ï³äòðèìóº êîðïîðàö³ÿ Microsoft, àëå é ÿñí³ñòþ òà ïðîñòîòîþ ñàìî¿ ìîâè, ïîºäíàíèìè ç ä³éñíî áåçìåæíèìè ìîæëèâîñòÿìè ùîäî ðîçâ’ÿçóâàííÿ íàéð³çíîìàí³òí³øèõ çàäà÷. Çîâñ³ì þí³ ïðîãðàì³ñòè ìîæóòü â³äðàçó ïîáà÷èòè, ùî â³äáóâàºòüñÿ ç ïðîãðàìîþ, êîëè âîíè ðîçì³ùóþòü êíîïêó íà ôîðì³, ³ ïîä³áíà çðó÷í³ñòü äîçâîëÿº ¿ì øâèäêî ïðîñóâàòèñÿ âïåðåä ó íàâ÷àíí³. „Ñòà𳔠ìîâè ïðîãðàìóâàííÿ âèìàãàëè êðîï³òêîãî âèâ÷åííÿ ìåõàí³çì³â ñòâîðåííÿ êíîïîê, ïóíêò³â ìåíþ, ñïèñê³â òà ³íøèõ åëåìåíò³â ³íòåðôåéñó êîðèñòóâà÷à, ùî ïðèçâîäèëî äî çðîñòàííÿ ÷àñîâîãî ³íòåðâàëó ì³æ îòðèìàííÿì çíàíü òà ¿õ çàñòîñóâàííÿì ³ íå äàâàëî ìîæëèâîñò³ øâèäêî òà ÿê³ñíî íàâ÷àòèñÿ ïî÷àòê³âöÿì. Çà îñòàíí³ ðîêè ìîâà Visual Basic ïåðåòâîðèëàñÿ ç ³ãðàøêè-õîáá³ íà ³íñòðóìåíò, ùî ïðîäîâæóº çì³íþâàòè ñâ³ò ïðîãðàìíîãî çàáåçïå÷åííÿ. Ñåðåäîâèùå ïðîãðàìóâàííÿ Visual Studio .NET ðàäèêàëüíî çì³íèëî ìåòîäè îïðàöþâàííÿ äàíèõ òà ñòâîðåííÿ ïðîãðàì. Visual Basic º íàéïîïóëÿðí³øèì çàñîáîì ðîçðîáêè ïðîãðàì â ³ñòî𳿠ïðîãðàìóâàííÿ. ²ñíóº áàãàòî ïðè÷èí òàêî¿ ïîïóëÿðíîñò³. Ìîâà çíÿëà çàâ³ñó åë³òàðíîñò³ é òàºìíè÷îñò³ ç ïðîãðàìóâàííÿ â ñåðåäîâèù³ Windows ³ çðîáèëà éîãî äîñòóïíèì ìàéæå äëÿ êîæíî¿ ëþäèíè. Âîíà ñóòòºâî ñïðîñòèëà çàñòîñóâàííÿ óí³âåðñàëüíèõ òåõíîëîã³é ïîä³éíî-îð³ºíòîâàíîãî ïðîãðàìóâàííÿ ³ ãðàô³÷íîãî ³íòåðôåéñó. Âèêîðèñòîâóþ÷è öåé ïîñ³áíèê ó íàâ÷àíí³, â÷èòåëü ñòàâèòü ïåðåä ó÷íÿìè ìåòó, ÿêó íåîáõ³äíî äîñÿãòè, ³ äຠ³íñòðóìåíò, çà äîïîìîãîþ ÿêîãî öå ìîæíà çðîáèòè, à ó÷í³ ïðîñóâàþòüñÿ äî ìåòè ñàìîñò³éíî. Çãîäîì âîíè ïî÷èíàþòü íàâ÷àòèñÿ îäèí ó îäíîãî, çâåðòàþ÷èñü äî â÷èòåëÿ, ÿê äî ïàðòíåðà ó íàâ÷àíí³, çà ïîðàäîþ. Ïðè öüîìó â÷èòåëü íåð³äêî íàâ÷àºòüñÿ ó ñàìèõ ó÷í³â, ùî º ö³ëêîì ïðèðîäí³ì íà óðîêàõ ³íôîðìàòèêè. Çðîçóì³ëî, ùî çàñâîºííÿ ïðîãðàìóâàííÿ çàâæäè âèìàãຠâ³ä ó÷í³â òà â÷èòåë³â çíà÷íèõ çóñèëü ³ ðîáîòè çà ìåòîäîì âèïðîáóâàíü òà ïîìèëîê. Ó äåÿê³é ì³ð³ öåé ïðîöåñ íàãàäóº íàâ÷àííÿ ãðè íà ôîðòåï³àíî: ïåðø í³æ áåçäîãàííî ç³ãðàòè ñåðéîçíó ñó, ñë³ä áàãàòî ïîïðàöþâàòè. Êîðèñòóþ÷èñü öèì ï³äðó÷íèêîì, ó÷í³ íàâ÷àòüñÿ êîíñòðóþâàòè äåÿê³ ïðîñò³, àëå êîðèñí³ ³ íåòðèâ³àëüí³ ïðîåêòè, çàñòîñîâóâàòè ¿õ äëÿ ðîçâ’ÿçóâàííÿ ñâî¿õ çàäà÷. À â÷èòåëÿì çàëèøèòüñÿ ñòàâèòè ïåðåä íèìè íîâ³ çàâäàííÿ òà ö³ë³.

Ïðîôåñîð Í. Â. Ìîðçå.

12


³òàºìî! Ëàñêàâî ïðîñèìî ó ìàíäð³âêó „Ïðàâèëà êîäóâàííÿ”! Âè ìàéæå ãîòîâ³ âèðóøèòè ó çàõîïëþþ÷ó é ï³çíàâàëüíó ïîäîðîæ. Ïðèºäíóéòåñÿ äî ͳêê³ òà Êë³ôà, ÿê³ âåñòèìóòü ìàøèíó ó ð³÷íîìó àâòîðàë³ „Ïðàâèëà êîäóâàííÿ”. Ç íèìè ðàçîì ïîäîðîæóâàòèìóòü ¿õ äîáð³ äðóç³ Äæåí òà ijðê. ² âàñ òàêîæ çàïðîøåíî! Ìàðøðóò àâòîðàë³ ïðîõîäèòü ÷åðåç 12 ì³ñò. Ùîá ïîäîëàòè éîãî, ͳêê³ òà Êë³ô ïîâèíí³ ¿õàòè â³ä îäíîãî ïóíêòó äî ³íøîãî ó ïåâíîìó ïîðÿäêó. Äîðîãîþ âîíè íàâ÷àòü âàñ ïèñàòè ïðîãðàìè ìîâîþ Visual Basic .NET, âèêîðèñòîâóþ÷è ñåðåäîâèùå Visual Studio .NET êîìïàí³¿ Microsoft. Âè áàãàòî ä³çíàºòåñÿ â³ä ͳêê³ òà Êë³ôà. Âîíè îáèäâà âïðàâíî ïðîãðàìóþòü íà Visual Basic .NET ³ ïîçíàéîìëÿòü âàñ ³ç ìîæëèâîñòÿìè ïðîãðàìóâàííÿ ó ñåðåäîâèù³ Visual Studio .NET. Ïåðø í³æ âè äîáðå ó íüîìó ðîçáåðåòåñÿ, âè âæå íàïèøåòå ñâîþ ïåðøó ïðîãðàìó HelloWorld. ² öå ëèøå ïî÷àòîê! Íåâäîâç³ âè âæå ðîçðîáëÿòèìåòå ôîðìè, äîäàâàòèìåòå äî íèõ òàê³ åëåìåíòè, ÿê êíîïêè òà òåêñòîâ³ ïîëÿ, çàäàâàòèìåòå ¿õ âëàñòèâîñò³. Ïîò³ì ïî÷íåòüñÿ íàéö³êàâ³øå. ͳêê³ òà Êë³ô íàâ÷àòü âàñ îñíîâ ïðîãðàìóâàííÿ: ÿê âèêîðèñòîâóâàòè çì³íí³, îïåðàòîðè ïðèéíÿòòÿ ð³øåííÿ, öèêëè òà ôóíêö³¿. Âàø³ ôîðìè òà êíîïêè îæèâóòü! Òåïåð âè âæå ñïðàâä³ ïî÷íåòå ïðîãðàìóâàòè! Âàñ öå çàö³êàâèëî? Òî æ âèðóøàéìî! Îñü ñïèñîê óñ³õ ïóíêò³â ïðèçíà÷åííÿ, ÿê³ âè â³äâ³äàºòå çà ìàðøðóòîì àâòîðàë³ „Ïðàâèëà êîäóâàííÿ”. Ó êîæíîìó ïóíêò³ ïðèçíà÷åííÿ Êîì³òåò ðàë³ ï³äãîòóâàâ äëÿ âàñ òåñò, ùîá âè ìîãëè ïîêàçàòè, ÷îãî íàâ÷èëèñÿ äîðîãîþ. Êîì³òåò òàêîæ ïðîïîíóâàòèìå âàì çàâäàííÿ, ùîá âè ìîãëè ïðàêòèêóâàòèñÿ ó íàïèñàíí³ êîäó. Öå áóäóòü ïðîåêòè, ÿê³ âè çìîæåòå ïîêàçàòè ñâî¿ì äðóçÿì. Ãîòîâ³? Ðóøàéìî!

15


Ïðèâ³ò! Ìåíå çâóòü ͳêê³, à öå Êë³ô. Íàì ïðèºìíî, ùî âè çìîãëè ñêëàñòè íàì êîìïàí³þ ó ìàíäð³âö³ „Ïðàâèëà êîäóâàííÿ”! Ìè ñò³ëüêè çìîæåìî ïîáà÷èòè òà çðîáèòè ï³ä ÷àñ ìàíäð³âêè, ùî ÿ ïåðåêîíàíèé: âè ÷óäîâî ïðîâåäåòå ÷àñ. À òàêîæ äîïîìîæåòå íàì âèð³øèòè óñ³ çàäà÷³, ùî ïîñòàíóòü ïåðåä íàìè! Òðåáà ëèøå äî÷åêàòèñÿ, äîêè Êîì³òåò ðàë³ íàäàñòü íàì ïåéäæåð òà ùîäåííèê, — ³ âèðóøàéìî! Âè ìîæåòå ñ³ñòè ïîïåðåäó, ðàçîì ç³ ìíîþ ³ Êë³ôîì, àáî ïîçàäó, ðàçîì ç Äæåí òà ijðêîì. Ïîêëàä³òü êóäèñü ñâî¿ ðå÷³. Îòæå, â³òàºìî íà áîðòó! Ïîãëÿíüòå íà öåé ìàëþíîê, äå ìè óñ³ â êàâ’ÿðí³ ïåðåä ïî÷àòêîì òóðó. Øêîäà, ùî âè íå ìîæåòå äîáðå ðîçãëåä³òè ijðêà òà Äæåí. Ó öåé ÷àñ Êë³ô ïîêàçóº íà íåâåëè÷êîãî ïåñèêà, ÿêîãî â³í ïðîïîíóº âçÿòè ç ñîáîþ. Âè ìîæåòå ñîá³ óÿâèòè, ùîá â³í òóò çàãóáèâñÿ?! Ìè òàêîæ íå ïîâ³ðèëè.

Êîìïàêò-äèñê ³ç øàáëîíàìè ïðîãðàì Íà êîæíîìó åòàï³ íàøî¿ ïîäîðîæ³ âàì íàëåæèòü âèêîíàòè äâ³ ïðîñò³ âïðàâè ³ îäíå ñêëàäí³øå çàâäàííÿ. Ìè âèð³øèëè âàì ³ç öèì äîïîìîãòè. Á³ëüø³ñòü âïðàâ ³ çàâäàíü âàì íå ïîòð³áíî áóäå âèêîíóâàòè „ç íóëÿ”, àäæå ìè çàïèñàëè íà êîìïàêò-äèñê øàáëîíè ïðîãðàìíèõ ïðîåêò³â, ÿê³ âè ìàºòå äîðîáèòè àáî äîñë³äèòè. Ñòåæòå çà ï³äêàçêàìè ïåéäæåðà. ³í ïîâ³äîìëÿòèìå, â ÿê³é ïàïö³ íà êîìïàêò-äèñêó çàïèñàíî òîé ÷è ³íøèé øàáëîí ïðîãðàìè.

Äîðîæíÿ êàðòà òà ïóíêòè ïðèçíà÷åííÿ — Êë³ô, àäæå õòîñü ç òâî¿õ äðóç³â áðàâ ó÷àñòü ó ðàë³ êîäóâàííÿ ìèíóëîãî ðîêó? — Òàê, öå áóâ ì³é ïðèÿòåëü гíãî Êåííåä³. ³í ÷óäîâî ïðîâ³â ÷àñ ³ áàãàòî ÷îãî íàâ÷èâñÿ. ³í ðîçïîâ³äàâ, ùî ïîäîðîæ áóëà äóæå ö³êàâîþ. Íàïðèêëàä, âîíè çóñòð³ëè îäíîãî êëàñíîãî á³òí³êà. Îäíîãî ðàçó, êîëè âîíè çàñòðÿãëè ñåðåä äîðîãè, òîé õëîïåöü ç’ÿâèâñÿ íåâ³äîìî çâ³äêè òà äîïîì³ã ¿ì ïîâåðíóòèñÿ íà øëÿõ. ßêáè ìè òåæ éîãî ïîáà÷èëè, öå áóâ áè íàäçâè÷àéíèé çá³ã îáñòàâèí. Âè áà÷èëè äîðîæíþ êàðòó? Íà í³é âêàçàíî íàø ìàðøðóò. Âè ìîæåòå äèâèòèñÿ ¿¿ êîëè çàâãîäíî. Ìàðøðóò ïðîõîäèòèìå ÷åðåç ð³çí³ ì³ñòà. Îêð³ì òîãî, ìè ìàòèìåìî ñïèñîê ì³ñöü, ùî âàðò³ óâàãè. Ó êîæíîìó ïóíêò³ ïðèçíà÷åííÿ Êîì³òåò ðàë³ ïåðåâ³ðÿòèìå íàø³ çíàííÿ òà äàâàòèìå íàì îäíå-äâà çàâäàííÿ. Îò äå ìè ìàºìî ïîêàçàòè, ÷îãî íàâ÷èëèñÿ â äîðîç³!

17


Îñü íàø ùîäåííèê. Êîëè ìè âèêîíàºìî âñ³ çàâäàííÿ, Êîì³òåò ðàë³ ïîñòàâèòü ó ùîäåííèêó îö³íêó. Ùîäåííèê òàêîæ äîïîìîæå ñòåæèòè çà òèì, äå ìè âæå áóëè ³ ÿêèé íàø íàñòóïíèé ïóíêò ïðèçíà÷åííÿ. Íå çàáóâàéìî çâ³ðÿòèñÿ ç êàðòîþ ìàðøðóòó — íå õîò³ëîñÿ á âèïàäêîâî çàáëóêàòè!

Ïðèñòðî¿ Í³êê³ ß ùå íå êàçàëà âàì, ùî îáîæíþþ óñ³ëÿê³ ïðèñòðî¿. ß ïðîñòî ó çàõâàò³ â³ä ñâîãî íîâîãî êèøåíüêîâîãî êîìï’þòåðà! Ðàçîì ç Êë³ôîì ìè çàâàíòàæèëè äåê³ëüêà âïðàâ, ùîá ïîïðàöþâàòè íàä íèìè â äîðîç³. Ìè òàêîæ õî÷åìî ïîãðàòè ó ãðó „³êòîðèíà ðà볔. Ó ö³é ìàíäð³âö³ âè í³êîëè íå íóäüãóâàòèìåòå! À íà äåíü íàðîäæåííÿ ìåí³ ïîäàðóâàëè íîâèé íîóòáóê. ß òàêîæ çàõîïëþ éîãî ç ñîáîþ, ùîá ïîêàçóâàòè âàì ñëàéäè òà ïðîåêòè, ÿê³ ìè ç Êë³ôîì ñòâîðþâàëè ó øêîë³. Êð³ì òîãî, íîóòáóê äîïîìîæå íàì ïðàöþâàòè ³ç êîìïàêò äèñêîì, íà ÿêîìó çàïèñàí³ çàâäàííÿ. Îñü ïî÷àòîê ìîãî ñïèñêó ðå÷åé.

Îé, ïîãëÿíüòå, ìè îòðèìàëè ïîâ³äîìëåííÿ. Êëàñ! Äàâàéòå ïîäèâèìîñÿ, ÷è ì³ñòèòü ñëîâíè÷îê ñëîâî „ïðîãðàì³ñò”. ×óäîâî! ³í ä³éñíî ñòàíå ó ïðèãîä³!

Ðóøàéìî! Çäàºòüñÿ, âæå âñ³ ãîòîâ³ âèðóøèòè ó ïîäîðîæ. Òîæ ïîãëÿíåìî ùå ðàç íà äîðîæíþ êàðòó ³ ðóøàéìî. Ïåðøà çóïèíêà — Âñþäè, øòàò ³ñêîíñèí. Ðàë³ «Ïðàâèëà êîäóâàííÿ», Visual Studio .NET

18


Ìîäóëü 1. Âñþäè, ³ñêîíñèí


Ïðîãðàìè ó ïîâñÿêäåííîìó æèòò³ Íåõàé Êë³ô âåäå ïåðøèì — òàê ìè çìîæåìî êðàùå ïîçíàéîìèòèñÿ. ×è ÿ íå êàçàëà, ùî ì³é â³ò÷èì — ïðîãðàì³ñò? Àëå â³í ïèøå ïðîãðàìè íå äëÿ ïåðñîíàëüíèõ êîìï’þòåð³â, à äëÿ óïðàâë³ííÿ àâòîìàòàìè íà çàâîä³, äå âèðîáëÿþòü äðóêàðñüê³ ìàøèíêè. Îäíîãî ðàçó â³í çðîáèâ ïîìèëêó ó ïðîãðàì³, é àâòîìàòè âèïóñòèëè äðóêàðñüê³ ìàøèíêè áåç ë³òåð Q, W, E, R, T òà Y. Íå ïåðåñòàºø äèâóâàòèñÿ, ÿê áàãàòî ðå÷åé íàâêîëî íàñ ì³ñòÿòü â ñîá³ ïðîãðàìè. À ùå äèâí³øå òå, ñê³ëüêè ðå÷åé ðîçðîáëÿºòüñÿ òà ïåðåâ³ðÿºòüñÿ çà äîïîìîãîþ êîìï’þòåðíèõ ïðîãðàì. Òåïåð ïðîãðàìè çàñòîñîâóþòüñÿ íå ëèøå ó ðîáîò³ êàëüêóëÿòîð³â, àâòîìàò³â, àáî êîìï’þòåð³â. Òåïåð ïðîãðàìóºòüñÿ ðîáîòà áàãàòüîõ ïðèëàä³â, ³ãðàøîê ³ íàâ³òü ìàøèí. ³çüìåìî, íàïðèêëàä, öþ ìàøèíó. Âîíà ñêëàäàºòüñÿ ç ðå÷åé, ùî, íàïåâíî, áóëè ðîçðîáëåí³ íà êîìï’þòåð³. Àåðîäèíàì³÷íà ôîðìà áóëà, éìîâ³ðíî, çìîäåëüîâàíà òà ïåðåâ³ðåíà íà êîìï’þòåð³ â ³ì³òîâàí³é àåðîäèíàì³÷í³é òðóá³. Ñèä³ííÿ, êóõíÿ òà ë³æêà òåæ áóëè ðîçðîáëåí³ íà êîìï’þòåð³, à ïîò³ì ðîçì³ùåí³ ó òðüîõâèì³ðí³é ìîäåë³ ìàøèíè. À äåÿê³ äåòàë³, ìîæëèâî, áóëè âèïóùåí³ òàêèìè ñàìèìè àâòîìàòàìè, ÿê íà ôàáðèö³ ó ìîãî â³ò÷èìà. Ó ìàøèí³ º áàãàòî ³íøèõ ðå÷åé, çîêðåìà, ãëîáàëüíà ñèñòåìà âèçíà÷åííÿ ì³ñöåçíàõîäæåííÿ, ì³êðîõâèëüîâà ï³÷, ñòåðåîñèñòåìà. Óñ³ âîíè ïðîãðàìîâàí³, ³ äëÿ íèõ ïåðåäáà÷åíå â³ääàëåíå óïðàâë³ííÿ. Ïðîãðàìè êîíòðîëþþòü, ùî ðîáèòü ïðèëàä, êîëè âè íàòèñêàºòå êíîïêè. Âîíè âïàÿí³ äî ì³êðîñõåì íà ìîíòàæíèõ ïëàòàõ, àëå ñïî÷àòêó êîìóñü òðåáà áóëî ¿õ íàïèñàòè. Çãàäàéòå ùå åëåêòðîííó ìóçèêó, ÿêó ïèøå ijðê. Õîðîøà âîíà ÷è ïîãàíà, àëå ñòâîðåíà íà êîìï’þòåð³. ³í íàâ³òü íàïèñàâ ïðîãðàìó äëÿ çáåðåæåííÿ óñ³õ âåðñ³é ñâî¿õ ñåíòèìåíòàëüíèõ â³ðø³â, ùîá íå çàáóòè æîäíî¿ ãåí³àëüíî¿ ³äå¿. Ïðîãðàìè âèêîðèñòîâóþòüñÿ äëÿ âèð³øåííÿ íàéð³çíîìàí³òí³øèõ ïðîáëåì òà äëÿ ñòâîðåííÿ ð³çíèõ ðå÷åé. Òåïåð ìàéæå êîæåí êîðèñòóºòüñÿ ïåðñîíàëüíèì êîìï’þòåðîì íà ðîáîò³ òà âäîìà äëÿ íàïèñàííÿ ëèñò³â, ñêëàäàííÿ òàáëèöü ³ áàç äàíèõ, à òàêîæ äëÿ âåäåííÿ ÷åêîâî¿ êíèæêè. Ìàéæå âñ³ óñòàíîâè êîðèñòóþòüñÿ ïðîãðàìàìè äëÿ â³äñòåæåííÿ ðóõó êîøò³â, ê볺íò³â òà òîâàð³â, ÿê³ âîíè âèïóñêàþòü àáî êóïóþòü. Âåëè÷åçíà ê³ëüê³ñòü ïðîãðàì âèêîðèñòîâóºòüñÿ

21


äëÿ çáåðåæåííÿ òà îòðèìàííÿ, ô³ëüòðóâàííÿ òà ïîäàííÿ ³íôîðìàö³¿ ó ð³çíèé ñïîñ³á. Áàãàòî ïðîãðàì íàïèñàíî äëÿ äîñë³äæåíü ó ãàëóçÿõ øòó÷íîãî ³íòåëåêòó, ãåíåòèêè, êë³ìàòè÷íèõ çì³í. Êð³ì òîãî, ³ñíóº áàãàòî ð³çíèõ òèï³â ñïåö³àë³çîâàíèõ ïðîãðàì, ùî çàñòîñîâóþòüñÿ äëÿ äèçàéíó, ìàëþâàííÿ, ãðè òîùî. ßêó ñôåðó ëþäñüêî¿ ä³ÿëüíîñò³ íå íàçâ³òü, íàïåâíå, çíàéäóòüñÿ ïðîãðàìè, ùî âèêîðèñòîâóþòüñÿ â í³é. À ÿ ùå íå çãàäóâàëà ²íòåðíåò, ³íòåðàêòèâí³ ðåñóðñè òà ïðîãðàìè â³ðòóàëüíî¿ ðåàëüíîñò³! Äåÿê³ ëþäè ïèøóòü ïðîãðàìè ïðîñòî çàðàäè ðîçâàãè! Ó øêîë³ â ìåíå áóëà ó÷èòåëüêà, ÿêà íàïèñàëà ïðîãðàìó äëÿ àâòîìàòè÷íîãî ãåíåðóâàííÿ íàøèõ äîìàøí³õ çàâäàíü ç ìàòåìàòèêè. ¯¿ ñåñòðà ñòâîðèëà ïðîãðàìó, ÿêà ïèøå â³ðø³ õîêó òà ïåðåêëàäຠòåêñòè ³ñëàíäñüêîþ. ß ÷èòàëà ñòàòòþ ïðî õëîïöÿ, ÿêèé ñòâîðèâ ðîáîòà Lego òà çàïðîãðàìóâàâ éîãî íà ñêëàäàííÿ êóáèêà Ðóá³êà. Íàâ³ùî â³í öå çðîáèâ, ÿ íå çíàþ, ìîæëèâî, ïðîñòî òîìó, ùî â³í ì³ã öå çðîáèòè! ß õî÷ó ïðîãðàìóâàòè òðèâèì³ðí³ ³íòåðàêòèâí³ â³äåî³ãðè àáî ïèñàòè äëÿ ñòðàõîâî¿ êîìïàí³¿ ïðîãðàìè, ùî àíàë³çóâàòèìóòü ñòàòèñòèêó íàðîäæóâàíîñò³. Çäàºòüñÿ, ó ìîºìó êèøåíüêîâîìó êîìï’þòåð³ º âïðàâà ùîäî êîìï’þòåðíîãî ïðîãðàìóâàííÿ.

Âïðàâà 1.1. Êîìï’þòåðè ó ïîâñÿêäåííîìó æèòò³ Çàïèø³òü ïðèíàéìí³ ÷îòèðè ñïîñîáè âèêîðèñòàííÿ êîìï’þòåð³â ó ïîâñÿêäåííîìó æèòò³. Íå êîðèñòóéòåñÿ ïðèêëàäàìè, ÿê³ íàâåäåíî ó öüîìó êóðñ³. Âèãàäàéòå ùîñü ³íøå.

Ùî ðîáëÿòü ïðîãðàì³ñòè Áàãàòî ëþäåé óÿâëÿþòü ïðîãðàì³ñò³â òàêèìè ñîá³ äèâàêàìè, ùî ñèäÿòü çà êîìï’þòåðàìè âäåíü ³ âíî÷³, âèñòóêóþ÷è ñâ³é êîä íà êëàâ³àòóð³, ïî¿äàþ÷è õîëîäíó ï³öó òà ï’þ÷è çáàãà÷åíó êîôå¿íîì ñóì³ø. dzçíàþñü, ùî öå ðîáîòà ì ìð³¿, ³ íàñïðàâä³ ïðî íå¿ ìîæíà ñêàçàòè çíà÷íî á³ëüøå. Õîðîøó ïðîãðàìó çà í³÷ íå ñòâîðèø. Äëÿ òîãî, ùîá ñòâîðèòè êîìï’þòåðíó ïðîãðàìó, ÿêà áóäå ðîáèòè ñàìå òå, ÷îãî âè â³ä íå¿ î÷³êóºòå, ¿¿ ïîòð³áíî ñòàðàííî ïëàíóâàòè òà ðîçðîáëÿòè. Öå ñë³ä ðîáèòè òàê, ùîá ¿¿ áóëî ëåãêî çì³íþâàòè, ùîá ó í³é íå áóëî ïîìèëîê ³ âîíà áóëà çðó÷íîþ äëÿ âèêîðèñòàííÿ. Íàä âåëèêèìè ïðîãðàìíèìè ïðîåêòàìè ïðàöþþòü êîìàíäè ³ç ñîòåíü ïðîãðàì³ñò³â. Óñ³ âîíè ïîâèíí³ ïðîéòè íàâ÷àííÿ, ¿õ ðîáîòó òðåáà îðãàí³çóâàòè òà êåðóâàòè íåþ. Òîæ, õî÷à íàïèñàííÿ êîäó é âõîäèòü äî îáîâ’ÿçê³â ïðîãðàì³ñòà, â³í àáî âîíà ðîáèòü ùå áàãàòî ÷îãî: l

âèð³øóº, ùî ïðîãðàìà áóäå ðîáèòè;

l

ðîçðîáëÿº ³íòåðôåéñ êîðèñòóâà÷à;

l

îáèðຠìîâó ïðîãðàìóâàííÿ;

22


l

ðîçðîáëÿº àðõ³òåêòóðó ïðîãðàìè òà âèçíà÷àº, ÿê ¿¿ ÷àñòèíè áóäóòü âçàºìîä³ÿòè;

l

âèçíà÷ຠñòèë³ íàïèñàííÿ êîäó òà äèçàéíó;

l

âèð³øóº, õòî áóäå ïèñàòè êîä îêðåìèõ ÷àñòèí ïðîãðàìè;

l

óïîðÿäêîâóº ðîçêëàä ðîçðîáêè òà ñòåæèòü çà éîãî äîòðèìàííÿì;

l

íàâ÷ຠïðîãðàì³ñò³â êîðèñòóâàòèñÿ ³íñòðóìåíòàìè ðîçðîáêè;

l

óñòàíîâëþº òà îáñëóãîâóº êîìï’þòåðè òà ìåðåæ³, ÿêèìè êîðèñòóþòüñÿ ïðîãðàì³ñòè;

l

ïèøå êîä!!!

l

äîêóìåíòóº êîä;

l

ðîçðîáëÿº áàçó äàíèõ äëÿ çáåðåæåííÿ â³äîìîñòåé, ïîòð³áíèõ äëÿ ïðîãðàìè àáî ñòâîðþâàíèõ ïðîãðàìîþ;

l

êåðóº ðîçðîáêîþ ãðàô³÷íèõ çîáðàæåíü;

l

êåðóº ââåäåííÿì ³íôîðìàö³¿ äî áàçè äàíèõ;

l

íàëàãîäæóº êîä, âèïðàâëÿþ÷è â íüîìó ïîìèëêè;

l

óïàêîâóº êîä, ùîá éîãî ìîæíà áóëî óñòàíîâèòè íà êîìï’þòåð³ êîðèñòóâà÷à àáî íà ñåðâåð³;

l

íàâ÷ຠêîðèñòóâà÷³â ïðàöþâàòè ç ïðîãðàìîþ;

l

ë³êâ³äóº ïðîáëåìè, ÿê³ âèíèêàþòü ó êîðèñòóâà÷³â ïðè ðîáîò³ ç ïðîãðàìîþ;

l

ïèøå äîêóìåíòàö³þ òà ó÷áîâ³ ìàòåð³àëè äëÿ ïðîãðàìè;

l

ìîäåðí³çóº ïðîãðàìó.

Îòæå, íàïèñàííÿ êîäó — öå ëèøå îäíà ç áàãàòüîõ ôóíêö³é ïðîãðàì³ñò³â. Ó ìîºìó êèøåíüêîâîìó êîìï’þòåð³ º ùå âïðàâà ùîäî ðîáîòè ïðîãðàì³ñòà.

Âïðàâà 1.2. Ðîáîòà ó ñôåð³ ³íôîðìàö³éíèõ òåõíîëîã³é Êîðèñòóþ÷èñü ²íòåðíåòîì òà ³íøèìè ðåñóðñàìè, âèçíà÷òå ïî÷àòêîâó çàðïëàòíþ ñïåö³àë³ñò³â, ùî ïðàöþþòü ó ñôåð³ ³íôîðìàö³éíèõ òåõíîëîã³é ó âàø³é ì³ñöåâîñò³. Ïîð³âíÿéòå çàðîá³òíó ïëàòíþ ñïåö³àë³ñò³â ð³çíèõ êàòåãîð³é, íàïðèêëàä, ïðîãðàì³ñò³â, ñèñòåìíèõ àíàë³òèê³â, ðîçðîáíèê³â Âåá-çàñòîñóâàíü òîùî.

23


Ùî òàêå ïðîãðàìà Êîìï’þòåðíà ïðîãðàìà ñêëàäàºòüñÿ ç ðÿäê³â êîäó, ÿê³ íàïèñàí³ àíãë³çîâàíîþ ìîâîþ ïðîãðàìóâàííÿ. Îáèðàþ÷è ìîâó ïðîãðàìóâàííÿ, âðàõîâóéòå ïðèçíà÷åííÿ ìîâè òà ïîòðåáè âàøî¿ ïðîãðàìè. ϳñëÿ íàïèñàííÿ ïðîãðàìà ïåðåêëàäàºòüñÿ (êîìï³ëþºòüñÿ) íà ìîâó, ÿêó „ðîçó쳺” êîìï’þòåð òà âêàç³âêè íà ÿê³é â³í ìîæå âèêîíóâàòè. Âè ìîæåòå ïèñàòè ð³çí³ òèïè ïðîãðàì, êîðèñòóþ÷èñü îäí³ºþ ìîâîþ ïðîãðàìóâàííÿ. Íàïðèêëàä, âè ìîæåòå íàïèñàòè ïðîãðàìè äëÿ ãðè ó õðåñòèêè-íóëèêè, äëÿ ïîêàçó ñëàéä³â òà äëÿ â³äîáðàæåííÿ îðá³òè ïîëüîòó ðàêåòè íàâêîëî Çåìë³ îäí³ºþ ìîâîþ ïðîãðàìóâàííÿ. ³äì³ííîñò³ ì³æ öèìè ïðîãðàìàìè âèçíà÷àòèìå êîä, ÿêèé âè íàïèøåòå. ³í æå âèçíà÷ຠôóíêö³îíàëüíå ïðèçíà÷åííÿ ïðîãðàì, òîáòî òå, ùî âîíè áóäóòü ðîáèòè. Íàïðèêëàä, ó êîä³ âèçíà÷àºòüñÿ, ùî â³äáóâàòèìåòüñÿ, êîëè âè êëàöíåòå íà êíîïö³ àáî âèáèðåòå åëåìåíò ç³ ñïèñêó. Âàø êîä òàêîæ îïèñóº „³íòåëåêò” ïðîãðàìè: ÿê ïðîãðàìà áóäå „ïðèéìàòè ð³øåííÿ”, ñê³ëüêè ðàç³â âèêîíóâàòèìå ïåâí³ ä³¿ òà ÿê³ çä³éñíþâàòèìå ðîçðàõóíêè. Âè ìîæåòå íàïèñàòè êîä äëÿ ðîçâ’ÿçóâàííÿ ìàòåìàòè÷íèõ çàäà÷, ââåäåííÿ òåêñòó, ðåàãóâàííÿ ä³é êîðèñòóâà÷³â, çáèðàííÿ äàíèõ àáî â³äîáðàæåííÿ ïîâ³äîìëåíü. Íàïèñàííÿ êîäó ìîæå áóòè äóæå ñêëàäíèì, àëå öå ö³êàâèé ïðîöåñ, ùî êîìïåíñóº âèòðà÷åí³ çóñèëëÿ. Êîëè âè âèâ÷àºòå ìîâó ïðîãðàìóâàííÿ, âè îïàíîâóâàºòå íîâèé ìàòåð³àë, ùî äຠìîæëèâ³ñòü âèðàæàòè òâîð÷³ ³äå¿, äîñë³äæóâàòè äàí³ ³ ïîâ³äîìëåííÿ, âèð³øóâàòè ïðîáëåìè òà ðîçâàæàòèñÿ. Ó öüîìó ïðîãðàìóâàííÿ ïîä³áíå äî áóäü-ÿêî¿ ³íøî¿ òâîð÷î¿ ðîáîòè, íàïðèêëàä, äî ë³ïëåííÿ ç ãëèíè àáî äî ïèñàííÿ ìóçèêè.

Ìîâè ïðîãðàìóâàííÿ ̳é ä³äóñü ì³ã ðîçìîâëÿòè ÷îòèðìà ìîâàìè: ÿïîíñüêîþ, ³ñïàíñüêîþ, ñóàõ³ë³ òà àíãë³éñüêîþ. ϒÿòó â³í çãàäóâàâ, êîëè ñòðàøåííî ðîçëþ÷óâàâñÿ! Êîìï’þòåðí³ ìîâè áàãàòî â ÷îìó ïîä³áí³ äî ðîçìîâíèõ. Âîíè ìîæóòü ïî-ð³çíîìó çâó÷àòè àáî âèãëÿäàòè, àëå ïðèçíà÷åííÿ ó íèõ îäíå é òå ñàìå — îïèñóâàòè ³íñòðóêö³¿ äëÿ êîìï’þòåðà ùîäî òîãî, ÿê âèð³øóâàòè ïðîáëåìó. Âè çíàºòå, ùî ïîñò³éíî ñòâîðþþòüñÿ íîâ³ ìîâè ïðîãðàìóâàííÿ? Ïðîòÿãîì îñòàíí³õ 50 ðîê³â áóëî ðîçðîáëåíî áàãàòî ¿õ ð³çíîâèä³â. ßê ³ äåÿê³ ðîçìîâí³ ìîâè, äåÿê³ ìîâè ïðîãðàìóâàííÿ á³ëüøå íå âèêîðèñòîâóþòüñÿ. Ôîðìà ³íøèõ ìîâ ïðîãðàìóâàííÿ çì³íþºòüñÿ, àëå âîíè âèêîðèñòîâóþòüñÿ âæå ïðîòÿãîì 20–30 ðîê³â. Äëÿ ñòâîðåííÿ íîâî¿ ìîâè ïðîãðàìóâàííÿ áåðóòüñÿ íàéêðàù³ ðèñè îäí³º¿ àáî ê³ëüêîõ ³ñíóþ÷èõ ìîâ, à ïîò³ì îᒺäíóþòüñÿ òà äîïîâíþþòüñÿ. Ó ñó÷àñíèõ ìîâàõ ïðîãðàìóâàííÿ çíàõîäèòü ñâîº â³äîáðàæåííÿ ðîçâèòîê êîìï’þòåðíîãî óñòàòêóâàííÿ ³ ïðîãðàìíîãî çàáåçïå÷åííÿ. Íà ïåðøèõ ìîâàõ ïðîãðàìóâàííÿ äîâîäèëîñÿ ïðîãðàìóâàòè òàê, ùîá êîìï’þòåð êîä „ðîçóì³â” — òîáòî âèêîðèñòîâóâàòè ëèøå îäèíèö³ òà íóë³. Äî ÷îãî æ öå áóëî íóäíî! Ç ÷àñîì áóëè

24


ñòâîðåí³ ïðîãðàìè-êîìï³ëÿòîðè. Âîíè ïåðåòâîðþâàëè êîä, íàïèñàíèé ìîâîþ, ùî ñõîæà íà àíãë³éñüêó, íà îäèíèö³ òà íóë³, ÿê³ ðîçó쳺 êîìï’þòåð. Ìàéæå óñ³ ñó÷àñí³ ìîâè ïðîãðàìóâàííÿ ïåðåäáà÷àþòü êîìï³ëÿö³þ. Òîáòî ïðîãðàìè íà íèõ ïèøóòüñÿ çà äîïîìîãîþ àíãë³çîâàíî¿ ìîâè, à ïîò³ì êîìï³ëþþòüñÿ (ïåðåêëàäàþòüñÿ) íà êîä, ïðèäàòíèé äëÿ ïðî÷èòàííÿ ìàøèíîþ. Ç ðîêàìè ç’ÿâèëîñÿ áàãàòî ð³çíèõ ìîâ ïðîãðàìóâàííÿ, ùî ïðèçíà÷åí³ äëÿ âèð³øåííÿ êîíêðåòíèõ ïðîáëåì. Íàïðèêëàä, ìîâà Ôîðòðàí áóëà ðîçðîáëåíà äëÿ âèð³øåííÿ ÷èñëîâèõ çàäà÷ òà âèêîíàííÿ îá÷èñëþâàíü. Ôîðòðàí — öå ìîâà ïåðåêëàäàííÿ ôîðìóë (àíãë. FORTRAN ïîõîäèòü â³ä FORmula TRANslating — ïåðåêëàäàííÿ ôîðìóë). Êîáîë (COBOL — Common Business-Oriented Language) — ìîâà ïðîãðàìóâàííÿ äëÿ ä³ëîâî¿ ñôåðè — áóëà ðîçðîáëåíà ïåðåâàæíî äëÿ çàñòîñóâàííÿ ó ä³ëîâ³é ñôåð³, äå ïîòð³áíî îáðîáëÿòè âåëèêó ê³ëüê³ñòü íå÷èñëîâèõ äàíèõ. Ìîâà ˳ñï (LISP — List Processing) — îáðîáêà ñïèñê³â — áóëà ðîçðîáëåíà äëÿ âèâ÷åííÿ øòó÷íîãî ³íòåëåêòó. ³äòîä³ ðîçâèíóëèñÿ íîâ³ ìîâè, êîæíà ç ÿêèõ ìàëà îäíó àáî ê³ëüêà ïåðåâàã ó ïîð³âíÿíí³ ç ïîïåðåäí³ìè. Íàâåäåìî äåê³ëüêà ïðèêëàä³â: l

Ñ: øâèäêî ðîçðîáëþâàíèé, åôåêòèâíèé êîä;

l

Java: íåçàëåæí³ñòü â³ä êîìï’þòåðíî¿ ïëàòôîðìè;

l

BASIC: ïðîñòîòà ó êîðèñòóâàíí³;

l

Visual Basic: ïîáóäîâà ³íòåðôåéñó êîðèñòóâà÷à çà äîïîìîãîþ ôîðì;

l

Perl: ìàí³ïóëþâàííÿ òåêñòîì.

Êîëè âè ðîçïî÷èíàºòå íîâèé ïðîãðàìíèé ïðîåêò, ïîòð³áíî âèçíà÷èòèñü ùîäî ìîâè ïðîãðàìóâàííÿ. Ïðè âèáîð³ ìîâè êåðóéòåñü òàêèìè êðèòåð³ÿìè: ×è çàáåçïå÷óº ìîâà ïîòð³áí³ âàì ôóíêö³îíàëüí³ ìîæëèâîñò³? ×è ëåãêî íåþ ïðîãðàìóâàòè? ×è äîñòàòíüî çíàºòå âè öþ ìîâó? ×è âîíà âæå âñòàíîâëåíà íà âàøîìó êîìï’þòåð³? Ìîÿ óëþáëåíà ìîâà — Visual Basic .NET. Âîíà ìຠïîòóæí³ ìîæëèâîñò³, òà íåþ ëåãêî êîðèñòóâàòèñÿ. ß çíàþ, ùî Êë³ôó òàêîæ ïîäîáàºòüñÿ Visual Basic .NET. Äæåí â³ääຠïåðåâàãó J# (âèìîâëÿºòüñÿ „äæåé øàðï”), ÿêà ïîõîäèòü ç ìîâè ïðîãðàìóâàííÿ Java. ijðê âèâ÷ຠC# (âèìîâëÿºòüñÿ „ñ³ øàðï”), ùî ïîõîäèòü ç ìîâ ïðîãðàìóâàííÿ C òà C++. Ó ö³é ìàíäð³âö³ âè âèâ÷àòèìåòå ìîâó Visual Basic .NET, àëå Äæåí òà ijðê òàêîæ íàâ÷àòü âàñ äå÷îìó ç J# òà C#. ͳêîëè íå çàâàäèòü çíàòè á³ëüøå, í³æ îäíó ìîâó ïðîãðàìóâàííÿ!

Ñèíòàêñèñ ìîâ ïðîãðàìóâàííÿ ßêùî âè ìàíäðóºòå íàâêîëî ñâ³òó, âàì ìîæå çíàäîáèòèñÿ çíàéòè êîãîñü, õòî ðîçìîâëÿº àíãë³éñüêîþ. Ó êîæí³é ìîâ³ º ñâ³é ñïîñ³á çàïèòàòè: „Âè ãîâîðèòå àíãë³éñüêîþ?”, íàïðèêëàä, àíãë³éñüêå „Do you speak English?”, í³ìåöüêå „Sprechen Sie Englisch?”, ³ñïàíñüêå: ingles?”, ïîðòóãàëüñüêå Ó öèõ ïðèêëàäàõ ð³çíÿòüñÿ íå ëèøå ñëîâà, â³äð³çíÿºòüñÿ òàêîæ ¿õ ðîçòàøóâàííÿ: ³ìåííèêè, 䳺ñëîâà òà äîïîâíåííÿ ðîçòàøîâàí³ ó ð³çíîìó ïîðÿäêó. Ïîðÿäîê ñë³â âèçíà÷àºòüñÿ ñèíòàêñèñîì ìîâè. Òîáòî, ñèíòàêñèñ — öå âñòàíîâëåí³ ïðàâèëà, çà ÿêèìè ó ìîâ³ áóäóºòüñÿ ðå÷åííÿ. ßê ³ ó ðîçìîâíèõ ìîâ, ó êîæíî¿ ìîâè ïðîãðàìóâàííÿ º ñâ³é ñèíòàêñèñ. Ñèíòàêñèñ ìîâ ïðîãðàìóâàííÿ — öå ñëîâíèê, ãðàìàòèêà, ïðàâèëà çàñòîñóâàííÿ ñë³â òà ñòðóêòóðóâàííÿ,

25


ùî óòâîðþþòü ìîâó ïðîãðàìóâàííÿ. Ñèíòàêñèñ âèçíà÷ຠïðàâèëà íàïèñàííÿ ðÿäê³â êîäó òà ïîºäíàííÿ öèõ ðÿäê³â ó ôóíêö³îíóþ÷ó ïðîãðàìó. Íàïðèêëàä, óñ³ ñó÷àñí³ ìîâè ïðîãðàìóâàííÿ ìîæóòü âèêîíóâàòè îïåðàòîðè If...Then...Else. Îïåðàòîðè If...Then... Else çàáåçïå÷óþòü âèá³ð ïðîãðàìîþ îäíîãî ç äâîõ âàð³àíò³â ä³é, çàëåæíî â³ä ïåâíèõ óìîâ. Çàðàç ÿ ïîêàæó âàì ê³ëüêà ïðèêëàä³â íà ñâîºìó ïîðòàòèâíîìó êîìï’þòåð³ ç âèêîðèñòàííÿì ñèíòàêñè÷íî¿ êîíñòðóêö³¿ If...Then...Else ó Visual Basic .NET, C# òà J#. Ïîêè ùî âàì íå ïîòð³áíî ïåðåéìàòèñÿ ¿õ çì³ñòîì àáî ðîçóì³òè êîä, ïðîñòî çàóâàæòå ïîä³áíîñò³ òà â³äì³ííîñò³ ó ñèíòàêñèñ³ ìîâ. Âèâ÷åííÿ ìîâè ïðîãðàìóâàííÿ ñêëàäàºòüñÿ ç âèâ÷åííÿ ¿¿ ñèíòàêñèñó, ñòðóêòóðè òà ïðàâèë. Âè ïîâèíí³ âèâ÷èòè ïóíêòóàö³þ ìîâè, à òàêîæ „çàðåçåðâîâàí³ ñëîâà”. Ïåâí³ ñëîâà ââàæàþòüñÿ „çàðåçåðâîâàíèìè”, îñê³ëüêè âîíè âèêîðèñòîâóþòüñÿ ëèøå ÿê êîìàíäè ìîâè. Íàïðèêëàä, ñëîâà If òà Else º çàðåçåðâîâàíèìè ó á³ëüøîñò³ ìîâ ïðîãðàìóâàííÿ. Çàðåçåðâîâàí³ ñëîâà òàêîæ â³äîì³ ï³ä íàçâîþ êëþ÷îâèõ ñë³â. Êîæíå ç öèõ ñë³â ìຠñïåö³àëüíå ïðèçíà÷åííÿ. Çàçâè÷àé êëþ÷îâ³ ñëîâà îïèñóþòü 䳿, ùî ìàþòü áóòè âèêîíàí³. Âîíè âèêîðèñòîâóþòüñÿ äëÿ ñòâîðåííÿ ó êîä³ ³íñòðóêö³é äëÿ ïðèéíÿòòÿ ð³øåíü. Êîëè âè âèâ÷àºòå ìîâó ïðîãðàìóâàííÿ, îêð³ì ¿¿ ñèíòàêñèñó, ïîòð³áíî âèâ÷èòè òàêîæ ¿¿ ôóíêö³îíàëüíå ïðèçíà÷åííÿ. Ïàì’ÿòàéòå: íå âñ³ ìîâè ïðîãðàìóâàííÿ º áàãàòîôóíêö³îíàëüíèìè. Àëå âñ³ ñó÷àñí³ ìîâè ïðîãðàìóâàííÿ ìàþòü ñï³ëüí³ ðèñè òà, ÿê ïðàâèëî, ñï³ëüíå ôóíêö³îíàëüíå ïðèçíà÷åííÿ.

Ñèíòàêñèñ Visual Basic .NET Ïîïðè òå, ùî ìîâà Visual Basic .NET º äîñòàòíüî ïîòóæíîþ, âèâ÷èòè ¿¿ ëåãêî. Íàâ÷àþ÷èñü ïðîãðàìóâàòè ö³ºþ ìîâîþ, âè ä³çíàºòåñÿ ïðî çàðåçåðâîâàí³ ñëîâà, ñòðóêòóðó òà ôóíäàìåíòàëüí³ îᒺêòè, ç ÿêèõ ñêëàäàºòüñÿ ìîâà. Ïðîòå ñïî÷àòêó âè ìàºòå ä³çíàòèñÿ ïðî îñíîâí³ ñèíòàêñè÷í³ îñîáëèâîñò³ ìîâè. ß çðîáèâ êîðîòêèé ñïèñîê êëþ÷îâèõ ñèíòàêñè÷íèõ îñîáëèâîñòåé Visual Basic .NET: l

ó ðÿäêàõ êîäó íåìຠ³íäèêàòîðà ê³íöÿ ðÿäêà, íàïðèêëàä, êîìè ç êðàïêîþ (;);

l

ðÿäêè êîìåíòàð³â ïî÷èíàþòüñÿ ç àïîñòðîôà (');

26


l

ô³ãóðí³ äóæêè { } íå âèêîðèñòîâóþòüñÿ äëÿ ðîçì³ùåííÿ â íèõ áëîê³â êîäó;

l

ìîâà Visual Basic .NET íå ÷óòëèâà äî ðåã³ñòðà ë³òåðíèõ ñèìâîë³â, äëÿ íå¿ MyCase — öå òå ñàìå, ùî é myCase àáî MYCASE.

ijðê, ÿê³ îñíîâí³ ñèíòàêñè÷í³ â³äì³ííîñò³ º ó C#? Ó C# êîæíèé ðÿäîê êîäó çàê³í÷óºòüñÿ êîìîþ ç êðàïêîþ. Áëîêè êîäó ì³ñòÿòüñÿ ó ô³ãóðíèõ äóæêàõ. Íó, âè çíàºòå — { òà }. Ðÿäêè êîìåíòàð³â ïî÷èíàþòüñÿ ç //. Îêð³ì òîãî, ìîâà C# ÷óòëèâà äî ðåã³ñòðà. Ó í³é MyCase â³äð³çíÿºòüñÿ â³ä myCase àáî MYCASE. Íå çàáóäüòå ïðî J#. Ìîâè J# òà C# â îñíîâíîìó âèêîðèñòîâóþòü îäíàêîâ³ ñèíòàêñè÷í³ ïðàâèëà. Íàïðèêëàä, ó J# êîìà ç êðàïêîþ ñâ³ä÷èòü ïðî çàê³í÷åííÿ ðÿäêà êîäó, à áëîêè êîäó ì³ñòÿòüñÿ ó ô³ãóðíèõ äóæêàõ. Ðÿäêè êîìåíòàð³â ó J# ïî÷èíàþòüñÿ ç //, ³ âîíà òàêîæ º ÷óòëèâîþ äî ðåã³ñòðà ñèìâîë³â.

Ïðèáóòòÿ äî ì³ñòà Âñþäè Ëàñêàâî ïðîñèìî äî ì³ñòà Âñþäè, ³ñêîíñèí. Âàì ïîòð³áíî ïðîéòè òåñò Êîì³òåòó ðàë³. Îòæå, ïåðåõîäèìî äî òåñòó. Ùàñòè âàì!

27


Ìîäóëü 2. ²äåàä, ²ëë³íîéñ


Visual Studio .NET ÿê ³íòåãðîâàíå ñåðåäîâèùå ðîçðîáêè ïðîãðàì Îòæå, ÿê ñïðàâè? Çìîãëè â³äïîâ³ñòè íà çàïèòàííÿ Êîì³òåòó ðàë³? Âîíè ìîæóòü ñòàòè çíà÷íî ñêëàäí³øèìè, êîëè ìè ðóõàòèìåìîñÿ äàë³, àëå âè òàêîæ çíàòèìåòå á³ëüøå. Ïåðåêîíàíèé, ùî ó âàñ íå áóäå ïðîáëåì. ͳêê³ çáèðàºòüñÿ òðîõè ïîâåñòè ìàøèíó, òîæ ÿ çìîæó äåùî âàì ðîçïîâ³ñòè íà øëÿõó äî íàñòóïíîãî ïóíêòó ïðèçíà÷åííÿ — ì³ñòà ²äåàë, ²ëë³íîéñ. Äîðîãîþ ÿ ðîçêàæó âñå, ùî âàì ïîòð³áíî çíàòè, ùîá ñêëàñòè òåñò íà óïðàâë³ííÿ IDE. IDE — öå ²íòåãðîâàíå ñåðåäîâèùå ðîçðîáêè (àíãë. — Integrated Development Environment) Visual Studio .NET êîðïîðàö³¿ Microsoft. Âè êîðèñòóâàòèìåòåñÿ íèì äëÿ íàïèñàííÿ ïåðøî¿ âëàñíî¿ ïðîãðàìè íà Visual Basic .NET. Âè òàêîæ ìîæåòå âèêîðèñòîâóâàòè éîãî äëÿ íàïèñàííÿ ïðîãðàì íà ³íøèõ ìîâàõ ïðîãðàìóâàííÿ. Âèâ÷èâøè ³íòåãðîâàíå ñåðåäîâèùå ðîçðîáêè òà ñêëàâøè òåñò, âè òðîõè ïîêåðóºòå ìàøèíîþ — äîïîìîæåòå íàì ó âèïðîáóâàííÿõ ðàë³. Çðåøòîþ, âè æ íå ïåðåêèíåòå íà ³íøèõ óñå êåðóâàííÿ ìàøèíîþ, ÷è íå òàê? Öå âæå áóëî á íåö³êàâî.

Ïåðøå çíàéîìñòâî ç Visual Studio .NET Âè çíàºòå, ùî ìîæíà ïèñàòè êîìï’þòåðíèé êîä, âèêîðèñòîâóþ÷è çâè÷àéíèé òåêñòîâèé ðåäàêòîð, íàïðèêëàä Notepad àáî Microsoft Word? Òàê, öå ìîæëèâî, ÿêùî, çâè÷àéíî, âè âèð³øèòå îáðàòè íàéñêëàäí³øèé ñïîñ³á! Íàòîì³ñòü á³ëüø³ñòü ïðîãðàì³ñò³â, çîêðåìà ͳêê³ òà ÿ, êîðèñòóºìîñÿ ñïåö³àëüíèìè çàñîáàìè, ùî äîïîìàãàþòü ðîçðîáëÿòè ïðîãðàìè çíà÷íî øâèäøå. Âè òàêîæ áóäåòå êîðèñòóâàòèñÿ îäíèì ç òàêèõ ïðîãðàìíèõ çàñîá³â — Visual Studio .NET êîðïîðàö³¿ Microsoft. Visual Studio .NET êîðïîðàö³¿ Microsoft — öå ³íñòðóìåíò ðîçðîáêè, ùî äîïîìàãຠïèñàòè ïðîãðàìè ð³çíèìè ìîâà ïðîãðàìóâàííÿ ç ñ³ìåéñòâà .NET. Íàïðèêëàä, êîëè âè äîäàºòå äî ôîðìè êíîïêó, Visual Studio .NET àâòîìàòè÷íî äîäຠêîä äëÿ îáðîáêè íàòèñêàííÿ íà öþ êíîïêó. Çâè÷àéíî, Visual Studio .NET íå ìîæå íàïèñàòè âåñü êîä çà âàñ, îñê³ëüêè íå çíàº, ùî ïîâèííà ðîáèòè âàøà ïðîãðàìà. Àëå çàñòîñóâàííÿ ³íòåãðîâàíîãî ñåðåäîâèùà ðîçðîáêè íàïåâíå ìîæå ñêîðîòèòè îáñÿã êîäó, ÿêèé âàì äîâåäåòüñÿ ïèñàòè, òà ÷àñ, ÿêèé âè íà öå âèòðàòèòå. Visual Studio .NET ðîáèòü âàøå æèòòÿ ïðîñò³øèì ùå é ó ³íøîìó: ³íòåãðîâàíå ñåðåäîâèùå àâòîìàòè÷íî çì³íþº êîë³ð âàøîãî êîäó, çàëåæíî â³ä éîãî ïðèçíà÷åííÿ. Íàïðèêëàä, êîìåíòàð³ çàâæäè âèä³ëÿþòüñÿ çåëåíèì, à êëþ÷îâ³ ñëîâà ñèí³ì. Íàâ³òü ñèíòàêñè÷í³ ïîìèëêè ï³äêðåñëþþòüñÿ ÷åðâîíîþ õâèëÿñòîþ ë³í³ºþ — òàê âàì áóäå ëåãøå ¿õ çíàéòè ³ âèïðàâèòè. Visual Studio .NET äîïîìàãຠóïîðÿäêóâàòè êîä øëÿõîì çáåðåæåííÿ éîãî ÷àñòèí â îêðåìèõ ôàéëàõ. Ó òàêèé ñïîñ³á âè ìîæåòå ïîä³ëèòè êîä íà ôóíêö³îíàëüí³ îäèíèö³. Íàïðèêëàä, îêðåì³ ôàéëè ìîæóòü âèêîðèñòîâóâàòèñÿ äëÿ çáåð³ãàííÿ êîäó êîæíî¿ ç âàøèõ ôîðì. Ó Visual Studio .NET àâòîìàòèçîâàíî ïðîöåñ êîìï³ëÿö³¿ òà çàïóñêó ïðîãðàìè: äëÿ öüîãî äîñòàòíüî ëèøå ê³ëüêà ðàç³â êëàöíóòè ìèøåþ. Óòèë³òè íàëàãîäæåííÿ â ñêëàä³ ³íòåãðîâàíîãî ñåðåäîâèùà äîçâîëÿþòü çíàõîäèòè ïîìèëêè ó ïðîãðàì³ òà âèâîäèòè äîïîì³æí³ ïîâ³äîìëåííÿ ï³ä ÷àñ ¿¿

31


âèêîíàííÿ. Îäíà ç íàéñóòòºâ³øèõ ïåðåâàã ñåðåäîâèùà Visual Studio .NET ïîëÿãຠâ òîìó, ùî âîíî äîçâîëÿº ðîçðîáëÿòè ïðîãðàìè íà ð³çíèõ ìîâàõ, â³äîìèõ ÿê ìîâè .NET. Ïðè ðîáîò³ ç óñ³ìà òàêèìè ìîâàìè âè êîðèñòóºòåñÿ îäíèì ³ òèì ñàìèì ³íòåðôåéñîì Visual Studio .NET. Ïåðåë³÷èìî îñíîâí³ ìîâè .NET: l

Visual Basic .NET;

l

C# (âèìîâëÿºòüñÿ „ñ³ øàðï”);

l

J# (âèìîâëÿºòüñÿ „äæåé øàðï”);

l

C++ (âèìîâëÿºòüñÿ „ñ³ ïëþñ ïëþñ”);

l

ASP .NET (ìîâà ñòâîðåííÿ âåá-ñòîð³íîê).

ϳä ÷àñ íàøî¿ ìàíäð³âêè äî ì³ñòà ²äåàë ÿ ïîêàæó âàì, ÿê ó ñåðåäîâèù³ Visual Studio .NET ñòâîðèòè íàéïðîñò³øó ïðîãðàìó. Âàøîþ îñíîâíîþ ìîâîþ ïðîãðàìóâàííÿ ó ö³é ìàíäð³âö³ áóäå Visual Basic .NET, àëå ìè òàêîæ ïðîäåìîíñòðóºìî ïðèêëàäè êîäó íà C# òà J#. Îòæå, ãîòóéòåñÿ äî íàïèñàííÿ ïåðøî¿ ïðîãðàìè!

Çàïóñê Visual Studio Ùîá â³äêðèòè Visual Studio, âèêîíàéòå òàê³ ä³¿: 1. Êëàöí³òü íà êíîïö³ Ïóñê. 2. Âèáåð³òü ìåíþ Ïðîãðàìè. 3. Âèáåð³òü ïàïêó Microsoft Visual Studio .Net 2003. 4. Çàïóñò³òü ïðîãðàìó Microsoft Visual Studio .Net 2003. ßðëèê ïðîãðàìè, ÿêèì ìîæíà ñêîðèñòàòèñÿ äëÿ â³äêðèòòÿ Visual Studio, âè ìîæåòå ðîçì³ñòèòè òàêîæ íà ðîáî÷îìó ñòîë³ êîìï’þòåðà. Öå ïðèñêîðèòü ïîøóê ³ çàïóñê ³íòåãðîâàíîãî ñåðåäîâèùà: äëÿ öüîãî âàì äîñòàòíüî áóäå äâ³÷³ êëàöíóòè ìèøåþ íà ÿðëèêó.

Êîðèñòóâàííÿ Visual Studio .NET Òåïåð ìè ðàçîì ñòâîðèìî âàøó ïåðøó ïðîãðàìó íà ìîâ³ Visual Basic .NET ó ñåðåäîâèù³ Visual Studio .NET, ÿêå ïîâèííå âæå áóòè â³äêðèòèì íà âàøîìó êîìï’þòåð³. Âèêîíàéòå ïîäàëüø³ êðîêè òàê, ÿê ÿ ïîÿñíþâàòèìó. Íå ïðîñòî ïðî÷èòàéòå ³íñòðóêö³¿, à ñàìå âèêîíàéòå!

Ñòàðòîâà ñòîð³íêà ³íòåãðîâàíîãî ñåðåäîâèùà ðîçðîáêè Ïåðøå çîáðàæåííÿ íà åêðàí³, ÿêå âè ïîáà÷èòå, êîëè â³äêðèºòå Visual Studio .NET, º ñòàðòîâîþ ñòîð³íêîþ. Çà çàìîâ÷óâàííÿì áóäå â³äêðèòî âêëàäêó Projects (Ïðîåêòè). Çàçâè÷àé íà

32


í³é âè áóäåòå áà÷èòè ñïèñîê íàÿâíèõ ïðîåêò³â. Îñê³ëüêè âè, éìîâ³ðíî, ïðàöþºòå ç Visual Studio .NET âïåðøå, âêëàäêà Projects ìîæå âèÿâèòèñü ïîðîæíüîþ.

Íà âêëàäö³ My Profile (̳é ïðîô³ëü) âè ìîæåòå íàñòðî¿òè ïàðàìåòðè ñåðåäîâèùà Visual Studio .NET òàê, ùîá âîíî â³äïîâ³äàëî âàøîìó ñòèëþ ðîáîòè. 1. Êëàöí³òü íà âêëàäö³ My Profile.

Âêëàäêà My Profile Îòæå, íàñòðî¿ìî ³íòåãðîâàíå ñåðåäîâèùå ðîçðîáêè ïðîãðàì. 1. dz ñïèñêó Profile (Ïðîô³ëü) âèáåð³òü Visual Studio Developer (Ðîçðîáíèê Visual Studio). 2. Ïåðåâ³ðòå ïàðàìåòðè, çàäàí³ çà çàìîâ÷óâàííÿì: l

Keyboard Scheme: [Default Settings] (Ñõåìà êëàâ³àòóðè: [Íàñòðîþâàííÿ çà çàìîâ÷óâàííÿì]);

l

Window Layout: Visual Studio Default (Ñõåìà â³êíà: Visual Studio çà çàìîâ÷óâàííÿì);

l

Help Filter: (no filter) (Äîâ³äêîâèé ô³ëüòð: (â³äñóòí³é)).

3. Ïåðåìèêà÷ Show Help (Ïîêàçóâàòè äîâ³äêó) âñòàíîâ³òü ó ïîëîæåííÿ Internal Help (Âíóòð³øíÿ äîâ³äêà). 4. Ó ñïèñêó At Startup (Íà ïî÷àòêó) âèáåð³òü Show Start Page (Ïîêàçóâàòè ñòàðòîâó ñòîð³íêó).

33


5. Äëÿ ïðîäîâæåííÿ ðîáîòè âèáåð³òü âêëàäêó Projects (Ïðîåêòè).

Ñòâîðåííÿ íîâîãî ïðîåêòó Òåïåð, êîëè âè íàñòðî¿ëè ïàðàìåòðè ñåðåäîâèùà Visual Studio .NET, ðîçãëÿíåìî âêëàäêó Projects. Âèêîðèñòîâóþ÷è öþ âêëàäêó, âè ìîæåòå ðîçïî÷àòè íîâèé ïðîåêò, àáî â³äêðèòè íàÿâíèé. ϳñëÿ ñòâîðåííÿ íîâîãî ïðîåêòó, â³í ç’ÿâèòüñÿ ó ñïèñêó íàÿâíèõ. Ùîá â³äêðèòè íàÿâíèé ïðîåêò, âèáåð³òü éîãî ó ñïèñêó òà êëàöí³òü íà êíîïö³ Open Project (³äêðèòè ïðîåêò). Äàâàéòå ÿ ñïî÷àòêó ïîêàæó âàì, ÿê ñòâîðèòè íîâèé ïðîåêò äëÿ ïðîãðàìè. Ïîò³ì ìè íàïèøåìî âëàñíå ïðîãðàìó. Ïðîãðàìà HelloWorld áóëà ïåðøîþ äëÿ á³ëüøîñò³ ïðîãðàì³ñò³â. ¯¿ çàâäàííÿ — ãåíåðóâàòè â³êíî ïîâ³äîìëåííÿ, ó ÿêîìó âèâîäèòüñÿ òåêñò „Hello, World”. 1. Êëàöí³òü íà êíîïö³ New Project (Íîâèé ïðîåêò), ùîá ñòâîðèòè íîâèé ïðîåêò. ³äêðèºòüñÿ ä³àëîãîâå â³êíî New Project.

³êíî New Project Çàóâàæòå, ùî íà âêëàäö³ New Project ó âåðõí³é ë³â³é îáëàñò³ ³ç çàãîëîâêîì Project Types (Òèïè ïðîåêò³â) º áàãàòî ð³çíèõ òèï³â ïðîåêò³â, ùî ¿õ ìîæíà ñòâîðþâàòè ó Visual Studio .NET. Ìè ðîçïîâ³ìî âàì ïðî äåÿê³ ç íèõ òðîõè çãîäîì. Ïðîãðàìà HelloWorld áóäå Windows-ïðîãðàìîþ (ó êóðñ³ „Ïðàâèëà êîäóâàííÿ” áóäå âèêîðèñòîâóâàòèñÿ ëèøå øàáëîí Windows

34


Application (Windows-ïðîãðàìà), òîìó ³íøèìè øàáëîíàìè âè ìîæåòå íå ïåðåéìàòèñÿ). Íà ö³é âêëàäö³ òðåáà íå ëèøå îáðàòè òèï ïðîåêòó òà øàáëîí, àëå òàêîæ çàäàòè íàçâó ïðîåêòó òà ì³ñöå çáåðåæåííÿ éîãî ôàéë³â.

1. Ó ñïèñêó Project Types âèáåð³òü Visual Basic Projects (Ïðîåêòè Visual Basic). 2. Ó ñïèñêó Templates (Øàáëîíè) âèáåð³òü Windows Application. 3. Ââåä³òü íàçâó ïðîåêòó HelloWorld ó ïîëå Name (²ì’ÿ). Ó ³ìåí³ ôàéëà íå ïîâèííî áóòè ïðîá³ë³â. 4. Âêàæ³òü ì³ñöå çáåðåæåííÿ ôàéë³â ïðîåêòó (äëÿ öüîãî ìîæíà ñêîðèñòàòèñÿ êíîïêîþ Browse (Îãëÿä)). 5. Êëàöí³òü íà êíîïö³ OK. Áóäå â³äêðèòî íîâèé ïðîåêò. Ïðè öüîìó ó ë³â³é ÷àñòèí³ åêðàíó áóäå â³äîáðàæåíî ôîðìó Form1.vb, à ó ïðàâ³é ÷àñòèí³ — â³êíî Solution Explorer. ×óäîâî, ÷è íå òàê?

³êíî ðîçðîáêè ôîðìè Á³ëüø³ñòü Windows-ïðîãðàì, ÿê³ âè áóäåòå ðîçðîáëÿòè, ïî÷èíàòèìóòü ñâîþ ðîáîòó ç âèâåäåííÿ ôîðìè. Ôîðìà — öå âèäèìà êîðèñòóâà÷åâ³ ÷àñòèíà ïðîãðàìè. Íà ôîðì³ âè áóäåòå ðîçòàøîâóâàòè åëåìåíòè óïðàâë³ííÿ (íàïðèêëàä, êíîïêè àáî òåêñòîâ³ ïîëÿ). Êîëè ï³ä ÷àñ âèêîíàííÿ ïðîãðàìè êîðèñòóâà÷ êëàöຠíà êíîïö³ ìèøåþ, âèêîíóºòüñÿ êîä, ùî â³äïîâ³äຠö³é êíîïö³. Îòæå, ïðîãðàì³ñò ìຠðîçðîáèòè êîä äëÿ êîæíî¿ ñòâîðþâàíî¿ íèì êíîïêè. Ó ãîëîâíîìó â³êí³ ë³âîðó÷ ìè áà÷èìî ïîðîæíþ ôîðìó. Öå â³êíî íàçèâàºòüñÿ â³êíîì ðîçðîáêè ôîðìè (³ ìຠçàãîëîâîê Form1.vb[Design]). Ïðàâîðó÷ ðîçòàøîâàíå â³êíî Solution Explorer.

35


Ïîêè ùî ó ôîðì³ íåìຠæîäíî¿ êíîïêè ÷è òåêñòîâîãî ïîëÿ. ϳçí³øå âè äîäàñòå ¿õ. À çàðàç ÿ ïîêàæó âàì, ÿê ðîáèòè äåÿê³ ïðîñò³ ðå÷³.

³êíî Toolbox Äîñòóï äî áàãàòüîõ çàñîá³â Visual Studio .NET çä³éñíþºòüñÿ øëÿõîì â³äêðèâàííÿ òà çàêðèâàííÿ ïåâíèõ â³êîí. Íàïðèêëàä, ùîá ïîì³ñòèòè êíîïêè òà òåêñòîâ³ ïîëÿ äî ôîðìè, ïîòð³áíî â³äêðèòè â³êíî Toolbox, ÿêå íàçèâàºòüñÿ òàêîæ ïàíåëëþ åëåìåíò³â óïðàâë³ííÿ. Ó öüîìó â³êí³ ïîêàçàíî âñ³ åëåìåíòè óïðàâë³ííÿ, ÿê³ ìîæíà ðîçòàøóâàòè ó ôîðì³, çîêðåìà: êíîïêè, ïåðåìèêà÷³, òåêñòîâ³ ïîëÿ, ñïèñêè òîùî. Ñàìå çà äîïîìîãîþ â³êíà Toolbox âè çãîäîì ñòâîðþâàòèìåòå ö³êàâ³ ôîðìè. 1. Ó ãîëîâíîìó ìåíþ âèáåð³òü View. 2. Âèáåð³òü êîìàíäó Toolbox. ³äêðèºòüñÿ â³êíî Toolbox. 3. Äâ³÷³ êëàöí³òü íà åëåìåíò³ Button (Êíîïêà), ùîá äîäàòè êíîïêó äî ôîðìè. (Öÿ êíîïêà ìîæå áóòè ïðèõîâàíîþ çà â³êíîì Toolbox. Òðîõè çãîäîì ìè ¿¿ ïåðåñóíåìî).

36


Ïåðåì³ùåííÿ òà çì³íà ðîçì³ðó êíîïêè Âè âæå äîäàëè êíîïêó äî ôîðìè. Òåïåð ÿ ïîêàæó âàì, íàñê³ëüêè ëåãêî ïåðåì³ñòèòè öþ êíîïêó òà çì³íèòè ¿¿ ðîçì³ð. 1. Êëàöí³òü íà êíîïö³ òà ïåðåòÿãí³òü ¿¿ äî öåíòðó ôîðìè. 2. Íàâåä³òü ïîêàæ÷èê ìèø³ íà îäèí ³ç á³ëèõ êâàäðàò³â (öå ìàðêåðè çì³íþâàííÿ ðîçì³ðó). 3. Óòðèìóþ÷è íàòèñíóòîþ ë³âó êíîïêó ìèø³, ïåðåì³ñò³òü ìàðêåð çì³íþâàííÿ ðîçì³ðó, ùîá çá³ëüøèòè àáî çìåíøèòè êíîïêó. Ïðàâäà æ, ëåãêî? Òåïåð äîäàìî äî êíîïêè êîä, ùîá, êîëè êîðèñòóâà÷ íà í³é êëàöíå, âèêîíóâàëàñÿ ïåâíà ä³ÿ.

Äîäàâàííÿ êîäó äî êíîïêè Êîëè ìè ñòâîðèëè êíîïêó, Visual Studio .NET àâòîìàòè÷íî äîäàëî ê³ëüêà ðÿäê³â êîäó, ùî â³äîáðàæåí³ ó â³êí³ êîäó. Ïîäèâ³òüñÿ íà ïðèêëàä, íàâåäåíèé íèæ÷å.

Çäàºòüñÿ, öå íàïèñàíî ãðåöüêîþ, ÷è íå òàê? Íå õâèëþéòåñÿ, ìè äîïîìîæåìî ïåðåêëàñòè íàïèñàíå, êîëè íàñòàíå ÷àñ. Ïîêè ùî çíàéä³òü ôðàçó Button1_Click — öÿ ÷àñòèíà êîäó âèêîíóºòüñÿ, êîëè êîðèñòóâà÷ êëàöຠíà êíîïö³. ßêáè ìè êëàöíóëè íà êíîïö³ çàðàç, í³÷îãî íå â³äáóëîñÿ á. Ìè ïîâèíí³ âêàçàòè ïðîãðàì³, ùî ðîáèòè, êîëè õòîñü êëàöຠíà êíîïö³ ï³ä ÷àñ âèêîíàííÿ ïðîãðàìè. Îñü äî ÷îãî çâîäèòüñÿ ïðîãðàìóâàííÿ! Ãîòîâ³? 1. Êîëè âè äâ³÷³ êëàöíåòå íà êíîïö³ Button1, â³äêðèºòüñÿ â³êíî êîäó. 2. Êëàöí³òü íà ïîðîæíüîìó ðÿäêó íàä ñëîâàìè End Sub.

37


3. Ââåä³òü òàêèé ðÿäîê êîäó: MessageBox.Show("Hello, World.") Öåé ðÿäîê êîäó âèêîíóâàòèìåòüñÿ, êîëè êîðèñòóâà÷ êëàöàòèìå íà êíîïö³ ó ôîðì³.

Ïîáóäîâà âëàñíîãî ðîçâ’ÿçàííÿ Òåïåð ÷àñ ïîáóäóâàòè âëàñíå ðîçâ’ÿçàííÿ. Ñàìå çàðàç êîä, íàïèñàíèé âàìè òà Visual Studio .NET, áóäå êîìï³ëþâàòèñÿ â ³íñòðóêö³¿, çðîçóì³ë³ êîìï’þòåðó. 1. Ó ãîëîâíîìó ìåíþ âèáåð³òü Build (Ïîáóäîâà). 2. Âèáåð³òü êîìàíäó Build Solution (Ïîáóäóâàòè ðîçâ’ÿçàííÿ).

Óñï³øíà ïîáóäîâà ðîçâ’ÿçàííÿ ϳñëÿ ïîáóäîâè ðîçâ’ÿçàííÿ â³äêðèºòüñÿ â³êíî Output (Ðåçóëüòàò), ùî ì³ñòèòü ïîâ³äîìëåííÿ ïðî òå, ÷è áóëà ïîáóäîâà ðîçâ’ÿçàííÿ óñï³øíîþ. Óðàç³ óñï³øíî¿ ïîáóäîâè âè ïîáà÷èòå òàêå ïîâ³äîìëåííÿ ó â³êí³ Output:

38


Íåâäàëà ïîáóäîâà ðîçâ’ÿçàííÿ Ïðèïóñòèìî, ùî çàì³òü òîãî, àáè ââåñòè ñëîâî MessageBox, âè ïîìèëèëèñÿ ³ íàáðàëè mMessageBox. Ó â³êí³ Output ç’ÿâèòüñÿ ïîâ³äîìëåííÿ ïðî ïîìèëêó.

ßêùî öå ìîæëèâî, Visual Basic ï³äêðåñëèòü ïîìèëêó. ßêùî äâ³÷³ êëàöíóòè íà ïîâ³äîìëåíí³ ïðî ïîìèëêó, êóðñîð áóäå âñòàíîâëåíî íà òåêñò³, ùî ¿¿ ì³ñòèòü. Îêð³ì òîãî, áóäå â³äêðèòî â³êíî Task List (Ñïèñîê çàäà÷), ó ÿêîìó íàâîäèòèìóòüñÿ äåòàëüí³ ïîÿñíåííÿ ùîäî çì³ñòó ïîìèëêè. ßêùî ïîáóäîâà ðîçâ’ÿçàííÿ áóëà íåâäàëîþ, ïîâåðí³òüñÿ äî êîäó òà ïåðåâ³ðòå, ÷è âè íå ïðèïóñòèëèñÿ ïîìèëîê ïðè éîãî ââåäåíí³. Ïîò³ì ïîáóäóéòå ðîçâ’ÿçàííÿ çíîâó.

Çàïóñê ïðîãðàìè Òåïåð âàøà ïðîãðàìà ñêîìï³ëüîâàíà áåç ïîìèëîê. Îòæå, âè âæå íà øëÿõó äî òîãî, ùîá ñòàòè ïðîãðàì³ñòîì! ×àñ çàïóñòèòè âàøó ïåðøó ïðîãðàìó. 1. Íà ïàíåë³ ãîëîâíîãî ìåíþ âèáåð³òü Debug (Íàëàãîäæåííÿ). 2. Âèáåð³òü êîìàíäó Start (Ðîçïî÷àòè). (ǒÿâèòüñÿ âàøà ôîðìà ³ç êíîïêîþ, ÿêó âè äîäàëè). 3. Êëàöí³òü íà êíîïö³. (ß æ çíàþ — âè âñå îäíî öå çðîáèòå!)

39


Âèâåäåííÿ íà åêðàí â³êíà ïîâ³äîìëåííÿ Êîëè âè êëàöíåòå íà êíîïö³, ç’ÿâèòüñÿ â³êíî ïîâ³äîìëåííÿ ç òåêñòîì „Hello, World”. Çðåøòîþ ñàìå öå âè é íàêàçàëè ðîáèòè ïðîãðàì³! ³òàþ! Âè ùîéíî âèêîíàëè ñâîþ ïåðøó ïðîãðàìó íà Visual Basic .NET. 1. Êëàöí³òü íà êíîïö³ OK, ùîá çàêðèòè â³êíî ïîâ³äîìëåííÿ. (³êíî ïîâ³äîìëåííÿ çíèêíå, à âàøà ôîðìà, ÿê ³ ðàí³øå, çàëèøàòèìåòüñÿ íà åêðàí³. Âè ìîæåòå çíîâó êëàöíóòè íà êíîïö³, ùîá âäðóãå âèâåñòè íà åêðàí â³êíî ïîâ³äîìëåííÿ). 2. Êëàöí³òü íà çíà÷êó ´ ó ïðàâîìó âåðõíüîìó êóò³ ôîðìè, ùîá çàâåðøèòè ïðîãðàìó.

³êíî Output Êîëè âèêîíàííÿ ïðîãðàìè çàâåðøèòüñÿ, ç’ÿâëÿòüñÿ ïîâ³äîìëåííÿ ïðî íàëàãîäæåííÿ. Ïåðåãëÿíóòè âñ³ ö³ ïîâ³äîìëåííÿ ìîæíà çà äîïîìîãîþ ñìóãè ïðîêðóòèòè â³êíà Output.

Çáåðåæåííÿ ïðîåêòó Òåïåð ÷àñ çáåðåãòè ïðîåêò. Öåé ïðîöåñ ïîä³áíèé äî çáåðåæåííÿ ó áóäü-ÿê³é ³íø³é Windowsïðîãðàì³. 1. Íà ïàíåë³ ãîëîâíîãî ìåíþ âèáåð³òü File (Ôàéë). 2. Âèáåð³òü êîìàíäó Save All (Çáåðåãòè âñå). 3. Ùîá âèéòè ç Visual Studio .NET, íà ïàíåë³ ãîëîâíîãî ìåíþ âèáåð³òü File. 4. Âèáåð³òü êîìàíäó Exit (Âèéòè). Ìîæåòå ñïðîáóâàòè çðîáèòè öå ñàì³. Ó ìîºìó êèøåíüêîâîìó êîìï’þòåð³ º âïðàâà.

40


Âïðàâà 2.1. Hello World Íàïèø³òü ïðîãðàìó HelloWorld, ùî âèâîäèòèìå ïîâ³äîìëåííÿ „Goodbye, World”. Äëÿ öüîãî ïîâòîð³òü 䳿, îïèñàí³ âèùå.

Ôàéëè òà ïàïêè ðîçâ’ÿçàííÿ Êîëè âè îïèñóºòå ïðîãðàìó ìîâîþ Visual Basic, ãåíåðóºòüñÿ áàãàòî ôàéë³â. Âè ïîâèíí³ çíàòè, ÿê³ ôàéëè ñòâîðþþòüñÿ òà äëÿ ÷îãî âîíè ïðèçíà÷åí³. Ïîäèâ³òüñÿ íà çí³ìîê åêðàíó, íàâåäåíèé íèæ÷å. Íà íüîìó âè ïîáà÷èòå òèïîâèé íàá³ð ôàéë³â òà ïàïîê ïðîåêòó. Âèêîðèñòîâóþ÷è ïðîâ³äíèê Windows, çíàéä³òü ïàïêó, äå âè çáåðåãëè ñâ³é ïðîåêò HelloWorld. Ðîçêðèéòå öþ ïàïêó, ³ âè ïîáà÷èòå, ùî äëÿ ïðîåêòó áóëî ñòâîðåíî ïàïêó HelloWorld. Ðîçêðèéòå ïàïêó HelloWorld, ùîá ïîáà÷èòè ôàéëè, ñòâîðåí³ Visual Studio .NET äëÿ âàøîãî ïðîåêòó. Íàéâàæëèâ³øèìè ç íèõ º òàê³: l

HelloWorld.sln — ôàéë, ùî ì³ñòèòü â³äîìîñò³ ïðî âñ³ ³íø³ ôàéëè ðîçâ’ÿçàííÿ. Ðîçâ’ÿçàííÿ ìîæå ì³ñòèòè äåê³ëüêà ïðîåêò³â, àëå âàøå ðîçâ’ÿçàííÿ HelloWorld ì³ñòèòü ïîñèëàííÿ ëèøå íà îäèí ôàéë ïðîåêòó HelloWorld.vbproj. ³äêðèâàþ÷è íàÿâíèé ïðîåêò, âè ïîñèëàºòåñü íà ôàéë HelloWorld.sln.

l

Form1.vb — ôàéë, ùî ì³ñòèòü ôîðìó òà ïîâ’ÿçàíèé ç íåþ êîä.

Ðîçêðèéòå ïàïêó bin, äâ³÷³ êëàöíóâøè íà í³é. Ó ö³é ïàïö³ ì³ñòèòüñÿ âèêîíóâàíèé ôàéë ïðîãðàìè HelloWorld.exe. Öåé ôàéë ìîæíà çàïóñòèòè íà áóäü-ÿêîìó êîìï’þòåð³, íàâ³òü ÿêùî íà íüîìó íå âñòàíîâëåíî Visual Studio .NET.

Ïðèáóòòÿ äî ²äåàëó Òåïåð, êîëè âè ïðî÷èòàëè ïîñ³áíèê ç ðîáîòè â ³íòåãðîâàíîìó ñåðåäîâèù³ ðîçðîáêè, — ÷àñ ñêëàñòè òåñò. Âèêîíàéòå âïðàâó, ùîá ïîêàçàòè, ùî âè ãîòîâ³ äî ïîäàëüøî¿ ïîäîðîæ³.

41


Âïðàâà 2.2. Ìîº ³ì'ÿ Íàïèø³òü ïðîãðàìó MyNameIs. Âîíà ïîä³áíà äî ïðîãðàìè HelloWorld, ÿêó âè âæå ðîçðîáèëè. Ñòâîð³òü ïðîåêò MyNameIs. Íà ñòàðòîâ³é ñòîð³íö³ êëàöí³òü íà êíîïö³ New Project. Ìîæëèâî, ùîá ïîáà÷èòè ¿¿, âàì äîâåäåòüñÿ çàêðèòè â³êíî Output. Àáî æ âè ìîæåòå âèáðàòè êîìàíäó File4New4Project. Äî ôîðìè Form1 äîäàéòå êíîïêó òà òåêñòîâå ïîëå. Çàëèøòå äëÿ íèõ ³ìåíà, ùî âèêîðèñòîâóþòüñÿ çà çàìîâ÷óâàííÿì. Äâ³÷³ êëàöí³òü íà êíîïö³ Button1, ùîá â³äêðèòè ñòîð³íêó êîäó. Ó ï³äïðîãðàì³ Button1_Click ââåä³òü òàêèé ðÿäîê êîäó: TextBox1.Text = "âàøå ³ì’ÿ" Ñëîâà âàøå ³ì’ÿ çàì³í³òü âàøèì ñïðàâæí³ì ³ìåíåì. Îáîâ’ÿçêîâî çáåðåæ³òü ëàïêè. Ïîáóäóéòå ðîçâ’ÿçàííÿ òà çàïóñò³òü ïðîãðàìó. Êîëè âîíà çàïðàöþº ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðó.

Çàâäàííÿ 2. Çàêëàä øâèäêîãî õàð÷óâàííÿ Îñê³ëüêè ìè çóïèíÿºìîñÿ ìàéæå á³ëÿ êîæíîãî çàêëàäó øâèäêîãî õàð÷óâàííÿ, äàâàéòå íà öþ òåìó ñòâîðèìî ïðîãðàìó ³ ïîðîçâàæàºìîñÿ. Âè âæå çíàºòå, ÿê äîäàòè êíîïêó äî ôîðìè, ïîáóäóâàòè ïðîãðàìó òà çàïóñòèòè ¿¿. Ó ïàïö³ Çàâäàííÿ_2 ì³ñòèòüñÿ ãîòîâà ïðîãðàìà, äî íå¿ ïîòð³áíî ëèøå äîäàòè êíîïêè Button1–Button4. ϳñëÿ äîäàâàííÿ êíîïîê ôîðìà ïîâèííà íàáóòè òàêîãî âèãëÿäó:

42


Ïîáóäóéòå ïðîãðàìó. Ïîò³ì âèáåð³òü êîìàíäó Debug4Start without Debugging àáî êîìàíäó Debug4Start. Ùî â³äáóâàºòüñÿ, êîëè âè êëàöàºòå íà êîæí³é êíîïö³? Ïðîãðàìó, ùî ïðàöþº, ïîêàæ³òü ³íñòðóêòîðó.

Äîäàòêîâå çàâäàííÿ Ó íàñòóïíîìó ìîäóë³ âè íàâ÷èòåñÿ çì³íþâàòè òåêñò íà êíîïö³. ßê öå çðîáèòè, âè ìîæåòå ä³çíàòèñÿ ñàìîñò³éíî, êîðèñòóþ÷èñü â³êíîì Properties (Âëàñòèâîñò³). Ëàñêàâî ïðîñèìî äî ì³ñòà ²äåàë. Âàì ïîòð³áíî ïðîéòè ùå îäèí òåñò Êîì³òåòó ðàë³. Ùàñòè âàì!

43


Ìîäóëü 3. Ïñåâäî, Ïåíñ³ëüâàí³ÿ


Òèïè îïåðàòîð³â Êë³ô äîáðå ïîïðàöþâàâ, çíàéîìëÿ÷è âàñ ³ç Visual Studio. NET. ×è âàì íå ñïîäîáàëîñÿ ðîçðîáëÿòè ñâîþ ïåðøó ïðîãðàìó? Ðîçóì³þ: âàì íå äîâåëîñÿ íàïèñàòè áàãàòî êîäó, àëå öå âè ùå âñòèãíåòå. Çàðàç ÿ õî÷ó ïîêàçàòè âàì, ÿê ïëàíóâàòè òà îðãàí³çîâóâàòè ïðîãðàìó, ïåðø í³æ ðîçïî÷àòè íàïèñàííÿ êîäó. Âè çíàºòå, ùî ìîæåòå íàïèñàòè êîìï’þòåðíó ïðîãðàìó ïåðø, í³æ âèâ÷èòå ìîâó ïðîãðàìóâàííÿ? Áàãàòî ïðîãðàì³ñò³â ïèøå ñâî¿ ïðîãðàìè ñïî÷àòêó ó „ïñåâäîêî䳔, à ïîò³ì ïåðåêëàäຠ¿õ íà ñïðàâæíþ ìîâó ïðîãðàìóâàííÿ. Òàê ¿ì ëåãøå âèçíà÷èòè ëîã³÷íó ñòðóêòóðó ïðîãðàìè òà ¿¿ ôóíêö³¿. Ïñåâäîêîä ñêëàäàºòüñÿ ç ïðîñòèõ ³íñòðóêö³é, íàïèñàíèõ àíãë³éñüêîþ (àáî ð³äíîþ) ìîâîþ, ÿê³ ïîÿñíþþòü, ùî ïîâèííà ðîáèòè ïðîãðàìà. Êîëè ïñåâäîêîä ãîòîâèé, ëåãøå íàïèñàòè ñïðàâæí³é êîä. Ïñåâäîêîä âèçíà÷ຠñòðóêòóðó ïðîãðàìè. Ïåðø í³æ ÿ ïîêàæó âàì, ÿê êîðèñòóâàòèñÿ ïñåâäîêîäîì, õî÷ó ïîçíàéîìèòè âàñ ç îñíîâíèìè òèïàìè îïåðàòîð³â, õî÷à ¿õ ñèíòàêñèñ ó ð³çíèõ ìîâàõ áóäå ð³çíèì. Êîìá³íóþ÷è ö³ îïåðàòîðè, âè çìîæåòå íàïèñàòè äóæå ñêëàäí³ ïðîãðàìè. Ïðèãàäóºòå ðÿäîê êîäó, ÿêèé âè ââîäèëè ó ïðîãðàì³ HelloWorld? MessageBox.Show("Hello, World.") Öå îïåðàòîð. ³í âèâîäèòü ïåâí³ äàí³. Òàêèé òèï îïåðàòîðà íàçèâàºòüñÿ ïîâ³äîìëåííÿì ³ º îäíèì ³ç áàçîâèõ ð³çíîâèä³â îïåðàòîð³â.  óñ³õ ìîâàõ ïðîãðàìóâàííÿ º îäíàêîâèé íàá³ð áàçîâèõ îïåðàòîð³â, ùî âèêîðèñòîâóþòüñÿ äëÿ âèâåäåííÿ äàíèõ. Õî÷à ïðèçíà÷åííÿ öèõ îïåðàòîð³â îäíàêîâå, ¿õ ñèíòàêñèñ çàëåæèòü â³ä ìîâè. гçí³ ìîâè ïðîãðàìóâàííÿ ï³äòðèìóþòü é ³íø³ áàçîâ³ ìîâí³ êîíñòðóêö³¿. Ðîçãëÿíåìî ¿õ. Çì³íí³ âèêîðèñòîâóþòüñÿ äëÿ çáåðåæåííÿ ³íôîðìàö³¿, çîêðåìà ÷èñåë òà òåêñòó. Âîíè º „âì³ñòèëèùàìè” äàíèõ. Çà äîïîìîãîþ îïåðàòîð³â ïðèñâîþâàííÿ çì³ííèì íàäàþòü ïåâíèõ çíà÷åííü. Çíà÷åííÿ ìîæóòü áóòè ÷èñëàìè, òåêñòîì, ³íøèìè çì³ííèìè àáî ðåçóëüòàòàìè îá÷èñëåíü. Îïåðàòîðè ïîð³âíÿííÿ âèêîðèñòîâóþòüñÿ äëÿ ïîð³âíÿííÿ çíà÷åííÿ çì³ííî¿ ç ÷èñëîì àáî ³íøèì çíà÷åííÿì ÷è çì³ííîþ. Îïåðàòîðè ïîð³âíÿííÿ çàäàþòü ïèòàííÿ, ùî ïðèïóñêàþòü îäíó ç äâîõ â³äïîâ³äåé: true (³ñòèííî) àáî false (õèáíî). Îïåðàòîðè ïðèéíÿòòÿ ð³øåííÿ âèêîðèñòîâóþòüñÿ äëÿ òîãî, ùîá âèáèðàòè ñöåíàð³é ïîäàëüøèõ ä³é. Âèá³ð ðîáèòüñÿ íà ï³äñòàâ³ ïîð³âíÿííÿ. ßêùî ðåçóëüòàò ïîð³âíÿííÿ º ³ñòèííèì, îáèðàºòüñÿ îäèí ñöåíàð³é, ÿêùî õèáíèì — ³íøèé. Îïåðàòîðè ïðèéíÿòòÿ ð³øåííÿ ÷àñòî

47


íàçèâàþòü ðîçãàëóæåííÿìè, îñê³ëüêè, â ðåçóëüòàò³ ¿õ âèêîíàííÿ, îá÷èñëåííÿ ìîæóòü áóòè ñïðÿìîâàí³ â îäíîìó àáî â ³íøîìó íàïðÿìêó. Öèêë³÷í³ îïåðàòîðè âèêîðèñòîâóþòüñÿ äëÿ ïîâòîðíîãî âèêîíàííÿ îïåðàö³é. Çàâäÿêè öèì îïåðàòîðàì çìåíøóºòüñÿ îáñÿã êîäó, ÿêèé íåîáõ³äíî íàïèñàòè äëÿ òîãî, ùîá ïðîãðàìà áàãàòîðàçîâî âèêîíàëà îäíó é òó ñàìó ä³þ. Íàâ÷èòèñü ïðîãðàìóâàòè îçíà÷ຠíàâ÷èòèñü êîðèñòóâàòèñÿ áàçîâèìè îïåðàòîðàìè, ùîá „çìóñèòè” ïðîãðàìó ðîáèòè òå, ùî âàì òðåáà. ϳä ÷àñ âèâ÷åííÿ Visual Basic .NET (àáî áóäü-ÿêî¿ ³íøî¿ ìîâè ïðîãðàìóâàííÿ) âàøå çàâäàííÿ ïîëÿãàòèìå ó òîìó, ùîá âèâ÷èòè ïåâíèé ñèíòàêñèñ, íåîáõ³äíèé äëÿ íàïèñàííÿ òà âèêîðèñòàííÿ áàçîâèõ îïåðàòîð³â.

Ùî òàêå ïñåâäîêîä ßê ÿ âæå çãàäóâàâ, ïðîãðàì³ñòè ÷àñòî ïèøóòü ñâî¿ ïðîãðàìè ó ïñåâäîêîä³. Ñëîâî „ïñåâäî” îçíà÷ຠ„çàì³ñòü”. Íàïðèêëàä, äåÿê³ àâòîðè êîðèñòóþòüñÿ ïñåâäîí³ìàìè çàì³ñòü ñâî¿õ ñïðàâæí³õ ³ìåí. Ïñåâäîêîä íàïèñàíèé „íåñïðàâæíüîþ” ìîâîþ ïðîãðàìóâàííÿ. ³í ñêëàäàºòüñÿ ç ïðîñòèõ ðå÷åíü, ÿê³ îïèñóþòü, ùî áóäå ðîáèòè ïðîãðàìà. Âè ìîæåòå íàïèñàòè ïñåâäîêîä àíãë³éñüêîþ, ³ñïàíñüêîþ, ëàòèíñüêîþ àáî áóäü-ÿêîþ ³íøîþ ìîâîþ, òîìó ùî êîìï’þòåð í³êîëè íå áóäå éîãî ÷èòàòè. Âàø ïñåâäîêîä ìຠáóòè çðîçóì³ëèì ëèøå äëÿ âàñ òà ³íøèõ ïðîãðàì³ñò³â, îñê³ëüêè â³í ñòàíîâèòü îñíîâó àáî ³íñòðóêö³¿ äëÿ íàïèñàííÿ ñïðàâæíüîãî êîäó ïðîãðàìè. Ïñåâäîêîä ïèøåòüñÿ ç âèêîðèñòàííÿì ð³çíèõ òèï³â áàçîâèõ îïåðàòîð³â: îïåðàòîð³â ïðèñâîþâàííÿ, ïîð³âíÿííÿ, ïðèéíÿòòÿ ð³øåííÿ òîùî. Äîçâîëüòå íàâåñòè ïðèêëàä âèêîðèñòàííÿ ïñåâäîêîäó äëÿ ðîçðîáêè ïðîãðàìè. Ïðèïóñò³ìî, ÿ õî÷ó íàïèñàòè ïðîãðàìó äëÿ îá÷èñëåííÿ ñåðåäíüî¿ âàðòîñò³ áåíçèíó ó äîëàðàõ íà ãàëîí ïðîòÿãîì óñ³º¿ íàøî¿ ïîäîðîæ³. Ùî äîâåäåòüñÿ ðîáèòè ïðîãðàì³? Ùîá â³äïîâ³ñòè íà öå ïèòàííÿ, ÿ ñïî÷àòêó çàïèñàâ ¿¿ ïñåâäîêîä. Ðîçãëÿíåìî ê³ëüêà êðîê³â, ÿê³ ïîòð³áíî âèêîíàòè ïðîãðàì³, ùîá âèðàõóâàòè ñåðåäíþ âàðò³ñòü áåíçèíó ïðîòÿãîì íàøî¿ ïîäîðîæ³. 1. ϳäñóìóâàòè óñ³ êîøòè, ÿê³ ìè âèòðàòèëè íà áåíçèí, òà íàäàòè çíà÷åííÿ çíàéäåíî¿ ñóìè çì³íí³é (óñüîãî äîëàð³â). 2. Äîäàòè ê³ëüêîñò³ ãàëîí³â áåíçèíó, ÿê³ ìè âèêîðèñòàëè, òà ïðèñâî¿òè ðåçóëüòàò ³íø³é çì³íí³é (óñüîãî ãàëîí³â).

48


3. Ïåðøó çì³ííó (óñüîãî äîëàð³â) ïîä³ëèòè íà äðóãó çì³ííó (óñüîãî ãàëîí³â) òà ïðèñâî¿òè ðåçóëüòàò òðåò³é çì³íí³é (äîëàð³â íà ãàëîí). 4. Âèâåñòè ïîâ³äîìëåííÿ, äå çàçíà÷åíî ñåðåäíþ âàðò³ñòü áåíçèíó ó äîëàðàõ íà ãàëîí. Ïñåâäîêîä ÷³òêî âèçíà÷àº, ùî ðîáèòèìå ìîÿ ïðîãðàìà. Òåïåð ìîæíà íàïèñàòè êîä, ùî âèêîíóâàòèìå âèçíà÷åí³ ïñåâäîêîäîì çàäà÷³. ³çüìåìî ³íøèé ïðèêëàä, ó ÿêîìó áóäå á³ëüøå ä³é. Öå ìîæóòü áóòè 䳿 ïðîãðàìîâàíîãî ðîáîòà, ùî çàì³íþº ñïóùåí³ øèíè. 1. Âèçíà÷àºìî, ÿêà øèíà ñïóùåíà (îïåðàòîð ïîð³âíÿííÿ). 2. Âèçíà÷àºìî ðîçì³ð ñïóùåíî¿ øèíè (îïåðàòîð ïîð³âíÿííÿ). 3. ßêùî äëÿ çàì³íè íåìຠøèíè â³äïîâ³äíîãî ðîçì³ðó, âèêîíóºìî çàì³íó â àâòîìàãàçèí³, ³íàêøå — çä³éñíþºìî êðîêè 4–11 (îïåðàòîðè ïîð³âíÿííÿ òà ïðèéíÿòòÿ ð³øåííÿ). 4. ϳä³éìàºìî ìàøèíó, âèêîðèñòîâóþ÷è ã³äðàâë³÷íèé äîìêðàò. 5. Çà äîïîìîãîþ âèêðóòêè çí³ìàºìî êðèøêó, ùî çàêðèâຠöåíòðàëüíó ÷àñòèíó êîëåñà. 6. Âèêîðèñòîâóþ÷è ãàéêîâèé êëþ÷, çí³ìàºìî ðåáðèñò³ ãàéêè äîòè, äîêè óñ³ ãàéêè íå áóäå çíÿòî (öèêë³÷íèé îïåðàòîð). 7. Çí³ìàºìî ïîøêîäæåíó øèíó. 8. Ñòàâèìî íîâó øèíó. 9. Âèêîðèñòîâóþ÷è ãàéêîâèé êëþ÷, âñòàíîâëþºìî òà çàòÿãóºìî ãàéêè äîòè, äîêè óñ³ ãàéêè íå áóäå çàêðó÷åíî (öèêë³÷íèé îïåðàòîð). 10. Ïîâåðòàºìî êðèøêó íà ì³ñöå òà çàáèâàºìî ¿¿. 11. Îïóñêàºìî ã³äðàâë³÷íèé äîìêðàò. Ó íàâåäåíîìó ïñåâäîêîä³ âèêîðèñòîâóºòüñÿ êîìá³íàö³ÿ îïåðàòîð³â ïðèñâîþâàííÿ, ïîð³âíÿííÿ, ïðèéíÿòòÿ ð³øåííÿ òà öèêë³÷íèõ îïåðàòîð³â. Íàïðèêëàä, ùîá çàïàì’ÿòàòè ðîçì³ð ñïóùåíî¿ øèíè, âèêîðèñòîâóºòüñÿ îïåðàòîð ïðèñâîþâàííÿ. Ùîá ïîð³âíÿòè ðîçì³ð ñïóùåíî¿ øèíè ç íàÿâíèìè øèíàìè — îïåðàòîð ïîð³âíÿííÿ. Îïåðàòîð ïðèéíÿòòÿ ð³øåííÿ çàñòîñîâóºòüñÿ ðàçîì ³ç îïåðàòîðîì ïîð³âíÿííÿ. ßêùî ó âàñ º øèíà ïîòð³áíîãî ðîçì³ðó, ðîáîòà òðèâàº, ³íàêøå äîâåäåòüñÿ â³äâ³äàòè àâòîìàãàçèí. Çíÿòòÿ òà çàòÿãóâàííÿ ãàéîê ìîæíà ðîçãëÿäàòè ÿê öèêë³÷í³ ïðîöåñè. Êîæåí ç íèõ òðåáà ïîâòîðèòè ê³ëüêà ðàç³â, äîêè óñ³ ãàéêè íå áóäå çíÿòî, à ïîò³ì çàêðó÷åíî. ×îìó á âàì íå ñïðîáóâàòè íàïèñàòè ïñåâäîêîä íà ìîºìó êèøåíüêîâîìó êîìï’þòåð³?

49


Âïðàâà 3.1. Çáèðàºìîñü ó ïîäîðîæ Íàïèø³òü ïñåâäîêîä, ùî ïîÿñíþâàòèìå 䳿, ÿê³ âàì íåîáõ³äíî âèêîíàòè, ùîá ç³áðàòèñÿ ó äîðîãó. Ó âàøîìó ðîçâ’ÿçàíí³ ïîâèííî áóòè ïðèíàéìí³ ñ³ì ä³é. ßêùî êîæåí ïóíêò ïî÷èíàºòüñÿ ç³ ñëîâà „ÿêùî”, âè íå çðîçóì³ëè ñóòí³ñòü ïñåâäîêîäó.

Êîìåíòàð³ Ñó÷àñí³ ìîâè ïðîãðàìóâàííÿ, çîêðåìà Visual Basic .NET, äîçâîëÿþòü äîäàâàòè äî êîäó êîìåíòàð³. Êîìåíòàð³, íà â³äì³íó â³ä îïåðàòîð³â, íå êîìï³ëþþòüñÿ ³ íå âèêîíóþòüñÿ, êîëè çàïóñêàºòüñÿ ïðîãðàìà. Êîìåíòà𳠗 öå ñïîñ³á çàäîêóìåíòóâàòè âàø êîä. Âîíè äîïîìàãàþòü çãàäàòè ïðèçíà÷åííÿ òîãî ÷è òîãî éîãî ôðàãìåíòà. Âîíè òàêîæ äîïîìàãàþòü ³íøèì ïðîãðàì³ñòàì çðîçóì³òè ïðîãðàìó. Âè çàâæäè ïîâèíí³ äîäàâàòè êîìåíòàð³ äî ñâîãî êîäó. Íàÿâí³ñòü êîìåíòàð³â º îçíàêîþ äîñâ³ä÷åíîñò³ ïðîãðàì³ñòà. Äîñâ³ä÷åíèé ïðîãðàì³ñò ñòàðàííî îáì³ðêîâóº òà äîêóìåíòóº êîä. Âè ïîâèíí³ äîïèñóâàòè êîìåíòàð³ äî êîäó, êîëè ðîáèòå çì³íè àáî äîäàºòå ïåâí³ ôóíêö³îíàëüí³ ìîæëèâîñò³. Îêð³ì òîãî, ñë³ä ñóïðîâîäæóâàòè êîìåíòàðÿìè ò³ ÷àñòèíè êîäó, ÿê³ âàæêî çðîçóì³òè àáî ÿê³ âèêîíóþòü íàäçâè÷àéíî ñêëàäí³ ÷è êîìïëåêñí³ îá÷èñëåííÿ. Ó ìîâ³ Visual Basic .NET êîìåíòàð³ ïî÷èíàþòüñÿ ç îäèíî÷íèõ ëàïîê ('). Áóäü-ÿêèé ðÿäîê êîäó, ùî ïî÷èíàºòüñÿ ç òàêîãî çíàêà, ³íòåðïðåòóºòüñÿ ÿê êîìåíòàð ³ íå áóäå êîìï³ëþâàòèñÿ òà âèêîíóâàòèñÿ ï³ä ÷àñ çàïóñêó ïðîãðàìè. Íàâåäåìî ïðèêëàä êîìåíòàðÿ ó ìîâ³ Visual Basic .NET:

50


Ó Visual Basic .NET äëÿ êîìåíòàð³â âè ìîæåòå âèêîðèñòîâóâàòè îäèíî÷í³ ëàïêè, à îò ó C# òà J# íà ïî÷àòêó ðÿäêà êîìåíòàðÿ çàïèñóþòüñÿ äâ³ ñê³ñí³ ðèñêè (//). Íàïðèêëàä:

Îêð³ì äîêóìåíòóâàííÿ êîäó, ó êîìåíòàð³â º ³íøà âàæëèâà ôóíêö³ÿ. Îñê³ëüêè êîìåíòàð³ íå âèêîíóþòüñÿ, ¿õ ìîæíà çàñòîñîâóâàòè äëÿ òîãî, ùîá çàáåçïå÷èòè íåâèêîíàííÿ ðÿäê³â ñïðàâæíüîãî êîäó. Òàêèé ïðîöåñ íàçèâàºòüñÿ „çàêîìåíòîâóâàííÿì” êîäó. Çà äîïîìîãîþ çàêîìåíòîâóâàííÿ âè ìîæåòå øóêàòè ó êîä³ ïîìèëêè. ßêùî â ïðîãðàì³ º ïîìèëêà, âè ìîæåòå çàêîìåíòîâóâàòè ðÿäêè àáî ö³ë³ áëîêè êîäó, äîêè ïîìèëêà íå ïåðåñòàíå âèíèêàòè. Êîä, âèíåñåíèé ó êîìåíòàð³ îñòàíí³ì, éìîâ³ðíî, ³ ì³ñòèòü ïîìèëêó. Çðó÷íî, ÷è íå òàê? Çàðàç ÿ íàâåäó ïðèêëàä âèíåñåííÿ êîäó äî êîìåíòàð³â. Çàóâàæòå, ùî ç-ïîì³æ òðüîõ ðÿäê³â êîäó çàêîìåíòîâàíî äðóãèé, îñê³ëüêè íà éîãî ïî÷àòêó çàïèñàíî îäèíî÷í³ ëàïêè. Îòæå, ïåðø³é ³ òðåò³é ðÿäêè âèêîíóâàòèìóòüñÿ, à äðóãèé ðÿäîê — í³!

Ïñåâäîêîä ÿê êîìåíòàð³ À òåïåð — ïðî îäíå ç íàéö³êàâ³øèõ ³ íàéö³íí³øèõ çàñòîñóâàíü êîìåíòàð³â. ×åêàºòå íå äî÷åêàºòåñÿ?! Âè ìîæåòå âèêîðèñòîâóâàòè êîìåíòàð³ äëÿ ðîçðîáêè òà ïëàíóâàííÿ ïðîãðàìè. Öå äóæå ëåãêî. Âè âæå íàïèñàëè ïñåâäîêîä, ùî âèçíà÷ຠ䳿 âàøî¿ ïðîãðàìè. Òîæ ñêîðèñòàéòåñÿ öèì. Ñêîï³þéòå ñâ³é ïñåâäîêîä ó ïðîãðàìó òà ïîñòàâòå îäèíî÷í³ ëàïêè ïåðåä êîæíèì éîãî ðÿäêîì, ùîá ïåðåòâîðèòè ïñåâäîêîä íà êîìåíòàð. Ïîò³ì íàïèø³òü ñïðàâæí³é êîä ìîâîþ Visual Basic .NET ï³ä êîæíèì ðÿäêîì êîìåíòàð³â. Òåïåð ó âàñ íå ïðîñòî ãîòîâà ïðîãðàìà — âîíà ùå é çàáåçïå÷åíà êîìåíòàðÿìè.

51


³çüìåìî, íàïðèêëàä, ïñåâäîêîä, ùî ÿ íàïèñàâ äëÿ îá÷èñëåííÿ ñåðåäíüî¿ âàðòîñò³ áåíçèíó ó äîëàðàõ íà ãàëîí. Çàïèñàâøè ï³ä êîæíèì ðÿäêîì ïñåâäîêîäó â³äïîâ³äíèé îïåðàòîð ìîâè Visual Basic .NET, îòðèìàºìî ãîòîâó ïðîãðàìó.

³äñòóïè òà ïðîá³ëè Ìîæëèâî, âè é íå ðîçó쳺òå óâåñü âèùåíàâåäåíèé êîä Visual Basic .NET, àëå âàì ñë³ä çâåðíóòè óâàãó íà ê³ëüêà ðå÷åé. Ïî-ïåðøå, âè áà÷èòå, ùî óñ³ êîìåíòàð³ ïî÷èíàþòüñÿ ç îäèíî÷íèõ ëàïîê. Îêð³ì òîãî, ó Visual Studio êîìåíòàð³ âèä³ëåí³ çåëåíèì êîëüîðîì. Òàê ¿õ ëåãêî â³äð³çíèòè â³ä êîäó. Ïî-äðóãå, çàóâàæòå, ùî ïåðåä êîæíèì êîìåíòàðåì ç’ÿâèâñÿ ïîðîæí³é ðÿäîê. Òàê³ ïîðîæí³ ðÿäêè ïîä³ëÿþòü êîä òà êîìåíòàð³ íà ãðóïè çà ôóíêö³îíàëüíèì ïðèçíà÷åííÿì. Çàâäÿêè ïîðîæí³ì ðÿäêàì ëîã³êà ïðîãðàìè ñòຠá³ëüø çðîçóì³ëîþ.

52


Ó á³ëüøîñò³ âèïàäê³â Visual Basic .NET àâòîìàòè÷íî äîäຠïðîá³ëè òà â³äñòóïè, ùîá çðîáèòè êîä ÷èòàáåëüíèì. Àëå âè ìîæåòå âëàñíîðó÷ âñòàâèòè, äå ïîòð³áíî, äîäàòêîâ³ ïðîá³ëè òà â³äñòóïè. Îñü ìîÿ äóìêà ùîäî ïðîá³ë³â òà â³äñòóï³â: âèêîðèñòîâóéòå ¿õ, ùîá âàø êîä òà êîìåíòàð³ áóëî ëåãøå ÷èòàòè. Visual Basic .NET òà ³íø³ ìîâè .NET íå çâàæàþòü íà ïîðîæí³ ðÿäêè àáî â³äñòóïè. Âîíè ³ãíîðóþòüñÿ ï³ä ÷àñ êîìï³ëÿö³¿ ïðîãðàìè. Àëå ÿêùî äëÿ Visual Basic .NET âîíè íå ìàþòü æîäíîãî çíà÷åííÿ, ëþäèí³ òàê ëåãøå ÷èòàòè êîä! (À âè ñàìå òà ëþäèíà, ÿêà îòðèìຠâ³ä êîìåíòàð³â íàéá³ëüøó êîðèñòü).

Âïðàâà 3.2. Ìèòòÿ ïîñóäó Ó ìîºìó êèøåíüêîâîìó êîìï’þòåð³ º ùå îäíà âïðàâà, ÿêó âè çìîæåòå âèêîíàòè, ñê³í÷èâøè ìèòòÿ ïîñóäó. Ó äîì³ íà êîëåñàõ º êóõíÿ, ÿêîþ âè êîðèñòóºòåñÿ, êîëè ïîðó÷ íåìຠçðó÷íîãî ðåñòîðàíó. Ïðèãîòóâàííÿ ¿æ³ îçíà÷àº, ùî ïîò³ì äîâåäåòüñÿ ìèòè ïîñóä, à ïîñóäîìèéíî¿ ìàøèíè ó ôóðãîí³ íåìàº. Îïèø³òü íà ïñåâäîêîä³ ïðîöåñ ìèòòÿ ïîñóäó. ßêùî ó âàñ íåìຠîñîáèñòîãî äîñâ³äó ç ìèòòÿ ïîñóäó, äîâåäåòüñÿ ïðîâåñòè â³äïîâ³äíå äîñë³äæåííÿ. Ó âàøîìó ðîçâ’ÿçàíí³ ïîâèííî áóòè ïðèíàéìí³ ñ³ì ä³é.

Çàâäàííÿ 3. Àêâàð³óì Áà÷èòå àêâàð³óì ó â³êí³ çîîìàãàçèíó? Äàâàéòå ïîë³÷èìî, ñê³ëüêè ðèáîê êîæíîãî êîëüîðó º â àêâàð³óì³, à ïîò³ì âèçíà÷èìî â³äñîòêîâó ÷àñòêó ðèá êîæíîãî êîëüîðó. Ó ìåíå äëÿ öüîãî º ïðîãðàìà. Çíàéä³òü ôàéë FishTank.sln. Äâ³÷³ êëàöí³òü íà éîãî ³ìåí³, ùîá â³äêðèòè Visual Studio .NET. ³äêðèéòå ñòîð³íêó êîäó. Âàøå çàâäàííÿ — ïåðåãëÿíóòè êîä òà ñêîï³þâàòè óñ³ êîìåíòàð³ â äîêóìåíò Word àáî ³íøèé òåêñòîâèé äîêóìåíò. ×è ðåçóëüòàò íå ñõîæèé íà ïñåâäîêîä? ³ääàéòå ñïèñîê êîìåíòàð³â ñâîºìó ³íñòðóêòîðîâ³.

53


Äîäàòêîâå çàâäàííÿ ×è íå çàáàãàòî êîìåíòàð³â? ×è, ìîæå, çàìàëî? ×îìó?

Ïðèáóòòÿ äî Ïñåâäî Îñê³ëüêè ìè âæå ìàéæå ïðèáóëè äî ì³ñòà Ïñåâäî, âàì ïîòð³áíî ïðîéòè ùå îäèí òåñò Êîì³òåòó ðàë³.

54


Ìîäóëü 4. Ôîðìàâ³ëü, ³ðäæèí³ÿ


Windows-ïðîãðàìè Ìè âèðóøàºìî äî îäíîãî ç ìî¿õ íàéóëþáëåí³øèõ ì³ñò — Ôîðìàâ³ëÿ, ³ðäæèí³ÿ! Ðàí³øå Ôîðìàâ³ëü áóâ äîñèòü íóäíèì ì³ñöåì. Ó íüîìó íåáàãàòî ìîæíà áóëî ïîáà÷èòè, íàòîì³ñòü äîâîäèëîñÿ âèêîíóâàòè ìàñó ïàïåðîâî¿ ðîáîòè. Ïîòð³áíî áóëî çàïîâíèòè 10-ñòîð³íêîâó ôîðìó ëèøå äëÿ òîãî, ùîá ïðî¿õàòè ì³ñòîì! Àëå çàðàç óñå ³íàêøå! Ó ì³ñò³ ñò³ëüêè ö³êàâîãî, ùî ìîæíà ïðîâåñòè òàì ö³ëèé ð³ê, à òàê óñüîãî é íå ïîáà÷èòè. Äî òîãî æ âàì í³êîëè íå áóäå íóäíî. ³äâ³äàííÿ Ôîðìàâ³ëÿ — îäíà ç ïðè÷èí, ç ÿêèõ ÿ ïî¿õàâ ó öþ ïîäîðîæ. Ïàì’ÿòàºòå, ïî äîðîç³ äî ²äåàëó âè çàñòîñóâàëè ñåðåäîâèùå Visual Studio, ùîá íàïèñàòè ñâîþ ïåðøó ïðîãðàìó? Ïåðøå âàøå ð³øåííÿ ñòîñóâàëîñÿ òèïó ïðîåêòó. Âè îáðàëè Windows-ïðîãðàìó. Windows-ïðîãðàìà ìຠãðàô³÷íèé ³íòåðôåéñ, ÿêèé äຠìîæëèâ³ñòü êîðèñòóâà÷åâ³ âçàºìîä³ÿòè ç íåþ. Íå â óñ³õ ïðîãðàìàõ º ³íòåðôåéñ êîðèñòóâà÷à: äåÿê³ çàïóñêàþòüñÿ ëèøå îäèí ðàç àáî âèêîíóþòüñÿ ó ôîíîâîìó ðåæèì³ é íå ïîòðåáóþòü ââåäåííÿ äàíèõ. ßê íà ìåíå, âîíè äîñèòü íóäí³.

Ðîçðîáêà ôîðì Ìåí³ ïîäîáàþòüñÿ ³ãðè — âîíè àáñîëþòíî ³íòåðàêòèâí³, òîìó ÿ ïèøó ³íòåðàêòèâí³ Windowsïðîãðàìè. Windows-ïðîãðàìîþ êîðèñòóâà÷ óïðàâëÿº çà äîïîìîãîþ ôîðì. Êîëè âè âïåðøå îïèñóâàòèìåòå Windows-ïðîãðàìó ìîâîþ Visual Basic, ó ñåðåäîâèù³ Visual Studio äî ïðîåêòó áóäå àâòîìàòè÷íî äîäàíî ôîðìó Form1.vb. Ùîá çàáåçïå÷èòè êîðèñòóâà÷åâ³ ìîæëèâ³ñòü óïðàâëÿòè ïðîãðàìîþ, âè äîäàñòå äî ôîðìè åëåìåíòè óïðàâë³ííÿ, çîêðåìà êíîïêè, íàïèñè, òåêñòîâ³ ïîëÿ, ñïèñêè òîùî. Ïðèïóñò³ìî, ùî ó ïðîãðàì³ º ôîðìà Ñïóùåíà øèíà. Îñü ïåðåë³ê åëåìåíò³â óïðàâë³ííÿ, íåîáõ³äíèõ äëÿ òàêî¿ ôîðìè: l

Òåêñòîâå ïîëå äëÿ ââåäåííÿ íîìåðíîãî çíàêà àâòîìîá³ëÿ.

l

Ãðóïà ïåðåìèêà÷³â äëÿ âèçíà÷åííÿ, ÿêà øèíà ñïóùåíà (ë³âà ïåðåäíÿ, ïðàâà ïåðåäíÿ, ë³âà çàäíÿ, ïðàâà çàäíÿ).

l

Ïðàïîðåöü, óñòàíîâëåííÿ ÿêîãî âêàçóº íà òåðì³íîâ³ñòü ðîáîòè.

l

Ïîëå ç³ ñïèñêîì äëÿ âèáîðó ðîçì³ðó øèíè.

l

Êíîïêà äëÿ ïîøóêó øèíè â ³íâåíòàðíîìó ïåðåë³êó.

l

Òåêñòîâå ïîëå, ùî â íüîìó âèâîäèòèìåòüñÿ ñïèñîê íàÿâíèõ øèí. Ó ñïèñêó áóäå çàçíà÷åíî âèðîáíèêà øèíè, íîìåð ìîäåë³, ðîçì³ð, âàðò³ñòü òà íàÿâíó ê³ëüê³ñòü.

Îòæå, ó ôîðì³ Ñïóùåíà øèíà º äâà òåêñòîâèõ ïîëÿ, ãðóïà ç ÷îòèðüîõ ïåðåìèêà÷³â, ñïèñîê, ïðàïîðåöü òà êíîïêà. Âè ìîæåòå ïî-ð³çíîìó ðîçòàøóâàòè ö³ åëåìåíòè íà ôîðì³ — îñü äå ïî÷èíàºòüñÿ ö³êàâà òà òâîð÷à ðîáîòà.

57


Äëÿ ìåíå ðîçðîáêà ôîðìè — öå îäèí ç íàéïðèºìí³øèõ àñïåêò³â ïðîãðàìóâàííÿ. Ìåí³ ïîòð³áíî âèð³øèòè, ÿê áóäå âèãëÿäàòè ôîðìà òà ÿê ó í³é áóäóòü ðîçòàøîâàí³ åëåìåíòè óïðàâë³ííÿ. Ôîðìà ïîä³áíà äî ïîëîòíà õóäîæíèêà, à åëåìåíòè óïðàâë³ííÿ — äî ïåíçë³â. Àëå ìåí³ ïîòð³áíî áóòè îáåðåæíèì. ß ìàþ ïåðåêîíàòèñÿ, ùî ôîðìà â³äïîâ³äຠñâîºìó ïðèçíà÷åííþ. Êîðèñòóâàííÿ ôîðìîþ ìຠáóòè ëåãêèì, ó í³é íå ïîâèííî áóòè í³÷îãî çàéâîãî. Êîëè ÿ ðîçðîáëÿþ ôîðìó, íå ïåðåñòàþ ñåáå çàïèòóâàòè: „Äëÿ ÷îãî âîíà ïîòð³áíà? ßê³ ôóíêö³¿ âîíà ìຠâèêîíóâàòè?” Êð³ì òîãî, ÿ ìàþ ïåðåêîíàòèñÿ, ùî ôîðìà ìຠïðèºìíèé âèãëÿä, ÿê ³ ÿ ñàì! Ó í³é íå ïîâèííî áóòè áàãàòî êîíòðàñòíèõ êîëüîð³â ÷è äðàæëèâèõ â³çóàëüíèõ åôåêò³â, ÿê³ áóäóòü â³äâîë³êàòè êîðèñòóâà÷à (íàïðèêëàä, òåêñòó, ùî ìèãîòèòü). Åëåìåíòè óïðàâë³ííÿ ó ôîðì³ ïîâèíí³ áóòè ðîçòàøîâàí³ àêóðàòíî òà ëîã³÷íî. ß ïîâèíåí ïðîäóìàòè ïîðÿäîê, ó ÿêîìó êîðèñòóâà÷ áóäå ââîäèòè äàí³ òà óïðàâëÿòè ïðîãðàìîþ. ²íîä³ ìåí³ ñë³ä ïîïåðåäæàòè êîðèñòóâà÷à ïðî òå, ùî íå ìîæíà ââîäèòè óñ³õ ïîòð³áíèõ äàíèõ âîäíî÷àñ àáî ïðî òå, ùî ïåâí³ äàí³ ââåäåíî íåïðàâèëüíî. Êîëè âè ðîçðîáëÿºòå ôîðìè, âè ïîâèíí³ ì³ðêóâàòè ÿê êîðèñòóâà÷, òà óÿâëÿòè óñ³ éìîâ³ðí³ ñïîñîáè óïðàâë³ííÿ ïðîãðàìîþ. Íàðåøò³, ðîçðîáëÿþ÷è ôîðìó, âè ïîâèíí³ ïàì’ÿòàòè, ùî óñ³ Windows-ïðîãðàìè ìàþòü ñòàíäàðòíèé ñòèëü òà âèãëÿä. Êîðèñòóâà÷ î÷³êóº, ùî âàøà ïðîãðàìà áóäå â³äïîâ³äàòè ïåâíèì íîðìàì òà ïðàöþâàòèìå ó ïåâíîìó ñòèë³. Íàïðèêëàä, ïåðøèì ìåíþ ó Windows-ïðîãðàì³ ïîâèííî áóòè ìåíþ File (Ôàéë), âîíî ìຠì³ñòèòè êîìàíäó Exit (Âèõ³ä), âèêîíàâøè ÿêó, êîðèñòóâà÷ âèéäå ç ïðîãðàìè. Êîðèñòóâà÷ áóäå äóæå çäèâîâàíèé òà íåâäîâîëåíèé, ÿêùî â³í êëàöíå íà êíîïö³ ç íàïèñîì „Îá÷èñëèòè ðåçóëüòàòè”, à ïðîãðàìà çì³íèòü êîë³ð ãîëîâíî¿ ôîðìè àáî óñ³ íàïèñè íà êíîïêàõ ïåðåêëàäå ëàòèíîþ.

Çàñòîñóâàííÿ ôîðì ßê âàì â³äîìî, êîëè âè ðîçðîáëÿºòå Windows-ïðîãðàìó, Visual Studio àâòîìàòè÷íî ñòâîðþº ôîðìó Form1.vb. Öå ãîëîâíà àáî ñòàðòîâà ôîðìà âàøî¿ ïðîãðàìè. Ñàìå ¿¿ ïîáà÷èòü êîðèñòóâà÷, êîëè â³äêðèº ïðîãðàìó âïåðøå. Ãîëîâíà ôîðìà ïîä³áíà äî öåíòðàëüíî¿ ïàíåë³ óïðàâë³ííÿ. Ç íå¿ êîðèñòóâà÷ ìîæå îòðèìàòè äîñòóï äî áóäü-ÿêî¿ ³íøî¿ ÷àñòèíè ïðîãðàìè. Çàçâè÷àé âçäîâæ âåðõíüî¿ ìåæ³ ãîëîâíî¿ ôîðìè ðîçì³ùóºòüñÿ ðÿäîê ìåíþ àáî ïàíåëü ³íñòðóìåíò³â, êíîïêè ÿêî¿ â³äïîâ³äàþòü ð³çíèì ôóíêö³ÿì ïðîãðàìè. Ó ãîëîâí³é ôîðì³ êîðèñòóâà÷ îáèðຠïóíêòè ìåíþ àáî êëàöຠíà êíîïêàõ, ÿê³ â³äêðèâàþòü ³íø³ ôîðìè. Ö³ ôîðìè ìîæóòü çàñòîñîâóâàòèñÿ äëÿ ââåäåííÿ àáî ïåðåãëÿäó ïîâ³äîìëåíü ³ äàíèõ ÷è äëÿ óïðàâë³ííÿ ïðîãðàìîþ â ³íøèé ñïîñ³á. Òàê³ ôîðìè ìàþòü ïåâíå ïðèçíà÷åííÿ, íàïðèêëàä, ïîêàç ðàõóíêó ãðè ó áîóë³íã, ââåäåííÿ ñïèñêó ïîá³÷íèõ åôåêò³â àáî ìîäèô³êàö³ÿ çíà÷åíü ïàðàìåòð³â ïðîãðàìè. Çàçâè÷àé ï³ñëÿ ââåäåííÿ àáî ïåðåãëÿäó äàíèõ â îäí³é ç òà-

58


êèõ ôîðì êîðèñòóâà÷ ¿¿ çàêðèâຠòà ïîâåðòàºòüñÿ äî ãîëîâíî¿ ôîðìè. Õî÷à Visual Studio àâòîìàòè÷íî ñòâîðþº ëèøå îäíó ôîðìó Form1.vb, âè ñàìîñò³éíî ìîæåòå äîäàòè äî ñâîãî ïðîåêòó ñò³ëüêè ôîðì, ñê³ëüêè ïîòð³áíî. ²íøèì âàæëèâèì òèïîì ôîðìè º â³êíî ïîâ³äîìëåííÿ. Âè âæå òàêèì êîðèñòóâàëèñÿ. Ó ïðîãðàì³ HelloWorld âè çàñòîñóâàëè â³êíî ïîâ³äîìëåííÿ äëÿ âèâåäåííÿ ôðàçè „Hello, World”. ³êíî ïîâ³äîìëåííÿ ïðèçíà÷åíå äëÿ òîãî, ùîá âèâîäèòè íà åêðàí áóäü-ÿê³ ïîâ³äîìëåííÿ ó çâè÷àéí³é ä³àëîãîâ³é ôîðì³. Ïåðå÷èòàâøè ïîâ³äîìëåííÿ, êîðèñòóâà÷ êëàöíå íà êíîïö³ OK ³ çàêðèº â³êíî. Îòæå, — äî ñïðàâè. Âè ñòâîðèòå ôîðìó ñïóùåíî¿ øèíè ï³ä íàçâîþ FlatTire. Ïîò³ì âè äîäàñòå äî íå¿ äåê³ëüêà åëåìåíò³â óïðàâë³ííÿ òà âèçíà÷èòå ¿õ àòðèáóòè. ß ïîêàæó âàì, ÿê åëåìåíòè óïðàâë³ííÿ ó ôîðì³ ðåàãóþòü íà êëàöàííÿ ìèøåþ íà êíîïö³. Ìè òàêîæ ïîâåðíåìîñÿ äî ñïåö³àëüíî¿ âáóäîâàíî¿ ôîðìè — â³êíà ïîâ³äîìëåííÿ.

Àòðèáóòè ôîðì Êîëè âè ñòâîðèòå íîâó Windows-ïðîãðàìó, äî íå¿ áóäå àâòîìàòè÷íî äîäàíî ôîðìó Form1, ùî çà çàìîâ÷óâàííÿì ìຠðîçì³ð 300´300 ï³êñåë³â. Âè çàïèòàºòå, çâ³äêè ÿ çíàþ ðîçì³ð ôîðìè Form1? Éîãî ëåãêî â³äíàéòè ó â³êí³ Properties (Âëàñòèâîñò³). Ó öüîìó â³êí³ âè ìîæåòå íå ëèøå ïåðåãëÿíóòè, àëå ³ çì³íèòè ðîçì³ð ôîðìè. Îòæå, âèêîíàºìî ðàçîì äåê³ëüêà ïðîñòèõ ä³é. Ïî-ïåðøå, âàì ïîòð³áíî ñòâîðèòè íîâó Windows-ïðîãðàìó, ùî áóäå íàçèâàòèñÿ FlatTire. ϳñëÿ ñòâîðåííÿ ïðîåêòó êëàöí³òü îäèí ðàç íà ôîðì³ Form1, ùîá âèä³ëèòè ¿¿. Íàòèñí³òü êëàâ³øó F4, ùîá â³äêðèòè â³êíî Properties. 1. Îñê³ëüêè çàðàç îáðàíî ôîðìó Form1, â³êíî Properties ì³ñòèòèìå àòðèáóòè ñàìå ö³º¿ ôîðìè. Çàóâàæòå, ùî çà çàìîâ÷óâàííÿ âèä³ëåíî àòðèáóò Text. 2. Ïðîêðóò³òü ñïèñîê àòðèáóò³â ôîðìè, ùîá çíàéòè àòðèáóò Size (Ðîçì³ð). Çâåðí³òü óâàãó, ùî ïîðó÷ ³ç íèì º çíà÷îê +. Öå îçíà÷àº, ùî àòðèáóò º íàñïðàâä³ ãðóïîþ àòðèáóò³â, ÿêó ìîæíà ðîçêðèòè.

59


3. Êëàöí³òü íà çíà÷êó + ïîðó÷ ³ç êàòåãîð³ºþ Size. ǒÿâëÿòüñÿ àòðèáóòè Height (Âèñîòà) òà Width (Øèðèíà). Âèñîòà ôîðìè ñòàíîâèòü 300 ï³êñåë³â ³ øèðèíà — òàêîæ 300. Çì³íèìî ðîçì³ð ôîðìè. 4. Âèä³ë³òü àòðèáóò Width, äâ³÷³ êëàöíóâøè íà éîãî çíà÷åíí³. Íàòèñí³òü êëàâ³øó Backspace, ùîá âèäàëèòè öå çíà÷åííÿ. 5. Ââåä³òü ÷èñëî 450. Íàòèñí³òü êëàâ³øó Enter. Çðîáëåíî! Âè ùîéíî çì³íèëè øèðèíó ôîðìè. Çàóâàæòå, ÿê ðîçøèðþºòüñÿ ôîðìà, êîëè âè íàòèñêàºòå êëàâ³øó Enter. Çàóâàæòå òàêîæ, ùî ïîðó÷ ³ç àòðèáóòîì Size áóëî âñòàíîâëåíî íîâå çíà÷åííÿ àòðèáóòó Width. Òåïåð ïîäèâèìîñü íà àòðèáóò BackColor (Êîë³ð ôîíó) ôîðìè Form1. Öèì àòðèáóòîì âèçíà÷àºòüñÿ êîë³ð ôîðìè, íà ôîí³ ÿêîãî ðîçòàøîâóþòüñÿ åëåìåíòè óïðàâë³ííÿ. Êîðèñòóþ÷èñü ñìóãîþ ïðîêðóòêè, çíàéä³òü àòðèáóò BackColor ó â³êí³ Properties. Êëàöí³òü íà ñëîâ³ Control (Óïðàâë³ííÿ). Ïðàâîðó÷ ç’ÿâèòüñÿ êíîïêà ç³ ñïðÿìîâàíîþ äîíèçó ñòð³ëêîþ, êëàöí³òü íà í³é. ³äêðèºòüñÿ ïàë³òðà êîëüîð³â. ³äêðèéòå íà í³é âêëàäêó Custom (Âèá³ð). Äâ³÷³ êëàöí³òü íà çðàçêó êîëüîðó, ÿêèé âè îáðàëè. Ìåí³ îñîáèñòî ïîäîáàºòüñÿ ñâ³òëî-æîâòèé. Ïîäèâ³òüñÿ, ÿê ïîâåñåë³øàëà ôîðìà! Ïîáóäóéòå ðîçâ’ÿçàííÿ ³ çàïóñò³òü ïðîåêò íà âèêîíàííÿ. Çâåðí³òü óâàãó íà íîâèé êîë³ð ôîðìè! Äî òîãî æ çàóâàæòå, ùî òåïåð âàøà ôîðìà ìຠçàãîëîâîê Flat Tire Form. Äî òîãî æ ç êâàäðàòíî¿ âîíà ñòàëà ïðÿìîêóòíîþ. Òåïåð âè çíàºòå, ÿê çì³íþâàòè àòðèáóòè ôîðìè çà äîïîìîãîþ â³êíà Properties. Ïðîêðóò³òü ñïèñîê àòðèáóò³â ôîðìè Form1, ùîá ïîçíàéîìèòèñÿ ç íèìè óñ³ìà. ³êíî Properties äຠìîæëèâ³ñòü çì³íþâàòè àòðèáóòè ôîðìè ï³ä ÷àñ ðîçðîáêè, òîáòî, êîëè âè ñòâîðþºòå ôîðìó. Äàë³ âè ïåðåêîíàºòåñÿ, ùî â³êíî Properties äîçâîëÿº ïðàöþâàòè íå ëèøå ç àòðèáóòàìè ôîðì. Âîíî òàêîæ ïðèçíà÷åíå äëÿ íàñòðîþâàííÿ àòðèáóò³â êíîïîê, òåêñòîâèõ ïîë³â òà ³íøèõ åëåìåíò³â óïðàâë³ííÿ.

60


Åëåìåíòè óïðàâë³ííÿ òà ¿õ àòðèáóòè Òåïåð âè âæå ñòàëè ñïåö³àë³ñòîì ç äîäàâàííÿ êíîïîê äî ôîðì, àëå öå âàì âæå ïî÷àëî íàáðèäàòè! Ìàáóòü, âè ïîì³òèëè, ùî ó â³êí³ Toolbox (Ïàíåëü ³íñòðóìåíò³â) º áàãàòî ³íøèõ åëåìåíò³â óïðàâë³ííÿ. Òåïåð ÿ ïîêàæó âàì, ÿê âèêîðèñòîâóâàòè íàéá³ëüø ïîøèðåí³ ç íèõ òà ÿê çàäàâàòè çíà÷åííÿ ¿õ íàéâàæëèâ³øèõ àòðèáóò³â. Ïî÷íåìî ç íàïèñ³â.

Íàïèñ Íàïèñè âèêîðèñòîâóþòüñÿ äëÿ ïîçíà÷åííÿ îêðåìèõ åëåìåíò³â óïðàâë³ííÿ àáî ¿õ ãðóï. Âîíè òàêîæ ÷àñòî çàñòîñîâóþòüñÿ äëÿ âèâåäåííÿ äîïîì³æíèõ ³íñòðóêö³é àáî ïîâ³äîìëåíü. ³äêðèéòå â³êíî Toolbox òà äâ³÷³ êëàöí³òü íà åëåìåíò³ óïðàâë³ííÿ Label (Íàïèñ). Äî ôîðìè áóäå äîäàíî íàïèñ. Ïåðåòÿãí³òü éîãî ó íàëåæíå ì³ñöå, óòðèìóþ÷è ë³âó êíîïêó ìèø³. Âèä³ë³òü íàïèñ Label1 òà â³äêðèéòå â³êíî Properties. Òåïåð ó íüîìó â³äîáðàæåíî ñïèñîê àòðèáóò³â íàïèñó. Çíàéä³òü àòðèáóò Text, äâ³÷³ êëàöí³òü ìèøåþ, ùîá âèä³ëèòè òåêñòîâèé ðÿäîê, òà âèäàë³òü éîãî, íàòèñíóâøè êëàâ³øó Backspace. Íàòîì³ñòü íàäðóêóéòå ñëîâà Ââåä³òü íîìåð ë³öåí糿.

Òåêñòîâå ïîëå Òåêñòîâå ïîëå ìîæå âèêîðèñòîâóâàòèñÿ äëÿ â³äîáðàæåííÿ àáî ââåäåííÿ äàíèõ ³ ïîâ³äîìëåíü. Ó â³êí³ Toolbox äâ³÷³ êëàöí³òü íà åëåìåíò³ óïðàâë³ííÿ TextBox (Òåêñòîâå ïîëå). Äî ôîðìè áóäå äîäàíî òåêñòîâå ïîëå Textbox1. Ïåðåòÿãí³òü òåêñòîâå ïîëå, ïîì³ñòèâøè éîãî ïðàâîðó÷ â³ä íàïèñó. Çíàéä³òü àòðèáóò Text, äâ³÷³ êëàöíóâøè ìèøåþ, âèä³ë³òü éîãî çíà÷åííÿ òà âèäàë³òü â³äïîâ³äíèé òåêñòîâèé ðÿäîê. Ùîá êîðèñòóâà÷³ ìîãëè ââîäèòè òåêñò äî ïîëÿ, ïîâèííî áóòè çàäàíå çíà÷åííÿ False àòðèáóòà ReadOnly (Ò³ëüêè äëÿ ÷èòàííÿ) ïîëÿ. Öå çíà÷åííÿ âñòàíîâëåíå çà çàìîâ÷óâàííÿì. Òåêñòîâ³ ïîëÿ ÷àñòî âèêîðèñòîâóþòüñÿ äëÿ â³äîáðàæåííÿ äîâãèõ ïîâ³äîìëåíü. ßêùî òåêñò äóæå äîâãèé, âè ìîæåòå äîäàòè äî òåêñòîâîãî ïîëÿ ñìóãè ïðîêðóòêè. Ïîïðàêòèêóºìîñü ó öüîìó. Äîäàéòå äî ôîðìè ùå îäíå ïîëå. Àòðèáóòó Multiline (Áàãàòîðÿäêîâå) íàäàéòå çíà÷åííÿ True. Âèñîòó (àòðèáóò Height) òà øèðèíó (àòðèáóò Width) ïîêëàä³òü ð³âíèìè 100 ï³êñåëÿì. Çàóâàæòå: ÿêùî àòðèáóòó Multiline íàäàòè çíà÷åííÿ False, âè íå çìîæåòå çì³íèòè àòðèáóò Height. Àòðèáóòó Scrollbars (Ñìóãè ïðîêðóòêè) íàäàéòå çíà÷åííÿ Vertical (Âåðòèêàëüí³). Àòðèáóòó ReadOnly (Ò³ëüêè äëÿ ÷èòàííÿ) íàäàéòå çíà÷åííÿ True, ùîá êîðèñòóâà÷ íå ì³ã ââîäèòè äî ïîëÿ òåêñò.

61


Ïåðåìèêà÷ Ïåðåìèêà÷³ äîçâîëÿþòü êîðèñòóâà÷åâ³ çðîáèòè âèá³ð. Êîðèñòóâà÷ ìîæå âñòàíîâèòè ëèøå îäèí ïåðåìèêà÷ ó ãðóï³. Öå ñõîæå íà òåñò ç ê³ëüêîìà âàð³àíòàìè âèáîðó. Ó â³êí³ Toolbox äâ³÷³ êëàöí³òü íà åëåìåíò³ óïðàâë³ííÿ RadioButton (Ïåðåìèêà÷). Äî ôîðìè áóäå äîäàíî ïåðåìèêà÷ RadioButton1. Âèä³ë³òü öåé ïåðåìèêà÷ ó ôîðì³, êëàöí³òü íà íüîìó ïðàâîþ êíîïêîþ ìèø³ òà âèáåð³òü ç êîíòåêñòíîãî ìåíþ êîìàíäó Copy (Êîï³þâàòè). Âèä³ë³òü âñþ ôîðìó, êëàöí³òü âñåðåäèí³ ôîðìè ïðàâîþ êíîïêîþ ìèø³ òà âèáåð³òü ó êîíòåêñòíîìó ìåíþ êîìàíäó Paste (Âñòàâèòè). ǒÿâèòüñÿ ïåðåìèêà÷ RadioButton2. Ïîâòîð³òü îïåðàö³þ âñòàâêè, ùîá äîäàòè ïåðåìèêà÷³ RadioButton3 òà RadioButton4. Âèä³ë³òü ïåðåìèêà÷ RadioButton1. Çíàéä³òü éîãî àòðèáóò Text ³ çì³í³òü éîãî çíà÷åííÿ íà ˳âà ïåðåäíÿ. Äëÿ ³íøèõ ïåðåìèêà÷³â çàäàéòå òàê³ çíà÷åííÿ àòðèáóòó Text: RadioButton2 — ˳âà çàäíÿ, RadioButton3 — Ïðàâà ïåðåäíÿ, RadioButton4 — Ïðàâà çàäíÿ.

Ïðàïîðåöü ßê ³ ïåðåìèêà÷³, ïðàïîðö³ âèêîðèñòîâóþòüñÿ äëÿ òîãî, ùîá íàäàòè êîðèñòóâà÷ó ìîæëèâ³ñòü çðîáèòè âèá³ð. Êîðèñòóâà÷ ìîæå âñòàíîâèòè ÿê îäèí, òàê ³ äåê³ëüêà ïðàïîðö³â ó ãðóï³. Ó â³êí³ Toolbox äâ³÷³ êëàöí³òü íà åëåìåíò³ óïðàâë³ííÿ CheckBox (Ïðàïîðåöü). Äî ôîðìè áóäå äîäàíî ïðàïîðåöü CheckBox1. ³äêðèéòå äëÿ íüîãî â³êíî Properties òà çì³í³òü çíà÷åííÿ àòðèáóòó Text íà Òåðì³íîâà ðîáîòà.

Ïîëå ç³ ñïèñêîì Ïîëå ç³ ñïèñêîì äຠêîðèñòóâà÷ó ìîæëèâ³ñòü âèáðàòè åëåìåíò ç³ ñïèñêó òåêñòîâèõ ðÿäê³â. Êîëè êîðèñòóâà÷ âèáèðàº ç³ ñïèñêó åëåìåíò, öåé åëåìåíò ç’ÿâëÿºòüñÿ ó ïîë³. Ó â³êí³ Toolbox äâ³÷³ êëàöí³òü íà åëåìåíò³ óïðàâë³ííÿ ComboBox (Ïîëå ç³ ñïèñêîì). Äî ôîðìè áóäå äîäàíî åëåìåíò óïðàâë³ííÿ ComboBox1. ³äêðèéòå â³êíî Properties òà çì³í³òü çíà÷åííÿ àòðèáóòó Text íà Âèáåð³òü ðîçì³ð øèíè. Çíàéä³òü àòðèáóò Items (Åëåìåíòè). Êëàöí³òü íà ñëîâ³ Collection (Íàá³ð). Ïðàâîðó÷ ç’ÿâèòüñÿ êíîïêà ç òðüîìà êðàïêàìè. Êëàöí³òü íà í³é. Áóäå â³äêðèòî â³êíî, äå âè çìîæåòå ââåñòè åëåìåíòè, ùî ì³ñòèòèìóòüñÿ ó ñïèñêó. ϳñëÿ ââåäåííÿ êîæíîãî åëåìåíòó íàòèñêàéòå êëàâ³øó Enter, ùîá ïåðåéòè íà íîâèé ðÿäîê. Ââåä³òü òàê³ åëåìåíòè: 12, 13, 14 òà 15. Êëàöí³òü íà êíîïö³ OK, ùîá çàêðèòè â³êíî.

Êîìàíäíà êíîïêà Äîäàéòå äî ôîðìè êíîïêó. ¯¿ àòðèáóòó Text íàäàéòå çíà÷åííÿ Îòðèìàòè øèíè. Çðîá³òü ôîíîâèé êîë³ð êíîïêè ÷åðâîíèì. Çíàéä³òü àòðèáóò Font (Øðèôò). Êëàöí³òü íà íàçâ³ øðèôòó, ùîá ç’ÿâèëàñÿ êíîïêà ç òðüîìà êðàïêàìè. Êëàöíóâøè íà í³é, âèâåä³òü íà åêðàí ïàë³òðó Font, íà ÿê³é çì³í³òü ñòèëü øðèôòó íà íàï³âæèðíèé. Êëàöí³òü íà êíîïö³ OK, ùîá çàêðèòè ïàë³òðó Font. Ïîáóäóéòå ðîçâ’ÿçàííÿ òà çàïóñò³òü ïðîåêò. Ïîêëàöàéòå íà ð³çíèõ åëåìåíòàõ óïðàâë³ííÿ, ÿê³ âè äîäàëè. Ùî ñòàëîñÿ, êîëè âè êëàöíóëè íà ïîë³ ç³ ñïèñêîì? Ùî ñòàëîñÿ, êîëè âè îáðàëè îäèí ç ïåðåìèêà÷³â, ³íøèé ïåðåìèêà÷, óñòàíîâèëè ïðàïîðåöü? Ââåä³òü òåêñò äî òåêñòîâîãî ïîëÿ ïîðó÷ ³ç íàïèñîì Ââåä³òü íîìåð ë³öåí糿. Çâåðí³òü óâàãó, ùî ³íøå òåêñòîâå ïîëå çà-

62


ôàðáîâàíå ñ³ðèì, ³ äî íüîãî íå ìîæíà ââîäèòè òåêñò. Êëàöí³òü íà êíîïö³ ´ ó ïðàâîìó âåðõíüîìó êóò³ â³êíà ïðîãðàìè, ùîá çàêðèòè ¿¿. Âè ïîì³òèëè, ùî âæå ñòâîðèëè „ôîðìó ñïóùåíî¿ øèíè”? Ðàçîì ç òèì âè âèâ÷èëè ê³ëüêà òèï³â åëåìåíò³â óïðàâë³ííÿ òà ¿õ àòðèáóò³â. Ùîá çðîáèòè ñïðàâæíþ ïðàöþþ÷ó ôîðìó, ïîòð³áíî äîäàòè êîä Visual Basic .NET äî ôîðìè òà ¿¿ åëåìåíò³â óïðàâë³ííÿ. Îçíàéîìòåñÿ ç ð³çíèìè àòðèáóòàìè êîæíîãî ç åëåìåíò³â óïðàâë³ííÿ, ÿê³ âè äîäàëè äî ôîðìè. Âè ìîæåòå çì³íèòè ¿õ ðîçòàøóâàííÿ, ùîá çðîáèòè ôîðìó îõàéí³øîþ òà ùîá íåþ ëåãøå áóëî êîðèñòóâàòèñÿ. Âè ìîæåòå äîäàòè íàïèñè, ÿê³ ïîâ³äîìëÿòèìóòü, äëÿ ÷îãî âèêîðèñòîâóþòüñÿ ò³ ÷è ³íø³ åëåìåíòè óïðàâë³ííÿ, àáî ì³ñòèòèìóòü ³íñòðóêö³¿ ùîäî çì³ñòó äàíèõ, ÿê³ ââîäÿòüñÿ. ßê íà âàøó äóìêó, ÷è ñë³ä ðîçòàøóâàòè åëåìåíòè óïðàâë³ííÿ ó ôîðì³? ßê³ åëåìåíòè óïðàâë³ííÿ ñë³ä ðîçì³ñòèòè çãîðè, à ÿê³ — çíèçó? Ó ìîâàõ J# òà C# ðîçðîáêà ôîðì çä³éñíþºòüñÿ òàê ñàìî, ÿê ³ ó VB .NET. ¯¿ ïîëåãøóþòü çàñîáè Visual Studio .NET. Äîñòàòíüî ïðîñòî â³äêðèòè â³êíî Toolbox òà ïåðåòÿãíóòè åëåìåíòè óïðàâë³ííÿ íà ôîðìó. Ïîò³ì ñë³ä â³äêðèòè â³êíî Properties òà çàäàòè çíà÷åííÿ àòðèáóò³â.

Âïðàâà 4.1. Õòî º õòî Õî÷åòå ä³çíàòèñÿ á³ëüøå ïðî ëþäåé, ùî ìàíäðóþòü ç âàìè? Íà öüîìó åòàï³ âè ìàºòå äîâåñòè, ùî çäàòí³ ñòâîðèòè ôîðìó òà íàñòðî¿òè àòðèáóòè îᒺêò³â, ÿê³ ó í³é ì³ñòÿòüñÿ, çà äîïîìîãîþ â³êíà Properties. Âè ä³çíàºòåñÿ á³ëüøå ïðî ñâî¿õ ñóïóòíèê³â, ÿêùî ïðàâèëüíî âñòàíîâèòå â³äïîâ³äíîñò³ åëåìåíò³â ôîðìè ³ç íàäàíèì êîäîì. Ïåðåãëÿíüòå ïàïêó ðîçâ’ÿçàííÿ Âïðàâà_4.1. Âîíà ïîâèííà ì³ñòèòè äâ³ ïàïêè (bin òà obj), à òàêîæ ñ³ì ôàéë³â. ³äêðèéòå Visual Studio .NET, âèáåð³òü Existing Project (Íàÿâíèé ïðîåêò) ³ ïåðåéä³òü äî ôàéëó WhosWho.sln. Àáî âè ìîæåòå çíàéòè ôàéë WhosWho.sln çà äîïîìîãîþ îãëÿäà÷à Windows, äâ³÷³ êëàöíóòè íà íüîìó — ³ ðîçâ’ÿçàííÿ â³äêðèºòüñÿ ó Visual Studio .NET. Âàøå çàâäàííÿ ïîëÿãຠó òîìó, ùîá, äîäàþ÷è îᒺêòè ç â³êíà Toolbox, ïðèâåñòè ôîðìó ïðèáëèçíî äî òàêîãî âèãëÿäó, ÿêèé çîáðàæåíî íèæ÷å. Ïðè öüîìó âè çì³íþâàòèìåòå àòðèáóòè ôîðìè òà åëåìåíò³â óïðàâë³ííÿ ó â³êíàõ Properties.

63


1. Êëàöíóâøè îäèí ðàç íà ôîðì³, âèä³ë³òü ¿¿, à ïîò³ì ó â³êí³ Properties çì³í³òü ¿¿ íàçâó íà Õòî º õòî. 2. Äîäàéòå äî ôîðìè äâà ïðàïîðö³. Çàëèø³òü äëÿ íèõ íàçâè, çàäàí³ çà çàìîâ÷óâàííÿì: CheckBox1 òà CheckBox2. Çì³í³òü çíà÷åííÿ ¿õ àòðèáóò³â Text íà Ïîêàçàòè ôîòî òà Âèâåñòè á³îãðàô³þ â³äïîâ³äíî. 3. Äîäàéòå äî ôîðìè ï’ÿòü ïåðåìèêà÷³â. Çì³í³òü çíà÷åííÿ ¿õ àòðèáóò³â Text íà ͳêê³, Êë³ô, Äæåí, ijðê òà ij-äæåé Âó. Çàëèøòå çàäàí³ çà çàìîâ÷óâàííÿì íàçâè ïåðåìèêà÷³â: RadioButton1–RadioButton5. 4. Äîäàéòå äî ôîðìè ïîëå çîáðàæåííÿ PictureBox1. Çà äîïîìîãîþ â³êíà Properties çàäàéòå äëÿ íüîãî âèñîòó 160 òà øèðèíó 140. Ùîá çíàéòè ö³ àòðèáóòè, êëàöí³òü íà çíà÷êó + ïîðó÷ ³ç àòðèáóòîì Size. 5. Äîäàéòå äî ôîðìè òåêñòîâå ïîëå TextBox1. Âè ïîâèíí³ çì³íèòè äåÿê³ ç éîãî àòðèáóò³â. Ïîðÿäîê âíåñåííÿ çì³í º âàæëèâèì! Âàì ïîòð³áíî, ùîá òåêñòîâå ïîëå áóëî äîñèòü âåëèêèì äëÿ òîãî, ùîá ó íüîìó â³äîáðàæàëîñÿ ê³ëüêà ðÿäê³â á³îãðàô³¿. Visual Basic íå äîçâîëèòü íàñòðîþâàòè âèñîòó òåêñòîâîãî ïîëÿ, äîêè âè íå íàäàñòå àòðèáóòó Multiline çíà÷åííÿ True: ÿêùî ïîëå áóäå îäíîðÿäêîâèì, òî äëÿ ÷îãî ðîáèòè éîãî âèñîêèì? Âñòàíîâèâøè çíà÷åííÿ àòðèáóòà Multiline, ïîêëàä³òü âèñîòó ïîëÿ 160. Íàðåøò³, çàäàéòå äëÿ àòðèáóòó Scrollbars çíà÷åííÿ Vertical. Öå âè ðîáèòå íà òîé âèïàäîê, êîëè ðÿäê³â ó á³îãðàô³¿ áóäå á³ëüøå, í³æ âì³ùóâàòèìå ïîëå. 6. Äîäàéòå äî ôîðìè êîìàíäíó êíîïêó Button1. Âñòàíîâ³òü äëÿ ¿¿ àòðèáóòó Text çíà÷åííÿ Âèéòè. Ñòâîðèâøè ôîðìó, ïîáóäóéòå ðîçâ’ÿçàííÿ. ßêùî ó íüîìó íåìຠïîìèëîê, âèáåð³òü êîìàíäó Debug4Start, ùîá çàïóñòèòè ïðîãðàìó. ßêùî ïðîãðàìà ïðàöþº íîðìàëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðîâ³.

Àêòèâàö³ÿ ïîä³é Ïî䳿 àêòèâóþòüñÿ ä³ÿìè êîðèñòóâà÷³â. Íàïðèêëàä, êîëè êîðèñòóâà÷ êëàöຠíà êíîïö³, âèáèðຠåëåìåíò ó ïîë³ ç³ ñïèñêîì àáî çì³íþº òåêñò ó ïîë³, âèíèêຠïîä³ÿ. Ïî䳿 òàêîæ âèíèêàþòü, êîëè êîðèñòóâà÷ êëàöຠîäèí ðàç àáî äâ³÷³ íà åëåìåíò³ óïðàâë³ííÿ, àáî íàâîäèòü íà íüîãî ÷è

64


ïðèáèðຠç íüîãî ïîêàæ÷èê ìèø³. Âèíèêíåííÿ êîæíî¿ ç öèõ ïîä³é ïðèâîäèòü äî âèêîíàííÿ çâ’ÿçàíîãî ç íåþ VB .NET-êîäó, ùî íàçèâàºòüñÿ îáðîáíèêîì ïî䳿. Îáðîáíèêè ïîä³é çìóøóþòü ïðîãðàìó ðîáèòè òå, ùî âîíà ïîâèííà ðîáèòè. Êîëè âè ñòâîðþâàëè ïðîãðàìó HelloWorld, âè äâ³÷³ êëàöíóëè íà êíîïö³, ³ â ðåçóëüòàò³ öüîãî â³äêðèëîñÿ â³êíî êîäó. Ó öüîìó â³êí³ âè ìîãëè ââåñòè êîä äëÿ îáðîáêè ïî䳿 Button1_Click. Ïîä³ÿ Button1_Click âèêîðèñòîâóºòüñÿ äëÿ êíîïêè Button1 çà çàìîâ÷óâàííÿì. ²ç êîæíèì åëåìåíòîì óïðàâë³ííÿ çà çàìîâ÷óâàííÿì ïîâ’ÿçàíà ïåâíà ïîä³ÿ. ßêùî ó ðåæèì³ ðîçðîáêè äâ³÷³ êëàöíóòè íà åëåìåíò³ óïðàâë³ííÿ, áóäå â³äêðèòî â³êíî êîäó äëÿ òàêî¿ ïî䳿. Ïåðåë³÷èìî ïî䳿, çàäàí³ çà çàìîâ÷óâàííÿì äëÿ îñíîâíèõ åëåìåíò³â óïðàâë³ííÿ: l

äëÿ êíîïêè — Click;

l

äëÿ òåêñòîâîãî ïîëÿ — TextChanged;

l

äëÿ ïåðåìèêà÷à — CheckedChanged;

l

äëÿ ïðàïîðöÿ — CheckedChanged;

l

äëÿ ïîëÿ ç³ ñïèñêîì — SelectedIndexChanged.

Ùîá ïîêàçàòè âàì âëàñíå ïðîöåñ, äîäàìî êîä äî ïîä³é, çàäàíèõ çà çàìîâ÷óâàííÿì äëÿ åëåìåíò³â óïðàâë³ííÿ ôîðìè ñïóùåíî¿ øèíè. Êîä çàáåçïå÷óâàòèìå â³äîáðàæåííÿ â³êíà ïîâ³äîìëåííÿ, ó ÿêîìó áóäå çàçíà÷åíî òèï åëåìåíòà óïðàâë³ííÿ, ùî âèêëèêàâ ïîä³þ. Ó ðåæèì³ ðîçðîáêè äâ³÷³ êëàöí³òü íà êîæíîìó ç åëåìåíò³â óïðàâë³ííÿ, ùî áóëè äîäàí³ äî ôîðìè. Ïðè öüîìó â³äêðèâàòèìóòüñÿ â³êíà êîäó äëÿ ïîä³é, çàäàíèõ çà çàìîâ÷óâàííÿì. Âñòàâòå òàêèé ðÿäîê êîäó äî êîæíîãî îáðîáíèêà ïî䳿: MessageBox.Show(sender.GetType.Name) Ïîáóäóéòå ðîçâ’ÿçàííÿ òà çàïóñò³òü ïðîåêò. Êëàöàéòå íà ð³çíèõ åëåìåíòàõ ôîðìè, çì³íþéòå òåêñò ó ïîë³ òà âèáèðàéòå åëåìåíòè ç³ ñïèñêó. Äëÿ êîæíîãî åëåìåíòà óïðàâë³ííÿ àêòèâóºòüñÿ ïîä³ÿ, çàäàíà çà çàìîâ÷óâàííÿì. Ïðè öüîìó íà åêðàí³ ç’ÿâëÿºòüñÿ â³êíî ïîâ³äîìëåííÿ, äå çàçíà÷åíî òèï åëåìåíòà óïðàâë³ííÿ, ÿêèé âèêëèêàâ ïîä³þ. ßêáè ôîðìà ñïóùåíî¿ øèíè áóëà ÷àñòèíîþ ñïðàâæíüî¿ ïðîãðàìè, âè á äîäàâàëè êîä äî ïîä³é, çàäàíèõ çà çàìîâ÷óâàííÿì, ùîá çàáåçïå÷èòè âèêîíàííÿ íèìè ïåâíèõ çì³ñòîâíèõ ôóíêö³é. Íàïðèêëàä, ÿêáè êîðèñòóâà÷ êëàöàâ íà êíîïö³ Îòðèìàòè øèíè, ó òåêñòîâîìó ïîë³ ç’ÿâëÿâñÿ á ñïèñîê íàÿâíèõ øèí. Ó ìîâàõ C# òà J# åëåìåíòè óïðàâë³ííÿ ìàþòü òàê³ æ ïî䳿, ÿê ³ ó VB .NET. Öå ïîÿñíþºòüñÿ íàÿâí³ñòþ ºäèíî¿ ïëàòôîðìè äëÿ öèõ ìî⠗ êàðêàñó .NET, à çàâäÿêè ìîæëèâîñòÿì ñåðåäîâèùà Visual Studio êîäóâàòè îáðîáíèêè ïîä³é çîâñ³ì íåñêëàäíî.

³êíà ïîâ³äîìëåíü Âè ÷àñòî ñòèêàòèìåòåñÿ ³ç íåîáõ³äí³ñòþ çàáåçïå÷èòè „ä³àëî㔠ì³æ âàøîþ ïðîãðàìîþ òà êîðèñòóâà÷åì. Ìîæëèâî, çíàäîáèòüñÿ ïîñëàòè êîðèñòóâà÷åâ³ ïîâ³äîìëåííÿ, îòðèìàòè â³ä íüîãî â³äïîâ³äü àáî ââåäåí³ íèì äàí³. Òàê³ ð³çíîâèäè „ä³àëîãó” íàñò³ëüêè ïîøèðåí³, ùî ó ñåðåäîâèù³ Visual Studio .NET äëÿ ¿õ îáðîáêè ïåðåäáà÷åíî ñïåö³àëüíèé îᒺêò — Messagebox (³êíî ïîâ³äîìëåííÿ).

65


Ó ïåðø³é ïðîãðàì³ âè íàïèñàëè ðÿäîê êîäó, ÿêèé â³äîáðàæàâ â³êíî ïîâ³äîìëåííÿ: MessageBox.Show("Hello, World.") ³êíî ïîâ³äîìëåííÿ — öå âáóäîâàíèé ó VB .NET ð³çíîâèä ôîðìè. Ùîá âèêîðèñòàòè â³êíî ïîâ³äîìëåííÿ, âàì íå ïîòð³áíî äîäàâàòè éîãî äî ñâîãî ïðîåêòó. Äëÿ öüîãî âàì ñë³ä ëèøå âèêëèêàòè éîãî ìåòîä Show() òà çàçíà÷èòè òåêñò, ÿêèé ïîâèíåí ì³ñòèòèñÿ ó â³êí³ ïîâ³äîìëåííÿ. Ñèíòàêñèñ âèêîðèñòàííÿ â³êíà ïîâ³äîìëåííÿ º òàêèì: MessageBox.Show("Òåêñò, ùî âèâîäèòèìåòüñÿ") Çàóâàæòå, ùî ïîâ³äîìëåííÿ, ÿêå âè õî÷åòå âèâåñòè íà åêðàí, òðåáà âçÿòè ó ëàïêè. À îñü ÿêèé âèãëÿä ìàòèìå êîä äëÿ âèâåäåííÿ â³êíà ïîâ³äîìëåííÿ ó ìîâ³ C# (ó J# â³í áóäå òàêèì ñàìèì): MessageBox.Show("Òåêñò, ùî âèâîäèòèìåòüñÿ");

Ïðèáóòòÿ äî Ôîðìàâ³ëÿ ßê æå ö³êàâî áóëî ñòâîðþâàòè ôîðìó ñïóùåíî¿ øèíè! Òåïåð âè ðîçó쳺òå, ÷îìó ìåí³ òàê ïîäîáàºòüñÿ ðîçðîáëÿòè ôîðìè. Ïåðåêîíàíèé: âè óñ³ ãîòîâ³ ïðèáóòè äî Ôîðìàâ³ëÿ. Âèêîíàéòå âïðàâè, ïðîéä³òü òåñò — ³ âè âæå ãîòîâ³ ñòàòè ïðîôåñ³éíèì ðîçðîáíèêîì ôîðì!

66


Âïðàâà 4.2. Âàðò³ñòü ï³öè Ùî æ öå çà ìàíäð³âêà áåç ï³öè! Ó ï³öå𳿠Ôîðìàâ³ëÿ º ïðîãðàìà, ùî äîïîìàãຠâ³äâ³äóâà÷àì âèçíà÷àòè âàðò³ñòü ï³öè. Ïåðåêîíàíèé, ùî âè çìîæåòå íàïèñàòè òàêó ñàìó, àäæå æ âè â쳺òå ðîçðîáëÿòè ôîðìó, à êîä ìè âàì íàäàìî. Çíàéä³òü ó ïàïö³ Âïðàâà_4.2 ôàéë PizzaPrice.sln òà, äâ³÷³ êëàöíóâøè íà íüîìó, â³äêðèéòå éîãî ó Visual Studio. Âàøå çàâäàííÿ — äîäàòè îᒺêòè ç â³êíà Toolbox, ùîá ôîðìà íàáóëà ïðèáëèçíî òàêîãî âèãëÿäó:

Âàì ïîòð³áí³ òðè ïåðåìèêà÷³, äâà íàïèñè òà â³ñ³ì ïðàïîðö³â. Íå çàáóäüòå çì³íèòè íàçâó ôîðìè. Ïðîãðàìà çì³íþâàòèìå òåêñò íàïèñó Label2. Ó ï³öå𳿠ïðîñòà ï³öà êîøòóº $5, çà êîæåí äîäàòêîâèé ì’ÿñíèé àáî îâî÷åâèé ³íãðå䳺íò áåðåòüñÿ $1 àáî $0.50 â³äïîâ³äíî. Ñåðåäíÿ ï³öà êîøòóº íà 25% äîðîæ÷å, í³æ ìàëà, à âåëèêà — íà 50%. Ñòâîðèâøè ôîðìó, ïîáóäóéòå ðîçâ’ÿçàííÿ. ßêùî ï³ä ÷àñ ïîáóäîâè íå âèíèêëî ïîìèëîê, âèáåð³òü êîìàíäó Debug4Start. ßêùî ïðîãðàìà ïðàöþº ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðîâ³.

Äîäàòêîâå çàâäàííÿ Çðîá³òü òàê, ùîá âàðò³ñòü ïîäàâàëàñÿ ó ôîðìàò³, ÿêèé íàãàäóº ãðîø³. Ó Visual Basic .NET äëÿ öüîãî º çðó÷íà ôóíêö³ÿ. Äî ôóíêö³¿ FormatCurrency ïåðåäàéòå çì³ííó, ùî çáåð³ãຠâàðò³ñòü ï³öè. Öå ìîæíà çðîáèòè ïðèáëèçíî òàê: FormatCurrency(ìîÿÇì³ííà) Ðåçóëüòàò âèâîäèòèìåòüñÿ ó ãðîøîâîìó ôîðìàò³. Äîäàéòå äî ôîðìè çîáðàæåííÿ ï³öè.

67


Çàâäàííÿ 4. Ãðà ó õðåñòèêè-íóëèêè Âàøå çàâäàííÿ ïîëÿãຠó òîìó, ùîá íàïèñàòè êëàñè÷íó ãðó â õðåñòèêè-íóëèêè ìîâîþ Visual Basic .NET. ijðê çíàéøîâ êîä äëÿ ïðîãðàìè íà îäíîìó ç âåá-ñàéò³â, àëå ôîðìè ó ö³é ïðîãðàì³ íåìàº. Âè ïîâèíí³ „íàìàëþâàòè” ôîðìó, ùîá âîíà â³äïîâ³äàëà íàÿâíîìó êîäó. Ñêîï³þéòå ïàïêó ðîçâ’ÿçàííÿ Çàâäàííÿ_4 íà æîðñòêèé äèñê âàøîãî êîìï’þòåðà. Öÿ ïàïêà ïîâèííà ì³ñòèòè äâ³ ïàïêè (bin, obj) òà ñ³ì ôàéë³â. ³äêðèéòå Visual Studio .NET, âèáåð³òü Existing Project (Íàÿâíèé ïðîåêò) ³ ïåðåéä³òü äî ôàéëó TicTacToe.sln. Âè òàêîæ ìîæåòå çíàéòè ôàéë TicTacToe.sln çà äîïîìîãîþ îãëÿäà÷à Windows, äâ³÷³ êëàöíóòè íà íüîìó — ³ ðîçâ’ÿçàííÿ â³äêðèºòüñÿ ó Visual Studio .NET. Âàøå çàâäàííÿ ïîëÿãຠâ òîìó, ùîá, äîäàþ÷è îᒺêòè ç â³êíà Toolbox, ïðèâåñòè ôîðìó ïðèáëèçíî äî òàêîãî âèãëÿäó, ÿêèé çîáðàæåíî íèæ÷å. Ïðè öüîìó ó â³êíàõ Properties âè çì³íþâàòèìåòå àòðèáóòè ôîðìè òà åëåìåíò³â óïðàâë³ííÿ. 1. Êëàöíóâøè îäèí ðàç íà ôîðì³, âèä³ë³òü ¿¿, à ïîò³ì ó â³êí³ Properties çì³í³òü ¿¿ íàçâó íà „Õðåñòèêè-íóëèêè”. 2. Ñòâîð³òü äåâ’ÿòü íàïèñ³â Label1–Label9. Ðîçòàøóéòå ¿õ òàê, ùîá íàïèñ Label1 çíàõîäèâñÿ ó ë³âîìó âåðõíüîìó êóò³, à íàïèñ Label9 — ó ïðàâîìó íèæíüîìó êóò³. Âè çåêîíîìèòå ÷àñ, ÿêùî ñòâîðèòå îäèí íàïèñ, çàäàñòå çíà÷åííÿ éîãî àòðèáóò³â, à ïîò³ì ñêîï³þºòå éîãî ³ âñòàâèòå ùå â³ñ³ì ðàç³â.

68


Äëÿ âñ³õ íàïèñ³â ñë³ä âñòàíîâèòè òàê³ çíà÷åííÿ àòðèáóò³â: Height

48

Width

48

Font

Microsoft Sans Serif Bold 36

BackColor

Ìîæíà çàëèøèòè çàäàíèé çà çàìîâ÷óâàííÿì

Text

Ìîæíà çàëèøèòè çàäàíèé çà çàìîâ÷óâàííÿì

3. ϳä äåâ’ÿòüìà íàïèñàìè ñòâîð³òü äåñÿòèé ç ³ìåíåì Label10. Height

25

Width

175

Font

Microsoft Sans Serif Bold 16

BackColor

Ìîæíà çàëèøèòè çàäàíèé çà çàìîâ÷óâàííÿ

Text

Ìîæíà çàëèøèòè çàäàíèé çà çàìîâ÷óâàííÿì

4. Ñòâîð³òü ùå òðè íàïèñè Label11–Label13. Çàäàéòå äëÿ íèõ ï³äïèñè Âèãðàëè õðåñòèêè, Âèãðàëè íóëèêè òà ͳ÷èÿ, ÿê ïîêàçàíî íà ðèñóíêó. 5. Ñòâîð³òü òðè òåêñòîâèõ ïîëÿ TextBox1–TextBox3. Ðîçòàøóéòå ¿õ ïîðó÷ ç íàïèñàìè, ñòâîðåíèìè íà ïîïåðåäíüîìó êðîö³. 6. Ñòâîð³òü êíîïêó Button1. Äëÿ ¿¿ àòðèáóòà Text çàäàéòå çíà÷åííÿ Ãðàòè çíîâó. 7. Ñòâîð³òü êíîïêó Button2, ÿê ïîêàçàíî íà ðèñóíêó. Äëÿ ¿¿ àòðèáóòà Text çàäàéòå çíà÷åííÿ Çàâåðøèòè. Ñòâîðèâøè ôîðìó, ïîáóäóéòå ðîçâ’ÿçàííÿ. ßêùî ï³ä ÷àñ ïîáóäîâè íå âèíèêëî ïîìèëîê, âèáåð³òü êîìàíäó Debug4Start. Ïîêàæ³òü ïðàöþþ÷ó ïðîãðàìó ³íñòðóêòîðó.

Äîäàòêîâå çàâäàííÿ l

Çì³í³òü ôîíîâèé êîë³ð ôîðìè.

l

Çì³í³òü øðèôò óñ³õ êíîïîê, òåêñòîâèõ ïîë³â òîùî íà øðèôò, ÿêèé ëåãøå ÷èòàºòüñÿ (íàïðèêëàä, Microsoft Sans Serif Bold 10). ×è ìîæíà âîäíî÷àñ çì³íèòè øðèôòè óñ³õ åëåìåíò³â, ÿêùî ñïåðøó âèä³ëèòè ¿õ (äëÿ âèä³ëåííÿ ê³ëüêîõ åëåìåíò³â ñë³ä êëàöíóòè íà êîæíîìó ç íèõ, óòðèìóþ÷è êëàâ³øó Ctrl)?

l

Äîäàéòå òåêñòîâ³ ïîëÿ äëÿ ³ìåí ãðàâö³â.

Îñê³ëüêè ìè âæå ìàéæå ïðèáóëè äî Ôîðìàâ³ëÿ, âàì ïîòð³áíî ñêëàñòè ùå îäèí òåñò Êîì³òåòó ðàë³. Ùàñòè âàì!

69


70


Ìîäóëü 5. Àòðèáóòè, Äæîðäæ³ÿ


Àòðèáóòè Çâè÷àéíî, ó Ôîðìàâ³ë³ áóëî âåñåëî! Ìåí³ â³äîìî, ùî öå ì³ñòî Êë³ô ëþáèòü â³äâ³äóâàòè. ³í çíຠáàãàòî ïðî ðîçðîáêó ôîðì òà åëåìåíòè óïðàâë³ííÿ. Êë³ô ïîêàçàâ âàì, ÿê ñòâîðèòè ôîðìó ñïóùåíî¿ øèíè. ³í íàâ³òü òðîõè íàâ÷èâ âàñ çàäàâàòè çíà÷åííÿ àòðèáóò³â çà äîïîìîãîþ â³êíà Properties. ß ïîâåäó ìàøèíó äî íàñòóïíîãî ïóíêòó ïðèçíà÷åííÿ — ì³ñòà Àòðèáóòè, Äæîðäæ³ÿ. Âè òàì áóâàëè? Öå äóæå ðåñïåêòàáåëüíå ì³ñòî. Âàì äîâåäåòüñÿ ïðîäåìîíñòðóâàòè ó íüîìó ñâî¿ ìàíåðè. Äîðîãîþ ÿ ðîçêàæó âàì ùå á³ëüøå ïðî àòðèáóòè. ß íàâ÷ó âàñ ç÷èòóâàòè òà çàäàâàòè ¿õ çíà÷åííÿ ó êîä³ Visual Basic .NET. ϳñëÿ òîãî, ÿê ìè âèâ÷èìî àòðèáóòè, ÿ ðîçïîâ³ì âàì äåùî ïðî ìåòîäè òà ïîêàæó, ÿê îòðèìóâàòè äî íèõ äîñòóï.

Äå ïî÷èíàºòüñÿ êîä Ñòâîðþâàòè ôîðìè òà íàñòðîþâàòè ¿õ åëåìåíòè óïðàâë³ííÿ çà äîïîìîãîþ â³êíà Properties ö³êàâî, àëå öå ëèøå ïî÷àòîê. ³êíî Properties ëåãêî âèêîðèñòîâóâàòè, àëå éîãî ìîæëèâîñò³ íå íàäòî øèðîê³. À ÿêùî êîðèñòóâà÷ õî÷å çì³íèòè ôîíîâèé êîë³ð ôîðìè, êîëè â³í êîðèñòóºòüñÿ ïðîãðàìîþ? ×è ÿêùî éîìó ïîòð³áíî çì³íèòè ðîçì³ð àáî ñòèëü øðèôòó? Çâ³äêè ïðîãðàìà „ä³çíàºòüñÿ”, ùî êîðèñòóâà÷ óñòàíîâèâ ïðàïîðåöü àáî êëàöíóâ íà ïåðåìèêà÷³? Îñê³ëüêè êîðèñòóâà÷³ íå ìàþòü äîñòóïó äî â³êíà Properties, êîëè ïðîãðàìà âèêîíóºòüñÿ, ÿê âîíè ìîæóòü ðîáèòè òàê³ ðå÷³? ³äïîâ³ä³ íà ö³ çàïèòàííÿ äຠêîä Visual Basic .NET. Âè ìîæåòå ðîáèòè óñ³ ö³ ðå÷³ òà áàãàòî ³íøèõ çà äîïîìîãîþ êîäóâàííÿ. Âè ïèøåòå êîä, ÿêèé áóäå ç÷èòóâàòè çíà÷åííÿ àòðèáóò³â åëåìåíò³â óïðàâë³ííÿ. Ùîá çàäàòè çíà÷åííÿ àòðèáóò³â, òàêîæ ïèøåòüñÿ êîä. Õ³áà íå ïðîñòî? ² äóæå êîðèñíî! Äëÿ ìåíå ñàìå ç öüîãî é ïî÷èíàëîñÿ ïðîãðàìóâàííÿ. Äå ðîçì³ùóâàòè óâåñü öåé êîä? Íà ñòîð³íö³ êîäó ôîðìè! Ó á³ëüøîñò³ âèïàäê³â âè ïîì³ñòèòå éîãî äî îáðîáíèê³â ïîä³é åëåìåíò³â óïðàâë³ííÿ. Ïàì’ÿòàºòå, ùî â³äáóâàºòüñÿ â ïðîãðàì³ ïðè êëàöàíí³ ìèøåþ íà êíîïö³? Êîëè êîðèñòóâà÷ âèêîíóº ïåâíó ä³þ, íàïðèêëàä, êëàöຠíà êíîïö³, óïðàâë³ííÿ ïåðåäàºòüñÿ êîäó, ÿêèé âè íàïèñàëè äëÿ îáðîáíèêà â³äïîâ³äíî¿ ïî䳿. Öåé êîä ìîæå ç÷èòóâàòè àáî çàäàâàòè çíà÷åííÿ àòðèáóò³â ôîðìè àáî åëåìåíò³â óïðàâë³ííÿ. Äîäàþ÷è êîä äî îáðîáíèê³â ïîä³é, âè ðîáèòå ïåðø³ êðîêè íà øëÿõó ïåðåòâîðåííÿ ôîðìè íà ñïðàâæíþ ðîáî÷ó ïðîãðàìó.

73


Ïàì’ÿòàºòå ôîðìó ñïóùåíî¿ øèíè, ÿêó âè ðîçðîáèëè? Âîíà í³÷îãî íå çìîæå ðîáèòè, äîêè âè íå äîäàñòå êîä. ϳçí³øå ÿ ïîêàæó âàì ê³ëüêà ïðèêëàä³â òîãî, ÿê ç÷èòóâàòè çíà÷åííÿ àòðèáóò³â åëåìåíò³â óïðàâë³ííÿ, âèêîðèñòîâóþ÷è êîä Visual Basic .NET. Ïîò³ì ÿ ïîêàæó âàì, ÿê çàäàâàòè çíà÷åííÿ àòðèáóò³â.

Ç÷èòóâàííÿ çíà÷åíü àòðèáóò³â ó êîä³ Ðîçãëÿíåìî äåÿê³ ïðèêëàäè òîãî, ÿê ç÷èòóâàòè çíà÷åííÿ àòðèáóò³â çà äîïîìîãîþ êîäó Visual Basic .NET. Äëÿ ïî÷àòê³âö³â âäàëèì ïðèêëàäîì º ç÷èòóâàííÿ çíà÷åíü äåÿêèõ ïðîñòèõ àòðèáóò³â, ùî çàäàþòüñÿ ó â³êí³ Properties. ϳñëÿ öüîãî ÿ ïîêàæó âàì, ÿê ç÷èòóâàòè çíà÷åííÿ àòðèáóò³â, ÿê³ êîðèñòóâà÷³ ìîæóòü çì³íèòè ï³ä ÷àñ ðîáîòè ïðîãðàìè. Ïî÷íåìî! Ñòâîð³òü íîâó Windows-ïðîãðàìó, ÿêà íàçèâàòèìåòüñÿ ReadProperties. ³äêðèéòå â³êíî Toolbox òà äîäàéòå äî ôîðìè Form1 êíîïêó. ³äêðèéòå â³êíî Properties òà çì³í³òü çíà÷åííÿ àòðèáóòà Text êíîïêè Button1 íà ×èòàòè òåêñò. Äâ³÷³ êëàöí³òü íà ö³é êíîïö³, ùîá âíåñòè çì³íè äî êîäó îáðîáíèêà çàäàíî¿ çà çàìîâ÷óâàííÿì ïî䳿. Ââåä³òü òàêèé ðÿäîê êîäó: MessageBox.Show(Button1.Text) Ïîáóäóéòå òà çàïóñò³òü ïðîãðàìó. Êëàöí³òü íà êíîïö³ ×èòàòè òåêñò. ǒÿâèòüñÿ â³êíî ïîâ³äîìëåííÿ ³ç òåêñòîì „×èòàòè òåêñò”, ÿêèé º çíà÷åííÿì àòðèáóòà Text êíîïêè Button1. ϳäñóìóºìî: ó êîä³ ç÷èòóºòüñÿ çíà÷åííÿ àòðèáóòà Text êíîïêè Button1, à ïîò³ì âèâîäèòüñÿ ïîâ³äîìëåííÿ, ÿêå ì³ñòèòü öå çíà÷åííÿ. ×óäîâî, ÷è íå òàê? ³çüìåìî ³íøèé ïðèêëàä. Äîäàéòå äî ôîðìè ùå îäíó êíîïêó. Ó â³êí³ Properties çì³í³òü çíà÷åííÿ àòðèáóòà Text êíîïêè Button2 íà Ðîçì³ð ôîðìè. Äâ³÷³ êëàöí³òü íà êíîïö³ Button2, ùîá âíåñòè çì³íè äî êîäó îáðîáíèêà ïî䳿. Ââåä³òü òàêèé ðÿäîê êîäó: MessageBox.Show(Form1.ActiveForm.Height & "," & _ Form1.ActiveForm.Width) Ïîáóäóéòå òà íà âèêîíàííÿ çàïóñò³òü ïðîåêò. Êëàöí³òü íà êíîïö³ Ðîçì³ð ôîðìè. ǒÿâèòüñÿ ïîâ³äîìëåííÿ: 300, 300 (àáî ïðèáëèçíî òàêå, ìè ïðèïóñêàºìî, ùî âè çàëèøèëè âèõ³äíèé ðîçì³ð ôîðìè). ϳä ÷àñ âèêîíàííÿ êîäó áóëè âèâåäåí³ çíà÷åííÿ àòðèáóò³â Height òà Width ôîðìè Form1, ðîçä³ëåí³ êîìàìè. Çíîâó ÷óäîâî! Òà ùå é ïðîñòî! ßê³ ùå àòðèáóòè ìîæå ç÷èòóâàòè êîä Visual Basic .NET? Ôàêòè÷íî, óñ³ àòðèáóòè ôîðìè òà åëåìåíò³â óïðàâë³ííÿ — ò³, ùî ç³áðàí³ ó â³êíàõ Properties. Çîêðåìà, â³í ìîæå ç÷èòóâàòè çíà÷åííÿ òàêèõ àòðèáóò³â, ÿê Height òà Width, BackColor, ForeColor òà X and Y Locations. Ïðîòå çíà÷åííÿ á³ëüøîñò³ àòðèáóò³â, ùî â³äîáðàæàþòüñÿ ó â³êí³ Properties, çàäàþòüñÿ ï³ä ÷àñ ïåðøî¿ ðîçðîáêè ôîðìè ³ íå çì³íþþòüñÿ, êîëè âèêîíóºòüñÿ ïðîãðàìà. Òîæ ç÷èòóâàííÿ çíà÷åíü àòðèáóò³â íå çàâæäè º êîðèñíèì àáî ö³êàâèì. Íàñïðàâä³ êîðèñíèì ç÷èòóâàííÿ àòðèáóò³â åëåìåíò³â óïðàâë³ííÿ ñòຠòîä³, êîëè êîðèñòóâà÷³ ìîæóòü çì³íþâàòè ¿õ çíà÷åííÿ ï³ä ÷àñ ðîáîòè ç ïðîãðàìîþ, íàïðèêëàä, âîíè ìîæóòü çì³íèòè çíà÷åííÿ àòðèáóòà Text òåêñòîâîãî ïîëÿ àáî Checked ïðàïîðöÿ. Ç÷èòóþ÷è çíà÷åííÿ àòðèáóò³â, ïðîãðàìà îòðèìóº ³íôîðìàö³þ â³ä êîðèñòóâà÷³â. ßêèé íîìåð ìàøèíè Äæåí? ßêà øèíà ñïóñòèëàñÿ? ßêèé ðîçì³ð øèíè îáðàâ Êë³ô?

74


Ðîçãëÿíåìî á³ëüø ïðàêòè÷íèé ïðèêëàä. Íàïèøåìî êîä, ùî âèçíà÷àòèìå, ÷è óñòàíîâëåíî ïðàïîðåöü. ³äêðèéòå â³êíî Toolbox òà äîäàéòå ïðàïîðåöü äî ôîðìè Form1. Äîäàéòå äî ôîðìè òàêîæ òðåòþ êíîïêó. ³äêðèéòå â³êíî Properties òà çì³í³òü çíà÷åííÿ àòðèáóòà Text êíîïêè Button3 íà Ïåðåâ³ðòå ìåíå. Äâ³÷³ êëàöí³òü íà êíîïö³ Button3, ùîá âíåñòè çì³íè äî êîäó îáðîáíèêà ïî䳿. Ââåä³òü òàêèé ðÿäîê êîäó: MessageBox.Show(CheckBox1.Checked) Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Êëàöí³òü íà êíîïö³ Ïåðåâ³ðòå ìåíå. Ïðî÷èòàéòå ïîâ³äîìëåííÿ. Óñòàíîâ³òü ïðàïîðåöü íà çíîâó êëàöí³òü íà êíîïö³ Ïåðåâ³ðòå ìåíå. ßêèì º ïîâ³äîìëåííÿ öüîãî ðàçó? Êîæíîãî ðàçó, êîëè âè êëàöàºòå íà êíîïö³, â³êíî ïîâ³äîìëåííÿ â³äîáðàæຠïîòî÷íå çíà÷åííÿ àòðèáóòà Checked ïðàïîðöÿ. Òåïåð ïîâ³äîìëåííÿ ìຠì³ñòèòè ñëîâî True. Îñòàíí³é ïðèêëàä. ß ïîêàæó âàì, ÿê ç÷èòóâàòè òà âèâîäèòè íà åêðàí ñëîâà, êîòð³ êîðèñòóâà÷ ââîäèòü ó òåêñòîâå ïîëå. Äîäàéòå äî ôîðìè Form1 òåêñòîâå ïîëå. ³äêðèéòå â³êíî Properties öüîãî ïîëÿ òà ïåðåêîíàéòåñÿ, ùî àòðèáóòó ReadOnly íàäàíå çíà÷åííÿ False. Àòðèáóòó Text íàäàéòå çíà÷åííÿ Ââåä³òü òåêñò. Äîäàéòå ÷åòâåðòó êíîïêó äî ôîðìè. Çì³í³òü çíà÷åííÿ àòðèáóòó Text êíîïêè Button4 íà Ïðî÷èòàòè òåêñò. Êëàöí³òü íà êíîïö³ Button4, ùîá âíåñòè çì³íè äî êîäó îáðîáíèêà ïî䳿. Ââåä³òü òàêèé ðÿäîê êîäó: MessageBox.Show(TextBox1.Text) Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Äâ³÷³ êëàöí³òü ó ïîë³ TextBox1 òà íàòèñí³òü êëàâ³øó Backspace, ùîá âèäàëèòè òåêñò. Ââåä³òü áóäü-ÿêèé íîâèé òåêñò. Êëàöí³òü íà êíîïö³ ×èòàòè òåêñò. ǒÿâèòüñÿ â³êíî ïîâ³äîìëåííÿ. ßêèì º çì³ñò ïîâ³äîìëåííÿ? Çì³í³òü òåêñò ó ïîë³ òà çíîâó êëàöí³òü íà êíîïö³ ×èòàòè òåêñò. Ùî ñòàëîñÿ? Ó J# òà C# àòðèáóòè åëåìåíò³â óïðàâë³ííÿ ÷èòàþòüñÿ òàê ñàìî, ÿê ³ Visual Basic .NET. Îñü ïðèêëàä êîäó ìîâîþ J# àáî C#, ÿêèé â³äîáðàæຠçíà÷åííÿ àòðèáóòà Text òåêñòîâîãî ïîëÿ: { MessageBox.Show(textBox1.Text); } Çà âèíÿòêîì ô³ãóðíèõ äóæîê òà êðàïêè ç êîìîþ ó ê³íö³ ðÿäêà, êîä âèãëÿäຠòàê ñàìî, ÿê ³ ó Visual Basic .NET. Êð³ì òîãî, ó J# òà C# ñëîâî textBox1 ïî÷èíàºòüñÿ ç ìàëåíüêî¿ ë³òåðè. Ö³ ïðèêëàäè ïîêàçóþòü, ÿê âèêîðèñòîâóâàòè êîä Visual Basic .NET äëÿ ç÷èòóâàííÿ çíà÷åíü àòðèáóò³â åëåìåíò³â óïðàâë³ííÿ. Àëå öå — ëèøå ïîëîâèíà îïîâ³ä³, îñê³ëüêè êîä Visual Basic .NET çàñòîñîâóºòüñÿ òàêîæ äëÿ òîãî, ùîá çàäàâàòè çíà÷åííÿ àòðèáóò³â.

75


Óñòàíîâëåííÿ çíà÷åíü àòðèáóò³â ó êîä³ ×óäîâî ìàòè ìîæëèâ³ñòü ç÷èòóâàòè çíà÷åííÿ àòðèáóò³â åëåìåíò³â óïðàâë³ííÿ â êîä³ Visual Basic .NET. Òàê ó êîä³ ìîæíà âèçíà÷èòè çíà÷åííÿ àòðèáóò³â, ÿê³ óñòàíîâëþþòü êîðèñòóâà÷³, êîëè ïðàöþþòü ç ïðîãðàìîþ. Çàëåæíî â³ä ç÷èòàíèõ çíà÷åíü, ìîæå âèêîíóâàòèñÿ ð³çíèé êîä, à îòæå, ³ ð³çí³ ä³¿. À ÷è ìîæå áóòè íàâïàêè? Òîáòî ÷è ìîæå ïðîãðàìà ñàìà çì³íþâàòè çíà÷åííÿ àòðèáóò³â åëåìåíò³â óïðàâë³ííÿ? Íàïðèêëàä, ìåí³ ïîòð³áíî, ùîá ïðàïîðåöü Òåðì³íîâà ðîáîòà áóâ óñòàíîâëåíèé çàâæäè, êîëè êîðèñòóâà÷ âïåðøå çàïóñêຠïðîãðàìó; ùîá ó òåêñòîâîìó ïîë³ ç’ÿâëÿëèñÿ âñ³ íàÿâí³ ðîçì³ðè øèí, êîëè êîðèñòóâà÷ êëàöຠíà êíîïö³ Îòðèìàòè øèíè; ùîá àâòîìàòè÷íî ôîðìóâàâñÿ ñïèñîê ðîçì³ð³â øèí ï³ñëÿ òîãî, ÿê êîðèñòóâà÷ ââåäå íîìåð ìàøèíè. Çâè÷àéíî, çà äîïîìîãîþ êîäó Visual Basic .NET ÿ ìîæó çðîáèòè óñå öå! Çàäàâàòè çíà÷åííÿ àòðèáóò³â åëåìåíò³â óïðàâë³ííÿ òàê ñàìî ëåãêî, ÿê ³ ç÷èòóâàòè ¿õ. Ùîá çàäàòè çíà÷åííÿ àòðèáóòà â êîä³ Visual Basic .NET, ìè çàñòîñîâóºìî îïåðàòîð ïðèñâîþâàííÿ. Ïàì’ÿòàºòå, ÿê ìè îáãîâîðþâàëè îïåðàòîðè ïðèñâîþâàííÿ íà øëÿõó äî ì³ñòà Ïñåâäî, Ïåíñ³ëüâàí³ÿ? Îïåðàòîð ïðèñâîþâàííÿ ïðèçíà÷åíèé äëÿ óñòàíîâëåííÿ ïåâíîãî çíà÷åííÿ äëÿ ïåâíî¿ çì³ííî¿. Êîä îïåðàòîðà ïðèñâîþâàííÿ ñõîæèé íà çâè÷àéíå ð³âíÿííÿ: TextBox1.Text = "Ïðàâèëà êîäó" Ñïî÷àòêó îá÷èñëþºòüñÿ çíà÷åííÿ âèðàçó, ùî çàïèñàíèé ïðàâîðó÷ â³ä ñèìâîëó =. Ïîò³ì öå çíà÷åííÿ íàäàºòüñÿ çì³íí³é, ùî âêàçàíà ë³âîðó÷ â³ä ñèìâîëó =. Îñü ê³ëüêà ïðèêëàä³â òîãî, ÿê çàäàþòüñÿ çíà÷åííÿ àòðèáóò³â ó êîä³ Visual Basic .NET. Ó ïåðøîìó ïðèêëàä³ çàäàºòüñÿ çíà÷åííÿ àòðèáóòà Text òåêñòîâîãî ïîëÿ. Ó òàêèé ñïîñ³á ëåãêî íàäàâàòè êîðèñòóâà÷åâ³ ³íôîðìàö³þ. Òåêñòîâå ïîëå ìîæíà âèêîðèñòîâóâàòè çàì³ñòü â³êíà ïîâ³äîìëåííÿ. Ñòâîð³òü íîâó Windows-ïðîãðàìó òà íàçâ³òü ¿¿ SetProperties. Äîäàéòå äâà òåêñòîâèõ ïîëÿ òà êíîïêó äî ôîðìè Form1. Âèêîðèñòàéòå â³êíî Properties, ùîá íàäàòè àòðèáóòó Text êíîïêè Button1 çíà÷åííÿ Ïîâòîðèòè òåêñò. Ó àòðèáóò³â Text ïîë³â TextBox1 òà TextBox2 íå ïîâèííî áóòè æîäíèõ çíà÷åíü. Âèäàë³òü çíà÷åííÿ öèõ àòðèáóò³â, êëàöàþ÷è äâ³÷³ íà êîæíîìó çíà÷åíí³ òà íàòèñêàþ÷è êëàâ³øó Backspace. Äâ³÷³ êëàöí³òü íà êíîïö³ Button1, ùîá çì³íèòè êîä îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³. Äîäàéòå òàêèé ðÿäîê êîäó: TextBox2.Text = TextBox1.Text Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Ââåä³òü òåêñò äî ïîëÿ TextBox1 ³ êëàöí³òü íà êíîïö³ Ïîâòîðèòè òåêñò. Ùî ñòàëîñÿ? ßê áà÷èòå, òåêñò ç ïîëÿ TextBox1 áó⠄ñêîï³éîâàíèé” äî ïîëÿ TextBox2. Àòðèáóòè Text ïîë³â TextBox1 ³ TextBox2 íàáóëè îäíàêîâèõ çíà÷åíü. Îïåðàòîðîì ïðèñâîºííÿ ç÷èòàíå çíà÷åííÿ àòðèáóòà Text ïîëÿ TextBox1, à ïîò³ì öå çíà÷åííÿ íàäàíå àòðèáóòó Text ïîëÿ TextBox2. Íàäçâè÷àéíî çðó÷íî! Ñòâîðèìî êîä, çàâäÿêè ÿêîìó îäèí ïðàïîðåöü áóäå àâòîìàòè÷íî âñòàíîâëþâàòèñÿ, à ³íøèé — àâòîìàòè÷íî çí³ìàòèñÿ, êîëè êîðèñòóâà÷ çàïóñêàòèìå ïðîãðàìó. Äîäàìî äî ôîðìè Form1 ïðàïîðåöü òà çà äîïîìîãîþ â³êíà Properties íàäàìî éîãî àòðèáóòó Text çíà÷åííÿ „Òåðì³íîâà ðîáîòà”. Äîäàìî äî ôîðìè Form1 äðóãèé ïðàïîðåöü òà íàäàìî éîãî àòðèáóòó Text çíà÷åííÿ „Áóäü-êîëè”. ßêùî äâ³÷³ êëàöíóòè íà ôîðì³ Form1 (íå íà ïðàïîðöÿõ CheckBox1 àáî CheckBox2), â³äêðèºòüñÿ äëÿ ðåäàãóâàííÿ êîä îáðîáíèêà ïî䳿 Form1_Load.

76


Öå ïîä³ÿ çàâàíòàæåííÿ ôîðìè. Êîä ¿¿ îáðîáíèêà âèêîíóºòüñÿ òîä³, êîëè ôîðìà ñòâîðþºòüñÿ òà âïåðøå â³äîáðàæàºòüñÿ íà åêðàí³. Äîäàéòå òàê³ äâà ðÿäêè êîäó: CheckBox1.Checked = True CheckBox2.Checked = False Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. ßêèé ïðàïîðåöü óñòàíîâëåíî? ϳä ÷àñ çàâàíòàæåííÿ ôîðìè àòðèáóòàì Checked îáîõ ïðàïîðö³â áóëè àâòîìàòè÷íî íàäàí³ â³äïîâ³äí³ çíà÷åííÿ. Íàñê³ëüêè ìåí³ â³äîìî, íàéïîøèðåí³øèé ðîçì³ð øèí — 14. Îòæå, äàâàéòå çðîáèìî òàê, ùîá ó ïîë³ ç³ ñïèñêîì ïðîãðàìà àâòîìàòè÷íî îáèðàëà çíà÷åííÿ 14. Ïî-ïåðøå, äîäàìî ïîëå ç³ ñïèñêîì äî ôîðìè Form1. Çà äîïîìîãîþ â³êíà Properties çàäàìî äëÿ àòðèáóòà Items ïîëÿ ç³ ñïèñêîì çíà÷åííÿ 12, 13, 14, 15 òà 16. Íå çàáóâàéòå íàòèñêàòè êëàâ³øó Enter, ùîáè çíà÷åííÿ êîæíîãî åëåìåíòà ñïèñêó ââîäèòè ç íîâîãî ðÿäêà. Äâ³÷³ êëàöí³òü íà ôîðì³ Form1 (íå íà ïîë³ ç³ ñïèñêîì), ùîá çì³íèòè êîä îáðîáíèêà ïî䳿 çàâàíòàæåííÿ ôîðìè. Äîäàéòå òàêèé ðÿäîê êîäó: ComboBox1.SelectedItem = "14" Ïîáóäóéòå ïðîåêò òà çàïóñò³òü éîãî íà âèêîíàííÿ. ßêèé åëåìåíò îáðàíî ó ïîë³ ç³ ñïèñêîì? Îé, çäàºòüñÿ ÿ ïîìèëèëàñÿ, íàéïîøèðåí³øèé ðîçì³ð øèí — 13. ßê çì³íèòè êîä, ùîá ó ïîë³ ç³ ñïèñêîì àâòîìàòè÷íî îáèðàâñÿ åëåìåíò 13? Ó J# òà C# àòðèáóòè çàäàþòüñÿ òàê ñàìî, ÿê ³ ó Visual Basic .NET. Íèæ÷å ïîêàçàíî, ÿê çàäàòè çíà÷åííÿ àòðèáóòà Checked ïðàïîðöÿ ó ìîâ³ J# àáî C#. { checkBox1.Checked = True; }

Âïðàâà 5.1. Áàðâèñòà âåñåëêà Âåñåëêà, ÿêó íàø³ ñóïóòíèêè ïîáà÷èëè ç ïåðåäíüîãî ñèä³ííÿ ìàøèíè, íàäèõíóëà ¿õ. Âîíè âèð³øèëè ïîäèâèòèñü, õòî çìîæå ñòâîðèòè õóäîæíþ ïðîãðàìó, ÿêà ³ì³òóâàòèìå ðåàëüíå æèòòÿ. Âàøå çàâäàííÿ ïîëÿãຠó òîìó, ùîá äîâåñòè ñâîº âì³ííÿ îïåðóâàòè ç àòðèáóòàìè, âèêîðèñòîâóþ÷è ñïðàâæí³é êîä VB, à íå â³êíî Properties. ³äêðèéòå Visual Studio .NET, âèáåð³òü Existing Project (Íàÿâíèé ïðîåêò) ³ ïåðåéä³òü äî ôàéëà Rainbow.sln. Àáî âè ìîæåòå çíàéòè ôàéë Rainbow.sln çà äîïîìîãîþ îãëÿäà÷à Windows, äâ³÷³ êëàöíóòè íà íüîìó — ³ ðîçâ’ÿçàííÿ â³äêðèºòüñÿ ó Visual Studio .NET.

77


Îòæå, âàøå çàâäàííÿ ïîëÿãຠó òîìó, ùîá, äîäàþ÷è îᒺêòè ç â³êíà Toolbox, ïðèâåñòè ôîðìó ïðèáëèçíî äî òàêîãî âèãëÿäó, ÿêèé çîáðàæåíî íèæ÷å. Âè òàêîæ çì³íèòå åëåìåíòè ó â³êí³ êîäó, ÿê îïèñàíî íèæ÷å. 1. Êëàöí³òü íà ôîðì³, ùîá âèä³ëèòè ¿¿. Çì³í³òü çíà÷åííÿ àòðèáóòà Text ôîðìè íà Âåñåëêà. 2. Ñòâîð³òü âåëèêå ïîëå çîáðàæåííÿ PictureBox1. 3. Ñòâîð³òü äâ³ êîìàíäí³ êíîïêè — Button1 òà Button2. Íà êíîïö³ Button1 ïîâèíåí áóòè íàïèñ Îñíîâí³ êîëüîðè, à íà êíîïö³ Button2 — Íàï³âòîíè.

4. Äâ³÷³ êëàöí³òü íà êíîïö³ Button1, ùîá ïåðåãëÿíóòè êîä, ÿêèé äëÿ âàñ óæå ñòâîðåíî. Âè ïîáà÷èòå, ùî íàìàëüîâàíî ñ³ì ñìóã âåñåëêè. Óñ³ âîíè íàìàëüîâàí³ ÷îðíèì (Black). Âàøå çàâäàííÿ ïîëÿãຠó òîìó, ùîá çì³íèòè ¿õ êîëüîðè íà ñ³ì òðàäèö³éíèõ: ÷åðâîíèé (Red), îðàíæåâèé (Orange), æîâòèé (Yellow), çåëåíèé (Green), áëàêèòíèé (Blue), ñèí³é (Indigo) òà ô³îëåòîâèé (Violet). Íàïðèêëàä, çàì³í³òü êîä MyPen.Color = System.Drawing.Color.Black íà òàêèé: MyPen.Color = System.Drawing.Color.Red Ò³ëüêè-íî ï³ñëÿ ñëîâà Color âè ïîñòàâèòå êðàïêó, çàñ³á IntelliSense âèâåäå ñïèñîê óñ³õ äîñòóïíèõ êîëüîð³â. Äëÿ òîãî, ùîá îáðàòè åëåìåíò ñïèñêó, äîñèòü íàäðóêóâàòè îäíó àáî äâ³ ïåðøèõ ë³òåðè êîëüîðó. 5. Äâ³÷³ êëàöí³òü íà êíîïö³ Button2, ùîá ïîáà÷èòè êîä, ÿêèé äëÿ âàñ óæå ñòâîðåíî. Çàì³ñòü ÷îðíîãî, îáåð³òü ñ³ì êîëüîð³â íà ñâ³é ñìàê. Ñòâîðèâøè ôîðìó, ïîáóäóéòå ðîçâ’ÿçàííÿ. ßêùî ó íüîìó íå âèíèêëî ïîìèëîê, âèáåð³òü êîìàíäó Debug4Start, ùîá çàïóñòèòè ïðîãðàìó. ßêùî ïðîãðàìà ïðàöþº ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðó.

Äîäàòêîâå çàâäàííÿ ßêùî õî÷åòå, âè ìîæåòå çì³íèòè àòðèáóòè DrawArc äîäàòêîâèõ êîëüîð³â, ùîá îòðèìàòè ³íø³ ö³êàâ³ ðåçóëüòàòè.

78


IntelliSense òà êðàïêîâå ïîçíà÷åííÿ Òåïåð âàì â³äîìî, ÿê ïèñàòè êîä Visual Basic .NET, ùî ç÷èòóâàòèìå òà óñòàíîâëþâàòèìå çíà÷åííÿ àòðèáóò³â ôîðì òà åëåìåíò³â óïðàâë³ííÿ. Çäîãàäóþñÿ, ÿêèì áóäå âàøå íàñòóïíå çàïèòàííÿ! Îñê³ëüêè ó êîæíî¿ ôîðìè äóæå áàãàòî àòðèáóò³â, ÷è â³äñòåæóþ ÿ ¿õ óñ³? Íå äóæå çðó÷íî óâåñü ÷àñ ïåðåêëþ÷àòèñÿ òî íà â³êíî êîäó, òî íà â³êíî Properties, êîëè ïîòð³áíî ä³çíàòèñÿ, ÿê³ àòðèáóòè íàëåæàòü ïåâíîìó åëåìåíòó óïðàâë³ííÿ. ×è íå ³ñíóº ïðîñò³øîãî ñïîñîáó? Òàêèé ñïîñ³á ³ñíóº ³ íàçèâàºòüñÿ â³í IntelliSense. Çàñ³á IntelliSense — ÷àñòèíà Visual Studio. ³í äîçâîëÿº çàîùàäèòè áàãàòî ÷àñó, êîëè âè ïðàöþºòå ó â³êí³ êîäó. IntelliSense „çíດ, ç ÿêèì åëåìåíòîì óïðàâë³ííÿ âè ïðàöþºòå òà ÿê³ â³í ìຠàòðèáóòè. Çàñ³á IntelliSense âèâîäèòü ñïèñîê àòðèáóò³â òà äîçâîëÿº îáðàòè òîé, ÿêèé âè õî÷åòå âèêîðèñòàòè. Àòðèáóò, ùî âèêîðèñòîâóºòüñÿ íàé÷àñò³øå, áóäå âèä³ëåíèé. Íàïðèêëàä, ñïî÷àòêó áóäå âèä³ëåíî àòðèáóò Text òåêñòîâîãî ïîëÿ. Âèêîðèñòîâóþ÷è êëàâ³ø³ óïðàâë³ííÿ êóðñîðîì, âè çìîæåòå ïåðåì³ùàòèñÿ çà ñïèñêîì, ùîá çíàéòè ïîòð³áíèé àòðèáóò. Êîëè âè íàòèñêàºòå êëàâ³øó Tab, àòðèáóò äîäàºòüñÿ äî êîäó. Çàâäÿêè çàñîáó IntelliSense, âàì íå ïîòð³áíî çàïàì’ÿòîâóâàòè âñ³ àòðèáóòè âñ³õ åëåìåíò³â óïðàâë³ííÿ. Âàì íå äîâåäåòüñÿ áàãàòî äðóêóâàòè! ß âåñü ÷àñ êîðèñòóþñÿ öèì çàñîáîì. Ïåðåâ³ðèìî éîãî! Ñòâîð³òü íîâó Windows-ïðîãðàìó ³ íàçâ³òü ¿¿ IntelliSense. Äîäàéòå òåêñòîâå ïîëå àáî êíîïêó äî ôîðìè Form1. Äâ³÷³ êëàöí³òü íà êíîïö³ Button1, ùîá â³äêðèòè êîä îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³. 1. Ââåä³òü TextBox1 òà íàòèñí³òü êëàâ³øó ñèìâîëó êðàïêè (.). Ò³ëüêè-íî âè ââåäåòå êðàïêó, IntelliSense âèâåäå ñïèñîê àòðèáóò³â åëåìåíòà óïðàâë³ííÿ TextBox1. Öåé ñïèñîê áóäå òàêèì ñàìèì ³ äëÿ áóäü-ÿêîãî ³íøîãî òåêñòîâîãî ïîëÿ, ÿêå âè äîäàñòå äî ôîðìè. Çà çàìîâ÷óâàííÿì ó ñïèñêó IntelliSense îáðàíî àòðèáóò, ùî âèêîðèñòîâóºòüñÿ íàé÷àñò³øå. Ó öüîìó âèïàäêó çà çàìîâ÷óâàííÿì îáðàíî àòðèáóò Text.

79


2. Òåïåð ââåä³òü ë³òåðó R. IntelliSense ïåðåéäå äî ïåðøîãî àòðèáóòà ó ñïèñêó, ùî ïî÷èíàºòüñÿ ç R. Êîëè âè ââîäèòå ë³òåðè, IntelliSense øóêຠàòðèáóò, ÿêèé íàéá³ëüøå â³äïîâ³äຠââåäåíîìó òåêñòó.

3. Âèêîðèñòàéòå êëàâ³ø³ óïðàâë³ííÿ êóðñîðîì, ùîá ïåðåì³ñòèòèñÿ çà ñïèñêîì òà çíîâó çíàéòè àòðèáóò Text. Âèáåð³òü éîãî. 4. Íàòèñí³òü êëàâ³øó Tab. Ïîãëÿíüòå-íî, ùî ñòàëîñÿ! Ñëîâî Text áóëî âñòàâëåíå ó êîä ï³ñëÿ ñëîâà TextBox1. Òåïåð äîïèø³òü ðÿäîê êîäó: TextBox1.Text = "Clifford" Ëåãêî òà øâèäêî, ÷è íå òàê? Ùå îäí³ºþ ïåðåâàãîþ çàñîáó IntelliSense º òå, ùî â³í äîçâîëÿº ñêîðîòèòè ê³ëüê³ñòü ïîìèëîê. Âè, ïåâíå, ïîì³òèëè, ùî ïîðó÷ ³ç êîæíèì åëåìåíòîì ó ñïèñêó IntelliSense º çíà÷îê. Çíà÷îê àòðèáóòà ì³ñòèòü çîáðàæåííÿ ðóêè, ùî âêàçóº íà åëåìåíò ó ñïèñêó. Çíà÷îê ìåòîäó ìຠâèãëÿä ïóðïóðîâîãî ðîìáó. (Çà õâèëèíó ÿ ïîÿñíþ âàì, ùî òàêå ìåòîäè). Çàëåæíî â³ä òèïó åëåìåíòó óïðàâë³ííÿ, âè òàêîæ ìîæåòå ïîáà÷èòè ³íø³ çíà÷êè, ùî âêàçóþòü íà äîäàòêîâ³ àòðèáóòè. Âè ïîì³òèëè, ùî âàì äîâåëîñÿ ââåñòè êðàïêó ïåðø, í³æ ç’ÿâèâñÿ ñïèñîê IntelliSense? Ó ìîâ³ Visual Basic .NET âèêîðèñòîâóºòüñÿ ñèíòàêñèñ, ùî íàçèâàºòüñÿ êðàïêîâèì ïîçíà÷åííÿì. ϳñëÿ òîãî, ÿê âè ââåäåòå ³ì’ÿ åëåìåíòà óïðàâë³ííÿ, íàïðèêëàä TextBox1, âàì ïîòð³áíî ââåñòè êðàïêó. Ïîò³ì ââîäüòå íàçâó àòðèáóòà. Êðàïêà çâ’ÿçóº åëåìåíò óïðàâë³ííÿ àáî ôîðìó ç ¿õ àòðèáóòàìè: ²ì’ÿÔîðìè.ÀòðèáóòÔîðìè ²ì’ÿÅëåìåíòàÓïðàâë³ííÿ.ÀòðèáóòÅëåìåíòàÓïðàâë³ííÿ

80


Âè âæå áà÷èëè áàãàòî ïðèêëàä³â, àëå íàâåäåìî ùå ê³ëüêà: TextBox1.Text CheckBox1.Checked Form1.ActiveForm.Height Çàóâàæòå, ùî â îñòàííüîìó ïðèêëàä³ ActiveForm — öå àòðèáóò ôîðìè Form1, à Height — àòðèáóò àòðèáóòà ActiveForm. Òîìó ïîòð³áí³ äâ³ êðàïêè, ùîá 璺äíàòè àòðèáóòè ðàçîì. IntelliSense â³äîìî, êîëè àòðèáóò ìຠñâî¿ àòðèáóòè. ßêùî ó âàñ âèíèêëè ñóìí³âè, ââåä³òü ùå îäíó êðàïêó ³ IntelliSense â³äîáðàçèòü ñïèñîê óñ³õ íàÿâíèõ àòðèáóò³â. ßêùî ñïèñîê íå ç’ÿâëÿºòüñÿ, äîäàòêîâèõ àòðèáóò³â íåìຠ³ âàì äîâåäåòüñÿ ïðèáðàòè îñòàííþ êðàïêó. Àáî æ âè íåïðàâèëüíî ââåëè ³ì’ÿ åëåìåíòà óïðàâë³ííÿ. ßêùî ó ñåðåäîâèù³ Visual Studio âè ðîçðîáëÿºòå ïðîãðàìó íà C# àáî J#, äî âàøèõ ïîñëóã òàêîæ áóäå çàñ³á IntelliSense. ³í ïðàöþº òàê ñàìî, ÿê ³ ó Visual Basic .NET. Ïðîñòî ââåä³òü íàçâó åëåìåíòà óïðàâë³ííÿ, à ïîò³ì ââåä³òü êðàïêó. IntelliSense âèâåäå íà åêðàí ñïèñîê íàÿâíèõ àòðèáóò³â òà ìåòîä³â. Îñê³ëüêè ìîâè C#, J# òà Visual Basic .NET ñïèðàþòüñÿ íà ñèñòåìó .NET, ñïèñîê àòðèáóò³â òà ìåòîä³â åëåìåíòà óïðàâë³ííÿ áóäå îäíàêîâèì äëÿ âñ³õ òðüîõ ìîâ.

Ìåòîäè Âè, ïåâíå, ïîì³òèëè, ùî äåÿê³ àòðèáóòè ó ñïèñêó, ÿêèé âèâîäèòü IntelliSense, ïîçíà÷åí³ ïóðïóðîâèì ðîìáîì. Íàñïðàâä³ öå íå àòðèáóòè, à ìåòîäè. Àòðèáóòè — öå õàðàêòåðèñòèêè îᒺêò³â, íàïðèêëàä êîë³ð, ê³ëüê³ñòü ì³ñöü, âàãà òà ïîòóæí³ñòü ìîòîðó — öå õàðàêòåðèñòèêè ìàøèíè. Ìåòîäè á³ëüøå ñõîæ³ íà 䳿 îᒺêò³â, íàïðèêëàä, ïîâåðíóòè ë³âîðó÷ òà çóïèíèòèñÿ — öå 䳿 ìàøèíè. Äî ìåòîä³â íå ìîæíà îòðèìàòè äîñòóï ÷åðåç â³êíî Properties. ¯õ ïîòð³áíî âèêëèêàòè ó êîä³. Íàïðèêëàä, ó á³ëüøîñò³ åëåìåíò³â óïðàâë³ííÿ º ìåòîäè Hide òà Show. Êîëè âèêëèêàºòå ìåòîä Hide, åëåìåíò óïðàâë³ííÿ ñòຠíåâèäèìèì, õî÷à, ÿê ³ ðàí³øå, ì³ñòèòüñÿ ó ôîðì³. Êîëè âèêëèêàºòå ìåòîä Show, åëåìåíò óïðàâë³ííÿ ç’ÿâëÿºòüñÿ çíîâó. Äåÿê³ ìåòîäè „áåðóòü íà ñåáå” âèêîíàííÿ ä³é, ÿê³ çàçâè÷àé âèêîíóþòü êîðèñòóâà÷³. Íàïðèêëàä, ó êíîïêè º ìåòîä PerformClick, çà äîïîìîãîþ ÿêîãî êëàöàííÿ íà êíîïö³ çä³éñíþºòüñÿ òàê, í³áè öå çðîáèâ êîðèñòóâà÷. Äåÿê³ ìåòîäè âèìàãàþòü, àáè ï³ä ÷àñ ¿õ âèêëèêó âè ïåðåäàëè äëÿ íèõ ïåâí³ äàí³. Ö³ äàí³ ìîæóòü âïëèâàòè ³ íà òå, ÿê âèêîíóºòüñÿ ìåòîä, ³ íà ðåçóëüòàòè éîãî âèêîíàííÿ. Äàí³, ùî ïåðåäàþòüñÿ ìåòîäó, íàçèâàþòüñÿ éîãî àðãóìåíòàìè. Ìåòîä ìîæå ïîòðåáóâàòè îäíîãî àáî ê³ëüêîõ àðãóìåíò³â. Äåÿê³ ç íèõ ìîæóòü áóòè íåîáîâ’ÿçêîâèìè.

81


Íàïðèêëàä, àðãóìåíòîì ìåòîäó Show â³êíà ïîâ³äîìëåííÿ º òåêñòîâèé ðÿäîê. Öåé àðãóìåíò ì³ñòèòü òåêñò, ùî éîãî áóäå â³äîáðàæåíî ó â³êí³ ïîâ³äîìëåííÿ. Âè âæå êîðèñòóâàëèñÿ ìåòîäîì Show â³êíà ïîâ³äîìëåííÿ, àëå âè, íàïåâíå, òîä³ íå óñâ³äîìëþâàëè, ùî âèêëèêàºòå ìåòîä ç àðãóìåíòîì: MessageBox.Show("Hello, World") Ó íàâåäåíîìó êîä³ òåêñò "Hello, World" º àðãóìåíòîì ìåòîäó Show. Àðãóìåíòîì âèçíà÷àºòüñÿ âì³ñò â³êíà ïîâ³äîìëåííÿ. Ïàì’ÿòàéòå, ùî ãîëîâíà â³äì³íí³ñòü ì³æ àòðèáóòàìè òà ìåòîäàìè ïîëÿãຠó òîìó, ùî ìåòîäè ïîâèíí³ âèêëèêàòèñÿ ç êîäó, äî íèõ íå ìîæíà îòðèìàòè äîñòóï ç â³êíà Properties. Äåÿê³ ìåòîäè ïîòðåáóþòü îäíîãî àáî ê³ëüêîõ àðãóìåíò³â, äåÿê³ — ïîâåðòàþòü çíà÷åííÿ, ùî ìîæå âèêîðèñòîâóâàòèñÿ ó êîä³.

Âèêëèê ìåòîä³â ó êîä³ Ñèíòàêñèñ âèêëèêó ìåòîäó ìàéæå ³äåíòè÷íèé ñèíòàêñèñó óñòàíîâëåííÿ àáî ç÷èòóâàííÿ çíà÷åííÿ àòðèáóòà. Ùîá 璺äíàòè åëåìåíò óïðàâë³ííÿ ôîðìè ç éîãî ìåòîäîì, âèêîðèñòîâóºòüñÿ êðàïêîâå ïîçíà÷åííÿ. Äåÿê³ ìåòîäè, íàïðèêëàä, Button.Hide òà Button.Show, íå ïîòðåáóþòü àðãóìåíò³â, ³íø³ — ïîòðåáóþòü. Íàïðèêëàä, ìåòîäó MessageBox.Show àðãóìåíò ïîòð³áíèé äëÿ òîãî, ùîá çíàòè, ÿêå ïîâ³äîìëåííÿ âèâîäèòè. Îòæå, ñèíòàêñèñ âèêëèêó ìåòîäó º òàêèì: ²ì’ÿÅëåìåíòàÓïðàâë³ííÿ.²ì’ÿÌåòîäó(àðãóìåíò1, àðãóìåíò2, ...) ßê áà÷èòå, îäíà îñíîâíà â³äì³íí³ñòü ì³æ âèêëèêîì ìåòîäó òà ç÷èòóâàííÿì (àáî óñòàíîâëåííÿì) çíà÷åííÿ àòðèáóòà ïîëÿãຠó òîìó, ùî ï³ä ÷àñ âèêëèêó ìåòîäó íå âèêîðèñòîâóºòüñÿ çíàê ð³âíîñò³. Òåïåð ïîãëÿíüìî íà äåÿê³ ç ìî¿õ óëþáëåíèõ ìåòîä³â ³ ä³çíàºìîñÿ, ÿê ¿õ ìîæíà âèêëèêàòè ç êîäó. ß ïîêàæó âàì, ÿê ïðèõîâóâàòè òà â³äîáðàæàòè åëåìåíòè óïðàâë³ííÿ, âèòèðàòè òåêñò ó òåêñòîâèõ ïîëÿõ òà ïåðåñóâàòè êóðñîð. Ñïî÷àòêó ñòâîð³òü íîâó Windows-ïðîãðàìó, ÿêà íàçèâàòèìåòüñÿ Methods. Äîäàéòå äâ³ êíîïêè òà òåêñòîâå ïîëå äî ôîðìè Form1. Íàäàéòå àòðèáóòó Text êíîïêè Button1 çíà÷åííÿ Ïîêàçàòè, àòðèáóòó Text êíîïêè Button2 — çíà÷åííÿ Ïðèõîâàòè. Äî îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ Button1 äîäàéòå òàêèé ðÿäîê êîäó: TextBox1.Show() Äî îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ Button2 äîäàéòå òàêèé ðÿäîê êîäó: TextBox1.Hide() Ïîáóäóéòå ïðîãðàìó òà çàïóñò³òü ¿¿. Êëàöí³òü ïî÷åðãîâî íà êíîïêàõ Ïîêàçàòè òà Ïðèõîâàòè. Êîæíîãî ðàçó, êîëè âè êëàöàºòå íà êíîïö³, âè âèêëèêàºòå ìåòîä êíîïêè. Äîäàéòå äî ôîðìè Form1 òðåòþ êíîïêó. Íàäàéòå àòðèáóòó Text êíîïêè Button3 çíà÷åííÿ Âèäàëèòè. Äî îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ Button3 äîäàéòå òàêèé ðÿäîê êîäó: TextBox1.ResetText() TextBox1.Focus()

82


Ìåòîä ResetText âèäàëÿº òåêñò ³ç ïîëÿ òà íàäຠàòðèáóòó Text ïîðîæí³é ðÿäîê. Ìåòîä Focus âñòàíîâëþº êóðñîð äî òåêñòîâîãî ïîëÿ. Ïîáóäóéòå ïðîãðàìó òà çàïóñò³òü ¿¿. Ââåä³òü òåêñò äî òåêñòîâîãî ïîëÿ òà êëàöí³òü íà êíîïö³ Âèäàëèòè. Òåêñò áóäå âèäàëåíî ³ç ïîëÿ, à êóðñîð àâòîìàòè÷íî ç’ÿâèòüñÿ çíîâó, òîáòî ïîëå áóäå ï³äãîòîâëåíå äî ââåäåííÿ íîâîãî òåêñòó. Âè, íàïåâíå, âæå çäîãàäàëèñÿ, ùî ìåòîäè ó J# òà C# âèêëèêàþòüñÿ òàê ñàìî, ÿê ³ ó Visual Basic .NET. Îñü êîä J#, ÿêèé çàáåçïå÷èòü âèäàëåííÿ òåêñòó ç òåêñòîâîãî ïîëÿ òà óñòàíîâëåííÿ äî íüîãî êóðñîðó. Êîä C# ìàòèìå òàêèé ñàìèé âèãëÿä. { textBox1.ResetText(); textBox1.Focus(); }

Ïðèáóòòÿ äî ì³ñòà Àòðèáóòè Íó, îò ìè é îïèíèëèñÿ íà îêîëèöÿõ ì³ñòà Àòðèáóòè, Äæîðäæ³ÿ. Ìè âæå áàãàòî ä³çíàëèñÿ. Òåïåð âè â쳺òå ç÷èòóâàòè òà çàäàâàòè çíà÷åííÿ àòðèáóò³â, à òàêîæ âèêëèêàòè ìåòîäè ôîðìè, âèêîðèñòîâóþ÷è êîä Visual Basic .NET. ßê âè áà÷èëè, á³ëüøà ÷àñòèíà êîäó ïðèïàäຠíà îáðîáíèê³â ïîä³é åëåìåíò³â óïðàâë³ííÿ. Ùîá â³äêðèòè â³êíî êîäó îáðîáíèêà ïî䳿, ïîòð³áíî ïðîñòî äâ³÷³ êëàöíóòè íà åëåìåíò³ óïðàâë³ííÿ — ³ îáðîáíèê ïî䳿 áóäå ãîòîâèé äî ðåäàãóâàííÿ. Ùîá ç÷èòàòè àáî çàäàòè çíà÷åííÿ àòðèáóòà àáî âèêëèêàòè ìåòîä, ââåä³òü ³ì’ÿ åëåìåíòà óïðàâë³ííÿ, à ïîò³ì êðàïêó. Çàñ³á IntelliSense ïîêàæå âàì ñïèñîê äîñòóïíèõ äëÿ öüîãî åëåìåíòà óïðàâë³ííÿ àòðèáóò³â òà ìåòîä³â. Âèáåð³òü ç íèõ òîé, ùî âàì ïîòð³áåí, òà íàòèñí³òü êëàâ³øó Tab, ùîá äîäàòè éîãî äî êîäó. Ó íàñ º äîñèòü ÷àñó äëÿ âèêîíàííÿ ê³ëüêîõ âïðàâ òà òåñòó ïåðåä òèì, ÿê ïðèáðàòèñÿ ó ñâÿòêîâ³ øàòè òà éòè äî êàôå Peach ‘n Bass. Ãîòîâ³?

Âïðàâà 5.2. Âèì³ðþâà÷ äèñòàíö³¿ Ðîçãëÿäóâàííÿ êàðòè ïîäîðîæ³ ñïîíóêàëî ͳêê³ çàïèòàòè, ÷è ìîæå õòîñü íàïèñàòè ïðîãðàìó, ÿêà á ïîêàçóâàëà ÷àñòêó ïðîéäåíîãî øëÿõó. Âàøå çàâäàííÿ — äîâåñòè, ùî âè â쳺òå îïåðóâàòè ç àòðèáóòàìè ÷åðåç êîä Visual Basic .NET, à íå ëèøå çà äîïîìîãîþ â³êíà Properties. ³äêðèéòå Visual Studio .NET, êëàöí³òü íà êíîïö³ New Project òà ñòâîð³òü ïðîåêò TripMeter. Âàøå çàâäàííÿ ïîëÿãຠó òîìó, ùîá, äîäàþ÷è îᒺêòè ç â³êíà Toolbox, ïðèâåñòè ôîðìó ïðèáëèçíî äî òàêîãî âèãëÿäó, ÿêèé çîáðàæåíî íèæ÷å. Âè òàêîæ çì³íèòå åëåìåíòè ó â³êí³ êîäó, çã³äíî ç íàâåäåíèìè ³íñòðóêö³ÿìè. 1. Êëàöí³òü íà ôîðì³, ïîò³ì çì³í³òü ¿¿ íàçâó íà Âèì³ðþâà÷ äèñòàíö³¿. 2. Ñòâîð³òü òðèíàäöÿòü ïåðåìèêà÷³â. Çàäàéòå øèðèíó êîæíîãî ïåðåìèêà÷à 200 ï³êñåë³â. (Âè ìîæåòå âèêîðèñòàòè êîï³þâàííÿ òà âñòàâëÿííÿ).

83


3. Âèð³âíÿéòå ïåðåìèêà÷³ ó âåðòèêàëüíîìó íàïðÿì³ òà ðîçòàøóéòå ¿õ íà îäíàêîâ³é â³äñòàí³ îäèí â³ä îäíîãî. Âàì â³äîìî, ùî íà ïàíåë³ ³íñòðóìåíò³â º êíîïêè, ÿê³ çä³éñíþþòü öå? Íàâîäüòå ïîêàæ÷èê ìèø³ íà êíîïêè ïàíåë³ ³íñòðóìåíò³â, äîêè íå çíàéäåòå ïîòð³áíó, ïîò³ì êëàöí³òü íà í³é. 4. Âñòàíîâ³òü äëÿ ïåðåìèêà÷³â òåêñò, ÿê çîáðàæåíî íà çðàçêó ôîðìè.

5. Ñòâîð³òü êíîïêó Çàâåðøèòè. Äâ³÷³ êëàöí³òü íà í³é, ùîá â³äêðèòè ïîâ’ÿçàíó ³ç íåþ ñòîð³íêó êîäó. Ïîì³ñò³òü ñëîâî End äî êîäó îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³. 6. Ðîçòàøóéòå íà ôîðì³ âåðòèêàëüíó ñìóãó ïðîêðó÷óâàííÿ. Äëÿ öüîãî âàì, ìîæëèâî, äîâåäåòüñÿ ïðîêðóòèòè â³êíî Toolbox. Çà çàìîâ÷óâàííÿì ñìóãà ïðîêðó÷óâàííÿ ïî÷èíàºòüñÿ ç ïîçíà÷êè 0 òà çàâåðøóºòüñÿ ïîçíà÷êîþ 100, òîìó âè îòðèìàºòå çàâåëèêèé ïîâçóíåöü. Ùîá çìåíøèòè éîãî, çì³í³òü çíà÷åííÿ àòðèáóòà Maximum äëÿ ñìóãè ïðîêðó÷óâàííÿ íà 1000. 7. Òåïåð ìîæíà ïèñàòè êîä. Äâ³÷³ êëàöí³òü íà ïåðøîìó ïåðåìèêà÷³. Ïîì³ñò³òü äî îáðîáíèêà ïî䳿 êëàöàííÿ òàêèé ðÿäîê êîäó: VScrollBar1.Value = 0 Ó òàêèé ñïîñ³á âè ïåðåì³ùóºòå ³íäèêàòîð ó ïîëîæåííÿ 0. Äëÿ êîæíîãî ïåðåìèêà÷à âèêîðèñòîâóéòå òàêèé ñàìèé ðÿäîê êîäó, ò³ëüêè ðîá³òü çíà÷åííÿ íà 83 á³ëüøèì çà ïîïåðåäíº. Îñòàíí³ì çíà÷åííÿì ïîâèííî ñòàòè 996, àëå âè ââåä³òü 1000. Êîëè âè ñòâîðèòå ôîðìó, ïîáóäóéòå ðîçâ’ÿçàííÿ. ßêùî ó íüîìó íåìຠïîìèëîê, âèáåð³òü êîìàíäó Debug4Start, ùîá çàïóñòèòè ïðîãðàìó. Êîëè ïðîãðàìà çàïðàöþº ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðîâ³.

84


Çàâäàííÿ 5. Êâ³òè Çàâæäè, êîëè ìè ïðî¿æäàºìî ïîâç ïîëå êâ³ò³â, ó ìåíå ÷óäîâèé íàñòð³é. Ãàäàþ, íàì ñë³ä ñòâîðèòè ïðîãðàìó ïîêàçó êâ³ò³â.

Íàìàëþéòå òàêó ôîðìó, ÿê ïîêàçàíî íà ðèñóíêó.

1. Íàäàéòå àòðèáóòó Visible ÷îòèðüîõ ïîë³â çîáðàæåíü çíà÷åííÿ False. 2. Íàäàéòå àòðèáóòó Border ÷îòèðüîõ ïîë³â çîáðàæåíü çíà÷åííÿ Fixed3D. 3. íàäàéòå àòðèáóòó SizeMode ÷îòèðüîõ ïîë³â çîáðàæåíü çíà÷åííÿ AutoSize. 4. Íàäàéòå àòðèáóòó Image êîæíîãî ïîëÿ ³ì’ÿ ôàéëà â³äïîâ³äíîãî çîáðàæåííÿ. 5. Ïåðåéä³òü äî ñòîð³íêè êîäó. Íàä ñàìèì êîäîì º äâà ñïèñêè, ùî ðîçêðèâàþòüñÿ. Ó ë³âîìó âèáåð³òü label1. 6. Ó ïðàâîìó ñïèñêó âèáåð³òü MouseHover. 7. Ó ïî䳿 Label1.Mousehover íàäàéòå àòðèáóòó Visible ïîëÿ PictureBox1 çíà÷åííÿ True. Àòðèáóòàì Visible òðüîõ ³íøèõ ïîë³â íàäàéòå çíà÷åííÿ False. 8. Çðîá³òü òå ñàìå äëÿ òðüîõ ³íøèõ íàïèñ³â, â³äïîâ³äíî çì³íþþ÷è âèäèì³ñòü çîáðàæåíü. 9. Ó ðåçóëüòàò³ ïðîãðàìà ïîâèííà ïîêàçóâàòè ëèøå îäíå çîáðàæåííÿ òîä³, êîëè ïîêàæ÷èê ìèø³ íàâåäåíèé íà éîãî îïèñ. Êîëè ïðîãðàìà çàïðàöþº ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðîâ³.

85


Äîäàòêîâå çàâäàííÿ Êîëè îáðàíî ïåâíó êâ³òêó, ìຠçì³íþâàòèñü ôîíîâèé êîë³ð ôîðìè. Îñê³ëüêè ìè ïðèáóëè äî ì³ñòà Àòðèáóòè, Äæîðäæ³ÿ, âàì äîâåäåòüñÿ ïðîéòè ÷åðãîâèé òåñò. Ùàñòè âàì!

86


Ìîäóëü 6. XY, Àðêàíçàñ


XY, Àðêàíçàñ Ïðÿìóºìî äî ì³ñòà XY, Àðêàíçàñ. Öå ð³äíå ì³ñòî â³äîìîãî áàñêåòáîëüíîãî ãðàâöÿ Àë’Ãåáðè. Ó íüîìó æ ìåøêàëà ìîÿ êîëèøíÿ ïîäðóæêà. ×îìó êîëèøíÿ? Ïðîñòî ìè íå äóæå ëàäíàëè. Ãàäàþ, ¿¿ íàñòð³é áóâ íàäòî çì³ííèì! Íà øëÿõó äî ì³ñòà XY ÿ ðîçêàæó âàì ïðî òèïè äàíèõ, íàïðèêëàä, ðÿäêè òà ö³ë³ ÷èñëà. Êîëè âè ó êîä³ çàäàºòå çíà÷åííÿ àòðèáóòà ôîðìè, âè ïîâèíí³ ïåðåêîíàòèñÿ, ùî âîíî ïðàâèëüíîãî òèïó. Á³ëüøó ÷àñòèíó ïîäîðîæ³ ìè îáãîâîðþâàòèìåìî çì³íí³ òà ¿õ çàñòîñóâàííÿ ó êîä³. Çì³íí³ ó êîä³ âèêîðèñòîâóþòüñÿ äëÿ çáåðåæåííÿ ð³çíîòèïíèõ äàíèõ. Âîíè º öåãëèíàìè, ç ÿêèõ ñêëàäàºòüñÿ êîä. ß ïåðåêîíàíèé, ùî âè øâèäêî çðîçó쳺òå ¿õ ïðèçíà÷åííÿ ³ áóäåòå âèêîðèñòîâóâàòè çì³íí³ òàê ñàìî âïðàâíî, ÿê ³ ìè ç ͳêê³.

Îïåðàòîðè ïðèñâîþâàííÿ Ç Í³êê³ âè ïî÷àëè ïèñàòè ñïðàâä³ êîðèñíèé êîä Visual Basic .NET. Òåïåð âàì â³äîìî, ÿê çà äîïîìîãîþ êîäó ç÷èòóâàòè òà óñòàíîâëþâàòè çíà÷åííÿ àòðèáóò³â. Âàì â³äîìî, ùî êîëè âè çàäàºòå çíà÷åííÿ àòðèáóòà, âè âèêîðèñòîâóºòå îïåðàòîð ïðèñâîþâàííÿ? Ìè âæå ãîâîðèëè ïðî ö³ îïåðàòîðè íà øëÿõó äî Ïñåâäî, Ïåíñ³ëüâàí³ÿ. Îïåðàòîðè ïðèñâîþâàííÿ ïîòð³áí³ äëÿ âñòàíîâëåííÿ ïåâíîãî çíà÷åííÿ äëÿ ïåâíî¿ çì³ííî¿. Êîä îïåðàòîðà ïðèñâîþâàííÿ ïîä³áíèé äî ïðîñòîãî ð³âíÿííÿ: TextBox1.Text = "Ïðàâèëà êîäóâàííÿ" Òåïåð — ïðî ïðàâèëà âèêîðèñòàííÿ îïåðàòîð³â ïðèñâîþâàííÿ. Ïðî ïðèñâîþâàííÿ âàì, ïåðø çà âñå, òðåáà çíàòè, ùî ñïî÷àòêó îá÷èñëþºòüñÿ çíà÷åííÿ âèðàçó, ùî çàïèñàíèé ïðàâîðó÷ â³ä ñèìâîëó =. Ïîò³ì öå çíà÷åííÿ íàäàºòüñÿ çì³íí³é, ùî âêàçàíà ë³âîðó÷ â³ä ñèìâîëó =. Öå í³áèòî çâîðîòí³é ïîðÿäîê, àëå ñàìå òàê ïðàöþº ïðîãðàìà. Ó íàâåäåíîìó íèæ÷å ðÿäêó êîäó ñïî÷àòêó „îá÷èñëþºòüñÿ” ðÿäîê "Ïðàâèëà êîäóâàííÿ", à ïîò³ì àòðèáóòó TextBox1.Text íàäàºòüñÿ îá÷èñëåíå çíà÷åííÿ: TextBox1.Text = "Ïðàâèëà êîäóâàííÿ"

Òèïè Âàì òàêîæ ïîòð³áíî çíàòè, ùî ë³âà ÷àñòèíà îïåðàòîðà ïðèñâîþâàííÿ âèìàãàº, ùîá ïðàâà áóëà ïåâíîãî òèïó (òåêñò, ÷èñëî, êîë³ð òîùî). ß ïîêàæó âàì, ùî ìàþ íà óâàç³, íà ïðèêëàä³ òàêîãî ðÿäêà êîäó: TextBox1.Text = "Îñíîâè ïðàâèë êîäóâàííÿ" Ó ë³â³é ÷àñòèí³ ïðèñâîþâàííÿ — àòðèáóò Text åëåìåíòà TextBox1, ÿêèé ìîæå ìàòè ëèøå òåêñòîâå çíà÷åííÿ, òîìó ó ïðàâ³é ÷àñòèí³ ì³ñòèòüñÿ òåêñò. ßêùî ïðàâà ÷àñòèíà îïåðàòîðà

89


ïðèñâîþâàííÿ áóäå ³íøîãî òèïó (íå òåêñòîâîãî), âèíèêíå ïîìèëêà, êîëè âè ñïðîáóºòå ïîáóäóâàòè ïðîåêò. Îñê³ëüêè "Îñíîâè ïðàâèë êîäóâàííÿ" — öå ñàìå òåêñò, ïîìèëêè íå âèíèêàº. Êîìï³ëÿö³ÿ íàñòóïíîãî ðÿäêà íå áóäå óñï³øíîþ, îñê³ëüêè ìè íàìàãàºìîñÿ íàäàòè òåêñòîâîìó àòðèáóòó Text çíà÷åííÿ àòðèáóòà ForeColor, ÿêå º êîëüîðîì: TextBox1.Text = TextBox1.ForeColor 'âèíèêຠïîìèëêà Íàâåäåíèé íèæ÷å êîä º êîðåêòíèì, îñê³ëüêè ïðàâà ÷àñòèíà º ö³ëèì ÷èñëîì, à àòðèáóòó Height ìîæíà ïðèñâî¿òè ëèøå ö³ëå ÷èñëî: TextBox1.Height = 200 Íàâåäåíèé íèæ÷å êîä íåêîðåêòíèé, îñê³ëüêè ïðàâà ÷àñòèíà îïåðàòîðà ïðèñâîþâàííÿ º äåñÿòêîâèì äðîáîì: TextBox1.Height = 200.5 Ïàì’ÿòàéòå: êîëè âèêîðèñòîâóºòå îïåðàòîð ïðèñâîþâàííÿ, éîãî ïðàâà ÷àñòèíà ïîâèííà áóòè ïðàâèëüíîãî òèïó, òîáòî òèïó, íà ÿêèé î÷³êóº ë³âà ÷àñòèíà.

Ïðèì³òèâí³ òèïè Ñèñòåìà .NET ï³äòðèìóº ïåâíó ê³ëüê³ñòü îñíîâíèõ òèï³â, ùî íàçèâàþòüñÿ ïðèì³òèâíèìè. Âè âæå êîðèñòóâàëèñÿ ðÿäêîâèì òèïîì äëÿ àòðèáóòà Text êíîïêè, ö³ëî÷èñëîâèì òèïîì äëÿ àòðèáóòà Height ôîðìè òà íàâ³òü áóëåâèì (³ñòèííî ÷è õèáíî) òèïîì äëÿ àòðèáóòà Visible òåêñòîâîãî ïîëÿ. Äî ïðèì³òèâíèõ òèï³â, ùî íàé÷àñò³øå âèêîðèñòîâóþòüñÿ, íàëåæàòü: String (òåêñò), Integer (ö³ë³ ÷èñëà), Single (äåñÿòêîâ³ ÷èñëà) òà Boolean (³ñòèííî ÷è õèáíî, àáî True ÷è False). Òàê³ ïðèì³òèâí³ òèïè º ñï³ëüíèìè äëÿ óñ³õ ìîâ ïðîãðàìóâàííÿ .NET, ó òîìó ÷èñë³ äëÿ Visual Basic .NET, C# òà J#. Îñü ïðèêëàäè çíà÷åíü, ÿê³ â³äïîâ³äàþòü êîæíîìó ç öèõ ïðèì³òèâíèõ òèï³â. Òèï

Ïðèêëàä

Ïðèì³òêè

String

"Ïðèâ³ò"

Òåêñò ïîâèíåí áóòè ó ëàïêàõ.

Integer

123

Ö³ë³ ÷èñëà áåç äåñÿòêîâî¿ êðàïêè.

Single

55.12

×èñëà ç äåñÿòêîâîþ êðàïêîþ.

Boolean

True

ª ëèøå äâà çíà÷åííÿ öüîãî òèïó: True òà False.

90


Ïîãëÿíüòå íà ö³ ïðèêëàäè îïåðàòîð³â ïðèñâîþâàííÿ, ùî âèêîðèñòîâóþòü àòðèáóòè ð³çíèõ òèï³â. TextBox1.Text = "Ïîñì³õí³òüñÿ" TextBox1.Visible = True TextBox1.Width = 1000 Îñê³ëüêè C# òà J# — öå òàêîæ ìîâè .NET, âîíè ìàþòü ò³ ñàì³ ïðèì³òèâí³ òèïè, ùî ³ Visual Basic .NET: ö³ë³ ÷èñëà, äåñÿòêîâ³ ÷èñëà, áóëåâèé òèï òîùî.

Ùî òàêå çì³íí³? Ïðè êîäóâàíí³ çì³íí³ âèêîðèñòîâóþòüñÿ äëÿ çáåð³ãàííÿ äàíèõ, ÿê³ ìîæóòü çíàäîáèòèñÿ ï³çí³øå. Çì³íí³ ó ïðîãðàìóâàíí³ ñõîæ³ íà çì³íí³ ó ìàòåìàòèö³. ¯ì íàäàþòüñÿ çíà÷åííÿ òà ¿õ ìîæíà çàñòîñîâóâàòè çàì³ñòü òèõ çíà÷åíü. Íîâ³ çíà÷åííÿ ìîæíà çàäàâàòè çì³ííèì áóäü-êîëè. Îòæå, çì³íí³ çàñòîñîâóþòüñÿ ó ïðîãðàì³ äëÿ „çàïàì’ÿòîâóâàííÿ” äàíèõ. ßêùî ó âàøîìó êîä³ íå áóäóòü âèêîðèñòîâóâàòèñÿ çì³íí³, ïðîãðàì³ äîâåäåòüñÿ çóïèíÿòèñÿ òà ïðîïîíóâàòè êîðèñòóâà÷åâ³ ââîäèòè äàí³ êîæíîãî ðàçó, êîëè âîíè çíàäîáëÿòüñÿ. Óÿâ³ìî, ùî ó ïðîãðàì³ òðè÷³ çãàäóºòüñÿ â³ê êîðèñòóâà÷à! ×è íå áóäå öå äðàòóâàòè, ÿêùî ïðîãðàìà òðè÷³ çóïèíÿòèìåòüñÿ òà ïðîïîíóâàòèìå êîðèñòóâà÷åâ³ ââåñòè ñâ³é â³ê? Ââåä³òü ñâ³é â³ê. Ââåä³òü ñâ³é â³ê. Ââåä³òü ñâ³é â³ê. ßêùî çàñòîñóâàòè çì³ííó, ïðîãðàìà çàïðîïîíóº êîðèñòóâà÷ó ââåñòè ñâ³é â³ê ëèøå îäèí ðàç. Çíà÷åííÿ â³êó áóäå çáåðåæåíî ó çì³íí³é, ÿêà áóäå âèêîðèñòàíà ï³çí³øå, êîëè ïðîãðàì³ çíîâó çíàäîáèòüñÿ â³ê êîðèñòóâà÷à.

Äëÿ ÷îãî âèêîðèñòîâóþòüñÿ çì³íí³? ßê âè ïîáà÷èëè, âèêîðèñòàííÿ çì³ííèõ äîçâîëÿº ñóòòºâî çàîùàäèòè ÷àñ êîðèñòóâà÷à. Çà äîïîìîãîþ çì³ííèõ ìîæíà ñêîðîòèòè îáñÿã äàíèõ, ÿê³ òðåáà ââîäèòè. Çì³íí³ òàêîæ äîïîìàãàþòü çìåíøèòè ê³ëüê³ñòü ïîìèëîê. ßêáè âàì äîâåëîñÿ ââîäèòè äîâã³ ÷èñëà çíîâó é çíîâó, âè á ìîãëè äîïóñòèòèñÿ ïîìèëîê. Îêð³ì çáåð³ãàííÿ ââåäåíèõ êîðèñòóâà÷åì äàíèõ, ó çì³ííèõ º ùå é ³íøå ïðèçíà÷åííÿ. Âîíè âèêîðèñòîâóþòüñÿ äëÿ çáåð³ãàííÿ ðåçóëüòàò³â îá÷èñëåíü; çä³éñíåííÿ ïîð³âíÿíü, ùî âèçíà÷àþòü ïîðÿäîê âèêîíàííÿ êîäó; ï³äðàõóíêó ïåâíèõ ðå÷åé, íàïðèêëàä òîãî, ñê³ëüêè ðàç³â âèêîíàí³ îá÷èñëåííÿ. Âì³ííÿ çáåð³ãàòè äàí³ ó çì³ííèõ — îñíîâíà íàâè÷êà ïðîãðàì³ñòà. Çì³íí³ âèêîðèñòîâóþòüñÿ â óñ³õ ìîâàõ ïðîãðàìóâàííÿ. Âîíè àáñîëþòíî íåîáõ³äí³ äëÿ âèêîíàííÿ îá÷èñëåíü òà óïðàâë³ííÿ ðîáîòîþ ïðîãðàìè.

91


Îãîëîøåííÿ çì³ííèõ Ïåðø, í³æ ïðîãðàìà çìîæå âèêîðèñòîâóâàòè çì³íí³, ¿õ ïîòð³áíî îãîëîñèòè. Îãîëîøåííÿ çì³ííî¿ — öå ðÿäîê êîäó, â ÿêîìó çàçíà÷åíî ³ì’ÿ çì³ííî¿ òà ¿¿ òèï. Ó Visual Basic .NET ïîòð³áíî îãîëîøóâàòè âñ³ çì³íí³. Äî òîãî æ öå êîðèñíî, îñê³ëüêè çìóøóº âàñ çàìèñëèòèñÿ íàä òèì, ÿê áóäå âèêîðèñòîâóâàòèñÿ çì³ííà òà ÿêîãî âîíà áóäå òèïó. Îãîëîøåííÿ çì³ííèõ ïðèñêîðþº êîìï³ëÿö³þ òà ðîáèòü âèêîíàííÿ ïðîãðàìè åôåêòèâí³øèì. Âîíî òàêîæ ïîïåðåäæóº íåïðàâèëüíå íàïèñàííÿ âàìè ³ìåí çì³ííèõ ó êîä³. Ùîá îãîëîñèòè çì³ííó ó Visual Basic .NET, çàñòîñîâóºòüñÿ îïåðàòîð Dim, ùî ìຠòàêèé ñèíòàêñèñ: Dim ²ì’ÿÇì³ííî¿ As ÒèïÇì³ííî¿ Îñü ê³ëüêà ïðèêëàä³â îãîëîøåííÿ çì³ííèõ: Dim MyName As String Dim MyWeight As Integer Dim NoBrainer As Boolean Dim DVDPrice As Single Ïåðøà çì³ííà MyName îãîëîøóºòüñÿ ÿê çì³ííà òèïó String. Òîáòî çì³íí³é MyName ìîæíà íàäàâàòè ëèøå ðÿäêîâ³ çíà÷åííÿ. Äðóãà çì³ííà MyWeight ìຠòèï Integer. Îòæå, ¿é ìîæíà íàäàâàòè ëèøå ö³ë³ ÷èñëà. Çì³íí³é NoBrainer ìîæíà íàäàòè ëèøå çíà÷åííÿ òèïó Boolean, à çì³íí³é DVDPrice — ëèøå çíà÷åííÿ òèïó Single. Ó C# òà J# çì³íí³ îãîëîøóþòüñÿ äåùî ³íàêøå. Ñïî÷àòêó âè çàçíà÷àºòå òèï çì³ííî¿, à ïîò³ì — ¿¿ ³ì’ÿ. Òðîõè â³äð³çíÿþòüñÿ òàêîæ íàçâè òèï³â. Íàïðèêëàä, int âæèâàºòüñÿ çàì³ñòü Integer, à decimal çàì³ñòü Single: int val4; string myName; decimal myBattingAverage;

92


Äå îãîëîøóþòüñÿ çì³íí³ Ó êîä³ Visual Basic .NET âè ìîæåòå îãîëîñèòè ñò³ëüêè çì³ííèõ, ñê³ëüêè ïîòð³áíî. Âîíè ìîæóòü áóòè îãîëîøåí³ ÿê çì³íí³ áóäü-ÿêîãî òèïó, ùî éîãî äîïóñêຠñèñòåìà .NET. Ìè ç ͳêê³ äîòðèìóºìîñÿ ñòàíäàðòíî¿ ïðàêòèêè êîäóâàííÿ. Ìè îãîëîøóºìî óñ³ çì³íí³ íà ïî÷àòêó ïðîãðàìè. Òàêèì ÷èíîì, íàì â³äîìî, äå ¿õ øóêàòè, òà ëåãêî ïîáà÷èòè, ÿêîãî âîíè òèïó. Öèì ìè òàêîæ çàáåçïå÷óºìî àêóðàòí³ñòü òà âïîðÿäêîâàí³ñòü êîäó. ßêùî ï³ä ÷àñ íàïèñàííÿ ïðîãðàìè íàì ïîòð³áíî ñòâîðèòè ùå îäíó çì³ííó, ìè ïîâåðòàºìîñÿ äî ïî÷àòêó êîäó òà îãîëîøóºìî ¿¿ ðàçîì ç ³íøèìè. Ìè íå îãîëîøóºìî íîâèõ çì³ííèõ ïîñåðåäèí³ êîäó. Âè ìîæåòå îãîëîñèòè çì³íí³ òàê, ùîá âîíè áóëè ÷è òî ãëîáàëüíèìè, ÷è òî ëîêàëüíèìè. Äîñ³ óâåñü êîä ïèñàâñÿ â îáðîáíèêàõ ïîä³é, íàïðèêëàä, â îáðîáíèêó ïî䳿 êëàöàííÿ íà êíîïö³. Óñ³ çì³íí³, ÿê³ ìè îãîëîøóâàëè ó êîä³ îáðîáíèê³â ïîä³é, áóëè ëîêàëüíèìè. Ëîêàëüí³ çì³íí³ ìîæóòü ç÷èòóâàòèñÿ àáî çì³íþâàòèñÿ ëèøå òèì îáðîáíèêîì ïî䳿, ó ÿêîìó âîíè îãîëîøåí³. Äî íèõ íå ìîæóòü îòðèìóâàòè äîñòóï îáðîáíèêè ³íøèõ ïîä³é àáî êîä ç ³íøèõ ôîðì. Çíà÷åííÿ ëîêàëüíèõ çì³ííèõ çáåð³ãàþòüñÿ ëèøå äîòè, äîêè âèêîíóºòüñÿ êîä îáðîáíèêà ïî䳿. ϳñëÿ çàâåðøåííÿ éîãî âèêîíàííÿ çíà÷åííÿ ëîêàëüíèõ çì³ííèõ âòðà÷àþòüñÿ. Ïðèêëàäîì ëîêàëüíî¿ çì³ííî¿ ìîæå áóòè çì³ííà, îãîëîøåíà ó ïî䳿 êëàöàííÿ íà êíîïö³. Äëÿ îãîëîøåííÿ ëîêàëüíèõ çì³ííèõ îïåðàòîð Dim ïîì³ùóºòüñÿ âñåðåäèíó îáðîáíèêà ïî䳿. Çì³ííà, ùî âèêîðèñòîâóºòüñÿ îáðîáíèêîì ïî䳿, ïîâèííà áóòè îãîëîøåíà íà ïî÷àòêó éîãî êîäó, ïåðåä áóäü-ÿêèìè ³íøèìè îïåðàòîðàìè. Íàïðèêëàä: Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim MyName As String MyName = "Á³ëë" TextBox1.Text = MyName End Sub Äîñ³ ìè íå êîðèñòóâàëèñÿ ãëîáàëüíèìè çì³ííèìè. Äî ãëîáàëüíî¿ çì³ííî¿ ìîæå îòðèìàòè äîñòóï áóäü-ÿêèé îáðîáíèê ïîä³é òà óâåñü êîä ïåâíî¿ ôîðìè. Çíà÷åííÿ ãëîáàëüíèõ çì³ííèõ çáåð³ãàþòüñÿ äîòè, äîêè â³äêðèòî ôîðìó. Ïðèêëàäîì ãëîáàëüíî¿ çì³ííî¿ º ë³÷èëüíèê, ùî â³äñòåæóº çàãàëüíó ê³ëüê³ñòü êëàöàíü íà óñ³õ êíîïêàõ ôîðìè. Ùîá îãîëîñèòè ãëîáàëüíó çì³ííó, ÿêó ìîæíà áóäå âèêîðèñòàòè â öüîìó êîä³ ôîðìè, ïîòð³áíî âñòàâèòè îïåðàòîð Dim äî ò³ëà êîäó ôîðìè. Íàéêðàùå îãîëîøóâàòè çì³íí³ ó êîä³ ôîðìè îäðàçó ï³ñëÿ òàêîãî ðÿäêà êîäó: Windows Form Designer generated code

93


Öåé ðÿäîê êîäó îáðàìëåíèé ïðÿìîêóòíèêîì, à ë³âîðó÷ â³ä íüîãî ðîçòàøîâàíèé çíàê +. Îãîëîøóéòå çì³íí³ îäðàçó ï³ñëÿ öüîãî ðÿäêà. Ïîãëÿíüìî íà ïðèêëàä: Windows Form Designer generated code Dim TotalButtonClicks As Single Çì³ííà TotalButtonClicks º ãëîáàëüíîþ. ¯¿ çíà÷åííÿ ìîæå áóòè ç÷èòàíå òà çàäàíå â öüîìó êîä³ ôîðìè, çîêðåìà â êîä³ îáðîáíèê³â ïîä³é. ßêùî âè îãîëîñèòå âñ³ çì³íí³ íà ïî÷àòêó êîäó ôîðìè, âîíè áóäóòü ãëîáàëüíèìè. ¯õ çíà÷åííÿ çìîæóòü ç÷èòóâàòè àáî çàäàâàòè âñ³ îïåðàòîðè ôîðìè òà îáðîáíèê³â ïîä³é, ïîâ’ÿçàíèõ ç ¿¿ âèêîðèñòàííÿì.

Âïðàâà 6.1. ×èñëî p Ìåí³ ö³êàâî, ÿê ó ð³çíèõ ôîðìàòàõ ìîæå âèãëÿäàòè ÷èñëî p. Ñòâîð³òü òàêó ôîðìó.

Ó êîä³ ïî䳿 êëàöàííÿ íà êíîïö³ âèçíà÷òå çì³íí³ òàêèõ òèï³â: l

Integer;

l

Single;

l

Double;

l

String.

Íàäàéòå çíà÷åííÿ ÷èñëà p êîæí³é çì³íí³é, âèêîðèñòîâóþ÷è âáóäîâàíèé êàëüêóëÿòîð Visual Basic: Math.PI Ïðîñòî íàäàéòå Math.PI êîæí³é çì³íí³é. Ïðèñâîéòå êîæíó çì³ííó â³äïîâ³äíîìó òåêñòîâîìó ïîëþ. Êîëè ïðîãðàìà çàïðàöþº ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðîâ³.

94


²í³ö³àë³çàö³ÿ çì³ííèõ Êîëè çì³ííó îãîëîøåíî, âè ìîæåòå âèêîðèñòîâóâàòè ¿¿ â êîä³. Ïåðø çà âñå, ó êîä³ ïîòð³áíî íàäàòè çì³íí³é ïî÷àòêîâå çíà÷åííÿ. Íèì ìîæå ñòàòè áóäü-ÿêå çíà÷åííÿ â³äïîâ³äíîãî òèïó (òîáòî òîãî, ÿêèé ìຠñàìà çì³ííà). Äëÿ òîãî, ùîá íàäàòè çì³íí³é çíà÷åííÿ, âèêîðèñòîâóºòüñÿ îïåðàòîð ïðèñâîþâàííÿ. Çâåðí³ìîñÿ äî ïðèêëàä³â. Dim MyName As String MyName = "Ïîë Áóíüîí" Dim MyWeight As Integer MyWeight = 128 Dim DrivingDistance As Single DrivingDistance = 12.8 Çì³ííà MyName îãîëîøóºòüñÿ ÿê çì³ííà òèïó String ³ ¿é íàäàºòüñÿ ðÿäîê "Paul Bunion". Äëÿ çì³ííî¿ MyWeight îáðàíî òèï Integer, òîìó ¿é íàäàºòüñÿ ö³ëå ÷èñëî 128, à çì³íí³é DrivingDistance òèïó Single íàäàºòüñÿ äåñÿòêîâèé äð³á 12.8. Äóæå çðó÷íî ïîºäíóâàòè îãîëîøåííÿ çì³ííî¿ ç ¿¿ ³í³ö³àë³çàö³ºþ. Îãîëîøóþ÷è çì³ííó òà çàäàþ÷è ¿¿ ïî÷àòêîâå çíà÷åííÿ â îäíîìó ðÿäêó êîäó, âè ãàðàíòóºòå, ùî çì³ííà ì³ñòèòèìå ïåâíå çíà÷åííÿ. Âèêîðèñòàííÿ çì³ííî¿, ÿê³é íå áóëî ïðèñâîºíî ïî÷àòêîâîãî çíà÷åííÿ, ìîæå ïðèçâåñòè äî çáîþ ïðîãðàìè. Dim MyAge As Integer = 100 ²í³ö³àë³çàö³ÿ çì³ííî¿ òà íàäàííÿ ¿é çíà÷åííÿ ó C# òà J# âèêîíóºòüñÿ òàê: int myOrbit; myOrbit=123000;

Çàñòîñóâàííÿ çì³ííèõ Îãîëîñèâøè çì³ííó òà óñòàíîâèâøè ¿¿ ïî÷àòêîâå çíà÷åííÿ, âè ìîæåòå âèêîðèñòàòè çíà÷åííÿ, ùî ó í³é çáåð³ãàºòüñÿ, òàì, äå çàõî÷åòå. Ðîçãëÿíåìî ïðèêëàäè. Dim MyName As String MyName = "Äæî Êîêåð" MessageBox.Show(MyName) ßê âè ãàäàºòå, ùî áóäå â³äîáðàæàòèñÿ ó â³êí³ ïîâ³äîìëåííÿ? Çâè÷àéíî, Äæî Êîêåð! Dim MyName As String MyName = "ϳòåð, Ïîë òà Ìåð³" TextBox1.Text = MyName Âè ìîæåòå çì³íèòè çíà÷åííÿ çì³ííî¿, âèêîðèñòàâøè äîäàòêîâ³ îïåðàòîðè ïðèñâîþâàííÿ: Dim MyName As String MyName = "Á³ëë" MyName = "Áîá" MyName = "Áåí" TextBox1.Text = MyName

95


ßêå ³ì’ÿ â³äîáðàæàòèìåòüñÿ ó òåêñòîâîìó ïîë³ TextBox1? Ïðàâèëüíà â³äïîâ³äü — Áåí. Çì³íí³é MyName íàäàºòüñÿ çíà÷åííÿ "Á³ëë", ïîò³ì "Áîá" ³, íàðåøò³, "Áåí". Îñê³ëüêè îñòàííº çíà÷åííÿ, ïðèñâîºíå çì³íí³é MyName, — "Áåí", ñàìå âîíî ³ ç’ÿâèòüñÿ ó ïîë³ TextBox1. Âè ìîæåòå íàäàòè çíà÷åííÿ îäíî¿ çì³ííî¿ ³íø³é. Dim MyName As String Dim YourName As String MyName = "Àëåí óíñáåðã" YourName = MyName MessageBox.Show(YourName) Ó â³êí³ ïîâ³äîìëåííÿ ç’ÿâèòüñÿ ³ì’ÿ Àëåí óíñáåðã. Îñü òîé ñàìèé êîä ìîâîþ J# àáî C#. Âè ìîæåòå ïîáà÷èòè ÿê ñï³ëüí³ ðèñè, òàê ³ â³äì³ííîñò³. Áà÷èòå, ÿê ìè îãîëîøóºìî çì³íí³ — òðîõè íå òàê, ÿê ó Visual Basic. NET. string myName; string YourName; myName = "Àëåí óíñáåðã"; YourName = myName; MessageBox.Show(YourName); Ó íèæ÷åíàâåäåíîìó ïðèêëàä³ ïðèïóùåíî ïîìèëêó, îñê³ëüêè ìè íàìàãàºìîñÿ íàäàòè çì³íí³é îäíîãî òèïó çíà÷åííÿ çì³ííî¿ ³íøîãî òèïó. Òàêèé êîä íå áóäå êîìï³ëþâàòèñÿ. Dim MyName As String Dim DVDPrice As Single MyName = "Ïîë Áóíüîí" DVDPrice = MyName Ïàì’ÿòàéòå: âè îãîëîøóºòå çì³íí³ ïåâíîãî òèïó. ¯ì ìîæíà íàäàâàòè ëèøå çíà÷åííÿ òîãî æ òèïó.

Ðîçïî÷èíàºìî ðîáîòó ç³ çì³ííèìè ß ðîçïîâ³â âàì ïðî òèïè çì³ííèõ, ïðî ¿õ âèêîðèñòàííÿ òà ïðî òå, ÿê ¿õ îãîëîøóâàòè. Ùî ùå? Äàâàéòå íàïèøåìî ïðîãðàìó ç âèêîðèñòàííÿì çì³ííèõ! Ñòâîð³òü íîâó Windows-ïðîãðàìó ó ñåðåäîâèù³ Visual Studio .NET. Íàçâ³òü ïðîãðàìó ShowXY. ³äêðèéòå â³êíî Toolbox, äîäàéòå êíîïêó òà äâà òåêñòîâèõ ïîëÿ äî ôîðìè Form1. Âèäàë³òü çíà÷åííÿ àòðèáóòà Text òåêñòîâèõ ïîë³â TextBox1 òà TextBox2. Íàäàéòå àòðèáóòó

96


Text êíîïêè Button1 çíà÷åííÿ — "Ïîêàçàòè XY", à àòðèáóòàì ReadOnly òåêñòîâèõ ïîë³â TextBox1 òà TextBox2 çíà÷åííÿ True. Äâ³÷³ êëàöí³òü íà êíîïö³ Button1, ùîá â³äðåäàãóâàòè êîä îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³. Ââåä³òü òàê³ ðÿäêè êîäó. Dim XName As String Dim YName As String XName = "X — öå ìîº ³ì’ÿ" YName = "Y — öå ìîº ³ì’ÿ" TextBox1.Text = XName TextBox2.Text = YName Ïîáóäóéòå ïðîãðàìó òà çàïóñò³òü ¿¿. Êëàöí³òü íà êíîïö³ Ïîêàçàòè XY. Ó ïðîãðàì³ îãîëîøóþòüñÿ äâ³ ðÿäêîâèõ çì³ííèõ: XName òà YName. Öèì çì³ííèì íàäàþòüñÿ ðÿäêè òåêñòó (âçÿò³ â ëàïêè). Àòðèáóòó Text òåêñòîâîãî ïîëÿ TextBox1 íàäàºòüñÿ çíà÷åííÿ, ùî çáåð³ãàºòüñÿ ó çì³íí³é XName. Àòðèáóòó Text òåêñòîâîãî ïîëÿ TextBox2 ïðèñâîþºòüñÿ çíà÷åííÿ, ùî çáåð³ãàºòüñÿ ó çì³íí³é YName. Ñïðîáóéòå çì³íèòè çíà÷åííÿ çì³ííèõ XName ³ YName òà çíîâó çàïóñòèòè ïðîãðàìó. Òåïåð ìîäèô³êóºìî öþ ïðîãðàìó. Äîäàìî òðåòº òåêñòîâå ïîëå. Âèäàë³òü çíà÷åííÿ àòðèáóòà Text òåêñòîâîãî ïîëÿ TextBox3. Àòðèáóòó ReadOnly òåêñòîâîãî ïîëÿ TextBox3 íàäàéòå çíà÷åííÿ False. Äâ³÷³ êëàöí³òü íà êíîïö³ Button1, ùîá â³äðåäàãóâàòè êîä ïî䳿 êëàöàííÿ íà êíîïö³. Çì³í³òü êîä òàê, ùîá â³í íàáóâ òàêîãî âèãëÿäó: Dim XName As String Dim YName As String Dim ZName As String ZName = TextBox3.Text XName = ZName YName = XName TextBox1.Text = XName TextBox2.Text = YName Ïîáóäóéòå ïðîãðàìó òà çàïóñò³òü ¿¿. Êëàöí³òü íà êíîïö³ Ïîêàçàòè XY. Ùî ñòàëîñÿ? Ó êîä³ îãîëîøóþòüñÿ òðè ðÿäêîâèõ çì³ííèõ: XName, YName òà ZName. Çì³íí³é ZName ïðèñâîþºòüñÿ çíà÷åííÿ àòðèáóòà Text òåêñòîâîãî ïîëÿ TextBox3. Çì³íí³é XName íàäàºòüñÿ çíà÷åííÿ çì³ííî¿ ZName (ÿê³é áóëî ñïî÷àòêó ïðèñâîºíî çíà÷åííÿ àòðèáóòà Text òåêñòîâîãî ïîëÿ TextBox3). Çì³íí³é YName íàäàºòüñÿ çíà÷åííÿ çì³ííî¿ Xname (ÿê³é ùîéíî áóëî ïðèñâîºíî çíà÷åííÿ çì³ííî¿ ZName). Ïîò³ì àòðèáóòó Text òåêñòîâîãî ïîëÿ TextBox1 ïðèñâîþºòüñÿ çíà÷åííÿ çì³ííî¿ XName, à àòðèáóòó Text òåêñòîâîãî ïîëÿ TextBox2 íàäàºòüñÿ

97


çíà÷åííÿ çì³ííî¿ YName. Ó öüîìó ïðèêëàä³ ïîêàçàíî, ÿê íàäàâàòè çíà÷åííÿ îäí³º¿ çì³ííî¿ ³íø³é. Íàâåäåìî ïðèêëàä âèêîðèñòàííÿ ãëîáàëüíèõ çì³ííèõ. Ñòâîð³òü íîâó ïðîãðàìó, ùî íàçèâàºòüñÿ TotalButtonClicks (Óñüîãî êëàöàíü íà êíîïêàõ). Äîäàéòå òðè êíîïêè äî ôîðìè Form1. Ó â³êí³ êîäó çíàéä³òü òàêèé ðÿäîê: Windows Form Designer generated code ϳñëÿ íüîãî äîäàéòå òàêèé ðÿäîê: Dim TotalButtonClicks As Integer Äâ³÷³ êëàöí³òü íà êíîïö³ Button1 òà äîäàéòå äî îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ òàêèé êîä: TotalButtonClicks = TotalButtonClicks + 1 MessageBox.Show(TotalButtonClicks) Äîäàéòå òîé ñàìèé êîä äî îáðîáíèê³â ïîä³é êëàöàííÿ íà êíîïêàõ Button2 òà Button3. Ïîáóäóéòå ïðîãðàìó òà çàïóñò³òü ¿¿. Êëàöí³òü íà óñ³õ òðüîõ êíîïêàõ ïî ÷åðç³. Êîæíîãî ðàçó çàãàëüíà ê³ëüê³ñòü êëàöàíü íà êíîïêàõ âèâîäèòèìåòüñÿ ó â³êí³ ïîâ³äîìëåííÿ. Öåé êîä ïðàöþº òîìó, ùî ìè îãîëîñèëè ãëîáàëüíó çì³ííó TotalButtonClicks ó êîä³ ôîðìè. Ãëîáàëüíà çì³ííà âèêîðèñòîâóºòüñÿ äëÿ çáåðåæåííÿ çàãàëüíî¿ ê³ëüêîñò³ êëàöàíü íà êíîïêàõ ôîðìè. Êîæíîãî ðàçó, êîëè êîðèñòóâà÷ êëàöຠíà êíîïö³, çíà÷åííÿ, ùî çáåð³ãàºòüñÿ ó çì³íí³é TotalButtonClicks, çá³ëüøóºòüñÿ íà îäèíèöþ. Çíà÷åííÿ ãëîáàëüíî¿ çì³ííî¿ íå âòðà÷àºòüñÿ, äîêè íå áóäå çàêðèòî ôîðìó.

²íø³ òèïè çì³ííèõ Ó ìîâ³ Visual Basic .NET âè ìîæåòå îãîëîøóâàòè çì³íí³ íå ëèøå ïðèì³òèâíèõ òèï³â (äî ÿêèõ íàëåæàòü String, Integer, Boolean, Single òîùî). ²íø³ òèïè º âáóäîâàíèìè äî ñèñòåìè .NET, òà ¿õ ìîæíà âèêîðèñòîâóâàòè â óñ³õ ìîâàõ .NET. Áàãàòî ç íèõ º àòðèáóòàìè ñèñòåìíèõ êëàñ³â. Ñèñòåìí³ êëàñè ì³ñòÿòü êîä, ùî çàáåçïå÷óº îñíîâí³ ôóíêö³îíàëüí³ ìîæëèâîñò³ ìîâ .NET. Îäíèì ç íàéâàæëèâ³øèõ åòàï³â íàâ÷àííÿ ïðîãðàìóâàííÿ îäí³ºþ ç ìîâ .NET º âèâ÷åííÿ ñèñòåìíèõ êëàñ³â òà ¿õ ôóíêö³îíàëüíîãî ïðèçíà÷åííÿ. Âàì íå äîâåäåòüñÿ âèâ÷àòè ñèñòåìí³ êëàñè ñàìå çàðàç. Òðîõè çãîäîì ìè äàìî âàì êîä, ó ÿêîìó âèêîðèñòîâóþòüñÿ àòðèáóòè àáî ìåòîäè ñèñòåìíèõ êëàñ³â, òîæ áóëî á äîáðå, ÿêáè âè çìîãëè ¿õ ðîçï³çíàòè. Çàðàç ÿ íàâåäó ïðèêëàä çàñòîñóâàííÿ ñèñòåìíèõ êëàñ³â äëÿ âèçíà÷åííÿ ôîíîâîãî êîëüîðó ôîðìè. ³äêðèéòå ïðîãðàìó ShowXY òà äîäàéòå äðóãó êíîïêó äî ôîðìè Form1. Çì³í³òü çíà÷åííÿ àòðèáóòà Text êíîïêè Button2 íà "Color". Äâ³÷³ êëàöí³òü íà êíîïö³ Button2, ùîá â³äðåäàãóâàòè êîä ïî䳿 êëàöàííÿ íà êíîïö³. Äîäàéòå òàêèé êîä: Dim MyColor As System.Drawing.Color MyColor = System.Drawing.Color.Blue Form1.ActiveForm.BackColor = MyColor

98


Ïîáóäóéòå ïðîãðàìó òà çàïóñò³òü ¿¿. Êëàöí³òü íà êíîïö³ Color. Îöå òàê! Ó êîä³ îãîëîøóºòüñÿ çì³ííà MyColor òèïó System.Drawing.Color. Çì³íí³é MyColor áóëî íàäàíå çíà÷åííÿ System.Drawing.Color.Blue, ùî º îäíèì ³ç äîïóñòèìèõ çíà÷åíü òèïó System.Drawing.Color. ϳñëÿ öüîãî àòðèáóòó BackColor ôîðìè Form1 áóëî ïðèñâîºíå çíà÷åííÿ MyColor. Çàóâàæòå, ùî àòðèáóòó BackColor ïîâèííî ïðèñâîþâàòèñÿ çíà÷åííÿ òèïó System.Drawing.Color. Âè ìîæåòå ñàìîñò³éíî âèâ÷èòè ñèñòåìí³ êëàñè. Íàéêðàùå äëÿ öüîãî ââåñòè System. (êðàïêà) ó â³êí³ êîäó. IntelliSense â³äîáðàçèòü ñïèñîê óñ³õ àòðèáóò³â òà ìåòîä³â êëàñó System. Âèáåð³òü àòðèáóò àáî ìåòîä òà ââåä³òü ùå îäíó êðàïêó, ùîá ïîáà÷èòè, ÷è º ó íüîãî ñâî¿ àòðèáóòè òà ìåòîäè. Âàì äîâåäåòüñÿ áàãàòî ÷îãî âèâ÷èòè.

Ïðèáóòòÿ äî XY Íàðåøò³ ìè ä³ñòàëèñÿ XY! Çàðàç ÿ çíàéäó êèøåíüêîâèé êîìï’þòåð, ³ âè çìîæåòå âèêîíàòè âïðàâè. ϳñëÿ öüîãî âèêîíàéòå òåñò, ³ ìè îòðèìàºìî îö³íêó â ùîäåííèêó ðàë³. Òåïåð, êîëè âè âæå çíàºòå ïðî çì³íí³, âè äîïîìîæåòå íàì ³ç çàâäàííÿì ðàë³.

Âïðàâà 6.2. Ñòðèáîê æàáè Ñòàâîê ³ç æàáàìè, ÿêèé ìè ïîáà÷èëè öüîãî ðàíêó, íàäèõíóâ íàñ íà íàïèñàííÿ ïðîãðàìè LeapFrog (Ñòðèáîê æàáè).

Ñòâîð³òü ôîðìó òàêîãî âèãëÿäó, ÿê çîáðàæåíî íà ìàëþíêó, àáî âèêîðèñòàéòå ãîòîâèé øàáëîí ç ïàïêè.

Ïðèñâîéòå ðÿäîê "Æàáà1" àòðèáóòó TextBox1.Text, à ðÿäîê "Æàáà2" — àòðèáóòó TextBox2.Text. Êîëè êîðèñòóâà÷ êëàöຠíà êíîïö³ Ñòðèáíóòè, âì³ñò òåêñòîâîãî ïîëÿ íàä êíîïêîþ íàäàºòüñÿ ïîëþ, ùî ðîçòàøîâàíå íà äâà ïîëÿ ïðàâ³øå. Íå çàáóäüòå î÷èñòèòè ïîòî÷íå ïîëå. Êîëè ïðîãðàìà çàïðàöþº ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðó.

99


Çàâäàííÿ 6. Âèïðàâëåííÿ ïîìèëîê Âèêîíóþ÷è öå çàâäàííÿ, âè øóêàòèìåòå ïîìèëêè ó ïðîãðàì³. Ó êîæíîìó ðÿäêó êîäó ïðîãðàìè, ÿêà çàïèñàíà â ïàïö³ Çàâäàííÿ_6, º ïîìèëêà.  ö³ëîìó òàêèõ ïîìèëîê äåñÿòü. Âàøå çàâäàííÿ ïîëÿãຠó âèïðàâëåíí³ êîæíî¿ ïîìèëêè, ùîá ïðîãðàìó ìîæíà áóëî ïîáóäóâàòè òà âèêîíàòè. Âè ìîæåòå íàáðàòè êîä ñàìîñò³éíî, ÿêùî çàïðîïîíîâàíèé âàð³àíò º çîâñ³ì íåäîðå÷íèì. ³äêðèéòå ôàéë splat.sln. Âèïðàâòå ïîìèëêè. Êîëè ïðîãðàìà ïðàöþâàòèìå ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðó.

Äîäàòêîâå çàâäàííÿ Õòî òàêèé ì³ñòåð Ãðåéñ Õîïïåð? ×îìó ìè çàäàºìî öå ïèòàííÿ ó çàâäàíí³?

100


Ìîäóëü 7. Îïåðàö, Îêëàõîìà


Îïåðàö, Îêëàõîìà Ìè ãîòîâ³ âèðóøàòè. Íàñòóïíà çóïèíêà — Îïåðàö, Îêëàõîìà. Êë³ô âæå íàâ÷èâ âàñ êîðèñòóâàòèñÿ çì³ííèìè òà ïðèñâîþâàòè ¿ì çíà÷åííÿ. Íàì çàëèøàºòüñÿ âèâ÷èòè ùå äåê³ëüêà îñíîâíèõ ³íñòðóìåíò³â ïðîãðàìóâàííÿ. Íà øëÿõó äî ì³ñòà Îïåðàö ÿ ðîçïîâ³ì âàì ïðî îïåðàö³¿. Âèêîðèñòàííÿ îïåðàö³é — öå îäèí ç îñíîâíèõ ³íñòðóìåíò³â ïðîãðàìóâàííÿ. Êîëè âè íàâ÷èòåñÿ âèêîðèñòîâóâàòè îïåðàö³¿ ó Visual Basic .NET, âè çìîæåòå çðîáèòè öå ó áóäü-ÿê³é ìîâ³ ïðîãðàìóâàííÿ. Çàñòîñîâóâàòè îïåðàö³¿ äóæå ëåãêî! Êîëè ìè íàáëèçèìîñÿ äî Îïåðàöó, ÿ ïîêàæó âàì, ÿê âèêîðèñòîâóâàòè äåÿê³ ³íñòðóìåíòè íàëàãîäæåííÿ, ùî º ÷àñòèíîþ Visual Studio .NET. Âîíè äîïîìîæóòü âàì óíèêàòè ïîìèëîê ïðè êîäóâàíí³, ùîá ïðîãðàìà êîìï³ëþâàëàñü êîæíîãî ðàçó!

Îïåðàö³¿ Îïåðàö³¿ äóæå ëåãêî âèêîðèñòîâóâàòè. Ïðèêëàäàìè îïåðàö³é º äîäàâàííÿ, â³äí³ìàííÿ, ìíîæåííÿ òà ä³ëåííÿ. Âè êîðèñòóºòåñÿ íèìè ç ïåðøîãî êëàñó. Ó ìîâàõ ïðîãðàìóâàííÿ ³ñíóþòü òàêîæ ³íø³ îïåðàö³¿. Çîêðåìà, öå îïåðàö³¿, ïðèçíà÷åí³ äëÿ âèêîíàííÿ ñêëàäíèõ ìàòåìàòè÷íèõ îá÷èñëåíü òà ïîºäíàííÿ ðÿäê³â òåêñòó. Îïåðàö³¿ çâè÷àéíî âèêîíóþòüñÿ íàä äâîìà çíà÷åííÿìè, õî÷à äåÿê³ — ëèøå íàä îäíèì. Çíà÷åííÿ íàçèâàþòüñÿ îïåðàíäàìè. Îñü îñíîâíèé ñèíòàêñèñ çàñòîñóâàííÿ îïåðàö³é: îïåðàíä1 îïåðàö³ÿ îïåðàíä2 Íàïðèêëàä, 3+4 Ó âèðàç³ 3 + 4 — äâà îïåðàíäè (3 òà 4), ùî 璺äíóþòüñÿ îïåðàö³ºþ (+). ²íàêøå êàæó÷è, îïåðàö³ÿ (ó öüîìó âèïàäêó äîäàâàííÿ) âèêîíóºòüñÿ íàä äâîìà îïåðàíäàìè (3 òà 4). Ïðàöþâàòè ç îïåðàö³ÿìè ëåãêî òà ö³êàâî! Âèêîðèñòîâóþ÷è ¿õ, âè ìîæåòå áóäóâàòè ñêëàäí³ îïåðàòîðè ïðèñâîþâàííÿ. Ïî÷íåìî ç ðîçãëÿäó àðèôìåòè÷íèõ îïåðàö³é: äîäàâàííÿ, â³äí³ìàííÿ, ìíîæåííÿ òà ä³ëåííÿ. Ïîò³ì ÿ ïîêàæó, ÿê 璺äíóâàòè òåêñòîâ³ ðÿäêè, ³ ìè ðîçãëÿíåìî ñïåö³àëüíó îïåðàö³þ NOT.

Àðèôìåòè÷í³ îïåðàö³¿ Ìàòåìàòè÷í³ ïðàâèëà! Ìåí³ ïîäîáàºòüñÿ ìàòåìàòèêà. ß á çàëþáêè ðîçâ’ÿçóâàëà ìàòåìàòè÷í³ çàäà÷³ ö³ëèìè äíÿìè, àëå ³íêîëè ÿ âòîìëþþñÿ òà ïî÷èíàþ ðîáèòè ïîìèëêè. Êîìï’þòåðí³ ïðîãðàìè ÷óäîâî ñïðàâëÿþòüñÿ ç ìàòåìàòè÷íèìè çàäà÷àìè. Âîíè íå äîïóñêàþòü ïîìèëîê ó äîäàâàíí³ òà í³êîëè íå âòîìëþþòüñÿ âèêîíóâàòè òó ñàìó îïåðàö³þ çíîâó é çíîâ. ×è öå çâó÷èòü íåïðàâäîïîä³áíî? ³äâåðòî êàæó÷è, º íåâåëè÷êà ïðîáëåìà. Õî÷à ïðîãðàìè ÷óäîâî

103


ñïðàâëÿþòüñÿ ç â³äíàéäåííÿì â³äïîâ³äåé, âîíè íå ìîæóòü ñòàâèòè çàäà÷³. Öå âàøå çàâäàííÿ, ÿê ïðîãðàì³ñòà. Òîìó âàæëèâî, ùîá âè çðîçóì³ëè, ÿê âèêîðèñòîâóâàòè àðèôìåòè÷í³ îïåðàö³¿ ó êîä³. Çà ¿õ äîïîìîãîþ âè ïîâ³äîìëÿòèìåòå ïðîãðàì³, ÿê³ ìàòåìàòè÷í³ ïðîáëåìè õî÷åòå âèð³øèòè. Óñ³ ìîâè ïðîãðàìóâàííÿ çàáåçïå÷åí³ ñòàíäàðòíèì íàáîðîì àðèôìåòè÷íèõ îïåðàö³é. Îñê³ëüêè ö³ îïåðàö³¿ äóæå ÷àñòî çóñòð³÷àþòüñÿ, ñèìâîëè, ùî âèêîðèñòîâóþòüñÿ äëÿ ¿õ â³äîáðàæåííÿ ó êîä³, ìàéæå îäíàêîâ³ â óñ³õ ìîâàõ ïðîãðàìóâàííÿ. Öå ñïðîùóº ðîáîòó ç îïåðàö³ÿìè. Îñü ñïèñîê àðèôìåòè÷íèõ îïåðàö³é, ÿê³ íàé÷àñò³øå çàñòîñîâóþòüñÿ, ñèìâîë³â, ùî âè çàçâè÷àé âèêîðèñòîâóºòå äëÿ ¿õ ïîçíà÷åííÿ, à òàêîæ ñèìâîë³â, ùî âèêîðèñòîâóþòüñÿ ó ïðîãðàìóâàíí³. Âîíè â³äð³çíÿþòüñÿ ëèøå äëÿ îïåðàö³¿ ìíîæåííÿ. Ó êîä³ äëÿ íå¿ âèêîðèñòîâóºòüñÿ ñèìâîë * çàì³ñòü ´. Îïåðàö³ÿ

Çâè÷àéíèé ñèìâîë

Ñèìâîë ó êîä³

Äîäàâàííÿ

+

+

³äí³ìàííÿ

–

–

Ìíîæåííÿ

´

*

ijëåííÿ

/

/

Ïîãëÿíüìî íà ê³ëüêà ïðèêëàä³â çàñòîñóâàííÿ àðèôìåòè÷íèõ îïåðàö³é ó êîä³: l

3 + 4;

l

18 – 2;

l

33 * 3;

l

66 / 6.

Ó ìîâàõ C# òà J# âèêîðèñòîâóþòüñÿ ò³ æ îïåðàö³¿, ùî ³ ó Visual Basic .NET, òîáòî +, –, * òà / äëÿ äîäàâàííÿ, â³äí³ìàííÿ, ìíîæåííÿ òà ä³ëåííÿ â³äïîâ³äíî.

Ðÿäêîâ³ îïåðàö³¿ Íå âñ³ ïðîãðàìè, ÿê³ âè ñòâîðþâàòèìåòå, áóäóòü âèêîíóâàòè îá÷èñëåííÿ. ²íîä³ ïðîãðàì³ ïîòð³áíî ëèøå îáðîáëÿòè òåêñòîâ³ ðÿäêè. Âàì â³äîìî, ùî ó Visual Basic .NET òà ³íøèõ ìîâàõ ïðîãðàìóâàííÿ âè ìîæåòå „äîäàâàòè” òåêñò? Òàêå äîäàâàííÿ íå ñõîæå íà çâè÷àéíå äîäàâàííÿ ÷èñåë. „Äîäàâàííÿ” òåêñòó íàçèâàºòüñÿ êîíêàòåíàö³ºþ. Öå ëèøå ÷óäåðíàöüêà íàçâà îïåðàö³¿ îᒺäíàííÿ äâîõ ðÿäê³â. Ó Visual Basic .NET ñèìâîëîì îïåðàö³¿ êîíêàòåíàö³¿ º çíàê &. Êîíêàòåíàö³ÿ çàñòîñîâóºòüñÿ òàê ñàìî, ÿê ³ îïåðàö³ÿ äîäàâàííÿ, àëå ç ðÿäêàìè çàì³ñòü ÷èñåë. Îñü ê³ëüêà ïðèêëàä³â: "Á³ëë" & "Ìàéê" "1" & "2"

104


Ó C# òà J# äëÿ îᒺäíàííÿ äâîõ ðÿäê³â çàì³ñòü çíàêà & âèêîðèñòîâóºòüñÿ çíàê ïëþñ (+). ³çüìåìî òàêèé ðÿäîê êîäó: fullName = "Á³ëë " + "Áîá";

Îïåðàö³ÿ Not Îïåðàö³ÿ Not ïðàöþº ëèøå ç îäíèì îïåðàíäîì. Êð³ì òîãî, öåé îïåðàíä ïîâèíåí áóòè áóëåâîãî òèïó (ìàòè çíà÷åííÿ True àáî False). Îïåðàö³ÿ Not çì³íþº çíà÷åííÿ False íà True, à True íà False. Ïîãëÿíüòå íà òàê³ ïðèêëàäè: Not (True) Not (Not (True)) Íå çíàþ, äå á âè ìîãëè âèêîðèñòàòè îñòàíí³é ðÿäîê êîäó, àëå õàé òàì ÿê! Ó C# ìè êîðèñòóºìîñÿ çíàêîì îêëèêó (!) çàì³ñòü Not. Ïîãëÿíüòå íà öåé êîä C#. TextBox3.Visible = !(textBox1.Visible);

Îïåðàö³¿ ó ïðèñâîþâàííÿõ ßê ìè çàñòîñîâóºìî îïåðàö³¿ ó êîä³? Íàé÷àñò³øå îïåðàö³¿ âèêîðèñòîâóþòüñÿ â îïåðàòîðàõ ïðèñâîþâàííÿ. Ïðèãàäàéòå, ùî ïðèñâîþâàííÿ — öå âèðàç ³ç ñèìâîëîì =. Îïåðàö³¿ òà îïåðàíäè ì³ñòÿòüñÿ ïðàâîðó÷ â³ä öüîãî ñèìâîëó. Ñïî÷àòêó îá÷èñëþºòüñÿ çíà÷åííÿ âèðàçó ç ïðàâîãî áîêó â³ä ñèìâîëó =, ïîò³ì ë³â³é ÷àñòèí³ îïåðàòîðà ïðèñâîþºòüñÿ öå çíà÷åííÿ. Ðåçóëüòàò îá÷èñëåííÿ ïðàâî¿ ÷àñòèíè ìຠáóòè çíà÷åííÿì òîãî æ òèïó, ùî é çì³ííà ó ë³â³é ÷àñòèí³, ³íàêøå êîìï³ëÿö³ÿ êîäó íå áóäå óñï³øíîþ. Îñü ê³ëüêà ïðèêëàä³â çàñòîñóâàííÿ àðèôìåòè÷íèõ îïåðàö³é òà îïåðàö³é êîíêàòåíàö³¿ ó ïðèñâîþâàííÿõ. Dim FormWidth as Integer FormWidth = 200 + 300 Dim FormHeight as Integer FormHeight = 1000 / 2 Dim WinnebagoName as String WinnebagoName = "Code" & "Bus"

Îïåðàö³¿ ó âèðàçàõ Ïðèêëàäè, ÿê³ ÿ ùîéíî íàâåëà, äîñèòü ïðîñò³, ó êîæíîìó ç íèõ âèêîðèñòîâóºòüñÿ ëèøå äâà îïåðàíäè òà îäíà îïåðàö³ÿ. Íàñïðàâä³ âàì ÷àñòî äîâåäåòüñÿ ïåðåêëàäàòè ôîðìóëè íà ìîâó ïðîãðàìóâàííÿ àáî âèêîíóâàòè îá÷èñëåííÿ, ó ÿêèõ âèêîðèñòîâóºòüñÿ áàãàòî îïåðàö³é òà îïåðàíä³â. Íà ùàñòÿ, ó á³ëüøîñò³ ìîâ ïðîãðàìóâàííÿ ìîæíà óòâîðþâàòè âèðàçè ç³ ñò³ëüêîõ

105


îïåðàö³é òà îïåðàíä³â, ñê³ëüêè ïîòð³áíî äëÿ êîíêàòåíàö³¿ òåêñòó àáî ïåðåêëàäó ôîðìóë. Îêð³ì òîãî, âè ìîæåòå êîðèñòóâàòèñÿ çì³ííèìè îïåðàíäàìè. Ñàìå òàê! Çì³íí³ òàêîæ ìîæóòü áóòè îïåðàíäàìè, ÿêùî ìàþòü â³äïîâ³äí³ òèïè. Á³ëüøå òîãî, âè íàâ³òü ìîæåòå ïðèñâî¿òè çì³íí³é âèðàç, ùî ì³ñòèòü òó ñàìó çì³ííó. Òîæ ïîãëÿíüìî íà ê³ëüêà ñêëàäí³øèõ ïðèêëàä³â. Ó ïåðøîìó ïðèêëàä³ îá÷èñëþºòüñÿ äîâæèíà êîëà øèíè àâòîìîá³ëÿ. Dim TireCircum As Single Dim TireDiam As Integer Dim PiValue As Single PiValue = 3.14159 TireDiam = 18 TireCircum = TireDiam * PiValue Ó íàñòóïíîìó ïðèêëàä³ îá÷èñëþºòüñÿ ñåðåäíÿ âàðò³ñòü áåíçèíó çà áåðåçåíü òà êâ³òåíü. Çàóâàæòå, ùî ÿ âèêîðèñòàëà äóæêè, ùîá äîäàâàííÿ âèêîíóâàëîñü ïåðåä ä³ëåííÿì. Dim MarchCost As Single = 123.66 Dim AprilCost As Single = 231.45 Dim MarchGallons As Single = 87.4 Dim AprilGallons As Single = 157.2 Dim CostPerGallon As Single CostPerGallon = (MarchCost + AprilCost)_ / (MarchGallons+ AprilGallons)

Îïåðàö³¿ ïîð³âíÿííÿ Ïðèãàäóºòå, ÿ êàçàëà, ùî âè ìîæåòå ïðèñâî¿òè çì³íí³é âèðàç, ÿêèé ì³ñòèòü òó ñàìó çì³ííó? Âè çàïèòàºòå, ÿê òàêà êîíñòðóêö³ÿ âèêîíóâàòèìåòüñÿ? Ïîäèâ³òüñÿ íà íàñòóïíèé ïðèêëàä ³ ñïðîáóéòå âèçíà÷èòè, ùî áóäå â³äîáðàæåíî ó â³êí³ ïîâ³äîìëåííÿ. Dim MileCounter as Integer MileCounter = 100 MileCounter = MileCounter + 200 MileCounter = MileCounter + 400 MsgBox (MileCounter) Ó â³êí³ ïîâ³äîìëåííÿ áóäå â³äîáðàæåíå ÷èñëî 700, ÿêå º çíà÷åííÿì çì³ííî¿ MileCounter. Ó äâîõ ïåðøèõ ðÿäêàõ êîäó îãîëîøóºòüñÿ çì³ííà MileCounter ³ ¿é íàäàºòüñÿ ïî÷àòêîâå çíà÷åííÿ — 100. Ó òðåòüîìó ðÿäêó êîäó äî ïîòî÷íîãî çíà÷åííÿ çì³ííî¿ MileCounter (100) äîäàºòüñÿ 200, ³ öÿ çì³ííà íàáóâຠçíà÷åííÿ 300. Çãàäàéòå: ïðàâà ÷àñòèíà îïåðàòîðà ïðèñâîþâàííÿ (MileCounter + 200) çàâæäè îá÷èñëþºòüñÿ ïåðøîþ. ˳â³é ÷àñòèí³ îïåðàòîðà ïðèñâîþâàííÿ (çì³íí³é MileCounter) ïðèñâîþºòüñÿ çíà÷åííÿ ïðàâî¿ ÷àñòèíè îïåðàòîðà ïðèñâîþâàííÿ (300). Ó ÷åòâåðòîìó ðÿäêó êîäó äî ïîòî÷íîãî çíà÷åííÿ çì³ííî¿ MileCounter (òåïåð âîíî äîð³âíþº 300) äîäàºòüñÿ 400, îòæå, îòðèìóºìî 700. Çì³íí³é MileCounter

106


íàäàºòüñÿ öå çíà÷åííÿ, ÿêå ïîò³ì âèâîäèòüñÿ ó â³êí³ ïîâ³äîìëåííÿ. ˳âà ÷àñòèíà îïåðàòîðà ïðèñâîþâàííÿ „í³÷îãî íå çíດ ïðî ñïîñ³á îá÷èñëåííÿ ïðàâî¿ ÷àñòèíè, âàæëèâî ëèøå, ùîá òèïè ÷àñòèí îïåðàòîðà ïðèñâîþâàííÿ áóëè óçãîäæåí³. ²äåíòèô³êàòîð MileCounter ó ïðàâ³é ÷àñòèí³ — öå íå ³ì’ÿ ë³âî¿ ÷àñòèíè, à ³ì’ÿ íåçàëåæíî¿ çì³ííî¿. Ó ïðîãðàìóâàíí³ ÷àñòî ïðàêòèêóºòüñÿ íàäàííÿ çì³íí³é çíà÷åííÿ âèðàçó, ùî ì³ñòèòü ñàìó çì³ííó. Òàê ìè óíèêàºìî ïîòðåáè ñòâîðþâàòè ùå îäíó çì³ííó, ÿêà á òèì÷àñîâî çáåð³ãàëà ïðîì³æíå çíà÷åííÿ. ßê ïîêàçàíî ó ïðèêëàä³ âèùå, öåé ìåòîä ïðèòàìàííèé äëÿ îá÷èñëåííÿ àáî äîäàâàííÿ ïîñë³äîâíîñò³ çíà÷åíü. Âàì â³äîìî, ùî ó áóäü-ÿêîìó êîä³ íàé÷àñò³øå çóñòð³÷àºòüñÿ ðÿäîê òèïó: çì³ííà = çì³ííà + 1? ³í çàçâè÷àé çàñòîñîâóºòüñÿ äëÿ âèçíà÷åííÿ ê³ëüêîñò³ ³òåðàö³é öèêëó. Ïðî öèêëè ÿ âàì ùå ðîçïîâ³ì îêðåìî.

Îïåðàö³ÿ Not òà îïåðàö³ÿ êîíêàòåíàö³¿ â 䳿 Òðîõè çàáàãàòî ìàòåìàòèêè! Òåïåð ÿ ïîêàæó âàì ñïî÷àòêó, ÿê 䳺 îïåðàö³ÿ êîíêàòåíàö³¿, à ïîò³ì íàâåäó ïðèêëàä ç îïåðàö³ºþ Not. Ó íàñòóïíîìó ïðèêëàä³ çíà÷åííÿ òåêñòîâèõ çì³ííèõ îᒺäíóþòüñÿ, à ðåçóëüòàò âèâîäèòüñÿ ó òåêñòîâîìó ïîë³. Dim FirstName As String Dim LastName As String FirstName = "Áîá" LastName = "Ìàðë³" TextBox1.Text = FirstName & " " & LastName Âè ïîì³òèëè, ùî ÿ âêàçàâ Visual Basic .NET íà íåîáõ³äí³ñòü äîäàòè ïðîá³ë ì³æ çíà÷åííÿìè çì³ííèõ FirstName òà LastName? Îïåðàö³ÿ êîíêàòåíàö³¿ àâòîìàòè÷íî íå äîäຠïðîá³ë³â. Ó íàñòóïíîìó ïðèêëàä³ ïîêàçàíî, ÿê îïåðàö³ÿ Not çàñòîñîâóºòüñÿ, ùîá ñõîâàòè îäíå òåêñòîâå ïîëå, êîëè ç’ÿâëÿºòüñÿ ³íøå òåêñòîâå ïîëå. Ïàì’ÿòàéòå, ùî îïåðàö³ÿ Not çàñòîñîâóºòüñÿ äî çíà÷åíü áóëåâîãî òèïó. TextBox1.Visible = True TextBox2.Visible = Not (TextBox1.Visible)

Âïðàâà 7.1. Âàðò³ñòü áåíçèíó Âè ìîæåòå îá÷èñëèòè âàðò³ñòü ïàëüíîãî, ÿêå áóäå âèêîðèñòàíî íà íàñòóïíîìó åòàï³ íàøî¿ ïîäîðîæ³. 1. Ñòâîð³òü ôîðìó. Âêëþ÷³òü äî íå¿ òàê³ åëåìåíòè: l

÷îòèðè òåêñòîâèõ ïîëÿ äëÿ ââåäåííÿ çíà÷åíü: ¡

â³äñòàí³ äî íàñòóïíîãî ïóíêòó ïðèçíà÷åííÿ;

¡

â³äñòàí³, íà ïîäîëàííÿ ÿêî¿ âèñòà÷ຠîäíîãî ãàëîíó;

¡

âàðòîñò³ ãàëîíó áåíçèíó;

¡

çàãàëüíî¿ âàðòîñò³ ïàëüíîãî;

107


l

÷îòèðè íàïèñè äëÿ êîæíîãî òåêñòîâîãî ïîëÿ;

l

êíîïêó ç íàïèñîì, ïî íàòèñêàííþ ÿêî¿ çä³éñíþâàòèìóòüñÿ îá÷èñëåííÿ.

2. ϳñëÿ òîãî, ÿê êîðèñòóâà÷ ââåäå çíà÷åííÿ â³äñòàí³, ê³ëüê³ñòü ìèëü íà ãàëîí òà âàðò³ñòü ãàëîíó, ï³äðàõóéòå çàãàëüíó âàðò³ñòü áåíçèíó, ÿêèé áóäå âèòðà÷åíî äîðîãîþ äî íàñòóïíîãî ïóíêòó ïðèçíà÷åííÿ. 3. Ñòâîðèâøè ôîðìó, ïîáóäóéòå ðîçâ’ÿçàííÿ. ßêùî ï³ä ÷àñ ïîáóäîâè íå âèíèêëî ïîìèëîê, âèáåð³òü êîìàíäó Debug4Start, ùîá çàïóñòèòè ïðîãðàìó. ßêùî ïðîãðàìà ïðàöþº ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðó.

Äîäàòêîâå çàâäàííÿ ³äôîðìàòóéòå çàãàëüíó âàðò³ñòü òàê, ùîá âîíà âèãëÿäàëà ÿê ãðîøîâà ñóìà. Äëÿ öüîãî îáì³ðêóéòå òàêèé êîä: X = 123.45 X = FormatCurrency(X)

Íàëàãîäæåííÿ êîäó Âè ÷óäîâî ïðàöþºòå! Íàïèñàëè áàãàòî êîäó, ïîáóäóâàëè ³ çàïóñòèëè áàãàòî ïðîåêò³â. Ìîæëèâî, íå óñ³ ïðîåêòè âàì âäàëîñÿ â³äêîìï³ëþâàòè îäðàçó, àëå âè âæå ïî÷èíàºòå êðàùå ðîçóì³òè òà óñóâàòè ïðîáëåìè. Çàðàç ÿ äàì âàì äåÿê³ ï³äêàçêè, ùî äîïîìîæóòü óñóâàòè ïîìèëêè ùå øâèäøå. Óñóíåííÿ ïîìèëîê ó êîä³ íàçèâàºòüñÿ íàëàãîäæåííÿì. Íàëàãîäæåííÿ íåîáõ³äíå äëÿ òîãî, ùîá âàøà ïðîãðàìà âèêîíóâàëàñÿ áåç ïîìèëîê ³ äàâàëà ïðàâèëüí³ ðåçóëüòàòè. Ñïî÷àòêó ÿ ïîêàæó, ÿê Visual Studio äîïîìàãຠíàëàãîäæóâàòè êîä ï³ä ÷àñ éîãî íàïèñàííÿ. 1. Ñòâîð³òü íîâó Windows-ïðîãðàìó ³ íàçâ³òü ¿¿ DebugView. Äîäàéòå îäíó êíîïêó òà îäíå òåêñòîâå ïîëå äî ôîðìè Form1. Äâ³÷³ êëàöí³òü íà êíîïö³ Button1 òà äîäàéòå òàêèé êîä: MyName = "Á³ëë" TextBox1.Text = MyName 2. Çàóâàæòå, ùî ïåðåä òèì, ÿê âè ïîáóäóºòå ïðîåêò, ó â³êí³ êîäó ç’ÿâèòüñÿ õâèëÿñòà ñèíÿ ë³í³ÿ ï³ä ñëîâîì MyName ó ïåðøîìó òà äðóãîìó ðÿäêàõ êîäó. Äî ÷îãî óñå öå? Ñåðåäîâèùå Visual Studio .NET äîñèòü „ðîçóìíå”, ùîá „óñâ³äîìèòè” (íàâ³òü ùå äî ïîáóäîâè ïðîåêòó), ùî âè íå îãîëîñèëè çì³ííó MyName. Âàñ ïîïåðåäæóþòü ïðî òå, ùî ³ç êîäîì ùîñü íåãàðàçä.

108


3. Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Ó â³êí³ Output ç’ÿâèòüñÿ ïîâ³äîìëåííÿ ïðî òå, ùî ïîáóäîâà íå âäàëàñÿ. Ó ñïèñêó çàâäàíü ðîç’ÿñíþºòüñÿ, ÷îìó öå òðàïèëîñü: äâà ïîâ³äîìëåííÿ ïðî ïîìèëêè ó ñïèñêó çàâäàíü âêàçóþòü íà òå, ùî ³ì’ÿ MyName íå áóëî îãîëîøåíå (Name ‘MyName‘ is not declared).

4. Äâ³÷³ êëàöí³òü íà ðÿäêó Name ‘MyName‘ is not declared ó ñïèñêó çàäà÷. Áóäå âèä³ëåíî ôðàãìåíò êîäó, ÿêèé ì³ñòèòü ïîìèëêó.

5. Çàóâàæòå, ùî âèä³ëåíî çì³ííó MyName. Ç íåþ ³ ïîâ’ÿçàíà ïðîáëåìà, ÿêó ñë³ä óñóíóòè. Òîìó â îáðîáíèêó ïî䳿 êëàöàííÿ íà êíîïö³ Button1, ïåðåä îïåðàòîðàìè, ÿê³ âèêîðèñòîâóþòü çì³ííó MyName, ñë³ä çàïèñàòè òàêèé ðÿäîê êîäó: Dim MyName As String Õâèëÿñòà ñèíÿ ë³í³ÿ çíèêíå. 6. Ïîáóäóéòå ïðîåêò ³ çàïóñò³òü éîãî íà âèêîíàííÿ. Éîãî áóäå ñêîìï³ëüîâàíî óñï³øíî, îòæå, âè çàâåðøèëè íàëàãîäæåííÿ ïðîãðàìè.

Âèêîíàííÿ ïðîãðàìè ó ïîêðîêîâîìó ðåæèì³ Visual Studio .NET ìîæå âèçíà÷èòè íå âñ³ ïîìèëêè â êîä³. Ïðîãðàìà ìîæå áóòè ñêîìï³ëüîâàíà áåç ïîìèëîê, àëå ðåçóëüòàòè ¿¿ ðîáîòè âèÿâëÿòüñÿ íåïðàâèëüíèìè. Öå îçíà÷àº, ùî ïîìèëêè ì³ñòÿòüñÿ íå ó ñèíòàêñèñ³, à â ëîã³ö³ ïðîãðàìè, àáî âèíèêàþòü ó ïðîöåñ³ ¿¿ âèêîíàííÿ. Òàê³ ïîìèëêè ó Visual Studio .NET íå ðîçï³çíàþòüñÿ àâòîìàòè÷íî, îñê³ëüêè âîíè íå º ïîðóøåííÿì ñèíòàêñè÷íèõ ïðàâèë íàïèñàííÿ êîäó. Äëÿ óñóíåííÿ öèõ ïîìèëîê êîðèñíî âèêîíàòè ïðîãðàìó â ïîêðîêîâîìó ðåæèì³, ðÿäîê çà ðÿäêîì. Öå äຠìîæëèâ³ñòü â³äñòåæèòè, ÿê³ ñàìå îïåðàòîðè êîäó âèêîíóþòüñÿ òà ÿê ìîäèô³êóþòüñÿ çíà÷åííÿ çì³ííèõ. Çàçâè÷àé âè çàäàºòå â êîä³ òî÷êó ïåðåðèâàííÿ, à ïîò³ì çàïóñêàºòå ïðîãðàìó ó ïîêðîêîâîìó ðåæèì³. Òî÷êà ïåðåðèâàííÿ 䳺 ÿê çíàê çóïèíêè: âèêîíàííÿ çóïèíÿºòüñÿ íà ðÿäêó êîäó, ÿêèé âè ïîçíà÷èëè òî÷êîþ ïåðåðèâàííÿ. Êîëè ïðîãðàìà çóïèíèòüñÿ íà òàêîìó ðÿäêó, íàòèñí³òü êëàâ³øó F11, ùîá âèêîíàòè íàñòóïíèé ðÿäîê ïðîãðàìè. Çàðàç ÿ ïîêàæó âàì, ÿê ïðàöþº öÿ òåõíîëîã³ÿ.

109


1. Çíàéä³òü ó êîä³ ïî䳿 êëàöàííÿ íà êíîïö³ Button1 òàêèé ðÿäîê: MyName = "Á³ëë" Óñòàíîâ³òü êóðñîð äå-íåáóäü íà öüîìó ðÿäêó êîäó. Êëàöí³òü ïðàâîþ êíîïêîþ ìèø³ òà âèáåð³òü ó êîíòåêñòíîìó ìåíþ êîìàíäó Insert Breakpoint (Âñòàâèòè òî÷êó ïåðåðèâàííÿ). 2. Çàóâàæòå, ùî ðÿäîê êîäó áóëî âèä³ëåíî êîðè÷íåâèì êîëüîðîì, à ë³âîðó÷ â³ä öüîãî ðÿäêà ç’ÿâèëîñÿ êîðè÷íåâå êîëî. Ïîáóäóéòå òà çàïóñò³òü ïðîãðàìó. Êîëè ç’ÿâèòüñÿ ôîðìà, êëàöí³òü íà êíîïö³.

3. Êîä âèêîíóºòüñÿ òà äîá³ãຠðÿäêà, ÿêèé âè ïîçíà÷èëè òî÷êîþ ïåðåðèâàííÿ (MyName = "Á³ëë"). Öåé ðÿäîê êîäó ùå íå âèêîíóâàâñÿ. Ðÿäîê êîäó âèä³ëåíî æîâòèì, ³ ó êîðè÷íåâîìó êîë³ á³ëÿ íüîãî òåïåð ì³ñòèòüñÿ æîâòà ñòð³ëêà.

4. Ó â³êí³ êîäó ïåðåì³ñò³òü êóðñîð äî çì³ííî¿ MyName. ǒÿâèòüñÿ ï³äêàçêà, ùî ïîêàæå âàì çíà÷åííÿ ö³º¿ çì³ííî¿. Çàðàç MyName = Nothing, îñê³ëüêè çì³ííó áóëî îãîëîøåíî, àëå ¿é íå áóëî íàäàíî çíà÷åííÿ.

5. Ó â³êí³ êîäó ïåðåì³ñò³òü êóðñîð äî àòðèáóòà Text òåêñòîâîãî ïîëÿ TextBox1. ǒÿâèòüñÿ ï³äêàçêà, ùî ïîêàæå çíà÷åííÿ àòðèáóòà Text. Çàðàç Text = "TextBox1". Íàòèñí³òü êëàâ³øó F11. Òîä³ áóäå âèêîíàíî ïîòî÷íèé ðÿäîê êîäó (MyName = "Á³ëë") òà âèä³ëåíî æîâòèì íàñòóïíèé ðÿäîê.

110


6. Çíîâó ïåðåì³ñò³òü êóðñîð äî çì³ííî¿ MyName. ϳäêàçêà ïîêàæå, ùî MyName = "Á³ëë", îñê³ëüêè çì³íí³é áóëî ò³ëüêè-íî íàäàíî öå çíà÷åííÿ.

7. Ó â³êí³ êîäó ïåðåì³ñò³òü êóðñîð äî àòðèáóòà Text òåêñòîâîãî ïîëÿ TextBox1. ϳäêàçêà ïîêàçóº Text = "TextBox1". Öå çíà÷åííÿ íå çì³íèëîñÿ. Çíîâó íàòèñí³òü êëàâ³øó F11. Òàê áóäå âèêîíàíî ïîòî÷íèé ðÿäîê (TextBox1.Text = MyName) òà âèä³ëåíî æîâòèì íàñòóïíèé ðÿäîê.

8. Ó â³êí³ êîäó ïåðåì³ñò³òü êóðñîð äî çì³ííî¿ MyName. ϳäêàçêà ïîêàæå MyName = "Á³ëë", îñê³ëüêè çíà÷åííÿ ö³º¿ çì³ííî¿ íå áóëî çì³íåíå.

9. Ó â³êí³ êîäó ïåðåì³ñò³òü êóðñîð äî àòðèáóòà Text òåêñòîâîãî ïîëÿ TextBox1. ϳäêàçêà ïîêàæå Text = "Á³ëë", îñê³ëüêè ìè ùîéíî íàäàëè öüîìó àòðèáóòó çíà÷åííÿ çì³ííî¿ MyName. Íàòèñí³òü êëàâ³øó F11. Çíîâó ç’ÿâèòüñÿ ôîðìà, àäæå âèêîíàííÿ êîäó ïî䳿 êëàöàííÿ íà êíîïö³ áóëî çàâåðøåíî. Êëàöí³òü íà êíîïö³ ´ ó êóò³ ôîðìè, ùîá çàêðèòè ¿¿.

111


10.Ó â³êí³ êîäó êëàöí³òü íà ïî÷àòêó ðÿäêà ³ç òî÷êîþ ïåðåðèâàííÿ. Êëàöí³òü ïðàâîþ êíîïêîþ ìèø³ òà âèáåð³òü êîìàíäó Remove Breakpoint (Âèäàëèòè òî÷êó ïåðåðèâàííÿ) ç êîíòåêñòíîãî ìåíþ.

Âè çàê³í÷èëè ñåàíñ íàëàãîäæåííÿ. Äóæå çðó÷íî ïåðåãëÿäàòè êîä ðÿäîê çà ðÿäêîì. Âè ìîæåòå ïðîñòåæèòè øëÿõ âèêîíàííÿ êîäó, âèÿâèòè, ùî âèïàäêîâî âêàçàëè íåïðàâèëüíèé ïîðÿäîê âèêîíàííÿ îïåðàòîð³â àáî âèêîðèñòàëè íåïðàâèëüíó çì³ííó â îïåðàòîð³ ïðèñâîþâàííÿ. Âè ìîæåòå òàêîæ êîíòðîëþâàòè çíà÷åííÿ àòðèáóò³â òà çì³ííèõ, âñòàíîâëþþ÷è êóðñîð íà ¿õ ³ìåíàõ ó â³êí³ êîäó. Çíà÷åííÿ îíîâëþþòüñÿ ï³ñëÿ âèêîíàííÿ êîæíîãî ðÿäêà êîäó. Ìåòîäèêè íàëàãîäæåííÿ ñòàþòü òèì âàæëèâ³øèìè, ÷èì ñêëàäí³øèì º êîä. Íàëàãîäæåííÿ ñêëàäíîãî êîäó ïîòðåáóº á³ëüøèõ âèòðàò ÷àñó. Ñêîðî âè ä³çíàºòåñÿ, ÿê êîíòðîëþâàòè ïîðÿäîê âèêîíàííÿ îïåðàòîð³â if òà öèêë³â. Äëÿ ñòåæåííÿ çà âèêîíàííÿì öèõ òèï³â îïåðàòîð³â ³íñòðóìåíòè íàëàãîäæåííÿ º íàäçâè÷àéíî ö³ííèìè.

Ïðèáóòòÿ äî Îïåðàöó Îöå òàê ïîäîðîæ! Ìè ñò³ëüêè óñüîãî îáãîâîðèëè ïî äîðîç³. Òåïåð âè ìàºòå ïî÷óâàòèñÿ äîñèòü çðó÷íî ³ç àðèôìèòè÷íèìè îïåðàö³ÿìè òà îïåðàö³ºþ ïîºäíàííÿ ðÿäê³â. Âè íàâ÷èëèñÿ íàâ³òü êîðèñòóâàòèñÿ ³íñòðóìåíòàìè íàëàãîäæåííÿ Visual Studio .NET, ùî äîïîìîæóòü ä³àãíîñòóâàòè ïðîáëåìè. Ãàäàþ, âïðàâè äåäàë³ çäàâàòèìóòüñÿ âàì âñå á³ëüø ö³êàâèìè. Ñïðîáóéòå âèêîíàòè ò³, ùî º íà ìîºìó êèøåíüêîâîìó êîìï’þòåð³, ïðîéä³òü òåñò, à ïîò³ì Êë³ô ïîâåçå íàñ äî íàñòóïíîãî ì³ñòà.

Âïðàâà 7.2. Íàëàãîäæåííÿ ïðîãðàìè Çàñòîñóéìî íàâè÷êè íàëàãîäæåííÿ, ÿê³ âè ùîéíî îòðèìàëè. ß íàïèñàëà ïðîãðàìó, ÿêó âè çíàéäåòå â ïàïö³ Âïðàâà_7.2. Öå ïîâíîö³ííà ïðîãðàìà. Âàì íå òðåáà í³÷îãî äî íå¿ äîïèñóâàòè. Ïðîñòî çíàéä³òü ôàéë DebugMe.sln òà äâ³÷³ êëàöí³òü íà íüîìó. Âàøå çàâäàííÿ ïîëÿãຠó òîìó, ùîá çàïèñàòè â òåêñòîâîìó ôàéë³, äîêóìåíò³ Word àáî íà ñòàðîìó êëàïòèêó äîìàøíüî¿ ðîáîòè ç ìàòåìàòèêè â³äïîâ³ä³ íà òðè ïèòàííÿ. 1. ßêå çíà÷åííÿ âè ââåëè äî òåêñòîâîãî ïîëÿ ôîðìè? 2. ßêèì º ê³íöåâå çíà÷åííÿ çì³ííî¿ AnswerOne? 3. ßêèì º ê³íöåâå çíà÷åííÿ çì³ííî¿ AnswerTwo?

112


Êîä ö³º¿ ïðîãðàìè íàâìèñíî áóâ çàïëóòàíèé òà óñêëàäíåíèé, ùîá ó âàñ íå âèíèêëî ñïîêóñè îá÷èñëèòè â³äïîâ³ä³ âðó÷íó. Âàì ïîòð³áíî ëèøå ïîì³ñòèòè êîðè÷íåâå êîëî òî÷êè ïåðåðèâàííÿ ó ë³âîìó âåðòèêàëüíîìó ïîë³, çàïóñòèòè ïðîãðàìó ³, ϲÑËß âèêîíàííÿ ïîì³÷åíîãî òî÷êîþ ïåðåðèâàííÿ ðÿäêà êîäó, ïîì³ñòèòè êóðñîð íà ³ì’ÿ çì³ííî¿, çíà÷åííÿ ÿêî¿ âè õî÷åòå ïåðåãëÿíóòè. Íàëàãîäæåííÿ — íàéö³íí³øèé íàâèê, ÿêèé âè ìàºòå çàñòîñîâóâàòè â óñ³õ ñâî¿õ ìàéáóòí³õ ïðîåêòàõ. Îòðèìàâøè â³äïîâ³ä³, ïîêàæ³òü ¿õ ³íñòðóêòîðó.

Çàâäàííÿ 7. Îá÷èñëåííÿ îᒺìó Ïàì’ÿòàºòå êðèøòàëåâ³ ïðåñ-ïà, ÿê³ ìè áà÷èëè â÷îðà ó ìàãàçèí³ ïîäàðóíê³â? Îäíå áóëî êóá³÷íî¿, à ³íøå ñôåðè÷íî¿ ôîðìè. Ìåí³ ñòàëî ö³êàâî, ÿêå ç íèõ âàæ÷å. Îñê³ëüêè âîíè îáèäâà çðîáëåí³ ç îäíàêîâîãî ìàòåð³àëó, âàæ÷èì áóäå òå, ùî ìຠá³ëüøèé îᒺì. Äàâàéòå íàïèøåìî ïðîãðàìó, ùî îá÷èñëþâàòèìå îᒺì êóáà òà ñôåðè. Ñòâîð³òü òàêó ôîðìó:

Äîâæèíà ãðàí³ êóáà çàïèñóºòüñÿ äî ïåðøîãî ïîëÿ, à ðàä³óñ ñôåðè — äî äðóãîãî. ßêùî âè áóëè íå äóæå óâàæíèìè íà óðîêàõ ãåîìåòð³¿, íàãàäóþ âàì äåÿê³ ôîðìóëè: l l

Îᒺì êóáà äîð³âíþº äîâæèí³ ãðàí³ â êóá³ (òîáòî òðè÷³ ïîìíîæåí³é íà ñàìó ñåáå). Îᒺì ñôåðè ñòàíîâèòü òðè ÷åòâåðòèõ ÷èñëà p, ïîìíîæåíèõ íà ðàä³óñ ó êóá³. Âè ìîæåòå âèêîðèñòàòè 3,14 ÿê çíà÷åííÿ ÷èñëà p àáî çàñòîñóâàòè ôóíêö³þ Math.PI.

Êîëè ïðîãðàìà ïðàöþâàòèìå ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðó.

Äîäàòêîâå çàâäàííÿ Òàê, çàðàäè ðîçâàãè, âè ìîæåòå çíàéòè çíà÷åííÿ äîâæèíè ðàä³óñà ñôåðè òà ãðàí³ êóáà, ùî äàþòü çíà÷åííÿ îᒺì³â, îäíàêîâ³ ïðèíàéìí³ äî ÷îòèðüîõ çíàê³â ï³ñëÿ êîìè ó äåñÿòêîâîìó äðîá³.

113


ßêùî âè ÷óäîâî çíàºòåñÿ íà ìàòåìàòèö³, ÷è çìîæåòå âè äîäàòè äðóãó ÷àñòèíó äî ôîðìè, ùî äîçâîëÿòèìå çà îᒺìîì îá÷èñëèòè äîâæèíó ãðàí³ òà ðàä³óñ, ùî äàþòü òàêèé îᒺì?

114


Ùî-ßêùî, Òåõàñ ϳä ÷àñ íàøîãî îñòàííüîãî ïåðå¿çäó Äæåí ðîçïîâ³ëà âàì óñå ïðî çàñòîñóâàííÿ îïåðàö³é äëÿ ñòâîðåííÿ ó êîä³ àíàëîã³â ìàòåìàòè÷íèõ ð³âíÿíü. ß æ á³ëüøå ö³êàâëþñÿ ëîã³êîþ, í³æ ìàòåìàòèêîþ. Ëîã³êà º îñíîâîþ ïðîöåñó ïðèéíÿòòÿ ð³øåíü. Ìè ïðèéìàºìî ð³øåííÿ ùîäíÿ. ß ïðèéìàâ äåÿê³ õîðîø³ ð³øåííÿ. Íàïðèêëàä, êîëè âèð³øèâ çàòåëåôîíóâàòè íà ðàä³îñòàíö³þ òà âèãðàâ áåçêîøòîâí³ êâèòêè, ùîá ïîáà÷èòè êîíöåðò ãðóïè „Áóäü-ùî”. ß ïðèéìàâ òàêîæ ³ äåÿê³ ïîãàí³ ð³øåííÿ. Íàïðèêëàä, ïîêëàâ äæèíñè äî ïðàëüíî¿ ìàøèíè ïåðø, í³æ âèéíÿâ êâèòêè íà êîíöåðò ç êèøåí³. Ùî æ, ãðóïà „Áóäü-ùî” í³êóäè íå ä³íåòüñÿ, ïîáà÷ó ¿õ ùå, íàñòóïíîãî ðîêó. Ìè ïðÿìóºìî äî ì³ñòà Ùî-ßêùî, Òåõàñ. ̳ñòî çíàõîäèòüñÿ ñåðåä âåëè÷åçíèõ ð³âíèííèõ ïðåð³é. Âè ìîæåòå ïîäóìàòè, ùî âàì òàì í³÷îãî ðîáèòè, àëå ïîìèëÿºòåñÿ. Ó ì³ñò³ Ùî-ßêùî ³ñíóþòü ì³ëüéîíè ìîæëèâîñòåé. Ïî äîðîç³ ÿ ïîêàæó âàì, ÿê êîìï’þòåðí³ ïðîãðàìè ïðèéìàþòü ð³øåííÿ çà äîïîìîãîþ îïåðàòîðà If...Then. ß îò äóìàþ, ùî áóäå, ÿê ìè ïîâåðíåìî íå òóäè íà øëÿõó äî Ùî-ßêùî? Ìè ìîæåìî òóäè í³êîëè íå ïîòðàïèòè!

Ïðèéíÿòòÿ ð³øåíü Ìåí³ äîâîäèòüñÿ ïîñò³éíî ïðèéìàòè ð³øåííÿ. ßêîãî êîëüîðó øêàðïåòêè âäÿãíóòè? Äå çðîáèòè ÷åðãîâå òàòóþâàííÿ? ×è ¿ñòè ìåí³ ö³ëó íàäâåëèêó ï³öó ç àí÷îóñàìè? ß ïåâåí: âè òàêîæ ïðèéìàºòå áàãàòî âàæëèâèõ ð³øåíü! Íàñïðàâä³, ëþäÿì äóæå ïîùàñòèëî, àäæå êîëè ìè ïðèéìàºìî ð³øåííÿ, ó íàñ äóæå áàãàòî âàð³àíò³â âèáîðó. Íàïðèêëàä, ÿêå ìîðîçèâî êóïèòè, ÿêó ìóçèêó ñëóõàòè àáî ç êèì ñï³ëêóâàòèñÿ. Êîìï’þòåðíèì ïðîãðàìàì ïîùàñòèëî ìåíøå. Âîíè ïîâèíí³ „ïðèéìàòè ð³øåííÿ”, âèõîäÿ÷è ç ³ñòèííîñò³ (True) àáî õèáíîñò³ (False) ÷îãîñü. Îñü òàê. Ïðèéíÿòòÿ ð³øåíü äëÿ íèõ — öå âåëèêà ãðà ó â³äãàäóâàííÿ. Íàïðèêëàä, óÿâ³òü, ùî âè íàìàãàºòåñÿ çàìîâèòè ó ðåñòîðàí³ ãàìáóðãåð, ñìàæåíó êàðòîïëþ, áåçàëêîãîëüíå ïèâî, à îô³ö³àíò çàäຠâàì çàïèòàííÿ, íà ÿê³ ìîæíà â³äïîâ³ñòè ëèøå „òàê” ÷è „í³”. l

Âè áóäåòå ùîñü ïèòè? Òàê.

l

Âè õî÷åòå êàâó? ͳ.

l

Âè õî÷åòå ÷àé? ͳ.

l

Âè õî÷åòå ñîäîâó? ͳ.

l

Âè õî÷åòå êîëó? ͳ.

l

Âè õî÷åòå áåçàëêîãîëüíå ïèâî? Òàê!

Çíàäîáèëîñÿ ø³ñòü çàïèòàíü, à ÿ ùå íå çàìîâèâ ãàìáóðãåð òà ñìàæåíó êàðòîïëþ! Ïðîñóâàºìîñÿ ïîâ³ëüíî, àëå âðåøò³-ðåøò ÿ çðîáëþ çàìîâëåííÿ! Îñü íà ùî ñõîæå ïðèéíÿòòÿ ð³øåííÿ êîìï’þòåðíîþ ïðîãðàìîþ. Ëèøå „òàê” ÷è „í³” (True/False). Òàêèé òèï ëîã³êè íàçèâàºòüñÿ áóëåâîþ ëîã³êîþ.

117


Áóëåâà ëîã³êà ßê âè âæå ä³çíàëèñÿ íà øëÿõó äî ì³ñòà Îïåðàö, êîìï’þòåðí³ ïðîãðàìè âïðàâíî ðîçâ’ÿçóþòü ìàòåìàòè÷í³ çàäà÷³. Âîíè òàêîæ âïðàâíî ðîçâ’ÿçóþòü çàäà÷³ ç áóëåâî¿ ëîã³êè. Ó çàäà÷àõ ç áóëåâî¿ ëîã³êè â³äïîâ³äü çàâæäè áóäå „³ñòèííî” (True) àáî „õèáíî” (False). Äëÿ ö³º¿ ëîã³êè íå ³ñíóº í³ÿêèõ „ìàéæå”, „í³áè”, „çäàºòüñÿ”. Ïðîäåìîíñòðóþ âàì ïðèêëàäè áóëåâî¿ ëîã³êè. 4=4? Òàê, ³ñòèííî. 3=1+3? ͳ, õèáíî. 3=(6+12)/(1+5)? Òàê, ³ñòèííî. Áà÷èòå, ó êîæí³é ç âèùåíàâåäåíèõ ëîã³÷íèõ çàäà÷ â³äïîâ³ääþ º „³ñòèííî” ÷è „õèáíî”. ³äïîâ³ääþ íå º ÷èñëà, êîëüîðè àáî ñëîâà. Òàê êîìï’þòåðíà ïðîãðàìà ïðèéìຠð³øåííÿ. ßêùî â³äïîâ³äü „³ñòèííî”, ïðîãðàìà âèêîíóº îäíó ä³þ, ÿêùî â³äïîâ³äü „õèáíî” — ³íøó àáî íå âèêîíóº æîäíî¿.

Áóëåâ³ îïåðàö³¿ ßê ³ ó ìàòåìàòèö³, ó áóëåâ³é ëîã³ö³ º ñâî¿ îïåðàö³¿. Àëå âîíè âèêîíóþòüñÿ íå íàä ÷èñëàìè, à ëèøå íàä áóëåâèìè îïåðàíäàìè „³ñòèíà” (True) òà „õèáí³ñòü” (False). Âîíè äîçâîëÿþòü „äîäàâàòè” ³ñòèíí³ òà õèáí³ òâåðäæåííÿ â îñîáëèâèé ñïîñ³á. ¯õ ìîæíà çàñòîñîâóâàòè äëÿ ïîºäíàííÿ áóëåâèõ òâåðäæåíü, ùîá ñòâîðèòè ñêëàäí³ø³ áóëåâ³ âèðàçè. ²ñíóº òðè îñíîâíèõ áóëåâèõ îïåðàö³¿: AND, OR òà NOT. Îïåðàö³¿ AND òà OR âèêîíóþòüñÿ íàä äâîìà îïåðàíäàìè, à îïåðàö³ÿ NOT — íàä îäíèì. Óñ³ òðè äàþòü áóëåâèé ðåçóëüòàò, ÿêèé îá÷èñëþºòüñÿ çà ïåâíèìè ïðàâèëàìè. Ðîçãëÿíüìî çàäà÷ó ç áóëåâî¿ ëîã³êè, ó ÿê³é âèêîðèñòîâóþòüñÿ áóëåâ³ îïåðàö³¿. Ïîò³ì ÿ äåòàëüí³øå ðîçïîâ³ì ïðî ¿õ ôóíêö³îíóâàííÿ. 3=1+2 AND 2=1+1 Ðåçóëüòàò True. Ìàºìî äâ³ îêðåìèõ ëîã³÷íèõ çàäà÷³, ïîºäíàí³ îïåðàö³ºþ AND. Ñïî÷àòêó îá÷èñëþºòüñÿ ðåçóëüòàò ïåðøî¿ çàäà÷³ (3=1+2), ÿêèé ñòàíîâèòü True, à ïîò³ì — äðóãî¿ (2=1+1), ÿêèé òàêîæ ñòàíîâèòü True. Ïîò³ì ðîçâ’ÿçóºòüñÿ çàäà÷à True AND True, ðåçóëüòàòîì ÿêî¿ òàêîæ º True â ñèëó ïðàâèëà, çà ÿêèì âèêîíóºòüñÿ îïåðàö³ÿ AND: ÿêùî îáèäâà îïåðàíäè îïåðàö³¿ AND ìàþòü çíà÷åííÿ True, ¿¿ ðåçóëüòàòîì òàêîæ áóäå True. Ùå îäèí ïðèêëàä. 3=1+2 AND 5=2+2 Ðåçóëüòàò False. Çíîâó ìàºìî äâ³ îêðåìèõ ëîã³÷íèõ çàäà÷³, ïîºäíàí³ îïåðàö³ºþ AND. Ñïî÷àòêó âèçíà÷àºòüñÿ ðåçóëüòàò ïåðøî¿ çàäà÷³ (3=1+2), ÿêèé ñòàíîâèòü True, à ïîò³ì — äðóãî¿ (5=2+2), ÿêèé ñòàíîâèòü False. Ïîò³ì çàäà÷à True AND False äຠðåçóëüòàò False â ñèëó ³íøîãî ïðàâèëà

118


âèêîíàííÿ îïåðàö³¿ AND: ÿêùî õî÷à á îäèí îïåðàíä îïåðàö³¿ AND ñòàíîâèòü False, îñòàòî÷íà â³äïîâ³äü áóäå False. Îñòàíí³é ïðèêëàä. 3=1+2 OR 5=2+2 Ðåçóëüòàò True. Ñïî÷àòêó âèçíà÷àºòüñÿ ðåçóëüòàò çàäà÷³ 3=1+2, ÿêèé ñòàíîâèòü True, à ïîò³ì çàäà÷³ 5=2+2, ÿêèé ñòàíîâèòü False. Çàäà÷à True OR False äຠðåçóëüòàò True, çã³äíî ç ïðàâèëîì âèêîíàííÿ îïåðàö³¿ OR: ÿêùî õî÷à á îäèí îïåðàíä îïåðàö³¿ OR ìຠçíà÷åííÿ True, îñòàòî÷íà â³äïîâ³äü áóäå True. Ùîá çàñâî¿òè öå, âàì òðåáà áóäå òðîõè ïîïðàêòèêóâàòèñÿ, àëå ï³ñëÿ òîãî, ÿê âè ïîïðàöþºòå ç áóëåâèìè îïåðàö³ÿìè ïåâíèé ÷àñ, âè äî íèõ çâèêíåòå. Íà ùàñòÿ, ìè ìîæåìî çâåñòè óñ³ ïðàâèëà âèêîíàííÿ îïåðàö³¿ AND äî ïðîñòî¿ òàáëèö³. Âàì íå òðåáà ¿õ çàïàì’ÿòîâóâàòè, âè ìîæåòå çâåðòàòèñÿ äî òàáëèö³, êîëè âèíèêຠíåîáõ³äí³ñòü. ˳âèé îïåðàíä Ïðàâèé îïåðàíä

˳âèé îïåðàíä AND Ïðàâèé îïåðàíä

True

True

True

True

False

False

False

True

False

False

False

False

Òàê ìè ìîæåìî ïîêàçàòè é óñ³ ìîæëèâ³ âàð³àíòè âèêîíàííÿ îïåðàö³¿ OR. ˳âèé îïåðàíä Ïðàâèé îïåðàíä

˳âèé îïåðàíä OR Ïðàâèé îïåðàíä

True

True

True

True

False

True

False

True

True

False

False

False

Îïåðàö³ÿ Not íå ïîºäíóº äâîõ âèðàç³â. Âîíà ïðîñòî ïåðåòâîðþº çíà÷åííÿ True íà False, à False íà True. Ïðàâèé îïåðàíä

Not Ïðàâèé îïåðàíä

True

False

False

True

Îñü äâà ïðèêëàäè âèêîðèñòàííÿ îïåðàö³¿ Not. Not(3=1+2) Ðåçóëüòàò False.

119


3=1+2 ñòàíîâèòü True. Not True ñòàíîâèòü False. Not(5=2+2) Ðåçóëüòàò True. 5=2+2 ñòàíîâèòü False. Not False ñòàíîâèòü True.

Îïåðàö³¿ ïîð³âíÿííÿ Ïðèãàäóºòå, ͳêê³ ãîâîðèëà, ùî ïðîãðàìè ÷óäîâî ðîçâ’ÿçóþòü ìàòåìàòè÷í³ çàäà÷³, àëå íå ìîæóòü ¿õ ñòàâèòè? Òå ñàìå ñòîñóºòüñÿ é ëîã³÷íèõ çàäà÷. Êîìï’þòåðí³ ïðîãðàìè ÷óäîâî ñïðàâëÿþòüñÿ ç ðîçâ’ÿçóâàííÿì äóæå ñêëàäíèõ çàäà÷ ç áóëåâî¿ ëîã³êè, àëå âîíè íå ìîæóòü ¿õ ñòàâèòè. Öå, çíîâó æ òàêè, çàâäàííÿ ïðîãðàì³ñòà. Êîëè âèêîíóºòüñÿ êîä, ïðîãðàìà ðîçâ’ÿçóº çàäà÷ó. ³äïîâ³ääþ çàäà÷³ ç áóëåâî¿ ëîã³êè áóäå True àáî False. Ïðîãðàìà „ïðèéìຠð³øåííÿ”, çàëåæíî â³ä òîãî, áóäå â³äïîâ³äü True ÷è False. Âè çíàºòå, ùî ñèìâîë = ìîæå âèêîðèñòîâóâàòèñÿ äëÿ ïîçíà÷åííÿ îïåðàö³¿ ïðèñâîþâàííÿ, àëå éîãî òàêîæ ìîæíà çàñòîñîâóâàòè ÿê îïåðàö³þ ïîð³âíÿííÿ. Ó âèùåíàâåäåíèõ ïðèêëàäàõ çà äîïîìîãîþ ñèìâîëó = ôîðìóëþºòüñÿ ïèòàííÿ „²ñòèííî ÷è õèáíî?”. ²ñíóþòü òàêîæ ³íø³ îïåðàö³¿ ïîð³âíÿííÿ äëÿ âèçíà÷åííÿ òîãî, ÷è ë³âèé îïåðàíä á³ëüøèé (>) àáî ìåíøèé (<) â³ä ïðàâîãî. Ó êîæíîìó âèïàäêó çà äîïîìîãîþ òàêèõ îïåðàö³é ôîðìóëþºòüñÿ ïèòàííÿ, â³äïîâ³ääþ íà ÿêå áóäå True àáî False. Ðîçãëÿíüìî ïðèêëàäè. 3<4 Ïèòàííÿ: ×è 3 ìåíøå 4? Òàê, â³äïîâ³äü True. 2>5 Ïèòàííÿ: ×è 2 á³ëüøå 5? ͳ, â³äïîâ³äü False. Ó òàáëèö³ ì³ñòèòüñÿ ïåðåë³ê îïåðàòîð³â ïîð³âíÿííÿ, ùî âèêîðèñòîâóþòüñÿ íàé÷àñò³øå. Îïåðàòîð

Íàçâà

Ïèòàííÿ

=

äîð³âíþº

˳âèé îïåðàíä äîð³âíþº ïðàâîìó îïåðàíäó?

>

á³ëüøå

˳âèé îïåðàíä á³ëüøå ïðàâîãî îïåðàíäà?

<

ìåíøå

˳âèé îïåðàíä ìåíøå ïðàâîãî îïåðàíäà?

>=

á³ëüøå àáî äîð³âíþº ˳âèé îïåðàíä á³ëüøå àáî äîð³âíþº ïðàâîìó îïåðàíäó?

<=

ìåíøå àáî äîð³âíþº ˳âèé îïåðàíä ìåíøå àáî äîð³âíþº ïðàâîìó îïåðàíäó?

<>

íå äîð³âíþº

120

˳âèé îïåðàíä íå äîð³âíþº ïðàâîìó îïåðàíäó?


Ìîæëèâî, âàì íå çíàéîì³ îïåðàö³¿ >=, <= òà <>. Öå äâ³ îïåðàö³¿ â îäí³é. Âîíè ïîºäíóþòü äâà áóëåâèõ âèðàçè îïåðàö³ºþ OR. ßêùî çíà÷åííÿ ïðèíàéìí³ îäíîãî âèðàçó äîð³âíþº True, çíà÷åííÿ óñüîãî âèðàçó ñòàíîâèòèìå True. Íàïðèêëàä, >= îçíà÷àº: ë³âèé îïåðàíä á³ëüøå ïðàâîãî îïåðàíäó? OR ë³âèé îïåðàíä äîð³âíþº ïðàâîìó îïåðàíäó? Äâà îêðåìèõ ïèòàííÿ, 璺äíàíèõ îïåðàö³ºþ OR. Îïåðàö³ÿ <> îçíà÷àº: ë³âèé îïåðàíä ìåíøå ïðàâîãî îïåðàíäó? OR ë³âèé îïåðàíä á³ëüøå ïðàâîãî îïåðàíäó? Öåé îïåðàòîð íàñïðàâä³ çàïèòóº: „×è ë³âèé îïåðàíä íå äîð³âíþº ïðàâîìó îïåðàíäó?” Ðîçãëÿíåìî ê³ëüêà ïðèêëàä³â ç âèêîðèñòàííÿì îïåðàö³é ïîð³âíÿííÿ äëÿ ñòâîðåííÿ áóëåâèõ ð³âíÿíü. Ìîæëèâî, âàì äîâåäåòüñÿ çâåðòàòèñÿ äî òàáëèöü, ùîá ïîáà÷èòè, ÿê ïðàöþº îïåðàö³ÿ OR ó êîæíîìó âèïàäêó. 3<=3 3<3 äຠFalse. 3=3 äຠTrue. False OR True = True. Ðåçóëüòàò True, 3 ìåíøå àáî äîð³âíþº 3. 2>=3 2>3 äຠFalse. 2=3 äຠFalse. False OR False = False. Ðåçóëüòàò False, 2 íå á³ëüøå ³ íå äîð³âíþº 3. 3<>4 3<4 äຠTrue. 3>4 äຠFalse. True OR False = True. Ðåçóëüòàò True, 3 íå äîð³âíþº 4. 3<>3 3<3 äຠFalse. 3>3 äຠFalse. False OR False = False. Ðåçóëüòàò False, 3 íå íå äîð³âíþº 3; îòæå, 3 äîð³âíþº 3. Ïðèêëàäè, ÿê³ ìè äîñ³ ðîçãëÿäàëè, ñòîñóþòüñÿ ÷èñåë. Àëå âè ìîæåòå ïîð³âíþâàòè ðÿäêè òåêñòó àáî ³íø³ áóëåâ³ çíà÷åííÿ. Ðîçãëÿíåìî òàê³ ïðèêëàäè: "ABC" = "DEF" ×è "ABC" = "DEF"? ͳ, ðåçóëüòàò False. True=True ×è True=True? Òàê, ðåçóëüòàò True. True=False ×è True=False? ͳ, ðåçóëüòàò False.

121


Óìîâíèé êîä Òåïåð çà äîïîìîãîþ îïåðàö³é ïîð³âíÿííÿ òà áóëåâî¿ ëîã³êè âè ìîæåòå çðîáèòè òàê, ùîá âàøà ïðîãðàìà ñòàâèëà çàïèòàííÿ, ÿê³ ïðèïóñêàþòü â³äïîâ³äü True àáî False. Îòæå, ùî ïðîãðàìà ðîáèòèìå ç â³äïîâ³ääþ? Âîíà „ïðèéìå ð³øåííÿ”. Âèõîäÿ÷è ç òîãî, â³äïîâ³äü áóëà True àáî False, áóäå âèêîíàíî îäèí ôðàãìåíò êîäó, àáî ³íøèé. ×àñòî ïðîãðàìà íå ìຠâèáîðó: ÿêùî â³äïîâ³äü — True, âèêîíóºòüñÿ îäíà îïåðàö³ÿ; ÿêùî â³äïîâ³äü False, í³÷îãî íå âèêîíóºòüñÿ. Îñü ê³ëüêà ðåàëüíèõ ïðèêëàä³â. l

ßêùî ÿ ïîìèþ ìàìèíó ìàøèíó ïåðø, í³æ òàòî ïîâåðíåòüñÿ äîäîìó, â³í çàïëàòèòü ìåí³ $5.

l

Òàòî ïîâåðíóâñÿ äîäîìó. ß ïîìèâ ìàøèíó? Òàê. Òàòî ïëàòèòü ìåí³ $5.

l

Òàòî ïîâåðíóâñÿ äîäîìó. ß ïîìèâ ìàøèíó? ͳ. Òàòî íå ïëàòèòü ìåí³ $5.

l

ßêùî ÿ ïîäîáàþñü Ïîë³í, âîíà çàïðîñèòü ìåíå êóäè-íåáóäü.

l

ß ïîäîáàþñü Ïîë³í? Òàê. Âîíà çàïðîøóº ìåíå.

l

ß ïîäîáàþñü Ïîë³í? ͳ. Âîíà íå çàïðîøóº ìåíå.

Ðîçãëÿíåìî ïðèêëàäè òîãî, ÿê ó ïðîãðàì³ ìîäåëþºòüñÿ ïðèéíÿòòÿ ð³øåíü. l

ßêùî ïðàïîðåöü Âåëèêèé ðîçì³ð óñòàíîâëåíî, ç’ÿâëÿºòüñÿ âåëèêà êàðòèíêà.

l

Ïðàïîðåöü Âåëèêèé ðîçì³ð óñòàíîâëåíî? Òàê. Âèâîäèìî âåëèêó êàðòèíêó.

l

Ïðàïîðåöü Âåëèêèé ðîçì³ð óñòàíîâëåíî? ͳ. Íå âèâîäèìî âåëèêî¿ êàðòèíêè.

l

ßêùî çì³ííà TotalGallons á³ëüøå íóëÿ, îá÷èñëþºìî âàðò³ñòü áåíçèíó.

l

TotalGallons > 0? Òàê. Îá÷èñëþºìî âàðò³ñòü áåíçèíó.

l

TotalGallons > 0? ͳ. Íå îá÷èñëþºìî âàðò³ñòü áåíçèíó.

Ó ïðèêëàäàõ ç ðåàëüíîãî æèòòÿ òà ïðèêëàäàõ ç ìî¿õ ïðîãðàì º ñï³ëüí³ ðèñè. Ó íèõ âèêîðèñòîâóºòüñÿ áóëåâà ëîã³êà äëÿ ôîðìóëþâàííÿ ïèòàíü ç â³äïîâ³äÿìè True àáî False. Ïèòàííÿ ç â³äïîâ³äÿìè True àáî False âèêîðèñòîâóþòü îïåðàö³¿ ïîð³âíÿííÿ, íàïðèêëàä, „äîð³âíþº” àáî „ìåíøå ÷è äîð³âíþº”. ßêùî â³äïîâ³äü ñòàíîâèòü True, ùîñü â³äáóâàºòüñÿ; ÿêùî â³äïîâ³äü ñòàíîâèòü False, í³÷îãî íå â³äáóâàºòüñÿ.

Îïåðàòîð If...Then Âè ïîì³òèëè, ùî ó ìî¿õ ïðèêëàäàõ çàñòîñîâóþòüñÿ ñëîâà „ÿêùî” (If) òà „òî䳔 (Then)? ßêùî ïåâíà óìîâà âèêîíóºòüñÿ (True), òîä³ ùîñü â³äáóâàºòüñÿ; ÿêùî óìîâà íå âèêîíóºòüñÿ (False), í³÷îãî íå â³äáóâàºòüñÿ. Êîëè âè õî÷åòå çàïðîãðàìóâàòè ïðîöåñ ïðèéíÿòòÿ ð³øåííÿ,

122


âè òàêîæ âèêîðèñòîâóºòå îïåðàòîð If...Then. Ó Visual Basic .NET éîãî ñèíòàêñèñ ìຠòàêèé âèãëÿä: If óìîâà Then îïåðàòîð End If Îñü ïðèêëàä êîäó Visual Basic .NET: If myAge = 3 Then MessageBox.Show("Ìåí³ 3 ðîêè.") End If Çâåðí³òü óâàãó íà ñëîâî If. Öå êëþ÷îâå ñëîâî Visual Basic .NET ³ òîìó ñåðåäîâèùå Visual Studio âèä³ëÿº éîãî ó òåêñò³ ïðîãðàìè ñèí³ì êîëüîðîì. Óìîâà çàçíà÷àºòüñÿ îäðàçó ï³ñëÿ ñëîâà If.  óìîâ³ ôîðìóëþºòüñÿ ïèòàííÿ, ùî ïðèïóñêຠâ³äïîâ³äü True àáî False: „÷è çì³ííà myAge äîð³âíþº òðüîì?” ßêùî â³äïîâ³äü ïîçèòèâíà, òðåáà ùîñü çðîáèòè. Çàóâàæòå ñëîâî Then, ùî çàïèñàíå ï³ñëÿ óìîâè. Öå òàêîæ êëþ÷îâå ñëîâî Visual Basic .NET, ó òåêñò³ ïðîãðàìè âîíî òàêîæ áóäå âèä³ëåíå ñèí³ì. ϳñëÿ íüîãî çàïèñàíèé îïåðàòîð, ùî âèêîíóâàòèìåòüñÿ ó ðàç³ ³ñòèííîñò³ óìîâíîãî òâåðäæåííÿ. Òåïåð öèì îïåðàòîðîì ìè çðîáèëè â³äñòóï, ùîá êîä áóëî ëåãøå ÷èòàòè. ßêùî óìîâà âèêîíóºòüñÿ, ïðîãðàìà âèâîäèòü íà åêðàí â³êíî ïîâ³äîìëåííÿ ç òåêñòîì „Ìåí³ 3 ðîêè.”. Çàóâàæòå, ùî ï³ñëÿ îïåðàòîðà âèâåäåííÿ ïîâ³äîìëåííÿ ñòîÿòü ñëîâà End If. Öå òàêîæ êëþ÷îâ³ ñëîâà. Íèìè çàâåðøóºòüñÿ îïåðàòîð If. Òåïåð âàøà ÷åðãà! Ñòâîð³òü íîâó Windowsïðîãðàìó ³ç íàçâîþ IfThen. Äîäàéòå òåêñòîâå ïîëå äî ôîðìè Form1 ³ ïîì³ñò³òü äî íå¿ êíîïêó. Äâ³÷³ êëàöí³òü íà êíîïö³, ùîá çì³íèòè êîä îáðîáíèêà ïî䳿 êëàöàííÿ íà í³é. Äîäàéòå òàê³ ðÿäêè êîäó: Dim myAge As Integer myAge = 3 If myAge = 3 Then TextBox1.Text = "Ìåí³ 3 ðîêè." End If Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Êëàöí³òü íà êíîïö³. Îñü ùî â³äáóâàòèìåòüñÿ. Ó êîä³ îãîëîøóºòüñÿ myAge, ÿê³é íàäàºòüñÿ çíà÷åííÿ 3.  â îïåðàòîð³ If ôîðìóëþºòüñÿ ïèòàííÿ, ùî ïðèïóñêຠâ³äïîâ³äü True àáî False: ÷è myAge=3? ³äïîâ³äü True, îñê³ëüêè âè ùîéíî ïðèñâî¿ëè â³äïîâ³äíå çíà÷åííÿ çì³íí³é myAge: myAge=3. Îñê³ëüêè â³äïîâ³äü íà ïèòàííÿ — True, âèêîíóºòüñÿ îïåðàòîð ï³ñëÿ ñëîâà Then. Ó òåêñòîâîìó ïîë³ ç’ÿâëÿºòüñÿ òåêñò „Ìåí³ 3 ðîêè.”. Òåïåð çì³íèìî îïåðàòîð ïðèñâîþâàííÿ çíà÷åííÿ çì³íí³é myAge: myAge = 2

123


Ïîáóäóéòå òà çàïóñò³òü ïðîåêò çíîâó. Êëàöí³òü íà êíîïö³. Ùî â³äáóâàºòüñÿ? Öüîãî ðàçó çì³íí³é myAge ïðèñâî¿ëè çíà÷åííÿ 2.  îïåðàòîð³ If ì³ñòèòüñÿ ïèòàííÿ: ÷è myAge äîð³âíþº òðüîì? Öüîãî ðàçó â³äïîâ³äü — False, òîìó îïåðàòîð ï³ñëÿ ñëîâà Then íå âèêîíóºòüñÿ. ͳ÷îãî íå â³äáóâàºòüñÿ. Òåêñò ó òåêñòîâîìó ïîë³ íå çì³íèâñÿ, îñê³ëüêè óìîâà º õèáíîþ. Ïðîãðàìà çðîáèëà ñàìå òå, ùî òðåáà. Ðîçãëÿíåìî ³íøèé ïðèêëàä. Äî ôîðìè Form1 äîäàéòå ïðàïîðåöü. Çì³í³òü êîä îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³. Çàì³í³òü ³ñíóþ÷èé êîä òàêèì: If CheckBox1.Checked = True Then TextBox1.Text = "Ìåíå óñòàíîâëåíî." End If Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Óñòàíîâ³òü ïðàïîðåöü òà êëàöí³òü íà êíîïö³. Óìîâà º ³ñòèííîþ (îñê³ëüêè âè óñòàíîâèëè ïðàïîðåöü), òîìó ó òåêñòîâîìó ïîë³ ç’ÿâèâñÿ òåêñò „Ìåíå óñòàíîâëåíî.”. Ïîáóäóéòå òà çàïóñò³òü ïðîåêò çíîâó. Öüîãî ðàçó çí³ì³òü ïðàïîðåöü òà êëàöí³òü íà êíîïö³. Ùî ñòàëîñÿ? Óìîâà º õèáíîþ (îñê³ëüêè âè çíÿëè ïðàïîðåöü), òîìó òåêñò çàëèøèâñÿ áåç çì³í. Âàøà ïðîãðàìà „âèð³øóâàëà”, ÷è çì³íþâàòè çíà÷åííÿ àòðèáóòà Text, ñïèðàþ÷èñü íà ðåçóëüòàò ïåðåâ³ðêè óìîâè (óñòàíîâëåíî ïðàïîðåöü ÷è í³).

Á³ëüøå îäíîãî îïåðàòîðà If Éìîâ³ðíî, âàì çíàäîáèòüñÿ, ùîá ï³ä ÷àñ âèêîíàííÿ ïðîãðàìè áóëî ïðèéíÿòî äåê³ëüêà ð³øåíü ùîäî ïîäàëüøèõ ä³é. Íàïðèêëàä, âàì ìîæå çíàäîáèòèñÿ ïåðåâ³ðèòè ñòàí ïðàïîðöÿ, à ïîò³ì ïåðåìèêà÷à, ï³ñëÿ ÷îãî ïîð³âíÿòè äâà ÷èñëà òà âèçíà÷èòè, ÷è êîðèñòóâà÷ çàëèøèâ òåêñòîâå ïîëå ïîðîæí³ì. Áàãàòî âè õî÷åòå â³ä ïðîãðàìè! ×è ìîæå ïðîãðàìà óñå öå çðîáèòè? Íà ùàñòÿ, ìîæå. Âè ìîæåòå äîäàòè ñò³ëüêè îïåðàòîð³â If...Then, ñê³ëüêè ïîòð³áíî. ßê ³ áóäü-ÿê³ ³íø³ îïåðàòîðè, âîíè âèêîíóþòüñÿ ó òîìó ïîðÿäêó, â ÿêîìó çóñòð³÷àþòüñÿ â êîä³. Äàâàéòå ïîáóäóºìî ïðîãðàìó, ó ÿê³é âèêîðèñòîâóâàòèìåòüñÿ á³ëüøå, í³æ îäèí îïåðàòîð If...Then. Ïðèïóñò³ìî, ùî ó íàø³é ïðîãðàì³ º ïðàïîðåöü ³äîáðàæàòè âñ³ àâàð³éí³ ñèãíàëè. ßêùî öåé ïðàïîðåöü óñòàíîâëåíî, ïðîãðàìà çì³íþº ôîíîâèé êîë³ð ôîðìè ïðîãðàìè íà ÷åðâîíèé, çì³íþº òåêñò ó ïîë³ íà Ñèãíàë òðèâîãè òà â³äîáðàæຠâ³êíî ïîâ³äîìëåííÿ ç òåêñòîì „Íåáåçïåêà! Íåáåçïåêà!”. Îäèí ç âàð³àíò³â òàêî¿ ïðîãðàìè ïåðåäáà÷ຠâèêîðèñòàííÿ òðüîõ îêðåìèõ îïåðàòîð³â If...Then. Ó êîæí³ì óìîâà áóäå âèçíà÷àòè ïåðåâ³ðêó íàÿâíîñò³ ïðàïîðöÿ ³äîáðàæàòè óñ³ àâàð³éí³ ñèãíàëè. ßêùî óìîâà º ³ñòèííîþ, áóäå âèêîíàíî ïåâíèé îïåðàòîð. Çàðàç ñàì³ óñå ïîáà÷èòå. Ðîçïî÷í³òü íîâó ïðîãðàìó Windows, ùî áóäå íàçèâàòèñÿ FireAlarm (Ïîæåæíà òðèâîãà). Äîäàéòå ïðàïîðåöü, òåêñòîâå ïîëå òà êîìàíäíó êíîïêó äî ôîðìè Form1. Çì³í³òü çíà÷åííÿ àòðèáóòà Text êíîïêè íà Òðè îïåðàòîðè If. Äâ³÷³ êëàöí³òü íà êíîïö³ Button1, ùîá çì³íèòè îáðîáíèê ïî䳿 êëàöàííÿ íà í³é. Äîäàéòå òàêèé êîä. If CheckBox1.Checked = True Then Form.ActiveForm.BackColor = System.Drawing.Color.Red End If

124


If CheckBox1.Checked = True Then TextBox1.Text = "Ñèãíàë òðèâîãè" End If If CheckBox1.Checked = True Then MessageBox.Show("Íåáåçïåêà! Íåáåçïåêà!") End If Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Óñòàíîâ³òü ïðàïîðåöü òà êëàöí³òü íà êíîïö³ Òðè îïåðàòîðè If. Ïî ÷åðç³ áóäå âèêîíàíî âñ³ îïåðàòîðè If...Then, óñ³ óìîâè áóäóòü ³ñòèííèìè. ϳä ÷àñ âèêîíàííÿ ïåðøîãî îïåðàòîðà If...Then êîë³ð ôîðìè áóäå çì³íåíî íà ÷åðâîíèé; ï³ä ÷àñ âèêîíàííÿ äðóãîãî — òåêñò ó ïîë³ áóäå çì³íåíî íà „Ñèãíàë òðèâîãè”; ³ íàðåøò³ òðåò³é îïåðàòîð âèâåäå â³êíî ïîâ³äîìëåííÿ ç òåêñòîì „Íåáåçïåêà! Íåáåçïåêà!”.

Âïðàâà 8.1. Ïîäàðóíêè Íàáëèæàþ÷èñü äî ì³ñòà Ùî-ßêùî, Òåõàñ, ìè çóïèíèëèñÿ á³ëÿ ìàãàçèíó ïîäàðóíê³â. Êîëè âè íàïèøåòå ïðîãðàìó, ùî äîïîìîæå ê볺íòàì îáèðàòè ïîäàðóíêè, âëàñíèê ìàãàçèíó ïîäàðóº âàì ÷óäîâó ëèñò³âêó ³ç çîáðàæåííÿì öåíòðó ì³ñòà Ùî-ßêùî. 1. Ñòâîð³òü ôîðìó òà íàçâ³òü ¿¿ Ïîäàðóíêè. Äîäàéòå äî íå¿ íàïèñ Îñíîâíèé ïîäàðóíîê òà íàïèñ Ñóïóòí³é ïîäàðóíîê. 2. Ïîì³ñò³òü äî ôîðìè ïîëå ç³ ñïèñêîì (äèâ. ìîäóëü 4). Ïðèñâîéòå éîãî àòðèáóòó Text ðÿäîê Îáåð³òü ïîäàðóíîê. Çàïîâí³òü êîëåêö³þ Items ïîäàðóíêàìè, ñïèñîê ÿêèõ íàâåäåíî íèæ÷å àáî ñêîðèñòàéòåñÿ âëàñíèìè ³äåÿìè ùîäî ïîäàðóíê³â. 3. Äîäàéòå äî ôîðìè òåêñòîâå ïîëå. Çðîá³òü éîãî áàãàòîðÿäêîâèì. 4. Çðîá³òü òàê, ùîá ï³ä ÷àñ îáèðàííÿ â ïîë³ ç³ ñïèñêîì ïîäàðóíêà òåêñòîâå ïîëå çàïîâíþâàëîñü ïðèíàéìí³ äâîìà ³íøèìè âèðîáàìè, ùî äîïîâíþþòü ïîäàðóíîê. Âè ìîæåòå âèêîðèñòàòè íàâåäåí³ íèæ÷å âàð³àíòè àáî íàâåñòè âëàñí³. 5. Êàïåëþõ

Ñòð³÷êà äëÿ êàïåëþõà ç³ øê³ðè ç쳿 Êðàâàòêà

×åðåâèêè

Êðåì äëÿ ÷åðåâèê³â

Îïóäàëî øàêàëà

Êàðòà òàºìíî¿ çîëîòî¿ øàõòè Ñïðàâæíÿ çîëîòîíîñíà ðóäà

Ëèñò³âêè

Ðó÷êà ç íàïèñîì Ôóòáîëêà

Ïåðåöü ÷³ë³

Ñîóñ ÷³ë³ Ãîñòðèé ñîóñ „Òîðíàäî”

125


Çíà÷åííÿ àòðèáóòà SelectedIndex äîð³âíþº íîìåðó îáðàíî¿ ðå÷³ (ïî÷èíàþ÷è ç íóëÿ). Àòðèáóò SelectedItem ì³ñòèòü íàçâó îáðàíî¿ ðå÷³. ßêùî âàì ïîòð³áíî, ùîá äâ³ ôðàçè ç’ÿâëÿëèñÿ ó îêðåìèõ ðÿäêàõ òåêñòîâîãî ïîëÿ, âñòàâòå ì³æ íèìè ñïåö³àëüíó êîíñòàíòó Visual Basic: TextBox1.Text = "A" & vbNewLine & "B" Çâè÷àéíî, A òà B çàì³íþþòüñÿ íàçâàìè ðåêîìåíäîâàíèõ ïîäàðóíê³â. Êîëè ïðîãðàìà çàïðàöþº ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðîâ³.

Á³ëüøå îäíîãî îïåðàòîðà âñåðåäèí³ If...End If Âè ïîì³òèëè, ùî äëÿ âñ³õ îïåðàòîð³â If...Then âèêîðèñòîâóâàëàñÿ îäíà óìîâà? À ñàìå: If CheckBox1.Checked = True Then гçíèìè áóëè ëèøå îïåðàòîðè, ùî ì³ñòèëèñÿ âñåðåäèí³ êîíñòðóêö³¿ If...End If. ×è íå çàáàãàòî ïîâòîðåíü? Ìîæå, º ïðîñò³øèé ñïîñ³á çàïèñó òîãî æ êîäó? Çâè÷àéíî, º! Visual Basic .NET òà á³ëüø³ñòü ñó÷àñíèõ ìîâ ïðîãðàìóâàííÿ äîçâîëÿþòü çàïèñóâàòè äîâ³ëüíó ê³ëüê³ñòü áóäü-ÿêèõ îïåðàòîð³â âñåðåäèí³ îïåðàòîðà If...End If. Äëÿ öüîãî âèêîðèñòîâóºòüñÿ òàêèé ñèíòàêñèñ: If óìîâà Then îïåðàòîð 1 îïåðàòîð 2 îïåðàòîð N End If Çíàþ÷è öå, ìè ìîæåìî ïåðåïèñàòè êîä, ùî âèêîðèñòîâóâàâñÿ ó ïðîãðàì³ FireAlarm. Ñïðîñòèìî éîãî øëÿõîì âèäàëåííÿ îïåðàòîð³â, ÿê³ ïîâòîðþþòüñÿ. ³äêðèéòå ïðîãðàìó FireAlarm. Äîäàéòå äðóãó êîìàíäíó êíîïêó äî ôîðìè Form1. Çì³í³òü çíà÷åííÿ àòðèáóòà Text êíîïêè Button2 íà Îäèí îïåðàòîð If. Äâ³÷³ êëàöí³òü íà êíîïö³ Button2, ùîá â³äðåäàãóâàòè îáðîáíèê ïî䳿 êëàöàííÿ íà êíîïö³. Äîäàéòå òàêèé êîä: If CheckBox1.Checked = True Then Form.ActiveForm.BackColor = System.Drawing.Color.Red TextBox1.Text = "Ñèãíàë òðèâîãè" MessageBox.Show("Íåáåçïåêà! Íåáåçïåêà!") End If Ïîáóäóéòå ïðîåêò òà çàïóñò³òü éîãî. Óñòàíîâ³òü ïðàïîðåöü òà êëàöí³òü íà êíîïö³ Îäèí îïåðàòîð If. Ïåðåâ³ðÿºòüñÿ îäíà óìîâà. Âîíà º ³ñòèííîþ, òîìó âñ³ îïåðàòîðè âñåðåäèí³ If...End If âèêîíóþòüñÿ òàê ñàìî, ÿê ³ ðàí³øå, ïî ÷åðç³. Ïðîãðàìà ïðàöþº òàê ñàìî, ÿê ³ ðàí³øå, ïðîòå âèêîíàííÿ òðüîõ îïåðàòîð³â çàëåæèòü â³ä ³ñòèííîñò³ ëèøå îäí³º¿ óìîâè! Âèêîðèñòàííÿ îäí³º¿ óìîâè ì³æ ñëîâàìè If òà Then ç ê³ëüêîìà îïåðàòîðàìè ì³æ ñëîâàìè Then òà End If äîçâîëÿº ñêîðîòèòè îáñÿã êîäó é çðîáèòè éîãî á³ëüø çðîçóì³ëèì.

126


Ìíîæèííèé âèá³ð Ïàì’ÿòàºòå, ÿ çàìîâëÿâ áåçàëêîãîëüíå ïèâî, â³äïîâ³äàþ÷è íà ïèòàííÿ ëèøå „òàê” àáî „í³”? Îô³ö³àíò çàäàâ ìåí³ ñåð³þ ïèòàíü ç äâîìà âàð³àíòàìè â³äïîâ³ä³ çàì³ñòü òîãî, ùîá çàäàòè îäíå ïèòàííÿ ç ê³ëüêîìà âàð³àíòàìè â³äïîâ³ä³. Õî÷à ìåí³ é çíàäîáèâñÿ ïåâíèé ÷àñ, ÿ çðåøòîþ îòðèìàâ òå, ùî õîò³â. Âè ìîæåòå çàäàâàòè ïèòàííÿ ç ê³ëüêîìà âàð³àíòàìè â³äïîâ³ä³ ó êîä³, òàêîæ âèêîðèñòîâóþ÷è ñåð³þ îïåðàòîð³â If...Then. Ùîäî öüîãî ó ìåíå º ÷óäîâèé ïðèêëàä. Ñòâîð³òü íîâó ïðîãðàìó Windows, ùî íàçèâàòèìåòüñÿ ChooseAColor (Âèá³ð êîëüîðó). Äîäàéòå òðè ïåðåìèêà÷³ òà êîìàíäíó êíîïêó äî ôîðìè Form1. Âèêîðèñòàéòå â³êíî Properties, ùîá âñòàíîâèòè àòðèáóòè åëåìåíò³â óïðàâë³ííÿ. Çì³í³òü çíà÷åííÿ àòðèáóòà Text ïåðåìèêà÷à RadioButton1 íà ×åðâîíèé; çíà÷åííÿ àòðèáóòà Text ïåðåìèêà÷à RadioButton2 íà Æîâòèé; çíà÷åííÿ àòðèáóòà Text ïåðåìèêà÷à RadioButton3 íà "Çåëåíèé"; çíà÷åííÿ àòðèáóòó Text êíîïêè Button1 íà Çðîáèòè êîëüîðîâîþ. Ïàðàìåòðó Checked ïåðåìèêà÷à RadioButton1 íàäàéòå çíà÷åííÿ True. Äâ³÷³ êëàöí³òü íà êíîïö³ Button1, ùîá çì³íèòè êîä îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³. Äîäàéòå òàê³ ðÿäêè êîäó: Dim myColor As System.Drawing.Color If RadioButton1.Checked = True Then myColor = System.Drawing.Color.Red End If If RadioButton2.Checked = True Then myColor = System.Drawing.Color.Yellow End If If RadioButton3.Checked = True Then myColor = System.Drawing.Color.Green End If Form.ActiveForm.BackColor = myColor Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Çâåðí³òü óâàãó, ùî ïåðåìèêà÷ óñòàíîâëåíî â ïîëîæåííÿ ×åðâîíèé. Êëàöí³òü íà êíîïö³ Çðîáèòè êîëüîðîâîþ. Ôîðìó òà êíîïêè áóäå ïîôàðáîâàíî ÷åðâîíèì. Óñòàíîâ³òü ïåðåìèêà÷ â ³íøå ïîëîæåííÿ òà êëàöí³òü íà êíîïö³ Çðîáèòè êîëüîðîâîþ. Êîë³ð ôîðìè òà êíîïîê áóäå çì³íåíî! Ïîãëÿíüòå íà êîä. Ðÿä îïåðàòîð³â If...Then äຠìîæëèâ³ñòü â³äïîâ³ñòè íà ïèòàííÿ, ùî ïðèïóñêຠê³ëüêà âàð³àíò³â â³äïîâ³ä³: „ßêèé ïåðåìèêà÷ óñòàíîâëåíî?” Ïîñë³äîâíî âèêîíóþ÷è êîä, ïðîãðàìà âðåøò³-ðåøò âèçíà÷àº, ÿêèé ç òðüîõ ïåðåìèêà÷³â óñòàíîâëåíî. Ïîò³ì ïðîãðàìà âèêîíóº â³äïîâ³äíå ïðèñâîþâàííÿ, ùîá çì³íèòè êîë³ð ôîðìè òà åëåìåíò³â óïðàâë³ííÿ.

Áóëåâ³ îïåðàö³¿ â êîä³ Ìè ïîãîâîðèëè ïðî òå, ÿê ìîæíà âèêîðèñòîâóâàòè áóëåâ³ îïåðàö³¿, ùîá îᒺäíàòè âèðàçè áóëåâî¿ ëîã³êè. Ïîãëÿíüìî íà ïðèêëàä, ó ÿêîìó çàñòîñîâóºòüñÿ áóëåâà îïåðàö³ÿ AND äëÿ ïîáóäîâè ñêëàäíî¿ óìîâè. Ìè çì³íèìî ïðîãðàìó ChooseAColor, äîäàâøè ïðàïîðåöü, ùî àêòèâóâàòèìå òà äåàêòèâóâàòèìå ôóíêö³þ çì³íè êîëüîðó. Îòæå, ìè çàñòîñóºìî áóëåâó îïåðàö³þ AND äëÿ ïîáóäîâè á³ëüø ñêëàäíî¿ óìîâè, ùî âðàõîâóº ñòàí ïðàïîðöÿ, êîëè ïðèéìàºòüñÿ ð³øåííÿ ïðî ïîòðåáó çì³íþâàòè êîë³ð.

127


³äêðèéòå ïðîãðàìó ChooseAColor. Äî ôîðìè Form1 äîäàéòå ïðàïîðåöü. Çì³í³òü çíà÷åííÿ éîãî àòðèáóòà Text íà Àêòèâóâàòè êîëüîðè. Çàì³í³òü êîä îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ Button1 òàêèì êîäîì: Dim myColor As System.Drawing.Color If RadioButton1.Checked = True And CheckBox1.Checked Then myColor = System.Drawing.Color.Red End If If RadioButton2.Checked = True And CheckBox1.Checked Then myColor = System.Drawing.Color.Yellow End If If RadioButton3.Checked = True And CheckBox1.Checked Then myColor = System.Drawing.Color.Green End If Form.ActiveForm.BackColor = myColor Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Êëàöí³òü íà êíîïö³ Çðîáèòè êîëüîðîâîþ. ͳ÷îãî íå â³äáóâàºòüñÿ! Êîë³ð íå çì³íèâñÿ. Òåïåð óñòàíîâ³òü ïðàïîðåöü Àêòèâóâàòè êîëüîðè ³ çíîâó êëàöí³òü íà êíîïö³ Çðîáèòè êîëüîðîâîþ. Ôîðìà òà åëåìåíòè óïðàâë³ííÿ ñòàíóòü ÷åðâîíèìè. ³äáóâàºòüñÿ îò ùî: äî óìîâè â êîæíîìó âèðàç³ ç îïåðàòîðîì If...Then ìè äîäàëè òàêèé êîä: And CheckBox1.Checked Òàê ââîäèòüñÿ äîäàòêîâà óìîâà. Òåïåð ùîá êîë³ð çì³íèâñÿ, îáèäâ³ óìîâè ïîâèíí³ áóòè ³ñòèííèìè. Íàïðèêëàä: RadioButton2.Checked = True And CheckBox1.Checked = True Ïðèãàäóºòå ïðàâèëà âèêîíàííÿ îïåðàö³¿ AND? Îáèäâ³ óìîâè ïîâèíí³ áóòè ³ñòèííèìè. ßêùî õî÷à á îäíà ç óìîâ, îᒺäíàíèõ îïåðàòîðîì AND, º õèáíîþ, âåñü âèðàç äຠðåçóëüòàò False ³ êîë³ð ôîðìè íå çì³íþºòüñÿ.

Ïðèáóòòÿ äî Ùî-ßêùî Îò ìè é ïðèáóëè äî ì³ñòà Ùî-ßêùî, Òåõàñ. ß íå ìàâ æîäíèõ ñóìí³â³â, ùî ìè äîñÿãíåìî éîãî. Äîðîãîþ ìè âèâ÷èëè ùå îäèí âàæëèâèé îïåðàòîð — If...Then. Òåïåð âàø³ ïðîãðàìè ñòàíóòü òðîõè „³íòåëåêòóàëüí³øèìè”. Âîíè çìîæóòü ñàìîñò³éíî „ïðèéìàòè ð³øåííÿ”, òîæ áóäüòå îáåðåæí³ ó òîìó, ÿê³ çàâäàííÿ ñòàâèòè ïåðåä ïðîãðàìàìè. Ó ìåíå º äëÿ âàñ ö³êàâà âïðàâà íà êèøåíüêîâîìó êîìï’þòåð³. Ãàäàþ, âîíà âàì ñïîäîáàºòüñÿ. Íå çàáóäüòå ïðîéòè òåñò.

128


Âïðàâà 8.2. Îö³íþâàííÿ âì³ííÿ ïðîãðàìóâàòè Íàì â³äîìî, ùî âè ïðèºäíàëèñÿ äî ïîäîðîæ³ „Ïðàâèëà êîäóâàííÿ”, îñê³ëüêè ïðîäåìîíñòðóâàëè ñâî¿ âì³ííÿ íà óðîêàõ ³íôîðìàòèêè. Êîì³òåòó ðàë³ ïîòð³áíà ïðîñòà ôîðìà îö³íþâàííÿ, ÿêà äîïîìîæå ó÷íÿì âèð³øèòè, ÷è âèâ÷àòè ¿ì êóðñ ïðîãðàìóâàííÿ.

Ñòâîð³òü ôîðìó, ùî çîáðàæåíà íà ðèñóíêó.

Êîëè êîðèñòóâà÷ êëàöຠíà êíîïö³ Îòðèìàòè ðåçóëüòàòè, ÷èñëà ó øåñòè òåêñòîâèõ ïîëÿõ äîäàþòüñÿ. Îñê³ëüêè âì³ñò òåêñòîâîãî ïîëÿ º ðÿäêîì, à íå ÷èñëîì, âàì äîâåäåòüñÿ ïåðåòâîðèòè ðÿäîê íà ÷èñëî. Ó Visual Basic .NET äëÿ öüîãî ³ñíóº ê³ëüêà çàñîá³â. Îñü îäèí ³ç íèõ. X = Val(TextBox1.Text)

129


Ôóíêö³ÿ Val îá÷èñëþº çíà÷åííÿ, ùî çàïèñàíå ó âèãëÿä³ òåêñòîâîãî ðÿäêà. Âè ìîæåòå íàäàòè öå çíà÷åííÿ çì³íí³é, íàïðèêëàä, çì³íí³é X. l

ßêùî ÷èñëî á³ëüøå àáî äîð³âíþº 40, âèâåä³òü äî òåêñòîâîãî ïîëÿ ïîâ³äîìëåííÿ ïðî òå, ùî ó÷åíü çäàòåí çðîáèòè áëèñêó÷ó êàð’ºðó ïðîãðàì³ñòà.

l

ßêùî ÷èñëî ïîòðàïëÿº ó ä³àïàçîí â³ä 20 äî 39, ïîâ³äîìòå ó÷íÿ, ùî óñï³øí³ñòü ïðîõîäæåííÿ íèì êóðñó ïðîãðàìóâàííÿ íå ãàðàíòîâàíà, àëå éîãî çàïðîøóþòü ñïðîáóâàòè.

l

ßêùî ÷èñëî ìåíøå 20, çàîõîòüòå ó÷íÿ îáðàòè ³íøó êàð’ºðó.

Ñê³ëüêè áàë³â íàáðàëè âè ñàì³? Êîëè ïðîãðàìà ïðàöþâàòèìå ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðîâ³.

Çàâäàííÿ 8. Ãðà Ïðèãàäóºòå òó àðêàäíó ãðó, ùî ìè áà÷èëè â÷îðà?  í³é ïîòð³áíî áóëî êëàöíóòè íà ì³øåí³, ùî ðóõàºòüñÿ. Äàâàéòå ñòâîðèìî òàêó ñàìó ó Visual Basic .NET. Ó ö³é ïðîãðàì³ ìè âèêîðèñòàºìî ïåâí³ êîíñòðóêö³¿, ÿê³ ùå íå ðîçãëÿäàëè, òîìó óâàæíî ïðî÷èòàéòå íèæ÷åíàâåäåí³ âêàç³âêè.

Çì³í³òü âèñîòó ôîðìè Form1 íà 250, à øèðèíó íà 500. Äàéòå ôîðì³ ³ì’ÿ Ãðà. Äîäàéòå äî íå¿ åëåìåíòè óïðàâë³ííÿ, ùîá âîíà íàáóëà òàêîãî âèãëÿäó:

130


Ìåòà ãðè — êëàöíóòè íà ì³øåí³, ùî ðóõàºòüñÿ. Êîä áóäå çàáåçïå÷óâàòè ïåðåñóâàííÿ çîáðàæåííÿ, óñêëàäíþþ÷è êëàöàííÿ íà íüîìó. Ãðà ðîçïî÷èíàºòüñÿ êëàöàííÿì íà êíîïö³ Ïóñê. Êëàöàííÿì íà êíîïö³ Ñòîï ãðà çàâåðøóºòüñÿ. Êíîïêà Âèéòè äîçâîëÿº çàêðèòè â³êíî ïðîãðàìè. Òðè ïåðåìèêà÷³ âèêîðèñòîâóþòüñÿ äëÿ âèçíà÷åííÿ ð³âíÿ ñêëàäíîñò³ ãðè, à ïîëå ìàëþíêà ì³ñòèòü çîáðàæåííÿ ì³øåí³. Ôàéë 8_Challenge_Target.gif ³ç çîáðàæåííÿì ì³øåí³ âè çíàéäåòå ó ïàïö³ çàâäàííÿ. Âèáåð³òü çîáðàæåííÿ ì³øåí³, ÿêå âè çàâàíòàæèëè äî ïîëÿ çîáðàæåííÿ. Äëÿ àòðèáóòà SizeMode âèáåð³òü çíà÷åííÿ StretchImage. Ó ö³é ïðîãðàì³ çàñòîñîâóºòüñÿ òàéìåð äëÿ òîãî, ùîá êîä âèêîíóâàâñÿ ÷åðåç ïåâí³ ³íòåðâàëè ÷àñó. Íàìàëþâàâøè ôîðìó, çíàéä³òü åëåìåíò óïðàâë³ííÿ Timer (Òàéìåð) ó â³êí³ Toolbox òà äâ³÷³ êëàöí³òü íà íüîìó. ³í ç’ÿâèòüñÿ ïîï³ä ôîðìîþ. Òàéìåð º ÷àñòèíîþ ôîðìè, àëå êîðèñòóâà÷àì éîãî íå âèäíî. 1. Ñòâîð³òü çì³ííó Hits òèïó Integer äëÿ ï³äðàõóíêó ê³ëüêîñò³ âëó÷åíü. 2. Ñòâîð³òü çì³ííó Total òèïó Integer, ùîá ï³äðàõîâóâàòè çàãàëüíó ê³ëüê³ñòü ñïðîá. 3. Äî îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ Ïóñê äîäàéòå êîä, ÿêèé çàáåçïå÷óâàòèìå âèêîíàííÿ òàêèõ ä³é: l

íàäàííÿ íóëüîâîãî çíà÷åííÿ ë³÷èëüíèêàì Hits (ê³ëüê³ñòü âëó÷åíü) òà Total (çàãàëüíà ê³ëüê³ñòü ñïðîá);

l

íàäàííÿ àòðèáóòó òàéìåðà Enable çíà÷åííÿ True.

4. Äî îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ Ïóñê äîäàéòå êîä, ÿêèé çàáåçïå÷óâàòèìå âèêîíàííÿ òàêèõ ä³é: l

ÿêùî óñòàíîâëåíî ïåðåìèêà÷ RadioButton1, àòðèáóòó Interval òàéìåðà íàäàºòüñÿ çíà÷åííÿ 900, à øèðèí³ òà âèñîò³ çîáðàæåííÿ — çíà÷åííÿ 40;

l

ÿêùî óñòàíîâëåíî ïåðåìèêà÷ RadioButton2, àòðèáóòó Interval òàéìåðà íàäàºòüñÿ çíà÷åííÿ 850, à øèðèí³ òà âèñîò³ çîáðàæåííÿ — çíà÷åííÿ 35;

l

ÿêùî óñòàíîâëåíî ïåðåìèêà÷ RadioButton3, àòðèáóòó Interval òàéìåðà íàäàºòüñÿ çíà÷åííÿ 800, à øèðèí³ òà âèñîò³ çîáðàæåííÿ — çíà÷åííÿ 30.

5. Ó êîä³ îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ Ñòîï, íàäàéòå àòðèáóòó òàéìåðà Enable çíà÷åííÿ False. 6. Ó êîä³ îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ Âèéòè çàáåçïå÷òå çàâåðøåííÿ ïðîãðàìè çà äîïîìîãîþ êîìàíäè End. 7. Äî îáðîáíèêà ïî䳿 êëàöàííÿ íà ïîë³ ìàëþíêà äîäàéòå êîä, ùî çàáåçïå÷óâàòèìå äîäàâàííÿ îäèíèö³ äî ë³÷èëüíèêà Hits òà íàäàííÿ çíà÷åííÿ òåêñòîâîìó ïîëþ Âëó÷åííÿ. 8. Äî îáðîáíèêà ïî䳿 òàéìåðà (äâ³÷³ êëàöí³òü íà íüîìó, ùîá ä³ñòàòèñÿ äî êîäó), äîäàéòå êîä, ùî çàáåçïå÷óâàòèìå ïåðåì³ùåííÿ ì³øåí³. Ó íüîìó ïðèïóñêàºòüñÿ, ùî ôîðìà ìຠðîçì³ð 250 íà 550. Dim MyRandomGenerator As System.Random MyRandomGenerator = New System.Random Dim RandomX As Integer Dim RandomY As Integer

131


RandomX = MyRandomGenerator.Next(1, 550) RandomY = MyRandomGenerator.Next(1, 250) PictureBox1.SetBounds(RandomX, RandomY, Me.Width, Me.Height, System.Windows.Forms.BoundsSpecified.Location) 9.  îáðîáíèêó ïî䳿 òàéìåðà ï³ñëÿ âèùåíàâåäåíîãî êîäó äîäàéòå 1 äî çàãàëüíî¿ ê³ëüêîñò³ ñïðîá òà âèâåä³òü ðåçóëüòàò ó ïîë³ ç íàïèñîì Ðàçîì. 10.Äâ³÷³ êëàöí³òü íà ïîë³ çîáðàæåííÿ, ùîá â³äðåäàãóâàòè îáðîáíèê ïî䳿 Onclick, ïîâ’ÿçàíî¿ ç öèì ïîëåì. Ó êîä³ îáðîáíèêà äîäàéòå 1 äî ë³÷èëüíèêà Hits.

Äîäàòêîâå çàâäàííÿ Çðîá³òü òàê, ùîá ñïî÷àòêó ôîíîâèé êîë³ð ôîðìè áóâ ñ³ðèì ³ ùîá, ó ðàç³ âëó÷åííÿ ó ì³øåíü, â³í ñòàâàâ ÷åðâîíèì.

132


ßêùî-²íàêøå, Íüþ-Ìåêñèêî Êë³ô çðîáèâ âàæëèâó ñïðàâó, îçíàéîìèâøè âàñ ç îïåðàòîðàìè If...Then. Òåïåð âàø³ ïðîãðàìè ìîæóòü ïðèéìàòè ð³øåííÿ! Âîíè ìàéæå íàâ÷èëèñÿ ì³ðêóâàòè! ³í ïîêàçàâ âàì, ÿê çàñòîñîâóâàòè îïåðàö³¿ ïîð³âíÿííÿ, ïðàöþâàòè ç áóëåâîþ ëîã³êîþ òà âèêîðèñòîâóâàòè â êîä³ Visual Basic .NET îïåðàòîðè If...Then. Êë³ô íàâ³â ÷óäîâ³ ïðèêëàäè, ùîá ïîêàçàòè âàì, ÿê îïåðàòîðè If...Then çàñòîñîâóþòüñÿ äëÿ âèáîðó îäíîãî ð³øåííÿ ç ìíîæèíè ìîæëèâèõ òà ÿê áóëåâ³ îïåðàö³¿ çàñòîñîâóþòüñÿ äëÿ ïîáóäîâè ñêëàäíèõ óìîâ. Êë³ô ïîâåäå ìàøèíó äî íîâîãî ïóíêòó ïðèçíà÷åííÿ — ì³ñòà ßêùî-²íàêøå, Íüþ-Ìåêñèêî. Çà â³êíîì ÷óäîâèé ïåéçàæ, ïðîòå ö³º¿ ïîðè ðîêó òóò òðîõè ñïåêîòíî! Îñê³ëüêè ìè ¿äåìî ïóñòåëåþ, íà øëÿõó íå ÷àñòî áóäóòü çóñòð³÷àòèñÿ çàïðàâî÷í³ ñòàíö³¿. ßêùî ó íàñ âèñòà÷àòèìå áåíçèíó, öå áóäå ÷óäîâà ïî¿çäêà, ³íàêøå âîíà ìîæå ïåðåòâîðèòèñÿ íà òðèâàëó ïðîãóëÿíêó! Ó áóäü-ÿêîìó ðàç³ ÿ ïîêàæó âàì ê³ëüêà ïðèéîì³â, ùî äîçâîëÿòü çðîáèòè îïåðàòîðè If...Then ùå êîðèñí³øèìè. Äî çàâåðøåííÿ ïî¿çäêè âè íàâ÷èòåñü ðîáèòè ñâî¿ ïðîãðàìè çäàòíèìè ïðèéíÿòè ìàéæå áóäü-ÿêå ð³øåííÿ.

Ðîçøèðþºìî îïåðàòîð If...Then Âè âæå çíàºòå, ÿê çàñòîñîâóâàòè îïåðàòîð If...Then ó Visual Basic .NET. Çàâäÿêè ëèøå öüîìó îäíîìó îïåðàòîðó âè ìîæåòå áàãàòî ÷îãî çðîáèòè. À ÿêùî âèêîðèñòàòè ê³ëüêà îïåðàòîð³â If...Then, ó ïðîãðàì³ áóäóòü ïðèéìàòèñÿ ö³ë³ „áóêåòè” ð³øåíü. Ïðîãðàìà çìîæå íàâ³òü â³äïîâ³äàòè íà ïèòàííÿ ç ê³ëüêîìà âàð³àíòàìè â³äïîâ³ä³! Êë³ô òàêîæ ïîêàçàâ âàì, ÿê âèêîíàííÿ ê³ëüêîõ îïåðàòîð³â ìîæíà ïîñòàâèòè ó çàëåæí³ñòü â³ä ³ñòèííîñò³ îäí³º¿ óìîâè. ßêùî óìîâà âèêîíóºòüñÿ, âèêîíóºòüñÿ é ãðóïà îïåðàòîð³â, ùî ïîâ’ÿçàíà ç íåþ. Çà äîïîìîãîþ öüîãî ïðèéîìó âè çðîáèòå êîä ïðîñò³øèì ³ çðó÷í³øèì äëÿ ÷èòàííÿ é íàëàãîäæåííÿ. Âèêîðèñòîâóþ÷è ïðîñò³ îïåðàòîðè If...Then, âè çìîæåòå ðîçðîáëÿòè òàêèé êîä äëÿ âàøî¿ ïðîãðàìè, ùî âîíà „ïðèéìàòèìå ð³øåííÿ” äîâ³ëüíîãî ð³âíÿ ñêëàäíîñò³. Ïðîòå ïèñàòè òàêèé êîä ³íîä³ âêðàé íåïðîñòî, âæå íå êàæó÷è ïðî òå, ùî öå íóäíî. Òîæ ÿ íàâ÷ó âàñ ê³ëüêîõ ïðèéîì³â, ùî çðîáëÿòü âàøå æèòòÿ ïðîñò³øèì ³ äîçâîëÿòü íàäàòè ïðîñòîìó îïåðàòîðó If...Then ïîòóæí³ ôóíêö³îíàëüí³ ìîæëèâîñò³. Ñïåðøó ÿ ïîêàæó âàì, ÿê âêëàäàòè îïåðàòîðè If...Then îäèí äî îäíîãî. Ïîò³ì — ÿê ïèñàòè êîä îïåðàòîð³â If...Then...Else. Íàðåøò³ ÿ ïîêàæó âàì ïåâí³ â³äì³ííîñò³ ì³æ ñèíòàêñèñîì îïåðàòîð³â ó Visual Basic .NET òà C# àáî J#. Ãîòîâ³? Ïî÷èíàéìî!

135


Âêëàäåí³ îïåðàòîðè If...Then Êë³ô íå ðîçïîâ³â âàì îäí³º¿ ìàëåíüêî¿ òàºìíèö³ ïðî îïåðàòîðè If...Then. ̳æ ñëîâàìè Then òà End If ìîæå çàïèñóâàòèñÿ ³íøèé îïåðàòîð If...Then! Ò³ëüêè ïîäóìàéòå! Äðóãèé îïåðàòîð If...Then âèêîíóºòüñÿ ëèøå òîä³, êîëè óìîâà ïåðøîãî îïåðàòîðà º ³ñòèííîþ. Îäèí îïåðàòîð ì³ñòèòü ³íøèé. Öå íàçèâàºòüñÿ „âêëàäàííÿì”, îñê³ëüêè îäèí îïåðàòîð If...Then âêëàäàºòüñÿ â ³íøèé. Ñïî÷àòêó ðîçãëÿíåìî ïðèêëàäè ç ðåàëüíîãî æèòòÿ. ßêùî ó ìåíå º $200, òî, ÿêùî ìàãàçèí â³ä÷èíåíî, ÿ ïðèäáàþ MP3-ïëåºð. Ó ïñåâäîêîä³ öå á ìàëî òàêèé âèãëÿä: If ó ìåíå º $200 Then If ìàãàçèí â³ä÷èíåíî Then ß ïðèäáàþ MP3-ïëåºð End If End If ͳáè äâà îïåðàòîðè If...Then â îäíîìó! Ïåðøèé îïåðàòîð If...Then ì³ñòèòü ó ñîá³ äðóãèé. Ó ïåðøîìó º óìîâà (ÿêáè ó ìåíå áóëî $200), â ðàç³ ³ñòèííîñò³ ÿêî¿ âèêîíóºòüñÿ äðóãèé îïåðàòîð If...Then. Ó äðóãîìó îïåðàòîð³ If...Then º âëàñíà óìîâà (ÿêùî ìàãàçèí â³ä÷èíåíî), â ðàç³ ³ñòèííîñò³ ÿêî¿ ïðèéìàºòüñÿ ð³øåííÿ „ÿ ïðèäáàþ MP3-ïëåºð”. Îòæå, âè áà÷èòå, ùî â ìåíå ïîâèííî áóòè $200, òà ìàãàçèí ìຠáóòè â³ä÷èíåíèì, ³íàêøå íå áóäå æîäíîãî MP3ïëåºðà. Îáèäâ³ óìîâè ïîâèíí³ âèêîíóâàòèñÿ. ßêùî â ìåíå íå áóäå $200, óìîâà ïåðøîãî îïåðàòîðà If...Then íå áóäå ³ñòèííîþ, òîìó âæå íåâàæëèâî, ÷è â³äêðèòèé ìàãàçèí, ÷è í³ — MP3-ïëåºðà âñå îäíî íå áóäå! Ðîçãëÿíåìî ùå îäèí ïðèêëàä êîäó. Ñòâîð³òü íîâó ïðîãðàìó, íàçâ³òü ¿¿ Nesting (Âêëàäàííÿ). Äîäàéòå äâà ïðàïîðö³ òà êîìàíäíó êíîïêó äî ôîðìè Form1. Çì³í³òü çíà÷åííÿ àòðèáóòà Text êíîïêè Button1 íà ßêèé ïðàïîðåöü óñòàíîâëåíî?. Äâ³÷³ êëàöí³òü íà êíîïö³ Button1 ³ äî îáðîáíèêà ïî䳿 êëàöàííÿ íà í³é äîäàéòå òàêèé êîä: If CheckBox1.Checked = True Then If CheckBox2.Checked = True Then MessageBox.Show("Óñ³ ïðàïîðö³ óñòàíîâëåíî.") End If End If Ïîáóäóéòå ïðîãðàìó òà çàïóñò³òü ¿¿. Óñòàíîâ³òü ïåðøèé ïðàïîðåöü òà êëàöí³òü íà êíîïö³ ßêèé ïðàïîðåöü óñòàíîâëåíî? ͳ÷îãî íå ñòàíåòüñÿ.

136


Òåïåð óñòàíîâ³òü äðóãèé ïðàïîðåöü ³ çíîâó êëàöí³òü íà êíîïö³ ßêèé ïðàïîðåöü óñòàíîâëåíî? Öüîãî ðàçó ç’ÿâèòüñÿ ïîâ³äîìëåííÿ „Óñ³ ïðàïîðö³ óñòàíîâëåíî”. ßê áà÷èòå, ïåðøèé ðÿäîê êîäó ì³ñòèòü îïåðàòîð If...Then: If CheckBox1.Checked = True Then Äî öüîãî îïåðàòîðà âêëàäåíî ³íøèé If...Then. Âêëàäåíèé îïåðàòîð If...Then ìຠâëàñíó óìîâó: If CheckBox2.Checked = True Then Äî âêëàäåíîãî If...Then, ó ñâîþ ÷åðãó, âêëàäåíî îïåðàòîð âèâåäåííÿ â³êíà ïîâ³äîìëåííÿ: MessageBox.Show("Óñ³ ïðàïîðö³ óñòàíîâëåíî.") Ùî æ â³äáóâàºòüñÿ? ßêùî âèêîíóºòüñÿ ïåðøà óìîâà (óñòàíîâëåíî ïðàïîðåöü CheckBox1), âèêîíóºòüñÿ é îïåðàòîð ïåðåâ³ðêè ñòàíó ïðàïîðöÿ CheckBox2. Îñê³ëüêè öåé îïåðàòîð º äðóãèì îïåðàòîðîì If...Then, òî, ÿêùî âèêîíóºòüñÿ äðóãà óìîâà (óñòàíîâëåíî ïðàïîðåöü CheckBox2), âèêîíóºòüñÿ é îïåðàòîð âèâåäåííÿ â³êíà ïîâ³äîìëåííÿ. Îòæå, ùîá ç’ÿâèëîñÿ â³êíî ïîâ³äîìëåííÿ, ïîâèíí³ âèêîíóâàòèñÿ îáèäâ³ óìîâè. Òîáòî äëÿ âèâåäåííÿ â³êíà ïîâ³äîìëåííÿ ïîòð³áíî óñòàíîâèòè îáèäâà ïðàïîðö³ Checkbox1 ³ Checkbox2. Çàóâàæòå, ùî ó âèùåíàâåäåíîìó êîä³ äðóãèé îïåðàòîð If...Then ì³ñòèòüñÿ ó ïåðøîìó. Ñëîâà End If ïåðøîãî îïåðàòîðà If...Then çíàõîäÿòüñÿ ï³ñëÿ ñë³â End If äðóãîãî îïåðàòîðà If...Then. ²íàêøå êàæó÷è, äðóãèé îïåðàòîð âêëàäåíî â ïåðøèé. Âè ìîæåòå êîðèñòóâàòèñÿ âêëàäàííÿì, ùîá îᒺäíàòè ê³ëüêà îïåðàòîð³â If...Then.  òàê³é êîíñòðóêö³¿ ïåâíà ä³ÿ âèêîíóâàòèìåòüñÿ ëèøå òîä³, êîëè âèêîíàíî ö³ëèé ðÿä óìîâ.

Ïðîòèëåæí³ óìîâè Äîñ³ íàø³ óìîâè áóëè äåùî îäíîáîêèìè. ßêùî óìîâà âèêîíóºòüñÿ, âèêîíóºòüñÿ é ïåâíèé îïåðàòîð. ßêùî óìîâà íå âèêîíóºòüñÿ, í³÷îãî íå â³äáóâàºòüñÿ. À ùî ÿê íàì ïîòð³áíî, àáè ùîñü â³äáóâàëîñÿ, êîëè óìîâà íå âèêîíóºòüñÿ? Ìîæëèâî, íàì ïîòð³áíî, ùîá ó öüîìó ðàç³ âèêîíóâàëèñÿ ïåâí³ ðÿäêè êîäó. Îäèí âàð³àíò — çàñòîñóâàòè ùå îäíó êîíñòðóêö³þ If...Then, ùî ì³ñòèòèìå ïðîòèëåæíó óìîâó, à òàêîæ îïåðàòîð, ùî âèêîíóâàòèìåòüñÿ â ðàç³ ¿¿ ³ñòèííîñò³. Íàïèøåìî òàêèé êîä! Ñòâîð³òü íîâó Windows-ïðîãðàìó ³ç íàçâîþ IfThenOtherwise (ßêùî òîä³ ó ïðîòèëåæíîìó âèïàäêó). Äîäàéòå êîìàíäíó êíîïêó òà äâà ïðàïîðö³ äî ôîðìè Form1. Çì³í³òü çíà÷åííÿ àòðèáóòà Text êíîïêè Button1 íà IfThen. Ïîì³ñò³òü òàê³ ðÿäêè êîäó äî îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ Button1: If CheckBox1.Checked = True Then Form.ActiveForm.BackColor = System.Drawing.Color.Red End If

137


If CheckBox1.Checked = False Then Form.ActiveForm.BackColor = System.Drawing.Color.Blue End If Ïîáóäóéòå ïðîåêò òà çàïóñò³òü éîãî. Êëàöí³òü íà êíîïö³ IfThen. Ôîðìà ñòàíå áëàêèòíîþ. Óñòàíîâ³òü ïðàïîðåöü CheckBox1, à ïîò³ì çíîâó êëàöí³òü íà êíîïö³ IfThen. Ôîðìà ñòàíå ÷åðâîíîþ. ßê ïðàöþº òàêèé êîä? Ó ïåðøîìó îïåðàòîð³ ïåðåâ³ðÿºòüñÿ óìîâà CheckBox1.Checked=True. ßêùî âîíà âèêîíóºòüñÿ, àòðèáóòó BackColor ôîðìè íàäàºòüñÿ çíà÷åííÿ Red. Ó äðóãîìó îïåðàòîð³ If...Then ïåðåâ³ðÿºòüñÿ óìîâà CheckBox1.Checked=False (ïðîòèëåæíà óìîâà). ßêùî âîíà âèêîíóºòüñÿ, àòðèáóòó BackColor ôîðìè ïðèñâîþºòüñÿ çíà÷åííÿ Blue. Êîä òðîõè ïîâòîðþºòüñÿ, àëå ñïðàöüîâóº! Ó íüîìó îäèí íåäîë³ê: âàì äîâîäèòüñÿ ïèñàòè ìàéæå ³äåíòè÷íèé êîä äëÿ ïðîòèëåæíî¿ óìîâè. Öå çàáèðຠ÷àñ òà ìîæå ïðèçâåñòè äî âèíèêíåííÿ ïîìèëîê.

If...Then...Else Visual Basic .NET ïðîïîíóº àëüòåðíàòèâó, ÿêà äຠìîæëèâ³ñòü âèäàëèòè ðÿäêè, ùî ïîâòîðþþòüñÿ, òà çðîáèòè êîä ïðîñò³øèì ³ çðó÷í³øèì äëÿ ÷èòàííÿ. Ö³ºþ àëüòåðíàòèâîþ º îïåðàòîð If...Then...Else.  îïåðàòîð³ If...Then...Else çàïèñóºòüñÿ îäíà óìîâà òà äâà ìîæëèâèõ âàð³àíòè ä³é çà ðåçóëüòàòàìè ¿¿ ïåðåâ³ðêè (êîëè óìîâà ³ñòèííà òà êîëè õèáíà). Îïåðàòîð If...Then...Else âèêîðèñòîâóºòüñÿ çàì³ñòü äâîõ îïåðàòîð³â If...Then ç ïðîòèëåæíèìè óìîâàìè. Ðîçãëÿíåìî éîãî ñèíòàêñèñ: If óìîâà Then îïåðàòîð1 Else îïåðàòîð2 End If ßê ïðàöþº òàêèé êîä? Ñïî÷àòêó ïåðåâ³ðÿºòüñÿ óìîâà. ßêùî âîíà º ³ñòèííîþ, âèêîíóºòüñÿ îïåðàòîð1. ²íàêøå (Else) âèêîíóºòüñÿ îïåðàòîð2. Òåïåð äàâàéòå çì³íèìî ïðîãðàìó IfThenOtherwise, çàì³íèâøè ó í³é äâà íåçàëåæíèõ ³ ïðîòèëåæíèõ îïåðàòîðè If...Then îäíèì îïåðàòîðîì If...Then...Else. Äîäàéòå äðóãó êíîïêó äî ôîðìè Form1. Çì³í³òü çíà÷åííÿ ¿¿ àòðèáóòà Text íà IfThenElse. Äî êîäó êëàöàííÿ íà êíîïö³ Button2 äîäàéòå òàê³ ðÿäêè: If CheckBox1.Checked = True Then Form.ActiveForm.BackColor = System.Drawing.Color.Red Else Form.ActiveForm.BackColor = System.Drawing.Color.Blue End If

138


Ïîáóäóéòå ïðîåêò òà çàïóñò³òü éîãî. Êëàöí³òü íà êíîïö³ IfThenElse. Ôîðìà ñòàíå áëàêèòíîþ. Óñòàíîâ³òü ïðàïîðåöü CheckBox1, à ïîò³ì çíîâó êëàöí³òü íà êíîïö³ IfThenElse. Ôîðìà ñòàíå ÷åðâîíîþ. Ïðîãðàìà çà äîïîìîãîþ îïåðàòîðà If...Then...Else ðîáèòü òå ñàìå, ùî âîíà ðîáèëà, êîëè âèêîðèñòîâóâàëà äâà îïåðàòîðè If...Then. Êîä ïðàöþº òàê: ïåðåâ³ðÿºòüñÿ óìîâà CheckBox1.Checked=True; ÿêùî âîíà âèêîíóºòüñÿ, ôîðìà ñòຠ÷åðâîíîþ; ³íàêøå (Else) âèêîíóºòüñÿ äðóãèé âêëàäåíèé îïåðàòîð (ï³ñëÿ ñëîâà Else), ³ ôîðìà ñòຠáëàêèòíîþ. Ðîçãëÿíüìî ³íøèé ïðèêëàä âèêîðèñòàííÿ îïåðàòîðà If... Then...Else. Çì³íèìî ïðîãðàìó IfThenOtherwise òàê, ùîá ì³æ ñëîâàìè Then òà Else, à òàêîæ ì³æ ñëîâàìè Else òà End If ì³ñòèëîñÿ äåê³ëüêà ðÿäê³â êîäó. ³äêðèéòå ïðîãðàìó IfThenOtherwise. Çàì³í³òü êîä îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ Button2 òàêèì êîäîì: If CheckBox1.Checked = True Then Form.ActiveForm.BackColor = _ System.Drawing.Color.Red MessageBox.Show("ß ÷åðâîíà.") TextBox1.Text = "ß ÷åðâîíà." Else Form.ActiveForm.BackColor = System.Drawing.Color.Blue MessageBox.Show("ß áëàêèòíà.") TextBox1.Text = "ß áëàêèòíà." End If Ïîáóäóéòå ïðîåêò ³ çàïóñò³òü éîãî. Êëàöí³òü íà êíîïö³ IfThenElse. ³äáóäóòüñÿ òðè ïî䳿: ôîðìà ñòàíå ÷åðâîíîþ, ÷åðâîíèì ñòàíå òåêñò ó ïîë³, à òàêîæ áóäå âèâåäåíå ïîâ³äîìëåííÿ „ß ÷åðâîíà”. Òåïåð óñòàíîâ³òü ïðàïîðåöü CheckBox1 òà çíîâó êëàöí³òü íà êíîïö³ IfThenElse. ³äáóäóòüñÿ òðè ³íøèõ ïî䳿.

Âèêîíàííÿ îïåðàòîðà If ó ïîêðîêîâîìó ðåæèì³ Òåïåð âèêîðèñòàºìî íàëàãîäæóâà÷ Visual Studio .NET, ùîá âèêîíàòè êîä îïåðàòîðà If... Then...Else ó ïîêðîêîâîìó ðåæèì³. Òàê âè çìîæåòå ñïîñòåð³ãàòè çà éîãî ðîáîòîþ „çñåðåäèíè”. Ñòâîð³òü íîâó Windows-ïðîãðàìó — StepInIf (Ïîêðîêîâå âèêîíàííÿ If). Äîäàéòå êíîïêó äî ôîðìè Form1. Íàäàéòå àòðèáóòó Checked ïðàïîðöÿ CheckBox1 çíà÷åííÿ True. Êîëè âè çàïóñòèòå ïðîãðàìó, ïðàïîðåöü áóäå óñòàíîâëåíî. Äâ³÷³ êëàöí³òü íà êîìàíäí³é êíîïö³, ùîá çì³íèòè êîä îáðîáíèêà ïî䳿 êëàöàííÿ íà í³é. Äîäàéòå òàê³ ðÿäêè êîäó: Dim MyValue As Integer MyValue = 1 If CheckBox1.Checked = True Then MyValue = 2 Else MyValue = 3 End If

139


1. Óñòàíîâ³òü òî÷êó ïåðåðèâàííÿ íà ïåðøîìó ðÿäêó êîäó (MyValue = 1), äâ³÷³ êëàöíóâøè íà ñ³ð³é ä³ëÿíö³ ë³âîðó÷ â³ä êîäó àáî êëàöíóâøè ïðàâîþ êíîïêîþ ìèø³ òà îáðàâøè êîìàíäó Insert Breakpoint.

2. Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Êîëè ç’ÿâèòüñÿ ôîðìà, êëàöí³òü íà êíîïö³. Êîä áóäå âèêîíàíî äî ðÿäêà ç òî÷êîþ ïåðåðèâàííÿ.

3. Íàòèñí³òü êëàâ³øó F11, ùîá âèêîíàòè ïîòî÷íèé ðÿäîê êîäó (MyValue=1). Áóäå âèä³ëåíî íàñòóïíèé ðÿäîê êîäó.

4. Íàòèñí³òü êëàâ³øó F11, ùîá âèêîíàòè ïîòî÷íèé ðÿäîê êîäó (If CheckBox1.Checked = True Then). Îñê³ëüêè óñòàíîâëåíî ïðàïîðåöü CheckBox1, íàñòóïíèì áóäå âèä³ëåíî ðÿäîê êîäó MyValue=2.

140


5. Íàòèñí³òü êëàâ³øó F11, ùîá âèêîíàòè ïîòî÷íèé ðÿäîê êîäó (MyValue=2). Áóäå âèä³ëåíî íàñòóïíèé ðÿäîê êîäó. Çàóâàæòå, ùî íèì º ðÿäîê ³ç ôðàçîþ End If.

6. Íàòèñí³òü êëàâ³øó F11, ùîá âèêîíàòè ïîòî÷íèé ðÿäîê êîäó (End If). Áóäå âèä³ëåíî íàñòóïíèé ðÿäîê êîäó.

7. Íàòèñí³òü êëàâ³øó F11, ùîá âèêîíàòè ïîòî÷íèé ðÿäîê êîäó (End Sub). Çíîâó ç’ÿâèòüñÿ ôîðìà.

8. Çí³ì³òü ïðàïîðåöü CheckBox1 òà êëàöí³òü íà êíîïö³. Ïîâòîð³òü ïðîöåñ âèêîíàííÿ êîäó â ïîêðîêîâîìó ðåæèì³, íàòèñêàþ÷è êëàâ³øó F11 òà ñïîñòåð³ãàþ÷è, ÿê³ ðÿäêè êîäó âèä³ëÿþòüñÿ, êîëè âèêîíóºòüñÿ êîä. Öüîãî ðàçó áóäå âèêîíàíî êîä çà ñëîâîì Else, òîáòî îïåðàòîð MyValue=3.

141


Îñü òåïåð âè ñïðàâä³ ïîáà÷èëè, ÿê ïðàöþº îïåðàòîð If...Then...Else! À òåïåð çàñòîñóºìî íà ïðàêòèö³ ò³ íàâè÷êè, ÿê³ ìè çäîáóëè.

Âïðàâà 9.1. Ðàõóíîê ó ãîëüô³ Íàì áóëî âåñåëî, êîëè ìè ãðàëè ó ãîëüô ñüîãîäí³ âðàíö³? Òàê, íàì áóëî âåñåëî. À ÿêèé ó íàñ áóâ ðàõóíîê? Äàâàéòå ï³äâåäåìî ï³äñóìêè. Ñòâîð³òü òàêó ôîðìó, ÿê ïîêàçàíî íà ðèñóíêó.

Êîëè âè êëàöàºòå íà êíîïö³ Îá÷èñëèòè, âèçíà÷àºòüñÿ ñåðåäí³é ðàõóíîê íàøî¿ ãðè. Îñê³ëüêè âì³ñòîì òåêñòîâîãî ïîëÿ º ðÿäîê, à íå ÷èñëî, éîãî äîâåäåòüñÿ ïåðåòâîðèòè íà ÷èñëî. Ó Visual Basic .NET äëÿ öüîãî ³ñíóº ê³ëüêà çàñîá³â. Îñü îäèí ç íèõ: X = Val(TextBox1.Text) Ôóíêö³ÿ Val îá÷èñëþº çíà÷åííÿ, ïîäàíå ó ôîðì³ òåêñòîâîãî ðÿäêà. Ïîò³ì âè ìîæåòå ïðèñâî¿òè éîãî çì³íí³é, íàïðèêëàä, çì³íí³é X. Êîæíîìó ãðàâöåâ³ íà ôîðì³ Ãîëüô â³äïîâ³äຠíàïèñ (Label6–Label9). ßêùî áàë ãðàâöÿ âèù³é çà ñåðåäí³é, ïåðåòâîð³òü â³äïîâ³äíèé íàïèñ íà „Õîðîøèé ðàõóíîê”, ³íàêøå âèêîðèñòàéòå òåêñò „Ïðîäîâæóéòå ïðàêòèêóâàòèñÿ”. Êîëè ïðîãðàìà ò³ëüêè ðîçïî÷èíຠðîáîòó, ïîëÿ íàïèñ³â ïîâèíí³ áóòè ïîðîæí³ìè. Êîëè ïðîãðàìà ïðàöþâàòèìå ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðó.

Îïåðàòîðè If ó ìîâàõ J# òà C# ß ïîêàçàëà âàì ñèíòàêñèñ òà äåÿê³ ïðèêëàäè âèêîðèñòàííÿ îïåðàòîð³â If...Then òà If...Then...Else ó Visual Basic .NET. Òåïåð ijðê òà Äæåí ïîêàæóòü, ÿê çàñòîñîâóâàòè ¿õ ó C# òà J#.

Ó C# òà J# º îïåðàòîðè, ùî ïðàöþþòü òàê ñàìî, ÿê ³ îïåðàòîðè If...Then òà If...Then...Else ó Visual Basic .NET. ¯õ ñèíòàêñèñ äåùî ³íøèé, ïðîòå â íèõ òàêîæ º óìîâè òà

142


âêëàäåíèé êîä, ùî âèêîíóºòüñÿ â ðàç³ ³ñòèííîñò³ àáî õèáíîñò³ óìîâ. Äàâàéòå ÿ ïîêàæó âàì ïðèêëàä íà C#, à ïîò³ì ðîçãëÿíåìî äåòàë³. int MyAge; MyAge=3; if (MyAge==3) { MessageBox.Show("I am 3."); MessageBox.Show("I am still 3."); } Ñïî÷àòêó ìè îãîëîøóºìî çì³ííó MyAge ö³ëî÷èñëîâîãî òèïó ³ íàäàºìî ¿é ïî÷àòêîâå çíà÷åííÿ. ϳñëÿ öüîãî âèêîíóºòüñÿ îïåðàòîð if. Çàóâàæòå, ùî â³í ïèøåòüñÿ ç ìàëî¿ ë³òåðè. Çà íèì ó äóæêàõ çàïèñàíî óìîâó: (MyAge==3). Ïåðåêîíàíèé: âàñ äóæå ö³êàâèòü, ÷îìó ñèìâîë = ïîâòîðþºòüñÿ äâ³÷³. Ñèìâîëàìè == ó C# ïîçíà÷àºòüñÿ îïåðàòîð ïîð³âíÿííÿ, à ïðèñâîþâàííÿ — îäèíî÷íèì ñèìâîëîì = . Âêëàäåí³ äî êîíñòðóêö³¿ if îïåðàòîðè áåðóòüñÿ ó ô³ãóðí³ äóæêè (ñèìâîëè { òà }). Ùîá êîä áóëî çðó÷í³øå ÷èòàòè, äåÿê³ ïðîãðàì³ñòè ðîçì³ùóþòü ô³ãóðí³ äóæêè íà îêðåìèõ ðÿäêàõ. Çàóâàæòå, ùî ï³ñëÿ êîæíîãî îïåðàòîðà çàïèñàíî êîìó ç êðàïêîþ. Çâåðí³òü óâàãó òàêîæ, ùî ñëîâî Then íå çàñòîñîâóºòüñÿ! Ùîäî ìîâè J#, òî ó í³é âñå òàê ñàìî, ÿê ³ ó C#! Òåïåð ðîçãëÿíüìî åêâ³âàëåíò îïåðàòîðà If...Then...Else ó C#. Ïîøóêàéòå ïîä³áíîñò³ òà â³äì³ííîñò³ ì³æ öèì îïåðàòîðîì ó C# òà éîãî â³äïîâ³äíèêîì ó Visual Basic .NET. int MyAge; MyAge=3; if (MyAge==2) { MessageBox.Show("Ìåí³ MessageBox.Show("Ìåí³ } else { MessageBox.Show("Ìåí³ MessageBox.Show("Ìåí³ }

2 ðîêè."); âñå ùå 2 ðîêè.");

3 ðîêè."); âñå ùå 3 ðîêè.");

Çíîâó æ òàêè, çàóâàæòå, ùî óìîâó âçÿòî â äóæêè. Ó öüîìó êîä³ ìàºìî äâ³ ãðóïè îïåðàòîð³â, ùî âèêîíóþòüñÿ â ðàç³ ³ñòèííîñò³ àáî õèáíîñò³ óìîâè: îäíó — ï³ñëÿ óìîâè, à äðóãó — ï³ñëÿ ñëîâà else. Êîæíà ãðóïà áåðåòüñÿ ó ô³ãóðí³ äóæêè. Êîæíèé îïåðàòîð çàâåðøóºòüñÿ êîìîþ ç êðàïêîþ. Ñëîâî Then íå âæèâàºòüñÿ. Ó J# êîä îïåðàòîðà, åêâ³âàëåíòíîãî If...Then...Else, òàêèé ñàìèé, ÿê ³ ó C#!

Îïåðàö³¿ â ìîâàõ J# òà C# ²ñíóº ê³ëüêà â³äì³ííîñòåé ì³æ Visual Basic .NET òà C# àáî J#, ÿê³ âàì ïîòð³áíî çíàòè äëÿ ðîáîòè ç îïåðàòîðàìè, åêâ³âàëåíòíèìè If...Then òà If...Then...Else. Ïî-ïåðøå, áóëåâ³

143


îïåðàö³¿ ïîçíà÷àþòüñÿ ³íøèìè ñèìâîëàìè. Çàì³ñòü îïåðàö³é And, Or òà Not ó C# òà J# âèêîðèñòîâóþòüñÿ îïåðàö³¿ &&, || òà ! â³äïîâ³äíî (äèâ. òàáëèöþ). Áóëåâà îïåðàö³ÿ

Visual Basic .NET

C#

J#

²

And

&&

&&

ÀÁÎ

Or

||

||

Ͳ

Not

!

!

Îñü ïðèêëàä ç âèêîðèñòàííÿì áóëåâèõ îïåðàö³é ² (&&) òà Ͳ (!) ó C#: bool isBilled=true; bool isLate=false; bool isDone; isDone = isBilled && !isLate; MessageBox.Show(isDone.ToString()); Çàóâàæòå, ùî çàðåçåðâîâàí³ ñëîâà bool (áóë³â òèï), true òà false ïèøóòüñÿ ìàëèìè ë³òåðàìè. Çì³íí³ isBilled, isLate òà isDone óñ³ îãîëîøóþòüñÿ ÿê çì³íí³ òèïó bool (áóëåâ òèï). Îïåðàö³ÿ ² ïîçíà÷àºòüñÿ ñèìâîëàìè &&, à Ͳ — ñèìâîëîì !. Îñê³ëüêè C# òà J# ÷èñåë íà ðÿäêè àâòîìàòè÷íî íå ïåðåòâîðþþòü, ç ö³ºþ ìåòîþ çàñòîñîâóºòüñÿ ìåòîä ToString. À îñü êîä ìîâîþ J#: boolean isBilled=true; boolean isLate=false; boolean isDone; isDone=isBilled && !isLate; MessageBox.Show(System.Convert.ToString(isDone)); Êîä äîñèòü ñõîæèé íà êîä C#, àëå º ê³ëüêà â³äì³ííîñòåé. Çâåðí³òü óâàãó íà ïîçíà÷åííÿ áóëåâîãî òèïó — boolean. Çì³íí³ isBilled, isLate òà isDone îãîëîøåí³ ÿê çì³íí³ òèïó boolean (áóëåâ). Ó êîä³ J# íàì äîâåëîñÿ ÿâíî âèçíà÷èòè ä³þ „ïåðåòâîðèòè áóëåâå çíà÷åííÿ íà ðÿäêîâå, çàñòîñîâóþ÷è ìåòîä System.Convert.ToString”, ïåðø í³æ â³äîáðàæàòè ÷èñëîâå çíà÷åííÿ ó â³êí³ ïîâ³äîìëåííÿ. Ïîçíà÷åííÿ äåÿêèõ îïåðàö³é ïîð³âíÿííÿ ó C# òà J# òàêîæ â³äð³çíÿºòüñÿ â³ä ïîçíà÷åííÿ öèõ îïåðàö³é ó Visual Basic .NET. Âè âæå áà÷èëè, ùî äëÿ ïîçíà÷åííÿ ð³âíîñò³ çàì³ñòü = âèêîðèñòîâóºòüñÿ îïåðàòîð ==. Îêð³ì òîãî, äëÿ ïîçíà÷åííÿ íåð³âíîñò³ ó C# òà J# âèêîðèñòîâóºòüñÿ îïåðàòîð != çàì³ñòü <> ó Visual Basic .NET. Îñü òàáëèöÿ ³ç ïîð³âíÿííÿì îïåðàòîð³â ïîð³âíÿííÿ:

144

Îïåðàòîð ïîð³âíÿííÿ

Visual Basic .NET C#

J#

Äîð³âíþº

=

==

==

Á³ëüøå

>

>

>

Ìåíøå

<

<

<

Á³ëüøå àáî äîð³âíþº

>=

>=

>=

Ìåíøå àáî äîð³âíþº

<=

<=

<=

Íå äîð³âíþº

<>

!=

!=


Ïîãëÿíüòå íà êîä J# àáî C#, ó ÿêîìó âèêîðèñòîâóºòüñÿ îïåðàòîð íåð³âíîñò³. int MyAge; MyAge=2; if (MyAge!=3) { MessageBox.Show("Ìåí³ íå 3 ðîêè."); } ßê áà÷èòå, êîëè âèêîíóºòüñÿ öåé êîä, ç’ÿâëÿºòüñÿ ïîâ³äîìëåííÿ „Ìåí³ íå 3 ðîêè.” Îòæå, ³ñíóþòü äîñèòü çíà÷í³ â³äì³ííîñò³ ì³æ îïåðàòîðàìè If...Then òà If...Then...Else ó Visual Basic .NET òà ¿õ åêâ³âàëåíòàìè ó C# òà J#, àëå äîñèòü áàãàòî º é ñï³ëüíîãî! Âîíè âèêîíóþòü îäíàêîâ³ ôóíêö³¿, àëå ìàþòü ð³çíèé ñèíòàêñèñ.

Ïðèáóòòÿ äî ßêùî-²íàêøå, Íüþ-Ìåêñèêî Îñü ìè ³ ó ßêùî-²íàêøå, Íüþ-Ìåêñèêî! Ìè áàãàòî ÷îãî âèâ÷èëè ïî äîðîç³, ÷è íå òàê? Òåïåð ó âàñ âæå º á³ëüøå ³íñòðóìåíò³â ïðîãðàìóâàííÿ, ç ÿêèìè ìîæíà ïðàöþâàòè. Âè ìîæåòå ïèñàòè âêëàäåí³ îïåðàòîðè If...Then òà îïåðàòîðè If...Then...Else. Òåïåð âàø³ ïðîãðàìè ìîæóòü „ïðèéìàòè ð³øåííÿ”! Ùî æ, ÷àñ ùå ïîïðàêòèêóâàòèñÿ. Ðîçãëÿíüìî ìàòåìàòè÷íó âïðàâó.

Âðïàâà 9.2. Ìàã³÷íèé êâàäðàò ß íå ôîêóñíèê, ÿê òîé àðòèñò ó ïàðêó ðîçâàã ßêùî-²íàêøå, àëå çíàþ îäèí ìàã³÷íèé òðþê. ß ìîæó âçÿòè ÷èñëà â³ä 1 äî 9 òà çàïèñàòè ¿õ äî êë³òèíîê òàáëèö³ 3´3 òàê, ùî ¿õ ñóìà ó áóäüÿêîìó ðÿäêó, ñòîâïö³ àáî ïî ä³àãîíàë³ áóäå îäíàêîâîþ. Âè ìîæåòå íàïèñàòè ïðîãðàìó, ñïèðàþ÷èñü íà ö³ äàí³? Ðîçðîá³òü òàêó ôîðìó, ÿê ïîêàçàíî íà ðèñóíêó. ßêùî õî÷åòå çåêîíîìèòè ÷àñ, ìîæåòå âèêîðèñòàòè ôîðìó ç ïàïêè Âïðàâà_9.2.

145


Êîëè âè êëàöàºòå íà êíîïö³ Ïåðåâ³ðèòè ñóìó, îá÷èñëþþòüñÿ ñóìè ÷èñåë ó òðüîõ ðÿäêàõ, òðüîõ ñòîâï÷èêàõ òà ó äâîõ ä³àãîíàëÿõ, à ðåçóëüòàòè ç’ÿâëÿþòüñÿ ó òåêñòîâèõ ïîëÿõ TextBox10–TextBox17 (ðÿäîê ïîë³â çíèçó òà ñòîâï÷èê ïîë³â ïðàâîðó÷). Îñê³ëüêè òåêñòîâå ïîëå ì³ñòèòü ðÿäêîâ³ äàí³, à íå ÷èñëà, âàì äîâåäåòüñÿ ïåðåòâîðèòè ¿õ íà ÷èñëà. Öå ìîæíà çðîáèòè, çîêðåìà, çà äîïîìîãîþ ôóíêö³¿ Val: X = Val(TextBox1.Text) Ôóíêö³ÿ Val ïåðåòâîðþº òåêñòîâèé ðÿäîê íà çàïèñàíå ó íüîìó ÷èñëîâå çíà÷åííÿ. Ïîò³ì âè çìîæåòå íàäàòè öå çíà÷åííÿ çì³íí³é àáî âèêîðèñòàòè éîãî â îïåðàòîð³ If. Âñ³ ñóìè ïîâèíí³ äîð³âíþâàòè 15. Ñóìà ÷èñåë â óñ³õ äåâ’ÿòè òåêñòîâèõ ïîëÿõ ñòàíîâèòèìå 45. Íàïèñ Label2 ó íèæí³é ÷àñòèí³ ôîðìè ìîæíà âèêîðèñòàòè äëÿ ïîâ³äîìëåííÿ ïðî óñï³õ, äëÿ çàîõî÷åííÿ ãðàâöÿ äî íîâèõ ñïðîá, àáî äëÿ ïîâ³äîìëåííÿ ïðî íåêîðåêòí³ñòü âõ³äíèõ äàíèõ. Êîëè ïðîãðàìà çàïðàöþº ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðîâ³. Ãîòîâ³ âèêîíàòè çàâäàííÿ?

Çàâäàííÿ 9. Îðåë ÷è ðåøêà Êîæíîãî ðàçó, êîëè ìè íå ìîæåìî ä³éòè çãîäè, íàïðèêëàä, ùîäî òîãî, ÷èÿ ÷åðãà âèíîñèòè ñì³òòÿ ç ìàøèíè, ìè êèäàºìî ìîíåòó. Äàâàéòå çðîáèìî òàê, ùîá öå çà íàñ ðîáèâ êîìï’þòåð. Ïîáà÷èìî, ÷è çìîæåìî ìè âãàäàòè, ùî âèïàäå — îðåë ÷è ðåøêà. Ñòâîð³òü òàêó ôîðìó, ÿê ïîêàçàíî íà ðèñóíêó, àáî ìîæåòå âèêîðèñòàòè ôîðìó ç ïàïêè Çàâäàííÿ_9.

Êîëè óñòàíîâëåíî â³äïîâ³äíèé ïåðåìèêà÷, àòðèáóòó TextBox1.Text ïîòð³áíî íàäàòè çíà÷åííÿ "Îðåë" àáî "Ðåøêà". Êîëè õòîñü êëàöຠíà êíîïö³ ϳäêèíóòè ìîíåòó, ãåíåðóºòüñÿ âèïàäêîâå ÷èñëî. Öþ ä³þ âèêîíóº òàêèé êîä: Dim MyRandomGenerator As System.Random MyRandomGenerator = New System.Random

146


Dim RanNum As Integer ' Ãåíåðóºìî âèïàäêîâå çíà÷åííÿ â³ä 0 äî 2, âèêëþ÷àþ÷è 2. RanNum = MyRandomGenerator.Next(0, 2) l

ßêùî âèïàäêîâå ÷èñëî äîð³âíþº íóëþ, àòðèáóòó TextBox2.Text íàäàºòüñÿ çíà÷åííÿ "Îðåë", ³íàêøå — "Ðåøêà".

l

ßêùî çíà÷åííÿ àòðèáóòà TextBox1.Text äîð³âíþº çíà÷åííþ àòðèáóòà TextBox2. Text, îäèíèöÿ ìຠáóòè äîäàíà äî ê³ëüêîñò³ âèãðàø³â, ³íàêøå — äî ê³ëüêîñò³ ïðîãðàø³â.

Ó ÀÃÀ Ç ìîäóëÿ 7 âè ä³çíàëèñÿ, ùî íå ìîæíà ïëóòàòè ÷èñëà ³ç ðÿäêàìè. Ïàðàìåòð Text çàâæäè ìຠðÿäêîâå çíà÷åííÿ. Visual Basic .NET äîçâîëÿº äîäàâàòè çíà÷åííÿ äî òåêñòîâîãî ïîëÿ, ÿêùî ó íüîìó âæå ì³ñòèòüñÿ ÷èñëî, àëå êðàùå òàê íå ðîáèòè. Âèçíà÷òå îäíó ö³ëî÷èñëîâó çì³ííó äëÿ çàïàì’ÿòîâóâàííÿ ê³ëüêîñò³ âèãðàø³â, à ³íøó — äëÿ ê³ëüêîñò³ ïðîãðàø³â. Çá³ëüøóéòå çíà÷åííÿ öèõ çì³ííèõ. Ïîò³ì âè çìîæåòå çàïèñàòè îòðèìàí³ çíà÷åííÿ çì³ííèõ äî òåêñòîâèõ ïîë³â. Êîëè ïðîãðàìà ïðàöþâàòèìå ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðó.

Äîäàòêîâå çàâäàííÿ Äîäàéòå ïîëÿ, ó ÿêèõ áóäå ïîêàçàíî ïðîöåíòíå ñï³ââ³äíîøåííÿ âèãðàø³â òà ïðîãðàø³â.

147


Äîëèíà ïîâòîðåíü, Êàë³ôîðí³ÿ Ìè âïåâíåíî ïðîñóâàºìîñÿ ó ö³é ïîäîðîæ³! Íàñòóïíèé ïóíêò ïðèçíà÷åííÿ — Äîëèíà ïîâòîðåíü! Öå äîñèòü ïóñòèííå ì³ñöå, ó ÿêîìó áàãàòî ï³ñêó, à á³ëüøå í³÷îãî íåìàº. Ìåí³ çàâæäè ñòðàøíî òàì çàáëóêàòè! Âè ìîæåòå ¿çäèòè îêîëèöÿìè ïðîòÿãîì ê³ëüêîõ äí³â, à ïîò³ì âèÿâèòüñÿ, ùî âè í³êóäè íå ä³ñòàëèñÿ, ïðîñòî çðîáèëè îäíå âåëèêå êîëî. Îñü òàê ìîæíà „öèêëóâàòè” ö³ëèìè äíÿìè! Ó ö³é ÷àñòèí³ ïîäîðîæ³ ìè ï³äåìî ó çîâñ³ì ³íøîìó íàïðÿìêó. Äóìàþ, âè âæå íàáèëè ðóêó íà íàïèñàíí³ êîäó, ùî ïðèéìຠð³øåííÿ. Òåïåð ÿ çáèðàþñÿ ïîêàçàòè âàì, ÿê ïèñàòè êîä, ùî âèêîíóº öèêëè. Öèêëè âèêîðèñòîâóþòüñÿ äëÿ áàãàòîðàçîâîãî âèêîíàííÿ îäíèõ ³ òèõ ñàìèõ îïåðàòîð³â êîäó. Ïðîãðàì³ñò ïîâèíåí çíàòè, ÿê ïèñàòè öèêëè, ÿê³ º ùå îäí³ºþ óí³âåðñàëüíîþ „çáðîºþ” ç àðñåíàëó ïðîãðàì³ñòà.

Öèêëè Ó æèòò³ ìè ÷àñòî ðîáèìî îäí³ é ò³ æ ñàì³ ðå÷³ çíîâó é çíîâó. Ïðèãàäóþ, ÿê ÿ ôàðáóâàâ ñâ³é ìîòîöèêë. ß òðè÷³ ïîêðèâ éîãî ôàðáîþ. Ç íèì áóëî áàãàòî ðîáîòè, àëå âðåøò³-ðåøò â³í ìàâ ÷óäîâèé âèãëÿä. Ìàìà êàæå, ùî ¿é äîâîäèòüñÿ ãîâîðèòè ìåí³, ùîá ÿ âèí³ñ ñì³òòÿ, ð³âíî ï’ÿòü ðàç³â, ïåðø í³æ ÿ öå çðîáëþ. (ß ï³äðàõîâóâàâ, íàñïðàâä³ ¿é äîâîäèòüñÿ ïîâòîðþâàòè ëèøå ÷îòèðè ðàçè!) Òàê ñàìî ³ ç ïðîãðàìàìè. ²íîä³ âàì ïîòð³áíî, ùîá âàøà ïðîãðàìà âèêîíóâàëà îäíó é òó ñàìó ä³þ çíîâó é çíîâó, äîêè âîíà íå âèêîíຠ¿¿ ïåâíó ê³ëüê³ñòü ðàç³â. Òîìó â óñ³õ ìîâàõ ïðîãðàìóâàííÿ º öèêëè. Êîä ó öèêëàõ âèêîíóºòüñÿ çíîâó é çíîâó. Öèêëè äóæå çðó÷í³ ó âèêîðèñòàíí³. Çàâäÿêè öèêëàì çìåíøóºòüñÿ îáñÿã êîäó, ÿêèé âàì äîâîäèòüñÿ ïèñàòè. Êîëè âè âñòàâëÿºòå îïåðàòîð ó öèêë, âàì ïîòð³áíî íàïèñàòè éîãî ëèøå îäèí ðàç, à âèêîíóâàòèñü â³í ìîæå áàãàòî ðàç³â. Çâè÷àéíî, òàêèé ï³äõ³ä äîïîìàãຠçìåíøèòè ê³ëüê³ñòü ïîìèëîê. Îñü ïðèêëàä íååôåêòèâíîãî êîäóâàííÿ. Óÿâ³òü, ùî âàì ïîòð³áíî äîäàòè óñ³ ÷èñëà ì³æ 1 òà 100. Âè ìîæåòå çðîáèòè öå, íàïèñàâøè îäíå äîâãå ð³âíÿííÿ, íàïðèêëàä: Dim TotalCount As Integer TotalCount = 0 TotalCount = 1 + 2 + 3 + 4 'òîùî. Âàæêóâàòî?! ×èì áè öå çàì³íèòè? Dim TotalCount As Integer TotalCount = 0 TotalCount = TotalCount + TotalCount = TotalCount + TotalCount = TotalCount + TotalCount = TotalCount +

1 1 1 1 'òîùî.

151


Ùå á³ëüøå êîäó, ÿêèé ïîâòîðþºòüñÿ! Îäèí ðÿäîê âàì äîâåäåòüñÿ ïîâòîðþâàòè ñòî ðàç³â! À ÿêùî éòèìåòüñÿ ïðî ÷èñëà â³ä 1 äî 1000? ßê âè ¿õ çáèðàºòåñÿ äîäàâàòè?

For…Next Îñü òóò ³ ç’ÿâëÿþòüñÿ öèêëè. ßê óæå çãàäóâàëîñÿ, â óñ³õ ìîâàõ ïðîãðàìóâàííÿ º öèêëè, ùî äîçâîëÿþòü âèêîíóâàòè êîä çíîâó é çíîâó. ²íêîëè âàì â³äîìî, ñê³ëüêè ðàç³â ìຠâèêîíóâàòèñÿ êîä. Ó ïðèêëàä³, ÿêèé ÿ íàâîäèâ ³ç ÷èñëàìè â³ä 1 äî 1000, íàì áóëî ïîòð³áíî, ùîá êîä, ó ÿêîìó äîäàþòüñÿ ÷èñëà, âèêîíóâàâñÿ 1000 ðàç³â. Êîëè âàì â³äîìî, ñê³ëüêè ðàç³â ïîâèíåí âèêîíóâàòèñÿ êîä, âè âèêîðèñòîâóºòå âèçíà÷åíèé öèêë. ³í òàê íàçèâàºòüñÿ, îñê³ëüêè âèêîíóºòüñÿ âèçíà÷åíó ê³ëüê³ñòü ðàç³â. Âè âèêîðèñòîâóºòå öèêë, ùîá âêàçàòè, ñê³ëüêè ñàìå ðàç³â ïîâèíåí âèêîíóâàòèñÿ ïåâíèé ôðàãìåíò êîäó. Ó Visual Basic .NET âèçíà÷åíèé öèêë óòâîðþºòüñÿ çà äîïîìîãîþ îïåðàòîðà For...Next. Êîä, ÿêèé ïîâèíåí âèêîíóâàòèñÿ âèçíà÷åíó ê³ëüê³ñòü ðàç³â, ì³ñòèòüñÿ âñåðåäèí³ öèêëó For...Next. Öèêë For...Next ó Visual Basic .NET ìຠòàêèé ñèíòàêñèñ: Dim LoopCounter As Integer For LoopCounter = Ïî÷àòêîâåÇíà÷åííÿ To ʳíöåâåÇíà÷åííÿ îïåðàòîð 1 îïåðàòîð 2 îïåðàòîð N Next Çàóâàæòå, ùî ñëîâà For, Next òà To º êëþ÷îâèìè. Ó ñåðåäîâèù³ Visual Studio âîíè âèä³ëÿþòüñÿ ñèí³ì òà ïèøóòüñÿ ç âåëèêî¿ ë³òåðè. LoopCounter — öå çì³ííà ö³ëî÷èñëîâîãî òèïó, ÿêó âè ìàºòå îãîëîñèòè äî òîãî, ÿê âîíà áóäå âèêîðèñòàíà ó öèêë³ For...Next. Öÿ çì³ííà íàçèâàºòüñÿ ë³÷èëüíèêîì öèêëó (âîíà íå îáîâ’ÿçêîâî ïîâèííà ìàòè ³ì’ÿ LoopCounter). Çà äîïîìîãîþ çì³ííî¿ LoopCounter ïðîãðàìà â³äñòåæóº, ñê³ëüêè ðàç³â âèêîíàâñÿ öèêë. Çñåðåäèíè öèêëó âè ìîæåòå îòðèìàòè äîñòóï äî çì³ííî¿ LoopCounter. Ïî÷àòêîâåÇíà÷åííÿ òà ʳíöåâåÇíà÷åííÿ ìàþòü áóòè ö³ëèìè ÷èñëàìè, çì³ííèìè ö³ëî÷èñëîâîãî òèïó àáî âèðàçàìè, ðåçóëüòàòàìè îá÷èñëåííÿ ÿêèõ º ö³ë³ ÷èñëà (íàïðèêëàä, 3 + 1 àáî X + 1). Ïî÷àòêîâåÇíà÷åííÿ — öå ïî÷àòêîâå çíà÷åííÿ çì³ííî¿ LoopCounter. Êîæíîãî ðàçó ï³ñëÿ âèêîíàííÿ ò³ëà öèêëó (òàê íàçèâàºòüñÿ ãðóïà îïåðàòîð³â âñåðåäèí³ öèêëó) çíà÷åííÿ çì³ííî¿ LoopCounter çá³ëüøóºòüñÿ íà îäèíèöþ. Êîëè çíà÷åííÿ çì³ííî¿ LoopCounter ñòຠá³ëüøèì çà ê³íöåâå çíà÷åííÿ, âèêîíàííÿ öèêëó ïðèïèíÿºòüñÿ. Äàâàéòå íàïèøåìî êîä, ó ÿêîìó áóäå âèêîðèñòîâóâàòèñÿ âèçíà÷åíèé öèêë. Ñïî÷àòêó ìè ñòâîðèìî öèêë, ùî âèêîíóºòüñÿ ëèøå äâ³÷³ òà â³äîáðàæຠçíà÷åííÿ ë³÷èëüíèêà ï³ä ÷àñ êîæíîãî âèêîíàííÿ. Ñòâîð³òü íîâó Windows-ïðîãðàìó ³ íàçâ³òü ¿¿ ForNextTwo. Äîäàéòå êîìàíäíó

152


êíîïêó äî ôîðìè Form1. ³äðåäàãóéòå îáðîáíèê ïî䳿 êëàöàííÿ íà êíîïö³. Äîäàéòå äî íüîãî òàêèé êîä: Dim LoopCounter As Integer For LoopCounter = 1 To 2 MessageBox.Show(LoopCounter) Next Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Êëàöí³òü íà êíîïö³. ǒÿâèòüñÿ â³êíî ïîâ³äîìëåííÿ ç òåêñòîì „1”— öå ïîòî÷íå çíà÷åííÿ çì³ííî¿ LoopCounter. Êëàöí³òü íà êíîïö³ OK. ǒÿâèòüñÿ ïîâ³äîìëåííÿ ç òåêñòîì „2”: òåïåð ïîòî÷íå çíà÷åííÿ çì³ííî¿ LoopCounter äîð³âíþº äâîì. Êëàöí³òü íà êíîïö³ OK. Âèêîíàííÿ öèêëó çàâåðøèëîñÿ, òîìó á³ëüøå ïîâ³äîìëåíü íå ç’ÿâëÿºòüñÿ. Ðîçãëÿíåìî âèêîíàííÿ êîäó óâàæí³øå. Âè îãîëîñèëè ö³ëî÷èñëîâó çì³ííó ç ³ìåíåì LoopCounter. Ó ðÿäêó For âè íàäàëè çì³íí³é LoopCounter ïî÷àòêîâå çíà÷åííÿ 1, à âåðõíüîþ ìåæåþ çðîáèëè ÷èñëî 2. Îïåðàòîð, ùî áóäå âèêîíóâàòèñÿ äâ³÷³, âè ïîì³ñòèëè ì³æ îïåðàòîðàìè For òà Next. Êîæíîãî ðàçó, êîëè âèêîíóâàâñÿ öèêë, çíà÷åííÿ çì³ííî¿ LoopCounter çá³ëüøóâàëîñÿ íà îäèí. Ó â³êí³ ïîâ³äîìëåííÿ âèâîäèëîñÿ ïîòî÷íå çíà÷åííÿ çì³ííî¿ LoopCounter (1, 2). Êîëè çíà÷åííÿ LoopCounter ñÿãàëî òðüîõ, öèêë çàâåðøóâàâ ñâîþ ðîáîòó ³ â³êíî ïîâ³äîìëåííÿ á³ëüøå íå ç’ÿâëÿëîñÿ. ʳíåöü öèêëó!

Âèêîíàííÿ öèêëó For…Next ó ïîêðîêîâîìó ðåæèì³ Äàâàéòå äîñë³äèìî êîä öèêëó For...Next, ÿêèé âè ùîéíî íàïèñàëè, âèêîðèñòîâóþ÷è ³íñòðóìåíòè íàëàãîäæåííÿ Visual Studio .NET. Ìè ïðîñòåæèìî çà âèêîíàííÿì êîäó ðÿäîê çà ðÿäêîì ó ïîêðîêîâîìó ðåæèì³. Íàâîäèìî ³íñòðóêö³¿ ùîäî öüîãî. 1. Óñòàíîâ³òü òî÷êó ïåðåðèâàííÿ ó êîä³, ùî ì³ñòèòü îïåðàòîð For. Ïîáóäóéòå òà çàïóñò³òü ïðîãðàìó.

153


2. Êîëè â³äêðèºòüñÿ ôîðìà, êëàöí³òü íà êíîïö³ Button1. Êîä áóäå âèêîíàíî äî òî÷êè ïåðåðèâàííÿ. Ðÿäîê êîäó, ïîì³÷åíèé òî÷êîþ ïåðåðèâàííÿ, áóäå âèä³ëåíî.

3. Íàòèñí³òü êëàâ³øó F11. Áóäå âèêîíàíî âèä³ëåíèé ðÿäîê êîäó: For LoopCounter = 1 To 2 Ïåðåì³ñò³òü êóðñîð äî çì³ííî¿ LoopCounter. Çíà÷åííÿ çì³ííî¿ LoopCounter ñòàíîâèòü 1.

4. Íàòèñí³òü êëàâ³øó F11. Áóäå âèêîíàíî âèä³ëåíèé ðÿäîê êîäó: MessageBox.Show(LoopCounter) Ó â³êí³ ïîâ³äîìëåííÿ áóäå âèâåäåíî îäèíèöþ. Êëàöí³òü íà êíîïö³ OK, ùîá çàêðèòè â³êíî ïîâ³äîìëåííÿ.

5. Íàòèñí³òü êëàâ³øó F11. Áóäå âèêîíàíî âèä³ëåíèé ðÿäîê êîäó: Next

154


6. ² çíîâó âèêîíóºòüñÿ öèêë For: For LoopCounter = 1 To 2 Ïåðåì³ñò³òü êóðñîð äî çì³ííî¿ LoopCounter. Òåïåð ¿¿ çíà÷åííÿ ñòàíîâèòü 2.

7. Íàòèñí³òü êëàâ³øó F11. Áóäå âèêîíàíî âèä³ëåíèé ðÿäîê êîäó: MessageBox.Show(LoopCounter) Ó â³êí³ ïîâ³äîìëåííÿ áóäå âèâåäåíî ÷èñëî 2. Êëàöí³òü íà êíîïö³ OK, ùîá çàêðèòè â³êíî ïîâ³äîìëåííÿ.

8. Íàòèñí³òü êëàâ³øó F11. Áóäå âèêîíàíî âèä³ëåíèé ðÿäîê êîäó. Next

9. Çíîâó âèêîíóºòüñÿ öèêë For. For LoopCounter = 1 To 2

155


Ïåðåì³ñò³òü êóðñîð äî çì³ííî¿ LoopCounter â îïåðàòîð³ For. Çíà÷åííÿ LoopCounter ñòàíîâèòü 3. 10.Íàòèñí³òü êëàâ³øó F11. Áóäå âèêîíàíî âèä³ëåíèé ðÿäîê êîäó: End Sub Ôîðìà ç’ÿâèòüñÿ çíîâó. Çàóâàæòå, ùî îñòàííüîãî ðàçó îïåðàòîð âñåðåäèí³ öèêëó íå âèêîíóâàâñÿ, îñê³ëüêè çíà÷åííÿ ë³÷èëüíèêà ïåðåâèùèëî ê³íöåâå çíà÷åííÿ.

Âè ùîéíî âèêîðèñòàëè ³íñòðóìåíòè íàëàãîäæåííÿ, ùîá ïåðåãëÿíóòè ðîáîòó öèêëó For... Next ó ïîêðîêîâîìó ðåæèì³. Ó òàêèé ñïîñ³á âè ä³çíàëèñÿ, ÿê âèêîíóºòüñÿ êîä.

1000 äîäàâàíü Ó ìåíå º ³äåÿ! Äàâàéòå íàïèøåìî êîä, ó ÿêîìó áóäóòü äîäàâàòèñÿ ö³ë³ ÷èñëà â³ä 1 äî 1000. Öå ëåãêî çðîáèòè çà äîïîìîãîþ öèêëó For...Next. Ñòâîð³òü Windows-ïðîãðàìó, ùî íàçèâàòèìåòüñÿ AddUp (Äîäàâàííÿ). Äîäàéòå êîìàíäíó êíîïêó äî ôîðìè Form1. Çì³í³òü çíà÷åííÿ àòðèáóòà Text êíîïêè Button1 íà Äîäàòè. Äâ³÷³ êëàöí³òü íà êíîïö³ Button1, ùîá çì³íèòè îáðîáíèê ïî䳿 êëàöàííÿ íà êíîïö³. Äîäàéòå òàêèé êîä: Dim LoopCounter As Integer Dim TotalCount As Integer = 0 For LoopCounter = 1 To 1000 TotalCount = TotalCount + LoopCounter Next MessageBox.Show(TotalCount) Ïîáóäóéòå òà çàïóñò³òü ïðîãðàìó. Êëàöí³òü íà êíîïö³ Äîäàòè. Ó â³êí³ ïîâ³äîìëåííÿ áóäå âèâåäåíà ñóìà âñ³õ ö³ëèõ ÷èñåë â³ä 1 äî 1000. Øâèäêî? Âè íàïèñàëè êîä, à ïðîãðàìà ï³äðàõóâàëà â³äïîâ³äü øâèäøå, í³æ âè âñòèãëè á âèòÿãòè êàëüêóëÿòîð! ßê ïðàöþº öåé êîä? Ñïî÷àòêó ìè îãîëîøóºìî äâ³ ö³ëî÷èñëîâîãî òèïó çì³íí³: LoopCounter òà TotalCount. Çì³ííà LoopCounter „ñòåæèòü” çà òèì, ñê³ëüêè ðàç³â âèêîíóºòüñÿ öèêë. Ó çì³íí³é TotalCount çáåð³ãàºòüñÿ ðåçóëüòàò äîäàâàííÿ. Ó öèêë³ For çì³íí³é LoopCounter íàäàºòüñÿ ïî÷àòêîâå çíà÷åííÿ 1, à ê³íöåâå çíà÷åííÿ ïîêëàäàºòüñÿ ð³âíèì 1000, îñê³ëüêè ìè õî÷åìî, ùîá öèêë âèêîíóâàâñÿ 1000 ðàç³â. Îïåðàòîð, ùî ïîâòîðþºòüñÿ, äîäຠïîòî÷íå çíà÷åííÿ çì³ííî¿ TotalCount äî ïîòî÷íîãî çíà÷åííÿ LoopCounter òà çáåð³ãຠîá÷èñëåíå

156


çíà÷åííÿ çíîâó ó çì³íí³é TotalCount. Îòæå, êîæíî¿ ³òåðàö³¿ öèêëó çíà÷åííÿ çì³ííî¿ LoopCounter äîäàºòüñÿ äî çì³ííî¿ TotalCount (0+1=1, 1+2=3, 3+3=6, 6+4=10 òîùî). Êîëè çíà÷åííÿ çì³ííî¿ LoopCounter ñÿãíå 1000, öèêë çàâåðøèòüñÿ. Ïðîãðàìà „âèõîäèòü” ³ç öèêëó, ³ âèêîíóºòüñÿ íàñòóïíèé ï³ñëÿ îïåðàòîðà Next ðÿäîê êîäó — âèâåäåííÿ çíà÷åííÿ çì³ííî¿ TotalCount ó â³êí³ ïîâ³äîìëåííÿ.

Âèíîñèìî ñì³òòÿ Òåïåð ïîäèâèìîñÿ, ÿê âèçíà÷åíèé öèêë âèêîíóº íå ìàòåìàòè÷í³ îá÷èñëåííÿ, à ùîñü ³íøå. Ïàì’ÿòàéòå: âè ìîæåòå çàïèñàòè áóäü-ÿêèé êîä óñåðåäèí³ öèêëó For...Next. Âè ìîæåòå àâòîìàòè÷íî ñòâîðþâàòè äîâã³ òåêñòîâ³ ðÿäêè ³ç äðàò³âëèâèìè ïîâ³äîìëåííÿìè, ÿê³ áóäóòü âèâîäèòèñÿ çíîâó é çíîâ, àáî çì³íþâàòè çíà÷åííÿ àòðèáóò³â, âðàõîâóþ÷è çíà÷åííÿ ë³÷èëüíèêà öèêëó. Ïåðåãëÿíüòå ö³ ïðèêëàäè, ùîá ä³çíàòèñÿ ïðî ³íø³ ìîæëèâîñò³ çàñòîñóâàííÿ öèêë³â. Ñòâîð³òü íîâó Windows-ïðîãðàìó ï³ä íàçâîþ GarbageOut (Âèíîñèìî ñì³òòÿ). Äîäàéòå äî ôîðìè Form1 êîìàíäó êíîïêó. Çì³í³òü çíà÷åííÿ àòðèáóòà Text êíîïêè Button1 íà Ìàìà ãîâîðèòü. Äâ³÷³ êëàöí³òü íà êíîïö³ Button1, ùîá çì³íèòè êîä îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³. Äîäàéòå òàêèé êîä: Dim MomMessage As String Dim i As Integer = 0 MomMessage = "Áóäü-ëàñêà, âèíåñè ñì³òòÿ." For i = 1 To 5 MessageBox.Show(MomMessage) MomMessage = MomMessage & vbNewLine & MomMessage Next Ïîáóäóéòå ïðîåêò òà çàïóñò³òü éîãî. Êëàöí³òü íà êíîïö³ Ìàìà ãîâîðèòü. Âè ïîáà÷èòå ìàìèí³ ñëîâà. Êëàöí³òü íà êíîïö³ ÎÊ. Çàóâàæòå, ùî ìàìèíå ïîâ³äîìëåííÿ ñòຠâñå á³ëüøèì ³ á³ëüøèì. Äîáðå, äîáðå! Çäàºòüñÿ, ÿ çðîçóì³â! Öèêë — îäèí ³ç çàñîá³â ïîºäíàííÿ òåêñòó. Ðîçãëÿíåìî ³íøèé ïðèêëàä. Äîäàéòå ùå îäíó êîìàíäó êíîïêó äî ôîðìè Form1. Çì³í³òü çíà÷åííÿ àòðèáóòà Text êíîïêè Button2 íà Çðîáèòè êîëüîðîâîþ çíîâ. Äâ³÷³ êëàöí³òü íà êíîïö³ Button2, ùîá çì³íèòè îáðîáíèê ïî䳿 êëàöàííÿ íà êíîïö³. Äîäàéòå äî íüîãî òàêèé êîä: Dim i As Integer = 0 For i = 2 To 6 If i < 3 Or i > 5 Then MessageBox.Show(i) Form1.ActiveForm.BackColor = System.Drawing.Color.Red Else

157


MessageBox.Show(i) Form1.ActiveForm.BackColor = System.Drawing.Color.Blue End If Next Ïîáóäóéòå ïðîåêò òà çàïóñò³òü éîãî. Êëàöí³òü íà êíîïö³ Çðîáèòè êîëüîðîâîþ çíîâ. Áóäå âèâåäåíî â³êíî ïîâ³äîìëåííÿ ç ïîòî÷íèì çíà÷åííÿì ë³÷èëüíèêà öèêë³â. Çàóâàæòå, ùî òåïåð ïî÷àòêîâå çíà÷åííÿ ë³÷èëüíèêà äîð³âíþº äâîì, à ê³íöåâå — øåñòè. Îïåðàòîð If...Then... Else ó öèêë³ For...Next „âèð³øóº”, ÿê çì³íèòè êîë³ð ôîðìè, çàëåæíî â³ä çíà÷åííÿ ë³÷èëüíèêà öèêëó. ß äîäàâ äî ïðîãðàìè îïåðàòîð âèâåäåííÿ â³êíà ïîâ³äîìëåííÿ, ùîá âè ìîãëè áà÷èòè çíà÷åííÿ ë³÷èëüíèêà öèêëó. Ïðè âèâåäåíí³ â³êíà ïîâ³äîìëåííÿ âèêîíàííÿ öèêëó ïåðåðèâàºòüñÿ, ³ âè ìîæåòå ïîáà÷èòè çì³íó êîëüîðó.

Âïðàâà 10.1. Ðàõóºìî êðîëèê³â Îáåðåæí³øå! Òè ìàëî íå çáèâ êðîëèêà, ùî ïåðåá³ãàâ äîðîãó! ßê òè ãàäàºø, ìàáóòü, òîé êðîëèê ââàæàº, ùî æèòèìå â³÷íî? Çà÷åêàéòå, ó ìåíå âèíèêëà ³äåÿ. Ïðèïóñò³ìî, ùî êðîëèêè ìîæóòü æèòè â³÷íî. Íàïðèêëàä, íåõàé äå-íåáóäü º îñòð³â, íà ÿêîìó ð³ñò ðîñëèííîñò³ í³÷èì íå îáìåæóºòüñÿ, à õèæàêè ïîâí³ñòþ â³äñóòí³. Ïðèïóñò³ìî, íà îñòð³â ïîïàäàþòü äâà êðîëèêè ³ äàþòü ïðèïë³ä ç ÷îòèðüîõ êðîëèê³â. Ó êîæíî¿ íàñòóïíî¿ ïàðè íàðîäæóºòüñÿ òàêîæ äâà êðîëèêè. Îòæå, ÷åðåç îäíå ïîêîë³ííÿ íà îñòðîâ³ áóäå 2 + 4 = 6 êðîëèê³â. ×åðåç äâà ïîêîë³ííÿ — 6 + 12 =18 êðîëèê³â. ßê çá³ëüøóâàòèìåòüñÿ ïîïóëÿö³ÿ êðîëèê³â ç ïîÿâîþ êîæíîãî íîâîãî ïîêîë³ííÿ? Íàìàëþéòå ôîðìó, ÿêó ïîêàçàíî íà ðèñóíêó, àáî âèêîðèñòàéòå ôîðìó ç ïàïêè Âïðàâà_10.1.

158


Âèâåä³òü íîìåð ïîêîë³ííÿ, â³äïîâ³äíó ê³ëüê³ñòü êðîëèê³â òà ê³ëüê³ñòü êðîëèê³â íà êâàäðàòíèé ôóò, ïðèïóñêàþ÷è, ùî ïëîùà îñòðîâà äîð³âíþº îäí³é êâàäðàòí³é ìèë³, à ó ìèë³ 5280 ôóò³â. Çàáåçïå÷òå äëÿ êîðèñòóâà÷à ìîæëèâ³ñòü îáèðàòè íîìåð ïîêîë³ííÿ. Ùîá äàí³, ÿê³ âèâîäÿòüñÿ íà åêðàí, áóëî ëåãøå ÷èòàòè, âèêîðèñòàéòå êîíñòàíòè Visual Basic vbTab òà vbNewLine. Ùîá â³äôîðìàòóâàòè âèõ³äí³ äàí³, çàñòîñóéòå ôóíêö³þ Format. Íàïðèêëàä: VariableX = Format(VariableX, "###, ###, ###, ###, ##0") àáî VariableY = Format(VariableY, "###, ##0.0000") Êîëè ïðîãðàìà áóäå ïðàöþâàòè ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðó.

Öèêëè ó öèêëàõ Âàì â³äîìî, ùî âè ìîæåòå âñòàâèòè îäèí öèêë For...Next â ³íøèé? Âíóòð³øí³é öèêë For...Next — öå êîä, ùî áàãàòîðàçîâî âèêîíóºòüñÿ íà êîæí³é ³òåðàö³¿ çîâí³øíüîãî öèêëó For...Next (êîæíå âèêîíàííÿ ò³ëà öèêëó çâåòüñÿ éîãî ³òåðàö³ºþ). Òîæ ñê³ëüêè ðàç³â âèêîíóâàòèìåòüñÿ âíóòð³øí³é êîä? Äàâàéòå ïîäèâèìîñÿ íà ïðèêëàä, ùîá â³äïîâ³ñòè íà öå ïèòàííÿ. Ñòâîð³òü íîâó Windows-ïðîãðàìó ï³ä íàçâîþ LoopTheLoop (Çàöèêë³òü öèêë). Äîäàéòå êîìàíäíó êíîïêó äî ôîðìè Form1. Äâ³÷³ êëàöí³òü íà êíîïö³ Button1, ùîá çì³íèòè êîä îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³. Äîäàéòå òàêèé êîä: Dim Dim Dim Dim Dim For

OuterLimit As Integer = 3 InnerLimit As Integer = 4 OuterCounter As Integer ²nnerCounter As Integer Total As Integer = 0 OuterCounter = 1 To OuterLimit For InnerCounter = 1 To InnerLimit Total = Total + 1 Next Next MessageBox.Show("Ðàçîì: " & Total)

Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Êëàöí³òü íà êíîïö³. Áóäå âèâåäåíî â³êíî ïîâ³äîìëåííÿ ç òåêñòîì „Ðàçîì: 12”. Öå çàãàëüíà ê³ëüê³ñòü ³òåðàö³é âíóòð³øíüîãî öèêëó. Çíîâó ïîãëÿíüòå íà êîä. Âè ïîì³òèëè, ùî 12 äîð³âíþº 3 (ê³ëüê³ñòü ðàç³â âèêîíàííÿ âíóòð³øíüîãî öèêëó), ïîìíîæåíå íà 4 (ê³ëüê³ñòü ðàç³â âèêîíàííÿ çîâí³øíüîãî öèêëó)? Ïðàâèëüíî! Êîæíîãî ðàçó, êîëè âèêîíóºòüñÿ çîâí³øí³é öèêë, âíóòð³øí³é öèêë âèêîíóºòüñÿ ÷îòèðè ðàçè. Îñê³ëüêè çîâí³øí³é öèêë âèêîíóºòüñÿ òðè÷³, öå îçíà÷àº, ùî âíóòð³øí³é öèêë âèêîíóºòüñÿ 4 ´ 3=12 ðàç³â.

159


Çàóâàæòå, ùî ó öüîìó ïðèêëàä³ ìè âèêîðèñòàëè äâ³ çì³ííèõ, OuterLimit òà InnerLimit, äëÿ îáìåæåííÿ ê³ëüêîñò³ ïîâòîðåíü çîâí³øíüîãî òà âíóòð³øíüîãî öèêë³â. ʳëüê³ñòü ïîâòîðåíü íå îáîâ’ÿçêîâî ìຠáóòè ö³ëèì ÷èñëîì, âîíà ìîæå áóòè çì³ííîþ àáî âèðàçîì, ùî ìຠö³ëî÷èñëîâå çíà÷åííÿ. Çâåðí³òü óâàãó òàêîæ íà âèä³ëåííÿ â³äñòóïàìè âíóòð³øíüîãî öèêëó.

Îïåðàòîð âèõîäó ç öèêëó ϳä ÷àñ äîâãèõ ïåðå¿çä³â âàì ³íîä³ ïîòð³áíî ðîáèòè íåâåëè÷êè çóïèíêè. Ñàìå òîä³ ìè øóêàºìî ìîæëèâ³ñòü 璿õàòè ç àâòîáàíó, ùîá ïîáà÷èòè ³íøèé ïåéçàæ. Ãàäàþ, òàê ñàìî ³íîä³ â³äáóâàºòüñÿ é ç êîäîì. Éîìó òàêîæ ³íîä³ ïîòð³áí³ çóïèíêè. Óÿâ³òü ñîá³, ÿê öå âàæêî äîäàòè óñ³ ÷èñëà â³ä 1 äî 1000! Âè á íå ñòîìèëèñÿ? ²íîä³ öèêë ïîòð³áíî çóïèíÿòè, ïåðø í³æ ë³÷èëüíèê öèêë³â ñÿãíå ìàêñèìàëüíîãî çíà÷åííÿ. Äëÿ öüîãî çàñòîñîâóºòüñÿ îïåðàòîð Exit For. ³í çàïèñóºòüñÿ âñåðåäèí³ îïåðàòîðà If...Then â ò³ë³ öèêëó. Äëÿ ïðèêëàäó íàïèø³ìî â³äïîâ³äíèé êîä. Ñòâîð³òü íîâó Windows-ïðîãðàìó, ùî íàçèâàòèìåòüñÿ ExitSign (Çíàê âèõîäó). Äîäàéòå êîìàíäíó êíîïêó äî ôîðìè Form1. Çì³í³òü çíà÷åííÿ àòðèáóòà Text êíîïêè Button1 íà Âèéòè çàðàç. Äâ³÷³ êëàöí³òü íà êíîïö³ Button1, ùîá çì³íèòè êîä îáðîáíèêà ïî䳿 êëàöàííÿ íà í³é. Äîäàéòå òàêèé êîä: Dim i As Integer = 0 For i = 1 To 5 MessageBox.Show("i âíóòð³øíº = " & i) If i = 3 Then Exit For End If Next MessageBox.Show("i çîâí³øíº = " & i) Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Êëàöí³òü íà êíîïö³ Âèéòè çàðàç. Áóäå âèâåäåíî â³êíî ïîâ³äîìëåííÿ ç³ çíà÷åííÿì ë³÷èëüíèêà öèêëó. Êîëè ë³÷èëüíèê öèêëó íàáóäå çíà÷åííÿ 3, âèêîíàºòüñÿ óìîâà îïåðàòîðà If...Then, à îòæå, é îïåðàòîð Exit For. Öèêë áóäå çàâåðøåíî áåç âèêîíàííÿ ðåøòè ³òåðàö³é. Çàóâàæòå, ùî òåêñò „i âíóòð³øíº = 4” í³êîëè íå áóäå âèâåäåíî. Êîëè öèêë çàâåðøèòüñÿ, ïî÷íå âèêîíóâàòèñÿ êîä ï³ñëÿ îïåðàòîðà Next ³ òîìó â³êíî ïîâ³äîìëåííÿ ì³ñòèòèìå òåêñò „i çîâí³øíº = 3”.

160


Îñü ³íøèé ïðèêëàä âèêîðèñòàííÿ îïåðàòîðà Exit For. Äîäàìî äî ïðîãðàìè ExitSign ïåâí³ ôóíêö³îíàëüí³ ìîæëèâîñò³. Äîäàéòå ïðàïîðåöü äî ôîðìè Form1. Äîäàéòå ùå îäíó êîìàíäíó êíîïêó äî ôîðìè Form1. Çì³í³òü çíà÷åííÿ ¿¿ àòðèáóòà Text íà Óñòàíîâèòè ïðàïîðåöü. Äâ³÷³ êëàöí³òü íà êíîïö³ Button2, ùîá çì³íèòè êîä îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³. Äîäàéòå òàêèé êîä: Dim LoopIndex As Integer For LoopIndex = 1 To 5 If LoopIndex = 4 Then CheckBox1.Checked = True End If If CheckBox1.Checked = True Then MessageBox.Show("Âèõ³ä ï³ñëÿ " & LoopIndex & "-õ ³òåðàö³é.") Exit For End If Next Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Êëàöí³òü íà êíîïö³ Óñòàíîâèòè ïðàïîðåöü. ǒÿâèòüñÿ â³êíî ïîâ³äîìëåííÿ ç òåêñòîì Óñòàíîâèòè ïðàïîðåöü. Öèêë For...Next âèêîíóâàòèìåòüñÿ, äîêè çíà÷åííÿ çì³ííî¿ LoopIndex íå äîð³âíþâàòèìå ÷îòèðüîì. Ïîò³ì àòðèáóòó Checked ïðàïîðöÿ CheckBox1 íàäàºòüñÿ çíà÷åííÿ True. Îñê³ëüêè ïðàïîðåöü òåïåð óñòàíîâëåíî, ó â³êí³ ïîâ³äîìëåííÿ áóäå â³äîáðàæåíî çíà÷åííÿ çì³ííî¿ LoopIndex òà âèêîíàºòüñÿ îïåðàòîð Exit For. Öèêë áóäå çàâåðøåíî. Òåïåð, êîëè ïðàïîðåöü óñòàíîâëåíî, êëàöí³òü íà êíîïö³ Óñòàíîâèòè ïðàïîðåöü çíîâó. Ùî ñòàíåòüñÿ öüîãî ðàçó? Îïåðàòîð Exit For áóäå âèêîíàíî, êîëè çíà÷åííÿ çì³ííî¿ LoopIndex ñòàíîâèòèìå 1.

Öèêë For…Next ó C# òà J# ßê ³ â óñ³õ ³íøèõ ñó÷àñíèõ ìîâàõ ïðîãðàìóâàííÿ, ó C# òà J# ìîæíà ñòâîðþâàòè âèçíà÷åí³ öèêëè! Ìîæëèâî, Äæåí òà ijðê òðîõè ðîçêàæóòü âàì ïðî íàïèñàííÿ öèêë³â For...Next ó öèõ ìîâàõ? C# òà J# ìàþòü åêâ³âàëåíòè öèêëó For...Next ç Visual Basic .NET, àëå ¿õ ñèíòàêñèñ ìຠäåùî ³íøèé âèãëÿä. Îñü ÿê âèãëÿäຠîïåðàòîð âèçíà÷åíîãî öèêëó â C#: for (int LoopCounter = 1; LoopCounter < 5; LoopCounter++) { MessageBox.Show(LoopCounter.ToString()); } Öåé êîä íå ñõîæèé íà öèêë For...Next ó Visual Basic .NET, àëå â³í âèêîíóº ò³ ñàì³ ä³¿. Ó C# íåìຠîïåðàòîðà Next, à êëþ÷îâå ñëîâî for ïèøåòüñÿ ìàëèìè ë³òåðàìè. Êîä, ÿêèé âèêîíóâàòèìåòüñÿ ó öèêë³, çàïèñóºòüñÿ ì³æ ô³ãóðíèìè äóæêàìè. Êîä ó êðóãëèõ äóæêàõ ï³ñëÿ êëþ÷îâîãî ñëîâà for óïðàâëÿº öèêëîì: int LoopCounter = 1;

161


Ó íüîìó îãîëîøóºòüñÿ çì³ííà ë³÷èëüíèêà öèêëó òà óñòàíîâëþºòüñÿ ¿¿ ïî÷àòêîâå çíà÷åííÿ. LoopCounter < 5; Óñòàíîâëþºòüñÿ óìîâíå òâåðäæåííÿ, ùî âèçíà÷ຠê³íöåâå çíà÷åííÿ ë³÷èëüíèêà. LoopCounter++ Çíà÷åííÿ ë³÷èëüíèêà öèêë³â çá³ëüøóºòüñÿ íà 1. Öåé âèðàç ìîæíà òàêîæ çàïèñàòè, ÿê LoopCounter = LoopCounter + 1 ² óñå öå â îäíîìó ðÿäêó êîäó! Îñü òîé ñàìèé êîä ìîâîþ J#. ³í ìຠòîé ñàìèé âèãëÿä, ùî ³ êîä C#, ïðîòå ó J# äëÿ ïåðåòâîðåííÿ çíà÷åííÿ çì³ííî¿ LoopCounter ç ö³ëî÷èñëîâîãî òèïó íà ðÿäêîâèé âèêîðèñòîâóºòüñÿ ôóíêö³ÿ System.Convert.ToString. for (int LoopCounter = 1; LoopCounter < 5; LoopCounter++) { MessageBox.Show(System.Convert.ToString(LoopCounter)); } — Äÿêóþ, ùî ïîêàçàëà íàì öåé êîä, Äæåí. Õî÷à öèêëè for ó C# ³ J# â³äð³çíÿþòüñÿ â³ä öèêëó For...Next ó Visual Basic .NET, ¿õ ïðèçíà÷åííÿ º òèì ñàìèì: ïîâòîðþâàòè âèêîíàííÿ êîäó çàäàíó ê³ëüê³ñòü ðàç³â.

Ïðèáóòòÿ äî Äîëèíè ïîâòîðåíü Ïîäîðîæ ïðîìàéíóëà äóæå øâèäêî! Äîáðå, ùî ìè íå çàáëóêàëè â ïóñòåë³, õî÷à, ìîæëèâî, ìè âñå ùå ¿çäèìî ïî êîëó! Äîðîãîþ ÿ ïîêàçàâ, ÿê ïðîãðàìóâàòè öèêëè For...Next. Öåé òèï öèêëó âèêîðèñòîâóºòüñÿ, êîëè âàì òî÷íî â³äîìî, ñê³ëüêè ðàç³â â³äáóâàòèìåòüñÿ ïîâòîðåííÿ êîäó. ß òàêîæ ïðîäåìîíñòðóâàâ ä³þ îïåðàòîðà Exit For, ÿêèé ïåðåðèâຠöèêë ïåðø, í³æ ë³÷èëüíèê íàáóäå ê³íöåâîãî çíà÷åííÿ. Äî íàáîðó ³íñòðóìåíò³â ïðîãðàìóâàííÿ, ÿêèìè âè âîëî䳺òå, äîäàâñÿ ùå îäèí. Ïîáà÷èìî, ÷è çìîæåòå âè çàñòîñóâàòè òå, ùî ä³çíàëèñÿ ïðî öèêë For...Next, êîëè âèêîíóâàòèìåòå âïðàâó. Îêð³ì òîãî, Êîì³òåò ðàë³ ï³äãîòóâàâ äëÿ âàñ ÷óäîâå çàâäàííÿ. Íå çàáóäüòå òàêîæ ïðî òåñò!

Âïðàâà 10.2. Ïðîñò³ ÷èñëà Õî÷ó ñüîãîäí³ ââå÷åð³ çàì³ñòü ï³öè 璿ñòè ïðîñòèé á³ôøòåêñ! Ïðîñòèé á³ôøòåêñ! Äî ðå÷³, ãîâîðÿ÷è ïðî ïðîñòå, çãàäàâ óðîê ç ìàòåìàòèêè, íà ÿêîìó ìè âèâ÷àëè ïðîñò³ ÷èñëà. Ïðîñòå ÷èñëî — öå ÷èñëî, ùî ä³ëèòüñÿ áåç çàëèøêó ëèøå íà ñåáå òà 1. Îñü ê³ëüêà ïðèêëàä³â òàêèõ ÷èñåë: 2, 3, 5, 7. ×èñëà 4, 6, 8 òà 9 íå º ïðîñòèìè, îñê³ëüêè 4, 6 òà 8 ä³ëÿòüñÿ íà 2, à 6 òà 9 — íà 3. Âè ìîæåòå íàïèñàòè ïðîãðàìó, ùî îá÷èñëèòü óñ³ ïðîñò³ ÷èñëà, á³ëüø³ çà îäèíèöþ òà ìåíø³ â³ä 5000?

162


Ñòâîð³òü òàêó ôîðìó, ÿê ïîêàçàíî íà ðèñóíêó, àáî âèêîðèñòàéòå ôîðìó ç ïàïêè Âïðàâà_10.2.

Êîëè êîðèñòóâà÷ êëàöíå íà êíîïö³ ³äíàéòè, ïðîãðàìà ìຠâ³äíàéòè âñ³ ìåíø³ â³ä 5000 ïðîñò³ ÷èñëà òà çàïèñàòè ¿õ äî òåêñòîâîãî ïîëÿ. Îñü ê³ëüêà ï³äêàçîê. Ç ïðîéäåíîãî ìàòåð³àëó âàì â³äîìî, ùî ìîæíà âèêîðèñòîâóâàòè êîä âñåðåäèí³ êîäó, íàïðèêëàä, îäèí îïåðàòîð If âñåðåäèí³ ³íøîãî. Âè òàêîæ ìîæåòå âèêîðèñòàòè îäèí öèêë For ó ò³ë³ ³íøîãî öèêëó For. Çîâí³øí³ì öèêëîì âè çàáåçïå÷èòå ïåðåáèðàííÿ ÷èñåë â³ä 2 äî 5000. Çíà÷åííÿì ë³÷èëüíèêà çîâí³øíüîãî öèêëó áóäå ÷èñëî, ÿêå ïåðåâ³ðÿºòüñÿ íà ïðîñòîòó. Ó âíóòð³øíüîìó öèêë³ ïåðåáèðàòèìóòüñÿ ïîòåíö³éí³ ä³ëüíèêè öüîãî ÷èñëà. ˳÷èëüíèê âíóòð³øíüîãî öèêëó ìîæå çì³íþâàòèñÿ â³ä 2 äî çíà÷åííÿ, ùî íà 1 ìåíøå â³ä çíà÷åííÿ ë³÷èëüíèêà çîâí³øíüîãî öèêëó. ×îìó ó âíóòð³øíüîìó öèêë³ íå ïîòð³áíî ïåðåâ³ðÿòè ÷èñëà, á³ëüø³ çà çíà÷åííÿ ë³÷èëüíèêà çîâí³øíüîãî öèêëó? Òîìó, ùî ÷èñëî íå ìîæå ä³ëèòèñÿ áåç çàëèøêó íà ÷èñëî, á³ëüøå çà ñåáå. ×îìó „íà 1 ìåíøå”? Òîìó, ùî áóäü-ÿêå ÷èñëî ä³ëèòüñÿ ñàìå íà ñåáå áåç çàëèøêó, îòæå, íàâ³ùî öå ïåðåâ³ðÿòè? Âàì ìîæå çíàäîáèòèñÿ áóëåâà çì³ííà, çà äîïîìîãîþ ÿêî¿ âè áóäåòå â³äñë³äêîâóâàòè, ÷è íå ä³ëèòüñÿ ë³÷èëüíèê çîâí³øíüîãî öèêëó íà ë³÷èëüíèê âíóòð³øíüîãî öèêëó íàö³ëî. Âè ìîæåòå íàäàòè ¿é çíà÷åííÿ True ïåðåä âíóòð³øí³ì öèêëîì, à ïîò³ì çì³íèòè éîãî íà False, ÿêùî âèÿâèòüñÿ, ùî ÷èñëî ìຠä³ëüíèê. Îòæå, ó âíóòð³øíüîìó öèêë³ âè ìàºòå ïåðåâ³ðÿòè, ÷è ïîòåíö³éíî ïðîñòå ÷èñëî ä³ëèòüñÿ íà ë³÷èëüíèê âíóòð³øíüîãî öèêëó áåç îñòà÷³. Ïðèïóñò³ìî, âàø³ ÷èñëà — öå X òà Y. Çâ³äêè âè çíàòèìåòå, ÷è X ä³ëèòüñÿ íà Y áåç îñòà÷³? ²ñíóº ê³ëüêà ñïîñîá³â âèçíà÷èòè öå. Îñê³ëüêè ìè íàìàãàºìîñÿ ïåðåâ³ðèòè âàø³ âì³ííÿ çàñòîñîâóâàòè öèêëè, à íå âàø³ çíàííÿ ìàòåìàòèêè, ï³äêàæåìî îäèí ³ç òàêèõ ñïîñîá³â. Ëåãøå çà âñå çðîáèòè öå çà äîïîìîãîþ îïåðàòîðà Mod: âèðàç X Mod Y äîð³âíþâàòèìå íóëþ òîä³ ³ ò³ëüêè òîä³, êîëè X ä³ëèòüñÿ íà Y áåç îñòà÷³.

163


ϳñëÿ âíóòð³øíüîãî öèêëó âè ìîæåòå âèâåñòè ïðîñòå ÷èñëî ó òåêñòîâîìó ïîë³, ÿêùî âèùåçãàäàíà áóëåâà çì³ííà âñå ùå ìຠçíà÷åííÿ True. Çâè÷àéíî, ïðîñò³ ÷èñëà ïîâèíí³ â³äîêðåìëþâàòèñü ïðîïóñêàìè. Êîëè ïðîãðàìà ïðàöþâàòèìå ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðó. À îñü äëÿ âàñ ³ çàâäàííÿ â³ä Êîì³òåòó ðàë³.

Çàâäàííÿ 10. Îñîáèñòèé ïåíñ³éíèé ðàõóíîê Ðîòà ß õî÷ó äîâãèé ÷àñ ïðàöþâàòè ïðîãðàì³ñòîì, ïðîòå êîëèñü ï³äó íà ïåíñ³þ. ß îáì³ðêîâóâàâ, ÿê çàðîáèòè ñîá³ ïåíñ³þ, ìåí³ â³äîìî: ÿêùî ÿ ïî÷íó çàîùàäæóâàòè êîøòè çàìîëîäó, ïåíñ³ÿ â ìåíå áóäå çíà÷íî á³ëüøîþ. ß ïðî÷èòàâ ïðî ÎÏÐ Ðîòà. ÎÏÐ îçíà÷ຠ„îñîáèñòèé ïåíñ³éíèé ðàõóíîê”. Ðîò — öå ³ì’ÿ ÷îëîâ³êà, ÿêèé ñïðèÿâ ïðîñóâàííþ çàêîíîïðîåêòó â Êîíãðåñ³. ÎÏÐ Ðîòà ïåðåäáà÷ຠ³íâåñòèö³¿ ó ñïåö³àëüíîìó ïîäàòêîâîìó ðåæèì³. Âàì í³êîëè íå äîâåäåòüñÿ ïëàòèòè ïîäàòîê íà ïðèáóòîê ³ç çàðîá³òêó. Ñê³ëüê³ á âè íå çàðîáèëè, óñå çàëèøèòüñÿ âàì. Ó ÷îìó ñóòü? Âè çàîùàäæóºòå ãðîø³, äîêè âàì íå âèïîâíèòüñÿ ï’ÿòäåñÿò äåâ’ÿòü ç ïîëîâèíîþ ðîê³â, àáî äîêè âè íå âèêîðèñòàºòå ¿õ äëÿ íàâ÷àííÿ ÷è ïðèäáàííÿ ïåðøîãî áóäèíêó. Òîæ äàâàéòå ñòâîðèìî êàëüêóëÿòîð äëÿ ÎÏÐ Ðîòà. Ñòâîð³òü òàêó ôîðìó, ÿê ïîêàçàíî íà ðèñóíêó, àáî âèêîðèñòàéòå ôîðìó ç ïàïêè Çàâäàííÿ_10.

Ó ôîðì³ çàçíà÷àºòüñÿ â³ê, êîëè âè ïî÷èíàºòå çàîùàäæóâàòè, â³ê, êîëè ïðèïèíÿºòå çàîùàäæóâàòè, îáñÿã ð³÷íîãî âíåñêó òà â³äñîòêîâà ñòàâêà. Ìè âèâ÷àëè îïåðàòîð öèêëó, ³ çàðàç ó íàñ

164


º ³äåàëüíà ìîæëèâ³ñòü âèêîðèñòàòè éîãî. Íå çàáóäüòå, ùî ó òåêñòîâèõ ïîëÿõ ì³ñòÿòüñÿ ðÿäêè, òîìó òðåáà ïåðåòâîðèòè ¿õ íà ÷èñëà çà äîïîìîãîþ ôóíêö³¿ Val. Íàïðèêëàä: X = Val(TextBox1.Text). Âèâåä³òü â³ê, çàãàëüíó ñóìó âíåñê³â â³ä ïî÷àòêó çàîùàäæåííÿ, áàëàíñ ÎÏÐ òà ïðèáóòîê, ÿêèé äîð³âíþº ð³çíèö³ ì³æ ñóìîþ âíåñê³â òà áàëàíñîì. Ùîá â³äôîðìàòóâàòè âèõ³äí³ äàí³, âèêîðèñòàéòå ôóíêö³þ Format. Íàïðèêëàä: VariableX = FormatCurrency(VariableX) l

ϳäêàçêà 1: Äîäàâàéòå ñóìè âíåñê³â ïåðø, í³æ ï³äðàõîâóâàòè áàëàíñ ³ ïðèáóòîê.

l

ϳäêàçêà 2: Êîåô³ö³ºíò, íà ÿêèé ïîìíîæóºòüñÿ ñóìà êîøò³â, âèçíà÷àºòüñÿ çà ôîðìóëîþ: 1 + ñòàâêà/100 (íàïðèêëàä, ñòàâö³ 9% â³äïîâ³äຠêîåô³ö³ºíò 1.09).

Êîëè ïðîãðàìà ïðàöþâàòèìå ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðó.

Äîäàòêîâå çàâäàííÿ Âè íå ñïëà÷óºòå ïîäàòîê ç ÎÏÐ Ðîòà. Ùî â³äáóâàòèìåòüñÿ, ÿêùî âè çðîáèòå âíåñîê íà çâè÷àéíèé áàíê³âñüêèé ðàõóíîê? dz çâè÷àéíîãî áàíê³âñüêîãî ðàõóíêó ôåäåðàëüíèé óðÿä ÑØÀ õî÷å îòðèìàòè ñâîþ ÷àñòêó. Ïðèïóñòèìî, ùî äÿäÿ Ñåì îòðèìóº 25% ç³ ùîð³÷íîãî çàðîá³òêó. ßêó ñóìó êîøò³â âè çìîæåòå çàîùàäèòè ó òàêîìó ðàç³?

165


Öèêëîïîë³ñ, Êîëîðàäî Êë³ô ïîâåäå ìàøèíó äî íàñòóïíîãî ïóíêòó ïðèçíà÷åííÿ — ì³ñòà Öèêëîïîë³ñ, Êîëîðàäî. Ìè ïðî¿äåìî øàëåíîþ àâòîìàã³ñòðàëëþ öèêë³â. Íà îñòàííüîìó åòàï³ ïîäîðîæ³ Êë³ô ÷óäîâî ïîïðàöþâàâ, ðîçïîâ³âøè âàì ïðî âèçíà÷åí³ öèêëè — ò³, ùî âèêîíóþòüñÿ çàäàíó ê³ëüê³ñòü ðàç³â. Öüîãî ðàçó ÿ ïîâåðíóñÿ äî öèêë³â! ß ïîêàæó, ÿê êîðèñòóâàòèñÿ ³íøèìè òèïàìè öèêë³â, ùî íàçèâàþòüñÿ íåâèçíà÷åíèìè. Ñê³ëüêè ðàç³â âèêîíóþòüñÿ íåâèçíà÷åí³ öèêëè, íàïåðåä íåâ³äîìî. Íåâèçíà÷åíèé öèêë çàâåðøóºòüñÿ òîä³, êîëè âèêîíóºòüñÿ ïåâíà óìîâà. Âè çðîçó쳺òå, ùî íåâèçíà÷åí³ öèêëè — öå ùå îäèí çðó÷íèé ³íñòðóìåíò, ÿêèé ïîâèíåí âì³òè âèêîðèñòîâóâàòè êîæåí ïðîãðàì³ñò. ª âèïàäêè, êîëè âèçíà÷åíèé öèêë íå ïðèäàòíèé äëÿ ðîçâ’ÿçàííÿ òî¿ ÷è ³íøî¿ çàäà÷³ — òîä³ âàì äîâîäèòüñÿ âèêîðèñòîâóâàòè íåâèçíà÷åíèé öèêë.

Íåâèçíà÷åí³ öèêëè Áàãàòî ðå÷åé íàì äîâîäèòüñÿ ðîáèòè çíîâó é çíîâó, äîêè íå â³äáóäåòüñÿ ïåâíà ïîä³ÿ. Öÿ „ïåâíà ïîä³ÿ” º óìîâîþ, çà âèêîíàííÿ ÿêî¿ ìè ïðèïèíÿºìî ïîâòîðåííÿ òèõ ÷è ³íøèõ ä³é. Íåâèçíà÷åí³ öèêëè âèêîíóþòüñÿ äîòè, äîêè ïåâíå òâåðäæåííÿ íå ñòàíå ³ñòèííèì (àáî õèáíèì), ïîò³ì ¿õ âèêîíàííÿ ïåðåðèâàºòüñÿ. Íàïðèêëàä, ìèíóëîãî âå÷îðà íàì äîâåëîñÿ äîâãî, ìàéæå ãîäèíó, ¿çäèòè ì³ñòîì, äîêè ìè, íàðåøò³, íå çíàéøëè â³ëüíîãî ì³ñöÿ äëÿ ïàðêóâàííÿ. Ñóø³-áàð òà ãðèëü-áàð áóëè âæå çà÷èíåí³, îòæå, íàì äîâåëîñÿ øóêàòè ³íøå ì³ñöå, äå ìîæíà áóëî á ïî¿ñòè. Äîêè ìè ìàíäðóâàëè ó ïîøóêàõ ³íøîãî ðåñòîðàíó, ì³é øëóíîê ñåðäèâñÿ óñå á³ëüøå é á³ëüøå, äîêè ÿ éîãî íå íàïîâíèëà. Òàê ñàìî ³ ç êîäîì. ²íîä³ âàì ïîòð³áíî, ùîá îäèí ³ òîé ñàìèé êîä âèêîíóâàâñÿ çíîâó é çíîâó, äîêè ïåâíà óìîâà íå ñòàíå ³ñòèííîþ. Íàïðèêëàä, âàø êîä ìîæå çàïèòóâàòè ó êîðèñòóâà÷à ïàðîëü äîòè, äîêè òîé íå ââåäå ïðàâèëüíîãî ïàðîëþ. Àáî ïðîãðàìà ìîæå â³äòâîðþâàòè ôîíîâó åëåêòðîííó ìóçèêó, ïîêè âîíà âèêîíóº îá÷èñëåííÿ. Âèçíà÷åíèé öèêë â³ä íåâèçíà÷åíîãî â³äð³çíÿº òå, ùî ïåðøèé âèêîíóºòüñÿ íàïåðåä çàäàíó ê³ëüê³ñòü ðàç³â. Òîä³ ÿê íåâèçíà÷åíèé öèêë âèêîíóºòüñÿ äîòè, äîêè ïåâíà óìîâà íå ñòàíå ³ñòèííîþ àáî õèáíîþ. ²ñíóº äâà òèïè íåâèçíà÷åíèõ öèêë³â: „âèêîíóâàòè, ïîêè” òà „âèêîíóâàòè, äîêè íå”. Ïåðø³ âèêîíóþòüñÿ, ïîêè ïåâíà óìîâà çàëèøàºòüñÿ ³ñòèííîþ, à äðóã³ — äîêè ïåâíà óìîâà íå ñòàíå ³ñòèííîþ. Ãîëîâíå ï³ä ÷àñ âèêîðèñòàííÿ íåâèçíà÷åíèõ öèêë³â — îáðàòè, ÿêèé ñàìå öèêë âàì ïîòð³áåí: „âèêîíóâàòè, ïîêè” ÷è „âèêîíóâàòè, äîêè íå”.

169


Do While…Loop — öèêë „âèêîíóâàòè, ïîêè” Öèêë Do While...Loop („âèêîíóâàòè, ïîêè”) âèêîíóº áëîê êîäó çíîâó é çíîâó, ïîêè ïåâíà óìîâà çàëèøàºòüñÿ ³ñòèííîþ. Ò³ëüêè-íî óìîâà ñòຠõèáíîþ, öèêë çàâåðøóºòüñÿ, à âèêîíàííÿ êîäó âñåðåäèí³ öèêëó ïðèïèíÿºòüñÿ. ϳñëÿ êëþ÷îâîãî ñëîâà While ó äóæêàõ çàçíà÷àºòüñÿ óìîâà, ùî óïðàâëÿº öèêëîì. Îñü ñèíòàêñèñ öèêëó Do While...Loop ó Visual Basic .NET: Do While (óìîâà) îïåðàòîð 1 îïåðàòîð 2 îïåðàòîð N Loop Çàóâàæòå, ùî ñëîâà Do, While òà Loop º êëþ÷îâèìè. Visual Studio .Net ¿õ âèä³ëÿº ñèí³ì. Óìîâà áåðåòüñÿ ó äóæêè. Óìîâîþ ìîæå áóòè áóäü-ÿêèé áóë³â âèðàç. Íàïðèêëàä, X < 4. Êîä, ÿêèé ìຠâèêîíóâàòèñÿ ïîâòîðíî, çàïèñóºòüñÿ ì³æ ôðàçàìè Do While òà Loop ³ íàçèâàºòüñÿ ò³ëîì öèêëó. Êîæíå âèêîíàííÿ öüîãî êîäó íàçèâàºòüñÿ ³òåðàö³ºþ öèêëó. Íà ïî÷àòêó êîæíî¿ ³òåðàö³¿ ïåðåâ³ðÿºòüñÿ âêàçàíà ï³ñëÿ ñë³â Do While óìîâà. ßêùî âîíà º ³ñòèííîþ, ò³ëî öèêëó âèêîíóºòüñÿ çíîâó. ²íàêøå öèêë çàâåðøóºòüñÿ. Òåïåð ÿ ïîêàæó âàì ïðèêëàä âèêîðèñòàííÿ öèêëó Do While...Loop. Ñòâîð³òü íîâó Windowsïðîãðàìó ï³ä íàçâîþ DoWhileLoop. Äîäàéòå êîìàíäíó êíîïêó äî ôîðìè Form1, äâ³÷³ êëàöí³òü íà í³é ³ äî îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ äîäàéòå òàêèé êîä: Dim WhileValue As Integer WhileValue = 0 Do While (WhileValue < 2) MessageBox.Show(WhileValue) WhileValue = WhileValue + 1 Loop Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Êëàöí³òü íà êíîïö³ Button1. Ó â³êí³ ïîâ³äîìëåííÿ áóäå âèâåäåíî çíà÷åííÿ 0. Êëàöí³òü íà êíîïö³ OK. Ó â³êí³ ïîâ³äîìëåííÿ áóäå âèâåäåíî çíà÷åííÿ 1. Êëàöí³òü íà êíîïö³ OK. ³êíî ïîâ³äîìëåííÿ áóäå çàêðèòî. ßê ïðàöþº öåé êîä? Ìè îãîëîñèëè çì³ííó WhileValue òà íàäàëè ¿é ïî÷àòêîâå çíà÷åííÿ 0. Êîæíî¿ ³òåðàö³¿ öèêëó çíà÷åííÿ çì³ííî¿ WhileValue çá³ëüøóºòüñÿ íà 1. Íà ïî÷àòêó öèêëó ïåðåâ³ðÿºòüñÿ, ÷è WhileValue < 2. ßêùî öÿ óìîâà âèêîíóºòüñÿ, ç’ÿâëÿºòüñÿ â³êíî ïîâ³äîìëåííÿ, à çíà÷åííÿ çì³ííî¿ WhileValue çá³ëüøóºòüñÿ íà îäèíèöþ. ßêùî óìîâà íå âèêîíóºòüñÿ, öèêë çàâåðøóº ñâîþ ðîáîòó. Öèêë áóäå âèêîíàíî äâ³÷³, ïåðø í³æ òâåðäæåííÿ

170


WhileValue < 2 ñòàíå õèáíèì. Ïåðøîãî ðàçó ó â³êí³ ïîâ³äîìëåííÿ áóäå âèâåäåíî 0, äðóãîãî ðàçó — 1, à âòðåòº çíà÷åííÿ çì³ííî¿ WhileValue äîð³âíþâàòèìå äâîì. Îòæå, íà òðåò³é ³òåðàö³¿ öèêëó òâåðäæåííÿ WhileValue < 2 ïåðåòâîðþºòüñÿ íà õèáíèé áóë³â âèðàç 2 < 2. Âèêîíàííÿ öèêëó çàâåðøóºòüñÿ, ³ ïîâ³äîìëåííÿ á³ëüøå íå âèâîäèòüñÿ.

Âèêîíàííÿ öèêëó Do While…Loop ó ïîêðîêîâîìó ðåæèì³ Çà äîïîìîãîþ ³íñòðóìåíò³â íàëàãîäæåííÿ ñåðåäîâèùà Visual Studio .NET âèêîíàéòå öèêë Do While...Loop ç ïðîãðàìè DoWhileLoop ó ïîêðîêîâîìó ðåæèì³, ðÿäîê çà ðÿäêîì. 1. Ó â³êí³ êîäó íà ðÿäêó Do While (WhileValue < 2) óñòàíîâ³òü òî÷êó ïåðåðèâàííÿ.

2. Çàïóñò³òü ïðîåêò. Êîä áóäå âèêîíàíî äî òî÷êè ïåðåðèâàííÿ. Ðÿäîê, ïîì³÷åíèé òî÷êîþ ïåðåðèâàííÿ, áóäå âèä³ëåíî æîâòèì êîëüîðîì.

3. Íàòèñí³òü êëàâ³øó F11 äëÿ âèêîíàííÿ âèä³ëåíîãî ðÿäêà êîäó: Do While (WhileValue < 2) Íàâåä³òü ïîêàæ÷èê ìèø³ íà çì³ííó WhileValue. ¯¿ çíà÷åííÿ ñòàíîâèòü 0.

171


4. Íàòèñí³òü êëàâ³øó F11 äëÿ âèêîíàííÿ âèä³ëåíîãî ðÿäêà êîäó: MessageBox.Show(WhileValue) Ó â³êí³ ïîâ³äîìëåííÿ áóäå âèâåäåíî çíà÷åííÿ 0. Êëàöí³òü íà êíîïö³ OK.

5. Íàòèñí³òü êëàâ³øó F11 äëÿ âèêîíàííÿ âèä³ëåíîãî ðÿäêà êîäó: WhileValue = WhileValue + 1 Çíà÷åííÿ çì³ííî¿ WhileValue áóäå çá³ëüøåíî íà 1.

6. Íàòèñí³òü êëàâ³øó F11 äëÿ âèêîíàííÿ âèä³ëåíîãî ðÿäêà êîäó: Loop Ïåðøó ³òåðàö³þ öèêëó çàâåðøåíî. Öèêë áóäå âèêîíàíî çíîâ.

172


7. Íàòèñí³òü êëàâ³øó F11 äëÿ âèêîíàííÿ âèä³ëåíîãî ðÿäêà êîäó: Do While (WhileValue < 2) Íàâåä³òü ïîêàæ÷èê ìèø³ íà çì³ííó WhileValue. ¯¿ çíà÷åííÿ ñòàíîâèòü 1.

8. Íàòèñí³òü êëàâ³øó F11 äëÿ âèêîíàííÿ âèä³ëåíîãî ðÿäêà êîäó: MessageBox.Show(WhileValue) Ó â³êí³ ïîâ³äîìëåííÿ áóäå âèâåäåíî çíà÷åííÿ 1. Êëàöí³òü íà êíîïö³ OK.

9. Íàòèñí³òü êëàâ³øó F11 äëÿ âèêîíàííÿ âèä³ëåíîãî ðÿäêà êîäó: WhileValue = WhileValue + 1 Çíà÷åííÿ çì³ííî¿ WhileValue áóäå çá³ëüøåíî íà 1.

173


10.Íàòèñí³òü êëàâ³øó F11 äëÿ âèêîíàííÿ âèä³ëåíîãî ðÿäêà êîäó: Loop Äðóãó ³òåðàö³þ öèêëó çàâåðøåíî.

11.Íàòèñí³òü êëàâ³øó F11, ùîá âèêîíàòè âèä³ëåíèé ðÿäîê êîäó: Do While (WhileValue < 2) Íàâåä³òü ïîêàæ÷èê ìèø³ íà çì³ííó WhileValue. ¯¿ çíà÷åííÿ ñòàíîâèòü 2. Òåïåð óìîâà WhileValue < 2 º õèáíîþ, à îòæå, öèêë çàâåðøåíî. Á³ëüøå â³êíî ïîâ³äîìëåííÿ íå âèâîäèòèìåòüñÿ, à çíà÷åííÿ çì³ííî¿ WhileValue íå çá³ëüøóâàòèìåòüñÿ.

12.Íàòèñí³òü êëàâ³øó F11, ùîá âèêîíàòè âèä³ëåíèé ðÿäîê êîäó: End Sub Âèêîíàííÿ êîäó îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ çàâåðøóºòüñÿ, à ôîðìà ïðîãðàìè DoWhileLoop çíîâó ñòຠàêòèâíîþ.

Òåïåð, êîëè âè ïîáà÷èëè, ÿê ïðàöþº öèêë Do While...Loop — öèêë òèïó „âèêîíóâàòè, ïîêè”, ïîäèâèìîñÿ, ÿê ïðàöþº öèêë Do Until...Loop — öèêë òèïó „âèêîíóâàòè, äîêè íå”.

174


Do Until…Loop — öèêë „âèêîíóâàòè, äîêè íå” Ó öèêë³ Do Until...Loop áëîê êîäó âèêîíóºòüñÿ çíîâó é çíîâó, äîêè óìîâà íå ñòàíå ³ñòèííîþ. Óìîâîþ ìîæå áóòè äîâ³ëüíèé áóë³â âèðàç. Îñü ñèíòàêñèñ öèêëó Do Until...Loop ó Visual Basic .NET: Do Until (óìîâà) îïåðàòîð 1 îïåðàòîð 2 îïåðàòîð N Loop Ñëîâà Do, Until òà Loop º êëþ÷îâèìè. Visual Studio .Net ¿õ âèä³ëÿº ñèí³ì. ²ñòèíí³ñòü óìîâè ïåðåâ³ðÿºòüñÿ íà ïî÷àòêó êîæíî¿ ³òåðàö³¿ öèêëó. ßêùî óìîâà º õèáíîþ, âèêîíóºòüñÿ êîä ò³ëà öèêëó. Êîëè óìîâà ñòຠ³ñòèííîþ, öèêë çàâåðøóºòüñÿ. Òåïåð ÿ ïîêàæó âàì ïðèêëàä âèêîðèñòàííÿ öèêëó Do Until...Loop ó Visual Basic .NET. Ñòâîð³òü íîâó Windows-ïðîãðàìó ï³ä íàçâîþ DoUntilLoop. Äîäàéòå êîìàíäíó êíîïêó äî ôîðìè Form1, äâ³÷³ êëàöí³òü íà í³é ³ äî îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ äîäàéòå òàêèé êîä: Dim UntilValue As Integer UntilValue = 0 Do Until (UntilValue > 1) MessageBox.Show(UntilValue) UntilValue = UntilValue + 1 Loop Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Êëàöí³òü íà êíîïö³ Button1. Ó â³êí³ ïîâ³äîìëåííÿ áóäå âèâåäåíî çíà÷åííÿ 0. Êëàöí³òü íà êíîïö³ OK. Ó â³êí³ ïîâ³äîìëåííÿ áóäå âèâåäåíî çíà÷åííÿ 1. Êëàöí³òü íà êíîïö³ OK. ³êíî ïîâ³äîìëåííÿ áóäå çàêðèòî. ßê ïðàöþº öåé êîä? Ìè îãîëîñèëè çì³ííó UntilValue òà íàäàëè ¿é ïî÷àòêîâå çíà÷åííÿ 0. Êîæíî¿ ³òåðàö³¿ öèêëó çíà÷åííÿ çì³ííî¿ UntilValue çá³ëüøóºòüñÿ íà 1. Íà ïî÷àòêó öèêëó ïåðåâ³ðÿºòüñÿ, ÷è UntilValue > 1. ßêùî öÿ óìîâà íå âèêîíóºòüñÿ, ç’ÿâëÿºòüñÿ â³êíî ïîâ³äîìëåííÿ, à çíà÷åííÿ çì³ííî¿ UntilValue çá³ëüøóºòüñÿ íà îäèíèöþ. ßêùî óìîâà âèêîíóºòüñÿ, öèêë çàâåðøóº ñâîþ ðîáîòó. Öèêë áóäå âèêîíàíî äâ³÷³, ïåðø í³æ óìîâà UntilValue > 1 ñòàíå ³ñòèííîþ. Ïåðøîãî ðàçó ó â³êí³ ïîâ³äîìëåííÿ áóäå âèâåäåíî 0, äðóãîãî ðàçó — 1, à âòðåòº çíà÷åííÿ çì³ííî¿ UntilValue äîð³âíþâàòèìå äâîì. Îòæå, íà òðåò³é ³òåðàö³¿ öèêëó óìîâà ïåðåòâîðþºòüñÿ íà ³ñòèííèé áóë³â âèðàç 2 > 1. Âèêîíàííÿ öèêëó çàâåðøóºòüñÿ, ³ ïîâ³äîìëåííÿ á³ëüøå íå âèâîäèòüñÿ.

Íåâèçíà÷åí³ öèêëè â 䳿 Ðîçãëÿíåìî äåê³ëüêà ïðèêëàä³â âèêîðèñòàííÿ öèêë³â Do While...Loop òà Do Until... Loop. Óìîâè îáîõ öèêë³â º áóëåâèìè âèðàçàìè, ùî áåçïîñåðåäíüî íå çàëåæàòü â³ä çíà÷åííÿ ë³÷èëüíèêà öèêëó. Ó ïåðøîìó ïðèêëàä³ íàâåäåíî öèêë Do While...Loop, â óìîâ³ ÿêîãî ïåðåâ³ðÿºòüñÿ, ÷è º çíà÷åííÿ ïåâíî¿ çì³ííî¿ á³ëüøèì àáî ð³âíèì íóëþ. Êîëè çíà÷åííÿ çì³ííî¿ ñòຠìåíøèì â³ä íóëÿ, öèêë çàâåðøóºòüñÿ.

175


Ñòâîð³òü íîâó Windows-ïðîãðàìó ï³ä íàçâîþ LoopsInAction (Öèêëè ó 䳿). Äîäàéòå êîìàíäíó êíîïêó äî ôîðìè Form1. Çì³í³òü çíà÷åííÿ àòðèáóòà Text êíîïêè Button1 íà Çâîðîòí³é â³äë³ê. Äî îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ Button1 äîäàéòå òàêèé êîä: Dim LoopIndex As Integer = 0 Dim WhileController As Integer = 167 Do While (WhileController >= 0) LoopIndex = LoopIndex + 1 WhileController = WhileController - (23 * LoopIndex) Loop MessageBox.Show(WhileController) Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Êëàöí³òü íà êíîïö³ Çâîðîòí³é â³äë³ê. Ó â³êí³ ïîâ³äîìëåííÿ áóäå âèâåäåíî çíà÷åííÿ –63. ßê ïðàöþº öåé êîä? Ìè îãîëîñèëè äâ³ ö³ëî÷èñëîâèõ çì³ííèõ LoopIndex òà WhileController ³ íàäàëè ¿ì ïî÷àòêîâ³ çíà÷åííÿ. Çíà÷åííÿ çì³ííî¿ LoopIndex çá³ëüøóºòüñÿ íà 1 êîæíî¿ ³òåðàö³¿ öèêëó. Ïðè öüîìó íîâå çíà÷åííÿ çì³ííî¿ WhileController îá÷èñëþºòüñÿ òàê: çíà÷åííÿ çì³ííî¿ LoopIndex ìíîæèòüñÿ íà 23 òà â³äí³ìàºòüñÿ â³ä ñòàðîãî çíà÷åííÿ çì³ííî¿ WhileController. Êîæíîãî ðàçó, êîëè âèêîíóºòüñÿ öèêë, çíà÷åííÿ çì³ííî¿ WhileController ñòຠâñå ìåíøèì ³ ìåíøèì. Âàæêî ïåðåäáà÷èòè, ñê³ëüêè ðàç³â öèêë áóäå âèêîíàíî, ïåðø í³æ çíà÷åííÿ çì³ííî¿ WhileController ñòàíå ìåíøèì â³ä íóëÿ. Çàóâàæòå, ùî áóë³â âèðàç, çà äîïîìîãîþ ÿêîãî çä³éñíþºòüñÿ óïðàâë³ííÿ öèêëîì, çàëåæèòü ëèøå â³ä çíà÷åííÿ çì³ííî¿ WhileController, à íå â³ä çíà÷åííÿ çì³ííî¿-ë³÷èëüíèêà LoopIndex. Ó äðóãîìó ïðèêëàä³ ïðîäåìîíñòðóºìî âèêîðèñòàííÿ öèêëó Do While...Loop ç óìîâîþ, ³ñòèíí³ñòü ÿêî¿ çàëåæèòü â³ä òîãî, ÷è âñòàíîâëåíî ïåðåìèêà÷ RadioButton3. Íà êîæí³é ³òåðàö³¿ öèêëó óñòàíîâëþâàòèìåòüñÿ ïî îäíîìó ïåðåìèêà÷ó äîòè, äîêè íå áóäå âñòàíîâëåíî ïåðåìèêà÷ RadioButton3. Ó ïðîåêò³ LoopsInAction äî ôîðìè Form1 äîäàéòå äðóãó êîìàíäíó êíîïêó. Çì³í³òü çíà÷åííÿ àòðèáóòà Text êíîïêè íà Ïîêè. Äîäàéòå äî ôîðìè òðè ïåðåìèêà÷³. Äî îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ Button2 äîäàéòå òàêèé êîä: Dim LoopIndex As Integer = 0 Do While (RadioButton3.Checked = False) LoopIndex = LoopIndex + 1 If LoopIndex = 1 Then RadioButton1.Checked = True ElseIf LoopIndex = 2 Then RadioButton2.Checked = True ElseIf LoopIndex = 3 Then RadioButton3.Checked = True End If

176


Loop MessageBox.Show(LoopIndex) Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Çàóâàæòå, ùî æîäåí ç ïåðåìèêà÷³â íå óñòàíîâëåíî. Êëàöí³òü íà êíîïö³ Ïîêè. Ïðîãðàìà óñòàíîâèòü âñ³ òðè ïåðåìèêà÷³, à ó â³êí³ ïîâ³äîìëåííÿ â³äîáðàçèòüñÿ ê³ëüê³ñòü ³òåðàö³é öèêëó. ßêùî âè äîñòàòíüî ñïîñòåðåæëèâ³, ìîæåòå ïîáà÷èòè, ÿê áëèñêàâè÷íî âñòàíîâëþþòüñÿ ïåðåìèêà÷³ RadioButton1 òà RadioButton2. Îñü ùî â³äáóâàºòüñÿ. Ìè îãîëîøóºìî çì³ííó LoopIndex, ùîá â³äñòåæóâàòè ê³ëüê³ñòü âèêîíàíèõ ³òåðàö³é öèêëó. Ïðîòå çì³ííà LoopIndex íå âèêîðèñòîâóºòüñÿ ó áóëåâîìó âèðàç³, ùî óïðàâëÿº öèêëîì Do While...Loop. Íàòîì³ñòü çì³ííà LoopIndex çàñòîñîâóºòüñÿ äëÿ òîãî, ùîá êîæíîãî ðàçó âñòàíîâëþâàòè íîâèé ïåðåìèêà÷.  óìîâ³ öèêëó Do While...Loop ïåðåâ³ðÿºòüñÿ, ÷è áóëî âñòàíîâëåíî ïåðåìèêà÷ RadioButton3. ßê ò³ëüêè âèêîíóâàòèìåòüñÿ ð³âí³ñòü RadioButton3.Checked=True (ïåðåìèêà÷ RadioButton3 âñòàíîâëåíî), öèêë áóäå çàâåðøåíî. Ó òðåòüîìó ïðèêëàä³ âèêîðèñòàºìî öèêë Do Until...Loop. Ó éîãî óìîâ³ çä³éñíþâàòèìåòüñÿ ïîð³âíÿííÿ çíà÷åííÿ àòðèáóòà Text òåêñòîâîãî ïîëÿ ç³ çíà÷åííÿì ðÿäêîâî¿ çì³ííî¿, ÿêå çì³íþâàòèìåòüñÿ êîæíî¿ ³òåðàö³¿ öèêëó. Äîäàéòå òåêñòîâå ïîëå äî ôîðìè Form1 ïðîåêòó LoopsInAction. Çàëèøòå äëÿ éîãî àòðèáóòó Text çíà÷åííÿ TextBox1. Äîäàéòå òðåòþ êíîïêó äî ôîðìè Form1 òà çì³í³òü çíà÷åííÿ ¿¿ àòðèáóòà Text íà ³äïîâ³äí³ñòü òåêñòó. Äî îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ Button3 äîäàéòå òàêèé êîä: Dim MatchText As String = "" Dim LoopIndex As Integer = 0 Do Until (MatchText = TextBox1.Text) LoopIndex = LoopIndex + 1 If LoopIndex = 2 Then MatchText = "Text" End If If LoopIndex = 3 Then MatchText = "Box1" End If If LoopIndex = 4 Then MatchText = "TextBox1" End If Loop MessageBox.Show("Òåêñò â³äïîâ³äຠçíà÷åííþ " & LoopIndex & _ " çì³ííî¿ LoopIndex.")

177


Ïîáóäóéòå ïðîåêò òà çàïóñò³òü éîãî. Êëàöí³òü íà êíîïö³ ³äïîâ³äí³ñòü òåêñòó. Ó â³êí³ ïîâ³äîìëåííÿ ç’ÿâèòüñÿ çíà÷åííÿ çì³ííî¿ LoopIndex, ÿêîìó â³äïîâ³äຠðÿäîê ó òåêñòîâîìó ïîë³. Ó öüîìó êîä³ çàñòîñîâóºòüñÿ îïåðàòîð Do Until...Loop. Çì³ííà LoopIndex âèêîðèñòîâóºòüñÿ ëèøå äëÿ òîãî, ùîá íàäàòè çíà÷åííÿ çì³íí³é MatchText.  óìîâ³ çä³éñíþºòüñÿ ïîð³âíÿííÿ çíà÷åííÿ çì³ííî¿ MatchText ç³ çíà÷åííÿì àòðèáóòà Text ïîëÿ TextBox1. ϳä ÷àñ ÷åòâåðòîãî ïðîõîäó öèêëó çì³ííà LoopIndex íàáóâຠçíà÷åííÿ 4 ³ òîìó âèêîíóºòüñÿ îïåðàòîð ïðèñâîþâàííÿ MatchText="TextBox1". Áóë³â âèðàç ñòຠ³ñòèííèì, îñê³ëüêè "TextBox1"= "TextBox1", ³ öèêë çàâåðøóºòüñÿ. À ùî, êîëè äî ïîëÿ TextBox1 ìè ââåäåìî ðÿäîê The Purple Pit? Âè çìîæåòå äîäàòè ùå îäèí îïåðàòîð If...Then, ùîá êîä âèêîíóâàâñÿ êîðåêòíî ³ äëÿ öüîãî çíà÷åííÿ?

Âïðàâà 11.1. ̳øåíü Ìåí³ çàâæäè ïîäîáàëîñü ñòð³ëÿòè â òèð³. Âëó÷àòè â ì³øåíü äóæå ö³êàâî, àëå ãàäàþ, ùî êîìï’þòåðíà ãðà áóäå áåçïå÷í³øîþ. Äàâàéòå ñòâîðèìî ãðó, ó ÿê³é êîìï’þòåð íàìàãàòèìåòüñÿ âëó÷èòè ó ì³øåíü. Âèêîðèñòàéòå êîä òà ôîðìó ç ïàïêè Âïðàâà_11.1. Ôîðìà ìຠòàêèé âèãëÿä:

Ìè íàäàëè óâåñü êîä îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ Íîâà ãðà, îñê³ëüêè â íüîìó âèêîðèñòîâóþòüñÿ äåÿê³ ãðàô³÷í³ îᒺêòè, ïðî ÿê³ íå ðîçïîâ³äàëîñÿ ó öüîìó êóðñ³. Âàøå çàâäàííÿ — íàïèñàòè êîä äëÿ êíîïêè Ãðàòè. Ìåòà ãðè — âëó÷èòè ó ìàëåñåíüêó òî÷êó â öåíòð³ ì³øåí³. Ðîçì³ð ö³º¿ òî÷êè ñòàíîâèòü 1 ï³êñåë. Îñê³ëüêè ïîëå çîáðàæåííÿ ì³øåí³ ìຠðîçì³ð 200´200 ï³êñåë³â, öåíòð ì³øåí³ çíàõîäèòüñÿ ó òî÷ö³ ç êîîðäèíàòàìè (100,100). Ïðîãðàìà ìຠîá÷èñëþâàòè ê³ëüê³ñòü ñïðîá, çðîáëåíèõ ãðàâöåì äëÿ òîãî, ùîá âëó÷èòè ó ì³øåíü.

178


Ö³ëî÷èñëîâ³ çì³íí³ X òà Y çáåð³ãàòèìóòü â³äïîâ³äíî ãîðèçîíòàëüíó òà âåðòèêàëüíó êîîðäèíàòè òî÷êè ôîðìè. Íàäàéòå öèì çì³ííèì âèïàäêîâ³ çíà÷åííÿ ó ä³àïàçîí³ â³ä 0 äî 200. Îñü ôðàãìåíò êîäó, ùî âèêîíóº öþ ä³þ: Dim MyRandomGenerator As System.Random MyRandomGenerator = New System.Random Dim RanNum As Integer ' ãåíåðóºìî âèïàäêîâó âåëè÷èíó â³ä 0 äî 200, âèêëþ÷àþ÷è 200. RanNum = MyRandomGenerator.Next(0, 200) Îñê³ëüêè âè âèâ÷àëè íåâèçíà÷åí³ öèêëè, âèêîðèñòàéòå îäèí ç íèõ. ³í çàâåðøèòüñÿ, êîëè X òà Y äîð³âíþâàòèìóòü 100. ϳäðàõóéòå ê³ëüê³ñòü ³òåðàö³é öèêëó. Çàïèø³òü ðåçóëüòàò äî òåêñòîâîãî ïîëÿ TextBox1. Öåé êîä ìàëþâàòèìå òî÷êè òàì, êóäè âëó÷àòèìóòü âàø³ ïîñòð³ëè: g.DrawEllipse(MyPen, New Rectangle(X, Y, 1, 1)) Êîëè ïðîãðàìà ïðàöþâàòèìå ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðó.

Àëüòåðíàòèâí³ ôîðìè öèêë³â Öèêëè Do While...Loop òà Do Until...Loop ìîæóòü áóòè çàïèñàí³ â àëüòåðíàòèâí³é ôîðì³, ç óìîâîþ íàïðèê³íö³ öèêëó. Óìîâà çàïèñàíîãî ó òàê³é ôîðì³ öèêëó ïåðåâ³ðÿºòüñÿ íàïðèê³íö³ éîãî ³òåðàö³¿, òîìó ò³ëî öèêëó çàâæäè âèêîíàºòüñÿ õî÷à á ðàç (à ïîò³ì áóäå ïåðåâ³ðåíî óìîâó). Ó ìîâ³ Visual Basic .NET àëüòåðíàòèâí³ ôîðìè öèêë³â ïðåäñòàâëåí³ îïåðàòîðàìè Do...Loop While òà Do...Loop Until. Îñü ïðèêëàä öèêëó Do...Loop While: Dim WhileValue As Integer WhileValue = 0 Do MessageBox.Show(WhileValue) WhileValue = WhileValue + 1 Loop While (WhileValue < 2) Íàâåäåìî ïðèêëàä öèêëó Do...Loop Until: Dim UntilValue As Integer UntilValue = 0 Do MessageBox.Show(UntilValue) UntilValue = UntilValue + 1 Loop Until (UntilValue > 1) Çàóâàæòå, ùî â îáîõ âèïàäêàõ óìîâà º ÷àñòèíîþ îïåðàòîðà Loop, à íå Do. ²íñòðóêö³¿ ì³æ ñëîâàìè Do òà Loop âèêîíóþòüñÿ ïðèíàéìí³ îäèí ðàç. Ïîò³ì ïåðåâ³ðÿºòüñÿ óìîâà, çà ÿêîþ âèçíà÷àºòüñÿ, ÷è ñë³ä ïîâòîðþâàòè öèêë. ßêáè ó âèùåíàâåäåíîìó êîä³ ïî÷àòêîâå çíà÷åííÿ çì³ííî¿ UntilValue ñòàíîâèëî 5, â³êíî ïîâ³äîìëåííÿ ç³ çíà÷åííÿì ö³º¿ çì³ííî¿ áóëî á âèâåäåíå îäèí ðàç.

179


Exit Do Ïðèãàäóºòå, Êë³ô íàâ÷èâ âàñ, ÿê âèõîäèòè ç öèêëó For...Next çà äîïîìîãîþ îïåðàòîðà Exit For? Ó ïîä³áíèé ñïîñ³á âè ìîæåòå „âòåêòè” ³ç öèêë³â Do While...Loop, Do Until... Loop, Do...Loop While òà Do...Loop Until. Àëå çàì³ñòü îïåðàòîðà Exit For ñë³ä âèêîðèñòàòè îïåðàòîð Exit Do. Äëÿ òîãî, ùîá âêàçàòè óìîâó, â ðàç³ ³ñòèííîñò³ ÿêî¿ áóäå âèêîíàíî îïåðàòîð Exit Do, çàñòîñîâóéòå îïåðàòîð If...Then. Âèêîðèñòîâóéòå îïåðàòîð Exit Do, êîëè ïîòð³áíî âèéòè ç öèêëó ïåðø, í³æ óìîâó çàâåðøåííÿ öèêëó áóäå âèêîíàíî. Äàâàéòå íàïèøåìî êîä äëÿ âèõîäó ç öèêëó Do Until...Loop. Ñòâîð³òü íîâó Windows-ïðîãðàìó ï³ä íàçâîþ ExitDo. Äîäàéòå êîìàíäíó êíîïêó äî ôîðìè Form1. Äâ³÷³ êëàöí³òü íà êíîïö³ Button1, ùîá çì³íèòè êîä îáðîáíèêà ïî䳿 êëàöàííÿ íà í³é. Äîäàéòå äî íüîãî êîä, ùî ñõîæèé íà êîä ïðîåêòó DoUntilLoop: Dim UntilValue As Integer UntilValue = 0 Do Until (UntilValue > 10) MessageBox.Show(UntilValue) UntilValue = UntilValue + 1 If UntilValue = 5 Then Exit Do End If Loop MessageBox.Show("ʳíöåâå çíà÷åííÿ = " & UntilValue) Ïîáóäóéòå ïðîåêò ³ çàïóñò³òü éîãî íà âèêîíàííÿ. Êëàöí³òü íà êíîïö³ Button1. Íà êîæí³é ³òåðàö³¿ öèêëó çíà÷åííÿ çì³ííî¿ UntilValue çá³ëüøóâàòèìåòüñÿ íà 1, à ó â³êí³ ïîâ³äîìëåííÿ âèâîäèòèìåòüñÿ íîìåð ³òåðàö³¿ (0,1,2,3 òà 4). Êîæíîãî ðàçó êëàöàéòå íà êíîïö³ OK. Êîëè çíà÷åííÿ çì³ííî¿ UntilValue ñÿãíå 5, óìîâà îïåðàòîðà If...Then ñòàíå ³ñòèííîþ, à îòæå, áóäå âèêîíàíî îïåðàòîð Exit Do. Öèêë çàâåðøèòüñÿ, à âèêîíàííÿ êîäó òðèâàòèìå â³ä íàñòóïíîãî ï³ñëÿ îïåðàòîðà Loop ðÿäêà. Ó öüîìó ðÿäêó ðîçòàøîâàíî îïåðàòîð âèâåäåííÿ â³êíà ïîâ³äîìëåííÿ ç òåêñòîì „Ê³íöåâå çíà÷åííÿ = 5”.

Íåâèçíà÷åí³ öèêëè ó C# òà J# Ïîãëÿíüìî íà íåâèçíà÷åí³ öèêëè ó J# òà C#. Ó C# âè ìîæåòå íàïèñàòè êîä, ùî âèêîíóâàòèìå ò³ ñàì³ ôóíêö³¿, ùî é öèêëè Do While...Loop òà Do...Loop While ó Visual Basic .NET. Åêâ³âàëåíò³â öèêë³â Do Until...Loop àáî Do...Loop Until ó C# íåìàº. Ó ìîâ³ C# óìîâà çàâåðøåííÿ öèêëó while ïåðåâ³ðÿºòüñÿ íà ïî÷àòêó ³òåðàö³¿. Íàâåäåìî ïðèêëàä (ñëîâî while íå ìîæíà ïèñàòè ç âåëèêî¿ ë³òåðè): int WhileValue=0; while (WhileValue<5) { MessageBox.Show(WhileValue.ToString()); WhileValue=WhileValue+1; }

180


Íàâåäåìî ïðèêëàä öèêëó do...while, óìîâà çàâåðøåííÿ ÿêîãî ïåðåâ³ðÿºòüñÿ íàïðèê³íö³ ³òåðàö³¿ (ñëîâà do òà while íå ìîæíà ïèñàòè ç âåëèêî¿ ë³òåðè): int WhileValue=0; do { MessageBox.Show(WhileValue.ToString()); WhileValue=WhileValue+1; } while(WhileValue<5); Òåïåð ïîãëÿíüìî íà êîä J#. ßê ³ â C#, ó ö³é ìîâ³ íåìຠåêâ³âàëåíò³â öèêë³â Do Until...Loop àáî Do...Loop Until. Ñèíòàêñèñ öèêë³â while òà do...while ó ìîâ³ J# ³äåíòè÷íèé ñèíòàêñèñó â³äïîâ³äíèõ öèêë³â ó ìîâ³ C# (ñëîâà while òà do íå ìîæíà ïèñàòè ç âåëèêî¿ ë³òåðè). Íàâåäåìî ïðèêëàäè öèêë³â ó ìîâ³ J#: Öèêë while: int WhileValue=0; while (WhileValue<5) { MessageBox.Show(System.Convert.ToString((WhileValue)); WhileValue=WhileValue+1; } Öèêë do...while: int WhileValue=0; do { MessageBox.Show(System.Convert.ToString((WhileValue)); WhileValue=WhileValue+1; } while(WhileValue<5);

Ïðèáóòòÿ äî Öèêëîïîë³ñó À îò ³ ì³ñòî Öèêëîïîë³ñ, Êîëîðàäî! Ìè ïîäîëàëè ùå îäíó êîðîòêó, àëå çàõîïëþþ÷ó ÷àñòèíó øëÿõó! Âè íàâ÷èëèñÿ ïèñàòè êîä ð³çíîìàí³òíèõ íåâèçíà÷åíèõ öèêë³â. Âè ìîæåòå íàïèñàòè êîä íåâèçíà÷åíèõ öèêë³â, ùî âèêîíóâàòèìóòüñÿ, ïîêè ïåâíà óìîâà º ³ñòèííîþ, àáî äîêè ïåâíà óìîâà íå ñòàíå ³ñòèííîþ. Âè ìîæåòå íàïèñàòè íåâèçíà÷åí³ öèêëè, ó ÿêèõ óìîâà ïåðåâ³ðÿºòüñÿ íà ïî÷àòêó àáî íàïðèê³íö³ ³òåðàö³¿. ßêùî óìîâà ïåðåâ³ðÿºòüñÿ íàïðèê³íö³, áëîê êîäó áóäå âèêîíàíî ïðèíàéìí³ îäèí ðàç. Âè çðîçó쳺òå, ùî ð³çí³ òèïè öèêë³â äîïîâíþþòü îäèí îäíîãî. Âîíè âèêîíóþòü ôóíêö³¿, ÿê³ íå ìîæå âèêîíàòè öèêë For...Next. Ïîäèâèìîñÿ, ùî òàì º äëÿ âàñ íà íàøîìó ñòàðîìó äîáðîìó êèøåíüêîâîìó êîìï’þòåð³...

181


Âïðàâà 11.2. Ïîñï³ëü Äîðîãîþ äî ì³ñòà ßêùî-²íàêøå ìè âæå ïðàöþâàëè íàä ïðîåêòîì ³ç ï³äêèäàííÿ ìîíåòè. Äàâàéòå ñòâîðèìî ùå îäèí. Âè êîëè-íåáóäü ö³êàâèëèñÿ, ñê³ëüêè ðàç³â âàì äîâåäåòüñÿ ï³äêèäàòè ìîíåòó, ùîá òðè÷³ ïîñï³ëü âèïàâ îðåë? À ÷îòèðè ðàçè ïîñï³ëü? À ï’ÿòü? Âèêîðèñòàéòå êîä òà ôîðìó ç ïàïêè Âïðàâà_11.2. Âîíà ìຠòàêèé âèãëÿä:

Äëÿ ãåíåðóâàííÿ âèïàäêîâèõ ÷èñåë 0 àáî 1 âè ìîæåòå âèêîðèñòàòè òàêèé êîä: Dim MyRandomGenerator As System.Random MyRandomGenerator = New System.Random Dim RanNum As Integer ' ãåíåðóºìî âèïàäêîâå ÷èñëî â³ä 0 äî 2, âèêëþ÷àþ÷è 2. RanNum = MyRandomGenerator.Next(0, 2) Ïðèïóñòèìî, ùî 1 — öå îðåë, à 0 — ðåøêà. Ïðîäîâæóéòå ãåíåðóâàòè âèïàäêîâ³ ÷èñëà, äîêè ó âàñ íå âèïàäå ñò³ëüêè îäèíèöü ïîñï³ëü, ñê³ëüêè çàçíà÷åíî ó òåêñòîâîìó ïîë³ TextBox1. ßêùî âèïàäຠíóëü, ïî÷èíàéòå çíîâó. ³äîáðàæóéòå ê³ëüê³ñòü ï³äêèäàíü ìîíåòè ó ïîë³ TextBox2. Îáåðåæí³ ïðîãðàì³ñòè ï³ä ÷àñ òåñòóâàííÿ ïðîãðàìè äîäàþòü äî öèêëó îïåðàòîð if, äî ÿêîãî âêëàäåíî îïåðàòîð Exit Do. Òàêà êîíñòðóêö³ÿ äຠìîæëèâ³ñòü ïåðåðâàòè âèêîíàííÿ öèêëó, ÿêùî ë³÷èëüíèê ³òåðàö³é ïåðåâèùóº äóæå âåëèêå ÷èñëî. Êîëè ïðîãðàìà ïðàöþâàòèìå ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðîâ³. Íà öüîìó åòàï³ ïîäîðîæ³ âè ìàºòå ùå ðîçðîáèòè ïðîãðàìó, ÿêà çà ê³ëüêîìà îö³íêàìè áóäå îá÷èñëþâàòè ñåðåäí³é áàë. Ïåðåêîíàíèé, ùî, âèêîíóþ÷è öå çàâäàííÿ, âè çíàéäåòå ìîæëèâ³ñòü çàñòîñóâàòè ñâî¿ çíàííÿ íåâèçíà÷åíèõ öèêë³â.

182


Çàâäàííÿ 11. Îá÷èñëåííÿ ñåðåäíüîãî áàëà ß îòðèìóþ ñïðàâæíº çàäîâîëåííÿ â³ä ö³º¿ ïîäîðîæ³, ïðîòå âîíà çàâåðøèòüñÿ, ³ ÿ ïîâåðíóñÿ äî øêîëè, õâèëþþ÷èñü, ÿêèé ñåðåäí³é áàë ÿ îòðèìàþ. Ìåí³ á ñòàëà ó ïðèãîä³ ïðîãðàìà, ÿêà á îá÷èñëþâàëà ñåðåäí³é áàë çà ðÿäîì îö³íîê. Òîæ äàâàéòå ïîáóäóºìî ¿¿. Ñòâîð³òü òàêó ôîðìó, ÿê ïîêàçàíî íà ðèñóíêó, àáî âèêîðèñòàéòå ôîðìó ç ïàïêè Çàâäàííÿ_11.

Ó ïðîãðàì³ âèêîðèñòîâóºòüñÿ çîáðàæåíà íèæ÷å ôîðìà äëÿ ââåäåííÿ äàíèõ. Âàì íåìຠïîòðåáè ñòâîðþâàòè ¿¿. Visual Basic .NET çðîáèòü öå çà âàñ àâòîìàòè÷íî.

Öå íîâèé ìàòåð³àë, òîìó ìè íàâåäåìî êîä, ùî â³äîáðàæóº òàêó ôîðìó. Îãîëîñ³òü çì³ííó, ó ÿê³é çáåð³ãàòèìóòüñÿ ë³òåðè âñ³õ îö³íîê: Dim GradeIn As String = "" Ïîò³ì, ó ïðîì³æíîìó öèêë³, âèêîðèñòàéòå òàêèé êîä: GradeIn = InputBox("Ââåä³òü A, B, C, D àáî F", _ "Ââåä³òü ë³òåðó îö³íêè", "") Êîðèñòóâà÷ ââåäå ñò³ëüêè îö³íîê, ñê³ëüêè çàáàæàº. ßêùî â³í íå ââåäå æîäíî¿ îö³íêè àáî êëàöíå íà êíîïö³ Ñêàñóâàòè, çíà÷åííÿ çì³ííî¿ GradeIn çàëèøèòüñÿ ïîðîæí³ì ðÿäêîì (ÿêèé ïîçíà÷àºòüñÿ äâîìà ëàïêàìè ïîñï³ëü). l

A — 4 áàëè;

l

B — 3 áàëè;

183


l

C — 2 áàëè;

l

D — 1 áàë;

l

F — 0 áàë³â.

Áóäü-ÿê³ ³íø³ ë³òåðè àáî ÷èñëà ñë³ä ³ãíîðóâàòè. Êîðèñòóâà÷ ìîæå ââîäèòè âåëèê³ àáî ìàë³ ë³òåðè. Ïîì³ñò³òü óñ³ ââåäåí³ äàí³ äî òåêñòîâîãî ïîëÿ â íèæí³é ÷àñòèí³ ôîðìè. Êîëè óñ³ îö³íêè áóäå ââåäåíî, ìຠîá÷èñëþâàòèñü ñåðåäí³é áàë.

Äîäàòêîâå çàâäàííÿ Ïåðåâåä³òü ñåðåäíº ÷èñëî áàë³â ó ë³òåðó îö³íêè. Âèêîðèñòàéòå îö³íêè ç ïëþñàìè àáî ì³íóñàìè, íàïðèêëàä, B+ òà C-. Âèêîðèñòàéòå ïîçíà÷åííÿ, çàâåäåí³ ó âàø³é øêîë³, àáî òàê³: 1.0 D -;

2.0 C -;

3.0 B -;

3.8 A -;

1.3 D;

2.3 C;

3.3 B;

4.0 A.

1.7 D +;

2.7 C +;

3.5 B +;

À îñü ³ òåñò äëÿ îö³íþâàííÿ âàøîãî ïðîãðåñó.

184


Ôóíêö³ÿ, ϳâäåííà Äàêîòà Âè ìîæåòå ó öå ïîâ³ðèòè? Öå îñòàíí³é åòàï íàøî¿ ïîäîðîæ³! Ùå îäíå ì³ñòî — ³ íàøà ìàíäð³âêà „Ïðàâèëà êîäóâàííÿ” çàâåðøèòüñÿ. Âîíà áóëà äóæå ö³êàâîþ! Ìè ç ͳêê³ îòðèìóâàëè ñïðàâæíº çàäîâîëåííÿ, ïîêàçóþ÷è âàì ð³çí³ ì³ñòà òà íàâ÷àþ÷è âàñ òîãî, ùî âàì ñë³ä çíàòè ïðî Visual Basic .NET òà Visual Studio .NET! Ñïîä³âàþñÿ, íåâäîâç³ ìè âëàøòóºìî ùå îäíó ïîäîðîæ „Ïðàâèëà êîäóâàííÿ”. Âè ìàéæå ãîòîâ³ äî ïðîõîäæåííÿ á³ëüø ñêëàäíîãî êóðñó! Íàñàìê³íåöü ìè â³äâ³äàºìî íàéêðàùå ì³ñòî — Ôóíêö³þ, ϳâäåííà Äàêîòà. Ñàìå íà öüîìó åòàï³ ïîäîðîæ³ âè ä³çíàºòåñÿ, äå âèêîðèñòîâóâàòè óñå òå, ÷îãî âè äîñ³ íàâ÷èëèñÿ. Òåïåð ÿ ïîêàæó âàì, ÿê ïèñàòè âëàñí³ ï³äïðîãðàìè òà ôóíêö³¿ òà âèêîðèñòîâóâàòè ò³, ùî âáóäîâàí³ ó ñåðåäîâèùå .NET Framework. Öå áóäå ö³êàâà ÷àñòèíà ìàíäð³âêè, àëå äîñèòü òðèâàëà. Íàì ïîòð³áíî ðîçãëÿíóòè áàãàòî ìàòåð³àëó íà øëÿõó äî ì³ñòà Ôóíêö³¿, ϳâäåííà Äàêîòà. Òîæ âèðóøàéìî!

Ùî òàêå ï³äïðîãðàìè ϳäïðîãðàìè òðîõè ñõîæ³ íà ì³í³-ïðîãðàìè. ¯õ ïðèçíà÷åííÿ — âèêîíóâàòè êîíêðåòí³ çàâäàííÿ ó âàø³é ïðèêëàäí³é ïðîãðàì³. Êîëè âè ïèøåòå ïðîãðàìó, ïîä³ë³òü ¿¿ íà îêðåì³ ôóíêö³îíàëüí³ ÷àñòèíè òà íàïèø³òü ï³äïðîãðàìó äëÿ êîæíî¿. Âàøà ïðèêëàäíà ïðîãðàìà ìîæå ì³ñòèòè ñò³ëüêè ï³äïðîãðàì, ñê³ëüêè âàì ïîòð³áíî. Îáìåæóâàòè ¿õ ê³ëüê³ñòü íåìຠïîòðåáè. Ñòâîðþéòå äîâ³ëüíó ê³ëüê³ñòü ï³äïðîãðàì, àëå íàìàãàéòåñÿ ïèñàòè ¿õ òàê, ùîá âîíè ìàëè ïåâíå ôóíêö³îíàëüíå íàâàíòàæåííÿ. Íàâ³ùî âèêîðèñòîâóâàòè ï³äïðîãðàìè? ϳäïðîãðàìè äîçâîëÿþòü ïîëåãøèòè íàïèñàííÿ òà íàëàãîäæåííÿ êîäó, îñê³ëüêè âîíè äàþòü ìîæëèâ³ñòü ðîçìåæóâàòè îêðåì³ ôóíêö³¿ ïðîãðàìè. Çíà÷íî ëåãøå ïèñàòè òà íàëàãîäæóâàòè ê³ëüêà êîðîòêèõ ï³äïðîãðàì, í³æ îäíó âåëèêó ïðîãðàìó. ϳñëÿ íàëàãîäæåííÿ âàøà ï³äïðîãðàìà çàâåðøåíà òà ãîòîâà äî âèêîðèñòàííÿ. Âîíà âèêîíóâàòèìåòüñÿ òîä³, êîëè âè âèð³øèòå ¿¿ çàïóñòèòè. ϳäïðîãðàìè äîçâîëÿþòü ñåðéîçíî çåêîíîìèòè ÷àñ, êîëè ó âàñ º áàãàòî ñêëàäíîãî êîäó, äîñòóï äî ÿêîãî ïîòð³áíî îòðèìóâàòè ç ð³çíèõ ÷àñòèí ïðîãðàìè. ϳäïðîãðàìè ìîæíà âèêîðèñòîâóâàòè çíîâó é çíîâó, äîñòóïàþ÷èñü äî íèõ ç áóäü áóäü-ÿêîãî ³íøîãî ì³ñöÿ âàøî¿ ïðîãðàìè. Ó ï³äïðîãðàìàõ íàâ³òü ìîæóòü âèêîðèñòîâóâàòèñÿ ³íø³ ï³äïðîãðàìè, óÿâëÿºòå?!

187


ϳäïðîãðàìè — öå òàêîæ çàñ³á ðîçïîä³ëåííÿ ðîáîòè ç ðîçðîáêè âåëèêî¿ ïðèêëàäíî¿ ïðîãðàìè. Îêðåì³ ïðîãðàì³ñòè ÷àñòî îòðèìóþòü çàâäàííÿ íàïèñàòè ïåâíèé íàá³ð ï³äïðîãðàì äëÿ îäí³º¿ ïðîãðàìè. Âîíè â³äïîâ³äàþòü çà íàïèñàííÿ é íàëàãîäæåííÿ ñâî¿õ ï³äïðîãðàì, à òàêîæ çà çàáåçïå÷åííÿ ¿õ âçàºìî䳿 ç ³íøèìè ÷àñòèíàìè ïðîãðàìè. Çàçâè÷àé ï³äïðîãðàìè âèêîðèñòîâóþòüñÿ äëÿ âèêîíàííÿ îá÷èñëåíü, ôîðìàòóâàííÿ òà â³äîáðàæåííÿ ³íôîðìàö³¿, íàñòðîþâàííÿ ³íòåðôåéñó êîðèñòóâà÷à ³, íàðåøò³, äëÿ ââåäåííÿ ³ âèâåäåííÿ äàíèõ.

Ñòâîðåííÿ âëàñíèõ ï³äïðîãðàì Íàïèñàííÿ ï³äïðîãðàì äëÿ ïðèêëàäíî¿ ïðîãðàìè — öå ùå îäíà ç òèõ ãàëóçåé ïðîãðàìóâàííÿ, ÿê³ ìåí³ íàéá³ëüøå ïîäîáàþòüñÿ. Ñòâîðåííÿ ï³äïðîãðàì òðîõè ñõîæå íà ðîçðîáêó ôîðì. Òóò òðåáà ïîºäíóâàòè òâîð÷èé ï³äõ³ä ç³ çíàííÿì ïðîãðàìóâàííÿ. Îñê³ëüêè ï³äïðîãðàìè ñõîæ³ íà ìàëåíüê³ ïðîãðàìè, âîíè ìîæóòü ì³ñòèòè áóäü-ÿê³ îïåðàòîðè êîäó, ùî âèâ÷àëèñÿ íàìè. Çàðàç âè íàïèøåòå âëàñíó ï³äïðîãðàìó, à çãîäîì ÿ ïîêàæó, ÿê çàñòîñóâàòè ¿¿ ó ïðèêëàäí³é ïðîãðàì³. Ïî÷íåìî ç âèâ÷åííÿ ñèíòàêñèñó ï³äïðîãðàìè, à ïîò³ì ÿ ïðîäåìîíñòðóþ, ÿê íàïîâíèòè öþ ñèíòàêñè÷íó êîíñòðóêö³þ êîíêðåòíèì êîäîì. Îñü ñèíòàêñèñ ï³äïðîãðàìè: Private Sub îïåðàòîð îïåðàòîð îïåðàòîð End Sub

²ì’ÿϳäïðîãðàìè() 1 2 N

Çàóâàæòå, ùî ñëîâà Private, Sub òà End Sub º êëþ÷îâèìè. Ó ñåðåäîâèù³ Visual Studio âîíè âèä³ëÿþòüñÿ ñèí³ì. Êëþ÷îâå ñëîâî Private îçíà÷àº, ùî äî ö³º¿ ï³äïðîãðàìè ìîæíà îòðèìàòè äîñòóï ëèøå ç êîäó ôîðìè Form1. ²ì’ÿϳäïðîãðàìè — öå íàçâà ï³äïðîãðàìè. Âè ìîæåòå âèêîðèñòîâóâàòè áóäü-ÿêå ³ì’ÿ, àëå êðàùå, ùîá âîíî âêàçóâàëî íà ïðèçíà÷åííÿ ï³äïðîãðàìè. Çàóâàæòå, ùî ï³ñëÿ ³ìåí³ ï³äïðîãðàìè ðîçòàøîâàíà ïàðà êðóãëèõ äóæîê. Êîëè äàí³ ïåðåäàþòüñÿ äî ï³äïðîãðàìè, çì³íí³, ùî ì³ñòÿòü ö³ äàí³, ïîì³ùàþòüñÿ ì³æ äóæêàìè. Âè áà÷èëè öå â óñ³õ ï³äïðîãðàìàõ îáðîáêè ïîä³é, ÿêèìè âè êîðèñòóâàëèñÿ ó ïîïåðåäí³õ ìîäóëÿõ êóðñó. Îïåðàòîðè êîäó ï³äïðîãðàìè ì³ñòÿòüñÿ ì³æ ðÿäêàìè Sub òà End Sub. Îïåðàòîðè âèêîíóþòüñÿ ó ïîðÿäêó ¿õ çàïèñó. Ó ï³äïðîãðàì³ ìîæíà âèêîðèñòîâóâàòè ïðàêòè÷íî áóäü-ÿê³ îïåðàòîðè. Îòæå, òåïåð ÿ çàïðîïîíóþ âàì íàïèñàòè âëàñíó ï³äïðîãðàìó, à ïîò³ì ïîêàæó, ÿê âèêëèêàòè ¿¿ ç êîäó. Ñòâîð³òü íîâó Windows-ïðîãðàìó, ùî íàçèâàòèìåòüñÿ SimpleSub. ³äêðèéòå â³êíî êîäó. Çíàéä³òü ðÿäîê êîäó Windows Forms Designer generated code. ϳñëÿ íüîãî äîäàéòå òàêèé êîä: Private Sub MyMessage() MessageBox.Show("Îñü ïîâ³äîìëåííÿ â³ä ï³äïðîãðàìè MyMessage.") End Sub

188


ßê áà÷èòå, êîëè âèêîíóºòüñÿ êîä ó ï³äïðîãðàì³ MyMessage, ó â³êí³ ïîâ³äîìëåííÿ ç’ÿâèòüñÿ òåêñò: „Îñü ïîâ³äîìëåííÿ â³ä ï³äïðîãðàìè MyMessage”. Àëå âñå æ òàêè, ÿê íàì âèêîðèñòàòè òàêèé êîä?

Âèêëèê âëàñíèõ ï³äïðîãðàì Ùîá çàáåçïå÷èòè âèêîíàííÿ êîäó ï³äïðîãðàìè, âàì ïîòð³áíî íàïèñàòè ðÿäîê êîäó ó ïðîãðàì³, ÿêèé áóäå „âèêëèêàòè” ï³äïðîãðàìó. Êîëè âèêëèêàºòüñÿ ï³äïðîãðàìà, âèêîíóºòüñÿ êîä, ÿêèé âîíà ì³ñòèòü. Ñèíòàêñèñ âèêëèêó ï³äïðîãðàìè çîâñ³ì ïðîñòèé. Âè ïðîñòî çàïèñóºòå ³ì’ÿ ï³äïðîãðàìè ç ïàðîþ êðóãëèõ äóæîê çà íèì. Îñü ñèíòàêñèñ âèêëèêó ï³äïðîãðàìè: ²ì’ÿϳäïðîãðàìè() Äàâàéòå âèêëè÷åìî ï³äïðîãðàìó, ÿêó âè ùîéíî íàïèñàëè. Ó ïðîåêò³ SimpleSub äîäàéòå äî ôîðìè Form1 êîìàíäíó êíîïêó. Çì³í³òü çíà÷åííÿ àòðèáóòà Text êíîïêè Button1 íà "MyMessage". Äâ³÷³ êëàöí³òü íà êíîïö³ Button1, ùîá çì³íèòè êîä îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³. Äîäàéòå äî íüîãî òàêèé ðÿäîê êîäó: MyMessage() Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Êëàöí³òü íà êíîïö³ MyMessage. ǒÿâèòüñÿ â³êíî ïîâ³äîìëåííÿ ç òåêñòîì: „Îñü ïîâ³äîìëåííÿ â³ä ï³äïðîãðàìè MyMessage.”. Çâ³äêè âîíî âçÿëîñÿ? Éîãî áóëî âèâåäåíî êîäîì, ùî ì³ñòèòüñÿ ó ï³äïðîãðàì³ MyMessage. Êîëè, êëàöàþ÷è íà êíîïö³, âè âèêëèêàëè ï³äïðîãðàìó, áóëî âèêîíàíî öåé êîä. Òåïåð ÿ çàïðîïîíóþ âàì äîäàòè ùå îäíó ï³äïðîãðàìó äî ïðîåêòó SimpleSub. Âîíà âèâîäèòèìå íà åêðàí ³íøå ïîâ³äîìëåííÿ. ³äêðèéòå â³êíî êîäó òà äîäàéòå òàêèé êîä ï³ñëÿ îïåðàòîðà End Sub ï³äïðîãðàìè MyMessage: Private Sub YourMessage() MessageBox.Show("Îñü ïîâ³äîìëåííÿ â³ä ï³äïðîãðàìè YourMessage.") End Sub Öüîãî ðàçó âèêëè÷åìî ï³äïðîãðàìó YourMessage ç ï³äïðîãðàìè MyMessage, à íå ç îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³. Çì³í³òü ï³äïðîãðàìó MyMessage, ùîá âîíà íàáóëà òàêîãî âèãëÿäó: Private Sub MyMessage() MessageBox.Show("Îñü ïîâ³äîìëåííÿ â³ä ï³äïðîãðàìè MyMessage.") YourMessage() End Sub Ìè äîäàëè âèêëèê ï³äïðîãðàìè YourMessage äî ï³äïðîãðàìè MyMessage. Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Êëàöí³òü íà êíîïö³ MyMessage. ǒÿâëÿòüñÿ äâà â³êíà ïîâ³äîìëåííÿ. Ó ïåðøîìó ì³ñòèòèìåòüñÿ òåêñò: „Îñü ïîâ³äîìëåííÿ â³ä ï³äïðîãðàìè MyMessage.”.

189


Ó äðóãîìó: „Îñü ïîâ³äîìëåííÿ â³ä ï³äïðîãðàìè YourMessage.”. ßê ñïðàöüîâóº òàêèé êîä? Îáðîáíèê ïî䳿 êëàöàííÿ íà êíîïö³ âèêëèêຠï³äïðîãðàìó MyMessage. Êîëè âèêëèêàºòüñÿ öÿ ï³äïðîãðàìà, âèêîíóºòüñÿ êîä, ùî ì³ñòèòüñÿ ó í³é. ϳäïðîãðàìà MyMessage ì³ñòèòü äâà ðÿäêè êîäó. Ïåðøèé âèâîäèòü íà åêðàí ïîâ³äîìëåííÿ „Îñü ïîâ³äîìëåííÿ â³ä ï³äïðîãðàìè MyMessage”, à äðóãèé âèêëèêຠï³äïðîãðàìó YourMessage, ÿêà, â ñâîþ ÷åðãó, çàáåçïå÷óº âèâåäåííÿ íà åêðàí ïîâ³äîìëåííÿ „Îñü ïîâ³äîìëåííÿ â³ä ï³äïðîãðàìè YourMessage”. Çðó÷íî? Âè ïîáóäóâàëè äâ³ âëàñí³ ï³äïðîãðàìè òà âèêëèêàëè ïåðøó ç îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³, à äðóãó ç — ïåðøî¿!

Ñòâîðåííÿ òà âèêëèê ï³äïðîãðàì ç àðãóìåíòàìè Ó ìîâ³ Visual Basic .NET òà ó á³ëüøîñò³ ³íøèõ ñó÷àñíèõ ìîâ ïðîãðàìóâàííÿ ï³äïðîãðàì³ ìîæíà ïåðåäàâàòè äàí³. Âè ìîæåòå íàïèñàòè ï³äïðîãðàìó, ùî îá÷èñëþâàòèìå ð³çí³ ðåçóëüòàòè àáî âèêîíóâàòèìå ð³çí³ ä³¿, çàëåæíî â³ä òîãî, ÿê³ äàí³ âè ¿é íàäàñòå. Çì³íí³, ÷åðåç ÿê³ âè ïåðåäàºòå äàí³ äî ï³äïðîãðàìè, íàçèâàþòüñÿ àðãóìåíòàìè. Êîëè âè ïèøåòå ï³äïðîãðàìó, ÿê³é ïëàíóºòå ïåðåäàâàòè àðãóìåíòè, âè ïîâèíí³ âèçíà÷èòè, ñê³ëüêè ó í³é áóäå àðãóìåíò³â òà ÿêèì áóäå ¿õ òèï. Îñü ñèíòàêñèñ ï³äïðîãðàìè ç àðãóìåíòàìè: Private Sub ²ì’ÿϳäïðîãðàìè(ByVal ³ì’ÿÀðãóìåíòó1 As òèïÀðãóìåíòó1, ByVal ³ì’ÿÀðãóìåíòó2 As òèïÀðãóìåíòó2, ByVal ³ì’ÿÀðãóìåíòóN As òèïÀðãóìåíòóN) îïåðàòîð 1 îïåðàòîð 2 îïåðàòîð N End Sub Ó öüîìó âèïàäêó äóæêè ï³ñëÿ ³ìåí³ ï³äïðîãðàìè íå çàëèøàþòüñÿ ïîðîæí³ìè: ó íèõ ì³ñòèòüñÿ ñïèñîê àðãóìåíò³â, çíà÷åííÿ ÿêèõ ìàþòü áóòè ïåðåäàí³ ï³äïðîãðàì³, òà ¿õ òèï³â. Çâåðí³òü óâàãó íà êëþ÷îâå ñëîâî ByVal. Ñåðåäîâèùå Visual Studio âèä³ëÿº éîãî ñèí³ì. Òèïè àðãóìåíò³â º çâè÷àéíèìè òèïàìè çì³ííèõ, òàêèìè ÿê Integer, String òîùî. Çàóâàæòå, ùî êîæåí àðãóìåíò â³äîêðåìëåíèé â³ä ³íøèõ êîìàìè. Ïåðåêîíàíèé: õîðîøèé ïðèêëàä äîïîìîæå êðàùå çðîçóì³òè öåé ñèíòàêñèñ. ³äêðèéòå â³êíî êîäó â ïðîåêò³ SimpleSub. ϳä ðÿäêîì End Sub ï³äïðîãðàìè YourMessage äîäàéòå íîâèé ôðàãìåíò êîäó: Private Sub GeneralMessage(ByVal _ InMessage As String) MessageBox.Show(InMessage) End Sub

190


Ö³é ï³äïðîãðàì³ òðåáà ïåðåäàòè çíà÷åííÿ àðãóìåíòó òèïó String. Êîëè áóäå âèêëèêàíî ï³äïðîãðàìó, âîíà âèâåäå íà åêðàí â³êíî ïîâ³äîìëåííÿ, ó ÿêîìó ì³ñòèòèìåòüñÿ çíà÷åííÿ àðãóìåíòó (òåêñòîâèé ðÿäîê). Äàâàéòå âèêëè÷åìî ï³äïðîãðàìó GeneralMessage òà ïåðåäàìî ¿é çíà÷åííÿ àðãóìåíòó òèïó String. Äîäàéòå äðóãó êíîïêó äî ôîðìè Form1 ïðîåêòó SimpleSub. Çì³í³òü çíà÷åííÿ àòðèáóòà Text êíîïêè Button2 íà AnyMessage. Äâ³÷³ êëàöí³òü íà êíîïö³ Button2, ùîá çì³íèòè êîä îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³. Äîäàéòå òðè òàêèõ ðÿäêè êîäó: GeneralMessage("Áóäü-ÿêå ïîâ³äîìëåííÿ.") GeneralMessage("ßêåñü ³íøå ïîâ³äîìëåííÿ.") GeneralMessage("Ùå îäíå ïîâ³äîìëåííÿ.") Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Êëàöí³òü íà êíîïö³ AnyMessage. Áóäå âèâåäåíî òðè ïîâ³äîìëåííÿ. ßê òàêå ìîæëèâî? Êîä êëàöàííÿ íà êíîïö³ âèêëèêຠï³äïðîãðàìó GeneralMessage òðè÷³. Êîæíîãî ðàçó âîíà ïåðåäຠäî ï³äïðîãðàìè ÿê àðãóìåíò íîâèé ðÿäîê òåêñòó. Ïåðøîãî ðàçó ï³äïðîãðàìà âèêëèêàºòüñÿ ç ðÿäêîâèì àðãóìåíòîì "Áóäü-ÿêå ïîâ³äîìëåííÿ". Äðóãîãî ðàçó — ç àðãóìåíòîì "ßêåñü ³íøå ïîâ³äîìëåííÿ". Òðåòüîãî ðàçó — ç àðãóìåíòîì "Ùå îäíå ïîâ³äîìëåííÿ". Êîëè âèêëèêàºòüñÿ ï³äïðîãðàìà, ¿é ïåðåäàºòüñÿ çíà÷åííÿ àðãóìåíòó. Çãîäîì öåé àðãóìåíò âèêîðèñòîâóºòüñÿ îïåðàòîðîì MessageBox.Show. Ðîçãëÿíåìî ùå îäèí ïðèêëàä. Öüîãî ðàçó ÿ çàïðîïîíóþ âàì íàïèñàòè ï³äïðîãðàìó, ùî îòðèìóº ÿê àðãóìåíòè äâà ö³ëèõ ÷èñëà, äîäຠ¿õ, à ïîò³ì ó â³êí³ ïîâ³äîìëåííÿ âèâîäèòü ñóìó. Ãîòîâ³? Äîäàéòå íîâó ï³äïðîãðàìó, ùî íàçèâàºòüñÿ Adder (Ñóìàòîð), äî ïðîåêòó SimpleSub. ϳäïðîãðàìà Adder ìຠòàêèé âèãëÿä: Private Sub Adder(ByVal AddOne As Integer, ByVal AddTwo As Integer) Dim Total As Integer Total = AddOne + AddTwo MessageBox.Show(Total) End Sub Çâåðí³òü óâàãó, ùî êîëè âèêëèêàºòüñÿ ï³äïðîãðàìà, ¿é òðåáà ïåðåäàòè äâà ö³ëî÷èñëîâèõ àðãóìåíòè. Òåïåð äîäàéòå òðåòþ êîìàíäíó êíîïêó äî ôîðìè Form1 ïðîåêòó SimpleSub. Çì³í³òü çíà÷åííÿ àòðèáóòà Text êíîïêè Button3 íà Adder. Äâ³÷³ êëàöí³òü íà êíîïö³ Button3, ùîá çì³íèòè êîä îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³. Äîäàéòå òàêèé ðÿäîê êîäó: Adder(34, 57)

191


Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Êëàöí³òü íà êíîïö³ Adder. ǒÿâèòüñÿ ïîâ³äîìëåííÿ ç ðåçóëüòàòîì 91. Îáðîáíèê ïî䳿 êëàöàííÿ íà êíîïö³ âèêëèêຠï³äïðîãðàìó Adder òà ïåðåäຠ¿é äâà ö³ëî÷èñëîâèõ çíà÷åííÿ — 34 òà 57. Ó ï³äïðîãðàì³ Adder âèêîíóþòüñÿ òðè ðÿäêè êîäó. Ñïî÷àòêó îãîëîøóºòüñÿ çì³ííà Total. Ïîò³ì çì³íí³é Total íàäàºòüñÿ çíà÷åííÿ ñóìè àðãóìåíò³â AddOne (34) òà AddTwo (57). Çì³íí³ AddOne òà AddTwo ì³ñòÿòü çíà÷åííÿ, ùî ïåðåäàþòüñÿ ï³äïðîãðàì³, êîëè âîíà âèêëèêàºòüñÿ. Íàðåøò³ ï³äïðîãðàìà âèâîäèòü íà åêðàí çíà÷åííÿ çì³ííî¿ Total (91). Òåïåð âè ìîæåòå ñòâîðþâàòè âëàñí³ ï³äïðîãðàìè, âèêëèêàòè ¿õ ³ ïåðåäàâàòè ¿ì äàí³. Äàë³ ÿ ïîêàæó âàì, ÿê âèêîðèñòîâóâàòè ôóíêö³¿. Ôóíêö³ÿì âè ìîæåòå ïåðåäàâàòè äàí³ òàê ñàìî, ÿê ³ ï³äïðîãðàìàì. Ïðîòå, íà â³äì³íó â³ä ï³äïðîãðàì, ç ôóíêö³é âè ìîæåòå òàêîæ îòðèìóâàòè äàí³.

Ñòâîðåííÿ âëàñíèõ ôóíêö³é Ãîëîâíà â³äì³íí³ñòü ì³æ ï³äïðîãðàìàìè òà ôóíêö³ÿìè ïîëÿãຠó òîìó, ùî ç ôóíêö³é âè ìîæåòå îòðèìóâàòè äàí³. Âîíè íàçèâàþòüñÿ çíà÷åííÿìè, ùî ïîâåðòàþòüñÿ. ²íàêøå êàæó÷è, ôóíêö³ÿ ïîâåðòຠçíà÷åííÿ ïåâíîãî òèïó. Êîëè âè ïèøåòå ôóíêö³þ, âè ïîâèíí³ âêàçàòè òèï öüîãî çíà÷åííÿ. Çàðàç ÿ ïîêàæó âàì ñèíòàêñèñ ôóíêö³¿, ùî îòðèìóº àðãóìåíòè òà ïîâåðòຠçíà÷åííÿ: Private Function ²ì’ÿÔóíêö³¿(ByVal ³ì’ÿÀðãóìåíòó1 As òèïÀðãóìåíòó1, ByVal ³ì’ÿÀðãóìåíòó2 As òèïÀðãóìåíòó2, ByVal ³ì’ÿÀðãóìåíòóN As òèïÀðãóìåíòóN) As ÒèïÇíà÷åíííÿÙîÏîâåðòàºòüñÿ îïåðàòîð 1 îïåðàòîð 2 îïåðàòîð N ²ì’ÿÔóíêö³¿ = Çíà÷åííÿÙîÏîâåðòàºòüñÿ End Function Ñëîâà Private, Function òà End Function º êëþ÷îâèìè, ó ñåðåäîâèù³ Visual Studio âîíè âèä³ëÿþòüñÿ ñèí³ì. ²ì’ÿ ôóíêö³¿ ïîâèííî áóòè îïèñîâèì. Ñïèñîê àðãóìåíò³â òà ¿õ òèï³â ì³ñòèòüñÿ ó êðóãëèõ äóæêàõ ï³ñëÿ ³ìåí³ ôóíêö³¿. Àðãóìåíòè ðîçä³ëÿþòüñÿ êîìàìè. ʳëüê³ñòü àðãóìåíò³â ìîæå áóòè äîâ³ëüíîþ, àëå çíà÷åííÿ, ùî ïîâåðòàºòüñÿ, ìîæå áóòè ëèøå îäíå. Âè ïîâèíí³ âêàçàòè òèï öüîãî çíà÷åííÿ (íàïðèêëàä, As Integer àáî As String) ï³ñëÿ äóæîê ó çàãîëîâêó ôóíêö³¿. Çíà÷åííÿ, ÿêå ôóíêö³ÿ ïîâåðòàòèìå, ïðèñâîþºòüñÿ ¿¿ ³ìåí³ â îñòàííüîìó ðÿäêó êîäó ôóíêö³¿.

192


Ïðèêëàä ç ðåàëüíîãî æèòòÿ äîïîìîæå ïîÿñíèòè ñèíòàêñèñ ôóíêö³¿. Ñòâîð³òü íîâó Windowsïðîãðàìó ³ç íàçâîþ FunctionJunction. ³äêðèéòå â³êíî êîäó òà çíàéä³òü ðÿäîê Windows Forms Designer generated code. Ïî÷èíàþ÷è ç íàñòóïíîãî ðÿäêà, çàïèø³òü òàêèé êîä: Private Function Multiplier(ByVal MultOne As Integer, _ ByVal MultTwo As Integer) As Integer Multiplier = MultOne * MultTwo End Function Öÿ ôóíêö³ÿ íàçèâàºòüñÿ Multiplier. Âîíà îòðèìóº äâà ö³ëî÷èñëîâèõ àðãóìåíòè MultOne òà MultTwo. Òèï çíà÷åííÿ, ÿêå ïîâåðòàºòüñÿ, âêàçàíèé ï³ñëÿ äóæîê, ùî îòî÷óþòü ñïèñîê àðãóìåíò³â. Ó äàíîìó âèïàäêó öå áóäå çíà÷åííÿ ö³ëî÷èñëîâîãî òèïó (As Integer). Ôóíêö³ÿ ì³ñòèòü îäèí-ºäèíèé ðÿäîê êîäó: Multiplier = MultOne * MultTwo Ó öüîìó ðÿäêó çíà÷åííÿ, ùî ïîâåðòàºòüñÿ, çàäàºòüñÿ ÿê äîáóòîê äâîõ àðãóìåíò³â ôóíêö³¿. ²ì’ÿ ôóíêö³¿ Multiplier âèêîðèñòîâóºòüñÿ ÿê ³ì’ÿ çíà÷åííÿ, ùî ïîâåðòàºòüñÿ. ßêùî ³ìåí³ ôóíêö³¿ íå ïðèñâî¿òè ïåâíîãî çíà÷åííÿ, âèíèêíå ïîìèëêà. Äàâàéòå âèêëè÷åìî öþ ôóíêö³þ òà âèêîðèñòàºìî ó ïðîãðàì³ çíà÷åííÿ, ùî íåþ ïîâåðòàºòüñÿ.

Âèêëèê âëàñíèõ ôóíêö³é ³äì³íí³ñòü âèêëèêó ôóíêö³¿ â³ä âèêëèêó ï³äïðîãðàìè ïîëÿãຠâ òîìó, ùî òðåáà ùîñü ðîáèòè ç³ çíà÷åííÿì, ÿêå ôóíêö³ÿ ïîâåðòàº. Íàïðèêëàä, öå çíà÷åííÿ ìîæíà ïðèñâî¿òè ïåâí³é çì³íí³é. Çì³ííà ìຠáóòè òîãî æ òèïó, ùî é çíà÷åííÿ, ÿêå ïîâåðòàºòüñÿ. Äàâàéòå âèêëè÷åìî ôóíêö³þ Multiplier, ÿêó âè ùîéíî ñòâîðèëè, à ïîò³ì âèêîðèñòàºìî çíà÷åííÿ, ÿêå âîíà ïîâåðòàº, ó êîä³. Äî ôîðìè Form1 ïðîåêòó FunctionJunction äîäàéòå êîìàíäíó êíîïêó. Çì³í³òü çíà÷åííÿ àòðèáóòà Text ö³º¿ êíîïêè íà Ïîìíîæèòè. Äîäàéòå òàêèé êîä äî îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ Button1: Dim Product As Integer Product = Multiplier(34, 57) MessageBox.Show(Product) Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Êëàöí³òü íà êíîïö³ Ïîìíîæèòè. Áóäå âèâåäåíî ïîâ³äîìëåííÿ ç ðåçóëüòàòîì ìíîæåííÿ 34 íà 57, ùî ñòàíîâèòü 1938. ßê ïðàöþº òàêèé êîä? Ó êîä³ îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ îãîëîøóºòüñÿ ö³ëî÷èñëîâà çì³ííà Product. ϳñëÿ öüîãî âèêëèêàºòüñÿ ôóíêö³ÿ Multiplier, ÿê³é ïåðåäàþòüñÿ àðãóìåíòè MultOne (34) òà MultTwo (57).

193


Ó êîä³ ôóíêö³¿ Multiplier çíà÷åííÿ, ÿêå âîíà ïîâåðòàº, ïîêëàäàºòüñÿ ð³âíèì äîáóòêó àðãóìåíò³â MultOne òà MultTwo. Çíà÷åííÿ, ùî ïîâåðòàºòüñÿ, º ö³ëî÷èñëîâîãî òèïó. Ó îáðîáíèêó ïî䳿 êëàöàííÿ íà êíîïö³ ö³ëî÷èñëîâ³é çì³íí³é Product íàäàºòüñÿ çíà÷åííÿ, ÿêå ïîâåðòຠôóíêö³ÿ Multiplier, òà çä³éñíþºòüñÿ éîãî âèâåäåííÿ ó â³êí³ ïîâ³äîìëåííÿ. Ó ìåíå ç’ÿâèëàñÿ ³äåÿ! Îñê³ëüêè âè íàïèñàëè ÷óäîâó ôóíêö³þ Multiplier, òðîõè ïîôàíòàçóºìî. Äîäàéòå äî ôîðìè Form1 ïðîåêòó FunctionJunction äðóãó êîìàíäíó êíîïêó. Çì³í³òü çíà÷åííÿ àòðèáóòà Text êíîïêè Button2 íà Ïîìíîæèòè çíîâ. Äîäàéòå òàêèé êîä äî îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ Button2: Dim Product As Integer Product = Multiplier(Multiplier(2, 3), _ Multiplier(5, 7)) MessageBox.Show(Product) Ïîáóäóéòå òà çàïóñò³òü ïðîåêò. Êëàöí³òü íà êíîïö³ Ïîìíîæèòè çíîâ. Íà åêðàí³ ç’ÿâèòüñÿ ÷èñëî 210. Öüîãî ðàçó ìè âèêëèêàºìî ôóíêö³þ Multiplier òðè÷³. Ïåðøîãî ðàçó ç àðãóìåíòàìè 2 òà 3. Ôóíêö³ÿ ïîâåðòຠçíà÷åííÿ 6, ùî âèêîðèñòîâóºòüñÿ ÿê ïåðøèé àðãóìåíò, êîëè ìè âèêëèêàºìî ôóíêö³þ Multiplier âòðåòº. Äðóãîãî ðàçó ôóíêö³ÿ Multiplier âèêëèêàºòüñÿ ç àðãóìåíòàìè 5 òà 7 òà ïîâåðòຠçíà÷åííÿ 35, ùî ñòຠäðóãèì àðãóìåíòîì, êîëè ìè âèêëèêàºìî ôóíêö³þ Multiplier âòðåòº. Âòðåòº ìè âèêëèêàºìî ôóíêö³þ Multiplier ç àðãóìåíòàìè 6 (çíà÷åííÿ, ÿêå ôóíêö³ÿ Multiplier ïîâåðíóëà ïåðøîãî ðàçó) òà 35 (çíà÷åííÿ, ÿêå ôóíêö³ÿ Multiplier ïîâåðíóëà äðóãîãî ðàçó). Áà÷èòå, ÿê ôóíêö³ÿ ìîæå ñòàòè àðãóìåíòîì ôóíêö³¿ (íàâ³òü ò³º¿ æ ñàìî¿)?

Âïðàâà 12.1. Ïåðåòâîðåííÿ îäèíèöü âèì³ðþâàííÿ ß ïëóòàþ ë³âèé òà ïðàâèé áîêè. Îäíîãî äíÿ ÿ ìîæó ïîâåðíóòè ë³âîðó÷, ââàæàþ÷è, ùî ïîâåðòàþ ïðàâîðó÷, ³ ìè îïèíèìîñÿ ó Êàíàä³. Ïðî âñÿê âèïàäîê äàâàéòå íàïèøåìî ïðîãðàìó, ùî ïåðåòâîðþâàòèìå àìåðèêàíñüê³ îäèíèö³ âèì³ðþâàííÿ íà êàíàäñüê³ òà íàâïàêè. Äëÿ öüîãî âèêîðèñòàéòå êîä òà ôîðìó, ôàéëè ÿêèõ ì³ñòÿòüñÿ â ïàïö³ Âïðàâà_12.1.

194


Ôîðìà ìຠòàêèé âèãëÿä:

Êîëè âè êëàöàºòå íà êíîïö³ Ïåðåòâîðèòè íà êàíàäñüê³ îäèíèö³ âèì³ðþâàííÿ, ïåðåòâîðþþòüñÿ çíà÷åííÿ ïðàâîãî ñòîâï÷èêà. Êîëè âè êëàöàºòå íà êíîïö³ Ïåðåòâîðèòè íà àìåðèêàíñüê³ îäèíèö³ âèì³ðþâàííÿ, ïåðåòâîðþþòüñÿ çíà÷åííÿ ë³âîãî ñòîâï÷èêà. Çàñòîñîâóéòå òàê³ êîåô³ö³ºíòè ïåðåòâîðåííÿ: l

1 ê³ëîìåòð = 0,621 ìèë³;

l

1 ë³òð = 0,264 ãàëîíà;

l

1 êàíàäñüêèé äîëàð = 78,7 öåíò³â ÑØÀ.

Âè íàâ÷èëèñÿ ñòâîðþâàòè âëàñí³ ôóíêö³¿ òà ï³äïðîãðàìè. Ó ö³é ïðîãðàì³ âè ÏÎÂÈÍͲ çàñòîñîâóâàòè ôóíêö³¿. Ìè òðîõè ïîëåãøèëè âàøå çàâäàííÿ. Ìè íàïèñàëè äëÿ âàñ îäíó ç øåñòè ôóíêö³é, à ³íø³ ï’ÿòü âàì äîâåäåòüñÿ ñòâîðèòè ñàìîñò³éíî. Ìè òàêîæ íàäàëè óâåñü êîä äëÿ îáðîáíèê³â äâîõ êíîïîê. Êîëè ïðîãðàìà çàïðàöþº ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðó.

Âáóäîâàí³ ï³äïðîãðàìè òà ôóíêö³¿ Êàðêàñ .NET Framework ì³ñòèòü áàãàòî âáóäîâàíèõ ï³äïðîãðàì òà ôóíêö³é, ùî ïðèçíà÷åí³ äëÿ âèêîíàííÿ ïîøèðåíèõ çàâäàíü. Ö³ ôóíêö³¿ áóëè ðåòåëüíî ïåðåâ³ðåí³ òà íàëàãîäæåí³. Âîíè äîñòóïí³ äëÿ óñ³õ ìîâ ñ³ìåéñòâà .NET. Êîëè ìîæëèâî, âàì ñë³ä çàñòîñîâóâàòè ö³ ôóíêö³¿ çàì³ñòü òîãî, ùîá ïèñàòè âëàñí³. Çâåðí³òü óâàãó, ùî ïðè öüîìó âè íå ëèøå åêîíîìèòå ñâ³é ÷àñ, àëå é ñòàíäàðòèçóºòå êîä, ðîáèòå éîãî ëåãøèì äëÿ ñïðèéíÿòòÿ. Îêð³ì òîãî, äåÿê³ ç âáóäîâàíèõ ôóíêö³é âè íå çìîæåòå íàïèñàòè âëàñíîðó÷. Áàãàòî ç íèõ îòðèìóþòü äîñòóï äî áàçîâèõ êëàñ³â ñåðåäîâèùà .NET Framework òà ³íòåðôåéñó ïðèêëàäíîãî ïðîãðàìóâàííÿ Windows. Âàì äî íèõ çâåðòàòèñÿ íå ïîòð³áíî! ß ïîêàæó âàì äåê³ëüêà âáóäîâàíèõ ï³äïðîãðàì òà ôóíêö³é, ùî âèêîðèñòîâóþòüñÿ íàé÷àñò³øå, òà äî ÿêèõ ìîæíà îòðèìàòè äîñòóï ó ìîâ³ Visual Basic .NET. Âè ïîáà÷èòå, ùî äåÿê³ ç íèõ âæå çíàéîì³ âàì ³ç âïðàâ, ÿê³ âè âèêîíóâàëè ðàí³øå. Ìè íàäàâàëè âàì êîä, íå ïîÿñíþþ÷è éîãî, à òåïåð äàìî ³ ïîÿñíåííÿ!

195


Ðÿäêîâ³ ôóíêö³¿ Äî êàðêàñà .NET Framework âáóäîâàíî áàãàòî ôóíêö³é, ùî ïðèçíà÷åí³ äëÿ îáðîáêè ðÿäê³â. Ö³ ôóíêö³¿ äîçâîëÿþòü âèäàëÿòè çàéâ³ ñèìâîëè, çíàõîäèòè ï³äðÿäêè á³ëüøèõ ðÿäê³â, çì³íþâàòè ðåã³ñòð ñèìâîë³â òåêñòó òîùî. Çàñòîñóâàííÿ á³ëüøîñò³ ç íèõ ëåãêî ïîêàçàòè íà ïðèêëàäàõ. Ñèíòàêñèñ óñ³õ ðÿäêîâèõ ôóíêö³é îäíàêîâèé. ¯õ ìîæíà çàñòîñîâóâàòè äî áóäü-ÿêîãî ðÿäêà. Äåÿê³ ç íèõ îòðèìóþòü àðãóìåíòè, ³íø³ — í³. Á³ëüø³ñòü ç íèõ ïîâåðòຠðÿäêîâ³ çíà÷åííÿ, õî÷à ôóíêö³ÿ Length() ïîâåðòຠö³ëî÷èñëîâå çíà÷åííÿ. Îñü çàãàëüíèé ñèíòàêñèñ âèêëèêó âáóäîâàíèõ äî Visual Basic .NET ðÿäêîâèõ ôóíêö³é, äå ñëîâàìè çíà÷åííÿÙîÏîâåðòàºòüñÿ òà äåÿêèéÐÿäîê ïîçíà÷åí³ çì³íí³: çíà÷åííÿÙîÏîâåðòàºòüñÿ = äåÿêèéÐÿäîê.²ì’ÿÐÿäêîâî¿Ôóíêö³¿ (àðãóìåíò1, àðãóìåíò2, àðãóìåíòN) Äóæå êîðèñíà ôóíêö³ÿ Length. Âîíà ïîâåðòຠäîâæèíó ðÿäêà ÿê ö³ëå ÷èñëî. Íàïðèêëàä: MyText = "TextBox1" myLength = MyText.Length ' ïîâåðòຠ8, äîâæèíó ðÿäêà "TextBox1" Ôóíêö³¿ ToLower òà ToUpper çàñòîñîâóþòüñÿ äëÿ çàì³íè óñ³õ ñèìâîë³â ðÿäêà íà ñèìâîëè íèæíüîãî àáî âåðõíüîãî ðåã³ñòðà. Ïîãëÿíüìî íà ö³ ïðèêëàäè: MyText = "TextBox1" MyCaps = MyText.ToUpper 'ïîâåðòຠ"TEXTBOX1" MyText = "TextBox1" mySmalls = MyText.ToLower 'ïîâåðòຠ"textbox1" ²íîä³ âàì ïîòð³áíî ïåðåêîíàòèñÿ, ùî íà ïî÷àòêó àáî íàïðèê³íö³ ðÿäêà íåìຠçàéâèõ ïðîá³ë³â. Òîáòî âè õî÷åòå âèäàëèòè áóäü-ÿê³ ïðîá³ëè ïåðåä ðÿäêîì òåêñòó òà ï³ñëÿ íüîãî. Äëÿ öüîãî çàñòîñîâóºòüñÿ ôóíêö³ÿ Trim: MyText = " TextBox1" myClean = MyText.Trim 'ïîâåðòຠ"TextBox1" MyText = " TextBox1 " MyCleaner = MyText.Trim 'ïîâåðòຠ"TextBox1" Ùå îäíà êîðèñíà ôóíêö³ÿ — öå ôóíêö³ÿ Substring. Âîíà ïîâåðòຠ÷àñòèíó ðÿäêà (ï³äðÿäîê). Êîëè âè âèêëèêàºòå ôóíêö³þ Substring, ¿é ñë³ä ïåðåäàòè äâà ö³ëî÷èñëîâèõ àðãóìåíòè. Ïåðøèé àðãóìåíò — öå ïî÷àòêîâà ïîçèö³ÿ, à äðóãèé — äîâ-

196


æèíà ï³äðÿäêà. Çâåðí³òü óâàãó, ùî ïåðøà ë³òåðà ó ðÿäêó çàéìຠïîçèö³þ 0 (à íå 1). Äðóãà ë³òåðà çàéìຠïîçèö³þ 1 (à íå 2). MyText = "TextBox1" MySub = MyText.Substring(0, 4) 'ïîâåðòຠòåêñò "Text", ïî÷èíàþ÷è 'ç ïîçèö³¿ 0 äîâæèíîþ ó 4 ñèìâîëè MyText = "TextBox1" MySub = MyText.Substring(1, 2) 'ïîâåðòຠòåêñò "ex", ïî÷èíàþ÷è 'ç ïîçèö³¿ 1 äîâæèíîþ ó 2 ñèìâîëè Ìåí³ â³äîìî, ùî âè íå ìîæåòå äî÷åêàòèñÿ, ùîá ïîáà÷èòè ö³ ðÿäêîâ³ ôóíêö³¿ ó 䳿. Òîæ äàâàéòå ñòâîðèìî íåâåëèêó ïðîãðàìó, ùî ïîêàæå âàì, ÿê âîíè ïðàöþþòü! Ñòâîð³òü íîâó Windowsïðîãðàìó, ùî íàçèâàòèìåòüñÿ BuiltIn. Äîäàéòå äâà òåêñòîâèõ ïîëÿ äî ôîðìè Form1. Âèäàë³òü çíà÷åííÿ àòðèáóòà Text òåêñòîâîãî ïîëÿ TextBox2. Àòðèáóòó Multiline òåêñòîâîãî ïîëÿ TextBox2 ïðèñâîéòå çíà÷åííÿ Yes. Àòðèáóòó Scrollbars òåêñòîâîãî ïîëÿ TextBox2 íàäàéòå çíà÷åííÿ Vertical. Âèñîòó òåêñòîâîãî ïîëÿ TextBox2 çðîá³òü ìàéæå ð³âíîþ âèñîò³ ôîðìè. Äîäàéòå äî ôîðìè Form1 êîìàíäíó êíîïêó. Äî îáðîáíèêà ïî䳿 êëàöàííÿ íà ö³é êíîïö³ äîäàéòå òàêèé êîä: Dim MyText As String Dim TempText As String = "" MyText = TextBox1.Text TempText = TempText & MyText TempText = TempText & vbNewLine TempText = TempText & vbNewLine TempText = TempText & vbNewLine TempText = TempText & vbNewLine TempText = TempText & vbNewLine TempText = TempText & vbNewLine TextBox2.Text = TempText

& & & & & &

MyText.ToLower MyText.ToUpper MyText.Trim MyText.Substring(0, 4) MyText.Substring(1, 2) MyText.Length

Ïîáóäóéòå òà çàïóñò³òü ïðîãðàìó. Ââåä³òü äîâ³ëüíèé òåêñò äî ïîëÿ TextBox1 ³ êëàöí³òü íà êíîïö³ Button1. Ó òåêñòîâîìó ïîë³ TextBox2 áóäå â³äîáðàæåíî ðåçóëüòàòè âèêîíàííÿ âñ³õ ðÿäêîâèõ ôóíêö³é. Ö³ ôóíêö³¿ çàñòîñîâóâàëèñü äî ðÿäêà, ÿêèé âè ââåëè äî òåêñòîâîãî ïîëÿ TextBox1. Òåïåð çì³í³òü òåêñò ó ïîë³ TextBox1 òà êëàöí³òü íà êíîïö³ Button1 çíîâó.

Ãåíåðàòîð âèïàäêîâèõ ÷èñåë Áàãàòüîì ïðîãðàìàì ïîòð³áíî ãåíåðóâàòè âèïàäêîâ³ ÷èñëà. Îñîáëèâî öå ñòîñóºòüñÿ òàêèõ ïðèêëàäíèõ ïðîãðàì, ÿê ³ãðè, ó ÿêèõ áàãàòî âèïàäêîâèõ ïîä³é, ñõîæèõ íà ï³äêèäàííÿ ìîíåòè àáî êèäàííÿ êîñòåé. Ó ñåðåäîâèù³ .NET Framework º êëàñ System.Random, ÿêèé ì³ñòèòü ôóíêö³¿, ùî âèêîðèñòîâóþòüñÿ äëÿ ãåíåðóâàííÿ âèïàäêîâèõ ÷èñåë. Òåïåð ÿ äîïîìîæó âàì íàïèñàòè êîä, ùî ³ì³òóâàòèìå êèäàííÿ øåñòèãðàííèõ êîñòåé. Äî ôîðìè Form1 ïðîåêòó BuiltIn äîäàéòå äðóãó êîìàíäíó êíîïêó. Çì³í³òü çíà÷åííÿ àòðèáóòà Text êíîïêè Button2 íà Êèíóòè êîñò³. Äîäàéòå òàêèé êîä äî îáðîáíèêà ïî䳿 êëàöàííÿ íà êíîïö³ Button2: Dim myRandomGenerator As System.Random Dim myRandomInteger As Integer

197


myRandomGenerator = New System.Random myRandomInteger = myRandomGenerator.Next(1,7) MessageBox.Show(myRandomInteger) Ïîáóäóéòå òà çàïóñò³òü ïðîãðàìó. Êëàöí³òü íà êíîïö³ Êèíóòè êîñò³. ǒÿâèòüñÿ â³êíî ïîâ³äîìëåííÿ ç âèïàäêîâèì ÷èñëîì â³ä 1 äî 6. Çíîâó êëàöí³òü íà êíîïö³. Ó â³êí³ ïîâ³äîìëåííÿ ç’ÿâèòüñÿ ³íøå âèïàäêîâå ÷èñëî â³ä 1 äî 6. ßê ïðàöþº öåé êîä? Ñïî÷àòêó ìè îãîëîøóºìî çì³ííó òèïó System.Random, ùî íàçèâàºòüñÿ myRandomGenerator. Ïîò³ì ìè îãîëîøóºìî çì³ííó ö³ëî÷èñëîâîãî òèïó, ùî íàçèâàºòüñÿ myRandomInteger. Çà äîïîìîãîþ êëþ÷îâîãî ñëîâà New ñòâîðþºòüñÿ îᒺêò System. Random ³ éîãî çíà÷åííÿ íàäàºòüñÿ çì³íí³é myRandomGenerator. Ìè âèêëèêàºìî ôóíêö³þ Next(1,7) çì³ííî¿ myRandomGenerator ùîá çãåíåðóâàòè âèïàäêîâå ÷èñëî â³ä 1 äî 6, ϳä ÷àñ âèêëèêó ôóíêö³¿ Next(1,7)ìè ïåðåäàºìî àðãóìåíòè 1 òà 7, ùî º íèæí³ìè òà âåðõí³ìè ìåæàìè ä³àïàçîíó âèïàäêîâèõ ÷èñåë, ÿê³ ìè õî÷åìî ãåíåðóâàòè. Ôóíêö³ÿ Next() ïîâåðòຠâèïàäêîâå ö³ëå ÷èñëî â³ä 1 äî 6=7–1, ÿêå íàäàºòüñÿ çì³íí³é myRandomInteger. Îñòàíí³é ðÿäîê êîäó çàáåçïå÷óº âèâåäåííÿ âèïàäêîâîãî ÷èñëà íà åêðàí ó â³êí³ ïîâ³äîìëåííÿ.

Ôóíêö³¿ ïåðåòâîðåííÿ Ó Visual Basic .NET º äâ³ ôóíêö³¿ ïåðåòâîðåííÿ, ÿê³ ìîæóòü ñòàòè ó íàãîä³, êîëè âè ïðàöþºòå ç ÷èñëàìè. Öå ôóíêö³¿ Val òà Int. Ðîçãëÿíüìî ñïî÷àòêó ôóíêö³þ Val. Ôóíêö³ÿ Val âèêîðèñòîâóºòüñÿ äëÿ ïåðåòâîðåííÿ ðÿäêà íà ÷èñëî. ßêùî ó ðÿäêó ì³ñòèòüñÿ äåñÿòêîâà êðàïêà, ôóíêö³ÿ Val ïîâåðòຠ÷èñëî òèïó Double. ßêùî ó ðÿäêó íå ì³ñòèòüñÿ äåñÿòêîâî¿ êðàïêè, ôóíêö³ÿ Val ïîâåðòຠ÷èñëî òèïó Integer. Ôóíêö³ÿ Val ÷àñòî âèêîðèñòîâóºòüñÿ äëÿ ïåðåòâîðåííÿ çíà÷åííÿ ïàðàìåòðà Text ðÿäêîâîãî òèïó íà ÷èñëî, ÿêå ìîæíà âèêîðèñòîâóâàòè â îá÷èñëåííÿõ. Îñü ê³ëüêà ïðèêëàä³â çàñòîñóâàííÿ ôóíêö³¿ Val: Dim MyInt As Integer MyInt = Val("123") + 123 'ïîâåðòຠ246 Dim MyDouble As Double MyDouble = Val("123.22") + 123 'ïîâåðòຠ246.22 Ôóíêö³ÿ Int ïîâåðòຠö³ëó ÷àñòèíó ÷èñëà, òîáòî ÷àñòèíó ÷èñëà ë³âîðó÷ â³ä äåñÿòêîâî¿ êîìè (ùî ó ìîâàõ ïðîãðàìóâàííÿ çàçâè÷àé ïîçíà÷àºòüñÿ êðàïêîþ). Ïîãëÿíüòå íà òàê³ ïðèêëàäè çàñòîñóâàííÿ ôóíêö³¿ Int: Dim MyInt As Integer MyInt = Int(123) 'ïîâåðòຠ123 MyInt = Int(123.45) 'ïîâåðòຠ123

ϳäïðîãðàìè òà ôóíêö³¿ ó J# òà C# Ïðîãðàìóþ÷è íà ìîâàõ C# òà J#, âè òàêîæ ìîæåòå ñòâîðþâàòè âëàñí³ ôóíêö³¿. Âè ìîæåòå ðîçðîáëÿòè ôóíêö³¿, ÿê³ îòðèìóþòü àðãóìåíòè òà ïîâåðòàþòü çíà÷åííÿ. Ó J# òà C# íåìຠåêâ³âàëåíòà ï³äïðîãðàì. Ó öèõ ìîâàõ º ëèøå ôóíêö³¿. Îêð³ì òîãî, ó J# òà C# íåìຠêëþ÷îâî-

198


ãî ñëîâà Function. Îãîëîøåííÿ ôóíêö³¿ â³äð³çíÿºòüñÿ â³ä ³íøèõ îãîëîøåíü ëèøå ïîðÿäêîì ðîçòàøóâàííÿ êëþ÷îâèõ ñë³â òà ñïåö³àëüíèõ ñèìâîë³â. Ïîãîâîð³ìî ç ijðêîì òà Äæåí ïðî ôóíêö³¿ ó öèõ äâîõ ìîâàõ. ßê óæå êàçàâ Êë³ô, ó C# íåìຠêëþ÷îâèõ ñë³â Sub àáî Function, ùî ó Visual Basic .NET äàþòü ìîæëèâ³ñòü ðîçð³çíÿòè ï³äïðîãðàìè òà ôóíêö³¿. Ó C# ì³æ ï³äïðîãðàìàìè òà ôóíêö³ÿìè íåìຠâ³äì³ííîñòåé. Ðîçãëÿíüìî ïðèêëàä îãîëîøåííÿ ôóíêö³¿ ó C#. Ôóíêö³ÿ îòðèìóº äâà àðãóìåíòè òà ïîâåðòຠö³ëî÷èñëîâå çíà÷åííÿ. private static int Adder_C(int oneAdd, int twoAdd) { int intSum=0; intSum = oneAdd + twoAdd; return intSum; } Çàóâàæòå, ùî ìè íå êîðèñòóºìîñÿ êëþ÷îâèì ñëîâîì Function, ÿê ðîáèëè öå ó Visual Basic .NET. Êëþ÷îâ³ ñëîâà private òà static âêàçóþòü, ùî öþ ôóíêö³þ ìîæíà âèêëèêàòè ëèøå ç êîäó ôîðìè Form1. Êëþ÷îâå ñëîâî int (ï³ñëÿ ñëîâà static) âèçíà÷ຠòèï çíà÷åííÿ, ÿêå ïîâåðòຠôóíêö³ÿ (ó äàíîìó âèïàäêó öå ö³ëî÷èñëîâèé òèï). ²ìåíà äâîõ àðãóìåíò³â, çíà÷åííÿ ÿêèõ ïîòð³áíî âêàçóâàòè ï³ä ÷àñ âèêëèêó ôóíêö³¿, çàïèñàí³ ó êðóãëèõ äóæêàõ ï³ñëÿ ³ìåí³ ôóíêö³¿ Adder_C. Îáèäâà àðãóìåíòè, oneAdd òà twoAdd, ìàþòü òèï int. Çâåðí³òü óâàãó íà êëþ÷îâå ñëîâî return. Âîíî âêàçóº íà çíà÷åííÿ, ÿêå áóäå ïîâåðòàòè ôóíêö³ÿ (ó äàíîìó âèïàäêó öå çíà÷åííÿ çì³ííî¿ intSum). Êîä C#, ùî âèêëèêຠôóíêö³þ Adder_C, ïîä³áíèé äî â³äïîâ³äíîãî êîäó Visual Basic .NET: int theSum=0; theSum = Adder_C(3,4); MessageBox.Show(System.Convert.ToString(theSum));

Ïðèáóòòÿ äî Ôóíêö³¿, ϳâäåííà Äàêîòà Íå ìîæó ïîâ³ðèòè, ùî ìè âæå ä³ñòàëèñÿ ì³ñòà Ôóíêö³¿, ϳâäåííà Äàêîòà! Öå îñòàíí³é ïóíêò ïðèçíà÷åííÿ íàøî¿ ìàíäð³âêè „Ïðàâèëà êîäóâàííÿ”. Âîíà áóëà ñïðàâä³ ö³êàâîþ! Íàì ç ͳêê³ äóæå ñïîäîáàëîñÿ ïîêàçóâàòè âàì, ÿê ïèñàòè êîä Visual Basic .NET, à Êë³ô òà Äæåí ðàäî ðîçïîâ³äàëè òå, ùî ¿ì â³äîìî ïðî J# òà C#. Òåïåð âè çìîæåòå âèçíà÷èòè ïîä³áíîñò³ òà â³äì³ííîñò³ ì³æ óñ³ìà öèìè ìîâàìè. Äîðîãîþ äî íàøîãî îñòàííüîãî ïóíêòó ïðèçíà÷åííÿ ìè ïîêàçàëè âàì, ÿê ñòâîðþâàòè òà âèêëèêàòè âëàñí³ ï³äïðîãðàìè é ôóíêö³¿ ³ çàñòîñîâóâàòè äåÿê³ âáóäîâàí³ ôóíêö³¿ ñåðåäîâèùà .NET Framework. Ïàì’ÿòàéòå, ùî ï³äïðîãðàìè âèêîðèñòîâóþòüñÿ, êîëè âàì íå ïîòð³áíî îá÷èñëþâàòè ïåâíå çíà÷åííÿ, à ôóíêö³¿ — êîëè âàì òàêå çíà÷åííÿ ïîòð³áíå. ϳä ÷àñ âèêëèêó ï³äïðîãðàì àáî ôóíêö³é ¿ì ìîæíà ïåðåäàâàòè àðãóìåíòè. Àðãóìåíòè âèêîðèñòîâóþòüñÿ êîäîì ï³äïðîãðàìè àáî ôóíêö³¿. Àðãóìåíòè íå ïîòð³áí³, ÿêùî çíà÷åííÿ äî ï³äïðîãðàìè àáî ôóíêö³¿ ïåðåäàþòüñÿ ÷åðåç ãëîáàëüí³ çì³íí³, ÿê³ îãîëîøóþòüñÿ ïåðåä ïåðøîþ ï³äïðîãðàìîþ. Ìè ùå ïîáà÷èìîñÿ! Ñïîä³âàþñÿ, ìè óñ³ ÿêîñü çìîæåìî âèðóøèòè ó ùå îäíó ïîä³áíó ïîäîðîæ! Âè æ íå çáèðàºòåñÿ ïîïðîùàòèñÿ ç íàìè, íå âèêîíàâøè ùå îäíó âïðàâó?

199


Âïðàâà 12.2 Íàñïðàâä³ ÿ íå â³ðþ, ùî ìè ìîæåìî çàçèðíóòè ó ìàéáóòíº, àëå äóæå ö³êàâî óÿâëÿòè ñîá³, ùî ìîæåìî. Äàâàéòå íàïèøåìî ïðîãðàìó, ùî â³äïîâ³äàòèìå íà ïèòàííÿ òàê, ÿê öå ðîáèëà á âîðîæêà. Çàñòîñîâóéòå ôàéëè êîäó òà ôîðìè ç ïàïêè Âïðàâà_12.2.

Ôîðìà ìຠòàêèé âèãëÿä:

³äïîâ³äü íà ïèòàííÿ ïîâèííà çàëåæàòè â³ä ê³ëüêîñò³ ãîëîñíèõ ó éîãî òåêñò³. Âèä³ëèòè îêðåìó ë³òåðó ç òåêñòîâîãî ðÿäêà ìîæíà çà äîïîìîãîþ ìåòîäó SubString. ³äïîâ³äü ìຠâèçíà÷àòèñÿ, êîëè âè êëàöàºòå íà êíîïö³ Çíàéòè â³äïîâ³äü. Ïàì’ÿòàéòå ïðî âàæëèâ³ñòü ðåã³ñòðà: ë³òåðè “a” òà “A” ââàæàþòüñÿ ð³çíèìè. Ïåðåâ³ðòå, ÷è áóëî ââåäåíî ïèòàííÿ. Ïîäóìàéòå òàêîæ ïðî öèêëè. Ïàì’ÿòàéòå, ùî ìåòîä Length ïîâåðòຠ÷èñëî ñèìâîë³â ó ðÿäêó. Ñèìâîëè íóìåðóþòüñÿ, ïî÷èíàþ÷è ç íóëÿ, íàïðèêëàä, äåñÿòü ïåðøèõ ñèìâîë³â çàéìàþòü ïîçèö³¿ â³ä 0 äî 9. Ïàì’ÿòàéòå òàêîæ, ùî, ó ðàç³ ïîòðåáè, çàì³ñòü ñòàëîãî ÷èñëà çàâæäè ìîæíà âèêîðèñòàòè çì³ííó. Âèãàäóéòå ïîøèðåí³ â³äïîâ³ä³, íàñê³ëüêè âàì äîçâîëÿº öå âëàñíà óÿâà. ³äïîâ³ä³ „òàê” òà „í³” äîïóñòèì³, àëå âîíè íå ö³êàâ³. Ó âàñ ïîâèííî áóòè ïðèíàéìí³ ï’ÿòü ð³çíèõ â³äïîâ³äåé. Ìîæíà é á³ëüøå. Êîëè ïðîãðàìà ïðàöþâàòèìå ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðîâ³. Íàðåøò³ âàøå îñòàííº çàâäàííÿ!

200


Çàâäàííÿ 12. ʳò òà ìèøà Íàñòàâ ÷àñ âèêîíàòè âàøå îñòàííº çàâäàííÿ. Ñòâîðåííÿ ãðè „Ê³ò òà ìèøà” áóäå äåùî âàæ÷èì â³ä âèêîíàííÿ ïîïåðåäí³õ çàâäàíü. Àëå, îñê³ëüêè âè âæå ä³ñòàëèñÿ öüîãî ïóíêòó, ìè ïåðåêîíàí³, ùî âè çìîæåòå íàïèñàòè ïðîãðàìó, ó ÿê³é ê³ò ãàíÿºòüñÿ çà ìèøåþ.

Âèêîðèñòàéòå ïàïêó Çàâäàííÿ_12, ùî ì³ñòèòü òàêó ôîðìó:

Ïðèïóñò³ìî, ùî åêðàí ìຠðîçä³ëüíó çäàòí³ñòü 600 ï³êñåë³â ïî ãîðèçîíòàë³ òà 300 ï³êñåë³â ïî âåðòèêàë³. Ïåðåì³ùóéòå êîòà òà ìèøó çà âèïàäêîâèìè òðàºêòîð³ÿìè, çì³íþþ÷è ïîëîæåííÿ ïîë³â ç êàðòèíêàìè, ùî ì³ñòÿòü çîáðàæåííÿ êîòà òà ìèø³, øëÿõîì äîäàâàííÿ äîäàòíèõ àáî â³ä’ºìíèõ ÷èñåë äî ïîòî÷íèõ êîîðäèíàò ïîë³â X òà Y. Êîæíó 1/4 ñåêóíäè âèíèêຠïîä³ÿ Timer. Äî îáðîáíèêà ö³º¿ ïî䳿 âè äîäàñòå êîä, ùî çàáåçïå÷óâàòèìå ïåðåñóâàííÿ êîòà òà ìèø³. Ùîá ïåðåñóíóòè ïîëå çîáðàæåííÿ, âè ïîâèíí³ çàäàòè íîâ³ êîîðäèíàòè ë³âîãî âåðõíüîãî êóòà ïîëÿ (X òà Y), à ïîò³ì âèêîðèñòàòè òàêèé îïåðàòîð: Mouse.Location = New Point(X, Y)

201


Ïåðåñóíóâøè êîòà òà ìèøó, ïåðåâ³ðòå ÷è: l

ìèøà âòåêëà;

l

ê³ò óï³éìàâ ìèøó;

l

ìèø³ ïîòð³áíî çì³íèòè íàïðÿì ðóõó, îñê³ëüêè âîíà îïèíèëàñÿ ïîðÿä ³ç êîòîì;

l

ê³ò àáî ìèøà ðîçòàøîâàí³ ïîáëèçó êðàþ åêðàíà.

Äî îñíîâíî¿ ôîðìè ïðîãðàìè äîäàéòå äâà ïîëÿ çîáðàæåíü. Ïîëþ PictureBox1 íàäàéòå ³ì’ÿ Cat, ïîëþ PictureBox2 — ³ì’ÿ Mouse. ßêùî â³äñòàíü ì³æ ë³âèìè âåðõí³ìè êóòàìè ïîë³â êîòà é ìèø³ íå ïåðåâèùóº 40 ï³êñåë³â, ìèøà çì³íþº íàïðÿì ðóõó. ßêùî ìèøà ïåðåáóâຠíå äàë³, í³æ çà 20 ï³êñåë³â â³ä êîòà, ââàæàºòüñÿ, ùî ìèøó âï³éìàíî. ßêùî ìèøà ïåðåáóâຠíå äàë³, í³æ çà 20 ï³êñåë³â â³ä áóäü-ÿêî¿ íîðè (÷îðíîãî òåêñòîâîãî ïîëÿ), ââàæàºòüñÿ, ùî âîíà âòåêëà. Ïåðøà íîðà çíàõîäèòüñÿ ó òî÷ö³ ç êîîðäèíàòàìè (50, 150), äðóãà — ó òî÷ö³ ç êîîðäèíàòàìè (530, 150). ßêùî ìèøó âï³éìàíî àáî âîíà âòåêëà, ãðà çàâåðøóºòüñÿ. Øàáëîí ì³ñòèòü ê³ëüêà ôóíêö³é, ùî äîïîìîæóòü âàì íàïèñàòè ïðîãðàìó. Ôóíêö³ÿ HowFar ïîâåðòຠâ³äñòàíü ì³æ äâîìà òî÷êàìè, çàäàíèìè êîîðäèíàòàìè X òà Y. Íàïðèêëàä, Distance = HowFar(Cat.Location.X, Cat.Location.Y, _ Mouse.Location.X, Mouse.Location.Y) Ôóíêö³ÿ NewChg ïîâåðòຠâèïàäêîâå ÷èñëî, ÿêå ìîæå áóòè ÿê äîäàòíèì, òàê ³ â³ä’ºìíèì. Âîíî äîð³âíþº â³äñòàí³, íà ÿêó ïåðåñóâàºòüñÿ ìèøà àáî ê³ò. Íàïðèêëàä, CatXChg = NewChg() Ó îáðîáíèêó ïî䳿 êëàöàííÿ íà êíîïö³ íîâî¿ ãðè çàäàéòå âèõ³äíå âèïàäêîâå ðîçòàøóâàííÿ êîòà òà ìèø³. Çàäàéòå âåëè÷èíó ïðèðîñòó êîîðäèíàò çîáðàæåíü íà êîæíîìó êðîö³ ãðè. Çàïóñò³òü òàéìåð. Á³ëüø³ñòü ïðîãðàì³ñò³â ââàæàþòü çà êðàùå íàïèñàòè òðîõè êîäó, ïîò³ì ïåðåâ³ðèòè éîãî, íàïèñàòè ùå òðîõè êîäó òà ïåðåâ³ðèòè éîãî çíîâ. Ïèø³òü öþ ïðîãðàìó ó òàêîìó ïîðÿäêó: l

çàäàéòå ïî÷àòêîâå ðîçòàøóâàííÿ êîòà òà ìèø³;

l

ïåðåì³ñò³òü êîòà;

l

âèçíà÷òå êîîðäèíàòè çîáðàæåííÿ êîòà;

l

ïåðåì³ñò³òü ìèøó;

l

âèçíà÷òå êîîðäèíàòè çîáðàæåííÿ ìèø³;

l

ïåðåâ³ðòå, ÷è íå âòåêëà ìèøà;

l

ïåðåâ³ðòå, ÷è ê³ò íå óï³éìàâ ìèøó;

l

ïåðåâ³ðòå, ÷è ìèøà íå çíàõîäèòüñÿ çàáëèçüêî â³ä êîòà.

ϳñëÿ êîæíîãî êðîêó òåñòóéòå êîä. Êîëè ïðîãðàìà ïðàöþâàòèìå ïðàâèëüíî, ïîêàæ³òü ¿¿ ³íñòðóêòîðó.

202


Äîäàòêîâå çàâäàííÿ ³äñòåæóéòå, â ÿêèé á³ê äèâèòüñÿ ê³ò àáî ìèøà. Çì³íþéòå îð³ºíòàö³þ çîáðàæåííÿ, ÿêùî ê³ò ÷è ìèøà çì³íþþòü íàïðÿìîê ðóõó. Âèêîðèñòàéòå ïðèáëèçíî òàêèé êîä: Cat.Image.RotateFlip(RotateFlipType.Rotate180FlipX) Îá÷èñë³òü íàïðÿìîê ðóõó ìèø³, ïîò³ì çì³í³òü ïðèð³ñò êîîðäèíàò òà îð³ºíòàö³þ çîáðàæåííÿ êîòà òàê, ùîá â³í ðóõàâñÿ ó íàïðÿìêó äî ìèø³. Íàïðèêëàä, ÿêùî êîîðäèíàòà X êîòà äîð³âíþº 450, à ìèø³ 250, ê³ò ïîâèíåí ðóõàòèñÿ ó â³ä’ºìíîìó íàïðÿìêó. Äîäàéòå ñîáàêó, ùî ãàíÿòèìåòüñÿ çà êîòîì.

203


204


Îãëÿä êóðñó Öåé êóðñ îñíîâ ïðîãðàìóâàííÿ ðîçðîáëåíî äëÿ ó÷í³â ñåðåäí³õ øê³ë, ùî ìàëî ðîçóì³þòüñÿ àáî çîâñ³ì íå ðîçóì³þòüñÿ íà êîìï’þòåðàõ òà ïðîãðàìóâàíí³. Êóðñ íàâ÷ຠñòâîðþâàòè ö³êàâ³ òà çàõîïëþþ÷³ ïðîãðàìè ìîâîþ Visual Basic .Net. Ó êóðñ³ ðîçãëÿíóòî áàçîâ³ êîíöåïö³¿ ïðîãðàìóâàííÿ, çîêðåìà ïñåâäîêîä, ñòâîðåííÿ ôîðì, âèçíà÷åííÿ òà îãîëîøåííÿ çì³ííèõ, áàçîâ³ îïåðàòîðè òîùî. Éîãî áóëî ðîçðîáëåíî äëÿ òîãî, ùîá ó÷í³ ìîãëè äîñë³äæóâàòè ñâ³ò ïðîãðàìóâàííÿ, ïðàêòèêóâàòèñÿ ó ñòâîðåíí³ êîäó òà êðàùå çðîçóì³ëè ðîáîòó ïðîãðàì³ñòà. Çà ñöåíàð³ºì êóðñó, ó÷í³ º ó÷àñíèêàìè ðàë³ „Ïðàâèëà êîäóâàííÿ”. Ïðàâèëà ãðè âñòàíîâëþº Êîì³òåò ðàë³. ijòè ïîäîðîæóþòü Àìåðèêîþ ó ìàøèí³ Winnebago òà çóïèíÿþòüñÿ ó 12 âèãàäàíèõ ì³ñòàõ 12 ð³çíèõ øòàò³â, ùîá âèêîíàòè çàâäàííÿ ç ïðîãðàìóâàííÿ. Ïîêè ó÷í³ ìàíäðóþòü ç ì³ñöÿ íà ì³ñöå, ¿õ ñóïóòíèêè, Äæåí, ijðê, ͳêê³ òà Êë³ô ðîçâèâàþòü ó íèõ íàâè÷êè ç ïðîãðàìóâàííÿ, íåîáõ³äí³ äëÿ âèêîíàííÿ çàâäàíü Êîì³òåòó ðàë³, ÿê³ ïðîïîíóþòüñÿ íàïðèê³íö³ êîæíî¿ ä³ëÿíêè ïîäîðîæ³. Öå ð³çíîìàí³òí³ ö³êàâ³ çàäà÷³, ïîâ’ÿçàí³ ç ðåàëüíèì æèòòÿì, ùî çàêð³ïëþþòü íàáóò³ çíàííÿ. Ðîçðîáëåí³ ïðîãðàìí³ ïðîåêòè ñòàíóòü ó÷íÿì ó ïðèãîä³ ï³ä ÷àñ ¿õíüî¿ ïîäîðîæ³ òà ï³ñëÿ çàâåðøåííÿ ìàíäð³âêè. Êð³ì çíàíü ç Visual Basic .Net, ï³ä ÷àñ êóðñó ó÷í³ îòðèìàþòü îãëÿäîâó ³íôîðìàö³þ ïðî ñèíòàêñèñ òàêèõ ìîâ, ÿê C# àáî J#. Âñ³ â³äì³ííîñò³ ì³æ ðîçâ’ÿçàííÿìè çàäà÷ êóðñó íà Visual Basic, C# òà J# çàçíà÷àþòüñÿ îêðåìî.

Àóäèòîð³ÿ Êóðñ ïðèçíà÷åíî äëÿ ó÷í³â ñåðåäí³õ øê³ë, ÿê³ õî÷óòü: l

ä³çíàòèñÿ á³ëüøå ïðî ðîëü ïðîãðàìóâàííÿ ó ñóñï³ëüñòâ³;

l

âèâ÷èòè áàçîâ³ êîíöåïö³¿ ïðîãðàìóâàííÿ;

l

äîñë³äèòè ïåðñïåêòèâè êàð’ºðíîãî ðîñòó ó ñôåð³ ïðîãðàìóâàííÿ;

l

ñòâîðèòè íàä³éíó áàçó äëÿ ïîäàëüøîãî âèâ÷åííÿ ïðîãðàìóâàííÿ.

Íåîáõ³äí³ çíàííÿ òà íàâè÷êè Ó öüîìó êóðñ³ ïåðåäáà÷àºòüñÿ, ùî ó÷í³ âîëîä³þòü òàêèìè íàâè÷êàìè: l

âì³ííÿ êîðèñòóâàòèñÿ ²íòåðíåòîì ³ òåêñòîâèì ðåäàêòîðîì;

l

ðîáîòà ç ³íòåðôåéñîì êîðèñòóâà÷à ó ïðîãðàì³ Microsoft Windows;

l

âì³ííÿ âèêîíóâàòè ïðîñò³ îïåðàö³¿ ç äàíèìè íà äèñêàõ, çîêðåìà, â³äêðèâàòè òà çáåð³ãàòè ôàéëè, à òàêîæ ñòâîðþâàòè ïàïêè.

Ïðîãðàìí³ çàñîáè l

Microsoft Windows (2000, NT 4 àáî XP);

l

Microsoft Visual Studio 2003;

207


l

Internet Explorer 6 (º ÷àñòèíîþ ïàêåòó Visual Studio);

l

Adobe Acrobat Reader (http://www.adobe.com);

l

ìîäóëü Macromedia FLASH (http://www.macromedia.com).

Òðèâàë³ñòü êóðñó Êóðñ âèêëàäàºòüñÿ ïðîòÿãîì îäíîãî ñåìåñòðó (18 òèæí³â) ïðè òèæíåâîìó íàâàíòàæåíí³ 5 ãîäèí (1 ãîäèíà êîæíîãî äíÿ). Çàãàëüíèé îáñÿã êóðñó ñòàíîâèòü 90 íàâ÷àëüíèõ ãîäèí.

Çàâäàííÿ äëÿ ó÷í³â l

Äâàíàäöÿòü òåñò³â (òåñòè íå ñóïðîâîäæóþòüñÿ êðèòåð³ÿìè îö³íþâàííÿ — ³íñòðóêòîðè ìîæóòü âèðîáèòè ¿õ ñàìîñò³éíî);

l

äâàäöÿòü ÷îòèðè ïðîñòèõ âïðàâè;

l

îäèíàäöÿòü ñêëàäí³øèõ çàâäàíü.

Ïîäðîáèö³ íàâåäåíî ó ñïèñêó çàâäàíü.

Ðåçóëüòàòè êóðñó Ïî çàâåðøåíí³ êóðñó ó÷í³ çìîæóòü: l

îïèñóâàòè â³äì³ííîñò³ òà ñï³ëüí³ ðèñè ð³çíèõ ìîâ ïðîãðàìóâàííÿ;

l

âèçíà÷àòè ìîæëèâîñò³ çàñòîñóâàííÿ ïðîãðàì ó ïîâñÿêäåííîìó æèòò³;

l

îïèñóâàòè ëîã³êó ïðîãðàì çà äîïîìîãîþ ïñåâäîêîäó;

l

ñòâîðþâàòè òà âèêîíóâàòè ïðîãðàìè ó ñåðåäîâèù³ Visual Studio;

l

êîðèñòóâàòèñÿ â³çóàëüíèìè çàñîáàìè ïðîãðàìóâàííÿ Visual Studio;

l

ñòâîðþâàòè ôîðìè òà äîäàâàòè äî íèõ åëåìåíòè óïðàâë³ííÿ;

l

çàäàâàòè çíà÷åííÿ àòðèáóò³â ôîðì ³ åëåìåíò³â óïðàâë³ííÿ ó êîä³ òà çà äîïîìîãîþ â³êíà Properties;

l

îãîëîøóâàòè çì³íí³ ð³çíèõ òèï³â;

l

âèêîðèñòîâóâàòè îïåðàòîðè ïðèñâîþâàííÿ òà àðèôìåòè÷í³ îïåðàö³¿;

l

íàëàãîäæóâàòè ïðîãðàìè;

l

âèêîðèñòîâóâàòè îïåðàòîðè If ìîâ Visual Basic, C# òà J#;

l

âèêîðèñòîâóâàòè öèêëè For, Do Until òà Do While ìîâè Visual Basic;

l

âèêîðèñòîâóâàòè öèêëè For òà While ìîâ C# òà J#;

l

âèêëèêàòè âáóäîâàí³ ôóíêö³¿;

l

ñòâîðþâàòè òà âèêëèêàòè âëàñí³ ôóíêö³¿.

208


Ñïèñîê âïðàâ òà çàâäàíü Âïðàâè òà çàâäàííÿ

Îïèñ

Îñíîâí³ ä³¿, çàñîáè òà íàâè÷êè

Ðîçâ'ÿçàííÿ

Âïðàâà 1.1. Êîìï’þòåðè ó ïîâñÿêäåííîìó æèòò³ ñ. 22

Çàïèø³òü ïðèíàéìí³ ÷îòèðè ñïîñîáè âèêîðèñòàííÿ êîìï’þòåð³â ó ïîâñÿêäåííîìó æèòò³.

²íòåðíåò-áðàóçåð

Âïðàâà 1.2. Ðîáîòà ó ñôåð³ ³íôîðìàö³éíèõ òåõíîëîã³é ñ. 23

Êîðèñòóþ÷èñü ²íòåðíåòîì òà ³íøèìè ðåñóðñàìè, âèçíà÷òå ïî÷àòêîâó çàðïëàòíþ ñïåö³àë³ñò³â, ùî ïðàöþþòü ó ñôåð³ ³íôîðìàö³éíèõ òåõíîëîã³é ó âàø³é ì³ñöåâîñò³.

²íòåðíåò-áðàóçåð

Çàâäàííÿ 1. Íåìàº

Ó ìîäóë³ 1 çàâäàííÿ íåìàº

Íåìàº

Âïðàâà 2.1. Hello World ñ. 41

Íàïèø³òü ïðîãðàìó HelloWorld.

Visual Studio

c. 213

Âïðàâà 2.2. MyNameIs ñ. 42

Íàïèø³òü ïðîãðàìó MyNameIs.

Visual Studio

ñ. 213

Çàâäàííÿ 2. Çàêëàä øâèäêîãî õàð÷óâàííÿ ñ. 42

Âèâåä³òü íà åêðàí çîáðàæåííÿ ñòðàâ.

Äîäàéòå êíîïêó äî ôîðìè. ñ. 213 Êîä ïåðåäáà÷åíî.

Âïðàâà 3.1. Çáèðàºìîñü ó ïîäîðîæ ñ. 50

Íàïèø³òü ïñåâäîêîä, ÿêèé îïèñóâàòèìå çáîðè ó äîðîãó.

Òåêñòîâèé ðåäàêòîð. Ëîã³÷íå ìèñëåííÿ.

ñ. 214

Âïðàâà 3.2. Ìèòòÿ ïîñóäó ñ. 53

Íàïèø³òü ïñåâäîêîä, ÿêèé îïèñóâàòèìå ìèòòÿ ïîñóäó.

Òåêñòîâèé ðåäàêòîð. Ëîã³÷íå ìèñëåííÿ.

ñ. 215

Çàâäàííÿ 3. Àêâàð³óì ñ. 53

ϳäðàõóéòå ê³ëüê³ñòü ðèáîê êîæíîãî êîëüîðó, ïîò³ì îá÷èñë³òü ¿õ ÷àñòêó ó çàãàëüí³é ê³ëüêîñò³.

Âèâ÷³òü êîä. Âèçíà÷òå, äå ó íüîìó êîìåíòàð³. Ïîò³ì ïîð³âíÿéòå ¿õ ³ç ïñåâäîêîäîì.

ñ. 215

Âïðàâà 4.1. Õòî º õòî ñ. 63

Ìåòà — ä³çíàòèñü á³ëüøå ïðî ïåðñîíàæ³â ðàë³. „Íàìàëþéòå” ôîðìó òà íàñòðîéòå àòðèáóòè îᒺêò³â, ðîçì³ùåíèõ ó ôîðì³, ùîá âîíè â³äïîâ³äàëè íàâåäåíîìó êîäó.

Ïîì³ñò³òü îᒺêòè äî ôîðìè, âèêîðèñòîâóþ÷è ñåðåäîâèùå Visual Studio, ïîò³ì íàñòðîéòå àòðèáóòè îᒺêò³â. Êîä ïåðåäáà÷åíî.

ñ. 216

209


Âïðàâè òà çàâäàííÿ

Îïèñ

Îñíîâí³ ä³¿, çàñîáè òà íàâè÷êè

Ðîçâ'ÿçàííÿ

Âïðàâà 4.2. Âàðò³ñòü ï³öè ñ. 67

Äîïîìîæ³òü â³äâ³äóâà÷àì âèçíà÷èòè âàðò³ñòü ¿õíüî¿ ï³öè.

Ïîì³ñò³òü îᒺêòè äî ôîðìè, âèêîðèñòîâóþ÷è ñåðåäîâèùå Visual Studio, ïîò³ì íàñòðîéòå àòðèáóòè îᒺêò³â. Êîä ïåðåäáà÷åíî.

ñ. 220

Çàâäàííÿ 4. Ñòâîð³òü ôîðìó äëÿ ãðè Ãðà ó õðåñòèêè-íóëèêè ó õðåñòèêè-íóëèêè. ñ. 68

Ïîì³ñò³òü îᒺêòè äî ôîðìè, âèêîðèñòîâóþ÷è ñåðåäîâèùå Visual Studio, ïîò³ì íàñòðîéòå àòðèáóòè îᒺêò³â. Êîä ïåðåäáà÷åíî.

ñ. 223

Âïðàâà 5.1. Áàðâèñòà âåñåëêà ñ. 77

Íàìàëþéòå âåñåëêó.

Íàñòðîéòå àòðèáóòè îᒺêò³â, âèêîðèñòîâóþ÷è êîä. Á³ëüø³ñòü êîäó ïåðåäáà÷åíî.

ñ. 229

Âïðàâà 5.2. Âèì³ðþâà÷ äèñòàíö³¿ ñ. 83

Íàñòðîéòå ïîâçóíîê, çàñòîñîâóþ÷è êîä.

Íàñòðîéòå àòðèáóòè îᒺêò³â, âèêîðèñòîâóþ÷è êîä. Á³ëüø³ñòü êîäó ïåðåäáà÷åíî.

ñ. 231

Çàâäàííÿ 5. Êâ³òè ñ. 85

Ïîêàçóéòå òà õîâàéòå çîáðàæåííÿ êâ³ò³â, çàñòîñîâóþ÷è êîä.

Íàñòðîéòå àòðèáóòè îᒺêò³â, âèêîðèñòîâóþ÷è êîä. Á³ëüø³ñòü êîäó ïåðåäáà÷åíî.

ñ. 233

Âïðàâà 6.1. ×èñëî p ñ. 94

Ïîêàæ³òü ÷èñëî p ó ð³çíèõ ôîðìàòàõ.

Îãîëîñ³òü çì³íí³. Íàäàéòå çíà÷åííÿ çì³ííèì òà îᒺêòàì ôîðìè.

ñ. 234

Âïðàâà 6.2. Ñòðèáîê æàáè ñ. 99

Íàïèø³òü ïðîãðàìó „Ñòðèáîê æàáè”.

Íàäàéòå çíà÷åííÿ çì³ííèì òà îᒺêòàì ôîðìè.

ñ. 235

Íàëàãîäüòå ïðîãðàìó. Êîä íàäàíî.

ñ. 235

Çàâäàííÿ 6. Çíàéä³òü 10 ïîìèëîê Âèïðàâëåííÿ ïîìèëîê ó ïðîãðàì³. ñ. 100 Âïðàâà 7.1. Âàðò³ñòü áåíçèíó ñ. 107

Îá÷èñë³òü âàðò³ñòü áåíçèíó.

Âèêîðèñòàéòå ñ. 236 îïåðàòîðè ïðèñâîþâàííÿ òà àðèôìåòè÷í³ îïåðàòîðè.

Âïðàâà 7.2. Íàëàãîäæåííÿ ïðîãðàìè ñ. 112

Âèêîðèñòàéòå ³íñòðóìåíòè íàëàãîäæåííÿ Visual Studio.

Íàëàãîäüòå ïðîãðàìó, çàñòîñîâóþ÷è ³íñòðóìåíòè Visual Studio. Êîä íàäàíî.

Çàâäàííÿ 7. Îá÷èñëåííÿ îᒺìó ñ. 113

Îá÷èñë³òü îᒺì êóáà òà ñôåðè.

Âèêîðèñòàéòå ñ. 238 îïåðàòîðè ïðèñâîþâàííÿ òà àðèôìåòè÷í³ îïåðàòîðè.

210

ñ. 237


Âïðàâè òà çàâäàííÿ

Îïèñ

Îñíîâí³ ä³¿, çàñîáè òà íàâè÷êè

Ðîçâ'ÿçàííÿ

Âïðàâà 8.1. Ïîäàðóíêè ñ. 125

Çàïðîïîíóéòå ³äå¿ ùîäî ñóïóòí³õ ïîäàðóíê³â.

Âèêîðèñòàéòå ïðîñò³ îïåðàòîðè If.

ñ. 239

Âïðàâà 8.2. Îö³íþâàííÿ âì³ííÿ ïðîãðàìóâàòè ñ. 129

Íàïèø³òü ïðîãðàìó îö³íþâàííÿ, ÿêà äîïîìîæå ó÷íÿì âèð³øèòè, ÷è ïîâèíí³ âîíè âèâ÷àòè êóðñ ïðîãðàìóâàííÿ.

Âèêîðèñòàéòå ïðîñò³ îïåðàòîðè If.

ñ. 240

Çàâäàííÿ 8. Ãðà ñ. 130

Íàïèø³òü àðêàäíó ãðó, ó ÿê³é âè íàìàãàòèìåòåñÿ êëàöíóòè íà ì³øåí³, ùî ðóõàºòüñÿ.

Âèêîðèñòàéòå îïåðàòîðè If, îᒺêò Timer òà ïåðåìèêà÷³. Ïåðåì³ùóéòå îᒺêò çîáðàæåííÿ.

ñ. 241

Âïðàâà 9.1. Ðàõóíîê ó ãîëüô³ ñ. 142

Îá÷èñë³òü ðàõóíîê ó ãîëüô³ äëÿ ÷îòèðüîõ ãðàâö³â.

Âèêîðèñòàéòå ñêëàäí³ îïåðàòîðè If òà àðèôìåòè÷í³ îïåðàòîðè.

ñ. 243

Âïðàâà 9.2. Ìàã³÷íèé êâàäðàò ñ. 145

Ïîáóäóéòå ìàã³÷íèé êâàäðàò ðîçì³ðîì 3´3.

Âèêîðèñòàéòå ñêëàäí³ îïåðàòîðè If òà àðèôìåòè÷í³ îïåðàòîðè.

ñ. 244

Çàâäàííÿ 9. Îðåë ÷è ðåøêà ñ. 146

Íåõàé êîìï’þòåð òðîõè ïîï³äêèäຠìîíåòó.

Âèêîðèñòàéòå ñêëàäí³ îïåðàòîðè If òà àðèôìåòè÷í³ îïåðàòîðè.

ñ. 245

Âïðàâà 10.1. Ðàõóºìî êðîëèê³â ñ. 158

Íàñê³ëüêè çá³ëüøèëàñÿ á ïîïóëÿö³ÿ êðîëèê³â, ÿêáè âîíè æèëè â³÷íî?

Öèêëè For ... Next. Îïåðàòîðè If.

ñ. 247

Âïðàâà 10.2. Ïðîñò³ ÷èñëà ñ. 162

ϳäðàõîâóºìî ïðîñò³ ÷èñëà.

Öèêëè For ... Next. Îïåðàòîðè If.

ñ. 248

Çàâäàííÿ 10. ÎÏÐ Ðîòà ñ. 164

Íàïèø³òü ïðîãðàìó äëÿ îá÷èñëåííÿ ÎÏÐ (îñîáèñòîãî ïåíñ³éíîãî ðàõóíêó) Ðîòà.

Öèêëè For ... Next. Îïåðàòîðè If.

ñ. 249

Âïðàâà 11.1. ̳øåíü ñ. 178

Ñïðîáóéòå ïîòðàïèòè ó ì³øåíü.

Íåâèçíà÷åí³ öèêëè Do ... Until.

ñ. 250

Âïðàâà 11.2. Ïîñï³ëü ñ. 182

Ðàõóºìî ïîñë³äîâí³ îäíàêîâ³ ðåçóëüòàòè ï³äêèäàííÿ ìîíåòè.

Íåâèçíà÷åí³ öèêëè Do ... Until.

ñ. 252

211


Âïðàâè òà çàâäàííÿ

Îïèñ

Îñíîâí³ ä³¿, çàñîáè òà íàâè÷êè

Ðîçâ'ÿçàííÿ

Çàâäàííÿ 11. Îá÷èñëåííÿ ñåðåäíüîãî áàëà ñ. 183

Îá÷èñë³òü ñåðåäí³é áàë çà ê³ëüêîìà îö³íêàìè.

Íåâèçíà÷åí³ öèêëè Do ... Until. Àðèôìåòè÷í³ îïåðàòîðè.

ñ. 253

Âïðàâà 12.1. Ïåðåòâîðåííÿ îäèíèöü âèì³ðþâàííÿ ñ. 194

Ïåðåòâîð³òü îäèíèö³ âèì³ðþâàííÿ ç àìåðèêàíñüêèõ íà êàíàäñüê³ òà íàâïàêè.

Âèêîðèñòàéòå âáóäîâàí³ ôóíêö³¿ Visual Basic.NET.

ñ. 255

Âïðàâà 12.2. Âîðîæêà ñ. 200

 çàëåæíîñò³ â³ä ê³ëüêîñò³ ãîëîñíèõ ó ïèòàíí³ ãåíåðóéòå âèïàäêîâó â³äïîâ³äü.

Âèêîðèñòàéòå âáóäîâàí³ ôóíêö³¿ Visual Basic.NET ³ íàïèø³òü ñâî¿ âëàñí³ ôóíêö³¿.

ñ. 256

Çàâäàííÿ 12. ʳò òà ìèøà ñ. 201

ʳò ãàíÿºòüñÿ çà ìèøåþ, äîêè íå âï³éìຠ¿¿, àáî äîêè ìèøà íå âòå÷å.

Âèêîðèñòàéòå íàâè÷êè, çäîáóò³ ïðîòÿãîì óñüîãî êóðñó.

ñ. 258

212


Ðîçâ’ÿçàííÿ âïðàâ ³ çàâäàíü Êîæåí ìîäóëü ì³ñòèòü äâ³ âïðàâè òà îäíå çàâäàííÿ. Íèæ÷å íàâåäåíî ñòèñëå ðåçþìå äî êîæíîãî ïðîåêòó òà êîä ç êîìåíòàðÿìè, ÿêèé ìàþòü íàïèñàòè àáî âèêîðèñòàòè ó÷í³. Ïîâí³ ðîçâ’ÿçàííÿ ç óñ³ìà ïîòð³áíèìè ôàéëàìè º íà êîìïàêò-äèñêó. Ìîäóëü 1 íå ì³ñòèòü çàâäàííÿ, à éîãî âïðàâè íå âèìàãàþòü êîäóâàííÿ, òîìó îãëÿä ïðîåêò³â ïî÷èíàºòüñÿ ³ç âïðàâ ðîçä³ëó 2.

Âïðàâà 2.1. Hello World Íàïèø³òü ïðîãðàìó HelloWorld, ùî âèâîäèòèìå ïîâ³äîìëåííÿ „Goodbye, World”. Äëÿ öüîãî ïîâòîð³òü 䳿, îïèñàí³ â êóðñ³. Íàâåäåìî êîä ïðîãðàìè: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click MessageBox.Show("Goodbye, World.") End Sub

Âïðàâà 2.2. Ìîº ³ì’ÿ Íàïèø³òü ïðîãðàìó MyNameIs. Âîíà ïîä³áíà äî ïðîãðàìè Hello World, ÿêó ðîçãëÿíóòî â êóðñ³, àëå â í³é âèâîäèòüñÿ ³ì’ÿ ó÷íÿ. Íàâåäåìî êîä ïðîãðàìè: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click ' ³ì’ÿ ó÷íÿ áåðåòüñÿ ó ëàïêè TextBox1.Text = "John Doe" End Sub

Çàâäàííÿ 2. Çàêëàä øâèäêîãî õàð÷óâàííÿ Äîäàéòå äî ôîðìè ÷îòèðè êíîïêè. Ðåøòó ïðîåêòó âæå áóëî ðîçðîáëåíî. ¯¿ íàâåäåíî ó ïàïö³ Çàâäàííÿ_2. Ó÷í³ ïîâèíí³ ñòâîðèòè òàêó ôîðìó. Ó÷í³ íå çì³íþâàòèìóòü êîä. Éîãî íàâåäåíî ëèøå äëÿ ³íôîðìàö³¿. Íåîáõ³äí³ çîáðàæåííÿ ì³ñòÿòüñÿ ó ïàïö³ Bin ïðîåêòó. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load PictureBox1.Image = _

213


Image.FromFile(System.Windows.Forms.Application.StartupPath & _ "\four.gif") End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click PictureBox1.Image = _ Image.FromFile(System.Windows.Forms.Application.StartupPath & _ "\one.gif") End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button2.Click PictureBox1.Image = _ Image.FromFile(System.Windows.Forms.Application.StartupPath & _ "\two.gif") End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button3.Click PictureBox1.Image = _ Image.FromFile(System.Windows.Forms.Application.StartupPath & _ "\three.gif") End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button4.Click PictureBox1.Image = _ Image.FromFile(System.Windows.Forms.Application.StartupPath & _ "\four.gif") End Sub

Âïðàâà 3.1. Çáèðàºìîñü ó ïîäîðîæ Íàïèø³òü ïñåâäîêîä, ùî ïîÿñíþâàòèìå 䳿, ÿê³ âàì íåîáõ³äíî âèêîíàòè, ùîá ç³áðàòèñÿ ó äîðîãó. Ó âàøîìó ðîçâ’ÿçàíí³ ïîâèííî áóòè ïðèíàéìí³ ñ³ì ä³é. Ðîçâ’ÿçàííÿ ìîæóòü áóòè ð³çíèìè. Çðàçîê: If ìåí³ ïîòð³áíî áàãàòî ðå÷åé Áåðåìî âåëèêó âàë³çó Else Áåðåìî ðþêçàê End If Êëàäåìî Êëàäåìî Êëàäåìî Êëàäåìî Êëàäåìî

îäÿã âçóòòÿ ôîòîàïàðàò ïîðòàòèâíèé êîìï’þòåð ïóò³âíèê ïî Visual Studio

If ìåí³ ïîòð³áíî ïîãîëèòèñÿ Áåðåìî áðèòâó

214


End If If ó ìåíå äîâãå âîëîññÿ Áåðåìî ôåí End If Ïðèêëåþºìî äî âàë³çè ÿðëèê Çàêðèâàºìî âàë³çó

Âïðàâà 3.2. Ìèòòÿ ïîñóäó Ó ö³é âïðàâ³ âè íà ïñåâäîêîä³ îïèøåòå 䳿, ÿê³ âèêîíóºòå ï³ä ÷àñ ìèòòÿ ïîñóäó. Ðîçâ’ÿçàííÿ ìîæóòü áóòè ð³çíèìè. Çðàçîê: Ñïîë³ñêóºìî áðóäíèé ïîñóä Çàïîâíþºìî ìèéêó ÷èñòîþ ãàðÿ÷îþ âîäîþ Äîäàºìî ðîç÷èí äëÿ ìèòòÿ ïîñóäó Do while ó ìèéö³ çàëèøàºòüñÿ ïîñóä Ìèºìî îäíó òàð³ëêó Ñïîë³ñêóºìî îäíó òàð³ëêó Âèòèðàºìî îäíó òàð³ëêó Loop Do while çàëèøàºòüñÿ ñòîëîâå ñð³áëî Ìèºìî îäíó ð³÷ ç³ ñòîëîâîãî ñð³áëà Ñïîë³ñêóºìî îäíó ð³÷ ç³ ñòîëîâîãî ñð³áëà Âèòèðàºìî îäíó ð³÷ ç³ ñòîëîâîãî ñð³áëà Loop ×èñòèìî ìèéêó Ïîçíà÷àéòå ó ñïèñêó âèêîíàí³ çàâäàííÿ

Çàâäàííÿ 3. Àêâàð³óì Ñêîï³þéòå óñ³ êîìåíòàð³ ç êîäó íàäàíî¿ ïðîãðàìè ó äîêóìåíò Word àáî ³íøèé òåêñòîâèé äîêóìåíò. Ïðîãðàìà ì³ñòèòüñÿ ó ïàïö³ Çàâäàííÿ_3. Ó ðåçóëüòàò³ âè ïîâèíí³ îòðèìàòè òàê³ êîìåíòàð³: ' îãîëîøóºìî çì³íí³ äëÿ çáåð³ãàííÿ ê³ëüêîñò³ ðèáîê êîæíîãî âèäó ' ïîì³ùàºìî êîæíå çíà÷åííÿ ê³ëüêîñò³ ðèáîê ç òåêñòîâîãî ïîëÿ äî çì³ííî¿

215


' âèçíà÷àºìî çàãàëüíó ê³ëüê³ñòü ðèáîê ' ïîì³ùàºìî çàãàëüíó ê³ëüê³ñòü ðèáîê äî òåêñòîâîãî ïîëÿ ôîðìè ' îá÷èñëþºìî ÷àñòêó ÷åðâîíèõ ðèáîê, ðîçä³ëèâøè ¿õ ê³ëüê³ñòü íà ' çàãàëüíó ê³ëüê³ñòü ðèáîê, à ïîò³ì ïîìíîæèâøè ðåçóëüòàò íà 100 ' ôîðìàòóºìî ÷àñòêó ³ ïîì³ùàºìî ¿¿ äî â³äïîâ³äíîãî òåêñòîâîãî ïîëÿ ' îá÷èñëþºìî ÷àñòêó ñèí³õ ðèáîê, ðîçä³ëèâøè ¿õ ê³ëüê³ñòü íà çàãàëüíó ' ê³ëüê³ñòü ðèáîê, à ïîò³ì ïîìíîæèâøè ðåçóëüòàò íà 100 ' ôîðìàòóºìî ÷àñòêó ³ ïîì³ùàºìî ¿¿ äî â³äïîâ³äíîãî òåêñòîâîãî ïîëÿ ' îá÷èñëþºìî ÷àñòêó æîâòèõ ðèáîê, ðîçä³ëèâøè ¿õ ê³ëüê³ñòü íà çàãàëüíó ' ê³ëüê³ñòü ðèáîê, à ïîò³ì ïîìíîæèâøè ðåçóëüòàò íà 100 ' ôîðìàòóºìî ÷àñòêó ³ ïîì³ùàºìî ¿¿ äî â³äïîâ³äíîãî òåêñòîâîãî ïîëÿ ' îá÷èñëþºìî ÷àñòêó çåëåíèõ ðèáîê, ðîçä³ëèâøè ¿õ ê³ëüê³ñòü íà çàãàëüíó ' ê³ëüê³ñòü ðèáîê, à ïîò³ì ïîìíîæèâøè ðåçóëüòàò íà 100 ' ôîðìàòóºìî ÷àñòêó ³ ïîì³ùàºìî ¿¿ äî â³äïîâ³äíîãî òåêñòîâîãî ïîëÿ

Âïðàâà 4.1. Õòî º õòî Ùîá ä³çíàòèñÿ á³ëüøå ïðî ïåðñîíàæ³â êóðñó, „íàìàëþéòå” ôîðìó òà íàñòðîéòå ïàðàìåòðè ðîçòàøîâàíèõ ó ôîðì³ îᒺêò³â, ùîá âîíè â³äïîâ³äàëè íàâåäåíîìó êîäó. Ðåøòó ïðîåêòó âæå ðîçðîáëåíî. ¯¿ íàâåäåíî äëÿ ó÷í³â ó ïàïö³ Âïðàâà_4.1. Ó÷í³ ïîâèíí³ ñòâîðèòè òàêó ôîðìó:

Ó÷í³ íå çì³íþâàòèìóòü êîä. Éîãî íàâåäåíî ëèøå äëÿ ³íôîðìàö³¿. Íåîáõ³äí³ çîáðàæåííÿ ì³ñòÿòüñÿ ó ïàïö³ Bin ïðîåêòó. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load ' Ùîá çàáåçïå÷èòè çðó÷í³ñòü ÷èòàííÿ, äëÿ åëåìåíò³â ' óïðàâë³ííÿ ôîðìè âñòàíîâëåíî øðèôò, ÿêèé ëåãêî ÷èòàºòüñÿ, ' à ïîëÿ ç êàðòèíêàìè íàñòðîºí³ òàê,

216


' ùîá çîáðàæåííÿ â³äïîâ³äàëî ¿õ ðîçì³ðó Label1.Font = New System.Drawing.Font("Arial", 16) Label1.TextAlign = ContentAlignment.MiddleCenter Label1.Text = "" RadioButton1.Font = New System.Drawing.Font("Arial", 12) RadioButton2.Font = New System.Drawing.Font("Arial", 12) RadioButton3.Font = New System.Drawing.Font("Arial", 12) RadioButton4.Font = New System.Drawing.Font("Arial", 12) RadioButton5.Font = New System.Drawing.Font("Arial", 12) CheckBox1.Font = New System.Drawing.Font("Arial", 12) CheckBox2.Font = New System.Drawing.Font("Arial", 12) TextBox1.Font = New System.Drawing.Font("Arial", 12) TextBox1.Text = "" PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage End Sub Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged ' ïðè âèáîð³ ïåðåìèêà÷à, ùî â³äïîâ³äຠïåâíîìó ïåðñîíàæó, ' âèêëèêàºìî ï³äïðîãðàìó, ùî âèâîäèòèìå íà åêðàí éîãî çîáðàæåííÿ ' òà á³îãðàô³þ Call ShowImage() Call ShowBiography() End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged ' ïðè âèáîð³ ïåðåìèêà÷à, ùî â³äïîâ³äຠïåâíîìó ïåðñîíàæó, ' âèêëèêàºìî ' ï³äïðîãðàìó, ùî âèâîäèòèìå íà åêðàí éîãî çîáðàæåííÿ òà á³îãðàô³þ Call ShowImage() Call ShowBiography() End Sub Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged ' ïðè âèáîð³ ïåðåìèêà÷à, ùî â³äïîâ³äຠïåâíîìó ïåðñîíàæó, ' âèêëèêàºìî ï³äïðîãðàìó, ùî âèâîäèòèìå íà åêðàí éîãî çîáðàæåííÿ ' òà á³îãðàô³þ Call ShowImage() Call ShowBiography() End Sub Private Sub RadioButton4_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton4.CheckedChanged ' ïðè âèáîð³ ïåðåìèêà÷à, ùî â³äïîâ³äຠïåâíîìó ïåðñîíàæó, ' âèêëèêàºìî ï³äïðîãðàìó, ùî âèâîäèòèìå íà åêðàí éîãî çîáðàæåííÿ ' òà á³îãðàô³þ Call ShowImage() Call ShowBiography() End Sub

217


Private Sub RadioButton5_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton5.CheckedChanged ' ïðè âèáîð³ ïåðåìèêà÷à, ùî â³äïîâ³äຠïåâíîìó ïåðñîíàæó, ' âèêëèêàºìî ï³äïðîãðàìó, ùî âèâîäèòèìå íà åêðàí éîãî çîáðàæåííÿ ' òà á³îãðàô³þ Call ShowImage() Call ShowBiography() End Sub Private Sub ShowImage() ' ÿêùî âñòàíîâëåíî ïðàïîðåöü ïîêàçó çîáðàæåííÿ, ' âèçíà÷àºìî, ÿêå çîáðàæåííÿ ïîêàçóâàòè, ³íàêøå íå ïîêàçóºìî ' æîäíîãî çîáðàæåííÿ If CheckBox1.Checked = True Then If RadioButton1.Checked = True Then PictureBox1.Image = _ Image.FromFile(System.Windows.Forms.Application.StartupPath & "/nikki.gif") ElseIf RadioButton2.Checked = True Then PictureBox1.Image = _ Image.FromFile(System.Windows.Forms.Application.StartupPath & "/cliff.gif") ElseIf RadioButton3.Checked = True Then PictureBox1.Image = _ Image.FromFile(System.Windows.Forms.Application.StartupPath & "/dirk.gif") ElseIf RadioButton4.Checked = True Then PictureBox1.Image = _ Image.FromFile(System.Windows.Forms.Application.StartupPath & "/jen.gif") ElseIf RadioButton5.Checked = True Then PictureBox1.Image = _ Image.FromFile(System.Windows.Forms.Application.StartupPath & "/dj.gif") End If Else PictureBox1.Image = _ Image.FromFile(System.Windows.Forms.Application.StartupPath & "/nopicture.gif") End If End Sub Private Sub ShowBiography() ' ÿêùî âñòàíîâëåíî ïðàïîðåöü ïîêàçó á³îãðàô³¿, ' âèçíà÷àºìî, ÿêó á³îãðàô³þ ïîêàçóâàòè, ³íàêøå íå ïîêàçóºìî æîäíî¿ ' á³îãðàô³¿ If CheckBox2.Checked = False Then TextBox1.Text = ""

218

_

_

_

_

_

_


Else If RadioButton1.Checked = True Then Label1.Text = "ͳêê³" TextBox1.Text = "ͳêê³ — àìåðèêàíêà àç³éñüêîãî ïîõîäæåííÿ, çàâæäè ìîäíî âáðàíà ó ñòèë³ Çàõ³äíîãî óçáåðåææÿ. Çàõîïëþºòüñÿ ð³çíèìè ïðèñòðîÿìè, ÿêèõ ó íå¿ á³ëüøå, í³æ ó ðåøòè ìàíäð³âíèê³â. ¯é íàëåæèòü ôîòîàïàðàò, ÿêèì çðîáëåíî ïåðø³ çí³ìêè. ¯¿ ìàòè — ô³çèê, à â³ò÷èì — ïðîãðàì³ñò íà âèðîáíèöòâ³. Âïåâíåíèé, ùî âîíà â쳺 ãðàòè íà ï³àí³íî. ͳêê³ â÷èòüñÿ ó Ñòåíôîðäñüêîìó óí³âåðñèòåò³, õî÷à âîíà ùå íå îáðàëà ïðîô³ëþþ÷ó äèñöèïë³íó." Else If RadioButton2.Checked = True Then Label1.Text = "Êë³ô" TextBox1.Text = "Êë³ô — àìåðèêàíåöü ç Áîñòîíà, à çà ïîõîäæåííÿì — ³ðëàíäåöü ó ÷åòâåðòîìó ïîêîë³íí³ (ñõîæèé íà Êîíàíà Î'Áðàéºíà).  íüîãî âîãíÿíî-ðóäå âîëîññÿ. ³í äóæå ðîçóìíèé ³ âæå äîñèòü äîáðå çíàºòüñÿ íà ìàòåð³àë³. Ìèíóëîãî ë³òà â³í ñòàæóâàâñÿ ó êîìïàí³¿, ùî ðîçðîáëÿº ³ãðè. Òàì â³í áðàâ ó÷àñòü ó ðîçðîáö³ äîáðå â³äîìî¿ ãðè Hacker Bounty Hunter Unleashed. Îñê³ëüêè Ãàðâàðä çíàõîäèòüñÿ ó ðàéîí³ Áîñòîíà, â³í, ö³ëêîì ïðèðîäíî, âèð³øèâ âñòóïèòè äî Éåëüñüêîãî óí³âåðñèòåòó." ElseIf RadioButton3.Checked = True Then Label1.Text = "ijðê" TextBox1.Text = "ijðê çíàéîìèé ç îäí³ºþ ³ç ³íøèõ ìîâ ïðîãðàìóâàííÿ (C#). ³í âèð³ñ íà ôåðì³ ó ϳâí³÷í³é Äàêîò³. Ó íüîãî º ãàðìîí³êà. ³í õî÷å çðîáèòè áëèñêó÷ó êàð’ºðó â îô³ñàõ ç êîíäèö³îíîâàíèì ïîâ³òðÿì. ³í âñòóïèâ äî Óí³âåðñèòåòó Ñë³ïïåð³ Ðîê ó Ïåíñ³ëüâàí³¿." ElseIf RadioButton4.Checked = True Then Label1.Text = "Äæåí" TextBox1.Text = "Äæåí òàêîæ çíàéîìà ç ³íøîþ ìîâîþ ïðîãðàìóâàííÿ (J#), ÿêà íå â³äîìà ijðêó. Äæåí íàâ÷àºòüñÿ ó âèïóñêíîìó êëàñ³ øêîëè Ëåéêñàéä ó ѳåòë³ - ñàìå ó ö³é øêîë³ íàâ÷àâñÿ Á³ëë Ãåéòñ. Òàì âîíà çàö³êàâèëàñÿ ïðîãðàìóâàííÿì. Âîíà íàäòî çàõîïëþºòüñÿ ñ³åòëñüêîþ êàâîþ, à ùå â íå¿ º 27 ïàðàñîëüîê." ElseIf RadioButton5.Checked = True Then Label1.Text = "ij-äæåé" TextBox1.Text = "ij-äæåé Âó — àôðîàìåðèêàíåöü, ùî íîñèòü áåðåò òà ñîíÿ÷í³ îêóëÿðè. ³í â쳺 ïîÿñíþâàòè ïåâí³ ðå÷³ òàê, ÿê íå âì³þòü ͳêê³ òà Êë³ô, çàñòîñîâóþ÷è ïîíÿòòÿ òà êîíöåïö³¿ ç ðåàëüíîãî æèòòÿ. Â³í — ôîêóñíèê, â³í ìîæå ïîëàãîäèòè ñïóùåíó øèíó ìàøèíè, ³ â³í äóæå êì³òëèâèé. Îêð³ì òîãî, â³í ÷óäîâèé îïîâ³äà÷ ³ñòîð³é." End If End If End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged ' ÿêùî âñòàíîâëåíî ïðàïîðåöü ïîêàçó çîáðàæåííÿ, ' âèêëèêàºìî ï³äïðîãðàìó, ùî ïîêàçóâàòèìå çîáðàæåííÿ Call ShowImage() End Sub

219


Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged ' ÿêùî âñòàíîâëåíî ïðàïîðåöü ïîêàçó á³îãðàô³¿, ' âèêëèêàºìî ï³äïðîãðàìó, ùî ïîêàçóâàòèìå á³îãðàô³þ Call ShowBiography() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click End End Sub

Âïðàâà 4.2. Âàðò³ñòü ï³öè Ðîçðîá³òü òà „íàìàëþéòå” ôîðìó, à òàêîæ íàñòðîéòå ïàðàìåòðè ðîçòàøîâàíèõ ó ôîðì³ îᒺêò³â, ùîá âîíè â³äïîâ³äàëè íàâåäåíîìó êîäó. Ðåøòó ïðîåêòó âæå ðîçðîáëåíî. ¯¿ íàâåäåíî äëÿ ó÷í³â ó ïàïö³ Âïðàâà_4.2. Ó÷í³ ïîâèíí³ ñòâîðèòè òàêó ôîðìó: Ó÷í³ íå çì³íþâàòèìóòü êîä. Éîãî íàâåäåíî ëèøå äëÿ ³íôîðìàö³¿.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load ' âèêëèêàºìî ï³äïðîãðàìó îá÷èñëåííÿ âàðòîñò³; ' êîëè ôîðìà çàâàíòàæóºòüñÿ âïåðøå, ï³äðàõîâóºòüñÿ îñíîâíà âàðò³ñòü Call CalculatePrice() End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged ' îá÷èñëþºìî íîâó âàðò³ñòü, ÿêùî çì³íþºòüñÿ ÿêèéñü êîìïîíåíò Call CalculatePrice() End Sub Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged ' îá÷èñëþºìî íîâó âàðò³ñòü, ÿêùî çì³íþºòüñÿ ÿêèéñü êîìïîíåíò Call CalculatePrice()

220


End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged ' îá÷èñëþºìî íîâó âàðò³ñòü, ÿêùî çì³íþºòüñÿ ÿêèéñü êîìïîíåíò Call CalculatePrice() End Sub Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged ' îá÷èñëþºìî íîâó âàðò³ñòü, ÿêùî çì³íþºòüñÿ ÿêèéñü êîìïîíåíò Call CalculatePrice() End Sub Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged ' îá÷èñëþºìî íîâó âàðò³ñòü, ÿêùî çì³íþºòüñÿ ÿêèéñü êîìïîíåíò Call CalculatePrice() End Sub Private Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged ' îá÷èñëþºìî íîâó âàðò³ñòü, ÿêùî çì³íþºòüñÿ ÿêèéñü êîìïîíåíò Call CalculatePrice() End Sub Private Sub CheckBox4_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles CheckBox4.CheckedChanged ' îá÷èñëþºìî íîâó âàðò³ñòü, ÿêùî çì³íþºòüñÿ ÿêèéñü êîìïîíåíò Call CalculatePrice() End Sub Private Sub CheckBox5_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles CheckBox5.CheckedChanged ' îá÷èñëþºìî íîâó âàðò³ñòü, ÿêùî çì³íþºòüñÿ ÿêèéñü êîìïîíåíò Call CalculatePrice() End Sub Private Sub CheckBox6_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles CheckBox6.CheckedChanged ' îá÷èñëþºìî íîâó âàðò³ñòü, ÿêùî çì³íþºòüñÿ ÿêèéñü êîìïîíåíò Call CalculatePrice() End Sub Private Sub CheckBox7_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles CheckBox7.CheckedChanged ' îá÷èñëþºìî íîâó âàðò³ñòü, ÿêùî çì³íþºòüñÿ ÿêèéñü êîìïîíåíò Call CalculatePrice() End Sub Private Sub CheckBox8_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles CheckBox8.CheckedChanged

221


' îá÷èñëþºìî íîâó âàðò³ñòü, ÿêùî çì³íþºòüñÿ ÿêèéñü êîìïîíåíò Call CalculatePrice() End Sub Private Sub CalculatePrice() ' ³í³ö³àë³çóºìî âàðò³ñòü Dim PizzaPrice As Single = 0 ' îñíîâíà ö³íà PizzaPrice = 5.0 ' ³íãðå䳺íòè êîøòóþòü ÷è òî $1.00 êîæåí, ' ÷è òî $0.50 êîæåí If CheckBox1.Checked = True Then PizzaPrice = PizzaPrice + 1 End If If CheckBox2.Checked = True Then PizzaPrice = PizzaPrice + 1 End If If CheckBox3.Checked = True Then PizzaPrice = PizzaPrice + 1 End If If CheckBox4.Checked = True Then PizzaPrice = PizzaPrice + 1 End If If CheckBox5.Checked = True Then PizzaPrice = PizzaPrice + 0.5 End If If CheckBox6.Checked = True Then PizzaPrice = PizzaPrice + 0.5 End If If CheckBox7.Checked = True Then PizzaPrice = PizzaPrice + 0.5 End If If CheckBox8.Checked = True Then PizzaPrice = PizzaPrice + 0.5 End If ' ÿêùî ï³öà º âåëèêîþ If RadioButton2.Checked = True Then PizzaPrice = PizzaPrice * 1.25 End If ' ÿêùî ï³öà º íàéá³ëüøîþ If RadioButton3.Checked = True Then PizzaPrice = PizzaPrice * 1.5 End If

222


' ïîêàçóºìî â³äôîðìîòîâàíèé ðåçóëüòàò Label2.Text = FormatCurrency(PizzaPrice) End Sub

Çàâäàííÿ 4. Ãðà ó õðåñòèêè-íóëèêè Ðîçðîá³òü òà „íàìàëþéòå” ôîðìó, à òàêîæ íàñòðîéòå ïàðàìåòðè ðîçòàøîâàíèõ ó ôîðì³ îᒺêò³â, ùîá âîíè â³äïîâ³äàëè íàâåäåíîìó êîäó. Ðåøòó ïðîåêòó âæå ðîçðîáëåíî. ¯¿ íàâåäåíî äëÿ ó÷í³â ó ïàïö³ Çàâäàííÿ_4. Ó÷í³ ïîâèíí³ ñòâîðèòè òàêó ôîðìó: Ó÷í³ íå çì³íþâàòèìóòü êîä. Éîãî íàâåäåíî ëèøå äëÿ ³íôîðìàö³¿.

' îãîëîøóºìî çì³íí³ Dim XWins As Integer = 0 Dim OWins As Integer = 0 Dim Ties As Integer = 0 Dim Turn As String = "X"

' ' ' '

ê³ëüê³ñòü âèãðàø³â õðåñòèê³â ê³ëüê³ñòü âèãðàø³â íóëèê³â ê³ëüê³ñòü í³÷è¿õ ÷èÿ ÷åðãà?

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load ' êîëè ôîðìó çàâàíòàæåíî, ³í³ö³àë³çóºìî íîâó ãðó Call NewGame() TextBox1.Text = "0" TextBox2.Text = "0" TextBox3.Text = "0" End Sub Private Sub NewGame() ' îíîâëþºìî ïîëå ãðè Label1.Text = "" Label2.Text = "" Label3.Text = "" Label4.Text = "" Label5.Text = "" Label6.Text = "" Label7.Text = ""

223


Label8.Text = "" Label9.Text = "" Label10.Text = "" ' çì³íþºìî ôîíîâèé êîë³ð ïîëÿ íà ÷åðâîíèé, ' ùîá ïîçíà÷èòè âèãðàøíèé õ³ä Label1.BackColor = System.Drawing.Color.Aqua Label2.BackColor = System.Drawing.Color.Aqua Label3.BackColor = System.Drawing.Color.Aqua Label4.BackColor = System.Drawing.Color.Aqua Label5.BackColor = System.Drawing.Color.Aqua Label6.BackColor = System.Drawing.Color.Aqua Label7.BackColor = System.Drawing.Color.Aqua Label8.BackColor = System.Drawing.Color.Aqua Label9.BackColor = System.Drawing.Color.Aqua End Sub Private Sub WinnerFound(ByVal LabelText As String) ' çíàéäåíî ïåðåìîæöÿ – õòî â³í? If LabelText = "X" Then Label10.Text = "X Wins" XWins = XWins + 1 TextBox1.Text = XWins Else Label10.Text = "O Wins" OWins = OWins + 1 TextBox2.Text = OWins End If End Sub Private Sub tieFound() ' âèâîäèìî ³íôîðìàö³þ ïðî í³÷èþ Label10.Text = "Tie" Ties = Ties + 1 TextBox3.Text = Ties End Sub Private Sub CheckForWinner() ' ïåðåâ³ðÿºìî óñ³ 8 ñïîñîá³â, ÿêèìè ìîæíà âèãðàòè If Label1.Text = Label2.Text And Label2.Text = Label3.Text And _ Label1.Text "" Then Label1.BackColor = System.Drawing.Color.Red Label2.BackColor = System.Drawing.Color.Red Label3.BackColor = System.Drawing.Color.Red Call WinnerFound(Label1.Text) ElseIf Label4.Text = Label5.Text And Label5.Text = Label6.Text And _ Label4.Text "" Then Label4.BackColor = System.Drawing.Color.Red Label5.BackColor = System.Drawing.Color.Red Label6.BackColor = System.Drawing.Color.Red Call WinnerFound(Label4.Text)

224


ElseIf Label7.Text = Label8.Text And Label8.Text Label7.Text "" Then Label7.BackColor = System.Drawing.Color.Red Label8.BackColor = System.Drawing.Color.Red Label9.BackColor = System.Drawing.Color.Red Call WinnerFound(Label7.Text) ElseIf Label1.Text = Label4.Text And Label4.Text Label1.Text "" Then Label1.BackColor = System.Drawing.Color.Red Label4.BackColor = System.Drawing.Color.Red Label7.BackColor = System.Drawing.Color.Red Call WinnerFound(Label1.Text) ElseIf Label2.Text = Label5.Text And Label5.Text Label2.Text "" Then Label2.BackColor = System.Drawing.Color.Red Label5.BackColor = System.Drawing.Color.Red Label8.BackColor = System.Drawing.Color.Red Call WinnerFound(Label2.Text) ElseIf Label3.Text = Label6.Text And Label6.Text Label3.Text "" Then Label3.BackColor = System.Drawing.Color.Red Label6.BackColor = System.Drawing.Color.Red Label9.BackColor = System.Drawing.Color.Red Call WinnerFound(Label3.Text) ElseIf Label1.Text = Label5.Text And Label5.Text Label1.Text "" Then Label1.BackColor = System.Drawing.Color.Red Label5.BackColor = System.Drawing.Color.Red Label9.BackColor = System.Drawing.Color.Red Call WinnerFound(Label1.Text) ElseIf Label3.Text = Label5.Text And Label5.Text Label3.Text "" Then Label3.BackColor = System.Drawing.Color.Red Label5.BackColor = System.Drawing.Color.Red Label7.BackColor = System.Drawing.Color.Red Call WinnerFound(Label3.Text) ElseIf Label1.Text "" And _ Label2.Text "" And _ Label3.Text "" And _ Label4.Text "" And _ Label5.Text "" And _ Label6.Text "" And _ Label7.Text "" And _ Label8.Text "" And _ Label9.Text "" Then ' ÿêùî ïåðåìîæöÿ íåìàº, à óñ³ 9 ïîë³â ' çàïîâíåíî, ãðà çàâåðøóºòüñÿ ó í³÷èþ Call tieFound() End If End Sub

= Label9.Text And _

= Label7.Text And _

= Label8.Text And _

= Label9.Text And _

= Label9.Text And _

= Label7.Text And _

225


Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Label1.Click ' ÿêùî ³ãðîâå ïîëå àáî íàïèñ, ïðèçíà÷åíèé äëÿ ' ïîâ³äîìëåíü ïðî ïåðåìîãó, íå ïîðîæí³, íå âèêîíóºìî æîäíèõ ä³é If Label1.Text "" Or Label10.Text "" Then Exit Sub End If Label1.Text = Turn If Turn = "X" Then Turn = "O" Else Turn = "X" End If Call CheckForWinner() End Sub Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Label2.Click ' ÿêùî ³ãðîâå ïîëå àáî íàïèñ, ïðèçíà÷åíèé äëÿ ' ïîâ³äîìëåíü ïðî ïåðåìîãó, íå ïîðîæí³, íå âèêîíóºìî æîäíèõ ä³é If Label2.Text "" Or Label10.Text "" Then Exit Sub End If Label2.Text = Turn If Turn = "X" Then Turn = "O" Else Turn = "X" End If Call CheckForWinner() End Sub Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Label3.Click ' ÿêùî ³ãðîâå ïîëå àáî íàïèñ, ïðèçíà÷åíèé äëÿ ' ïîâ³äîìëåíü ïðî ïåðåìîãó, íå ïîðîæí³, íå âèêîíóºìî æîäíèõ ä³é If Label3.Text "" Or Label10.Text "" Then Exit Sub End If Label3.Text = Turn If Turn = "X" Then Turn = "O" Else Turn = "X" End If Call CheckForWinner() End Sub

226


Private Sub Label4_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Label4.Click ' ÿêùî ³ãðîâå ïîëå àáî íàïèñ, ïðèçíà÷åíèé äëÿ ' ïîâ³äîìëåíü ïðî ïåðåìîãó, íå ïîðîæí³, íå âèêîíóºìî æîäíèõ ä³é If Label4.Text "" Or Label10.Text "" Then Exit Sub End If Label4.Text = Turn If Turn = "X" Then Turn = "O" Else Turn = "X" End If Call CheckForWinner() End Sub Private Sub Label5_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Label5.Click ' ÿêùî ³ãðîâå ïîëå àáî íàïèñ, ïðèçíà÷åíèé äëÿ ' ïîâ³äîìëåíü ïðî ïåðåìîãó, íå ïîðîæí³, íå âèêîíóºìî æîäíèõ ä³é If Label5.Text "" Or Label10.Text "" Then Exit Sub End If Label5.Text = Turn If Turn = "X" Then Turn = "O" Else Turn = "X" End If Call CheckForWinner() End Sub Private Sub Label6_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Label6.Click ' ÿêùî ³ãðîâå ïîëå àáî íàïèñ, ïðèçíà÷åíèé äëÿ ' ïîâ³äîìëåíü ïðî ïåðåìîãó, íå ïîðîæí³, íå âèêîíóºìî æîäíèõ ä³é If Label6.Text "" Or Label10.Text "" Then Exit Sub End If Label6.Text = Turn If Turn = "X" Then Turn = "O" Else Turn = "X" End If Call CheckForWinner() End Sub

227


Private Sub Label7_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Label7.Click ' ÿêùî ³ãðîâå ïîëå àáî íàïèñ, ïðèçíà÷åíèé äëÿ ' ïîâ³äîìëåíü ïðî ïåðåìîãó, íå ïîðîæí³, íå âèêîíóºìî æîäíèõ ä³é If Label7.Text "" Or Label10.Text "" Then Exit Sub End If Label7.Text = Turn If Turn = "X" Then Turn = "O" Else Turn = "X" End If Call CheckForWinner() End Sub Private Sub Label8_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Label8.Click ' ÿêùî ³ãðîâå ïîëå àáî íàïèñ, ïðèçíà÷åíèé äëÿ ' ïîâ³äîìëåíü ïðî ïåðåìîãó, íå ïîðîæí³, íå âèêîíóºìî æîäíèõ ä³é If Label8.Text "" Or Label10.Text "" Then Exit Sub End If Label8.Text = Turn If Turn = "X" Then Turn = "O" Else Turn = "X" End If Call CheckForWinner() End Sub Private Sub Label9_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Label9.Click ' ÿêùî ³ãðîâå ïîëå àáî íàïèñ, ïðèçíà÷åíèé äëÿ ' ïîâ³äîìëåíü ïðî ïåðåìîãó, íå ïîðîæí³, íå âèêîíóºìî æîäíèõ ä³é If Label9.Text "" Or Label10.Text "" Then Exit Sub End If Label9.Text = Turn If Turn = "X" Then Turn = "O" Else Turn = "X" End If Call CheckForWinner() End Sub

228


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click ' ðîçïî÷èíàºìî íîâó ãðó, ÿêùî öüîãî çàáàæຠãðàâåöü Call NewGame() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button2.Click End End Sub

Âïðàâà 5.1. Áàðâèñòà âåñåëêà Íàñòðîéòå ïàðàìåòðè îᒺêò³â ó êîä³ Visual Basic .NET, à íå ó â³êí³ Properties. Íàìàëþéòå ó ôîðì³ âåñåëêó. Á³ëüøà ÷àñòèíà êîäó ì³ñòèòüñÿ ó ôàéë³ Form1.vb ç ïàïêè Âïðàâà_5.1. Ó÷í³ ïîâèíí³ ñòâîðèòè òàêó ôîðìó: ϳñëÿ âíåñåííÿ ó÷íÿìè çì³í êîä øàáëîíó ìຠíàáóòè ïðèáëèçíî òàêîãî âèãëÿäó:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click ' âèçíà÷àºìî ïåíçåëü äëÿ ìàëþâàííÿ Dim MyPen As New Pen(Color.Black) ' âèçíà÷àºìî, äå ìàëþâàòè Dim g As Graphics = PictureBox1.CreateGraphics ' ñòèðàºìî áóäü-ÿêå ïîïåðåäíº çîáðàæåííÿ, à ïîò³ì îíîâëþºìî ïîëå ' çîáðàæåííÿ PictureBox1.ForeColor = System.Drawing.Color.Gray PictureBox1.Refresh() ' çàäàºìî ðîçì³ð ïåíçëÿ MyPen.Width = 8 ' ìàëþºìî 7 êîëüîð³â âåñåëêè – ñïî÷àòêó îáèðàºìî êîë³ð, ïîò³ì ' ìàëþºìî äóãó öèì êîëüîðîì MyPen.Color = System.Drawing.Color.Red

229


g.DrawArc(MyPen, 30, 10, 200, 140, 180, 180) MyPen.Color = System.Drawing.Color.Orange g.DrawArc(MyPen, 30, 18, 200, 150, 180, 180) MyPen.Color = System.Drawing.Color.Yellow g.DrawArc(MyPen, 30, 26, 200, 150, 180, 180) MyPen.Color = System.Drawing.Color.Green g.DrawArc(MyPen, 30, 34, 200, 150, 180, 180) MyPen.Color = System.Drawing.Color.Blue g.DrawArc(MyPen, 30, 42, 200, 150, 180, 180) MyPen.Color = System.Drawing.Color.Indigo g.DrawArc(MyPen, 30, 50, 200, 150, 180, 180) MyPen.Color = System.Drawing.Color.Violet g.DrawArc(MyPen, 30, 58, 200, 150, 180, 180) End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button2.Click ' âèçíà÷àºìî ïåíçåëü äëÿ ìàëþâàííÿ Dim MyPen As New Pen(Color.Black) ' âèçíà÷àºìî, äå ìàëþâàòè Dim g As Graphics = PictureBox1.CreateGraphics ' ñòèðàºìî áóäü-ÿêå ïîïåðåäíº çîáðàæåííÿ, ïîò³ì îíîâëþºìî ïîëå ' çîáðàæåííÿ PictureBox1.ForeColor = System.Drawing.Color.Gray PictureBox1.Refresh() ' çàäàºìî ðîçì³ð ïåíçëÿ MyPen.Width = 8 ' ìàëþºìî 7 êîëüîð³â âåñåëêè – ñïî÷àòêó âèáèðàºìî êîë³ð, ïîò³ì ' ìàëþºìî äóãó öèì êîëüîðîì MyPen.Color = System.Drawing.Color.PapayaWhip g.DrawArc(MyPen, 30, 10, 200, 140, 180, 180) MyPen.Color = System.Drawing.Color.Violet g.DrawArc(MyPen, 30, 18, 200, 150, 180, 180) MyPen.Color = System.Drawing.Color.Tomato g.DrawArc(MyPen, 30, 26, 200, 150, 180, 180) MyPen.Color = System.Drawing.Color.Azure g.DrawArc(MyPen, 30, 34, 200, 150, 180, 180) MyPen.Color = System.Drawing.Color.Chocolate g.DrawArc(MyPen, 30, 42, 200, 150, 180, 180) MyPen.Color = System.Drawing.Color.ForestGreen g.DrawArc(MyPen, 30, 50, 200, 150, 180, 180) MyPen.Color = System.Drawing.Color.GreenYellow g.DrawArc(MyPen, 30, 58, 200, 150, 180, 180) End Sub

230


Âïðàâà 5.2. Âèì³ðþâà÷ äèñòàíö³¿ Íàïèø³òü ïðîãðàìó, ùî áóäå îá÷èñëþâàòè ÷àñòêó øëÿõó, ÿêó âè ïîäîëàëè äî ÷åðãîâîãî ïóíêòó ïðèçíà÷åííÿ. Ó÷í³ ïîâèíí³ ñòâîðèòè òàêó ôîðìó:

ϳñëÿ âíåñåííÿ ó÷íÿìè çì³í êîä øàáëîíó ìຠíàáóòè ïðèáëèçíî òàêîãî âèãëÿäó: ' íà êîæåí ïåðåìèêà÷ ïðèïàäຠíà ñìóç³ ïðîêðóòêè 83 òî÷êè ç 1000 ' ó÷åíü âñòàíîâëþº â³äïîâ³äíå ïîëîæåííÿ ïîâçóíêà, ' ùîá ïîêàçàòè â³äñòàíü â³ä ïî÷àòêó ïîäîðîæ³ Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged VScrollBar1.Value = 0 End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged VScrollBar1.Value = 83 End Sub Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged VScrollBar1.Value = 166 End Sub Private Sub RadioButton4_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton4.CheckedChanged VScrollBar1.Value = 250 End Sub

231


Private Sub RadioButton5_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton5.CheckedChanged VScrollBar1.Value = 333 End Sub Private Sub RadioButton6_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton6.CheckedChanged VScrollBar1.Value = 416 End Sub Private Sub RadioButton7_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton7.CheckedChanged VScrollBar1.Value = 500 End Sub Private Sub RadioButton8_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton8.CheckedChanged VScrollBar1.Value = 583 End Sub Private Sub RadioButton9_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton9.CheckedChanged VScrollBar1.Value = 666 End Sub Private Sub RadioButton10_CheckedChanged(ByVal sender _ As System.Object, ByVal e As System.EventArgs) Handles _ RadioButton10.CheckedChanged VScrollBar1.Value = 750 End Sub Private Sub RadioButton11_CheckedChanged(ByVal sender _ As System.Object, ByVal e As System.EventArgs) Handles _ RadioButton11.CheckedChanged VScrollBar1.Value = 833 End Sub Private Sub RadioButton12_CheckedChanged(ByVal sender _ As System.Object, ByVal e As System.EventArgs) Handles _ RadioButton12.CheckedChanged VScrollBar1.Value = 916 End Sub Private Sub RadioButton13_CheckedChanged(ByVal sender _ As System.Object, ByVal e As System.EventArgs) Handles _ RadioButton13.CheckedChanged VScrollBar1.Value = 1000 End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click End End Sub

232


Çàâäàííÿ 5. Êâ³òè Âèêîðèñòàéòå ïîä³þ íàâåäåííÿ ïîêàæ÷èêà ìèø³ íà îᒺêò, ùîá ïîêàçóâàòè çîáðàæåííÿ êâ³ò³â. Ó÷í³ ïîâèíí³ ñòâîðèòè òàêó ôîðìó:

ϳñëÿ âíåñåííÿ ó÷íÿìè çì³í êîä ôîðìè ìຠíàáóòè ïðèáëèçíî òàêîãî âèãëÿäó: Private Sub Label1_MouseHover(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Label1.MouseHover ' íàäàºìî ïàðàìåòðó Visible çîáðàæåííÿ çíà÷åííÿ True, ' êîëè ïîêàæ÷èê ìèø³ íàâåäåíî íà íàçâó êâ³òêè ' ³íø³ çîáðàæåííÿ ðîáèìî íåâèäèìèìè PictureBox1.Visible = True PictureBox2.Visible = False PictureBox3.Visible = False PictureBox4.Visible = False End Sub Private Sub Label2_MouseHover(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Label2.MouseHover ' íàäàºìî ïàðàìåòðó Visible çîáðàæåííÿ çíà÷åííÿ True, ' êîëè ïîêàæ÷èê ìèø³ íàâåäåíî íà íàçâó êâ³òêè ' ³íø³ çîáðàæåííÿ ðîáèìî íåâèäèìèìè PictureBox1.Visible = False PictureBox2.Visible = True PictureBox3.Visible = False PictureBox4.Visible = False End Sub Private Sub Label3_MouseHover(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Label3.MouseHover ' íàäàºìî ïàðàìåòðó Visible çîáðàæåííÿ çíà÷åííÿ True, ' êîëè ïîêàæ÷èê ìèø³ íàâåäåíî íà íàçâó êâ³òêè. ' ³íø³ çîáðàæåííÿ ðîáèìî íåâèäèìèìè PictureBox1.Visible = False PictureBox2.Visible = False

233


PictureBox3.Visible = True PictureBox4.Visible = False End Sub Private Sub Label4_MouseHover(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Label4.MouseHover ' ïðèñâîþºìî ïàðàìåòðó Visible çîáðàæåííÿ çíà÷åííÿ True, ' êîëè ïîêàæ÷èê ìèø³ íàâåäåíî íà íàçâó êâ³òêè. ' ³íø³ çîáðàæåííÿ ðîáèìî íåâèäèìèìè PictureBox1.Visible = False PictureBox2.Visible = False PictureBox3.Visible = False PictureBox4.Visible = True End Sub

Âïðàâà 6.1. ×èñëî p Âèâåä³òü íà åêðàí ÷èñëî p ó ð³çíèõ ôîðìàòàõ. Ó÷í³ ïîâèíí³ ñòâîðèòè òàêó ôîðìó:

Ó÷í³ íàïèøóòü òàêèé êîä: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click Dim myInteger As Integer Dim mySingle As Single Dim myDouble As Double Dim myString As String myInteger = Math.PI TextBox1.Text = myInteger mySingle = Math.PI TextBox2.Text = mySingle myDouble = Math.PI TextBox3.Text = myDouble myString = Math.PI TextBox4.Text = myString End Sub

234


Âïðàâà 6.2. Ñòðèáîê æàáè Ó êîæíîìó îáðîáíèêó ïî䳿 êëàöàííÿ íà êíîïö³ çàïèø³òü êîä, ùî çì³íþº âì³ñò äâîõ òåêñòîâèõ ïîë³â. Ó÷í³ ïîâèíí³ ñòâîðèòè òàêó ôîðìó:

Ó÷í³ íàïèøóòü òàêèé êîä: ' êîæíå êëàöàííÿ íà êíîïö³ çàáåçïå÷óº êîï³þâàííÿ âì³ñòó òåêñòîâîãî ' ïîëÿ äî íîâîãî òåêñòîâîãî ïîëÿ òà ðîáèòü ïîïåðåäíº ïîëå ïîðîæí³ì Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click TextBox3.Text = TextBox1.Text TextBox1.Text = "" End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button2.Click TextBox4.Text = TextBox2.Text TextBox2.Text = "" End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button3.Click TextBox5.Text = TextBox3.Text TextBox3.Text = "" End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button4.Click TextBox1.Text = TextBox4.Text TextBox4.Text = "" End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button5.Click TextBox2.Text = TextBox5.Text TextBox5.Text = "" End Sub

Çàâäàííÿ 6. Âèïðàâëåííÿ ïîìèëîê Çíàéä³òü ïîìèëêè ó ïðîãðàì³, íàâåäåí³é ó ïàïö³ Çàâäàííÿ_6, òà âèïðàâèòå ¿õ. Ó ïðîãðàì³ áóëî íàâìèñíî çðîáëåíî 10 ïîìèëîê. Äëÿ á³ëüøîñò³ ç íèõ íå ³ñíóº ºäèíîãî âàð³àíòà âèïðàâëåííÿ. Íàïðèêëàä, ÿêùî ó âèðàç³ X = 123.4 ïðèïóùåíî ïîìèëêó ÷åðåç òå, ùî X º ö³ëî÷èñëîâîþ çì³ííîþ, ïðèïóñòèìèìè âàð³àíòàìè âèðàçó áóäóòü ÿê X = 123, òàê ³ X = 1234.

235


ϳñëÿ âíåñåííÿ ó÷íÿìè çì³í êîä øàáëîíó ìຠíàáóòè ïðèáëèçíî òàêîãî âèãëÿäó: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click ' ðÿäîê ³ç ïîìèëêîþ ïåðåòâîðåíèé íà êîìåíòàð³ ' ïðàâèëüíèé ðÿäîê íàâåäåíî íèæ÷å 'Dim myString As Strin Dim myString As String 'Dim myInteger As Intger Dim myInteger As Integer 'Dim mySingle As Sinle Dim mySingle As Single 'Dim myBoolean As Bulean Dim myBoolean As Boolean ' íàñòóïíèé ðÿäîê íå ì³ñòèòü ïîìèëîê Dim MyColor As System.Drawing.Color 'MyClr = System.Drawing.Color.Blue MyColor = System.Drawing.Color.Blue 'TextBox1.Text = John Smith TextBox1.Text = "John Smith" 'TextBox1.Text = TextBox1.ForeColor TextBox1.Text = "Ïàðàìåòðó Text ñë³ä íàäàâàòè çíà÷åííÿ ðÿäêîâîãî òèïó." 'myInteger = "ABC" myInteger = 123 'myBoolean = 27 myBoolean = True 'MsgBox.Show("Ïðîãðàìà âèïðàâëåííÿ ïîìèëîê ïðàöþº.") MessageBox.Show("Ïðîãðàìà âèïðàâëåííÿ ïîìèëîê ïðàöþº.") End Sub Ó äîäàòêîâîìó çàâäàíí³ ó÷íÿì ïîñòàâëåíå ïèòàííÿ «Õòî òàêèé Ãðåéñ Õîïåð?». Ãðåéñ Õîïåð áóâ ïåðøèì, õòî çíàéøîâ ïîìèëêó â ðîáîò³ êîìï’þòåðà. Öÿ ïîìèëêà âèíèêëà âíàñë³äîê òîãî, ùî â îäíîìó ç ïåðøèõ êîìï’þòåð³â ïåðåãîð³ëà âàêóóìíà ëàìïà.

Âïðàâà 7.1. Âàðò³ñòü áåíçèíó Îá÷èñëþºìî âàðò³ñòü áåíçèíó. Ó÷í³ ïîâèíí³ ñòâîðèòè òàêó ôîðìó:

236


Ó÷í³ íàïèøóòü òàêèé êîä: Private Sub button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles button1.Click Dim MTG As Single ' miles to go Dim MPG As Single ' miles per gallon Dim CPG As Single ' cost per gallon Dim TC As Single ' total cost ' îòðèìóºìî çíà÷åííÿ ç ôîðìè MTG = TextBox1.Text MPG = TextBox2.Text CPG = TextBox3.Text ' îá÷èñëþºìî çàãàëüíó âàðò³ñòü TC = (MTG / MPG) * CPG ' ôîðìàòóºìî çàãàëüíó âàðò³ñòü ³ â³äîáðàæàºìî ¿¿ TextBox4.Text = TC TextBox4.Text = FormatCurrency(TextBox4.Text) End Sub

Âïðàâà 7.2. Íàëàãîäæåííÿ ïðîãðàìè Âèêîðèñòàéòå ³íñòðóìåíòè íàëàãîäæåííÿ Visual Studio .NET. Ïðîãðàìó, ùî ìຠáóòè íàëàãîäæåíà, íàâåäåíî ó ïàïö³ Âïðàâà_7.2. Íèæ÷å íàâåäåíî â³äïîâ³ä³, ÿê³ ìຠäàòè ó÷åíü íà ïèòàííÿ âïðàâè. 1. ßêå çíà÷åííÿ âè ââåëè äî òåêñòîâîãî ïîëÿ ôîðìè? ²ì’ÿ ó÷íÿ. 2. ßêèì º ê³íöåâå çíà÷åííÿ çì³ííî¿ AnswerOne? hello. 3. ßêèì º ê³íöåâå çíà÷åííÿ çì³ííî¿ AnswerTwo? ²ì’ÿ ó÷íÿ, çàïèñàíå ó çâîðîòíîìó ïîðÿäêó. Íàïðèêëàä, ÿêùî ó÷åíü ââåäå äî òåêñòîâîãî ïîëÿ ³ì’ÿ ²âàí (ïèòàííÿ 1), â³äïîâ³äü íà ïèòàííÿ 3 áóäå íàâ². Êîä ö³º¿ ïðîãðàìè íàâìèñíî áóâ çàïëóòàíèé òà óñêëàäíåíèé, ùîá â ó÷í³â íå âèíèêëî ñïîêóñè îá÷èñëèòè â³äïîâ³ä³ âðó÷íó. Êîä º òàêèì: Dim AnswerOne As String = "Öåé ðÿäîê êîäó ùå íå âèêîíóâàâñÿ." Dim AnswerTwo As String = "Öåé ðÿäîê êîäó ùå íå âèêîíóâàâñÿ." Dim Int1 As Integer = 1 Dim Int2 As Integer = 2 Dim Int3 As Integer = 3 Dim Work1 As String = "ïðóäêà ðóäà ëèñèöÿ ïåðåñêî÷èëà ÷åðåç ëåäà÷îãî ñîáàêó" Dim Work2 As String = "" Dim Work3 As String = "" Dim Work4 As String = "" Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button2.Click

237


End End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click ' î÷³êóºòüñÿ, ùî âè çàñòîñîâóâàòèìåòå ìåòîäè íàëàãîäæåííÿ, ' ïðî ÿê³ âè ä³çíàëèñÿ ç ìîäóëÿ 8, ùîá âèçíà÷èòè ʲÍÖŲ çíà÷åííÿ ' çì³ííèõ AnswerOne òà AnswerTwo ' ïðîãðàìó íàâìèñíî çàïëóòàíî, ùîá âè ' êîðèñòóâàëèñÿ ³íñòðóìåíòàìè íàëàãîäæåííÿ, à íå íàìàãàëèñÿ ' â³äïîâ³ñòè íà ïèòàííÿ, ïðîàíàë³çóâàâøè êîä AnswerOne = Mid(Work1, 2, 2) & Mid(Work1, Int3 * 11 + 4, 1) & _ Mid(Work1, Int3 ^ 3 + Int2 * 5, 1) & _ Mid(Work1, Int2 * 6 + Int1, Int1) TextBox1.Text = Trim(TextBox1.Text) Work3 = "" For Int3 = TextBox1.Text.Length To Int1 Step -1 Work3 = Work3 & Mid(TextBox1.Text, Int3, 1) Next Work3 = Work3 & Work2 & Work1 Work4 = Mid(Work3, Int2 - Int1, TextBox1.Text.Length) AnswerTwo = Work4 ' çàïèø³òü çíà÷åííÿ, ÿêå âè ââåëè äî òåêñòîâîãî ïîëÿ ' çàïèø³òü çíà÷åííÿ çì³ííî¿ AnswerOne ' çàïèø³òü çíà÷åííÿ çì³ííî¿ AnswerTwo End Sub

Çàâäàííÿ 7. Îá÷èñëåííÿ îᒺìó Îá÷èñë³òü îᒺì êóáà òà ñôåðè. Ôîðìà ìຠòàêèé âèãëÿä:

Ó÷í³ íàïèøóòü òàêèé êîä: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click CubeSide = Val(TextBox1.Text) ' îá÷èñëþºìî îá’ºì êóáà TextBox3.Text = CubeSide * CubeSide * CubeSide ' àëüòåðíàòèâíèé ñïîñ³á îá÷èñëåííÿ TextBox3.Text = CubeSide ^ 3

238


SphereRadius = Val(TextBox2.Text) ' îá÷èñëþºìî îá’ºì ñôåðè TextBox4.Text = (4 / 3) * 3.14 * SphereRadius * SphereRadius * _ SphereRadius ' àëüòåðíàòèâíèé ñïîñ³á îá÷èñëåííÿ TextBox4.Text = (4 / 3) * 3.14 * SphereRadius ^ 3 End Sub

Âïðàâà 8.1. Ïîäàðóíêè Çàïðîïîíóéòå ³äå¿ ùîäî ïîäàðóíê³â äëÿ ïîêóïö³â. Ôîðìà ìຠòàêèé âèãëÿä:

Ó÷í³ íàïèøóòü òàêèé êîä: Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As _ System.Object, ByVal e As System.EventArgs) Handles _ ComboBox1.SelectedIndexChanged TextBox1.Text = "" ' ñïîñ³á 1 – ' âèçíà÷àòè ñóïóòí³ ïîäàðóíêè, âèõîäÿ÷è ç ïîðÿäêîâîãî íîìåðà ' îáðàíî¿ ðå÷³ If ComboBox1.SelectedIndex = 0 Then TextBox1.Text = "Ñòð³÷êà äëÿ êàïåëþõà ç³ øê³ðè ç쳿" & vbNewLine _ & "Êðàâàòêà" End If If ComboBox1.SelectedIndex = 1 Then TextBox1.Text = "Êðåì äëÿ ÷åðåâèê³â" End If If ComboBox1.SelectedIndex = 2 Then TextBox1.Text = "Êàðòà òàºìíî¿ çîëîòî¿ øàõòè" & vbNewLine _ & "Ñïðàâæíÿ çîëîòîíîñíà ðóäà" End If If ComboBox1.SelectedIndex = 3 Then TextBox1.Text = "Ðó÷êà ç íàïèñîì" & vbNewLine & "Ôóòáîëêà" End If If ComboBox1.SelectedIndex = 4 Then TextBox1.Text = "Ñîóñ ÷³ë³" & vbNewLine & "Ãîñòðèé ñîóñ Òîðíàäî" End If

239


' ñïîñ³á 2 – íå äóæå âäàëèé, îñê³ëüêè ' âèìàãຠòî÷íîãî íàïèñàííÿ ñë³â If ComboBox1.SelectedItem = "Êàïåëþõ" Then TextBox1.Text = "Ñòð³÷êà äëÿ êàïåëþõà ç³ øê³ðè ç쳿" & vbNewLine _ & "Êðàâàòêà" End If If ComboBox1.SelectedItem = "×åðåâèêè" Then TextBox1.Text = "Êðåì äëÿ ÷åðåâèê³â" End If If ComboBox1.SelectedItem = "Îïóäàëî øàêàëà" Then TextBox1.Text = "Êàðòà òàºìíî¿ çîëîòî¿ øàõòè" & vbNewLine _ & "Ñïðàâæíÿ çîëîòîíîñíà ðóäà" End If If ComboBox1.SelectedItem = "Ëèñò³âêè" Then TextBox1.Text = "Ðó÷êà ç íàïèñîì" & vbNewLine & "Ôóòáîëêà" End If If ComboBox1.SelectedItem = "Ïåðåöü ÷³ë³" Then TextBox1.Text = "Ñîóñ ÷³ë³" & vbNewLine & "Ãîñòðèé ñîóñ Òîðíàäî" End If End Sub

Âïðàâà 8.2. Îö³íþâàííÿ âì³ííÿ ïðîãðàìóâàòè Íàïèø³òü ïðîãðàìó äëÿ îáðîáëåííÿ ôîðìè îö³íþâàííÿ, ÿêà äîïîìîæå ó÷íÿì âèð³øèòè, ÷è ïðîõîäèòè ¿ì êóðñ ïðîãðàìóâàííÿ. Ôîðìà ìຠòàêèé âèãëÿä:

240


Ó÷í³ íàïèøóòü òàêèé êîä: Dim TotalPoints As Integer = 0 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click ' ï³äñóìîâóºìî áàëè çà âñ³ ïèòàííÿ TotalPoints = Val(TextBox1.Text) + Val(TextBox2.Text) + _ Val(TextBox3.Text) + Val(TextBox4.Text) + Val(TextBox5.Text) + _ Val(TextBox6.Text) TextBox7.Text = TotalPoints ' îáèðàºìî â³äïîâ³äü, çàëåæíî â³ä çàãàëüíî¿ ê³ëüêîñò³ áàë³â If TotalPoints > 40 Then TextBox8.Text = "Âè çäàòí³ çðîáèòè áëèñêó÷ó êàð’ºðó ïðîãðàì³ñòà. Ðåêîìåíäóºìî âàì ïðîéòè êóðñ ïðîãðàìóâàííÿ." End If If TotalPoints > 19 And TotalPoints < 40 Then TextBox8.Text = "Âàøå ñòàâëåííÿ äî ïðîãðàìóâàííÿ íåïåâíå. Éìîâ³ðíî, âàì ñë³ä ïðîéòè êóðñ ïðîãðàìóâàííÿ, ùîá ä³çíàòèñÿ á³ëüøå ïðî öåé ïðåäìåò." End If If TotalPoints < 20 Then TextBox8.Text = "Âè ïîâèíí³ ïîäóìàòè ïðî êàð’ºðó â ³íø³é ñôåð³. Ïðîãðàìóâàííÿ íå äëÿ âàñ. Éìîâ³ðíî, âàì êðàùå ïðîéòè á³çíåñ-êóðñ, êóðñ ç ³ñòî𳿠àáî ïîë³òîëî㳿." End If End Sub

Çàâäàííÿ 8. Ãðà Íàïèø³òü àðêàäíó ãðó, ó ÿê³é âè íàìàãàòèìåòåñÿ êëàöíóòè íà ì³øåí³, ùî ðóõàºòüñÿ. Ôîðìà ìຠòàêèé âèãëÿä:

241


Ó÷í³ íàïèøóòü òàêèé êîä: Dim Hits As Integer = 0 Dim Total As Integer = 0

' ê³ëüê³ñòü âëó÷åíü ' çàãàëüíà ê³ëüê³ñòü ñïðîá

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click ' çàäàºìî øâèäê³ñòü òà ðîçì³ð ì³øåí³ äëÿ ëåãêî¿ ãðè If RadioButton1.Checked = True Then Timer1.Interval = 900 PictureBox1.Width = 40 PictureBox1.Height = 40 End If ' çàäàºìî øâèäê³ñòü òà ðîçì³ð ì³øåí³ äëÿ ãðè ñåðåäíüî¿ ñêëàäíîñò³ If RadioButton2.Checked = True Then Timer1.Interval = 850 PictureBox1.Width = 35 PictureBox1.Height = 35 End If ' çàäàºìî øâèäê³ñòü òà ðîçì³ð ì³øåí³ äëÿ ñêëàäíî¿ ãðè If RadioButton3.Checked = True Then Timer1.Interval = 800 PictureBox1.Width = 30 PictureBox1.Height = 30 End If ' ií³ö³àë³çóºìî ë³÷èëüíèê Hits = 0 Total = 0 'çàïóñêàºìî òàéìåð äëÿ ãðè Timer1.Enabled = True End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Timer1.Tick ' ðîçòàøîâóºìî ì³øåíü âèïàäêîâî (ãåíåðóºìî êîîðäèíàòè X òà Y) Dim MyRandomGenerator As System.Random MyRandomGenerator = New System.Random Dim RandomX As Integer Dim RandomY As Integer RandomX = MyRandomGenerator.Next(1, 550) RandomY = MyRandomGenerator.Next(1, 250) PictureBox1.SetBounds(RandomX, RandomY, Me.Width, Me.Height, _ System.Windows.Forms.BoundsSpecified.Location) ' äî ê³ëüêîñò³ ñïðîá äîäàºìî 1 Total = Total + 1 TextBox2.Text = Total End Sub

242


Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal _ e As System.EventArgs) Handles PictureBox1.Click ' êîëè ãðàâåöü êëàöíå íà ïîë³ ³ç çîáðàæåííÿì ì³øåí³, ' çá³ëüøóºìî ë³÷èëüíèê âäàëèõ ñïðîá Hits = Hits + 1 TextBox1.Text = Hits End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button2.Click ' çóïèíÿºìî ãðó, âèìêíóâøè òàéìåð Timer1.Enabled = False End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button3.Click End End Sub

Âïðàâà 9.1. Ðàõóíîê ó ãîëüô³ Îá÷èñë³òü ðàõóíîê ó ãîëüô³ äëÿ ÷îòèðüîõ ãðàâö³â. Ó÷í³ ïîâèíí³ ñòâîðèòè òàêó ôîðìó: Ó÷í³ íàïèøóòü òàêèé êîä:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click Dim Average As Single ' îá÷èñëþºìî ñåðåäíº çíà÷åííÿ ÷îòèðüîõ ðàõóíê³â ãðè ó ãîëüô Average = (Val(TextBox1.Text) + Val(TextBox2.Text) + _ Val(TextBox3.Text) + Val(TextBox4.Text)) / 4 TextBox5.Text = Average ' ïîð³âíþºìî ðàõóíîê êîæíîãî ãðàâöÿ ³ç ñåðåäí³ì ðàõóíêîì ' ïèøåìî îäíå ïîâ³äîìëåííÿ äëÿ ðàõóíê³â, ìåíøèõ çà ñåðåäí³é, ' òà ³íøå äëÿ ðàõóíê³â, á³ëüøèõ çà ñåðåäí³é If Val(TextBox1.Text) < Average Then Label6.Text = "Äóæå äîáðå" Else Label6.Text = "Ïðîäîâæóéòå ïðàêòèêóâàòèñÿ" End If

243


If Val(TextBox2.Text) < Average Then Label7.Text = "Äóæå äîáðå" Else Label7.Text = "Ïðîäîâæóéòå ïðàêòèêóâàòèñÿ" End If If Val(TextBox3.Text) < Average Then Label8.Text = "Äóæå äîáðå" Else Label8.Text = "Ïðîäîâæóéòå ïðàêòèêóâàòèñÿ" End If If Val(TextBox4.Text) < Average Then Label9.Text = "Äóæå äîáðå" Else Label9.Text = "Ïðîäîâæóéòå ïðàêòèêóâàòèñÿ" End If End Sub

Âïðàâà 9.2. Ìàã³÷íèé êâàäðàò Ïîáóäóéòå ìàã³÷íèé êâàäðàò ðîçì³ðîì 3´3. Ôîðìà ìຠòàêèé âèãëÿä:

Ó÷í³ íàïèøóòü òàêèé êîä: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click ' âèçíà÷àºìî ñóìó ó êîæíîìó ðÿäêó, ñòîâï÷èêó òà íà êîæí³é ä³àãîíàë³ ' çàïèñóºìî çàãàëüíó ñóìó äî â³äïîâ³äíîãî ïîëÿ TextBox10.Text = Val(TextBox3.Text) + Val(TextBox5.Text) + _ Val(TextBox7.Text) TextBox11.Text = Val(TextBox1.Text) + Val(TextBox4.Text) + _ Val(TextBox7.Text) TextBox12.Text = Val(TextBox2.Text) + Val(TextBox5.Text) + _

244


Val(TextBox8.Text) TextBox13.Text = Val(TextBox3.Text) + Val(TextBox6.Text) + _ Val(TextBox9.Text) TextBox14.Text = Val(TextBox1.Text) + Val(TextBox5.Text) + _ Val(TextBox9.Text) TextBox15.Text = Val(TextBox7.Text) + Val(TextBox8.Text) + _ Val(TextBox9.Text) TextBox16.Text = Val(TextBox4.Text) + Val(TextBox5.Text) + _ Val(TextBox6.Text) TextBox17.Text = Val(TextBox1.Text) + Val(TextBox2.Text) + _ Val(TextBox3.Text) ' ïåðåâ³ðÿºìî, ÷è â óñ³õ ðÿäêàõ, ñòîâï÷èêàõ òà ä³àãîíàëÿõ ' ñóìè ñòàíîâëÿòü 15 ' ÿêùî òàê, âèâîäèìî ïîâ³äîìëåííÿ ïðî ïåðåìîãó ' ÿêùî í³, ïåðåâ³ðÿºìî, ÷è çàãàëüíà ñóìà ïåðåâèùóº 45, ' îñê³ëüêè öå îçíà÷àº, ùî áóëî ââåäåíî ÷èñëî á³ëüøå çà 9 If (Val(TextBox10.Text) = 15 And _ Val(TextBox11.Text) = 15 And _ Val(TextBox12.Text) = 15 And _ Val(TextBox13.Text) = 15 And _ Val(TextBox14.Text) = 15 And _ Val(TextBox15.Text) = 15 And _ Val(TextBox16.Text) = 15 And _ Val(TextBox17.Text) = 15) Then Label2.Text = "Âè ïåðåìîãëè!!!" ElseIf (Val(TextBox11.Text) + Val(TextBox12.Text) + _ Val(TextBox13.Text) 45) Then Label2.Text = "Ìîæíà âèêîðèñòîâóâàòè ëèøå ÷èñëà â³ä 1 äî 9, êîæíå – îäèí ðàç." Else Label2.Text = "Ñïðîáóéòå çíîâó." End If End Sub

Çàâäàííÿ 9. Îðåë ÷è ðåøêà Êîìï’þòåð ³ì³òóº ï³äêèäàííÿ ìîíåòè. Ôîðìà ìຠòàêèé âèãëÿä:

245


Ó÷í³ íàïèøóòü òàêèé êîä: Dim RanNum As Integer = 0 Dim Wins As Integer = 0 Dim Losses As Integer = 0

' âèïàäêîâå ÷èñëî ' ê³ëüê³ñòü âèãðàø³â ' ê³ëüê³ñòü ïðîãðàø³â

Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged ' âèá³ð ãðàâöÿ - îðåë If RadioButton1.Checked = True Then TextBox1.Text = "Îðåë" End If End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged ' âèá³ð ãðàâöÿ - ðåøêà If RadioButton2.Checked = True Then TextBox1.Text = "Ðåøêà" End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click Dim MyRandomGenerator As System.Random MyRandomGenerator = New System.Random Dim RanNum As Integer ' ãåíåðóºìî âèïàäêîâå ö³ëå ÷èñëî â³ä 0 äî 2, âèêëþ÷àþ÷è 2 RanNum = MyRandomGenerator.Next(0, 2) ' 0 – îðåë, 1 — ðåøêà If RanNum = 0 Then TextBox2.Text = "Îðåë" ElseIf RanNum = 1 Then TextBox2.Text = "Ðåøêà" End If ' çá³ã çíà÷åíü òåêñòîâèõ ïîë³â îçíà÷ຠâèãðàø If TextBox1.Text = TextBox2.Text Then Wins = Wins + 1 Else Losses = Losses + 1 End If ' ïîâ³äîìëÿºìî ïðî ê³ëüê³ñòü âèãðàø³â òà ïðîãðàø³â TextBox3.Text = Wins TextBox4.Text = Losses End Sub

246


Âïðàâà 10.1. Ðàõóºìî êðîëèê³â Íàñê³ëüêè çá³ëüøèëàñÿ á ïîïóëÿö³ÿ êðîëèê³â, ÿêáè âîíè æèëè â³÷íî? Ó÷í³ ïîâèíí³ ñòâîðèòè òàêó ôîðìó:

Ó÷í³ íàïèøóòü òàêèé êîä: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click Dim Gens As Integer = 0 ' ê³ëüê³ñòü ïîêîë³íü êðîëèê³â Dim Rabbits As Double = 0 ' ê³ëüê³ñòü êðîëèê³â Dim SqFt As Int64 = 0 ' ïëîùà òåðèòî𳿠ó êâàäðàòíèõ ôóòàõ Dim RabbitsPerFoot As Single ' êðîëèê³â íà êâàäðàòíèé ôóò Dim k As Integer = 0 ' ë³÷èëüíèê öèêëó Dim EndLoop As Integer ' ê³ëüê³ñòü ³òåðàö³é öèêëó ' ïëîùà òåðèòî𳿠äîð³âíþº îäí³é êâàäðàòí³é ìèë³ ' îá÷èñëþºìî, ñê³ëüêè êâàäðàòíèõ ôóò³â º ó 1 êâàäòàðí³é ìèë³ SqFt = 5280 * 5280 EndLoop = Val(TextBox1.Text) ' äîäàºìî çàãîëîâêè äî òåêñòîâèõ ïîë³â TextBox2.Text = "Ïîêîë³ííÿ" & vbTab & "Êðîëèê³â" & vbTab & _ "Íà êâàäðàòíèé ôóò" & vbNewLine & vbNewLine ' ïî÷èíàºìî ç äâîõ êðîëèê³â Rabbits = 2 For k = 1 To EndLoop ' äîäàºìî ÷èñåëüí³ñòü íîâîãî ïîêîë³ííÿ Rabbits = Rabbits + (Rabbits * 2) RabbitsPerFoot = Rabbits / SqFt TextBox2.Text = TextBox2.Text & k & vbTab & Format(Rabbits, _ "###,###,###,###,###,###,##0") & vbTab & Format(RabbitsPerFoot, _ "###,##0.0000") & vbNewLine Next End Sub

247


Âïðàâà 10.2. Ïðîñò³ ÷èñëà Øóêàºìî âñ³ ïðîñò³ ÷èñëà â ä³àïàçîí³ â³ä 2 äî 5000. Ôîðìà ìຠòàêèé âèãëÿä:

Ó÷í³ íàïèøóòü òàêèé êîä: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click Dim PNum As Integer ' ïðîñòå ÷èñëî Dim DivNum As Integer ' ä³ëüíèê Dim Remainder As Single ' çàëèøîê â³ä ä³ëåííÿ Dim PrimeFlag As String = "Y" ' Y - äîêè ÷èñëî íå º ïðîñòèì ' ë³÷èëüíèê çîâí³øíüîãî öèêëó - öå ÷èñëî, ùî ïåðåâ³ðÿºòüñÿ íà ' ïðîñòîòó For PNum = 2 To 5000 ' ïðèïóñêàºìî, ùî ÷èñëî ïðîñòå, ' äîêè íå áóäå äîâåäåíî ïðîòèëåæíå PrimeFlag = "Y" ' ë³÷èëüíèê âíóòð³øíüîãî öèêëó - öå ïîòåíö³éí³ ä³ëüíèêè ÷èñëà ' ïîòåíö³éíå ïðîñòå ÷èñëî ñàìî íà ñåáå íå ä³ëèìî For DivNum = 2 To PNum – 1 Remainder = PNum Mod DivNum ' ÿêùî çàëèøîê äîð³âíþº íóëþ, ÷èñëî ä³ëèòüñÿ áåç çàëèøêó If Remainder = 0 Then PrimeFlag = "N" End If Next ' äîäàºìî ïðîñòå ÷èñëî äî ñïèñêó If PrimeFlag = "Y" Then TextBox1.Text = TextBox1.Text & PNum & " End If Next End Sub

248

"


Çàâäàííÿ 10. ÎÏÐ Ðîòà Íàïèø³òü ïðîãðàìó äëÿ îá÷èñëåííÿ ÎÏÐ (îñîáèñòîãî ïåíñ³éíîãî ðàõóíêó) Ðîòà. Ôîðìà ìຠòàêèé âèãëÿä:

Ó÷í³ íàïèøóòü òàêèé êîä: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click ' âèçíà÷àºìî òà ³í³ö³àë³çóºìî âñ³ çì³íí³ Dim k As Integer = 0 ' ë³÷èëüíèê öèêë³â Dim LoopStart As Integer = 0 Dim LoopStop As Integer = 0 Dim TotalDeposits As Single = 0 ' çàãàëüíà ñóìà âñ³õ âíåñê³â áåç ' íàðàõóâàíü Dim AnnualDeposit As Single = 0 ' ñóìà, ùî âíîñèòüñÿ ïðîòÿãîì îäíîãî ' ðîêó Dim InterestRate As Single = 0 ' â³äñîòîê Dim IRAAccount As Single = 0 ' çàãàëüíà ñóìà ³ç âíåñêàìè òà ' â³äñîòêàìè âêëþ÷íî Dim Profit As Single = 0 ' çàãàëüíà ñóìà ì³íóñ âíåñêè ' ñòâîðèìî â òåêñòîâîìó ïîë³ çàãîëîâêè ñòîâïö³â TextBox5.Text = "³ê" & " " & "Âíåñêè" & " " & " " & _ "Áàëàíñ ÎÏÐ" & " " & " " & "Ïðèáóòîê" & vbNewLine & vbNewLine ' íàäàºìî çì³ííèì âõ³äí³ çíà÷åííÿ LoopStart = Val(TextBox1.Text) LoopStop = Val(TextBox2.Text) AnnualDeposit = Val(TextBox3.Text) ' ïîäàºìî â³äñîòêîâó ñòàâêó ó äåñÿòêîâ³é ôîðì³ InterestRate = Val(TextBox4.Text) / 100 ' âèêîíóºìî öèêë, ïî÷èíàþ÷è ç â³êó, êîëè ïî÷èíàºòüñÿ çàîùàäæåííÿ, ' äî â³êó, êîëè çàîùàäæåííÿ ïðèïèíÿºòüñÿ For k = LoopStart To LoopStop ' äîäàºìî ð³÷íèé âíåñîê äî çàãàëüíî¿ ñóìè âíåñê³â

249


TotalDeposits = TotalDeposits + AnnualDeposit ' äîäàºìî ð³÷íèé âíåñîê äî ñóìè âíåñê³â IRAAccount = IRAAccount + AnnualDeposit ' äîäàºìî â³äñîòîê äî çàãàëüíî¿ ñóìè IRAAccount = IRAAccount * (1 + InterestRate) ' îá÷èñëþºìî ïðèáóòîê ÿê ð³çíèöþ çàãàëüíî¿ ñóìè òà ñóìè âíåñê³â Profit = IRAAccount – TotalDeposits TextBox5.Text = TextBox5.Text & k & " " & _ FormatCurrency(TotalDeposits) & " " & " " & _ FormatCurrency(IRAAccount) & " " & " " & _ FormatCurrency(Profit) & vbNewLine Next End Sub

Âïðàâà 11.1. ̳øåíü Ñïðîáóéòå âëó÷èòè ó ì³øåíü. Ó÷í³ ïîâèíí³ ñòâîðèòè òàêó ôîðìó:

Ó÷í³ íàïèøóòü òàêèé êîä: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click ' çì³ííà äëÿ çáåð³ãàííÿ åêçåìïëÿð³â ñòâîðåíèõ çîáðàæåíü Dim g As Graphics = PictureBox1.CreateGraphics Dim X As Integer = 0 ' êîîðäèíàòà X òî÷êè âëó÷åííÿ Dim Y As Integer = 0 ' êîîðäèíàòà Y òî÷êè âëó÷åííÿ Dim Count As Integer ' ê³ëüê³ñòü ñïðîá ' êîë³ð ïåíçëÿ, ùî âèêîðèñòîâóºòüñÿ äëÿ ìàëþâàííÿ òî÷îê âëó÷åííÿ Dim MyPen As New Pen(Color.Black) Dim RanNum As Integer ' âèïàäêîâå ÷èñëî

250


' åêçåìïëÿð ãåíåðàòîðà âèïàäêîâèõ ÷èñåë Dim MyRandomGenerator As System.Random ' ³í³ö³àë³çàö³ÿ ãåíåðàòîðà âèïàäêîâèõ ÷èñåë MyRandomGenerator = New System.Random Count = 0 ' ïðîäîâæóºìî âèêîíóâàòè öèêë, äîêè êîîðäèíàòè ïîñòð³ë³â ' íå äîð³âíþâàòèìóòü êîîðäèíàòàì öåíòðàëüíî¿ òî÷êè ì³øåí³ (100,100). Do Until X = 100 And Y = 100 Count = Count + 1 ' ãåíåðóâàòè êîîðäèíàòó X òî÷êè âëó÷åííÿ X = MyRandomGenerator.Next(0, 200) ' ãåíåðóâàòè êîîðäèíàòó Y òî÷êè âëó÷åííÿ Y = MyRandomGenerator.Next(0, 200) ' êîëî ðàä³óñîì 1 ï³êñåë ç öåòðîì â òî÷ö³ (X, Y) g.DrawEllipse(MyPen, New Rectangle(X, Y, 1, 1)) Loop TextBox1.Text = Count End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button2.Click ' ãîòóºìî ïîëå äëÿ íîâî¿ ãðè ' çì³ííà äëÿ çáåð³ãàííÿ åêçåìïëÿð³â ñòâîðåíèõ çîáðàæåíü Dim g As Graphics = PictureBox1.CreateGraphics Dim MyPen As New Pen(Color.Red) ' ÷åðâîíèé ïåíçåëü Dim X As Integer ' êîîðäèíàòà X Dim Y As Integer ' êîîðäèíàòà Y MyPen.Width = 1 ' øèðèíà ïåíçëÿ - 1 ï³êñåë MyPen.Color = Color.White ' ïîëå ãðè çàôàðáîâóºìî á³ëèì ' çàôàðáîâóºìî êîæíó òî÷êó ïîëÿ For X = 0 To 200 For Y = 0 To 200 g.DrawEllipse(MyPen, New Rectangle(X, Y, 1, 1)) Next Next MyPen.Width = 4 ' ðîáèìî ïåíçåëü øèðøèì MyPen.Color = Color.Red ' áåðåìî ÷åðâîíó ôàðáó ' ìàëþºìî 4 êîíöåíòðè÷íèõ ÷åðâîíèõ êîëà ì³øåí³ g.DrawEllipse(MyPen, New Rectangle(90, 90, 20, 20)) g.DrawEllipse(MyPen, New Rectangle(80, 80, 40, 40)) g.DrawEllipse(MyPen, New Rectangle(70, 70, 60, 60)) g.DrawEllipse(MyPen, New Rectangle(60, 60, 80, 80)) MyPen.Width = 1 ' áåðåìî ÷îðíó ôàðáó ' ìàëþºìî ìàëåíüêå ÷åðâîíå êîëî ó öåíòð³ ì³øåí³ g.DrawEllipse(MyPen, New Rectangle(100, 100, 1, 1)) TextBox1.Text = "" End Sub

251


Âïðàâà 11.2. Ïîñï³ëü Ðàõóºìî ê³ëüê³ñòü ï³äêèäàíü ìîíåòè, ÿêà â îá÷èñëþâàëüíîìó åêñïåðèìåíò³ çíàäîáèëàñÿ äëÿ òîãî, ùîá îòðèìàòè ïåâíó ê³ëüê³ñòü îðë³â ïîñï³ëü. Ôîðìà ìàòèìå òàêèé âèãëÿä:

Ó÷í³ íàïèøóòü òàêèé êîä: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click Dim InaRow As Integer = 0 ' ê³ëüê³ñòü îðë³â ïîñï³ëü Dim Count As Integer = 0 ' ñïðîáè Dim RanNum As Integer = 0 ' âèïàäêîâå ÷èñëî ' åêçåìïëÿð ãåíåðàòîðà âèïàäêîâèõ ÷èñåë Dim MyRandomGenerator As System.Random ' ³í³ö³àë³çàö³ÿ ãåíåðàòîðà âèïàäêîâèõ ÷èñåë MyRandomGenerator = New System.Random Count = 0 InaRow = 0 TextBox2.Text = "" ' âèêîíóºìî öèêë, äîêè ê³ëüê³ñòü îäíàêîâèõ ðåçóëüòàò³â ïîñï³ëü ' íå äîð³âíþâàòèìå ïîòð³áíîìó ÷èñëó Do Until InaRow = Val(TextBox1.Text) ' ãåíåðóºìî âèïàäêîâå ÷èñëî â³ä 0 äî 2, âèêëþ÷àþ÷è 2 RanNum = MyRandomGenerator.Next(0, 2) ' çá³ëüøóºìî ê³ëüê³ñòü ñïðîá Count = Count + 1 ' âèïàäêîâå ÷èñëî 1 â³äïîâ³äຠîðëó If RanNum = 1 Then InaRow = InaRow + 1 Else ' ÿêùî íå îðåë - ïî÷èíàºìî çíîâó InaRow = 0 End If ' ùîá ïîïåðåäèòè âèõ³ä ïðîãðàìè ç-ï³ä êîíòðîëþ, ' çóïèíÿºìîñÿ ï³ñëÿ ï³âì³ëüéîíà ñïðîá

252


If Count > 500000 Then MessageBox.Show("Ïðîãðàìà íå ìîäåëþº á³ëüøå 500 000 ï³äêèäàíü.") Exit Sub End If Loop ' ïîâ³äîìëÿºìî, ñê³ëüêè ñïðîá çíàäîáèëîñÿ TextBox2.Text = Count End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button2.Click End End Sub

Çàâäàííÿ 11. Îá÷èñëåííÿ ñåðåäíüîãî áàëà Îá÷èñë³òü ñåðåäí³é áàë çà ê³ëüêîìà ââåäåíèìè îö³íêàìè. Ôîðìà ìຠòàêèé âèãëÿä:

Ó÷í³ íàïèøóòü òàêèé êîä: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click Dim GradeIn As String = "ͳ÷îãî íå ââåäåíî" Dim GradePoints As Integer = 0 ' ï³äñóìóâàòè áàëè çà îö³íêè (A = 4) Dim Grades As Integer = 0 ' ê³ëüê³ñòü îö³íîê Dim GPA As Single = 0 ' ñåðåäí³é áàë ' âèêîíóºìî öèêë, äîêè íå áóäå ââåäåíî õî÷à á îäí³º¿ îö³íêè Do Until GradeIn = "" ' îòðèìóºìî îäíó îö³íêó ç åëåìåíòà óïðàâë³ííÿ InputBox GradeIn = InputBox("Ââîäèìî A, B, C, D àáî F", "Ââîäèìî îö³íêó", _ "") ' ÿêùî îö³íêè íåìàº, âèõîäèìî ç öèêëó If GradeIn = "" Then

253


Exit Do End If ' äîäàºìî îö³íêó äî ñïèñêó TextBox4.Text = TextBox4.Text & GradeIn & " " ' ïåðåâ³ðÿºìî, ÿêó îö³íêó ââåäåíî ' ïðèïóñò³ìî, ùî âîíè ìîæóòü ââîäèòèñÿ âåëèêèìè àáî ìàëåíüêèìè ' ë³òåðàìè ' äîäàºìî â³äïîâ³äíó ê³ëüê³ñòü áàë³â äî çàãàëüíî¿ ñóìè ' äîäàºìî 1 äî ê³ëüêîñò³ îö³íîê If GradeIn = "A" Or GradeIn = "a" Then GradePoints = GradePoints + 4 Grades = Grades + 1 End If If GradeIn = "B" Or GradeIn = "b" Then GradePoints = GradePoints + 3 Grades = Grades + 1 End If If GradeIn = "C" Or GradeIn = "c" Then GradePoints = GradePoints + 2 Grades = Grades + 1 End If If GradeIn = "D" Or GradeIn = "d" Then GradePoints = GradePoints + 1 Grades = Grades + 1 End If If GradeIn = "F" Or GradeIn = "f" Then Grades = Grades + 1 End If Loop ' ÷è áóëî ââåäåíî ÿê³ñü îö³íêè? ' ÿêùî òàê, îá÷èñëþºìî ê³ëüê³ñòü áàë³â If Grades = 0 Then MessageBox.Show("Ââåä³òü ïðèíàéìí³ îäíó îö³íêó.") Else TextBox1.Text = GradePoints TextBox2.Text = Grades TextBox3.Text = GradePoints / Grades End If End Sub

254


Âïðàâà 12.1. Ïåðåòâîðåííÿ îäèíèöü âèì³ðþâàííÿ Ïåðåòâîð³òü äåÿê³ âåëè÷èíè ç àìåðèêàíñüêèõ îäèíèöü âèì³ðþâàííÿ íà êàíàäñüê³ òà íàâïàêè. Ó÷í³ ïîâèíí³ íàìàëþâàòè òàêó ôîðìó:

Ó÷í³ íàïèøóòü òàêèé êîä: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click ' âèêëèêàºìî â³äïîâ³äíó ôóíêö³þ, ùîá ïåðåòâîðèòè àìåðèêàíñüê³ îäèíèö³ ' íà êàíàäñüê³ TextBox4.Text = MilesToKilometers(Val(TextBox1.Text)) TextBox5.Text = GallonsToLiters(Val(TextBox2.Text)) TextBox6.Text = DollarsToCanadianDollars(Val(TextBox3.Text)) End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button2.Click ' âèêëèêàºìî â³äïîâ³äíó ôóíêö³þ, ùîá ïåðåòâîðèòè êàíàäñüê³ îäèíèö³ íà ' àìåðèêàíñüê³ TextBox1.Text = KilometersToMiles(Val(TextBox4.Text)) TextBox2.Text = LitersToGallons(Val(TextBox5.Text)) TextBox3.Text = CanadianDollarsToDollars(Val(TextBox6.Text)) End Sub Private Function MilesToKilometers(ByVal Miles As Single) ' ïåðåòâîðþºìî ìèë³ íà ê³ëîìåòðè ³ ïîâåðòàºìî ðåçóëüòàò Dim Kilos As Single Kilos = Miles / 0.621 Return Kilos End Function Private Function GallonsToLiters(ByVal Gallons As Single) ' ïåðåòâîðþºìî ãàëîíè íà ë³òðè ³ ïîâåðòàºìî ðåçóëüòàò Dim Liters As Single Liters = Gallons * 3.79 Return Liters End Function Private Function DollarsToCanadianDollars(ByVal Dollars As Single) ' ïåðåòâîðþºìî àìåðèêàíñüê³ äîëàðè íà êàíàäñüê³ é ïîâåðòàºìî ' ðåçóëüòàò

255


Dim CanadianDollars As Single CanadianDollars = Dollars * 1.27 Return CanadianDollars End Function Private Function KilometersToMiles(ByVal Kilometers As Single) ' ïåðåòâîðþºìî ê³ëîìåòðè íà ìèë³ é ïîâåðòàºìî ðåçóëüòàò Dim Miles As Single Miles = Kilometers * 0.621 Return Miles End Function Private Function LitersToGallons(ByVal Liters As Single) ' ïåðåòâîðþºìî ë³òðè íà ãàëîíè é ïîâåðòàºìî ðåçóëüòàò Dim Gallons As Single Gallons = Liters / 3.79 Return Gallons End Function Private Function CanadianDollarsToDollars(ByVal CanadianDollars As _ Single) ' ïåðåòâîðþºìî êàíàäñüê³ äîëàðè íà àìåðèêàíñüê³ é ïîâåðòàºìî ' ðåçóëüòàò Dim Dollars As Single Dollars = CanadianDollars / 1.27 Return Dollars End Function

Âïðàâà 12.2. Âîðîæêà Çàëåæíî â³ä ê³ëüêîñò³ ãîëîñíèõ ó ïèòàíí³, âèâîäèìî òó ÷è ³íøó â³äïîâ³äü. Ôîðìà ìຠòàêèé âèãëÿä:

256


Ó÷í³ íàïèøóòü òàêèé êîä: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load ' ïðè çàâàíòàæåíí³ ôîðìè âñòàíîâëþºìî ³íòåðâàë òàéìåðà 2/3 ' ñåêóíäè, ïîò³ì çàïóñêàºìî òàéìåð Timer1.Interval = 667 Timer1.Start() End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Timer1.Tick ' çì³íþºìî ïàðàìåòð Visible íàïèñó ç³ ' çíàêîì ïèòàííÿ òàê, ùîá â³í áëèìàâ If Label1.Visible = True Then Label1.Visible = False Else Label1.Visible = True End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click Dim TheQuestion As String = "" ' çáåð³ãຠçàäàíå ïèòàííÿ Dim k As Integer = 0 ' ë³÷èëüíèê öèêë³â Dim Count As Integer = 0 ' ê³ëüê³ñòü ãîëîñíèõ ' ïåðåòâîðþºìî óñ³ ñèìâîëè ïèòàííÿ íà ñèìâîëè ' âåðõíüîãî ðåã³ñòðà, ùîá ñïðîñòèòè ï³äðàõóíîê ' âèäàëÿºìî ïðîá³ëè íà ïî÷àòêó òà íàïðèê³íö³ òåêñòó TheQuestion = TextBox1.Text TheQuestion = TheQuestion.ToUpper TheQuestion = TheQuestion.Trim ' âèêîíóºìî öèêë, äîêè íå áóäå ïåðåâ³ðåíî óñ³ ë³òåðè ' çàóâàæòå, ùî ïåðøà ë³òåðà çàéìຠíóëüîâó ïîçèö³þ ' òîæ öèêë â³äáóâàºòüñÿ â³ä 0 äî ê³ëüêîñò³ ë³òåð ì³íóñ 1 For k = 0 To TheQuestion.Length – 1 If (TheQuestion.Substring(k, 1) = "A" _ Or TheQuestion.Substring(k, 1) = "E" _ Or TheQuestion.Substring(k, 1) = "I" _ Or TheQuestion.Substring(k, 1) = "O" _ Or TheQuestion.Substring(k, 1) = "U") Then Count = Count + 1 End If Next ' ïèòàííÿ ó÷í³â ð³çíèòèìóòüñÿ ê³ëüê³ñòþ ë³òåð If TheQuestion.Length = 0 Then TextBox2.Text = "ßêå âàøå ïèòàííÿ?" ElseIf Count < 4 Then TextBox2.Text = "Íà æàëü, â³äïîâ³äü - Ͳ"

257


ElseIf Count >= 4 And Count < 8 Then TextBox2.Text = "Íå ñõîæå, ùî öå ñòàíåòüñÿ" ElseIf Count >= 8 And Count < 11 Then TextBox2.Text = "Òàê, öå ñòàíåòüñÿ" ElseIf Count >= 12 And Count < 15 Then TextBox2.Text = "Íà æàëü, â³äïîâ³äü - Ͳ " ElseIf Count >= 16 And Count < 19 Then TextBox2.Text = "Ö³ëêîì éìîâ³ðíî, ùî öå ñòàíåòüñÿ" ElseIf Count > 20 Then TextBox2.Text = "Âàøå ïèòàííÿ íàäòî äîâãå" End If ' ïîêàçóºìî ê³ëüê³ñòü ãîëîñíèõ òàê, í³áè öå íîìåð â³äïîâ³ä³ ' íàñïðàâä³ öå äîïîìàãຠíàëàãîäæåííþ TextBox3.Text = Count End Sub

Çàâäàííÿ 12. ʳò òà ìèøà ʳò æåíåòüñÿ çà ìèøåþ, äîêè íå âï³éìຠ¿¿ àáî âîíà íå âòå÷å. Ôîðìà ìຠòàêèé âèãëÿä:

Ó÷í³ íàïèøóòü òàêèé êîä: ' îãîëîøóºìî çì³íí³, äî ÿêèõ Dim X As Integer = 0 Dim Y As Integer = 0 Dim MouseXChg As Integer Dim MouseYChg As Integer Dim CatXChg As Integer = Dim CatYChg As Integer =

ìàòèìóòü äîñòóï óñ³ ï³äïðîãðàìè ' êîîðäèíàòà X ' êîîðäèíàòè Y = 0 ' âèñîòà êðîêó ìèø³ = 0 ' øèðèíà êðîêó ìèø³ 0 ' âèñîòà êðîêó êîòà 0 ' øèðèíà êðîêó êîòà

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load

258


' ê³ò òà ìèøà ïåðåì³ùóþòüñÿ çà ñèãíàëàìè òàéìåðà ' çàäàºìî ïî÷àòêîâèé ³íòåðâàë òàéìåðà - 25 / 1000 ñåêóíäè Timer1.Interval = 25 End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click ' ðîçïî÷èíàºìî íîâó ãðó ' åêçåìïëÿð ãåíåðàòîðà âèïàäêîâèõ ÷èñåë Dim MyRandomGenerator As System.Random ' ³í³ö³àë³çàö³ÿ ãåíåðàòîðà âèïàäêîâèõ ÷èñåë MyRandomGenerator = New System.Random ' ãåíåðóºìî âèïàäêîâå ÷èñëî â ä³àïàçîí³ â³ä 50 äî 500 ' äëÿ ïî÷àòêîâîãî ðîçòàøóâàííÿ êîòà ó ãîðèçîíòàëüíîìó âèì³ð³ X = MyRandomGenerator.Next(50, 500) ' ãåíåðóºìî âèïàäêîâå ÷èñëî â ä³àïàçîí³ â³ä 50 äî 500 ' äëÿ ïî÷àòêîâîãî ðîçòàøóâàííÿ êîòà ó âåðòèêàëüíîìó âèì³ð³ Y = MyRandomGenerator.Next(50, 250) ' ðîçì³ùóºìî çîáðàæåííÿ êîòà ó ôîðì³ Cat.Location = New Point(X, Y) ' âèçíà÷àºìî ïðèðîñòè êîîðäèíàò äëÿ ðóõó êîòà CatXChg = NewChg() CatYChg = NewChg() ' ãåíåðóºìî âèïàäêîâå ÷èñëî â ä³àïàçîí³ â³ä 50 äî 500 ' äëÿ ïî÷àòêîâîãî ðîçòàøóâàííÿ ìèø³ ó ãîðèçîíòàëüíîìó âèì³ð³ X = MyRandomGenerator.Next(50, 500) ' ãåíåðóºìî âèïàäêîâå ÷èñëî â ä³àïàçîí³ â³ä 50 äî 500 ' äëÿ ïî÷àòêîâîãî ðîçòàøóâàííÿ ìèø³ ó âåðòèêàëüíîìó âèì³ð³ Y = MyRandomGenerator.Next(50, 250) Mouse.Location = New Point(X, Y) ' âèçíà÷àºìî ïðèðîñòè êîîðäèíàò äëÿ ðóõó ìèø³ MouseXChg = NewChg() MouseYChg = NewChg() ' î÷èùóºìî íàïèñ Label1.Text = "" ' çàïóñêàºìî òàéìåð Timer1.Start() End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Timer1.Tick ' êîëè â³äáóâàºòüñÿ ïîä³ÿ òàéìåðà, ïåðåì³ùóºìî çâ³ð³â Dim MyRandomGenerator As System.Random MyRandomGenerator = New System.Random Dim Distance As Integer = 0 ' çì³íþºìî ðîçòàøóâàííÿ êîòà X = Cat.Location.X + CatXChg Y = Cat.Location.Y + CatYChg Cat.Location = New Point(X, Y) ' çì³íþºìî ðîçòàøóâàííÿ ìèø³

259


X = Mouse.Location.X + MouseXChg Y = Mouse.Location.Y + MouseYChg Mouse.Location = New Point(X, Y) ' ïåðåâ³ðÿºìî, ÷è íå âòåêëà ìèøà äî íîðè # 1 (ë³âà íîðà) ' ôóíêö³ÿ HowFar, ÿêó ïîâèíí³ íàïèñàòè ó÷í³, ' çàáåçïå÷óº îá÷èñëåííÿ â³äñòàí³ ì³æ äâîìà òî÷êàìè Distance = HowFar(50, 150, Mouse.Location.X, Mouse.Location.Y) If Distance < 20 Then Timer1.Stop() Label1.Text = "Ìèøà âòåêëà!" End If ' ïåðåâ³ðÿºìî, ÷è íå âòåêëà ìèøà äî íîðè # 2 (ïðàâà íîðà) Distance = HowFar(530, 150, Mouse.Location.X, Mouse.Location.Y) If Distance < 20 Then Timer1.Stop() Label1.Text = "Ìèøà âòåêëà!" End If ' ÷è ìèøà íå çàáëèçüêî â³ä êîòà? Çì³íþºìî íàïðÿìîê ðóõó ìèø³ Distance = HowFar(Cat.Location.X, Cat.Location.Y, Mouse.Location.X, _ Mouse.Location.Y) If Distance < 40 Then MouseXChg = 0 – MouseXChg MouseYChg = 0 – MouseYChg End If ' ïåðåâ³ðÿºìî, ÷è ê³ò íå óï³éìàâ ìèøó Distance = HowFar(Cat.Location.X, Cat.Location.Y, Mouse.Location.X, _ Mouse.Location.Y) If Distance < 20 Then Timer1.Stop() Label1.Text = "Ìèøà âï³éìàíà!" End If ' ïåðåâ³ðÿºìî áëèçüê³ñòü êîòà äî ë³âî¿ ìåæ³ Distance = HowFar(0, Cat.Location.Y, Cat.Location.X, Cat.Location.Y) If Distance < 20 Then CatXChg = 0 – CatXChg CatYChg = NewChg() End If ' ïåðåâ³ðÿºìî áëèçüê³ñòü êîòà äî ïðàâî¿ ìåæ³ Distance = HowFar(600, Cat.Location.Y, Cat.Location.X, _ Ñat.Location.Y) If Distance < 20 Then CatXChg = 0 – CatXChg CatYChg = NewChg() End If

260


' ïåðåâ³ðÿºìî áëèçüê³ñòü êîòà äî âåðõíüî¿ ìåæ³ Distance = HowFar(Cat.Location.X, 0, Cat.Location.X, Cat.Location.Y) If Distance < 20 Then CatYChg = 0 – CatYChg CatXChg = NewChg() End If ' ïåðåâ³ðÿºìî áëèçüê³ñòü êîòà äî íèæíüî¿ ìåæ³ Distance = HowFar(Cat.Location.X, 300, Cat.Location.X, _ Cat.Location.Y) If Distance < 20 Then CatYChg = 0 – CatYChg CatXChg = NewChg() End If ' ïåðåâ³ðÿºìî áëèçüê³ñòü ìèø³ äî ë³âî¿ ìåæ³ Distance = HowFar(0, Mouse.Location.Y, Mouse.Location.X, _ Mouse.Location.Y) If Distance < 20 Then MouseXChg = 0 – MouseXChg MouseYChg = NewChg() End If ' ïåðåâ³ðÿºìî áëèçüê³ñòü ìèø³ äî ïðàâî¿ ìåæ³ Distance = HowFar(600, Mouse.Location.Y, Mouse.Location.X, _ Mouse.Location.Y) If Distance < 20 Then MouseXChg = 0 – MouseXChg MouseYChg = NewChg() End If ' ïåðåâ³ðÿºìî áëèçüê³ñòü ìèø³ äî âåðõíüî¿ ìåæ³ Distance = HowFar(Mouse.Location.X, 0, Mouse.Location.X, _ Mouse.Location.Y) If Distance < 20 Then MouseYChg = 0 – MouseYChg MouseXChg = NewChg() End If ' ïåðåâ³ðÿºìî áëèçüê³ñòü ìèø³ äî íèæíüî¿ ìåæ³ Distance = HowFar(Mouse.Location.X, 300, Mouse.Location.X, _ Mouse.Location.Y) If Distance < 20 Then MouseYChg = 0 – MouseYChg MouseXChg = NewChg() End If End Sub

261


Private Function HowFar(ByVal FirstX As Integer, ByVal FirstY As _ Integer, ByVal SecondX As Integer, ByVal SecondY As Integer) ' ôóíêö³ÿ HowFar îá÷èñëþº â³äñòàíü ì³æ äâîìà òî÷êàìè Dim DistanceBetween As Integer = 0 ' îá÷èñëþºìî â³äñòàíü, çàñòîñîâóþ÷è ôîðìóëó äîâæèíè ' ã³ïîòåíóçè ïðÿìîêóòíîãî òðèêóòíèêà DistanceBetween = Math.Sqrt(((FirstX - SecondX) ^ 2) + ((FirstY - _ SecondY) ^ 2)) Return DistanceBetween End Function Private Function NewChg() ' çãåíåðóâàâøè âèïàäêîâå ÷èñëî â³ä 0 äî 4, ' îáèðàºìî îäèí ç ÷îòèðüîõ âàð³àíò³â çì³íè ïðèðîñòó Dim Change As Integer Dim MyRandomGenerator As System.Random MyRandomGenerator = New System.Random Dim RanNum As Integer = 0 RanNum = MyRandomGenerator.Next(0, 4) If RanNum = 0 Then Change = -7 ElseIf RanNum = 1 Then Change = -4 ElseIf RanNum = 2 Then Change = 7 Else Change = 4 End If Return Change End Function

262


Äîäàòêîâ³ ïðîåêòè Äåÿê³ ó÷í³ ìîæóòü çàâåðøèòè êóðñ ðàí³øå. Äëÿ íèõ ó öüîìó ðîçä³ë³ íàâåäåíî 5 äîäàòêîâèõ ïðîåêò³â, ÿê³ ìîæóòü áóòè ðîçðîáëåí³ çà äîïîìîãîþ íàâåäåíèõ ó êóðñ³ ìåòîä³â. Íàâåäåíî äâ³ âåðñ³¿ êîæíîãî ïðîåêòó: äëÿ ó÷í³â òà äëÿ ³íñòðóêòîð³â. Çà çãîäîþ àâòîðà, ïðîåêòè çàïîçè÷åí³ ç òàêèõ äæåðåë: l

ïðîåêòè Visual Basic .NET êîìïàí³¿ Microsoft äëÿ óðîê³â, íàïèñàí³ Àëüôðåäîì Òîìïñîíîì II — ïîøèðþþòüñÿ Mainfunction.com (Microsoft Visual Basic .NET Projects for the Classroom, Written by Alfred C Thompson II, Distributed by Mainfunction.com);

l

ïðîåêòè C# êîìïàí³¿ Microsoft äëÿ óðîê³â, íàïèñàí³ Àëüôðåäîì Òîìïñîíîì II — ïîøèðþþòüñÿ Mainfunction.com (Microsoft C# Projects for the Classroom, Written by Alfred C Thompson II, Distributed by Mainfunction.com).

Ó÷íÿì, ÿê³ õî÷óòü îïðàöþâàòè ìàòåð³àë, ùî âèõîäèòü çà ìåæ³ íàâ÷àëüíî¿ ïðîãðàìè êóðñó, ðåêîìåíäóºìî âèâ÷èòè ìàñèâè òà ³íäåêñàö³þ. Âèêîíàâøè ïîøóê â ²íòåðíåò³ çà ñëîâàìè „Visual Basic Array Tutorial” àáî „Visual Basic Index Tutorial”, âè çìîæåòå îòðèìàòè íåîáõ³ä³í³ äëÿ öüîãî ìàòåð³àëè. Íàâ÷àëüí³ ïîñ³áíèêè ìîæóòü áóòè îð³ºíòîâàí³ íà çàñòîñóâàííÿ ìîâè Visual Basic 6, à íå Visual Basic .NET. Çàçíà÷èìî, ùî êîíöåïö³ÿ òà ñïîñîáè ðåàë³çàö³¿ ìàñèâ³â ó îáîõ ìîâàõ ìàéæå ³äåíòè÷í³.

Îá÷èñëåííÿ ðåøòè — íîòàòêè äëÿ ³íñòðóêòîðà гâåíü çíàíü: ïî÷àòêîâèé. Ïðèáëèçíèé ÷àñ âèêîíàííÿ: 90 õâèëèí. Òåìà: âèêîðèñòàííÿ îïåðàòîð³â ïðèéíÿòòÿ ð³øåííÿ òà îïåðàö³é íàä ãðîøîâèìè âåëè÷èíàìè. Íåîáõ³äí³ íàâè÷êè: ðîçóì³ííÿ ìàòåìàòè÷íèõ îïåðàö³é, çîêðåìà ä³ëåííÿ òà ï³äíåñåííÿ äî ñòåïåíÿ. Íåîáõ³äí³ ³íñòðóìåíòè: Visual Basic .NET. Ïðîïîçèö³¿ ùîäî âåäåííÿ ïðîåêòó: öÿ ïðîãðàìà ðîçðàõîâàíà íà âèêîðèñòàííÿ çì³ííèõ ö³ëî÷èñëîâîãî òèïó. Ó÷í³, ÿê³ ñïðîáóþòü âèêîðèñòàòè ó í³é çì³íí³ òèï³â single àáî double, ìàòèìóòü áàãàòî ïðîáëåì ÷åðåç ïîìèëêè, ïîâ’ÿçàí³ ç îêðóãëåííÿì. Ìîæëèâî, âàì ñë³ä ïîÿñíèòè ð³çíèöþ ì³æ öèìè äâîìà òèïàìè äàíèõ. ßêùî âè âèâ÷àëè äâ³éêîâó ñèñòåìó ÷èñëåííÿ, âè çìîæåòå ïîÿñíèòè, ùî 1/10 — öå ïåð³îäè÷íèé äð³á ó äâ³éêîâ³é ñèñòåì³ ÷èñëåííÿ, òàê ñàìî, ÿê 1/3 — öå ïåð³îäè÷íèé äð³á ó äåñÿòêîâ³é ñèñòåì³ ÷èñëåííÿ. Æîäíà ñóìà ãîò³âêîâèõ êîøò³â íå ìîæå òî÷íî äîð³âíþâàòè çíà÷åííþ íåñê³í÷åíîãî ïåð³îäè÷íîãî äðîáó, òîìó ïðè âèêîíàíí³ îïåðàö³é íàä ãðîøîâèìè âåëè÷èíàìè âèíèêàþòü ïðîáëåìè ç òî÷í³ñòþ îá÷èñëåíü. Ðåñóðñè: ï³äðó÷íèê. Êðèòå𳿠îö³íþâàííÿ: ðåøòà ìຠïðàâèëüíî âèçíà÷àòèñü äëÿ óñ³õ ìîæëèâèõ ãðîøîâèõ êîìá³íàö³é, ùî ¿õ ââîäèòü êîðèñòóâà÷, ó òîìó ÷èñë³ é äëÿ òèõ, ó ÿêèõ âèêîðèñòàí³ ìîíåòè â 1 öåíò. Íå ïîâèííî âèâîäèòèñü ïîâ³äîìëåíü, ùî ïîòð³áíî íóëü ÿêèõîñü ìîíåò àáî áàíêíîò. Ïåðåâ³ðòå ¿¿ íà ð³çíèõ çíà÷åííÿõ âõ³äíèõ äàíèõ, çîêðåìà òàêèõ, ùî ïðèïóñêàþòü ìîæëèâ³ñòü

263


âèáîðó ì³æ äâîìà ìîíåòàìè â 5 öåíò³â òà îäí³ºþ ìîíåòîþ â 10 öåíò³â àáî ³íøèìè ïîä³áíèìè êîìá³íàö³ÿìè. Ïðîãðàìà íå ïîâèííà äàâàòè çá³é, ÿêùî çàïðîïîíîâàíà ñóìà íå á³ëüøà çà ñóìó, íåîáõ³äíó äëÿ ïðèäáàííÿ ðå÷³. Âèõ³ä ç ïðîãðàìè ïîâèíåí çä³éñíþâàòèñÿ êîðåêòíî. Çàïðîïîíîâàíå ðîçâ’ÿçàííÿ: ñïî÷àòêó ñë³ä ïåðåâ³ðèòè, ÷è ââåäåíà ñóìà ãðîøåé º äîñòàòíüîþ äëÿ êóï³âë³ òîâàðó. ßêùî öå òàê, îá÷èñëþºòüñÿ ð³çíèöÿ ì³æ âàðò³ñòþ òîâàðó òà çàïðîïîíîâàíîþ ñóìîþ. Çä³éñíþºòüñÿ ïåðåâ³ðêà, ÷è íå ïåðåâèùóº öå çíà÷åííÿ íîì³íàëó íàéá³ëüøî¿ áàíêíîòè (íàéá³ëüøà áàíêíîòà, ÿêà º çàðàç â îá³ãó, — 100 äîëàð³â). ÏÐÈÌ ²ÒÊÀ Áàíêíîòè âàðò³ñòþ $500, $1000, $5 000 òà $10 000 êîëèñü âèïóñêàëèñÿ, àëå â îá³ãó çàðàç íå âèêîðèñòîâóþòüñÿ. Ïîò³ì âèçíà÷àºòüñÿ ê³ëüê³ñòü ñòîäîëàðîâèõ áàíêíîò ó ðåøò³. Öÿ ê³ëüê³ñòü äîð³âíþº ö³ë³é ÷àñòèí³ â³ä ä³ëåííÿ ñóìè ðåøòè íà 100. ßêùî ïîìíîæèòè çãàäàíó ê³ëüê³ñòü íà 100, îòðèìàºìî ÷àñòèíó ðåøòè, ÿêó áóäå âèäàíî ñòîäîëàðîâèìè áàíêíîòàìè. Òåïåð øëÿõîì â³äí³ìàííÿ öüîãî çíà÷åííÿ â³ä ïîòî÷íî¿ ñóìè ðåøòè îá÷èñëþºòüñÿ íîâà ð³çíèöÿ, ÿêó ñë³ä íàáðàòè çà äîïîìîãîþ áàíêíîò òà ìîíåò ìåíøîãî íîì³íàëó. Öåé ïðîöåñ âèêîíóºòüñÿ äëÿ áàíêòíîò òà ìîíåò êîæíîãî íîì³íàëó, äîêè ñóìó ðåøòè íå áóäå íàêîïè÷åíî.

Îá÷èñëåííÿ ðåøòè — ó÷í³âñüêèé ïðîåêò гâåíü çíàíü: ïî÷àòêîâèé. Ïðèáëèçíèé ÷àñ âèêîíàííÿ: 90 õâèëèí. Òåìà: âèêîðèñòàííÿ îïåðàòîð³â ïðèéíÿòòÿ ð³øåííÿ òà îïåðàö³é íàä ãðîøîâèìè âåëè÷èíàìè. Çàâäàííÿ: ñòâîð³òü ïðîãðàìó äëÿ îá÷èñëåííÿ ðåøòè. Ïðîãðàìà ìàòèìå äâà âèõ³äíèõ çíà÷åííÿ: ñóìó äî ñïëàòè òà ñóìó, çàïðîïîíîâàíó ïîêóïöåì; îá÷èñëþâàòèìå, ÿêó ðåøòó íåîáõ³äíî ïîâåðíóòè; òà ïîâ³äîìëÿòèìå êàñèðó, ÿê öå çðîáèòè. Ïðîãðàìà ìຠâèâîäèòè íåîáõ³äíèé íîì³íàë òà ê³ëüê³ñòü áàíêíîò ³ ìîíåò. Ïðîãðàìà íå ïîâèííà ïðîïîíóâàòè ïîâåðíóòè íóëü áàíêíîò àáî ìîíåò. ²íñòðóêö³¿ ùîäî âèêîíàííÿ ïðîåêòó: 1. Ñòâîð³òü òåêñòîâ³ ïîëÿ òà íàäïèñè äî íèõ ó ôîðì³ äëÿ ââåäåííÿ ñóìè äî ñïëàòè òà ñóìè, çàïðîïîíîâàíî¿ ïîêóïöåì. 2. Ñòâîð³òü ïîëå ç³ ñïèñêîì äëÿ âèâåäåííÿ â³äîìîñòåé ïðî ðåøòó. 3. Ñòâîð³òü êîìàíäíó êíîïêó, çà äîïîìîãîþ ÿêî¿ äî êîìï’þòåðà áóäå íàäõîäèòè êîìàíäà ïðî ïî÷àòîê îá÷èñëåííÿ ðåøòè. 4. Ñóìó ðåøòè, à òàêîæ íîì³íàë òà ê³ëüê³ñòü áàíêíîò ³ ìîíåò îá÷èñëþéòå çà äîïîìîãîþ ôóíêö³é. 5. Çàáåçïå÷òå êîðåêòíèé òà çðó÷íèé âèõ³ä ³ç ïðîãðàìè. Äîäàòêîâ³ ðåñóðñè: ï³äðó÷íèê.

264


Çàïðîïîíîâàíå ðîçâ’ÿçàííÿ: Ãîòîâà ïðîãðàìà ìîæå ìàòè ïðèáëèçíî òàêèé âèãëÿä.

Äîäàòêîâå çàâäàííÿ: ÿêùî ïîêóïåöü ñïëà÷óº íåäîñòàòíþ ñóìó, ïîâ³äîìòå éîãî ïðî òå, ÿêó ñóìó ñë³ä äîäàòè.

Ïàë³íäðîì — íîòàòêè äëÿ ³íñòðóêòîðà гâåíü çíàíü: ïîãëèáëåíèé. Ïðèáëèçíèé ÷àñ âèêîíàííÿ: 2–3 ãîäèíè. Òåìà: îïåðàö³¿ ç ðÿäêàìè. Íåîáõ³äí³ íàâè÷êè: çíàííÿ öèêë³÷íèõ îïåðàòîð³â òà âì³ííÿ îïåðóâàòè ç ðÿäêàìè. Íåîáõ³äí³ ³íñòðóìåíòè: Visual Basic .NET. Ïðîïîçèö³¿ ùîäî âåäåííÿ ïðîåêòó: ïðè ðîçâ’ÿçàíí³ äàíî¿ çàäà÷³ íàé÷àñò³øå äîøêóëÿþòü çàéâ³ ñèìâîëè, ñèìâîëè, ùî âèõîäÿòü çà ìåæ³ äîïóñòèìîãî ä³àïàçîíó òà â³äì³íí³ñòü ì³æ ìàëåíüêèìè é âåëèêèìè ë³òåðàìè. Ïåðåêîíàéòåñÿ, ùî ó÷í³ ðîçóì³þòü, ÿê³ ñèìâîëè òà õàðàêòåðèñòèêè ñèìâîë³â º ñóòòºâèìè. Ó ö³é ïðîãðàì³ ìîæíà âèêîðèñòàòè ôóíêö³þ Mid àáî ìåòîä String.SubString. Ïåðåêîíàéòåñÿ, ùî ó÷íÿì â³äîìî, ç ÿêîãî ÷èñëà ïî÷èíàºòüñÿ íóìåðàö³ÿ ñèìâîë³â ðÿäêà ó òîìó ÷è ³íøîìó ìåòîä³. Ó êîä³ ôóíêö³¿ Mid ïðèïóùåíî, ùî ïåðøèé ñèìâîë ðîçòàøîâàíèé ó ïîçèö³¿ 1, òîä³ ÿê ó ìåòîä³ SubString ââàæàºòüñÿ, ùî ïåðøèé ñèìâîë ìຠíîìåð 0. Ñïîñ³á íóìåðàö³¿ ñèìâîë³â ðÿäêà âèçíà÷ຠòàêîæ, ÿê âèêîðèñòîâóâàòè ïàðàìåòð Length â óìîâ³ çàâåðøåííÿ öèêëó. Ó ðàç³ íåîáõ³äíîñò³, ìîæíà ðîçðîáèòè âëàñí³ ôóíêö³¿. Âèêîðèñòàííÿ ôóíêö³é çíà÷íî ñïðîñòèòü öåé ïðîåêò.

265


Äëÿ ïåðåâ³ðêè ö³º¿ ïðîãðàìè ïîòð³áíî âèêîíàòè äåê³ëüêà òåñòîâèõ ïðèêëàä³â. Îáì³ðêóéòå, ÿê³ òåñòîâ³ äàí³ ãàðàíòóâàòèìóòü åôåêòèâíó ïåðåâ³ðêó ïðîãðàìè. Ðåñóðñè: ï³äðó÷íèê. Êðèòå𳿠îö³íþâàííÿ: ïåðåâ³ðòå äåê³ëüêà ðÿäê³â, ùîá ïåðåêîíàòèñÿ, ùî ïðîãðàìà ñïðàöüîâóº ïðàâèëüíî ó âñ³õ ìîæëèâèõ âèïàäêàõ. Õîðîøîþ ïåðåâ³ðêîþ º êëàñè÷íèé ïàë³íäðîì „Madam, I’m Adam”. Ó ðå÷åíí³ „Hello Madam, I'm Adam and this is my friend Bob” ì³ñòèòüñÿ äåê³ëüêà ï³äðÿäê³â äîâæèíîþ 3 ñèìâîëè, ùî º ïàë³íäðîìàìè: l

ada — ç³ ñëîâà „Madam”;

l

mim — ç³ ñë³â „Madam, I’m”;

l

ada — ç³ ñëîâà „Adam”;

l

ama — ç³ ñë³â „Adam and”;

l

isi — ç³ ñë³â „this is”;

l

sis — ç³ ñë³â „this is”;

l

bob — ç³ ñëîâà „Bob”.

Çàïðîïîíîâàíå ðîçâ’ÿçàííÿ: ïåðøèé åòàï — âèäàëåííÿ çàéâèõ ñèìâîë³â. Âèêîðèñòàéòå ìåòîä UCase, ùîá çðîáèòè ñèìâîëè ðÿäêà ó ïîë³ ââåäåííÿ òåêñòó ñèìâîëàìè âåðõíüîãî ðåã³ñòðà. Ïàðàìåòð Length âèêîðèñòîâóºòüñÿ äëÿ âèçíà÷åííÿ äîâæèíè ðÿäêà ³ çàïèñó öèêëó, ùî ïåðåâ³ðÿº êîæåí ñèìâîë. Îᒺäíàéòå âñ³ ë³òåðè â³ä A äî Z â îäíó ðÿäêîâó çì³ííó. Ó òàêèé ñïîñ³á âè ñôîðìóºòå äîïóñòèìèé ä³àïàçîí ñèìâîë³â. Ñòâîð³òü ôóíêö³þ, ùî ïîâåðòàòèìå áóëåâå çíà÷åííÿ, äëÿ âèçíà÷åííÿ, ÷è º ðÿäîê ïîë³íäðîìîì. Ïðèñâîéòå îäíîìó ë³÷èëüíèêó ïî÷àòêîâå çíà÷åííÿ 1, à äðóãîìó — çíà÷åííÿ äîâæèíè ðÿäêà. Çà äîïîìîãîþ öèõ ë³÷èëüíèê³â ïîð³âíÿéòå ïåðøèé òà îñòàíí³é ñèìâîëè. ßêùî âîíè îäíàêîâ³, çá³ëüø³òü çíà÷åííÿ ïåðøîãî ë³÷èëüíèêà òà çìåíø³òü çíà÷åííÿ äðóãîãî. Ðÿäîê íå º ïàë³íäðîìîì, ÿêùî ñèìâîëè ð³çí³. Ïðîäîâæóéòå ïîð³âíþâàòè ñèìâîëè, äîêè íå äîñÿãíåòå ñåðåäèíè ðÿäêà àáî íå çíàéäåòå íåâ³äïîâ³äíîñò³. ßêùî âè äîñÿãëè ñåðåäèíè ðÿäêà ³ íå çíàéøëè íåâ³äïîâ³äíîñò³, ôóíêö³ÿ ìຠïîâåðíóòè çíà÷åííÿ True. ßêùî çíàéäåíî íåâ³äïîâ³äí³ñòü, ôóíêö³ÿ ïîâèííà ïîâåðíóòè False. ßêùî íå áóëî ââåäåíî äîâæèíè ï³äðÿäêà, ïåðåäàéòå ìåòîäó ïåðåâ³ðêè ïàë³íäðîìà âåñü âõ³äíèé ðÿäîê. Çàëåæíî â³ä çíà÷åííÿ, ÿêå ïîâåðíå ìåòîä, âèâåä³òü íà åêðàí òå ÷è ³íøå ïîâ³äîìëåííÿ. ßêùî ââåäåíî äîâæèíó ï³äðÿäêà, ñòâîð³òü ïðîöåäóðó, ùî âèáèðàòèìå ï³äðÿäêè òà ïåðåäàâàòèìå ¿õ ìåòîäó ïåðåâ³ðêè ïàë³íäðîìà. ʳëüê³ñòü ³òåðàö³é öèêëó âèáîðó âèçíà÷àºòüñÿ òèì ôàêòîì, ùî ïî÷àòîê ïåðøîãî ï³äðÿäêà ìຠçá³ãàòèñÿ ç ïî÷àòêîì ðÿäêà, à ê³íåöü îñòàííüîãî ï³äðÿäêà — ç ê³íöåì ðÿäêà. Äëÿ âèáîðó ï³äðÿäê³â ïîòð³áíî¿ äîâæèíè âèêîðèñòàéòå ìåòîä SubString àáî ôóíêö³þ Mid. Ïåðåäàéòå ö³ ï³äðÿäêè ìåòîäó ïåðåâ³ðêè ïàë³íäðîìà. ßêùî äëÿ ï³äðÿäêà áóäå ïîâåðíåíî çíà÷åííÿ True, âèâåä³òü ï³äðÿäîê ó ïîë³ çîáðàæåííÿ. Ó âèïàäêó ÿêùî ïàë³íäðîì³â íå áóäå çíàéäåíî, âèâåä³òü ïîâ³äîìëåííÿ ïðî ¿õ â³äñóòí³ñòü.

266


Ïàë³íäðîì — Ó÷í³âñüêèé ïðîåêò гâåíü çíàíü: ïîãëèáëåíèé. Ïðèáëèçíèé ÷àñ âèêîíàííÿ: 2–3 ãîäèíè. Òåìà: îáðîáëåííÿ ðÿäê³â. Îãëÿä ïðîåêòó: ïàë³íäðîì — öå ñëîâî àáî ôðàçà, ùî ÷èòàºòüñÿ îäíàêîâî ÿê çë³âà íàïðàâî, òàê ³ ñïðàâà íàë³âî. Íàéïîøèðåí³øèìè ïðèêëàäàìè ïàë³íäðîì³â º ñëîâà „Mom”, „Dad”, „Bob” àáî íàâ³òü ðå÷åííÿ „Madam, I’m Adam.” Ïðè âèçíà÷åíí³ ïàë³íäðîì³â ìè ³ãíîðóºìî ðåã³ñòð ë³òåð, à òàêîæ ïðîá³ëè òà çíàêè ïóíêòóàö³¿, ÿêùî ôðàçà º ðå÷åííÿì. Ìåòà ïðîãðàìè — âèçíà÷èòè, ÷è º ââåäåíà êîðèñòóâà÷åì ôðàçà ïàë³íäðîìîì, à òàêîæ çíàéòè óñ³ ôðàãìåíòè ôðàçè, ùî º ïàë³íäðîìàìè çàäàíî¿ äîâæèíè. ²íñòðóêö³¿ ùîäî âèêîíàííÿ ïðîåêòó: 1. Ñòâîð³òü òåêñòîâå ïîëå, äî ÿêîãî áóäå ââîäèòèñÿ ôðàçà. 2. Ñòâîð³òü ³íøå òåêñòîâå ïîëå, äî ÿêîãî áóäå ââîäèòèñÿ äîâæèíà øóêàíîãî ïàë³íäðîìà. 3. Ñòâîð³òü ïîëå çîáðàæåííÿ äëÿ âèâåäåííÿ íà åêðàí ïàë³íäðîì³â, çíàéäåíèõ ó ââåäåíîìó ðÿäêó. 4. Çàïðîãðàìóéòå îáðîáíèê ïî䳿 êëàöàííÿ íà êîìàíäí³é êíîïö³, ÿêèé øóêàòèìå ïàë³íäðîìè. 5. ßêùî áóäóòü çíàéäåí³ ï³äðÿäêè-ïàë³íäðîìè, çàáåçïå÷òå ¿õ âèâåäåííÿ ó ïîë³ ç³ ñïèñêîì. (Ïåðåä òèì, ÿê äîäàâàòè íîâ³ ïàë³íäðîìè, òàêå ïîëå ïîòð³áíî î÷èñòèòè.) 6. ßêùî íå áóäå çíàéäåíî æîäíîãî ïàë³íäðîìà, çàáåçïå÷òå âèâåäåííÿ íà åêðàí â³äïîâ³äíîãî â³êíà ïîâ³äîìëåííÿ. 7. Ñòâîð³òü êîìàíäíó êíîïêó äëÿ çàâåðøåííÿ ðîáîòè ïðîãðàìè. Äîäàòêîâ³ ðåñóðñè: ï³äðó÷íèê. Çàïðîïîíîâàíå ðîçâ’ÿçàííÿ: Îáì³ðêóéòå ïðèíöèï ðîáîòè ìåòîäó, ÿêèé ïîâåðòàòèìå çíà÷åííÿ True, ÿêùî éîãî àðãóìåíò-ðÿäîê º ïàë³íäðîìîì. Ñïî÷àòêó ìåòîäó ïåðåäàºòüñÿ âåñü ðÿäîê, à ïîò³ì ó öèêë³ ïåðåäàºòüñÿ ê³ëüêà ï³äðÿäê³â. Ôîðìà ãîòîâî¿ ïðîãðàìè ìîæå ìàòè òàêèé âèãëÿä:

Äîäàòêîâ³ çàâäàííÿ: âèâåä³òü íà åêðàí ê³ëüê³ñòü çíàéäåíèõ ïàë³íäðîì³â.

267


ϳäðàõóíîê ë³òåð — Íîòàòêè äëÿ ³íñòðóêòîðà гâåíü çíàíü: ïîãëèáëåíèé. Ïðèáëèçíèé ÷àñ âèêîíàííÿ: 2 ãîäèíè. Òåìà: çàñòîñóâàííÿ ìàñèâ³â òà ìåòîä³â îáðîáëåííÿ ðÿäê³â. Ìàñèâè íå ðîçãëÿäàþòüñÿ â êóðñ³ „Ïðàâèëà êîäóâàííÿ Visual Basic .NET”. Ïðîãðàìó ìîæíà ñòâîðèòè áåç âèêîðèñòàííÿ ìàñèâó, àëå òîä³ âîíà áóäå ñêëàäí³øîþ. Íåîáõ³äí³ íàâè÷êè: çíàííÿ òèï³â äàíèõ. Íåîáõ³äí³ ³íñòðóìåíòè: Visual Basic. NET. Ïðîïîçèö³¿ ùîäî âåäåííÿ ïðîåêòó: ïîÿñí³òü, ùî ó êîìï’þòåð³ ñèìâîëè çîáðàæóþòüñÿ ÷èñëàìè. Îñê³ëüêè ñèìâîëè º ÷èñëàìè, ¿õ ìîæíà, ç óðàõóâàííÿì ïåâíèõ îáìåæåíü, çàñòîñîâóâàòè ó ôîðìóëàõ. Îáîâ’ÿçêîâî îáãîâîð³òü, ÿê³ ïîìèëêè ìîæóòü âèíèêíóòè âíàñë³äîê òîãî, ùî ñèìâîë ìຠïåâíå ÷èñëîâå çíà÷åííÿ. Ó á³ëüøîñò³ ñèñòåì çàñòîñîâóºòüñÿ ASCII-êîäóâàííÿ ñèìâîë³â, ïðîòå ³ñíóþòü é ³íø³ ñïîñîáè êîäóâàííÿ. Íàïðèêëàä, ó ñåðåäîâèù³ .NET Framework âèêîðèñòîâóºòüñÿ ñòàíäàðò Unicode. Òîìó çàâæäè êðàùå ïðè ïåðåòâîðåííÿõ òåêñòó êîðèñòóâàòèñÿ ñèìâîëüíèìè êîíñòàíòàìè, à íå ÷èñëîâèìè. Äîäàòêîâ³ â³äîìîñò³ ïðî ñòàíäàðò Unicode, âè çíàéäåòå íà âåá-ñàéò³ êîíñîðö³óìó Unicode (http://www.unicode.org/). Ðåñóðñè: ï³äðó÷íèê. Êðèòå𳿠îö³íþâàííÿ: ïðîãðàìà ïîâèííà ï³äðàõîâóâàòè ê³ëüê³ñòü êîæíî¿ ç ë³òåð ó òåêñòîâîìó ïîâ³äîìëåíí³. Äëÿ ïåðåâ³ðêè ïðàâèëüíîñò³ ðîáîòè ïðîãðàìè ïîòð³áíî âèêîðèñòàòè òåêñòîâèé ðÿäîê, ïðî ÿêèé â³äîìî, ñê³ëüêè ÿêèõ ë³òåð â³í ì³ñòèòü. Ïðîãðàìà íå ïîâèííà ïîâ³äîìëÿòè, ùî ÿêàñü ë³òåðà çóñòð³÷àºòüñÿ ó òåêñò³ íóëü ðàç³â. Âèõ³ä ç ïðîãðàìè ìຠçä³éñíþâàòèñÿ êîðåêòíî. Çàïðîïîíîâàíå ðîçâ’ÿçàííÿ: äëÿ çáåðåæåííÿ ê³ëüêîñò³ âõîäæåíü äî ðÿäêà êîæíî¿ ë³òåðè ìîæíà çàñòîñóâàòè ö³ëî÷èñëîâèé ìàñèâ ç 26 åëåìåíò³â. Ùîá îá÷èñëèòè ïîðÿäêîâèé íîìåð åëåìåíòà ìàñèâó, ùî â³äïîâ³äຠêîæí³é ë³òåð³, ìîæíà âèêîðèñòàòè ASCII-êîä ë³òåðè. Íàïðèêëàä: myCount(myString(i)- "A") = myCount(myString(i)- "A") + 1 Ó÷í³, ÿê³ íå âèâ÷àëè ìàñèâè, äëÿ ðîçâ’ÿçàííÿ çàäà÷³ ìàþòü âèêîðèñòàòè âêëàäåí³ öèêëè. Äëÿ â³äîáðàæåííÿ ðåçóëüòàò³â ó ïîë³ ç³ ñïèñêîì ñë³ä çàñòîñóâàòè öèêë, ùî âèâîäèòèìå çíà÷åííÿ âñ³õ íåíóëüîâèõ åëåìåíò³â ìàñèâó ðàçîì ³ç ñèìâîëüíèì çîáðàæåííÿì â³äïîâ³äíèõ ë³òåð. ²íøèé ñïîñ³á â³äîáðàæåííÿ ðåçóëüòàò³â ïîëÿãຠó ñòâîðåíí³ ìàñèâó ïîë³â, ïîçíà÷åíèõ ë³òåðàìè. Äî ïîë³â çàïèñóâàòèìóòüñÿ ê³ëüêîñò³ â³äïîâ³äíèõ ë³òåð ó ðÿäêó. Ïàðàìåòðàì Visible ïîë³â, ÿê³ â³äïîâ³äàþòü íóëüîâèì ê³ëüêîñòÿì, ñë³ä ïðèñâî¿òè False. ˳òåðè âèâîäèòèìóòüñÿ â àëôàâ³òíîìó ïîðÿäêó. Çà áàæàííÿì, ïðîãðàì³ñò ìîæå ïîì³ñòèòè ÷àñòîòè ë³òåð ó ðÿäêó, ùî äîäàºòüñÿ äî ïîëÿ ç³ ñïèñêîì, íà ïåðøîìó ì³ñö³ òà ïðèñâî¿òè ïàðàìåòðó Sorted ñïèñêó çíà÷åííÿ True. Ó òàêèé ñïîñ³á ðåçóëüòàòè áóäóòü â³äñîðòîâàí³ çà ÷àñòîòàìè ë³òåð. Ïðîòå ñë³ä ïàì’ÿòàòè, ùî, çã³äíî ç àëôàâ³òíèì ïîðÿäêîì, ÷èñëî 10 ïåðåäóº ÷èñëó 2, à òîìó äëÿ çáåðåæåííÿ ïðàâèëüíîãî ïîðÿäêó ÷èñåë, ÿê³ ñêëàäàþòüñÿ ç ê³ëüêîõ öèôð, ¿õ ðÿäêîâ³ çîáðàæåííÿ äîâåäåòüñÿ äîïîâíþâàòè íóëÿìè çë³âà. Ñëîâà ìîæíà ï³äðàõóâàòè, âèçíà÷èâøè ê³ëüê³ñòü ïðîá³ë³â. Ó ïðîãðàì³ ìຠâðàõîâóâàòèñü òîé ôàêò, ùî çà îñòàíí³ì ñëîâîì ó ïîë³ çàçâè÷àé íåìຠïðîá³ëó. Ðå÷åííÿ ìîæíà ï³äðàõóâàòè, âèçíà÷èâøè ê³ëüê³ñòü êðàïîê, à òàêîæ çíàê³â îêëèêó òà çàïèòàííÿ.

268


ϳäðàõóíîê ë³òåð —Ó÷í³âñüêèé ïðîåêò гâåíü çíàíü: ïîãëèáëåíèé Ïðèáëèçíèé ÷àñ âèêîíàííÿ: 2 ãîäèíè Òåìà: çàñòîñóâàííÿ ìàñèâ³â òà ìåòîä³â îáðîáëåííÿ ðÿäê³â; àëüòåðíàòèâíèé âàð³àíò — âèêîðèñòàííÿ âêëàäåíèõ öèêë³â. Îãëÿä ïðîåêòó: ï³äðàõóíîê ë³òåð — ö³êàâà çàäà÷à, ùî ìîæå ìàòè çàñòîñóâàííÿ ó ðåàëüíîìó æèòò³. ˳íãâ³ñòè ï³äðàõîâóþòü ë³òåðè ó õóäîæí³õ òâîðàõ, âèâ÷àþ÷è çì³íè ó ìîâ³. Øèôðóâàëüíèêè ï³äðàõîâóþòü ë³òåðè äëÿ ðîçøèôðîâêè òåêñò³â. Âèêîíóþ÷è öåé ïðîåêò, âè ï³äðàõóºòå ê³ëüê³ñòü âõîäæåíü êîæíî¿ ë³òåðè äî òåêñòîâîãî ðÿäêà, ÿêèé ââîäèòü êîðèñòóâà÷. ²íñòðóêö³¿ ùîäî âèêîíàííÿ ïðîåêòó: 1. Ñòâîð³òü íîâèé ïðîåêò. 2. Äîäàéòå äî îñíîâíî¿ ôîðìè òåêñòîâå ïîëå, äî ÿêîãî êîðèñòóâà÷³ áóäóòü ââîäèòè òåêñò. Íàäàéòå ïàðàìåòðó Multiline òåêñòîâîãî ïîëÿ çíà÷åííÿ True, ùîá òåêñò êîðèñòóâà÷à àâòîìàòè÷íî ïåðåíîñèâñÿ íà íîâèé ðÿäîê ïî çàâåðøåíí³ ïîòî÷íîãî ðÿäêà. 3. Äîäàéòå ïîëå ç³ ñïèñêîì àáî ³íøèé åëåìåíò óïðàâë³ííÿ, ÿêèé ìîæíà âèêîðèñòàòè äëÿ â³äîáðàæåííÿ ê³ëüêîñò³ ë³òåð. 4. Äîäàéòå êîìàíäíó êíîïêó àáî êîìàíäó ìåíþ äëÿ çàïóñêó ïðîöåäóðè ï³äðàõóíêó. Ó ö³é ïðîöåäóð³ ïîòð³áíî: a) íàäàòè íóë³ âñ³ì åëåìåíòàì ìàñèâó ÷àñòîò òà ë³÷èëüíèêàì, ùîá íà ðåçóëüòàò ðîáîòè ïðîãðàìè íå âïëèâàëè ïîïåðåäí³ îá÷èñëåííÿ; á) î÷èñòèòè îáëàñòü àáî îáëàñò³ â³äîáðàæåííÿ ðåçóëüòàò³â; â) ñòâîðèòè öèêë, ó ÿêîìó ïåðåãëÿäàòèìåòüñÿ êîæåí ñèìâîë; ã) ÿêùî ñèìâîë º ë³òåðîþ, çá³ëüøèòè ÷àñòîòó ö³º¿ ë³òåðè; ä) âèâåñòè ÷àñòîòó êîæíîãî ñèìâîëó (íå âêëþ÷àéòå äî ñïèñêó âèâåäåííÿ ñèìâîë³â, ÿêèõ íå ìຠó ðÿäêó). 5. Äîäàéòå êîìàíäíó êíîïêó àáî êîìàíäó ìåíþ äëÿ âèõîäó ç ïðîãðàìè. Äîäàòêîâ³ ðåñóðñè: ï³äðó÷íèê. Çàïðîïîíîâàíå ðîçâ’ÿçàííÿ: Ôîðìà ãîòîâî¿ ïðîãðàìè ìîæå ìàòè òàêèé âèãëÿä:

269


Äîäàòêîâ³ çàâäàííÿ: l

ϳäðàõóéòå ñèìâîëè, ùî íå º ë³òåðàìè.

l

ϳäðàõóéòå ñëîâà. Ñëîâà â³äîêðåìëþþòüñÿ ïðîá³ëàìè. ϳñëÿ îñòàííüîãî ñëîâà ïðîá³ëó çàçâè÷àé íåìàº.

l

ϳäðàõóéòå ðå÷åííÿ. Ïàì’ÿòàéòå, ùî ðå÷åííÿ ìîæóòü çàê³í÷óâàòèñü íå ëèøå êðàïêàìè.

l

Îá÷èñë³òü ê³ëüê³ñòü ñë³â ó êîæíîìó ðå÷åíí³.

l

Îá÷èñë³òü ñåðåäíþ ê³ëüê³ñòü ë³òåð ó ñëîâ³.

Ïåðåòâîðåííÿ ðèìñüêèõ ÷èñåë íà àðàáñüê³ òà íàâïàêè — íîòàòêè äëÿ ³íñòðóêòîðà гâåíü çíàíü: ïîãëèáëåíèé. Ïðèáëèçíèé ÷àñ âèêîíàííÿ: 3–4 ãîäèíè. Òåìà: âèêîðèñòàííÿ ñêëàäíèõ ñòðóêòóð ïðèéíÿòòÿ ð³øåíü. Íåîáõ³äí³ íàâè÷êè: ðîçóì³ííÿ ñòðóêòóð ïðèéíÿòòÿ ð³øåííÿ, çíàííÿ ôóíêö³é îáðîáêè ðÿäê³â. Íåîáõ³äí³ ³íñòðóìåíòè: Visual Basic .NET; àëãîðèòì ïåðåòâîðåííÿ ðèìñüêèõ ÷èñåë íà àðàáñüê³. Ïðîïîçèö³¿ ùîäî âåäåííÿ ïðîåêòó: öÿ çàäà÷à ÿê íà ëîã³êó, òàê ³ íà çíàííÿ ïðîãðàìóâàííÿ. ²íîä³ ó÷í³ ïðîïîíóþòü âèêîðèñòàòè îêðåìèé îïåðàòîð if äëÿ êîæíîãî ÷èñëà. Ïåðñïåêòèâà âèêîðèñòàííÿ 4999 îïåðàòîð³â íå çàâæäè ¿õ ëÿêàº. Íàãàäàâøè, ùî ïðîãðàìà ïîâèííà ïåðåòâîðþâàòè ÿê ðèìñüê³ ÷èñëà íà àðàáñüê³, òàê ³ íàâïàêè (îòæå, ìè îòðèìàºìî 9998 îïåðàòîð³â if), ìîæíà ïåðåêîíàòè ó÷í³â, ùî öå íå åôåêòèâíå ð³øåííÿ. ×èñëî 4999 áóëî îáðàíå ç ïðàêòè÷íèõ ì³ðêóâàíü. Ðèìñüê³ ÷èñëà, á³ëüø³ çà ï’ÿòü òèñÿ÷, ñêëàäàþòüñÿ ³ç ñèìâîë³â ç ë³í³ÿìè íàä íèìè. Òàê³ ñèìâîëè íå âõîäÿòü äî íàáîðó ñèìâîë³â ASCII. ×îòèðè òèñÿ÷³ äåâ’ÿòñîò äåâ’ÿíîñòî äåâ’ÿòü — äîñèòü âåëèêå ÷èñëî, òîìó çàâäàííÿ áóäå ñêëàäíèì äëÿ á³ëüøîñò³ ó÷í³â. Ó÷íÿì ñë³ä íàãàäàòè, ùî âîíè ïîâèíí³ çàáåçïå÷èòè ïåðåâ³ðêó êîðåêòíîñò³ äàíèõ. Ùî ñòàíåòüñÿ, ÿêùî ä³éñíå ÷èñëî àáî íåöèôðîâèé ñèìâîë áóäå ââåäåíî äî ïîëÿ äëÿ àðàáñüêèõ ÷èñåë? Àáî ÿêùî äî ïîëÿ äëÿ ðèìñüêèõ ÷èñåë áóäå ââåäåíî ñèìâîë, ÿêèé ó öèõ ÷èñëàõ íå âèêîðèñòîâóºòüñÿ? ßê îáðîáëÿòè ìàëåíüê³ òà âåëèê³ ë³òåðè? Ìîæåòå íàãàäàòè ó÷íÿì ïðî ôóíêö³þ UCase. Çàïðîïîíóéòå ó÷íÿì ïîì³ðêóâàòè, ÿê âîíè ïåðåòâîðþâàòèìóòü ö³ ÷èñëà âðó÷íó. Ïåðåòâîðþþ÷è àðàáñüê³ ÷èñëà íà ðèìñüê³, á³ëüø³ñòü ëþäåé êîðèñòóºòüñÿ ìåòîäîì â³äí³ìàííÿ íàéá³ëüøîãî ÷èñëà, ùî â³äïîâ³äຠðèìñüêîìó ñèìâîëó òà íå ïåðåâèùóº çàäàíîãî ÷èñëà. Öåé ñèìâîë ââàæàºòüñÿ âèçíà÷åíèì, ï³ñëÿ ÷îãî ïåðåâ³ðÿºòüñÿ çàëèøîê. Ïðîöåäóðà òðèâàº, äîêè ðèìñüêå ÷èñëî íå áóäå ïîáóäîâàíî. Ïåðåòâîðåííÿ ðèìñüêèõ ÷èñåë íà àðàáñüê³ çä³éñíèòè ëåãøå. Ïåðåãëÿíüòå ðÿäîê çë³âà íàïðàâî, ïåðåòâîðèâøè êîæåí ñèìâîë íà ÷èñëîâå çíà÷åííÿ òà äîäàâøè éîãî äî ñóìè. Ñêëàäí³ñòü âèíèêຠ³ç îáðîáêîþ ñèìâîë³â, çíà÷åííÿ ÿêèõ â³äí³ìàþòüñÿ â³ä çíà÷åííÿ ¿õ á³ëüøîãî ñóñ³äà. Ïîð³âíþéòå êîæåí ñèìâîë ³ç ñèìâîëîì ïðàâîðó÷ â³ä íüîãî, ùîá âèçíà÷èòè, â³äí³ìàòè ÷è äîäàâàòè â³äïîâ³äíå ñèìâîëó ÷èñëî.

270


Ðåñóðñè: ï³äðó÷íèê. Êðèòå𳿠îö³íþâàííÿ: ïåðåêîíàéòåñÿ, ùî ïðîãðàìà ïðàöþº ç âåëèêèì ä³àïàçîíîì ÷èñåë. ×èñëà 1994 òà 4999 º âäàëèìè äëÿ ïåðåâ³ðêè ïðîãðàìè, îñê³ëüêè âîíè ïîòðåáóþòü â³äí³ìàíü çíà÷åíü ïîïåðåäí³õ ñèìâîë³â. Ïåðåòâîð³òü ÷èñëî â ïåâíîìó íàïðÿìêó, à ðåçóëüòàò ïåðåòâîðåííÿ — ó çâîðîòíüîìó íàïðÿìêó. ×è áóäå îäåðæàíî ïî÷àòêîâå ÷èñëî? Çàïðîïîíîâàíå ð³øåííÿ: ñòâîð³òü äâà òåêñòîâèõ ïîëÿ äëÿ ââåäåííÿ ÷èñåë, ùî ïåðåòâîðþâàòèìóòüñÿ. ϳä êîæíèì ³ç íèõ ñòâîð³òü êîìàíäíó êíîïêó ³ç íàïèñîì, ùî ïîâ³äîìëÿòèìå ïðî òèï ïåðåòâîðåííÿ. Ïåðåòâîðåííÿ àðàáñüêèõ ÷èñåë íà ðèìñüê³: çà äîïîìîãîþ ôóíêö³¿ Val ïåðåòâîð³òü ÷èñëî, çàïèñàíå ó òåêñòîâîìó ïîë³, íà çíà÷åííÿ ö³ëî÷èñëîâî¿ çì³ííî¿. ßêùî ÷èñëî á³ëüøå àáî äîð³âíþº 4000, â³äí³ì³òü â³ä íüîãî 1000 òà äîäàéòå ñèìâîë M äî ðÿäêà ðèìñüêîãî ÷èñëà. Ïîâòîðþéòå öþ æ ñàìó ïðîöåäóðó, ïîêè ÷èñëî ïåðåâèùóâàòèìå 1000. Êîëè ÷èñëî ñòàíå ìåíøèì çà 1000, ïîð³âíÿéòå éîãî ç 900. ßêùî âîíî á³ëüøå çà 900, â³äí³ì³òü â³ä íüîãî 900 òà çðîá³òü îñòàíí³ìè äâîìà ë³òåðàìè ðÿäêà ë³òåðè ÑÌ. Ïðîäîâæóéòå âèêîíóâàòè àíàëîã³÷í³ îïåðàö³¿ äëÿ 500, 400, 300, 200, 100, 90, 50, 40, 30, 20, 10, 9, 5, 4, 3, 2 òà 1. Ïåðåòâîðåííÿ ðèìñüêèõ ÷èñåë íà àðàáñüê³: îãîëîñ³òü ö³ëî÷èñëîâó çì³ííó äëÿ çáåð³ãàííÿ àðàáñüêîãî ÷èñëà, à òàêîæ çì³ííó ñèìâîëüíîãî òèïó, ùî áóäå âèêîðèñòîâóâàòèñÿ äëÿ çáåð³ãàííÿ ïîïåðåäí³õ ñèìâîë³â ï³ä ÷àñ ïåðåãëÿäó ðÿäêà. Ó öèêë³ ïåðåãëÿíüòå âñ³ ñèìâîëè ââåäåíîãî äî òåêñòîâîãî ïîëÿ ðÿäêà. ßêùî ñèìâîë º ë³òåðîþ I, äîäàéòå îäèíèöþ äî ñóìè. ßêùî öå ë³òåðà V ³ ïîïåðåäí³é ñèìâîë íå áóâ ë³òåðîþ I, äîäàéòå 5. ßêùî ïîïåðåäí³é ñèìâîë áóâ ë³òåðîþ I, îäèíèöþ ñë³ä â³äí³ìàòè, à íå äîäàâàòè. Êîìïåíñóéòå ïîïåðåäíº äîäàâàííÿ îäèíèö³ øëÿõîì äîäàâàííÿ äî ñóìè 3 çàì³ñòü 5. Äîòðèìóéòåñü òàêîãî æ ïðàâèëà äëÿ ðåøòè ñèìâîë³â, âêëþ÷íî ³ç ñèìâîëîì M, ùî ïîçíà÷ຠòèñÿ÷ó. Ïàì’ÿòàéòå, ùî êîæíîìó ñèìâîëó â³äïîâ³äຠëèøå îäèí ³íøèé ñèìâîë, çíà÷åííÿ ÿêîãî ñë³ä â³äí³ìàòè, ÿêùî â³í º ïîïåðåäí³ì. Çíà÷åííÿ ñèìâîëó ² ñë³ä â³äí³ìàòè, ÿêùî â³í ïåðåäóº ñèìâîëó X (10) àáî V (5). Çíà÷åííÿ ñèìâîëó X — ÿêùî â³í ïåðåäóº L (50) àáî C (100). Çíà÷åííÿ C â³äí³ìàºòüñÿ, ÿêùî öåé ñèìâîë ïåðåäóº D (500) àáî M (1000).

Ïåðåòâîðåííÿ ðèìñüêèõ ÷èñåë íà àðàáñüê³ òà íàâïàêè — ó÷í³âñüêèé ïðîåêò гâåíü çíàíü: ïîãëèáëåíèé. Ïðèáëèçíèé ÷àñ âèêîíàííÿ: 3–4 ãîäèíè. Òåìà: âèêîðèñòàííÿ ñêëàäíèõ ñòðóêòóð ïðèéíÿòòÿ ð³øåíü. Îãëÿä ïðîåêòó: ïðîãðàìà ïåðåòâîðþâàòèìå çâè÷àéí³ (àðàáñüê³) ÷èñëà íà ðèìñüê³ òà íàâïàêè. Ïðîãðàìà ç÷èòóâàòèìå ÷èñëî àáî ðÿäîê ñèìâîë³â. Êîðèñòóâà÷ âêàçóâàòèìå, ÿêå ïåðåòâîðåííÿ ïîòð³áíî çä³éñíèòè. ×èñëî ïîâèííî áóòè âèâåäåíå íà åêðàí ó ïåðåòâîðåíîìó âèãëÿä³. Ïðîãðàìà ïîâèííà ïðàâèëüíî ïåðåòâîðþâàòè ÷èñëà äî 4999. ²íñòðóêö³¿ ùîäî âèêîíàííÿ ïðîåêòó: 1. Äîäàéòå äî ôîðìè äâà òåêñòîâèõ ïîëÿ. Âèçíà÷òå äëÿ íèõ íàïèñè. 2. Äîäàéòå äâ³ êîìàíäí³ êíîïêè. Îäíà ³í³ö³þâàòèìå ïåðåòâîðåííÿ àðàáñüêèõ ÷èñåë íà ðèìñüê³, à ³íøà — ïåðåòâîðåííÿ ðèìñüêèõ ÷èñåë íà àðàáñüê³.

271


3. Íàïèø³òü êîä äëÿ îáîõ òèï³â ïåðåòâîðåíü. 4. Çàïèø³òü ïåðåòâîðåíå ÷èñëî äî â³äïîâ³äíîãî ïîëÿ. Äîäàòêîâ³ ðåñóðñè: ï³äðó÷íèê; íèæ÷åíàâåäåíà òàáëèöÿ çíà÷åíü äåÿêèõ ðèìñüêèõ ÷èñåë. 1I

40 XL

2 II

50 L

4 IV

90 XC

5V

100 C

6 VI

500 D

9 IX

900 CM

10 X

1000 M

Çàïðîïîíîâàíå ðîçâ’ÿçàííÿ: Ôîðìà ãîòîâî¿ ïðîãðàìè ìîæå ìàòè òàêèé âèãëÿä:

Äîäàòêîâ³ çàâäàííÿ: l

Íàä ðèìñüêèìè ÷èñëàìè, ùî á³ëüø³ çà 4999, íàêðåñëþþòüñÿ ë³í³¿. Ñòâîð³òü ôàéëè çîáðàæåíü, ùî ì³ñòÿòü îêðåì³ ñèìâîëè äëÿ 5000 òà ³íøèõ âåëèêèõ ÷èñåë. Âèêîðèñòîâóéòå ö³ çîáðàæåííÿ äëÿ çàïèñó ÷èñåë, á³ëüøèõ çà 4999.

l

ßêùî êîðèñòóâà÷ ââåäå ðèìñüêå ÷èñëî ìàëåíüêèìè ë³òåðàìè, âèâåä³òü éîãî íà åêðàí ïîâòîðíî âåëèêèìè ë³òåðàìè.

Âòîðãíåííÿ ïðèáóëüö³â — íîòàòêè äëÿ ³íñòðóêòîðà гâåíü çíàíü: ïîãëèáëåíèé. Ïðèáëèçíèé ÷àñ âèêîíàííÿ: 3–5 ãîäèí. Òåìà: âèêîðèñòàííÿ òàéìåð³â, ââåäåííÿ äàíèõ ÷åðåç â³êíî ïîâ³äîìëåííÿ, ðîçóì³ííÿ òà âèêîðèñòàííÿ îáðîáíèê³â ïîä³é, ñòâîðåííÿ òà âèêîðèñòàííÿ ìàñèâ³â îᒺêò³â. Íåîáõ³äí³ íàâè÷êè: ðîçóì³ííÿ öèêë³÷íèõ êîíñòðóêö³é òà ïðèíöèï³â îáðîáëåííÿ ìàñèâ³â. Ïðîãðàìó ìîæíà íàïèñàòè áåç âèêîðèñòàííÿ ìàñèâ³â, ÿêùî ê³ëüê³ñòü êîñì³÷íèõ êîðàáë³â çðîáèòè îáìåæåíîþ. Ïðîòå òîä³ îáñÿã êîäó áóäå çíà÷íî á³ëüøèì, îñê³ëüêè ïîâåä³íêó êîæíîãî êîðàáëÿ äîâåäåòüñÿ ìîäåëþâàòè îêðåìî, çàì³ñòü òîãî, ùîá öèêë³÷íî îáðîáëÿòè ìàñèâ.

272


Íåîáõ³äí³ ³íñòðóìåíòè: Visual Basic .NET. Ïðîïîçèö³¿ ùîäî âåäåííÿ ïðîåêòó: íàéâàæëèâ³øèìè ïàðàìåòðàìè îᒺêò³â-òàéìåð³â º enabled òà interval. Êîëè ¿õ âñòàíîâëåíî, ïðîöåäóðè òàéìåð³â âèêîíóþòüñÿ ÷åðåç âêàçàí³ ³íòåðâàëè ÷àñó. ×àñ çàäàºòüñÿ ó ì³ë³ñåêóíäàõ çíà÷åííÿì òèïó double. Ìîæíà âèêîðèñòîâóâàòè äóæå âåëèê³ ïðîì³æêè ÷àñó. Ó öüîìó Visual Basic .NET â³äð³çíÿºòüñÿ â³ä Visual Basic 6.0, äå íàéäîâøèé ³íòåðâàë òàéìåðà áóâ òðîõè á³ëüøèì çà õâèëèíó. Ìîæíà ñòâîðþâàòè ÷èñëåíí³ îᒺêòè òàéìåð³â. Ó ö³é ïðîãðàì³ âèêîðèñòîâóºòüñÿ äóæå ïðîñòèé ñïîñ³á àí³ìàö³¿. Âè ïåðåì³ùóºòå ïîëå çîáðàæåííÿ, çì³íþþ÷è çíà÷åííÿ éîãî àòðèáóòó Top àáî Left. Îáãîâîð³òü â³äì³íí³ñòü ì³æ ïåðåì³ùåííÿì êîæíîãî îᒺêòà îêðåìî òà ïåðåì³ùåííÿì îᒺêò³â ó öèêë³ çà äîïîìîãîþ ìàñèâó ïîñèëàíü íà îᒺêòè. Ïîÿñí³òü òàêîæ, ÿê çà äîïîìîãîþ êëþ÷îâîãî ñëîâà Handles ïåðåäàòè äî ìåòîäó êîìá³íàö³þ äåê³ëüêîõ ïîâ’ÿçàíèõ ç îᒺêòîì ïîä³é. Êîëè öþ ïðîñòó ïðîãðàìó áóäå ñòâîðåíî, çàîõîòüòå ó÷í³â ðîçðîáèòè âëàñí³ ³ãðè íà áàç³ àíàëîã³÷íèõ êîíöåïö³é. Ðåñóðñè: ï³äðó÷íèê. Êðèòå𳿠îö³íþâàííÿ: ïîëÿ çîáðàæåíü ïîâèíí³ ïåðåñóâàòèñÿ ç³ ñòàëîþ øâèäê³ñòþ çãîðè äîíèçó. Êëàöàííÿ íà çîáðàæåíí³ ïîâèííå ïðèâîäèòè äî éîãî ðîçì³ùåííÿ íàãîð³ ôîðìè. Ó ãðàâöÿ ïîâèííà áóòè ìîæëèâ³ñòü âèáèðàòè ïðèíàéìí³ òðè ð³çí³ øâèäêîñò³. Ó ôîðì³ ïîâèííà â³äîáðàæàòèñÿ ê³ëüê³ñòü âëó÷åíü òà ïðîìàõ³â. Âèõ³ä ç ãðè ïîâèíåí çä³éñíþâàòèñü êîðåêòíî. Ïåðåä ïî÷àòêîì íîâî¿ ãðè óñ³ì ë³÷èëüíèêàì ïîâèíí³ íàäàâàòèñÿ íóë³. Íà ïî÷àòêó ãðè âñ³ ïîëÿ ìàþòü áóòè ðîçòàøîâàí³ íàãîð³ ôîðìè. Çàïðîïîíîâàíå ðîçâ’ÿçàííÿ: ñòâîð³òü ôðåéì, ó ÿêîìó ïåðåñóâàòèìóòüñÿ çîáðàæåííÿ. Õî÷à çîáðàæåííÿ ìîæíà âèâîäèòè áåçïîñåðåäíüî ó ôîðì³, âèâåäåííÿ ïîë³â çîáðàæåíü âñåðåäèí³ ïåâíîãî ôðåéìó çíà÷íî ñïðîùóº âèçíà÷åííÿ ìåæ îáëàñò³ ïåðåñóâàííÿ. Ñòâîð³òü ïî÷àòêîâå ïîëå çîáðàæåííÿ òà âèçíà÷òå óñ³ éîãî ïàðàìåòðè ïåðø, í³æ ñòâîðþâàòè äîäàòêîâ³ îᒺêòè. Íå çàáóäüòå âñòàíîâèòè ïàðàìåòð Picture. Äâ³÷³ êëàöí³òü íà ïîë³ çîáðàæåííÿ, ùîá ñòâîðèòè ìåòîä, ÿêèé ðåàãóâàòèìå íà êëàöàííÿ. Öåé ìåòîä ðîçòàøîâóâàòèìå îᒺêò, ùî ïåðåäàºòüñÿ éîìó ÿê ïàðàìåòð sender, ó ïîë³ çîáðàæåííÿ, à ïîò³ì ïåðåñóâàòèìå öå ïîëå äîãîðè ôðåéìó øëÿõîì çì³íè çíà÷åííÿ àòðèáóòó Top. Çàçíà÷èìî, ùî ïàðàìåòðîì sender öüîãî ìåòîäó çàâæäè áóäå òîé îᒺêò, íà ÿêîìó êëàöຠêîðèñòóâà÷. Ó ìåòîä³ íå ïîâèííî çä³éñíþâàòèñü ïåðåì³ùåííÿ îᒺêòà, ÿêùî ãðó áóëî çóïèíåíî âíàñë³äîê âèìêíåííÿ òàéìåðà. Êîä ìåòîäó ìîæå ìàòè òàêèé âèãëÿä: Private Sub picTarget_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picTarget.Click Dim this As PictureBox = sender If Timer1.Enabled Then this.Top = 10 End If End Sub Äî ôîðìè áóäå äîäàíî òàéìåð. Ìåòîä òàéìåðà tick áóäå äîäàâàòè çíà÷åííÿ äî ïàðàìåòð³â Top óñ³õ îᒺêò³â äëÿ ¿õ ïåðåñóâàííÿ äîíèçó.

273


Ïåðåì³ùåííÿì çîáðàæåíü „óïðàâëÿòèìóòü” äâ³ çì³íí³. Ïåðøà — ³íòåðâàë òàéìåðà. ³äñòàíü, íà ÿêó ïîëå ïåðåì³ùóºòüñÿ ïðîòÿãîì êîæíîãî ÷àñîâîãî ³íòåðâàëó, — öå äðóãà çì³ííà. ×èì á³ëüøîþ º çãàäàíà â³äñòàíü, àáî ÷èì êîðîòøèì º ÷àñ ì³æ ïåðåì³ùåííÿì, òèì øâèäøå áóäóòü ðóõàòèñÿ ïîëÿ çîáðàæåíü. Çàîõî÷óéòå ó÷í³â åêñïåðèìåíòóâàòè ç³ çíà÷åííÿìè îáîõ çì³ííèõ, äîêè âîíè íå â³äíàéäóòü ¿õ îïòèìàëüíî¿ êîìá³íàö³¿. ßêùî äëÿ çì³íè øâèäêîñò³ ðóõó çîáðàæåíü âèêîðèñòîâóâàòè ëèøå îäíó ç öèõ çì³ííèõ, ïðîãðàìà ñòàíå ïðîñò³øîþ. Ïðîöåäóðà òàéìåðà — öå îñíîâíèé «äâèãóí» ïðîãðàìè. Ó ö³é ïðîöåäóð³ íàïèø³òü öèêë, ÿêèé áóäå çàáåçïå÷óâàòè ïåðåñóâàííÿ êîæíîãî ïîëÿ, äîäàþ÷è ïåâíó êîíñòàíòó äî çíà÷åííÿ éîãî àòðèáóòó Top. ϳñëÿ ïåðåñóâàííÿ ïîëÿ ïîð³âíÿéòå éîãî ïîëîæåííÿ ç âåðòèêàëüíîþ êîîðäèíàòîþ íèæíüî¿ ìåæ³ ôðåéìó. ßêùî çíà÷åííÿ âëàñòèâîñò³ Top ïîëÿ áóäå á³ëüøèì çà âèñîòó ôðåéìó, äîäàíó äî çíà÷åííÿ éîãî àòðèáóòó Top, öå îçíà÷àòèìå, ùî ïîëå âèéøëî çà ìåæ³ ôðåéìó, òîáòî „âòåêëî”. Ó òàêîìó âèïàäêó çá³ëüøóºòüñÿ ê³ëüê³ñòü ïîë³â, ùî „âòåêëè”. Ïîëå çîáðàæåííÿ ïðè öüîìó ïåðåñóâàºòüñÿ äîãîðè ôðåéìó (äëÿ öüîãî ïàðàìåòðó Top ïîëÿ ñë³ä ïðèñâî¿òè çíà÷åííÿ àòðèáóòó Top ôðåéìó). ϳñëÿ êîæíî¿ âòå÷³ ïåðåâ³ðÿéòå ë³÷èëüíèê âòå÷, ùîá âèçíà÷èòè, ÷è íå º ê³ëüê³ñòü ïîë³â, ÿê³ âòåêëè, äîñòàòíüîþ äëÿ çàâåðøåííÿ ãðè. ßêùî ë³ì³ò âòå÷ âè÷åðïàíî, âèâåä³òü ïîâ³äîìëåííÿ, ó ÿêîìó ì³ñòèòèìåòüñÿ çàïèò, ÷è õî÷å ãðàâåöü ðîçïî÷àòè íîâó ãðó, à òàêîæ êíîïêè Òàê òà ͳ. ßêùî êîðèñòóâà÷ â³äìîâèòüñÿ, ìîæíà âèêîíàòè îïåðàòîð End àáî ìåòîä application.Exit() äëÿ çàâåðøåííÿ ãðè. ßêùî ãðàâåöü ïîãîäèòüñÿ ïðîäîâæèòè ãðó, ïîòð³áíî âèêëèêàòè ïðîöåäóðó ³í³ö³àë³çàö³¿ íîâî¿ ãðè. Îáðîáíèê ïî䳿 êëàöàííÿ íà ïîë³ çîáðàæåííÿ ïåðåì³ùóâàòèìå ïîëå äîãîðè ôðåéìó, çá³ëüøóâàòèìå çíà÷åííÿ ë³÷èëüíèêà âëó÷åíü òà îíîâëþâàòèìå éîãî â³äîáðàæåííÿ. Ïåðåâ³ðòå ðîáîòó ïðîãðàìè ç îäíèì îᒺêòîì ïåðø, í³æ äîäàâàòè ³íø³ îᒺêòè. Ñòâîð³òü âëàñíå ïîëå çîáðàæåííÿ òà âñòàâòå ê³ëüêà éîãî êîï³é äî ôîðìè. Âêàæ³òü ³ìåíà öèõ íîâèõ îᒺêò³â ï³ñëÿ êëþ÷îâîãî ñëîâà Handles ó çàãîëîâêó îáðîáíèêà ïî䳿 êëàöàííÿ íà ïîë³ çîáðàæåííÿ. Ó ðåçóëüòàò³ âñ³ îᒺêòè ðåàãóâàòèìóòü íà êëàöàííÿ ìèøåþ òàê ñàìî, ÿê ³ ïåðøèé îᒺêò. ÏÐÈÌ ²ÒÊÀ Ó êóðñ³ „Ïðàâèëà êîäóâàííÿ” íå éøëîñÿ ïðî êëþ÷îâå ñëîâî Handles. Éîãî âèêîðèñòàííÿ äຠíàéïðîñò³øèé ñïîñ³á âèêîíóâàòè òîé ñàìèé êîä äëÿ îáðîáêè ê³ëüêîõ îᒺêò³â. Îᒺêòè ìîæíà ïåðåñóâàòè ïîîäèíö³, âèêîðèñòîâóþ÷è ¿õ ³ìåíà, àëå çàñòîñóâàííÿ ìàñèâó ïîñèëàíü íà îᒺêòè çðîáèòü öåé ïðîöåñ çíà÷íî åôåêòèâí³øèì. Ó ðîçä³ë³ îãîëîøåíü ïðîãðàìè çà äîïîìîãîþ îïåðàòîðà Dim îãîëîñ³òü ìàñèâ ïîë³â çîáðàæåíü. ³äêðèéòå êîä ôîðìè òà çíàéä³òü âèêëèê ìåòîäó ³í³ö³àë³çàö³¿ êîìïîíåíò³â InitializeComponents. ϳñëÿ öüîãî îïåðàòîðà ïðèñâîéòå êîæíå ïîëå çîáðàæåííÿ åëåìåíòó ìàñèâó ïîë³â çîáðàæåíü. Äëÿ ïåðåñóâàííÿ îᒺêò³â ó ìåòîä³ òàéìåðà tick ìîæíà âèêîðèñòàòè öèêë òà ìàñèâ. Ñòâîð³òü íàïèñè äëÿ â³äîáðàæåííÿ â³äîìîñòåé ïðî ñòàí ãðè. Îãîëîñ³òü çì³íí³ ð³âíÿ ôîðìè äëÿ çáåðåæåííÿ ÷èñëà âëó÷åíü òà âòå÷. ²íøà çì³ííà ð³âíÿ ôîðìè ìîæå â³äïîâ³äàòè çà øâèäê³ñòü ðóõó ïîë³â ³ áóäå çàáåçïå÷óâàòè ¿¿ çì³íó. Íàäàéòå êîðèñòóâà÷åâ³ ìîæëèâ³ñòü îáèðàòè ð³çí³ øâèäêîñò³ ðóõó ïîë³â çà äîïîìîãîþ êîìàíä ìåíþ. Âèçíà÷òå ìàëó, ñåðåäíþ òà âåëèêó øâèäê³ñòü. Ó îáðîáíèêàõ ïîä³é êëàöàííÿ íà êíîïêàõ øâèäêîñòåé çàäàéòå çíà÷åííÿ â³äñòàí³, íà ÿêó ïåðåì³ùóâàòèìåòüñÿ êîæíå ïîëå ï³ä

274


÷àñ îáðîáëåííÿ êîæíî¿ ïî䳿 òàéìåðà. Äëÿ á³ëüø ãíó÷êîãî âèáîðó øâèäêîñò³ ìîæíà âèêîðèñòàòè ñìóãó ïðîêðó÷óâàííÿ: íåõàé ïîä³ÿ ïåðåñóâàííÿ ïîâçóíêà íà ñìóç³ ïðîêðó÷óâàííÿ çì³íþâàòèìå çíà÷åííÿ çì³ííî¿ ð³âíÿ ôîðìè, ÿêà â³äïîâ³äຠçà øâèäê³ñòü ðóõó çîáðàæåíü. Ïåðåêîíàéòåñü, ùî êðàéí³ì ïîëîæåííÿì ïîâçóíêà íà ñìóç³ â³äïîâ³äàþòü íàëåæí³ ãðàíè÷í³ øâèäêîñò³.

Âòîðãíåííÿ ïðèáóëüö³â — ó÷í³âñüêèé ïðîåêò гâåíü çíàíü: ïîãëèáëåíèé. Ïðèáëèçíèé ÷àñ âèêîíàííÿ: 3–5 ãîäèí. Òåìà: âèêîðèñòàííÿ òàéìåð³â òà îáðîáíèê³â ïîä³é, ââåäåííÿ äàíèõ ÷åðåç â³êíî ïîâ³äîìëåííÿ, ñòâîðåííÿ òà âèêîðèñòàííÿ ìàñèâ³â îᒺêò³â. Íåîáõ³äí³ íàâè÷êè: ðîçóì³ííÿ öèêë³÷íèõ êîíñòðóêö³é òà ïðèíöèï³â îáðîáëåííÿ ìàñèâ³â. Îãëÿä ïðîåêòó: ê³ëüêà ïîë³â çîáðàæåíü ìຠðóõàòèñÿ ôîðìîþ çãîðè äîíèçó. ßêùî êîðèñòóâà÷ êëàöíå íà ïîë³, âîíî ìຠïîâåðòàòèñü äîãîðè ôîðìè. ϳäðàõîâóéòå òà âèâîäüòå íà åêðàí ê³ëüê³ñòü êëàöàíü íà ïîëÿõ. Êîëè ïîëå ïåðåì³ùóºòüñÿ çà íèæíþ ìåæó ôîðìè, ââàæàºòüñÿ, ùî âîíî „âòåêëî”. ϳñëÿ òîãî, ÿê ïåâíà ê³ëüê³ñòü ïîë³â „óòå÷å”, ãðà ïðèïèíÿºòüñÿ òà êîðèñòóâà÷åâ³ íàäàºòüñÿ ìîæëèâ³ñòü ðîçïî÷àòè íîâó ãðó àáî âèéòè ç ïðîãðàìè. ²íñòðóêö³¿ ùîäî âèêîíàííÿ ïðîåêòó: 1. Ñòâîð³òü ê³ëüêà ïîë³â çîáðàæåíü òà ìàñèâ îᒺêò³â, åëåìåíòàìè ÿêîãî áóäóòü ñòâîðåí³ ïîëÿ. 2. Ïàðàìåòðó Image êîæíîãî ïîëÿ ïðèñâîéòå ïåâíå çîáðàæåííÿ. 3. Ñòâîð³òü îᒺêò òàéìåðà. Êîæíîãî ðàçó, êîëè â³äáóâàòèìåòüñÿ ïîä³ÿ òàéìåðà, ïåðåì³ùóéòå âñ³ ïîëÿ äîíèçó, äîäàþ÷è ñòàëó âåëè÷èíó äî çíà÷åíü ¿õ ïàðàìåòð³â Top. 4. Ó îáðîáíèêó ïî䳿 òàéìåðà ïåðåâ³ðÿéòå, ÷è ïåðåì³ùóºòüñÿ ïîëå çà íèæíþ ìåæó ôîðìè. ßêùî ïîëå „âòåêëî”, çá³ëüøóéòå çíà÷åííÿ ë³÷èëüíèêà âòå÷ òà ïîâåðòàéòå â³äïîâ³äíå çîáðàæåííÿ äîãîðè ôîðìè. 5. ßêùî ê³ëüê³ñòü ïîë³â, ùî âòåêëè, ïåðåâèùèòü ïåâíó ô³êñîâàíó âåëè÷èíó, íàïðèêëàä, äåñÿòü, âèêëè÷òå ìåòîä â³êíà ïîâ³äîìëåííÿ, ùîá çàïèòàòè êîðèñòóâà÷à, ÷è â³í õî÷å ç³ãðàòè çíîâó. 6. ßêùî êîðèñòóâà÷ ïîãîäæóºòüñÿ íà íîâó ãðó, ³í³ö³àë³çóéòå çíà÷åííÿ âñ³õ ë³÷èëüíèê³â òà ðîçòàøóéòå çîáðàæåííÿ íàãîð³ ôîðìè. ßêùî êîðèñòóâà÷ íå áàæຠá³ëüøå ãðàòè, çàâåðø³òü âèêîíàííÿ ïðîãðàìè. 7. Çàïðîãðàìóéòå îáðîáíèê êëàöàííÿ íà çîáðàæåíí³: ïîëå çîáðàæåííÿ, íà ÿêîìó êëàöíóâ êîðèñòóâà÷, ìຠïåðåñóâàòèñÿ äîãîðè ôîðìè. Äëÿ öüîãî ñë³ä çì³íèòè çíà÷åííÿ àòðèáóòó Top ïîëÿ. 8. Äîäàéòå êîìàíäè ìåíþ, ÷è êíîïêè, ÷è ÿê³ñü ³íø³ åëåìåíòè ³íòåðôåéñó, ùî äîçâîëÿòü êîðèñòóâà÷åâ³ âèáðàòè øâèäê³ñòü ïåðåì³ùåííÿ ïîë³â. 9. Çàáåçïå÷òå ìîæëèâ³ñòü âèõîäó ç ïðîãðàìè çà áàæàííÿì êîðèñòóâà÷à. Äîäàòêîâ³ ðåñóðñè: ï³äðó÷íèê.

275


Çàïðîïîíîâàíå ðîçâ’ÿçàííÿ: çîáðàæåííÿ ó öüîìó ïðèêëàä³ áóëî íàìàëüîâàíå ó ïðîãðàì³ Paint. Ìîæíà íàìàëþâàòè îðèã³íàëüíå çîáðàæåííÿ, àáî âèêîðèñòàòè âæå ñòâîðåíå ÷è îòðèìàíå.

Äîäàòêîâ³ çàâäàííÿ: l

Äîäàéòå ùå ê³ëüêà êîñì³÷íèõ êîðàáë³â.

l

Çàáåçïå÷òå äëÿ êîðèñòóâà÷³â ìîæëèâ³ñòü îáèðàòè ð³çí³ çîáðàæåííÿ.

l

Ñòâîð³òü çîáðàæåííÿ âèãàäàíèõ âàìè ïåðñîíàæ³â.

l

Äî ð³çíèõ ïîë³â çîáðàæåíü ïîì³ñò³òü ð³çí³ ìàëþíêè.

l

Çðîá³òü òàê, ùîá êàðòèíêè ðóõàëèñÿ çë³âà íàïðàâî, à íå çãîðè äîíèçó.

l

Çðîá³òü òàê, ùîá êàðòèíêè ðóõàëèñÿ òèì øâèäøå, ÷èì äîâøå òðèâຠãðà.

l

Äëÿ çì³íè øâèäêîñò³ ïîë³â âèêîðèñòàéòå ñìóãó ïðîêðó÷óâàííÿ.

Ñòâîð³òü ìîæëèâ³ñòü ðîáèòè ïàóçè ó ãð³.

276


Äëÿ íîòàòîê

277


Äëÿ íîòàòîê

278


Äëÿ íîòàòîê

279


Äëÿ íîòàòîê

280


Äëÿ íîòàòîê

281


Äëÿ íîòàòîê

282


Äëÿ íîòàòîê

283


Äëÿ íîòàòîê

284


Ðåñóðñè Ñàéò Microsoft Visual Basic .NET http://msdn.microsoft.com/vbasic/

Main Function Äëÿ ó÷í³â òà ó÷èòåë³â http://www.mainfunction.com/

Microsoft Knowledge Base Search Ïîòóæíèé ñàéò äîïîìîãè òà ï³äòðèìêè http://support.microsoft.com/default.aspx?scid=fh;EN-US;KBHOWTO

²íôîðìàö³éíèé öåíòð Visual Studio .NET http://searchvb.techtarget.com/vsnetHome/0,293828,sid8,00.html

Microsoft Got Dot Net ϳäòðèìóºòüñÿ Web-êîìàíäîþ Microsoft .NET Framework http://www.gotdotnet.com/community/student/about.aspx

The Code Project Íàâ÷àëüí³ ïîñ³áíèêè ç Visual Basic .NET http://www.codeproject.com/vb/net/

VB Programmers/Developers Äëÿ ïðîôåñ³îíàë³â http://www.vbda.org/

Free VB Code Îòðèìàííÿ òà ðîçñèëêà áåçêîøòîâíîãî VB-êîäó http://www.freevbcode.com/

Developer Fusion Íàâ÷àëüí³ ïîñ³áíèêè òà êîä http://www.developerfusion.com/vbnet/

VB .NET Heaven Äëÿ ïðîôåñ³îíàë³â Http://www.vbda.org/

Êíèãà Microsoft Visual Basic .NET BASICS Todd Knowlton, Alfred Thompson, Stephen Collings

ISBN: 0-619-18298-9 © 2004

285


Ó êîæí³é øêîë³ º ó÷í³, çàö³êàâëåí³ñòü ÿêèõ ïðåäìåòîì ³íôîðìàòèêè ïîÿñíþºòüñÿ ïðàãíåííÿì âèâ³äàòè ÷óæ³ ïàðîë³, çíàéòè äîñòóï äî çàêðèòèõ ðîçä³ë³â øê³ëüíî¿ áàçè äàíèõ, çàâàíòàæèòè ³íôîðìàö³þ ³ç çàáîðîíåíèõ ñàéò³â â ²íòåðíåò³ òîùî. Ìîæíà äîâãî é áåçóñï³øíî áîðîòèñÿ ³ç öèìè „ì³ñöåâèìè õàêåðàìè”, à ìîæíà ñïðîáóâàòè îðãàí³çóâàòè ç íèõ êîìàíäó, ÿêà â³çüìå íà ñåáå â³äïîâ³äàëüí³ñòü çà íàä³éíó òà åôåêòèâíó ðîáîòó øê³ëüíèõ êîìï’þòåð³â, ïðîãðàìíîãî çàáåçïå÷åííÿ ³ ìåðåæ³. Ó á³çíåñ-ñòðóêòóðàõ òàê³ êîìàíäè íàçèâàþòü ñëóæáàìè ï³äòðèìêè. ßêèìè ïîâèíí³ áóòè îáîâ’ÿçêè ÷ëåí³â øê³ëüíî¿ ñëóæáè ï³äòðèìêè? Õòî ìîæå êåðóâàòè òàêîþ ñëóæáîþ? ßê âèõîâàòè ³ç ïåðåñ³÷íîãî ó÷íÿ â³äïîâ³äàëüíîãî é ïðîôåñ³éíîãî ³íæåíåðà ñëóæáè ï³äòðèìêè? ³äïîâ³ä³ íà ö³ òà áàãàòî ³íøèõ çàïèòàíü âè çíàéäåòå â êíèæö³, ùî òðèìàºòå â ðóêàõ. Äàíå âèäàííÿ º ïåðø çà âñå ÷óäîâèì ïîñ³áíèêîì ³ç ïèòàíü íàëàãîäæåííÿ ðîáîòè ñó÷àñíîãî àïàðàòíîãî òà ïðîãðàìíîãî çàáåçïå÷åííÿ, à òàêîæ ïåðâèííîãî àäì³í³ñòðóâàííÿ îïåðàö³éíî¿ ñèñòåìè Windows XP Professional ³ êîìï’þòåðíî¿ ìåðåæ³ Windows, ðîçðàõîâàíèì íà ïî÷àòê³âö³â. Ó êíèæö³ äåòàëüíî ðîçãëÿíóòî òàê³ òåìè: u

ðîçðîáëåííÿ îðãàí³çàö³éíî¿ ñòðóêòóðè, çàâäàíü òà ôóíêö³é øê³ëüíî¿ ñëóæáè ï³äòðèìêè;

u

îáñëóãîâóâàííÿ êîìï’þòåðíîãî óñòàòêóâàííÿ é ìåðåæ³;

u

âñòàíîâëåííÿ é íàñòðîþâàííÿ îïåðàö³éíî¿ ñèñòåìè Windows XP Professional;

u

ïðîâåäåííÿ ïðîô³ëàêòè÷íèõ çàõîä³â, ñïðÿìîâàíèõ íà çàáåçïå÷åííÿ åôåêòèâíî¿ ðîáîòè ïðîãðàìíîãî çàáåçïå÷åííÿ òà óñòàòêóâàííÿ;

u

îðãàí³çàö³ÿ ðåãóëÿðíî¿ òà îïåðàòèâíî¿ äîïîìîãè êîðèñòóâà÷àì êîìï’þòåð³â ó øêîë³;

u

ï³äòðèìàííÿ áåçïåêè êîìï’þòåð³â ³ ìåðåæ³.


Áóðõëèâèé ðîçâèòîê ³íôîðìàö³éíîãî ñóñï³ëüñòâà ïðîòÿãîì îñòàíí³õ äâîõ äåñÿòèë³òü ñïðè÷èíèâ òðàíñôîðìàö³þ ïàðàäèãìè îñâ³òè. Ãîëîâíîþ ìåòîþ íàâ÷àííÿ ñòàëî íå íàáóòòÿ ó÷íåì ïåâíî¿ ñóìè àáñòðàêòíèõ çíàíü, à âèõîâàííÿ îñâ³÷åíîãî, àêòèâíîãî ³ â³äêðèòîãî äî ñï³ëêóâàííÿ ÷ëåíà ñó÷àñíîãî ñóñï³ëüñòâà. ³äïîâ³äíî äî çì³íè ö³ëåé íàâ÷àííÿ çì³íèëàñü ³ éîãî ìåòîäèêà. Åôåêòèâíà îñâ³òà ñòàëà íåìîæëèâîþ áåç ³íòåíñèâíîãî âèêîðèñòàííÿ ó íàâ÷àëüíîìó ïðîöåñ³ îñòàíí³õ äîñÿãíåíü íàóêè òà òåõí³êè. Äàíà êíèæêà º ïîñ³áíèêîì ç ïðîãðàìè „²íòåãðàö³ÿ ³íôîðìàö³éíèõ òà êîìóí³êàö³éíèõ òåõíîëîã³é ó íàâ÷àííÿ” êîðïîðàö³¿ Microsoft òà ̳æíàðîäíî¿ ñï³ëêè ç ïèòàíü îñâ³òí³õ òåõíîëîã³é (ISTE). Ìåòà ïîñ³áíèêà ïîëÿãຠó òîìó, ùîá äîïîìîãòè â÷èòåëÿì â óñüîìó ñâ³ò³ çðîáèòè ñâî¿ íàâ÷àëüí³ êóðñè á³ëüø òåõíîëîã³÷íèìè, ïåðåòâîðèòè ¿õ íà óñï³øí³ íàâ÷àëüí³ ïðîåêòè.  êíèæö³ ´ðóíòîâíî äîñë³äæóþòüñÿ ñòðàòå㳿 ³íòåãðàö³¿ ³íôîðìàö³éíèõ òåõíîëîã³é ó íàâ÷àëüíèé ïðîöåñ, ïðîåêòèâíà òåõíîëîã³ÿ, à òàêîæ ïðèíöèïè îñîáèñò³ñíî-îð³ºíòîâàíîãî íàâ÷àííÿ. Îñîáëèâèé ³íòåðåñ ñòàíîâëÿòü äâàíàäöÿòü êîëåêòèâíèõ íàâ÷àëüíèõ ïðîåêò³â, ïî êîæíîìó ç ÿêèõ ïîñ³áíèê ì³ñòèòü ïîâíèé íàá³ð ìàòåð³àë³â, íåîáõ³äíèõ äëÿ éîãî óñï³øíîãî çä³éñíåííÿ. Êíèæêà ñòàíå ó íàãîä³ ÿê ó÷èòåëÿì, òàê ³ ó÷íÿì. Ó êíèæö³ äåòàëüíî ðîçãëÿíóòî òàê³ ïèòàííÿ: u

ñòðàòå㳿 ³íòåãðàö³¿ ³íôîðìàö³éíèõ òà êîìóí³êàö³éíèõ òåõíîëîã³é ó íàâ÷àëüíèé ïðîöåñ;

u

çàñàäè ïðîåêòíî-îð³ºíòîâàíîãî íàâ÷àííÿ;

u

òåìàòè÷í³ íàâ÷àëüí³ ïðîåêòè.


Íàâ÷àëüíå âèäàííÿ Îñíîâè ïðîãðàìóâàííÿ Êåð³âíèê ïðîåêòó

². Î. Çàâàäñüêèé

Ïåðåêëàä

Î. Þ. Êóëåíêî

Ðåäàêòîð

Â. Â. Çàâàäñüêà

Êîðåêòîð Êîìï’þòåðíà âåðñòêà

Â. Â. Çàâàäñüêà Ä. Ñ. Òð³øåíêîâà, ². Ë. ×åðíèø

ÒΠ“Âèäàâíè÷à ãðóïà BHV” Ñâ³äîöòâî ïðî âíåñåííÿ äî Äåðæàâíîãî ðåºñòðó Óêðà¿íè ñóᒺêò³â âèäàâíè÷î¿ ñïðàâè ÄÊ ¹175 â³ä 13.09.2000 ð. Ïîøòîâà àäðåñà: 03115, Êè¿â, âóë. Êîòåëüíèêîâà, 31, îô³ñ 79. ϳäïèñàíî äî äðóêó 14.09.04. Ôîðìàò 84õ108/16. Ïàï³ð îôñåòíèé. Ãàðí³òóðè Pragmatica, Arial òà Courier. Äðóê îôñåòíèé. Óì. äðóê. àðê. 30,24. Íàêëàä 2000 ïðèì. Çàì. ¹ 30211.

ÒΠ"Óêðïîë³ãðàôìåä³à" Ïîøòîâà àäðåñà: 04080, Êè¿â, âóë. Ôðóíçå, 104-à.

Osnovi_program_2004  

Ïàðòíåðñòâî â íàâ÷àíí³ Êè¿â Âèäàâíè÷à ãðóïà BHV 2004 ÓÄÊ 373.5:004](075.3) ÁÁÊ 32.973-018ÿ73 ÓÄÊ Ðåöåíçåíò: Ì. ². Æàëäàê, àêàä. ÀÏÍ Óêðà¿íè,...

Read more
Read more
Similar to
Popular now
Just for you