Задача этой книги дать краткое и четкое изложение языка С++ в соответствии со стандар том iso/iec 14882. Она предназначена для студентов, изучающих язык «с нуля»



Download 2 Mb.
bet66/232
Sana29.03.2022
Hajmi2 Mb.
#516205
TuriЗадача
1   ...   62   63   64   65   66   67   68   69   ...   232
Bog'liq
Т. А. Павловская C C . Программирование на языке высокого уровня

Ïåðåìåííûå æåëaòåëüíî èíèöèaëèçèðîâaòü ïðè èõ îáúяâëåíèè, a îáúяâëяòü êaê ìîæíî áëèæå ê ìåñòó èõ íåïîñðåäñòâåííîãî èñïîëüçîâaíèя. C äðóãîé ñòîðîíû, óäîáíî âñå îáúяâëåíèя ëîêaëüíûõ ïåðåìåííûõ ôóíêöèè ðañïîëaãaòü â ía÷aëå áëîêa òaê, ÷òîáû èõ áûëî ïðîñòî íaéòè. Ïðè íåáîëüøèõ ðaçìåðaõ ôóíêöèé îáa ýòè ïîæåëaíèя äîñòaòî÷íî ëåãêî ñîâìåñòèòü.


Ëînaëüíûå ïåðåìåííûå ïðåäïî÷òèòåëüíåå ãëîáaëüíûõ. Åñëè ãëîáaëüíaя ïåðåìåí- íaя âñå æå íåîáõîäèìa, ëó÷øå îáúяâèòü åå ñòaòè÷åñêîé, ÷òî îãðaíè÷èò îáëañòü åå äåéñòâèя îäíèì èñõîäíûì ôaéëîì.
Âñþ íåîáõîäèìóþ ôóínöèè èíôîðìaöèþ íóæíî ñòðåìèòüñя ïåðåäaâaòü åñ â na÷å- ñòâå ïaðaìåòðîâ, a íå ÷åðåç ãëîáaëüíûå ïåðåìåííûå, èçìåíåíèå êîòîðûõ òðóäíî îòñëåäèòü.
Âõîäíûå ïaðaìåòðû ôóínöèè, êîòîðûå íå äîëæíû â íåé èçìåíяòüñя, ñëåäóåò ïåðåäaâaòü nan nîíñòaíòíûå ññûënè, a íå ïî çía÷åíèþ. Êðîìå óëó÷øåíèя ÷èòaå- ìîñòè ïðîãðaììû è óìåíüøåíèя âîçìîæíîñòè ñëó÷aéíûõ îøèáîê, ýòîò ñïîñîá ãîðaçäî áîëåå ýôôåêòèâåí, îñîáåííî â ñëó÷aå ïåðåäa÷è ñëîæíûõ îáúåêòîâ. Èñ- êëþ÷åíèå ñîñòaâëяþò ïaðaìåòðû, ðaçìåð êîòîðûõ ìåíüøå ðaçìåða óêaçaòåëя — èõ ýôôåêòèâíåå ïåðåäaâaòü ïî çía÷åíèþ (íå çaáûâaя óêaçûâaòü COnst).
Âûõîäíûå ïaðaìåòðû ôóínöèè ïðåäïî÷òèòåëüíåå ïåðåäaâaòü ïî aäðåñó, a íå ïî ññûëêå, ÷òîáû èç ñåìaíòèêè âûçîâa ôóíêöèè ìîæíî áûëî ïîíяòü, ÷òî âíóòðè íåå ïaðaìåòð èçìåíяåòñя.
Íåëüçя âîçâðaùaòü èç ôóínöèè ññûënó ía ëînaëüíóþ ïåðåìåííóþ, ïîòîìó ÷òî îía aâòîìaòè÷åñêè óíè÷òîæaåòñя ïðè âûõîäå èç ôóíêöèè, êîòîðaя яâëяåòñя åå îáëa- ñòüþ äåéñòâèя. Íå ðåêîìåíäóåòñя âîçâðaùaòü ññûëêó ía ïåðåìåííóþ, ñîçäaííóþ âíóòðè ôóíêöèè â äèíaìè÷åñêîé îáëañòè ïaìяòè ñ ïîìîùüþ ôóíêöèè mallOC èëè îïåðaöèè new, òaê êaê ýòî ïðèâîäèò ê òðóäíî êîíòðîëèðóåìûì óòå÷êaì ïaìяòè.
Cëåäóåò èçáåãaòü èñïîëüçîâaíèя â ïðîãðaììå ÷èñåë â яâíîì âèäå. Êîíñòaíòû äîëæíû èìåòü îñìûñëåííûå èìåía, çaäaííûå ÷åðåç COnst èëè enum (ïîñëåäíåå ïðåäïî÷òèòåëüíåå, òaê êaê ïaìяòü ïîä ïåðå÷èñëåíèå íå âûäåëяåòñя). Cèìâîëè÷å- ñêîå èìя äåëaåò ïðîãðaììó áîëåå ïîíяòíîé, a êðîìå òîãî, ïðè íåîáõîäèìîñòè èç- ìåíèòü çía÷åíèå êîíñòaíòû ýòî ìîæíî ñäåëaòü âñåãî ëèøü â îäíîì ìåñòå ïðî- ãðaììû.
Äëя çaïèñè êaæäîãî ôðaãìåíòa aëãîðèòìa íåîáõîäèìî èñïîëüçîâaòü íaèáîëåå ïîäõîäяùèå ñðåäñòâa яçûna. Ëþáîé öèêë ìîæíî, â ïðèíöèïå, ðåaëèçîâaòü ñ ïî- ìîùüþ îïåðaòîðîâ gOtO è if, íî ýòî áûëî áû íåëåïî, ïîñêîëüêó ñ ïîìîùüþ îïå- ðaòîðîâ öèêëa òå æå äåéñòâèя ëåã÷å ÷èòaþòñя, a êîìïèëяòîð ãåíåðèðóåò áîëåå ýôôåêòèâíûé êîä. Âåòâëåíèå ía íåñêîëüêî íaïðaâëåíèé ïðåäïî÷òèòåëüíåå ðåa- ëèçîâûâaòü ñ ïîìîùüþ îïåðaòîða switCh, a íå íåñêîëüêèõ if, êðañèâûé ñïîñîá ïå- ðåäa÷è óïðaâëåíèя îäíîé ôóíêöèè èç ãðóïïû — ìaññèâ óêaçaòåëåé ía ôóíêöèè.
Ñëåäóåò èçáåãaòü ëèøíèõ ïðîâåðîn óñëîâèñ. Íaïðèìåð, âìåñòî îïåðaòîðîâ
if (strstr(a, b) > 0 ) { … } else if (strstr(a, b)<0){…} else if (strstr(a, b) == 0){…}
ëó÷øå íaïèñaòü
int is_equal = strstr(a, b); if (is_equal > 0){…} else if (is_equal < 0){…}
else { … } // çäåñü is_equal == 0
Åñëè ïåðâaя âåòâü îïåðaòîða if ñîäåðæèò ïåðåäa÷ó óïðaâëåíèя, èñïîëüçîâaòü
else íåò íåîáõîäèìîñòè:

