Главная » Просмотр файлов » Бьерн Страуструп. Язык программирования С++. Специальное издание (2011)

Бьерн Страуструп. Язык программирования С++. Специальное издание (2011) (1004033), страница 40

Файл №1004033 Бьерн Страуструп. Язык программирования С++. Специальное издание (2011) (Бьерн Страуструп. Язык программирования С++. Специальное издание (2011)) 40 страницаБьерн Страуструп. Язык программирования С++. Специальное издание (2011) (1004033) страница 402018-10-07СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Например, Д'( р ьь 1<р->саит ) У... сначала проверяет р на равенство нулю. Выражение 1<р->свинг вычисляется (проверяется) только в случае, когда р не равен нулю. Некоторые условные операторы (операторы !у) легко могут быть заменены на условные выражения (сопд!1!она!-ехргеээ!опэ).

Например, гУ(а<=Ь) тах=Ь; е!ве лучше выразить следующим образом: тая=(а<=Ь) З Ь:а; Здесь круглые скобки вокруг проверяемого условия не обязательны, но мне кажется, что с ними код читается лучше. Оператор впч!сй можно заменить на эквивалентнь)й набор операторов (1' К примеру, янчгсЬ (га!) ( саяе 1: У() ' Ьгеаа; саве 2: л(); Ьгеай; деуаи!1: Ь(); Ьгеай; ) можно представить и как ф'(го!==1) у'( ); е!ве (!'(»а!==2) 6.3, Обзор операторов языка С++ 187 йО; ейе Ь(); Смысл тот же самый, но первая форма (оператор зичгсЬ) предпочтительнее, ибо явным образом отражает центральную идею о сравнении значения выражения с набором констант. Это делает оператор знйсЬ лучше читаемым в сложных случаях, и даже генерируемый машинный код может оказаться более эффективным.

Обратите внимание на то, что каждая сазе-ветвь оператора ззг(гсЬ должна специальным образом завершаться, если только вы не хотите, чтобы продолжали работать и последующие ветви. Например, яп 1зсЬ (га!) ( саяе 1: сонг« "сазе 1~п" г сазе 2: соиг« "сазе 2~п" г йвуаи(з: соиз« "йв1аи11: саке поз1оипй'~п" г ) при га1==1 выдаст (к изумлению непосвященных) следующий результат: саяе 1 саяе 2 йвгаи11: сазе поз 1оипй Случаи, когда такой результат соответствует намерению программиста, лучше специально комментировать, чтобы легче было по отсутствию комментариев находить участки кода, в которых подобного рода эффекты не планировались, но ошибочным образом все же состоялись.

Чаше всего для завершения сазе-ветвей оператора ззг(гсй используется оператор Ьгеаа, но также применяется и оператор гелзгп (в6.1.1). 6.3.2.1. Объявления в условиях Во избежание случайного неправильного использования переменных их лучше объявлять в максимально узких областях видимости. В частности, лучше откладывать определение локальной переменной до появления подходящего для нее начального значения, что автоматически предотвращает непреднамеренное использование этой переменной до инициализации.

Элегантное применение этих идей заключается в обьявлении переменной внутри условий. Рассмотрим пример: 1/(ИоиЫе й =рпт (згие) ) ( 1е11 l= йг Ьгеайг ) Здесь й объявляется и инициализируется, после чего проверяется в качестве условия. Область видимости переменной й начинается в точке ее обьлвленин и роспростра- 188 Глава б. Выражения и операторы няется на все блоки, контролируемые условием. Например, будь в данном примере еще и еЬе-ветвь оператора (Г,' область видимости з( распространялась бы на обе ветви. Традиционной альтернативой является объявление И до условия. Однако это открывает лазейки для использования переменной з( в неинициализированном состоянии, а также вне предназначенной для нее области действия: еоиЫе А У ...

И2 = й; зУ оорз 1 У ... (з (з( = рпт (багие) ) ( 1еу1 != аз Ьгеаа; ) (р... И = з.бз едва разных использования з( В дополнение к рассмотренным преимуществам объявление переменной в условиях приводит еще и к более компактному исходному коду. Объявление и инициализация в условиях может распространяться лишь на единственную переменную или константу. 6.3.3. Операторы цикла Циклическое выполнение кода реализуется операторами гог, нййе и ао: н Ы(е (условие) оператор ао оператор и Ьце (выражение); Зог (инициализирующий оператор условие.р, з выражение,р,) оператор Каждый из перечисленных управляющих операторов обеспечивает повторное выполнение оператора ззазетенз (называемого управляемым оператором или телом цикла) до тех пор, пока проверяемое выражение (сопг(1((оп или ехргеьз1оп) не примет значенияуа1зе или пока программист не прервет цикл каким-либо иным способом.

Операторуог предназначен для стандартной организации циклов. В этом операторе переменная цикла, условие окончания и выражение для изменения переменной цикла компактно записываются в единственной строке в самом начале цикла. Это в сильнейшей степени увеличивает читаемость кода и, тем самым, уменьшает вероятность ошибок. В случае отсутствия необходимости в инициализации цикла инициализирующую часть (Гог-(п11-згагетепг) можно опустить.

Если опушено условие окончания, то цикл будет выполняться вечно, если только программист не предусмотрит его окончание за счет применения операторов ЬгеаЬ, гетра, кого, гйгов или менее очевидными способами, такими как вызов стандартной функции ех!1() (89.4.1.1). Если опущено выражение для изменения переменной цикла, то эту задачу нужно выполнить в теле цикла. Если проектируемый цикл не вписывается в каноническую схему «ввел переменную цикла, проверил условие окончания, изменил значение переменной цикла», то лучше применить оператор )еЬИе. з(икл/ог можно применить для записи бесконечного цикла (с отсутствием явно заданных условий окончания): 6.3.

Обзор операторов языка С+ч- 189 д "вечно" 1ог(;; ) ( П... ) Цикл мйИе заставляет управляемый оператор исполняться до тех пор, пока условие цикла не станет ложным. Я предпочитаю использовать цикл мЫ1е вместо цикла 1ог в случаях, когда нет очевидной переменной цикла или когда ее модификацию лучше выполнять где-нибудь внутри тела цикла. Очевидным примером цикла без явной переменной цикла является цикл ввода: )гй(1е (с(п»сй) // ... Мой опыт показывает, что цикл до скорее является источником ошибок и недоразумений, чем острой необходимостью.

Единственным поводом к его применению является тот факт, что тело этого цикла всегда исполняется хотя бы один раз до самой первой проверки условия цикла. Но для надежного выполнения первой итерации все равно должно проверяться некоторое условие. Я обнаружил, что чаше, чем это можно предположить, условие корректности первого прохода цикла либо не обеспечивалось с самого начала, либо переставало соблюдаться после модификации текста программы.

Также, на мой взгляд, предпочтительнее формулировать условие окончания цикла в его начале, где оно бросается в глаза и его можно проанализировать. В общем, я предпочитаю циклов до не применять. 6.3.3.1. Объявления в операторах цикла аког В инициализирующей части оператора /ог можно объявлять переменные. Область видимости объявленной таким образом переменной (переменных) распространяется до конца цикла. Например: гоЫ 1'(тг к(), (пг тах) ( 1ог(тг 1=0; (стах; (чч) к[1) =1*1; ) Если конечное значение переменной цикла нужно использовать после его окончания, то переменную цикла следует объявить вне оператора цикла 1ог (56.3.4). 6.3.4. Оператор 9о1о В языке С++ пресловутый оператор яого сохранен: яо!о идентификатор; идентификатор: оператор Оператор лого полезен в ряде случаев и в обычном высокоуровневом программировании, но он особо полезен, когда программу создает не человек, а другая программа; например, при автоматической генерации парсера на базе формальной грамматики.

Также яого полезен для программ реального времени, когда нужно с высокой эффективность реализовать выход из внутреннего цикла. Областью действия меток (1айе(в) является тело функции, в котором они находятся. Отсюда следует, что возможны переходы (по лого) внутрь блоков и из блоков на- Глава б.

Выражения и операторы 190 ружу. Только при этом нельзя перепрыгивать через объявления с инициализациями и непосредственно внутрь обработчиков прерываний (88.3.1). Важным примером использования лого в обычном коде является организация с его помощью выхода из вложенных циклов или операторов тв!гс)) (оператор Ьгеа)с обеспечивает выход лишь из одного уровня вложенности). Например; уоиЧ() ( !пг г'; )пг); )ог(! = О; !<и; )++) )ог(! = О' )<т; /++) Ц(пт ((1 (у1 == а) Оп!о~пипа; У по!)оипа гУ ... )оипд: Унт(!)(!) == а ) Имеется также оператор сование, который передает управление в конец тела цикла (96.1.5).

б.4. Комментарии и отступы Разумное применение комментариев и согласованная система отступов могут сделать процесс чтения программы более приятным и способствовать более быстрому ее изучению и пониманию. Имеется несколько общеупотребительных стилей для отступов строк кода. Я не вижу никаких объективных причин для предпочтения какого-либо из этих стилей (хотя у меня, как и у любого программиста, есть свой привычный стиль). То же самое можно сказать и о стилях комментирования. Вообще говоря, комментариями можно даже ухудшить читаемость программы. Компилятор существа комментариев не понимает и не может гарантировать, что комментарий: 1. Содержателен. 2.

Имеет отношение к программе. 3. Не устарел. Многие программы содержат комментарии, понять которые невозможно, которые противоречивы и даже просто неверны. Плохие комментарии хуже их отсутствия. Если что-то можно отразить явным образом средствами языка, то так и нужно делать, а не ограничиваться простым упоминанием в комментариях. Вот примеры на эту тему; У переменную у нужно проинициолизировать У переменную г должна использовать лишь функция)() У вызовите функцию тл() до вызова любой другой функции из этого файла ((вьюовите функцию с!еапирВ в конце вашей программы У не пользуйтесь функцией гге(гф) У функция)О принимает два аргумента 191 б.4.

Комментарии и отступы 77 а принимает значение, равное Ьч.с 77 инкрементируем переменную соипаез а=бзсз соиптв в; Такие комментарии не только не нужны, но они еще и вредны. Они увеличивают совокупный объем кода, подлежащий чтению, они зачастую затуманивают структуру программы и могут быть просто неверными. Заметим, однако, что такие комментарии интенсивно используются в учебниках, и в данной книге в том числе. Этим, помимо прочего, программы из учебников отличаются от реальных профессиональных программ. Я предпочитаю применять комментарии в следующих случаях: 1.

В начале каждого исходного файла — комментарии, поясняющие, что общего у всех представленных в файле объявлений, ссылки на литературу и другие источники, соображения по поводу дальнейшего сопровождения и т.д. 2. Комментарии к классам, шаблонам, пространствам имен. 3. Комментарии к каждой нетривиальной функции, поясняющие ее назначение, алгоритмы (если они не очевидны), и, возможно, некоторые предположения о контексте вызова. 4. Комментарии к переменным и константам из глобального нли именованного пространств имен. 5. Комментарии к неочевидным или непереносимым участкам кода.

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

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

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

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