Вівторок, 19.03.2024, 12:49
Гость

Мішатронік

Мобільна версія | Додати у вибране  | Мій профіль | Вихід | RSS |
Меню сайту
Наше опитування
Чи працювали ви з мікроконтролером?
Всього відповідей: 5
Статистика

Онлайн всього: 1
Гостей: 1
Користувачів: 0


Операция условия: ?:

В языке Си имеется короткий способ записи одного из видов оператора if-else. Он называется "условным выражением" и использует операцию условия - ?:. Эта операция состоит из двух частей и содержит три операнда. Рассмотрим, как можно найти абсолютное значение числа:

 
x = (y < 0) ? -y : y;
 

Все, что находится между знаком = и символом "точка с запятой" представляет собой условное выражение. Смысл этого оператора заключается в следующем: если y меньше 0, то x=-y ; в противном случае x=y. В терминах оператора if-elseданный оператор мог выглядеть так:

 
if (y < 0) x=-y;
else x=y;
 

В общем виде условное выражение можно записать следующим образом:

 
выражение1 ? выражение2 : выражение3
 

Если выражение1 истинно (не равно нулю), то значением всего условного выражения является величина выражение2 ; есливыражение1 ложно (равно 0 ), то значение всего условного выражения - величина выражение3.

 
! Условное выражение удобно использовать в тех случаях, когда имеется некоторая переменная, которой можно присвоить одно из двух возможных значений. Использование условных выражений не является обязательным, поскольку тех же результатов можно достичь при помощи оператора if-else. Однако условные выражения более компактны, и их применение обычно приводит к получению более компактного машинного кода.
 

Множественный выбор

Когда в программе нужно осуществить выбор одного из нескольких вариантов, мы можем сделать это, используя конструкцию if-else if-else_...else Во многих случаях оказывается более удобным применять оператор switch.

 

Оператор switch (переключатель) используется для разветвления программы по нескольким направлениям. Он имеет следующую форму:

 
switch(e) {
 сase c1: s1; break;
 case c2: s2; break;
 ...
 case ck: sk; break;
 default: s(k+1);
}
 

где

 
  1. e - целое выражение (или выражение, которое может быть преобразовано в целое выражение);
  2. ci - целое выражение с постоянным значением (или выражение, которое может быть преобразовано к такому выражению);
  3. si обозначает операторы, число которых может быть больше или равно нулю.
 

Метки ci, обозначающие альтернативы case, должны быть уникальными; двух одинаковых меток быть не может. Только однаальтернатива может получить префикс default.

 

Результатом выполнения оператора switch является выбор альтернативы с меткой ci, которая равна значению выражения переключателя e ; в этом случае выполняются операторы si. В случае, если выражение переключателя не равно ни одному из выражений альтернатив case, то выполняются операторы s(k+1) ; при отсутствии альтернативы default не выполняется ни одна из альтернатив оператора switch.

 

Пример:

 
/* Реализация работы калькулятора. Сначала задается 
число - сколько раз нужно подсчитать. Вводятся 
левый операнд, операция, правый операнд. Оператор 
выбора определяет, какой оператор должен работать. 
Результат выводится на экран. */
#include <stdio.h>
#include <conio.h>
#include <process.h>
main()
{
 float a,b;
 char opr;
 float result=0;
 int I,i=0;
 clrscr();
 printf("Сколько раз будете считать?:\n");
 scanf("%d",&I);
 printf("Введите операнд, операцию, операнд:\n");
 while(i<I) {
 i++;
 scanf("%f%c%f",&a,&opr,&b);
 switch(opr) {
 case '+': result=a+b; break; 
 case '-': result=a-b; break; 
 case '*': result=a*b; break; 
 case '/': result=a/b; break; 
 default:
 printf("Ошибка. Неверен знак операции "); 
 exit(1); /* функция берется 
 из заголовочного 
 файла process.h*/
 }
 textcolor (15); /* функция берется из
 заголовочного файла conio.h*/
 cprintf("Результат равен %g\n",result); 
 if (i<I)
 printf("Введите операнд, операцию, операнд\n"); 
 else
 {
 textcolor(12);
 /* функция берется из заголовочного файла
 conio.h */
 cprintf("Конец работы\n"); 
 /* текст печатается красным цветом*/
 }
 }
 getchar () ;
 exit(0); 
 /* функция берется из заголовочного файла
 process.h */
}

 

Форма входа
Пошук
Друзі сайту
Календар
«  Березень 2024  »
ПнВтСрЧтПтСбНд
    123
45678910
11121314151617
18192021222324
25262728293031

Єдина Країна! Единая Страна!