Язык программирования C++. Вводный курс


Инструкция while


Синтаксис инструкции while

следующий:

while ( условие )

    инструкция

Пока значением условия

является true, инструкция

выполняется в такой последовательности:

1.

Вычислить условие.

2.      Выполнить инструкцию,

если условие

истинно.

3.      Если самое первое вычисление условия

дает false, инструкция не выполняется.

Условием

может быть любое выражение:

bool quit  = false;

// ...

while ( ! quit ) {

    // ...

    quit = do_something();

}

 

string word;

while ( cin >> word ){ ... }

или объявление с инициализацией:

while ( symbol *ptr = search( name )) {

    // что-то сделать

}

В последнем случае ptr

видим только в блоке, соответствующем инструкции while, как это было и для инструкций for и switch.

Вот пример цикла while, обходящего множество элементов, адресуемых двумя указателями:

int sumit( int *parray_begin, int *parray_end )

{

    int sum = 0;

 

    if ( ! parray_begin || ! parray_end )

        return sum;

 

    while ( parray_begin != parray_end )

        // прибавить к sum

        // и увеличить указатель

        sum += *parray_begin++;

 

    return sum;

}

 

int        ia[6] = { 0, 1, 2, 3, 4, 5 };

int        main()

{

    int sum = sumit( &ia[0], &ia[ 6 ] );

    // ...

}

Для того чтобы функция sumit()

выполнялась правильно, оба указателя должны адресовать элементы одного и того же массива (parray_end

может указывать на элемент, следующий за последним). В противном случае sumit() будет возвращать бессмысленную величину. Увы, С++ не гарантирует, что два указателя адресуют один и тот же массив. Как мы увидим в главе 12, стандартные универсальные алгоритмы реализованы подобным же образом, они принимают параметрами указатели на первый и последний элементы массива.

Упражнение 5.11

Какие ошибки допущены в следующих циклах while:

(a)

    string bufString, word;

    while ( cin >> bufString >> word )

<


Начало  Назад  Вперед



Книжный магазин