×
Traktatov.net » Язык программирования C++. Пятое издание » Читать онлайн
Страница 22 из 714 Настройки

>

> } else {

>  // нет ввода! Предупредить пользователя

>  std::cerr << "No data?!" << std::endl;

>  return -1; // свидетельство отказа

> }

> return 0;

>}

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

Как обычно, код начинается с подключения используемых заголовков: >iostream (из библиотеки) и >Sales_item.h (собственного). В функции >main() определен объект по имени >total (для суммирования данных по текущему ISBN). Начнем с чтения первой транзакции в переменную >total и проверки успешности чтения. Если чтение терпит неудачу, то никаких записей нет и управление переходит к наиболее удаленному оператору >else, код которого отображает сообщение, предупреждающее пользователя об отсутствии данных.

Если запись введена успешно, управление переходит к блоку после наиболее удаленного оператора >if. Этот блок начинается с определения объекта >trans, предназначенного для хранения считываемых транзакций. Оператор >while читает все остальные записи. Как и в прежних программах, условие цикла >while читает значения со стандартного устройства ввода. В данном случае данные читаются в объект >trans класса >Sales_item. Пока чтение успешно, выполняется тело цикла >while.

Тело цикла >while представляет собой один оператор >if, который проверяет равенство ISBN. Если они равны, используется составной оператор присвоения для суммирования объектов >trans и >total. Если ISBN не равны, отображается значение, хранящееся в переменной >total, которой затем присваивается значение переменной >trans. После выполнения кода оператора >if управление возвращается к условию цикла >while, читающему следующую транзакцию, и так далее, до тех пор, пока записи не исчерпаются. После выхода из цикла >while переменная >total содержит данные для последнего ISBN в файле. В последнем операторе блока наиболее удаленного оператора >if отображаются данные последнего ISBN.

Упражнения раздела 1.6

Упражнение 1.25. Используя загруженный с веб-сайта заголовок >Sales_item.h, откомпилируйте и запустите программу для книжного магазина, представленную в этом разделе.

Резюме

Эта глава содержит достаточно информации о языке С++, чтобы позволить писать, компилировать и запускать простые программы. Здесь было описано, как определить функцию >main(), которую вызывает операционная система при запуске программы. Также было продемонстрировано, как определить переменные, организовать ввод и вывод данных, использовать операторы >if, >for и >while. Глава завершается описанием наиболее фундаментального элемента языка С++ — класса. Здесь было продемонстрировано создание и применение объектов классов, которые были созданы кем-то другим. Определение собственных классов будет описано в следующих главах.

Термины

Аргумент (argument). Значение, передаваемое функции.

Библиотечный тип (library type). Тип, определенный в стандартной библиотеке (например, >istream).

Блок (block). Последовательность операторов, заключенных в фигурные скобки.

Буфер (buffer). Область памяти, используемая для хранения данных. Средства ввода (или вывода) зачастую хранят вводимые и выводимые данные в буфере, работа которого никак не зависит от действий программы. Буферы вывода могут быть сброшены явно, чтобы принудительно осуществить запись на диск. По умолчанию буфер объекта