4388

Использование циклов в языке С++

Реферат

Информатика, кибернетика и программирование

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

Русский

2012-11-18

55.5 KB

6 чел.

Использование циклов в языке С++

  1.  Оператор goto

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

В С++ метка представляет собой имя, за которым следует двоеточие (:). Метка размещается слева от того оператора С++, к которому будет выполнен переход по оператору goto с соответствующим именем метки.

Листинг 4.1. Цикл на основе оператора goto

1: #include <iostream>

2: int main()

3: {

4: using namespace std;

5: int counter=0;  // инициализировать счетчик

6:  loop:    //метка – начало цикла

7: counter ++;   //инкрементируем счетчик

8: cout << “counter: “ << counter << “\n”;

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

10: goto loop;   //перейти к началу

11:

12: cout << “Complete. Counter: ” << counter << “.\n”;

13: return 0;

14: }

РЕЗУЛЬТАТ

counter: 1

counter: 2

counter: 3

counter: 4

counter: 5

Complete. Counter: 5.

Как правило, программисты избегают оператора goto, и на то есть причины. Оператор goto позволяет перейти в любую точку программы – как вперед, так и назад. Беспорядочное использование операторов goto приводит к сознанию запутанного, трудно читаемого кода, прозванного «спагетти». Чтобы избежать оператора goto, используют более сложные, управляемые операторы цикла: for, while, do..while.

  1.  Оператор цикла while

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

Рис. 4.1. Обозначение цикла while на блок-схеме алгоритма программы

Листинг 4.2. Цикл на основе оператора while

1: #include <iostream>

2: int main()

3: {

4: using namespace std;

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

6:  while (counter < 5) //проверка истинности условия

7: {

8: counter ++;   //инкрементируем счетчик

9: cout << “counter: “ << counter << “\n”;

10: }

11: cout << “Complete. Counter: ” << counter << “.\n”;

12: return 0;

13: }

РЕЗУЛЬТАТ

counter: 1

counter: 2

counter: 3

counter: 4

counter: 5

Complete. Counter: 5.

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

  1.  Операторы break и continue 

Иногда необходимо перейти к началу цикла еще до завершения выполнения всех операторов тела цикла. Для этого используется оператор continue. Однако в ряде случаев требуется выйти из цикла еще до проверки условия продолжения цикла. Для этого используется оператор break.

Операторы continue и break следует использовать осторожно. Это наиболее опасные команды после оператора goto. Программы, которые внезапно меняют свое поведение, тяжело понять, а свободное применение операторов continue и break способно запутать даже маленький цикл while и сделать его непонятным. Необходимость в операторе безусловного выхода из цикла зачастую свидетельствует о плохо продуманной логике условия выхода из цикла. Как правило, внутри тела цикла можно использовать оператор if, чтобы пропустить несколько строк кода, а не прибегать к оператору break.

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

Рис. 4.2. Обозначение цикла do..while на блок-схеме алгоритма программы

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

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

do

оператор;

while (условие);

Пример:

// считать до 10

int x=0;

do

cout << “x: “ <<x++;

while (x<10);

  1.  Оператор цикла  for

Рис. 4.3. Обозначение цикла c заданным числом повторений

Синтаксис этого оператора следующий:

for (инициализация; условие; приращение)

оператор;

Оператор инициализация устанавливает начальное значение счетчика. Следующий оператор: условие – это любое выражение языка С++, результат которого проверяется на каждом цикле. Если результат этого выражения является истинным, то выполняется тело цикла, а затем, после изменения счетчика на величину приращения (по умолчанию – увеличение на единицу), действия повторяются.

Пример:

// вывести Hello десять раз

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

cout << “Hello! “;

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

Листинг 4.3. Вложенный цикл for

#include <iostream>

#define rnd (rand()/32768.0)  /* директива #define задает переменную rnd, которая изменяется случайным образом в диапазоне от 0 до 1 */

int main (){

using namespace std;

int i, j, n, m;

float a[50][50];

cout<<"Input n: ";

cin>>n;

cout<<"Input m: ";

cin>>m;

cout<<endl;

cout<<"Random Array \n";

for (i=0; i<n; i++){

 cout<<endl;

 for (j=0; j<m; j++){

  a[i][j]=rnd*10-5;

  cout<<a[i][j]<<"  \t";

 }

}

char response;

cin>>response;

return 0;

}


  Условие

   Действие

Да

ет

  Условие

   Действие

Да

Нет

   Действие

  i=n1, n2, h


 

А также другие работы, которые могут Вас заинтересовать

21709. Модуль Методы представления знаний: Нечеткая логика 192 KB
  Математический аппарат Характеристикой нечеткого множества выступает функция принадлежности Membership Function. Обозначим через MFcx – степень принадлежности к нечеткому множеству C представляющей собой обобщение понятия характеристической функции обычного множества. Значение MFcx=0 означает отсутствие принадлежности к множеству 1 – полную принадлежность. Так чай с температурой 60 С принадлежит к множеству 'Горячий' со степенью принадлежности 080.
21711. Оценка вероятностей возможных последствий от нарушений электроснабжения потребителей 181.5 KB
  Оценка вероятностей возможных последствий от нарушений электроснабжения потребителей Для решения широкого класса задач эксплуатации и проектирования с учётом фактора надёжности необходимо определение вероятностей возникновения возможных последствий от нарушения электроснабжения потребителей которые сводятся к следующим: вероятность возникновения катастрофических и аварийных ситуаций исследование которых необходимо для нормирования надёжности электроснабжения; вероятность возникновения отдельных составляющих ущерба их величина и...
21712. ИСПЫТАНИЯ НА НАДЕЖНОСТЬ ЭМС. КОНТРОЛЬНЫЕ ИСПЫТАНИЯ 2.49 MB
  Показатели надежности экспериментальными методами могут быть получены по результатам либо испытаний – специальных или совмещенных либо наблюдением за функционированием объекта в условиях эксплуатации. Методы испытаний организуются специально с целью определения показателей надежности объем их обычно заранее планируется условия функционирования объектов устанавливаются исходя из требований оценки конкретных показателей. Показатели надежности таких объектов оцениваются в основном либо по результатам совмещенных испытаний при которых...
21713. СТАТИСТИЧЕСКИЕ МЕТОДЫ ОЦЕНКИ, АНАЛИЗА И КОНТРОЛЯ НАДЕЖНОСТИ 358.5 KB
  Сбор информации об отказе элементов технических систем В общем комплексе мероприятий по обеспечению надёжности любого изделия сбор статистической информации об отказах и оценка показателей надёжности в условиях эксплуатации являются последним заключительным этапом. При этом появляется возможность оценить реальные значения показателей надежности и следовательно оценить эффективность мероприятий по обеспечению надёжности на всех этапах – проектирование производство испытания монтаж эксплуатация. Поэтому особое значение приобретает вопрос...
21714. ИСПЫТАНИЯ НА НАДЕЖНОСТЬ ЭМС. ОПРЕДЕЛИТЕЛЬНЫЕ ИСПЫТАНИЯ 3.06 MB
  При определительных испытаниях могут оцениваться законы распределения отказов и их параметры. При определительных испытаниях могут оцениваться законы распределения отказов и их параметры. Однако существует универсальный план испытаний позволяющий по единой методике проводить статистическую оценку величины Р для изделий с любым законом распределения. Полученные данные по отказам изделий в результате испытаний или по данным эксплуатации подвергаются статистической обработке для получения следующих результатов: определения вида функции...
21715. Планирование эксперимента при ускоренных испытаниях электрических машин 102 KB
  ТЕМА № 2 Регрессионный анализ установившихся режимов электрической системы Для этой цели целесообразно использование регрессионного моделирования сложной системы. При этом с использованием имеющихся программ расчета установившегося режима на ЭВМ проводятся целенаправленные исследования в результате которых получаются регрессионные модели для анализа или управления. Такие модели могут быть получены при регрессионном анализе или методом планирования многофакторного эксперимента МПЭ. При этом для построения линейных моделей используется полный...
21716. Законы распределения отказов 2.99 MB
  Законы распределения отказов Случайной называется величина которая в результате испытаний может принять то или иное значение причем заранее неизвестно какое именно. Если задан ряд распределений вероятностей для значений случайной величины X то математическое ожидание определяется по формуле Показателями характеризующими степень рассеяния случайной величины около своего математического ожидания являются дисперсия и среднее квадратическое отклонение: Для более полного описания случайных величин вводятся понятия функции распределения...
21717. Экономико-организационные проблемы разгрузки предприятий при дефиците мощности и прохождении максимумов нагрузки в энергосистеме 113.5 KB
  Экономикоорганизационные проблемы разгрузки предприятий при дефиците мощности и прохождении максимумов нагрузки в энергосистеме До настоящего времени работы по созданию экономически обоснованных рекомендаций по управлению электропотреблением промышленных предприятий практически не имели ни методической базы ни руководящих указаний позволяющих обеспечивать минимум экономических потерь от изменения режимов функционирования. Выполнение отмеченных условий связано с трудностями изза неопределенности а в отдельных случаях элементарного незнания...