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

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

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

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

б. Редко в иных случаях. Например: 77 тЫ.с: Реализация таблицы символов. 7* Исключение методом Гаусса. См. яа!зтот "А Гтзт соиле ... "Ря 411. *7 77 взвар () предполагает раскладку стека как в оСз1 йб000. 7*********************************** Соруе)яЬ) (с) 1997 АТ&Т, 1пс. А 11 с(я)ззз гезегиед Хорошо продуманные и хорошо написанные комментарии являются неотъемлемой частью хороших программ. Написание таких комментариев столь же сложно, как и написание собственно кода программы.

Стоит развивать и культивировать искусство написания хороших комментариев. Отметим, что если в функции применяются исключительно комментарии вида 17, то целые фрагменты ее кода можно закомментировать (и быстро раскомментировать) с помощью 7* *7. При правильном кодировании на С++ подобного рода комментарии просто не нужны. Вместо них лучше полагаться на правила компоновки (59.2) и области видимости, на инициализацию и деинициализацию объектов классов (~10.4.1). Если что-то ясно выражено средствами языка, не нйдо зто повторять в комментариях.

Например: Глава б Выражения и операторы 6.5. Советы 1. Предпочитайте всем библиотекам и «самодельному коду» стандартную библиотеку; 86.1.8. 2. Избегайте слишком сложных выражений; 86.2.3. 3. Используйте круглые скобки в случае сомнений по поводу приоритетов операций; 86.2.3. 4. Избегайте явных приведений типов; 86.2.7. 5. Если явное приведение типов необходимо, используйте специфические (именованные) операции приведения вместо операций в С-стиле; 86.2.7.

6. Используйте конструкции Т(е) только тогда, когда правила конструирования четко определены; 86.2.8. 7. Избегайте выражений с неопределенным порядком вычисления; 86.2.2. 8. Избегайте применения оператора лого; 86.3.4. 9. Избегайте применения циклов 4о; 86.3.3. 10. Не объявляйте переменные до того, как станут известны инициализирующие их значения; 86.3.1, 86.3.2.1, В6.3.3.). 11. Пишите ясные и краткие комментарии; 86.4. 12. Придерживайтесь согласованного стиля отступов; Вб.4. 13. Для переопределения глобальной функции орегагог пеи() применяйте члены классов (815.6); 86.2.6.2. 14.

При чтении ввода всегда помните о возможных «сюрпризах»; Вб. [.3. 6.6. Упражнения 1. (*1) Перепишите следующий цикл 1ог в виде эквивалентного иЬ11е цикла: Гог(1=0г [<так 1епвгь; г'-';») Ц'(гири( 1(пе [1) == '? ' ) вием соил(»»г Перепишите так, чтобы проверяемой величиной был указатель и условие цикла имело вид *р=='7'. 2. (*1) Расставьте скобки в следующих выражениях: а=Ь+с*0«гав аь 077! = 3 а==Ы [а==свес<5 сея! =0 О<= 1<7 Г(1, г) «3 а= — 1««Ь--5 а=ь==с»+ а=Ь=с=о а [4) [г) *= * Ь 7 с: * 0* г а-ь, с=»( 6.6.

Упражнения 193 '~р.~"> * — -р +ча-- (ям*)р->е *р.п$ *а (1] 10. 11. гаг(1 ()п< а, ?аг Ь ) ( (7'(а43) (г'(аь077==0) а:= Ь+1) ) 12. 13. 14. 3. 5. 6. 7. 8. 9. (*2) Введите последовательность возможно разделенных пробельными символами пар (имя, значение). Имя — единственное слово, ограниченное пробельными символами. Значение формируется целым числом или числом с плавающей запятой. Вычислите и выведите сумму и среднее как для каждого отдельного имени, так и для всех имен (см. 96.1.8).

(*1) Напишите таблицу результатов всех побитовых логических операций (96.2.4) для всех возможных комбинаций операндов 0 и 1. (*1.5) Приведите 5 конструкций языка С++, смысл которых не определен (9С.2); (*1.5) Приведите 5 конструкций языка С++, смысл которых зависит от реализации (9С.2). ('1) Приведите !О примеров непереносимого кода на С++. (*2) Напишите 5 выражений, порядок вычисления которых не определен. Выполните код, чтобы посмотреть, что при этом реально делается в разных реализациях. (*1.5) Что происходит при делении на нуль в вашей системе? Что происходит при переполнении (или потере точности)? (*! ) Расставьте скобки в следукицих выражениях; (*2) Напишите следующие функции; згг1еа(), которая возвращает длину строк в С-стиле; згесру(), которая копирует содержимое одной С-строки в другую; зиссар (), которая сравнивает содержимое двух С-строк.

Решите, какого типа должны быть аргументы и возвращаемые значения. Затем сравните ваши варианты со стандартными библиотечными версиями, объявленными в <сап)аа> (<зп)аа.Ь>) и рассмотренными в 920.4.1. (*1) Проверьте, как компилятор реагирует на ошибки в следующем фрагменте: Придумайте еше несколько ошибок и проверьте реакцию компилятора на них.

(*2) Модифицируйте программу из 96.6!3], чтобы она вычисляла и медиану. ('2) Напишите функцию саг(), которая принимает в качестве аргументов две С-строки и возвращает конкатенированную С-строку. Используйте опера- цию аем для выделения памяти под результат. (*2) Напишите функцию гее() для реверсирования содержимого С-строки. Глава б, Выражения и операторы 15.

(*1.5) Что делает следующий пример? гоЫ яепй((пг* го, гпг» угот, 1пз свинг) 77 Полезные кол«иентарии улгышленно удалены. ( гпг и = (соипт7) IВ; яыбсв ( соипгг«В) ( саяе О: Ио( *го««=«угот«»; сазе 7: *го;-»вЂ” = "1гот»«; саяе 6: *со»»=»угот»»; саяе 5: *го++=»3гот««г сазе 4: *го»»=»агат»«( саяе 3: *го»«=»угот-;-; сазе 2: *го»«=»/гот»»; сазе 1: *Го««=«угот«»; )»«Ь1!е(--п>0) г Зачем кому-то может потребоваться подобный код? 16.

(*2) Напишите функцию аго1 (соим сбаг*), которая принимает С-строку, со держащую цифры и возвращает соответствующее целое. Например, для аго1 ( «123" ) должно получиться целое число 123. Модифицируйте функцию так, чтобы помимо десятичных чисел обрабатывались также восьмеричные и шестнадцатеричные. 17. ("2) Напишите функцию 1гоа(1пг г, сбаг Ь [) ), которая формирует строковое представление г в Ь и возвращает Ь. 18.

(*2) Наберите текст программы-калькулятора и заставьте его работать. Не экономьте время, применяя заранее приготовленный кем-то текст. Вы мно- гому научитесь, отыскивая и исправляя «глупые мелкие ошибки», 19. ('2) Модифицируйте программу-калькулятор, чтобы она сообщала номера строк, в которых произошла ошибка. 20. (*3) Разрешите пользователю определять функции для программы-калькуля- тора. Подсказка: определите функцию в виде последовательности операций в порядке, в котором их ввел пользователь. Последовательность можно хранить либо в виде строки, либо как список лексем. При вызове функции читайте и выполняйте этн операции. Если допускаются аргументы у пользовательских функций, придумайте соответствующую форму записи. 21. (*1.5) Модифицируйте программу-калькулятор так, чтобы вместо статических переменных питбег га1ае и зггииг га1ие использовалась структура зутбо1.

22. (*2.5) Напишите код, очищающий программу на С++ от комментариев. Пусть она читает из сги, удаляет комментарии вида ! ! и ! * * 7 и записывает результат в соиг. Не заботьтесь о внешнем виде результирующей программы (это была бы более сложная задача). Не заботьтесь о корректности программ. Не забудьте про символы ! !, !* и *7 в комментариях, строках и символьных константах. 23. (*2) Выполните просмотр ряда программ, чтобы составить представление о применяемых стилях отступов, именования и комментирования. Функции Итерация — от человека, рекурсия — от Бога.

— Л. Питер Дойч Объявления и определения функций — передача аргументов — возвращаемые значения — перегрузка функций — разрешение неоднозначностей — аргументы по умолчанию — неуказанное число аргументов — указатели на функции — мак- росы — советы — упражнения. 7.1.

Объявления функций Е!ет* пехт е)ет (); айаг* вггсру (айаг* го, сопвг айаг* (гот) го)д ек)г (Ыг); Семантика передачи аргументов идентична семантике инициализации. Производится проверка типов аргументов и при необходимости выполняется неявное приведение типов. Например: ггоиЫе вг!гг (доиЫе); // вызов ваг(() с аргументом г!оиЫе(2) // ег ог: гг)гг() требует аргумент типа г(оиЫе доиЫе вг2=вогг (2); г)оиЫе вгЗ=вогг ( вгйгеев ); Значение таких проверок и преобразований типов не следует недооценивать.

Объявления функций могут содержать имена аргументов. Это полезно программисту, читающему код, но компилятор их просто игнорирует. Как упоминалось Обычно, сделать что-либо в С++ означает вызвать функцию. Определить функцию — значит задать способ выполнения работы. Функцию нельзя вызвать, если она не была предварительно объявлена. Объявление функции Оипсг(оп дес!агапоп) предоставляет ее имя, тип возвращаемого значения (если оно есть), а также число и типы аргументов, которые требуется передавать функции при ее вызове. Например: 196 Глава 7.

Функции в 54.7 тип юЫ для возврашаемого значения функции фактически означает его от- сутствие. 7.1.1. Определения функций Любая вызываемая в программе функция должна быть где-то определена, причем лишь один раз. Определение функции (б(испол де1(и(йоп) есть ее объявление плюс тело функции. Например: ек(еги юЫ з(гор (т(», 1п(*) ( йобьявление й определение го1д з»гар ( 1и(* р, ии* (2) ( 1п( (=*р( :р»й »д — ( ) Все типы в определении функции и ее объявлениях обязаны совпадать. Однако имена аргументов совпадать не обязаны, так как они не являются частью типа, Нередки случаи, когда в определении функции часть аргументов не используется: гоЫ зеагсй ((аЫе* (, сопл( айаг» йеу, сопл( сваг» ) ( ( третий аргумент не используется ) Как показано в данном примере, неиспользуемому аргументу можно не давать имени вообще.

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

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

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

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