воскресенье, 13 марта 2016 г.

Циклы и ветвления: for.

  В предыдущем занятии Вы научились искать максимальное значение в массиве. Для этого достаточно объявить переменную, что будет хранить значение индекса текущего элемента и на каждом витке цикла увеличивать ее на один. Проверяя при этом, не вышло ли значение индекса за границы массива. В С++ помимо цикла while также имеется цикл for, что более подходит для операций над массивами. Сразу скажу, что любой цикл while можно написать через for, равно как и наоборот:

#include <iostream>

int main()

{
  float studentsProgress[10] =
  {
    3.0f, 4.2f, 3.4f, 3.9f, 4.75f,
    4.2f, 4.8f, 3.1f, 4.4f, 3.8f
  };

  float maxProgress = studentsProgress[0];
  int i = 0;
  for( ; i < 10 ; )
  {
    if( studentsProgress[i] > maxProgress )
    {
      maxProgress = studentsProgress[i];
    }

    i++;
  }

  std::cout << "Max progress is: ";
  std::cout << std::endl;

  system("pause");
  return 0;
}

  Этот код делает то же самое, что и аналогичный ему с циклом while из предыдущего занятия. Не сложно догадаться, что условие в цикле for записано между двумя символами ";". Точки с запятой разделяют цикл for на три части: for(/* выражение, что выполнится один раз */; /* условие */; /* выражение, что выполнится на каждом витке цикла */). Любая из частей цикла for может быть упущена. Две другие части помимо условия чаще всего используют для работы с индексом:

for( int i = 0; i < 10; i++ )
{
  if( studentsProgress[i] > maxProgress )
  {
    maxProgress = studentsProgress[i];
  }
}

  Поскольку переменная, что хранит индекс(i) нужна нам лишь для этого цикла(дальше она не используется), ее можно объявить и инициализировать в первой части цикла:

for( int i = 0; ...


  Далее следует условие:

for( int i = 0; i < 10; ...


  И наконец, инкремент переменной "i" мы выносим из тела цикла в специально отведенное для этого место:

for( int i = 0; i < 10; i++ )

  Цикл for наглядно демонстрирует, каким именно образом мы перебираем элементы массива(а именно, от первого до последнего). Для того, чтобы пройтись по массиву с заду наперед, мы бы написали:

for( int i = 10 - 1; i >= 0; i-- )


  Разберите сами, почему именно так?

Комментариев нет:

Отправить комментарий