Здесь записывается как изменяется переменная-счетчик после каждого выполнения тела цикла. Например:
Листинг 7.4.
for (i=0; i<10; i++)
или
for (d=-100; d<=0; d+10)
Теперь немного поговорим о теле цикла. Тело цикла всегда состоит из одного оператора. И если нам нужно использовать несколько операторов, то как и в случае с конструкцией if-else, применяется составной оператор {...}.
Опишем работу цикла for словами и потом перейдем к рассмотрению практических примеров.
1. Когда программа встречает слово for она понимает что перед ней цикл.
2. Сначала определяется переменная счетчик (выражение 1).
3. Проверяется условие выполнение цикла (выражение 2)
4. Если условие ложно, то программа выходит из цикл for и продолжает свое выполнение. Т.е. если в самом начале условие будет ложно, то тело цикла не выполнится ни одного раза.
5. Если условие истинно, то начинает выполняться тело цикла.
6. После того как тело цикла выполнится, программа возвращается к заголовку и выполняет изменение значение переменной-счетчика (выражение 3).
7. После этого возвращаемся к пункту два, и все действия повторяются до тех пор, пока условие не станет ложным.
Для лучшего понимаю работы циклической конструкции for разберем сначала простейший пример, а потом вернемся к нашей задачке с коровами.
Пусть нам надо посчитать сумму 10 чисел введенных пользователем с клавиатуры.
Такая программа будет выглядеть следующим образом:
Листинг 7.5.
#include <stdio.h>
int main(void){
int i,summ=0, temp=0;
for (i=0;i<10;i++){
printf("\nVvedite chislo: ");
scanf("%d",&temp);
summ+=temp;
}
printf("Summa vvedennih chisel = %d\n",summ);
return(0);
}
Теперь распишем по пунктам как работает наша программа.
Начнем с 4 строки, всё остальное вам уже должно быть ясно после ознакомления с предыдущими уроками.
1. Переменная i счетчик и ей присваивается значение 0.
2. Проверяется условие i<10. Оно истинно, значит выполняется тело цикла: выводится надпись, пользователь вводит число и оно прибавляется к переменной summ. Тело цикла заканчивается программа возвращается к заголовку.
3. Программа выполняет выражение i++, изменяет значение переменной счетчика, в нашем случае увеличивает i на единицу. Теперь i = 1.
4. Снова проверяется условие, i<10. Оно опять истинно. Снова выполняется тело цикла и происходит изменение переменной счетчика. И процесс повторяется.
5. Потом, через несколько шагов значение i после изменения выражения счетчика становится равным 10. Проверяется условие. Оно ложно. Программа выходит из цикла и продолжает свое выполнение. В нашем случае выводит на экран значение переменной summ.
На рисунке представлен результат работы этой программы:
Пример работы программы с циклом for.
Ну а теперь напишем программу для проверки задания с коровами.
Изначально имеется программа (код юзера Dispose, с моими небольшими изменениями):
Листинг 7.6
#include <stdio.h>
int main(void)
{
int n,b;
printf("Vvedite chislo ot 1 do 100: ");
scanf("%d", &n);
if(n>=11&&n<=14)
{
printf("Na lugu pasetsya %d korov \n", n);
}
else
{
b=n%10;
if(b==1) printf("Na lugu pasetsya %d korova \n", n);
if(b>=2&&b<=4) printf("Na lugu pasetsya %d korovy \n", n);
if(b>=5&&b<=9) printf("Na lugu pasetsya %d korov \n", n);
if(b==0) printf("Na lugu pasetsya %d korov \n", n);
}
return(0);
}
Нам нужно проверить эту программу. Смотрим что количество коров задается в переменной n. Именно её и возьмем в качестве переменной счетчика. начальное значение у нас 0 конечное 99 . С каждым шагом значение изменяется на 1 Значит заголовок будет выглядеть следующим образом:
Листинг 7.7
for(n=0,n<=99,n++)
Теперь из исходной программы удалим строчки, где просится ввести число n и строку, где введенное число считывается в переменную n. Также добавим туда наш заголовок и возьмем оставшуюся часть программы в фигурные скобки. Получим следующий код:
Листинг 7.8.
#include <stdio.h>
int main(void)
{
int n,b;
for(n=0;n<=99;n++)
{
if(n>=11&&n<=14)
{
printf("Na lugu pasetsya %d korov \n", n);
}
else
{
b=n%10;
if(b==1) printf("Na lugu pasetsya %d korova \n", n);
if(b>=2&&b<=4) printf("Na lugu pasetsya %d korovy \n", n);
if(b>=5&&b<=9) printf("Na lugu pasetsya %d korov \n", n);
if(b==0) printf("Na lugu pasetsya %d korov \n", n);
}
}
return(0);
}
Если теперь запустить нашу полученную программу то можно посмотреть, какое окончание прибавляет программа к какому количеству коров.
Иллюстрация работы программы листинг 7.8
Напоследок хочу заметить что тело цикла может содержать в себе другие циклы, т.е. могут быть вложенные циклы.И опять же советую вам использовать в теле цикла составной оператор.