|
Программирование >> Инициализация объектов класса, структура
switch ( ival ) { case 1: int ix = get value() , ivec[ ix ] = ival; break; default: ix = ivec.sizeQ-1; ivec[ ix ] = ival; switch ( ival ) { case 1, 3, 5, 7, 9: oddcnt++; break; case 2, 4, 6, 8, 10: evencnt++; break; int iva1=512 jva1=1024, kva1=4096; int bufsize; ... switch( swt ) { case ival: bufsize = ival * sizeof( int ); break; case jval: bufsize = jval * sizeof( int ); break; case kval: bufsize = kval * sizeof( int ); break; enum { illustrator = 1, photoshop, photostyler = 2 }; switch ( ival ) { case illustrator: -i11us 1icense; break; case photoshop: -pshop 1icense; break; case photostyler: -psty1er license; break; 5.5. Инструкция цикла for Как мы видели, выполнение программы часто состоит в повторении последовательности инструкций - до тех пор, пока некоторое условие остается истинным. Например, мы читаем и обрабатываем записи файла, пока не дойдем до его конца, перебираем элементы массива, пока индекс не станет равным размерности массива минус 1, и т. д. В С++ предусмотрено три инструкции для организации циклов, в частности for и while, которые начинаются проверкой условия. Такая проверка означает, что цикл может закончиться без выполнения связанной с ним простой или составной инструкции. Третий тип цикла, do while, гарантирует, что тело будет выполнено как минимум один раз: условие цикла проверяется по его завершении. (В этом разделе мы детально рассмотрим цикл for; в разделе 5.6 разберем while, а в разделе 5.7 - do while.) Цикл for обычно используется для обработки структур данн1х, имеющих #include <vector> int main() { int ia[ 10 ]; for ( int ix = 0; ix < 10; ++-ix ) ia[ ix ] = ix; vector<int> ivec( ia, ia+10 ); vector<int>::iterator iter = ivec.begin() ; for ( ; iter != ivec.end(); ++iter ) *iter *= 2; return 0; фиксированную длину, таких, как массив или вектор: for (инструкция-инициализации; условие; важение ) Синтаксис цикла for следующий: инструкция инструкция-инициализации может быть либо выражением, либо инструкцией объявления. Обычно она используется для инициализации переменной значением, которое увеличивается в ходе выполнения цикла. Если такая инициализация не нужна или выполняется где-то в другом месте, эту инструкцию можно заменить пустой (см. второй из приведенных ниже примеров). Вот примеры правильного использования index и iter определен! в другом месте for ( index =0; ... for ( ; /* пустая инструкция */ .. for ( iter = ivec.begin(); ... for ( int 1o = 0,hi = max; ... инструкции-инициализации: (... index < arraySize; . (... iter != ivec.end(); (... *stl++ = *st2++; . инструкция не выполняется ни разу. Правильные условия можно записать так: (... char ch = getNextChar(); ... ) Выражение вычисляется после выполнения инструкции на каждой итерации цикла. Обычно его используют для модификации переменной, инициализированной в инструкции-инициализации. Если самое первое вычисление условия дает false, ++-index ) ptr = ptr->next ) --j, ++cnt ) выражение не выполняется ни разу. Правильные выражения выглядят таким образом: (......; ) пустое важение const int sz = 24; int ia[ sz ]; vector<int> ivec( sz ); for ( int ix = 0; ix < sz; ++ix ) { ivec[ ix ] = ix; ia[ ix ]= ix; Для приведенного ниже цикла for порядок вычислений будет следующим: 1. инструкция-инициализации выполняется один раз перед началом цикла. В данном примере объявляется неременная ix, которая инициализируется значением 0. 2. Вгчисляется условие. Если оно равно true, выполняется составная инструкция тела цикла. В нашем примере, пока ix меньше sz, значение ix присваивается элементам ivec[ix] и ia[ix]. Когда значением условия станет false, выполнение цикла прекратится. Если самое первое вычисление условия даст false, составная инструкция выполняться не будет. 3. Вгчисляется выражение. Как правило, его используют для модификации переменной, фигурирующей в инструкции-инициализации и проверяемой в условии. В нашем примере ix увеличивается на 1. for ( char *ptr = getStr(); ... условие служит для управления циклом. Пока условие при вычислении дает true, инструкция продолжает выполняться. Выполняемая в цикле инструкция может быть как простой, так и составной. Если же самое первое вычисление условия дает false,
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |