Конструкция if else if else

Компьютерные программы, как и реальная жизнь, мо­гут ставить вас перед необходимостью выбора более чем из двух возможных вариантов. Для удовлетворения этой потребности можно расширить возможности оператора if else C++. Как было показано ранее, за ключевым сло­вом else должен следовать единый оператор, который может быть также и блоком. Поскольку if else сам является еди­ным оператором, он может следовать за else:

Int i,j;

if(i>0)

J--;

else if(i<0)

j++;

Else

j=0;

Это выглядит подобно новой управляющей структуре if else if else, но на самом деле это один оператор if else, содержащийся внутри другого.

 

Операторы ветвления.

Операторы switch break.

 

Часто возникающая в программировании задача – выбор одного варианта из многих. Это можно сделать с помощью вложенных if … else. Однако более удобный способ – использовать оператор switch, общий формат которого таков:

switch(expression) { сase constant1: statement1; break; case constant2: statement2; break; ... case constantk: statementk; break; default: statement(k+1);}

Оператор switch выполняется так. Сначала вычисляется значение выражения expression. Тип значения должен быть одним из целых – char, int, unsigned int, long int, unsigned long. Вычисленное значение сравнивается со значениями констант или константных выражений constant1,…, constantk.При совпадении значения expression с константным выражением constantkвыполняется оператор statementk.Оператор может быть единичным, а может быть представлен группой операторов. Операторы внутри группы не обрамляются фигурными скобками, а просто отделяются друг от друга точкой с запятой. После выполнения данных операторов управление передается оператору, следующему сразу после switch, если в данной ветке присутствует оператор break. Если такой оператор отсутствует, то выполняются нижеследующие ветви, пока не встретится оператор break или не будет выполнен оператор statement(k+1).

Если выражение expression не совпало ни с одной из констант constant1,…, constantk, выполняется оператор в ветви, помеченный как default. При отсутствии этой ветви выполняется следующий после switchоператор.

Пример:

 

Double res;

// переменная, хранящая первую букву

// выполняемой функции

Char operation;

// значение угла

Double ugol_rad;

// задание operation какого-то значения

// задание ugol_rad какого-то значения

// реализация выбораswitch(operation) { сase ‘s’: сase ‘S’: res=sin(ugol_rad); printf(“Вычислен синус\n”); break; сase ‘c’: сase ‘C’: res=cos(ugol_rad); printf(“Вычислен косинус\n”); break; сase ‘t’: сase ‘T’: res=tan(ugol_rad); printf(“Вычислен тангенс\n”); break; default: printf(“Ошибка\n”);}

 

Типичная ошибка, допускаемая с оператором switch, - когда программист забывает ставить оператор break. В этом случае выполняется и данная ветка, и как минимум следующая. Например, уберем в предыдущем примере все операторы break.Если перед входом в оператор switch переменная operationимеет значение ‘s’, то на экран будет выведено следующее:

Вычислен синусВычислен косинусВычислен тангенсОшибка

 

То есть, программа пройдется по всем веткам. Если перед входом в оператор switch переменная operationимеет значение ‘t’, то на экран будет выведено следующее:

Вычислен тангенсОшибка

 

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

 

Ввод-вывод данных.

 

Ситуация с вводом-выводом в языке С++

 

Обмен данными между программой и внешними устройствами осуществляется с помощью операций ввода-вывода. Типичным внешним устройством является терминал. На терминале можно напечатать информацию. Можно ввести информацию с терминала, напечатав ее на клавиатуре. Другим типичным устройством является жесткий диск или флешка, на которых расположены файлы. Программа может создавать файлы, в которых хранится информация. Другая (или эта же) программа может читать информацию из файла.

В языках С и С++ не было и нет особых операторов для ввода или вывода данных. Причиной этого является как слишком большое разнообразие операций ввода и вывода в разных операционных системах, особенно графических, так и возможность определения новых типов данных в языке С++. Вывод даже простой строки текста в MS DOS, MS Windows и в X Window настолько различен, что пытаться придумать общие для всех них операторы было бы слишком негибко и на самом деле затруднило бы работу. Что же говорить о классах, определенных программистом, у которых могут быть совершенно специфические требования к их вводу-выводу.

Первоначально в языке С реализация ввода/вывода была оставлена на усмотрение раз­работчиков компиляторов. В результате разработчики получили творческую свободу при создании функций ввода/вывода данных, которые наилучшим образом смогут удовлет­ворять аппаратные запросы компьютера. На практике большинство разработчиков для вво­да/вывода использовали набор функций, первоначально разработанных для среды UNIX. В стандарте С было формализовано применение этого пакета, названного пакетом стандартного ввода/вывода (Standart Input/Output): он был сделан обязательным компонен­том стандартной библиотеки С. В языке C++ также поддерживается данный пакет, поэтому те, кто знаком с семейством функций С, объявленных в файле stdio.h, могут использо­вать их и в программах, написанных на C++.

Однако в C++ чаще используется ввод/вывод в стиле C++, а не в стиле языка С. Это делается при помощи набора классов, стандартно поставляемых вместе с компилятором, которые и реализуют основные операции ввода-вывода. Функционал библиотеки определен в заголовочных файлах iostream (ранее iostream.h) и fstream (ранее fstream.h). Классы – это специальные, особые типы данных, создаваемые программистом, которые в своём составе содержат как непосредственно данные, так и функции, работающие с этими данными.

 








Дата добавления: 2016-04-22; просмотров: 700;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.