Äîðîãèå ó÷åíèêè! Ýòî ó÷åáíîå ïîñîáèå ðàçðàáîòàíî âñåìèðíî èçâåñòíîé êîðïîðàöèåé Ìàéêðîñîôò, ìèðîâûì ëèäåðîì â ïðîèçâîäñòâå ïðîãðàììíîãî îáåñïå÷åíèÿ, â ðàìêàõ èíèöèàòèâû «Ïàðòíåðñòâî â îáðàçîâàíèè». Çàäà÷à èíèöèàòèâû ïðåäîñòàâèòü øêîëàì âîçìîæíîñòü ïîâûøåíèÿ êà÷åñòâà îáó÷åíèÿ çà ñ÷åò èñïîëüçîâàíèÿ èíôîðìàöèîííûõ òåõíîëîãèé â ó÷åáíîì ïðîöåññå. Èíôîðìàöèîííûå òåõíîëîãèè îáëàäàþò äîñòàòî÷íûì ïîòåíöèàëîì äëÿ òîãî, ÷òîáû äàòü âàì âîçìîæíîñòü ïðèîáðåñòè íàâûêè, êîòîðûå áóäóò íåîáõîäèìû â áóäóùåé ðàáîòå, íàâûêè ýôôåêòèâíîé îáðàáîòêè èíôîðìàöèè è óïðàâëåíèÿ åþ, íàâûêè îáùåíèÿ è ñîâìåñòíîé (ãðóïïîâîé) ðàáîòû. Äëÿ ðàçâèòèÿ ýòèõ è äðóãèõ íàâûêîâ, ïîëó÷èâøèõ íàçâàíèå «íàâûêè XXI âåêà», è ñëóæàò ðàçðàáîòàííûå Ìàéêðîñîôò ó÷åáíûå ïîñîáèÿ. Ó÷àñòèå Ìàéêðîñîôò â ñîçäàíèè ýòèõ ó÷åáíèêîâ îáåñïå÷èâàåò âûñîêîå êà÷åñòâî ó÷åáíûõ ïîñîáèé è ïåðåäà÷ó ýêñïåðòíîãî çíàíèÿ, íàêîïëåííîãî âíóòðè êîðïîðàöèè, íåïîñðåäñòâåííî ó÷èòåëþ è ó÷åíèêó. Íåêîòîðûå ó÷åáíûå êóðñû Ìàéêðîñîôò ñåðèè «Ïàðòíåðñòâî â îáðàçîâàíèè» ïðåäíàçíà÷åíû äëÿ ïîäãîòîâêè ãðàìîòíûõ ïîëüçîâàòåëåé ïåðñîíàëüíûõ êîìïüþòåðîâ, äðóãèå êóðñû ïðåäíàçíà÷åíû äëÿ ðåáÿò, áîëåå ãëóáîêî èíòåðåñóþùèõñÿ èíôîðìàöèîííûìè òåõíîëîãèÿìè è æåëàþùèõ ñòàòü ñïåöèàëèñòàìè â ýòîé îáëàñòè. Ó÷åáíûå êóðñû Ìàéêðîñîôò ñåðèè «Ïàðòíåðñòâî â îáðàçîâàíèè» ïåðåâåäåíû íà ÿçûêè ìíîãèõ ñòðàí ìèðà è óñïåøíî èñïîëüçóþòñÿ âî ìíîãèõ ñòðàíàõ. Âû äåðæèòå â ðóêàõ ó÷åáíîå ïîñîáèå «Îñíîâû ïðîãðàììèðîâàíèÿ íà ïðèìåðå Visual Basic .NET», êîòîðîå ïîìîæåò âàì ïîãðóçèòüñÿ â óâëåêàòåëüíûé ìèð îáúåêòíî-îðèåíòèðîâàííîãî ïðîãðàììèðîâàíèÿ è ïî÷óâñòâîâàòü ñåáÿ òâîðöîì, ñïîñîáíûì ñîçäàâàòü èíòåðåñíûå ïðîãðàììû. Ýòî ó÷åáíîå ïîñîáèå ïîçâîëèò âàì ëó÷øå ïîíÿòü ðàáîòó ïðîãðàììèñòà. Ñðåäè äðóãèõ ó÷åáíèêîâ, ðàçðàáîòàííûõ êîìïàíèåé Ìàéêðîñîôò, âû íàéäåòå ñëåäóþùèå: q Ó÷åáíûå ïðîåêòû ñ èñïîëüçîâàíèåì Microsoft Office. Êóðñ ïðåäïîëàãàåò âûïîëíåíèå ðàçëè÷íûõ óâëåêàòåëüíûõ ïðîåêòîâ, çíàêîìÿùèõ ó÷åíèêîâ ñ íåêîòîðûìè, ðàíåå íåèçâåñòíûìè îáëàñòÿìè äåÿòåëüíîñòè (íàïðèìåð, ñ òàêèìè, êàê îñíîâû ìàðêåòèíãà, ãðàìîòíîå ñîñòàâëåíèå ðåçþìå è ïîèñê ðàáîòû, îïòèìàëüíûå ïîäõîäû ê ñîâåðøåíèþ ïîêóïîê è äð.). q Îñíîâû êîìïüþòåðíûõ ñåòåé. Êóðñ çíàêîìèò ñ îñíîâàìè ãðàìîòíîãî ïîñòðîåíèÿ è ïîääåðæêè êîìïüþòåðíûõ ñåòåé è Èíòåðíåòà, ïîìîãàÿ ó÷àùèìñÿ ïðèîáðåñòè çíàíèÿ è íàâûêè, âîñòðåáîâàííûå â ñåãîäíÿøíåì âûñîêîòåõíîëîãè÷íîì îáùåñòâå. q Ïåðñîíàëüíûé êîìïüþòåð: íàñòðîéêà è òåõíè÷åñêàÿ ïîääåðæêà. Êóðñ äàåò íåîáõîäèìóþ òåîðåòè÷åñêóþ è ïðàêòè÷åñêóþ ïîäãîòîâêó äëÿ ðàáîòû â êà÷åñòâå ñïåöèàëèñòîâ ñëóæáû òåõíè÷åñêîé ïîääåðæêè. Ïðîãðàììà êóðñà âêëþ÷àåò îáó÷åíèå ðåìîíòó è íàñòðîéêå êîìïüþòåðîâ, áàçàì äàííûõ è îñíîâàì ðàáîòû ñëóæá òåõíè÷åñêîé ïîìîùè. Ìû æåëàåì âàì óñïåõîâ íà ïóòè îáðåòåíèÿ íîâûõ çíàíèé è áóäåì ðàäû, åñëè âàì ïîíðàâèòñÿ íàø êóðñ! Î ñâîèõ âïå÷àòëåíèÿõ îá ýòîì ó÷åáíîì êóðñå âû ìîæåòå ðàññêàçàòü íàì, íàïèñàâ ïî ýëåêòðîííîé ïî÷òå íà àäðåñ: mailto:
[email protected] Ñ ñàìûìè íàèëó÷øèìè ïîæåëàíèÿìè, ñîòðóäíèêè ðîññèéñêîãî Ïðåäñòàâèòåëüñòâà Ìàéêðîñîôò http://www.microsoft.com/rus
Ðåêîìåíäàöèè ïî èñïîëüçîâàíèþ ó÷åáíî-ïðîãðàììíîãî êîìïëåêñà 1. Ó÷åáíî-ïðîãðàììíûé êîìïëåêñ ïî êóðñó «Îñíîâû ïðîãðàììèðîâàíèÿ íà ïðèìå-
ðå Visual Basic .NET» ïîçâîëÿåò íàó÷èòüñÿ ðàçðàáàòûâàòü ïðîåêòû íà ÿçûêå îáúåêòíî-îðèåíòèðîâàííîãî ïðîãðàììèðîâàíèÿ Visual Basic .NET.  ñîñòàâ ó÷åáíî-ïðîãðàììíîãî êîìïëåêñà âõîäÿò: q ó÷åáíîå ïîñîáèå ïî ÿçûêó îáúåêòíî-îðèåíòèðîâàííîãî ïðîãðàììèðîâàíèÿ Visual Basic .NET; q êîìïüþòåðíûé ïðàêòèêóì íà êîìïàêò-äèñêå Microsoft-CD, êîòîðûé ñîäåðæèò äèñòðèáóòèâ ñèñòåìû îáúåêòíî-îðèåíòèðîâàííîãî ïðîãðàììèðîâàíèÿ Visual Basic 2005 Express Edition, ó÷åáíîå ïîñîáèå â ôîðìàòå Web-ñòðàíèö, à òàêæå îòâåòû íà çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ, ò. å. ãîòîâûå ïðîåêòû íà ÿçûêå ïðîãðàììèðîâàíèÿ Visual Basic .NET; q ìåòîäè÷åñêîå ïîñîáèå äëÿ ó÷èòåëåé ïî îñíîâàì îáúåêòíî-îðèåíòèðîâàííîãî ïðîãðàììèðîâàíèÿ íà ÿçûêå Visual Basic .NET, äîñòóïíîå äëÿ çàãðóçêè ñ web-ñåðâåðà www.microsoft.com\rus\education
2. Ìèíèñòåðñòâîì îáðàçîâàíèÿ è íàóêè ÐÔ äëÿ îáó÷åíèÿ ïðîãðàììèðîâàíèþ ðåêî-
ìåíäîâàíà ñèñòåìà ïðîãðàììèðîâàíèÿ Visual Basic .NET. Ðóññêóþ âåðñèþ Visual Basic .NET 2003 êîìïàíèÿ Ìàéêðîñîôò ïðåäëàãàåò äëÿ ó÷åáíûõ çàâåäåíèé ïî ñïåöèàëüíûì íèçêèì öåíàì è ñ ðàñøèðåííûìè óñëîâèÿìè ïî èñïîëüçîâàíèþ (ñïåöèàëüíàÿ ïðîãðàììà ëèöåíçèðîâàíèÿ äëÿ ñðåäíèõ ó÷åáíûõ çàâåäåíèé: http://www.microsoft.com/Rus/Licensing/Volume/Academic/PilSa.mspx). Îáëåã÷åííàÿ âåðñèÿ Visual Basic 2005 Express Edition ïî ðàçðåøåíèþ Microsoft ðàçìåùåíà íà CD-äèñêå, êîòîðûé âõîäèò â ñîñòàâ ó÷åáíî-ìåòîäè÷åñêîãî êîìïëåêñà.
3. Â ïðîöåññå âûïîëíåíèÿ ïðîåêòîâ â ñèñòåìàõ îáúåêòíî-îðèåíòèðîâàííîãî ïðî-
ãðàììèðîâàíèÿ ïðîèçâîäèòñÿ çàïèñü èíôîðìàöèè íà äèñê. Ïîýòîìó íåîáõîäèìî ïåðåä çàïóñêîì ïðîåêòîâ ñêîïèðîâàòü çààðõèâèðîâàííûå ïàïêè ïðîåêòîâ ñ Microsoft-CD íà æåñòêèé äèñê.
4. Â òåêñòå ïîñîáèÿ ïðèíÿòû ñëåäóþùèå øðèôòîâûå âûäåëåíèÿ: q êóðñèâîì âûäåëåíû âàæíûå ïîíÿòèÿ è òåðìèíû, à òàêæå íàçâàíèÿ äèàëîãîâûõ
îêîí, ïóíêòîâ ìåíþ è óïðàâëÿþùèõ ýëåìåíòîâ (òåêñòîâûõ ïîëåé, êíîïîê è ò. ä.) ãðàôè÷åñêîãî èíòåðôåéñà; q øðèôòîì Courier âûäåëåíû òåêñòû ïðîãðàìì íà ÿçûêå ïðîãðàììèðîâàíèÿ Visual Basic. 5. Ïðàêòè÷åñêèå çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ, ïðèâåäåííûå â êîíöå ïàðàãðàôîâ, îáîçíà÷àþòñÿ çíà÷êîì .
6. Ìàòåðèàëû, ñîäåðæàùèå äîïîëíèòåëüíóþ èíòåðåñíóþ èíôîðìàöèþ, âûäåëåíû çíà÷êîì
.
7. Ïàðàëëåëüíî èçëîæåíèþ îñíîâ ïðîãðàììèðîâàíèÿ íà ÿçûêå Visual Basic .NET
ïðåäëàãàåòñÿ ñîâåðøèòü «ïóòåøåñòâèå âî âðåìåíè», â íà÷àëå 12 ãëàâ ïðåäñòàâëåíà èñòîðèÿ ðàçâèòèÿ Microsoft ÷åðåç ñîçäàíèå ðàçëè÷íûõ âåðñèé îïåðàöèîííûõ ñèñòåì è ÿçûêà ïðîãðàììèðîâàíèÿ Basic.
Ãëàâà 1
Ïðîãðàììû â ïîâñåäíåâíîé æèçíè 1.1. Ïðîãðàììû â ïîâñåäíåâíîé æèçíè 1.2. ×åì çàíèìàþòñÿ ïðîãðàììèñòû 1.3. ×òî òàêîå ïðîãðàììà 1.4. Âîçìîæíîñòè ÿçûêîâ ïðîãðàììèðîâàíèÿ 1.5. Ñèíòàêñèñ ÿçûêîâ ïðîãðàììèðîâàíèÿ
 èþëå 1975 ãîäà Áèëëîì Ãåéòñîì è Ïîëîì Àëëåíîì áûëà ñîçäàíà êîìïàíèÿ Microsoft.  íàñòîÿùåå âðåìÿ êîðïîðàöèÿ Microsoft ÿâëÿåòñÿ âåäóùèì ðàçðàáîò÷èêîì ïðîãðàììíîãî îáåñïå÷åíèÿ äëÿ êîìïüþòåðîâ. Îïåðàöèîííàÿ ñèñòåìà Windows è åå ðàçëè÷íûå âåðñèè âîò óæå áîëåå 15 ëåò óñòàíàâëèâàþòñÿ íà áîëüøèíñòâî ïåðñîíàëüíûõ êîìïüþòåðîâ â ìèðå. ßçûê ïðîãðàììèðîâàíèÿ Visual Basic ÿâëÿåòñÿ îäíèì èç íàèáîëåå ðàñïðîñòðàíåííûõ ÿçûêîâ îáúåêòíî-îðèåíòèðîâàííîãî ïðîãðàììèðîâàíèÿ.
6
Ãëàâà 1
1.1. Ïðîãðàììû â ïîâñåäíåâíîé æèçíè Âî ìíîæåñòâå ñàìûõ îáû÷íûõ ïðåäìåòîâ âîêðóã íàñ çàëîæåíû ïðîãðàììû, à åùå áîëüøå ðàçíûõ âåùåé ñîçäàíî è ïðîâåðåíî ñ ïîìîùüþ ïðîãðàìì.  íàøå âðåìÿ ïðîãðàììû èñïîëüçóþòñÿ íå òîëüêî â êàëüêóëÿòîðàõ, ðîáîòàõ è êîìïüþòåðàõ. Ñåé÷àñ ïðîãðàììèðóåìûìè ñòàëè ìíîãèå áûòîâûå ïðèáîðû è èãðóøêè, è äàæå â àâòîìîáèëÿõ åñòü ïðîãðàììû. Íàïðèìåð, â àâòîìîáèëå ïî÷òè ìèëëèîí äåòàëåé, è ìíîãèå èç íèõ íàâåðíÿêà ïðîåêòèðîâàëèñü ñ ïîìîùüþ êîìïüþòåðà. Àýðîäèíàìèêó êîðïóñà, ñêîðåå âñåãî, ðàçðàáàòûâàëè è òåñòèðîâàëè ñ ïîìîùüþ ìîäåëè àýðîäèíàìè÷åñêîé òðóáû íà êîìïüþòåðå. Ñèäåíüÿ òîæå, íàâåðíîå, áûëè ñïðîåêòèðîâàíû íà êîìïüþòåðå è âêëþ÷åíû â 3D-ìîäåëü àâòîìîáèëÿ. Êðîìå òîãî, ìíîãèå äåòàëè ìîãëè áûòü ñäåëàíû ðîáîòàìè, êîòîðûìè óïðàâëÿþò êîìïüþòåðû.  àâòîìîáèëå ìîãóò áûòü ñèñòåìà GPS (Global Positioning System ñèñòåìà ãëîáàëüíîãî ïîçèöèîíèðîâàíèÿ), ìèêðîâîëíîâêà è ñòåðåîñèñòåìà. Ýòè ïðèáîðû ìîæíî ïðîãðàììèðîâàòü è äèñòàíöèîííî óïðàâëÿòü èìè. Ýòî çíà÷èò, ÷òî â íèõ åñòü ïðîãðàììû, îïðåäåëÿþùèå, ÷òî ýòè ïðèáîðû äåëàþò, êîãäà ìû íàæèìàåì èõ êíîïêè. Ýòè ïðîãðàììû ïîñòîÿííî õðàíÿòñÿ â ÷èïàõ íà ïëàòàõ â ýòèõ ïðèáîðàõ, íî ïîÿâèëèñü îíè òàì áëàãîäàðÿ òîìó, ÷òî èõ êîãäà-òî íàïèñàëè ëþäè. Ñàìîå õàðàêòåðíîå äëÿ ïðîãðàìì òî, ÷òî îíè ìîãóò äåëàòü ïî÷òè âñ¸, ðåøàòü ïðàêòè÷åñêè ëþáûå çàäà÷è. Ñåé÷àñ ïðîãðàììû ïîâñåìåñòíî èñïîëüçóþòñÿ íà ðàáîòå è äîìà, äëÿ íàïèñàíèÿ ïèñåì, ïîäñ÷åòà ðàñõîäîâ è ò. ä. Ïî÷òè âî âñåõ êîìïàíèÿõ äëÿ ó÷åòà äåíåã, êëèåíòîâ, ïîêóïîê è ïðîèçâåäåííûõ òîâàðîâ òîæå èñïîëüçóþòñÿ ïðîãðàììû. Äëÿ õðàíåíèÿ, èçâëå÷åíèÿ, ïðîñìîòðà è ôèëüòðàöèè èíôîðìàöèè åñòü îãðîìíîå ìíîæåñòâî ðàçíûõ ïðîãðàìì. Êðîìå òîãî, ìíîæåñòâî ïðîãðàìì ïèøóòñÿ äëÿ èññëåäîâàíèÿ ñëîæíûõ ïðîáëåì íàïðèìåð, ïðîáëåì èñêóññò-
Ïðîãðàììû â ïîâñåäíåâíîé æèçíè
Âîïðîñû äëÿ ðàçìûøëåíèÿ 1. Ïåðå÷èñëèòå íå ìåíåå
÷åòûðåõ ïðèìåðîâ ïðèìåíåíèÿ êîìïüþòåðîâ â ïîâñåäíåâíîé æèçíè.
7
âåííîãî èíòåëëåêòà, ãëîáàëüíîãî ïîòåïëåíèÿ èëè ãåíåòèêè. Åñòü ñïåöèàëüíûå ïðîãðàììû äëÿ ïðîåêòèðîâàíèÿ ìàøèí, ðèñîâàíèÿ, èãð êàêóþ áû çàäà÷ó âû íè ïðèäóìàëè, äëÿ åå ðåøåíèÿ, âåðîÿòíî, óæå åñòü ïðîãðàììà. Âñïîìíèòå îá ýëåêòðîííîé ìóçûêå: ìîæíî ñïîðèòü î òîì, õîðîøà îíà èëè íå î÷åíü, íî áåññïîðíî òî, ÷òî îíà íàïèñàíà íà êîìïüþòåðå. Äà, åùå ñóùåñòâóþò ïðîãðàììû äëÿ ðàáîòû â Èíòåðíåòå, ñåòåâûå ïðîãðàììû è ïðîãðàììû âèðòóàëüíîé ðåàëüíîñòè! Êðîìå òîãî, íåêîòîðûå ëþäè ïèøóò ïðîãðàììû ïðîñòî ðàäè èíòåðåñà! Îäíà øêîëüíàÿ ó÷èòåëüíèöà íàïèñàëà ïðîãðàììó, àâòîìàòè÷åñêè ñîñòàâëÿâøóþ äîìàøíèå çàäàíèÿ ïî ìàòåìàòèêå. Åå ñåñòðà íàïèñàëà ïðîãðàììó, êîòîðàÿ ïèñàëà ÿïîíñêèå ñòèõè õîêêó è ïåðåâîäèëà èõ íà èñëàíäñêèé. Øêîëüíèêè ñîáèðàþò ðîáîòîâ èç êîíñòðóêòîðà Ëåãî è ïèøóò ïðîãðàììû ïî óïðàâëåíèþ èìè.
1.2. ×åì çàíèìàþòñÿ ïðîãðàììèñòû Ìíîãèå ëþäè ñ÷èòàþò, ÷òî ïðîãðàììèñòû ýòî íåïîíÿòíûå ëè÷íîñòè, êîòîðûå ñèäÿò çà êîìïüþòåðàìè, íàáèðàÿ íåïîíÿòíûå òåêñòû, ïîåäàþò çàñîõøèå áóòåðáðîäû è ïüþò êîôå, ðàáîòàÿ íî÷è íàïðîëåò. Õîòÿ òàêîå ïðåäñòàâëåíèå ÷àñòî îêàçûâàåòñÿ âåðíûì, íå ýòî ãëàâíîå. Õîðîøóþ ïðîãðàììó íåëüçÿ ñîòâîðèòü çà îäíó íî÷ü. Íóæíî äîëãî ðàáîòàòü, ïëàíèðîâàòü è ïðîâåðÿòü, ÷òîáû ñîçäàòü ïðîãðàììó, êîòîðàÿ áóäåò äåëàòü òî, ÷òî äîëæíà. Êðîìå òîãî, ïðîãðàììà äîëæíà ïîçâîëÿòü ëåãêî èçìåíÿòü åå, â íåé íå äîëæíî áûòü îøèáîê è ñ íåé äîëæíî áûòü óäîáíî ðàáîòàòü.  ñîçäàíèè áîëüøèõ ïðîãðàìì ìîãóò ó÷àñòâîâàòü ñîòíè ïðîãðàììèñòîâ, à èìè íóæíî óïðàâëÿòü, îðãàíèçîâûâàòü èõ è êîíòðîëèðîâàòü. Ïîýòîìó, õîòÿ íàïèñàíèå ïðîãðàìì îäíà èç çàäà÷ ïðîãðàììèñòîâ, ïðîãðàììèñòû äåëàþò è ìíîæåñòâî äðóãèõ âåùåé:
8
Ãëàâà 1 q
Ðåøàþò, ÷òî áóäåò äåëàòü ïðîãðàììà.
q
Ïðîåêòèðóþò ïîëüçîâàòåëüñêèé èíòåðôåéñ.
q
Ðåøàþò, êàêîé ÿçûê ïðîãðàììèðîâàíèÿ èñïîëüçîâàòü.
q
Ïðîåêòèðóþò àðõèòåêòóðó ïðîãðàììû è ðåøàþò, êàê ÷àñòè ïðîãðàììû áóäóò âçàèìîäåéñòâîâàòü ìåæäó ñîáîé.
q
Îïðåäåëÿþò ñòèëè íàïèñàíèÿ è îôîðìëåíèÿ êîäà ïðîãðàììû.
q
Ðåøàþò, êòî áóäåò ïèñàòü êîíêðåòíûå ÷àñòè ïðîãðàììû.
q
Ôîðìèðóþò ðàñïèñàíèå ðàçðàáîòêè è ñëåäÿò çà òåì, ñêîëüêî âðåìåíè óõîäèò íà íàïèñàíèå êîäà.
q
Îáó÷àþò äðóãèõ ïðîãðàììèñòîâ ðàáîòå ñ èíñòðóìåíòàìè ðàçðàáîòêè ïðîãðàìì.
q
Ïîäãîòàâëèâàþò è îáåñïå÷èâàþò ðàáîòó êîìïüþòåðîâ è ñåòåé, èñïîëüçóåìûõ äðóãèìè ïðîãðàììèñòàìè.
q
Ïèøóò ïðîãðàììíûé êîä.
q
Ïèøóò äîêóìåíòàöèþ ê ïðîãðàììíîìó êîäó.
q
Ñîçäàþò áàçû äàííûõ äëÿ õðàíåíèÿ èíôîðìàöèè, êîòîðàÿ èñïîëüçóåòñÿ ïðîãðàììàìè èëè ñîçäàåòñÿ èìè.
q
Êîíòðîëèðóþò ñîçäàíèå ýëåìåíòîâ îôîðìëåíèÿ è ãðàôèêè.
q
Êîíòðîëèðóþò ââîä äàííûõ â áàçû äàííûõ.
q
Òåñòèðóþò ïðîãðàììíûé êîä è ïðîâåðÿþò ïðàâèëüíîñòü åãî ðàáîòû.
q
Ïîäãîòàâëèâàþò ïðîãðàììû ê óñòàíîâêå íà êîìïüþòåðû ïîëüçîâàòåëåé èëè ñåðâåðû.
q
Ðåøàþò, êàêèå íîâûå âîçìîæíîñòè äîáàâèòü â ïðîãðàììó.
Ïðîãðàììû â ïîâñåäíåâíîé æèçíè
Âîïðîñû äëÿ ðàçìûøëåíèÿ 1. Ñ ïîìîùüþ Èíòåðíåòà
èëè äðóãèõ ðåñóðñîâ âûÿñíèòå, êàêîâà çàðïëàòà ó ïðîãðàììèñòîâ è äðóãèõ ñïåöèàëèñòîâ ïî êîìïüþòåðàì â ìåñòå, ãäå âû æèâåòå. 2. Êàêèå êîìïàíèè ðàçðàáîò÷èêè ïðîãðàììíîãî îáåñïå÷åíèÿ âû çíàåòå?
9
q
Èñïðàâëÿþò îøèáêè.
íàéäåííûå
ïîëüçîâàòåëÿìè
q
Îáó÷àþò ïîëüçîâàòåëåé ðàáîòå ñ ïðîãðàììîé.
q
Ïèøóò äîêóìåíòàöèþ è îáó÷àþùèå ìàòåðèàëû ê ïðîãðàììå.
Êàê âèäèòå, íàïèñàíèå ïðîãðàììíîãî êîäà ýòî òîëüêî îäíà èç ìíîæåñòâà âåùåé, êîòîðûìè çàíèìàþòñÿ ïðîãðàììèñòû.
1.3. ×òî òàêîå ïðîãðàììà Êîìïüþòåðíàÿ ïðîãðàììà ñîñòîèò èç ñòðîê êîäà, çàïèñàííîãî íà ñïåöèàëüíîì ÿçûêå, ïðèáëèæåííîì ê îáû÷íîìó ÷åëîâå÷åñêîìó ÿçûêó. Ïðîãðàììó ìîæíî ïèñàòü íà îäíîì èç ìíîæåñòâà ÿçûêîâ ÿçûê ìîæíî âûáèðàòü ïî åãî âîçìîæíîñòÿì è ïîòðåáíîñòÿì âàøåé ïðîãðàììû. Êîãäà ïðîãðàììà íàïèñàíà, îíà êîìïèëèðóåòñÿ ïðåîáðàçóåòñÿ â ÿçûê, ïîíÿòíûé êîìïüþòåðó, ÷òîáû êîìïüþòåð ñìîã åå âûïîëíèòü. Íà îäíîì è òîì æå ÿçûêå ïðîãðàììèðîâàíèÿ ìîæíî ïèñàòü ïðîãðàììû ðàçíûõ òèïîâ. Íàïðèìåð, ìîæíî íàïèñàòü èãðó, ïðîãðàììó äëÿ ïðîñìîòðà ðèñóíêîâ â âèäå ñëàéä-øîó è ïðîãðàììó, ïðîñ÷èòûâàþùóþ òðàåêòîðèþ ðàêåòû, âñå íà îäíîì è òîì æå ÿçûêå ïðîãðàììèðîâàíèÿ. Ýòè ïðîãðàììû äåëàåò ðàçíûìè êîä, êîòîðûé âû íàïèøåòå, èìåííî îí ïðèäàåò ïðîãðàììàì ðàçíóþ ôóíêöèîíàëüíîñòü. Êîä, êîòîðûé âû ïèøåòå, îïðåäåëÿåò, ÷òî ïðîãðàììà áóäåò äåëàòü. Êîä îïðåäåëÿåò, ÷òî ïðîèçîéäåò, êîãäà âû íàæìåòå êíîïêó èëè âûáåðåòå ïóíêò â ñïèñêå. Âàø êîä îáåñïå÷èâàåò «ðàçóì» ïðîãðàììû îí îïðåäåëÿåò, êàê ïðîãðàììà áóäåò ïðèíèìàòü ðåøåíèÿ, ñêîëüêî ðàç îíà áóäåò âûïîëíÿòü êàêèå-òî äåéñòâèÿ è êàêèå âû÷èñëåíèÿ îíà áóäåò ïðîèçâîäèòü. Ìîæíî íàïèñàòü êîä äëÿ âûïîëíåíèÿ ðàñ÷åòîâ, íàïèñàíèÿ òåêñòà, ðåàãèðîâàíèÿ íà äåéñò-
10
Ïåðâûå êîìïüþòåðíûå ïðîãðàììû ïðèõîäèëîñü ïèñàòü íà ìàøèííîì ÿçûêå. Ïîñòåïåííî áûëè ñîçäàíû ìàøèííî-íåçàâèñèìûå ÿçûêè ïðîãðàììèðîâàíèÿ, èñïîëüçîâàâøèåñÿ äëÿ ðåøåíèÿ ðàçíûõ çàäà÷: q FORTRAN
(ðàñøèôðîâûâàåòñÿ êàê FORmula TRANslator òðàíñëÿòîð ôîðìóë) ÿçûê, ïðåäíàçíà÷åííûé äëÿ íàó÷íûõ è òåõíè÷åñêèõ ðàñ÷åòîâ.
q COBOL
(ðàñøèôðîâûâàåòñÿ êàê COmmon BusinessOriented Language ñòàíäàðòíûé ÿçûê äëÿ äåëîâîãî ïðèìåíåíèÿ) ÿçûê â îñíîâíîì, ïðåäíàçíà÷àâøèéñÿ äëÿ êîììåð÷åñêèõ ïðèëîæåíèé, îáðàáàòûâàâøèõ áîëüøèå îáúåìû íå÷èñëîâûõ äàííûõ.
q LISP
(ðàñøèôðîâûâàåòñÿ êàê List Processing îáðàáîòêà ñïèñêîâ) ÿçûê, ñîçäàííûé äëÿ èññëåäîâàíèé â îáëàñòè èñêóññòâåííîãî èíòåëëåêòà.
Ãëàâà 1 âèÿ ïîëüçîâàòåëÿ, ñáîðà äàííûõ èëè ïîêàçà èíôîðìàöèè íà ýêðàíå. Ïèñàòü êîä íå òàê óæ ïðîñòî, íî ýòî ìîæåò îêàçàòüñÿ î÷åíü èíòåðåñíî è çàõâàòûâàþùå. Èçó÷èâ ÿçûê ïðîãðàììèðîâàíèÿ, âû ïîëó÷èòå íîâîå ñðåäñòâî âûðàæåíèÿ ñâîåãî ñòðåìëåíèÿ òâîðèòü, èññëåäîâàòü, ðåøàòü ïðîáëåìû è èãðàòü. Ïðîãðàììèðîâàíèå ïîõîæå íà ðàáîòó ñ ãëèíîé, ìåòàëëîì èëè ìàòåìàòèêîé.
1.4. Âîçìîæíîñòè ÿçûêîâ ïðîãðàììèðîâàíèÿ Êîìïüþòåðíûå ÿçûêè èñïîëüçóþòñÿ ïðàêòè÷åñêè äëÿ òîãî æå, äëÿ ÷åãî è îáû÷íûå ÷åëîâå÷åñêèå ÿçûêè, äëÿ ñîîáùåíèé. Îíè ïîçâîëÿþò ñîîáùèòü êîìïüþòåðó, ÷òî îí äîëæåí äåëàòü, ÷òîáû ðåøèòü çàäà÷ó. Çíàåòå ëè âû, ÷òî ïîñòîÿííî ïîÿâëÿþòñÿ íîâûå ÿçûêè ïðîãðàììèðîâàíèÿ? Çà ïîñëåäíèå 50 ëåò áûëî ñîçäàíî ìíîæåñòâî ðàçíûõ ÿçûêîâ ïðîãðàììèðîâàíèÿ. Êàê è ÷åëîâå÷åñêèå ÿçûêè, íåêîòîðûå ÿçûêè ïðîãðàììèðîâàíèÿ áîëüøå íå èñïîëüçóþòñÿ. Íà èõ ìåñòî ïðèøëè äðóãèå ÿçûêè. Íåêîòîðûå ÿçûêè ïðîãðàììèðîâàíèÿ ðàçâèâàþòñÿ è èñïîëüçóþòñÿ óæå 20 èëè 30 ëåò. Ïðè ñîçäàíèè íîâîãî ÿçûêà ïðîãðàììèðîâàíèÿ îáû÷íî áåðóòñÿ ëó÷øèå ÷åðòû è âîçìîæíîñòè óæå ñóùåñòâóþùèõ ÿçûêîâ, ê íèì äîáàâëÿåòñÿ ÷òî-òî íîâîå, è ïîëó÷àåòñÿ íîâûé ÿçûê. Ñîâðåìåííûå ÿçûêè ïðîãðàììèðîâàíèÿ ó÷èòûâàþò èçìåíåíèÿ â êîìïüþòåðàõ è ðàçâèòèå ðàíåå ñîçäàííûõ ïðîãðàìì. Ïåðâûå êîìïüþòåðíûå ïðîãðàììû ïðèõîäèëîñü ïèñàòü íà ìàøèííîì ÿçûêå, äëÿ òîãî ÷òîáû èõ ñðàçó ïîíèìàë êîìïüþòåð. Ýòè ïðîãðàììû ïðåäñòàâëÿëè ñîáîé äëèííûå ïîñëåäîâàòåëüíîñòè åäèíèö è íóëåé. Ýòî áûëî î÷åíü íåóäîáíî! Ïîýòîìó áûëè ñîçäàíû ïðîãðàììû, íàçâàííûå êîìïèëÿòîðàìè. Êîìïèëÿòîðû ìîãëè ïðåîáðàçîâûâàòü â
Ïðîãðàììû â ïîâñåäíåâíîé æèçíè q BASIC
(ðàñøèôðîâûâàåòñÿ êàê Beginners All-Purpose Symbolic Instruction Code óíèâåðñàëüíûé ÿçûê ñèìâîëüíûõ èíñòðóêöèé äëÿ íà÷èíàþùèõ) ÿçûê, îòëè÷àþùèéñÿ ïðîñòîòîé èñïîëüçîâàíèÿ. q Pascal (íàçâàí åãî ñîçäàòåëåì Âèðòîì â ÷åñòü âåëèêîãî ôèçèêà Áëåçà Ïàñêàëÿ) ÿçûê, ïîçâîëÿþùèé ëåãêî êîäèðîâàòü îñíîâíûå àëãîðèòìè÷åñêèå ñòðóêòóðû. Çàòåì ïîÿâèëèñü íîâûå ÿçûêè, ñ òåìè èëè èíûìè ïðåèìóùåñòâàìè íàä ñóùåñòâîâàâøèìè ðàíåå. Âîò íåñêîëüêî ïðèìåðîâ: q C è Ñ++ ÿçûêè, ïîçâîëÿþùèå ñîçäàâàòü áûñòðî è ýôôåêòèâíî âûïîëíÿþùèéñÿ ïðîãðàììíûé êîä. q Java ÿçûê, îáåñïå÷èâàþùèé ïëàòôîðìåííóþ íåçàâèñèìîñòü, ò. å. ïîçâîëÿþùèé ñîçäàâàòü ïðîãðàììû, êîòîðûå âûïîëíÿþòñÿ â ñðåäå ðàçëè÷íûõ îïåðàöèîííûõ ñèñòåì. Íà ñëåäóþùåì ýòàïå ðàçâèòèÿ áûëè ñîçäàíû îáúåêòíîîðèåíòèðîâàííûå ÿçûêè ïðîãðàììèðîâàíèÿ, ïîçâîëÿþùèå âèçóàëüíî êîíñòðóèðîâàòü ãðàôè÷åñêèé èíòåðôåéñ ïðèëîæåíèé:
11
ïîíÿòíóþ êîìïüþòåðó ôîðìó êîä, íàïèñàííûé íà áîëåå óäîáíûõ äëÿ ëþäåé ÿçûêàõ. Ïî÷òè âñå ñîâðåìåííûå ÿçûêè ïðîãðàììèðîâàíèÿ êîìïèëèðóåìûå. Ýòî çíà÷èò, ÷òî íàïèñàííûå íà íèõ ïðîãðàììû, íàïîìèíàþùèå îáû÷íûé àíãëèéñêèé òåêñò, ïðåîáðàçóþòñÿ â ïîíÿòíûé êîìïüþòåðó âèä. Íà÷èíàÿ íîâûé ïðîåêò, âû äîëæíû ðåøèòü, êàêîé ÿçûê ïðîãðàììèðîâàíèÿ áóäåòå èñïîëüçîâàòü. Åñòü ëè ó âûáðàííîãî ÿçûêà âñå íóæíûå âîçìîæíîñòè? Ëåãêî ëè åãî èñïîëüçîâàòü? Çíàåòå ëè âû ýòîò ÿçûê? Óñòàíîâëåí ëè îí íà âàøåì êîìïüþòåðå? Çíàòü áîëüøå îäíîãî ÿçûêà ïðîãðàììèðîâàíèÿ íèêîãäà íå âðåäíî!  ýòîì ïîñîáèè áóäåò èçó÷àòüñÿ Visual Basic .NET, íî áóäåò ðàññêàçàíî òàêæå íåìíîãî è î J# è C#.
1.5. Ñèíòàêñèñ ÿçûêîâ ïðîãðàììèðîâàíèÿ  ïóòåøåñòâèÿõ âàì ìîæåò ïîíàäîáèòüñÿ íàéòè ÷åëîâåêà, ðàçãîâàðèâàþùåãî ïî-àíãëèéñêè. Íà ëþáîì ÿçûêå ìîæíî ñôîðìóëèðîâàòü âîïðîñ «Ãîâîðèòå ëè âû ïî-àíãëèéñêè?» Íàïðèìåð: Àíãëèéñêèé: Do you speak English? Íåìåöêèé: Sprechen Sie Englisch? Èñïàíñêèé: Habla ingles? Ïîðòóãàëüñêèé: Você fala inglås?  ýòèõ ïðèìåðàõ îòëè÷àþòñÿ íå òîëüêî ñëîâà, íî è ïîðÿäîê ñëîâ â ïðåäëîæåíèÿõ ñóùåñòâèòåëüíûå, ãëàãîëû è ìåñòîèìåíèÿ ðàñïîëîæåíû ïî-ðàçíîìó. Ñëîâà è ïîðÿäîê èõ ðàçìåùåíèÿ îáðàçóþò ñèíòàêñèñ ÿçûêà. Ñèíòàêñèñ ÿçûêà îïðåäåëÿåò ïðàâèëà, ïîçâîëÿþùèå ñîñòàâëÿòü ïðàâèëüíûå ïðåäëîæåíèÿ íà ýòîì ÿçûêå.
12
Ãëàâà 1
q Visual Basic ÿçûê,
ñîçäàííûé êîðïîðàöèåé Microsoft äëÿ ðàçðàáîòêè ïðèëîæåíèé ñ ãðàôè÷åñêèì èíòåðôåéñîì â ñðåäå îïåðàöèîííîé ñèñòåìû Windows.
q Delphi ñðåäà
ðàçðàáîòêè (ÿçûê Object Pascal), ñîçäàííàÿ êîìïàíèåé Borland äëÿ ðàçðàáîòêè ïðèëîæåíèé ñ ãðàôè÷åñêèì èíòåðôåéñîì â ñðåäå îïåðàöèîííîé ñèñòåìû Windows.
 íàñòîÿùåå âðåìÿ ìíîãèå ïðîãðàììèñòû âûáèðàþò èíòåãðèðîâàííóþ ñèñòåìó ïðîãðàììèðîâàíèÿ Visual Studio .NET íà ïëàòôîðìå .NET Framework, êîòîðàÿ ïðåäîñòàâëÿåò âîçìîæíîñòü ñîçäàâàòü ïðèëîæåíèÿ íà ðàçëè÷íûõ ÿçûêàõ îáúåêòíîîðèåíòèðîâàííîãî ïðîãðàììèðîâàíèÿ, â òîì ÷èñëå òàêèõ, êàê: q Visual Basic .NET
ìîùíûé è ïðîñòîé â ïðèìåíåíèè ÿçûê.
q J# (÷èòàåòñÿ J-øàðï)
ÿçûê, ñîçäàííûé íà îñíîâå ÿçûêà Java.
q C# (÷èòàåòñÿ
C-øàðï) ÿçûê, ñîçäàííûé íà îñíîâå ÿçûêîâ C è C++.
Êàê è ó ÷åëîâå÷åñêèõ ÿçûêîâ, ó ëþáîãî ÿçûêà ïðîãðàììèðîâàíèÿ òîæå åñòü ñèíòàêñèñ. Ñèíòàêñèñ ýòî ñëîâàðü, íàáîð ãðàììàòè÷åñêèõ ïðàâèë è ñòðóêòóð, îáðàçóþùèõ ÿçûê ïðîãðàììèðîâàíèÿ. Ñèíòàêñèñ îïðåäåëÿåò ïðàâèëà íàïèñàíèÿ ïðàâèëüíûõ ñòðîê êîäà è îáúåäèíåíèÿ ýòèõ ñòðîê â ðàáîòàþùóþ ïðîãðàììó. Íàïðèìåð, âî âñåõ ñîâðåìåííûõ ÿçûêàõ ïðîãðàììèðîâàíèÿ åñòü îïåðàòîð If...Then...Else. Îïåðàòîð If...Then...Else îäèí èç ñïîñîáîâ, ïîçâîëÿþùèõ ïðîãðàììå ïðèíÿòü ðåøåíèå, èñõîäÿ èç èìåþùåéñÿ ó íåå èíôîðìàöèè. Ðàññìîòðèì ïðèìåð ðàçíîãî ñèíòàêñèñà îïåðàòîðîâ If...Then... Else â ÿçûêàõ Visual Basic .NET, C# è J#. Íå âîëíóéòåñü, åñëè âû íå ïîíèìàåòå, ÷òî îçíà÷àþò ýòè îïåðàòîðû. Ïðîñòî ïîêà îáðàòèòå âíèìàíèå íà ïîõîæèå ýëåìåíòû è ðàçëè÷èÿ ìåæäó ðàçíûìè ÿçûêàìè. Ýòè ðàçëè÷èÿ îïðåäåëÿþòñÿ ñèíòàêñèñîì ðàçíûõ ÿçûêîâ. Íà Visual Basic .NET: If x>5 Then MessageBox.Show("ß áîëüøå 5.") Else MessageBox.Show ("ß íå áîëüøå 5.") End If
Íà C#: if (x>5) { MessageBox.Show ("ß áîëüøå 5."); } else { MessageBox.Show ("ß íå áîëüøå 5."); }
Ïðîãðàììû â ïîâñåäíåâíîé æèçíè
13
Íà J#:
Âîïðîñû äëÿ ðàçìûøëåíèÿ 1. Ïðîàíàëèçèðóéòå ïðè-
âåäåííûé ïðèìåð.  êàêèõ ÿçûêàõ ïðîãðàììèðîâàíèÿ ñèíòàêñèñ îïåðàòîðà îäèíàêîâ, à êàêèõ ðàçëè÷àåòñÿ?
Ðàññìîòðèì íåêîòîðûå ýëåìåíòû ñèíòàêñèñà, îäèíàêîâûå â ÿçûêàõ C# è J#.  C# è J# êàæäàÿ ñòðîêà êîäà çàêàí÷èâàåòñÿ òî÷êîé ñ çàïÿòîé. Áëîêè êîäà ïîìåùàþòñÿ â ôèãóðíûå ñêîáêè, ò. å. ñèìâîëû { è }. Ñòðîêà êîììåíòàðèÿ íà÷èíàåòñÿ ñ ñèìâîëîâ //. ßçûê C# è J# ÷óâñòâèòåëåí ê ðåãèñòðó ñèìâîëîâ. MyCase â íèõ ýòî íå òî æå ñàìîå, ÷òî myCase èëè MYCASE.
if (x>5) { MessageBox.Show ("ß áîëüøå 5."); } else { MessageBox.Show ("ß íå áîëüøå 5."); }
Èçó÷àÿ ÿçûê ïðîãðàììèðîâàíèÿ, íóæíî èçó÷èòü åãî ñèíòàêñèñ, ñòðóêòóðó è ïðàâèëà íàïèñàíèÿ ïðîãðàìì. Íóæíî çíàòü ïðàâèëà ïóíêòóàöèè ÿçûêà, à òàêæå åãî çàðåçåðâèðîâàííûå ñëîâà. Ýòè ñëîâà íàçûâàþòñÿ çàðåçåðâèðîâàííûìè, ïîòîìó ÷òî îíè èñïîëüçóþòñÿ òîëüêî êàê êîìàíäû ÿçûêà. Çàðåçåðâèðîâàííûå ñëîâà, íàçûâàåìûå òàêæå êëþ÷åâûìè ñëîâàìè, èìåþò îñîáîå çíà÷åíèå è îáû÷íî âûïîëíÿþò ñïåöèàëüíûå ôóíêöèè îíè óêàçûâàþò ïðîãðàììå, ÷òî äåëàòü. Íàïðèìåð, ñëîâà If è Else ÿâëÿþòñÿ çàðåçåðâèðîâàííûìè â áîëüøèíñòâå ÿçûêîâ ïðîãðàììèðîâàíèÿ. Îíè èñïîëüçóþòñÿ â îïåðàòîðàõ ïðèíÿòèÿ ðåøåíèé â ïðîãðàììàõ. Èçó÷àÿ ÿçûê ïðîãðàììèðîâàíèÿ, íóæíî èçó÷àòü íå òîëüêî ñèíòàêñèñ, íî è ôóíêöèîíàëüíîñòü è âîçìîæíîñòè ýòîãî ÿçûêà. Íå çàáûâàéòå, ÷òî íå íà ëþáîì ÿçûêå ïðîãðàììèðîâàíèÿ ìîæíî ñäåëàòü ÷òî óãîäíî. Íî âî âñåõ ñîâðåìåííûõ ÿçûêàõ ïðîãðàììèðîâàíèÿ åñòü îñíîâíûå ôóíêöèîíàëüíûå âîçìîæíîñòè, êîòîðûå ìîæíî èñïîëüçîâàòü. Ïðèâåäåì íåêîòîðûå ýëåìåíòû ñèíòàêñèñà ÿçûêà Visual Basic .NET: q
Êîíöû ñòðîê êîäà íå ïîìå÷àþòñÿ ñïåöèàëüíûìè ñèìâîëàìè, íàïðèìåð òî÷êîé ñ çàïÿòîé (;).
q
Ñòðîêè êîììåíòàðèåâ íà÷èíàþòñÿ ñ ñèìâîëà «àïîñòðîô» (').
14
Ãëàâà 1
Âîïðîñû äëÿ ðàçìûøëåíèÿ 1. Î êàêèõ ðàçëè÷èÿõ ñèíòàêñèñà ÿçûêîâ ïðîãðàììèðîâàíèÿ Visual Basic .NET, C# è J# âû óçíàëè?
q
Äëÿ âûäåëåíèÿ áëîêîâ êîäà íå èñïîëüçóþòñÿ ôèãóðíûå ñêîáêè { è }.
q
Visual Basic .NET ÍÅ ÷óâñòâèòåëåí ê ðåãèñòðó. MyCase ýòî òî æå ñàìîå, ÷òî è myCase èëè MYCASE.  Visual Basic ýòè òðè îáîçíà÷åíèÿ ñ÷èòàþòñÿ îäèíàêîâûìè.
Òåñò ïî òåìå «Ïðîãðàììû â ïîâñåäíåâíîé æèçíè» 1.
Ñèíòàêñèñ ÿçûêà ïðîãðàììèðîâàíèÿ, â ÷àñòíîñòè, îïðåäåëÿåò m
Ñëîâàðü, ïðàâèëà çàïèñè îïåðàòîðîâ è ñòðóêòóðû ÿçûêà
m
Ïîñëåäîâàòåëüíîñòü ñòðîê ïðîãðàììû
m
Òèï ÿçûêà ïðîãðàììèðîâàíèÿ
m
Âûáîð êîìïèëÿòîðà
2.
×òî ïðîèñõîäèò ñ ïðîãðàììîé ïðè êîìïèëÿöèè? m
Ñîõðàíåíèå ïðîãðàììû íà æåñòêîì äèñêå
m
Ïåðåâîä ïðîãðàììû íà äðóãîé ìàøèííî-íåçàâèñèìûé ÿçûê ïðîãðàììèðîâàíèÿ
m
Ïðåîáðàçîâàíèå ïðîãðàììíîãî êîäà â ïîíÿòíóþ êîìïüþòåðó ôîðìó
m
Ïðåîáðàçîâàíèå ïðîãðàììíîãî êîäà â ïîíÿòíóþ ÷åëîâåêó ôîðìó
3.
Ìíîæåñòâî ÿçûêîâ ïðîãðàììèðîâàíèÿ ïîÿâèëîñü ïîòîìó, ÷òî m
Ó÷åíûì íóæíî ÷òî-òî äåëàòü
m
Êàæäûé ÿçûê ïðåäíàçíà÷åí äëÿ ðåøåíèÿ çàäà÷ îïðåäåëåííîãî òèïà
m
Êàæäîé êîìïüþòåðíîé ôèðìå íóæåí ñâîé ÿçûê ïðîãðàììèðîâàíèÿ
m
Êàæäîé ñòðàíå íóæåí ñâîé ÿçûê ïðîãðàììèðîâàíèÿ
4.
Ïðîãðàììà íà ñîâðåìåííîì ÿçûêå ïðîãðàììèðîâàíèÿ ñîñòîèò èç m
Ïîñëåäîâàòåëüíîñòåé íóëåé è åäèíèö
m
Ñòðîê êîäà, íàïèñàííîãî íà ÿçûêå, ïðèáëèæåííîì ê ÷åëîâå÷åñêîìó
m
Ìàòåìàòè÷åñêèõ ôîðìóë
m
Ëîãè÷åñêèõ ôîðìóë
Ãëàâà 2
Ñèñòåìà ïðîãðàììèðîâàíèÿ Visual Basic .NET 2.1. Visual Basic .NET è IDE 2.2. Çàïóñê è íàñòðîéêà Visual Basic .NET 2.3. Ñîçäàíèå ïåðâîãî ïðîåêòà 2.4. Êîíñòðóèðîâàíèå ãðàôè÷åñêîãî èíòåðôåéñà ïðîåêòà 2.5. Ñîçäàíèå ïðîãðàììíîãî êîäà ïðîåêòà 2.6. Ïîñòðîåíèå ðåøåíèÿ 2.7. Çàïóñê ïðîåêòà 2.8. Ñîõðàíåíèå ïðîåêòà 2.9. Âûâîä ñîîáùåíèé íà ôîðìó ßçûê BASIC (Beginners All-Purpose Symbolic Instruction Code) ïðîñòîé ÿçûê ïðîãðàììèðîâàíèÿ äëÿ íà÷èíàþùèõ áûë ñîçäàí â 1964 ãîäó.  1975 ãîäó Áèëë Ãåéòñ è Ïîë Àëëåí ðàçðàáîòàëè èíòåðïðåòàòîð ÿçûêà BASIC äëÿ ïåðñîíàëüíûõ êîìïüþòåðîâ. Çàòåì â ñåðåäèíå 80-õ ãîäîâ XX âåêà ïîÿâèëàñü ñèñòåìà ïðîãðàììèðîâàíèÿ Microsoft Quick BASIC, à â 1991 ãîäó ñèñòåìà ïðîãðàììèðîâàíèÿ è ÿçûê Visual Basic.
Ñèñòåìà ïðîãðàììèðîâàíèÿ Visual Basic .NET
17
2.1. Visual Studio .NET è IDE Ìåæäó ïðî÷èì, ìîæíî íàáèðàòü òåêñòû ïðîãðàìì â îáû÷íîì òåêñòîâîì ðåäàêòîðå âðîäå Notepad èëè Microsoft Word. Ïðàâäà, ïèñàòü ïðîãðàììû òàêèì îáðàçîì î÷åíü íåóäîáíî.
Ñèñòåìà ïðîãðàììèðîâàíèÿ Microsoft Visual Studio .NET ýòî èíñòðóìåíò ðàçðàáîòêè ïðîãðàìì, ïîçâîëÿþùèé ïèñàòü ïðîãðàììû íà íåñêîëüêèõ ÿçûêàõ ïðîãðàììèðîâàíèÿ, èçâåñòíûõ êàê ÿçûêè .NET. Âìåñòå ñ Visual Studio .NET ïîñòàâëÿþòñÿ ñëåäóþùèå ÿçûêè .NET: q
Visual Basic .NET
q
C# (ïðîèçíîñèòñÿ Ñè-øàðï)
q
J# (ïðîèçíîñèòñÿ Äæåé-øàðï)
q
C++ (ïðîèçíîñèòñÿ Cè ïëþñ ïëþñ)
q
ASP .NET (äëÿ ñîçäàíèÿ web-ñòðàíèö)
Äëÿ ðàáîòû ñî âñåìè ýòèìè ÿçûêàìè Visual Studio .NET ïðåäîñòàâëÿåò îäèí è òîò æå èíòåðôåéñ IDE. IDE ðàñøèôðîâûâàåòñÿ êàê Integrated Development Environment (Èíòåãðèðîâàííàÿ ñðåäà ðàçðàáîòêè). Èíòåãðèðîâàííàÿ ñðåäà ðàçðàáîòêè Visual Studio .NET îáëåã÷àåò ðàçðàáîòêó ïðîãðàìì. Íàïðèìåð, åñëè âû äîáàâëÿåòå íà ôîðìó êíîïêó, ñèñòåìà ïðîãðàììèðîâàíèÿ Visual Studio .NET àâòîìàòè÷åñêè ñîçäàåò êîä äëÿ ýòîé êíîïêè. Êîíå÷íî, Visual Studio .NET íå ìîæåò íàïèñàòü çà âàñ âåñü êîä, òàê êàê ñèñòåìà ïðîãðàììèðîâàíèÿ íå çíàåò, ÷òî äîëæíà äåëàòü âàøà ïðîãðàììà. Íî ñèñòåìà ïðîãðàììèðîâàíèÿ, áåçóñëîâíî, ìîæåò óìåíüøèòü îáúåì êîäà (è çàòðàòû âðåìåíè), êîòîðûé âàì ïðèõîäèòñÿ ïèñàòü ñîáñòâåííîðó÷íî. Ñèñòåìà ïðîãðàììèðîâàíèÿ Visual Studio .NET ïîìîãàåò îáíàðóæèâàòü è èñïðàâëÿòü îøèáêè äî çàïóñêà ïðîãðàììû. Îíà àâòîìàòè÷åñêè ðàñêðàøèâàåò êîä â çàâèñèìîñòè îò íàçíà÷åíèÿ ýòîãî êîäà. Íàïðèìåð, êîììåíòàðèè âñåãäà îòîáðàæàþòñÿ çåëåíûì öâåòîì, êëþ÷åâûå ñëîâà ñèíèì, à ñèíòàêñè÷åñêèå îøèáêè ïîä÷åðêèâàþòñÿ âîëíèñòîé êðàñíîé ëèíèåé.
18
Ãëàâà 2 Visual Studio .NET ïîìîãàåò óïîðÿäî÷èâàòü êîä, õðàíÿ åãî â íåñêîëüêèõ îòäåëüíûõ ôàéëàõ. Ýòî ïîçâîëÿåò ðàçäåëèòü ïðîãðàììó íà ôóíêöèîíàëüíûå áëîêè. Íàïðèìåð, êîä êàæäîé ôîðìû ìîæíî õðàíèòü â îòäåëüíîì ôàéëå. Visual Studio .NET ïîçâîëÿåò ëåãêî êîìïèëèðîâàòü è çàïóñêàòü ïðîãðàììû äëÿ ýòîãî íóæíî ñäåëàòü âñåãî íåñêîëüêî ùåë÷êîâ ìûøüþ. Ñ ïîìîùüþ óòèëèò îòëàäêè, âõîäÿùèõ â Visual Studio .NET, ìîæíî èñêàòü îøèáêè â ïðîãðàììå è îòñëåæèâàòü åå âûïîëíåíèå.  ñëåäóþùåì ïàðàãðàôå âû óçíàåòå, êàê ñ ïîìîùüþ Visual Studio .NET íàïèñàòü ïåðâóþ ïðîãðàììó. Âû âñòðåòèòå òàêæå è ïðèìåðû êîäà íà C# è J#.
2.2. Çàïóñê è íàñòðîéêà Visual Studio .NET ×òîáû çàïóñòèòü Visual Studio .NET 2003:
1. Ùåëêíèòå íà êíîïêå Ïóñê. 2. Âûáåðèòå ïóíêò Ïðîãðàììû. 3. Âûáåðèòå ïóíêò Microsoft Visual Studio .NET 2003.
4. Âûáåðèòå ïóíêò Microsoft Visual Studio .NET 2003.
Íà Ðàáî÷åì ñòîëå ìîæíî ñîçäàòü çíà÷îê äëÿ áûñòðîãî çàïóñêà Visual Studio. Îí ïîçâîëÿåò áûñòðî çàïóñòèòü Visual Studio .NET ïðîñòî ñäåëàéòå íà ýòîì çíà÷êå äâîéíîé ùåë÷îê ìûøüþ!
Ïåðâîå, ÷òî âû óâèäèòå íà ýêðàíå, çàïóñòèâ Visual Studio .NET, íà÷àëüíóþ ñòðàíèöó (Íà÷àëüíàÿ ñòðàíèöà). Ïî óìîë÷àíèþ áóäåò îòêðûòà âêëàäêà Ïðîåêòû. Îáû÷íî íà íåé ïðèâîäèòñÿ ñïèñîê íåäàâíî îòêðûâàâøèõñÿ ïðîåêòîâ (Îòêðûòèå ñóùåñòâóþùåãî ïðîåêòà). Äëÿ îòêðûòèÿ ñóùåñòâóþùåãî ïðîåêòà ùåëêíóòü ïî êíîïêå Îòêðûòü ïðîåêò, à äëÿ íà÷àëà ñîçäàíèÿ íîâîãî ïðîåêòà ùåëêíóòü ïî êíîïêå Ñîçäàòü ïðîåêò.
Ñèñòåìà ïðîãðàììèðîâàíèÿ Visual Basic .NET
19
Âêëàäêà Ìîé ïðîôèëü ïîçâîëÿåò íàñòðîèòü Visual Studio .NET ïîä âàø ñòèëü ðàáîòû, ñîîòâåòñòâåííî âàøèì ïðåäïî÷òåíèÿì. 1. Ùåëêíèòå ïî ÿðëû÷êó âêëàäêè Ìîé ïðîôèëü.
20
Ãëàâà 2 2. Â ïîÿâèâøåìñÿ äèàëîãîâîì îêíå â âûïàäàþ-
ùåì ñïèñêå Ïðîôèëü: âûáåðèòå ïóíêò Ðàçðàáîò÷èê íà Visual Studio.
3. Óáåäèòåñü, ÷òî â âûïàäàþùèõ ñïèñêàõ âûáðàíû íàñòðîéêè ïî óìîë÷àíèþ:
q
Ñõåìà êëàâèàòóðû: [Ïàðàìåòðû ïî óìîë÷àíèþ]
q
Ìàêåò îêíà: Visual Studio ïî óìîë÷àíèþ
q
Îòáîð ðàçäåëîâ: (áåç ôèëüòðà)
4. Â ïóíêòå Îòîáðàçèòü ðàçäåëû âûáåðèòå îïöèþ Èíòåãðèðîâàííàÿ ñïðàâêà.
5.  âûïàäàþùåì ñïèñêå Ïðè çàïóñêå âûáåðèòå ïóíêò Ïîêàçàòü íà÷àëüíóþ ñòðàíèöó.
6. Ïåðåéäèòå íà âêëàäêó Ïðîåêòû, ùåëêíóâ ïî åå ÿðëû÷êó â âåðõíåé ÷àñòè ñòðàíèöû.
2.3. Ñîçäàíèå ïåðâîãî ïðîåêòà Òåïåðü, íàñòðîèâ ñèñòåìó ïðîãðàììèðîâàíèÿ Visual Studio .NET, ìû ðàçáåðåìñÿ ñ âêëàäêîé Ïðîåêòû. Ýòà âêëàäêà, êàê óæå ãîâîðèëîñü â § 2.2, ïîçâîëÿåò è ñîçäàâàòü íîâûå ïðîåêòû, è îòêðûâàòü óæå ñóùåñòâóþùèå. Êîãäà âû ñîçäàäèòå ñâîé ïåðâûé ïðîåêò, îí ïîÿâèòñÿ â ñïèñêå ñóùåñòâóþùèõ ïðîåêòîâ. ×òîáû îòêðûòü ñóùåñòâóþùèé ïðîåêò, íóæíî âûáðàòü åãî èç ñïèñêà ùåë÷êîì ìûøüþ. À òåïåðü ïðèñòóïèì ê ñîçäàíèþ ïåðâîãî ïðîåêòà «Ïðèâåò, Ìèð». Ýòîò ïðîåêò âûâåäåò íà ýêðàí îêíî ñ ñîîáùåíèåì "Ïðèâåò, Ìèð".
1. Ùåëêíèòå íà êíîïêå Íîâûé ïðîåêò, ÷òîáû ñîçäàòü íîâûé ïðîåêò. Îòêðîåòñÿ äèàëîãîâîå îêíî Ñîçäàòü ïðîåêò.
Ñèñòåìà ïðîãðàììèðîâàíèÿ Visual Basic .NET
21
 îêíå Ñîçäàòü ïðîåêò âû óâèäèòå, ÷òî â ëåâîé ÷àñòè, â ïàíåëè Òèïû ïðîåêòîâ: ïåðå÷èñëåíî ìíîæåñòâî òèïîâ ïðîåêòîâ, êîòîðûå ìîæíî ñîçäàâàòü â Visual Studio .NET. Ñ íåêîòîðûìè èç ýòèõ òèïîâ âû âñêîðå ïîçíàêîìèòåñü. Ïðîåêò «Ïðèâåò, Ìèð» áóäåò ïðèëîæåíèåì Windows, ïîýòîìó â ïðàâîé ÷àñòè îêíà (ïàíåëü Øàáëîíû:) íåîáõîäèìî âûáðàòü øàáëîí Ïðèëîæåíèå Windows.  îêíå Ñîçäàòü ïðîåêò íóæíî âûáðàòü íå òîëüêî òèï ïðîåêòà è øàáëîí, íî è èìÿ ïðîåêòà è ïàïêó, â êîòîðîé áóäóò ðàçìåùàòüñÿ åãî ôàéëû.
2. Âûáåðèòå òèï ïðîåêòà Ïðîåêòû Visual Basic â ïàíåëè Òèïû ïðîåêòîâ:.
3. Âûáåðèòå øàáëîí Ïðèëîæåíèå Windows â ïàíåëè Øàáëîíû:.
4. Ââåäèòå Ïðèâåò_Ìèð â êà÷åñòâå èìåíè ïðî-
åêòà â òåêñòîâîì ïîëå Èìÿ (â èìåíè ïðîåêòà ëó÷øå íå èñïîëüçîâàòü ïðîáåëû).
22
Ãëàâà 2 5. Âûáåðèòå ïàïêó, â êîòîðîé õîòèòå ñîõðàíèòü
ïðîåêò. Â ïàïêå, êîòîðóþ âû âûáðàëè äëÿ ðàçìåùåíèÿ ïðîåêòà, áóäåò ñîçäàíà íîâàÿ ïàïêà Ïðèâåò_Ìèð, è ïðîåêò "Ïðèâåò_Ìèð" áóäåò ñîõðàíåí â ñîçäàííîé ïàïêå.
6. Íàæìèòå êíîïêó OK. Îòêðîåòñÿ íîâûé ñîçäàííûé ïðîåêò, è íà ýêðàíå áóäóò îòîáðàæåíû ôîðìà Form1.vb (â ëåâîé ÷àñòè) è Solution Explorer (â ïðàâîé ÷àñòè). Íè÷åãî ñëîæíîãî, ïðàâäà?
2.4. Êîíñòðóèðîâàíèå ãðàôè÷åñêîãî èíòåðôåéñà ïðîåêòà Îêíî Êîíñòðóêòîð ôîðì (Form Design Window). ×àùå âñåãî ìû áóäåì ñîçäàâàòü ïðèëîæåíèÿ Windows, íà÷èíàþùèåñÿ ñ ôîðìû. Ôîðìà ýòî ýëåìåíò ãðàôè÷åñêîãî èíòåðôåéñà, ñ ïîìîùüþ êîòîðîãî îñóùåñòâëÿåòñÿ âçàèìîäåéñòâèå ïîëüçîâàòåëÿ ñ ïðîãðàììîé. Ôîðìà ïðåäñòàâëÿåò ñîáîé ïîëå ñ ðàçìåùàåìûìè íà íåì îáúåêòàìè ðàçíûõ òèïîâ êíîïêàìè, òåêñòîâûìè ïîëÿìè. Ïðè íàæàòèè êíîïêè çàïóñêàåòñÿ êîä, âûïîëíÿþùèé çàïëàíèðîâàííûå äåéñòâèÿ.
Ñèñòåìà ïðîãðàììèðîâàíèÿ Visual Basic .NET
Ëþáîå îêíî â Visual Studio .NET ìîæíî çàêðûòü ùåë÷êîì ïî êíîïêå ñî çíà÷êîì «õ» â âåðõíåì ïðàâîì óãëó ýòîãî îêíà. Áîëüøèíñòâî îêîí â Visual Studio .NET ìîæíî îòêðûòü ñîîòâåòñòâóþùèìè êîìàíäàìè èç ìåíþ Âèä (View). Ìîæíî àâòîìàòè÷åñêè ñêðûòü îêíî, ùåëêíóâ íà çíà÷êå â âèäå êíîïêè äëÿ êðåïëåíèÿ áóìàãè, ðàñïîëîæåííîì â âåðõíåì ïðàâîì óãëó îêíà. Ïðè àâòîìàòè÷åñêîì ñêðûòèè îêíà îíî ïåðåñòàåò îòîáðàæàòüñÿ íà ýêðàíå. Íà ïàíåëè, êîòîðàÿ îòîáðàçèòñÿ âäîëü ïðàâîãî êðàÿ îêíà, áóäóò ïðèñóòñòâîâàòü âêëàäêè äëÿ àâòîìàòè÷åñêè ñêðûòûõ îêîí. Åñëè ïîäâåñòè êóðñîð ê âêëàäêàì íà ýòîé ïàíåëè, òî ñêðûòûå îêíà áóäóò îòîáðàæàòüñÿ. Àâòîìàòè÷åñêîå ñêðûòèå îêîí î÷åíü óäîáíûé ñïîñîá óâåëè÷åíèÿ ðàáî÷åé ïëîùàäè îêíà. Åñëè ùåëêíóòü ïî çíà÷êó êíîïêè äëÿ áóìàã â îêíå, âûäâèíóâøåìñÿ èç ïàíåëè, ðåæèì àâòîìàòè÷åñêîãî ñêðûòèÿ äëÿ ýòîãî îêíà áóäåò âûêëþ÷åí.
23
 îñíîâíîé ðàáî÷åé îáëàñòè â ëåâîé ÷àñòè îêíà áóäåò îòîáðàæåíà ïóñòàÿ ôîðìà, íà êîòîðîé íåò êíîïîê è äðóãèõ îáúåêòîâ. Ýòà îáëàñòü íàçûâàåòñÿ îêíîì Êîíñòðóêòîð ôîðì. ßðëû÷îê ýòîãî îêíà ñîäåðæèò íàäïèñü Form1.vb [Design]. Îêíî Îáëàñòü ýëåìåíòîâ (Toolbox). Äîñòóï ê çíà÷èòåëüíîé ÷àñòè ôóíêöèé Visual Studio .NET âûïîëíÿåòñÿ ñ èñïîëüçîâàíèåì ðàçëè÷íûõ îêîí. Íàïðèìåð, ÷òîáû ïîìåñòèòü íà ôîðìó îáúåêòû òèïà êíîïîê è òåêñòîâûõ ïîëåé, íóæíî âîñïîëüçîâàòüñÿ îêíîì Îáëàñòü ýëåìåíòîâ.  ýòîì îêíå ñîäåðæàòñÿ âñå îáúåêòû, êîòîðûå ìîæíî ïîìåñòèòü íà ôîðìó, êíîïêè, ïåðåêëþ÷àòåëè, òåêñòîâûå ïîëÿ, âûïàäàþùèå ñïèñêè è ò. ä.
1. Îòêðîéòå ìåíþ Âèä (View) â ñòðîêå ìåíþ. 2. Âûáåðèòå ïóíêò Îáëàñòü ýëåìåíòîâ (Toolbox) îòêðîåòñÿ îêíî Îáëàñòü ýëåìåíòîâ.
3. Äâîéíûì ùåë÷êîì ïî ïóíêòó Button ïîìåñòèòå íà ôîðìó êíîïêó. (Ýòà êíîïêà ìîæåò îêàçàòüñÿ ñïðÿòàííîé ïîä îêíîì Îáëàñòü ýëåìåíòîâ.)
24
Ãëàâà 2 Ïåðåìåùåíèå êíîïêè è èçìåíåíèå åå ðàçìåðîâ. Òåïåðü, ïîìåñòèâ êíîïêó íà ôîðìó, ìû ìîæåì ïåðåìåñòèòü ýòó êíîïêó â íóæíîå íàì ìåñòî è ïðèäàòü åé òðåáóåìûé ðàçìåð.
1. Ïîäâåäèòå êóðñîð ìûøè ê êíîïêå, íàæìèòå
ëåâóþ êíîïêó ìûøè è, óäåðæèâàÿ åå íàæàòîé, ïåðåòàùèòå êíîïêó â öåíòð ôîðìû, ïîñëå ÷åãî îòïóñòèòå êíîïêó ìûøè.
2. ×òîáû èçìåíèòü ðàçìåð êíîïêè, ïîäâåäèòå
êóðñîð ìûøè ê îäíîìó èç áåëûõ êâàäðàòèêîâ âîêðóã êíîïêè (ýòî ìåòêè èçìåíåíèÿ ðàçìåðà).
3. Íàæìèòå ëåâóþ êíîïêó ìûøè, è, óäåðæè-
âàÿ åå íàæàòîé, ïåðåìåùàéòå ìåòêó, ÷òîáû ðàñòÿíóòü èëè ñæàòü êíîïêó äî òðåáóåìîãî ðàçìåðà. Íè÷åãî ñëîæíîãî, ïðàâäà? Òåïåðü ìû äîáàâèì êîä, êîòîðûé çàñòàâèò ïðîãðàììó âûïîëíÿòü äåéñòâèÿ ïðè íàæàòèè ýòîé êíîïêè.
2.5. Ñîçäàíèå ïðîãðàììíîãî êîäà ïðîåêòà Êîãäà ìû äîáàâèëè êíîïêó íà ôîðìó, Visual Studio .NET àâòîìàòè÷åñêè äîáàâèë ê êîäó ýòîé ôîðìû íåñêîëüêî íîâûõ ñòðîê. Âçãëÿíèòå íà ïðèìåð íèæå.
Ñèñòåìà ïðîãðàììèðîâàíèÿ Visual Basic .NET
25
Public Class Form1 Inherits System.Windows.Forms.Form Êîä, àâòîìàòè÷åñêè ñîçäàííûé êîíñòðóêòîðîì ôîðì Windows Private Sub Button1_Click(ByVal sender As_ System.Object, ByVal e As System.EventArgs)_ Handles Button1.Click End Sub End Class
Íåïîíÿòíî? Ìû ðàçáåðåìñÿ ñî âñåì, ÷òî çäåñü íàïèñàíî, íåìíîãî ïîçæå. À ïîêà ïðîñòî íàéäèòå ôðàãìåíò êîäà ñî ñëîâîì Button1_Click. Ýòîò ôðàãìåíò âûïîëíÿåòñÿ, êîãäà ïîëüçîâàòåëü ùåëêàåò ïî êíîïêå, êîòîðóþ ìû ïîìåñòèëè íà ôîðìó. Ïîêà â äàííîì ôðàãìåíòå íå ïðåäóñìîòðåíî äåéñòâèé ðåàêöèè íà ùåë÷îê. Ìû äîëæíû ñîîáùèòü ïðèëîæåíèþ, ÷òî îíî äîëæíî äåëàòü ïðè ùåë÷êå ïî ýòîé êíîïêå. Èìåííî â ýòîì è çàêëþ÷àåòñÿ ñìûñë ïðîãðàììèðîâàíèÿ!
1. Ñäåëàéòå äâîéíîé ùåë÷îê ïî êíîïêå Button1. Îòêðîåòñÿ îêíî Ðåäàêòîð êîäà.
2. Ùåëêíèòå ïî ïóñòîé ñòðîêå íàä ñòðîêîé End Sub.
3. Ââåäèòå â ïóñòóþ ñòðîêó ñ êëàâèàòóðû ñòðîêó êîäà (òî÷íî òàê, êàê ïîêàçàíî íèæå):
Private Sub Button1_Click(ByVal sender As_ System.Object, ByVal e As System.EventArgs)_ Handles Button1.Click MessageBox.Show("Ïðèâåò, Ìèð.") End Sub
Ýòîò êîä áóäåò âûïîëíÿòüñÿ, êîãäà ïîëüçîâàòåëü áóäåò ùåëêàòü ïî êíîïêå íà ôîðìå.
26
Ãëàâà 2
2.6. Ïîñòðîåíèå ðåøåíèÿ Òåïåðü íóæíî ïîñòðîèòü ðåøåíèå. Ïðè ïîñòðîåíèè ðåøåíèÿ êîä, íàïèñàííûé âàìè è Visual Studio .NET, êîìïèëèðóåòñÿ â ïîíÿòíûå êîìïüþòåðó èíñòðóêöèè. 1. Îòêðîéòå ìåíþ Ïîñòðîåíèå (Build) â ñòðîêå ìåíþ.
2. Âûáåðèòå ïóíêò Ïîñòðîèòü ðåøåíèå (Build Solution) íà÷íåòñÿ ïîñòðîåíèå ðåøåíèÿ.
Ïðîöåññ ïîñòðîåíèÿ ðåøåíèÿ áóäåò îòîáðàæàòüñÿ â îêíå Âûâîä. Åñëè â ïðîãðàììíîì êîäå íå áûëî ñäåëàíî îøèáîê, ïîñëå çàâåðøåíèÿ ïîñòðîåíèÿ â îêíå Âûâîä áóäåò âûâåäåíî ñîîáùåíèå î òîì, ÷òî ïîñòðîåíèå âûïîëíåíî óñïåøíî.
Ñèñòåìà ïðîãðàììèðîâàíèÿ Visual Basic .NET
27
 ïðîãðàììíîì êîäå ìîãëè áûòü ñäåëàíû îøèáêè, ïóñòü, íàïðèìåð, âìåñòî MessageBox âû íàáðàëè mMessageBox. Åñëè Visual Basic ìîæåò îïðåäåëèòü, ãäå ïðîèçîøëà îøèáêà, îí ïîä÷åðêèâàåò ýòî ìåñòî â ïðîãðàììíîì êîäå ñèíåé âîëíèñòîé ëèíèåé. Êðîìå òîãî, îòêðûâàåòñÿ îêíî Ñïèñîê çàäà÷ (Task List), ñîäåðæàùåå ñïèñîê îøèáîê, êîòîðûå íóæíî èñïðàâèòü. Äâîéíîé ùåë÷îê ïî ñîîáùåíèþ îá îøèáêå ïåðåìåùàåò êóðñîð â êîäå ê ýòîé îøèáêå.
 îêíå Âûâîä (Output) ïîÿâèòñÿ ñîîáùåíèå î òîì, ÷òî ïîñòðîåíèå âûïîëíèòü íå óäàëîñü.
Åñëè ïîñòðîåíèå âûïîëíèòü íå óäàëîñü, âåðíèòåñü íàçàä è ââåäèòå ñòðîêó êîäà òî÷íî â òîì âèäå, â êàêîì îíà ïðèâåäåíà â ýòîì êóðñå. Çàòåì åùå ðàç ïîïûòàéòåñü ïîñòðîèòü ðåøåíèå, êàê ïîêàçàíî ðàíåå.
28
Ãëàâà 2
2.7. Çàïóñê ïðîåêòà Âàì óäàëîñü ñêîìïèëèðîâàòü ïðîãðàììó. Ýòî áîëüøîé øàã ê òîìó, ÷òîáû ñòàòü ïðîãðàììèñòîì! Òåïåðü ñêîìïèëèðîâàííóþ ïðîãðàììó ìîæíî çàïóñòèòü.
1. Îòêðîéòå ìåíþ Îòëàäêà (Debug).
2. Âûáåðèòå â ýòîì ìåíþ ïóíêò Íà÷àòü (Start). (Íà ýêðàíå ïîÿâèòñÿ ôîðìà ïðîåêòà ñ êíîïêîé, êîòîðóþ âû íà íåå ïîìåñòèëè.)
3. Ùåëêíèòå íà êíîïêå, ïîÿâèòñÿ
îêíî ñîîáùåíèÿ ñ òåêñòîì «Ïðèâåò, Ìèð». Èìåííî ýòî è äîëæíà áûëà äåëàòü ïðîãðàììà! Ïîçäðàâëÿåì! Âû òîëüêî ÷òî ñîçäàëè âàø ïåðâûé ïðîåêò íà ÿçûêå Visual Basic .NET!
4. Íàæìèòå êíîïêó OK, ÷òîáû çàêðûòü îêíî
ñîîáùåíèÿ. (Îêíî ñîîáùåíèÿ çàêðîåòñÿ, íî îñíîâíîå îêíî ïðîåêòà îñòàíåòñÿ îòêðûòûì. Ìîæåòå åùå ðàç íàæàòü êíîïêó, è îêíî ñîîáùåíèÿ ïîÿâèòñÿ ñíîâà.)
Ñèñòåìà ïðîãðàììèðîâàíèÿ Visual Basic .NET
29
5. Íàæìèòå êíîïêó ñî çíà÷êîì
â âåðõíåì ïðàâîì óãëó ôîðìû, ÷òîáû çàêðûòü ïðîãðàììó.
Ïîñëå çàâåðøåíèÿ âûïîëíåíèÿ ïðîãðàììû â îêíå Âûâîä (Debug) îòîáðàæàåòñÿ îòëàäî÷íàÿ èíôîðìàöèÿ. ×òîáû ïîñìîòðåòü âûâåäåííûå ñîîáùåíèÿ ïîëíîñòüþ, âàì, âåðîÿòíî, ïðèäåòñÿ âîñïîëüçîâàòüñÿ ëèíåéêîé ïðîêðóòêè.
2.8. Ñîõðàíåíèå ïðîåêòà Ñîõðàíåíèå ïðîåêòà. Ïîðà ñîõðàíèòü âàø ïðîåêò. Ñîõðàíåíèå âûïîëíÿåòñÿ òàê æå, êàê è â äðóãèõ ïðîãðàììàõ â îïåðàöèîííîé ñèñòåìå Windows.
1. Îòêðîéòå ìåíþ Ôàéë (File). 2. Â ìåíþ Ôàéë (File) âûáåðèòå êîìàíäó Ñîõðàíèòü âñå (Save All).
3. ×òîáû âûéòè èç Visual Studio .NET, îòêðîéòå ìåíþ Ôàéë (File).
4. Â ìåíþ Ôàéë (File) âûáåðèòå êîìàíäó Âûõîä (Exit).
Ôàéëû è ïàïêè ðåøåíèÿ. Êîãäà âû ñîçäàåòå ïðèëîæåíèå íà Visual Basic, ñîçäàåòñÿ öåëûé íàáîð ôàéëîâ. Âû äîëæíû çíàòü, êàêèå ýòî ôàéëû è äëÿ ÷åãî îíè ïðåäíàçíà÷åíû. Íà ðèñóíêå íèæå ïîêàçàí îáû÷íûé íàáîð ôàéëîâ ðåøåíèÿ.
30
Ãëàâà 2
Ïåðåéäèòå â ïàïêó ..\practicum\unit2\, â êîòîðîé âû ñîçäàëè ïðîåêò «Ïðèâåò, Ìèð». Îòêðîéòå ýòó ïàïêó, è âû óâèäèòå, ÷òî äëÿ ïðîåêòà áûëà ñîçäàíà îòäåëüíàÿ ïàïêà, íàçâàííàÿ Ïðèâåò_Ìèð. Çàéäèòå â ïàïêó Ïðèâåò_Ìèð, ÷òîáû ïîñìîòðåòü ôàéëû, ñîçäàííûå äëÿ âàøåãî ïðîåêòà Visual Studio .NET.  ïàïêå áóäóò ñëåäóþùèå ôàéëû: Ïðèâåò_Ìèð.sln ýòî ôàéë ðåøåíèÿ, â êîòîðîì õðàíèòñÿ îïèñàíèå âñåõ ôàéëîâ è íàñòðîåê ýòîãî ðåøåíèÿ. Âîîáùå-òî â ðåøåíèå ìîæíî âêëþ÷èòü íåñêîëüêî ïðîåêòîâ, íî â ðåøåíèè «Ïðèâåò, Ìèð» ïðîåêò òîëüêî îäèí ýòî ôàéë Ïðèâåò_Ìèð.vbproj. Ê ôàéëó Ïðèâåò_Ìèð.sln ñèñòåìà îáðàùàåòñÿ, êîãäà âû îòêðûâàåòå ðåøåíèå. Ôàéë Form1.vb ñîäåðæèò ôîðìó è ñâÿçàííûé ñ íåé êîä. Îòêðîéòå ïàïêó ..\bin\, ñäåëàâ ïî åå çíà÷êó äâîéíîé ùåë÷îê ìûøüþ.  ïàïêå ..\bin\ ñîäåðæèòñÿ èñïîëíÿåìûé ôàéë, ïîëó÷åííûé êîìïèëÿöèåé ïðîãðàììû íà Visual Basic. Ýòî ôàéë Ïðèâåò_Ìèð.exe. Åãî ìîæíî çàïóñòèòü íà äðóãîì êîìïüþòåðå, äàæå åñëè íà íåì íå óñòàíîâëåíà ñèñòåìà ïðîãðàììèðîâàíèÿ Visual Studio .NET.* *
Äëÿ âûïîëíåíèÿ ïðîãðàìì íà ÿçûêàõ .NET íà êîìïüþòåðàõ äîëæíà áûòü óñòàíîâëåíà .NET Framework.  Windows XP, íà÷èíàÿ ñ Service Pack2, îíà âõîäèò â ñîñòàâ îïåðàöèîííîé ñèñòåìû.
Ñèñòåìà ïðîãðàììèðîâàíèÿ Visual Basic .NET
31
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 2.1. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
ñîçäàòü ïðîåêò «Ïðèâåò, Ìèð», îïèñàííûé â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Ïðèâåò_Ìèð.exe.
2.2. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET
ñîçäàòü ïðîåêò «Ìîå èìÿ», êîòîðûé äîëæåí âûâîäèòü íà ýêðàí îêíî ñîîáùåíèÿ, ñîäåðæàùåå âàøå èìÿ. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Ìîå_èìÿ.exe.
2.9. Âûâîä ñîîáùåíèé íà ôîðìó ×àñòî âàøèì ïðîãðàììàì ïîíàäîáèòñÿ âåñòè äèàëîã ñ ïîëüçîâàòåëåì. Âîçìîæíî, ïðîãðàììà äîëæíà áóäåò ñîîáùèòü ÷òî-òî ïîëüçîâàòåëþ, ïîçâîëèòü åìó ââåñòè êàêèå-òî äàííûå èëè ÷òî-òî óêàçàòü. Îêíî ñîîáùåíèé. Òàêèå ñèòóàöèè âñòðå÷àþòñÿ íàñòîëüêî ÷àñòî, ÷òî Visual Studio .NET ïîääåðæèâàåò íàáîð ñòàíäàðòíûõ îêîí, íàïðèìåð îêîí ñîîáùåíèé (MessageBox), äëÿ îáðàáîòêè òàêèõ ñèòóàöèé.  ïåðâîé íàïèñàííîé âàìè ïðîãðàììå âû èñïîëüçîâàëè ñòðîêó êîäà, âûâîäèâøóþ íà ýêðàí îêíî ñîîáùåíèÿ: MessageBox.Show("Ïðèâåò, Ìèð.")
 ÿçûêå C# îêíî ñîîáùåíèÿ âûçûâàåòñÿ ïî÷òè òàê æå, êàê è â Visual Basic .NET. Òî÷íî òàê æå îíî âûçûâàåòñÿ è â ÿçûêå J#: { MessageBox.Show ("Ïðèâåò, Ìèð"); }
Âèä îêíà ñîîáùåíèÿ âñòðîåí â Visual Basic .NET. Âàì íå íóæíî ñîçäàâàòü âèä îêíà, ÷òîáû èñïîëüçîâàòü åãî â ïðîåêòå. Âñå, ÷òî íóæíî ñäåëàòü â ïðîãðàììå âûçâàòü ìåòîä Show() è çàäàòü òåêñò, êîòîðûé íóæíî âûâåñòè íà ýêðàí. Ñèíòàêñèñ èñïîëüçîâàíèÿ îêíà ñîîáùåíèÿ òàêîâ: MessageBox.Show("Òåêñò ñîîáùåíèÿ")
Îáðàòèòå âíèìàíèå, ÷òî òåêñò ñîîáùåíèÿ äîëæåí áûòü ïîìåùåí â êàâû÷êè.
32
Ãëàâà 2 Ôóíêöèÿ âûâîäà ñîîáùåíèé MsgBox(). Ôóíêöèÿ MsgBox() ïîçâîëÿåò âûâîäèòü ñîîáùåíèÿ ñ ïîìîùüþ îêíà ñîîáùåíèé, â êîòîðîì ìîæíî ðàçìåñòèòü îïðåäåëåííûé íàáîð êíîïîê è èíôîðìàöèîííûé çíà÷îê î òèïå ñîîáùåíèÿ. MsgBox("Ñîîáùåíèå" [,×èñÊîä1+×èñÊîä2][,"Çàãîëîâîê"])
Àðãóìåíò "Ñîîáùåíèå" âûâîäèòñÿ â îêíî ñîîáùåíèé, àðãóìåíò ×èñÊîä1+×èñÊîä2 îïðåäåëÿåò âíåøíèé âèä ïàíåëè, à ñòðîêà "Çàãîëîâîê" ïå÷àòàåòñÿ â ñòðîêå çàãîëîâêà ïàíåëè. Ïîñëåäíèå äâà àðãóìåíòà íå ÿâëÿþòñÿ îáÿçàòåëüíûìè, ïîýòîìó çàêëþ÷àþòñÿ â êâàäðàòíûå ñêîáêè. Íàïðèìåð, äëÿ ôóíêöèè MsgBox("Ñîîáùåíèå", 48 + 3, "Çàãîëîâîê") áóäåò âûâåäåíî ñëåäóþùåå îêíî ñîîáùåíèé:
Âíåøíèé âèä îêíà ñîîáùåíèé ìîæíî ìåíÿòü, èñïîëüçóÿ ðàçëè÷íûå çíà÷åíèÿ ×èñÊîä1 è ×èñÊîä2. Çíà÷åíèå ×èñÊîä1 îïðåäåëÿåò âèä ïèêòîãðàììû, êîòîðàÿ ïîìåùàåòñÿ â îêíî ñîîáùåíèé, à çíà÷åíèå ×èñÊîä2 îïðåäåëÿåò íàáîð êíîïîê, ðàçìåùàåìûõ â îêíå. Çíà÷åíèÿ ×èñÊîä1 è ×èñÊîä2, îïðåäåëÿþùèå âèä îêíà ñîîáùåíèé ×èñÊîä1
Òèï ñîîáùåíèÿ
16
Îøèáêà
32
Âîïðîñ
48
Âíèìàíèå
64
Èíôîðìàöèÿ
Ïèêòîãðàììà
Ñèñòåìà ïðîãðàììèðîâàíèÿ Visual Basic .NET ×èñÊîä2
Íàáîð êíîïîê
0
ÎÊ
1
ÎÊ, Îòìåíà
2
Ñòîï, Ïîâòîðèòü, Ïðîïóñòèòü
3
Äà, Íåò, Îòìåíà
4
Äà, Íåò
5
Ïîâòîðèòü, Îòìåíà
33
Ýëåìåíò óïðàâëåíèÿ Label (Íàäïèñü). Label ïðåäíàçíà÷åí äëÿ îòîáðàæåíèÿ òåêñòà èëè èçîáðàæåíèé, êîòîðûå ïîëüçîâàòåëü íå ìîæåò èçìåíèòü ñ êëàâèàòóðû. Îòîáðàæàåìûé íà íàäïèñè òåêñò ñîäåðæèòñÿ â ñâîéñòâå Text. Ñâîéñòâî Alignment ïîçâîëÿåò çàäàòü âûðàâíèâàíèå òåêñòà íà íàäïèñè. Íàïðèìåð, äëÿ âûâîäà íà íàäïèñü Label1 òåêñòà «Ïðèâåò, Ìèð» íåîáõîäèìî â ïðîãðàììíûé êîä ââåñòè ñëåäóþùóþ ñòðîêó: Label1.Text = "Ïðèâåò, Ìèð."
Ýëåìåíò óïðàâëåíèÿ TextBox (Òåêñòîâîå ïîëå). TextBox èñïîëüçóåòñÿ äëÿ ïðèåìà äàííûõ, ââîäèìûõ ïîëüçîâàòåëåì, èëè äëÿ îòîáðàæåíèÿ òåêñòà. Íà ýëåìåíò óïðàâëåíèÿ TextBox îáû÷íî ïîìåùàåòñÿ ðåäàêòèðóåìûé òåêñò, õîòÿ åãî ìîæíî òàêæå ñäåëàòü äîñòóïíûì òîëüêî äëÿ ÷òåíèÿ.  òåêñòîâûå ïîëÿ ìîæíî âûâîäèòü íåñêîëüêî ñòðîê òåêñòà, ðàçìåùàòü òåêñò â ñîîòâåòñòâèè ñ ðàçìåðîì ýëåìåíòà óïðàâëåíèÿ è äîáàâëÿòü îñíîâíûå ýëåìåíòû ôîðìàòèðîâàíèÿ. Íàïðèìåð, äëÿ âûâîäà â òåêñòîâîå ïîëå TextBox1 òåêñòà «Ïðèâåò, Ìèð» íåîáõîäèìî â ïðîãðàììíûé êîä ââåñòè ñëåäóþùóþ ñòðîêó: TextBox1.Text = "Ïðèâåò, Ìèð."
34
Ãëàâà 2 Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 2.3. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET
Microsoft-CD
ìîäåðíèçèðîâàòü ïðîåêò «Ïðèâåò, Ìèð», äîáàâèâ âûâîä ñîîáùåíèÿ ñ èñïîëüçîâàíèåì ôóíêöèè âûâîäà ñîîáùåíèé, íàäïèñè è òåêñòîâîãî ïîëÿ. Çàãîòîâêà ïðîåêòà ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Ïðèâåò_Ìèð.exe.
2.4. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET
ìîäåðíèçèðîâàòü ïðîåêò «Ìîå èìÿ», äîáàâèâ âûâîä ñîîáùåíèÿ ñ èñïîëüçîâàíèåì ôóíêöèè âûâîäà ñîîáùåíèé, íàäïèñè è òåêñòîâîãî ïîëÿ. Çàãîòîâêà ïðîåêòà ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Ìîå_èìÿ.exe.
Òåñò ïî òåìå «Ñèñòåìà ïðîãðàììèðîâàíèÿ Visual Basic .NET» 1.
 Visual Studio .NET ïðîåêò õðàíèòñÿ m
 îäíîì ôàéëå ïðîåêòà
m
 îäíîì ôàéëå ðåøåíèÿ
m
 èåðàðõè÷åñêîé ñèñòåìå ïàïîê ðåøåíèÿ
m
 ïàïêå ïðîåêòà
2.
Ñ ïîìîùüþ êàêîãî îêíà âûáèðàþòñÿ ýëåìåíòû óïðàâëåíèÿ äëÿ ðàçìåùåíèÿ èõ íà ôîðìå? m
Ðåäàêòîð êîäà (Code)
m
Êîíñòðóêòîð ôîðì (Form Design Window)
m
Îáëàñòü ýëåìåíòîâ (Toolbox)
m
Îêíî ñâîéñòâ (Properties)
3.
Ïåðåä çàïóñêîì ïðîãðàììû íà âûïîëíåíèå íóæíî m
Ñêîìïèëèðîâàòü ïðîãðàììó
m
Ñîõðàíèòü ïðîåêò
m
Íàñòðîèòü ïðîôèëü
m
Çàïóñòèòü ñïðàâî÷íóþ ñèñòåìó
4.
Visual Studio .NET ìîæíî íàñòðàèâàòü ïîä êîíêðåòíîãî ïîëüçîâàòåëÿ íà ñòðàíèöå m
Ïðîåêòû (Projects)
m
Ðåñóðñû â ñåòè (Online Resources)
m
Ñïðàâêà (Help)
m
Ìîé ïðîôèëü (Profile)
Ãëàâà 3
Àëãîðèòìû è ïðîãðàììû
3.1. Îñíîâíûå ýëåìåíòû êîäà 3.2. Àëãîðèòìû â ôîðìå ïñåâäîêîäà 3.3. Êîììåíòàðèè â êîäå
 1981 ãîäó áûëà ðàçðàáîòàíà îïåðàöèîííàÿ ñèñòåìà MS-DOS (Microsoft Disk Operation System äèñêîâàÿ îïåðàöèîííàÿ ñèñòåìà) äëÿ ïåðñîíàëüíûõ êîìïüþòåðîâ. MS-DOS òðåáîâàëà ââîäà êîìàíä ñ êëàâèàòóðû â êîìàíäíîé ñòðîêå.  îïåðàöèîííîé ñèñòåìå Windows ñóùåñòâóåò âîçìîæíîñòü ïåðåõîäà â ðåæèì MS-DOS, êîòîðûé èíîãäà ïðåäïî÷èòàþò îïûòíûå ïðîãðàììèñòû.
Àëãîðèòìû è ïðîãðàììû
37
3.1. Îñíîâíûå ýëåìåíòû êîäà Âî âñåõ ÿçûêàõ ïðîãðàììèðîâàíèÿ èñïîëüçóþòñÿ áàçîâûå ýëåìåíòû îäíèõ è òåõ æå âèäîâ, õîòÿ ñèíòàêñèñ, ñ ïîìîùüþ êîòîðîãî ýòè ýëåìåíòû çàïèñûâàþòñÿ, ñâîé â êàæäîì ÿçûêå. Èç ýòèõ ýëåìåíòîâ ìîæíî ñîñòàâëÿòü ëþáûå, äàæå ñàìûå ñëîæíûå ïðîãðàììû. Ïîìíèòå ñòðîêó êîäà, êîòîðóþ âû äîáàâèëè â ïðîåêò «Ïðèâåò, Ìèð»? Îíà âûãëÿäåëà òàê: MessageBox.Show("Ïðèâåò, Ìèð.")
Ýòà ñòðîêà âûâîäèò íà ýêðàí èíôîðìàöèþ äëÿ ïîëüçîâàòåëÿ ñ èñïîëüçîâàíèåì ìåòîäà Show îáúåêòà MessageBox. Âî ìíîãèõ îáúåêòíî-îðèåíòèðîâàííûõ ÿçûêàõ ïðîãðàììèðîâàíèÿ åñòü òàêîé ìåòîä, ñîîáùàþùèé èíôîðìàöèþ ïîëüçîâàòåëþ, õîòÿ åãî ñèíòàêñèñ ðàçíûé â ðàçíûõ ÿçûêàõ. Åñòü è äðóãèå ýëåìåíòû êîäà, ïîääåðæèâàåìûå âñåìè ÿçûêàìè ïðîãðàììèðîâàíèÿ. Âîò íåñêîëüêî ïðèìåðîâ äðóãèõ ýëåìåíòîâ ïðîãðàìì, ïîääåðæèâàåìûõ âñåìè ÿçûêàìè: q Ïåðåìåííûå èñïîëüçóþòñÿ äëÿ õðàíåíèÿ èíôîðìàöèè, íàïðèìåð ÷èñåë èëè òåêñòà. Ýòî «êîíòåéíåðû» äëÿ õðàíåíèÿ èíôîðìàöèè èëè ðåçóëüòàòîâ âû÷èñëåíèé. q
Îïåðàòîðû ïðèñâàèâàíèÿ ïîìåùàþò, èëè çàïèñûâàþò, çíà÷åíèÿ â ïåðåìåííûå. Çíà÷åíèå ìîæåò áûòü ÷èñëîì, òåêñòîì, çíà÷åíèåì äðóãîé ïåðåìåííîé èëè ðåçóëüòàòîì âû÷èñëåíèé.
q
Îïåðàòîðû ñðàâíåíèÿ ïîçâîëÿþò ñðàâíèâàòü çíà÷åíèå ïåðåìåííîé ñ ÷èñëîì èëè ñî çíà÷åíèåì äðóãîé ïåðåìåííîé. Ýòè îïåðàòîðû êàê áû çàäàþò âîïðîñ, îòâåò íà êîòîðûé âñåãäà «èñòèíà» èëè «ëîæü», ò. å. «äà» èëè «íåò».
q
Îïåðàòîðû ïðèíÿòèÿ ðåøåíèÿ ðåøàþò, ÷òî äåëàòü äàëüøå. Ïðèíèìàåìîå ðåøåíèå îñíîâûâàåòñÿ íà ðåçóëüòàòàõ ñðàâíåíèÿ. Åñëè ðåçóëüòàò ñðàâíåíèÿ «èñòèíà», òî âûáèðàåòñÿ
38
Ãëàâà 3 ïåðâûé âàðèàíò äàëüíåéøèõ äåéñòâèé. Åñëè ðåçóëüòàò ñðàâíåíèÿ «ëîæü», òî âûáèðàåòñÿ âòîðîé âàðèàíò. Îïåðàòîðû ïðèíÿòèÿ ðåøåíèÿ ÷àñòî íàçûâàþòñÿ îïåðàòîðàìè âåòâëåíèÿ, ïîñêîëüêó ïîñëåäîâàòåëüíîñòü âûïîëíåíèÿ ïðîãðàììû ìîæíî «ðàçâåòâëÿòü» ñ ïîìîùüþ ýòèõ îïåðàòîðîâ. q
Îïåðàòîðû öèêëà èñïîëüçóþòñÿ äëÿ ìíîãîêðàòíîãî âûïîëíåíèÿ êàêèõ-íèáóäü äåéñòâèé. Ýòè îïåðàòîðû óìåíüøàþò êîëè÷åñòâî êîäà, êîòîðîå âàì ïðèäåòñÿ ïèñàòü, ñîçäàâàÿ ïðîãðàììó, åñëè êàêèå-òî äåéñòâèÿ íóæíî ïîâòîðÿòü ìíîãî ðàç.
Èçó÷àÿ ïðîãðàììèðîâàíèå, âû óçíàåòå, êàê ñ ïîìîùüþ îïåðàòîðîâ ýòèõ âèäîâ çàñòàâëÿòü êîìïüþòåð äåëàòü òî, ÷òî âàì õî÷åòñÿ. Èçó÷àÿ Visual Basic .NET (èëè ëþáîé äðóãîé ÿçûê ïðîãðàììèðîâàíèÿ), âû äîëæíû áóäåòå çàïîìíèòü ñèíòàêñèñ, ñ ïîìîùüþ êîòîðîãî â ýòîì ÿçûêå ïðîãðàììèðîâàíèÿ çàïèñûâàþòñÿ îñíîâíûå ýëåìåíòû ïðîãðàìì.
3.2. Àëãîðèòì â ôîðìå ïñåâäîêîäà Ðàññìîòðèì, êàê ïëàíèðîâàòü è îðãàíèçîâûâàòü ïðîãðàììó åùå äî òîãî, êàê âû íà÷íåòå ïèñàòü åå êîä. Ìíîãèå ïðîãðàììèñòû ñíà÷àëà ñîçäàþò àëãîðèòì, êîòîðûé ìîæåò áûòü çàïèñàí íà òàê íàçûâàåìîì ïñåâäîêîäå, à ïîòîì ïåðåâîäÿò èõ íà íàñòîÿùèé ÿçûê ïðîãðàììèðîâàíèÿ. Àëãîðèòì ìîæíî çàïèñàòü íà åñòåñòâåííîì ÿçûêå (àíãëèéñêîì, ðóññêîì èëè âàøåì ðîäíîì), îáúÿñíèâ, ÷òî ïðîãðàììà äîëæíà äåëàòü, øàã çà øàãîì. Íà ïñåâäîêîäå îïèñûâàåòñÿ ñòðóêòóðà ïðîãðàììû è ïîñëåäîâàòåëüíîñòü åå ðàáîòû. Àëãîðèòì íà ïñåâäîêîäå äîëæåí áûòü äîñòàòî÷íî ïîíÿòíûì, ÷òîáû âû è äðóãèå ïðîãðàììèñòû ìîãëè â íåì ðàçîáðàòüñÿ, ïîñêîëüêó îí çàêëàäûâàåò îñíîâó äëÿ íàïèñàíèÿ íàñòîÿùåãî êîäà ïðîãðàììû. Àëãîðèòì
Àëãîðèòìû è ïðîãðàììû
Íà÷èíàòü ïèñàòü ïðîãðàììó ñ ñîçäàíèÿ àëãîðèòìà â ôîðìå ïñåâäîêîäà óäîáíî, ïîòîìó ÷òî ïîòîì ïñåâäîêîä ìîæíî ïðåîáðàçîâàòü â êîä íà ðàçíûõ ÿçûêàõ ïðîãðàììèðîâàíèÿ, è íå ïðèõîäèòñÿ ñ ñàìîãî íà÷àëà ïðèâÿçûâàòüñÿ ê îäíîìó ÿçûêó. Ñíà÷àëà íóæíî îïèñàòü ñ ïîìîùüþ ïñåâäîêîäà ëîãèêó ðàáîòû è ñòðóêòóðó ïðîãðàììû. Çàòåì ïñåâäîêîä íóæíî «ïåðåâåñòè» íà òîò ÿçûê ïðîãðàììèðîâàíèÿ, êîòîðûé âû ðåøèòå èñïîëüçîâàòü.
39
ñîñòîèò èç îïåðàòîðîâ ðàçíûõ áàçîâûõ âèäîâ îïåðàòîðîâ ïðèñâàèâàíèÿ, ñðàâíåíèÿ, ïðèíÿòèÿ ðåøåíèé è ò. ä. Ñîçäàâ àëãîðèòì, ñðàâíèòåëüíî íåñëîæíî çàïèñàòü åãî â âèäå ïðîãðàììíîãî êîäà. Ïðåäïîëîæèì, íàì íóæíî íàïèñàòü ïðîãðàììó, êîòîðàÿ âû÷èñëèò ñðåäíþþ ñòîèìîñòü áåíçèíà â ðóáëÿõ çà ëèòð, åñëè áåíçèí ïîêóïàëñÿ íà çàïðàâêàõ ðàçëè÷íûõ ôèðì. ×òî ýòà ïðîãðàììà äîëæíà äåëàòü? ×òîáû îòâåòèòü íà ýòîò âîïðîñ, ìû ñíà÷àëà íàïèøåì ïðîãðàììó ñ ïîìîùüþ ïñåâäîêîäà. Âîò äåéñòâèÿ, êîòîðûå íàøà ïðîãðàììà äîëæíà áóäåò âûïîëíÿòü, ÷òîáû âû÷èñëèòü ñðåäíþþ ñòîèìîñòü áåíçèíà:
1. Ïðîñóììèðîâàòü âñå äåíüãè, êîòîðûå ìû ïîòðàòèëè íà áåíçèí, è çàïèñàòü ýòó ñóììó â ïåðåìåííóþ (TotalRub).
2. Íàéòè îáùåå êîëè÷åñòâî êóïëåííîãî áåíçèíà è çàïèñàòü ýòî êîëè÷åñòâî â äðóãóþ ïåðåìåííóþ (TotalLiter).
3. Ðàçäåëèòü çíà÷åíèå ïåðâîé ïåðåìåííîé (TotalRub) íà çíà÷åíèå âòîðîé ïåðåìåííîé (TotalLiter). Ðåçóëüòàò äåëåíèÿ çàïèñàòü â òðåòüþ ïåðåìåííóþ (RubPerLiter).
4. Âûâåñòè ñîîáùåíèå, â êîòîðîì óêàçàíà ñðåäíÿÿ öåíà áåíçèíà.
Ïñåâäîêîä ïîêàçûâàåò, ÷òî äîëæíà áóäåò äåëàòü ïðîãðàììà. Òåïåðü ìîæíî íàïèñàòü êîä, âûïîëíÿþùèé äåéñòâèÿ, ïåðå÷èñëåííûå â ïñåâäîêîäå. Âîò åùå îäèí ïðèìåð, íà ýòîò ðàç ñ áîëüøèì êîëè÷åñòâîì øàãîâ. Ýòî ïðèìåð îïèñàíèÿ ïðîãðàììû äëÿ ðîáîòà, êîòîðûé áóäåò çàìåíÿòü ïðîêîëîòûå øèíû.
1. Îïðåäåëèòü, êàêàÿ øèíà ïðîêîëîòà (îïåðàòîð ñðàâíåíèÿ).
2. Îïðåäåëèòü ðàçìåð ïðîêîëîòîé øèíû (îïåðàòîð ñðàâíåíèÿ).
40
Ãëàâà 3 3. Åñëè íåò øèíû íóæíîãî äëÿ çàìåíû ðàçìåðà, òî ïîëó÷èòü øèíó äëÿ çàìåíû ñî ñêëàäà (îïåðàòîðû ñðàâíåíèÿ è ïðèíÿòèÿ ðåøåíèÿ).
4. Ïîäíÿòü àâòîìîáèëü ñ ïîìîùüþ äîìêðàòà. 5. Ñíÿòü êîëïàê, ÷òîáû äîáðàòüñÿ äî êðåïëåíèÿ øèíû.
6. Ñíÿòü øèíó, îòêðó÷èâàÿ ïî î÷åðåäè âñå ãàéêè ñ ïîìîùüþ ãàå÷íîãî êëþ÷à (îïåðàòîð öèêëà).
7. Óäàëèòü ïðîêîëîòóþ øèíó. 8. Íàäåòü íîâóþ øèíó. 9. Çàêðóòèòü ïî î÷åðåäè âñå ãàéêè ñ ïîìîùüþ ãàå÷íîãî êëþ÷à (îïåðàòîð öèêëà).
10. Âåðíóòü íà ìåñòî êîëïàê è çàêðåïèòü åãî. 11. Óáðàòü äîìêðàò.  ýòîì ïñåâäîêîäå åñòü îïåðàòîðû ïðèñâàèâàíèÿ, îïåðàòîðû ñðàâíåíèÿ, îïåðàòîðû ïðèíÿòèÿ ðåøåíèé è îïåðàòîðû öèêëà. Íàïðèìåð, íóæíî çàïîìèíàòü ðàçìåð ïðîêîëîòîé øèíû ýòî äåëàåò îïåðàòîð ïðèñâàèâàíèÿ. Íóæíî ñðàâíèòü ðàçìåð ïðîêîëîòîé øèíû ñ ðàçìåðàìè øèí, êîòîðûå åñòü â çàïàñå, ýòî îïåðàòîð ñðàâíåíèÿ. Ïîñëå îïåðàòîðà ñðàâíåíèÿ èñïîëüçóåòñÿ îïåðàòîð ïðèíÿòèÿ ðåøåíèÿ. Åñëè ó íàñ åñòü øèíà íóæíîãî ðàçìåðà, ìû ìîæåì ïðîäîëæàòü ðàáîòó, â ïðîòèâíîì ñëó÷àå íóæíî ñíà÷àëà îáðàòèòüñÿ íà ñêëàä. Îòêðó÷èâàíèå ãàåê è èõ çàêðó÷èâàíèå ìîæíî âîñïðèíèìàòü êàê öèêëè÷åñêè ïîâòîðÿþùèåñÿ îïåðàöèè. Ýòè îïåðàöèè íóæíî ïîâòîðÿòü äëÿ êàæäîé ãàéêè ñíà÷àëà ïðè îòêðó÷èâàíèè, à ïîòîì ïðè çàêðó÷èâàíèè.
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 3.1. Çàïèøèòå â ôîðìå ïñåâäîêîäà àëãîðèòì âêëþMicrosoft-CD
÷åíèÿ êîìïüþòåðà, çàïóñêà îïåðàöèîííîé ñèñòåìû Windows è ñèñòåìû ïðîãðàììèðîâàíèÿ Visual Studio .NET.
Àëãîðèòìû è ïðîãðàììû
41
3.3. Êîììåíòàðèè â êîäå Äîáàâëÿéòå â êîä êîììåíòàðèè, íî íå ïåðåñòàðàéòåñü. Êîììåíòèðóÿ êîä, âû îáúÿñíÿåòå åãî íàçíà÷åíèå, à íå ïèøåòå ðîìàí.
Òîëüêî â Visual Basic .NET êîììåíòàðèè îáîçíà÷àþòñÿ àïîñòðîôîì.  ÿçûêàõ â C# è J# ñòðîêè êîììåíòàðèåâ íà÷èíàþòñÿ ñ äâóõ ñèìâîëîâ êîñîé ÷åðòû (//).
Êîììåíòàðèè. Ñîâðåìåííûå ÿçûêè ïðîãðàììèðîâàíèÿ, âêëþ÷àÿ ÿçûêè èç Visual Studio .NET, ïîçâîëÿþò äîáàâëÿòü â êîä ïðîãðàìì êîììåíòàðèè. Êîììåíòàðèè íå êîìïèëèðóþòñÿ âìåñòå ñ ïðîãðàììîé è íå âûïîëíÿþòñÿ ïðè åå âûïîëíåíèè. Îíè ïîçâîëÿþò äîáàâëÿòü â ïðîãðàììó çàìå÷àíèÿ, ïîÿñíÿþùèå åå ðàáîòó è íàçíà÷åíèå. Êîììåíòàðèè ïîìîãàþò âñïîìíèòü, ÷òî äåëàþò îòäåëüíûå ÷àñòè ïðîãðàìì, è ïîçâîëÿþò äðóãèì ïðîãðàììèñòàì ëåã÷å ðàçáèðàòüñÿ â íàïèñàííîì âàìè êîäå. Êîììåíòàðèè ñëåäóåò äîáàâëÿòü â êîä âñåãäà. Íàëè÷èå êîììåíòàðèåâ ýòî ïðèçíàê îïûòíîñòè ïðîãðàììèñòà è õîðîøåãî ñòèëÿ ïðîãðàììèðîâàíèÿ. Õîðîøèé ïðîãðàììèñò âñåãäà âûäåëèò âðåìÿ íà äîêóìåíòèðîâàíèå è îáúÿñíåíèå íàïèñàííîãî èì êîäà. Åñëè âû èçìåíÿåòå èëè äîáàâëÿåòå êàêèå-òî ôóíêöèè â ïðîãðàììó, äîáàâüòå â íåå êîììåíòàðèè. Êðîìå òîãî, äîáàâëÿéòå êîììåíòàðèè ê òðóäíûì äëÿ ïîíèìàíèÿ ÷àñòÿì ïðîãðàììû èëè ê ÷àñòÿì, âûïîëíÿþùèì ñëîæíûå èëè ðåäêî èñïîëüçóåìûå äåéñòâèÿ èëè âû÷èñëåíèÿ.  Visual Basic .NET êîììåíòàðèé â ñòðîêå íà÷èíàåòñÿ ñ ñèìâîëà àïîñòðîôà ('). Ëþáàÿ ñòðîêà â êîäå, íà÷èíàþùàÿñÿ ñ àïîñòðîôà, ñ÷èòàåòñÿ êîììåíòàðèåì è íå áóäåò êîìïèëèðîâàòüñÿ âìåñòå ñ ïðîãðàììîé è âûïîëíÿòüñÿ. Ó êîììåíòàðèåâ åñòü åùå îäíà âàæíàÿ ôóíêöèÿ êðîìå äîêóìåíòèðîâàíèÿ ïðîãðàìì. Ïîñêîëüêó ñòðîêè êîììåíòàðèåâ íå êîìïèëèðóþòñÿ è íå âûïîëíÿþòñÿ, ìîæíî ïîìå÷àòü ñòðîêè êîäà êàê ñòðîêè êîììåíòàðèåâ, ÷òîáû ýòè ñòðîêè íå âûïîëíÿëèñü. Ýòîò ïðèåì íàçûâàåòñÿ «çàêîììåíòèðîâàòü ñòðîêó êîäà». Ñ ïîìîùüþ çàêîììåíòèðîâàíèÿ ôðàãìåíòîâ êîäà ìîæíî ðàçûñêèâàòü îøèáêè â ïðîãðàììàõ. Åñëè â âàøåé ïðîãðàììå åñòü îøèáêà, ìîæåòå ïî î÷åðåäè çàêîììåíòèðîâàòü îòäåëüíûå ñòðîêè èëè öåëûå áëîêè êîäà, ïîêà îøèáêà íå ïåðåñòàíåò ïîÿâëÿòüñÿ. Îøèáêà, ñêîðåå âñåãî, áóäåò íàõîäèòüñÿ â
42
Ãëàâà 3 ñòðîêå, êîòîðóþ âû çàêîììåíòèðîâàëè ïîñëåäíåé, ïðåæäå ÷åì îøèáêà èñ÷åçëà. Óäîáíî, ïðàâäà? Ïñåâäîêîä â êà÷åñòâå êîììåíòàðèåâ. Ñ ïîìîùüþ êîììåíòàðèåâ ìîæíî îïèñàòü ñòðóêòóðó ïðîãðàììû. Åñëè âû óæå íàïèñàëè ïñåâäîêîä, îïèñûâàþùèé ðàáîòó âàøåé ïðîãðàììû, âîñïîëüçóéòåñü ýòèì ïñåâäîêîäîì. Ñêîïèðóéòå è âñòàâüòå ïñåâäîêîä â ïðîãðàììó è ïîìåñòèòå àïîñòðîô â íà÷àëå êàæäîé ñòðîêè ïñåâäîêîäà, ÷òîáû ïðåâðàòèòü åãî â êîììåíòàðèè. À òåïåðü íàïèøèòå íàñòîÿùèé êîä íà Visual Basic .NET ïîä êàæäîé ñòðîêîé ïñåâäîêîäà. Ó âàñ ïîëó÷èòñÿ ïðîãðàììà, êîòîðàÿ íå òîëüêî ðàáîòàåò, íî è óæå äîêóìåíòèðîâàíà! Âîò ïðèìåð, îñíîâàííûé íà ïñåâäîêîäå âû÷èñëåíèÿ ñðåäíåé öåíû áåíçèíà, êîòîðûé áûë îïèñàí â ïðåäûäóùåì ïàðàãðàôå. Îáðàòèòå âíèìàíèå, ÷òî ïñåâäîêîä îáðàçóåò êîììåíòàðèè ê ïðîãðàììå. Ïðîñóììèðîâàòü âñå äåíüãè, êîòîðûå ìû ïîòðàòèëè íà áåíçèí, è çàïèñàòü ýòó ñóììó â ïåðåìåííóþ (TotalRub). Dim TotalRub As Double TotalRub = 800 + 1700 + 1350 Íàéòè îáùåå êîëè÷åñòâî êóïëåííîãî áåíçèíà è çàïèñàòü ýòî êîëè÷åñòâî â äðóãóþ ïåðåìåííóþ (TotalLiter). Dim TotalLiter As Double TotalLiter = 50 + 100 + 75 Ðàçäåëèòü çíà÷åíèå ïåðâîé ïåðåìåííîé (TotalRub) íà çíà÷åíèå âòîðîé ïåðåìåííîé (TotalLiter). Ðåçóëüòàò äåëåíèÿ çàïèñàòü â òðåòüþ ïåðåìåííóþ (RubPerLiter). Dim RubPerLiter As Double RubPerLiter = TotalRub / TotalLiter Âûâåñòè ñîîáùåíèå, â êîòîðîì óêàçàíà ñðåäíÿÿ öåíà áåíçèíà. MessageBox.Show (RubPerLiter)
Îòñòóïû è ïðîáåëüíûå ñèìâîëû. Õîòÿ âû, âîçìîæíî, ïîíÿëè íå âåñü ïîêàçàííûé âûøå êîä íà
Àëãîðèòìû è ïðîãðàììû
Ïî óìîë÷àíèþ Visual Basic .NET àâòîìàòè÷åñêè äåëàåò îòñòóïû â íà÷àëå ñòðîê êîäà, çàâèñÿùèå îò êîäà â ýòèõ ñòðîêàõ. Õîòÿ àâòîìàòè÷åñêèé îòñòóï ìîæíî îòêëþ÷èòü, ëó÷øå åãî âñå æå èñïîëüçîâàòü.
43
ÿçûêå Visual Basic .NET, ìû õîòèì, ÷òîáû âû îáðàòèëè âíèìàíèå íà ïàðó âåùåé. Âî-ïåðâûõ, âñå êîììåíòàðèè íà÷èíàþòñÿ ñ àïîñòðîôà. Êðîìå òîãî, êîììåíòàðèè âûäåëÿþòñÿ â ïðîãðàììàõ çåëåíûì öâåòîì. Ýòî ïîçâîëÿåò ëåãêî çàìå÷àòü èõ â êîäå. Âî-âòîðûõ, îáðàòèòå âíèìàíèå íà ïóñòóþ ñòðîêó ïåðåä êàæäûì êîììåíòàðèåì. Ýòè ïóñòûå ñòðîêè äåëÿò êîììåíòàðèè è êîä íà ÷àñòè, âûïîëíÿþùèå îòäåëüíûå äåéñòâèÿ. Ïîäåëåííóþ íà òàêèå ÷àñòè ïðîãðàììó ïðîùå ÷èòàòü è ïîíèìàòü. Âî ìíîãèõ ñëó÷àÿõ Visual Basic .NET àâòîìàòè÷åñêè äîáàâëÿåò ïðîïóñêè è îòñòóïû, ÷òîáû êîä áûëî ëåã÷å ÷èòàòü. Íî åñëè õîòèòå, âû ìîæåòå äîáàâëÿòü äîïîëíèòåëüíûå ïðîïóñêè è îòñòóïû. Îíè îáëåã÷àþò ÷òåíèå è ïîíèìàíèå êîäà è êîììåíòàðèåâ. Visual Basic .NET è äðóãèå ÿçûêè .NET íå îáðàùàþò âíèìàíèÿ íà ïóñòûå ñòðîêè è îòñòóïû. Îíè èãíîðèðóþòñÿ ïðè êîìïèëÿöèè ïðîãðàììû.
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 3.2. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
ñîçäàòü ïðîåêò «Öåíà áåíçèíà», îïèñàííûé â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Öåíà_áåíçèíà.exe.
3.3.  ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET ñîçäàòü ïðîåêò «Öâåò ðûáîê».  òåêñòîâûå ïîëÿ ââîäÿòñÿ êîëè÷åñòâà êðàñíûõ, ñèíèõ, æåëòûõ è çåëåíûõ ðûáîê, à òàêæå èõ îáùåå êîëè÷åñòâî, è ñîçäàåòñÿ ñîáûòèéíàÿ ïðîöåäóðà, âû÷èñëÿþùàÿ ïðîöåíò ðûáîê êàæäîãî öâåòà è âûâîäÿùàÿ ýòè ïðîöåíòû â òåêñòîâûå ïîëÿ. Ïåðåâåñòè òåêñò íà íàäïèñÿõ è êíîïêàõ, à òàêæå êîììåíòàðèè â ïðîãðàììíîì êîäå ñ àíãëèéñêîãî ÿçûêà íà ðóññêèé. Çàãîòîâêà ïðîåêòà ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Öâåò_ðûáîê.exe.
Òåñò ïî òåìå «Àëãîðèòìû è ïðîãðàììû» 1.
Êàêèå îïåðàòîðû â ÿçûêàõ ïðîãðàììèðîâàíèÿ èñïîëüçóþòñÿ äëÿ ìíîãîêðàòíîãî ïîâòîðåíèÿ îäíèõ è òåõ æå äåéñòâèé? m
Îïåðàòîðû ñðàâíåíèÿ
m
Îïåðàòîðû öèêëà
m
Îïåðàòîðû âåòâëåíèÿ
m
Îïåðàòîðû ïðèñâàèâàíèÿ
2.
Ïñåâäîêîä ýòî m
ßçûê ïðîãðàììèðîâàíèÿ
m
Àëãîðèòì, çàïèñàííûé íà åñòåñòâåííîì ÿçûêå
m
Êîììåíòàðèè â ïðîãðàììå
m
Ïðîãðàììà íà ìàøèííîì ÿçûêå
3.
Êîììåíòàðèè, îòñòóïû è èíòåðâàëû íåîáõîäèìû â ïðîãðàììå m
×åëîâåêó äëÿ ëó÷øåãî ïîíèìàíèÿ ïðîãðàììû
m
Êîìïüþòåðó äëÿ ïðàâèëüíîãî âûïîëíåíèÿ ïðîãðàììû
m
È ÷åëîâåêó, è êîìïüþòåðó
m
Íè ÷åëîâåêó, íè êîìïüþòåðó
4.
Îïåðàòîðû âåòâëåíèÿ èñïîëüçóþòñÿ äëÿ m
Ìíîãîêðàòíîãî âûïîëíåíèÿ îäíîé è òîé æå ñåðèè êîìàíä
m
Ñðàâíåíèÿ çíà÷åíèÿ ïåðåìåííîé ñ ÷èñëîì èëè ñî çíà÷åíèåì äðóãîé ïåðåìåííîé
m
Ïðèñâàèâàíèÿ ïåðåìåííîé çíà÷åíèÿ
m
Âûïîëíåíèÿ îäíîé ñåðèè êîìàíä, åñëè óñëîâèå âûïîëíÿåòñÿ, è äðóãîé ñåðèè, åñëè óñëîâèå íå âûïîëíÿåòñÿ
Ãëàâà 4
Ôîðìû è ýëåìåíòû óïðàâëåíèÿ 4.1. Ôîðìà îñíîâà ãðàôè÷åñêîãî èíòåðôåéñà 4.2. Ñâîéñòâà ôîðìû 4.3. Ýëåìåíòû óïðàâëåíèÿ è èõ ñâîéñòâà 4.4. Ãåíåðàöèÿ ñîáûòèé
 1985 ãîäó áûëà ðàçðàáîòàíà äëÿ ïåðñîíàëüíûõ êîìïüþòåðîâ îïåðàöèîííàÿ ñèñòåìà ñ ãðàôè÷åñêèì èíòåðôåéñîì Windows 1.0. Ïîëüçîâàòåëü ïîëó÷èë âîçìîæíîñòü óïðàâëÿòü êîìïüþòåðîì ñ ïîìîùüþ ùåë÷êîâ ìûøüþ ïî ïèêòîãðàììàì è ïóíêòàì ìåíþ. Ïðè æåëàíèè ïîëüçîâàòåëü ïåðåõîäèë â ðåæèì MS-DOS, ãäå ââîäèë êîìàíäû ñ êëàâèàòóðû â êîìàíäíîé ñòðîêå.
46
Ãëàâà 4
4.1. Ôîðìà îñíîâà ãðàôè÷åñêîãî èíòåðôåéñà Ïðèëîæåíèå Windows (Windows Application) èìååò ãðàôè÷åñêèé ïîëüçîâàòåëüñêèé èíòåðôåéñ, ïîçâîëÿþùèé ïîëüçîâàòåëþ âçàèìîäåéñòâîâàòü ñ ïðèëîæåíèåì. Ïîëüçîâàòåëüñêèé èíòåðôåéñ åñòü íå ó âñåõ ïðîãðàìì íåêîòîðûå ïðîãðàììû âûïîëíÿþò âñå, ÷òî íóæíî, ñàìè èëè ðàáîòàþò â ôîíîâîì ðåæèìå, íå òðåáóÿ îò ïîëüçîâàòåëÿ íèêàêèõ äåéñòâèé ïîñëå çàïóñêà. Êîãäà âû ñîçäàåòå ïðèëîæåíèå Windows íà Visual Basic, Visual Studio àâòîìàòè÷åñêè äîáàâëÿåò â âàø ïðîåêò ôàéë ôîðìû Form1.vb.  ýòó ôîðìó ìîæíî äîáàâëÿòü ýëåìåíòû óïðàâëåíèÿ, íàïðèìåð êíîïêè, íàäïèñè, òåêñòîâûå ïîëÿ, âûïàäàþùèå ñïèñêè è ò. ä. Ýòè ýëåìåíòû óïðàâëåíèÿ ïîçâîëÿþò ïîëüçîâàòåëþ âçàèìîäåéñòâîâàòü ñ ïðîãðàììîé. Ïðåäïîëîæèì, ÷òî â ïðèëîæåíèè åñòü ôîðìà äëÿ îïèñàíèÿ ïðîêîëîòûõ øèí, â êîòîðîé çàäàåòñÿ èíôîðìàöèÿ îá ýòèõ øèíàõ. Âîò ïðèìåðíûé ñïèñîê ýëåìåíòîâ óïðàâëåíèÿ, êîòîðûå âàì ïîíàäîáÿòñÿ, ñ îïèñàíèåì èõ íàçíà÷åíèÿ: q
Òåêñòîâîå ïîëå, â êîòîðîì óêàçûâàåòñÿ ìàðêà àâòîìîáèëÿ.
q
Ãðóïïà ïåðåêëþ÷àòåëåé, ñ ïîìîùüþ êîòîðûõ ìîæíî óêàçàòü, êàêàÿ øèíà ïðîêîëîòà (ïðàâàÿ ïåðåäíÿÿ, ëåâàÿ ïåðåäíÿÿ, ïðàâàÿ çàäíÿÿ, ëåâàÿ çàäíÿÿ).
q
Ôëàæîê, êîòîðûé óñòàíàâëèâàåòñÿ, åñëè çàìåíà íóæíà ýêñòðåííî.
q
Âûïàäàþùèé ñïèñîê, â êîòîðîì ìîæíî âûáðàòü íóæíûé ðàçìåð øèíû äëÿ çàìåíû.
q
Êíîïêà, ïðè íàæàòèè êîòîðîé âûïîëíÿåòñÿ ïîèñê ïîäõîäÿùèõ øèí äëÿ çàìåíû.
Ôîðìû è ýëåìåíòû óïðàâëåíèÿ q
47
Òåêñòîâîå ïîëå, â êîòîðîì îòîáðàæàåòñÿ èíôîðìàöèÿ î ïîäõîäÿùèõ íàéäåííûõ øèíàõ, âêëþ÷àÿ èõ ïðîèçâîäèòåëÿ, ìîäåëü, ðàçìåð, êîëè÷åñòâî â çàïàñå è öåíó.
Òàêèì îáðàçîì, íà ôîðìå áóäóò äâà òåêñòîâûõ ïîëÿ, ÷åòûðå ïåðåêëþ÷àòåëÿ, âûïàäàþùèé ñïèñîê, ôëàæîê è êíîïêà. Èõ ìîæíî ðàñïîëîæèòü íà ôîðìå ìíîæåñòâîì ðàçíûõ ñïîñîáîâ èìåííî çäåñü è íà÷èíàåòñÿ ñàìîå èíòåðåñíîå. Ôîðìà ýòî òî æå ñàìîå, ÷òî õîëñò äëÿ õóäîæíèêà, à ýëåìåíòû óïðàâëåíèÿ òî æå, ÷òî êðàñêè. Íî íóæíî áûòü àêêóðàòíûì. Ôîðìà äîëæíà âûïîëíÿòü çàäà÷ó, äëÿ âûïîëíåíèÿ êîòîðîé îíà ïðåäíàçíà÷åíà. Îíà äîëæíà ñîîòâåòñòâîâàòü òðåáîâàíèÿì ïðîãðàììû. Åé äîëæíî áûòü ëåãêî ïîëüçîâàòüñÿ, è íà íåé íå äîëæíî áûòü íè÷åãî ëèøíåãî. Ñîçäàâàÿ ôîðìó, íóæíî ñíà÷àëà ðåøèòü: äëÿ ÷åãî íóæíà ýòà ôîðìà? ×òî îíà äîëæíà äåëàòü? Ôîðìà äîëæíà àêêóðàòíî âûãëÿäåòü. Íà íåé íå äîëæíî áûòü êó÷è ðàçíîöâåòíûõ ýëåìåíòîâ èëè ðàçäðàæàþùèõ âèçóàëüíûõ ýôôåêòîâ, âðîäå ìåðöàþùåãî òåêñòà ýòî áóäåò îòâëåêàòü ïîëüçîâàòåëÿ. Ýëåìåíòû óïðàâëåíèÿ äîëæíû ðàñïîëàãàòüñÿ â ÷åòêîì è ëîãè÷íîì ïîðÿäêå. Íóæíî ïðîäóìàòü ðàñïîëîæåíèå ýëåìåíòîâ, â êîòîðûå ïîëüçîâàòåëü áóäåò ââîäèòü èíôîðìàöèþ, ðàáîòàÿ ñ ïðîãðàììîé. Èíîãäà íóæíî ïðåäóïðåæäàòü ïîëüçîâàòåëÿ, ÷òî îí íå ââåë âñþ íóæíóþ èíôîðìàöèþ èëè ââåë íåâåðíóþ èíôîðìàöèþ. Ñîçäàâàÿ ôîðìû, ïîïûòàéòåñü ïðåäñòàâèòü ñåáÿ ïîëüçîâàòåëåì è ïîäóìàéòå, êàê ìîæíî áóäåò ðàáîòàòü ñ âàøåé ïðîãðàììîé. Ñîçäàâàÿ ôîðìó, íóæíî ïîìíèòü, ÷òî âñå ïðèëîæåíèÿ Windows âûãëÿäÿò áîëåå èëè ìåíåå ïîõîæå. Ïîëüçîâàòåëü áóäåò îæèäàòü, ÷òî âàøå ïðèëîæåíèå ñîîòâåòñòâóåò îïðåäåëåííûì ñòàíäàðòàì è âåäåò ñåáÿ ñîîòâåòñòâåííî. Íàïðèìåð, ïåðâîå ìåíþ â ñòðîêå ìåíþ ïðèëîæåíèé Windows ýòî îáû÷íî ìåíþ Ôàéë, â êîòîðîì îáû÷íî åñòü ïóíêò Âûõîä, ïðè âûáîðå êîòîðîãî ïðîãðàììà çàâåðøàåò ðàáîòó.
48
Ãëàâà 4 Ïîëüçîâàòåëü ïðèäåò â çàìåøàòåëüñòâî è îñòàíåòñÿ íåäîâîëüíûì, åñëè, íàïðèìåð, ïðè ùåë÷êå ïî êíîïêå ñ íàäïèñüþ Âû÷èñëèòü ðåçóëüòàò öâåò ôîíà îêíà ñòàíåò êðàñíûì, à òåêñò âñåõ íàäïèñåé îêàæåòñÿ íàïèñàííûì ïî-ôðàíöóçñêè. Êàê âû óæå çíàåòå, êîãäà âû ñîçäàåòå íîâîå ïðèëîæåíèå Windows, Visual Studio àâòîìàòè÷åñêè äîáàâëÿåò â íåãî ôîðìó Form1.vb. Ýòî îñíîâíàÿ, èëè íà÷àëüíàÿ, ôîðìà ïðèëîæåíèÿ. Èìåííî åå ïîëüçîâàòåëü âèäèò ïðè çàïóñêå ïðîãðàììû. Ñ îñíîâíîé ôîðìû ïîëüçîâàòåëü ìîæåò îáðàòèòüñÿ ê ëþáîé äðóãîé ÷àñòè ïðèëîæåíèÿ ñ ïîìîùüþ ðàñïîëîæåííîé íà íåé ñòðîêè ìåíþ èëè ïàíåëè èíñòðóìåíòîâ. Âûáèðàÿ ïóíêòû ìåíþ èëè íàæèìàÿ êíîïêè â îñíîâíîé ôîðìå, ïîëüçîâàòåëü ìîæåò îòêðûâàòü äðóãèå ôîðìû. Ýòè ôîðìû ìîãóò ïðåäíàçíà÷àòüñÿ äëÿ ââîäà èëè îòîáðàæåíèÿ èíôîðìàöèè èëè äëÿ âçàèìîäåéñòâèÿ ñ ïðîãðàììîé äðóãèìè ñïîñîáàìè. Îáû÷íî ó êàæäîé ôîðìû åñòü êîíêðåòíîå ïðåäíàçíà÷åíèå, çàêëþ÷àþùååñÿ, íàïðèìåð, â îòîáðàæåíèè ðåçóëüòàòîâ èãðû, ââîäå äàííûõ èëè íàñòðîéêå ïðîãðàììû. Ïîñëå òîãî, êàê ïîëüçîâàòåëü ââåäåò íóæíóþ èíôîðìàöèþ èëè ïðîñìîòðèò ïîêàçàííóþ, îí îáû÷íî çàêðûâàåò ôîðìó è âîçâðàùàåòñÿ ê îñíîâíîé ôîðìå. Õîòÿ Visual Studio ñîçäàåò òîëüêî ôîðìó Form1, â ïðîåêò ìîæíî äîáàâèòü ñòîëüêî äðóãèõ ôîðì, ñêîëüêî âàì ïîíàäîáèòñÿ.
4.2. Ñâîéñòâà ôîðìû Òåïåðü ìû ìîæåì íà÷èíàòü ñîçäàíèå ïðîåêòà «Çàìåíà øèíû». Ñíà÷àëà íåîáõîäèìî ñîçäàòü íîâóþ ôîðìó, çàòåì ðàçìåñòèòü íà íåé ýëåìåíòû óïðàâëåíèÿ è çàäàòü çíà÷åíèÿ èõ ñâîéñòâ, è, íàêîíåö, ñîçäàòü ïðîãðàììíûé êîä îáðàáîò÷èêîâ ñîáûòèé, íà êîòîðûå ðåàãèðóþò ýëåìåíòû óïðàâëåíèÿ.
Ôîðìû è ýëåìåíòû óïðàâëåíèÿ
49
Ñîçäàíèå ôîðìû ïðîåêòà è èçìåíåíèå åå ñâîéñòâ. Êîãäà âû ñîçäàåòå íîâîå ïðèëîæåíèå Windows, ôîðìà Form1 ñîçäàåòñÿ àâòîìàòè÷åñêè. Åå ðàçìåð ïî óìîë÷àíèþ 300 × 300 ïèêñåëåé. Çíà÷åíèå ñâîéñòâ, óñòàíîâëåííûõ ïî óìîë÷àíèþ, ìîæíî ëåãêî óçíàòü â îêíå Ñâîéñòâà (Properties). Êðîìå òîãî, â îêíå ñâîéñòâ ìîæíî è èçìåíÿòü çíà÷åíèÿ ñâîéñòâ. Ñîçäàâ ïðîåêò, îäèí ðàç ùåëêíèòå ëåâîé êíîïêîé ìûøè ïî ôîðìå Form1, ÷òîáû âûáðàòü åå. Íàæìèòå êëàâèøó {F4}, ÷òîáû îòêðûòü îêíî Ñâîéñòâà.
1. Ïîñêîëüêó ñåé÷àñ âûáðàíà ôîðìà Form1, òî
â îêíå Ñâîéñòâà îòîáðàæàþòñÿ ñâîéñòâà ýòîé ôîðìû. Çàìåòüòå, ÷òî ïî óìîë÷àíèþ ïîäñâå÷èâàåòñÿ ñâîéñòâî Text.
50
Ãëàâà 4 2. Ïðîêðóòèòå âíèç ñïèñîê ñâîéñòâ ôîðìû è
íàéäèòå â íåì ñâîéñòâî Size. Îáðàòèòå âíèìàíèå íà çíà÷îê «ïëþñ» ðÿäîì ñî ñâîéñòâîì Size. Ýòî ïîêàçûâàåò, ÷òî ñâîéñòâî Size ìîæíî ðàçâåðíóòü, ÷òîáû äîáðàòüñÿ äî äðóãèõ ñâîéñòâ.
3. Ùåëêíèòå ïî çíà÷êó «ïëþñ» ðÿäîì ñî ñâîéñòâîì Size. Îòêðîþòñÿ ñâîéñòâà Height è Width. Çíà÷åíèå ñâîéñòâà Height (âûñîòà) ôîðìû Form1 ðàâíî 300, è çíà÷åíèå ñâîéñòâà Width (øèðèíà) òîæå ðàâíî 300. Äàâàéòå èçìåíèì ðàçìåð ôîðìû Form1.
4. Âûïîëíèòå äâîéíîé ùåë÷îê ïî ñâîéñòâó Width, ÷òîáû ïîëó÷èòü âîçìîæíîñòü èçìåíèòü åãî çíà÷åíèå (300). Íàæìèòå êëàâèøó {Backspace}, ÷òîáû î÷èñòèòü çíà÷åíèå ñâîéñòâà.
Ôîðìû è ýëåìåíòû óïðàâëåíèÿ
51
5. Ââåäèòå ÷èñëî 450. Íàæìèòå êëàâèøó {Enter}. Âîò è âñå! Âû òîëüêî ÷òî èçìåíèëè øèðèíó ôîðìû çíà÷åíèå åå ñâîéñòâà Width. Ïîñìîòðèòå, êàê èçìåíèëàñü øèðèíà ôîðìû íà ýêðàíå, êîãäà âû íàæàëè êëàâèøó {Enter}. Êðîìå òîãî, òåïåðü â ñâîéñòâå Width â îêíå Ñâîéñòâà ïîêàçàíî íîâîå çíà÷åíèå.
À òåïåðü äàâàéòå èçìåíèì çíà÷åíèå ñâîéñòâà BackColor ôîðìû Form1. Ñâîéñòâî BackColor ýòî öâåò ôîíà ôîðìû è ýëåìåíòîâ óïðàâëåíèÿ, ðàñïîëîæåííûõ íà íåé.  îêíå Ñâîéñòâà ïðîêðóòèòå ñïèñîê, ÷òîáû íàéòè ñâîéñòâî BackColor. Ùåëêíèòå ïî çíà÷åíèþ Control. Ñïðàâà ïîÿâèòñÿ çíà÷îê ñî ñòðåëêîé âíèç. Ùåëêíèòå ïî ýòîìó çíà÷êó. Îòêðîåòñÿ îêíî ñ ïàëèòðîé. Ïåðåéäèòå â ýòîì îêíå íà âêëàäêó Custom. Âûïîëíèòå äâîéíîé ùåë÷îê ïî ëþáîìó êâàäðàòèêó ñ öâåòîì, ÷òîáû âûáðàòü ýòîò öâåò. À òåïåðü ïîñìîòðèòå íà ôîðìó! Ïîñòðîéòå ðåøåíèå è çàïóñòèòå ïðîåêò. Ïîñìîòðèòå, êàê òåïåðü âûãëÿäèò ôîðìà! Êðîìå òîãî, òåïåðü îíà ïðÿìîóãîëüíàÿ, à íå êâàäðàòíàÿ! Òåïåðü âû çíàåòå, êàê èçìåíÿòü çíà÷åíèÿ ñâîéñòâ ôîðìû ñ ïîìîùüþ îêíà Ñâîéñòâà. Ïðîñìîòðèòå ñïèñîê ñâîéñòâ ôîðìû Form1 è ïîçíàêîìüòåñü ñ íèìè. Îêíî Ñâîéñòâà ïîçâîëÿåò âàì èçìåíÿòü çíà÷åíèÿ ñâîéñòâ ôîðìû íà ýòàïå ïðîåêòèðîâàíèÿ, ò. å. âî âðåìÿ ñîçäàíèÿ ôîðìû. Êàê âû âñêîðå óâèäèòå, îêíî Ñâîéñòâà ïîçâîëÿåò èçìåíÿòü çíà÷åíèÿ ñâîéñòâ íå òîëüêî ôîðìû, íî è êíîïîê, òåêñòîâûõ ïîëåé è äðóãèõ ýëåìåíòîâ óïðàâëåíèÿ.
52
Ãëàâà 4 Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 4.1. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET
Microsoft-CD
ñîçäàòü ôîðìó äëÿ ïðîåêòà «Çàìåíà øèíû», îïèñàííóþ â ïàðàãðàôå.
4.3. Ýëåìåíòû óïðàâëåíèÿ è èõ ñâîéñòâà Âû óæå çíàåòå, êàê ïîìåñòèòü íà ôîðìó êíîïêè. Êàê âû íàâåðíÿêà óæå âèäåëè, â îêíå Îáëàñòü ýëåìåíòîâ äîñòóïíî ìíîæåñòâî äðóãèõ ýëåìåíòîâ óïðàâëåíèÿ. Ðàññìîòðèì, êàê èñïîëüçîâàòü ñàìûå ðàñïðîñòðàíåííûå èç íèõ è êàê çàäàâàòü çíà÷åíèÿ èõ íàèáîëåå ïîëåçíûõ ñâîéñòâ. Íà÷íåì ñ íàäïèñåé. Íàäïèñè. Íàäïèñü (Label) ýòî ýëåìåíò óïðàâëåíèÿ, ïîçâîëÿþùèé ðàçìåùàòü íà ôîðìå òåêñò. Ýòîò ýëåìåíò ÷àñòî èñïîëüçóåòñÿ äëÿ ñîîáùåíèÿ ïîëüçîâàòåëþ êàêèõ-òî ñâåäåíèé èëè äëÿ óêàçàíèÿ ïîðÿäêà ââîäà èíôîðìàöèè â ôîðìå. Îòêðîéòå îêíî Îáëàñòü ýëåìåíòîâ è âûïîëíèòå äâîéíîé ùåë÷îê ïî ýëåìåíòó óïðàâëåíèÿ Label. Ýòîò ýëåìåíò áóäåò äîáàâëåí íà ôîðìó. Ïåðåòàùèòå åãî â ïîäõîäÿùåå ìåñòî. Äëÿ ýòîãî ïîäâåäèòå ê íåìó êóðñîð ìûøè, íàæìèòå ëåâóþ êíîïêó ìûøè è, óäåðæèâàÿ åå íàæàòîé, ïåðåìåùàéòå ìûøü. Âûáåðèòå ýëåìåíò è îòêðîéòå îêíî Ñâîéñòâà.  ýòîì îêíå òåïåðü îòîáðàæàåòñÿ ñïèñîê ñâîéñòâ ýëåìåíòà Label. Ïðîêðóòèòå ñïèñîê, ÷òîáû äîáðàòüñÿ äî ñâîéñòâà Text, äâîéíûì ùåë÷êîì ïî íåìó âûäåëèòå òåêñò è óäàëèòå åãî, íàæàâ êëàâèøó {Backspace}. Óñòàíîâèòå çíà÷åíèå Ââåäèòå ìàðêó àâòîìîáèëÿ. Òåêñòîâûå ïîëÿ. Òåêñòîâûå ïîëÿ (TextBox) ìîæíî èñïîëüçîâàòü äëÿ âûâîäà èíôîðìàöèè íà ýêðàí è äëÿ ïîëó÷åíèÿ èíôîðìàöèè îò ïîëüçîâàòåëÿ.  îêíå Îáëàñòü ýëåìåíòîâ ñäåëàéòå äâîéíîé ùåë÷îê ïî ýëåìåíòó TextBox. Íà ôîðìó áóäåò äîáàâëåí ýëåìåíò TextBox1. Ïåðåòàùèòå ýòîò ýëåìåíò òàê, ÷òî-
Ôîðìû è ýëåìåíòû óïðàâëåíèÿ
53
áû îí íàõîäèëñÿ ñïðàâà îò íàäïèñè Label1.  îêíå Ñâîéñòâà íàéäèòå ñâîéñòâî Text, âûïîëíèòå ïî íåìó äâîéíîé ùåë÷îê è íàæìèòå êëàâèøó {Backspace}, ÷òîáû óäàëèòü òåêñò. Óñòàíîâèòå çíà÷åíèå False ñâîéñòâà ReadOnly, ÷òîáû ïîëüçîâàòåëü ñìîã ââîäèòü òåêñò â ýòî òåêñòîâîå ïîëå. (Çíà÷åíèå False óñòàíîâëåíî ïî óìîë÷àíèþ.) Òåêñòîâûå ïîëÿ ÷àñòî èñïîëüçóþòñÿ äëÿ âûâîäà áîëüøèõ îáúåìîâ èíôîðìàöèè. Åñëè òåêñò äåéñòâèòåëüíî äëèííûé, âû, âåðîÿòíî, çàõîòèòå äîáàâèòü ê òåêñòîâîìó ïîëþ ïîëîñû ïðîêðóòêè. Äîáàâüòå íà ôîðìó åùå îäèí ýëåìåíò TextBox. Óñòàíîâèòå çíà÷åíèå True åãî ñâîéñòâà Multiline. Çàäàéòå çíà÷åíèå 100 ïèêñåëåé åãî ñâîéñòâà Height. Äëÿ ñâîéñòâà Width òîæå çàäàéòå çíà÷åíèå 100 ïèêñåëåé. Åñëè äëÿ ñâîéñòâà Multiline óñòàíîâëåíî çíà÷åíèå False, âàì íå óäàñòñÿ èçìåíèòü çíà÷åíèå ñâîéñòâà Height. Óñòàíîâèòå çíà÷åíèå Vertical ñâîéñòâà Scrollbars. Óñòàíîâèòå çíà÷åíèå True ñâîéñòâà ReadOnly, ÷òîáû ïîëüçîâàòåëü íå ìîã ââîäèòü òåêñò â ýòî òåêñòîâîå ïîëå. Ïåðåêëþ÷àòåëè. Ïåðåêëþ÷àòåëè (RadioButton) ïîçâîëÿþò ïîëüçîâàòåëþ âûáèðàòü îäèí âàðèàíò èç íåñêîëüêèõ ïðåäëîæåííûõ. Ïîëüçîâàòåëü ìîæåò âêëþ÷èòü òîëüêî îäèí ïåðåêëþ÷àòåëü, ò. å. îäèí âàðèàíò èç íåñêîëüêèõ.  îêíå Îáëàñòü ýëåìåíòîâ âûïîëíèòå äâîéíîé ùåë÷îê ïî ýëåìåíòó RadioButton. Íà ôîðìó áóäåò äîáàâëåí ýëåìåíò RadioButton1 ýòî îäèí ïåðåêëþ÷àòåëü (îäèí âàðèàíò). Âûáåðèòå ýëåìåíò RadioButton1 íà ôîðìå, ùåëêíèòå ïî íåìó ïðàâîé êíîïêîé è âûáåðèòå êîìàíäó Êîïèðîâàòü èç îòêðûâøåãîñÿ ìåíþ. Ùåëêíèòå â ïóñòîì ìåñòå íà ôîðìå Form1, ùåëêíèòå ïðàâîé êíîïêîé ìûøè è âûáåðèòå èç ìåíþ êîìàíäó Âñòàâèòü. Íà ôîðìå ïîÿâèòñÿ åùå îäèí ïåðåêëþ÷àòåëü RadioButton2. Ïîâòîðíî âûçûâàÿ êîìàíäó Âñòàâèòü, ñîçäàéòå ïåðåêëþ÷àòåëè RadioButton3 è RadioButton4.
54
 ÿçûêàõ J# è C# ôîðìû ñîçäàþòñÿ òî÷íî òàê æå, êàê è â Visual Basic .NET. Ýòî íåñëîæíî áëàãîäàðÿ Visual Studio .NET. Âñå, ÷òî íóæíî ýòî îòêðûòü îêíî Îáëàñòü ýëåìåíòîâ è ïåðåòàùèòü íóæíûå ýëåìåíòû íà ôîðìó. Çàòåì íóæíî îòêðûòü îêíî Ñâîéñòâà è íàñòðîèòü ñâîéñòâà ýëåìåíòîâ.
Ãëàâà 4 Âûáåðèòå RadioButton1 è îòêðîéòå îêíî Ñâîéñòâà. Ïðîêðóòèòå ñïèñîê ñâîéñòâ è íàéäèòå â íåì ñâîéñòâî Text. Èçìåíèòå åãî çíà÷åíèå ñ RadioButton1 íà Ëåâîå,ïåðåäíåå. Èçìåíèòå çíà÷åíèÿ ñâîéñòâà Text äðóãèõ ïåðåêëþ÷àòåëåé: ó RadioButton2 íà Ëåâîå,çàäíåå, ó RadioButton3 íà Ïðàâîå,ïåðåäíåå, ó RadioButton4 íà Ïðàâîå,çàäíåå. Ôëàæêè. Ôëàæêè (CheckBox) òîæå ïîçâîëÿþò ïîëüçîâàòåëþ äåëàòü âûáîð, íî â îòëè÷èå îò ïåðåêëþ÷àòåëåé èç ãðóïïû ôëàæêîâ ìîæíî âûáèðàòü ñðàçó íåñêîëüêî âàðèàíòîâ (â òîì ÷èñëå âñå).  îêíå Îáëàñòü ýëåìåíòîâ âûïîëíèòå äâîéíîé ùåë÷îê ïî ýëåìåíòó CheckBox. Íà ôîðìó áóäåò äîáàâëåí ýëåìåíò CheckBox1. Îòêðîéòå îêíî Ñâîéñòâà è èçìåíèòå çíà÷åíèå ñâîéñòâà Text íà Ýêñòðåííî. Âûïàäàþùèé ñïèñîê. Âûïàäàþùèé ñïèñîê (ÑomboBox) ïðåäîñòàâëÿåò ïîëüçîâàòåëþ íàáîð ïóíêòîâ äëÿ âûáîðà. Êîãäà ïîëüçîâàòåëü âûáèðàåò îäèí èç ïóíêòîâ ñïèñêà, âûáðàííûé ïóíêò îòîáðàæàåòñÿ â âåðõíåé ñòðîêå.  îêíå Îáëàñòü ýëåìåíòîâ âûïîëíèòå äâîéíîé ùåë÷îê ïî ýëåìåíòó ÑomboBox. Íà ôîðìó áóäåò äîáàâëåí ýëåìåíò ÑomboBox1. Îòêðîéòå îêíî Ñâîéñòâà è èçìåíèòå çíà÷åíèå ñâîéñòâà Text íà Âûáåðèòå ðàçìåð øèíû. Íàéäèòå â ñïèñêå ñâîéñòâ ñâîéñòâî Items. Ùåëêíèòå ïî çíà÷åíèþ (Êîëëåêöèÿ). Ðÿäîì ñ íèì ïîÿâèòñÿ êíîïêà ñ ìíîãîòî÷èåì. Ùåëêíèòå ïî ýòîé êíîïêå, îòêðîåòñÿ îêíî, â êîòîðîì ìîæíî ââåñòè ñïèñîê ïóíêòîâ, êîòîðûå áóäóò îòîáðàæàòüñÿ â âûïàäàþùåì ñïèñêå. Êàæäûé ïóíêò ñïèñêà äîëæåí íà÷èíàòüñÿ ñ íîâîé ñòðîêè. Ââîäÿ êàæäûé ïóíêò, íàæèìàéòå êëàâèøó {Enter}, ÷òîáû ñîçäàòü íîâóþ ñòðîêó. Ââåäèòå â îêíå ÷èñëî 12, íàæìèòå {Enter}, ââåäèòå 13, íàæìèòå {Enter}, ââåäèòå 14, íàæìèòå {Enter} è ââåäèòå 15. Íàæìèòå êíîïêó OK, ÷òîáû çàêðûòü îêíî. Êíîïêè. Äîáàâüòå íà ôîðìó êíîïêó Button. Óñòàíîâèòå äëÿ åå ñâîéñòâà Text çíà÷åíèå Çàìåíèòü øèíó. Èçìåíèòå öâåò ôîíà (ñâîéñòâî BackColor) íà
Ôîðìû è ýëåìåíòû óïðàâëåíèÿ
Ó ôîðìû è ìíîãèõ ýëåìåíòîâ óïðàâëåíèÿ åñòü îäèíàêîâûå ïî ñìûñëó ñâîéñòâà. Âîò íåêîòîðûå ðàñïðîñòðàíåííûå ñâîéñòâà: q BackColor öâåò
ôîíà;
q Enabled äîñòóï ê
ýëåìåíòó;
q ForeColor öâåò; q Location ìåñòî, â
êîòîðîì ýëåìåíò íàõîäèòñÿ;
q Name èìÿ; q Size (Height, Width)
ðàçìåð (âûñîòà, øèðèíà);
q Text òåêñò èëè
íàäïèñü;
q Visible âèäèì
ýëåìåíò èëè íåâèäèì.
55
êðàñíûé. Íàéäèòå â ñïèñêå ñâîéñòâ ñâîéñòâî Font. Ùåëêíèòå ïî ýòîìó ñâîéñòâó, ÷òîáû ïîÿâèëàñü êíîïêà ñ ìíîãîòî÷èåì. Ùåëêíèòå ïî ýòîé êíîïêå, ÷òîáû îòêðûòü îêíî âûáîðà øðèôòà.  ýòîì îêíå èçìåíèòå íà÷åðòàíèå øðèôòà íà ïîëóæèðíîå: ñâîéñòâó Bold ïðèñâîéòå çíà÷åíèå True. Íàæìèòå êíîïêó OK, ÷òîáû çàêðûòü îêíî âûáîðà øðèôòà. Ïîñòðîéòå ðåøåíèå è çàïóñòèòå ïðîåêò. Ïîïðîáóéòå ùåëêàòü ïî ðàçíûì ýëåìåíòàì óïðàâëåíèÿ â îêíå çàïóñòèâøåãîñÿ ïðèëîæåíèÿ. ×òî ïðîèçîéäåò, åñëè ùåëêíóòü ïî âûïàäàþùåìó ñïèñêó? ×òî áóäåò, åñëè âûáðàòü îäíó èç ïîçèöèé ïåðåêëþ÷àòåëÿ, êàêóþ-òî äðóãóþ ïîçèöèþ, óñòàíîâèòü èëè ñáðîñèòü ôëàæîê? Ïîïðîáóéòå ââåñòè òåêñò â òåêñòîâîå ïîëå ñïðàâà îò íàäïèñè Ââåäèòå ìàðêó àâòîìîáèëÿ. Îáðàòèòå âíèìàíèå íà òî, ÷òî âòîðîå òåêñòîâîå ïîëå ñåðîå è âû íå ìîæåòå ââåñòè â íåãî òåêñò. Íàæìèòå êíîïêó ñî çíà÷êîì â âåðõíåì ïðàâîì óãëó îêíà, ÷òîáû çàêðûòü âàøå ïðèëîæåíèå. Ïîýêñïåðèìåíòèðóéòå ñ ðàçíûìè ñâîéñòâàìè ýëåìåíòîâ óïðàâëåíèÿ, êîòîðûå âû ïîìåñòèëè íà ôîðìó. Ìîæåòå ïåðåìåùàòü ýëåìåíòû ïî ôîðìå, ÷òîáû îíà âûãëÿäåëà àêêóðàòíåå è áûëà óäîáíåå â èñïîëüçîâàíèè. Ìîæåòå äîáàâèòü íàäïèñè, ïîÿñíÿþùèå ïîëüçîâàòåëþ íàçíà÷åíèå êàæäîãî ýëåìåíòà óïðàâëåíèÿ è äàþùèå óêàçàíèÿ, êàêóþ èíôîðìàöèþ íóæíî ââîäèòü. Êàê, ïî âàøåìó ìíåíèþ, äîëæíû ðàñïîëàãàòüñÿ ýëåìåíòû íà ôîðìå? Êàêîé ýëåìåíò äîëæåí áûòü ïåðâûì? Êàêîé äîëæåí áûòü ïîñëåäíèì? Âû òîëüêî ÷òî ñîçäàëè ôîðìó äëÿ ïðîåêòà «Çàìåíà øèíû». Ñîçäàâàÿ åå, âû ïîçíàêîìèëèñü ñ íåñêîëüêèìè âèäàìè ýëåìåíòîâ óïðàâëåíèÿ è íåêîòîðûìè èõ ñâîéñòâàìè. ×òîáû ôîðìà çàðàáîòàëà, íóæíî äîáàâèòü ê íåé êîä íà Visual Basic .NET.
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 4.2. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
íà ôîðìó äëÿ ïðîåêòà «Çàìåíà øèíû» ïîìåñòèòå ýëåìåíòû óïðàâëåíèÿ, îïèñàííûå â ïàðàãðàôå.
56
Ãëàâà 4
4.4. Ãåíåðàöèÿ ñîáûòèé Ñîáûòèÿ ãåíåðèðóþòñÿ â ðåçóëüòàòå äåéñòâèé ïîëüçîâàòåëÿ. Íàïðèìåð, ñîáûòèÿ ãåíåðèðóþòñÿ, êîãäà ïîëüçîâàòåëü íàæèìàåò êíîïêó, âûáèðàåò ïóíêò â âûïàäàþùåì ñïèñêå èëè èçìåíÿåò òåêñò â òåêñòîâîì ïîëå. Ùåë÷êè èëè äâîéíûå ùåë÷êè ïî ýëåìåíòàì óïðàâëåíèÿ, ïåðåìåùåíèå êóðñîðà íà ýòè ýëåìåíòû óïðàâëåíèÿ èëè ñ íèõ òîæå ãåíåðèðóþò ñîáûòèÿ. Êîãäà ïðîèñõîäÿò ýòè ñîáûòèÿ, èñïîëíÿåòñÿ êîä Visual Basic .NET, ñâÿçàííûé ñ íèìè. Èìåííî êîä Visual Basic .NET çàñòàâëÿåò ïðîãðàììó äåëàòü òî, ÷òî îíà äîëæíà äåëàòü. Êîãäà âû ñîçäàâàëè ïðèëîæåíèå «Ïðèâåò, Ìèð», âû âûïîëíèëè äâîéíîé ùåë÷îê ïî êíîïêå è îòêðûëîñü îêíî ðåäàêòîðà êîäà, â êîòîðîì âû ââåëè êîä â îáðàáîò÷èê ñîáûòèÿ Button1_Click. Ñîáûòèå Button1_Click ýòî ñîáûòèå ïî óìîë÷àíèþ äëÿ êíîïêè (íàæàòèå ýòîé êíîïêè). Ó êàæäîãî ýëåìåíòà óïðàâëåíèÿ åñòü ñîáûòèå ïî óìîë÷àíèþ. Êîãäà âû ðàáîòàåòå â ðåäàêòîðå ôîðì, äâîéíîé ùåë÷îê ïî ýëåìåíòó óïðàâëåíèÿ ñîçäàåò îáðàáîò÷èê ñîáûòèÿ ïî óìîë÷àíèþ äëÿ ýòîãî ýëåìåíòà (åñëè ýòîò îáðàáîò÷èê íå ñîçäàâàëñÿ ðàíåå) è îòêðûâàåò ýòîò îáðàáîò÷èê â ðåäàêòîðå êîäà. Íàïðèìåð: q Äëÿ êíîïêè ñîáûòèå ïî óìîë÷àíèþ Click (ùåë÷îê ïî êíîïêå). q
Äëÿ òåêñòîâîãî ïîëÿ ñîáûòèå ïî óìîë÷àíèþ TextChanged (èçìåíåíèå òåêñòà).
q
Äëÿ ïîçèöèè ïåðåêëþ÷àòåëÿ ñîáûòèå ïî óìîë÷àíèþ CheckedChanged (âêëþ÷åíèå/âûêëþ÷åíèå).
q
Äëÿ ôëàæêà ñîáûòèå ïî óìîë÷àíèþ CheckedChanged (óñòàíîâêà/ñáðîñ ôëàæêà).
q
Äëÿ âûïàäàþùåãî ñïèñêà ñîáûòèå ïî óìîë÷àíèþ SelectedIndexChanged (âûáîð ïóíêòà ñïèñêà).
Ôîðìû è ýëåìåíòû óïðàâëåíèÿ
57
 ïðîåêòå «Çàìåíà øèíû» äîáàâèì êîä â îáðàáîò÷èêè ñîáûòèé ïî óìîë÷àíèþ äëÿ ýëåìåíòîâ íà ôîðìå, êîòîðóþ ìû òîëüêî ÷òî ñîçäàëè. Ýòîò êîä áóäåò âûâîäèòü íà ýêðàí îêíî, â êîòîðîì áóäåò ñîîáùàòüñÿ òèï ýëåìåíòà, ñãåíåðèðîâàâøåãî ñîîáùåíèå.  ðåäàêòîðå ôîðì âûïîëíèòå äâîéíîé ùåë÷îê ïî î÷åðåäè ïî êàæäîìó ýëåìåíòó óïðàâëåíèÿ íà ôîðìå. Äëÿ êàæäîãî ýëåìåíòà áóäåò îòêðûâàòüñÿ ðåäàêòîð êîäà, â êîòîðîì áóäåò ñîçäàí îáðàáîò÷èê ñîáûòèÿ ïî óìîë÷àíèþ äëÿ ýòîãî ýëåìåíòà. Âñòàâüòå â êàæäûé ñîçäàâàåìûé îáðàáîò÷èê ñëåäóþùóþ ñòðîêó êîäà: MessageBox.Show(sender.GetType.Name)
Ïîñòðîéòå ðåøåíèå è çàïóñòèòå ïðîåêò. Ïîïðîáóéòå ùåëêàòü ïî ðàçíûì ýëåìåíòàì óïðàâëåíèÿ, èçìåíÿòü òåêñò â òåêñòîâîì ïîëå è âûáèðàòü ðàçíûå ïóíêòû èç âûïàäàþùåãî ñïèñêà. Êàæäûé ðàç, êîãäà êàêîé-òî ýëåìåíò ñãåíåðèðóåò ñîáûòèå ïî óìîë÷àíèþ, áóäåò âûâåäåíî îêíî, ñîîáùàþùåå òèï ýëåìåíòà, ñãåíåðèðîâàâøåãî ñîáûòèå.  ñëåäóþùèõ ãëàâàõ ïðîåêò «Çàìåíà øèíû» áóäåò äîðàáîòàí òàê, ÷òî â îáðàáîò÷èêàõ ñîáûòèé áóäåò ðàçìåùàòüñÿ êîä, âûïîëíÿþùèé âñå, ÷òî äîëæíî äåëàòü ýòî ïðèëîæåíèå. Íàïðèìåð, ïðè íàæàòèè êíîïêè Çàìåíèòü øèíó â òåêñòîâîì ïîëå áóäåò âûâîäèòüñÿ ñïèñîê ïîäõîäÿùèõ òèïîâ øèí. Ó êàæäîãî ýëåìåíòà óïðàâëåíèÿ åñòü ìíîæåñòâî ñîáûòèé, ïîìèìî ñîáûòèÿ ïî óìîë÷àíèþ. Ó áîëüøèíñòâà ýëåìåíòîâ óïðàâëåíèÿ åñòü äåñÿòêè ñîáûòèé. Íàïðèìåð, ó òåêñòîâîãî ïîëÿ åñòü òàêèå ñîáûòèÿ: q q q q q
TextChanged (èçìåíåíèå òåêñòà ñîáûòèå ïî óìîë÷àíèþ); Click (ùåë÷îê ïî òåêñòîâîìó ïîëþ); DoubleClick (äâîéíîé ùåë÷îê ïî òåêñòîâîìó ïîëþ); MouseEnter (ïîïàäàíèå êóðñîðà ìûøè íà òåêñòîâîå ïîëå); MouseLeave (óõîä êóðñîðà ìûøè ñ òåêñòîâîãî ïîëÿ);
58
Ãëàâà 4 q
 C# è J# ó ýëåìåíòîâ óïðàâëåíèÿ åñòü òàêèå æå ñîáûòèÿ, êàê è â Visual Basic .NET. Ýòî ïîòîìó, ÷òî ýòè ýëåìåíòû óïðàâëåíèÿ ïðèíàäëåæàò ê ïëàòôîðìå .NET; Visual Studio ïðîñòî óïðîùàåò ðàáîòó ñ íèìè.
è ìíîæåñòâî äðóãèõ.
×òîáû óâèäåòü âñå ñîáûòèÿ, êîòîðûå åñòü ó ýëåìåíòà, ùåëêíèòå ïî íåìó ïðàâîé êíîïêîé è âûáåðèòå èç îòêðûâøåãîñÿ ìåíþ êîìàíäó Ïðîñìîòðåòü êîä. Îòêðîåòñÿ îêíî ðåäàêòîðà êîäà. Íàä ýòèì îêíîì åñòü äâà âûïàäàþùèõ ñïèñêà.  ïðàâîì ñïèñêå ïåðå÷èñëåíû âñå ñîáûòèÿ ýëåìåíòà óïðàâëåíèÿ. Äëÿ ñîáûòèé, âûäåëåííûõ æèðíûì øðèôòîì, óæå ñîçäàíû îáðàáîò÷èêè ñîáûòèé.
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 4.3. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
â ïðîåêòå «Çàìåíà øèíû» ñîçäàòü äëÿ ýëåìåíòîâ óïðàâëåíèÿ îáðàáîò÷èêè ñîáûòèé, îïèñàííûå â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Çàìåíà_øèíû.exe. 4.4.  ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET ñîçäàòü ïðîåêò «Öåíà ïèööû», ïîçâîëÿþùèé êëèåíòàì îïðåäåëÿòü ñòîèìîñòü èõ çàêàçîâ. Çàãîòîâêà ïðîåêòà, ñîäåðæàùàÿ ïðîãðàììíûé êîä ïðîåêòà, õðàíèòñÿ â àðõèâå Öåíà_ïèööû.exe. Ñîçäàòü ôîðìó, èçìåíèòü íàäïèñü â çàãîëîâêå ôîðìû è ïîìåñòèòü íà íåå ñëåäóþùèå ýëåìåíòû óïðàâëåíèÿ: q 3 ïåðåêëþ÷àòåëÿ; q 2 íàäïèñè; q 8 ôëàæêîâ:
Ôîðìû è ýëåìåíòû óïðàâëåíèÿ
59
4.5. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET
ñîçäàòü ïðîåêò «Êðåñòèêè-íîëèêè», ïîçâîëÿþùèé ðåàëèçîâàòü íà êîìïüþòåðå øèðîêî èçâåñòíóþ èãðó «Êðåñòèêè-íîëèêè». Çàãîòîâêà ïðîåêòà, ñîäåðæàùàÿ ïðîãðàììíûé êîä ïðîåêòà, õðàíèòñÿ â àðõèâå Êðåñòèêè-íîëèêè.exe. Ñîçäàéòå ôîðìó, èçìåíèòå íàäïèñü â çàãîëîâêå ôîðìû è ïîìåñòèòå íà íåå ýëåìåíòû óïðàâëåíèÿ òàê, êàê îïèñàíî íèæå: 1. Ùåëêíèòå â ïóñòîì ìåñòå íà ôîðìå, ÷òîáû âûáðàòü åå. Èçìåíèòå çíà÷åíèå åå ñâîéñòâà Text íà Tic Tac Toe. 2. Ñîçäàéòå 9 ýëåìåíòîâ Label c èìåíàìè îò Label1 äî Label9. Ðàñïîëîæèòå èõ òàê, ÷òîáû ýëåìåíò Label1 áûë â âåðõíåì ëåâîì óãëó, à Label9 â íèæíåì ïðàâîì. Ìîæíî ñýêîíîìèòü âðåìÿ, ñîçäàâ îäèí ýëåìåíò Label è íàñòðîèâ åãî ñâîéñòâà, à çàòåì ñêîïèðîâàâ åãî â áóôåð è âñòàâèâ èç íåãî, ÷òîáû ïîëó÷èòü âîñåìü êîïèé. Ïðèñâîéòå ñâîéñòâàì ýëåìåíòà ñëåäóþùèå çíà÷åíèÿ:
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
Ìîæíî íå èçìåíÿòü
60
Ãëàâà 4 4. Ñîçäàéòå 3 íàäïèñè ñ èìåíàìè îò Label11 äî Label13. Èçìåíèòå çíà÷åíèÿ èõ ñâîéñòâà Text íà X Wins, O Wins è Ties, êàê ïîêàçàíî â ïðèìåðå. 5. Ñîçäàéòå 3 òåêñòîâûõ ïîëÿ ñ èìåíàìè îò TextBox1 äî TextBox3. Ïîìåñòèòå èõ ðÿäîì ñ ìåòêàìè, ñîçäàííûìè íà øàãå 4. 6. Ñîçäàéòå êíîïêó Button1. Èçìåíèòå çíà÷åíèå åå ñâîéñòâà Text íà Play Again. 7. Ñîçäàéòå êíîïêó Button2. Èçìåíèòå çíà÷åíèå åå ñâîéñòâà Text íà End.
Òåñò ïî òåìå «Ôîðìû è ýëåìåíòû óïðàâëåíèÿ» 1.
Íà ôîðìó ìîãóò áûòü ïîìåùåíû m
Ïðîãðàììíûé êîä
m
Ýëåìåíòû óïðàâëåíèÿ
m
Äðóãàÿ ôîðìà
m
Êîììåíòàðèè ê ïðîãðàììå
2.
Çíà÷åíèÿ ñâîéñòâ ôîðìû è ýëåìåíòîâ óïðàâëåíèÿ ìîãóò áûòü çàäàíû ñ ïîìîùüþ îêíà m
Îáëàñòü ýëåìåíòîâ
m
Êîíñòðóêòîð
m
Ñâîéñòâà
m
Âûâîä
3.
Êàêîé ýëåìåíò óïðàâëåíèÿ ìîæåò íå òîëüêî îòîáðàæàòü òåêñò, íî è ïîëó÷àòü åãî îò ïîëüçîâàòåëÿ? m
Òåêñòîâîå ïîëå
m
Íàäïèñü
m
Êíîïêà
m
Âûïàäàþùèé ñïèñîê
4.
Êàêóþ ôóíêöèþ âûïîëíÿþò ñîáûòèÿ â Visual Basic .NET? m
Îñóùåñòâëÿþò çàïóñê ïðîåêòà íà âûïîëíåíèå
m
Îñóùåñòâëÿþò êîìïèëÿöèþ ïðîåêòà
m
Îñóùåñòâëÿþò ïîñòðîåíèå ðåøåíèÿ
m
Âûçûâàþò âûïîëíåíèå ñâÿçàííîãî ñ íèìè ïðîãðàììíîãî êîäà
Ãëàâà 5
Ñâîéñòâà è ìåòîäû 5.1. Ñ ÷åãî íà÷èíàåòñÿ êîä 5.2. ×òåíèå çíà÷åíèé ñâîéñòâ â êîäå 5.3. Ïðèñâàèâàíèå çíà÷åíèé ñâîéñòâàì â êîäå 5.4. IntelliSense è òî÷å÷íàÿ íîòàöèÿ 5.5. Ìåòîäû  1991 ãîäó áûë ñîçäàí ÿçûê îáúåêòíî-îðèåíòèðîâàííîãî ïðîãðàììèðîâàíèÿ Visual Basic 1.0 äëÿ ïåðñîíàëüíûõ êîìïüþòåðîâ. Ñèñòåìà ïðîãðàììèðîâàíèÿ Visual Basic 1.0 ïîëó÷èëà ãðàôè÷åñêèé èíòåðôåéñ, êîòîðûé ïîçâîëèë âèçóàëüíî êîíñòðóèðîâàòü èíòåðôåéñ ïðîåêòîâ. Óæå â ïåðâîé âåðñèè ñèñòåìà ïðîãðàììèðîâàíèÿ èìåëà IDE (Integrated Development Environment Èíòåãðèðîâàííàÿ ñðåäà ðàçðàáîòêè), âêëþ÷àâøóþ îêíà Îáëàñòü ýëåìåíòîâ (Toolbox), Êîíñòðóêòîð ôîðì (Design), Ïðîãðàììíûé êîä (Code) è Ñâîéñòâà (Properties).
Ñâîéñòâà è ìåòîäû
63
5.1. Ñ ÷åãî íà÷èíàåòñÿ êîä Ñ ïîìîùüþ îêíà Ñâîéñòâà çàäàþòñÿ íà÷àëüíûå çíà÷åíèÿ ñâîéñòâ ôîðìû è åå ýëåìåíòîâ. Âî âðåìÿ ðàáîòû ïðîãðàììû çíà÷åíèÿ ñâîéñòâ èçìåíÿþòñÿ ñ ïîìîùüþ êîäà.
×òîáû îòðåäàêòèðîâàòü îáðàáîò÷èê ñîáûòèÿ ïî óìîë÷àíèþ ó ýëåìåíòà óïðàâëåíèÿ, âûáåðèòå ýòîò ýëåìåíò íà ôîðìå è âûïîëíèòå ïî íåìó äâîéíîé ùåë÷îê. Îòêðîåòñÿ îêíî ðåäàêòîðà êîäà, è îáðàáîò÷èê áóäåò ãîòîâ äëÿ ðåäàêòèðîâàíèÿ. Îáðàáîò÷èêè äðóãèõ ñîáûòèé ìîæíî âûáðàòü èç âûïàäàþùåãî ñïèñêà â âåðõíåì ïðàâîì óãëó îêíà ðåäàêòîðà êîäà.
Ñîçäàâàòü ôîðìû è çàäàâàòü â îêíå Ñâîéñòâà (Properties) çíà÷åíèÿ ñâîéñòâ èíòåðåñíî, íî ýòî òîëüêî íà÷àëî! Îêíîì Ñâîéñòâà ïîëüçîâàòüñÿ íåñëîæíî, íî îíî íå ñëèøêîì óíèâåðñàëüíîå. ×òî, åñëè ïîëüçîâàòåëü çàõî÷åò èçìåíèòü öâåò ôîíà ôîðìû, ðàáîòàÿ ñ ïðîãðàììîé? ×òî, åñëè ïîëüçîâàòåëþ ïîíàäîáèòñÿ èçìåíèòü ðàçìåð èëè íà÷åðòàíèå øðèôòà? Êàê ïðîãðàììà ìîæåò óçíàòü î òîì, óñòàíîâëåí ëè ôëàæîê è âûáðàíà ëè êàêàÿ-òî ïîçèöèÿ ïåðåêëþ÷àòåëÿ? Ïîñêîëüêó ó ïîëüçîâàòåëåé íå áóäåò äîñòóïà ê îêíó Ñâîéñòâà, êîãäà îíè çàïóñòÿò ïðîãðàììó, êàê æå âñå ýòî ñäåëàòü? Îòâåò ïðîñò: ñ ïîìîùüþ êîäà íà Visual Basic .NET! Ìîæíî ñäåëàòü âñå, ïåðå÷èñëåííîå âûøå, è ìíîãî ÷åãî åùå, ñ ïîìîùüþ êîäà. Ìîæíî íàïèñàòü êîä, êîòîðûé áóäåò ñ÷èòûâàòü çíà÷åíèÿ ñâîéñòâ ýëåìåíòîâ óïðàâëåíèÿ è çàïèñûâàòü â ýòè ñâîéñòâà íîâûå çíà÷åíèÿ. Ýòî ïðîñòàÿ è ìîùíàÿ âîçìîæíîñòü. À ãäå æå íàõîäèòñÿ âåñü ýòîò êîä? Ýòîò êîä ïèøåòñÿ â ðåäàêòîðå êîäà.  áîëüøèíñòâå ñëó÷àåâ îí íàõîäèòñÿ â îáðàáîò÷èêàõ ñîáûòèé ýëåìåíòîâ óïðàâëåíèÿ ôîðìû. Ïîìíèòå ñîáûòèå íàæàòèÿ êíîïêè? Êîãäà ïîëüçîâàòåëü âûïîëíÿåò êàêîå-òî äåéñòâèå, íàïðèìåð íàæèìàåò êíîïêó, êîä â îáðàáîò÷èêå ýòîãî ñîáûòèÿ âûïîëíÿåòñÿ è ìîæåò ñ÷èòûâàòü èëè çàïèñûâàòü çíà÷åíèÿ ñâîéñòâ ýëåìåíòîâ óïðàâëåíèÿ. Äîáàâëÿÿ êîä â îáðàáîò÷èêè ñîáûòèé ýëåìåíòîâ óïðàâëåíèÿ, âû äåëàåòå ïåðâûé øàã ê ðàáîòàþùåé ïðîãðàììå. Ïîìíèòå ôîðìó ïðîåêòà «Çàìåíèòü øèíó», êîòîðóþ ìû ñîçäàëè ðàíüøå? Ñ åå ïîìîùüþ âû íå ìîãëè ñäåëàòü íè÷åãî, ïîêà íå äîáàâèëè ê íåé êîä.
5.2. ×òåíèå çíà÷åíèé ñâîéñòâ â êîäå Äàâàéòå ðàññìîòðèì ïðèìåðû ÷òåíèÿ çíà÷åíèé ñâîéñòâ â êîäå íà Visual Basic .NET. Âî-ïåðâûõ, êàê
64
Ãëàâà 5 ñ÷èòûâàòü çíà÷åíèÿ ñâîéñòâ, êîòîðûå çàäàþòñÿ â îêíå Ñâîéñòâà (Properties), è, âî-âòîðûõ, êàê ñ÷èòûâàòü çíà÷åíèÿ ñâîéñòâ, êîòîðûå çàäàþò ïîëüçîâàòåëè âî âðåìÿ ðàáîòû ñ ïðîãðàììîé? Ñîçäàéòå íîâîå ïðèëîæåíèå Windows è íàçîâèòå åãî «×òåíèå ñâîéñòâ». Îòêðîéòå îêíî Îáëàñòü ýëåìåíòîâ (Toolbox) è ïîìåñòèòå íà ôîðìó êíîïêó. Îòêðîéòå îêíî Ñâîéñòâà è èçìåíèòå çíà÷åíèå ñâîéñòâà Text êíîïêè Button1 íà ×èòàòü òåêñò. Âûïîëíèòå äâîéíîé ùåë÷îê ïî êíîïêå, ÷òîáû îòðåäàêòèðîâàòü êîä îáðàáîò÷èêà íàæàòèÿ êíîïêè. Ââåäèòå â íåãî ñëåäóþùèé êîä: MessageBox.Show(Button1.Text)
Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Íàæìèòå êíîïêó ñ íàäïèñüþ ×èòàòü òåêñò. Ïîÿâèòñÿ îêíî ñîîáùåíèÿ ñ òåêñòîì «×èòàòü òåêñò» ýòî çíà÷åíèå ñâîéñòâà Text ýëåìåíòà óïðàâëåíèÿ Button1. Êîä ïðî÷èòàë çíà÷åíèå ñâîéñòâà Text ýëåìåíòà Button1 è âûâåë ýòî çíà÷åíèå íà ýêðàí â îêíå ñîîáùåíèÿ. Âîò åùå îäèí ïðèìåð. Äîáàâüòå íà ôîðìó Form1 åùå îäíó êíîïêó. Ñ ïîìîùüþ îêíà Ñâîéñòâà èçìåíèòå çíà÷åíèå åå ñâîéñòâà Text íà Ðàçìåð ôîðìû. Ñäåëàéòå äâîéíîé ùåë÷îê ïî êíîïêå Button2, ÷òîáû îòðåäàêòèðîâàòü îáðàáîò÷èê åå íàæàòèÿ. Ââåäèòå â îáðàáîò÷èê ñëåäóþùóþ ñòðîêó êîäà: MessageBox.Show(Form1.ActiveForm.Height & "," &_ Form1.ActiveForm.Width)
Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Íàæìèòå êíîïêó ñ íàäïèñüþ Ðàçìåð ôîðìû. Ïîÿâèòñÿ îêîøêî ñîîáùåíèÿ ñ òåêñòîì «300,300» (èëè äðóãèì, åñëè âû èçìåíèëè ðàçìåð ôîðìû). Âàø êîä òîëüêî ÷òî îòîáðàçèë âûñîòó è øèðèíó ôîðìû Form1, ðàçäåëèâ èõ çàïÿòîé! Çíà÷åíèÿ êàêèõ åùå ñâîéñòâ ìîæåò ÷èòàòü êîä íà Visual Basic .NET? Íà ñàìîì äåëå êîä íà Visual Basic .NET ìîæåò ðàáîòàòü ñî âñåìè ñâîéñòâàìè ýëåìåíòà óïðàâëåíèÿ, ïåðå÷èñëåííûìè â îêíå Ñâîéñò-
Ñâîéñòâà è ìåòîäû
65 âà. Êîä ìîæåò ÷èòàòü çíà÷åíèÿ ñâîéñòâ âðîäå Height è Width, BackColor, ForeColor è êîîðäèíàò X è Y. Îäíàêî çíà÷åíèÿ ìíîãèõ ñâîéñòâ â îêíå Ñâîéñòâà çàäàþòñÿ ïðè ñîçäàíèè ïðîãðàììû è íå èçìåíÿþòñÿ ïðè åå âûïîëíåíèè. Ïîýòîìó ÷èòàòü ýòè çíà÷åíèÿ â êîäå íå ñëèøêîì ïîëåçíî. Ãîðàçäî ïîëåçíåå âîçìîæíîñòü ñ÷èòûâàòü çíà÷åíèÿ ñâîéñòâ ýëåìåíòîâ, êîòîðûå ìîãóò èçìåíÿòüñÿ âî âðåìÿ ðàáîòû ïðîãðàììû, íàïðèìåð ñ÷èòûâàòü òåêñò èç òåêñòîâîãî ïîëÿ èëè çíà÷åíèå ñâîéñòâà Checked ó ôëàæêà. Êàêîé òèï ó àâòîìîáèëÿ? Êàêàÿ øèíà ïðîêîëîòà? Êàêîâ ðàçìåð øèíû? Âîò áîëåå áëèçêèé ê ïðàêòèêå ïðèìåð. Äàâàéòå íàïèøåì êîä, êîòîðûé áóäåò ñîîáùàòü íàì, óñòàíîâëåí ôëàæîê èëè íåò. Îòêðîéòå îêíî Îáëàñòü ýëåìåíòîâ è äîáàâüòå íà ôîðìó ôëàæîê CheckBox1. Äîáàâüòå íà Form1 åùå îäíó êíîïêó. Îòêðîéòå îêíî Ñâîéñòâà è èçìåíèòå çíà÷åíèå ñâîéñòâà Text êíîïêè Button3 íà Ïðîâåðü ìåíÿ. Âûïîëíèòå äâîéíîé ùåë÷îê ïî êíîïêå Button3, ÷òîáû îòðåäàêòèðîâàòü îáðàáîò÷èê åå íàæàòèÿ. Ââåäèòå â îáðàáîò÷èê ñëåäóþùóþ ñòðîêó êîäà: MessageBox.Show(CheckBox1.Checked)
Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Íàæìèòå êíîïêó ñ íàäïèñüþ Ïðîâåðü ìåíÿ. Êàêîå ñîîáùåíèå áóäåò âûâåäåíî? Óñòàíîâèòå ôëàæîê è åùå ðàç íàæìèòå êíîïêó ñ íàäïèñüþ Ïðîâåðü ìåíÿ. ×òî òåïåðü áóäåò â îêíå ñîîáùåíèÿ? Ïðè êàæäîì íàæàòèè êíîïêè âûâîäèòñÿ îêíî ñîîáùåíèÿ, â êîòîðîì ñîîáùàåòñÿ, óñòàíîâëåí ëè ôëàæîê (ò. å. âûâîäèòñÿ çíà÷åíèå ñâîéñòâà Checked ôëàæêà). Åñëè ôëàæîê óñòàíîâëåí, áóäåò âûâåäåíî True. È ïîñëåäíèé ïðèìåð. Ïîñìîòðèì, êàê íàäî ñ÷èòûâàòü è âûâîäèòü íà ýêðàí òåêñò, êîòîðûé ïîëüçîâàòåëü íàáðàë â òåêñòîâîì ïîëå. Äîáàâüòå íà ôîðìó Form1 òåêñòîâîå ïîëå. Îòêðîéòå îêíî Ñâîéñòâà è óäîñòîâåðüòåñü, ÷òî óñòàíîâëåíî çíà÷åíèå False ñâîéñòâà ReadOnly. Çàäàéòå
66
 J# è C# çíà÷åíèÿ ñâîéñòâ ýëåìåíòîâ óïðàâëåíèÿ ñ÷èòûâàþòñÿ òàê æå, êàê è â Visual Basic .NET. Âîò ïðèìåð êîäà íà J# èëè C#, âûâîäÿùåãî çíà÷åíèå ñâîéñòâà Text òåêñòîâîãî ïîëÿ: { MessageBox.Show (textBox1.Text); } Çà èñêëþ÷åíèåì òî÷êè ñ çàïÿòîé â êîíöå ñòðîêè è ôèãóðíûõ ñêîáîê, êîä âûãëÿäèò òàê æå, êàê è â Visual Basic .NET. Êðîìå òîãî, â J# è C# îáîçíà÷åíèå textBox1 íà÷èíàåòñÿ ñî ñòðî÷íîé áóêâû t.
Ãëàâà 5 äëÿ ñâîéñòâà Text çíà÷åíèå Ïå÷àòàòü çäåñü. Äîáàâüòå íà ôîðìó Form1 åùå îäíó êíîïêó. Èçìåíèòå çíà÷åíèå ñâîéñòâà Text êíîïêè Button4 íà ×èòàòü òåêñò. Âûïîëíèòå äâîéíîé ùåë÷îê ïî ýòîé êíîïêå, ÷òîáû îòðåäàêòèðîâàòü êîä â îáðàáîò÷èêå åå íàæàòèÿ. Ââåäèòå ñëåäóþùóþ ñòðîêó êîäà: MessageBox.Show(TextBox1.Text)
Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Âûïîëíèòå äâîéíîé ùåë÷îê â òåêñòîâîì ïîëå è íàæìèòå êëàâèøó {Backspace}, ÷òîáû ñòåðåòü òåêñò. Ââåäèòå êàêîéíèáóäü íîâûé òåêñò. Íàæìèòå êíîïêó ñ íàäïèñüþ ×èòàòü òåêñò. ×òî áóäåò âûâåäåíî â îêíå ñîîáùåíèÿ? Èçìåíèòå òåêñò â òåêñòîâîì ïîëå è åùå ðàç íàæìèòå êíîïêó ñ íàäïèñüþ ×èòàòü òåêñò. ×òî ïðîèçîéäåò? Ýòè ïðèìåðû ïîêàçàëè, êàê ñ ïîìîùüþ êîäà íà Visual Basic .NET ñ÷èòûâàòü çíà÷åíèÿ ñâîéñòâ ýëåìåíòîâ óïðàâëåíèÿ è ôîðìû. Íî ýòî òîëüêî ïîëîâèíà âîçìîæíîñòåé, ïîòîìó ÷òî â êîäå íà Visual Basic .NET ìîæíî è çàäàâàòü íîâûå çíà÷åíèÿ ñâîéñòâ.
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 5.1. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
ñîçäàòü ïðîåêò «×òåíèå ñâîéñòâ», îïèñàííûé â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå ×òåíèå_ñâîéñòâ. exe.
5.3. Ïðèñâàèâàíèå çíà÷åíèé ñâîéñòâàì â êîäå Êîíå÷íî, çäîðîâî, ÷òî ìû ìîæåì ñ÷èòûâàòü çíà÷åíèÿ ñâîéñòâ ñ ïîìîùüþ êîäà íà Visual Basic .NET. Íàø êîä ìîæåò ïîëó÷àòü èíôîðìàöèþ î äåéñòâèÿõ ïîëüçîâàòåëÿ. Ïðîãðàììà ìîæåò âûïîëíÿòü ôðàãìåíòû êîäà â îòâåò íà äåéñòâèÿ ïîëüçîâàòåëÿ. À âåðíî ëè îáðàòíîå? ×òî, åñëè íàì íóæíî çàäàòü íîâûå
Ñâîéñòâà è ìåòîäû
67 çíà÷åíèÿ íåñêîëüêèõ ñâîéñòâ ýëåìåíòîâ óïðàâëåíèÿ âî âðåìÿ ðàáîòû ïðîãðàììû? Íàïðèìåð, ÷òî åñëè íàì õî÷åòñÿ, ÷òîáû ôëàæîê «Ýêñòðåííî» âñåãäà áûë óñòàíîâëåí ïðè çàïóñêå ïðîãðàììû? Ìû õîòèì, ÷òîáû ïðîãðàììà îòîáðàæàëà âñå äîñòóïíûå ðàçìåðû øèí â òåêñòîâîì ïîëå, åñëè ïîëüçîâàòåëü íàæìåò êíîïêó ñ íàäïèñüþ Ñìåíèòü øèíó. Ìû õîòèì, ÷òîáû ñïèñîê äîñòóïíûõ ðàçìåðîâ øèí àâòîìàòè÷åñêè çàãðóæàëñÿ â âûïàäàþùèé ñïèñîê, êîãäà ïîëüçîâàòåëü ââîäèò íîìåð àâòîìîáèëÿ. Êîíå÷íî, âñå ýòî ìîæíî ñäåëàòü ñ ïîìîùüþ êîäà íà Visual Basic .NET! Ïðèñâàèâàòü çíà÷åíèÿ ñâîéñòâàì ýëåìåíòîâ óïðàâëåíèÿ òàê æå ïðîñòî, êàê è ñ÷èòûâàòü óæå çàäàííûå çíà÷åíèÿ. ×òîáû ïðèñâîèòü çíà÷åíèå ñâîéñòâó, â êîäå íà Visual Basic .NET èñïîëüçóåòñÿ îïåðàòîð ïðèñâàèâàíèÿ. êîäå îïåðàòîð ïðèñâàèâàíèÿ âûãëÿäèò êàê ïðîñòîå ðàâåíñòâî: TextBox1.Text = "Ïðèñâàèâàíèå"
Ïðàâàÿ ÷àñòü ðàâåíñòâà (ñïðàâà îò çíàêà «ðàâíî») âû÷èñëÿåòñÿ ïåðâîé. Çàòåì âû÷èñëåííîå çíà÷åíèå ïðèñâàèâàåòñÿ ëåâîé ÷àñòè ðàâåíñòâà (ñëåâà îò çíàêà «ðàâíî»). Âîò íåñêîëüêî ïðèìåðîâ ïðèñâàèâàíèÿ çíà÷åíèé ñâîéñòâàì ñ ïîìîùüþ êîäà íà Visual Basic .NET. Ïåðâûé ïðèìåð çàïèñûâàåò òåêñò â òåêñòîâîå ïîëå. Ýòî ïðåêðàñíûé ñïîñîá ñîîáùàòü ÷òî-íèáóäü ïîëüçîâàòåëþ èì ìîæíî ïîëüçîâàòüñÿ âìåñòî îòîáðàæåíèÿ îòäåëüíûõ îêîí ñîîáùåíèé. Ñîçäàéòå íîâîå ïðèëîæåíèå Windows è íàçîâèòå åãî «Óñòàíîâêà ñâîéñòâ». Äîáàâüòå íà ôîðìó êíîïêó è äâà òåêñòîâûõ ïîëÿ.  îêíå Ñâîéñòâà (Properties) çàäàéòå äëÿ ñâîéñòâà Text êíîïêè Button1 çíà÷åíèå Óñòàíîâèòü òåêñò. Î÷èñòèòå ñâîéñòâà Text òåêñòîâûõ ïîëåé TextBox1 è TextBox2, âûïîëíèâ ïî íèì äâîéíîé ùåë÷îê è íàæàâ êëàâèøó {Backspace}. Âûïîëíèòå äâîéíîé ùåë÷îê ïî êíîïêå Button1, ÷òîáû îòðåäàêòèðîâàòü îáðàáîò÷èê åå íàæàòèÿ. Äîáàâüòå â îáðàáîò÷èê ñëåäóþùóþ ñòðîêó êîäà:
68
Ãëàâà 5 TextBox2.Text = TextBox1.Text
Îáðàáîò÷èê ñîáûòèÿ Form_Load ÷àñòî èñïîëüçóåòñÿ äëÿ èíèöèàëèçàöèè ïðîãðàììû. Èíèöèàëèçàöèÿ óñòàíàâëèâàåò îïðåäåëåííûå çíà÷åíèÿ, ïðåæäå ÷åì ôîðìà îòîáðàæàåòñÿ íà ýêðàíå. Íàïðèìåð, ìîæíî äîáàâèòü â îáðàáîò÷èê êîä, óñòàíàâëèâàþùèé ðàçìåð ôîðìû è öâåò åå ôîíà èëè âûáèðàþùèé îïðåäåëåííóþ ïîçèöèþ ïåðåêëþ÷àòåëÿ ïåðåä îòîáðàæåíèåì ôîðìû íà ýêðàíå.
Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Ââåäèòå êàêîé-íèáóäü òåêñò â TextBox1 è íàæìèòå êíîïêó ñ íàäïèñüþ Óñòàíîâèòü òåêñò. ×òî ïðîèçîéäåò? Êàê âèäèòå, òåêñò èç òåêñòîâîãî ïîëÿ TextBox1 áûë «ñêîïèðîâàí» â TextBox2. Êîä íà Visual Basic .NET ñ÷èòûâàåò çíà÷åíèå ñâîéñòâà Text òåêñòîâîãî ïîëÿ TextBox1 è ïðèñâàèâàåò ñ÷èòàííîå çíà÷åíèå ñâîéñòâó Text òåêñòîâîãî ïîëÿ TextBox2. Äàâàéòå äîáàâèì êîä, êîòîðûé áóäåò àâòîìàòè÷åñêè óñòàíàâëèâàòü îäèí ôëàæîê è ñáðàñûâàòü äðóãîé, êîãäà ïîëüçîâàòåëü çàïóñêàåò ïðèëîæåíèå. Äîáàâüòå íà ôîðìó Form1 ôëàæîê è çàäàéòå äëÿ åãî ñâîéñòâà Text çíà÷åíèå Ýêñòðåííî. Äîáàâüòå íà ôîðìó åùå îäèí ôëàæîê è çàäàéòå äëÿ åãî ñâîéñòâà Text çíà÷åíèå Îáÿçàòåëüíî. Âûïîëíèòå äâîéíîé ùåë÷îê â ïóñòîì ìåñòå íà ôîðìå (íå íà ýëåìåíòàõ óïðàâëåíèÿ). Îòêðîåòñÿ îáðàáîò÷èê ñîáûòèÿ Form1_Load. Êîä ýòîãî îáðàáîò÷èêà âûïîëíÿåòñÿ, êîãäà ôîðìà âûâîäèòñÿ íà ýêðàí ïðè çàïóñêå ïðîãðàììû. Äîáàâüòå â ýòîò îáðàáîò÷èê ñëåäóþùèå äâå ñòðîêè: CheckBox1.Checked = True CheckBox2.Checked = False
 ÿçûêàõ J# è C# çíà÷åíèÿ ñâîéñòâàì ïðèñâàèâàþòñÿ òî÷íî òàê æå, êàê è â Visual Basic .NET. Êîä, ïðèâåäåííûé íèæå, ïîêàçûâàåò, êàê ïðèñâàèâàòü çíà÷åíèå ñâîéñòâó Checked ôëàæêà â C# èëè J#. { checkBox1.Checked = True; }
Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Êàêîé ôëàæîê óñòàíîâëåí? Âàø êîä àâòîìàòè÷åñêè óñòàíîâèë çíà÷åíèå ñâîéñòâà Checked äâóõ ôëàæêîâ ïðè çàãðóçêå ôîðìû. Ìû çíàåì, ÷òî 14 ýòî ñàìûé ðàñïðîñòðàíåííûé ðàçìåð øèíû. Äàâàéòå ñäåëàåì òàê, ÷òîáû êîä àâòîìàòè÷åñêè âûáèðàë 14 â âûïàäàþùåì ñïèñêå ðàçìåðà øèíû. Ñíà÷àëà äîáàâüòå âûïàäàþùèé ñïèñîê ComboBox1 íà ôîðìó Form1. Ñ ïîìîùüþ îêíà Ñâîéñòâà â ñïèñêå ComboBox1 óñòàíîâèòå äëÿ ñâîéñòâà Items çíà÷åíèÿ 12, 13, 14, 15 è 16. Íå çàáûâàéòå íàæèìàòü {Enter}, ÷òîáû íà÷èíàòü ñ íîâîé ñòðîêè êàæäûé íîâûé ïóíêò ñïèñêà. Âûïîëíèòå äâîéíîé ùåë÷îê ïî ôîðìå (íå ïî âûïàäàþùåìó
Ñâîéñòâà è ìåòîäû
69 ñïèñêó), ÷òîáû îòðåäàêòèðîâàòü êîä â îáðàáîò÷èêå Form1_Load. Äîáàâüòå â îáðàáîò÷èê ñëåäóþùóþ ñòðîêó êîäà: ComboBox1.SelectedItem = "14"
Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Êàêîé ïóíêò îòîáðàæàåòñÿ â âûïàäàþùåì ñïèñêå? Êàê íåîáõîäèìî èçìåíèòü êîä, ÷òîáû â âûïàäàþùåì ñïèñêå àâòîìàòè÷åñêè âûáèðàëñÿ ïóíêò 13?
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ Microsoft-CD
5.2. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET ñîçäàòü ïðîåêò «Óñòàíîâêà ñâîéñòâ», îïèñàííûé â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Óñòàíîâêà_ ñâîéñòâ.exe.
5.4. IntelliSense è òî÷å÷íàÿ íîòàöèÿ Òåïåðü âû çíàåòå, êàê ñ ïîìîùüþ Visual Basic .NET ÷èòàòü è çàïèñûâàòü çíà÷åíèÿ ñâîéñòâ ôîðì è ýëåìåíòîâ óïðàâëåíèÿ. Åñëè ó êàæäîé ôîðìû è ýëåìåíòà óïðàâëåíèÿ òàê ìíîãî ñâîéñòâ, êàê çà íèìè óñëåäèòü? Íå ñëèøêîì óäîáíî ïîñòîÿííî ïåðåêëþ÷àòüñÿ ìåæäó ðåäàêòîðîì êîäà è îêíîì Ñâîéñòâà, ÷òîáû âûÿñíèòü, êàêèå ñâîéñòâà íàì íóæíû. Ìîæåò áûòü, åñòü áîëåå óäîáíûé ñïîñîá? Ìîæíî èñïîëüçîâàòü IntelliSense. Ýòî ÷àñòü Visual Studio. IntelliSense ñîõðàíÿåò íàì ìíîãî âðåìåíè ïðè ðåäàêòèðîâàíèè êîäà â îêíå ðåäàêòîðà. IntelliSense çíàåò, ê êàêîìó ýëåìåíòó óïðàâëåíèÿ âû îáðàùàåòåñü è êàêèå ó íåãî åñòü ñâîéñòâà. Îíî âûâîäèò ñïèñîê ñâîéñòâ è ïîçâîëÿåò âàì âûáèðàòü èç íåãî íóæíîå. Èñïîëüçóåìîå ÷àùå âñåãî ñâîéñòâî ïîäñâå÷èâàåòñÿ, êîãäà IntelliSense îòîáðàæàåò ñïèñîê. Íàïðèìåð, äëÿ òåêñòîâîãî ïîëÿ èçíà÷àëüíî ïîäñâå÷èâàåòñÿ ñâîéñòâî Text. Ñ ïîìîùüþ ñòðåëîê ââåðõ è âíèç íà êëàâèàòóðå ìîæíî ïðîñìàòðèâàòü ñïèñîê è âûáè-
70
Ãëàâà 5 ðàòü òî ñâîéñòâî, êîòîðîå âàì òðåáóåòñÿ. Ïðè íàæàòèè êëàâèøè {Tab} âûáðàííîå ñâîéñòâî äîáàâëÿåòñÿ â êîä. Èñïîëüçóÿ IntelliSense, âàì íå ïðèäåòñÿ çàïîìèíàòü âñå ñâîéñòâà âñåõ ýëåìåíòîâ óïðàâëåíèÿ. Êðîìå òîãî, äàííîå ñðåäñòâî çàìåòíî ñîêðàùàåò ïîòðåáíîñòü â íàáîðå äëèííûõ èìåí íà êëàâèàòóðå! Ïîïðîáóéòå åãî èñïîëüçîâàòü! Ñîçäàéòå íîâîå ïðèëîæåíèå Windows è íàçîâèòå åãî «IntelliSense». Ïîìåñòèòå íà ôîðìó òåêñòîâîå ïîëå è êíîïêó. Âûïîëíèòå äâîéíîé ùåë÷îê ïî êíîïêå, ÷òîáû îòðåäàêòèðîâàòü êîä â îáðàáîò÷èêå íàæàòèé íà íåå.
1. Ââåäèòå ñ êëàâèàòóðû TextBox1 è íàæìèòå
êëàâèøó «òî÷êà» {.}. Êàê òîëüêî âû ââåäåòå òî÷êó, IntelliSense îòîáðàçèò ñïèñîê ñâîéñòâ ýëåìåíòà TextBox1. Ïîñêîëüêó TextBox1 òåêñòîâîå ïîëå, ýòîò ñïèñîê áóäåò òàêèì æå, êàê è äëÿ ëþáîãî äðóãîãî òåêñòîâîãî ïîëÿ íà ôîðìå. Ïî óìîë÷àíèþ â ñïèñêå IntelliSense ïîäñâå÷èâàåòñÿ ÷àùå âñåãî èñïîëüçóåìîå ñâîéñòâî.  íàøåì ñëó÷àå ïî óìîë÷àíèþ ïîäñâå÷èâàåòñÿ ñâîéñòâî Text.
2. Òåïåðü ââåäèòå áóêâó «R». IntelliSense ïðî-
êðóòèò ñïèñîê äî ïåðâîãî ïî àëôàâèòó ñâîéñòâà, íà÷èíàþùåãîñÿ ñ «R». Ïî ìåðå ââîäà IntelliSense èùåò â ñïèñêå ñâîéñòâî, íàèáîëåå ñîîòâåòñòâóþùåå ââåäåííûì áóêâàì.
Ñâîéñòâà è ìåòîäû
Êîãäà ñâîéñòâî ïîäñâå÷èâàåòñÿ â ñïèñêå IntelliSense, ðÿäîì ïîÿâëÿåòñÿ ïîäñêàçêà, êðàòêî åãî îïèñûâàþùàÿ. Ýòà ïîäñêàçêà, íàïðèìåð, ìîæåò ñîîáùèòü, åñëè ñâîéñòâî äîñòóïíî òîëüêî äëÿ ÷òåíèÿ (Read Only, ò. å. åìó íåëüçÿ ïðèñâàèâàòü çíà÷åíèå). Êðîìå òîãî, ïîäñêàçêà ñîîáùàåò, êàêèå çíà÷åíèÿ ìîæíî ïðèñâàèâàòü ñâîéñòâó, íàïðèìåð, ñòðîêó (òåêñò) èëè öåëîå ÷èñëî.
71
3. Ñ ïîìîùüþ ñòðåëêè âíèç ïðîêðóòèòå ñïèñîê
è íàéäèòå ñíîâà ñâîéñòâî Text. Âûáåðèòå ñâîéñòâî Text, ÷òîáû îíî áûëî ïîäñâå÷åíî.
4. Íàæìèòå êëàâèøó {Tab}. Ïîñìîòðèòå, ÷òî
ïîëó÷èëîñü! Ïîñëå TextBox1. â êîä äîáàâëåíî ñëîâî Text.
5. Òåïåðü ââåäèòå ="Clifford". Êîä áóäåò âûãëÿäåòü òàê:
TextBox1.Text = "Clifford"
72
Ñîçäàâàÿ ïðîãðàììû íà ÿçûêàõ C# è J# ñ ïîìîùüþ Visual Studio, òîæå ìîæíî èñïîëüçîâàòü IntelliSense. Ýòî ñðåäñòâî ðàáîòàåò òî÷íî òàê æå, êàê è â Visual Basic .NET. Ïðîñòî ââåäèòå èìÿ ýëåìåíòà, à çàòåì òî÷êó. IntelliSense âûâåäåò ñïèñîê äîñòóïíûõ ñâîéñòâ è ìåòîäîâ. Ïîñêîëüêó ÿçûêè J#, C# è Visual Basic .NET îñíîâàíû íà ïëàòôîðìå .NET, ñïèñîê ñâîéñòâ è ìåòîäîâ ýëåìåíòîâ áóäåò îäèíàêîâûì äëÿ âñåõ òðåõ ÿçûêîâ.
Ãëàâà 5 Ïðàâäà, ïðîñòî è óäîáíî? IntelliSense, êðîìå òîãî, ïîìîãàåò èçáåãàòü îøèáîê ïðè íàáîðå òåêñòà. Ýòî î÷åíü âàæíî! Âû, íàâåðíîå, çàìåòèëè, ÷òî êàæäîìó ïóíêòó ñïèñêà IntelliSense ñîîòâåòñòâóåò ìàëåíüêèé çíà÷îê. Ñâîéñòâà ïîìå÷åíû çíà÷êàìè â âèäå ðóêè, óêàçûâàþùåé íà ëèñò áóìàãè. Ìåòîäû îáîçíà÷åíû ôèîëåòîâûì «êèðïè÷èêîì». (Ìû ñêîðî ðàçáåðåìñÿ, ÷òî òàêîå ìåòîäû).  çàâèñèìîñòè îò òîãî, äëÿ êàêîãî ýëåìåíòà óïðàâëåíèÿ ìû ïðîñìàòðèâàåì ñïèñîê, â íåì ìîãóò áûòü è ïóíêòû ñ äðóãèìè çíà÷êàìè.
Âû îáðàòèëè âíèìàíèå íà òî, ÷òî íóæíî áûëî ââåñòè òî÷êó, ïðåæäå ÷åì ïîÿâèëñÿ ñïèñîê IntelliSense? Ýòî ïîòîìó, ÷òî â Visual Basic .NET èñïîëüçóåòñÿ ñèíòàêñèñ ñ çàïèñüþ «÷åðåç òî÷êó» Dot-çàïèñü (òî÷å÷íàÿ íîòàöèÿ). Ââåäÿ èìÿ ýëåìåíòà óïðàâëåíèÿ, íàïðèìåð TextBox1, ââåäèòå òî÷êó. Çàòåì ââåäèòå èìÿ ñâîéñòâà. Òî÷êà ñîåäèíÿåò èìÿ ýëåìåíòà è èìÿ ñâîéñòâà. Âîò îáùàÿ ôîðìà (ñèíòàêñèñ) îáðàùåíèÿ ê ñâîéñòâó ýëåìåíòà: Ýëåìåíò.Ñâîéñòâî ÝëåìåíòÓïðàâëåíèÿ.Ñâîéñòâî
Âîò íåñêîëüêî ïðèìåðîâ òàêîé çàïèñè: TextBox1.Text CheckBox1.Checked Form1.ActiveForm.Height
Ñâîéñòâà è ìåòîäû
73 Îáðàòèòå âíèìàíèå, ÷òî â ïîñëåäíåì ïðèìåðå ActiveForm ýòî ñâîéñòâî Form1, à Height ñâîéñòâî ActiveForm. Ïîýòîìó äëÿ èõ ñîåäèíåíèÿ íóæíû äâå òî÷êè. IntelliSense çíàåò, êîãäà ó ñâîéñòâà åñòü ñîáñòâåííûå ñâîéñòâà. Åñëè âû íå óâåðåíû, åñòü ëè ñâîè ñâîéñòâà ó íåêîòîðîãî ñâîéñòâà, ââåäèòå åùå îäíó òî÷êó ïîñëå èìåíè ñâîéñòâà, è IntelliSense âûâåäåò ñïèñîê. Åñëè IntelliSense íå âûâîäèò ñïèñêà, çíà÷èò, ëèáî äîïîëíèòåëüíûõ ñâîéñòâ íåò è íóæíî óäàëèòü ïîñëåäíþþ òî÷êó, ëèáî âû íåïðàâèëüíî íàáðàëè èìÿ ýëåìåíòà èëè ñâîéñòâà.
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 5.4. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
âûïîëíèòü ïðîåêò «IntelliSense», îïèñàííûé â ïàðàãðàôå.
5.5. Ìåòîäû Íàâåðíîå, âû çàìåòèëè, ÷òî ðÿäîì ñ íåêîòîðûìè ïóíêòàìè â ñïèñêå IntelliSense ñòîÿò ôèîëåòîâûå çíà÷êè â âèäå êèðïè÷èêà. Ýòî ìåòîäû. Ñâîéñòâà ýòî õàðàêòåðèñòèêè ýëåìåíòà, íàïðèìåð, ñâîéñòâà ìàøèíû öâåò, êîëè÷åñòâî ìåñò, âåñ è ìîùíîñòü äâèãàòåëÿ. Ìåòîäû ýòî äåéñòâèÿ, êîòîðûå ìîæåò âûïîëíèòü ýëåìåíò. Íàïðèìåð, ìàøèíà ìîæåò ïîâåðíóòü íàëåâî, îñòàíîâèòüñÿ èëè çàãëóøèòü ìîòîð. Ìåòîäû íå ïåðå÷èñëåíû â îêíå Ñâîéñòâà. Èõ íóæíî âûçûâàòü â êîäå. Íàïðèìåð, ó áîëüøèíñòâà ýëåìåíòîâ óïðàâëåíèÿ åñòü ìåòîäû Hide (ñêðûòü) è Show (îòîáðàçèòü). Åñëè âûçâàòü ìåòîä Hide ýëåìåíòà, ýòîò ýëåìåíò ñòàíåò íåâèäèìûì, õîòÿ è îñòàíåòñÿ íà ôîðìå. Åñëè âûçâàòü ìåòîä Show, ýëåìåíò ñòàíåò âèäèìûì. Íåêîòîðûå ìåòîäû ïîçâîëÿþò âûïîëíÿòü äåéñòâèÿ, êîòîðûå îáû÷íî âûïîëíÿåò ïîëüçîâàòåëü. Íàïðèìåð, ó êíîïêè åñòü ìåòîä PerformClick. Åñëè âûçâàòü ýòîò ìåòîä, òî áóäåò ñûìèòèðîâàíî íàæàòèå êíîïêè.
74
Ãëàâà 5 Íåêîòîðûå ìåòîäû òðåáóþò ñîîáùåíèÿ èì îïðåäåëåííîé èíôîðìàöèè ïðè âûçîâå. Ýòà èíôîðìàöèÿ îïðåäåëÿåò, ÷òî ìåòîä áóäåò äåëàòü è êàêèå áóäóò ðåçóëüòàòû åãî âûçîâà. Èíôîðìàöèÿ, ïåðåäàâàåìàÿ ìåòîäó, íàçûâàåòñÿ àðãóìåíòàìè ìåòîäà. Ó ìåòîäà ìîæåò áûòü îäèí èëè íåñêîëüêî àðãóìåíòîâ. Íåêîòîðûå àðãóìåíòû ìîãóò áûòü íåîáÿçàòåëüíûìè. Íàïðèìåð, ìåòîä Show îêíà ñîîáùåíèÿ ïðèíèìàåò â êà÷åñòâå àðãóìåíòà ñòðîêó òåêñòà. Ýòîò àðãóìåíò îïðåäåëÿåò, ÷òî áóäåò âûâåäåíî â îêíå ñîîáùåíèÿ. Âû óæå èñïîëüçîâàëè ìåòîä Show îêíà ñîîáùåíèÿ, õîòÿ, âåðîÿíî, íå îñîçíàâàëè, ÷òî âûçûâàëè ìåòîä ñ àðãóìåíòîì. MessageBox.Show("Ïðèâåò, Ìèð")
 ýòîé ñòðîêå êîäà "Ïðèâåò, Ìèð" ýòî àðãóìåíò ìåòîäà Show. Èòàê, çàïîìíèì ñëåäóþùåå. Ìåòîäû âûïîëíÿþò êàêèå-òî äåéñòâèÿ. Ìåòîäû âûçûâàþòñÿ èç êîäà, äî íèõ íåëüçÿ äîáðàòüñÿ èç îêíà Ñâîéñòâà. Íåêîòîðûå ìåòîäû òðåáóþò çàäàíèÿ îïðåäåëåííûõ àðãóìåíòîâ ïðè âûçîâå. Ìíîãèå ìåòîäû âîçâðàùàþò çíà÷åíèÿ, êîòîðûå ìîæíî èñïîëüçîâàòü â êîäå. Âûçîâ ìåòîäîâ â êîäå. Ñèíòàêñèñ âûçîâà ìåòîäà ïîõîæ íà ñèíòàêñèñ ÷òåíèÿ èëè çàïèñè çíà÷åíèÿ ñâîéñòâà. Äëÿ ñîåäèíåíèÿ èìåíè ýëåìåíòà è ìåòîäà èñïîëüçóåòñÿ òî÷êà. Íåêîòîðûì ìåòîäàì, íàïðèìåð Button.Hide è Button.Show, àðãóìåíòû íå íóæíû. Äðóãèì, íàïðèìåð MessageBox.Show, äëÿ ðàáîòû íóæíû àðãóìåíòû. Ñèíòàêñèñ âûçîâà ìåòîäà ñëåäóþùèé: Ýëåìåíò.Ìåòîä (Àðãóìåíò1, Àðãóìåíò2, ..., Àðãóìåíò N)
Ïîìíèòå, ïðè âûçîâå ìåòîäà Show îêíà ñîîáùåíèÿ MessageBox âû çàäàâàëè àðãóìåíò? MessageBox.Show("Ïðèâåò, Ìèð")
Ñâîéñòâà è ìåòîäû
Âåðîÿòíî, âû óæå äîãàäàëèñü, ÷òî â ÿçûêàõ J# è C# ìåòîäû âûçûâàþòñÿ òî÷íî òàê æå, êàê â Visual Basic .NET. Âîò ïðèìåð êîäà íà J#, óäàëÿþùåãî òåêñò èç òåêñòîâîãî ïîëÿ è ïîìåùàþùåãî êóðñîð â ýòî òåêñòîâîå ïîëå. Êîä íà C# âûãëÿäèò òî÷íî òàê æå. { textBox1.ResetText(); textBox1.Focus(); }
75 Ïîðàáîòàåì ñ ìåòîäàìè, ïîçâîëÿþùèìè ñêðûâàòü è äåëàòü âèäèìûìè ýëåìåíòû óïðàâëåíèÿ, ñòèðàòü òåêñò â òåêñòîâûõ ïîëÿõ è çàäàâàòü ïîçèöèþ êóðñîðà. Äëÿ íà÷àëà ñîçäàéòå íîâîå ïðèëîæåíèå Windows è íàçîâèòå åãî «Ìåòîäû». Äîáàâüòå íà ôîðìó äâå êíîïêè è òåêñòîâîå ïîëå. Èçìåíèòå çíà÷åíèå ñâîéñòâà Text êíîïêè Button1 íà Ïîêàçàòü. Èçìåíèòå çíà÷åíèå ñâîéñòâà Text êíîïêè Button2 íà Ñêðûòü.  îáðàáîò÷èê íàæàòèÿ êíîïêè Button1 ââåäèòå ñëåäóþùèé êîä: TextBox1.Show()
 îáðàáîò÷èê íàæàòèÿ êíîïêè Button2 ââåäèòå ñëåäóþùèé êîä: TextBox1.Hide()
Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Íàæìèòå êíîïêó ñ íàäïèñüþ Ñêðûòü, à çàòåì êíîïêó ñ íàäïèñüþ Ïîêàçàòü. Êàæäûé ðàç, êîãäà âû íàæèìàåòå êíîïêó, ïðîãðàììà âûïîëíÿåò ìåòîäû ýëåìåíòà TextBox. Äîáàâüòå íà ôîðìó åùå îäíó êíîïêó. Èçìåíèòå çíà÷åíèå ñâîéñòâà Text êíîïêè Button3 íà Ñáðîñ.  îáðàáîò÷èê íàæàòèÿ êíîïêè Button3 ââåäèòå ñëåäóþùèé êîä: TextBox1.ResetText() TextBox1.Focus()
Ìåòîä ResetText óäàëÿåò âåñü òåêñò èç òåêñòîâîãî ïîëÿ. Ìåòîä Focus ïîìåùàåò êóðñîð â òåêñòîâîå ïîëå. Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Ââåäèòå â òåêñòîâîå ïîëå êàêîé-íèáóäü òåêñò è íàæìèòå êíîïêó ñ íàäïèñüþ Ñáðîñ. Èç òåêñòîâîãî ïîëÿ èñ÷åçíåò âåñü òåêñò, è îíî áóäåò ãîòîâî ê ââîäó íîâîãî òåêñòà. Òåïåðü âû ìîæåòå ÷èòàòü è çàïèñûâàòü çíà÷åíèÿ ñâîéñòâ è âûçûâàòü ìåòîäû â êîäå íà Visual Basic .NET. Êàê âû âèäåëè, áîëüøàÿ ÷àñòü êîäà ðàçìåùà-
76
Ãëàâà 5 åòñÿ â îáðàáîò÷èêàõ ñîáûòèé ýëåìåíòîâ óïðàâëåíèÿ. ×òîáû îòêðûòü êîä îáðàáîò÷èêà ñîáûòèÿ ïî óìîë÷àíèþ, ïðîñòî âûïîëíèòå äâîéíîé ùåë÷îê ïî ýëåìåíòó óïðàâëåíèÿ îòêðîåòñÿ ðåäàêòîð êîäà ñ ãîòîâûì ê ðåäàêòèðîâàíèþ îáðàáîò÷èêîì. ×òîáû ïðî÷èòàòü èëè çàïèñàòü çíà÷åíèå ñâîéñòâà èëè âûçâàòü ìåòîä, ââåäèòå èìÿ ýëåìåíòà è òî÷êó. IntelliSense ïîêàæåò ñïèñîê äîñòóïíûõ ñâîéñòâ è ìåòîäîâ ýëåìåíòà. Âûáåðèòå íóæíîå âàì ñâîéñòâî èëè ìåòîä è íàæìèòå êëàâèøó {Tab}, ÷òîáû ââåñòè åãî â êîä.
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 5.5. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
ñîçäàòü ïðîåêò «Ìåòîäû», îïèñàííûé â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Ìåòîäû.exe.
Òåñò ïî òåìå «Ñâîéñòâà è ìåòîäû» 1.
Ñ ïîìîùüþ êîäà â ïðîãðàììàõ m
Ìîæíî òîëüêî ñ÷èòûâàòü çíà÷åíèÿ ñâîéñòâ
m
Ìîæíî òîëüêî çàäàâàòü çíà÷åíèÿ ñâîéñòâ
m
Ìîæíî âûïîëíÿòü è òî, è äðóãîå
m
Íåëüçÿ äåëàòü íè òî, íè äðóãîå
2.
Êàêàÿ ñòðîêà êîäà îïðåäåëèò è ñîîáùèò ïîëüçîâàòåëþ, âûáðàíà ëè ïîçèöèÿ ïåðåêëþ÷àòåëÿ? m
MessageBox.Show(RadioButton1.Checked)
m
MessageBox.Show(Radio.Property)
m
MessageBox.Show(RadioButton1.Selected)
m
MessageBox.Show(RadioButton1.Unchecked)
3.
Âñå îïåðàòîðû ïðèñâàèâàíèÿ â Visual Basic âûïîëíÿþòñÿ â ïîðÿäêå m
Ñëåâà íàïðàâî
m
Ñïðàâà íàëåâî
m
Ïðîèçâîëüíîì ýòî áåçðàçëè÷íî
m
Êàæäûé îïåðàòîð ïî-ñâîåìó
4.
Êàê óñòàíîâèòü ôëàæîê ñ ïîìîùüþ êîäà? m
CheckBox1.Checked = Yes
m
CheckBox1.Unchecked = False
m
CheckBox1.Checked = True
m
CheckBox1.Selected = True
Ãëàâà 6
Ïðèñâàèâàíèå è ïåðåìåííûå 6.1. Ïðèñâàèâàíèå 6.2. Ïåðåìåííûå 6.3. Îáúÿâëåíèå ïåðåìåííûõ 6.4. Ïåðåìåííûå â ïðîãðàììàõ  1992 ãîäó áûëà ñîçäàíà äëÿ ïåðñîíàëüíûõ êîìïüþòåðîâ îïåðàöèîííàÿ ñèñòåìà ñ ãðàôè÷åñêèì èíòåðôåéñîì Windows 3.1, à â 1993 ãîäó âûïóùåíà îïåðàöèîííàÿ ñèñòåìà Windows for Workgroups 3.11 äëÿ ðàáîòû â ëîêàëüíîé ñåòè. Ãðàôè÷åñêèé èíòåðôåéñ ýòèõ ñèñòåì ïîçâîëÿåò ïîëüçîâàòåëþ óïðàâëÿòü êîìïüþòåðîì ñ ïîìîùüþ ùåë÷êîâ ìûøüþ ïî ïèêòîãðàììàì è ïóíêòàì ìåíþ. Ïðè æåëàíèè ïîëüçîâàòåëü ìîã ïåðåéòè â ðåæèì êîìàíäíîé ñòðîêè MS-DOS.
Ïðèñâàèâàíèå è ïåðåìåííûå
79
6.1. Ïðèñâàèâàíèå Òåïåðü âû çíàåòå, êàê ñ÷èòûâàòü è çàïèñûâàòü çíà÷åíèÿ ñâîéñòâ ñ ïîìîùüþ êîäà. Äëÿ ýòîãî ñëóæèò îïåðàòîð ïðèñâàèâàíèÿ. Îïåðàòîð ïðèñâàèâàíèÿ çàïèñûâàåò â îáúåêò çíà÷åíèå äðóãîãî îáúåêòà.  êîäå îïåðàòîð ïðèñâàèâàíèÿ âûãëÿäèò êàê ïðîñòîå ðàâåíñòâî: TextBox1.Text = "Ïðèñâàèâàíèå"
Íàïîìíèì, ÷òî îïåðàòîðû ïðèñâàèâàíèÿ âû÷èñëÿþòñÿ â ïîðÿäêå ñïðàâà íàëåâî. Ïåðâîé âû÷èñëÿåòñÿ ÷àñòü ñïðàâà îò çíàêà «ðàâíî». Ïîòîì ëåâîé ÷àñòè îïåðàòîðà (ñëåâà îò çíàêà «ðàâíî») ïðèñâàèâàåòñÿ âû÷èñëåííîå çíà÷åíèå ÷àñòè ñïðàâà îò çíàêà «ðàâíî».  ïðèâåäåííîì âûøå îïåðàòîðå ïðèñâàèâàíèÿ ïåðâûì âû÷èñëÿåòñÿ çíà÷åíèå Ïðèñâàèâàíèå. Çàòåì ýòî çíà÷åíèå ïîìåùàåòñÿ â ñâîéñòâî TextBox1.Text. Êðîìå òîãî, íóæíî ïîìíèòü, ÷òî çíà÷åíèå â ïðàâîé ÷àñòè îïåðàòîðà ïðèñâàèâàíèÿ äîëæíî èìåòü òèï (òåêñò, ÷èñëî, öâåò è ò. ä.), ñîãëàñóþùèéñÿ ñ òèïîì îáúåêòà èç ëåâîé ÷àñòè. Âû ïîéìåòå, ÷òî ýòî çíà÷èò, ðàññìîòðåâ ñëåäóþùèé ïðèìåð êîäà: TextBox1.Text = "Òåêñò"
Ïîêà ÷òî ìû íàçûâàëè òåêñòîâûå ïåðåìåííûå «òåêñòîì».  ïëàòôîðìå .NET âñå òåêñòîâûå ïåðåìåííûå íàçûâàþòñÿ ñòðîêàìè, ò. å. èìåþò òèï String. Åñëè âû èñïîëüçóåòå êîä äëÿ çàïèñè çíà÷åíèÿ â ñòðîêîâóþ ïåðåìåííóþ, íå çàáûâàéòå ïîìåùàòü òåêñò â êàâû÷êè, íàïðèìåð: Button1.Text = _ "Ùåëêíóòü çäåñü"
Çäåñü ñëåâà îò çíàêà «ðàâíî» ðàçìåùåíî ñâîéñòâî Text ýëåìåíòà TextBox1, êîòîðîå ìîæåò áûòü òîëüêî òåêñòîì, ïîýòîìó ñïðàâà îò çíàêà «ðàâíî» äîëæåí áûòü òîæå òåêñò. Åñëè ñïðàâà áóäåò íå òåêñò, à ÷òî-òî äðóãîå, òî ïðè ïîïûòêå ïîñòðîèòü ïðîåêò ïðîèçîéäåò îøèáêà. Ïîñêîëüêó â íàøåì ñëó÷àå "Òåêñò" ýòî òåêñò, ò. å. èìåííî òî, ÷òî ìîæåò íàõîäèòüñÿ â ñâîéñòâå Text, îøèáêè íå ïðîèñõîäèò. Ñëåäóþùèé êîä íå áóäåò êîìïèëèðîâàòüñÿ, ïîñêîëüêó ìû ïûòàåìñÿ ïîìåñòèòü â òåêñòîâîå ñâîéñòâî Text çíà÷åíèå öâåòà, ForeColor: TextBox1.Text = TextBox1.ForeColor 'îøèáêà
80
Ãëàâà 6 Ñëåäóþùèé êîä ïðàâèëüíûé, ïîñêîëüêó ïðàâàÿ ÷àñòü ðàâåíñòâà ýòî öåëîå ÷èñëî, à â ñâîéñòâî Height ìîæíî çàïèñûâàòü òîëüêî öåëûå ÷èñëà: TextBox1.Height = 200
Ñëåäóþùèé êîä íåïðàâèëüíûé, ïîñêîëüêó ïûòàåòñÿ çàïèñàòü â ñâîéñòâî Height äðîáíîå ÷èñëî: TextBox1.Height = 200.5
'îøèáêà
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 6.1. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
ñîçäàòü ïðîåêò «Ïðûæîê ëÿãóøêè», îñóùåñòâëÿþùèé ïðûæêè ñëîâà "Ëÿãóøêà" èç êðàéíåãî ëåâîãî òåêñòîâîãî ïîëÿ â ïîñëåäîâàòåëüíîñòü òåêñòîâûõ ïîëåé. Çàãîòîâêà ïðîåêòà, ñîäåðæàùàÿ ãðàôè÷åñêèé èíòåðôåéñ ïðîåêòà, õðàíèòñÿ â àðõèâå Ïðûæîê_ëÿãóøêè.exe. Ñîçäàòü îáðàáîò÷èêè ñîáûòèé ùåë÷êîâ ïî êíîïêàì ñ íàäïèñÿìè Ïðûæîê.
6.2. Ïåðåìåííûå Ïåðåìåííûå èñïîëüçóþòñÿ â êîäå äëÿ õðàíåíèÿ èíôîðìàöèè, êîòîðàÿ ìîæåò â äàëüíåéøåì ïîíàäîáèòüñÿ ïðîãðàììå. Ïåðåìåííûå â êîäå ïîõîæè íà ïåðåìåííûå â ìàòåìàòèêå. Îíè õðàíÿò êàêèå-òî çíà÷åíèÿ.  ëþáîé ìîìåíò âðåìåíè â ïåðåìåííóþ ìîæíî çàïèñàòü íîâîå çíà÷åíèå.
Ïðèñâàèâàíèå è ïåðåìåííûå
81
 êîäå ïåðåìåííûå èñïîëüçóþòñÿ äëÿ çàïîìèíàíèÿ èíôîðìàöèè. Åñëè áû â êîäå íåëüçÿ áûëî èñïîëüçîâàòü ïåðåìåííûå, âàøåé ïðîãðàììå ïðèøëîñü áû çàïðàøèâàòü ó âàñ èíôîðìàöèþ êàæäûé ðàç, êîãäà îíà áûëà áû íóæíà. Ïðåäñòàâüòå, ÷òî âàøåé ïðîãðàììå íóæíî áûëî áû òðè ðàçà èñïîëüçîâàòü âîçðàñò ïîëüçîâàòåëÿ! Âû íàâåðíÿêà áàëè áû íåäîâîëüíû, åñëè áû îíà ñïðîñèëà ó âàñ âîçðàñò òðè ðàçà: Ââåäèòå âàø âîçðàñò. Ââåäèòå âàø âîçðàñò. Ââåäèòå âàø âîçðàñò.
Ïðîãðàììå, èñïîëüçóþùåé ïåðåìåííûå, äîñòàòî÷íî áóäåò çàäàòü âîïðîñ òîëüêî îäèí ðàç. Îòâåò áóäåò ñîõðàíåí â ïåðåìåííîé, êîòîðàÿ è áóäåò èñïîëüçîâàòüñÿ â êîäå êàæäûé ðàç, êîãäà ýòà èíôîðìàöèÿ ïîíàäîáèòñÿ ïðîãðàììå. Êàê âû óæå âèäåëè, ïåðåìåííûå ïîçâîëÿþò ñýêîíîìèòü âðåìÿ. Îíè óìåíüøàþò êîëè÷åñòâî èíôîðìàöèè, êîòîðóþ äîëæåí ââîäèòü ïîëüçîâàòåëü. Êðîìå òîãî, îíè óìåíüøàþò êîëè÷åñòâî îøèáîê. Åñëè áû âàì ïðèøëîñü ðàç çà ðàçîì ââîäèòü äëèííîå ÷èñëî, âû áû ðàíî èëè ïîçäíî äîïóñòèëè îøèáêó. Ïåðåìåííûå èñïîëüçóþòñÿ äëÿ õðàíåíèÿ íå òîëüêî ââåäåííîé ïîëüçîâàòåëåì èíôîðìàöèè, íî è ðåçóëüòàòîâ âû÷èñëåíèé â ïðîãðàììå. Ïåðåìåííûå èñïîëüçóþòñÿ òàêæå äëÿ âûïîëíåíèÿ ñðàâíåíèé, ïî ðåçóëüòàòàì êîòîðûõ îïðåäåëÿåòñÿ, ÷òî äàëüøå äîëæíà äåëàòü ïðîãðàììà, è äëÿ ïåðåñ÷åòà, íàïðèìåð, êîëè÷åñòâà ïîâòîðåíèé êàêîãî-òî äåéñòâèÿ. Çíàíèå òîãî, êàê ñîõðàíÿòü èíôîðìàöèþ â ïåðåìåííûõ, ÿâëÿåòñÿ áàçîâûì â ïðîãðàììèðîâàíèè. Ïåðåìåííûå èñïîëüçóþòñÿ âî âñåõ ÿçûêàõ ïðîãðàììèðîâàíèÿ. Îíè ñîâåðøåííî íåîáõîäèìû äëÿ âûïîëíåíèÿ âû÷èñëåíèé îïðåäåëåííûõ òèïîâ è íåêîòîðûõ äåéñòâèé â ïðîãðàììå.  ïëàòôîðìå .NET åñòü íåñêîëüêî îñíîâíûõ òèïîâ ïåðåìåííûõ, êîòîðûå èíîãäà íàçûâàþò áàçîâûìè. Âû óæå èñïîëüçîâàëè òèï String, çàïèñûâàÿ
82
Ïîñêîëüêó C# è J# ýòî òîæå ÿçûêè .NET, â íèõ èñïîëüçóþòñÿ òå æå áàçîâûå òèïû, ÷òî è â Visual Basic .NET, ñòðîêè, öåëûå ÷èñëà, äðîáíûå ÷èñëà, áóëåâû (ëîãè÷åñêèå) çíà÷åíèÿ è äðóãèå.
Êîãäà âû âûáèðàåòå ñâîéñòâî èëè ìåòîä â ñïèñêå IntelliSense, âûâîäèòñÿ ïîäñêàçêà ê ïîäñâå÷åííîìó ïóíêòó ñïèñêà.  ýòîé ïîäñêàçêå óêàçûâàåòñÿ òèï ñâîéñòâà èëè òèïû àðãóìåíòîâ ìåòîäà.
Ãëàâà 6 çíà÷åíèÿ â ñâîéñòâî Text. Âû èñïîëüçîâàëè òèï Integer (öåëûå ÷èñëà), çàïèñûâàÿ çíà÷åíèÿ â ñâîéñòâî Height ôîðì. Âû èñïîëüçîâàëè òèï Boolean (áóëåâû ëîãè÷åñêèå âåëè÷èíû, True èëè False), íàïðèìåð, çàïèñûâàÿ çíà÷åíèÿ â ñâîéñòâî Visible. ×àùå âñåãî èñïîëüçóþòñÿ òàêèå áàçîâûå òèïû: String (òåêñòîâûå ñòðîêè), Integer (öåëûå ÷èñëà), Single (äðîáíûå ÷èñëà) è Boolean (True èëè False). Ýòè òèïû äîñòóïíû âî âñåõ ÿçûêàõ ïðîãðàììèðîâàíèÿ .NET, âêëþ÷àÿ Visual Basic .NET, C# è J#. Âîò ïðèìåðû äîïóñòèìûõ çíà÷åíèé äëÿ êàæäîãî èç ýòèõ òèïîâ: Òèï
Çíà÷åíèå
Êîììåíòàðèé
String
"Hello"
Integer
123
Single Boolean
55.12 True
Òåêñò äîëæåí áûòü â êàâû÷êàõ Öåëûå ÷èñëà (áåç çíàêîâ ïîñëå çàïÿòîé) Äðîáíûå ÷èñëà Ìîæåò áûòü òîëüêî True èëè False
Âîò ïðèìåðû ïðèñâàèâàíèÿ çíà÷åíèé ñâîéñòâàì ðàçíûõ òèïîâ: TextBox1.Text = "Òåêñò" TextBox1.Visible = True TextBox1.Width = 1000
Äðóãèå òèïû ïåðåìåííûõ.  Visual Basic .NET ìîæíî îáúÿâëÿòü ïåðåìåííûå ìíîæåñòâà ðàçíûõ òèïîâ. Êðîìå áàçîâûõ òèïîâ (String, Integer, Boolean, Single è äðóãèõ), åñòü è áîëåå ñëîæíûå òèïû. Ýòè òèïû âñòðîåíû â ïëàòôîðìó .NET è ìîãóò èñïîëüçîâàòüñÿ âñåìè ÿçûêàìè .NET. Ìíîãèå èç ýòèõ òèïîâ ñâîéñòâà òàê íàçûâàåìûõ ñèñòåìíûõ êëàññîâ. Ñèñòåìíûå êëàññû (System classes) ñîäåðæàò êîä, îáåñïå÷èâàþùèé ðàáîòó ÿçûêîâ .NET. Äëÿ ðàáîòû ñ ÿçûêàìè .NET ñëåäóåò óìåòü èñïîëüçîâàòü ñèñòåìíûå êëàññû.
Ïðèñâàèâàíèå è ïåðåìåííûå
83
Ïîêà ÷òî âàì íå íóæíî ðàçáèðàòüñÿ â êëàññå System. Âðåìÿ îò âðåìåíè ìû áóäåì ðàññìàòðèâàòü ôðàãìåíòû êîäà, èñïîëüçóþùèå ñâîéñòâà èëè ìåòîäû ñèñòåìíûõ êëàññîâ, ïîýòîìó íåïëîõî, åñëè âû ñìîæåòå èõ óçíàâàòü. Ðàññìîòðèì ïðèìåð, èñïîëüçóþùèé ñèñòåìíûå êëàññû äëÿ óñòàíîâêè öâåòà ôîíà ôîðìû. Ñîçäàéòå ïðèëîæåíèå «Öâåò» è äîáàâüòå íà ôîðìó Form1 êíîïêó. Èçìåíèòå çíà÷åíèå åå ñâîéñòâà Text íà Óñòàíîâèòü öâåò. Âûïîëíèòå äâîéíîé ùåë÷îê ïî ýòîé êíîïêå, ÷òîáû îòðåäàêòèðîâàòü îáðàáîò÷èê íàæàòèÿ íà íåå. Äîáàâüòå â îáðàáîò÷èê ñëåäóþùèé êîä: Dim MyColor As System.Drawing.Color MyColor = System.Drawing.Color.Blue Form1.ActiveForm.BackColor = MyColor
Ïîñòðîéòå è çàïóñòèòå âàøå ïðèëîæåíèå. Íàæìèòå êíîïêó Button1. Ìû îáúÿâèëè â êîäå ïåðåìåííóþ MyColor òèïà System.Drawing.Color. Ýòîé ïåðåìåííîé áûëî ïðèñâîåíî çíà÷åíèå System.Drawing. Color.Blue îäèí èç îïðåäåëåííûõ â ñèñòåìå öâåòîâ. Ïîòîì ñâîéñòâó BackColor ôîðìû Form1 áûëî ïðèñâîåíî çíà÷åíèå ïåðåìåííîé MyColor. Îáðàòèòå âíèìàíèå, ÷òî ñâîéñòâó BackColor íóæíî ïðèñâàèâàòü çíà÷åíèÿ òèïà System.Drawing.Color. Ìîæåòå ïîïðîáîâàòü èçó÷èòü êëàññ System ñàìîñòîÿòåëüíî. ×òîáû ñäåëàòü ýòî, ïðîùå âñåãî íàáðàòü System. (íå çàáóäüòå òî÷êó) â îêíå ðåäàêòîðà êîäà. IntelliSense âûâåäåò ñïèñîê âñåõ ìåòîäîâ è ñâîéñòâ ñèñòåìíûõ êëàññîâ. Âûáåðèòå èç ñïèñêà ñâîéñòâî èëè ìåòîä è ââåäèòå åùå îäíó òî÷êó, ÷òîáû óâèäåòü, åñòü ëè ó íåãî ñîáñòâåííûå ñâîéñòâà èëè ìåòîäû.  ýòîì ñïèñêå ìíîãî ÷åãî èíòåðåñíîãî!
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 6.2. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
ñîçäàòü ïðîåêò «Öâåò», îïèñàííûé â ïàðàãðàôå. Ãîòîâûé ïðîåêò õðàíèòñÿ â àðõèâå Öâåò.exe.
84
Ãëàâà 6
6.3. Îáúÿâëåíèå ïåðåìåííûõ Ïåðåä èñïîëüçîâàíèåì ïåðåìåííîé â ïðîãðàììå, ýòó ïåðåìåííóþ íóæíî îáúÿâèòü. ×òîáû îáúÿâèòü ïåðåìåííóþ, íóæíî íàïèñàòü ñòðîêó êîäà, â êîòîðîé óêàçûâàåòñÿ èìÿ ýòîé ïåðåìåííîé è åå òèï. Âñå ïåðåìåííûå â ïðîãðàììàõ íà Visual Basic .NET íóæíî îáúÿâëÿòü. Äàæå åñëè áû íå áûëî òàêîãî òðåáîâàíèÿ ñèíòàêñèñà, ïåðåìåííûå îáúÿâëÿòü ïîëåçíî, ïîñêîëüêó ýòî ïîçâîëÿåò âàì ïðîäóìàòü ïðèìåíåíèå ïåðåìåííîé è âûáðàòü äëÿ íåå ïðàâèëüíûé òèï. Îáúÿâëåíèå ïåðåìåííûõ óñêîðÿåò êîìïèëÿöèþ ïðîãðàììû è ïîâûøàåò ýôôåêòèâíîñòü åå ðàáîòû. Êðîìå òîãî, îíî ïðåäîòâðàùàåò îøèáêè, ñâÿçàííûå ñ íåïðàâèëüíûì íàïèñàíèåì èìåí ïåðåìåííûõ â êîäå. Îïåðàòîð îáúÿâëåíèÿ ïåðåìåííûõ. ×òîáû îáúÿâèòü ïåðåìåííóþ â êîäå íà Visual Basic .NET, èñïîëüçóåòñÿ îïåðàòîð Dim. Ñèíòàêñèñ ýòîãî îïåðàòîðà ñëåäóþùèé: Dim ÈìÿÏåðåìåííîé As ÒèïÏåðåìåííîé
Âîò íåñêîëüêî ïðèìåðîâ îáúÿâëåíèÿ ïåðåìåííûõ ðàçíûõ òèïîâ: Dim Dim Dim Dim
 C# è J# ïåðåìåííûå îáúÿâëÿþòñÿ íåìíîãî ïî-äðóãîìó. Ñíà÷àëà ïèøåòñÿ òèï ïåðåìåííîé, à ïîòîì åå èìÿ. Êðîìå òîãî, òèïû íàçûâàþòñÿ òîæå ïî-äðóãîìó. Íàïðèìåð, int èñïîëüçóåòñÿ âìåñòî Integer, à decimal âìåñòî Single.
MyName As String MyWeight As Integer NoBrainer As Boolean DVDPrice As Single
Ïåðâàÿ ïåðåìåííàÿ, MyName, îáúÿâëåíà êàê ñòðîêîâàÿ (òèï String). Ýòî çíà÷èò, ÷òî â ïåðåìåííîé MyName ìîæíî õðàíèòü òîëüêî ñòðîêè òåêñòà. Âòîðàÿ ïåðåìåííàÿ, MyWeight, îáúÿâëåíà êàê öåëî÷èñëåííàÿ (òèï Integer).  íåé ìîæíî õðàíèòü öåëûå ÷èñëà. Ïåðåìåííàÿ NoBrainer îáúÿâëåíà êàê ëîãè÷åñêàÿ (òèï Boolean), à ïåðåìåííàÿ DVDPrice êàê äðîáíîå ÷èñëî (òèï Single). Âàæíî âûáèðàòü äëÿ ïåðåìåííûõ óäîáíûå èìåíà. Èìåíà ïåðåìåííûõ äîëæíû áûòü êîðîòêèìè, íî ïîíÿòíûìè. Èñïîëüçóéòå â íèõ àááðåâèàòóðû òîëü-
Ïðèñâàèâàíèå è ïåðåìåííûå
85
êî ïðè íåîáõîäèìîñòè. Ìíîãèå ïðîãðàììèñòû èñïîëüçóþò ñòèëü îôîðìëåíèÿ èìåí, ïðè êîòîðîì êàæäîå ñëîâî â èìåíè ïåðåìåííîé íà÷èíàåòñÿ ñ áîëüøîé áóêâû. Íàïðèìåð: CamelCase, MyName, WinnebagoTopSpeed, LocalSpeedLimit.  Visual Basic ïåðâàÿ áóêâà èìåíè àâòîìàòè÷åñêè äåëàåòñÿ áîëüøîé.  J# è C# îíà îñòàåòñÿ îáû÷íîé.  êîäå íà Visual Basic .NET ìîæíî îáúÿâèòü ñêîëüêî óãîäíî ïåðåìåííûõ. Ìîæíî îáúÿâëÿòü ïåðåìåííûå ëþáîãî òèïà, ïîçâîëåííîãî ïëàòôîðìîé .NET. Ðåêîìåíäóåòñÿ îáúÿâëÿòü âñå íóæíûå íàì ïåðåìåííûå â íà÷àëå êîäà. Òàêèì îáðàçîì, ìû áóäåì çíàòü, ãäå èñêàòü îáúÿâëåíèÿ ïåðåìåííûõ è ëåãêî ñìîæåì îïðåäåëèòü, êàêîé òèï ó êàæäîé ïåðåìåííîé. Êðîìå òîãî, íàø êîä áóäåò àêêóðàòíûì è õîðîøî îðãàíèçîâàííûì. Åñëè íàì ïîíàäîáèòñÿ ñîçäàòü åùå îäíó ïåðåìåííóþ, ìû âåðíåìñÿ â íà÷àëî êîäà è îáúÿâèì åå ðÿäîì ñ îñòàëüíûìè ïåðåìåííûìè. Ëîêàëüíûå è ãëîáàëüíûå ïåðåìåííûå. Ïåðåìåííûå ìîæíî îáúÿâëÿòü êàê ãëîáàëüíûå èëè ëîêàëüíûå. Ïîêà ÷òî ìû ïèñàëè òîëüêî êîä âíóòðè îáðàáîò÷èêîâ ñîáûòèé ýëåìåíòîâ óïðàâëåíèÿ, íàïðèìåð, êîä, îáðàáàòûâàþùèé íàæàòèå íà êíîïêó. Ïåðåìåííûå, êîòîðûå ìû îáúÿâèì â îáðàáîò÷èêå, áóäóò ëîêàëüíûìè. Çíà÷åíèÿ ëîêàëüíûõ ïåðåìåííûõ ìîæíî ñ÷èòûâàòü èëè çàïèñûâàòü òîëüêî â êîäå îáðàáîò÷èêà, â êîòîðîì îíè îáúÿâëåíû. Ê íèì íåëüçÿ îáðàòèòüñÿ èç äðóãîãî ìåñòà â êîäå ôîðìû (íàïðèìåð, èç äðóãîãî îáðàáîò÷èêà). Çíà÷åíèÿ ëîêàëüíûõ ïåðåìåííûõ ñîõðàíÿþòñÿ òîëüêî âî âðåìÿ âûïîëíåíèÿ êîäà îáðàáîò÷èêà. Êîãäà îáðàáîò÷èê çàêàí÷èâàåò ñâîå âûïîëíåíèå, çíà÷åíèÿ åãî ëîêàëüíûõ ïåðåìåííûõ òåðÿþòñÿ. Ïðèìåð ëîêàëüíîé ïåðåìåííîé ïåðåìåííàÿ, îáúÿâëåííàÿ â îáðàáîò÷èêå íàæàòèÿ íà êíîïêó. ×òîáû îáúÿâèòü ëîêàëüíûå ïåðåìåííûå â îáðàáîò÷èêå, ïîìåñòèòå îïåðàòîð Dim â íà÷àëî êîäà îáðàáîò÷èêà.
86
Ãëàâà 6 Ïðèìåð: Private Sub Button1_Click(ByVal sender As_ System.Object, ByVal e As System.EventArgs)_ Handles Button1.Click Dim MyName As String MyName = "Bill" TextBox1.Text = MyName End Sub
Äî ñèõ ïîð ìû íå èñïîëüçîâàëè íèêàêèõ ãëîáàëüíûõ ïåðåìåííûõ. Çíà÷åíèÿ ãëîáàëüíûõ ïåðåìåííûõ ìîæíî ñ÷èòûâàòü è çàïèñûâàòü èç âñåãî êîäà ôîðìû. Äîñòóï ê íèì åñòü ó âñåõ îáðàáîò÷èêîâ ñîáûòèé è èç äðóãèõ ìåñò êîäà ôîðìû. Çíà÷åíèÿ ãëîáàëüíûõ ïåðåìåííûõ ñîõðàíÿþòñÿ, ïîêà ôîðìà îñòàåòñÿ îòêðûòîé. Ïðèìåð ãëîáàëüíîé ïåðåìåííîé ïåðåìåííàÿ-ñ÷åò÷èê, ïîäñ÷èòûâàþùàÿ, ñêîëüêî ðàç áûëè íàæàòû âñå êíîïêè íà ôîðìå. ×òîáû îáúÿâèòü ãëîáàëüíóþ ïåðåìåííóþ, êîòîðóþ ìîæåò èñïîëüçîâàòü âåñü êîä ôîðìû, íóæíî ïîìåñòèòü îïåðàòîð Dim â òåëî ôîðìû. Ëó÷øå âñåãî îáúÿâëÿòü ãëîáàëüíûå ïåðåìåííûå â êîäå ôîðìû ñðàçó ïîñëå òàêîé ñòðîêè: Windows Form Designer generated code
Ýòà ñòðîêà êîäà çàêëþ÷åíà â ðàìêó, è ñëåâà îò íåå íàõîäèòñÿ çíà÷îê «ïëþñ». Îáúÿâëÿéòå ñâîè ïåðåìåííûå ñðàçó ïîñëå ýòîé ñòðîêè. Ïîñìîòðèòå íà ïðèìåð: Windows Form Designer generated code Dim TotalButtonClicks As Single
Ïåðåìåííàÿ TotalButtonClicks áóäåò ãëîáàëüíîé. Åå çíà÷åíèå ìîæíî áóäåò ñ÷èòûâàòü èëè çàïèñûâàòü âî âñåì êîäå ôîðìû, âêëþ÷àÿ îáðàáîò÷èêè ñîáûòèé.
Ïðèñâàèâàíèå è ïåðåìåííûå
87
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 6.3. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
ñîçäàòü ïðîåêò «×èñëî Pi», îñóùåñòâëÿþùèé âûâîä ÷èñëà π â òåêñòîâûå ïîëÿ â ðàçëè÷íûõ ôîðìàòàõ. Ñîçäàéòå ôîðìó ñëåäóþùåãî âèäà:
 îáðàáîò÷èêå íàæàòèÿ íà êíîïêó îáúÿâèòå ïåðåìåííûå ñëåäóþùèõ òèïîâ: Integer, Single, Double, String. Ïðèñâîéòå êàæäîé ïåðåìåííîé çíà÷åíèå, ðàâíîå ÷èñëó π. Ýòî çíà÷åíèå â Visual Basic îáîçíà÷àåòñÿ òàê: Math.PI. Âûâåäèòå çíà÷åíèå êàæäîé ïåðåìåííîé â ñîîòâåòñòâóþùåì òåêñòîâîì ïîëå.
6.4. Ïåðåìåííûå â ïðîãðàììàõ Îáúÿâèâ ïåðåìåííóþ, âû ìîæåòå èñïîëüçîâàòü åå â ñâîåì êîäå. Ïåðâîå, ÷òî íóæíî ñäåëàòü â êîäå, çàäàòü íà÷àëüíîå çíà÷åíèå ïåðåìåííîé. Ìîæíî çàäàòü ëþáîå çíà÷åíèå ïåðåìåííîé, åñëè îíî ïðàâèëüíîãî òèïà. Äëÿ çàäàíèÿ çíà÷åíèÿ ïåðåìåííîé èñïîëüçóåòñÿ îïåðàòîð ïðèñâàèâàíèÿ. Âîò íåñêîëüêî ïðèìåðîâ: Dim MyName As String MyName = "Ìîå èìÿ" Dim MyWeight As Integer MyWeight = 128 Dim DrivingDistance As Single DrivingDistance = 12.8
88
 C# è J# èíèöèàëèçàöèÿ ïåðåìåííîé íóæíûì çíà÷åíèåì äåëàåòñÿ òàê: int myOrbit; myOrbit=123000;
Ãëàâà 6 Ïåðåìåííàÿ MyName îáúÿâëåíà êàê ïðèíàäëåæàùàÿ ê òèïó String, è åé ïðèñâîåíà ñòðîêà "Ìîå èìÿ". Ïåðåìåííàÿ MyWeight îáúÿâëåíà êàê Integer è åé ïðèñâîåíî çíà÷åíèå 128, öåëîå ÷èñëî. Ïåðåìåííàÿ DrivingDistance îáúÿâëåíà êàê Single, è åé ïðèñâîåíî çíà÷åíèå 12.8, äåñÿòè÷íàÿ äðîáü. Åñòü î÷åíü óäîáíûé ñïîñîá îáúåäèíÿòü â îäíîé ñòðîêå êîäà îáúÿâëåíèå ïåðåìåííîé è ïðèñâàèâàíèå åé íà÷àëüíîãî çíà÷åíèÿ. Ýòîò ñïîñîá ãàðàíòèðóåò, ÷òî ó ïåðåìåííîé ñ ñàìîãî íà÷àëà áóäåò ïðàâèëüíîå çíà÷åíèå. Èñïîëüçîâàíèå ïåðåìåííîé, êîòîðîé íå ïðèñâîåíî íà÷àëüíîå çíà÷åíèå, ìîæåò ïðèâåñòè ê íåïðàâèëüíîé ðàáîòå ïðîãðàììû. Dim MyAge As Integer = 100
Òåïåðü, îáúÿâèâ ïåðåìåííóþ è ïðèñâîèâ åé íà÷àëüíîå çíà÷åíèå, ìîæíî èñïîëüçîâàòü åå â êîäå êàæäûé ðàç, êîãäà âàì íóæíî ýòî çíà÷åíèå. Êàê âû äóìàåòå, ÷òî áóäåò âûâåäåíî â îêíå ñîîáùåíèÿ? Dim MyName As String MyName = "Joe Cooker" MessageBox.Show(MyName)
×òî áóäåò âûâåäåíî â TextBox1? Dim MyName As String MyName = "Peter, Paul and Mary" TextBox1.Text = MyName
Çíà÷åíèå ïåðåìåííîé ìîæíî èçìåíÿòü ñ ïîìîùüþ îïåðàòîðîâ ïðèñâàèâàíèÿ. Êàêîå èìÿ áóäåò âûâåäåíî â TextBox1 â ñëåäóþùåì ïðèìåðå? Ïåðåìåííîé MyName ïðèñâîåíî çíà÷åíèå "Bill", çàòåì "Bob", à çàòåì "Ben". Ïîñêîëüêó ïîñëåäíåå çíà÷åíèå MyName "Ben", èìåííî îíî áóäåò âûâåäåíî â TextBox1. Dim MyName As String MyName = "Bill" MyName = "Bob" MyName = "Ben" TextBox1.Text = MyName
Ïðèñâàèâàíèå è ïåðåìåííûå
89
Ìîæíî ïðèñâîèòü ïåðåìåííîé çíà÷åíèå äðóãîé ïåðåìåííîé. ×òî áóäåò âûâåäåíî â îêíå ñîîáùåíèÿ? Âîò íåáîëüøîé ïðèìåð êîäà íà J# èëè C#. Êàê âèäèòå, åñòü è îáùèå ÷åðòû, è îòëè÷èÿ ýòîãî êîäà îò êîäà íà Visual Basic. NET. Îáðàòèòå âíèìàíèå íà îáúÿâëåíèå ïåðåìåííûõ. string MyName; string YourName; MyName = "Allen Ginsberg"; YourName = myName; MessageBox.Show (YourName);
Dim MyName As String Dim YourName As String MyName = "Allen Ginsberg" YourName = MyName MessageBox.Show(YourName)
Âîò ïðèìåð, ñîäåðæàùèé îøèáêó: ìû ïûòàåìñÿ ïðèñâîèòü ïåðåìåííîé çíà÷åíèå ïåðåìåííîé äðóãîãî òèïà. Ïîìíèòå, ïåðåìåííûå îáúÿâëÿþòñÿ êàê ïðèíàäëåæàùèå ê îïðåäåëåííîìó òèïó. Èì ìîæíî ïðèñâîèòü çíà÷åíèÿ òîëüêî ýòîãî òèïà. Ýòîò êîä íåëüçÿ ñêîìïèëèðîâàòü: Îøèáêà
Dim MyName As String Dim DVDPrice As Single MyName = "Paul Bunion" DVDPrice = MyName
Äàâàéòå íàïèøåì ïðîãðàììó, â êîòîðîé ïåðåìåííûå èñïîëüçóþòñÿ! Ñîçäàéòå íîâîå ïðèëîæåíèå Windows â Visual Studio .NET. Íàçîâèòå åãî «Èìåíà». Îòêðîéòå îêíî Îáëàñòü ýëåìåíòîâ è äîáàâüòå íà ôîðìó Form1 êíîïêó è äâà òåêñòîâûõ ïîëÿ. Î÷èñòèòå ñâîéñòâî Text îáîèõ òåêñòîâûõ ïîëåé. Óñòàíîâèòå çíà÷åíèå Ïîêàçàòü èìåíà ñâîéñòâà Text êíîïêè. Óñòàíîâèòå çíà÷åíèå True ñâîéñòâà ReadOnly îáîèõ òåêñòîâûõ ïîëåé. Äâîéíûì ùåë÷êîì ïî êíîïêå Button1 îòêðîéòå â ðåäàêòîðå êîäà îáðàáîò÷èê åå íàæàòèÿ. Ââåäèòå â îáðàáîò÷èê ñëåäóþùèå ñòðîêè êîäà: Dim XName As String Dim YName As String XName = "X is my name" YName = "Y is my name" TextBox1.Text = XName TextBox2.Text = YName
Ïîñòðîéòå è çàïóñòèòå ïðèëîæåíèå. Íàæìèòå êíîïêó ñ íàäïèñüþ Ïîêàçàòü èìåíà. Â âàøåì êîäå îáúÿâëåíû äâå ñòðîêîâûå ïåðåìåííûå XName è YName.
90
Ãëàâà 6 Ïåðåìåííûå õðàíÿò äâå ñòðîêè òåêñòà (çàêëþ÷åííûå â êàâû÷êè). Ñâîéñòâó Text ïîëÿ TextBox1 áóäåò ïðèñâîåíî çíà÷åíèå ïåðåìåííîé XName. Ñâîéñòâó Text ïîëÿ TextBox2 áóäåò ïðèñâîåíî çíà÷åíèå ïåðåìåííîé YName. Ïîïðîáóéòå èçìåíÿòü çíà÷åíèÿ XName è YName â êîäå è ñíîâà çàïóñêàòü ïðîãðàììó. À òåïåðü èçìåíèì ïðîãðàììó. Äîáàâüòå íà ôîðìó åùå îäíî òåêñòîâîå ïîëå. Î÷èñòèòå åãî ñâîéñòâî Text. Óáåäèòåñü, ÷òî äëÿ ñâîéñòâà ReadOnly ýòîãî òåêñòîâîãî ïîëÿ óñòàíîâëåíî çíà÷åíèå 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
Ïîñòðîéòå è çàïóñòèòå ïðèëîæåíèå. Ââåäèòå â òðåòüå òåêñòîâîå ïîëå êàêîé-íèáóäü òåêñò. Íàæìèòå êíîïêó ñ íàäïèñüþ Ïîêàçàòü èìåíà. ×òî ïðîèçîéäåò? Âàø êîä îáúÿâëÿåò òðè ñòðîêîâûå ïåðåìåííûå. Ïåðåìåííîé ZName ïðèñâàèâàåòñÿ çíà÷åíèå ñâîéñòâà Text òåêñòîâîãî ïîëÿ TextBox3. Ïåðåìåííîé XName ïðèñâàèâàåòñÿ çíà÷åíèå ïåðåìåííîé ZName (êîòîðîé ðàíåå áûëî ïðèñâîåíî çíà÷åíèå ñâîéñòâà Text òåêñòîâîãî ïîëÿ TextBox3). Ïåðåìåííîé YName ïðèñâàèâàåòñÿ çíà÷åíèå ïåðåìåííîé XName (êîòîðîé áûëî òîëüêî ÷òî ïðèñâîåíî çíà÷åíèå ïåðåìåííîé ZName). Çàòåì êîä ïîìåùàåò â ñâîéñòâî Text ïîëÿ TextBox1 çíà÷åíèå ïåðåìåííîé XName, à â ñâîéñòâî Text ïîëÿ TextBox2 çíà÷åíèå YName. Ýòîò êîä ïîêàçûâàåò, êàê ïîìåñòèòü â ïåðåìåííóþ çíà÷åíèå äðóãîé ïåðåìåííîé. Âîò åùå îäèí ïðèìåð îí ïîêàæåò âàì, êàê èñïîëüçîâàòü ãëîáàëüíûå ïåðåìåííûå. Ñîçäàéòå íîâîå ïðèëîæåíèå Windows è íàçîâèòå åãî «Êîëè÷åñòâî
Ïðèñâàèâàíèå è ïåðåìåííûå
91
ùåë÷êîâ». Äîáàâüòå íà ôîðìó Form1 òðè êíîïêè.  ðåäàêòîðå êîäà íàéäèòå ñëåäóþùóþ ñòðîêó: Windows Form Designer generated code
Ñðàçó ïîñëå íåå ââåäèòå ñëåäóþùåå: Dim Number As Integer
Çàìå÷àíèå. Ïåðåìåííîé Number àâòîìàòè÷åñêè ïðèñâàèâàåòñÿ çíà÷åíèå 0. Âûïîëíèòå äâîéíîé ùåë÷îê ïî êíîïêå Button1 â ðåäàêòîðå ôîðì è äîáàâüòå â îáðàáîò÷èê ñëåäóþùèé êîä: Number = Number + 1 MessageBox.Show(Number)
Äîáàâüòå òàêîé æå êîä â îáðàáîò÷èêè íàæàòèé êíîïîê Button2 è Button3. Ïîñòðîéòå è çàïóñòèòå ïðèëîæåíèå. Íàæèìàéòå êíîïêè â ïðîèçâîëüíîì ïîðÿäêå. Ïðè êàæäîì íàæàòèè áóäåò âûâîäèòüñÿ îêíî ñîîáùåíèÿ, â êîòîðîì áóäåò óêàçàíî îáùåå êîëè÷åñòâî íàæàòèé. Ýòîò êîä ðàáîòàåò, ïîòîìó ÷òî ìû îáúÿâèëè ïåðåìåííóþ Number êàê ãëîáàëüíóþ â êîäå ôîðìû. Ýòà ïåðåìåííàÿ èñïîëüçóåòñÿ äëÿ õðàíåíèÿ îáùåãî êîëè÷åñòâà íàæàòèé. Ïðè êàæäîì íàæàòèè êíîïêè çíà÷åíèå ýòîé ïåðåìåííîé óâåëè÷èâàåòñÿ íà 1. Çíà÷åíèå â ãëîáàëüíîé ïåðåìåííîé ôîðìû ñîõðàíÿåòñÿ, ïîêà ôîðìà íå áóäåò çàêðûòà.
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 6.4. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
ñîçäàòü ïðîåêò «Èìåíà», îïèñàííûé â ïàðàãðàôå. Ãîòîâûé ïðîåêò õðàíèòñÿ â àðõèâå Èìåíà.exe. 6.5.  ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET ñîçäàòü ïðîåêò «Êîëè÷åñòâî ùåë÷êîâ», îïèñàííûé â ïàðàãðàôå. Ãîòîâûé ïðîåêò õðàíèòñÿ â àðõèâå Êîëè÷åñòâî_ùåë÷êîâ.exe. 6.6.  ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET îòêðûòü ïðîåêò «Íàéäè îøèáêè», íàéòè è èñïðàâèòü îøèáêè â ïðîãðàììíîì êîäå. Ãîòîâûé ïðîåêò õðàíèòñÿ â àðõèâå Íàéäè_îøèáêè.exe.
Òåñò ïî òåìå «Ïðèñâàèâàíèå è ïåðåìåííûå» 1.
Òèïîì ïåðåìåííîé íå ÿâëÿåòñÿ m
Boolean
m
Form1.Button1
m
Single
m
System.Drawing.Color
2.
Äàííûå êàêîãî òèïà âñåãäà õðàíÿòñÿ â ñâîéñòâå Text òåêñòîâîãî ïîëÿ? m
Single
m
Integer
m
Boolean
m
String
3.
Ïåðåìåííûå êàêîãî òèïà ìîãóò ïðèíèìàòü îäíî çíà÷åíèå èç äâóõ âîçìîæíûõ? m
Single
m
Integer
m
Boolean
m
String
4.
Ïðåæäå ÷åì èñïîëüçîâàòü ïåðåìåííóþ â ïðîãðàììå, îáÿçàòåëüíî íóæíî m
Ïðèñâîèòü ïåðåìåííîé çíà÷åíèå
m
Îáúÿâèòü ïåðåìåííóþ
m
Îáíóëèòü ïåðåìåííóþ
m
Âûâåñòè çíà÷åíèå ïåðåìåííîé â òåêñòîâîå ïîëå
Ãëàâà 7
Îïåðàöèè 7.1. Àðèôìåòè÷åñêèå îïåðàöèè 7.2. Ñòðîêîâûå îïåðàöèè 7.3. Ëîãè÷åñêèå îïåðàöèè 7.4. Îòëàäêà êîäà
 1993 ãîäó áûëà ñîçäàíà îïåðàöèîííàÿ ñèñòåìà ñ ãðàôè÷åñêèì èíòåðôåéñîì Windows NT äëÿ ñåðâåðîâ è ðàáî÷èõ ñòàíöèé, êîòîðàÿ ñîäåðæàëà óòèëèòû äëÿ ðàáîòû â ëîêàëüíîé ñåòè è â Èíòåðíåòå. Îïåðàöèîííàÿ ñèñòåìà îáåñïå÷èâàëà áîëüøóþ èíôîðìàöèîííóþ áåçîïàñíîñòü (èñïîëüçîâàëà ôàéëîâóþ ñèñòåìó NTFS, ïîçâîëÿëà óñòàíàâëèâàòü ïîëèòèêè áåçîïàñíîñòè äëÿ ðàáî÷èõ ãðóïï è äð.). Íà îñíîâå Windows NT â ïîñëåäóþùèå ãîäû áûëè ðàçðàáîòàíû îïåðàöèîííûå ñèñòåìû Windows 2000 è Windows XP.
94
Ãëàâà 7
7.1. Àðèôìåòè÷åñêèå îïåðàöèè Ïðèìåðû àðèôìåòè÷åñêèõ îïåðàöèé, êîòîðûå âû èñïîëüçîâàëè ñ ïåðâîãî êëàññà íà óðîêàõ ìàòåìàòèêè, ñëîæåíèå, âû÷èòàíèå, óìíîæåíèå è äåëåíèå.  ïðîãðàììèðîâàíèè òîæå åñòü òàêèå îïåðàöèè. Êðîìå òîãî, èìåþòñÿ è äðóãèå îïåðàöèè, ïîçâîëÿþùèå, íàïðèìåð, âûïîëíÿòü ñëîæíûå ðàñ÷åòû è îáúåäèíÿòü òåêñòîâûå ñòðîêè. Îïåðàöèè îáû÷íî îáðàáàòûâàþò äâà çíà÷åíèÿ, õîòÿ äëÿ íåêîòîðûõ íóæíî òîëüêî îäíî. Ýòè çíà÷åíèÿ íàçûâàþòñÿ îïåðàíäàìè. Âîò îáùèé ñèíòàêñèñ îïåðàöèè: Îïåðàíä1 Îïåðàöèÿ Îïåðàíä2
Ïðèìåð: 3 + 4
 âûðàæåíèè 3 + 4 åñòü äâà îïåðàíäà (3 è 4) è îïåðàöèÿ (+). Îïåðàöèÿ âûïîëíÿåò äåéñòâèå (â äàííîì ñëó÷àå ñëîæåíèå) íàä äâóìÿ îïåðàíäàìè (3 è 4). Êîìïüþòåðíûå ïðîãðàììû îòëè÷íî ïîäõîäÿò äëÿ âûïîëíåíèÿ âû÷èñëåíèé. Îíè íèêîãäà íå îøèáàþòñÿ è íå óñòàþò äåëàòü îäíî è òî æå ðàç çà ðàçîì. Çâó÷èò ñëèøêîì õîðîøî, ÷òîáû áûòü ïðàâäîé? Âû ïðàâû, òóò åñòü ïðîáëåìà. Ïðîãðàììû ìîãóò âûïîëíÿòü âû÷èñëåíèÿ, íî íå ìîãóò ïîäãîòàâëèâàòü çàäà÷è äëÿ ðåøåíèÿ. Åñëè âû ïðîãðàììèñò, ýòî äîëæíû äåëàòü âû. Èìåííî ïîýòîìó âàæíî ïîíèìàòü, êàê èñïîëüçóþòñÿ â ïðîãðàììàõ àðèôìåòè÷åñêèå îïåðàöèè. Èìåííî îíè ñîîáùàþò ïðîãðàììå, êàêèå äåéñòâèÿ íóæíî âûïîëíèòü, ÷òîáû ðåøèòü çàäà÷ó. Ïîñêîëüêó êîìïüþòåðû ïðåäíàçíà÷åíû äëÿ âû÷èñëåíèé, âî âñåõ ÿçûêàõ ïðîãðàììèðîâàíèÿ åñòü ñòàíäàðòíûé íàáîð àðèôìåòè÷åñêèõ îïåðàöèé. Ïîñêîëüêó ýòè îïåðàöèè øèðîêî ðàñïðîñòðàíåíû, âî âñåõ ÿçûêàõ èõ îáîçíà÷àþò ïî÷òè îäèíàêîâî. Âîò ñïèñîê ñàìûõ ðàñïðîñòðàíåííûõ àðèôìåòè÷åñêèõ îïåðàöèé è èõ îáîçíà÷åíèé â ìàòåìàòèêå è â
Îïåðàöèè
95 êîäå ïðîãðàìì. Îáðàòèòå âíèìàíèå íà òî, ÷òî â ïðîãðàììàõ ïî-äðóãîìó îáîçíà÷àåòñÿ òîëüêî óìíîæåíèå: * âìåñòî òî÷êè (·).
 ÿçûêàõ C# è J# îïåðàöèè îáîçíà÷àþòñÿ òàê æå, êàê è â Visual Basic .NET. Ñëîæåíèå îáîçíà÷àåòñÿ +, âû÷èòàíèå , óìíîæåíèå *, äåëåíèå /.
Îïåðàöèÿ
Îáû÷íîå îáîçíà÷åíèå
Ñèìâîë â ïðîãðàììàõ
Ñëîæåíèå
+
+
Âû÷èòàíèå
Óìíîæåíèå
·
*
Äåëåíèå
/
/
Àðèôìåòè÷åñêèå îïåðàöèè ÷àùå âñåãî èñïîëüçóþòñÿ â îïåðàòîðàõ ïðèñâàèâàíèÿ. Îïåðàòîð ïðèñâàèâàíèÿ âûãëÿäèò êàê ðàâåíñòâî, â íåì èñïîëüçóåòñÿ çíàê «ðàâíî». Îïåðàöèè è îïåðàíäû ðàçìåùàþòñÿ ñïðàâà îò çíàêà «ðàâíî». Âûðàæåíèå ñïðàâà îò çíàêà «ðàâíî» âû÷èñëÿåòñÿ, è ðåçóëüòàò âû÷èñëåíèé çàïèñûâàåòñÿ â ïåðåìåííóþ ñëåâà îò çíàêà «ðàâíî». Âûðàæåíèå ñïðàâà îò çíàêà «ðàâíî» äîëæíî èìåòü çíà÷åíèå òîãî æå òèïà, ÷òî è ïåðåìåííàÿ ñëåâà îò çíàêà ðàâíî, èíà÷å êîä íå ñêîìïèëèðóåòñÿ. Âîò íåñêîëüêî ïðèìåðîâ èñïîëüçîâàíèÿ àðèôìåòè÷åñêèõ îïåðàöèé â îïåðàòîðàõ ïðèñâàèâàíèÿ: Dim FormWidth as Integer FormWidth = 200 + 300 Dim FormHeight as Integer FormHeight = 1000 / 2
Äàííûå ïðèìåðû î÷åíü ïðîñòûå â êàæäîì èç íèõ ïî äâà îïåðàíäà è îäíîé îïåðàöèè.  íàñòîÿùèõ ïðîãðàììàõ ÷àùå âñåãî âûïîëíÿþòñÿ ñëîæíûå ðàñ÷åòû, è íóæíî èñïîëüçîâàòü íåñêîëüêî îïåðàíäîâ è îïåðàöèé â êàæäîì îïåðàòîðå. Ê ñ÷àñòüþ, äëÿ áîëüøèíñòâà îïåðàöèé â îäíîì îïåðàòîðå ìîæíî èñïîëüçîâàòü ñòîëüêî îïåðàöèé, ñêîëüêî íóæíî. Êðîìå òîãî, â êà÷åñòâå îïåðàíäîâ ìîæíî èñïîëüçîâàòü ïåðåìåííûå. Îïåðàöèè ìîæíî âûïîëíÿòü è íàä ïåðå-
96
Ñêîáêè ìîæíî èñïîëüçîâàòü â îïåðàòîðàõ òî÷íî òàê æå, êàê â îáû÷íûõ ìàòåìàòè÷åñêèõ çàäà÷àõ. Òî, ÷òî íàõîäèòñÿ â ñêîáêàõ, âû÷èñëÿåòñÿ ïåðâûì. Ïðèìåð: (5+7)/(1+5)= 2 Çäåñü ñíà÷àëà âû÷èñëÿåòñÿ (5+7), ïîòîì (1+5), çàòåì âûïîëíÿåòñÿ äåëåíèå. Îòâåò ðàâåí 2. Áåç ñêîáîê ìû áû ïîëó÷èëè äðóãîé îòâåò: 5+7/1+5 = 17 Ñ ïîìîùüþ ñêîáîê âû ìîæåòå óêàçàòü ïðîãðàììå, â êàêîì ïîðÿäêå íóæíî âûïîëíÿòü âû÷èñëåíèÿ.
Ãëàâà 7 ìåííûìè åñëè ýòè ïåðåìåííûå ïîäõîäÿò ïî òèïó. À åùå ìîæíî çàïèñàòü â ïåðåìåííóþ çíà÷åíèå âûðàæåíèÿ, â êîòîðîì èñïîëüçóåòñÿ ñàìà ýòà ïåðåìåííàÿ. Äàâàéòå ðàçáåðåì áîëåå ñëîæíûå ïðèìåðû. Ïåðâûé ïðèìåð âû÷èñëÿåò äëèíó îêðóæíîñòè, åñëè èçâåñòåí äèàìåòð. Dim Circum As Single Dim Diameter As Integer Dim Pi As Single Pi = 3.14159 Diameter = 18 Circum = Diameter * Pi MessageBox.Show(Circum)
 ñëåäóþùåì ïðèìåðå âû÷èñëÿåòñÿ ñðåäíÿÿ öåíà áåíçèíà çà äâà ìåñÿöà ìàðò è àïðåëü. Îáðàòèòå âíèìàíèå íà ñêîáêè îíè èñïîëüçóþòñÿ, ÷òîáû ñëîæèòü öåíû è îáúåìû, ïðåæäå ÷åì äåëèòü. Dim MarchCost As Single = 809.6 Dim AprilCost As Single = 1661.55 Dim MarchLitres As Single = 50.6 Dim AprilLitres As Single = 100.7 Dim CostPerLitres As Single CostPerLitres = (MarchCost + AprilCost) /_ (MarchLitres + AprilLitres) MessageBox.Show(CostPerLitres)
 ïåðåìåííóþ ìîæíî çàïèñàòü çíà÷åíèå âûðàæåíèÿ, â êîòîðîì èñïîëüçóåòñÿ ýòà æå ïåðåìåííàÿ. Ïîñìîòðèòå íà ñëåäóþùèé ïðèìåð è ïîïûòàéòåñü îïðåäåëèòü, ÷òî áóäåò âûâåäåíî â îêíå ñîîáùåíèÿ. Dim MileCounter as Integer MileCounter = 100 MileCounter = MileCounter + 200 MileCounter = MileCounter + 400 MessageBox.Show(MileCounter)
 îêíå ñîîáùåíèÿ áóäåò âûâåäåíî 700, çíà÷åíèå ïåðåìåííîé MileCounter ïðè âûçîâå ýòîãî îêíà. Âîò ïî÷åìó ýòî ïîëó÷àåòñÿ. Ïåðâûå äâå ñòðîêè êîäà
Îïåðàöèè
97 îáúÿâëÿþò ïåðåìåííóþ MileCounter è çàäàþò åå íà÷àëüíîå çíà÷åíèå 100. Òðåòüÿ ñòðîêà êîäà áåðåò òåêóùåå çíà÷åíèå ïåðåìåííîé MileCounter (100) è ïðèáàâëÿåò ê íåìó 200 ïîëó÷àåòñÿ 300. Íå çàáûâàéòå, ïåðâîé âñåãäà âû÷èñëÿåòñÿ ïðàâàÿ ÷àñòü îïåðàòîðà ïðèñâàèâàíèÿ. Çàòåì ëåâîé ÷àñòè îïåðàòîðà ïðèñâàèâàíèÿ (MileCounter) ïðèñâàèâàåòñÿ çíà÷åíèå ïðàâîé ÷àñòè (300). ×åòâåðòàÿ ñòðîêà êîäà áåðåò òåêóùåå çíà÷åíèå ïåðåìåííîé MileCounter (òåïåðü 300) è äîáàâëÿåò ê íåìó 400, ïîëó÷àåòñÿ 700. Ýòî çíà÷åíèå ïðèñâàèâàåòñÿ MileCounter, îíî æå îòîáðàæàåòñÿ â îêíå ñîîáùåíèÿ. Äëÿ ëåâîé ÷àñòè îïåðàòîðà ïðèñâàèâàíèÿ íå âàæíî, êàê áûëî âû÷èñëåíî çíà÷åíèå ïðàâîé ÷àñòè, åñëè îíî ïîäõîäèò ïî òèïó. Ïîýòîìó MileCounter ìîæåò íàõîäèòüñÿ â ïðàâîé ÷àñòè îïåðàòîðà ïðèñâàèâàíèÿ òî÷íî òàê æå, êàê è ëþáàÿ äðóãàÿ ïåðåìåííàÿ. Ïðèñâàèâàíèå ïåðåìåííîé çíà÷åíèÿ âûðàæåíèÿ, ñîäåðæàùåãî ñàìó ýòó ïåðåìåííóþ, ýòî îáû÷íûé ïðèåì ïðîãðàììèðîâàíèÿ, ïîääåðæèâàåìûé âñåìè ÿçûêàìè .NET. Îí èçáàâëÿåò íàñ îò íåîáõîäèìîñòè èñïîëüçîâàòü äîïîëíèòåëüíóþ ïåðåìåííóþ äëÿ õðàíåíèÿ ïðîìåæóòî÷íîãî çíà÷åíèÿ. Êàê âèäíî èç ïðèìåðà, êîòîðûé ìû òîëüêî ÷òî ðàññìîòðåëè, ýòîò ïðèåì î÷åíü óäîáåí äëÿ ïîäñ÷åòîâ ñóììû íàáîðà ýëåìåíòîâ. Î÷åíü ÷àñòî âñòðå÷àåòñÿ ñòðîêà êîäà âèäà variable = variable + 1, èñïîëüçóåìàÿ äëÿ óâåëè÷åíèÿ íà 1 çíà÷åíèÿ ïåðåìåííîé. Îíà èñïîëüçóåòñÿ, íàïðèìåð, ïðè ïîäñ÷åòå êîëè÷åñòâà ïîâòîðåíèé â öèêëàõ.
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 7.1. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
ñîçäàòü ïðîåêò «Öåíà áåíçèíà-1», îïèñàííûé â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Öåíà_áåíçèíà-1.exe.
7.2. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET
ñîçäàòü ïðîåêò «Äèàìåòð îêðóæíîñòè», îïè-
98
Ãëàâà 7 ñàííûé â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Äèàìåòð_îêðóæíîñòè.exe.
7.3. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET ñîçäàòü ïðîåêò «Ïóòü», îïèñàííûé â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Ïóòü.exe.
7.4.  ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET ñîçäàòü ïðîåêò «Öåíà áåíçèíà-2», â êîòîðîì âû÷èñëÿåòñÿ öåíà áåíçèíà, íåîáõîäèìîãî äëÿ ïðåîäîëåíèÿ îïðåäåëåííîãî ðàññòîÿíèÿ, åñëè çàäàíû äëèíà ïðîáåãà â êèëîìåòðàõ, äëÿ êîòîðîé òðåáóåòñÿ ëèòð ãîðþ÷åãî, è öåíà ëèòðà ãîðþ÷åãî. Ñîçäàéòå ôîðìó, ðàçìåñòèâ íà íåé ñëåäóþùèå ýëåìåíòû óïðàâëåíèÿ: 1. ×åòûðå òåêñòîâûõ ïîëÿ, ÷òîáû ìîæíî áûëî îòîáðàæàòü: q ðàññòîÿíèå; äëèíó ïðîáåãà â êèëîìåòðàõ, äëÿ êîòîðîé òðåáóåòñÿ ëèòð ãîðþ÷åãî; q öåíó ëèòðà ãîðþ÷åãî; q ñòîèìîñòü áåíçèíà. 2. ×åòûðå íàäïèñè äëÿ îïèñàíèÿ òåêñòîâûõ ïîëåé. 3. Êíîïêó, ïðè íàæàòèè êîòîðîé áóäåò íà÷èíàòüñÿ âû÷èñëåíèå. q
Äëÿ ïðåîáðàçîâàíèÿ çíà÷åíèé ñòðîêîâîãî òèïà, ââîäèìûõ â òåêñòîâûå ïîëÿ, â ÷èñëà èñïîëüçîâàòü ôóíêöèþ Val(). Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Öåíà_áåíçèíà_2.exe.
7.2. Ñòðîêîâûå îïåðàöèè Íå âî âñåõ ïðîãðàììàõ çàäà÷à ñâîäèòñÿ òîëüêî ê âû÷èñëåíèÿì, èíîãäà ïðîãðàììå íóæíî ðàáîòàòü ñ òåêñòîâûìè ñòðîêàìè. Âû çíàåòå, ÷òî â Visual Basic .NET è äðóãèõ ÿçûêàõ ïðîãðàììèðîâàíèÿ ìîæíî
Îïåðàöèè
 ÿçûêàõ C# è J# àìïåðñåíä (&) íå èñïîëüçóåòñÿ äëÿ ñîåäèíåíèÿ òåêñòîâûõ ñòðîê. Èñïîëüçóåòñÿ ïëþñ (+). Ïîñìîòðèòå íà ñëåäóþùóþ ñòðîêó êîäà: fullName = "Bill " + "Bob";
99 «ñêëàäûâàòü» òåêñò? Íà ñàìîì äåëå ýòî íå òî æå ñàìîå ñëîæåíèå, ÷òî è äëÿ ÷èñåë. «Ñëîæåíèå» òåêñòîâûõ ñòðîê íàçûâàåòñÿ êîíêàòåíàöèåé ýòî òåõíè÷åñêèé òåðìèí, îáîçíà÷àþùèé ñîåäèíåíèå äâóõ ñòðîê.  Visual Basic .NET îïåðàöèÿ êîíêàòåíàöèè çàäàåòñÿ ñ ïîìîùüþ çíàêîâ «àìïåðñåíä» (&) èëè «ïëþñ» (+). Îíè èñïîëüçóþòñÿ òî÷íî òàê æå, êàê îïåðàöèÿ ñëîæåíèÿ, íî ñî ñòðîêàìè, à íå ñ ÷èñëàìè. Âîò ïðèìåðû èñïîëüçîâàíèÿ îïåðàöèè êîíêàòåíàöèè: "Bill" & "Mike "1" & "2" "Bill" + "Mike "1" + "2"
Ñîåäèíÿÿ òåêñòîâûå ñòðîêè ñ ïîìîùüþ îïåðàöèè êîíêàòåíàöèè, Visual Basic. NET íå âñòàâëÿåò ìåæäó ñòðîêàìè ïðîáåëû. Âû äîëæíû óêàçàòü â êîäå, íóæíî ëè äîáàâëÿòü ïðîáåëû. Ýòî ìîæíî ñäåëàòü äâóìÿ ñïîñîáàìè: "Bill" & " " & "Mike"
èëè "Bill " & "Mike"
Âîò ïðèìåð èñïîëüçîâàíèÿ îïåðàöèè êîíêàòåíàöèè â îïåðàòîðå ïðèñâàèâàíèÿ: Dim MyName as String MyName = "Èìÿ" & "Ôàìèëèÿ"
Âîò ïðèìåð, âûïîëíÿþùèé êîíêàòåíàöèþ ñòðîêîâûõ ïåðåìåííûõ è âûâîäÿùèé ðåçóëüòàòû â òåêñòîâîå ïîëå: Dim FirstName As String Dim LastName As String FirstName = "Bob" LastName = "Marley" TextBox1.Text = FirstName & " " & LastName
100
Ãëàâà 7 Âû çàìåòèëè, êàê ïðîãðàììå íà Visual Basic .NET áûëî ïðèêàçàíî âñòàâèòü ïðîáåë ìåæäó çíà÷åíèÿìè FirstName è LastName?
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 7.5. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
ñîçäàòü ïðîåêò «Èìÿ, ôàìèëèÿ», îïèñàííûé â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Èìÿ_ôàìèëèÿ. exe.
7.3. Ëîãè÷åñêèå îïåðàöèè  ñîñòàâ ëîãè÷åñêèõ âûðàæåíèé ìîãóò âõîäèòü ëîãè÷åñêèå ïåðåìåííûå, ëîãè÷åñêèå çíà÷åíèÿ, îïåðàòîðû ñðàâíåíèÿ, à òàêæå ëîãè÷åñêèå îïåðàöèè. Ëîãè÷åñêèå âûðàæåíèÿ ìîãóò ïðèíèìàòü ëèøü äâà çíà÷åíèÿ True (Èñòèíà) èëè False (Ëîæü). Îïåðàòîðû ñðàâíåíèÿ =, , , = ñðàâíèâàþò âûðàæåíèå â ëåâîé ÷àñòè îïåðàòîðà ñ âûðàæåíèåì â ïðàâîé ÷àñòè îïåðàòîðà è ïðåäñòàâëÿþò ðåçóëüòàò â âèäå ëîãè÷åñêîãî çíà÷åíèÿ True èëè False. Ïðèìåðû: 5 > 3 = True "A" = "B" = False
Íàä ýëåìåíòàìè ëîãè÷åñêèõ âûðàæåíèé ìîãóò ïðîèçâîäèòüñÿ ëîãè÷åñêèå îïåðàöèè, êîòîðûå íà ÿçûêå Visual Basic îáîçíà÷àþòñÿ ñëåäóþùèì îáðàçîì: ëîãè÷åñêîå óìíîæåíèå And, ëîãè÷åñêîå ñëîæåíèå Or è ëîãè÷åñêîå îòðèöàíèå Not. Ïðè çàïèñè ñëîæíûõ ëîãè÷åñêèõ âûðàæåíèé èñïîëüçóþòñÿ ñêîáêè. Ïðèìåðû: (5 > 3) And ("A" = "B") = False (5 > 3) Or ("A" = "B") = True Not (5 > 3) = False
Îïåðàöèè
 ÿçûêå C# âìåñòî îïåðàòîðà Not èñïîëüçóåòñÿ âîñêëèöàòåëüíûé çíàê (!). Âîò ïðèìåð åãî èñïîëüçîâàíèÿ â êîäå íà C#: textBox3.Visible = !(textBox1.Visible);
101 Îïåðàöèÿ Not (Íå) ýòî ñïåöèàëüíàÿ îïåðàöèÿ, îáðàáàòûâàþùàÿ òîëüêî îäèí îïåðàíä. Êðîìå òîãî, îïåðàíä äîëæåí áûòü áóëåâûì çíà÷åíèåì (True (Èñòèíà) èëè False (Ëîæü)). Îïåðàòîð Not èçìåíÿåò çíà÷åíèå False íà True èëè çíà÷åíèå True íà False. Ïîñìîòðèòå íà ñëåäóþùèå ïðèìåðû. Not (True) Not (Not (True))
Âðÿä ëè âàì ìîæåò ïîíàäîáèòüñÿ ïîñëåäíåå âûðàæåíèå, íî îíî òîæå ïðàâèëüíîå! Ñëåäóþùèé ïðèìåð äåìîíñòðèðóåò, êàê èñïîëüçîâàòü îïåðàöèþ Not, ÷òîáû ñäåëàòü ïåðâîíà÷àëüíî âèäèìûìè, à çàòåì íåâèäèìûìè òåêñòîâûå ïîëÿ. Íå çàáûâàéòå, îïåðàöèÿ Not ðàáîòàåò ñ áóëåâûìè ïåðåìåííûìè (ïåðåìåííûìè òèïà Boolean). TextBox1.Visible = True TextBox2.Visible = True
è TextBox1.Visible = Not True TextBox2.Visible = Not True
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 7.6. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
ñîçäàòü ïðîåêò «Ëîãèêà», îïèñàííûé â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Ëîãèêà.exe.
7.4. Îòëàäêà êîäà Âû ìíîãîãî äîñòèãëè! Âû ñîçäàëè, ïîñòðîèëè è çàïóñòèëè ìíîæåñòâî ïðîåêòîâ. Âîçìîæíî, íå âñå âàøè ïðîåêòû ñêîìïèëèðîâàëèñü ñ ïåðâîé ïîïûòêè, íî âû, âåðîÿòíî, óæå íàó÷èëèñü ïîíèìàòü, â ÷åì îøèáêè â âàøåì êîäå, è êàê ýòè îøèáêè èñïðàâëÿòü. Ðàññìîòðèì, êàê èñïîëüçîâàòü ñïåöèàëüíûå èíñòðóìåíòû äëÿ ïîèñêà îøèáîê. Èñïðàâëåíèå îøèáîê â êîäå íàçûâàåòñÿ îòëàäêîé. Îòëàäêà íåîáõîäèìûé øàã äëÿ ïîëó÷åíèÿ ïðîãðàìì, ðàáîòàþùèõ áåç îøèáîê è
102
Ãëàâà 7 âûäàþùèõ ïðàâèëüíûå ðåçóëüòàòû. Ñíà÷àëà âû óâèäèòå, êàê Visual Studio ïîìîãàåò îòëàæèâàòü êîä åùå ïðè åãî íàïèñàíèè.
1. Ñîçäàéòå íîâîå ïðèëîæåíèå Windows, íàçî-
âèòå åãî «Îòëàäêà». Äîáàâüòå íà ôîðìó Form1 îäíó êíîïêó è îäíî òåêñòîâîå ïîëå. Âûïîëíèòå äâîéíîé ùåë÷îê ïî êíîïêå Button1 è ââåäèòå ñëåäóþùèé êîä: MyName = "Bill" TextBox1.Text = MyName
2. Îáðàòèòå âíèìàíèå, ÷òî åùå äî ïîñòðîåíèÿ
ïðîåêòà Visual Studio .NET ïîä÷åðêíåò MyName â ïåðâîé è âòîðîé ñòðîêàõ âîëíèñòîé ñèíåé ëèíèåé. Ýòî îçíà÷àåò, ÷òî ïåðåìåííàÿ MyName íå îáúÿâëåíà. Ñèíÿÿ ëèíèÿ ïðåäóïðåæäàåò âàñ, ÷òî â êîäå ÷òî-òî íåïðàâèëüíî, åùå äî òîãî, êàê âû ïîïûòàåòåñü åãî ñêîìïèëèðîâàòü.
3. Ïîïûòàéòåñü ïîñòðîèòü ïðîåêò.  îêíå Âûâîä (Output) ïîÿâèòñÿ ñîîáùåíèå, ÷òî ïîñòðîåíèå âûïîëíèòü íå óäàëîñü.  ñïèñêå çàäàíèé Ñïèñîê çàäà÷ (Task List) áóäåò ñîîáùåíî, ïî÷åìó ïîñòðîåíèå íå óäàëîñü. Âû óâèäèòå â ýòîì ñïèñêå äâå ñòðîêè, ñîîáùàþùèå, ÷òî èìÿ MyName íå îáúÿâëåíî.
Îïåðàöèè
103 4. Âûïîëíèòå äâîéíîé ùåë÷îê ïî ïåðâîìó ñîîáùåíèþ â ñïèñêå Ñïèñîê çàäà÷ (Task List).  êîäå êóðñîð ïåðåìåñòèòñÿ â òî ìåñòî, â êîòîðîì îáíàðóæåíà îøèáêà.
5. Çàìåòüòå, ÷òî èìÿ MyName ïîäñâå÷åíî
èìåííî â íåì è çàêëþ÷àåòñÿ ïðîáëåìà, êîòîðóþ íóæíî ðåøèòü. Äîáàâüòå â îáðàáîò÷èê ñëåäóþùóþ ñòðîêó êîäà (ïåðåä íàïèñàííûìè ðàíåå): Dim MyName As String Âîëíèñòûå ñèíèå ëèíèè èñ÷åçíóò.
6. Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Îí ñêîìïèëèðóåòñÿ áåç îøèáîê. Âû óñïåøíî îòëàäèëè ïðîãðàììó.
Ïîøàãîâîå âûïîëíåíèå êîäà. Visual Studio .NET íå ìîæåò ñàìîñòîÿòåëüíî îáíàðóæèòü íåêîòîðûå îøèáêè â êîäå. Ïðîãðàììà ìîæåò ñêîìïèëèðîâàòüñÿ, íî ðåçóëüòàòû åå ðàáîòû áóäóò íåïðàâèëüíûìè. Ýòî ïðîèñõîäèò, åñëè îøèáêè èìåþòñÿ â ëîãèêå ðàáîòû ïðîãðàììû, à íå â ñèíòàêñèñå.  òàêèõ ñëó÷àÿõ áûâàåò ïîëåçíî ïîøàãîâî âûïîëíèòü êîä, ñòðîêó çà ñòðîêîé, ÷òîáû óâèäåòü, êàê îí âûïîëíÿåòñÿ è êàêîâû ðåçóëüòàòû åãî âûïîëíåíèÿ. Îáû÷íî â êîäå çàäàåòñÿ òî÷êà îñòàíîâà, à çàòåì, íà÷èíàÿ ñ ýòîé òî÷êè, êîä âûïîëíÿåòñÿ ïîøàãîâî. Òî÷êà îñòàíîâà ñëóæèò çíàêîì îñòàíîâêè âûïîëíåíèå ïðåðûâàåòñÿ â ñòðîêå êîäà, êîòîðóþ âû ïîìåòèëè òî÷êîé îñòàíîâà. Íàæèìàéòå êíîïêó {F11} äëÿ âûïîëíåíèÿ ïî î÷åðåäè êàæäîé ñòðîêè êîäà.
104
Ãëàâà 7 1. Íàéäèòå â îáðàáîò÷èêå íàæàòèÿ êíîïêè
Button1 ñëåäóþùóþ ñòðîêó: MyName = "Bill" Ïîìåñòèòå êóðñîð â ýòó ñòðîêó. Ùåëêíèòå ïî íåé ïðàâîé êíîïêîé ìûøè è âûáåðèòå â ïîÿâèâøåìñÿ ìåíþ ïóíêò Âñòàâèòü òî÷êó îñòàíîâà (Insert Breakpoint).
2. Ñòðîêà áóäåò âûäåëåíà êîðè÷íåâûì öâåòîì, è
ðÿäîì ñ íåé íà ïîëå ïîÿâèòñÿ êîðè÷íåâûé êðóæîê. Ïîñòðîéòå è çàïóñòèòå ïðîãðàììó. Êîãäà ôîðìà çàãðóçèòñÿ, íàæìèòå êíîïêó íà íåé.
3. Íà÷íåò âûïîëíÿòüñÿ îáðàáîò÷èê. Êîãäà âû-
ïîëíåíèå äîéäåò äî ñòðîêè, â êîòîðóþ âû ïîìåñòèëè òî÷êó îñòàíîâà (MyName = "Bill"), âûïîëíåíèå ïðåðâåòñÿ. Ýòà ñòðîêà êîäà åùå íå âûïîëíèëàñü. Îíà âûäåëåíà æåëòûì öâåòîì, è â êîðè÷íåâîì êðóæêå ðÿäîì ñ íåé òåïåðü ïîêàçàíà æåëòàÿ ñòðåëêà.
Îïåðàöèè
105 4. Â ðåäàêòîðå êîäà ïîäâåäèòå êóðñîð ê ïåðå-
ìåííîé MyName. Ïîÿâèòñÿ ïîäñêàçêà, ïîêàçûâàþùàÿ çíà÷åíèå ýòîé ïåðåìåííîé. Ïîêà ÷òî â íåé íåò íè÷åãî (MyName = Nothing), ïîòîìó ÷òî ïåðåìåííàÿ áûëà îáúÿâëåíà, íî åé íå ïðèñâàèâàëîñü çíà÷åíèå.
5. Â ðåäàêòîðå êîäà ïîäâåäèòå êóðñîð ê ñâîéñò-
âó Text ýëåìåíòà TextBox1. Ïîÿâèòñÿ ïîäñêàçêà, ñîîáùàþùàÿ âàì çíà÷åíèå ñâîéñòâà Text.  äàííûé ìîìåíò Text = TextBox1.
6. Íàæìèòå êëàâèøó {F11}. Ïðè ýòîì âûïîëíèò-
ñÿ òåêóùàÿ ñòðîêà êîäà (MyName = "Bill"), è áóäåò âûäåëåíà æåëòûì ñëåäóþùàÿ.  ðåäàêòîðå êîäà ïîäâåäèòå êóðñîð ê èìåíè ïåðåìåííîé MyName â ñòðîêå MyName = "Bill". Ïîäñêàçêà ñîîáùèò, ÷òî MyName = "Bill", ïîñêîëüêó ýòîé ïåðåìåííîé òîëüêî ÷òî áûëî ïðèñâîåíî çíà÷åíèå.
106
Ãëàâà 7 7.  ðåäàêòîðå êîäà ïîäâåäèòå êóðñîð ê ñâîéñòâó Text ýëåìåíòà TextBox1. Ïîäñêàçêà ñîîáùèò, ÷òî Text = TextBox1. Ýòî çíà÷åíèå íå èçìåíèëîñü.
8. Åùå ðàç íàæìèòå êëàâèøó {F11}. Ñòðîêà
êîäà áóäåò âûïîëíåíà, è ñëåäóþùàÿ ñòðîêà âûäåëèòñÿ æåëòûì öâåòîì. Ïîäâåäèòå êóðñîð ìûøè ê èìåíè ïåðåìåííîé MyName â ñòðîêå MyName = Bill. Ïîäñêàçêà ñîîáùèò, ÷òî MyName = "Bill", ïîñêîëüêó çíà÷åíèå ýòîé ïåðåìåííîé íå èçìåíÿëîñü.
9. Â ðåäàêòîðå êîäà ïîäâåäèòå êóðñîð ê ñâîéñò-
âó Text ýëåìåíòà TextBox1. Ïîäñêàçêà ñîîáùèò, ÷òî Text = "Bill", ïîñêîëüêó ìû òîëüêî ÷òî ïðèñâîèëè ýòîìó ñâîéñòâó çíà÷åíèå ïåðåìåííîé MyName.
Åùå ðàç íàæìèòå êëàâèøó {F11}. Îïÿòü ïîÿâèòñÿ ôîðìà, ïîñêîëüêó îáðàáîò÷èê çàêîí÷èë âûïîëíÿòüñÿ. Íàæìèòå êíîïêó ñî çíà÷êîì â óãëó ôîðìû, ÷òîáû çàêðûòü åå.
Îïåðàöèè
107 10. Â ðåäàêòîðå êîäà ùåëêíèòå ïðàâîé êíîïêîé
â íà÷àëå ñòðîêè ñ òî÷êîé îñòàíîâà. Èç ïîÿâèâøåãîñÿ êîíòåêñòíîãî ìåíþ âûáåðèòå ïóíêò Óäàëèòü òî÷êó îñòàíîâà (Remove Breakpoint), ÷òîáû óäàëèòü òî÷êó îñòàíîâà.
Âû çàêîí÷èëè ñåàíñ îòëàäêè. Î÷åíü óäîáíî èìåòü âîçìîæíîñòü âûïîëíÿòü êîä øàã çà øàãîì. Ìîæíî îòñëåäèòü ðàáîòó ñâîåé ïðîãðàììû. Èíîãäà ìîæíî òàêèì îáðàçîì îáíàðóæèòü, ÷òî âû ñëó÷àéíî óêàçàëè ïðîãðàììå âûïîëíÿòü êîä íå â òîì ïîðÿäêå, â êàêîì íóæíî, èëè èñïîëüçîâàëè â îïåðàòîðå ïðèñâàèâàíèÿ íå òó ïåðåìåííóþ. Ïîøàãîâîå âûïîëíåíèå ïðîãðàììû ïîçâîëÿåò îïðåäåëèòü, ãäå èìåííî ïðîãðàììà íà÷èíàåò ðàáîòàòü íåïðàâèëüíî. Âûïîëíÿÿ ñòðîêè êîäà, ìîæíî îòñëåæèâàòü çíà÷åíèÿ ñâîéñòâ è ïåðåìåííûõ, ïîäâîäÿ ê íèì êóðñîð ìûøè â îêíå ðåäàêòîðà êîäà. Ýòè çíà÷åíèÿ îáíîâëÿþòñÿ ïðè âûïîëíåíèè ñòðîê êîäà. Ðàññìîòðåííûå ìåòîäèêè îòëàäêè ñòàíîâÿòñÿ âåñüìà ïîëåçíûìè, êîãäà êîä ñòàíîâèòñÿ ñëîæíûì. Ñëîæíûé êîä ñëîæíåå îòëàæèâàòü. Ñêîðî âû óçíàåòå, êàê óïðàâëÿòü ïîðÿäêîì âûïîëíåíèÿ êîäà ñ ïîìîùüþ îïåðàòîðîâ âåòâëåíèÿ è öèêëîâ. Îòëàäî÷íûå èíñòðóìåíòû íåçàìåíèìû äëÿ îòñëåæèâàíèÿ âûïîëíåíèÿ ýòèõ îïåðàòîðîâ â ïðîãðàììàõ.
108
Ãëàâà 7 Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 7.7. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET
Microsoft-CD
ïîòðåíèðîâàòüñÿ â èñïîëüçîâàíèè íàâûêîâ îòëàäêè íà ïðèìåðå ïðîåêòà «Îòëàäêà». Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Îòëàäêà.exe. Âû äîëæíû çàïèñàòü â òåêñòîâîì ôàéëå, â äîêóìåíòå Word èëè ïðîñòî íà áóìàãå, îòâåòû íà òðè âîïðîñà: 1. Êàêîå çíà÷åíèå âû ââåëè â òåêñòîâîå ïîëå íà ôîðìå? 2. Êàêîå êîíå÷íîå çíà÷åíèå ó ïåðåìåííîé AnswerOne? 3. Êàêîå êîíå÷íîå çíà÷åíèå ó ïåðåìåííîé AnswerTwo? Êîä â ôîðìå íàìåðåííî ñäåëàí çàïóòàííûì è ñëîæíûì, ÷òîáû âû íå ïûòàëèñü óãàäàòü, êàê ïðîãðàììà ïîëó÷àåò îòâåòû. Ïîìåñòèòå òî÷êó îñòàíîâà â êîäå è îòñëåæèâàéòå åãî âûïîëíåíèå øàã çà øàãîì. ×òîáû óçíàòü çíà÷åíèå ïåðåìåííîé, ïîäâåäèòå ê íåé êóðñîð ìûøè ïîñëå òîãî, êàê ñòðîêà êîäà âûïîëíèòñÿ.
7.8.  ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET ñîçäàòü ïðîåêò äëÿ âû÷èñëåíèÿ îáúåìîâ êóáà è ñôåðû. Ñîçäàéòå ôîðìó âðîäå ýòîé:
Îïåðàöèè
109 Äëèíà ðåáðà êóáà ââîäèòñÿ â ïåðâîì òåêñòîâîì ïîëå, à ðàäèóñ ñôåðû âî âòîðîì. Èç êóðñà ãåîìåòðèè âîçüìåì ôîðìóëû äëÿ âû÷èñëåíèé: q Îáúåì êóáà ýòî äëèíà åãî ðåáðà â òðåòüåé ñòåïåíè (óìíîæåííàÿ ñàìà íà ñåáÿ 3 ðàçà). q
Îáúåì ñôåðû ýòî äðîáü 4/3, óìíîæåííàÿ íà ÷èñëî π è íà ðàäèóñ â òðåòüåé ñòåïåíè.  êà÷åñòâå çíà÷åíèÿ π ìîæíî èñïîëüçîâàòü 3,14 èëè Math.PI.
Äîïîëíèòåëüíîå çàäàíèå. Ñìîæåòå ëè âû ïîäîáðàòü òàêèå çíà÷åíèÿ äëèíû ðåáðà è ðàäèóñà, êîòîðûå äàâàëè áû îäèíàêîâûå îáúåìû, õîòÿ áû ñ òî÷íîñòüþ â 4 äåñÿòè÷íûõ ðàçðÿäà? Åñëè âû õîðîøî ðàçáèðàåòåñü â ìàòåìàòèêå, ìîæåòå ïîïðîáîâàòü äîáàâèòü íà ôîðìó åùå îäíó ÷àñòü, êîòîðàÿ âû÷èñëÿåò äëèíó ðåáðà êóáà è ðàäèóñ ñôåðû ïî çàäàííûì îáúåìàì.
Òåñò ïî òåìå «Îïåðàöèè» 1.
×òî èñïîëüçóåòñÿ äëÿ èçìåíåíèÿ ïîðÿäêà âûïîëíåíèÿ îïåðàöèé? m
Ñêîáêè
m
Òî÷êè
m
Àìïåðñåíäû
m
Ïëþñû
2.
Êàêàÿ îïåðàöèÿ èñïîëüçóåòñÿ äëÿ êîíêàòåíàöèè ñòðîê? m
And
m
Not
m
&
m
=
3.
Êàêèì áóäåò ðåçóëüòàò îïåðàöèè Variable = "5" & "5"? m
55
m
10
m
25
m
5
4.
Ðåçóëüòàòîì êàêîé ëîãè÷åñêîé îïåðàöèè ÿâëÿåòñÿ True? m
2 * 2 = 5
m
Not (3 * 3 = 9)
m
2 * 2 = 5 And 3 * 3 = 9
m
2 * 2 = 5 Or 3 * 3 = 9
Ãëàâà 8
Âåòâëåíèå: íåïîëíàÿ ôîðìà 8.1. Áóëåâà ëîãèêà 8.2. Îïåðàöèè ñðàâíåíèÿ 8.3. Îïåðàòîð If...Then 8.4. Ìíîæåñòâåííûå óñëîâèÿ 8.5. Áóëåâû îïåðàöèè â êîäå
 1994 ãîäó íà îñíîâå ñèñòåìû ïðîãðàììèðîâàíèÿ Visual Basic áûëà ñîçäàíà ñèñòåìà ïðîãðàììèðîâàíèÿ äëÿ ïðèêëàäíûõ ïðîãðàìì, êîòîðàÿ ïîëó÷èëà íàçâàíèå Visual Basic for Applications (VB äëÿ ïðèëîæåíèé). Ïåðâûé âàðèàíò VBA 1.0 ïîÿâèëñÿ â ñîñòàâå MS Office 4.0, à â ñîñòàâ MS Office 2000 âîøëà ñèñòåìà VBA 6.0, êîòîðàÿ èñïîëüçóåòñÿ â øåñòè ïðèëîæåíèÿõ Word, Excel, PowerPoint, Access, Outlook è Frontpage.
112
Ãëàâà 8
8.1. Áóëåâà ëîãèêà Êîìïüþòåðíûå ïðîãðàììû õîðîøî óìåþò èñïîëüçîâàòü áóëåâó ëîãèêó.  ýòîé ëîãèêå îòâåòû íà âñå âîïðîñû âñåãäà èëè «äà» (True) èëè «íåò» (False) íåò íèêàêèõ «âîçìîæíî», «ïîõîæå» èëè «ïî÷òè». Âîò íåñêîëüêî ïðèìåðîâ åå èñïîëüçîâàíèÿ. 4 = 4 4 äåéñòâèòåëüíî ðàâíî 4? Äà, True. 3 = 1 + 3 3 äåéñòâèòåëüíî ðàâíî 1 + 3? Íåò, False. 3 = (6 + 12)/(1 + 5) 3 äåéñòâèòåëüíî ðàâíî (6 + 12)/(1 + 5)? Äà, True. Êàê âèäèòå, â êàæäîì ïðèìåðå îòâåò èëè «äà», èëè «íåò». Èìåííî òàê ïðîãðàììà ïðèíèìàåò ðåøåíèÿ. Åñëè îòâåò «äà» (True), ïðîãðàììà äåëàåò îäíî. Åñëè îòâåò «íåò» (False) äðóãîå. Êàê è â ìàòåìàòèêå, â áóëåâîé ëîãèêå åñòü ñâîè îïåðàöèè. Íî ýòè îïåðàöèè ðàáîòàþò íå ñ ÷èñëàìè, à òîëüêî ñ áóëåâûìè îïåðàíäàìè, ò. å. ñî çíà÷åíèÿìè True è False. Îíè ïîçâîëÿþò îáðàáàòûâàòü çíà÷åíèÿ True è False ñïåöèàëüíûìè ñïîñîáàìè. Ñ èõ ïîìîùüþ ìîæíî îáúåäèíÿòü áóëåâû âûðàæåíèÿ, ñîñòàâëÿÿ áîëåå ñëîæíûå âûðàæåíèÿ. Åñòü òðè áóëåâûõ (ëîãè÷åñêèõ) îïåðàöèè: AND, OR è NOT. Îïåðàöèè AND è OR îáðàáàòûâàþò äâà îïåðàíäà. Îïåðàöèÿ NOT îáðàáàòûâàåò îäèí îïåðàíä. Âñå ýòè îïåðàöèè âîçâðàùàþò ðåçóëüòàò áóëåâîãî òèïà (Boolean). Ó êàæäîé èç ýòèõ îïåðàöèé åñòü ïðàâèëà, îïðåäåëÿþùèå åå ðåçóëüòàò â çàâèñèìîñòè îò çíà÷åíèé îïåðàíäîâ. Äàâàéòå ïîñìîòðèì íà íåñêîëüêî áóëåâûõ çàäà÷, èñïîëüçóþùèõ ýòè îïåðàöèè, ÷òîáû ïîíÿòü, êàê ðàáîòàþò îïåðàöèè.
Âåòâëåíèå: íåïîëíàÿ ôîðìà
113
Îïåðàöèÿ ëîãè÷åñêîãî óìíîæåíèÿ AND 3 = 1 + 2 AND 2 = 1 + 1 Ðåçóëüòàò True. Çäåñü ó íàñ åñòü äâà óòâåðæäåíèÿ, îáúåäèíåííûõ îïåðàöèåé AND. Ñíà÷àëà ìû âû÷èñëÿåì âûðàæåíèå 3=1+2. Îíî ïðàâèëüíî, ò. å. True. Ïîòîì âû÷èñëÿåì âûðàæåíèå 2=1+1, êîòîðîå òîæå ïðàâèëüíî True. Çàòåì ìû ïðîâåðÿåì âûðàæåíèå True AND True, êîòîðîå ïî ïðàâèëàì âûïîëíåíèÿ îïåðàöèè AND òîæå äàåò îòâåò True: åñëè îáà îïåðàíäà îïåðàöèè AND ðàâíû True, òî îòâåò ýòîé îïåðàöèè òîæå True. 3 = 1 + 2 AND 5 = 2 + 2 Ðåçóëüòàò False. Îïÿòü ó íàñ åñòü äâà âûðàæåíèÿ, îáúåäèíåííûõ îïåðàöèåé AND. Ñíà÷àëà ìû âû÷èñëÿåì 3=1+2, ïîëó÷àÿ ðåçóëüòàò True. Çàòåì âû÷èñëÿåì 5=2+2 ðàâåíñòâî íå âûïîëíÿåòñÿ, çíà÷èò, ðåçóëüòàò False. Çàòåì âû÷èñëÿåì âûðàæåíèå True AND False, êîòîðîå ïî ïðàâèëàì îïåðàöèè AND äàñò ðåçóëüòàò False: åñëè õîòÿ áû îäèí îïåðàíä îïåðàòîðà AND ðàâåí False, ðåçóëüòàò âûïîëíåíèÿ îïåðàöèè áóäåò òîæå False. Âàì ïîíàäîáèòñÿ íåêîòîðîå âðåìÿ, ÷òîáû çàïîìíèòü ïðàâèëà âûïîëíåíèÿ ëîãè÷åñêèõ îïåðàöèé, íî ïîñòåïåííî âû ê íèì ïðèâûêíåòå. Ê ñ÷àñòüþ, ìîæíî ïåðå÷èñëèòü âñå âîçìîæíûå ñî÷åòàíèÿ îïåðàíäîâ îïåðàöèè AND â ïðîñòîé òàáëèöå. Èõ íå îáÿçàòåëüíî çàïîìèíàòü; ìîæåòå ïðîñòî îáðàùàòüñÿ ê ýòîé òàáëèöå, êîãäà âàì áóäåò íóæíî. Ëåâûé îïåðàíä
Ïðàâûé îïåðàíä
Ëåâûé îïåðàíä AND ïðàâûé îïåðàíä (ðåçóëüòàò îïåðàöèè)
True
True
True
True False False
False True False
False False False
114
Ãëàâà 8 Îïåðàöèÿ ëîãè÷åñêîãî ñëîæåíèÿ OR 3 = 1 + 2 OR 5 = 2 + 2 Ðåçóëüòàò True. Ñíà÷àëà ìû âû÷èñëÿåì 3=1+2, ðåçóëüòàò True. Çàòåì âû÷èñëÿåì 5=2+2, ðåçóëüòàò False. Çàòåì âû÷èñëÿåì True OR False. Ñîãëàñíî ïðàâèëàì îïåðàöèè OR ìû ïîëó÷èì ðåçóëüòàò True: åñëè õîòÿ áû îäèí îïåðàíä îïåðàöèè OR ðàâåí True, òî ðåçóëüòàò îïåðàöèè òîæå True. Âñå âîçìîæíûå ñî÷åòàíèÿ îïåðàíäîâ äëÿ îïåðàöèè OR ïåðå÷èñëåíû â òàáëèöå: Ëåâûé îïåðàíä
Ïðàâûé îïåðàíä
Ëåâûé îïåðàíä OR ïðàâûé îïåðàíä (ðåçóëüòàò îïåðàöèè)
True
True
True
True False False
False True False
True True False
Îïåðàöèÿ ëîãè÷åñêîãî îòðèöàíèÿ NOT Îïåðàöèÿ NOT îáðàáàòûâàåò òîëüêî îäèí îïåðàíä. Îíà ïðîñòî ïðåîáðàçóåò çíà÷åíèå False â True, à çíà÷åíèå True â False. Âîò ïðèìåðû èñïîëüçîâàíèÿ îïåðàöèè NOT. NOT(3 = 1 + 2) Ðåçóëüòàò False. 3 = 1 + 2 ðåçóëüòàò True. NOT True ðåçóëüòàò False. NOT(5 = 2 + 2) Ðåçóëüòàò True. 5 = 2 + 2 ðåçóëüòàò False. NOT False ðåçóëüòàò True. Îïåðàíä
NOT îïåðàíä (ðåçóëüòàò îïåðàöèè)
True
False
False
True
Âåòâëåíèå: íåïîëíàÿ ôîðìà
115
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 8.1. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
ñîçäàòü ïðîåêò «Ëîãè÷åñêèå îïåðàöèè», êîòîðûé ñòðîèò òàáëèöû èñòèííîñòè ëîãè÷åñêèõ îïåðàöèé. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Ëîãè÷åñêèå_ îïåðàöèè.exe.
8.2. Îïåðàöèè ñðàâíåíèÿ Êîìïüþòåðû ìîãóò ðåøàòü î÷åíü ñëîæíûå ëîãè÷åñêèå (áóëåâû) çàäà÷è, íî îíè íå óìåþò èõ ñîñòàâëÿòü. Ýòî äîëæíû äåëàòü ïðîãðàììèñòû, êîòîðûå ñîçäàþò ïðîãðàììû, ðåøàþùèå ëîãè÷åñêèå çàäà÷è. Êîãäà êîä âûïîëíÿåòñÿ, ïðîãðàììà ðåøàåò çàäà÷ó. Îòâåòîì áóäåò True èëè False. Ïðîãðàììà «ïðèíèìàåò ðåøåíèÿ», â çàâèñèìîñòè îò òîãî, âûïîëíÿþòñÿ êàêèå-òî óñëîâèÿ (True) èëè íå âûïîëíÿþòñÿ (False). Âû óæå çíàåòå, ÷òî çíàê «ðàâíî» îáîçíà÷àåò îïåðàöèþ ïðèñâàèâàíèÿ, íî îí ìîæåò îáîçíà÷àòü è îïåðàöèþ ñðàâíåíèÿ.  ïðèìåðàõ, êîòîðûå ìû ðàññìîòðåëè ðàíüøå, çíàê «ðàâíî» çàäàåò âîïðîñ «Ðàâíà ëè ëåâàÿ ñòîðîíà ïðàâîé? Äà èëè íåò, True èëè False?» Åñòü è äðóãèå îïåðàöèè ñðàâíåíèÿ, ïîçâîëÿþùèå âûÿñíèòü, áîëüøå ëåâàÿ ñòîðîíà ïðàâîé (>) èëè ìåíüøå ( 5 Çàäàåòñÿ âîïðîñ: 2 áîëüøå, ÷åì 5? Íåò, False. Âîò ñïèñîê ÷àñòî èñïîëüçóåìûõ îïåðàöèé ñðàâíåíèÿ:
116
Ãëàâà 8 Îïåðàöèÿ ñðàâíåíèÿ
Çíà÷åíèå
Âîïðîñ
=
Ðàâíî
>
Áîëüøå
=
Áîëüøå èëè ðàâíî Ìåíüøå èëè ðàâíî Íå ðàâíî
Ëåâàÿ ñòîðîíà ïðàâîé? Ëåâàÿ ñòîðîíà ïðàâîé? Ëåâàÿ ñòîðîíà ïðàâîé? Ëåâàÿ ñòîðîíà ðàâíà ïðàâîé? Ëåâàÿ ñòîðîíà ðàâíà ïðàâîé? Ëåâàÿ ñòîðîíà ïðàâîé?
=, = çíà÷èò: ëåâàÿ ñòîðîíà áîëüøå ïðàâîé èëè (OR) ëåâàÿ ñòîðîíà ðàâíà ïðàâîé? Îïåðàöèÿ çíà÷èò: ëåâàÿ ñòîðîíà ìåíüøå ïðàâîé èëè ëåâàÿ ñòîðîíà áîëüøå ïðàâîé? Èíûìè ñëîâàìè, îïåðàöèÿ ñïðàøèâàåò, íå ðàâíû ëè äðóã äðóãó ëåâàÿ è ïðàâàÿ ñòîðîíû? Âîò íåñêîëüêî ïðèìåðîâ èñïîëüçîâàíèÿ îïåðàöèé ñðàâíåíèÿ â áóëåâûõ âûðàæåíèÿõ. Âîçìîæíî, âàì ïîíàäîáèòñÿ âîçâðàùàòüñÿ íàçàä è ñìîòðåòü â òàáëèöó îïåðàöèè OR, ÷òîáû ïîíÿòü, êàê ðàáîòàåò êàæäîå âûðàæåíèå. 3 = 3 2 > 3 åñòü False. 2 = 3 åñòü False. False OR False = False Çíà÷èò, ðåçóëüòàò îïåðàöèè «2 áîëüøå èëè ðàâíî 3» False.
Âåòâëåíèå: íåïîëíàÿ ôîðìà
Ñ ïîìîùüþ îïåðàöèé ñðàâíåíèÿ ñòðîêè ìîæíî ñðàâíèâàòü òàê æå, êàê è ÷èñëà. "ABC" < "DEF" "ABC" ìåíüøå "DEF"? Äà, True. "DEF" >= "ABC" "DEF" áîëüøå èëè ðàâíî "ABC"? Äà, True.
117
3 4 3 < 4 åñòü True. 3 > 4 åñòü False. True OR False = True. Çíà÷èò, ðåçóëüòàò îïåðàöèè «3 íå ðàâíî 4» True. 3 3 3 < 3 åñòü False. 3 > 3 åñòü False. False OR False = False. Çíà÷èò, ðåçóëüòàò îïåðàöèè «3 íå íå ðàâíî 3» False, ò. å. 3 ðàâíî 3. Âî âñåõ ýòèõ ïðèìåðàõ ìû ñðàâíèâàëè ÷èñëà. Íî ñ ïîìîùüþ îïåðàöèé ñðàâíåíèÿ ìîæíî ñðàâíèâàòü è òåêñòîâûå ñòðîêè, è ïðîñòî áóëåâû çíà÷åíèÿ, íàïðèìåð, òàê: "ABC" = "DEF" "ABC" ðàâíî "DEF"? Íåò, False. True = True True ðàâíî True? Äà, True. True = False True ðàâíî False? Íåò, False.
8.3. Îïåðàòîð If...Then Çàäàòü â ïðîãðàììå âîïðîñ, îòâåò íà êîòîðûé äà, True, èëè íåò, False, ìîæíî ñ ïîìîùüþ áóëåâîé ëîãèêè: îïåðàöèé ñðàâíåíèÿ è ëîãè÷åñêèõ (áóëåâûõ) îïåðàöèé. À êàê ðåàãèðîâàòü íà ïîëó÷åííûé îòâåò?  çàâèñèìîñòè îò îòâåòà ìîæíî âûïîëíÿòü êàêèå-òî äåéñòâèÿ èëè íåò. Åñëè îòâåò True, ïðîãðàììà ÷òî-òî äåëàåò. Åñëè îòâåò False, îíà íè÷åãî íå äåëàåò. Âîò ïðèìåðû ïðèíÿòèÿ ðåøåíèÿ â ïðîãðàììå. Åñëè óñòàíîâëåí ôëàæîê Super Size, ïîêàçàòü áîëüøóþ êàðòèíêó. Ðàñøèôðóåì ïîäðîáíåå: Ôëàæîê Super Size óñòàíîâëåí? Îòâåò True. Ïîêàçàòü áîëüøóþ êàðòèíêó.
118
Ãëàâà 8 Ôëàæîê Super Size óñòàíîâëåí? Îòâåò False. Íå ïîêàçûâàòü áîëüøóþ êàðòèíêó. Åñëè çíà÷åíèå ïåðåìåííîé TotalLitres áîëüøå 0, òî âû÷èñëèòü öåíó áåíçèíà. Ïîäðîáíåå: Çíà÷åíèå ïåðåìåííîé TotalLitres > 0? Îòâåò True. Âû÷èñëèòü öåíó áåíçèíà. Çíà÷åíèå ïåðåìåííîé TotalLitres > 0? Îòâåò False. Íå âû÷èñëÿòü öåíó áåíçèíà.  ïðèìåðàõ çàäàþòñÿ âîïðîñû, íà êîòîðûå ìîæíî îòâåòèòü True èëè False.  ýòèõ âîïðîñàõ èñïîëüçóþòñÿ îïåðàöèè ñðàâíåíèÿ. Îòâåòû íà âîïðîñû âñåãäà True èëè False. Åñëè îòâåò True, òî âûïîëíÿþòñÿ êàêèå-òî äåéñòâèÿ. Åñëè îòâåò False, òî íèêàêèå äåéñòâèÿ íå âûïîëíÿþòñÿ. Âû çàìåòèëè, ÷òî â ïðèìåðàõ èñïîëüçóþòñÿ ñëîâà «åñëè» è «òî»? Åñëè óñëîâèå âûïîëíÿåòñÿ (True), òî ÷òî-òî ïðîèñõîäèò. Åñëè óñëîâèå íå âûïîëíÿåòñÿ (False), íè÷åãî íå ïðîèñõîäèò. Åñëè âû õîòèòå, ÷òîáû ïðîãðàììà ïðèíèìàëà ðåøåíèÿ, èñïîëüçóéòå îïåðàòîð «åñëè...òî» (If...Then).  Visual Basic .NET ñèíòàêñèñ ýòîãî îïåðàòîðà òàêîé: If Óñëîâèå Then Ïîñëåäîâàòåëüíîñòü îïåðàòîðîâ End If
Âîò ïðèìåð êîäà íà Visual Basic .NET: If myAge = 15 Then MessageBox.Show("I am 15.") End If
Ñëîâî If êëþ÷åâîå ñëîâî Visual Basic .NET, ïîýòîìó îíî âûäåëåíî ïîëóæèðíûì øðèôòîì. Óñëîâèå èäåò ñðàçó ïîñëå ñëîâà If.  óñëîâèè ñ ïîìîùüþ îïåðàöèè ñðàâíåíèÿ çàäàåòñÿ âîïðîñ, íà êîòîðûé äàåòñÿ îòâåò True èëè False. Çíà÷åíèå ïåðåìåííîé myAge ðàâíî 15? Ñëîâî Then èäåò ñðàçó ïîñëå óñëîâèÿ. Ýòî òîæå êëþ÷åâîå ñëîâî Visual Basic.NET, ïîýòîìó îíî âûäåëåíî ïîëóæèðíûì øðèôòîì. Ïîñëå ñëîâà Then èäåò
Âåòâëåíèå: íåïîëíàÿ ôîðìà
119
êîä, êîòîðûé äîëæåí âûïîëíÿòüñÿ, åñëè âûïîëíÿåòñÿ óñëîâèå (îòâåò íà âîïðîñ True). Ýòîò êîä çàïèñàí ñ îòñòóïîì äëÿ óäîáñòâà âîñïðèÿòèÿ. Åñëè óñëîâèå âûïîëíÿåòñÿ (True), ïðîãðàììà âûâîäèò îêíî ñîîáùåíèÿ ñ òåêñòîì «I am 15.» Ñëîâà End If ïîñëå óñëîâíîãî êîäà ýòî òîæå êëþ÷åâûå ñëîâà. Ñëîâà End If çàâåðøàþò îïåðàòîð If...Then. Ïîïðîáóåì ïðèìåíèòü ýòè îïåðàòîðû! Ñîçäàéòå íîâîå ïðèëîæåíèå Windows è íàçîâèòå åãî «If_Then». Ïîìåñòèòå íà ôîðìó òåêñòîâîå ïîëå è êíîïêó. Âûïîëíèòå ïî êíîïêå äâîéíîé ùåë÷îê, ÷òîáû îòðåäàêòèðîâàòü îáðàáîò÷èê åå íàæàòèÿ. Äîáàâüòå â îáðàáîò÷èê ñëåäóþùèé êîä: Dim myAge As Integer myAge = 15 If myAge = 15 Then TextBox1.Text = "I am 15." End If
Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Íàæìèòå êíîïêó. Êîä îáúÿâëÿåò ïåðåìåííóþ myAge è ïðèñâàèâàåò åé çíà÷åíèå 15. Ïîñëå êëþ÷åâîãî ñëîâà If çàäàåòñÿ âîïðîñ: myAge ðàâíî 15? Îòâåò True, ïîñêîëüêó ìû òîëüêî ÷òî ïðèñâîèëè ïåðåìåííîé myAge çíà÷åíèå 15. Ïîñêîëüêó îòâåò True, âûïîëíÿåòñÿ êîä ïîñëå êëþ÷åâîãî ñëîâà Then.  òåêñòîâîì ïîëå ïîÿâëÿåòñÿ òåêñò «I am 15.» À òåïåðü èçìåíèì êîä ñ myAge = 15 íà: myAge = 14
Åùå ðàç ïîñòðîéòå è çàïóñòèòå ïðîåêò. Íàæìèòå êíîïêó. ×òî ïðîèçîéäåò? Íè÷åãî? Íà ýòîò ðàç myAge ïðèñâîåíî çíà÷åíèå 14. Ïîñëå êëþ÷åâîãî ñëîâà If çàäàåòñÿ âîïðîñ: myAge ðàâíî 15? Òåïåðü îòâåò False, è êîä ïîñëå êëþ÷åâîãî ñëîâà Then íå âûïîëíÿåòñÿ. Íè÷åãî íå ïðîèñõîäèò. Òåêñò â òåêñòîâîì ïîëå íå èçìåíÿåòñÿ. Äàâàéòå ðàçáåðåì åùå îäèí ïðèìåð. Äîáàâüòå íà ôîðìó ôëàæîê è êíîïêó. Ñîçäàéòå îáðàáîò÷èê íàæàòèÿ âòîðîé êíîïêè:
120
Âñå îïåðàòîðû óñëîâíîãî êîäà ìåæäó If...Then... End If ëó÷øå âûäåëÿòü îòñòóïîì. Ýòî ñäåëàåò êîä áîëåå ïîíÿòíûì. Äàæå åñëè âåñü êîä, âûïîëíÿþùèéñÿ ïî óñëîâèþ, ýòî òîëüêî îäèí îïåðàòîð, åãî ñòîèò âûäåëèòü îòñòóïîì. Ïî óìîë÷àíèþ Visual Studio .NET àâòîìàòè÷åñêè âûäåëÿåò òàêîé êîä îòñòóïàìè. If CheckBox1.Checked = True Then MessageBox.Show ("Danger!") End If
Ãëàâà 8 If CheckBox1.Checked = True Then TextBox1.Text="I am checked." End If
Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Óñòàíîâèòå ôëàæîê è íàæìèòå âòîðóþ êíîïêó. Óñëîâèå âûïîëíÿåòñÿ True (âû óñòàíîâèëè ôëàæîê), è òåêñò â òåêñòîâîì ïîëå èçìåíèòñÿ íà «I am checked.» Åùå ðàç çàïóñòèòå ïðîåêò. Íà ýòîò ðàç íàæìèòå âòîðóþ êíîïêó, íå óñòàíàâëèâàÿ ôëàæîê. ×òî ïðîèçîéäåò? Íè÷åãî. Íà ýòîò ðàç óñëîâèå íå âûïîëíÿåòñÿ False (ôëàæîê íå óñòàíîâëåí), è òåêñò íå èçìåíèòñÿ. Âàøà ïðîãðàììà ïðèíÿëà ðåøåíèå (èçìåíÿòü ëè òåêñò) èñõîäÿ èç óñëîâèÿ (óñòàíîâëåí ëè ôëàæîê).
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 8.2. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
ñîçäàòü ïðîåêò «If_Then», êîòîðûé îïèñàí â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå If_Then.exe.
8.4. Ìíîæåñòâåííûå óñëîâèÿ Èíîãäà ïðîãðàììàì íåîáõîäèìî ïðèíèìàòü ìíîæåñòâî ðåøåíèé îäíî çà äðóãèì. Íàïðèìåð, íóæíî ïðîâåðèòü, óñòàíîâëåí ëè ôëàæîê, âûáðàíà ëè ïîçèöèÿ ïåðåêëþ÷àòåëÿ, çàòåì ñðàâíèòü äâà ÷èñëà, è ïðîâåðèòü, îñòàâèë ëè ïîëüçîâàòåëü ïóñòûì òåêñòîâîå ïîëå. Âñå ýòî íóæíî ñäåëàòü â îäíîé ïðîãðàììå. Êàê? Ê ñ÷àñòüþ, íå ñëèøêîì ñëîæíî.  êîäå ìîæíî èñïîëüçîâàòü ñòîëüêî îïåðàòîðîâ If...Then, ñêîëüêî íóæíî. Êàê è äðóãèå îïåðàòîðû, îíè âûïîëíÿþòñÿ â òîì ïîðÿäêå, â êàêîì âñòðå÷àþòñÿ â êîäå. Äàâàéòå ñîçäàäèì ïðèëîæåíèå, äåìîíñòðèðóþùåå èñïîëüçîâàíèå íåñêîëüêèõ îïåðàòîðîâ If...Then.
Âåòâëåíèå: íåïîëíàÿ ôîðìà
121
Ïðåäïîëîæèì, ÷òî â ïðîãðàììå åñòü ôëàæîê CheckBox1 ñ íàäïèñüþ Òðåâîãà. Åñëè ôëàæîê óñòàíîâëåí, ïðîãðàììà èçìåíÿåò öâåò ôîíà (BackColor) ôîðìû íà êðàñíûé, òåêñò â òåêñòîâîì ïîëå íà «Ïîæàð» è âûâîäèò îêíî ñîîáùåíèÿ ñ òåêñòîì «Îïàñíîñòü! Îïàñíîñòü!» Âñå ýòî ìîæíî ñäåëàòü ñ ïîìîùüþ òðåõ îòäåëüíûõ îïåðàòîðîâ If...Then. Êàæäûé èç ýòèõ îïåðàòîðîâ áóäåò ïðîâåðÿòü, óñòàíîâëåí ëè ôëàæîê Alarms. Åñëè äà (True), òî áóäåò âûïîëíÿòüñÿ ñîîòâåòñòâóþùèé êîä. Ñîçäàéòå íîâîå ïðèëîæåíèå Windows è íàçîâèòå åãî «Ïîæàðíàÿ òðåâîãà». Äîáàâüòå íà ôîðìó ôëàæîê, òåêñòîâîå ïîëå è êíîïêó. Èçìåíèòå çíà÷åíèå ñâîéñòâà Text êíîïêè Button1 íà Òðè óñëîâèÿ. Âûïîëíèòå äâîéíîé ùåë÷îê ïî êíîïêå, ÷òîáû îòðåäàêòèðîâàòü îáðàáîò÷èê åå íàæàòèÿ. Äîáàâüòå â îáðàáîò÷èê ñëåäóþùèé êîä: If CheckBox1.Checked = True Then Form.ActiveForm.BackColor = System.Drawing._ Color.Red End If If CheckBox1.Checked = True Then TextBox1.Text = "Ïîæàð" End If If CheckBox1.Checked = True Then MessageBox.Show("Îïàñíîñòü! Îïàñíîñòü!") End If
Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Óñòàíîâèòå ôëàæîê è íàæìèòå êíîïêó ñ íàäïèñüþ Òðè óñëîâèÿ. Îïåðàòîðû If...Then âûïîëíÿòñÿ îäèí çà äðóãèì. Ïåðâûé îïåðàòîð If...Then èçìåíèò öâåò ôîíà ôîðìû íà êðàñíûé. Âòîðîé îïåðàòîð èçìåíèò òåêñò â òåêñòîâîì ïîëå íà «Ïîæàð». Òðåòèé îïåðàòîð âûâåäåò îêíî ñîîáùåíèÿ ñ òåêñòîì «Îïàñíîñòü! Îïàñíîñòü!» Âî âñåõ îïåðàòîðàõ If...Then â ïðèìåðå «Ïîæàðíàÿ òðåâîãà» ïðîâåðÿëîñü îäíî è òî æå óñëîâèå. Ýòî áûëî óñëîâèå If CheckBox1.Checked = True Then
122
Ãëàâà 8 Íî â áëîêàõ If...Then âûïîëíÿëèñü ðàçíûå îïåðàòîðû. Âû òîæå ñ÷èòàåòå, ÷òî îäèí è òîò æå êîä ïîâòîðÿåòñÿ ñëèøêîì ìíîãî ðàç? Åñòü ëè ëó÷øåå ðåøåíèå?  Visual Basic .NET è áîëüøèíñòâå ñîâðåìåííûõ ÿçûêîâ ïðîãðàììèðîâàíèÿ â îäíîì áëîêå If...Then ìîæíî èñïîëüçîâàòü ìíîæåñòâî îïåðàòîðîâ. Òàê ÷òî êîä â ïðèëîæåíèè «Ïîæàðíàÿ òðåâîãà» ìîæíî ïåðåïèñàòü, óïðîñòèâ åãî çà ñ÷åò óäàëåíèÿ ëèøíèõ áëîêîâ. Îòêðîéòå ïðèëîæåíèå «Ïîæàðíàÿ òðåâîãà». Äîáàâüòå íà ôîðìó åùå îäíó êíîïêó. Èçìåíèòå åå òåêñò íà «Îäíî óñëîâèå». Âûïîëíèòå ïî íåé äâîéíîé ùåë÷îê, ÷òîáû îòðåäàêòèðîâàòü îáðàáîò÷èê åå íàæàòèÿ. Äîáàâüòå â îáðàáîò÷èê ñëåäóþùèé êîä: If CheckBox1.Checked = True Then Form.ActiveForm.BackColor = System.Drawing._ Color.Red TextBox1.Text = "Ïîæàð" MessageBox.Show("Îïàñíîñòü! Îïàñíîñòü!") End If
Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Óñòàíîâèòå ôëàæîê è íàæìèòå êíîïêó ñ íàäïèñüþ Îäíî óñëîâèå. Âûïîëíèòñÿ îäèí îïåðàòîð If...Then. Ìû ïîëó÷èì îòâåò True, è âñå îïåðàòîðû â áëîêå If...Then áóäóò âûïîëíåíû îäèí çà äðóãèì.  ïðîãðàììå âûïîëíÿþòñÿ òå æå äåéñòâèÿ, ÷òî è ðàíüøå. Îäíàêî íà ýòîò ðàç óñëîâèå ïðîâåðÿåòñÿ òîëüêî îäèí ðàç. Òàêîé êîä ëåã÷å ïîíèìàòü è ïèñàòü. Èñïîëüçóÿ ïîñëåäîâàòåëüíîñòè îïåðàòîðîâ If...Then, ìîæíî âûáèðàòü ðàçíûå âàðèàíòû â êîäå (óñòàíàâëèâàòü ïåðåêëþ÷àòåëè). Ðàññìîòðèì ïðèìåð. Ñîçäàéòå íîâîå ïðèëîæåíèå Windows è íàçîâèòå åãî «Âûáîð öâåòà». Ïîìåñòèòå íà ôîðìó òðè ïåðåêëþ÷àòåëÿ è êíîïêó. Ñ ïîìîùüþ îêíà Ñâîéñòâà
Âåòâëåíèå: íåïîëíàÿ ôîðìà
123
(Properties) çàäàéòå ñëåäóþùèå çíà÷åíèÿ ñâîéñòâ. Èçìåíèòå çíà÷åíèå ñâîéñòâà Text ó RadioButton1 íà Red, ó RadioButton2 íà Green, à ó RadioButton3 íà Blue. Ó êíîïêè Button1 èçìåíèòå çíà÷åíèå ñâîéñòâà Text íà Óñòàíîâèòü öâåò. Óñòàíîâèòå ñâîéñòâî 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.Green End If If RadioButton3.Checked = True Then myColor = System.Drawing.Color.Blue End If Form.ActiveForm.BackColor = myColor
Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Óñòàíîâèòå îäèí èç ïåðåêëþ÷àòåëåé è íàæìèòå êíîïêó ñ íàäïèñüþ Óñòàíîâèòü öâåò. Ôîðìà è êíîïêè ïðèîáðåòóò âûáðàííûé öâåò. Âûáåðèòå äðóãîé ïåðåêëþ÷àòåëü è íàæìèòå êíîïêó ñ íàäïèñüþ Óñòàíîâèòü öâåò. Öâåò ôîðìû è êíîïîê ñòàíåò äðóãèì! Ïîñìîòðèòå íà êîä. Ïîñëåäîâàòåëüíîñòü îïåðàòîðîâ If...Then ïîçâîëÿåò âûáèðàòü ðàçíûå âàðèàíòû îòâåòà íà âîïðîñ: «Êàêîé ïåðåêëþ÷àòåëü âûáðàí?» Êîãäà êîä âûïîëíÿåòñÿ, ïðîãðàììà ïîñòåïåííî îïðåäåëÿåò, êàêàÿ ïîçèöèÿ âûáðàíà. Îïðåäåëèâ, êàêàÿ ïîçèöèÿ âûáðàíà, ïðîãðàììà âûïîëíÿåò ñîîòâåòñòâóþùèé îïåðàòîð, óñòàíàâëèâàþùèé öâåò.
124
Ãëàâà 8 Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 8.3. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET
Microsoft-CD
ñîçäàòü ïðîåêò «Ïîæàðíàÿ òðåâîãà», êîòîðûé îïèñàí â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Ïîæàðíàÿ_òðåâîãà.exe.
8.4. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET
ñîçäàòü ïðîåêò «Âûáîð öâåòà», êîòîðûé îïèñàí â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Âûáîð_öâåòà. exe.
8.5. Áóëåâû îïåðàöèè â êîäå Ìû óæå ðàçîáðàëèñü, êàê ñ ïîìîùüþ áóëåâûõ îïåðàöèé îáúåäèíÿòü âûðàæåíèÿ äëÿ ðåøåíèÿ ñëîæíûõ ëîãè÷åñêèõ çàäà÷. Äàâàéòå ðàçáåðåì ïðèìåð, â êîòîðîì îïåðàöèÿ AND èñïîëüçóåòñÿ äëÿ îäíîâðåìåííîé ïðîâåðêè âûïîëíåíèÿ äâóõ óñëîâèé. Ìîäèôèöèðóåì ïðèëîæåíèå «Âûáîð öâåòà», äîáàâèâ â íåãî ôëàæîê, êîòîðûé ïîçâîëèò îòêëþ÷àòü èçìåíåíèå öâåòà. Ñ ïîìîùüþ îïåðàöèè AND ñîçäàäèì ñîñòàâíîå óñëîâèå, êîòîðîå áóäåò ïðîâåðÿòü óñòàíîâêó ïåðåêëþ÷àòåëåé è ñîñòîÿíèå ôëàæêà. Îòêðîéòå ïðèëîæåíèå «Âûáîð öâåòà». Äîáàâüòå íà ôîðìó ôëàæîê. Èçìåíèòå çíà÷åíèå åãî ñâîéñòâà Text íà Öâåò ñóùåñòâóåò. Îòðåäàêòèðóéòå êîä îáðàáîò÷èêà íàæàòèÿ êíîïêè Button1. Çàìåíèòå êîä â íåì íà ñëåäóþùèé: Dim myColor As System.Drawing.Color If RadioButton1.Checked = True And CheckBox1._ Checked = True Then myColor = System.Drawing.Color.Red End If If RadioButton2.Checked = True And_ CheckBox1.Checked = True Then myColor = System.Drawing.Color.Green End If
Âåòâëåíèå: íåïîëíàÿ ôîðìà
Ïîìíèòå, îïåðàöèþ AND èñïîëüçóþò, åñëè ïðîâåðÿþò, ðàâíû ëè îáà îïåðàíäà True. Åñëè íóæíî ïðîâåðèòü, ðàâåí ëè õîòÿ áû îäèí îïåðàíä True, èñïîëüçóþò îïåðàöèþ OR.
125
If RadioButton3.Checked = True And CheckBox1._ Checked = True Then myColor = System.Drawing.Color.Blue End If Form.ActiveForm.BackColor = myColor
Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Íàæìèòå êíîïêó ñ íàäïèñüþ Óñòàíîâèòü öâåò. Íè÷åãî íå ïðîèçîéäåò! Öâåò íå èçìåíèòñÿ. À òåïåðü óñòàíîâèòå ôëàæîê ñ íàäïèñüþ Öâåò ñóùåñòâóåò è åùå ðàç íàæìèòå êíîïêó ñ íàäïèñüþ Óñòàíîâèòü öâåò. Ôîðìà è ýëåìåíòû óïðàâëåíèÿ ñòàíóò êðàñíûìè. Âîò ÷òî ïðîèñõîäèò â ïðîãðàììå.  óñëîâèå â áëîêå If...Then ìû äîáàâèëè ñëåäóþùèé êîä: And CheckBox1.Checked = True
Ýòî äîïîëíèòåëüíîå óñëîâèå. Òåïåðü, ÷òîáû öâåò èçìåíèëñÿ, äîëæíû âûïîëíÿòüñÿ îáà óñëîâèÿ. Íàïðèìåð: RadioButton2.Checked = True And CheckBox1._ Checked = True
Îáà ýòèõ âûðàæåíèÿ äîëæíû áûòü ðàâíû True. Ïîìíèòå, True AND True = True. Åñëè õîòÿ áû îäíî èç âûðàæåíèé, îáúåäèíÿåìûõ îïåðàöèåé AND, ðàâíî False, òî ðåçóëüòàò òîæå áóäåò ðàâåí False, è öâåò íå èçìåíèòñÿ.
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 8.5. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
ñîçäàòü ïðîåêò «Âûáîð öâåòà-2», êîòîðûé îïèñàí â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Âûáîð_öâåòà_2.exe.
8.6. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET
ñîçäàòü ïðîåêò «Âûáîð ïîäàðêà», êîòîðûé ïîìîæåò ïîêóïàòåëÿì âûáðàòü ïîäàðêè. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Âûáîð_ïîäàðêà.exe.
126
Ãëàâà 8 1. Ñîçäàéòå ôîðìó è ïîìåñòèòå íà íåå âûïàäàþùèé ñïèñîê Combobox. Çàäàéòå äëÿ åãî ñâîéñòâà Text çíà÷åíèå «Ñïèñîê ïîäàðêîâ». Çàïîëíèòå êîëëåêöèþ Items íàçâàíèÿìè ïîäàðêîâ. 2. Ïîìåñòèòå íà ôîðìó òåêñòîâîå ïîëå. Ñäåëàéòå åãî ìíîãîñòðî÷íûì. 3. Ïðè âûáîðå ïîäàðêîâ â âûïàäàþùåì ñïèñêå, â òåêñòîâîå ïîëå äîëæíû áûòü âûâåäåíû íàçâàíèÿ, êàê ìèíèìóì, äâóõ ïðåäìåòîâ. 4. Òåêñò âûáðàííîãî ïóíêòà ñîäåðæèòñÿ â ñâîéñòâå SelectedItem. 5. Åñëè âû õîòèòå, ÷òîáû äâà ïðåäìåòà âûâîäèëèñü â ðàçíûå ñòðîêè â òåêñòîâîì ïîëå, ïîìåñòèòå ìåæäó íèìè ñïåöèàëüíóþ êîíñòàíòó Visual Basic, íàïðèìåð òàê: TextBox1.Text = "A" & vbNewLine & "B". Ðàçóìååòñÿ, âìåñòî A è B íóæíî âûâîäèòü íàçâàíèÿ ïóíêòîâ âûïàäàþùåãî ñïèñêà.
8.7. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET
ñîçäàòü ïðîåêò «Ïðîâåðêà», êîòîðûé îñóùåñòâèò ïðîâåðêó ñêëîííîñòè ê ïðîãðàììèðîâàíèþ. Ñîçäàéòå ôîðìó, ïîõîæóþ íà ýòó:
Âåòâëåíèå: íåïîëíàÿ ôîðìà
127
Ïðè íàæàòèè êíîïêè ñ íàäïèñüþ Evaluate Results ñëîæèòå ÷èñëà èç 6 òåêñòîâûõ ïîëåé. Ïîñêîëüêó ñîäåðæèìîå òåêñòîâîãî ïîëÿ ñòðîêà, à íå ÷èñëî, åå íóæíî áóäåò ïðåîáðàçîâàòü â ÷èñëî. Visual Basic .NET ïîçâîëÿåò äåëàòü ýòî ñ èñïîëüçîâàíèåì ôóíêöèè Val(). Åñëè ðåçóëüòàò áîëüøå 40, âûâåäèòå â òåêñòîâîì ïîëå ñîîáùåíèå, ÷òî ó÷àùèéñÿ ïðåêðàñíûé êàíäèäàò äëÿ ïðîõîæäåíèÿ êóðñà ïðîãðàììèðîâàíèÿ. Åñëè ðåçóëüòàò â ïðåäåëàõ 2039, íóæíî ñîîáùèòü, ÷òî óñïåøíîñòü îáó÷åíèÿ íå ãàðàíòèðóåòñÿ, íî ìîæíî ïîïðîáîâàòü. Åñëè ðåçóëüòàò ìåíüøå 20, òî ïðåäëîæèòå ó÷åíèêó âûáðàòü äðóãîå çàíÿòèå. À êàêîâ âàø ñîáñòâåííûé ðåçóëüòàò? 8.8.  ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET ñîçäàòü ïðîåêò «Èãðà», â êîòîðîì íóæíî ïîïàñòü ïî ïîÿâëÿþùåéñÿ è èñ÷åçàþùåé ìèøåíè. 1. Èçìåíèòå ðàçìåðû ôîðìû: âûñîòó (Height) íà 250, à øèðèíó (Width) íà 500. Íàçîâèòå ôîðìó Zap. Äîáàâüòå íà íåå ýëåìåíòû óïðàâëåíèÿ, ÷òîáû îíà âûãëÿäåëà òàê, êàê íà ðèñóíêå:
2. Öåëü èãðû ùåëêíóòü ïî äâèæóùåéñÿ ìèøåíè. Êîä áóäåò äâèãàòü ìèøåíü, ÷òîáû ïî íåé áûëî òðóäíî ïîïàñòü êóðñîðîì. Êíîïêà ñ íàäïèñüþ Start èíèöèàëèçèðóåò è çàïóñêàåò èãðó. Êíîïêà ñ íàäïèñüþ Stop çàâåðøà-
128
Ãëàâà 8 åò èãðó. Êíîïêà ñ íàäïèñüþ Exit çàêðûâàåò ïðîãðàììó. Òðè ïåðåêëþ÷àòåëÿ ïîçâîëÿþò âûáèðàòü óðîâåíü ñëîæíîñòè. Äîáàâüòå ýëåìåíò PictureBox äëÿ ðàçìåùåíèÿ ðèñóíêà ìèøåíè. 3. Ðèñóíîê ìèøåíè, ìèøåíü.gif, õðàíèòñÿ íà äèñêå. Âûáåðèòå ýòîò ðèñóíîê äëÿ îòîáðàæåíèÿ â ýëåìåíòå PictureBox. Äàííûé ýëåìåíò ñëóæèò äëÿ îòîáðàæåíèÿ êàðòèíîê. Äëÿ ñâîéñòâà SizeMode âûáåðèòå çíà÷åíèå StretchImage. 4. Ïðîãðàììà èñïîëüçóåò ýëåìåíò Timer, ÷òîáû çàñòàâèòü êîä âûïîëíÿòüñÿ ÷åðåç îïðåäåëåííûå èíòåðâàëû âðåìåíè. Ñîçäàâ ôîðìó, íàéäèòå ýëåìåíò Timer â îêíå Îáëàñòü ýëåìåíòîâ (Toolbox) è âûïîëíèòå ïî íåìó äâîéíîé ùåë÷îê. Ýëåìåíò Timer ÿâëÿåòñÿ ÷àñòüþ ôîðìû, íî íåâèäèì ïîëüçîâàòåëþ. 5. Îáúÿâèòå ïåðåìåííóþ òèïà Integer äëÿ ïîäñ÷åòà óäà÷íûõ ïîïàäàíèé. 6. Îáúÿâèòå ïåðåìåííóþ òèïà Integer äëÿ ïîäñ÷åòà îáùåãî êîëè÷åñòâà ïîïûòîê. 7.  îáðàáîò÷èêå íàæàòèÿ êíîïêè ñ íàäïèñüþ Start ñîçäàéòå êîä, êîòîðûé áóäåò äåëàòü ñëåäóþùåå: q q q
q
Ñáðàñûâàòü â 0 çíà÷åíèÿ ïåðåìåííûõñ÷åò÷èêîâ ïîïàäàíèé è ïîïûòîê. Óñòàíàâëèâàòü äëÿ ñâîéñòâà Enable ýëåìåíòà óïðàâëåíèÿ Timer çíà÷åíèå True. Åñëè âûáðàíà ïîçèöèÿ ïåðåêëþ÷àòåëÿ RadioButton1, óñòàíàâëèâàòü äëÿ ñâîéñòâà Interval ýëåìåíòà Timer çíà÷åíèå 900, à âûñîòû è øèðèíû ðèñóíêà 40. Åñëè âûáðàíà ïîçèöèÿ ïåðåêëþ÷àòåëÿ RadioButton2, óñòàíàâëèâàòü äëÿ ñâîéñòâà Interval ýëåìåíòà Timer çíà÷åíèå 850, à âûñîòû è øèðèíû ðèñóíêà 35.
Âåòâëåíèå: íåïîëíàÿ ôîðìà
129
Åñëè âûáðàíà ïîçèöèÿ ïåðåêëþ÷àòåëÿ RadioButton3, óñòàíàâëèâàòü äëÿ ñâîéñòâà Interval ýëåìåíòà Timer çíà÷åíèå 800, à âûñîòû è øèðèíû ðèñóíêà 30. 8.  îáðàáîò÷èêå íàæàòèÿ êíîïêè ñ íàäïèñüþ Stop, óñòàíîâèòå äëÿ ñâîéñòâà Enable ýëåìåíòà Timer çíà÷åíèå False. q
9.  îáðàáîò÷èêå íàæàòèÿ êíîïêè ñ íàäïèñüþ Exit çàâåðøèòå ïðîãðàììó êîìàíäîé End. 10.  îáðàáîò÷èê ùåë÷êà ïî ýëåìåíòó PictureBox äîáàâüòå êîä, êîòîðûé äîáàâèò åäèíèöó ê çíà÷åíèþ ñ÷åò÷èêà Hits è îòîáðàçèò ýòî çíà÷åíèå â òåêñòîâîì ïîëå «Hits». 11.  îáðàáîò÷èê ñîáûòèÿ Timer (ñäåëàéòå äâîéíîé ùåë÷îê ïî ýòîìó ýëåìåíòó, ÷òîáû ñîçäàòü îáðàáîò÷èê), äîáàâüòå ñëåäóþùèé êîä, ÷òîáû ìèøåíü äâèãàëàñü. Îí ïîäðàçóìåâàåò, ÷òî ðàçìåð ôîðìû ðàâåí 250 × 550 åäèíèö: 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)
12. Ïîñëå ýòîãî êîäà äîáàâüòå â îáðàáîò÷èê êîä, äîáàâëÿþùèé åäèíèöó ê çíà÷åíèþ ñ÷åò÷èêà ïîïûòîê è ïîìåùàþùèé ýòî çíà÷åíèå â TextBox «Total». 13.  íà÷àëå êîäà îáðàáîò÷èêà ñîáûòèÿ Timer ñäåëàéòå öâåò ôîíà ôîðìû ñåðûì. Ïðè ïîïàäàíèè â ìèøåíü öâåò ôîíà äîëæåí ñòàòü êðàñíûì.
Òåñò ïî òåìå «Âåòâëåíèå: íåïîëíàÿ ôîðìà» 1.
Ïîñëå êàêîãî êëþ÷åâîãî ñëîâà â îïåðàòîðå If...Then ðàçìåùåíî óñëîâèå? m
End If
m
Then
m
If
m
Else
2.
×òî îçíà÷àåò îïåðàöèÿ ñðàâíåíèÿ ? m
Áîëüøå èëè ðàâíî
m
Ìåíüøå èëè ðàâíî
m
Ìåíüøå
m
Íå ðàâíî
3.
Êîãäà ëîãè÷åñêàÿ îïåðàöèÿ And âîçâðàùàåò çíà÷åíèå True? m
Åñëè ðàâíî True çíà÷åíèå ëåâîãî èëè ïðàâîãî îïåðàíäà
m
Åñëè çíà÷åíèÿ îáîèõ îïåðàíäîâ ðàâíû True
m
Åñëè çíà÷åíèÿ îáîèõ îïåðàíäîâ íå ðàâíû True
m
Ïðè ëþáîì çíà÷åíèè îïåðàíäîâ
4.
Êîãäà ëîãè÷åñêàÿ îïåðàöèÿ OR âîçâðàùàåò çíà÷åíèå False? m
Åñëè ðàâíî False çíà÷åíèå ëåâîãî èëè ïðàâîãî îïåðàíäà
m
Åñëè çíà÷åíèÿ îáîèõ îïåðàíäîâ ðàâíû False
m
Åñëè çíà÷åíèÿ îáîèõ îïåðàíäîâ íå ðàâíû False
m
Ïðè ëþáîì çíà÷åíèè îïåðàíäîâ
Ãëàâà 9
Âåòâëåíèå: ïîëíàÿ ôîðìà 9.1. Âëîæåííûå îïåðàöèè If...Then 9.2. Ïðîòèâîïîëîæíûå óñëîâèÿ 9.3. Îïåðàòîð If...Then...Else 9.4. Ïîøàãîâîå âûïîëíåíèå If 9.5. Îïåðàòîðû If â Ñ# è J# 9.6. Áóëåâû îïåðàöèè è îïåðàöèè ñðàâíåíèÿ â Ñ# è J#
 1995 ãîäó áûëà ñîçäàíà îïåðàöèîííàÿ ñèñòåìà äëÿ ïåðñîíàëüíûõ êîìïüþòåðîâ ñ ãðàôè÷åñêèì èíòåðôåéñîì Windows 95, êîòîðàÿ ñîäåðæàëà óòèëèòû äëÿ ðàáîòû â Èíòåðíåòå. Ãðàôè÷åñêèé èíòåðôåéñ ýòîé ñèñòåìû èñïîëüçóåòñÿ ïðàêòè÷åñêè áåç èçìåíåíèé â ïîñëåäóþùèõ âåðñèÿõ îïåðàöèîííûõ ñèñòåì äëÿ ïåðñîíàëüíûõ êîìïüþòåðîâ Windows 98/Me.
132
Ãëàâà 9
9.1. Âëîæåííûå îïåðàòîðû If
Then Âíóòðü îïåðàòîðà If…Then ìîæíî ïîìåñòèòü åùå îäèí îïåðàòîð If…Then. Âòîðîé îïåðàòîð If…Then áóäåò âûïîëíÿòüñÿ, òîëüêî åñëè óñëîâèå â ïåðâîì âûïîëíÿåòñÿ. Âòîðîé îïåðàòîð íàõîäèòñÿ âíóòðè ïåðâîãî. Ãîâîðÿò, ÷òî îïåðàòîð If…Then âëîæåí âíóòðü äðóãîãî îïåðàòîðà. Ñîçäàéòå íîâîå ïðèëîæåíèå Windows è íàçîâèòå åãî «Ôëàæêè». Äîáàâüòå íà ôîðìó äâà ôëàæêà è êíîïêó. Èçìåíèòå çíà÷åíèå ñâîéñòâà Text êíîïêè íà Ôëàæêè óñòàíîâëåíû?. Âûïîëíèòå äâîéíîé ùåë÷îê ïî êíîïêå, ÷òîáû îòðåäàêòèðîâàòü îáðàáîò÷èê åå íàæàòèÿ. Äîáàâüòå â îáðàáîò÷èê ñëåäóþùèé êîä: If CheckBox1.Checked = True Then If CheckBox2.Checked = True Then MessageBox.Show("Îáà ôëàæêà_ óñòàíîâëåíû.") End If End If
Ïîñòðîéòå è çàïóñòèòå ïðèëîæåíèå. Óñòàíîâèòå ïåðâûé ôëàæîê è íàæìèòå êíîïêó ñ íàäïèñüþ Ôëàæêè óñòàíîâëåíû?. ×òî ïðîèçîéäåò? Íè÷åãî. Òåïåðü óñòàíîâèòå âòîðîé ôëàæîê è ñíîâà íàæìèòå êíîïêó ñ íàäïèñüþ Ôëàæêè óñòàíîâëåíû?. Íà ýòîò ðàç ïîÿâèòñÿ îêíî ñ ñîîáùåíèåì «Îáà ôëàæêà óñòàíîâëåíû.» Êàê âèäèòå, â ïåðâîé ñòðîêå êîäà åñòü óñëîâèå: If CheckBox1.Checked = True Then
Çà ýòèì óñëîâèåì èäåò îïåðàòîð, êîòîðûé áóäåò âûïîëíÿòüñÿ, òîëüêî åñëè âûïîëíÿåòñÿ óñëîâèå. Ýòî åùå îäèí îïåðàòîð If…Then, âëîæåííûé â ïåðâûé. Âî âëîæåííîì îïåðàòîðå If…Then åñòü ñâîå óñëîâèå: If CheckBox2.Checked = True Then
Âåòâëåíèå: ïîëíàÿ ôîðìà
133
 ýòîò îïåðàòîð âëîæåí ñëåäóþùèé: MessageBox.Show("Îáà ôëàæêà óñòàíîâëåíû.") Ìîæíî âêëàäûâàòü äðóã â äðóãà ñòîëüêî îïåðàòîðîâ If…Then, ñêîëüêî çàõîòèòå, íî áîëüøå òðåõ-÷åòûðåõ âëîæåííûõ îïåðàòîðîâ áóäåò òðóäíî ïîíÿòü, è â íèõ òðóäíî áóäåò íàõîäèòü îøèáêè. Îáÿçàòåëüíî äåëàéòå îòñòóïû, èñïîëüçóÿ âëîæåííûå îïåðàòîðû.
Òàê ÷òî æå ïðîèñõîäèò? Åñëè óñëîâèå â ïåðâîì îïåðàòîðå âûïîëíÿåòñÿ (ôëàæîê CheckBox1 óñòàíîâëåí), òî âûïîëíÿåòñÿ âëîæåííûé îïåðàòîð. Ýòî åùå îäèí îïåðàòîð If…Then. Åñëè óñëîâèå âî âòîðîì îïåðàòîðå òîæå âûïîëíÿåòñÿ (ôëàæîê CheckBox2 óñòàíîâëåí), âûïîëíÿåòñÿ ñëåäóþùèé âëîæåííûé îïåðàòîð, è íà ýêðàí âûâîäèòñÿ îêíî ñîîáùåíèÿ. Îáà óñëîâèÿ äîëæíû âûïîëíÿòüñÿ, èíà÷å îêíî ñîîáùåíèÿ íå áóäåò âûâîäèòüñÿ. È Checkbox1, è Checkbox2 äîëæíû áûòü óñòàíîâëåíû. Îáðàòèòå âíèìàíèå íà òî, ÷òî End If äëÿ ïåðâîãî îïåðàòîðà If…Then èäåò ïîñëå End If äëÿ âòîðîãî If…Then. Ñ ïîìîùüþ âëîæåíèÿ ìîæíî ñîâìåùàòü ìíîæåñòâî îïåðàòîðîâ If…Then, ÷òîáû êàêîé-òî êîä âûïîëíÿëñÿ òîëüêî ïðè âûïîëíåíèè âñåõ óñëîâèé.
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 9.1. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
ñîçäàòü ïðîåêò «Ôëàæêè», îïèñàííûé â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Ôëàæêè.exe.
9.2. Ïðîòèâîïîëîæíûå óñëîâèÿ Äî ñèõ ïîð äåéñòâèÿ â óñëîâíîì îïåðàòîðå âûïîëíÿëèñü ïðè âûïîëíåíèè óñëîâèÿ. Åñëè óñëîâèå íå âûïîëíÿëîñü, íè÷åãî íå ïðîèñõîäèëî. À ÷òî, åñëè íàì íóæíî âûïîëíèòü êàêèå-òî äåéñòâèÿ è â òîì ñëó÷àå, åñëè óñëîâèå íå âûïîëíÿåòñÿ? Íó, âî-ïåðâûõ, ìîæíî íàïèñàòü åùå îäèí îïåðàòîð If…Then ñ ïðîòèâîïîëîæíûì óñëîâèåì è ïîìåñòèòü â íåãî íóæíûå ñòðîêè êîäà. Äàâàéòå ïîïðîáóåì!
134
Ãëàâà 9 Ñîçäàéòå íîâîå ïðèëîæåíèå Windows è íàçîâèòå åãî «IfThenOtherwise». Äîáàâüòå íà ôîðìó äâà ôëàæêà è êíîïêó. Èçìåíèòå çíà÷åíèå ñâîéñòâà Text êíîïêè íà IfThen. Ïîìåñòèòå â îáðàáîò÷èê åå íàæàòèÿ ñëåäóþùèé êîä: If CheckBox1.Checked = True Then Form.ActiveForm.BackColor = System.Drawing._ Color.Red End If If CheckBox1.Checked = False Then Form.ActiveForm.BackColor = System.Drawing._ Color.Blue End If
Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Íàæìèòå êíîïêó ñ íàäïèñüþ IfThen. Ôîðìà ñòàíåò ñèíåé. Óñòàíîâèòå ôëàæîê CheckBox1 è åùå ðàç íàæìèòå êíîïêó ñ íàäïèñüþ IfThen. Ôîðìà ñòàíåò êðàñíîé. Êàê ðàáîòàåò ýòîò êîä?  ïåðâîì îïåðàòîðå If…Then óñëîâèå ïðîâåðÿåò, óñòàíîâëåí ëè ôëàæîê: CheckBox1.Checked = True. Åñëè óñëîâèå âûïîëíÿåòñÿ, òî öâåò ôîíà (BackColor) ôîðìû èçìåíÿåòñÿ íà êðàñíûé. Âòîðîé îïåðàòîð If…Then ñîäåðæèò óñëîâèå, ïðîâåðÿþùåå, ñáðîøåí ëè ôëàæîê: CheckBox1.Checked = False (ïðîòèâîïîëîæíîå óñëîâèå). Åñëè ýòî óñëîâèå âûïîëíÿåòñÿ, òî öâåò ôîíà ôîðìû ìåíÿåòñÿ íà ñèíèé. Äà, â êîäå åñòü ïîâòîðåíèÿ, íî îí ðàáîòàåò! Åãî íåäîñòàòîê ïðèñóòñòâèå äâóõ ïî÷òè îäèíàêîâûõ îïåðàòîðîâ. Òàêîé ïîäõîä îòíèìàåò ëèøíåå âðåìÿ è ìîæåò ñòàòü ïðè÷èíîé îøèáîê.
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 9.2. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
ñîçäàòü ïðîåêò «IfThenOtherwise», îïèñàííûé â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå IfThenOtherwise. exe.
Âåòâëåíèå: ïîëíàÿ ôîðìà
135
9.3. Îïåðàòîð If
Then
Else Èñïîëüçîâàíèå äâóõ îïåðàòîðîâ If…Then ñ ïðîòèâîïîëîæíûìè óñëîâèÿìè îòíèìàåò âðåìÿ è ìîæåò ïðèâåñòè ê îøèáêàì. Âìåñòî ýòîãî èñïîëüçóéòå íîâûé âèä îïåðàòîðà, If…Then…Else, ÷òîáû óïðîñòèòü âàø êîä.
 ÿçûêå Visual Basic .NET åñòü àëüòåðíàòèâíàÿ âîçìîæíîñòü, èçáàâëÿþùàÿ îò íåîáõîäèìîñòè ïîâòîðÿòü ñòðîêè êîäà è óïðîùàþùàÿ åãî ïîíèìàíèå. Ýòà àëüòåðíàòèâà îïåðàòîð If…Then…Else. Ýòîò îïåðàòîð òðåáóåò òîëüêî îäíîãî óñëîâèÿ, íî ïîçâîëÿåò âûáèðàòü, êàêèå îïåðàòîðû âûïîëíÿòü ïðè âûïîëíåíèè óñëîâèÿ, à êàêèå ïðè íåâûïîëíåíèè. Îïåðàòîð If…Then…Else èñïîëüçóåòñÿ âìåñòî äâóõ îäèíàêîâûõ îïåðàòîðîâ If…Then ñ ïðîòèâîïîëîæíûìè óñëîâèÿìè. Âîò åãî ñèíòàêñèñ: If Óñëîâèå Then Ïîñëåäîâàòåëüíîñòü îïåðàòîðîâ 1 Else Ïîñëåäîâàòåëüíîñòü îïåðàòîðîâ 2 End If
Êàê ðàáîòàåò ýòîò êîä? Ñíà÷àëà ïðîâåðÿåòñÿ óñëîâèå. Åñëè îíî âûïîëíÿåòñÿ, òî âûïîëíÿåòñÿ Ïîñëåäîâàòåëüíîñòü îïåðàòîðîâ 1.  ïðîòèâíîì ñëó÷àå âûïîëíÿåòñÿ Ïîñëåäîâàòåëüíîñòü îïåðàòîðîâ 2. Ñîçäàäèì ïðîãðàììó «If-Then-Else» ñ ïîìîùüþ îïåðàòîðà If…Then…Else è äîêàæåì, ÷òî îíà ðàáîòàåò òî÷íî òàê æå, êàê è ñ äâóìÿ îòäåëüíûìè îïåðàòîðàìè If…Then ñ ïðîòèâîïîëîæíûìè óñëîâèÿìè. Äîáàâüòå íà ôîðìó åùå îäíó êíîïêó. Èçìåíèòå çíà÷åíèå åå ñâîéñòâà Text íà If-Then-Else.  îáðàáîò÷èê åå íàæàòèÿ ââåäèòå ñëåäóþùèé êîä: If CheckBox1.Checked = True Then Form.ActiveForm.BackColor = System.Drawing. Color.Red Else Form.ActiveForm.BackColor = System.Drawing. Color.Blue End If
Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Íàæìèòå êíîïêó ñ íàäïèñüþ If-Then-Else. Ôîðìà ñòàíåò ñèíåé. Óñòàíîâèòå ôëàæîê CheckBox1 è åùå ðàç íàæìèòå
136
Îáðàòèòå âíèìàíèå íà òî, ÷òî îïåðàòîðû ïîñëå Then è Else çàïèñàíû ñ îòñòóïîì. Visual Studio .NET äåëàåò ýòî àâòîìàòè÷åñêè îôîðìëåííûé òàêèì îáðàçîì êîä ëåã÷å ÷èòàòü, è îí âûãëÿäèò àêêóðàòíåå.
Ãëàâà 9 êíîïêó ñ íàäïèñüþ If-Then-Else. Ôîðìà ñòàíåò êðàñíîé. Ïðîãðàììà äåëàåò ñ ïîìîùüþ îäíîãî îïåðàòîðà òî æå ñàìîå, ÷òî ðàíüøå äåëàëà ñ ïîìîùüþ äâóõ! Êîä ïðîâåðÿåò, âûïîëíÿåòñÿ ëè óñëîâèå CheckBox1.Checked = True. Åñëè äà, òî âûïîëíÿåòñÿ ïåðâûé îïåðàòîð è ôîðìà ñòàíîâèòñÿ êðàñíîé.  ïðîòèâíîì ñëó÷àå âûïîëíÿåòñÿ âòîðîé îïåðàòîð è ôîðìà ñòàíîâèòñÿ ñèíåé. Äàâàéòå ðàçáåðåì åùå îäèí ïðèìåð ñ If…Then… Else. Ñîçäàäèì ïðîãðàììó «If-Then-Else-2», ïîìåñòèâ â êàæäóþ ÷àñòü îïåðàòîðà If…Then…Else íå ïî îäíîìó îïåðàòîðó, à ïî íåñêîëüêî.  îïåðàòîðå If…Then…Else ïîñëå If…Then è Else ìîæíî ðàçìåùàòü ñêîëüêî óãîäíî ñòðîê êîäà. Ââåäèòå êîä îáðàáîò÷èêà íàæàòèÿ êíîïêè Button1: If CheckBox1.Checked = True Then Form.ActiveForm.BackColor = System.Drawing._ Color.Red MessageBox.Show("I'm red.") TextBox1.Text = "I’m red. Else Form.ActiveForm.BackColor = System.Drawing._ Color.Blue MessageBox.Show("I'm blue.") TextBox1.Text = "I'm blue." End If
Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Íàæìèòå êíîïêó ñ íàäïèñüþ If-Then-Else, à çàòåì óñòàíîâèòå ôëàæîê CheckBox1 è åùå ðàç íàæìèòå êíîïêó ñ íàäïèñüþ If-Then-Else.
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 9.3. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
ñîçäàòü ïðîåêò «If-Then-Else», îïèñàííûé â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå If_Then_Else. exe.
Âåòâëåíèå: ïîëíàÿ ôîðìà
137
9.4. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET ñîçäàòü ïðîåêò «If-Then-Else-2», îïèñàííûé â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå If_Then_Else_2. exe.
9.5. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET
ñîçäàòü ïðîåêò «Ãîëüô». Ñîçäàéòå ôîðìó âðîäå ýòîé:
Êîãäà ïðîãðàììà çàïóñêàåòñÿ, ñâîéñòâà Text íàäïèñåé äîëæíû áûòü ïóñòûìè, à ïîëüçîâàòåëü äîëæåí ââåñòè â òåêñòîâûå ïîëÿ êîëè÷åñòâà î÷êîâ, íàáðàííûõ ó÷àñòíèêàìè. Ïðè íàæàòèè êíîïêè ñ íàäïèñüþ Compute äîëæíî âû÷èñëÿòüñÿ ñðåäíåå êîëè÷åñòâî î÷êîâ. Ïîñêîëüêó ñîäåðæèìîå òåêñòîâîãî ïîëÿ ñòðîêà, à íå ÷èñëî, åå ïðèäåòñÿ ïðåîáðàçîâûâàòü â ÷èñëî. Visual Basic .NET ïîçâîëÿåò ñäåëàòü ýòî ñ ïîìîùüþ ôóíêöèè Val(), íàõîäÿùåé ÷èñëîâîå çíà÷åíèå ñòðîêè, êîòîðîå ìîæíî ïðèñâîèòü ïåðåìåííîé, íàïðèìåð X. X = Val(TextBox1.Text)
Äëÿ êàæäîãî èãðîêà, åñëè åãî ÷èñëî î÷êîâ áîëüøå ñðåäíåãî, âûâåäèòå ñîîáùåíèå âðîäå «Õîðîøèé ðåçóëüòàò» â ñîîòâåòñòâóþùåé íàäïèñè, â ïðîòèâíîì ñëó÷àå âûâåäèòå ñîîáùåíèå «Òðåíèðóéòåñü».
138
Ãëàâà 9
9.4. Ïîøàãîâîå âûïîëíåíèå If À òåïåðü âîñïîëüçóåìñÿ îòëàäî÷íûìè ñðåäñòâàìè Visual Studio .NET è ïîøàãîâî âûïîëíèì êîä â îïåðàòîðå If…Then…Else. Òàêèì îáðàçîì ìû ñìîæåì óâèäåòü, êàê îí âûïîëíÿåòñÿ âíóòðè ïðîãðàììû. Ñîçäàéòå íîâîå ïðèëîæåíèå Windows è íàçîâèòå åãî «Step-In-If». Ïîìåñòèòå íà ôîðìó îäíó êíîïêó è îäèí ôëàæîê. Óñòàíîâèòå äëÿ ñâîéñòâà Checked ôëàæêà çíà÷åíèå True. Êîãäà ïðèëîæåíèå çàïóñòèòñÿ, ôëàæîê áóäåò óñòàíîâëåí. Âûïîëíèòå äâîéíîé ùåë÷îê ïî êíîïêå, ÷òîáû îòðåäàêòèðîâàòü îáðàáîò÷èê åå íàæàòèÿ. Äîáàâüòå â îáðàáîò÷èê ñëåäóþùèé êîä: Dim MyValue As Integer MyValue = 1 If CheckBox1.Checked = True Then MyValue = 2 Else MyValue = 3 End If
1. Óñòàíîâèòå òî÷êó îñòàíîâà â ïåðâîé ñòðîêå
êîäà (MyValue = 1), âûïîëíèâ äâîéíîé ùåë÷îê â ñåðîé îáëàñòè ñëåâà îò ýòîé ñòðîêè èëè ùåëêíóâ ïðàâîé êíîïêîé ïî ýòîé ñòðîêå è âûáðàâ èç êîíòåêñòíîãî ìåíþ ïóíêò Âñòàâèòü òî÷êó îñòàíîâà (Insert Breakpoint).
2. Ïîñòðîéòå è çàïóñòèòå ïðîåêò. Êîãäà îòêðîåòñÿ ôîðìà, íàæìèòå êíîïêó. Êîä âûïîëíèòñÿ äî ñòðîêè ñ òî÷êîé îñòàíîâà.
Âåòâëåíèå: ïîëíàÿ ôîðìà
139
3. Íàæìèòå êëàâèøó {F11}, ÷òîáû âûïîëíèòü
òåêóùóþ ñòðîêó êîäà MyValue = 1. Ïîäñâåòèòñÿ ñëåäóþùàÿ ñòðîêà.
4. Åùå ðàç íàæìèòå êëàâèøó {F11}, ÷òîáû âûïîëíèòü ñòðîêó êîäà
If CheckBox1.Checked = True Then
Ïîñêîëüêó ôëàæîê CheckBox1 óñòàíîâëåí, áóäåò ïîäñâå÷åíà ñëåäóþùàÿ ñòðîêà êîäà MyValue = 2.
140
Ãëàâà 9 5. Íàæìèòå êëàâèøó {F11}, ÷òîáû âûïîëíèòü
ñòðîêó êîäà MyValue = 2. Áóäåò ïîäñâå÷åíà ñòðîêà End If.
6. Íàæìèòå êëàâèøó {F11}, ÷òîáû âûïîëíèòü ñòðîêó êîäà End If Áóäåò ïîäñâå÷åíà ñëåäóþùàÿ ñòðîêà.
7. Íàæìèòå êëàâèøó {F11}, ÷òîáû âûïîëíèòü ñòðîêó êîäà End Sub Îïÿòü ïîÿâèòñÿ ôîðìà.
Âåòâëåíèå: ïîëíàÿ ôîðìà
141
8. Ñáðîñüòå ôëàæîê CheckBox1 è íàæìèòå êíîï-
êó. Ïîâòîðèòå ïîøàãîâîå âûïîëíåíèå îïåðàòîðà, íàæèìàÿ êëàâèøó {F11} è íàáëþäàÿ, êàêèå ñòðîêè êîäà áóäóò ïîäñâå÷èâàòüñÿ è âûïîëíÿòüñÿ. Íà ýòîò ðàç âûïîëíèòñÿ îïåðàòîð ïîñëå Else, ò. å. ñòðîêà MyValue = 3.
Âîò è âñå! Òåïåðü âû âèäåëè, êàê âûïîëíÿåòñÿ îïåðàòîð If…Then…Else ïðè ðàáîòå ïðîãðàììû!
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 9.6. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
ñîçäàòü ïðîåêò «Step-In-If». Ïðîâåñòè ïîøàãîâîå âûïîëíåíèå ïðîåêòà òàê, êàê ýòî îïèñàíî â ïàðàãðàôå. Ãîòîâûé ïðîåêò ñîäåðæèòñÿ â ñàìîðàñïàêîâûâàþùåìñÿ àðõèâå Step_In_If.exe.
9.5. Îïåðàòîðû If â C# è J#  ÿçûêàõ C# è J# åñòü óñëîâíûå îïåðàòîðû, ðàáîòàþùèå òî÷íî òàê æå, êàê If…Then è If…Then…Else â ÿçûêå Visual Basic .NET. Íî èõ ñèíòàêñèñ íåìíîãî äðóãîé. Âîò ïðèìåð èç C#: int MyAge; MyAge=15; if (MyAge==15) { MessageBox.Show("I am 15."); MessageBox.Show("I am still 15."); }
142
Ãëàâà 9 Ñíà÷àëà ìû îáúÿâëÿåì öåëî÷èñëåííóþ ïåðåìåííóþ MyAge è ïðèñâàèâàåì åé íà÷àëüíîå çíà÷åíèå. Çàòåì ìû íà÷èíàåì óñëîâíûé îïåðàòîð ñ êëþ÷åâîãî ñëîâà if îáðàòèòå âíèìàíèå, ÷òî âñå áóêâû â íåì ñòðî÷íûå. Çà ýòèì ñëîâîì èäåò óñëîâèå MyAge==3. Óñëîâèå ïîìåùåíî â ñêîáêàõ. Âû, íàâåðíîå, îáðàòèëè âíèìàíèå íà äâà çíàêà «ðàâíî» ïîäðÿä.  ÿçûêå C# òàê îáîçíà÷àåòñÿ îïåðàöèÿ ñðàâíåíèÿ (â Visual Basic .NET îíà îáîçíà÷àåòñÿ îäíèì çíàêîì). Îïåðàòîðû, êîòîðûå äîëæíû âûïîëíÿòüñÿ ïðè âûïîëíåíèè óñëîâèÿ, ïîìåùåíû â ôèãóðíûå ñêîáêè {...}. ×òîáû êîä áûëî óäîáíåå ÷èòàòü, íåêîòîðûå ïðîãðàììèñòû ïîìåùàþò ôèãóðíûå ñêîáêè â îòäåëüíûõ ñòðîêàõ. Çàìåòüòå, ÷òî êàæäûé îïåðàòîð çàêàí÷èâàåòñÿ òî÷êîé ñ çàïÿòîé. Êðîìå òîãî, êëþ÷åâîå ñëîâî Then âîîáùå íå èñïîëüçóåòñÿ! Êîä íà ÿçûêå J# áóäåò òî÷íî òàêèì æå, êàê è íà C#. Äàâàéòå ðàçáåðåì îïåðàòîð If…Then…Else íà ÿçûêå C#. Ïîñìîòðèòå, ÷òî åñòü îáùåãî ìåæäó ýòèìè îïåðàòîðàìè â C# è Visual Basic .NET è ÷åì îíè îòëè÷àþòñÿ. int MyAge; MyAge=15; if (MyAge==16) { MessageBox.Show("I MessageBox.Show("I } else { MessageBox.Show("I MessageBox.Show("I }
am 15."); am still 15.");
am 16."); am still 16.");
Óñëîâèå ñíîâà ïîìåùåíî â ñêîáêè. Çàìåòüòå, ÷òî íà ýòîò ðàç çäåñü äâà áëîêà îïåðàòîðîâ îäèí ïîñëå óñëîâèÿ è îäèí ïîñëå else. Êàæäûé áëîê ïîìåùåí â ôèãóðíûå ñêîáêè. Çàìåòüòå, ÷òî êàæäûé îïåðàòîð
Âåòâëåíèå: ïîëíàÿ ôîðìà
143
çàêàí÷èâàåòñÿ òî÷êîé ñ çàïÿòîé. Êëþ÷åâîå ñëîâî Then íå èñïîëüçóåòñÿ.  J# ñèíòàêñèñ îïåðàòîðà If…Then…Else òî÷íî òàêîé æå, êàê è â C#.
Çàäàíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ 9.7. Â ñèñòåìå ïðîãðàììèðîâàíèÿ Visual Basic .NET Microsoft-CD
ñîçäàòü ïðîåêò «Ìàãè÷åñêèé êâàäðàò». Ñîçäàéòå òàêóþ ôîðìó, êàê ïîêàçàíî íà ðèñóíêå, èëè, åñëè æàëü òðàòèòü âðåìÿ, èñïîëüçóéòå ñàìîðàñïàêîâûâàþùèéñÿ àðõèâ Ìàãè÷åñêèé_êâàäðàò.exe.
Ñîçäàéòå ïðîãðàììíûé êîä, êîòîðûé ÷èñëà îò 1 äî 9 ðàçìåùàåò â ìàññèâå ðàçìåðîì 3 × 3 òàê, ÷òîáû ñóììà â êàæäîé ñòðîêå, êàæäîì ñòîëáöå è êàæäîé äèàãîíàëè áûëà îäèíàêîâîé. Ïðè íàæàòèè êíîïêè ñ íàäïèñüþ Check the Totals äîëæíû âû÷èñëÿòüñÿ ñóììû òðåõ ñòðîê, òðåõ ñòîëá-
144
Ãëàâà 9 öîâ è äâóõ äèàãîíàëåé, ðåçóëüòàòû äîëæíû îòîáðàæàòüñÿ â ïîëÿõ îò TextBox10 äî TextBox17 (îò ëåâîãî íèæíåãî óãëà äî âåðõíåãî ïðàâîãî). Ïîñêîëüêó ñîäåðæèìîå òåêñòîâîãî ïîëÿ ñòðîêà, à íå ÷èñëî, åå ïðèäåòñÿ ïðåîáðàçîâûâàòü â ÷èñëî. Visual Basic .NET ïîçâîëÿåò ñäåëàòü ýòî ñ èñïîëüçîâàíèåì ôóíêöèè Val(), êîòîðàÿ íàõîäèò ÷èñëîâîå çíà÷åíèå ñòðîêè. Êàæäàÿ ñóììà äîëæíà áûòü ðàâíà 15. Ñóììà ÷èñåë â äåâÿòè òåêñòîâûõ ïîëÿõ äîëæíà áûòü ðàâíà 45.
9.6. Áóëåâû îïåðàöèè è îïåðàöèè ñðàâíåíèÿ â C# è J# Âû äîëæíû çíàòü åùå êîå-÷òî î ðàçëè÷èÿõ ìåæäó ÿçûêîì Visual Basic .NET è ÿçûêàìè C# è J# ïðè èñïîëüçîâàíèè îïåðàòîðîâ If…Then è If…Then…Else. Âî-ïåðâûõ, áóëåâû îïåðàöèè îáîçíà÷àþòñÿ ïî-äðóãîìó. Âìåñòî 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());
Âåòâëåíèå: ïîëíàÿ ôîðìà
145
Îáðàòèòå âíèìàíèå íà êëþ÷åâûå ñëîâà bool (òèï Boolean), true è false îíè âñå íàáðàíû ñòðî÷íûìè áóêâàìè. Ïåðåìåííûå isBilled, isLate è isDone îáúÿâëåíû êàê bool (òèï Boolean). Îáðàòèòå âíèìàíèå íà îïåðàöèþ È (&&) è îïåðàöèþ Íå (!) â C#. Ïîñêîëüêó C# è J# íå âûïîëíÿþò àâòîìàòè÷åñêèõ ïðåîáðàçîâàíèé çíà÷åíèé ðàçëè÷íûõ òèïîâ â ñòðîêîâûå, èñïîëüçóåòñÿ ìåòîä ToString. ßçûê J#. Âîò òàêîé æå êîä íà J#: boolean isBilled=true; boolean isLate=false; boolean isDone; isDone=isBilled && !isLate; MessageBox.Show(System.Convert.ToString(isDone));
Êîä âûãëÿäèò ïî÷òè òàê æå, êàê êîä íà C#, íî åñòü è íåêîòîðûå îòëè÷èÿ. Îáðàòèòå âíèìàíèå íà òî, êàê îáúÿâëÿåòñÿ ïåðåìåííàÿ boolean (òèï Boolean). Âñå ïåðåìåííûå isBilled, isLate è isDone îáúÿâëåíû êàê boolean.  êîäå íà J# òàêæå ïî-äðóãîìó óêàçûâàåòñÿ ïðåîáðàçîâàíèå çíà÷åíèÿ òèïà Boolean â ñòðîêó ñ ïîìîùüþ ìåòîäà System.Convert.ToString. Íåêîòîðûå îïåðàöèè ñðàâíåíèÿ â ÿçûêàõ C# è J# îáîçíà÷àþòñÿ íå òàê, êàê â Visual Basic .NET. Âû óæå âèäåëè, ÷òî ïðîâåðêà ðàâåíñòâà îáîçíà÷àåòñÿ == âìåñòî =. Êðîìå òîãî, ïðîâåðêà íåðàâåñòâà â C# è J# îáîçíà÷àåòñÿ != âìåñòî . Âîò òàáëèöà ñ îáîçíà÷åíèÿìè îïåðàöèé ñðàâíåíèÿ: Îïåðàöèÿ ñðàâíåíèÿ
Visual Basic .NET
C#
J#
Ðàâíî
=
==
==
Áîëüøå ÷åì
>
>
>
Ìåíüøå ÷åì
=
Ìåíüøå èëè ðàâíî