Òåìà : Îñíîâû
ïðîãðàììèðîâàíèÿ íà Ñ++.
3. Äèðåêòèâû ïðåïðîöåññîðà è
êîììåíòàðèè
4.Ñòàíäàðòíûå òèïû äàííûõ â C++
5.Îïåðàöèè ââîäà è âûâîäà äàííûõ â C++
6.Ïðåîáðàçîâàíèÿ òèïîâ äàííûõ â C++
8.Ïîëüçîâàòåëüñêèå òèïû äàííûõ â C++:
ñòðóêòóðû
 êàæäîì ÿçûêå ïðîãðàììèðîâàíèÿ ñóùåñòâóåò îñíîâà,
áåç çíàíèÿ êîòîðîé íåâîçìîæíî íàïèñàòü äàæå ñàìîé ïðîñòîé ïðîãðàììû.
 äàííîé òåìå ðàññìàòðèâàþòñÿ îñíîâû C++:
· ñòðóêòóðà ïðîãðàììû
· ïåðåìåííûå
· áàçîâûå îïåðàöèè ââîäà/âûâîäà
· êîììåíòàðèè
· àðèôìåòè÷åñêèå îïåðàöèè
· îïåðàöèè èíêðåìåíòà
· ïðåîáðàçîâàíèå òèïîâ
· áèáëèîòå÷íûå ôóíêöèè.
Ðàññìîòðèì ñàìûé ïðîñòîé, ïðèìåð ïðîãðàììû íà C++,
êîòîðàÿ ïðîñòî âûâîäèò òåêñò ñîîáùåíèÿ íà ýêðàí.
#include
<iostream>
using namespace std;
int
main()
{
cout
<< "ß ó÷óñü ïðîãðàììèðîâàòü â C++\n";
return 0;
}
Íåñìîòðÿ íà ñâîé íåáîëüøîé ðàçìåð, ýòîò ïðèìåð
äåìîíñòðèðóåò òèïè÷íóþ ñòðóêòóðó ïðîãðàììû íà C++. Ðàññìîòðèì ýòó ñòðóêòóðó â
äåòàëÿõ. Ôóíêöèè ïðåäñòàâëÿþò ñîáîé îñíîâó, íà êîòîðîé ñòðîèòñÿ ëþáàÿ ïðîãðàììà
C++. Äàííàÿ ïðîãðàììà ñîñòîèò èç åäèíñòâåííîé ôóíêöèè ñ íàçâàíèåì main ().
 ñîñòàâ ýòîé ôóíêöèè íå âõîäÿò äâå ïåðâûå ñòðî÷êè
êîäà, íà÷èíàþùèåñÿ ñî ñëîâ #include è using. Êàê èçâåñòíî, ôóíêöèÿ ìîæåò âõîäèòü â ñîñòàâ êëàññà,
è â ýòîì ñëó÷àå îíà íàçûâàåòñÿ ìåòîäîì êëàññà. Ôóíêöèè ìîãóò ñóùåñòâîâàòü è
îòäåëüíî îò êëàññîâ. Ïîêà áóäåì ðàññìàòðèâàòü ëèøü ôóíêöèè, êîòîðûå ÿâëÿþòñÿ
íåçàâèñèìûìè, êàê ôóíêöèÿ main() â ïðèìåðå.
Èìÿ ôóíêöèè. Êðóãëûå ñêîáêè, èäóùèå
âñëåä çà èìåíåì main(), ÿâëÿþòñÿ îòëè÷èòåëüíîé ÷åðòîé ôóíêöèé: åñëè áû èõ íå
áûëî, òî êîìïèëÿòîð íå ñìîã áû îòëè÷èòü èìÿ ïåðåìåííîé èëè äðóãîãî ýëåìåíòà
ïðîãðàììû îò èìåíè ôóíêöèè. Ñëîâî int, ïðåäâàðÿþùåå
èìÿ ôóíêöèè, óêàçûâàåò íà òî, ÷òî ýòà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå òèïà int.
Òåëî ôóíêöèè. Òåëî ôóíêöèè çàêëþ÷åíî
â ôèãóðíûå ñêîáêè. Îíè îïðåäåëÿþò ãðàíèöû áëîêà îïåðàòîðîâ ïðîãðàììû. Ôèãóðíûå
ñêîáêè, îáðàìëÿþùèå òåëî ôóíêöèè, îáÿçàòåëüíû. Â ïðèìåðå òåëî ôóíêöèè ñîñòîèò
âñåãî ëèøü èç äâóõ îïåðàòîðîâ: îäèí èç íèõ íà÷èíàåòñÿ ñëîâîì cout, äðóãîé - ñëîâîì return.
Ôóíêöèÿ main().
Êîãäà ïðîãðàììà íà ÿçûêå C++ çàïóñêàåòñÿ íà âûïîëíåíèå, ïåðâûì èñïîëíÿåìûì
îïåðàòîðîì ñòàíîâèòñÿ ïåðâûé îïåðàòîð ôóíêöèè main(). Ïðîãðàììà ìîæåò ñîñòîÿòü
èç ìíîæåñòâà ôóíêöèé, êëàññîâ è ïðî÷èõ ýëåìåíòîâ, íî ïðè åå çàïóñêå óïðàâëåíèå âñåãäà
ïåðåäàåòñÿ ôóíêöèè main(). Åñëè â ïðîãðàììå íå ñîäåðæèòñÿ ôóíêöèè ñ èìåíåì
main(), òî ïðè ïîïûòêå çàïóñòèòü òàêóþ ïðîãðàììó áóäåò âûâåäåíî ñîîáùåíèå îá
îøèáêå. Â ïðîãðàììàõ íà C++ ðåàëüíûå äåéñòâèÿ, âûïîëíÿåìûå
ýòèìè ïðîãðàììàìè, ñâîäÿòñÿ ê âûçîâó ôóíêöèåé main() ìåòîäîâ ðàçëè÷íûõ
îáúåêòîâ. Êðîìå òîãî, ôóíêöèÿ main() ìîæåò âûçûâàòü äðóãèå, íåçàâèñèìûå
ôóíêöèè.
Îïåðàòîðû. Îïåðàòîð ÿâëÿåòñÿ
ñòðóêòóðíîé åäèíèöåé ïðîãðàììû íà C++. Â ïðèìåðå ñîäåðæàòñÿ 2 îïåðàòîðà:
1. cout
<< "ß ó÷óñü ïðîãðàììèðîâàòü â C++\n";
2. return
0;
Ïåðâûé îïåðàòîð çàäàåò äåéñòâèå ïî âûâîäó ôðàçû,
çàêëþ÷åííîé â êàâû÷êè, íà ýêðàí. Áîëüøèíñòâî îïåðàòîðîâ ÿâëÿþòñÿ óêàçàíèÿìè
êîìïüþòåðó ñîâåðøèòü êàêîå-ëèáî äåéñòâèå. Îêîí÷àíèå îïåðàòîðà îáîçíà÷àåòñÿ
çíàêîì «òî÷êà ñ çàïÿòîé» - ÿâëÿåòñÿ îáÿçàòåëüíûì. Îïåðàòîð return
0; ÿâëÿåòñÿ óêàçàíèåì ôóíêöèè main() âîçâðàòèòü çíà÷åíèå 0 âûçûâàþùåìó
îêðóæåíèþ; â äàííîì ñëó÷àå ýòî ìîæåò áûòü êîìïèëÿòîð èëè îïåðàöèîííàÿ ñèñòåìà.
Ê ðàçäåëÿþùèì çíàêàì îòíîñÿòñÿ ïðîáåëû, ñèìâîëû âîçâðàòà êàðåòêè è ïåðåõîäà íà
äðóãóþ ñòðîêó è äð.Ýòè ñèìâîëû íå îáðàáàòûâàþòñÿ
êîìïèëÿòîðîì. Ìîæíî çàïèñàòü íåñêîëüêî îïåðàòîðîâ íà îäíîé ñòðîêå, ðàçäåëèòü èõ
ëþáûì êîëè÷åñòâîì ïðîáåëîâ, òàáóëÿöèé èëè ïóñòûõ ñòðîê, è êîìïèëÿòîð âî âñåõ
ñëó÷àÿõ îáðàáîòàåò èõ îäèíàêîâî. Åñòü íåñêîëüêî èñêëþ÷åíèé èç îáùåãî ïðàâèëà,
êîãäà êîìïèëÿòîð îáðàáàòûâàåò ðàçäåëÿþùèå ñèìâîëû. Ïåðâîå èñêëþ÷åíèå - ñòðîêà
#include ïðîãðàììíîãî êîäà, ÿâëÿþùàÿñÿ äèðåêòèâîé ïðåïðîöåññîðà è
çàïèñûâàþùàÿñÿ â îäíó ñòðîêó. Ñòðîêîâûå êîíñòàíòû, òàêèå, êàê "ß ó÷óñü
ïðîãðàììèðîâàòü â C++\n", íåëüçÿ ðàçáèâàòü íà
íåñêîëüêî ñòðîê êîäà.
3
Äèðåêòèâû ïðåïðîöåññîðà è êîììåíòàðèè
Ïåðâûå äâå ñòðîêè, ñ êîòîðûõ íà÷èíàåòñÿ ïðèìåð,
ÿâëÿþòñÿ äèðåêòèâàìè. Äèðåêòèâû íåëüçÿ ñ÷èòàòü ÷àñòüþ ÿçûêà C++, îäíàêî èõ èñïîëüçîâàíèå
ÿâëÿåòñÿ íåîáõîäèìûì. Ñòðîêà #include <iostream> íàçûâàåòñÿ äèðåêòèâîé ïðåïðîöåññîðà -
óêàçàíèåì êîìïèëÿòîðó âêëþ÷èòü â êîìïèëèðóåìûé ôàéë ñîäåðæèìîå äðóãîãî ôàéëà.
Ïðåïðîöåññîðîì íàçûâàåòñÿ ñïåöèàëüíàÿ ÷àñòü êîìïèëÿòîðà, îáðàáàòûâàþùàÿ ïîäîáíûå
äèðåêòèâû ïåðåä íà÷àëîì ïðîöåññà êîìïèëÿöèè êîäà.#include
ÿâëÿåòñÿ îäíîé èç ìíîãèõ äèðåêòèâ ïðåïðîöåññîðà, êàæäàÿ èç êîòîðûõ ïðåäâàðÿåòñÿ
ñèìâîëîì #. Ôàéë, âêëþ÷àåìûé ñ ïîìîùüþ äèðåêòèâû #include, îáû÷íî íàçûâàþò
çàãîëîâî÷íûì ôàéëîì.
Çàãîëîâî÷íûå ôàéëû.
 ïðèìåðå äèðåêòèâà #include ÿâëÿåòñÿ óêàçàíèåì âêëþ÷èòü â èñõîäíûé òåêñò
