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

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

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

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

×òîáû â òàêîé ñèòóàöèè ñîáëþñòè ñòèëüñ ôèêñèðîâàííûì ðàçìåðîì îòñòóïà, íóæíî äåéñòâîâàòü ñîâåðøåííî èíà÷å:93(let()(seq (build-sequencer 0))(colset '(red orange yellow green blue violet))(ls nil)) ;;(setq ls (mapcar #'list seq colset the-list))(store ls)(reverse ls)Îáðàòèòå âíèìàíèå íà ñèìâîë êîììåíòàðèÿ â êîíöå ñïèñêà ñâÿçûâàíèé;ïðèìåíÿòü åãî, êîíå÷íî, íå îáÿçàòåëüíî, íî îí ïîçâîëÿåò ÿñíåå îòäåëèòüçàãîëîâîê ôîðìû let îò å¼ òåëà.  ïðèíöèïå, ìîæíî íàéòè è äðóãîéäîïóñòèìûé ñòèëü, íàïðèìåð:(let ((seq (build-sequencer 0))(colset '(red orange yellow green blue violet))(ls nil)) ;;(setq ls (mapcar #'list seq colset the-list))(store ls)(reverse ls))Ê òàêîìó ñòèëþ ïðèä¼òñÿ íåêîòîðîå âðåìÿ ïðèâûêàòü, î÷åíü óæ íåïðèâû÷íî âûãëÿäÿò äâå çàêðûâàþùèå ñêîáêè íà îäíîì óðîâíå â óñëîâèÿõîòñóòñòâèÿ îòêðûâàþùåé ñêîáêè; íî, êàê íè ñòðàííî, ýòî âñ¼ æå ëó÷øå,÷åì ïîêàçàííûé âûøå ¾òðàäèöèîííûé¿ âàðèàíò, â êîòîðîì íå ñîáëþäàåòñÿ ïîñòîÿíñòâî ðàçìåðà îòñòóïà è çàêðûâàþùèå ñêîáêè ñêàïëèâàþòñÿâ êîíöå êîíñòðóêöèè, îáðàçóÿ íå÷òî íåóäîáîâàðèìîå.3.3.

Ïðîëîã, Ýðëàíã è äðóãèåÏðîãðàììà íà Ïðîëîãå ñîñòîèò èç ïðåäëîæåíèé, êàæäîå èç êîòîðûõèìååò çàãîëîâîê (â îðèãèíàëå ïðîñòî head, òî åñòü ¾ãîëîâó¿) è, âîçìîæíî, òåëî, êîòîðîå â áîëüøèíñòâå ñëó÷àåâ ïðåäñòàâëÿåò ñîáîé ñïèñîêòåðìîâ, íî ìîæåò èìåòü è áîëåå ñëîæíóþ ñòðóêòóðó áëàãîäàðÿ íàëè÷èþ ñâÿçêè ¾èëè¿, îáîçíà÷àåìîé òî÷êîé ñ çàïÿòîé (îáû÷íàÿ ñâÿçêà ¾è¿îáîçíà÷àåòñÿ ïðîñòîé çàïÿòîé).

Ïðåäëîæåíèÿ ñ çàãîëîâêàìè, èìåþùèìèîäèíàêîâîå èìÿ è ¾àðíîñòü¿, ñîñòàâëÿþò ïðîöåäóðû. Àíàëîãè÷íûé ñèíòàêñèñ èñïîëüçóåòñÿ â Ýðëàíãå è íåêîòîðûõ äðóãèõ ÿçûêàõ.Âûðàæåíèÿ Ïðîëîãà ñèëüíî íàïîìèíàþò óæå çíàêîìûå íàì S-âûðàæåíèÿ Ëèñïà ñîáñòâåííî ãîâîðÿ, îòëè÷èå òîëüêî â ïîÿâëåíèè ôóíêòîðîâ è ôóíêöèîíàëü94íûõ òåðìîâ, è ïëþñ ê òîìó íåêîòîðûå óíàðíûå è áèíàðíûå òåðìû ìîæíî çàïèñûâàòü â èíôèêñíîé íîòàöèè.

