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

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

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

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

Îñîáåííîñòè îôîðìëåíèÿ îïåðàòîðîââûáîðàÎáà ðàññìàòðèâàåìûõ íàìè ÿçûêà ïðîãðàììèðîâàíèÿ è Ïàñêàëü, èÑè ïîääåðæèâàþò îïåðàòîðû âûáîðà, ïîçâîëÿþùèå âûïîëíèòü îäèí èçíåñêîëüêèõ èìåþùèõñÿ àëüòåðíàòèâíûõ íàáîðîâ îïåðàòîðîâ.  Ïàñêàëåýòî îïåðàòîð case, â Ñè îïåðàòîð switch-case. Âíå çàâèñèìîñòè îòòîãî, êàêîãî èç òð¼õ îñíîâíûõ ñòèëåé âû ïðèäåðæèâàåòåñü, îïåðàòîð âûáîðà òðåáóåò îòâåòèòü åù¼ íà îäèí âîïðîñ: áóäåòå ëè âû ñäâèãàòü ìåòêè.Âàðèàíòîâ îòâåòà íà ýòîò âîïðîñ ðîâíî äâà: ïîëîæèòåëüíûé è îòðèöàòåëüíûé, è îçíà÷àåò ýòî, ÷òîìåòêè, îáîçíà÷àþùèå íà÷àëî î÷åðåäíîé àëüòåðíàòèâû â îïåðàòîðå âûáîðà, ìîæíî ëèáî îñòàâëÿòü âòîé êîëîíêå, ãäå íà÷èíàåòñÿ çàãîëîâîê îïåðàòîðà âûáîðà, ëèáîñäâèíóòü îòíîñèòåëüíî ïîñëåäíåãî íà ðàçìåð îòñòóïà. Êàê îáû÷-íî â òàêèõ ñëó÷àÿõ, íåîáõîäèìî çàôèêñèðîâàòü ñâîé îòâåò íà ýòîò âîïðîñè îôîðìëÿòü îïåðàòîðû âûáîðà åäèíîîáðàçíî â òåêñòå âñåé ïðîãðàììû,òî åñòü âû ìîæåòå âûáðàòü ëþáîé èç äâóõ âàðèàíòîâ, íî òîëüêî îäèíðàç íà âñþ ïðîãðàììó.Ïîÿñíèì ñêàçàííîå íà ïðèìåðå.

ßçûê Ïàñêàëü íå ïðåäïîëàãàåò â ñîñòàâå îïåðàòîðà âûáîðà èñïîëüçîâàíèå ñëîâà begin (õîòÿ ïðåäïîëàãàåò ñëîâî end), ïîýòîìó îôîðìëåíèå çàãîëîâêà è òåëà îïåðàòîðà âûáîðà, âîîáùå ãîâîðÿ, íå çàâèñèò îò òîãî, îñòàâëÿåì ëè ìû îòêðûâàþùóþîïåðàòîðíóþ ñêîáêó íà îäíîé ñòðîêå ñ çàãîëîâêîì ñëîæíîãî îïåðàòîðà,ñíîñèì ëè ìû å¼ íà ñëåäóþùóþ ñòðîêó è ñíàáæàåì ëè ìû å¼ ñâîèì ñîáñòâåííûì îòñòóïîì; ñ äðóãîé ñòîðîíû, êàæäàÿ âåòêà îïåðàòîðà âûáîðàïðåäïîëàãàåò èñïîëüçîâàíèå òîëüêî îäíîãî îïåðàòîðà, òàê ÷òî â áîëüøèíñòâå ñëó÷àåâ çäåñü ïðèõîäèòñÿ èñïîëüçîâàòü ñîñòàâíûå îïåðàòîðû,è èõ îôîðìëåíèå óæå çàâèñèò îò èçáðàííîãî ñòèëÿ.

