» » » » Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп

Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп

На нашем литературном портале можно бесплатно читать книгу Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп, Бьёрн Страуструп . Жанр: Программирование. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале litmir.org.
Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп
Название: Программирование. Принципы и практика использования C++ Исправленное издание
Дата добавления: 22 август 2024
Количество просмотров: 99
Читать онлайн

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту readbookfedya@gmail.com для удаления материала

Программирование. Принципы и практика использования C++ Исправленное издание читать книгу онлайн

Программирование. Принципы и практика использования C++ Исправленное издание - читать бесплатно онлайн , автор Бьёрн Страуструп

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка.
Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие.
Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток.
Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Перейти на страницу:
науках? Почему?

4. Перечислите несколько возможностей, которые вы хотели бы реализовать при форматировании вывода целых чисел.

5. Что такое манипулятор?

6. Назовите префикс десятичного, восьмеричного и шестнадцатеричного числа. 

7. Какой формат по умолчанию применяется при выводе чисел с плавающей точкой?

8. Что такое поле вывода?

9. Объясните, что делают функции setprecision() и setw().

10. Для чего нужны разные режимы при открытии файлов?

11. Какие из перечисленных далее манипуляторов не являются инертными: hex, scientific, setprecision, showbase, setw?

12. Укажите разницу между символьным и двоичным вводом.

13. Приведите пример, демонстрирующий преимущество использования двоичного файла вместо текстового.

14. Приведите два примера, в которых может оказаться полезным класс stringstream.

15. Что такое позиция в файле?

16. Что произойдет, если позиция в файле будет установлена за его пределами?

17. Когда ввод строк предпочтительнее, чем ввод, ориентированный на тип?

18. Что делает функция isalnum(c)?

Термины

Упражнения

1. Напишите программу, вводящую текстовый файл и записывающую его содержимое в новый файл, используя нижний регистр.

2. Напишите программу, удаляющую из файла все гласные буквы. Например, фраза Once upon a time! принимает вид nc pn tm!. Удивительно часто результат остается вполне читабельным; проверьте это на своих друзьях.

3. Напишите программу под названием multi_input.cpp, которая предлагает пользователю ввести несколько целых восьмеричных, десятичных и шестнадцатеричных чисел в любом сочетании, используя суффиксы 0 и 0x; интерпретируйте эти числа правильно и приведите в десятичный вид. Ваша программа должна выводить на экран примерно такие результаты:

 4. Напишите программу, считывающую строки и выводящую категории каждого символа в соответствии с правилами классификации, описанными в разделе 11.6. Помните, что один и тот же символ может относиться к разным категориям (например, x — это и буквенный, и буквенно-цифровой символ).

5. Напишите программу, заменяющую знаки пунктуации пробелами. Например, строка “- don’t use the as-if rule.” принимает вид “dont use the asif rule”.

6. Модифицируйте программу из предыдущего упражнения, чтобы она заменяла сокращения don’t словами do not, can’t — cannot и т.д.; дефисы внутри слов не трогайте (таким образом, мы получим строку “do not use the as-if rule”); переведите все символы в нижний регистр.

7. Используйте программу из предыдущего упражнения для создания словаря (в качестве альтернативы подходу, описанному в разделе 11.7). Примените ее к многостраничному текстовому файлу, проанализируйте результат и подумайте, можно ли улучшить эту программу, чтобы получить более качественный словарь.

8. Разделите программы ввода-вывода из раздела 11.3.2 на две части: одна программа пусть конвертирует обычный текстовый файл в двоичный, а другая — считывает двоичный файл и преобразует его в текстовый. Протестируйте эти программы, сравнивая текстовые файлы до и после преобразования в двоичный файл.

9. Напишите функцию vector<string> split(const string& s), возвращающую вектор подстрок аргумента s, разделенных пробелами.

10. Напишите функцию vector<string> split(const string& s, const string& w), возвращающую вектор подстрок аргумента s, между которыми стоят разделители, при условии, что в качестве разделителя может использоваться как обычный пробел, так и символы из строки w.

11. Измените порядок следования символов в текстовом файле. Например, строка asdfghjkl примет вид lkjhgfdsa. Подсказка: вспомните о режимах открытия файлов.

12. Измените порядок следования слов (определенных как строки, разделенные пробелами). Например, строка Norwegian Blue parrot примет вид parrot Blue Norwegian. Вы можете предположить, что все строки из файла могут поместиться в памяти одновременно.

13. Напишите программу, считывающую текстовый файл и записывающую в другой файл количество символов каждой категории (см. раздел 11.6).

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

15. Напишите программу, считывающую из файла числа, разделенные пробелами, и выводящую их в порядке возрастания по одному числу в строке. Каждое число должно быть записано только один раз, если обнаружится дубликат, то необходимо вывести количество таких дубликатов в строке. Например, срока “7 5 5 7 3 117 5” примет следующий вид:

3

5 3

7 2

117

Послесловие

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

Глава 12

Вывод на экран

“Сначала мир был черным, а затем белым.

а в 1930-х годах появился цвет”.

Папаша Кальвина (Calvin’s dad)[8]

В главе описана модель вывода на экран дисплея (часть графического пользовательского интерфейса, отвечающая за вывод информации), приведены примеры ее использования, а также сформулированы основные понятия, такие как координаты экрана, линии и цвет. Рассмотрены классы Line, Lines, Polygon, Axis и Text, являющиеся подклассами класса Shape. Объект класса Shape хранится в памяти, отображается на экране и допускает манипуляции с ним. В следующих двух главах мы глубже исследуем эти классы. В главе 13 рассмотрим их реализацию, а в главе 14 — вопросы, связанные с проектированием.

12.1. Почему графика?

Почему мы посвящаем четыре главы графике и одну главу — графическим пользовательским интерфейсам (graphical user interface — GUI)? Как никак, эта книга о программировании, а не о графике. Существует огромное количество интересных тем, связанных с программированием, которые мы не обсуждаем и в лучшем случае можем сделать лишь краткий обзор вопросов, касающихся графики. Итак, почему графика? В основном потому, что графика — это предмет, позволяющий исследовать важные вопросы, относящиеся к проектированию программного обеспечения, программирования, а также к инструментам программирования.

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

Перейти на страницу:
Комментариев (0)