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

Цикл с предусловием

Рассмотренный цикл forвыполняет необходимую функциональность, когда число повторений тела цикла известно к моменту его начала. Однако часто приходится решать задачи, когда число повторений цикла заранее неизвестно. В ряде ситуаций это значение определяется по мере выполнения вычислительных действий. И тогда применяют другую разновидность цикла — цикл с условием. В языке предусмотрено два цикла с условием:

  • условие цикла проверяется перед циклом (цикл с предусловием);

  • условие цикла проверяется после цикла (цикл с постусловием).

На языке блок-схем цикл с предусловием показан на рис. 2.11. Здесь все организуется с помощью уже известных элементов. На языке C/C++ такая схема реализуется с использованием следующей синтаксической конструкции:

while (логическое условие )

{

тело цикла

}

Так же, как и при использовании цикла for без фигурных скобок можно использоватьтолько один оператор.

Рис. 2.11. Блок-схема цикла с предусловием

Рассмотрим практический пример. Используя цикл с предусловием, решим задачу, которая связана с вычислением факториала.

Факториалом целого положительного числа N называется произведение всех целых чисел от 1 до N включительно.

Условие задания таково: необходимо найти наименьшее целое положительное число, факториал которого не меньше 1015. Программное решение данной задачи приведено в листинге 2.14, а соответствующая блок-схема показана на рис. 2.12.

Листинг 2.14. Пример использования цикла с предусловием

#include <iostream>

using namespace std;

#include <conio.h>

#include <math.h>

void main()

{ int N;

float Fact,A=1.0E+15;

N=1;

Fact=1;

while (Fact < A )

{

N=N+1;

Fact= Fact*N;

}

cout << "N="<<N;

cout << "Fact="<<Fact;

_getch();

}

Рис. 2.12. Блок-схема к программе листинга 2.14

Цикл с постусловием

В этом случае условие проверяется после цикла. Цикл повторяется до тех пор, пока проверка указанного условия будет давать результат "ложь", т. е. пока условие не выполнено. Важно отметить, что если условие сразу окажется истинным, то цикл все равно выполняется один раз. Блок-схема цикла с постусловием показана на рис. 2.13.

Рис. 2.13. Блок-схема с постусловием

Для цикла с постусловием сначала выполняется тело цикла, а затем управление передается на проверку условия. В зависимости от истинности или ложности условия тело цикла выполняется повторно или же происходит переход к оператору, следующему за телом цикла.

Основное различие двух рассмотренных вариантов циклов с условием: цикл с постусловием гарантированно выполняется хотя бы раз, а цикл с пред- условием может быть не выполнен ни разу, если условие сразу же окажется ложным.

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

do

{

тело цикла

}

while ( логическое выражение);

Рассмотрим пример, в котором пользователю предоставляется возможность ввода с клавиатуры целых чисел и их суммирования. При вводе нуля суммирование заканчивается и на экране отображается результат. Блок-схема алгоритма показана на рис. 2.14, а текст программы приведен в листинге 2.15.

Рис. 2.14. Блок-схема к программе листинга 2.15

Листинг 2.15. Пример использования цикла с постусловием

#include <iostream>

using namespace std;

#include <conio.h>

#include <math.h>

void main()

{

float Summa,A;

Summa=0;

do

{

cout << "/nВведите число";

cin>>A;

Summa=Summa+A;

}

while (A > 0 );

cout << "Summa="<<Summa;

_getch();

}

Метки

В большинстве случаев алгоритмы требуют организации программных переходов. Такие переходы можно реализовать и с использованием уже рассмотренных ранее ресурсов. Однако в C/C++ имеетсяоператор безусловного перехода, который весьма полезен на начальном этапе изучения программирования. Синтаксис оператора выглядит так:

goto метка;

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

В листинге 2.16 приведен текст программы, которая позволяет вычислить произведение чисел, вводимых с клавиатуры. При вводе нуля в качестве очередного числа программа завершает работу, а результат выводится на экран.

Листинг 2.16. Пример использования меток в программе

#include <iostream>

using namespace std;

#include <conio.h>

#include <math.h>

void main()

{

float Mul,A;

Mul=1;

M1: cout << "/nВведите число";

cin >> A;

if (A==0)

goto M2;

Mul= Mul*A;

goto M1;

M2: cout << "/nПроизведение чисел "<<Mul;

_getch();

}

Соседние файлы в папке файлы по информатике