Главная » Просмотр файлов » А.В. Столяров - Оформление программного кода

А.В. Столяров - Оформление программного кода (1108519), страница 11

Файл №1108519 А.В. Столяров - Оформление программного кода (А.В. Столяров - Оформление программного кода) 11 страницаА.В. Столяров - Оформление программного кода (1108519) страница 112019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 11)

Åñëè ïðèíÿòî ðåøåíèå ñíîñèòüîòêðûâàþùóþ îïåðàòîðíóþ ñêîáêó íà ñëåäóþùóþ ñòðîêó (íå âàæíî, ñîñäâèãîì èëè áåç ñäâèãà), òî ýòîò ñëó÷àé íå ÿâëÿåòñÿ îñîáûì è íå òðåáóåò îòäåëüíîãî ðàññìîòðåíèÿ.  ïðèíöèïå, ìîæíî áûëî áû âîîáùå íåðàññìàòðèâàòü ýòîò ñëó÷àé â êà÷åñòâå ñïåöèàëüíîãî, íî, êàê ÷èòàòåëü ìîæåò áåç òðóäà óáåäèòüñÿ ñàìîñòîÿòåëüíî, ðåçóëüòàòû ìîãóò ïîëó÷èòüñÿíåñêîëüêî íåýñòåòè÷íûå.  ñâÿçè ñ ýòèì ìîæíî äàòü ñëåäóþùóþ ðåêîìåíäàöèþ:if-elseåñëè îäíà èç âåòâåé êîíñòðóêöèèïðåäñòàâëÿåòñîáîé ñîñòàâíîé îïåðàòîð, òî äëÿ âòîðîé âåòâè ñëåäóåò òàêæåèñïîëüçîâàòü ñîñòàâíîé îïåðàòîð, äàæå åñëè îíà ñîñòîèò èç îäíîãî ïðîñòîãî îïåðàòîðà.

Îòìåòèì, ÷òî ñëåäîâàíèå ýòîé ðåêîìåíäà-öèè, âîîáùå ãîâîðÿ, ôàêóëüòàòèâíî, õîòÿ ïðàâèëà, ïðèíÿòûå â êîíêðåòíîé ãðóïïå ðàçðàáîò÷èêîâ, ìîãóò ïðåâðàòèòü ýòó ðåêîìåíäàöèþ â òðåáîâàíèå, êàê ýòî ñäåëàíî â óæå íåîäíîêðàòíî óïîìÿíóòîì âûøå ñîîáùåñòâåðàçðàáîò÷èêîâ ÿäðà ÎÑ Linux.2.1.3.

