Операторы языка С++
Операторы выбора if и if…else
Язык С++ обладает исчерпывающим набором конструкций, позволяющим управлять порядком выполнения отдельно взятых ветвей программы. Для осуществления ветвления используются так называемые условные операторы. Две разновидности ветвления: неполная и полная.
Неполная форма ветвления
Синтаксис: if (условие) действие 1;
Оператор if производит ветвление программы в зависимости от результата проверки некоторого условия на истинность. Условие содержит операторы сравнения: >, <, >=, <=, = =, ! = . Если условие принимает истинное значение, то выполняется действие 1. В противном случае выполнение программы переходит к действию 2. В конструкциях языка С++ операторы могут быть составными. Это означает, что в зависимости от принятого решения выполняется не один, а целый блок операторов. Составной оператор начинается с открывающейся фигурной скобки и заканчивается закрывающейся фигурной скобкой. Все содержимое составного оператора рассматривается компилятором как единый оператор.
Синтаксис с составным оператором
if (условие) { действие 1;
действие 2;
действие 3;
}
Полная форма ветвления
Полная форма ветвления имеет синтаксис: if (условие) действие 1; else действие 2;
Если условие истинно, то выполняется действие 1 с последующим переходом к действию 3.
Если условие ложно, то выполняется действие 2 с последующим переходом к действию 3.
При использовании составного оператора в конструкции if…else точка с запятой перед else не ставится.
if (условие) {действие 1;
действие 2;
}
else {действие 3;
действие 4;
};
Условие может быть простым и сложным. Для формирования сложного условия используются логические операции ( &&, | |, !). Типичной ошибкой студентов является использование в условных конструкциях оператора присваивания (=) вместо оператора сравнения (= =).
Оператор множественного выбора switch
Синтаксис: switch (ключ)
{ case константное_выражение_1: оператор_1; break;
case константное_выражение_2: оператор_2; break;
case константное_выражение_n: оператор_n; break;
default: оператор_n+1;
};
Оператор switch представляет собой своеобразный «переключатель». Работает следующим образом. На первом этапе анализируется ключ и осуществляется переход к той ветви программы, для которой его значение совпадает с указанным константным_выражением. Далее следует выполнение оператора или группы операторов, пока не встретиться ключевое слово break. Происходит выход из тела оператора switch или не бует достигнут конец блока – закрывающаяся фигурная скобка. Если ключ не совпадет ни с одним константным_выражением , выполняется ветвь, определенная с помощью ключевого слова default.
Правила использования оператора switch:
- В качестве ключа может использоваться арифметическое выражение, переменная, имеющие целый тип (вещественный тип не используется).
- Константное_выражение – это конкретное число целого типа.
- Каждая ветвь должна заканчивается оператором
- Фигурные скобки для заключения группы операторов не используются.
- Ветвь выполняется тогда, когда ни одна из ветвей не подходит и всегда должна быть последней.
- Ветвь не обязательна.
Пример на оператор If (Решение задачи можно посмотреть, скачав файл "Задача-2"):
Известны год и номер месяца рождения человека, а так же год и номер месяца сегодняшнего дня. Определить возраст человека.
#include<iostream.h>
#include<math.h>
#include<conio.h>
main()
{int G, GR, GC;
int M, MR, MC;
clrscr();
cout<<"Vvedite god i mesyatc vashego rogdeniya:"<<'\n';
cin>>GR>>MR;
cout<<"Vvedite god i mesyatc segodnyashnego dnya:"<<'\n';
cin>>GC>>MC;
cout<<"GR="<<GR<<" GC="<<GC<<'\n';
cout<<"MR="<<MR<<" MC="<<MC<<'\n';
if (GC>=GR){G=GC-GR;
if (MR<=MC) M=MC-MR;
else {G--; M=MR-MC;}
cout<<"Vam "<<G<<"let i "<<M<<" mesytcev"<<'\n';
}
else cout<<"Vi escho ne rodilis";
return 0;
}
Пример на оператор Swith (Решение задачи можно посмотреть, скачав файл "Задача-3"):
Игральным картам условно присвоены следующие порядковые номера, в зависимости от их достоинства. "Валет"-11, "Дама"-12, "Король"-13, "Туз"-14, порядковые номера остальных карт соответствуют их названиям (6,7,8,9,10). По заданному номеру карты k(6<=k<=14) определить достоинство соответствующей карты.
#include<iostream.h>
#include<conio.h>
main()
{int k;
cout<<"Vvedite nomer vashey karti"<<'\n';
cin>>k;
switch(k)
{case 6: cout<<"U vas 6-ka"<<'\n'; break;
case 7: cout<<"U vas 7-ka"<<'\n'; break;
case 8: cout<<"U vas 8-ka"<<'\n'; break;
case 9: cout<<"U vas 9-ka"<<'\n'; break;
case 10: cout<<"U vas 10-ka"<<'\n'; break;
case 11: cout<<"U vas Valet"<<'\n'; break;
case 12: cout<<"U vas Dama"<<'\n'; break;
case 13: cout<<"U vas Korol"<<'\n'; break;
case 14: cout<<"U vas Tuz"<<'\n'; break;
default: cout<<"Neverniy vvod nomera"<<'\n';
}
getch();
return 0;
}
|