Íà ïåðâûé âçãëÿä ìîæåò ïîêàçàòüñÿ, ÷òî ñèíòàêñèñ ïðèýòîì ñòàíîâèòñÿ ñëîæíåå; îäíàêî â êîíòåêñòå ðàññóæäåíèé îá îôîðìëåíèè êîäàñèòóàöèÿ îêàçûâàåòñÿ ïðÿìî ïðîòèâîïîëîæíîé: â áîëüøèíñòâå ñëó÷àåâ îôîðìëÿòü êîä íà Ïðîëîãå ãîðàçäî ïðîùå. Äåëî â òîì, ÷òî ïðîãðàììû íà Ïðîëîãå, âîòëè÷èå îò ïðîãðàìì íà Ëèñïå, î÷åíü ðåäêî òðåáóþò ìíîãîóðîâíåâîé âëîæåííîñòèêîíñòðóêöèé.Ïîêà ïðåäëîæåíèå óìåùàåòñÿ â îäíîé ñòðîêå, åãî ÷àñòî òàê â îäíóñòðîêó è çàïèñûâàþò:no_attack(_, []).no_attack(Q, [X|L]) :- not(attacks(Q, X)), no_attack(Q, L).õîòÿ â íåêîòîðûõ ðóêîâîäñòâàõ è ïðèìåðàõ ïðèìåíÿåòñÿ äðóãîé ñòèëü,ïðåäïîëàãàþùèé, ÷òî íà îäíîé ñòðîêå ñ çàãîëîâêîì ïðåäëîæåíèÿ íå ïèøåòñÿ áîëüøå íè÷åãî, äàæå åñëè ïðàâàÿ ÷àñòü ïðåäëîæåíèÿ ñîñòîèò âñåãîèç îäíîé ¾öåëè¿; ïðàâàÿ ÷àñòü âñåãäà çàïèñûâàåòñÿ, íà÷èíàÿ ñî ñëåäóþùåé ñòðîêè, ñî ñäâèãîì âïðàâî, ïðè÷¼ì îáû÷íî òàêîé ñäâèã âûáèðàþòðàâíûì òàáóëÿöèè:queens(N, Result) :do_queens(N, 0, [], Result). ýòîì ñëó÷àå îñòà¼òñÿ âîïðîñ, êàê ðàñïîëîæèòü öåëè ïðàâîé ÷àñòè, åñëèèõ áîëüøå îäíîé, íî îíè, â ïðèíöèïå, óìåùàþòñÿ â îäíó ñòðîêó.

