Òåìà :  Îñíîâû ïðîãðàììèðîâàíèÿ íà Ñ++.

1.Ââåäåíèå

2.Ñòðóêòóðà ïðîãðàììû

3. Äèðåêòèâû ïðåïðîöåññîðà è êîììåíòàðèè

4.Ñòàíäàðòíûå òèïû äàííûõ â C++

5.Îïåðàöèè ââîäà è âûâîäà äàííûõ â C++

6.Ïðåîáðàçîâàíèÿ òèïîâ äàííûõ â C++

7.Àðèôìåòè÷åñêèå îïåðàöèè

8.Ïîëüçîâàòåëüñêèå òèïû äàííûõ â C++: ñòðóêòóðû

 

 1.Ââåäåíèå

 êàæäîì ÿçûêå ïðîãðàììèðîâàíèÿ ñóùåñòâóåò îñíîâà, áåç çíàíèÿ êîòîðîé íåâîçìîæíî íàïèñàòü äàæå ñàìîé ïðîñòîé ïðîãðàììû.

 äàííîé òåìå ðàññìàòðèâàþòñÿ îñíîâû C++:

·      ñòðóêòóðà ïðîãðàììû

·      ïåðåìåííûå

·      áàçîâûå îïåðàöèè ââîäà/âûâîäà

·      êîììåíòàðèè

·      àðèôìåòè÷åñêèå îïåðàöèè

·      îïåðàöèè èíêðåìåíòà

·      ïðåîáðàçîâàíèå òèïîâ

·      áèáëèîòå÷íûå ôóíêöèè.

 

2.Ñòðóêòóðà ïðîãðàììû

Ðàññìîòðèì ñàìûé ïðîñòîé, ïðèìåð ïðîãðàììû íà 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.

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

Âîçìîæíîñòü ïðèâåäåíèÿ äåëàåò òèïû äàííûõ íåçàùèùåííûìè îò ïîòåíöèàëüíûõ îøèáîê, ïîñêîëüêó êîìïèëÿòîð íå ìîæåò ïðîêîíòðîëèðîâàòü êîððåêòíîñòü äåéñòâèé ïðè èçìåíåíèè òèïîâ äàííûõ.

7.Àðèôìåòè÷åñêèå îïåðàöèè

 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, ïîýòîìó â ïðîãðàììå èñïîëüçîâàíû ïåðåìåííûå èìåííî ýòîãî òèïà.