КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Множественный выбор
Логические операции Иногда бывает полезным объединить два или более условных выражения. Например, нам нужно подсчитать, сколько символов не является пробелами, символами новая строка и табуляции. Напишем такую программу: /* число символов */ main() { int ch; int count=0; while((ch=getchar())!= EOF) if(ch!=' ' && ch!= '\n' && ch!= '\t') count++; printf("Всего %d непустых символов. \n", count); } Оператор, использующий логическую операцию и, обозначаемую &&. Смысл действий, осуществляемых оператором if, можно пояснить так:
Если прочитанный символ - не пробел и не символ "новая строка", и не символ табуляции, то происходит увеличение значения переменной count на единицу. Все выражение будет истинным, если указанные три условия - истины. В языке Си имеются три логические операции. Операция условия:?: В языке Си имеется короткий способ записи одного из видов оператора 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_...else Во многих случаях оказывается более удобным применять оператор switch. Оператор switch (переключатель) используется для разветвления программы по нескольким направлениям. Он имеет следующую форму: switch(e) { сase c1: s1; break; case c2: s2; break; ... case ck: sk; break; default: s(k+1); } где e - целое выражение (или выражение, которое может быть преобразовано в целое выражение); ci - целое выражение с постоянным значением (или выражение, которое может быть преобразовано к такому выражению); 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("%I",&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"); /* текст печатается красным цветом*/ } } getch (); exit(0); /* функция берется из заголовочного файла process.h */ }
8. Лекция: Циклы и другие управляющие средства. Структурное программирование. -Цикл с предусловием. -Цикл со счетчиком. -Цикл с постусловием. -Другие управляющие операторы. -Структурное программирование.
Дата добавления: 2014-01-05; Просмотров: 282; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |