Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lection2.doc
Скачиваний:
9
Добавлен:
17.12.2018
Размер:
186.88 Кб
Скачать

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 (см. далее).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]