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

Таким образом, пока не достигнут конец файла (или не произошла ошибка ввода), условие остается истинным и выполняется тело цикла >while. Тело состоит из одного составного оператора присвоения, который добавляет значение переменной >value к текущему значению переменной >sum. Однажды нарушение условия завершает цикл >while. По выходе из цикла выполняется следующий оператор, который выводит значение переменной >sum, сопровождаемое манипулятором >endl.

Ввод конца файла с клавиатуры

Разные операционные системы используют для конца файла различные значения. Для ввода символа конца файла в операционной системе Windows достаточно нажать комбинацию клавиш (удерживая нажатой клавишу , нажать клавишу ), а затем клавишу или . На машине с операционной системой UNIX, включая Mac OS-X, как правило, используется комбинация клавиш .

Возвращаясь к компиляции

Одной из задач компилятора является поиск ошибок в тексте программ. Компилятор, безусловно, не может выяснить, делает ли программа то, что предполагал ее автор, но вполне способен обнаружить ошибки в форме записи. Ниже приведены примеры ошибок, которые компилятор обнаруживает чаще всего.

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

>// ошибка: отсутствует ')' список параметров функции main()

>int main ( {

> // ошибка: после endl используется двоеточие, а не точка с запятой

> std::cout << "Read each file." << std::endl:

> // ошибка: отсутствуют кавычки вокруг строкового литерала

> std::cout << Update master. << std::endl;

> // ошибка: отсутствует второй оператор вывода

> std::cout << "Write new master." std::endl;

> // ошибка: отсутствует ';' после оператора return

> return 0

>}

Ошибки несовпадения типа. Каждый элемент данных языка С++ имеет тип. Значение >10, например, является числом типа >int. Слово >"привет" с парными кавычками — это строковый литерал. Примером ошибки несовпадения является передача строкового литерала функции, которая ожидает целочисленным аргумент.

Ошибки объявления. Каждое имя, используемое в программе на языке С++, должно быть вначале объявлено. Использование необъявленного имени обычно приводит к сообщению об ошибке. Типичными ошибками объявления является также отсутствие указания пространства имен, например >std::, при доступе к имени, определенному в библиотеке, а также орфографические ошибки в именах идентификаторов.

>#include

>int main() {

> int v1 = 0, v2 = 0;

> std::cin >> v >> v2; // ошибка: используется "v" вместо "v1"

> // cout не определен, должно быть std::cout

> cout << v1 + v2 << std::endl;

> return 0;

>}

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