Åñëè ìû îñòàâëÿåìîïåðàòîðíóþ ñêîáêó íà îäíîé ñòðîêå ñ çàãîëîâêîì, òî â çàâèñèìîñòè îòíàøåãî ðåøåíèÿ ïî ïîâîäó ìåòîê ìû ìîæåì íàïèñàòü òàê:48case Operation of'+': beginwriteln('Addition');c := a + b;end;'-': beginwriteln('Subtraction');c := a - b;end;else beginwriteln('Error');c := 0;endendcase Operation of'+': beginwriteln('Addition');c := a + b;end;'-': beginwriteln('Subtraction');c := a - b;end;else beginwriteln('Error');c := 0;endendÎòìåòèì, ÷òî, õîòÿ îáà âàðèàíòà ÿâëÿþòñÿ äîïóñòèìûìè, ïåðâûé âûãëÿäèò ñóùåñòâåííî ïðèâëåêàòåëüíåå è ïîíÿòíåå, òàê ÷òî åñëè ìû ïèøåì íàÏàñêàëå è îñòàâëÿåì îïåðàòîðíóþ ñêîáêó íà îäíîé ñòðîêå ñ çàãîëîâêîì,áóäåò ëó÷øå ïðèíÿòü ðåøåíèå â ïîëüçó ñäâèãàíèÿ ìåòîê.Åñëè ìû óñëîâèëèñü ñíîñèòü îïåðàòîðíóþ ñêîáêó íà ñëåäóþùóþ ñòðîêó, íî íå ñäâèãàòü å¼, âûøåïðèâåä¼ííûé ôðàãìåíò êîäà äîëæåí âûãëÿäåòü òàê:case Operation of'+':beginwriteln('Addition');c := a + b;end;'-':beginwriteln('Subtraction');c := a - b;end;elsebeginwriteln('Error');c := 0;endendcase Operation of'+':beginwriteln('Addition');c := a + b;end;'-':beginwriteln('Subtraction');c := a - b;end;elsebeginwriteln('Error');c := 0;endendÄëÿ ýòîãî ñëó÷àÿ ìû òàêæå ïîðåêîìåíäóåì ñäâèãàòü ìåòêè, íî îêîí÷àòåëüíîå ðåøåíèå îñòàâèì çà ÷èòàòåëåì.Íàêîíåö, åñëè ìû íå òîëüêî ñíîñèì îïåðàòîðíóþ ñêîáêó, íî è ñäâèãàåì å¼, òî âûãëÿäåòü ýòî áóäåò ïðèáëèçèòåëüíî òàê:49case Operation of'+':beginwriteln('Addition');c := a + b;end;'-':beginwriteln('Subtraction');c := a - b;end;elsebeginwriteln('Error');c := 0;endendcase Operation of'+':beginwriteln('Addition');c := a + b;end;'-':beginwriteln('Subtraction');c := a - b;end;elsebeginwriteln('Error');c := 0;endendÄëÿ ýòîãî ñëó÷àÿ íàøà ðåêîìåíäàöèÿ áóäåò ïðîòèâîïîëîæíîé: åñëè îïåðàòîðíûå ñêîáêè èìåþò ñâîé ñîáñòâåííûé ñäâèã, òî ìåòêè ëó÷øå íå ñäâèãàòü, ðåçóëüòàò áóäåò ýñòåòè÷íåå. ÿçûêå Ñè îïåðàòîð âûáîðà (switch) óñòðîåí íåñêîëüêî èíà÷å.

Âîïåðâûõ, â ñèíòàêñèñå îïåðàòîðà switch ïðåäóñìîòðåíà îáÿçàòåëüíàÿ îòêðûâàþùàÿ ôèãóðíàÿ ñêîáêà, â ðåçóëüòàòå ÷åãî çàãîëîâîê switch ñòàíîâèòñÿ çàâèñèìûì îò èçáðàííîãî îñíîâíîãî ñòèëÿ. Âî-âòîðûõ, â îòëè÷èåîò Ïàñêàëÿ, â îïåðàòîðå âûáîðà ÿçûêà Ñè ìû èìååì äåëî íå ñ ìíîæåñòâîì âåòâåé, à ñ îäíèì ëèíåéíûì ôðàãìåíòîì êîäà, èìåþùèì íåñêîëüêî òî÷åê âõîäà (ïî ÷èñëó ìåòîê case). Êàæäàÿ ¾âåòêà¿ ìîæåò ñîäåðæàòüïðîèçâîëüíîå êîëè÷åñòâî îïåðàòîðîâ, òàê ÷òî ñîñòàâíûå îïåðàòîðû â êà÷åñòâå âåòâåé îïåðàòîðà switch ïðèìåíÿþòñÿ î÷åíü ðåäêî5 . Óìåñòíî íàïîìíèòü, ÷òî åñëè âåòâè îïåðàòîðà âûáîðà ÿâëÿþòñÿ âçàèìîèñêëþ÷àþùèìè, òî êàæäóþ èç íèõ íóæíî çàêàí÷èâàòü îïåðàòîðîì break;, ÷òîáûíå äîïóñòèòü âûïîëíåíèÿ âåòâè, ñëåäóþùåé íåïîñðåäñòâåííî çà äàííîé.Êàê è â ñëó÷àå Ïàñêàëÿ, ïðè ðàáîòå íà Ñè íàì ïðèä¼òñÿ ïðèíÿòüðåøåíèå î òîì, ñäâèãàòü èëè íå ñäâèãàòü ìåòêè íà ñâîé îòñòóï.

Òàê,åñëè ìû îñòàâëÿåì îòêðûâàþùóþ îïåðàòîðíóþ ñêîáêó íà îäíîé ñòðîêå ñçàãîëîâêîì îïåðàòîðà, ðåçóëüòàò (ñî ñäâèãîì ìåòêè è áåç òàêîâîãî) áóäåòâûãëÿäåòü òàê:5 Åäèíñòâåííàÿ ðàçóìíàÿ ïðè÷èíà äëÿ èõ ïðèìåíåíèÿ â âåòâÿõ îïåðàòîðà switch ýòî íåîáõîäèìîñòü îïèñàíèÿ ëîêàëüíûõ ïåðåìåííûõ.  ýòîì ñëó÷àå èñïîëüçóéòå îáû÷íûå ïðàâèëà äëÿ ðàçìåùåíèÿ îïåðàòîðíûõ ñêîáîê, ñ÷èòàÿ case-ìåòêó îñîáûì ñëó÷àåìçàãîëîâêà ñëîæíîãî îïåðàòîðà.50switch (operation) {case '+':printf("Addition\n");c = a + b;break;case '-':printf("Subtraction\n");c = a - b;break;default:printf("Error\n");c = 0;}switch (operation) {case '+':printf("Addition\n");c = a + b;break;case '-':printf("Subtraction\n");c = a - b;break;default:printf("Error\n");c = 0;}Åñëè ìû ðåøèëè ñíîñèòü îòêðûâàþùóþ îïåðàòîðíóþ ñêîáêó íà ñëåäóþùóþ ñòðîêó, íî íå ñäâèãàòü å¼, âûøåïðèâåä¼ííûé ôðàãìåíò íóæíîáóäåò îôîðìèòü ïî÷òè òàê æå, îòëè÷àòüñÿ áóäåò òîëüêî ïîëîæåíèå ïðåñëîâóòîé ñêîáêè:switch (operation){case '+':printf("Addition\n");/* ...

*/switch (operation){case '+':printf("Addition\n");/* ... */Íàêîíåö, åñëè ìû âñ¼ æå ðåøèëè ñäâèãàòü ñîñòàâíîé îïåðàòîð íà äîïîëíèòåëüíûé îòñòóï, äëÿ îïåðàòîðà switch ïîëó÷èì ïðèìåðíî ñëåäóþùåå:switch (operation){case '+':printf("Addition\n");c = a + b;break;case '-':printf("Subtraction\n");c = a - b;break;default:printf("Error\n");c = 0;}switch (operation){case '+':printf("Addition\n");c = a + b;break;case '-':printf("Subtraction\n");c = a - b;break;default:printf("Error\n");c = 0;}Îäíîçíà÷íî ðåêîìåíäîâàòü òîò èëè èíîé îòâåò íà âîïðîñ î ñäâèãåìåòîê çäåñü ñëîæíî. Îòìåòèì òîëüêî, ÷òî îáû÷íî ñòèëü îôîðìëåíèÿ ìåòîê îñòàâëÿþò îáùèì êàê äëÿ case-ìåòîê, òàê è äëÿ îáû÷íûõ ìåòîê,èñïîëüçóåìûõ â îïåðàòîðå goto, à äëÿ ñëó÷àÿ ÿçûêà Ñè++ ýòî æå ðåøåíèå ðàñïðîñòðàíÿþò íà êëþ÷åâûå ñëîâà public, private è protectedâ çàãîëîâêàõ êëàññîâ; êàê ìû óâèäèì ïîçæå, èõ ëó÷øå íå ñäâèãàòü, è51èìåííî ïî ýòîé ïðè÷èíå ïðîãðàììèñòû, ðàáîòàþùèå íà Ñè++, îáû÷íîíå ñäâèãàþò è case'û.

Âïðî÷åì, ýòî òîæå íå äîãìà: âû âïîëíå ìîæåòåñ÷èòàòü case îòäåëüíûì ñëó÷àåì, äëÿ êîòîðîãî èñïîëüçóåòñÿ ñïåöèàëüíûé ñòèëü.Îáðàòèòå âíèìàíèå, ÷òî â âûøåïðèâåä¼ííûõ ïðèìåðàõ ïî÷òè íèêîãäàíå âñòðå÷àåòñÿ íèêàêîé òåêñò íà îäíîé ñòðî÷êå ñ ìåòêîé; åäèíñòâåííîåèñêëþ÷åíèå îòêðûâàþùàÿ îïåðàòîðíàÿ ñêîáêà äëÿ ñòèëÿ, ïðè êîòîðîì îíà îñòàâëÿåòñÿ íà îäíîé ñòðî÷êå ñ çàãîëîâêîì. Ýòî íå ñëó÷àéíî.Ìåòêà ñàìà ïî ñåáå ìîæåò çàíèìàòü ðàçíîå êîëè÷åñòâî çíàêîìåñò, è åñëè èñïîëüçîâàòü ñòðîêó, ãäå íàïèñàíà ìåòêà, äëÿ ðàçìåùåíèÿ îïåðàòîðà,òî ýòî ïðèâåä¼ò ëèáî ê òîìó, ÷òî îïåðàòîðû îäíîãî ðàíãà âëîæåííîñòèîêàæóòñÿ íà÷èíàþùèìèñÿ ñ ðàçíûõ ïîçèöèé, ëèáî ðàçìåð îòñòóïà âíóòðè îïåðàòîðà âûáîðà îêàæåòñÿ îòëè÷íûì îò òàêîâîãî âî âñåé îñòàëüíîéïðîãðàììå.

È òî, è äðóãîå íåäîïóñòèìî. Ïðèâåä¼ì íåñêîëüêî ïðèìåðîâïîäîáíîãî áåçîáðàçèÿ.switch (mode) {case mode_fully_active: m++;finalize_request();break;case mode_stop: m = 0;drop_request();break;default: m = -1;drop_request();} ýòîì ïðèìåðå îïåðàòîðû ðàçíûõ âåòâåé îäíîãî îïåðàòîðà âûáîðà (òîåñòü èìåþùèå çàâåäîìî îäèíàêîâûé ðàíã âëîæåííîñòè) ñäâèíóòû íà ðàçíîå êîëè÷åñòâî ïîçèöèé.switch (mode) {case mode_fully_active: m++;finalize_request();break;case mode_stop:m = 0;drop_request();break;default:m = -1;drop_request();} ýòîì ïðèìåðå îïåðàòîðû îäíîãî ðàíãà ñäâèíóòû íà îäèíàêîâîå êîëè÷åñòâî ïðîáåëîâ îòíîñèòåëüíî îáúåìëþùåãî îïåðàòîðà, íî ïðè ýòîì ñàìîýòî êîëè÷åñòâî ïðîáåëîâ çàâåäîìî íå ñîîòâåòñòâóåò ðàçìåðó ñäâèãà, ò.

ê.îïðåäåëÿåòñÿ äëèíîé èäåíòèôèêàòîðà mode_fully_active.52switch (mode) {case mode_fully_active: m++;finalize_request();break;case mode_stop: m = 0;drop_request();break;default: m = -1;drop_request();}Çäåñü ïðàâèëüíî ðàñïîëàãàþòñÿ âñå îïåðàòîðû, êðîìå òåõ, ÷òî îêàçàëèñüíà îäíîé ñòðîêå ñ ìåòêîé (îïåðàòîðû m++;, m = 0; è m = -1;); ïîñëåäíèå ðàñïîëîæåíû â ïîçèöèÿõ, îïðåäåëÿåìûõ äëèíîé èäåíòèôèêàòîðîâ âìåòêàõ, è ïðè ÷òåíèè ïðîãðàììû ýòè îïåðàòîðû î÷åíü ëåãêî íå çàìåòèòü.Èòàê, îáùåå ïðàâèëî ñîñòîèò â òîì, ÷òîíà îäíîé ñòðîêå ñ ìåòêîé â îïåðàòîðå âûáîðà ìîæåò ñòîÿòü ðàçâå ÷òî îòêðûâàþùàÿîïåðàòîðíàÿ ñêîáêà, è áîëåå íè÷åãî.

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

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

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

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