Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 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; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию