Листинг 7.1. Организация цикла с помощью оператора goto



1: // Листинг 7.1.

2: // Организация цикла с помощью goto

3:

4: #include <iostream.h>

5:

6: int main()

7: {

8: int counter = 0; // инициализация счетчика

9: loop: counter++; // начало цикла

10: cout.<< "counter: " << counter << "\n";

11: if (counter < 5) // проверка значения

12: goto loop; // возвращение к началу

13:

14: cout << "Complete. Counter: " << counter << ".\n";

15: return 0;

16: }

 

Результат:  

counter: 1

counter: 2

countor: 3

counter: 4

counter: 5

Complete. Counter: 5.

 

Анализ: В строке 8 переменная counter инициализируется нулевым значением. Метка loop: в строке 9 показывает начало цикла. На каждой итерации значение counter yвeличивaeтcя на единицу и выводится на экран. В строке 11 выполняется проверка значения переменной counter. Если оно меньше пяти, значит условие выполняется и управление передается оператору goto, в результате чего осуществляется переход на строку 9. Итеративный процесс выполняется до тех пор, пока значение переменной counter не достигнет пяти. После этого программа выходит за пределы цикла и на экран выводится окончательный результат.

 

Почему следует избегать оператора goto

 

Со временем нелестные высказывания в адрес оператора goto участились, впрочем, вполне заслуженно. С помощью оператора goto можно осуществлять переход в любую точку программы — вперед или назад. Такое беспорядочное использование этого оператора привело к появлению запутанных и абсолютно непригодных для восприятия программ, получивших жаргонное название "спагетти". Поэтому последние двадцать лет преподаватели программирования во всем мире твердили студентам одну и ту же фразу: "Никогда не используйте оператор goto".

На смену оператору goto пришли конструкции с несколько более сложной структурой, но и с более широкими возможностями: for, while и do...while. Несмотря на то что после полного искоренения оператора goto структура программ значительно прояснилась, негативные высказывания в его адрес следует признать преувеличенными. Как любой инструмент программирования, при правильном использовании оператор goto может оказаться достаточно полезным. В силу этого комитет ANS1 принял решение оставить этот оператор в языке. Правда, вместе с этим родилась шутка: "Дети! Использование этого оператора в домашних условиях небезопасно!"

 

 

Организация циклов с помощью оператора while

 

В циклах, организованных с помощью оператора while, выполнение последовательности операций продолжается до тех пор, пока условие продолжения цикла истинно. В примере программы в листинге 7.1 значение переменной counter увеличивалось до тех пор, пока не стало равным пяти. Листинг 7.2 демонстрирует тот же алгоритм, реализованный с помощью оператора while.

Листинг 7.2. Организация цикла с помощью оператора while

1: // Листинг 7.2.

2: // Организация цикла с помощью оператора while

3:

4: #include <iostream.h>

5:

6: int main()

7: {

8: int counter = 0; // присвоение начального значения

9:

10: while(counter < 5) // проверка условия продолжения цикла

11: {

12: counter++; // тело цикла

13: cout << " counter: " << counter << "\;n";

14: }

15:

16: cout << " Complete. Counter: " << counter << ".\n";

17: return 0;

18: }

 

Результат:

counter: 1

counter: 2

counter: 3

counter: 4

counter: 5

Complete. Counter: 5.

 

Анализ: Эта несложная программа показывает пример организации цикла с помощью оператора while. В начале каждой итерации проверяется условие, и, если оно выполняется, управление передается на первый оператор цикла. В нашем примере условию продолжения цикла удовлетворяют все значения переменной counter, меньшие пяти (строка 10). Если условие выполняется, запускается следующая итерация цикла. В строке 12 значение счетчика увеличивается на единицу, а в строке 13 выводится на экран. Как только значение счетчика достигает пяти, тело цикла (строки 11 — 14) пропускается и управление передается в строку 15.

Сложные конструкции с оператором while

 

Сложность логического выражения, являющегося условием в операторе while, не ограничена. Это позволяет использовать в конструкции while любые логические выражения C++. При построении выражений допускается использование логических операций: && (логическое И), 11 (логическое ИЛИ), а также ! (логическое отрицание). В листинге 7.3 показан пример использования более сложных условий в конструкциях с оператором while.


Дата добавления: 2019-02-12; просмотров: 239; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!