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


 

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

61636. Музыкальные инструменты 28.51 KB
  Задачи урока: Образовательные: Научить ребят эмоционально осознанно целостно образно воспринимать выразительные возможности особенности тембровой окраски фортепиано: мир счастливого детства в интонациях темах и образах детских пьес...
61637. Диез. Бемоль. Бекар 17.08 KB
  Цель: Продолжить знакомство детей с музыкальной грамотой закрепить знания о знаках альтерации: диез бемоль бекар; Продолжить формировать умение внимательно слушать музыку рассказывать о содержании музыкального произведения...
61638. Темп как средство выразительности музыки 25.87 KB
  Цель: познакомить с таким средством музыкальной выразительности как темп. Задачи: Воспитывающая: на основе эмоционального восприятия музыки П.И. Чайковского «Неаполитанский танец», русский народный хороводная...
61639. Types of personalities 24.03 KB
  We’ll continue our topic “Character”. Today we will listen to the text about personalities, learn some new words and do several exercises. Мовленнєва зарядка 2хв T: Ok tell me please.
61641. Your Sweet Teeens 22.04 KB
  Who do you think are very talkative? Who are they? Do you feel anxious all the time and worried by things? Do you feel anxious if you don’t know how to cope with some problems?
61642. Фотосинтез 42.12 KB
  Цель урока: формирование знаний о воздушном питании растений. Воспитание нравственно-этических качеств личности школьника через умение слушать и слышать.
61643. Особенности композиции рассказа Толстого «После бала» 14 KB
  Что же послужило источником для создания рассказа Известно что зерном повествования явилась история которая произошла со старшим братом писателя Сергеем Николаевичем. Но есть основание думать что источником рассказа была и жизнь отца Толстого.