Äîïóñòèìà êàê çàïèñü ¾â ñòîëáèê¿:no_attack(Q, [X|L]) :not(attacks(Q, X)),no_attack(Q, L).òàê è çàïèñü ¾â ëèíåéêó¿:no_attack(Q, [X|L]) :not(attacks(Q, X)), no_attack(Q, L).Êàêóþ èç íèõ ïðåäïî÷åñòü, ðåøàéòå ñàìè; êàê îáû÷íî, åäèíñòâåííîé ðåêîìåíäàöèåé çäåñü áóäåò ïðèäåðæèâàòüñÿ êàêîãî-òî îäíîãî ñòèëÿ âî âñåéïðîãðàììå.Åñëè æå ïðåäëîæåíèå â îäíó ñòðîêó íå óìåùàåòñÿ òî îñòà¼òñÿ ôàêòè÷åñêè òîëüêî îäèí âàðèàíò, à èìåííî çàïèñàòü åãî ¾ñòîëáèêîì¿:sameset([], []).sameset([X|L], M) :member(X, M),delete_all(X, M, M1),delete_all(X, L, L1),sameset(L1, M1).95Íàäî îòìåòèòü, ÷òî ìíîãèå àâòîðû ïðîãðàìì íà Ïðîëîãå äåëàþò îäíó è òó æå õàðàêòåðíóþ îøèáêó ïðè îôîðìëåíèè òàêèõ ìíîãîñòðî÷íûõïðåäëîæåíèé, à èìåííî çàïèñûâàþò ïåðâóþ öåëü ïðàâîé ÷àñòè â îäíîéñòðîêå ñ çàãîëîâêîì, à ïîñëåäóþùèå öåëè ðàçìåùàþò òî÷íî ïîä ïåðâîé.Ïîëó÷àåòñÿ ïðèìåðíî òàê:sameset([], []).sameset([X|L], M) :- member(X, M),delete_all(X, M, M1),delete_all(X, L, L1),sameset(L1, M1).Íåäîñòàòîê òàêîãî ðåøåíèÿ ìû óæå íåîäíîêðàòíî îáñóæäàëè: ðàçìåð îòñòóïà îêàçûâàåòñÿ çàâèñÿùèì îò íåêèõ îáñòîÿòåëüñòâ, â äàííîìñëó÷àå îò äëèíû çàãîëîâêà ïðåäëîæåíèÿ.Ñèòóàöèþ ìîæåò ñèëüíî îñëîæíèòü ïîÿâëåíèå â ïðåäëîæåíèÿõ òî÷êèñ çàïÿòîé (íàïîìíèì, îíà èçîáðàæàåò â Ïðîëîãå äèçúþíêöèþ).

 ñèòóàöèè, êîãäà ïðåäëîæåíèå ñîñòîèò èç íåñêîëüêèõ àëüòåðíàòèâ, ðàçäåë¼ííûõ òî÷êîé ñ çàïÿòîé, è êàæäàÿ àëüòåðíàòèâà óìåùàåòñÿ â ñòðîêó, ïðîùåâñåãî òàê è ïèñàòü ïî îäíîé àëüòåðíàòèâå â ñòðîêå:lexic_process_char(Ch, Line, Newstate, Sofar, R) :isspace(Ch), !, R = Sofar, Newstate = home;[Ch] = ",", !, R = [comma|Sofar], Newstate = home;[Ch] = ":", !, R = [colon|Sofar], Newstate = home;[Ch] = ";", !, R = [semicolon|Sofar], Newstate = home;[Ch] = ".", !, R = Sofar, Newstate = stop;isalnum(Ch), !, R = [[Ch] | Sofar], Newstate = id;!, write('lexical error at line '), write(Line), nl, fail.Åñëè â àíàëîãè÷íîé ñèòóàöèè íåêîòîðûå àëüòåðíàòèâû â ñòðîêó íåïîìåùàþòñÿ, ìîæíî ïîñîâåòîâàòü ÷òî-òî âðîäå ñëåäóþùåãî:lexic_process_char(Ch, Line, Newstate, Sofar, R) :isspace(Ch), !,R = Sofar,Newstate = home;[Ch] = ",", !,R = [comma|Sofar],Newstate = home;[Ch] = ":", !,R = [colon|Sofar],Newstate = home;% .

