Но стоит для большей ясности ставить круглые скобки

Лабораторная №2

Циклы в С++

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

Когда программа находится в цикле, она выполняет какую-либо операцию снова и снова до тех пор, пока условие является истинным. Простейшей формой является классическая инструкция whi1е:

while (условие)

инструкция

Как и в случае с инструкцией if, вы можете заменить инструкцию составной инструкцией, которая в свою очередь позволяет разместить внутри цикла столько инструкций, сколько пожелаете.

while (условие)

{

Инструкции

}

Как и в случае с инструкцией if, инструкция while вычисляет условие и затем, если условие является истинным, выполняет инструкцию. Отличие заключается в том, что инструкция while повторяет операцию снова и снова до тех пор, пока условие не станет ложным. Точнее говоря, программа заново вычисляет условие после всех до единого выполнений инструкции. Если условие остается истинным, инструкция выполняется снова.

Самым простым примером использования инструкции while является цикл, выводящий на консоль числа от 1 до N, где N - это число, введенное с клавиатуры.

Вот как можно распечатать числа от 1 до N:

1. Считать число с клавиатуры и сохранить в переменной N.

2. Установить значение переменной I в 1.

3. Пока (инструкция while) значение переменной I меньше либо равно значению переменной N,

ЗА. Вывести значение переменной I на консоль.

ЗВ. Прибавить 1 к значению переменной I.

 

Выполнив все эти шаги, программа снова выполняет сравнение. Поскольку это инструкция while, а не инструкция if, программа продолжает выполнять шаги ЗА и ЗВ до тех пор, пока условие не станет ложным.

Код:

#include <iostream>

using namespace std;

 

int main() {

int i, n;

// Ввести число с клавиатуры и инициализировать переменную i единицей

cout << "Enter a number and press ENTER: ";

cin >> n;

i = 1;

 

while (i <= n) { // Пока i <= n,

cout << i << " "; // Печатаем i,

i = i + 1; // Добавляем 1 к i.

}

return 0;

}

Упражнение 1: Вывести на экран все числа от a до b. a и b вводятся с клавиатуры (a<b).

Упражнение 2: Вывести на экран все числа от a до b. a и b вводятся с клавиатуры (a>b).

 

Значения true и false в языке C++

Чем на самом деле являются значения «true» и «false»? Хранятся ли эти значения в компьютере в цифровой форме, как и все другие значения?

Безусловно, так оно и есть. Каждый булевский оператор (то есть логический оператор сравнения) возвращает 1 или 0.

Если результат вычисления условия Выражение возвращает

true 1

false 0

 

Также любое ненулевое значение ведет к тому, что условие считается истинным (true). Вот почему в данном примере инструкции выполняются всегда.

// ВСЕГДА ВЫПОЛНЯЕТСЯ!

if (1)

{

// Выполнить инструкции.

}

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

// БЕСКОНЕЧНЫЙ ЦИКЛ!

while (1)

{

// Выполнить инструкции.

}

Поскольку все операторы сравнения возвращают 1 или 0, вы можете объявить целочисленную переменную и использовать ее в качестве булевского «флага» - переменная, которая хранит значение «true» или «false».

Например:

int is_less_than;

// Сохранить значение "true" (1)

// если значение переменной I

// меньше, чем

// значение переменной n.

is_less_than = (i < n);

Переменная is_less_than хранит результат проверки условия.

 

Введение в булеву логику

Иногда приходится использовать слова «и», «или» и «не» для выражения сложного условия. Это просто очевидно. Например, ниже (в псевдокоде) используется условие со словом «и»:

Если age > 12 и age < 20

Человек является подростком

 

Для выражения условий с использованием слова «и» программисты ЭВМ используют булеву алгебру (Boolean algebra), названную так в честь математика девятнадцатого века Джорджа Буля. Булева алгебра делает то, что требуется. В частности, вычисляется каждое подвыражение «age > 12» и «age < 20», и если результат обоих подвыражений равен значению true, результат всего выражения

age > 12 и age < 20

также равен значению true.

 

В следующей таблице приведены три булевых (логических) оператора языка C++.

Табл. 2.1. Булевы операторы.

Таким образом, предыдущий пример, использующий условие «И» на языке C++ может быть выражен следующим образом:

if (age > 12 && age < 20) // если age > 12 И age < 20

cout « "The subject is a teenager.";

 

Важно!!!

Булевы операторы && и || имеют меньший приоритет, чем операторы сравнения (<, >, >=, <=, ! = и ==), которые, в свою очередь, имеют меньший приоритет, чем арифметические операторы, например сложение (+) и умножение (*). (Однако обратите внимание, что логическое отрицание (!) имеет высокий приоритет).

Поэтому следующая инструкция делает то, что вы, наверняка, ожидаете:

if (х + 2 > у && а == b)

cout << "The data passes the test";

Это означает: «Если значение выражения х+2 больше значения переменной у и значение переменной а равняется значению переменной b, то напечатать сообщение».

Но стоит для большей ясности ставить круглые скобки.