ñîäåðæèìîå ôàéëà iostream ïåðåä êîìïèëÿöèåé
êîäà. iostream
ÿâëÿåòñÿ ïðèìåðîì çàãîëîâî÷íîãî ôàéëà - ñîäåðæèò îïèñàíèÿ, íåîáõîäèìûå äëÿ
ðàáîòû ñ ïåðåìåííîé cout è îïåðàöèåé <<. Áåç ýòèõ îïèñàíèé êîìïèëÿòîðó íå áóäåò
èçâåñòíî, ÷òî çíà÷èò èìÿ cout, à óïîòðåáëåíèå
îïåðàöèè << áóäåò âîñïðèíÿòî êàê íåêîððåêòíîå. Ñóùåñòâóåò ìíîæåñòâî
çàãîëîâî÷íûõ ôàéëîâ.  C++ çàãîëîâî÷íûå ôàéëû íå èìåþò ðàñøèðåíèÿ.
Äèðåêòèâà using. Êàæäóþ ïðîãðàììó íà C++ ìîæíî
ðàçáèòü íà íåñêîëüêî òàê íàçûâàåìûõ ïðîñòðàíñòâ èìåí. Ïðîñòðàíñòâîì èìåí
íàçûâàåòñÿ îáëàñòü ïðîãðàììû, â êîòîðîé ðàñïîçíàåòñÿ îïðåäåëåííàÿ ñîâîêóïíîñòü
èìåí. Ýòè èìåíà íåèçâåñòíû çà ïðåäåëàìè äàííîãî ïðîñòðàíñòâà èìåí. Äèðåêòèâà using namespace std; îçíà÷àåò, ÷òî âñå îïðåäåëåííûå â ïðîãðàììå èìåíà áóäóò
îòíîñèòüñÿ ê ïðîñòðàíñòâó èìåí ñ èìåíåì std.
Ðàçëè÷íûå ýëåìåíòû ïðîãðàììû îïèñàíû ñ èñïîëüçîâàíèåì ïðîñòðàíñòâà èìåí std, íàïðèìåð ïåðåìåííàÿ cout.
Åñëè íå èñïîëüçîâàòü äèðåêòèâó using, òî ê ýòèì
ýëåìåíòàì ïðîãðàììû ïðèäåòñÿ êàæäûé ðàç äîáàâëÿòü èìÿ std:
std::cout << "ß ó÷óñü ïðîãðàììèðîâàòü â C++\n";
Äèðåêòèâà using.
Êàæäóþ ïðîãðàììó íà C++ ìîæíî ðàçáèòü íà íåñêîëüêî òàê íàçûâàåìûõ ïðîñòðàíñòâ
èìåí.
Ïðîñòðàíñòâîì èìåí íàçûâàåòñÿ îáëàñòü ïðîãðàììû, â
êîòîðîé ðàñïîçíàåòñÿ îïðåäåëåííàÿ ñîâîêóïíîñòü èìåí.Ýòè
èìåíà íåèçâåñòíû çà ïðåäåëàìè äàííîãî ïðîñòðàíñòâà èìåí. Äèðåêòèâà using namespace std; îçíà÷àåò, ÷òî âñå îïðåäåëåííûå â ïðîãðàììå èìåíà áóäóò
îòíîñèòüñÿ ê ïðîñòðàíñòâó èìåí ñ èìåíåì std.Åñëè íå
èñïîëüçîâàòü äèðåêòèâó using, òî ê ýòèì ýëåìåíòàì
ïðîãðàììû ïðèäåòñÿ êàæäûé ðàç äîáàâëÿòü èìÿ std:
std::cout
<< "ß ó÷óñü ïðîãðàììèðîâàòü â C++\n";
Êîììåíòàðèè ÿâëÿþòñÿ âàæíîé ÷àñòüþ ëþáîé ïðîãðàììû.
Îíè ïîìîãàþò ðàçîáðàòüñÿ â äåéñòâèÿõ ïðîãðàììû êàê
ðàçðàáîò÷èêó, òàê è ëþáîìó äðóãîìó, ÷èòàþùåìó êîä. Êîìïèëÿòîð èãíîðèðóåò âñå,
÷òî ïîìå÷åíî â ïðîãðàììå êàê êîììåíòàðèé, ïîýòîìó êîììåíòàðèè íå âêëþ÷àþòñÿ â
ñîäåðæèìîå èñïîëíÿåìîãî ôàéëà è íèêàê íå âëèÿþò íà õîä èñïîëíåíèÿ ïðîãðàììû.
Äîïîëíèì
ïðèìåð êîììåíòàðèÿìè.
#include <iostream> //äèðåêòèâà ïðåïðîöåññîðà
using namespace std; //äèðåêòèâà using
int main() //ôóíêöèÿ ñ èìåíåì main
{ //íà÷àëî òåëà
ôóíêöèè
cout
<< "Ó êàæäîé ýïîõè ñâîé ÿçûê\n«;
//îïåðàòîð
return
0; //îïåðàòîð
} //êîíåö òåëà
ôóíêöèè
Êîììåíòàðèè íà÷èíàþòñÿ ñ äâîéíîé êîñîé ÷åðòû // è
çàêàí÷èâàþòñÿ êîíöîì ñòðîêè. Êîììåíòàðèé ìîæåò íà÷èíàòüñÿ êàê â íà÷àëå ñòðîêè,
òàê è ïîñëå êàêîãî-ëèáî îïåðàòîðà.
Êîììåíòàðèè ðåêîìåíäóåòñÿ èñïîëüçîâàòü, ÷òîáû
÷åëîâåê, ÷èòàþùèé ëèñòèíã ïðîãðàììû, ïîíèìàë ìåõàíèçì ðàáîòû ïðîãðàììû. Çàäà÷à
êîììåíòàðèåâ - äàòü îáùèå ïîÿñíåíèÿ ôóíêöèîíèðîâàíèÿ îòäåëüíûõ áëîêîâ
ïðîãðàììû.
4
Ñòàíäàðòíûå òèïû äàííûõ â C++
Ïåðåìåííûå ÿâëÿþòñÿ ôóíäàìåíòàëüíîé ÷àñòüþ ëþáîãî
ÿçûêà. Êàæäàÿ ïåðåìåííàÿ èìååò èìÿ è ìîæåò ïðèíèìàòü ðàçëè÷íûå çíà÷åíèÿ.
Ïåðåìåííûå õðàíÿòñÿ â îïðåäåëåííûõ ó÷àñòêàõ ïàìÿòè. Êîãäà ïåðåìåííîé
ïðèñâàèâàåòñÿ çíà÷åíèå, îíî çàïèñûâàåòñÿ â ÿ÷åéêó ïàìÿòè, ñâÿçàííóþ ñ äàííîé
ïåðåìåííîé. Áîëüøèíñòâî ÿçûêîâ ïðîãðàììèðîâàíèÿ ïîääåðæèâàþò îïðåäåëåííûé íàáîð
òèïîâ ïåðåìåííûõ, â êîòîðûé âõîäÿò öåëûå, âåùåñòâåííûå è ñèìâîëüíûå òèïû.
Íóæíî ÷åòêî çíàòü ðàçíèöó ìåæäó òåðìèíàìè
îïðåäåëåíèå ïåðåìåííîé è îáúÿâëåíèå ïåðåìåííîé. Îáúÿâëåíèå ïåðåìåííîé
ïðåäïîëàãàåò óêàçàíèå èìåíè ïåðåìåííîé (íàïðèìåð, var1) è åå òèïà (int è ò. ä.). Åñëè ïðè îáúÿâëåíèè ïåðåìåííîé îäíîâðåìåííî
âûäåëÿåòñÿ ïàìÿòü ïîä íåå, òî ïðîèñõîäèò îïðåäåëåíèå ïåðåìåííîé. Îïåðàòîðû int var1; int var2; ÿâëÿþòñÿ è
îáúÿâëåíèÿìè, è îïðåäåëåíèÿìè, ïîñêîëüêó âûäåëÿåòñÿ ïàìÿòü ïîä ïåðåìåííûå var1
è var2.  ïðîãðàììàõ ÷àùå óïîòðåáëÿþò îïðåäåëåíèÿ.
Èìÿ ïåðåìåííîé. Â ïðèâåäåííîì
ïðèìåðå èñïîëüçóþòñÿ ïåðåìåííûå ñ èìåíàìè var1 è var2. Èìåíà, äàâàåìûå
ïåðåìåííûì è äðóãèì ýëåìåíòàì ïðîãðàììû, íàçûâàþòñÿ èäåíòèôèêàòîðàìè.
Ïðè ñîñòàâëåíèè èäåíòèôèêàòîðà èñïîëüçóþòñÿ áóêâû è
íèæíåãî è âåðõíåãî ðåãèñòðîâ, öèôðû îò 0 äî 9, è ñèìâîë ïîä÷åðêèâàíèÿ _.
Ïåðâûé ñèìâîë èäåíòèôèêàòîðà äîëæåí áûòü ëèáî
áóêâîé, ëèáî ñèìâîëîì ïîä÷åðêèâàíèÿ. Äëèíà èäåíòèôèêàòîðà òåîðåòè÷åñêè íå
îãðàíè÷èâàåòñÿ, íî áîëüøèíñòâî êîìïèëÿòîðîâ íå ðàñïîçíàþò èäåíòèôèêàòîðû äëèíîé
áîëåå 64 ñèìâîëîâ. Êîìïèëÿòîð ðàçëè÷àåò áóêâû âåðõíåãî è íèæíåãî ðåãèñòðà,
ïîýòîìó èìåíà Var è VAR áóäóò âîñïðèíèìàòüñÿ êàê
ðàçëè÷íûå.  êà÷åñòâå èìåí ïåðåìåííûõ â C++ íåëüçÿ èñïîëüçîâàòü êëþ÷åâûå ñëîâà.
Êëþ÷åâîå ñëîâî - ýòî çàðåçåðâèðîâàííîå ñëîâî, èìåþùåå îñîáîå çíà÷åíèå.
Ïðèìåðàìè êëþ÷åâûõ ñëîâ ìîãóò ñëóæèòü int, class, if, while.
Æåëàòåëüíî, ÷òîáû èìÿ ïåðåìåííîé îòðàæàëî ñìûñë åå ñîäåðæèìîãî.
Öåëî÷èñëåííàÿ ïåðåìåííàÿ.
Öåëûå òèïû ñîîòâåòñòâóþò öåëûì ÷èñëàì, òèï äàííûõ íóæåí äëÿ òîãî, ÷òîáû
îïåðèðîâàòü ñ äèñêðåòíûì ÷èñëîì îáúåêòîâ.
Ñóùåñòâóåò íåñêîëüêî öåëûõ òèïîâ äàííûõ, èìåþùèõ
ðàçëè÷íóþ äëèíó.
Ðàñïðîñòðàíåííûì ÿâëÿåòñÿ òèï int,
ðàçìåð ïåðåìåííîé ýòîãî òèïà ÿâëÿåòñÿ ñèñòåìíî-çàâèñèìûì.
 32-ðàçðÿäíûõ ÎÑ ðàçìåð ïåðåìåííîé int ðàâåí 4 áàéòàì (32 áèòàì), ÷òî ïîçâîëÿåò õðàíèòü â
ïåðåìåííîé òèïà int çíà÷åíèÿ îò -2 147 483 648 äî
2 147 483 647.
Ôðàãìåíò
ïðîãðàììû, èñïîëüçóþùåé ïåðåìåííûå òèïà int:
int
var1; //îïèñàíèå
ïåðåìåííîé var1
int
var2; //îïèñàíèå
ïåðåìåííîé var2
var1
=20; //ïðèñâîåíèå çíà÷åíèÿ
ïåðåìåííîé var1
var2
= var1 +10; //ïðèñâîåíèå çíà÷åíèÿ
ïåðåìåííîé var2
cout
<< "var1+10 ðàâíî "; //âûâîä
ñòðîêè
cout
<< var2 << endl; //âûâîä çíà÷åíèÿ ïåðåìåííîé var2
Îïåðàòîðû
int var1; int var2;
îïðåäåëÿþò äâå öåëûå ïåðåìåííûå var1 è var2. Êëþ÷åâîå ñëîâî int
îïðåäåëÿåò òèï ïåðåìåííîé. Ïîäîáíûå îïåðàòîðû, íàçûâàåìûå îáúÿâëåíèÿìè, äîëæíû
ðàçäåëÿòüñÿ òî÷êîé ñ çàïÿòîé (;), êàê è ëþáûå äðóãèå
îïåðàòîðû ïðîãðàììû. Ïåðåä òåì êàê âîñïîëüçîâàòüñÿ ïåðåìåííîé, îáÿçàòåëüíî
íóæíî îáúÿâèòü åå. Îáúÿâëåíèÿ ïåðåìåííûõ ìîãóò ðàñïîëàãàòüñÿ â ëþáîì ìåñòå
ïðîãðàììû. Íå îáÿçàòåëüíî äåëàòü âñå îáúÿâëåíèÿ ïåðåìåííûõ äî ïîÿâëåíèÿ ïåðâîãî
èñïîëíÿåìîãî îïåðàòîðà. Òåì íå ìåíåå, îáúÿâëåíèÿ íàèáîëåå ÷àñòî óïîòðåáëÿåìûõ
ïåðåìåííûõ öåëåñîîáðàçíî ïðîèçâîäèòü â íà÷àëå ïðîãðàììû, ÷òîáû îáåñïå÷èòü åå
óäîáî÷èòàåìîñòü. Îïåðàöèÿ ïðèñâàèâàíèÿ. Îïåðàòîðû
var1
= 20;
var2
= var1 + 10;
- ïðèñâàèâàþò çíà÷åíèÿ
ïåðåìåííûì var1 è var2.
- çíàê = îçíà÷àåò
ïðèñâàèâàíèå çíà÷åíèÿ, ñòîÿùåãî â ïðàâîé åãî ÷àñòè, ïåðåìåííîé, ñòîÿùåé â ëåâîé
÷àñòè.
- ïåðåìåííîé var1, äî ýòîãî íå èìåâøåé çíà÷åíèÿ,
ïðèñâàèâàåòñÿ çíà÷åíèå 20.
- êîíñòàíòû ñîõðàíÿþò ñâîå çíà÷åíèå íà ïðîòÿæåíèè âñåãî
âûïîëíåíèÿ ïðîãðàììû.
- çíà÷åíèå öåëîé êîíñòàíòû äîëæíî ñîäåðæàòüñÿ â èíòåðâàëå,
ñîîòâåòñòâóþùåì äèàïàçîíó ïðåäñòàâëåíèÿ öåëûõ ÷èñåë.
- îïåðàòîð cout <<
"var1+10 ðàâíî "; âûâîäèò íà ýêðàí ñòðîêîâóþ êîíñòàíòó, à îïåðàòîð cout << var2 << endl;
îòîáðàæàåò çíà÷åíèå ïåðåìåííîé var2.
- îïåðàöèÿ << è îáúåêò cout
çíàþò, êàêèì îáðàçîì îòëè÷àòü öåëîå ÷èñëî îò ñòðîêè è êàê îáðàáàòûâàòü êàæäîå
èç íèõ.
- åñëè âûâîäèòñÿ íà ýêðàí öåëîå ÷èñëî, òî îíî îòîáðàæàåòñÿ â
÷èñëîâîì ôîðìàòå, à ïðè âûâîäå ñòðîêè îíà îòîáðàæàåòñÿ â âèäå òåêñòà.
- ýòî êàæåòñÿ î÷åâèäíûì, íî çà ýòèìè äåéñòâèÿìè ñòîèò
ìåõàíèçì ïåðåãðóçêè îïåðàöèé, òèïè÷íûé äëÿ C++.
Ïðèìåð
ïðîãðàììû
#include <iostream.h>
int main()
int year_now, age_now, another_year, another_age;
cout
<< "Ââåäèòå òåêóùèé ãîä è íàæìèòå ENTER.\n";
cin
>> year_now;
cout
<< "Ââåäèòå ñâîé âîçðàñò (â ãîäàõ).\n";
cin
>> age_now;
cout
<< "Ââåäèòå ãîä, äëÿ êîòîðîãî âû õîòèòå óçíàòü ñâîé âîçðàñò.\n";
cin >> another_year;
another_age = another_year - (year_now - age_now);
if (another_age >= 0)
{
cout
<< "Â " << another_year << " ãîäó âàì áóäåò
";
cout << another_age
<< "\n";
}
else {
cout
<< "Â " << another_year
<< " âû åùå íå ðîäèëèñü!\n"; }
return
0;
}
Ïðîãðàììà çàïðàøèâàåò ó ïîëüçîâàòåëÿ òåêóùèé ãîä,
âîçðàñò ïîëüçîâàòåëÿ è åùå îäèí ãîä, çàòåì âû÷èñëÿåò âîçðàñò ïîëüçîâàòåëÿ,
êîòîðûé áóäåò ó íåãî âî âòîðîì ââåäåííîì ãîäó.
Ïîñëå êîìïèëÿöèè ïðîãðàììû åå ìîæíî çàïóñòèòü
íà âûïîëíåíèå. Ðåçóëüòàò âûïîëíåíèÿ íà ýêðàíå áóäåò âûãëÿäåòü ïðèìåðíî òàê:
• Ââåäèòå
òåêóùèé ãîä è íàæìèòå ENTER.
• 2008
• Ââåäèòå
ñâîé âîçðàñò (â ãîäàõ).
• 21
• Ââåäèòå
ãîä, äëÿ êîòîðîãî âû õîòèòå óçíàòü ñâîé âîçðàñò.
• 2017
• Â
2017 ãîäó âàì áóäåò 29
Äðóãèå
öåëûå òèïû
Ñóùåñòâóåò òàêæå åùå íåñêîëüêî öåëûõ òèïîâ: long è short. Ïåðåìåííûå òèïîâ long è short èìåþò ôèêñèðîâàííûé
ðàçìåð, íå çàâèñÿùèé îò èñïîëüçóåìîé ñèñòåìû.
Ðàçìåð òèïà long âñåãäà ðàâåí 4 áàéòàì è
ñîâïàäàåò ñ ðàçìåðîì òèïà int â ñëó÷àå 32-ðàçðÿäíûõ
ñèñòåì. Òèï long ìîæåò áûòü îïèñàí êàê long int: ìåæäó äâóìÿ òàêèìè
îïèñàíèÿìè íåò ðàçíèöû. Òèï short èìååò ðàçìåð,
ðàâíûé äâóì áàéòàì. Äèàïàçîí çíà÷åíèé òèïà short - îò
-32 768 äî 32 767. Îáðàáîòêà ïåðåìåííûõ òèïà int
ïðîèñõîäèò áûñòðåå ïî ñðàâíåíèþ ñ òèïîì short. Åñëè íåîáõîäèìî îïèñàòü êîíñòàíòó òèïà long, òî ïîñëå åå çíà÷åíèÿ ñëåäóåò óêàçàòü ñèìâîë L: long var = 7678L; // îïèñàíèå
êîíñòàíòû var òèïà long
Ñèìâîëüíûå ïåðåìåííûå õðàíÿò öåëûå ÷èñëà,
ñîäåðæàùèåñÿ â äèàïàçîíå îò -128 äî 127. Ðàçìåð ïàìÿòè, çàíèìàåìûé òàêèìè
ïåðåìåííûìè, ðàâåí 1 áàéòó.
Èíîãäà
ñèìâîëüíûå ïåðåìåííûå èñïîëüçóþò äëÿ ïðåäñòàâëåíèÿ öåëûõ ÷èñåë, çàêëþ÷åííûõ â
óêàçàííîì äèàïàçîíå, íî ãîðàçäî ÷àùå â òàêèõ ïåðåìåííûõ õðàíÿòñÿ ASCII-êîäû
ñèìâîëîâ.
Òàáëèöà
ASCII-êîäîâ ïðåäíàçíà÷åíà äëÿ èíòåðïðåòàöèè ñèìâîëîâ êàê ÷èñåë. Ýòè ÷èñëà
çàêëþ÷åíû â äèàïàçîíå îò 0 äî 127.
Îïåðàöèîííûå
ñèñòåìû Windows ðàñøèðÿþò âåðõíþþ ãðàíèöó ýòîãî
äèàïàçîíà äî 255 äëÿ òîãî, ÷òîáû âêëþ÷èòü â ASCII-òàáëèöó ñèìâîëû íàöèîíàëüíûõ
àëôàâèòîâ è ïñåâäîãðàôè÷åñêèå ñèìâîëû.
Ïåðåìåííûå
òèïà "char"
ñóùåñòâåííî îòëè÷àþòñÿ îò "int" ïðè âûïîëíåíèè
ââîäà äàííûõ ñ êëàâèàòóðû è âûâîäà íà ýêðàí.
Ñèìâîëüíûé òèï
Ïðîãðàììà
äëÿ ïå÷àòè ôðàãìåíòà òàáëèöû ASCII
(îò 32-ãî ñèìâîëà (ïðîáåë) äî 126-ãî (ñèìâîë '~')):
#include <iostream.h>
int main()
{
int number; char
character;
for (number = 32; number <= 126; number = number + 1 )
{
character = number;
cout << "Ñèìâîë '" << character;
cout << "' èìååò êîä ";
cout << dec <<
number << " (äåñ.) èëè ";
cout << hex << number << " (øåñòíä.).\n";
}
return
0;
}
Ïðèâåäåííûé
êîä ïðîãðàììû âûâîäèò íà ýêðàí:
Ñèìâîë
' ' èìååò êîä 32 (äåñ.) èëè
20 (øåñòíä.).
Ñèìâîë
'!' èìååò êîä 33 (äåñ.) èëè 21 (øåñòíä.).
…
Ñèìâîë
'}' èìååò êîä 125 (äåñ.) èëè 7D (øåñòíä.).
Ñèìâîë '~' èìååò êîä 126 (äåñ.)
èëè 7E
(øåñòíä.).Ñèìâîëüíûå
êîíñòàíòû çàïèñûâàþòñÿ â îäèíî÷íûõ êàâû÷êàõ: 'à', 'V' è ò. ä., à ñòðîêîâûå
êîíñòàíòû - â äâîéíûõ. Êîãäà êîìïèëÿòîð âñòðå÷àåò ñèìâîëüíóþ êîíñòàíòó, îí çàìåíÿåò åå íà ñîîòâåòñòâóþùèé ASCII-êîä. Íàïðèìåð,
êîíñòàíòà 'à' áóäåò çàìåíåíà ÷èñëîì 97. Ñèìâîëüíûì ïåðåìåííûì ìîæíî ïðèñâàèâàòü
çíà÷åíèÿ ñèìâîëüíûõ êîíñòàíò.
Ïðèìåð
ðàáîòû ñ ñèìâîëüíûìè ïåðåìåííûìè è êîíñòàíòàìè.
char
charvar1 ='A'; // ñèìâîëüíàÿ
ïåðåìåííàÿ ñî çíà÷åíèåì 'À'
char
charvar2 ='\t '; //
ñèìâîëüíàÿ ïåðåìåííàÿ ñî çíà÷åíèåì ñèìâîëà òàáóëÿöèè cout
<<chvar1; // âûâîä
ïåðåìåííîé íà ýêðàí
cout
<<chvar2; // âûâîä
ïåðåìåííîé íà ýêðàí
charvar1
='B';
cout
<<charvar1; // âûâîä
ïåðåìåííîé íà ýêðàí
cout
<<’\n '; //
ïåðåõîä íà ñëåäóþùóþ ñòðîêó
Âåùåñòâåííàÿ
ïåðåìåííàÿ è êîíñòàíòà
Ïåðåìåííûå
âåùåñòâåííîãî òèïà õðàíÿò ÷èñëà â äåñÿòè÷íîé ôîðìå ïðåäñòàâëåíèÿ, íàïðèìåð 3.1415927,
0.0000625, -10.2. Ó òàêèõ ÷èñåë åñòü êàê öåëàÿ ÷àñòü, ñòîÿùàÿ ñëåâà îò
äåñÿòè÷íîé òî÷êè, òàê è äðîáíàÿ ÷àñòü, ñòîÿùàÿ ñïðàâà îò íåå.
Ïåðåìåííûå
âåùåñòâåííîãî òèïà ïðåäíàçíà÷åíû äëÿ õðàíåíèÿ âåùåñòâåííûõ ÷èñåë.
Â
C++ èìåþòñÿ òðè âåùåñòâåííûõ òèïà: float, double è long double.
Òèï
float. Òèï float
ñïîñîáåí õðàíèòü ÷èñëà, ñîäåðæàùèåñÿ â èíòåðâàëå îò -3.4*1038 äî
3.4* 1038, ñ òî÷íîñòüþ äî ñåìè çíàêîâ ïîñëå çàïÿòîé. Ðàçìåð òèïà float ðàâåí 4 áàéòàì.
Ïðèìåð
ñ âåùåñòâåííûìè ÷èñëàìè.
Ïðåäëàãàåòñÿ
ââåñòè ðàäèóñ îêðóæíîñòè, à â êà÷åñòâå ðåçóëüòàòà âûâîäèòñÿ íà ýêðàí ïëîùàäü
êðóãà, îãðàíè÷åííîãî äàííîé îêðóæíîñòüþ.
float
rad; //
ïåðåìåííàÿ âåùåñòâåííîãî òèïà
const
float pi
=3.14159F; // âåùåñòâåííàÿ
êîíñòàíòà
cout
<< "Ââåäèòå ðàäèóñ îêðóæíîñòè: "; // çàïðîñ
cin
>> rad; //
ïîëó÷åíèå ðàäèóñà
float
area = pi
*rad *rad; // âû÷èñëåíèå ïëîùàäè êðóãà
cout
<<"Ïëîùàäü êðóãà ðàâíà " << area
<< endl; //
âûâîä ðåçóëüòàòà íà ýêðàí
Òèïû double è long double. Äâà áîëåå êðóïíûõ âåùåñòâåííûõ òèïà
äàííûõ - double è long double - àíàëîãè÷íû òèïó float è
îòëè÷àþòñÿ îò íåãî ëèøü ðàçìåðàìè çàíèìàåìîé ïàìÿòè, äèàïàçîíàìè çíà÷åíèé è
òî÷íîñòüþ ïðåäñòàâëåíèÿ. Òèï double çàíèìàåò 8 áàéòîâ
ïàìÿòè è õðàíèò çíà÷åíèÿ ñ òî÷íîñòüþ äî 15 çíàêîâ ïîñëå çàïÿòîé. Õàðàêòåðèñòèêè
òèïà long double çàâèñÿò îò
êîìïèëÿòîðà, íî ÷àùå âñåãî îíè ñîâïàäàþò ñ õàðàêòåðèñòèêàìè òèïà double.
#include <iostream.h>
#include <math.h>
int main()
{
float
number;
cout
<< "Ââåäèòå âåùåñòâåííîå ÷èñëî.\n";
cin >> number;
cout << "Êîðåíü èç ";
cout.setf(ios::fixed); cout.precision(2);
cout << number;
cout << " ïðèìåðíî ðàâåí " << sqrt(
number ) << ".\n";
return
0;
} Ïðîãðàììà íàïå÷àòàåò íà
ýêðàíå:
Ââåäèòå
âåùåñòâåííîå ÷èñëî.
200
Êîðåíü
èç 200.00 ïðèìåðíî ðàâåí 14.14.
Åñëè
ñòðîêó cout.setf(ios::fixed); çàìåíèòü íà "cout.setf(ios::scientific);", òî âèä
ðåçóëüòàòà èçìåíèòñÿ:
Ââåäèòå
âåùåñòâåííîå ÷èñëî.
200
Êîðåíü èç 2.00e+02 ïðèìåðíî ðàâåí 1.41e+01.
Ïðè âûâîäå íà ýêðàí ÷èñëåííûõ çíà÷åíèé òèïà "float", "double" èëè "long double" âîçìîæíî óêàçàíèå òî÷íîñòè
ïðåäñòàâëåíèÿ äàííûõ íà ýêðàíå è çàäàíèå íåêîòîðûõ äîïîëíèòåëüíûõ ïàðàìåòðîâ
îòîáðàæåíèÿ, íàïðèìåð, îòîáðàæåíèå çíà÷åíèé â ôîðìàòå ñ ôèêñèðîâàííîé èëè
ïëàâàþùåé òî÷êîé.
 ïðèâåäåííîì ïðèìåðå ïðîãðàììû âåùåñòâåííîå ÷èñëî îòîáðàæàåòñÿ
