Дипломы, курсовые, рефераты, контрольные...
Срочная помощь в учёбе

Тернарная (условная) операция

РефератПомощь в написанииУзнать стоимостьмоей работы

Для наглядности операнды тернарной операции и всё условное выражение удобно заключать в скобки. В качестве примера рассмотрим следующее выражение с переменными арифметического типа: Операнд1 — логическое выражение; операнд2 и операнд3 — выражения одного типа или выражения, которые могут быть неявно (автоматически) приведены к одному типу. Если х — переменная арифметического типа, то результат… Читать ещё >

Тернарная (условная) операция (реферат, курсовая, диплом, контрольная)

В отличие от классических арифметических и логических операций, унаследованных языками программирования из математики (арифметики и алгебры), условная операция требует трех операндов. В выражении с условной операцией используются два размещенных не подряд символа '?' и Они разделяют (или соединяют) три операнда:

операнд1? операнд2: операнд3

Операнд1 — логическое выражение; операнд2 и операнд3 — выражения одного типа или выражения, которые могут быть неявно (автоматически) приведены к одному типу.

При выполнении выражения с тернарной операцией первым вычисляется значение операнда1. Если оно истинно (true), то вычисляется значение операнда2, которое становится результатом. Если операнд1 равен false, то вычисляется значение операнда3, и оно становится результатом всего выражения с тернарной операцией. Классический пример:

х < 0? -х: х.

Если х — переменная арифметического типа, то результат выполнения операции — абсолютное значение х.

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

int norma = 'f' > ' z‘? 'f' - 'z': 'z' - 'f';

Для наглядности операнды тернарной операции и всё условное выражение удобно заключать в скобки. В качестве примера рассмотрим следующее выражение с переменными арифметического типа:

res = (х < у)? ((у < z)? z: у):(х < z)? z: х;

Переменная res получает наибольшее из значений переменных х, у, z.

Приведенное выражение будет правильно вычисляться и при отсутствии скобок:

res = x.

Однако для наглядности и надежности скобки лучше применить.

Тип результата тернарной операции определяется типом операндов, разделенных двоеточием. Например, если нужно выбрать из двух символов тот, который имеет большее значение кода, то можно записать такое выражение:

char ch ='g' > 'в'? 'g': 'е'.

Приведенные примеры и правила иллюстрирует следующая программа:

// 0406.cs — выражения с тернарной операцией

using System;

class Program.

{

static void Main ().

{

char c = 'a', h = ' e', ch;

int norma =c>h?c-h: h-c;

Console.WriteLine («|c-h| = «+ norma); ch = c > h? c: h;

Console.WriteLine («ch = «+ ch); double x = 4, у = 7, z = 5, res;

res = (x < y)? ((y < z)? z: y): ((x < z)? z: x);

Console.WriteLine («res = «+ res);

res = x.

Console.WriteLine («res = «+ res);

} }

Результат выполнения программы:

Ic-h| = 4 ch = e res = 7 res = 7.

Контрольные вопросы и задания

  • 1. Что такое автоматическое приведение (преобразование) типов?
  • 2. К каким типам может быть автоматически приведено значение типа int?
  • 3. Что такое «расширяющее преобразование» типов?
  • 4. При каких сочетаниях типов автоматическое приведение типов невозможно?
  • 5. В каких случаях два операнда разных типов приводятся к типу int?
  • 6. Назовите особые ситуации, которые могут возникнуть при вычислении арифметических выражений.
  • 7. Какие значения может принимать переменная типа bool?
  • 8. Назовите условные логические бинарные операции языка С#.
  • 9. Что такое отношение?
  • 10. Каковы ранги операций отношений?
  • 11. В выражениях с какими операциями могут использоваться символьные данные?
  • 12. Каков результат применения операции ++ к переменной типа char?
  • 13. Какой тип имеет результат суммирования переменной символьного типа с единицей?
  • 14. Сколько операндов должно входить в выражение с операцией

«?:»?

15. Какой тип должен иметь первый (левый) операнд операции.

«?:»?

16. Каков приоритет (ранг) операции «?:» по отношению к операции присваивания?

Показать весь текст
Заполнить форму текущей работой