. .96Çäåñü ìû âîñïîëüçîâàëèñü òåì ôàêòîì, ÷òî â äàííîì ïðèìåðå ñîïîñòàâëåíèå âìåñòå ñ îòñå÷åíèåì ïðåäñòàâëÿåò ñîáîé ÷òî-òî âðîäå ¾çàãîëîâêà¿äëÿ àëüòåðíàòèâû, ïîñêîëüêó çàäà¼ò óñëîâèå, ïðè êîòîðîì äàííàÿ àëüòåðíàòèâà áóäåò èñïîëíåíà, à îñòàëüíûå èñïîëíåíû íå áóäóò.Íó à äëÿ áîëåå ñëîæíûõ ñëó÷àåâ, â îñîáåííîñòè ïðè èñïîëüçîâàíèèñêîáîê äëÿ ãðóïïèðîâêè öåëåé, ìîæíî ïðåäëîæèòü ñëåäîâàòü îáùèìïðèíöèïàì îôîðìëåíèÿ âëîæåííûõ êîíñòðóêöèé: íà÷àëî è êîíåö êîíñòðóêöèè ðàçìåùàòü ñòðîãî äðóã íàä äðóãîì, à âñ¼ âëîæåííîå ñäâèãàòüâïðàâî íà ïîñòîÿííûé ðàçìåð ñäâèãà.97Âìåñòî çàêëþ÷åíèÿÊîíå÷íî, â ýòîé ñðàâíèòåëüíî íåáîëüøîé êíèæêå íåâîçìîæíî áûëîó÷åñòü âñåãî ìíîãîîáðàçèÿ îñîáåííîñòåé ðàçëè÷íûõ ÿçûêîâ ïðîãðàììèðîâàíèÿ, îõâàòèòü âñå ñèòóàöèè, êîòîðûå ìîãóò âîçíèêíóòü ïðè íàïèñàíèè ïðîãðàìì, èëè ïåðå÷èñëèòü âñå ñóùåñòâóþùèå (è äîïóñòèìûå) ïîäõîäû ê ðåøåíèþ ïðîáëåì, ñâÿçàííûõ ñ ãðàìîòíûì îôîðìëåíèåì êîäà.Êàê ìû âèäåëè, âî ìíîãèõ (åñëè íå âî âñåõ) ñëó÷àÿõ âîçìîæíû è äîïóñòèìû ðàçëè÷íûå ðåøåíèÿ îäíîé è òîé æå ïðîáëåìû, ïðè÷¼ì óêàçàòüñðåäè íèõ îäèí ¾îäíîçíà÷íî ëó÷øèé¿ íå ïðåäñòàâëÿåòñÿ âîçìîæíûì. òàêèõ óñëîâèÿõ ïðîöåññ îôîðìëåíèÿ ïðîãðàììíîãî êîäà ñòàíîâèòñÿäåëîì âïîëíå òâîð÷åñêèì; âïðî÷åì, ïðîãðàììèðîâàíèå âñåãäà áûëî ñêîðåå èñêóññòâîì, íåæåëè ÷åì-òî åù¼.Íàäåþñü, ìíå óäàëîñü ïîêàçàòü, ÷òî ïðåäñòàâëÿåò ñîáîé îôîðìëåíèå ïðîãðàììíîãî êîäà êàê ïðåäìåòíàÿ îáëàñòü, è ïðîäåìîíñòðèðîâàòüâîçìîæíûå îòâåòû íà íåêîòîðûå (íî íå âñå!) âîçíèêàþùèå â ýòîé îáëàñòè âîïðîñû.

 ëþáîì ñëó÷àå, óâàæàåìûå ÷èòàòåëè, äàëüíåéøåå çàâèñèò òîëüêî îò âàñ.  ïðîöåññå ïðàêòè÷åñêîãî ïðîãðàììèðîâàíèÿ âàììîãóò âñòðåòèòüñÿ ñèòóàöèè, íå îõâà÷åííûå íàñòîÿùèì ïîñîáèåì, âû ìîæåòå ñòîëêíóòüñÿ ñ ÿçûêàìè ïðîãðàììèðîâàíèÿ, òðàäèöèè èëè ñèíòàêñè÷åñêèå îñîáåííîñòè êîòîðûõ âûíóæäàþò èçîáðåòàòü ÷òî-òî íîâîå. Èñïîëüçóéòå ñâîé îïûò, èñïîëüçóéòå çäðàâûé ñìûñë, èñïîëüçóéòå, íàêîíåö,ñîáñòâåííûå îùóùåíèÿ èç îáëàñòè ýñòåòèêè. Ïîñîáèå, êîòîðîå âû ïðî÷èòàëè, ñïîñîáíî ëèøü óêàçàòü áîëåå-ìåíåå ïðàâèëüíîå íàïðàâëåíèå, íîïîñëåäîâàòü ïî ýòîìó ïóòè âàì ïðèä¼òñÿ ñàìîñòîÿòåëüíî. Ïðîùàÿñü, ÿõîòåë áû ïîæåëàòü âàì óñïåõîâ â òîì çàìå÷àòåëüíîì âèäå ÷åëîâå÷åñêîéäåÿòåëüíîñòè, êàêèì, íåñîìíåííî, ÿâëÿåòñÿ ïðîãðàììèðîâàíèå.***Àâòîð ñ÷èòàåò ñâîèì ïðèÿòíûì äîëãîì ïîáëàãîäàðèòü È. Ã. Ãîëîâèíàè À.

