i <== 5;// выполнение цикла будет продолжаться,
// пока значение i меньше или равно 5 i ++ ) //по окончании очередного цикла
//увеличиваем значение i на 1 {
// здесь расположен блок, повторяемый в цикле }
Внутри цикла
А как будет работать программа при обработке каждого броска? Примерно так же, как и раньше. Прежде всего в повторяемом логическом блоке (он еще называется телом цикла) надо проверить, не выпала ли на кубике единица. Если нет, то выпавшее значение надо прибавить к очкам, уже накопленным на данном ходу. Если выпала — накопленные очки надо обнулить. Также желательно проверить, не набрано ли 20 (или более) очков, и при необходимости прекратить бросать кубик.
С накоплением очков все понятно:
// если на кубике выпала не единица, то... if( Dice.GetDiceValueO i= 1 )
I I запомнить очки
Computer.CurrentScores += Dice.LastValue;
А вот в противном случае, когда выброшена единица, текущие очки надо обнулить:
else Computer.CurrentScores = 0;
Но верно ли это? Ведь после того как в переменную Computer.CurrentScores записан ноль, выполнение цикла может продолжиться (если число, хранящееся в счетчике, меньше пяти), и на следующем броске в эту переменную может записаться новое значение, что противоречит правилам. В случае выпадания единицы бросание кубиков надо немедленно прервать, вне зависимости от того, сколько раз их намечено бросить — один или пять.
Остановка цикла
Чтобы немедленно прервать работу оператора for, используется оператор break. Он не имеет параметров и записывается так:
break ;
159