На главную

Программирование на языке С++

Условная инструкция

Упражнения

Листки
Начало
Цикл if/else
Цикл while
Цикл for
Массивы
Строки и тип char
Указатели
Функции
Блок инструкций
Очень часто приходится объединять несколько инструкций в одну группу, называемую блоком. В языке Паскаль блок выделяется при помощи ключевых слов begin и end, в языке Питон -- при помощи отступа. В языках C и С++ блок заключается в фигурные скобки. Например:
{
cin>>a;
b=2*a;
cout<<b;
}

Далее всюду можно использовать блок инструкций там, где предполагается одна инструкция.
Условная инструкция
Условная инструкция в C++ имеет следующий синтаксис:
if (условие)
инструкция1
else
инструкция2

Первая инструкция выполняется, если условие истинно, вторая инструкция выполняется, если условие ложно. Вместо условных инструкций можно использовать несколько инструкций, объединив их в блок, но даже если вы используете только одну инструкцию, все равно рекомендуется заключить ее в блок фигурных скобок для улучшения читаемости программы.
Пример:
if (x>=0)
cout<<"Число неотрицательно";
else
{
cout<<"Число отрицательно";
x=-x;
}

В этом примере мы использовали условную инструкцию для проверки знака числа x и вывода соответствующего сообщения. При этом переменной x присваивается абсолютная величина x. В качестве инструкции, выполняемой если x<0 выступает блок из двух инструкций.
В условной инструкции может отсутствовать блок else. Конечно, можно вкладывать одну условную инструкцию внутрь другой.
Теперь разберемся с условиями. Условие должно быть выражением логического типа bool. Переменные логического типа принимают два значения: true (истина) и false (ложь). Также любое целочисленное выражение можно трактовать, как логическое выражение, при этом нулевое целое число означает ложь, а ненулевое -- истину.
Операторы сравнения
Некоторые арифметические операторы возвращают значения логического типа и часто используются в качестве условий:
<
Меньше -- возвращает true, если первый операнд меньше второго.
>
Больше -- возвращает true, если первый операнд больше второго.
<=
Меньше или равно.
>=
Больше или равно.
==
Равенство. Возвращает true, если два операнда равны.
!=
Неравенство. Возвращает true, если два операнда неравны.
Например, условие x*x<2 означает "значение x*x меньше 2", а условие 2*x!=y означает "удвоенное значение переменной x не равно значению переменной y".
Будьте аккуратны: оператор == (два знака равенства) -- это проверка на равенство двух выражений, а оператор = (один знак равенства) -- это присваивание одной переменной значения выражения и использование его в условии оператора ветвления в большинстве случаев является ошибкой.
Логические операторы
В C++ существуют стандартные логические операторы: логическое И, логическое ИЛИ, логическое отрицание.
Логическое И является бинарным оператором (то есть оператором с двумя операндами: левым и правым) и имеет вид && (два знака амперсанда). Оператор && возвращает true тогда и только тогда, когда оба его операнда имеют значение true. При этом используется неполное вычисление операндов: сначала вычисляется левый операнд, если его значение false, то правый операнд не вычисляется и оператор && возвращает fаlse. Если же левый операнд равен true, то оператор && вычисляет и возвращает значение правого операнда. Таким образом, в случае, если левый операнд равен false, то значение второго операнда может быть не определено. Например, проверку того, является ли переменная double x, которая может принимать и отрицательные значения, больше чем sqrt(2)
можно делать так:
if( x<0 && sqrt(x)<2 )

В этом примере функция вычисления квадратного корня sqrt будет вызываться только если x>0.
Логическое ИЛИ является бинарным оператором и возвращает true тогда и только тогда, когда хотя бы один операнд равен true. Оператор "логическое ИЛИ" имеет вид || (два знака вертикальной черты). При вычислении оператора || сначала вычисляется левый операнд, и если он равен true, то правый операнд не вычисляется и оператор || возвращает true. Если же левый операнд равен false, то вычисляется и возвращается значение правого операнда.
Логическое НЕ (отрицание) является унарным (то есть с одним операндом) оператором и имеет вид ! (восклицательный знак), за которым следует единственный операнд. Логическое НЕ возвращает true, если операнд равен false и наоборот.
Пример:
x && !y

Данное выражение означает "x и отрицание y" и равно true тогда и только тогда, когда x равно true, а y равно false.

Упражнения

1. Даны два целых числа. Напечатайте то из них, абсолютная величина (модуль) которого больше.
2. Даны два числа x и у. Определите, находится ли точка с координатами (x,y) в единичном круге (круге радиуса 1 c центром в начале координат).
3. Даны три целых числа. Определите, сколько среди них совпадающих.
4. Даны три числа. Напечатайте наибольшее из них.
5. Даны три действительных положительных числа a, b, c. Определите, существует ли треугольник с такими сторонами.
6. Определите тип треугольника (остроугольный, тупоугольный, прямоугольный) с данными сторонами.
7. По данному числу n<100 напечатайте фразу "На лугу пасется n коров", правильно склоняя слово "корова" (например, при n=21 необходимо напечатать "На лугу пасется 21 корова").
8. Наберите, откомпилируйте и запустите все приведенные выше примеры.
9. Выведите на экран значения следующих переменных. Результат поясните.
int a = 13/5;
int b = 13%5;
int c = 13.0/5;
double d = 13/5;
double e = 13%5;
double f = 13.0/5;

10. Даны два целых числа. Найдите из них наибольшее по абсолютной величине.
11. Даны три целых числа. Определите, сколько среди них равных чисел.
12. Даны три действительных положительных числа a, b, c. Определите, существует ли треугольник с такими сторонами.
13. Определите тип треугольника (остроугольный, тупоугольный, прямоугольный) с данными сторонами.
14. Пользователь вводит целое число (типа int). Определите, можно ли сохранить значение этого числа в переменной, типа а) short; б) unsigned short.
15. По данному натуральному числу n<100 напечатайте числительное n по-русски (например, "двадцать семь").

наверх

NiveClip - российская транс группа

Hosted by uCoz