Í. Äàðüèíà, ÷üè ñâîåâðåìåííûå çàìå÷àíèÿ ïîìîãëè ñäåëàòü òåêñò ïîñîáèÿ ãîðàçäî ëó÷øå, ÷åì îí áûë; òàêæå áîëüøîå ñïàñèáî Àíå Ôèëîíîâîéçà ñïèñîê îïå÷àòîê.Ýëåêòðîííóþ âåðñèþ ýòîé è äðóãèõ êíèãÀ. Â. Ñòîëÿðîâà âû ìîæåòå íàéòè íàîôèöèàëüíîì ñàéòå àâòîðàhttp://www.stolyarov.info98ÎãëàâëåíèåÏðåäèñëîâèå1. Îáùèå ïðàâèëà è ïðèíöèïû1.1. Ñðåäñòâà è öåëè . . . . . . . . .

. . . . . . . . . . . . . . . .1.2. Ñàìîïîÿñíÿþùèé êîä . . . . . . . . . . . . . . . . . . . . . .1.2.1. Âûáîð èì¼í (èäåíòèôèêàòîðîâ) . . . . . . . . . . . .1.2.2. Ñòðóêòóðíûå îòñòóïû: îáùèå ïðèíöèïû . . . . . . .1.2.3. Åù¼ î ïðîáåëàõ . . . . . . . . . . . . . . . . . . . . .1.2.4. Ðàçáèåíèå çàäà÷ íà ïîäçàäà÷è . . .

. . . . . . . . . .1.3. Óíèâåðñàëüíî-÷èòàåìûé êîä . . . . . . . . . . . . . . . . . .1.3.1. Àëôàâèò ASCII ãàðàíòèÿ óíèâåðñàëüíîñòè òåêñòà1.3.2. Àíãëèéñêèé ÿçûê íå ðîñêîøü, à ñðåäñòâî âçàèìîïîíèìàíèÿ . . . . . . . . . . . . . . . . . . . . . . . .1.3.3. Î ðóññêîÿçû÷íîì ïîëüçîâàòåëüñêîì èíòåðôåéñå . .1.3.4. Ñòàíäàðòíûé ðàçìåð ýêðàíà . . . .

. . . . . . . . . .1.4. Ìîäóëüíîñòü . . . . . . . . . . . . . . . . . . . . . . . . . . .1.4.1. Î ðîëè ïîäñèñòåì è ìîäóëåé . . . . . . . . . . . . . .1.4.2. Ìîäóëü êàê àðõèòåêòóðíàÿ åäèíèöà . . . . . . . . .1.4.3. Îñëàáëåíèå ñöåïëåííîñòè ìîäóëåé . . . . . . . . . .1.4.4. Âûäåëåíèå ìîäóëåé âî âíåøíèå áèáëèîòåêè . . . . .1.5.

×òî òàêîå coding style è êàêèå îíè áûâàþò . . . . . . . . . .2. Ïðîöåäóðíûé êîä: Ïàñêàëü, Ñè, Ñè++2.1. Çàãîëîâîê è òåëî . . . . . . . . . . . . . . . . . . . . . .2.1.1. Îñíîâíûå âàðèàíòû ñòèëÿ îòñòóïîâ íà ïðèìåðåðàòîðà while . . . . . . .

. . . . . . . . . . . .2.1.2. Îïåðàòîð if ñ âåòêîé else . . . . . . . . . . . .2.1.3. Åñëè çàãîëîâîê ñëèøêîì äëèííûé . . . . . . .2.1.4. Çàãîëîâîê è òåëî ïîäïðîãðàììû . . . . . . . . .2.2. Îñîáåííîñòè îôîðìëåíèÿ îïåðàòîðîâ âûáîðà . . . .

.2.3. Ïîñëåäîâàòåëüíîñòü âçàèìîèñêëþ÷àþùèõ if'îâ . . . .2.4. Ìåòêè è îïåðàòîð goto . . . . . . . . . . . . . . . . . .2.5. Êàê ðàçáèòü äëèííóþ ñòðîêó . . . . . . . . . . . . . . .2.5.1. Ñëèøêîì äëèííîå âûðàæåíèå â ïðèñâàèâàíèè99. . .îïå. . .. . .. . .. . .. . .. . .. . .. . .. . .3557791516181820212225252728313335363741434648545660602.6.2.7.2.8.2.9.2.5.2. Ñëèøêîì äëèííûé âûçîâ ïîäïðîãðàììû . . .

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

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

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

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