Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материалы(С++).doc
Скачиваний:
6
Добавлен:
17.11.2019
Размер:
385.54 Кб
Скачать

Ветвление процесса выполнения программ

Для решения многих задач требуется многократное повторение одних и тех же действий. На практике это реализуется либо с помощью рекурсии либо с помощью итерации. Итерация – это повторение одних и тех же действий определенное количество раз. Основным методом итерации является цикл. Циклы в С++ могут быть трех видов:

  • цикл с предусловием – while

  • цикл с постусловием – do…while

  • цикл с управляющей переменной – for

Оператор цикла While

С помощью оператора цикла в программе создается цикл, который будет повторять последовательность операторов до тех пор, пока условие, определенное в начале цикла остается истинным.

Синтаксис оператора цикла с предусловием следующий:

while (выражение условия)

{

операторы тела цикла;

}

Выражение условия – это любое выражения языка С++ , а оператор – любой допустимый оператор или блок операторов. Если выражение истинно – возвращает значение 1, выполняется тело цикла (блок операторов), после чего выражение условия проверяется снова. Так будет продолжаться до тех пор, пока выражение не станет ложным (0); тогда цикл while завершится, а выполнение программы продолжится со следующей строки.

Таким образом, в цикле с предусловием сначала выполняется проверка условия, а затем, в зависимости от результата проверки, выполняется или нет тело цикла.

Пример. В приведенном ниже листинге программы на экран выводятся все значения переменной х, начиная с начального (х=0), увеличиваясь на единицу с каждой итерацией, до тех пор, пока х < 5.

  1. #include <iostream>

  2. int main()

  3. {

  4. int x=0; //присвоение начального значения

  5. while(x<5) // проверка, истинно ли еще условие

  6. {

  7. x++; // тело цикла

  8. std::cout<<"x= "<<x<<"\n";

  9. }

  10. std::cout<<" Complete. x: "<<x<<"\n";

  11. return 0;

  12. }

Сначала проверяется условие, и если оно истинно, то выполняется тело цикла. В данном случае условию удовлетворяют все х значения переменной х, меньшие 5. Если условие истинно, то значение переменной х увеличивается на 1 (выполняются операторы тела цикла), а следующая строка выводит это значение на экран. Как только значение счетчика достигает 5 (условие ложно), все тело цикла пропускается и программа переходит к строке 11.

Результат работы программы:

x= 1

x= 2

x= 3

x= 4

x= 5

Complete x: 5

Условие, проверяемое в цикле while может состоять из нескольких выражений, объединенных логическими операторами: &&, | |, ! . Например, приведенная ниже программа демонстрирует реализацию логической задачи. Вводятся два положительных числа – одно меньше, другое больше, их значения размещаются соответственно в переменных small и large. Далее меньшее начинает увеличиваться на единицу, а большее уменьшаться на два, процесс продолжается до тех пор, пока значения чисел не «встретятся». Цель задачи – определить эти числа. Для решения необходимо проверить три условия продолжения цикла:

- меньшее число меньше большего (small < large);

- большее больше нуля (0 < large);

- меньшее число меньше максимально допустимого.

  1. #include <iostream>

  2. using namespace std;

  3. int main() {

  4. unsigned short small; // от 0 до 65 535

  5. unsigned long large; // от 0 до 4 294 967 295

  6. const unsigned short MAX= 65535; //объявление константы МАХ и

  7. //присвоение ей значения3

  8. cout<<"Enter a small number: ";

  9. cin>>small;

  10. cout<<"Enter a large number: ";

  11. cin>>large;

  12. // при каждой итерации проверяются три условия

  13. while (small<large && large > 0 && small < MAX)

  14. {

  15. small++;

  16. large -=2;

  17. }

  18. cout<<"\nSmall: "<<small<<" Large: "<<large<<endl;

  19. return 0; }

Результат

Enter a small number: 2

Enter a large number: 100000

Small: 33335 Large: 33334

Оператор цикла do…while

Цикл с постусловием является противоположностью цикла с предусловием. Возможен вариант, когда тело цикла while вовсе не будет выполнено. Оператор цикла while проверяет выражение условия цикла до того, как приступит к выполнению операторов тела цикла, и если условие ложно с самого начала, то тело цикла будет пропущено.

// Пример игнорирования цикла при заведомо ложном условии

#include <iostream>

#include <windows.h>

using namespace std;

int main()

{

char str[20];

int x;

CharToOem("Сколько приветов? : ", str);

cout<<str;

cin>>x;

while (x>0)

{

CharToOem("Привет!\n", str);

cout<<str;

x--;

}

return 0;

}