Урок 5. Оператор IF в С++

Уроки для начинающих   15 февраля 2012  Автор статьи:  
geekbrains.ru/

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

if (условие) оператор1;
else оператор2;

Поле условие должно возвращать переменную bool-евского типа: при значение условия «true» выполняется первое действие-оператор1 ; при значении условия «false» выполняется второе действие-оператор2.
Допустим, если Вам следует написать программу, которое выводит «yes», если заданная переменная больше 10, и выводит «no» в противном случае, то код Вашей программы будет иметь следующий вид:

#include
using namespace std;
int main()
{
freopen ("input.txt","r",stdin);
freopen ("output.txt","w",stdout);
int a;
cin >> a;
if (a>10) cout << "yes"; else cout << "no"; return 0; }

Приведенный пример с использованием оператора ветвления является основным. Если Вам требуется проверка соответствия лишь одному условию, можно опустить оператор else. В таком случае отрывок кода будет выглядеть так:

int a;
cin >> a;
if (a<60) cout << "oh yeah";

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

#include
#include
using namespace std;
int main()
{
freopen ("input.txt","r",stdin);
freopen ("output.txt","w",stdout);
int b;
cin >> b;
if (b>18)
if (b<21) cout << "Выбирайте напиток не более 15 градусов крепости"; else cout << "Выбирайте напиток любой"; return 0; }

Обучающий смысл данного примера заключается в том, что написанный оператор условия else относится к последнему заданному условию if(!). Это правило очень важно при использовании разветвленных условий.
Существует также тернарная запись оператора If:

переменная = условие ? значение1 : значение2 ;

Преимущество данного вида записи заключается в ёмкости.
Рассмотрим пример нахождения наибольшего из двух чисел. Сравним написание кода с использованием простой записи(I) оператора if и тернарного оператора условия:
I:

#include
using namespace std;
int main()
{
int a,b,c;
freopen ("input.txt","r",stdin);
freopen ("output.txt","w",stdout);
cin >> a >> b;
if (a>b) c=a;
else c=b;
cout << c; return 0; }

II:

#include
using namespace std;
int main()
{
int a,b,c;
freopen ("input.txt","r",stdin);
freopen ("output.txt","w",stdout);
cin >> a >> b;
c = a>b?a:b;
cout << c; return 0; }

Если в ответе не видно разницы, то зачем писать больше?! 🙂



Оператор if Delphi
Оператор if Java

  • Вадим

    Может это только у меня, но консоль сразу выключается и cin — ввод данных ее не останавливает, т.е. просто запустилась и завершилась.. А заработала только когда перенес cin с переменной a — на строку перед функциями с файлами — freopen. Может кому-то будет полезно 😉

    • Это файловый ввод — вывод данных, поэтому консоль ничего не ждет, а сразу выполняет программу, беря исходные данные из файла с именем input.txt и выводя в текстовый файл output.txt, если вы перенесете cin до перенаправления потока ввода — вывода, то ваша программа будет работать с консоли. Тогда уж проще взять и удалить freopen.

Научиться программировать

  • на Delphi

  • на Java

  • на C++

geekbrains.ru/
geekbrains.ru/