Рейтинговые книги
Читем онлайн Освой самостоятельно С++ за 21 день. - Джесс Либерти

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 35 36 37 38 39 40 41 42 43 ... 170

При использовании в конструкциях do.. .while операторы break и continue дают тот же результат, что и при использовании с оператором while. Единственное различие этих двух методов организации циклов состоит в проверке условия продолжения цикла. В первом случае оно контролируется перед выполнением тела цикла, а во втором — после него.

Оператор for

Для организации цикла с помощью оператора while необходимо выполнить три обязательных действия: установить начальные значения переменных цикла, а затем на каждой итерации проконтролировать выполнение условия продолжения цикла и изменить значение переменной цикла (листинг 7.8).

Листинг 7.8. Еще один пример использования оператора while

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

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 << " Looping! ";

14:   }

15:

16:   cout << "nCounter: " << counter << " n";

17:   return 0;

18: }

Результат:

Looping! Looping! Looping! Looping! Looping!

Counter: 5.

Анализ: В строке 8 переменная цикла counter инициализируется нулевым значением. Затем в строке 10 проверяется условие продолжения цикла, а в строке 12 значение счетчика увеличивается на единицу. В строке 13 на экран выводится сообщение, наглядно иллюстрирующее циклический процесс. Конечно, в цикле вашей программы могут выполняться и более серьезные операции.

Оператор for позволяет объединить три операции, необходимые для работы цикла, в одну. Кратко эти операции можно охарактеризовать так: инициализация, проверка условия и приращение счетчика цикла. Выражение с оператором for состоит из самого этого оператора, за которым в круглых скобках следуют три выражения, устанавливающих параметры выполнения цикла. Выражения в круглых скобках разделяются символами точки с запятой.

Первое выражение цикла for устанавливает начальное значение счетчика цикла. Счетчик, как правило, представляет собой целочисленную переменную, которая объявляется и инициализируется прямо в цикле for, хотя в C++ допускается использование в этом месте любого выражения, выводящего начальное значение счетчика каким-то косвенным путем. Второй параметр цикла for определяет условие продолжения цикла, которое также может быть представлено любым выражением. Это условие выполняет те же функции, что и в конструкции while. Третий параметр устанавливает значение приращения счетчика цикла (по умолчанию шаг приращения равен единице). В этой части также может использоваться любое корректное выражение или оператор C++. Нужно заметить, что, хотя параметры цикла for могут задаваться любыми корректными выражениями C++, для установки второго параметра обязательно должно использоваться выражение, возвращающее логическое значение. Пример использования цикла for приведен в листинге 7.9.

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

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

2: // Пример использования цикла for

3:

4: #include <iostream.h>

5:

6: int main()

7: {

8:    int counter;

9:    for (counter = 0; counter < 5; counter++)

10:     cout << " Looping! ";

11:

12:   cout << "nCounter: " << counter << ".n";

13:   return 0;

14: }

Результат:

Looping! Looping! Looping! Looping! Looping!

Counter: 5.

Анализ: В строке 9 программы с помощью оператора for задается цикл, отсчитывающий число итераций с помощью переменной counter. После каждого цикла проверяется условие продолжения цикла и значение переменной counter увеличивается на единицу. Тело цикла состоит из одного оператора, записанного в строке 10. В реальных программах тело цикла может состоять из любого количества операторов.

Сложные выражения с оператором for

При профессиональном использовании цикл for становится мощным и гибким инструментом программирования. Тот факт, что оператор for допускает установку трех независимых параметров цикла (инициализацию, условие продолжения и шаг), открывает неограниченные возможности в управлении работой цикла.

Параметры цикла for

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

for (инициализация, проверка, операция)

    выражения;