if (is_equal > 0) { … break;} if (is_equal < 0) { … return;}


{ … } // çäåñü is_equal == 0
Áåññìûñëåííî èñïîëüçîâaòü ïðîâåðnó ía íåðaâåíñòâî íóëþ (èëè, ÷òî åùå õóæå, ía ðaâåíñòâî true èëè false):
bOOl is_busy;

if (is_busy == true){…} // ïëîõî! Ëó÷øå if (is_busy) if (is_busy == false){…} // ïëîõî! Ëó÷øå if (!is_busy) Char s[80];
while (fgets(s) != NULL){…} // ïëîõî! Ëó÷øå while (fgets(s)) while(a == 0){…} // ìîzíî while(!a)
Åñëè îäía èç âåòâåé óñëîâíîãî îïåðaòîða ãîðaçäî êîðî÷å, ÷åì äðóãaя, áîëåå nî- ðîònóþ âåòâü if ëó÷øå ïîìåñòèòü ñâåðõó, èía÷å âñя óïðaâëяþùaя ñòðóêòóða ìî- æåò íå ïîìåñòèòüñя ía ýêðaíå, ÷òî çaòðóäíèò îòëaäêó.
 íåêîòîðûõ ñëó÷aяõ óñëîâíaя îïåðaöèя ëó÷øå óñëîâíîãî îïåðaòîða:
if (z)i= j; elsei= k; // ëó÷øå òaê:i=z?j: k;

Download 2 Mb.

Do'stlaringiz bilan baham:
1   ...   62   63   64   65   66   67   68   69   ...   232




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish