Последовательность предложений



}

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

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

Приводимая ниже программа использует цикл for для вывода значений квадратных корней из чисел от 1 до 29.

Задание 5-7

// 5_7_FOR.cpp: главный файл проекта.

// Показывает квадратные корни из чисое от1 до 30

       #include "stdafx.h"

       #include <iostream>

       #include <conio.h>

       #include <cmath>

       using namespace std;

int main()

{

       setlocale (LC_ALL,"Russian");

       int num;

       double sq_root;

       for (num = 1; num < 30; num++) {

       sq_root = sqrt((double) num);

       cout << num << " " << sq_root << "\n";

       }

       _getch();

}

Переменная управления циклом может меняться как в положительном, так и в отрицательном направлении, причём на любую величину.

В качестве примера надо создать программу, выводящую на консоль числа от 50 до -50 с шагом -10.

// Задание 5_7.cpp: определяет точку входа для консольного приложения.

// вывод на консоль числа от 50 до -50 с шагом 10

 

#include "stdafx.h"

#include <iostream>

using namespace std;

int main()

{

setlocale(LC_ALL, "Russian");

int num;

for (num = 50; num >= -50; num-=10)

       cout << num << " " ;

cout << "\n\n";

return 0;

}

Вывод программы должен выглядеть следующим образом:

50 40 30 20 10 0 -10 -20 -30 -40 -50

Примечание

· При использовании циклов важно иметь в виду, что условное выражение цикла всегда анализируется в начале шага и поэтому код внутри цикла может не выполнится ни одного раза, если условие с самого начала окажется ложным.

Некоторые варианты цикла for

Цикл for является одним из наиболее гибких предложений языка С++, потому, что он допускает  большое количество разнообразных вариантов, например:

1. допустимо использовать несколько переменных управления;

for (x=0, y=10; x<=y; ++x, -y)

              cout << x << “ “ <<y <<”\n”;

2. выражение, управляющее циклом, может быть любым допустимым, а не только условным и совсем  не обязательно должно использовать переменную управления циклом;

Задание 5-8

// 5_8 FOR.cpp: главный файл проекта.

/* Цикл выполняется пока случайное число

 не окажется больше, чем 20000.

        */

        #include "stdafx.h"

        #include <iostream>

        #include <conio.h>

        #include <cstdlib>

        using namespace std;

  int main()

  {

        setlocale (LC_ALL,"Russian");    

        int i, r;

        r = rand();

        for (i = 0; r <=20000; i++)

               r = rand();

               cout << "Число равно " << r <<

               ". Оно было получено на шаге " << i << ".";

        _getch();

  }

3. в случае если переменная, управляющая циклом, больше нигде не используется, её можно объявить в инициализирующей секции предложения for , например:

Программа вычисляет сумму пяти чисел и факториал числа 5

Задание 5-9

// 5_9 FOR.cpp: главный файл проекта.

// Рассчитывает сумму чисел от 1 до 5 и 5!

 

   #include "stdafx.h"

   #include <iostream>

   #include <conio.h>

   using namespace std;

int main()

{

   setlocale (LC_ALL,"Russian");    

   int sum = 0, fact = 1;

// Вычислим фасториал числа 5

   for (int i = 1; i <=5; i++){ // здесь i объявлена внутри цикла

          sum += i;             // i - известна всюду внутри цикла

          fact *= i;

   }

// За пределами цикла i - не известна

          cout << "Сумма равна " << sum << "\n";

          cout << "Факториал равен " << fact ;

   _getch();

}

Опущенные секции

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

// Цикл без приращения

  #include "stdafx.h"

  #include <iostream>

  #include <conio.h>

  using namespace std;

int main()

{

  setlocale (LC_ALL,"Russian");

  int x;

  for (x = 0; x != 123;){ // выражение приращения отсутствует

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

        cin >> x;

}

  _getch();

}

Другой вариант цикла можно получить, если переместить секцию инициализации за пределы цикла, как это показано ниже:

  x = 0;

  for (; x < 10;){ // х инициализируется вне цикла

        cout << x <<" ";

        ++x;

  }

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

Бесконечный цикл

Можно создать бесконечный цикл, использовав такую конструкцию

  for (;;)

{

  //….

  }

Такой цикл будет выполняться бесконечно. Хотя в принципе существуют программистские задачи, которые требуют организации бесконечного цикла, большинство «бесконечных циклов» являются лишь циклами со специальными условиями завершения. Конечно, и этот цикл можно завершить.

Цикл с отсутствующим телом

В С++ допустимы циклы for, в которых отсутствует само тело цикла. Такая конструкция возможна потому, что синтаксически допустимо пустое предложение. «Бестелесные» циклы оказываются часто весьма полезными. Например, приведённая ниже программа использует такой цикл для получения суммы чисел от 1 до 10.

Задание 5-10

// Задание 5_10.cpp: определяет точку входа для консольного приложения.

// Тело цикла может быть пустым

#include "stdafx.h"

#include <iostream>

using namespace std;

int main()

{

setlocale(LC_ALL, "Russian");

int i;

int sum = 0;

// суммируем числа от 1 до 10

for (i = 1; i <= 10; sum += i++);    // этот цикл не имеет тела

cout << " Сумма равна: " << sum <<"\n";

return 0;

}

Не следует избегать выражений вида: sum += i++. В профессиональных программах на С++ они вполне обычны и выполняют то же самое, что и последовательность предложений:

sum =sum + i;

i = i+1;

Цикл while

Другая возможность организовать повторные действия предоставляется циклом while. Общая форма цикла выглядит следующим образом:

while (выражение) предложение;

Здесь предложение может быть одиночным или блоком предложений. Выражение определяет условия, управляющие циклом, и может быть любым допустимым выражением. Предложение выполняется пока условие остаётся истинным. Когда условие становится ложным, программное управление передаётся на строку, непосредственно следующую за циклом.


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

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






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