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


 

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

78412. Ремонт электроаппаратов 192.15 KB
  Подгар и оплавление контактов вызываются плохим прилеганием чрезмерным их износом и недостаточным нажатием неисправностью подвижной системы дугогасительных катушек и скоплением грязи на контактных поверхностях. Необходимым условием нормальной работы аппаратов является обеспечение надежных контактных соединений отсутствие пыли влаги и масла на деталях и содержание рабочих контактов в чистоте. Осматривают и проверяют состояние подвижных и неподвижных контактов гибких соединений дугогасительных камер и изоляции.
78413. ИСПЫТАНИЯ ТЕПЛОВОЗА ПОСЛЕ РЕМОНТА 43.28 KB
  Полные испытания выполняются при ТР3 и ТР2 а контрольные при ТР1 и в случае замены наиболее ответственных узлов дизеля или электрической передачи при внеплановом ремонте. Контрольные испытания проводят при необходимости проверки тепловых параметров дизеля настройки внешней характеристики генератора регулировки реле перехода. Перед пуском дизеля при открытых индикаторных кранах проворачивают вручную на несколько оборотов коленчатый вал проверяют соответствие рабочим положениям вентилей и кранов систем дизеля производят осмотр дизеля и...
78414. КЛАССИФИКАЦИЯ ЭЛЕКТРИЧЕСКИХ МАШИН 40.49 KB
  Электрические машины по назначению подразделяют на следующие виды. Электрические двигатели преобразуют электрическую энергию в механическую; они приводят во вращение различные машины механизмы и устройства применяемые в промышленности сельском хозяйстве связи на транспорте в военном деле и быту. Электрические машины небольшой мощности до 600 Вт называют микромашинами.
78416. Строение генератора, схема соединения обмоток 254.13 KB
  Продольный и поперечный разрезы тягового асинхронного генератора ГС501А Генератор ГС является синхронной электрической машиной защищенного исполнения с явно выраженными полюсами на роторе с независимым возбуждением с принудительной вентиляцией. Вращения генератора по часовой стрелке если смотреть со стороны контактных колец. К корпусу статора параллельно его оси с двух сторон приварены опорные лапы для установки генератора на поддизельные раму.
78417. Конструкция и принцип действия ТЭД 988.75 KB
  Две ступени возбуждения и гиперболическая зависимость напряжения от тока на зажимах тягового генератора обеспечивают изменение частоты вращения тягового электродвигателя в широком диапазоне. Работа тягового электродвигателя в диапазоне от максимально допустимого к длительному тока возможна кратковременно и есть пусковой зоной для локомотива. Остов выполняет роль магнитопровода как для главных так и дополнительных полюсов а также горловину для установки подшипниковых щитов моторноосевую часть и носики для крепления электродвигателя на...
78418. Строение вспомогательных электрических машин 324.26 KB
  Стартергенератор ПСГУ2 2ТЭ четырехполюсных электрическая машина постоянного тока которая предназначена для работы в двух режимах: стартерные как электродвигатель последовательно возбуждения с питанием от аккумуляторной батареи при пуске дизеля и в генераторном как вспомогательный генератор с независимым возбуждением осуществляет питание электрических цепей управления и электродвигателей постоянного тока собственных нужд освещение и заряда аккумуляторной батареи тепловоза при напряжении 110 3 В. Этим достигается увеличение маховой...
78419. Способы управления электроприводами. Схемы ручного управления электроприводами. Контакторные, контроллерные и командно-контроллерные схемы управления 927.72 KB
  Контроллерные системы управления применяют преимущественно в ЭП мощностью до 20 кВт (в отдельных случаях и большей мощности). Управление ЭП при данной системе осуществляется силовым кулачковым контроллером серии КВ, контакты которого включены в силовую цепь ЭД
78420. Элементы и схемы автоматизированных систем управления судовыми электроприводами 317.94 KB
  Системы релейно-контакторного управления состоят из двигателя постоянного или переменного тока магнитного пускателя или контроллера командоконтроллера и ящиков сопротивлений в схемах на постоянном токе. Систему генератор двигатель Г Д применяют в электродвигателях большой и средней мощности с плавным регулированием скорости в широких пределах. Систему частотного регулирования асинхронного двигателя с использованием машинного преобразователя частоты система Д СГ АД применяют в многодвига тельных приводах с одинаковым режимом работы...