Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Операторы выбора
К операторам выбора относят: условный оператор (if … else) и переключатель (switch). Каждый из них служит для разветвления пути выполнения программы. Синтаксис условного оператора: if(выражение) оператор_1 else оператор_2 Выражение должно быть скалярным и может иметь арифметический тип или тип указателя. Если оно не равно нулю (или не есть пустой указатель), то условие считается истинным и выполняется оператор_1. В противном случае, выполняется оператор_2. Оператор_1 и оператор_2 могут быть представлены оператором, составным оператором или блоком. На рис. 4.1 изображено общепринятое обозначение условного оператора на блок-схеме. Рис. 4.1. Обозначение условного оператора на блок схеме Допустима сокращённая форма условного оператора, в которой отсутствует else и оператор_2. В этом случае при ложности (равенстве нулю) проверяемого условия никакие действия не выполняются и управление передаётся оператору, сразу следующему за оператором условия. Блок-схема условного оператора, в котором ртсутствует else будет выглядеть так, как показано на рис. 4.2. Рис. 4.2. Обозначение условного оператора на блок-схеме В свою очередь, операторы_1 и оператор_2 могут быть условными, что позволяет организовать цепочку проверок условий любой глубины вложенности. В этих цепочках каждый из условных операторов может быть как полным условным, так и иметь сокращённую форму записи. При этом могут возникать ошибки неоднозначного сопоставления if и else. Синтаксис языка предполагает, что при вложенных условных операторов каждое else соответствует ближайшему к нему предшествующему if. Приведем два примера: //пример 1 if(x==1) // 1 if(y==1) cout<<” х равно 1 и y равно 1”; // 2 else cout<<” x не равно 1”; // 3 //пример 2 if(x==1) // 4 {if(y==1) cout<<” х равно 1 и y равно 1”;} // 5 else cout<<” x не равно 1”; // 6
В первом примере else относится к if, записанному во второй строке. Во втором примере else относится к if, записанному в четвёртой строке. С точки зрения логики программы второй пример правилен, а первый нет, так как при x, равном единице, в первом примере может быть напечатана строка “x не равно 1”. Хотя с точки зрения компилятора (синтаксиса языка) все строки в обеих примерах записаны верно. Таким образом, с помощью фигурных скобок была ограничена область действия внутреннего условного оператора. Блок-схемы примеров приведены ниже на рис. 4.3.
Рис. 4.3. Блок-схема первого примера
Рис. 4.4 Блок-схема второго примера
Переключатель switch является наиболее удобным средством для организации мультиветвления. Синтаксис переключателя таков: switch (переключающее_выражение){ case константное_выражение_1: оператор_1; case константное_выражение_2: оператор_2; … case константное_выражение_N: оператор_N; default: операторы; } где оператор_1 … оператор_N – одиночный, составной или блочный оператор. Управляющая конструкция switch передаёт управление к тому из помеченных с помощью case операторов, для которого значение константного выражения совпадает со значением переключающего выражения. Переключающее выражение должно быть целочисленным или его значение приводится к целому. Значение константных выражений, помещённых за служебным словом case, приводится к типу переключающего выражения. В одном переключателе все константные выражения должны иметь различные значения, но быть одного типа. Любой из операторов, помещенный в фигурные скобки, после конструкции switch() может быть помечен одной или несколькими метками вида case константное_выражение: Если значение переключающего выражения не совпадает ни с одним из константных выражений, то выполняется переход к оператору, отмеченному меткой default:. В каждом переключателе должно быть не больше одной метки default, однако эта метка может и отсутствовать. В случае отсутствия метки default при несовпадении переключающего выражения ни с одним из константных выражений, помещаемых вслед за case, в переключателе не выполняется ни один из операторов. Сами по себе метки case константное_выражение: и default: не изменяют последовательности выполнения операторов. Если не предусмотрены переходы или выходы из переключателя с помощью break, goto, return, то в нём последовательно выполняются все операторы, начиная с той метки, на которую передано управление. Пример программы с переключателем: //Программа 4.1 #include "stdafx.h" #include <iostream> //1 void main(){ //2 int ic; //3 std::cout<<"\n Input any decimal digit: "; //4 std::cin >> ic; //5 switch(ic%2){ //6 case 0: std::cout<< "\n Input an even number"; break;//7 case 1: std::cout<< "\n Input an odd number"; break;//8 default: std::cout<< "\n it is not known ic = "<<ic; //9 } //10 getchar(); } //11
Программа выводит на экран строку о том, чётное или нечётное число введено с клавиатуры. Забегая вперёд, скажем, что с помощью оператора break передаётся управление на оператор, сразу следующий за телом переключателя switch, т.е. на строку 11.
Date: 2015-05-22; view: 1263; Нарушение авторских прав |