
- •Циклы Цикл for
- •Части цикла for
- •Выражения и операторы
- •Не выражения и операторы
- •Отклонения от правил
- •Изменение шага цикла
- •Доступ внутрь строк с помощью цикла for
- •Операции инкремента и декремента
- •Комбинация операций присваивания
- •Составные операторы, или блоки
- •Выражения отношений
- •Цикл while
- •Сравнение циклов for и while
- •Цикл do while
Выражения отношений
Компьютеры — это нечто большее, чем неутомимые обработчики чисел. Они также умеют сравнивать значения, и эта их способность лежит в основе автоматического принятия решений. В C++ эту возможность реализуют операции отношений. В C++ доступны шесть операций отношений для сравнения чисел.
Поскольку символы представлены своими ASCII-кодами, эти операции можно также применять и для сравнения символов. Они не работают со строками в стиле С, но работают с объектами класса string.
Каждое сравнивающее выражение возвращает булевское (типа bool) значение true, если сравнение истинно, и false — в противном случае, поэтому данные операции хорошо подходят для применения в проверочных условиях циклов. (Старые реализации оценивали истинные выражения как 1 и ложные — как 0.)
Этими шестью операциями отношений исчерпываются все возможности, предусмотренные в C++ для сравнения чисел.
Цикл while
Цикл while - это цикл for, у которого удалены инициализирующая и обновляющая части; в нем имеется только проверочное условие и тело:
while (проверочное_условие)
тело
Сначала программа вычисляет выражение проверочное_условие в скобках. Если выражение дает в результате true, программа выполняет оператор (или операторы), содержащийся в теле цикла. Как и в случае с циклом for, тело состоит из единственного оператора либо блока, определенного фигурными скобками. После того, как завершено выполнение тела, программа возвращается к проверочному условию и заново вычисляет его. Если условие возвращает ненулевое значение, программа снова выполняет тело.
Этот цикл проверки и выполнения продолжается до тех пор, пока проверочное условие не вернет false.
Если вы хотите в конечном итоге прервать цикл, то в теле цикла должно происходить нечто такое, что повлияет на выражение проверочного условия. Например, цикл может увеличивать значение переменной, используемой в проверочном условии, либо читать новое значение, вводимое с клавиатуры. Подобно for, цикл while является циклом с входным условием. То есть, если проверочное условие оценивается как false в самом начале, то программа ни разу не выполнит тело цикла.
В листинге представлен пример работы цикла while. Цикл проходит по всем символам строки и отображает их ASCII-коды. По достижении нулевого символа цикл завершается. Эта техника прохода по символам строки до нулевого ограничителя является стандартным методом обработки строк в C++. Поскольку строка содержит маркер конца, программа часто не нуждается в явной информации о длине строки.
#include <iostream>
const int ArSize = 20;
int main()
{
using namespace std;
char name[ArSize];
cout << "Your first name, please: ";
cin >> name;
cout << "Here is your name, verticalized and ASCIIized:\n";
int i = 0; // start at beginning of string
while (name[i] != '\0')
{
cout << name[i] << ": " << int(name[i]);
cout << endl;
i++; // don't forget this step
}
getchar();
getchar();
return 0;
}