Åñëè çàãîëîâîê ñëèøêîì äëèííûéÂñ¼ ñêàçàííîå âûøå îòíîñèòåëüíî çàãîëîâêà îïåðàòîðà è åãî òåëàñôîðìóëèðîâàíî â ïðåäïîëîæåíèè, ÷òî çàãîëîâîê ñàì ïî ñåáå (è ñ ó÷¼43òîì åãî îòñòóïà) óìåùàåòñÿ â îäíó ñòðîêó. Íî ÷òî äåëàòü, åñëè óñëîâíîåâûðàæåíèå â çàãîëîâêå îïåðàòîðà if èëè öèêëà ïîëó÷èëîñü òàêèì äëèííûì, ÷òî ïðåñëîâóòûõ 80 çíàêîìåñò íå õâàòàåò?Ïåðâîå, ÷òî íåîáõîäèìî ñäåëàòü â òàêîé ñèòóàöèè ïîäóìàòü, íåëüçÿ ëè ýòî âûðàæåíèå ïîäñîêðàòèòü. Âî ìíîãèõ ñëó÷àÿõ äëèííûå óñëîâíûå âûðàæåíèÿ âîçíèêàþò â ñèëó íåäîñòàòêà îïûòà ïðîãðàììèñòà; òàê,àâòîð ÷àñòî âèäåë â ñòóäåí÷åñêèõ ïðîãðàììàõ ïðîâåðêó ïðèíàäëåæíîñòè ñèìâîëà ê òîìó èëè èíîìó ìíîæåñòâó (íàïðèìåð, ìíîæåñòâó çíàêîâïðåïèíàíèÿ) ÷åðåç ïîñëåäîâàòåëüíîñòü ÿâíî ïðîïèñàííûõ ñðàâíåíèé ñêàæäûì èç ýëåìåíòîâ ìíîæåñòâà, ÷òî-òî âðîäå:if (a == ',' || a == '.' || a == ';' || a == ':' || a ...Ðàçóìååòñÿ, â òàêîé ñèòóàöèè íèêàêîé ïðîáëåìû ñ íåäîñòàòêîì ìåñòàâ ñòðîêå íà ñàìîì äåëå íåò, åñòü ëèøü ïðîáëåìà íåäîñòàòî÷íîñòè âîîáðàæåíèÿ.

Ïðîãðàììèñò, ìèíîâàâøèé ñòàäèþ íîâè÷êà, â òàêîé ñèòóàöèèîïèøåò ôóíêöèþ, ïðîâåðÿþùóþ íà ïðèíàäëåæíîñòü çàäàííîãî ñèìâîëàïðåäîïðåäåë¼ííîìó ìíîæåñòâó, à çàãîëîâîê if'à áóäåò ñîäåðæàòü âûçîâýòîé ôóíêöèè:if (is_punctuation(a)) {Áîëåå îïûòíûé ïðîãðàììèñò âîñïîëüçóåòñÿ ãîòîâîé ôóíêöèåé ispunctèç ñòàíäàðòíîé áèáëèîòåêè, à åù¼ áîëåå îïûòíûé, âîçìîæíî, çàÿâèò, ÷òîñòàíäàðòíàÿ ôóíêöèÿ ispunct ÷ðåçìåðíî ñëîæíà, ïîñêîëüêó çàâèñèò îòíàñòðîåê ëîêàëè â îêðóæåíèè, è âåðí¼òñÿ ê âàðèàíòó ñî ñâîåé ñîáñòâåííîé ôóíêöèåé.  ëþáîì ñëó÷àå, íèêàêîé ïðîáëåìû ñ äëèíîé çàãîëîâêàòóò íåò.Ê ñîæàëåíèþ, íå âñåãäà âñå ïðîáëåìû ðåøàþòñÿ òàê ïðîñòî.

Ìíîãîñòðî÷íûå çàãîëîâêè, êàê áû ìû íè ïûòàëèñü èõ ïîáîðîòü, âñ¼ ðàâíîèíîãäà â ïðîãðàììå âîçíèêàþò. Îäíîçíà÷íîãî îòâåòà, êàê ñ íèìè ïîñòóïèòü, ê ñîæàëåíèþ, íåò; ìû ðàññìîòðèì îäèí èç âîçìîæíûõ âàðèàíòîâ,êîòîðûé íàì ïðåäñòàâëÿåòñÿ íàèáîëåå ïðàêòè÷íûì è îòâå÷àþùèì ïîñòàâëåííîé çàäà÷è ÷èòàåìîñòè ïðîãðàììû.Èòàê,åñëè çàãîëîâîê ñëîæíîãî îïåðàòîðà ïðèõîäèòñÿ ðàçíåñòè íà íåñêîëüêî ñòðîê, òî:1. ðàçáåéòå âûðàæåíèå â çàãîëîâêå íà íåñêîëüêî ñòðîê; ïðåäïî÷òèòåëüíî ðàçðûâàòü ñòðîêó ïî ¾îïåðàöèè âåðõíåãîóðîâíÿ¿, ýòî îáû÷íî ëîãè÷åñêàÿ ñâÿçêà ¾è¿ ëèáî ¾èëè¿;2. êàæäóþ ïîñëåäóþùóþ ñòðîêó çàãîëîâêà ñäâèíüòå îòíîñèòåëüíî ïåðâîé ñòðîêè çàãîëîâêà íà îáû÷íûé ðàçìåð îòñòóïà;443.

âíå çàâèñèìîñòè îò êîëè÷åñòâà ïðîñòûõ îïåðàòîðîâ â òåëå,îáÿçàòåëüíî âîçüìèòå òåëî âàøåãî îïåðàòîðà â îïåðàòîðíûå ñêîáêè, òî åñòü ñäåëàéòå åãî ñîñòàâíûì îïåðàòîðîì;4. âíå çàâèñèìîñòè îò èñïîëüçóåìîãî ñòèëÿ, ñíåñèòå îòêðûâàþùóþ îïåðàòîðíóþ ñêîáêó íà ñëåäóþùóþ ñòðîêó, ÷òîáûîíà ïîñëóæèëà çðèòåëüíûì ðàçäåëèòåëåì ìåæäó ñòðîêàìè çàãîëîâêà è ñòðîêàìè òåëà âàøåãî îïåðàòîðà.Âñ¼ âìåñòå áóäåò âûãëÿäåòü ïðèìåðíî òàê:while (TheCollection^.KnownSet^.First = nil) and(TheCollection^.ToParse^.First <> nil) and(TheCollection^.ToParse^.First^.s = ' ') dobeginSkipSpace(TheCollection)end;while (!the_collection->known_set->first &&the_collection->to_parse->first &&the_collection->to_parse->first->s == ' '){skip_space(the_collection);}Òàêîé âàðèàíò íîðìàëüíî ñðàáîòàåò, åñëè âû íå ñäâèãàåòå ñîñòàâíîé îïåðàòîð îòíîñèòåëüíî çàãîëîâêà; åñëè æå âû ïðåäïî÷ëè èìåííî ýòîò (¾òðåòèé¿) ñòèëü îôîðìëåíèÿ, ìîæíî ïîñîâåòîâàòü ñíåñòè íà ñëåäóþùóþñòðîêó ïîñëåäíþþ ëåêñåìó çàãîëîâêà (êðóãëóþ ñêîáêó äëÿ Ñè/Ñè++,êëþ÷åâîå ñëîâî do äëÿ Ïàñêàëÿ), ïðèìåðíî òàê:while (TheCollection^.KnownSet^.First = nil) and(TheCollection^.ToParse^.First <> nil) and(TheCollection^.ToParse^.First^.s = ' ')dobeginSkipSpace(TheCollection)end;while (!the_collection->known_set->first &&the_collection->to_parse->first &&the_collection->to_parse->first->s == ' '){skip_space(the_collection);}45Ðîëü çðèòåëüíîãî ðàçäåëèòåëÿ â ýòîì ñëó÷àå èãðàåò êàê ðàç ýòîò âîòçàâåðøàþùèé ñèìâîë çàãîëîâêà.Åñëè âû èñïîëüçóåòå ñòèëü, ïðè êîòîðîì îòêðûâàþùàÿ îïåðàòîðíàÿñêîáêà îñòàâëÿåòñÿ íà îäíîé ñòðîêå ñ çàãîëîâêîì, âû ìîæåòå âîñïîëüçîâàòüñÿ åù¼ îäíèì âàðèàíòîì ôîðìàòèðîâàíèÿ: êàê â ïðåäûäóùåì ïðèìåðå, ñíåñèòå ïîñëåäíþþ ëåêñåìó çàãîëîâêà íà îòäåëüíóþ ñòðîêó, è íàýòîé æå ñòðîêå îñòàâüòå îòêðûâàþùóþ îïåðàòîðíóþ ñêîáêó:while (TheCollection^.KnownSet^.First = nil) and(TheCollection^.ToParse^.First <> nil) and(TheCollection^.ToParse^.First^.s = ' ')do beginSkipSpace(TheCollection)end;while (!the_collection->known_set->first &&the_collection->to_parse->first &&the_collection->to_parse->first->s == ' ') {skip_space(the_collection);}Òàêîé ñòèëü íðàâèòñÿ íå âñåì, íî âû è íå îáÿçàíû åìó ñëåäîâàòü; äàæååñëè âåçäå âû îñòàâëÿåòå îïåðàòîðíóþ ñêîáêó íà ñòðîêå çàãîëîâêà, äëÿñëó÷àÿ ìíîãîñòðî÷íîãî çàãîëîâêà âû âïîëíå ìîæåòå ñäåëàòü èñêëþ÷åíèåè îôîðìëÿòü åãî òàê, êàê ïîêàçàíî â ïåðâîì ïðèìåðå ýòîãî ïàðàãðàôà.2.1.4.

Çàãîëîâîê è òåëî ïîäïðîãðàììûÏðè âñåé êàæóùåéñÿ ñõîæåñòè ñèòóàöèé çàãîëîâîê ïîäïðîãðàììû(ôóíêöèè èëè ïàñêàëåâñêîé ïðîöåäóðû) ïðåäñòàâëÿåò ñîáîé ÿâëåíèå ñîâåðøåííî èíîå, íåæåëè çàãîëîâîê ñëîæíîãî îïåðàòîðà.  Ïàñêàëå â êà÷åñòâå òåëà èñïîëüçóåòñÿ íå ïðîñòî ñîñòàâíîé îïåðàòîð, à òàê íàçûâàåìûé áëîê, âêëþ÷àþùèé â ñåáÿ ñåêöèþ ëîêàëüíûõ îïèñàíèé.  Ñè/Ñè++áëîêîì ÿâëÿåòñÿ ëþáîé ñîñòàâíîé îïåðàòîð (âåäü îïèñàòü ëîêàëüíóþ ïåðåìåííóþ ìîæíî â íà÷àëå ëþáîãî òàêîãî îïåðàòîðà), íî ïðè ýòîì â êà÷åñòâå òåëà ôóíêöèè èñïîëüçóåòñÿ èìåííî áëîê ñ îïåðàòîðíûìè ñêîáêàìè,çàìåíèòü åãî îäíèì ïðîñòûì îïåðàòîðîì íåëüçÿ.

Îòìåòèì, ÷òî ðàííèåâåðñèè Ñè3 òàêæå ïðåäóñìàòðèâàëè èíôîðìàöèþ, ïîìåùàåìóþ ìåæäóçàãîëîâêîì è òåëîì ôóíêöèè èìåííî òàì ðàçìåùàëàñü èíôîðìàöèÿ3 Èìååòñÿ â âèäó òàê íàçûâàåìûé ¾K&R C¿, òî åñòü ñèíòàêñèñ, èçíà÷àëüíî ïðåäëîæåííûé Êåðíèãàíîì è Ðèò÷è. Ìíîãèå ñîâðåìåííûå êîìïèëÿòîðû äî ñèõ ïîð èìåþòðåæèì ïîääåðæêè ýòîãî âàðèàíòà ñèíòàêñèñà, íåñìîòðÿ íà òî, ÷òî äàëåêî íå âñå ïðîãðàììèñòû çíàþò î åãî ñóùåñòâîâàíèè.46î òèïàõ ôîðìàëüíûõ ïàðàìåòðîâ.  Ñè++ ñíîâà ïîÿâèëàñü ñèòóàöèÿ,êîãäà íåêóþ èíôîðìàöèþ ïðèõîäèòñÿ ïîìåñòèòü ìåæäó çàãîëîâêîì èòåëîì ýòî ñïèñîê èíèöèàëèçàòîðîâ â êîíñòðóêòîðå. îòëè÷èå îò ñëîæíîãî îïåðàòîðà, ïîäïðîãðàììà ýòî íå ôðàãìåíòðåàëèçàöèè òîãî èëè èíîãî àëãîðèòìà, à ñòðóêòóðíàÿ åäèíèöà ïðîãðàììû êàê öåëîãî, è äëÿ ïîäïðîãðàìì ïðèìåíÿþòñÿ íåñêîëüêî èíûå ñîãëàøåíèÿ îá îôîðìëåíèè.

Ïðåæäå âñåãî, âíå çàâèñèìîñòè îò èçáðàííîãîñòèëÿ äëÿ ñëîæíûõ îïåðàòîðîâ,îïåðàòîðíàÿ ñêîáêà, ñ êîòîðîé íà÷èíàåòñÿ âíåøíèé áëîê ïîäïðîãðàììû, âñåãäà ðàñïîëàãàåòñÿ íàîòäåëüíîé ñòðîêå. Äëÿ Ïàñêàëÿ ýòî òðåáîâàíèå î÷åâèäíî, äîñòàòî÷íîâñïîìíèòü î ñåêöèÿõ ëîêàëüíûõ îïèñàíèé. Äëÿ ñëó÷àÿ ÷èñòîãî Ñè, âîçìîæíî, ýòî òðåáîâàíèå ïîêàæåòñÿ íå ñòîëü î÷åâèäíûì, íî îáúÿñíåíèåìîæíî íàéòè è çäåñü.

Äåëî â òîì, ÷òî, â îòëè÷èå îò çàãîëîâêà ñëîæíîãîîïåðàòîðà,, òî åñòü ÷àñòî âñòðå÷àåòñÿ îòäåëüíî îò òåëà ïîäïðîãðàììû ïðèýòîì îí ñëóæèò îáúÿâëåíèåì ñîîòâåòñòâóþùåé ïîäïðîãðàììû, â îòëè÷èåîò îïèñàíèÿ, â êîòîðîì ïðèñóòñòâóåò òåëî.  Ïàñêàëå òåëî çàìåíÿþò äèðåêòèâîé ¾forward;¿, òîãäà êàê â Ñè îáúÿâëåíèå ôóíêöèè ïðîñòî çàâåðøàþò òî÷êîé ñ çàïÿòîé (îïÿòü-òàêè, âìåñòî òåëà). Ðàçíåñåíèå çàãîëîâêàè òåëà íà ðàçíûå ñòðîêè ïîçâîëÿåò ïîä÷åðêíóòü ôàêò ñàìîñòîÿòåëüíîñòèçàãîëîâêà.Âòîðîå ïðàâèëî ñîñòîèò â òîì, ÷òî (îïÿòü-òàêè, âíå çàâèñèìîñòè îòñòèëÿ, èñïîëüçóåìîãî äëÿ ñëîæíûõ îïåðàòîðîâ)÷åíèåçàãîëîâîê ïîäïðîãðàììû èìååò ñàìîñòîÿòåëüíîå çíà-îïåðàòîðíûå ñêîáêè âíåøíåãî áëîêà ïîäïðîãðàììû íèêîãäà íå ñäâèãàþò îòíîñèòåëüíîçàãîëîâêà. Íàïðèìåð, åñëè ïîäïðîãðàììà íè âî ÷òî íå âëîæåíà4 , òî îïåðàòîðíûå ñêîáêè, îáðàìëÿþùèå å¼ áëîê, âñåãäà ðàçìåùàþòñÿâ ïåðâîé (êðàéíåé ëåâîé) ïîçèöèè ñòðîêè.Ïðè ýòîì îñòàþòñÿ â äåéñòâèè îáùèå ïðàâèëà: ïîñëå îòêðûâàþùåéîïåðàòîðíîé ñêîáêè â ñòðîêå áîëüøå íè÷åãî íå ïèøóò, à çàêðûâàþùóþ îïåðàòîðíóþ ñêîáêó ðàçìåùàþò òî÷íî ïîä íà÷àëîì çàêðûâàåìîéåþ ñòðóêòóðû, òî åñòü â äàííîì ñëó÷àå òî÷íî ïîä îòêðûâàþùåé îïåðàòîðíîé ñêîáêîé.Òàêèì îáðàçîì, ñëåäóþùèå âàðèàíòû îêàçûâàþòñÿ íåïðàâèëüíûìè:function cube(a: real): real;begincube := a * a * aend;float cube(float a){return a * a * a;}function cube(a: real): real; begincube := a * a * aend;float cube(float a) {return a * a * a;}4  ÿçûêå Ñè ýòî âåðíî äëÿ ëþáîé ôóíêöèè, ïîñêîëüêó âëîæåííûõ ôóíêöèé â Ñèíåò; â Ïàñêàëå ïðåäóñìîòðåíû âëîæåííûå ïîäïðîãðàììû, à â Ñè++ ïîäïðîãðàììàìîæåò áûòü âëîæåíà â êëàññ èëè ñòðóêòóðó â êà÷åñòâå ìåòîäà.47function cube(a: real): real;begin cube := a * a * a end;float cube(float a){ return a * a * a; }Ïðàâèëüíî áóäåò íàïèñàòü òàê:function cube(a: real): real;begincube := a * a * aend;float cube(float a){return a * a * a;}2.2.

Характеристики

Тип файла
PDF-файл
Размер
1,1 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6264
Авторов
на СтудИзбе
317
Средний доход
с одного платного файла
Обучение Подробнее