Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
c++book1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.83 Mб
Скачать

Упражнения

Упражнения находятся в конце глав. Все упражнения глав­ным образом типа напишите-программу. Для решения всегда пиши­те такую программу, которая будет компилироваться и работать по меньшей мере на нескольких тестовых случаях. Упражнения различаются в основном по сложности, поэтому они помечены оценкой степени сложности. Шкала экспоненциальная, так что если на упражнение (*1) вам потребовалось пять минут, то на упражнение (*2) вам может потребоваться час, а на (*3) - день. Время, которое требуется на то, чтобы написать и оттес­тировать программу, зависит больше от опыта читателя, нежели от самого упражнения. Упражнение (*1) может отнять день, если для того, чтобы запустить ее, читателю сначала придется зна­комиться с новой вычислительной системой. С другой стороны, тот, у кого под рукой окажется нужный набор программ, может сделать упражнение (*5) за час. В качестве источника упражне­ний к Главам 2-4 можно использовать любую книгу по C. У Ахо и др. [1] приведено большое количество общих структур данных и алгоритмов в терминах абстрактных типов данных. Эту книгу также может служить источником упражнений к Главам 5-7. Одна­ко языку, который в этой книге использовался, недостает как функций членов, так и производных классов. Поэтому определяе­мые пользователем типы часто можно выражать в С++ более эле­гантно.

Замечания по Проекту Языка

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

В С++ нет типов данных высокого уровня и нет первичных операций высокого уровня. В нем нет, например, матричного ти­па с операцией обращения или типа строка с операцией конкате­нации. Если пользователю понадобятся подобные типы, их можно определить в самом языке. По сути дела, основное, чем занима­ется программирование на С++ - это определение универсальных и специально-прикладных типов. Хорошо разработанный тип, оп­ределяемый пользователем, отличается от встроенного типа только способом определения, но не способом использования.

Исключались те черты, которые могли бы повлечь дополни­тельные расходы памяти или времени выполнения. Например, мыс­ли о том, чтобы сделать необходимым хранение в каждом объекте "хозяйственной" информации, были отвергнуты. Если пользова­тель описывает структуру, состоящую из двух 16-битовых вели­чин, то структура поместится в 32-битовый регистр.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]