- •Лекция 2.
- •2.1 Изменение порядка вычисления
- •2.2 Оператор приращения
- •2.3 Оператор уменьшения на 1
- •3. Операторы цикла
- •3.1 Цикл for
- •Упражнения
- •Цикл while
- •3.2 Цикл while («пока») с предусловием
- •3.3 Цикл while («пока») с постусловием
- •Упражнения
- •3.4 Бесконечные циклы
- •3.5 Оператор for - бесконечный цикл
- •3.6 Оператор for - пустой цикл
- •3.7 Оператор for - управляющие переменные типа, отличного от int
- •3.8 Оператор break - выход из цикла
- •3.9 Пример: применение оператора цикла while для суммирования рядов
- •Упражнение
- •4. Оператор выбора
- •4.1 Оператор switch - выбор на множестве условий
- •4.2 Оператор switch - использование break
3.6 Оператор for - пустой цикл
Как известно, цикл for позволяет повторять один или более операторов программы до тех пор, пока выполняется заданное условие. В прошлом для искусственной задержки выполнения программы, например при выводе сообщения, программисты помещали в нее «ничего не делающий», или пустой цикл. Например, в следующем цикле for - в течение 100 повторений не выполняется никаких действий:
for (int counter = 1; counter <= 100; counter++);
// Тело цикла пусто
В таком случае производится инициализация цикла и затем многократно выполняется проверка и увеличение управляющей переменной, пока условие цикла остается истинным. На эти многократные проверки расходуется процессорное время, что и вызывает задержку выполнения программы. Если программе нужна более длительная задержка, то можно изменить условие завершения:
for (int counter =1; counter <= 10000; counter++);
// Ничего не делает
Однако применение подобной техники выполнения задержек в программе имеет серьезные недостатки. Прежде всего, продолжительность задержки будет различной в зависимости от используемого в компьютере.
Кроме того, если программа запускается в мультизадачной среде (такой как Windows, OS/2 или Linux), то ничего не делающий цикл тратит процессорное время, которое могло бы быть использовано на выполнение полезной работы для другой задачи.
3.7 Оператор for - управляющие переменные типа, отличного от int
Цикл for позволяет в программе выполнить один или более операторов заданное число раз. В каждом из представленных ранее примеров цикла for - используемая управляющая переменная имела тип int. Однако, в качестве управляющей переменной цикла for может использоваться переменная символьного типа или переменная в формате с плавающей точкой. Например, в следующем фрагменте программы с помощью for -цикла выводятся буквы латинского алфавита:
for (char letter = 'А'; letter <= 'Z'; letter++)
{
cout<<letter<<endl;
}
В следующем примере управляющая переменная в формате с плавающей точкой увеличивается после каждой итерации на 0.5:
for (double percent = 0.0; percent <= 100.0; percent += 0.5)
{
cout<<percent<<endl;
}
В следующей программе демонстрируется использование символьных значений и значений с плавающей точкой в for -цикле:
#include <iostream>
using namespace std;
int main ()
{
char letter;
double percent;
for (letter = 'A'; letter <= 'Z'; letter++)
cout<<letter<<endl;
for (letter = 'z'; letter >= 'a'; letter--)
cout<<letter<<endl;
for (percent = 0.0; percent < 1.0; percent += 0.1)
cout<<percent<<endl;
return 0;
}
3.8 Оператор break - выход из цикла
Как известно, операторы for, while и do while позволяют повторять выполнение одного или более операторов программы до тех пор, пока имеет место заданное условие. В зависимости от алгоритма программы, могут возникнуть ситуации, когда на основании проверки некоторого условия требуется немедленно прервать цикл и продолжить выполнение программы с оператора, следующего за циклом. Это делается с помощью оператора break. Если в цикле встречается оператор break, то выполнение цикла немедленно прекращается. Следующим выполняемым оператором программы будет оператор, следующий сразу за телом цикла. В случае цикла for модификация значения управляющей переменной перед выходом из цикла не выполняется. Следующая программа демонстрирует использование оператора break внутри цикла. В программе значение управляющей переменной первого цикла изменяется от 1 до 100, а второго цикла - от 100 до 1. В обоих циклах при достижении управляющей переменной значения 50 выполнение цикла немедленно прерывается оператором break:
#include <iostream>
using namespace std;
int main ( )
{
int counter;
for (counter =1; counter <= 100; counter++)
{
if (counter == 50)
{
break;
}
cout<<counter<<endl;
}
for (counter = 100; counter >= 1; counter--)
{
if (counter == 50)
{
break;
}
cout<<counter<<endl;
}
return 0;
}
В принципе можно было бы избежать использования оператора break, соответствующим образом применяя конструкцию if-else. В большинстве случаев после переделки программы и исключения из цикла break исходный код становится проще и понятнее.
Следует взять за правило использовать оператор break только в операторах switch (см. далее).