Выражение инициализации используется для установки начального значения счетчика цикла или для выполнения какой-нибудь другой операции, подготавливающей работу цикла. Под проверкой понимают некое выражение на языке C++, которое выполняется перед каждой новой итерацией цикла и возвращает логическое значение. Если возвращается значение true, то программа выполняет строки тела цикла. после чего выполняется третье выражение в параметрах цикла, которое, как правило/приращивает значение счетчика на заданную величину.

Пример 1:

// напечатать Hello десять раз

for(int 1=0; i<10; i++)

   cout << "Hello!" << endl;

Пример 2:

for(int 1=0; i<10; i++)

{

   cout << "Hello!" << endl;

   cout << "the value of i is: " << i << endl;

}

Цикл for работает в такой последовательности:

1. Присваивается начальное значение счетчику цикла.

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

3. Если выражение условия возвращает true, то сначала выполняется тело цикла, а затем заданная операция над счетчиком цикла.

На каждой итерации шаги 2 и 3 повторяются.

Множественные инициализации и приращения счетчиков цикла

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

Листинг 7.10. Использование нескольких счетчиков в цикле for

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

2: // Использование нескольких счетчиков

3: // в цикле for

4:

5: #include <iostream.h>

6:

7: int main()

8: {

9:    for (int i=0, j=0; i<3; i++, j++)

10:   cout << "i: " << i << " j: " << j << endl;

11:   return 0;

12: }

Результат:

i: 0 j: 0

i: 1 j: 1

i: 2 j: 2

Анализ: В строке 9 переменные i и j инициализируются нулевыми значениями. Затем проверяется условие i<3 и, так как оно справедливо, выполняется первая итерация цикла. На каждой итерации осуществляется вывод значений счетчиков на экран. После этого выполняется третья часть конструкции for, в которой значения переменных-счетчиков увеличиваются на единицу. После выполнения строки 10 и изменения значений переменных условие проверяется снова. Если условие все еще справедливо, запускается следующая итерация цикла. Это происходит до тех пор, пока условие продолжения цикла не нарушится. В этом случае значения переменных не изменяются и управление передается следующему после цикла оператору.

Нулевые параметры цикла for

Любой параметр цикла for может быть опущен. Пропуск означает использование так называемого нулевого параметра. Нулевой параметр, как и любой другой, отделяется от остальных параметров цикла for символом точки с запятой (;). Если опустить первый и третий параметры цикла for, как показано в листинге 7.11, результат его применения будет аналогичен полученному при использовании оператора while.

Листинг 7.11. Нулевые параметры цикла for

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

2: // Нулевые параметры цикла for

3:

4: #include <iostream.h>

5:

6: int main()

7: {

8:    int counter = 0;

9:

10:   for( ; counter < 5; )

11:   {

12:     counter++;

13:     cout << "Looping! ";

14:   }

15:

16:   cout << "nCounter: " << counter << ".n";

17:   return 0;

18: }

Результат:

Looping! Looping! Looping! Looping! Looping!

Counter: 5.

Анализ: Очевидно, что результат выполнения такого цикла в точности совпадает с результатом выполнения цикла while из листинга 7.8. В строке 8 присваивается значение переменной counter. Установки параметров цикла for, показанные в строке 10, содержат только проверку условия продолжения цикла. Операция над переменной цикла в конструкции for также опущена. Таким образом, этот цикл можно представить в виде

while (counter < 5).

Рассмотренный пример еще раз показывает, что возможности языка C++ позволяют решить одну и ту же задачу множеством способов. Листинг 7.11 приведен скорее для иллюстрации гибкости возможностей C++, поскольку ни один опытный программист не будет использовать цикл for подобным образом. Тем не менее можно опустить даже все три параметра цикла for, а для управления циклом использовать операторы break и continue. Пример использования конструкции for без параметров приведен в листинге 7.12.

1 ... 35 36 37 38 39 40 41 42 43 ... 170
На этой странице вы можете бесплатно читать книгу Освой самостоятельно С++ за 21 день. - Джесс Либерти бесплатно.

Оставить комментарий