â ôîðìàòå ñ ôèêñèðîâàííîé òî÷êîé è äâóìÿ äåñÿòè÷íûìè çíàêàìè ïîñëå çàïÿòîé.
Èäåíòèôèêàòîð "sqrt" ÿâëÿåòñÿ èìåíåì
áèáëèîòå÷íîé ôóíêöèè èçâëå÷åíèÿ êâàäðàòíîãî êîðíÿ.
Îïèñàíèå áèáëèîòåêè ìàòåìàòè÷åñêèõ ôóíêöèé
ñîäåðæèòñÿ â çàãîëîâî÷íîì ôàéëå "math.h«.×èñëî
3.14159F - ïðèìåð âåùåñòâåííîé êîíñòàíòû.
Íàëè÷èå . ãîâîðèò î
òîì, ÷òî òèï ýòîé êîíñòàíòû âåùåñòâåííûé, à ñóôôèêñ F óêàçûâàåò åå òèï - float. Ôîðìà ïðåäñòàâëåíèÿ çíà÷åíèÿ êîíñòàíòû -
íîðìàëèçîâàííàÿ äåñÿòè÷íàÿ. Âåùåñòâåííûå êîíñòàíòû òèïà double
ÿâëÿþòñÿ çíà÷åíèÿìè ïî óìîë÷àíèþ. Äëÿ êîíñòàíò òèïà long
double íåîáõîäèìî óêàçûâàòü ñóôôèêñ L.
Äëÿ
çàäàíèÿ çíà÷åíèé âåùåñòâåííûõ ÷èñåë òàêæå èñïîëüçóåòñÿ ýêñïîíåíöèàëüíàÿ ôîðìà
çàïèñè, ïðåäíàçíà÷åíà äëÿ ïðåäñòàâëåíèÿ î÷åíü áîëüøèõ èëè î÷åíü ìàëåíüêèõ ÷èñåë.
Ïðåôèêñ
const.
Ïðîãðàììà
òàêæå äåìîíñòðèðóåò èñïîëüçîâàíèå ïðåôèêñà const,
èñïîëüçóåòñÿ â îïåðàòîðå const float
PI = 3.14159F;Êëþ÷åâîå ñëîâî const ïðåäøåñòâóåò
îïèñàíèþ òèïà ïåðåìåííîé è îçíà÷àåò, ÷òî âî âðåìÿ âûïîëíåíèÿ ïðîãðàììû
çàïðåùåíî èçìåíÿòü çíà÷åíèå ýòîé ïåðåìåííîé. Ëþáàÿ ïîïûòêà èçìåíèòü çíà÷åíèå
ïåðåìåííîé, îïèñàííîé ñ òàêèì ïðåôèêñîì, ïðèâåäåò ê âûäà÷å êîìïèëÿòîðîì
ñîîáùåíèÿ îá îøèáêå. Ïðåôèêñ const èíôîðìèðóåò î òîì,
÷òî çíà÷åíèå ïåðåìåííîé íå áóäåò èçìåíÿòüñÿ â õîäå âûïîëíåíèÿ ïðîãðàììû.
Ïðåôèêñ
const ìîæåò ïðèìåíÿòüñÿ è ê äðóãèì ýëåìåíòàì
ïðîãðàììû.
Òèï
bool
1.Òèï
bool ìîæåò èìåòü âñåãî äâà çíà÷åíèÿ - true è false.
2.Ðàçìåð
ïåðåìåííîé òèïà bool ðàâåí 1 áàéòó.
3.Ïåðåìåííûå
òèïà bool ÷àùå âñåãî èñïîëüçóþòñÿ äëÿ õðàíåíèÿ ðåçóëüòàòîâ
ðàçëè÷íûõ ñðàâíåíèé.
4.Ïîäîáíûå
ïåðåìåííûå ÷àñòî íàçûâàþò áóëåâûìè.
Áåççíàêîâûé
òèï äàííûõ
Áåççíàêîâûå
òèïû äàííûõ ïðèìåíÿþòñÿ â òåõ ñëó÷àÿõ, êîãäà íåò íåîáõîäèìîñòè õðàíèòü â
ïåðåìåííûõ îòðèöàòåëüíûå çíà÷åíèÿ. ×òîáû
ñäåëàòü òèï áåççíàêîâûì, íóæíî äîáàâèòü ïåðåä åãî
íàçâàíèåì êëþ÷åâîå ñëîâî unsigned. Íàïðèìåð, îïðåäåëåíèå áåççíàêîâîé
ïåðåìåííîé òèïà char áóäåò âûãëÿäåòü ñëåäóþùèì
îáðàçîì:
unsigned
char uchvar; Âûõîä çà ðàìêè
äîïóñòèìûõ äëÿ äàííîãî òèïà çíà÷åíèé, êàê ïðàâèëî, ïðèâîäèò ê òðóäíî
îáíàðóæèâàåìûì îøèáêàì.  ñëåäóþùåì ôðàãìåíòå ïðîãðàììû ïåðåìåííûì svar òèïà int è unsvar òèïà unsigned int ïðèñâàèâàåòñÿ îäíî è òî æå çíà÷åíèå, ðàâíîå 1 500
000 000:
int svar = 1500000000;
unsigned int unsvar
= 1500000000;
svar = (svar *2) / 3;
unsvar = (unsignvar *2) / 3;
cout<<"Çíàêîâàÿ ïåðåìåííàÿ ðàâíà “<<svar<<endl;
cout<<
"Áåççíàêîâàÿ ïåðåìåííàÿ ðàâíà "<<unsvar << endl;
Îáå ïåðåìåííûå óìíîæàþò íà 2, à çàòåì äåëÿò íà 3.
Íåñìîòðÿ íà òî, ÷òî ïðàâèëüíûé ðåçóëüòàò äîëæåí ïîëó÷èòüñÿ ìåíüøå èñõîäíîãî çíà÷åíèÿ,
ïðîìåæóòî÷íîå âû÷èñëåíèå ïðèâîäèò ê ðåçóëüòàòó, áîëüøåìó, ÷åì èñõîäíîå ÷èñëî.
Òàêàÿ ñèòóàöèÿ ñòàíäàðòíà, íî çà÷àñòóþ îíà ïðèâîäèò ê îøèáêàì. Òàê, íàïðèìåð, â
îáåèõ ïåðåìåííûõ â èòîãå áóäåò ñîäåðæàòüñÿ îäíî è òî æå çíà÷åíèå, ñîñòàâëÿþùåå
2/3 îò èñõîäíîãî è ðàâíîå 1 000 000
000. Íî ðåçóëüòàò óìíîæåíèÿ âûøåë çà äîïóñòèìûé
âåðõíèé ïðåäåë äëÿ ïåðåìåííîé svar. Ïîýòîìó ðåçóëüòàò
ðàáîòû áóäåò âûãëÿäåòü ñëåäóþùèì îáðàçîì: Çíàêîâàÿ ïåðåìåííàÿ ðàâíà 431655765,
à áåççíàêîâàÿ ïåðåìåííàÿ ðàâíà 1000000000Òåïåðü â
ïåðåìåííîé ñî çíàêîì ñîäåðæèòñÿ íåâåðíîå çíà÷åíèå, â òî âðåìÿ êàê ïåðåìåííàÿ
áåç çíàêà, êîòîðàÿ èìåëà äîñòàòî÷íûé äèàïàçîí äëÿ ïðåäñòàâëåíèÿ ðåçóëüòàòà
óìíîæåíèÿ, ñîäåðæèò êîððåêòíûé ðåçóëüòàò. Îòñþäà ñëåäóåò âûâîä: íåîáõîäèìî
ñëåäèòü çà òåì, ÷òîáû âñå çíà÷åíèÿ, êîòîðûå âû÷èñëÿþòñÿ â ïðîãðàììå,
ñîîòâåòñòâîâàëè äèàïàçîíàì çíà÷åíèé òåõ ïåðåìåííûõ, êîòîðûì îíè ïðèñâàèâàþòñÿ.
5.Îïåðàöèè
ââîäà è âûâîäà äàííûõ â C++
Ââîä
ñ ïîìîùüþ cin. Â ñëåäóþùåì ôðàãìåíòå ïðîãðàììû
ââîäèòñÿ çíà÷åíèå òåìïåðàòóðû ïî Ôàðåíãåéòó, çàòåì ïðîãðàììà ïåðåâîäèò ýòî
çíà÷åíèå â øêàëó Öåëüñèÿ è îòîáðàæàåò ðåçóëüòàò íà ýêðàíå.
int
ftemp; //
òåìïåðàòóðà ïî Ôàðåíãåéòó
cout
<< "Ââåäèòå òåìïåðàòóðó ïî Ôàðåíãåéòó: ";
cin >> ftemp;
int ctemp = (ftemp-32)*5/9;
cout<<"Òåìïåðàòóðà
ïî Öåëüñèþ ðàâíà»<<ctemp<<'\n';
Îïåðàòîð cin >> ftemp; çàïðàøèâàåò ââîä ÷èñëà îò ïîëüçîâàòåëÿ. Ââåäåííîå
çíà÷åíèå ïðèñâàèâàåòñÿ ïåðåìåííîé ftemp. Êëþ÷åâîå
ñëîâî cin ÿâëÿåòñÿ îáúåêòîì, îïðåäåëåííûì â C++ äëÿ ðàáîòû ñî
ñòàíäàðòíûì ïîòîêîì ââîäà.
Ïîòîê - ýòî íåêîòîðàÿ àáñòðàêöèÿ, îòðàæàþùàÿ
ïåðåìåùåíèå äàííûõ îò èñòî÷íèêà ê ïðèåìíèêó. Ýòîò ïîòîê ñîäåðæèò äàííûå,
ââîäèìûå ñ êëàâèàòóðû. >> ÿâëÿåòñÿ
îïåðàöèåé èçâëå÷åíèÿ. Îíà èçâëåêàåò äàííûå èç ïîòîêîâîãî îáúåêòà, ñòîÿùåãî â
ëåâîé ÷àñòè, è ïðèñâàèâàåò ýòè äàííûå ïåðåìåííîé, ñòîÿùåé â ïðàâîé ÷àñòè.
Âûâîä ñ èñïîëüçîâàíèåì cout.
Îïåðàòîð cout << "Òåìïåðàòóðà ïî Öåëüñèþ
ðàâíà " << ctemp << '\n '; âûâîäèò íà ýêðàí ñòðîêó, çàêëþ÷åííóþ â êàâû÷êè è âñëåä
çà íåé çíà÷åíèå ïåðåìåííîé ctemp (<<ctemp) è ïîñëå ýòîãî âûïîëíÿåò ïåðåâîä íà ñëåäóþùóþ ñòðîêó
(<< '\n ').
cout
îáúåêò C++, ïðåäíàçíà÷åí äëÿ ðàáîòû ñî ñòàíäàðòíûì ïîòîêîì âûâîäà.
Îïåðàöèÿ << íàçûâàåòñÿ îïåðàöèåé âñòàâêè,
êîïèðóåò ñîäåðæèìîå ïåðåìåííîé, ñòîÿùåé â ïðàâîé åå ÷àñòè, â îáúåêò,
ñîäåðæàùèéñÿ â ëåâîé åå ÷àñòè. Îïåðàöèÿ << íàïðàâëÿåò çíà÷åíèÿ, óêàçàííûå
â ïîòîêå, â îáúåêò cout, êîòîðûé âûâîäèò èõ íà ýêðàí.
Ñèìâîë '\n' â êîíöå ñòðîêîâîé êîíñòàíòû ÿâëÿåòñÿ
ïðèìåðîì óïðàâëÿþùåé èëè escape-ïîñëåäîâàòåëüíîñòè.
 äàííîì ñëó÷àå òàêàÿ ïîñëåäîâàòåëüíîñòü îçíà÷àåò,
÷òî ñëåäóþùèé âûâîä òåêñòà íà÷íåòñÿ ñ íîâîé ñòðîêè.
Îïðåäåëåíèå
ïåðåìåííûõ ïðè ïåðâîì èñïîëüçîâàíèè.
Ïðèìåð îïðåäåëåíèÿ ïåðåìåííîé ctemp
ïîêàçûâàåò, ÷òî ìîæíî îïðåäåëÿòü ïåðåìåííóþ â ëþáîì ìåñòå ïðîãðàììû.
Îïðåäåëåíèå ïåðåìåííûõ òàì, ãäå îíè èñïîëüçóþòñÿ, äåëàåò ëèñòèíã ïðîãðàììû
ïðîùå äëÿ ïîíèìàíèÿ, ïîñêîëüêó íåò íåîáõîäèìîñòè ïîñòîÿííî âîçâðàùàòüñÿ â
íà÷àëî ïðîãðàììû äëÿ òîãî, ÷òîáû íàéòè îïèñàíèÿ íóæíûõ ïåðåìåííûõ.
Âûðàæåíèå. Ëþáàÿ êîìáèíàöèÿ
ïåðåìåííûõ, êîíñòàíò è îïåðàöèé, ïðèâîäÿùàÿ ê âû÷èñëåíèþ íåêîòîðîãî çíà÷åíèÿ,
íàçûâàåòñÿ âûðàæåíèåì: alpha+12 èëè (alpha-37)*beta/2.
Ðåçóëüòàòîì âûïîëíåíèÿ âñåõ îïåðàöèé, âõîäÿùèõ â ñîñòàâ âûðàæåíèÿ, ÿâëÿåòñÿ
çíà÷åíèå. Âûðàæåíèÿ ñàìè ìîãóò âõîäèòü â ñîñòàâ äðóãèõ âûðàæåíèé.  ïðèìåðå
alpha-37 è beta/2 ÿâëÿþòñÿ âûðàæåíèÿìè. Ôàêòè÷åñêè
êàæäóþ ïåðåìåííóþ è êîíñòàíòó, íàïðèìåð alpha è 37,
ìîæíî ñ÷èòàòü ÷àñòíûì ñëó÷àåì âûðàæåíèÿ.
6.
Ïðåîáðàçîâàíèÿ òèïîâ äàííûõ â C++
ßçûê
C++ ñâîáîäíåå îáðàùàåòñÿ ñ âûðàæåíèÿìè, âêëþ÷àþùèìè â ñåáÿ ðàçëè÷íûå òèïû
äàííûõ.
Â
êà÷åñòâå ïðèìåðà ðàññìîòðèì ñëåäóþùèé ôðàãìåíò:
int count = 7;
float avgw = 155.5F;
double totalw = count *avgw;
cout <<"Âåñ ðàâåí " << totalw
<< endl;
Çäåñü ïåðåìåííàÿ òèïà int
óìíîæàåòñÿ íà ïåðåìåííóþ òèïà float, à ðåçóëüòàò
ïðèñâàèâàåòñÿ ïåðåìåííîé òèïà double. Êîìïèëÿöèÿ
ïðîèñõîäèò áåç îøèáîê, ïîñêîëüêó êîìïèëÿòîðû äîïóñêàþò âîçìîæíîñòü âûïîëíåíèÿ
àðèôìåòè÷åñêèõ îïåðàöèé ñ îïåðàíäàìè ðàçíûõ òèïîâ. C++ ïðåäïîëàãàåò, ÷òî
ñìåøèâàíèå òèïîâ äàííûõ ïðîèçîøëî ñîçíàòåëüíî è ÿâëÿåòñÿ çàäóìêîé ïðîãðàììèñòà,
è ïîýòîìó íå ìåøàåò åìó ðåàëèçîâûâàòü ñâîè èäåè. Ïîäîáíûé ïîäõîä îò÷àñòè
îáúÿñíÿåò ïîïóëÿðíîñòü C++, è, ñîîòâåòñòâåííî, äàåò ïðîãðàììèñòó áîëüøóþ
ñâîáîäó.
Íåÿâíûå
ïðåîáðàçîâàíèÿ òèïîâ. Ðàññìîòðèì äåéñòâèÿ êîìïèëÿòîðà, êîãäà îí âñòðå÷àåò
âûðàæåíèÿ ñî ñìåøàííûìè òèïàìè. Êàæäûé òèï äàííûõ ìîæíî óñëîâíî ñ÷èòàòü «íèæå»
èëè «âûøå» ïî îòíîøåíèþ ê äðóãèì òèïàì.
Èåðàðõèÿ òèïîâ äàííûõ. Àðèôìåòè÷åñêèå
îïåðàöèè, ïîäîáíûå + è *, äåéñòâóþò ñëåäóþùèì îáðàçîì: åñëè èõ îïåðàíäû èìåþò
ðàçëè÷íûå òèïû, òî îïåðàíä ñ áîëåå «íèçêèì» òèïîì áóäåò ïðåîáðàçîâàí ê áîëåå
«âûñîêîìó» òèïó. Ïîäîáíûå ïðåîáðàçîâàíèÿ òèïîâ äàííûõ ïðîèñõîäÿò íåÿâíî. Îäíàêî
â ðÿäå ñëó÷àåâ êîìïèëÿòîð íå ñòîëü ïîíÿòíî ïðîâîäèò ïðåîáðàçîâàíèÿ òèïîâ.
Îñîáåííî ýòî êàñàåòñÿ ïðè ðàáîòå ñ îáúåêòàìè. Çäåñü ôàêòè÷åñêè áóäåì
îïåðèðîâàòü ñîáñòâåííûìè òèïàìè äàííûõ.  ýòîì ñëó÷àå íóæíî ñîçäàâàòü ñðåäñòâà,
âûïîëíÿþùèå íåîáõîäèìûå ïðåîáðàçîâàíèÿ òèïîâ, ïîñêîëüêó êîìïèëÿòîð íå ñìîæåò
ïðåîáðàçîâûâàòü ïîëüçîâàòåëüñêèå òèïû äàííûõ òàê, êàê îí äåëàë ýòî ñî
ñòàíäàðòíûìè òèïàìè. ßâíûå ïðåîáðàçîâàíèÿ òèïîâ ñîâåðøàþòñÿ ñàìèì
ïðîãðàììèñòîì, íåîáõîäèìû â òåõ ñëó÷àÿõ, êîãäà êîìïèëÿòîð íå ìîæåò áåçîøèáî÷íî
ïðåîáðàçîâàòü òèïû àâòîìàòè÷åñêè.  C++ ñóùåñòâóåò íåñêîëüêî ðàçëè÷íûõ îïåðàöèé
ïðèâåäåíèÿ òèïîâ.
ßâíûå
ïðèâåäåíèÿ òèïîâ â C++ âåäóò ñåáÿ âåñüìà òðåáîâàòåëüíî.
int
var =1500000000;
var
= (var*10)/10; //
ñëèøêîì áîëüøîé ðåçóëüòàò
cout<<"Çíà÷åíèå
var ðàâíî"<<var<<endl; // íåâåðíûé ðåçóëüòàò
var = 1500000000; //
ïðèâåäåíèå ê òèïó double
var = (static_cast<double>(var)*10)/10;
cout
<< "Çíà÷åíèå var ðàâíî " << var << endl; // âåðíûé ðåçóëüòàò
Ïðè
óìíîæåíèè ïåðåìåííîé var íà 10, ïîëó÷àåìûé ðåçóëüòàò
ðàâåí 15 000 000 000 è åãî íåëüçÿ õðàíèòü äàæå ñ
ïîìîùüþ òèïà unsigned int.
Îïåðàòîð
static_cast<double>(var) ñîçäàåò âðåìåííóþ ïåðåìåííóþ òèïà double,
ñîäåðæàùóþ çíà÷åíèå, ðàâíîå çíà÷åíèþ var. Ýòà
âðåìåííàÿ ïåðåìåííàÿ óìíîæàåòñÿ íà 10, è ïîñêîëüêó ðåçóëüòàò òàêæå èìååò òèï double, ïåðåïîëíåíèÿ íå ïðîèñõîäèò. Çàòåì âðåìåííàÿ
ïåðåìåííàÿ äåëèòñÿ íà 10, è ðåçóëüòàò ïðèñâàèâàåòñÿ îáû÷íîé öåëîé ïåðåìåííîé var.
Ïðèâåäåíèå
òèïîâ ñëåäóåò èñïîëüçîâàòü òîëüêî â ñëó÷àå ïîëíîé óâåðåííîñòè â åãî
íåîáõîäèìîñòè è ïîíèìàíèÿ, äëÿ ÷åãî îíî äåëàåòñÿ.
Âîçìîæíîñòü
ïðèâåäåíèÿ äåëàåò òèïû äàííûõ íåçàùèùåííûìè îò ïîòåíöèàëüíûõ îøèáîê, ïîñêîëüêó
êîìïèëÿòîð íå ìîæåò ïðîêîíòðîëèðîâàòü êîððåêòíîñòü äåéñòâèé ïðè èçìåíåíèè òèïîâ
äàííûõ.
 C++ èñïîëüçóþòñÿ ÷åòûðå îñíîâíûå àðèôìåòè÷åñêèå
