Программирование. Принципы и практика использования C++ Исправленное издание
Шрифт:
16. Когда следует проводить повторное тестирование?
17. Как вы принимаете решение о том, какие функции следует сделать отдельными?
18. Как вы выбираете имена для переменных и функций? Обоснуйте свой выбор.
19. Зачем нужны комментарии?
20. Что следует писать в комментариях, а что нет?
21. Когда следует считать программу законченной?
Термины
Упражнения
1. Предусмотрите использование символа подчеркивания в именах внутри программы–калькулятора.
2. Реализуйте
3. Реализуйте именованные константы, которые действительно не могут изменять свои значения. Подсказка: в класс
4. Функции
5. Модифицируйте функцию
6. Каждая программа должна содержать подсказки для пользователя. Пусть при нажатии клавиши
7. Измените команды
8. Грамматика в разделе 7.6.4 является неполной (мы уже предостерегали вас от чрезмерного увлечения комментариями); в ней не определена последовательность инструкций, например
9. Определите класс
10. Предложите три усовершенствования калькулятора (не упомянутых в главе). Реализуйте одно из них.
11. Модифицируйте калькулятор так, чтобы он работал только с целыми числами; предусмотрите ошибки, возникающие при потере точности и переполнении.
12. Реализуйте оператор присваивания, чтобы значение переменной можно было изменять после ее инициализации. Объясните целесообразность этого новшества и потенциальные проблемы, связанные с ним.
13. Переработайте две программы, написанные
Послесловие
Итак, на простом примере мы увидели, как работает компилятор. Наш калькулятор анализирует входные данные, разбитые на лексемы, и распознает их по правилам грамматики. Именно так функционирует компилятор. Однако после анализа входных данных компилятор создает представление (объектный код), который впоследствии можно выполнить, а калькулятор немедленно вычисляет анализируемые выражения; такие программы называются интерпретаторами, а не компиляторами.
Глава 8. Технические детали: функции и прочее
“Ни один талант не может преодолеть
пристрастия к деталям”.
Восьмой закон Леви
В этой и следующей главах мы перейдем от общих рассуждений о программировании к нашему основному инструменту программирования — языку С++. Мы приведем технические детали, чтобы дать более широкое и систематическое представление о функциональных возможностях языка С++. Кроме того, эти главы представляют собой обзор многих понятий программирования, введенных ранее, и позволяют исследовать язык без привлечения новых методов и концепций.
8.1. Технические детали
Если бы у нас был выбор, то мы предпочли бы говорить о программировании вообще, а не о свойствах языка программирования. Иначе говоря, намного интереснее изучать, как идеи выражаются в виде кода, чем вникать в технические детали языка программирования, с помощью которого эти идеи воплощаются. Проведем аналогию с естественным языком: ведь никто не станет спорить с тем, что обсуждать стиль и идеи нового романа гораздо увлекательнее, чем изучать грамматику и словарь. Нас намного больше интересуют сами идеи и способы их выражения в виде кода, чем отдельны языковые конструкции.
Однако у нас не всегда есть выбор. Когда вы начинаете программировать, язык программирования можно рассматривать как иностранный, изучать “грамматику и словарь” которого просто необходимо. Именно этим мы и займемся в этой и следующих главах, но читатели должны помнить следующее.
• Результатом нашей работы являются программы и системы.
• Язык программирования — это лишь средство.
Как ни странно, помнить об этом довольно сложно. Многие программисты не могут устоять перед увлечением мелкими деталями синтаксиса и семантики. В частности, слишком многие ошибочно полагают, что их первый язык программирования — самый лучший. Пожалуйста, не попадайтесь в эту ловушку. Язык С++ во многих отношениях прекрасный язык, но он не идеален; впрочем, то же самое можно сказать о любом языке программирования.