Rick York
Обычно петли начинаются с нуля или единицы и увеличиваются до предела. Вот вам пример этого:
int main()
{
int day;
cout << "How many days would you like to stay?" << endl;
cin >> day;
for( int zom = 0; zom < day; zom++)
{
cout << "The zombies have increased by" << zom << endl;
}
system("pause");
}
Если вы введете 3, то этот цикл будет выполняться со значениями zom 0, 1 и 2, которые будут составлять 3 итерации. Если цикл начинается с нуля и выполняется меньше, чем количество, это приведет к итерациям подсчета.
Вы можете получить аналогичные результаты, начав с 1 и перейдя к значению, равному количеству, но тогда индексы будут начинаться с 1. Вот такая вот петля :
int main()
{
int day;
cout << "How many days would you like to stay?" << endl;
cin >> day;
for( int zom = 1; zom <= day; zom++)
{
cout << "The zombies have increased by" << zom << endl;
}
system("pause");
}
В цикле for есть три компонента. Инициализирующий оператор, условный оператор и инкрементирующий оператор. В этих примерах инициализаторами являются объявление zom и установка его в 0 или 1. Условные операторы-это тесты < и <=. Инкремент-это оператор zom++.
Вот небольшой пример, который делает каждое из этих утверждений отдельной функцией.
// for loop example
void Initializer( int &value )
{
value = 0;
printf( "Initializer() : value was set to %d\n", value );
}
bool Conditional( int &value, const int limit )
{
bool result = ( value < limit );
printf( "Conditional() : value is %d - returning %d\n", value, (int)result );
return result;
}
void Incrementer( int &value )
{
++value;
printf( "Incrementer() : value is now %d\n", value );
}
void main()
{
const int limit = 3;
int value = -1; // arbitrary initial value
printf( "beginning for loop : value is %d and limit is %d\n", value, limit );
for( Initializer( value ); Conditional( value, limit ); Incrementer( value ) )
{
printf( "for loop body : value is %d\n", value );
}
printf( "exited for loop - value is %d\n", value );
}
Выход из программы:
beginning for loop : value is -1 and limit is 3
Initialize() : value was set to 0
Conditional() : value is 0 - returning true
for loop body : value is 0
Increment() : value is now 1
Conditional() : value is 1 - returning true
for loop body : value is 1
Increment() : value is now 2
Conditional() : value is 2 - returning true
for loop body : value is 2
Increment() : value is now 3
Conditional() : value is 3 - returning false
exited for loop - value is 3
вы можете включить stdio.h, чтобы получить объявление printf. Функции в цикле также могут быть операторами и обычно находятся в большинстве циклов for. Я сделал их функциями, чтобы вы видели, как они работают и используются, и чтобы подчеркнуть, что они являются отдельными операторами в цикле for.