îïåðàöèè: ñëîæåíèÿ, âû÷èòàíèÿ, óìíîæåíèÿ è äåëåíèÿ, îáîçíà÷àåìûå ñîîòâåòñòâåííî
+,-,*, /. Ýòè îïåðàöèè ïðèìåíèìû êàê ê öåëûì òèïàì äàííûõ, òàê è ê
âåùåñòâåííûì. Ñóùåñòâóþò òàêæå è äðóãèå àðèôìåòè÷åñêèå îïåðàöèè, èñïîëüçîâàíèå
êîòîðûõ íå ñòîëü î÷åâèäíî. Ñóùåñòâóåò åùå îäíà àðèôìåòè÷åñêàÿ îïåðàöèÿ, êîòîðàÿ
ïðèìåíÿåòñÿ òîëüêî ê öåëûì ÷èñëàì òèïà char, short, int è long.
Ýòà îïåðàöèÿ íàçûâàåòñÿ îïåðàöèåé îñòàòêà îò äåëåíèÿ
è îáîçíà÷àåòñÿ çíàêîì ïðîöåíòà %.
Ðåçóëüòàòîì ýòîé îïåðàöèè, èíîãäà òàêæå íàçûâàåìîé
«âçÿòèåì ïî ìîäóëþ», ÿâëÿåòñÿ îñòàòîê, ïîëó÷àåìûé ïðè äåëåíèè åå ëåâîãî îïåðàíäà
íà ïðàâûé.
Íàïðèìåð, ðåçóëüòàòîì âûïîëíåíèÿ îïåðàòîðà: a=10%8;
ÿâëÿåòñÿ ÷èñëî 2.
ßçûê C++ ðàñïîëàãàåò ñðåäñòâàìè äëÿ òîãî, ÷òîáû
ñîêðàòèòü ðàçìåð êîäà è ñäåëàòü åãî íàãëÿäíûì. Îäíèì èç òàêèõ ñðåäñòâ ÿâëÿþòñÿ
àðèôìåòè÷åñêèå îïåðàöèè ñ ïðèñâàèâàíèåì.
 áîëüøèíñòâå ÿçûêîâ ïðîãðàììèðîâàíèÿ òèïè÷íûì
ÿâëÿåòñÿ îïåðàòîð, ïîäîáíûé
var1
= var1 + var2;
 äàííîì ñëó÷àå ïðîèçâîäèòñÿ ñëîæåíèå ñ çàìåùåíèåì
óæå ñóùåñòâóþùåãî çíà÷åíèÿ îäíîãî èç ñëàãàåìûõ.  C++ ñóùåñòâóåò ñïîñîá
ñîêðàòèòü ïîäîáíûå îïåðàòîðû, ïðèìåíÿÿ àðèôìåòè÷åñêèå îïåðàöèè ñ ïðèñâàèâàíèåì.
Òàêèå îïåðàöèè êîìáèíèðóþò àðèôìåòè÷åñêóþ îïåðàöèþ è
îïåðàöèþ ïðèñâàèâàíèÿ, òåì ñàìûì èñêëþ÷àÿ
íåîáõîäèìîñòü èñïîëüçîâàíèÿ èìåíè ïåðåìåííîé äâàæäû.
Ïðåäûäóùèé îïåðàòîð ìîæíî çàïèñàòü ñëåäóþùèì
îáðàçîì: var1 += var2;
Ñ ïðèñâàèâàíèåì êîìáèíèðóåòñÿ è äðóãèå
àðèôìåòè÷åñêèå îïåðàöèè: -=, *=, /=, %= è ò. ä.
Ïðèìåð
èñïîëüçîâàíèÿ àðèôìåòè÷åñêèõ îïåðàöèé ñ ïðèñâàèâàíèåì:
int
ans
= 27;
ans
+= 10; // òî æå
ñàìîå, ÷òî ans
= ans
+10;
cout
<< ans << ",";
ans
-= 7; // òî æå
ñàìîå, ÷òî ans = ans -7;
cout
<< ans << ",";
ans
*=2 ; //
òî æå ñàìîå, ÷òî ans = ans
*2;
cout
<< ans << ",";
ans
/= 3; // òî æå
ñàìîå, ÷òî ans = ans /3;
cout
<< ans << ",";
ans
%= 3; // òî æå
ñàìîå, ÷òî ans = ans %3;
cout
<< ans
<< endl;
Èíêðåìåíò.
 C++ èìååòñÿ îäíà îïåðàöèÿ, êîòîðàÿ ÿâëÿåòñÿ áîëåå
ñïåöèôè÷íîé, íåæåëè ïðåäûäóùèå. Ïðè ïðîãðàììèðîâàíèè
÷àñòî ïðèõîäèòñÿ èìåòü äåëî ñ óâåëè÷åíèåì êàêîé-ëèáî âåëè÷èíû íà åäèíèöó.
Ýòî ìîæíî ñäåëàòü «â ëîá», èñïîëüçóÿ îïåðàòîð
count=count+1;
èëè
ñ ïîìîùüþ ñëîæåíèÿ ñ ïðèñâàèâàíèåì:
count
+= 1; //óâåëè÷åíèå count
íà 1
Íî
åñòü åùå îäèí, áîëåå ñæàòûé, ÷åì ïðåäûäóùèå, ñïîñîá:
++count; //
óâåëè÷åíèå count íà 1
Îïåðàöèÿ
++ èíêðåìåíòèðóåò, èëè óâåëè÷èâàåò íà 1, ñâîé îïåðàíä.
8 . Ïîëüçîâàòåëüñêèå òèïû äàííûõ â
C++: ñòðóêòóðû.
Äî ýòîãî áûëè ðàññìîòðåíû òîëüêî ïåðåìåííûå
ñòàíäàðòíûõ òèïîâ, òàêèõ, êàê float, char è int.
Ïîäîáíûå ïåðåìåííûå ñïîñîáíû ïðåäñòàâëÿòü êàêóþ-ëèáî
îäíó âåëè÷èíó - âûñîòó, ñóììó, çíà÷åíèå ñ÷åò÷èêà è ò. ä. Îäíàêî èíîãäà
îòäåëüíûå ïåðåìåííûå áûâàåò óäîáíî îáúåäèíÿòü â áîëåå ñëîæíûå êîíñòðóêöèè.
 ðåàëüíîé æèçíè ìû ñîâåðøàåì ïîäîáíûå äåéñòâèÿ,
êîãäà îðãàíèçóåì ðàáîòíèêîâ ôèðìû â îòäåëû èëè ñîñòàâëÿåì ïðåäëîæåíèÿ èç
îòäåëüíûõ ñëîâ.
 C++ êîíñòðóêöèÿìè, ðåàëèçóþùèìè îáúåäèíåíèå
ðàçíîðîäíûõ äàííûõ, ÿâëÿþòñÿ ìàññèâû, ñòðóêòóðû, êëàññû. Ñòðóêòóðà ÿâëÿåòñÿ
îáúåäèíåíèåì ïðîñòûõ ïåðåìåííûõ. Ýòè ïåðåìåííûå ìîãóò èìåòü ðàçëè÷íûå òèïû: int, float è ò. ä.  C++,
ñòðóêòóðû ÿâëÿþòñÿ îäíîé èç ñîñòàâëÿþùèõ ãëàâíûõ êîíöåïöèé ÿçûêà - îáúåêòîâ è
êëàññîâ.
Ñèíòàêñèñ ñòðóêòóðû ôàêòè÷åñêè èäåíòè÷åí ñèíòàêñèñó
êëàññà.
Îòëè÷èå ñòðóêòóðû îò êëàññà çàêëþ÷àåòñÿ â ñëåäóþùåì:
ñòðóêòóðû èñïîëüçóþò â êà÷åñòâå îáúåäèíåíèÿ äàííûõ, à êëàññû - â êà÷åñòâå
îáúåäèíåíèÿ äàííûõ è ôóíêöèé.
Èçó÷àÿ ñòðóêòóðû
çàêëàäûâàåì îñíîâû äëÿ ïîíèìàíèÿ êëàññîâ è îáúåêòîâ.
Ïðîñòàÿ ñòðóêòóðà.
Íà÷íåì ðàññìîòðåíèå ñî ñòðóêòóðû, ñîäåðæàùåé òðè
ïîëÿ, äâà ïîëÿ èìåþò öåëûé òèï è îäíî ïîëå - âåùåñòâåííûé òèï.
Ýòà ñòðóêòóðà ïðåäíàçíà÷åíà äëÿ õðàíåíèÿ èíôîðìàöèè
î êîìïëåêòóþùèõ äåòàëÿõ èçäåëèé, âûïóñêàåìûõ ôàáðèêîé.
 ïðèâåäåííîì ôðàãìåíòå ïðîãðàììû îïðåäåëÿåòñÿ
ñòðóêòóðà part è ïåðåìåííàÿ part1 òèïà part.
Çàòåì ïîëÿì ïåðåìåííîé part
ïðèñâàèâàþòñÿ çíà÷åíèÿ è âûâîäÿòñÿ íà ýêðàí.
struct
part //
îáúÿâëåíèå ñòðóêòóðû
{
int
modelnum; //
íîìåð ìîäåëè èçäåëèÿ
int
partnum; //
íîìåð äåòàëè
float
cost; //
ñòîèìîñòü äåòàëè
};
int
main()
{
part
part1; // îïðåäåëåíèå ñòðóêòóðíîé
ïåðåìåííîé
part1.modelnum
= 6244; // èíèöèàëèçàöèÿ ïîëåé
part1.partnum
= 373; // ïåðåìåííîé part1
part1.cost - 217.55F;
cout << "Ìîäåëü " << part1.modelnum;
cout << " äåòàëü " << part1.partnum;
cout << " ñòîèìîñòü $" << part1.cost << endl;
return
0;
}
Â
ïðèìåðå ïðèñóòñòâóþò òðè îñíîâíûõ àñïåêòà ðàáîòû ñî ñòðóêòóðàìè:
• îïðåäåëåíèå
ñòðóêòóðû
• îïðåäåëåíèå ïåðåìåííîé òèïà ýòîé ñòðóêòóðû
• äîñòóï
ê ïîëÿì ñòðóêòóðû.
Ïîäðîáíî
ðàññìîòðèì êàæäûé èç ýòèõ àñïåêòîâ.
Îïðåäåëåíèå
ñòðóêòóðû çàäàåò åå âíóòðåííþþ îðãàíèçàöèþ, îïèñûâàÿ ïîëÿ,
âõîäÿùèå â ñîñòàâ ñòðóêòóðû:
struct part
{
int modelnum;
int partnum;
float cost;
};
Îïðåäåëåíèå
ñòðóêòóðû íà÷èíàåòñÿ ñ êëþ÷åâîãî ñëîâà struct.
Çàòåì ñëåäóåò èìÿ ñòðóêòóðû.
Îáúÿâëåíèÿ
ïîëåé ñòðóêòóðû çàêëþ÷àþòñÿ â {}.
Ïîñëå
} ñëåäóåò òî÷êà ñ çàïÿòîé (;) - ñèìâîë, îçíà÷àþùèé êîíåö îïðåäåëåíèÿ
ñòðóêòóðû
Îïðåäåëåíèå ñòðóêòóðû íåîáõîäèìî äëÿ òîãî, ÷òîáû
ñîçäàâàòü íà åãî îñíîâå ïåðåìåííûå ýòîãî òèïà. Ñàìî îïðåäåëåíèå ñòðóêòóðû íå
ñîçäàåò íèêàêèõ ïåðåìåííûõ, ò.å. íå ïðîèñõîäèò íè âûäåëåíèÿ ôèçè÷åñêîé ïàìÿòè,
íè îáúÿâëåíèÿ ïåðåìåííîé.  òî æå âðåìÿ îïðåäåëåíèå îáû÷íîé ïåðåìåííîé
ïðåäïîëàãàåò âûäåëåíèå ïàìÿòè ïîä ýòó ïåðåìåííóþ. Òàêèì îáðàçîì, îïðåäåëåíèå
ñòðóêòóðû ôàêòè÷åñêè çàäàåò âíóòðåííþþ îðãàíèçàöèþ ñòðóêòóðíûõ ïåðåìåííûõ ïîñëå
òîãî, êàê îíè áóäóò îïðåäåëåíû .
Ïåðâûé îïåðàòîð ôóíêöèè main() âûãëÿäèò ñëåäóþùèì
îáðàçîì: part part1;, ïðåäñòàâëÿåò ñîáîé
îïðåäåëåíèå ïåðåìåííîé part1, èìåþùåé òèï part.
Îïðåäåëåíèå ïåðåìåííîé îçíà÷àåò, ÷òî ïîä ýòó ïåðåìåííóþ âûäåëÿåòñÿ ïàìÿòü. Ïîä
ñòðóêòóðíóþ ïåðåìåííóþ âñåãäà îòâîäèòñÿ ñòîëüêî ïàìÿòè, ñêîëüêî äîñòàòî÷íî äëÿ
õðàíåíèÿ âñåõ åå ïîëåé. Â ïðèìåðå íåîáõîäèìî âûäåëèòü ïî 4 áàéòà äëÿ äâóõ ïîëåé
òèïà int è 4 áàéòà äëÿ ïîëÿ òèïà float.  íåêîòîðîì ñìûñëå ìîæíî ñ÷èòàòü ñòðóêòóðó part íîâûì òèïîì äàííûõ. Îïðåäåëåíèå ñòðóêòóðíîé ïåðåìåííîé
ïî ñâîåìó ñèíòàêñèñó èäåíòè÷íî îïðåäåëåíèþ ïåðåìåííîé ñòàíäàðòíîãî òèïà:
part
part1; int varl;
Òàêîå
ñõîäñòâî íå ÿâëÿåòñÿ ñëó÷àéíûì. Îäíà èç öåëåé ÿçûêà C++ - ñäåëàòü ðàáîòó ñ
ïîëüçîâàòåëüñêèìè òèïàìè äàííûõ ìàêñèìàëüíî ïîõîæåé íà ðàáîòó ñî ñòàíäàðòíûìè
òèïàìè äàííûõ. Êîãäà ñòðóêòóðíàÿ ïåðåìåííàÿ îïðåäåëåíà, äîñòóï ê åå ïîëÿì
âîçìîæåí ñ ïðèìåíåíèåì îïåðàöèè òî÷êè
part1.modelnum
= 6244;
Ïîëå
ñòðóêòóðû èäåíòèôèöèðóåòñÿ ñ ïîìîùüþ òðåõ ñîñòàâëÿþùèõ:
• èìåíè
ñòðóêòóðíîé ïåðåìåííîé part1,
• îïåðàöèè
òî÷êè (.)
• èìåíè
ïîëÿ modelnum.
Îïåðàöèÿ òî÷êè íàçûâàåòñÿ îïåðàöèåé äîñòóïà ê
ïîëþ ñòðóêòóðû.
Âíèìàíèå: â âûðàæåíèè ñ
èñïîëüçîâàíèåì îïåðàöèè òî÷êè (.) íà ïåðâîì ìåñòå
ñòîèò íå íàçâàíèå ñòðóêòóðû (part), à èìÿ ñòðóêòóðíîé
ïåðåìåííîé (part1), èìÿ ïåðåìåííîé íóæíî äëÿ òîãî, ÷òîáû îòëè÷àòü îäíó
ïåðåìåííóþ îò äðóãîé. Ñ ïîëÿìè ñòðóêòóðíîé ïåðåìåííîé ìîæíî îáðàùàòüñÿ òàê æå,
êàê ñ îáû÷íûìè ïðîñòûìè ïåðåìåííûìè.  ðåçóëüòàòå âûïîëíåíèÿ îïåðàòîðà
part1.modelnum = 6244; ïîëþ modelnum ïðèñâàèâàåòñÿ
çíà÷åíèå 6244 ïðè ïîìîùè îáû÷íîé îïåðàöèè ïðèñâàèâàíèÿ.
Ïðèìåð äåìîíñòðèðóåò ñïîñîá, ïðè ïîìîùè êîòîðîãî
ìîæíî èíèöèàëèçèðîâàòü ïîëÿ ïðåäâàðèòåëüíî îïðåäåëåííîé ñòðóêòóðíîé ïåðåìåííîé.
 ïðîãðàììå èñïîëüçóþòñÿ äâå ñòðóêòóðíûå ïåðåìåííûå.
