4388

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

Реферат

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

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

Русский

2012-11-18

55.5 KB

7 чел.

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

  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


 

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

45755. Критика чистого разума 32.5 KB
  Кант начинает свои рассуждения со специфической классификации суждений. Он выделяет суждения синтетическиеаналитические и априорныеапостериорные.Синтетическими называются суждения несущие новое знание не содержащееся в понятии которое является их субъектом.Аналитическими называются суждения которые всего лишь раскрывают свойства присущие понятию субъекта содержащиеся в нём самом и не несут нового знания.
45756. Кун. Структуры научных революций 28.5 KB
  сформулировал новую концепцию развития науки и научного знания которая произвела настоящий переворот во всей философии науки. Внутри парадигмы существование науки определяется Куном как нормальная наука; ученые еще не подвергают сомнению свою научную деятельность которая состоит в вписывании фактов в уже существующую теорию. Прогресс имеет место только внутри нормальной науки.Периоду нормальной науки Кун противопоставляет деятельность ученых в рамках кризиса то есть период экстраординарной науки причем если целью нормальной науки...
45757. Лейбниц. Об основных аксиомах познания 31 KB
  Если чтото отрицается как истинное то очевидно оно является ложным; а если чтото отрицается как ложное то оно является истинным. Подобным же образом если истинно то что нечто ложно или ложно то что нечто истинно то утверждение является ложным; а если истинно то что нечто истинно и лоншо то что нечто ложпо то оно является истинным. С другой стороны среди истинных предложений первыми являются те которые обычно называют тождественными как А есть Л Не А есть не А Если истинно предложение L то следовательно истинно...
45758. Лейбниц. Монадология 53.5 KB
  Согласно Лейбницу основаниями существующих явлений или феноменов служат простые субстанции или монады. Все монады просты и не содержат частей. Монады не могут претерпеть изменения в своём внутреннем состоянии от действия какихлибо внешних причин кроме Бога. Монада способна к изменению своего состояния и все естественные изменения монады исходят из её внутреннего принципа.
45759. Джон Локк. Опыты о человеческом разумении 28 KB
  Опыты о человеческом разумении 4 книги Локк впервые дал систематическую теорию эмпиризма. Средоточие философии Локка его теория познания изложенная в Опыте о человеческом разумении Ее задача объяснить происхождение и основы человеческого познания и найти границы познавательной способности рассудка. Задачи философии Предмет философии по Локку исследование происхождения знания.
45760. Маклюэн. Понимание медиа 37.5 KB
  Понимание медиа. посвящённа осмыслению средств массовой коммуникации медиа. Средства массовой коммуникации медиа Маклюэн понимает чрезвычайно широко как расширение человека. По мнению Маклюэна глубочайшим заблуждением является убеждение в нейтральности медиа.
45761. Маркс К. К критике политической экономии 30.5 KB
  Маркс считает что анатомию гражданского общества следует искать в политической экономии. Совокупность этих производственных отношений составляет экономическую структуру общества реальный базис на котором возвышается юридическая и политическая надстройка и которому соответствуют опре формы общго сознания. На известной ступени своего развития материальные производительные силы общества приходят в противоречие с существующими производственными отношениями внутри которых они до сих пор развивались. Ни одна общая формация не погибает раньше...
45762. Одномерный человек 41.5 KB
  В результате пролетариат перестал быть революционным классом интегрировавшись в привычную систему ценностей а общество утратило возможности развития. Общество стало бесклассовым но оно далеко от марксова идеала коммунизма. Вместо коммунизма получилось одномерное общество неототалитарная Система существующая за счет гипноза средств массовой информации которые внедряют в каждое индивидуальное сознание ложные потребности и культ потребления. Общество называется свободным имеется в виду либеральное общество в то время как на самом деле в...
45763. НИЦШЕ "АНТИХРИСТ. ПРОКЛЯТИЕ ХРИСТИАНСТВУ" 36 KB
  ПРОКЛЯТИЕ ХРИСТИАНСТВУ предпоследняя работа Ницше Der ntichrist ; первое издание в 1895 окончательная редакция 1956. Позиция Ницше была не совместима с традиционалистским атеизмом. Скорее позиция Ницше напоминает бунт преодоление а не голое и бесплодное отрицание. Священников Ницше именует ядовитыми пауками на древе жизни Церковь для Ницше смертельный враг всего благородного на земле она стремится растоптать всякое величие в человеке она выступает за все болезненное и слабое.