Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


ПОВТОРЕНИЕ ОПЕРАТОРОВ УКАЗАННОЕ ЧИСЛО РАЗ



Одной из наиболее широко используемых операций в ваших программах является повторение одного или нескольких операторов определенное число раз. Например, одна программа могла бы повторять один и тот же оператор, чтобы напечатать пять копий файла, а другая могла бы повторять некоторый Набор операторов 30 раз, чтобы определить, поднялась или упала цена ваших 30 акций. Оператор C++ forпредоставляет чрезвычайно простую возможность вашим программам повторять один или несколько операторов указанное число раз.

Если ваша программа использует оператор for(часто называемый цикломfor), она должна указать переменную, которая называется управляющей переменной, хранящей количество выполнений цикла. Например, следующийцикл forиспользует переменную count дляхранения количества выполнений цикла. В данном случае цикл будет выполнен десять раз.

for (count = 1; count < = 10; count++)
оператор;

Цикл forсостоит из четырех частей. Первые три части управляют количеством выполнений цикла. Сначала оператор count = 1, присваивает переменной управления начальное значение. Цикл forвыполняет эту инициализацию один раз при запуске цикла. Далее цикл проверяет условие count < = 10.Если условие истинно, цикл forвыполняет следующий оператор. Если условие ложно, цикл завершается и программа продолжает свое выполнение с первого оператора, следующего за циклом. Если условие истинно и цикл forвыполняет свой оператор, то после этого цикл увеличивает переменную count, используя оператор count++.Далее программа проверяет условие count < = 10.Если это условие все еще истинно, то опять повторяется выполнение оператора внутри цикла, увеличение и проверка переменной count

for (count = 1; count < = 10; count++)

Инициализация Проверка Увеличение

Следующая программа FIRSTFOR.CPP использует цикл forдля вывода на экран дисплея значений от 1 до 100:

#include < iostream.h>

void main(void)

{
int count;
for (count = 1; count < =100; count++) cout < < count < < ’ ‘;
}

Как видите, оператор forинициализирует переменную countзначением 1. Затем цикл проверяет, меньше ли значение переменной count илиравно 100. Если это так, цикл forвыполняет соответствующий оператор и затем увеличивает count, повторяя проверку. Экспериментируйте с этой программой, изменяя значение 100 на 10, 20 и даже 5000.

Следующая программа ASKCOUNT.CPP выводит сообщение, запрашивающее пользователя ввести число, при котором цикл должен завершиться. Затем программа выводит числа от одного до указанного значения:

#include < iostream.h>

void main(void)

{
int count;
int ending_value;
cout < < «Введите конечное значение и нажмите Enter: «;
cin > > ending_value;
for (count = 0; count < = ending_value; count++)
cout < < count < < ‘ ‘;
}

Экспериментируйте с этой программой, вводя разные числа, например 10, 1 и даже 0. Если вы вводите значение 0 или 1, цикл forникогда не выполняется, потому что условие count < = ending_value сразу же ложно. Помните, если вы введете значение вне диапазона значений, которые может хранить переменная типа int, возникнет ошибка переполнения. Например, запустите программу и введите значение 50000. Поскольку это значение превышает наибольшее возможное для переменной типа int, то переполнение приводит к отрицательному значению, которое предотвращает выполнение цикла.

Циклы for C++поддерживают составные операторы

Из урока 7 вы узнали, что если программы выполняют несколько операторов внутри if или else, то такие операторы следует сгруппировать внутри левой и правой фигурных скобок. Это же относится и к нескольким операторам в цикле for.Следующая программа ADD1_100.CPP зацикливает числа от 1 до 100, выводя и добавляя каждое число в общий итог:

#include < iostream.h>

void main(void)

{
int count;
int total = 0;
for (count = 1; count < = 100; count++)
{
cout < < «Прибавляю » < < count < < » к » < < total;
total = total + count;
cout < < » получаю » < < total < < endl;
}
}

Группируя операторы внутри фигурных скобок, цикл forтем самым может выполнить несколько операторов за один проход (называемый umepa-циейцикла).

Изменение и увеличение цикла for

Все представленные до настоящего момента циклы forувеличивали управляющую переменную цикла на 1 на каждой итерации цикла. Однако цикл forне обязывает ваши программы увеличивать эту переменную на единицу. Следующая программа BY_FIVES.CPP выводит каждое пятое число в диапазоне от 0 до 100:

 

#include < iostream.h>

void main(void)

{
int count;
for (count = 0; count < = 100; count += 5)
cout < < count < < ‘ »;
}

Если вы откомпилируете эту программу, на вашем экране будут отображаться числа 0, 5, 10 и т. д. до 100. Обратите внимание, что оператор цикла for использует для увеличения переменную count.

count += 5;

Если вы хотите добавить некоторое значение к текущему значению переменной, а затем присвоить результат той же переменной, C++ позволяет вам сделать это двумя способами. Первый: предположим, вашей программе необходимо добавить значение 5 к переменной count, это можно сделать, как показано ниже:

count = count + 5;

Второй: C++ позволяет вам использовать краткую запись, представленную ниже, для добавления значения 5 к переменной count.

count += 5;

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

При использовании цикла forвы не обязаны продвигать счетчик в сторону увеличения. Следующая программа CNT_DOWN.CPP использует цикл forдля вывода чисел в порядке уменьшения от 100 до 1:

#include < iostream.h>

void main(void)

{
int count;
for (count = 100; count > = 1; count–)
cout < < count < < ‘ ‘;
}

Как видите, цикл forинициализирует переменную countзначением 100. На каждой итерации цикл уменьшает значение этой переменной на 1. Цикл завершается, когда переменная countсодержит значение 0.

Остерегайтесь бесконечных циклов

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

К сожалению, из-за ошибок в программах в некоторых случаях цикл никогда не достигает своего завершающего условия и, таким образом, зацикливается навсегда (или до тех пор, пока вы не прервете программу). Такие не завершающиеся циклы называются бесконечными циклами. Другими словами, это циклы, не имеющие способа для завершения. Например, следующий оператор for создает бесконечный цикл:

for (count = 0; count < 100; wrong_variable++)
// операторы

Как видите, цикл for использует переменную count в качестве своей управляющей переменной. Однако в секции цикла увеличения программа увеличивает не ту переменную. В результате цикл никогда не увеличивает переменную count, и она никогда не будет иметь значение больше или равно 100. Таким образом, этот цикл превращается в никогда не завершающийся бесконечный цикл.

Важно обратить внимание, что циклы forне ограничиваются использованием переменных типа intв качестве их управляющих переменных. Например, следующая программа LOOPVAR.CPP использует переменную типа charдля вывода букв алфавита внутри одного цикла и переменную типа floatдля вывода чисел с плавающей точкой внутри другого цикла:

#include < iostream.h>

void main(void)

{
char letter;
float value;
for (letter = ‘A’; letter < = ‘Я’; letter++)
cout < < letter;
cout < < endl;
for (value = 0.0; value < = 1.0; value += 0.1)
cout < < value < < ‘ ‘;
cout < < endl;
}

Если вы откомпилируете и запустите эту программу, на экране появится следующий вывод:

АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

Повторение цикла определенное число раз

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

for (инициализация; проверка; увеличение)
оператор;

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

ВЗГЛЯД НА ЦИКЛ while

Как вы только что узнали, цикл C++ forпозволяет вашим программам повторять один или несколько операторов определенное количество раз. Однако в некоторых случаях программе необходимо повторять операторы, пока удовлетворяется (истинно) некоторое условие. Например, в следующих уроках вы узнаете, как читать содержимое файла. Такие программы могли бы повторять цикл, пока не встретится конец файла. В ситуациях, когда программам необходимо выполнять цикл, пока удовлетворяется некоторое условие (но не обязательно определенное количество раз), ваши программы могут использовать оператор C++ while.Общий формат оператора whileвыглядит так:

while (условие_верно)
оператор;

Если ваша программа встречает оператор while, она проверяет заданное условие. Если условие истинно, программа выполняет операторы циклаwhile.После выполнения последнего оператора в цикле, цикл whileопять проверяет условие. Если условие все еще истинно, повторяются операторы цикла и повторяется данный процесс. Когда условие, наконец, становится ложным, цикл завершается и программа продолжает свое выполнение с первого оператора, следующего за циклом. Следующая программа GET_YN.CPP просит вас ввести Д для даили Ндля нет.Затем программа использует цикл while для чтения символов с клавиатуры, пока пользователь не введет Дили Н.Если пользователь вводит значение, отличное от Дили Н, программа сигналит встроенным динамиком, записывая символ сигнала ‘\а’ в выходной поток cout:

#include < iostream.h>

void main(void)

{
int done = 0; // Устанавливается в состояние „истина», если введены Д или Н char letter;
while (! done)

{
cout < < «\nВведите Д или Н» < < » и нажмите Enter для продолжения: «;
cin > > letter;
if ((letter == ‘Д’) II (letter == ‘д’))
done = 1;
else if ((letter == ‘Н’ )II (letter == ‘н’))
done = 1;
else cout < < ‘\а’; // Играть сигнал динамика для неверного символа
}
cout < < «Вы ввели букву » < < letter < < endl;
}

Как видите, цикл whileтоже поддерживает несколько операторов, сгруппированных внутри левой и правой фигурных скобок. В данном случае программа использует переменную doneдля управления циклом. Пока программа не завершится (т. е. пока пользователь не введет ДилиН), цикл продолжает выполняться. Когда пользователь вводит Дили Я, программа устанавливает переменную doneв значение истина и цикл завершается. Как только ваши программы начнут работать с файлами, вы регулярно будете использовать цикл while.

Повторение цикла до выполнения заданного условия

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

while (условие)
оператор;

Сталкиваясь с оператором while, программа будет оценивать условие цикла. Если условие истинно, ваша программа выполняет операторы цикла while. После выполнения последнего оператора цикла программа снова проводит проверку условия. Если условие истинно, программа повторит этот процесс, выполнит операторы, а затем повторит проверку условия. Если условие оценивается как ложь, программа продолжит свое выполнение с первого оператора, который следует за оператором while.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-05-30; Просмотров: 780; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.019 с.)
Главная | Случайная страница | Обратная связь