int
main()
{
part
part1 = {6244,373,217.55F }; // èíèöèàëèçàöèÿ ïåðåì
part
part2; //
îáúÿâëåíèå ïåðåìåííîé
cout << "Ìîäåëü " << part1.modelnum;
cout << ", äåòàëü " << part1.partnum;
cout << ", ñòîèìîñòü $" << part1.cost << endl;
part2
= part1; // ïðèñâàèâàíèå ñòðóêòóðíûõ
ïåðåìåííûõ
cout
<< "Ìîäåëü " << part2.modelnum;
cout << ", äåòàëü " << part2.partnum;
cout << ", ñòîèìîñòü $" << part2.cost <<endl;
return
0;
}
Â
ïðèìåðå îïðåäåëåíû äâå ïåðåìåííûå òèïà part: part1 è
part2.
Ïîñëå
òîãî êàê ïîëÿ ïåðåìåííîé part1 èíèöèàëèçèðîâàíû, ïðîèñõîäèò âûâîä èõ çíà÷åíèé
íà ýêðàí, çàòåì çíà÷åíèå ïåðåìåííîé part1 ïðèñâàèâàåòñÿ ïåðåìåííîé part2, è
çíà÷åíèÿ åå ïîëåé òàêæå âûâîäÿòñÿ íà ýêðàí.
Èíèöèàëèçàöèÿ
ïîëåé ïåðåìåííîé part1 ïðîèçâîäèòñÿ â ìîìåíò åå îïðåäåëåíèÿ: part part1 = { 6244, 373, 217.55
};Çíà÷åíèÿ, êîòîðûå ïðèñâàèâàþòñÿ ïîëÿì ñòðóêòóðíîé ïåðåìåííîé, çàêëþ÷åíû â
ôèãóðíûå ñêîáêè è ðàçäåëåíû çàïÿòûìè (ïåðâàÿ èç âåëè÷èí ïðèñâàèâàåòñÿ ïåðâîìó
ïîëþ, âòîðàÿ - âòîðîìó ïîëþ è ò. ä.)
Êàê
âèäèì, ìîæíî ïðèñâàèâàòü çíà÷åíèå îäíîé ñòðóêòóðíîé ïåðåìåííîé äðóãîé
ñòðóêòóðíîé ïåðåìåííîé: part2 = part1;Çíà÷åíèå êàæäîãî ïîëÿ ïåðåìåííîé part1
ïðèñâàèâàåòñÿ ñîîòâåòñòâóþùåìó ïîëþ ïåðåìåííîé part2. Âíèìàíèå: îïåðàöèÿ
ïðèñâàèâàíèÿ ìîæåò áûòü âûïîëíåíà òîëüêî íàä ïåðåìåííûìè, èìåþùèìè îäèí è òîò
æå òèï.
Â
àíãëèéñêîé ñèñòåìå ìåð îñíîâíûìè åäèíèöàìè èçìåðåíèÿ äëèíû ñëóæàò ôóò è äþéì,
ïðè÷åì îäèí ôóò ðàâåí 12 äþéìàì. Ïðåäïîëîæèì, íåîáõîäèìî ñîçäàòü èíæåíåðíûé
ïðîåêò ñ èñïîëüçîâàíèåì àíãëèéñêîé ñèñòåìû ìåð.
Áûëî
áû óäîáíî ïðåäñòàâëÿòü äëèíû â âèäå äâóõ ÷èñåë, îäíî èç êîòîðûõ
ðàâíÿëîñü áû êîëè÷åñòâó ôóòîâ, à äðóãîå - êîëè÷åñòâó äþéìîâ.  ñëåäóþùåì
ïðèìåðå ýòà èäåÿ ðåàëèçîâàíà ñ ïîìîùüþ ñòðóêòóðû.
#include <iostream>
using namespace std;
struct Mera // äëèíà
â àíãëèéñêîé ñèñòåìå
{
int
fut;
float
dujm;
};
Ïðèìåð
ïðèìåíåíèÿ ñòðóêòóð
int main()
{
Mera d1, d3;
Mera d2 = { 11, 6.25 };
cout << “\nÂâåäèòå ÷èñëî ôóòîâ: "; cin >> d1.fut;
cout << "Ââåäèòå ÷èñëî äþéìîâ: ": cin >> d1.dujm;
d3.dujm = d1.dujm +d2.dujm;
d3.fut =0;
if ( d3.dujm >= 12.0 )
{
d3.dujm -=
12.0; d3.fut++;
}
d3.fut += d1.fut + d2.fut;
cout << d1.fut <<"\'-" <<
d1.dujm << "\" + ";
cout << d2.fut <<"\’-" <<
d2.dujm << "\" = ";
cout << d3.fut <<"\'-" <<
d3.dujm << "\"\n";
return
0;
}
Ïðèìåð
ïðèìåíåíèÿ ñòðóêòóð
Çäåñü
ñòðóêòóðà Mera ñîñòîèò èç äâóõ ïîëåé: fut è dujm. Îïðåäåëåíû òðè ïåðåìåííûå òèïà Mera: d1, d2 è
d3, ïðè÷åì ïåðåìåííóþ d2 èíèöèàëèçèðîâàëè çíà÷åíèåì 11’-6.25", à
ïåðåìåííûå d1 è d3 ïîêà îñòàâëåíû áåç íà÷àëüíîãî çíà÷åíèÿ. Çàòåì ïðîãðàììà
çàïðàøèâàåò ó ïîëüçîâàòåëÿ ÷èñëî ôóòîâ è äþéìîâ, êîòîðûå èñïîëüçóþòñÿ äëÿ
èíèöèàëèçàöèè ïåðåìåííîé d1. Çàòåì çíà÷åíèÿ d1 è d2 ñêëàäûâàþòñÿ, à ðåçóëüòàò
ïðèñâàèâàåòñÿ ïåðåìåííîé d3. Íàêîíåö, ïðîãðàììà âûâîäèò äâå ïåðâîíà÷àëüíûå
äëèíû è èõ ñóììó. Âíèìàíèå: íåëüçÿ ñëîæèòü äâå äëèíû ñëåäóþùèì îáðàçîì:
d3
= d1 + d2;
Òàêîå
äåéñòâèå âûçîâåò îøèáêó, â C++ íå îïðåäåëåíû äåéñòâèÿ, êîòîðûå íåîáõîäèìî
âûïîëíèòü ïðè ñëîæåíèè ïåðåìåííûõ òèïà Mera. Îïåðàöèÿ
+ ïðèìåíèìà äëÿ ñòàíäàðòíûõ òèïîâ C++, íî îíà íå îïðåäåëåíà äëÿ òèïîâ
äàííûõ, êîòîðûå ñîçäàþòñÿ ïîëüçîâàòåëÿìè ().
Ñòðóêòóðû è êëàññû
Íàäî
îòìåòèòü, ÷òî ñðàâíèâàòü ìåæäó ñîáîé ñòðóêòóðíûå ïåðåìåííûå, êàê è ñêëàäûâàòü
èõ äðóã ñ äðóãîì, íåëüçÿ. Íàïðèìåð, äëÿ ñòðóêòóðíûõ ïåðåìåííûõ part1 è part2 òèïà part, êîíñòðóêöèÿ if
(part1
== part2)
íåäîïóñòèìà, ïîòîìó ÷òî îïåðàöèè == íè÷åãî íå
èçâåñòíî î ïåðåìåííûõ òèïà part.
Îäíàêî, êàê ìû óâèäèì ïîçæå, äàííàÿ ïðîáëåìà ðàçðåøèìà ñ ïîìîùüþ ïåðåãðóçêè
îïåðàöèé. Êàê èçâåñòíî, ñòðóêòóðû îáû÷íî èñïîëüçóþòñÿ äëÿ îáúåäèíåíèÿ äàííûõ, à
êëàññû - äëÿ îáúåäèíåíèÿ äàííûõ è ôóíêöèé.
Òåì
íå ìåíåå, â C++ ñòðóêòóðû òàêæå îáëàäàþò âîçìîæíîñòüþ âêëþ÷àòü â ñåáÿ ôóíêöèè.
Ðàçëè÷èÿ â ñèíòàêñèñå ìåæäó ñòðóêòóðàìè è êëàññàìè ìèíèìàëüíû, ïîýòîìó
òåîðåòè÷åñêè ìîæíî èñïîëüçîâàòü îäíî âìåñòî äðóãîãî. Îäíàêî ñòðóêòóðû îáû÷íî
èñïîëüçóþò òîëüêî äëÿ õðàíåíèÿ äàííûõ, à êëàññû - äëÿ õðàíåíèÿ äàííûõ è
ôóíêöèé. Ïðîèçâîäÿòñÿ ìíîãèå äåéñòâèÿ ÿçûêà C++. Îáåñïå÷èâàþò äîñòóï ê ôàéëàì,
ïðîèçâîäÿò ìàòåìàòè÷åñêèå ðàñ÷åòû, âûïîëíÿþò ïðåîáðàçîâàíèå äàííûõ è äð.
äåéñòâèÿ.
Ïðèìåð
èñïîëüçîâàíèÿ áèáëèîòå÷íîé ôóíêöèè sqrt
#include <iostream.h>
#include <cmath.h>
using namespace std;
int main()
{
double num,answ;
cout << "Ââåäèòå ÷èñëî: ";
cin >> num;
answ = sqrt(numr);
cout
<< "Êâàäðàòíûé êîðåíü ðàâåí " << answ
<< endl; return 0;
}
Ñíà÷àëà ïðîãðàììà ïîëó÷àåò çíà÷åíèå îò ïîëüçîâàòåëÿ.
Çàòåì ïîëó÷åííîå çíà÷åíèå èñïîëüçóåòñÿ â êà÷åñòâå àðãóìåíòà äëÿ ôóíêöèè sqrt(): answ = sqrt(number);
Ôóíêöèÿ îáðàáàòûâàåò àðãóìåíò è âîçâðàùàåò çíà÷åíèå - âûõîäíûå äàííûå ôóíêöèè.
Âîçâðàùåíèå çíà÷åíèÿ ôóíêöèåé îçíà÷àåò âîçìîæíîñòü ïðèñâàèâàíèÿ òàêîãî çíà÷åíèÿ
ïåðåìåííîé ñîîòâåòñòâóþùåãî òèïà, â äàííîì ñëó÷àå - ïåðåìåííîé answ. Çàòåì ïðîãðàììà îòîáðàæàåò çíà÷åíèå ïåðåìåííîé íà
ýêðàíå. Àðãóìåíòû ôóíêöèé è âîçâðàùàåìûå èìè çíà÷åíèÿ äîëæíû èìåòü ïðàâèëüíûé
òèï. Èíôîðìàöèþ îá ýòèõ òèïàõ ìîæíî ïîëó÷èòü ñ ïîìîùüþ ñïðàâî÷íîé ñèñòåìû
êîìïèëÿòîðà, ñîäåðæàùåé îïèñàíèÿ áèáëèîòå÷íûõ ôóíêöèé. Äëÿ ôóíêöèè sqrt() è àðãóìåíò, è âîçâðàùàåìîå çíà÷åíèå äîëæíû èìåòü òèï
double, ïîýòîìó â ïðîãðàììå èñïîëüçîâàíû ïåðåìåííûå
èìåííî ýòîãî òèïà.