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

Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (1160791), страница 206

Файл №1160791 Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004) 206 страницаБ. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (1160791) страница 2062019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Составь~с список использованных конструкций, пе являющихся конструкциями С+«ь н определите, соответствуют лн они стандарту А1ч51 С. Сначала приведите программу в строгое соответствие с А)451 С (добав те прототипы и т. д.), затем преобразуйте в программу на С+«. Оцените время, необходимое для такого преобразования программы в 100 000 строк. 2. ('2.5) Напишите программу, помогающую конвер~ировать код из С в С++ путем переименования переменных, совпадающих с ключевыми слова»пи С+«. замены вызовов тайас () на пев п т.

д. Подсказка: ие пытайтесь достичь совершенства. 3. (*2) В С» прэграмме, написанной в ст>пе С (возможно той же, что преобразовывалась в упражнении 1) замените все используемые вызовы та!!ос () на вызовы иев. Подсказка: см. 6 Б.4[8 — 9]. 4. ('2.5) В С++ программе (возможно той же, что преобразовывалась в упражнении 1) минимизируйте использование макросов, глобальных переменных, нннциализируемых переменных и приведение типов в стиле С .

5. (3*) Возьмите С++ программу, являют!у>огя результатом «грубого» преобразования нз С, и искрит>>куйте ее с точки зрения Се. па локальность информации, абстракцию, удобочитаемость, расширяемость и на возможность повторного исг>ольж>вания отдельных частей. Проведите в программе какое-либо значительное изменение, основанное иа вашей критике.

6. (*2) Возьмите небольшую (около 500 строк) С н- щюграмму и преоб>разу!юе сев программу на С. Сравните исходную н преобразованную программы по размерам н возможностям сопронождения. 7. (3") Напишите небольшой набор текстовых программ для определения, поддерживает ли ваша реализапня С++ «наипоследнейше» средстна из стандарта. Например: какова область видимости переменной, описанной в инициализаторе [огя1а1етеп1 (6 Б.З.6)7 Поддерживаются ли аргументы шаблонов по умолчанию Я Б.35) и члены шаблона (6 13.6.2)? Поддерживается лн поиск ил>ен по аргументам (6 8.2.6)? Подсказка: см.

9 Б.2тй 8. (2 5*) Возьмите С+» программу, использующую <Х.Ь> и преобразуйтс ее на использование <Х> н <сХ>. Миннмизируйте использование директив ия(л(1. Приложение В Технические подробности Глубоко, в самом сердце сознания и Вселенной— есть смысл. — Слартибартфаст Что гарантирует стандарт? — наборы символов — целые литералы— константные выражения — продвижения и преобразования — многомерные массивы — поля и объединения — управление памятью — сборка мусора— пространства имен — контроль доступа — указатели на члены данных— шаолоны — статические члены — друзья — шаблоны в качестве параметров шаблона — выведение аргумента шаблона — ~урепаше и шаблоны инстанцирование — связывание имен — шаблоны и пространства имен— явное инстанцирование — советы. В.1.

Введение и обзор Эта глава описывает технические детали и примеры, которые не совсем вписываются в мою презентацию основных черт языка С++ и их использования. Представленные здесь подробности могут оказаться важными, когда вы будете писать программы, и очень важными, когда вы будете читать программы, написанные с нх применением. Однако я считаю их техническими деталями, которые не должны отвлекать студентов от главной цели, — научиться хорошо применять язык С++, а программистов от того, чтобы стараться выразить идеи как можно яснее и непосредственнее, насколько позволяет С++ В.2.

Стандарт Вопреки общему мнению, строгое следование стандартам языка С++ и библиотеки не гарантирует получения хорошей или даже переносимой программы. Стандарт ничего не говорит о том, хорош или плох данный фрагмент программы; он просто говорит, на что программист может (или не может) рассчитывать в реализации. Можно написать совершенно ужасающую программу в полном соответствии со стандартом, а большинство программ реалыюго мира опираются на особенности, не описываемые стандартом.

Очень важные вещи стандарт считает определенными в реализации. Это означает, что каждая реализация должна обеспечить специфическое четко определенное поведение ряда конструкций и задокументировать его. Например: Приложение В, Технические подробности 904 // четко определено: с/лаг имеет по крийней //мере 8 бат и всегда люжет содержать шсло 64 // определлетсл в реализации: урезание, если //с1лаг имеет только 8 бит ипз1япеб с/лаг с1 = 84; ипз1япес1 сваг с2 = 125б; сопвг 1п1 з!ее = 4*1024; с1ьаг раде[з1ее]; пои раде[з1ее»з1ее] = 7, // не определено Вероятный результат этого фрагмента кода — запись поверх данных, не относя- шихся к программе, и генерирование аппаратной ошибки/исключения.

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

Во многих случаях для этого существуют инструментальные средства. Инициализация с1 четко определена, поскольку в айаг должно быть по крайней мере 8 бит. Однако поведение инициализации с2 зависит от реализации, так как число битов в сйаг определяется в реализации. Если айаг имеет только 8 бит, значение 1256 будет урезано до 232 (9 В.6.2.1). Большинство определяемых в реализации особенностей относится к различиям в «железе», на котором будет работать программа.

Во время написания реальной программы обычно приходится опираться на поведение, определяемое в реализации. Это является ценой, которую мы платим за возможность эффективно работать с различными системами. Например, язык был бы гораздо проще, если бы все айаг были 8-битовыми, а все га1 — 32 битовыми. Однако' не так уж необычны 16-битовые и 32-битовые символьные наборы — так же как и числа, слишком большие, чтобы уместиться в 32 бита. Например, многие компьютеры теперь имеют диски емкостью более 32 Гбайт, так что для представления адреса на диске уместны 48-битовые и 64-битовые числа.

Чтобы максимально повысить переносимость, разумно явно выразить, на какие определяемые в реализации свойства мы опираемся, и самые сомнительные места изолировать в четко определенных местах программы. Типичный пример такой практики— представлять все зависимости от аппаратуры в виде констант и определений типов в некотором заголовочном файле. Чтобы поддержать такую технику, стандартная библиотека предоставляет питеПс 11т/1в (9 22.2). Неопределенное поведение неприятнее.

Конструкция считается не определенной стандартом, если от реалиаации не требуется какого-либо осмысленного поведения. Как правило, некоторые очевидные приемы реализации приводят к тому, что программы, использующие неопределенности, ведут себя очень плохо. Например: 905 В,З. Символьные наборы В.З. Символьные наборы Примеры в этой книге' написаны с использованием американского (США) варианта международного 7-битного символьного набора 130 646-1983, называемого АЯСП (АХ813.«-1968). У тех, кто применяет С++ в среде, использующей другой символьный набор, это может вызвать три проблемы: [1) АЯСП содержит символы пунктуации и операторные символы — такие как [, ( и ); для некоторых наборов зти символы недоступны. [2) Нам нужны обозначения для символов, не имеющих соответствующего символьного представления (например, перевод строки и «символ со значением 17»).

[3) АЯСП не содержит символов, использующихся в других языках (нс английском) — например, ь, ш или П. Ключевые слова Диграфы Триграфы апс( апс( ее Ы1апсУ Ыгог сотр1 по1 ог ог ед хог хог ед по1 ед <% ( а > ) <: [ %; й а «х гг= гг( гг< ( гг гг) гг> гг гг1 гг- )) )= Программы с ключевыми словами и диграфами гораздо лучше читаемы чем эквивалентные программы, написанные с использованием триграфов.

Однако если такие Имеется ввиду американское взданне. — Примем. лед. В.З.1. Сокращенный символьный набор Специальные символы АЯСП [, ), (, ), ) и ~ занимают позиции в символьном наборе, которые определены 130 как алфавитно-цифровые. В большинстве европейских символьных наборов 180-646 эти позиции заняты буквами, которых нет в английском алфавите. Например, датский национальный набор символов на их месте содержит гласныелЕ, ш, О, и, А и а. Без этих символов по-датски не напишешь сколько-нибудь осмысленного текста. Для того чтобы выражать национальные буквы переносимым образом при помощи по-настоящему стандартного минимального символьного набора, введен набор триграфов. Это может пригодиться для обмена программами, но не облегчает людям чтение таких программ.

Естественно, долговременное решение этой проблемы— дать программистам на С+« такое оборудование, которое поддерживает и их родной язык, и С++. К сожалению, для некоторых зто представляется недостижимым, и введение нового обрудовання может оказаться до огорчения медленным процессом. Чтобы помочь программистам обходиться с неполным набором символов, С++ обеспечивает альтернативы; Приложение В. Технические подробности 906 символы как ( недоступны, триграфы необходимы, чтобы не «потерять» символы в строках и символьных константах. Например, '(' превращается в 'за<', Некоторые предпочитают вместо традиционного обозначения операторов пользоваться ключевыми словами, такими как апс(.

В.З.2. Езсвре-символы Несколько символов имеют стандартные имена, использующие символ обратной ко- сой черты ~ в качестве езсаре-символа: Название АЯС11 Название С+ч- Название ооо ЬЬЬ Несмотря на свой внешний вид, это одиночные символы. Символ можно представить в виде одной, двух или трех восьмеричных цифр (с ~ перед ними) или шестнадцатеричным числом (с ~х перед цифрами). На число шестнадцатеричных цифр в последовательности нет ограничений Последовательность восьмеричных или шестнадцатеричных цифр заканчивается первым символом, не являющимся соответственно восьмеричной или шестнадцатеричной цифрой. Например: Восьмеричная Шестнадцатеричная Десятичная АЯСП "~6' '~60' '~137' '~хб' '~к 30' '~х051' АСК '0' 6 48 95 Это позволяе г представить любой символ из машинного символьного набора и, в частности, вставить такие символы в символьные строки (см.

9 5.2.2). Использование любых цифровых обозначений для символов делает программу непереносимой с одной машины на другую, на которой применяется другой символьный набор. Символьный литерал можно записать несколькими символами, например 'аб'. Такое применение архаично, зависит от реализации, и его лучше избегать. При вставке в строку цифровой константы в восьмеричном обозначении всегда разумно пользоваться трехзначными числами.

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

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

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

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