Читаем Программирование полностью

Обработка ошибок в программах С++ не составляет большого труда. Функция обработки ошибок просто определяет ошибки, пишет сообщение об ошибке и возвращает управление обратно:

Возвращение производится потому, что ошибки чаще всего встречаются в середине вычисления выражения, и поэтому следует или полностью прекращать вычисление, или возвращать значение, которое не должно привести к последующим ошибкам. Для обычного калькулятора больше подходит последнее. Если бы gettoken() обнаруживала номера строк, то error() сообщала бы, где приблизительно обнаружена ошибка. Это было бы полезно, если бы калькулятор применялся неинтерактивно.

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

Принято обычно, что main() возвращает ноль при обычном завершении программы и не ноль в противном случае, поэтому это прекрасно осуществляет возвращение числа ошибок.

<p>34. Функции и файлы</p>

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

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

Покажем пример с калькулятором. Он был представлен одним исходным файлом. Если он набит, то наверняка были трудности с размещением описаний в правильном порядке и необходимо было бы применить по меньшей мере одно «фальшивое» описание, чтобы компилятор обрабатывал взаимно рекурсивные функции expr(), term() и prim(). Программа заключает в себе четыре части (лексический анализатор, программа синтаксического разбора, таблица имен и драйвер), но это никак не было отражено внутри программы. В общем, калькулятор был написан по-другому. Так это не делается; даже если в этой программе «на выброс» пренебречь всеми соображениями методологии программирования, эксплуатации и эффективности компиляции, следует разбить эту программу в 200 строк на несколько файлов, чтобы программировать было приятнее.

Программа, которая состоит из нескольких раздельно компилируемых файлов, должна быть согласованной в смысле применения имен и типов, так же, как и программа, которая состоит из одного исходного файла. Вообще это может обеспечить и компоновщик. Компоновщик представляет собой программу, которая стыкует отдельно скомпилированные части вместе. Компоновщик часто именуют загрузчиком. В иМХ'е компоновщик именуется Id. Но компоновщики, которые имеются в большинстве систем, обеспечивают очень слабую поддержку проверки согласованности.

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

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

<p>35. Классы</p>

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

Тип является конкретным представлением некоторой концепции. К примеру, включающийся в C++ тип float с его операциями +, —, * и т. д. обеспечивает ограниченную, но конкретную версию математического понятия действительного числа. Новый тип образуется для того, чтобы дать специальное и конкретное описание понятия, которому ничто прямо и очевидно среди встроенных типов не отвечает.

Перейти на страницу:

Все книги серии Шпаргалки

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных