Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Еще о выражениях

Напомним основные (предопределенные целиком или базовые, фундаментальные)типы данных | Тип перечисление | Ii) Инициализация указателей | Понятия области видимости идентификатора (и области действия идентификатора) имеют прямое отношение к, так называемым. пространствам имен. | Еще о классе памяти |


Читайте также:
  1. Употребление артикля в некоторых сочетаниях и выражениях

Выражение – это комбинация литералов, имен, операций и символов. Любому выражению ставится в соответствие абстрактный объект, называемый операндом, который обладает типом и значением и рассматривается как результат оценки или вычисления выражения. Мы будем просто говорить, что выражение имеет тип и значение.

Мы будем говорить о выражениях и многих других понятиях без ссылки на их формальный синтаксис. Чтобы понять почему мы об этом упоминаем, из любопытства можно посмотреть на формальное определение выражения (в стандарте С++) в Бэкусовской Форме (BNF, “выражение” ::= читается как “это есть”, остальное, в частности, рекурсивность определений, понятно по контексту):

 

expression::= assignment-expr | expression, assignment-expr… и т.д. более 4 –х десятков строк-определений!

 

 

Итак, выражение состоит из одного или более операндов, в простейшем случае – из одного литерала или объекта. Результатом вычисления выражения всегда, если не оговорено противное, является r-значение (r-value, см. Лекц.1). Тип результата арифметического выражения определяется типами операндов. Если операнды имеют разные типы, производится преобразование типов в соответствии с предопределенным набором правил. Выражение может являться составным, то есть объединять в себе несколько подвыражений.

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

 

(D) Инструкции (Операторы)

Оператор присваивания

 

Оператор присваивания присваивает значение выражения, в частности, переменной в правой части операции = модифицируемому l-value (лево-допустимому выражению), находящемуся слева от знака =. Сам оператор присваивания также рассматривается как выражение.

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

 

(i) if-else

 

Лучше всегда использовать { } для блоков операторов, следующих после if и else, даже если в блоках только один оператор, поскольку:

 

- легко наращивать блок.

- избавляемся от проблемы отслеживания if-else соответствия.

 

 

Ii) switch

Формат оператора:

switch (выражение){
case константное_выражение_1: [список_операторов_1]
case константное_выражение_2: [список_операторов_2]
...
case константное_выражение_n: [список_операторов_n]
[ default: операторы]
} //без точки с запятой!

Оператор s witch отличается от подобных инструкций в других языках, например, в Паскале. В C++ каждый “оператор” сase функционирует только как метка, а не как “граница” между вариантами выбора. То есть, после ухода на некоторый case программа последовательно выполняет все нижеследующие операторы в блоке оператора switch, пока не встретиться явный (“насильный”) переход из “блока” case в другое место. Выполнение НЕ останавливается у следующего “оператора” сase. Для выхода из блока оператора switch необходимо использовать оператор break . Синтаксическая ошибка в слове-метке default : не обнаруживается.

(Выход из переключателя может быть и по оператору return. Вообще, оператор break выполняет выход из самого внутреннего из объемлющих его операторов switch, for, while и do. Оператор return выполняет выход из функции, в теле которой он записан.)

Поэтому, если не хотите “провалиться сквозь switch ”, в конце каждой case -группы операторов пишите 'break; ' (Эта ситуация исправлена в C#). Пример:

 

#include <iostream.h>

int main (void)

{

int day, month, year;

char ch;

 

cout << "Input a date as dd/mm/yy: ";

cin >> day >> ch >> month >> ch >> year;

 

switch (month) {

case 1: cout << "January"; break;

case 2: cout << "February"; break;

case 3: cout << "March"; break;

case 4: cout << "April"; break;

case 5: cout << "May"; break;

case 6: cout << "June"; break;

case 7: cout << "July"; break;

case 8: cout << "August"; break;

case 9: cout << "September"; break;

case 10: cout << "October"; break;

case 11: cout << "November"; break;

case 12: cout << "December"; break;

}

cout << ' ' << day << ", " << 1900 + year << '\n';

return 0;

}

 

Вот еще один пример использования оператора switch (“метры и футы”…):

 

#include <iostream>

using namespace std;

void menu();

 

int main()

{

menu();

return 0;

 

}// end of main

 

void menu()

{

int choice;

float area, base, height, radius;

cout << "1. Area of triangle \n";

cout << "2. Area of circle \n";

cout << "3. Exit \n";

cin >> choice;

 

switch(choice)

{

case 1:

cout << "1. metric \n";

cout << "2. english \n";

cin >> choice;

cout << "Enter base \n";

cin >> base;

cout << "Enter Height \n";

cin >> height;

area =.5f * (base * height);

 

switch(choice)

{

case 1:

cout << "The area is "<<area << " square meters \n";

break;

case 2:

cout << "The area is "<< area <<" square feet \n";

break;

default:

cout << "Invalid Choice \n";

}// end of inner switch

break;

case 2:

cout << "1. Metric \n";

cout << "2. English \n";

cin >> choice;

 

cout << "Enter the radius \n";

cin >> radius;

area = 3.14f * (radius * radius);

switch(choice)

{

case 1:

cout << "The area is "<<area << " square meters \n";

break;

case 2:

cout << "The area is "<< area <<" square feet \n";

break;

default:

cout << "Invalid Choice \n";

}// end of inner switch

break;

case 3:

return 0;

break;

default:

cout << "Invalid selection \n";

}

menu();

}


Дата добавления: 2015-11-16; просмотров: 43 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Некоторые операции| Кратко: for, while, do-while циклы и простые примеры

mybiblioteka.su - 2015-2024 год. (0.013 сек.)