Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа 4 - Учить

.doc
Скачиваний:
16
Добавлен:
17.03.2015
Размер:
86.53 Кб
Скачать

ВЫУЧИТЬ НАИЗУСТЬ

5.2. Общие сведения

Для реализации циклических вычислительных процессов в языках программирования предусмотрены операторы цикла, которые позволяют многократно выполнить необходимые действия, предусмотренные алгоритмом решаемой задачи. В любом операторе цикла можно выделить две части: заголовок цикла и тело цикла. Операторы, которые задают повторяющиеся действия, располагаются обычно в теле цикла. Заголовок цикла обычно содержит выражение-условие, вычисление и проверка которого на каждой итерации цикла позволяет управлять количеством повторений (итераций) цикла.

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

Прекращение выполнения цикла возможно в следующих двух случаях:

  • нулевое значение проверяемого выражения-условия;

  • выполнение в теле цикла оператора передачи управления (break, go to, return) за пределы цикла.

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

В языке С++ определены три вида оператора цикла:

  1. цикл с предусловием (while);

  2. цикл с постусловием (do … while);

  3. итерационный цикл (for).

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

5.2.1. Цикл с предусловием

Синтаксис цикла с предусловием:

while (выражение-условие)

тело_цикла

Данный оператор работает следующим образом. При входе в цикл вычисляется выражение-условие. Если его значение отлично от нуля, то выполняется тело_цикла. Затем вычисление выражения-условия и выполнение операторов тела_цикла повторяются последовательно, пока значение выражения-условия не станет равным 0.

Так как выражение-условие проверяется перед исполнением цикла, то такой оператор называют оператором цикла с предусловием. Если еще до первого исполнения тела_цикла выражение-условие окажется ложным, то тело_цикла не будет выполнено ни разу.

С помощью оператора while можно организовать бесконечный цикл. Выход из такого цикла следует выполнить с помощью оператора break. В общем случае бесконечный цикл имеет вид:

while (1)

{

// анализ некоторого условия

break;

}

Пример 5.1.

//Применение цикла while для вывода 10 случайных чисел

//из диапазона от 0 до 100

#include <iostream>

#include <conio.h>

#include <stdlib.h> // для функций srand() и rand()

#include <time.h> // для функции time()

using namespace std;

void main()

{

int i;

srand((unsigned)time(0)); // инициализация датчика случайных чисел

cout<<"\n 10 случайных чисел от 0 до 100 \n";

i=1; // переменная, управляющая циклом,получает начальное значение.

while(i <= 10) // проверка условия исполнения цикла

{

cout<<rand()%101<<endl; //вывод случайного числа

i++; // изменение переменной, управляющей циклом, на 1

}

getch();

}

Цикл завершится, когда значение переменной i станет равным 11.

5.2.2. Цикл с постусловием

Синтаксис цикла с постусловием:

do

тело_цикла

while (выражение-условие);

Цикл с постусловием работает так. Сначала выполняется тело_цикла, а затем вычисляется выражение-условие, если оно истинно, то тело_цикла выполняется вновь. Выход из цикла происходит, когда выражение-условие станет ложным. Поскольку выражение проверяется уже после исполнения тела_цикла, то такой цикл называют оператором цикла с постусловием. Тело цикла будет выполнено хотя бы один раз даже при заведомо ложном значении выражения-условия.

Пример 5.2.

// Программа, выполняющая вывод всех цифр числа в обратном порядке

#include <iostream>

#include <conio.h>

using namespace std;

void main (void)

{

int chislo ,ost,res;

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

cin>>chislo;

cout<<"Цифры числа в обратном порядке:\n";

do

{

ost=chislo%10; //выделяем последнюю цифру числа

res= chislo/10; // получаем число без последней цифры

cout<<ost;

chislo=res;

}while (res >0); // выполнять цикл, пока результат деления больше нуля

getch();

}

Пример 5.3.

//Программа выбирает случайное число то 1 до 100

//и предлагает его угадать

#include <iostream>

#include <conio.h>

#include <stdlib.h>

#include <time.h>

using namespace std;

void main()

{int s,x;

int n=0; //счетчик числа попыток

srand((unsigned)time(0)); // инициализация датчика случайных чисел

s=rand()%11; //переменная s получает значение случайного числа

// в диапазоне от 1 до 10

do{

cout<<"\nВведите число от 1 до 10: ";

cin>>x;

n++; //увеличение счетчика попыток на 1

if(s<x) cout<<" <Загаданное число меньше\n";

else if(s>x) cout<<" >Загаданное число больше\n";

}while(s-x); // выполнять, пока разность между числом программы

// и числом, введенным пользователем, не равна нулю

cout<<"Вы угадали число!.\n Вы затратили "<<n<<" попыток";

getch();

}

5