|
|||
for(i=0; i<n; i++){.};. for(i=0, j=1, k=d*2; i<10; i++, j+=5){<тело цикла>};for(i=0; i< n; i++){... }; где i и n –целочисленные переменные. Однако, в отличие от многих других языков, С++ предоставляет гораздо более широкие возможности в написании и исполнении заголовка цикла for. Так, более общая структура заголовка этого цикла имеет вид: for( < выражение1>; < условие>; < выражение2> ) {< тело цикла> };
где< выражение1> - это один или несколько операторов, каким-то образом инициирующих счетчик (например, несколько операторов присваивания, один из которых дает начальное значение счетчику цикла); эти операторы перечисляются через запятую; < выражение2> - это один или несколько операторов, каким-то образом увеличивающих или уменьшающих значение счетчика (например, несколько присваиваний или условных операций, операций ++ или --, в результате которых значение счетчика получает приращение); эти операторы также перечисляются через запятую. Например, допустимы такие заголовки: for(i=0, j=1, k=d*2; i< 10; i++, j+=5){< тело цикла> }; Здесь счетчик – переменная i, так как условие окончания цикла относится к ней: i< 10. Обратите внимание, что присваивания i=0, j=1, k=d*2 выполнятся только один раз, вначале, а присваиванияi++, j+=5, увеличивающие значения i на 1 иj на 5, выполняются на каждом шаге цикла. for(i=0, j=0; i< n; k! =0? a=b: b=a, j++, i++ ){< телоцикла> }; Здесь счетчик – также переменная i, а < выражение2> содержит три операции – условную k! =0? a=b: b=a, в результате которой получают новое значение либо переменная a, либо переменная b, инкремент j++ и инкремент i++, в результате которых j и счетчик i получают приращение на 1. Счетчик может быть и не числовым. Пример цикла с символьным счетчиком: for(ch=’A’; ch< =’Z’; ch++){... }; Здесь счетчикch перебирает буквы (коды букв) латинского алфавита, на каждом шаге прибавляя 1, получает код следующей буквы. Проиллюстрируем возможности for–циклов в С++ на примере задачи: просуммировать квадраты первых k членов натурального ряда. Способы: 1) for(i=1, S=0; i< =k; i++)S+=i*i; //традиционныйспособ 2) for(i=0, S=0; i< =k; S+=++i*i); //пустоетело, все - взаголовке! 3) for(i=1, S=0; i< =k; )S+=++i*i; //пустоеприращение, оно – втеле! 4) for(i=1, S=0; i< =k; ){j=++i; S+=j*j; }//другойспособ приращения счетчика в теле цикла G Обратите внимание, что циклы с пустым телом: for ( < выражение1>; < условие>; < выражение2> ); тем не менее работают, до тех пор пока истинно условие. В результате этой работы исполняются операторы из < выражения2>, какие-то переменные могут изменить свое значение. Например, в результате исполнения цикла
|
|||
|