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

Б. Страуструп - Язык программирования С++ (1119446), страница 75

Файл №1119446 Б. Страуструп - Язык программирования С++ (Б. Страуструп - Язык программирования С++) 75 страницаБ. Страуструп - Язык программирования С++ (1119446) страница 752019-05-09СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Так, ниже приведенизвестный способ получения неожиданного результата - печати мусорного значения или чего похуже:char x;// ...printf("bad input char: %s",x);Однако, эти функции обеспечивают большую гибкость и знакомы программирующим на С.Как обычно, getchar() позволяет знакомым способом читать символы из входного потока:int i;:while ((i=getchar())!=EOF) { // символьный ввод C// используем i}Обратите внимание: чтобы было законным сравнение с величиной EOF типа int при проверке на конецфайла, результат getchar() надо помещать в переменную типа int, а не char.За подробностями о вводе-выводе на С отсылаем к вашему руководству по С или книге Кернигана иРитчи "Язык программирования С".10.7 Упражнения1.(*1.5) Читая файл вещественных чисел, составлять из пар прочитанных чисел комплексные числа,записать комплексные числа.2.(*1.5) Определить тип name_and_address (тип_и_адрес).

Определить для него << и >>. Написатьпрограмму копирования объектов потока name_and_address.3.(*2) Разработать несколько функций для запроса и чтения данных разных типов. Предложения:целое, вещественное число, имя файла, почтовый адрес, дата, личная информация, и т.п.Попытайтесь сделать их устойчивыми к ошибкам.281Бьерн Страуструп.Язык программирования С++4.(*1.5) Напишите программу, которая печатает: (1) строчные буквы, (2) все буквы, (3) все буквы ицифры, (4) все символы, входящие в идентификатор в вашей версии С++, (5) все знаки пунктуации,(6) целые значения всех управляющих символов, (7) все обобщенные пробелы, (8) целые значениявсех обобщенных пробелов, и, наконец, (9) все изображаемые символы.5.(*4) Реализуйте стандартную библиотеку ввода-вывода С (<stdio.h>) с помощью стандартнойбиблиотеки ввода-вывода С++ (<iostream.h>).6.(*4) Реализуйте стандартную библиотеку ввода-вывода С++ (<iostream.h>) с помощью стандартнойбиблиотеки ввода-вывода С (<stdio.h>).7.(*4) Реализуйте библиотеки С и С++ так, чтобы их можно было использовать одновременно.8.(*2) Реализуйте класс, для которого операция [] перегружена так, чтобы обеспечить произвольноечтение символов из файла.9.(*3) Повторите упражнение 8, но добейтесь, чтобы операция [] была применима для чтения и длязаписи.

Подсказка: пусть [] возвращает объект "дескриптор типа", для которого присваиваниеозначает: присвоить через дескриптор файлу, а неявное приведение к типу char означает чтениефайла по дескриптору.10. (*2) Повторите упражнение 9, позволяя операции [] индексировать объекты произвольных типов, ане только символы.11. (*3.5) Продумайте и реализуйте операцию форматного ввода. Используйте для задания форматастроку спецификаций как в printf(). Должна быть возможность попыток применения несколькихспецификаций для одного ввода, чтобы найти требуемый формат.

Класс форматного ввода долженбыть производным класса istream.12. (*4) Придумайте (и реализуйте) лучшие форматы ввода.13. (**2) Определите для вывода манипулятор based с двумя параметрами: система счисления и целоезначение, и печатайте целое в представлении, определяемом системой счисления. Например,based(2,9) напечатает 1001.14. (**2) Напишите "миниатюрную" систему ввода-вывода, которая реализует классы istream, ostream,ifstream, ofstream и предоставляет функции, такие как operator<<() и operator>>() для целых, иоперации, такие как open() и close() для файлов.

Используйте исключительные ситуации, а непеременные состояния, для сообщения об ошибках.15. (**2) Напишите манипулятор, который включает и отключает эхо символа.282Бьерн Страуструп.Язык программирования С++ГЛАВА 11. ПРОЕКТИРОВАНИЕ И РАЗВИТИЕ"Серебряной пули не существует."- Ф. БруксВ этой главе обсуждаются подходы к разработке программного обеспечения. Обсуждение затрагиваеткак технические, так и социологические аспекты процесса развития программного обеспечения.Программа рассматривается как модель реальности, в которой каждый класс представляетопределенное понятие. Ключевая задача проектирования состоит в определении доступной изащищенной частей интерфейса класса, исходя из которых определяются различные части программы.Определение этих интерфейсов есть итеративный процесс, обычно требующий экспериментирования.Упор делается на важной роли проектирования и организационных факторов в процессе развитияпрограммного обеспечения.11.1 ВведениеСоздание любой нетривиальной программной системы - сложная и часто выматывающая задача.

Дажедля отдельного программиста собственно запись операторов программы есть только часть всейработы. Обычно анализ всей задачи, проектирование программы в целом, документация, тестирование,сопровождение и управление всем этим затмевает задачу написания и отладки отдельных частейпрограммы. Конечно, можно все эти виды деятельности обозначить как "программирование" и затемвполне обоснованно утверждать: "Я не проектирую, я только программирую".

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

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

Непреминем напомнить, что "доказательство по аналогии" является мошенничеством, и аналогии служатздесь только в качестве примера. Понятия проектирования, формулируемые с помощью определенныхконструкций С++, и поясняемые примерами, мы будем обсуждать в главах 12 и 13. Предложенные вэтой главе рекомендации, отражаются как в самом языке С++, так и в решении конкретныхпрограммных задач по всей книге.Снова напомним, что в силу чрезвычайного разнообразия областей применения, программистов исреды, в которой развивается программная система, нельзя ожидать, что каждый вывод, сделанныйздесь, будет прямо применим для вашей задачи.

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

Такой подход обычно называют объектноориентированным проектированием. В главе 12 обсуждаются основные приемы программирования наС++, там же содержится предостережение от сомнительных идей, что есть только один "правильный"способ использования С++, и что для получения максимального выигрыша следует всякое средство283Бьерн Страуструп.Язык программирования С++С++ применять в любой программе ($$12.1).Укажем некоторые основные принципы, рассматриваемые в этой главе:-из всех вопросов, связанных с процессом развития программного обеспечения, самый важный четко сознавать, что собственно вы пытаетесь создать.-Успешный процесс развития программного обеспечения - это длительный процесс.-Системы, которые мы создаем, стремятся к пределу сложности по отношению как к самимсоздателям, так и используемым средствам.-Эксперимент является необходимой частью проекта для разработки всех нетривиальныхпрограммных систем.-Проектирование и программирование - это итеративные процессы.-Различные стадии проекта программного обеспечения, такиепрограммирование и тестирование - невозможно строго разделить.-Проектирование и программирование нельзя рассматривать в отрыве от вопросов управленияэтими видами деятельности.как:проектирование,Недооценить любой из этих принципов очень легко, но обычно накладно.

В то же время трудновоплотить эти абстрактные идеи на практике. Здесь необходим определенный опыт. Подобнопостроению лодки, езде на велосипеде или программированию проектирование - это искусство,которым нельзя овладеть только с помощью теоретических занятий.Может быть все эти емкие принципы можно сжать в один: проектирование и программирование - видычеловеческой деятельности; забудь про это - и все пропало. Слишком часто мы забываем про это ирассматриваем процесс развития программного обеспечения просто как "последовательность хорошоопределенных шагов, на каждом из которых по заданным правилам производятся некоторые действиянад входными данными, чтобы получить требуемый результат". Сам стиль предыдущего предложениявыдает присутствие человеческой природы! Эта глава относится к проектам, которые можно считатьчестолюбивыми, если учитывать ресурсы и опыт людей, создающих систему.

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

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

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